{"version":3,"sources":["../../node_modules/codemirror/mode/textile/textile.js"],"names":["mod","exports","module","require","define","amd","CodeMirror","TOKEN_STYLES","addition","attributes","bold","cite","code","definitionList","deletion","div","em","footnote","footCite","header","html","image","italic","link","linkDefinition","list1","list2","list3","notextile","pre","p","quote","span","specialChar","strong","sub","sup","table","tableHeading","startNewLine","stream","state","mode","Modes","newLayout","layoutType","spanningLayout","match","RE","handlePhraseModifier","ch","eat","togglePhraseModifier","tokenStyles","spec","tokenStylesWith","type","phraseModifier","closeRE","openSize","charBefore","pos","string","charAt","charAfter","peek","test","RegExp","source","disabled","textileDisabled","styles","push","concat","activeStyles","length","join","extraStyles","i","arguments","blankLine","key","hasOwnProperty","REs","cache","single","bc","bq","definitionListEnd","drawTable","foot","list","para","tableCellAttributes","tableText","text","align","selector","lang","pad","css","createRe","name","makeRe","choiceRe","pattern","arg","parts","unshift","apply","blockType","newMode","parseInt","next","layoutLength","listDepth","listMod","skipToEnd","tableCell","defineMode","startState","token","sol","defineMIME"],"mappings":"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","file":"textile.min.js","sourcesContent":["// CodeMirror, copyright (c) by Marijn Haverbeke and others\n// Distributed under an MIT license: https://codemirror.net/LICENSE\n\n(function(mod) {\n if (typeof exports == \"object\" && typeof module == \"object\") { // CommonJS\n mod(require(\"../../lib/codemirror\"));\n } else if (typeof define == \"function\" && define.amd) { // AMD\n define([\"../../lib/codemirror\"], mod);\n } else { // Plain browser env\n mod(CodeMirror);\n }\n})(function(CodeMirror) {\n \"use strict\";\n\n var TOKEN_STYLES = {\n addition: \"positive\",\n attributes: \"attribute\",\n bold: \"strong\",\n cite: \"keyword\",\n code: \"atom\",\n definitionList: \"number\",\n deletion: \"negative\",\n div: \"punctuation\",\n em: \"em\",\n footnote: \"variable\",\n footCite: \"qualifier\",\n header: \"header\",\n html: \"comment\",\n image: \"string\",\n italic: \"em\",\n link: \"link\",\n linkDefinition: \"link\",\n list1: \"variable-2\",\n list2: \"variable-3\",\n list3: \"keyword\",\n notextile: \"string-2\",\n pre: \"operator\",\n p: \"property\",\n quote: \"bracket\",\n span: \"quote\",\n specialChar: \"tag\",\n strong: \"strong\",\n sub: \"builtin\",\n sup: \"builtin\",\n table: \"variable-3\",\n tableHeading: \"operator\"\n };\n\n function startNewLine(stream, state) {\n state.mode = Modes.newLayout;\n state.tableHeading = false;\n\n if (state.layoutType === \"definitionList\" && state.spanningLayout &&\n stream.match(RE(\"definitionListEnd\"), false))\n state.spanningLayout = false;\n }\n\n function handlePhraseModifier(stream, state, ch) {\n if (ch === \"_\") {\n if (stream.eat(\"_\"))\n return togglePhraseModifier(stream, state, \"italic\", /__/, 2);\n else\n return togglePhraseModifier(stream, state, \"em\", /_/, 1);\n }\n\n if (ch === \"*\") {\n if (stream.eat(\"*\")) {\n return togglePhraseModifier(stream, state, \"bold\", /\\*\\*/, 2);\n }\n return togglePhraseModifier(stream, state, \"strong\", /\\*/, 1);\n }\n\n if (ch === \"[\") {\n if (stream.match(/\\d+\\]/)) state.footCite = true;\n return tokenStyles(state);\n }\n\n if (ch === \"(\") {\n var spec = stream.match(/^(r|tm|c)\\)/);\n if (spec)\n return tokenStylesWith(state, TOKEN_STYLES.specialChar);\n }\n\n if (ch === \"<\" && stream.match(/(\\w+)[^>]+>[^<]+<\\/\\1>/))\n return tokenStylesWith(state, TOKEN_STYLES.html);\n\n if (ch === \"?\" && stream.eat(\"?\"))\n return togglePhraseModifier(stream, state, \"cite\", /\\?\\?/, 2);\n\n if (ch === \"=\" && stream.eat(\"=\"))\n return togglePhraseModifier(stream, state, \"notextile\", /==/, 2);\n\n if (ch === \"-\" && !stream.eat(\"-\"))\n return togglePhraseModifier(stream, state, \"deletion\", /-/, 1);\n\n if (ch === \"+\")\n return togglePhraseModifier(stream, state, \"addition\", /\\+/, 1);\n\n if (ch === \"~\")\n return togglePhraseModifier(stream, state, \"sub\", /~/, 1);\n\n if (ch === \"^\")\n return togglePhraseModifier(stream, state, \"sup\", /\\^/, 1);\n\n if (ch === \"%\")\n return togglePhraseModifier(stream, state, \"span\", /%/, 1);\n\n if (ch === \"@\")\n return togglePhraseModifier(stream, state, \"code\", /@/, 1);\n\n if (ch === \"!\") {\n var type = togglePhraseModifier(stream, state, \"image\", /(?:\\([^\\)]+\\))?!/, 1);\n stream.match(/^:\\S+/); // optional Url portion\n return type;\n }\n return tokenStyles(state);\n }\n\n function togglePhraseModifier(stream, state, phraseModifier, closeRE, openSize) {\n var charBefore = stream.pos > openSize ? stream.string.charAt(stream.pos - openSize - 1) : null;\n var charAfter = stream.peek();\n if (state[phraseModifier]) {\n if ((!charAfter || /\\W/.test(charAfter)) && charBefore && /\\S/.test(charBefore)) {\n var type = tokenStyles(state);\n state[phraseModifier] = false;\n return type;\n }\n } else if ((!charBefore || /\\W/.test(charBefore)) && charAfter && /\\S/.test(charAfter) &&\n stream.match(new RegExp(\"^.*\\\\S\" + closeRE.source + \"(?:\\\\W|$)\"), false)) {\n state[phraseModifier] = true;\n state.mode = Modes.attributes;\n }\n return tokenStyles(state);\n };\n\n function tokenStyles(state) {\n var disabled = textileDisabled(state);\n if (disabled) return disabled;\n\n var styles = [];\n if (state.layoutType) styles.push(TOKEN_STYLES[state.layoutType]);\n\n styles = styles.concat(activeStyles(\n state, \"addition\", \"bold\", \"cite\", \"code\", \"deletion\", \"em\", \"footCite\",\n \"image\", \"italic\", \"link\", \"span\", \"strong\", \"sub\", \"sup\", \"table\", \"tableHeading\"));\n\n if (state.layoutType === \"header\")\n styles.push(TOKEN_STYLES.header + \"-\" + state.header);\n\n return styles.length ? styles.join(\" \") : null;\n }\n\n function textileDisabled(state) {\n var type = state.layoutType;\n\n switch(type) {\n case \"notextile\":\n case \"code\":\n case \"pre\":\n return TOKEN_STYLES[type];\n default:\n if (state.notextile)\n return TOKEN_STYLES.notextile + (type ? (\" \" + TOKEN_STYLES[type]) : \"\");\n return null;\n }\n }\n\n function tokenStylesWith(state, extraStyles) {\n var disabled = textileDisabled(state);\n if (disabled) return disabled;\n\n var type = tokenStyles(state);\n if (extraStyles)\n return type ? (type + \" \" + extraStyles) : extraStyles;\n else\n return type;\n }\n\n function activeStyles(state) {\n var styles = [];\n for (var i = 1; i < arguments.length; ++i) {\n if (state[arguments[i]])\n styles.push(TOKEN_STYLES[arguments[i]]);\n }\n return styles;\n }\n\n function blankLine(state) {\n var spanningLayout = state.spanningLayout, type = state.layoutType;\n\n for (var key in state) if (state.hasOwnProperty(key))\n delete state[key];\n\n state.mode = Modes.newLayout;\n if (spanningLayout) {\n state.layoutType = type;\n state.spanningLayout = true;\n }\n }\n\n var REs = {\n cache: {},\n single: {\n bc: \"bc\",\n bq: \"bq\",\n definitionList: /- .*?:=+/,\n definitionListEnd: /.*=:\\s*$/,\n div: \"div\",\n drawTable: /\\|.*\\|/,\n foot: /fn\\d+/,\n header: /h[1-6]/,\n html: /\\s*<(?:\\/)?(\\w+)(?:[^>]+)?>(?:[^<]+<\\/\\1>)?/,\n link: /[^\"]+\":\\S/,\n linkDefinition: /\\[[^\\s\\]]+\\]\\S+/,\n list: /(?:#+|\\*+)/,\n notextile: \"notextile\",\n para: \"p\",\n pre: \"pre\",\n table: \"table\",\n tableCellAttributes: /[\\/\\\\]\\d+/,\n tableHeading: /\\|_\\./,\n tableText: /[^\"_\\*\\[\\(\\?\\+~\\^%@|-]+/,\n text: /[^!\"_=\\*\\[\\(<\\?\\+~\\^%@-]+/\n },\n attributes: {\n align: /(?:<>|<|>|=)/,\n selector: /\\([^\\(][^\\)]+\\)/,\n lang: /\\[[^\\[\\]]+\\]/,\n pad: /(?:\\(+|\\)+){1,2}/,\n css: /\\{[^\\}]+\\}/\n },\n createRe: function(name) {\n switch (name) {\n case \"drawTable\":\n return REs.makeRe(\"^\", REs.single.drawTable, \"$\");\n case \"html\":\n return REs.makeRe(\"^\", REs.single.html, \"(?:\", REs.single.html, \")*\", \"$\");\n case \"linkDefinition\":\n return REs.makeRe(\"^\", REs.single.linkDefinition, \"$\");\n case \"listLayout\":\n return REs.makeRe(\"^\", REs.single.list, RE(\"allAttributes\"), \"*\\\\s+\");\n case \"tableCellAttributes\":\n return REs.makeRe(\"^\", REs.choiceRe(REs.single.tableCellAttributes,\n RE(\"allAttributes\")), \"+\\\\.\");\n case \"type\":\n return REs.makeRe(\"^\", RE(\"allTypes\"));\n case \"typeLayout\":\n return REs.makeRe(\"^\", RE(\"allTypes\"), RE(\"allAttributes\"),\n \"*\\\\.\\\\.?\", \"(\\\\s+|$)\");\n case \"attributes\":\n return REs.makeRe(\"^\", RE(\"allAttributes\"), \"+\");\n\n case \"allTypes\":\n return REs.choiceRe(REs.single.div, REs.single.foot,\n REs.single.header, REs.single.bc, REs.single.bq,\n REs.single.notextile, REs.single.pre, REs.single.table,\n REs.single.para);\n\n case \"allAttributes\":\n return REs.choiceRe(REs.attributes.selector, REs.attributes.css,\n REs.attributes.lang, REs.attributes.align, REs.attributes.pad);\n\n default:\n return REs.makeRe(\"^\", REs.single[name]);\n }\n },\n makeRe: function() {\n var pattern = \"\";\n for (var i = 0; i < arguments.length; ++i) {\n var arg = arguments[i];\n pattern += (typeof arg === \"string\") ? arg : arg.source;\n }\n return new RegExp(pattern);\n },\n choiceRe: function() {\n var parts = [arguments[0]];\n for (var i = 1; i < arguments.length; ++i) {\n parts[i * 2 - 1] = \"|\";\n parts[i * 2] = arguments[i];\n }\n\n parts.unshift(\"(?:\");\n parts.push(\")\");\n return REs.makeRe.apply(null, parts);\n }\n };\n\n function RE(name) {\n return (REs.cache[name] || (REs.cache[name] = REs.createRe(name)));\n }\n\n var Modes = {\n newLayout: function(stream, state) {\n if (stream.match(RE(\"typeLayout\"), false)) {\n state.spanningLayout = false;\n return (state.mode = Modes.blockType)(stream, state);\n }\n var newMode;\n if (!textileDisabled(state)) {\n if (stream.match(RE(\"listLayout\"), false))\n newMode = Modes.list;\n else if (stream.match(RE(\"drawTable\"), false))\n newMode = Modes.table;\n else if (stream.match(RE(\"linkDefinition\"), false))\n newMode = Modes.linkDefinition;\n else if (stream.match(RE(\"definitionList\")))\n newMode = Modes.definitionList;\n else if (stream.match(RE(\"html\"), false))\n newMode = Modes.html;\n }\n return (state.mode = (newMode || Modes.text))(stream, state);\n },\n\n blockType: function(stream, state) {\n var match, type;\n state.layoutType = null;\n\n if (match = stream.match(RE(\"type\")))\n type = match[0];\n else\n return (state.mode = Modes.text)(stream, state);\n\n if (match = type.match(RE(\"header\"))) {\n state.layoutType = \"header\";\n state.header = parseInt(match[0][1]);\n } else if (type.match(RE(\"bq\"))) {\n state.layoutType = \"quote\";\n } else if (type.match(RE(\"bc\"))) {\n state.layoutType = \"code\";\n } else if (type.match(RE(\"foot\"))) {\n state.layoutType = \"footnote\";\n } else if (type.match(RE(\"notextile\"))) {\n state.layoutType = \"notextile\";\n } else if (type.match(RE(\"pre\"))) {\n state.layoutType = \"pre\";\n } else if (type.match(RE(\"div\"))) {\n state.layoutType = \"div\";\n } else if (type.match(RE(\"table\"))) {\n state.layoutType = \"table\";\n }\n\n state.mode = Modes.attributes;\n return tokenStyles(state);\n },\n\n text: function(stream, state) {\n if (stream.match(RE(\"text\"))) return tokenStyles(state);\n\n var ch = stream.next();\n if (ch === '\"')\n return (state.mode = Modes.link)(stream, state);\n return handlePhraseModifier(stream, state, ch);\n },\n\n attributes: function(stream, state) {\n state.mode = Modes.layoutLength;\n\n if (stream.match(RE(\"attributes\")))\n return tokenStylesWith(state, TOKEN_STYLES.attributes);\n else\n return tokenStyles(state);\n },\n\n layoutLength: function(stream, state) {\n if (stream.eat(\".\") && stream.eat(\".\"))\n state.spanningLayout = true;\n\n state.mode = Modes.text;\n return tokenStyles(state);\n },\n\n list: function(stream, state) {\n var match = stream.match(RE(\"list\"));\n state.listDepth = match[0].length;\n var listMod = (state.listDepth - 1) % 3;\n if (!listMod)\n state.layoutType = \"list1\";\n else if (listMod === 1)\n state.layoutType = \"list2\";\n else\n state.layoutType = \"list3\";\n\n state.mode = Modes.attributes;\n return tokenStyles(state);\n },\n\n link: function(stream, state) {\n state.mode = Modes.text;\n if (stream.match(RE(\"link\"))) {\n stream.match(/\\S+/);\n return tokenStylesWith(state, TOKEN_STYLES.link);\n }\n return tokenStyles(state);\n },\n\n linkDefinition: function(stream, state) {\n stream.skipToEnd();\n return tokenStylesWith(state, TOKEN_STYLES.linkDefinition);\n },\n\n definitionList: function(stream, state) {\n stream.match(RE(\"definitionList\"));\n\n state.layoutType = \"definitionList\";\n\n if (stream.match(/\\s*$/))\n state.spanningLayout = true;\n else\n state.mode = Modes.attributes;\n\n return tokenStyles(state);\n },\n\n html: function(stream, state) {\n stream.skipToEnd();\n return tokenStylesWith(state, TOKEN_STYLES.html);\n },\n\n table: function(stream, state) {\n state.layoutType = \"table\";\n return (state.mode = Modes.tableCell)(stream, state);\n },\n\n tableCell: function(stream, state) {\n if (stream.match(RE(\"tableHeading\")))\n state.tableHeading = true;\n else\n stream.eat(\"|\");\n\n state.mode = Modes.tableCellAttributes;\n return tokenStyles(state);\n },\n\n tableCellAttributes: function(stream, state) {\n state.mode = Modes.tableText;\n\n if (stream.match(RE(\"tableCellAttributes\")))\n return tokenStylesWith(state, TOKEN_STYLES.attributes);\n else\n return tokenStyles(state);\n },\n\n tableText: function(stream, state) {\n if (stream.match(RE(\"tableText\")))\n return tokenStyles(state);\n\n if (stream.peek() === \"|\") { // end of cell\n state.mode = Modes.tableCell;\n return tokenStyles(state);\n }\n return handlePhraseModifier(stream, state, stream.next());\n }\n };\n\n CodeMirror.defineMode(\"textile\", function() {\n return {\n startState: function() {\n return { mode: Modes.newLayout };\n },\n token: function(stream, state) {\n if (stream.sol()) startNewLine(stream, state);\n return state.mode(stream, state);\n },\n blankLine: blankLine\n };\n });\n\n CodeMirror.defineMIME(\"text/x-textile\", \"textile\");\n});\n"]}