freemarker2-FXHMVVOS.js 25 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675
  1. import {
  2. editor_api_exports
  3. } from "./chunk-5Q5BEFT4.js";
  4. import "./chunk-FBUDSZGC.js";
  5. import "./chunk-2LSFTFF7.js";
  6. // node_modules/.pnpm/monaco-editor@0.38.0/node_modules/monaco-editor/esm/vs/basic-languages/freemarker2/freemarker2.js
  7. var __defProp = Object.defineProperty;
  8. var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
  9. var __getOwnPropNames = Object.getOwnPropertyNames;
  10. var __hasOwnProp = Object.prototype.hasOwnProperty;
  11. var __copyProps = (to, from, except, desc) => {
  12. if (from && typeof from === "object" || typeof from === "function") {
  13. for (let key of __getOwnPropNames(from))
  14. if (!__hasOwnProp.call(to, key) && key !== except)
  15. __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
  16. }
  17. return to;
  18. };
  19. var __reExport = (target, mod, secondTarget) => (__copyProps(target, mod, "default"), secondTarget && __copyProps(secondTarget, mod, "default"));
  20. var monaco_editor_core_exports = {};
  21. __reExport(monaco_editor_core_exports, editor_api_exports);
  22. var EMPTY_ELEMENTS = [
  23. "assign",
  24. "flush",
  25. "ftl",
  26. "return",
  27. "global",
  28. "import",
  29. "include",
  30. "break",
  31. "continue",
  32. "local",
  33. "nested",
  34. "nt",
  35. "setting",
  36. "stop",
  37. "t",
  38. "lt",
  39. "rt",
  40. "fallback"
  41. ];
  42. var BLOCK_ELEMENTS = [
  43. "attempt",
  44. "autoesc",
  45. "autoEsc",
  46. "compress",
  47. "comment",
  48. "escape",
  49. "noescape",
  50. "function",
  51. "if",
  52. "list",
  53. "items",
  54. "sep",
  55. "macro",
  56. "noparse",
  57. "noParse",
  58. "noautoesc",
  59. "noAutoEsc",
  60. "outputformat",
  61. "switch",
  62. "visit",
  63. "recurse"
  64. ];
  65. var TagSyntaxAngle = {
  66. close: ">",
  67. id: "angle",
  68. open: "<"
  69. };
  70. var TagSyntaxBracket = {
  71. close: "\\]",
  72. id: "bracket",
  73. open: "\\["
  74. };
  75. var TagSyntaxAuto = {
  76. close: "[>\\]]",
  77. id: "auto",
  78. open: "[<\\[]"
  79. };
  80. var InterpolationSyntaxDollar = {
  81. close: "\\}",
  82. id: "dollar",
  83. open1: "\\$",
  84. open2: "\\{"
  85. };
  86. var InterpolationSyntaxBracket = {
  87. close: "\\]",
  88. id: "bracket",
  89. open1: "\\[",
  90. open2: "="
  91. };
  92. function createLangConfiguration(ts) {
  93. return {
  94. brackets: [
  95. ["<", ">"],
  96. ["[", "]"],
  97. ["(", ")"],
  98. ["{", "}"]
  99. ],
  100. comments: {
  101. blockComment: [`${ts.open}--`, `--${ts.close}`]
  102. },
  103. autoCloseBefore: "\n\r }]),.:;=",
  104. autoClosingPairs: [
  105. { open: "{", close: "}" },
  106. { open: "[", close: "]" },
  107. { open: "(", close: ")" },
  108. { open: '"', close: '"', notIn: ["string"] },
  109. { open: "'", close: "'", notIn: ["string"] }
  110. ],
  111. surroundingPairs: [
  112. { open: '"', close: '"' },
  113. { open: "'", close: "'" },
  114. { open: "{", close: "}" },
  115. { open: "[", close: "]" },
  116. { open: "(", close: ")" },
  117. { open: "<", close: ">" }
  118. ],
  119. folding: {
  120. markers: {
  121. start: new RegExp(`${ts.open}#(?:${BLOCK_ELEMENTS.join("|")})([^/${ts.close}]*(?!/)${ts.close})[^${ts.open}]*$`),
  122. end: new RegExp(`${ts.open}/#(?:${BLOCK_ELEMENTS.join("|")})[\\r\\n\\t ]*>`)
  123. }
  124. },
  125. onEnterRules: [
  126. {
  127. beforeText: new RegExp(`${ts.open}#(?!(?:${EMPTY_ELEMENTS.join("|")}))([a-zA-Z_]+)([^/${ts.close}]*(?!/)${ts.close})[^${ts.open}]*$`),
  128. afterText: new RegExp(`^${ts.open}/#([a-zA-Z_]+)[\\r\\n\\t ]*${ts.close}$`),
  129. action: {
  130. indentAction: monaco_editor_core_exports.languages.IndentAction.IndentOutdent
  131. }
  132. },
  133. {
  134. beforeText: new RegExp(`${ts.open}#(?!(?:${EMPTY_ELEMENTS.join("|")}))([a-zA-Z_]+)([^/${ts.close}]*(?!/)${ts.close})[^${ts.open}]*$`),
  135. action: { indentAction: monaco_editor_core_exports.languages.IndentAction.Indent }
  136. }
  137. ]
  138. };
  139. }
  140. function createLangConfigurationAuto() {
  141. return {
  142. brackets: [
  143. ["<", ">"],
  144. ["[", "]"],
  145. ["(", ")"],
  146. ["{", "}"]
  147. ],
  148. autoCloseBefore: "\n\r }]),.:;=",
  149. autoClosingPairs: [
  150. { open: "{", close: "}" },
  151. { open: "[", close: "]" },
  152. { open: "(", close: ")" },
  153. { open: '"', close: '"', notIn: ["string"] },
  154. { open: "'", close: "'", notIn: ["string"] }
  155. ],
  156. surroundingPairs: [
  157. { open: '"', close: '"' },
  158. { open: "'", close: "'" },
  159. { open: "{", close: "}" },
  160. { open: "[", close: "]" },
  161. { open: "(", close: ")" },
  162. { open: "<", close: ">" }
  163. ],
  164. folding: {
  165. markers: {
  166. start: new RegExp(`[<\\[]#(?:${BLOCK_ELEMENTS.join("|")})([^/>\\]]*(?!/)[>\\]])[^<\\[]*$`),
  167. end: new RegExp(`[<\\[]/#(?:${BLOCK_ELEMENTS.join("|")})[\\r\\n\\t ]*>`)
  168. }
  169. },
  170. onEnterRules: [
  171. {
  172. beforeText: new RegExp(`[<\\[]#(?!(?:${EMPTY_ELEMENTS.join("|")}))([a-zA-Z_]+)([^/>\\]]*(?!/)[>\\]])[^[<\\[]]*$`),
  173. afterText: new RegExp(`^[<\\[]/#([a-zA-Z_]+)[\\r\\n\\t ]*[>\\]]$`),
  174. action: {
  175. indentAction: monaco_editor_core_exports.languages.IndentAction.IndentOutdent
  176. }
  177. },
  178. {
  179. beforeText: new RegExp(`[<\\[]#(?!(?:${EMPTY_ELEMENTS.join("|")}))([a-zA-Z_]+)([^/>\\]]*(?!/)[>\\]])[^[<\\[]]*$`),
  180. action: { indentAction: monaco_editor_core_exports.languages.IndentAction.Indent }
  181. }
  182. ]
  183. };
  184. }
  185. function createMonarchLanguage(ts, is) {
  186. const id = `_${ts.id}_${is.id}`;
  187. const s = (name) => name.replace(/__id__/g, id);
  188. const r = (regexp) => {
  189. const source = regexp.source.replace(/__id__/g, id);
  190. return new RegExp(source, regexp.flags);
  191. };
  192. return {
  193. unicode: true,
  194. includeLF: false,
  195. start: s("default__id__"),
  196. ignoreCase: false,
  197. defaultToken: "invalid",
  198. tokenPostfix: `.freemarker2`,
  199. brackets: [
  200. { open: "{", close: "}", token: "delimiter.curly" },
  201. { open: "[", close: "]", token: "delimiter.square" },
  202. { open: "(", close: ")", token: "delimiter.parenthesis" },
  203. { open: "<", close: ">", token: "delimiter.angle" }
  204. ],
  205. [s("open__id__")]: new RegExp(ts.open),
  206. [s("close__id__")]: new RegExp(ts.close),
  207. [s("iOpen1__id__")]: new RegExp(is.open1),
  208. [s("iOpen2__id__")]: new RegExp(is.open2),
  209. [s("iClose__id__")]: new RegExp(is.close),
  210. [s("startTag__id__")]: r(/(@open__id__)(#)/),
  211. [s("endTag__id__")]: r(/(@open__id__)(\/#)/),
  212. [s("startOrEndTag__id__")]: r(/(@open__id__)(\/?#)/),
  213. [s("closeTag1__id__")]: r(/((?:@blank)*)(@close__id__)/),
  214. [s("closeTag2__id__")]: r(/((?:@blank)*\/?)(@close__id__)/),
  215. blank: /[ \t\n\r]/,
  216. keywords: ["false", "true", "in", "as", "using"],
  217. directiveStartCloseTag1: /attempt|recover|sep|auto[eE]sc|no(?:autoe|AutoE)sc|compress|default|no[eE]scape|comment|no[pP]arse/,
  218. directiveStartCloseTag2: /else|break|continue|return|stop|flush|t|lt|rt|nt|nested|recurse|fallback|ftl/,
  219. directiveStartBlank: /if|else[iI]f|list|for[eE]ach|switch|case|assign|global|local|include|import|function|macro|transform|visit|stop|return|call|setting|output[fF]ormat|nested|recurse|escape|ftl|items/,
  220. directiveEndCloseTag1: /if|list|items|sep|recover|attempt|for[eE]ach|local|global|assign|function|macro|output[fF]ormat|auto[eE]sc|no(?:autoe|AutoE)sc|compress|transform|switch|escape|no[eE]scape/,
  221. escapedChar: /\\(?:[ntrfbgla\\'"\{=]|(?:x[0-9A-Fa-f]{1,4}))/,
  222. asciiDigit: /[0-9]/,
  223. integer: /[0-9]+/,
  224. nonEscapedIdStartChar: /[\$@-Z_a-z\u00AA\u00B5\u00BA\u00C0-\u00D6\u00D8-\u00F6\u00F8-\u1FFF\u2071\u207F\u2090-\u209C\u2102\u2107\u210A-\u2113\u2115\u2119-\u211D\u2124\u2126\u2128\u212A-\u212D\u212F-\u2139\u213C-\u213F\u2145-\u2149\u214E\u2183-\u2184\u2C00-\u2C2E\u2C30-\u2C5E\u2C60-\u2CE4\u2CEB-\u2CEE\u2CF2-\u2CF3\u2D00-\u2D25\u2D27\u2D2D\u2D30-\u2D67\u2D6F\u2D80-\u2D96\u2DA0-\u2DA6\u2DA8-\u2DAE\u2DB0-\u2DB6\u2DB8-\u2DBE\u2DC0-\u2DC6\u2DC8-\u2DCE\u2DD0-\u2DD6\u2DD8-\u2DDE\u2E2F\u3005-\u3006\u3031-\u3035\u303B-\u303C\u3040-\u318F\u31A0-\u31BA\u31F0-\u31FF\u3300-\u337F\u3400-\u4DB5\u4E00-\uA48C\uA4D0-\uA4FD\uA500-\uA60C\uA610-\uA62B\uA640-\uA66E\uA67F-\uA697\uA6A0-\uA6E5\uA717-\uA71F\uA722-\uA788\uA78B-\uA78E\uA790-\uA793\uA7A0-\uA7AA\uA7F8-\uA801\uA803-\uA805\uA807-\uA80A\uA80C-\uA822\uA840-\uA873\uA882-\uA8B3\uA8D0-\uA8D9\uA8F2-\uA8F7\uA8FB\uA900-\uA925\uA930-\uA946\uA960-\uA97C\uA984-\uA9B2\uA9CF-\uA9D9\uAA00-\uAA28\uAA40-\uAA42\uAA44-\uAA4B\uAA50-\uAA59\uAA60-\uAA76\uAA7A\uAA80-\uAAAF\uAAB1\uAAB5-\uAAB6\uAAB9-\uAABD\uAAC0\uAAC2\uAADB-\uAADD\uAAE0-\uAAEA\uAAF2-\uAAF4\uAB01-\uAB06\uAB09-\uAB0E\uAB11-\uAB16\uAB20-\uAB26\uAB28-\uAB2E\uABC0-\uABE2\uABF0-\uABF9\uAC00-\uD7A3\uD7B0-\uD7C6\uD7CB-\uD7FB\uF900-\uFB06\uFB13-\uFB17\uFB1D\uFB1F-\uFB28\uFB2A-\uFB36\uFB38-\uFB3C\uFB3E\uFB40-\uFB41\uFB43-\uFB44\uFB46-\uFBB1\uFBD3-\uFD3D\uFD50-\uFD8F\uFD92-\uFDC7\uFDF0-\uFDFB\uFE70-\uFE74\uFE76-\uFEFC\uFF10-\uFF19\uFF21-\uFF3A\uFF41-\uFF5A\uFF66-\uFFBE\uFFC2-\uFFC7\uFFCA-\uFFCF\uFFD2-\uFFD7\uFFDA-\uFFDC]/,
  225. escapedIdChar: /\\[\-\.:#]/,
  226. idStartChar: /(?:@nonEscapedIdStartChar)|(?:@escapedIdChar)/,
  227. id: /(?:@idStartChar)(?:(?:@idStartChar)|(?:@asciiDigit))*/,
  228. specialHashKeys: /\*\*|\*|false|true|in|as|using/,
  229. namedSymbols: /&lt;=|&gt;=|\\lte|\\lt|&lt;|\\gte|\\gt|&gt;|&amp;&amp;|\\and|-&gt;|->|==|!=|\+=|-=|\*=|\/=|%=|\+\+|--|<=|&&|\|\||:|\.\.\.|\.\.\*|\.\.<|\.\.!|\?\?|=|<|\+|-|\*|\/|%|\||\.\.|\?|!|&|\.|,|;/,
  230. arrows: ["->", "-&gt;"],
  231. delimiters: [";", ":", ",", "."],
  232. stringOperators: ["lte", "lt", "gte", "gt"],
  233. noParseTags: ["noparse", "noParse", "comment"],
  234. tokenizer: {
  235. [s("default__id__")]: [
  236. { include: s("@directive_token__id__") },
  237. { include: s("@interpolation_and_text_token__id__") }
  238. ],
  239. [s("fmExpression__id__.directive")]: [
  240. { include: s("@blank_and_expression_comment_token__id__") },
  241. { include: s("@directive_end_token__id__") },
  242. { include: s("@expression_token__id__") }
  243. ],
  244. [s("fmExpression__id__.interpolation")]: [
  245. { include: s("@blank_and_expression_comment_token__id__") },
  246. { include: s("@expression_token__id__") },
  247. { include: s("@greater_operators_token__id__") }
  248. ],
  249. [s("inParen__id__.plain")]: [
  250. { include: s("@blank_and_expression_comment_token__id__") },
  251. { include: s("@directive_end_token__id__") },
  252. { include: s("@expression_token__id__") }
  253. ],
  254. [s("inParen__id__.gt")]: [
  255. { include: s("@blank_and_expression_comment_token__id__") },
  256. { include: s("@expression_token__id__") },
  257. { include: s("@greater_operators_token__id__") }
  258. ],
  259. [s("noSpaceExpression__id__")]: [
  260. { include: s("@no_space_expression_end_token__id__") },
  261. { include: s("@directive_end_token__id__") },
  262. { include: s("@expression_token__id__") }
  263. ],
  264. [s("unifiedCall__id__")]: [{ include: s("@unified_call_token__id__") }],
  265. [s("singleString__id__")]: [{ include: s("@string_single_token__id__") }],
  266. [s("doubleString__id__")]: [{ include: s("@string_double_token__id__") }],
  267. [s("rawSingleString__id__")]: [{ include: s("@string_single_raw_token__id__") }],
  268. [s("rawDoubleString__id__")]: [{ include: s("@string_double_raw_token__id__") }],
  269. [s("expressionComment__id__")]: [{ include: s("@expression_comment_token__id__") }],
  270. [s("noParse__id__")]: [{ include: s("@no_parse_token__id__") }],
  271. [s("terseComment__id__")]: [{ include: s("@terse_comment_token__id__") }],
  272. [s("directive_token__id__")]: [
  273. [
  274. r(/(?:@startTag__id__)(@directiveStartCloseTag1)(?:@closeTag1__id__)/),
  275. ts.id === "auto" ? {
  276. cases: {
  277. "$1==<": { token: "@rematch", switchTo: `@default_angle_${is.id}` },
  278. "$1==[": { token: "@rematch", switchTo: `@default_bracket_${is.id}` }
  279. }
  280. } : [
  281. { token: "@brackets.directive" },
  282. { token: "delimiter.directive" },
  283. {
  284. cases: {
  285. "@noParseTags": { token: "tag", next: s("@noParse__id__.$3") },
  286. "@default": { token: "tag" }
  287. }
  288. },
  289. { token: "delimiter.directive" },
  290. { token: "@brackets.directive" }
  291. ]
  292. ],
  293. [
  294. r(/(?:@startTag__id__)(@directiveStartCloseTag2)(?:@closeTag2__id__)/),
  295. ts.id === "auto" ? {
  296. cases: {
  297. "$1==<": { token: "@rematch", switchTo: `@default_angle_${is.id}` },
  298. "$1==[": { token: "@rematch", switchTo: `@default_bracket_${is.id}` }
  299. }
  300. } : [
  301. { token: "@brackets.directive" },
  302. { token: "delimiter.directive" },
  303. { token: "tag" },
  304. { token: "delimiter.directive" },
  305. { token: "@brackets.directive" }
  306. ]
  307. ],
  308. [
  309. r(/(?:@startTag__id__)(@directiveStartBlank)(@blank)/),
  310. ts.id === "auto" ? {
  311. cases: {
  312. "$1==<": { token: "@rematch", switchTo: `@default_angle_${is.id}` },
  313. "$1==[": { token: "@rematch", switchTo: `@default_bracket_${is.id}` }
  314. }
  315. } : [
  316. { token: "@brackets.directive" },
  317. { token: "delimiter.directive" },
  318. { token: "tag" },
  319. { token: "", next: s("@fmExpression__id__.directive") }
  320. ]
  321. ],
  322. [
  323. r(/(?:@endTag__id__)(@directiveEndCloseTag1)(?:@closeTag1__id__)/),
  324. ts.id === "auto" ? {
  325. cases: {
  326. "$1==<": { token: "@rematch", switchTo: `@default_angle_${is.id}` },
  327. "$1==[": { token: "@rematch", switchTo: `@default_bracket_${is.id}` }
  328. }
  329. } : [
  330. { token: "@brackets.directive" },
  331. { token: "delimiter.directive" },
  332. { token: "tag" },
  333. { token: "delimiter.directive" },
  334. { token: "@brackets.directive" }
  335. ]
  336. ],
  337. [
  338. r(/(@open__id__)(@)/),
  339. ts.id === "auto" ? {
  340. cases: {
  341. "$1==<": { token: "@rematch", switchTo: `@default_angle_${is.id}` },
  342. "$1==[": { token: "@rematch", switchTo: `@default_bracket_${is.id}` }
  343. }
  344. } : [
  345. { token: "@brackets.directive" },
  346. { token: "delimiter.directive", next: s("@unifiedCall__id__") }
  347. ]
  348. ],
  349. [
  350. r(/(@open__id__)(\/@)((?:(?:@id)(?:\.(?:@id))*)?)(?:@closeTag1__id__)/),
  351. [
  352. { token: "@brackets.directive" },
  353. { token: "delimiter.directive" },
  354. { token: "tag" },
  355. { token: "delimiter.directive" },
  356. { token: "@brackets.directive" }
  357. ]
  358. ],
  359. [
  360. r(/(@open__id__)#--/),
  361. ts.id === "auto" ? {
  362. cases: {
  363. "$1==<": { token: "@rematch", switchTo: `@default_angle_${is.id}` },
  364. "$1==[": { token: "@rematch", switchTo: `@default_bracket_${is.id}` }
  365. }
  366. } : { token: "comment", next: s("@terseComment__id__") }
  367. ],
  368. [
  369. r(/(?:@startOrEndTag__id__)([a-zA-Z_]+)/),
  370. ts.id === "auto" ? {
  371. cases: {
  372. "$1==<": { token: "@rematch", switchTo: `@default_angle_${is.id}` },
  373. "$1==[": { token: "@rematch", switchTo: `@default_bracket_${is.id}` }
  374. }
  375. } : [
  376. { token: "@brackets.directive" },
  377. { token: "delimiter.directive" },
  378. { token: "tag.invalid", next: s("@fmExpression__id__.directive") }
  379. ]
  380. ]
  381. ],
  382. [s("interpolation_and_text_token__id__")]: [
  383. [
  384. r(/(@iOpen1__id__)(@iOpen2__id__)/),
  385. [
  386. { token: is.id === "bracket" ? "@brackets.interpolation" : "delimiter.interpolation" },
  387. {
  388. token: is.id === "bracket" ? "delimiter.interpolation" : "@brackets.interpolation",
  389. next: s("@fmExpression__id__.interpolation")
  390. }
  391. ]
  392. ],
  393. [/[\$#<\[\{]|(?:@blank)+|[^\$<#\[\{\n\r\t ]+/, { token: "source" }]
  394. ],
  395. [s("string_single_token__id__")]: [
  396. [/[^'\\]/, { token: "string" }],
  397. [/@escapedChar/, { token: "string.escape" }],
  398. [/'/, { token: "string", next: "@pop" }]
  399. ],
  400. [s("string_double_token__id__")]: [
  401. [/[^"\\]/, { token: "string" }],
  402. [/@escapedChar/, { token: "string.escape" }],
  403. [/"/, { token: "string", next: "@pop" }]
  404. ],
  405. [s("string_single_raw_token__id__")]: [
  406. [/[^']+/, { token: "string.raw" }],
  407. [/'/, { token: "string.raw", next: "@pop" }]
  408. ],
  409. [s("string_double_raw_token__id__")]: [
  410. [/[^"]+/, { token: "string.raw" }],
  411. [/"/, { token: "string.raw", next: "@pop" }]
  412. ],
  413. [s("expression_token__id__")]: [
  414. [
  415. /(r?)(['"])/,
  416. {
  417. cases: {
  418. "r'": [
  419. { token: "keyword" },
  420. { token: "string.raw", next: s("@rawSingleString__id__") }
  421. ],
  422. 'r"': [
  423. { token: "keyword" },
  424. { token: "string.raw", next: s("@rawDoubleString__id__") }
  425. ],
  426. "'": [{ token: "source" }, { token: "string", next: s("@singleString__id__") }],
  427. '"': [{ token: "source" }, { token: "string", next: s("@doubleString__id__") }]
  428. }
  429. }
  430. ],
  431. [
  432. /(?:@integer)(?:\.(?:@integer))?/,
  433. {
  434. cases: {
  435. "(?:@integer)": { token: "number" },
  436. "@default": { token: "number.float" }
  437. }
  438. }
  439. ],
  440. [
  441. /(\.)(@blank*)(@specialHashKeys)/,
  442. [{ token: "delimiter" }, { token: "" }, { token: "identifier" }]
  443. ],
  444. [
  445. /(?:@namedSymbols)/,
  446. {
  447. cases: {
  448. "@arrows": { token: "meta.arrow" },
  449. "@delimiters": { token: "delimiter" },
  450. "@default": { token: "operators" }
  451. }
  452. }
  453. ],
  454. [
  455. /@id/,
  456. {
  457. cases: {
  458. "@keywords": { token: "keyword.$0" },
  459. "@stringOperators": { token: "operators" },
  460. "@default": { token: "identifier" }
  461. }
  462. }
  463. ],
  464. [
  465. /[\[\]\(\)\{\}]/,
  466. {
  467. cases: {
  468. "\\[": {
  469. cases: {
  470. "$S2==gt": { token: "@brackets", next: s("@inParen__id__.gt") },
  471. "@default": { token: "@brackets", next: s("@inParen__id__.plain") }
  472. }
  473. },
  474. "\\]": {
  475. cases: {
  476. ...is.id === "bracket" ? {
  477. "$S2==interpolation": { token: "@brackets.interpolation", next: "@popall" }
  478. } : {},
  479. ...ts.id === "bracket" ? {
  480. "$S2==directive": { token: "@brackets.directive", next: "@popall" }
  481. } : {},
  482. [s("$S1==inParen__id__")]: { token: "@brackets", next: "@pop" },
  483. "@default": { token: "@brackets" }
  484. }
  485. },
  486. "\\(": { token: "@brackets", next: s("@inParen__id__.gt") },
  487. "\\)": {
  488. cases: {
  489. [s("$S1==inParen__id__")]: { token: "@brackets", next: "@pop" },
  490. "@default": { token: "@brackets" }
  491. }
  492. },
  493. "\\{": {
  494. cases: {
  495. "$S2==gt": { token: "@brackets", next: s("@inParen__id__.gt") },
  496. "@default": { token: "@brackets", next: s("@inParen__id__.plain") }
  497. }
  498. },
  499. "\\}": {
  500. cases: {
  501. ...is.id === "bracket" ? {} : {
  502. "$S2==interpolation": { token: "@brackets.interpolation", next: "@popall" }
  503. },
  504. [s("$S1==inParen__id__")]: { token: "@brackets", next: "@pop" },
  505. "@default": { token: "@brackets" }
  506. }
  507. }
  508. }
  509. }
  510. ],
  511. [/\$\{/, { token: "delimiter.invalid" }]
  512. ],
  513. [s("blank_and_expression_comment_token__id__")]: [
  514. [/(?:@blank)+/, { token: "" }],
  515. [/[<\[][#!]--/, { token: "comment", next: s("@expressionComment__id__") }]
  516. ],
  517. [s("directive_end_token__id__")]: [
  518. [
  519. />/,
  520. ts.id === "bracket" ? { token: "operators" } : { token: "@brackets.directive", next: "@popall" }
  521. ],
  522. [
  523. r(/(\/)(@close__id__)/),
  524. [{ token: "delimiter.directive" }, { token: "@brackets.directive", next: "@popall" }]
  525. ]
  526. ],
  527. [s("greater_operators_token__id__")]: [
  528. [/>/, { token: "operators" }],
  529. [/>=/, { token: "operators" }]
  530. ],
  531. [s("no_space_expression_end_token__id__")]: [
  532. [/(?:@blank)+/, { token: "", switchTo: s("@fmExpression__id__.directive") }]
  533. ],
  534. [s("unified_call_token__id__")]: [
  535. [
  536. /(@id)((?:@blank)+)/,
  537. [{ token: "tag" }, { token: "", next: s("@fmExpression__id__.directive") }]
  538. ],
  539. [
  540. r(/(@id)(\/?)(@close__id__)/),
  541. [
  542. { token: "tag" },
  543. { token: "delimiter.directive" },
  544. { token: "@brackets.directive", next: "@popall" }
  545. ]
  546. ],
  547. [/./, { token: "@rematch", next: s("@noSpaceExpression__id__") }]
  548. ],
  549. [s("no_parse_token__id__")]: [
  550. [
  551. r(/(@open__id__)(\/#?)([a-zA-Z]+)((?:@blank)*)(@close__id__)/),
  552. {
  553. cases: {
  554. "$S2==$3": [
  555. { token: "@brackets.directive" },
  556. { token: "delimiter.directive" },
  557. { token: "tag" },
  558. { token: "" },
  559. { token: "@brackets.directive", next: "@popall" }
  560. ],
  561. "$S2==comment": [
  562. { token: "comment" },
  563. { token: "comment" },
  564. { token: "comment" },
  565. { token: "comment" },
  566. { token: "comment" }
  567. ],
  568. "@default": [
  569. { token: "source" },
  570. { token: "source" },
  571. { token: "source" },
  572. { token: "source" },
  573. { token: "source" }
  574. ]
  575. }
  576. }
  577. ],
  578. [
  579. /[^<\[\-]+|[<\[\-]/,
  580. {
  581. cases: {
  582. "$S2==comment": { token: "comment" },
  583. "@default": { token: "source" }
  584. }
  585. }
  586. ]
  587. ],
  588. [s("expression_comment_token__id__")]: [
  589. [
  590. /--[>\]]/,
  591. {
  592. token: "comment",
  593. next: "@pop"
  594. }
  595. ],
  596. [/[^\->\]]+|[>\]\-]/, { token: "comment" }]
  597. ],
  598. [s("terse_comment_token__id__")]: [
  599. [r(/--(?:@close__id__)/), { token: "comment", next: "@popall" }],
  600. [/[^<\[\-]+|[<\[\-]/, { token: "comment" }]
  601. ]
  602. }
  603. };
  604. }
  605. function createMonarchLanguageAuto(is) {
  606. const angle = createMonarchLanguage(TagSyntaxAngle, is);
  607. const bracket = createMonarchLanguage(TagSyntaxBracket, is);
  608. const auto = createMonarchLanguage(TagSyntaxAuto, is);
  609. return {
  610. ...angle,
  611. ...bracket,
  612. ...auto,
  613. unicode: true,
  614. includeLF: false,
  615. start: `default_auto_${is.id}`,
  616. ignoreCase: false,
  617. defaultToken: "invalid",
  618. tokenPostfix: `.freemarker2`,
  619. brackets: [
  620. { open: "{", close: "}", token: "delimiter.curly" },
  621. { open: "[", close: "]", token: "delimiter.square" },
  622. { open: "(", close: ")", token: "delimiter.parenthesis" },
  623. { open: "<", close: ">", token: "delimiter.angle" }
  624. ],
  625. tokenizer: {
  626. ...angle.tokenizer,
  627. ...bracket.tokenizer,
  628. ...auto.tokenizer
  629. }
  630. };
  631. }
  632. var TagAngleInterpolationDollar = {
  633. conf: createLangConfiguration(TagSyntaxAngle),
  634. language: createMonarchLanguage(TagSyntaxAngle, InterpolationSyntaxDollar)
  635. };
  636. var TagBracketInterpolationDollar = {
  637. conf: createLangConfiguration(TagSyntaxBracket),
  638. language: createMonarchLanguage(TagSyntaxBracket, InterpolationSyntaxDollar)
  639. };
  640. var TagAngleInterpolationBracket = {
  641. conf: createLangConfiguration(TagSyntaxAngle),
  642. language: createMonarchLanguage(TagSyntaxAngle, InterpolationSyntaxBracket)
  643. };
  644. var TagBracketInterpolationBracket = {
  645. conf: createLangConfiguration(TagSyntaxBracket),
  646. language: createMonarchLanguage(TagSyntaxBracket, InterpolationSyntaxBracket)
  647. };
  648. var TagAutoInterpolationDollar = {
  649. conf: createLangConfigurationAuto(),
  650. language: createMonarchLanguageAuto(InterpolationSyntaxDollar)
  651. };
  652. var TagAutoInterpolationBracket = {
  653. conf: createLangConfigurationAuto(),
  654. language: createMonarchLanguageAuto(InterpolationSyntaxBracket)
  655. };
  656. export {
  657. TagAngleInterpolationBracket,
  658. TagAngleInterpolationDollar,
  659. TagAutoInterpolationBracket,
  660. TagAutoInterpolationDollar,
  661. TagBracketInterpolationBracket,
  662. TagBracketInterpolationDollar
  663. };
  664. /*! Bundled license information:
  665. monaco-editor/esm/vs/basic-languages/freemarker2/freemarker2.js:
  666. (*!-----------------------------------------------------------------------------
  667. * Copyright (c) Microsoft Corporation. All rights reserved.
  668. * Version: 0.38.0(0e330ae453813de4e6cf272460fb79c7117073d0)
  669. * Released under the MIT license
  670. * https://github.com/microsoft/monaco-editor/blob/main/LICENSE.txt
  671. *-----------------------------------------------------------------------------*)
  672. */
  673. //# sourceMappingURL=freemarker2-FXHMVVOS.js.map