1{"version":3,"sources":["../../node_modules/codemirror/mode/tiki/tiki.js"],"names":["mod","exports","module","require","define","amd","CodeMirror","defineMode","config","inBlock","style","terminator","returnTokenizer","stream","state","eol","match","tokenize","inText","next","inLine","chain","parser","sol","ch","eat","eatSpace","eatWhile","inPlugin","indentUnit","pluginName","type","peek","test","inAttributeNoQuote","inAttribute","quote","curState","setStyle","pass","i","arguments","length","cc","push","cont","apply","pushContext","startOfLine","noIndent","context","prev","indent","indented","popContext","element","attributes","endplugin","err","endcloseplugin","name","attvalue","attvaluemaybe","startState","token","indentation","comb","pop","textAfter","electricChars","defineMIME"],"mappings":"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","file":"tiki.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})(function(CodeMirror) {\n\"use strict\";\n\nCodeMirror.defineMode('tiki', function(config) {\n  function inBlock(style, terminator, returnTokenizer) {\n    return function(stream, state) {\n      while (!stream.eol()) {\n        if (stream.match(terminator)) {\n          state.tokenize = inText;\n          break;\n        }\n        stream.next();\n      }\n\n      if (returnTokenizer) state.tokenize = returnTokenizer;\n\n      return style;\n    };\n  }\n\n  function inLine(style) {\n    return function(stream, state) {\n      while(!stream.eol()) {\n        stream.next();\n      }\n      state.tokenize = inText;\n      return style;\n    };\n  }\n\n  function inText(stream, state) {\n    function chain(parser) {\n      state.tokenize = parser;\n      return parser(stream, state);\n    }\n\n    var sol = stream.sol();\n    var ch = stream.next();\n\n    //non start of line\n    switch (ch) { //switch is generally much faster than if, so it is used here\n    case \"{\": //plugin\n      stream.eat(\"/\");\n      stream.eatSpace();\n      stream.eatWhile(/[^\\s\\u00a0=\\\"\\'\\/?(}]/);\n      state.tokenize = inPlugin;\n      return \"tag\";\n    case \"_\": //bold\n      if (stream.eat(\"_\"))\n        return chain(inBlock(\"strong\", \"__\", inText));\n      break;\n    case \"'\": //italics\n      if (stream.eat(\"'\"))\n        return chain(inBlock(\"em\", \"''\", inText));\n      break;\n    case \"(\":// Wiki Link\n      if (stream.eat(\"(\"))\n        return chain(inBlock(\"variable-2\", \"))\", inText));\n      break;\n    case \"[\":// Weblink\n      return chain(inBlock(\"variable-3\", \"]\", inText));\n      break;\n    case \"|\": //table\n      if (stream.eat(\"|\"))\n        return chain(inBlock(\"comment\", \"||\"));\n      break;\n    case \"-\":\n      if (stream.eat(\"=\")) {//titleBar\n        return chain(inBlock(\"header string\", \"=-\", inText));\n      } else if (stream.eat(\"-\")) {//deleted\n        return chain(inBlock(\"error tw-deleted\", \"--\", inText));\n      }\n      break;\n    case \"=\": //underline\n      if (stream.match(\"==\"))\n        return chain(inBlock(\"tw-underline\", \"===\", inText));\n      break;\n    case \":\":\n      if (stream.eat(\":\"))\n        return chain(inBlock(\"comment\", \"::\"));\n      break;\n    case \"^\": //box\n      return chain(inBlock(\"tw-box\", \"^\"));\n      break;\n    case \"~\": //np\n      if (stream.match(\"np~\"))\n        return chain(inBlock(\"meta\", \"~/np~\"));\n      break;\n    }\n\n    //start of line types\n    if (sol) {\n      switch (ch) {\n      case \"!\": //header at start of line\n        if (stream.match('!!!!!')) {\n          return chain(inLine(\"header string\"));\n        } else if (stream.match('!!!!')) {\n          return chain(inLine(\"header string\"));\n        } else if (stream.match('!!!')) {\n          return chain(inLine(\"header string\"));\n        } else if (stream.match('!!')) {\n          return chain(inLine(\"header string\"));\n        } else {\n          return chain(inLine(\"header string\"));\n        }\n        break;\n      case \"*\": //unordered list line item, or <li /> at start of line\n      case \"#\": //ordered list line item, or <li /> at start of line\n      case \"+\": //ordered list line item, or <li /> at start of line\n        return chain(inLine(\"tw-listitem bracket\"));\n        break;\n      }\n    }\n\n    //stream.eatWhile(/[&{]/); was eating up plugins, turned off to act less like html and more like tiki\n    return null;\n  }\n\n  var indentUnit = config.indentUnit;\n\n  // Return variables for tokenizers\n  var pluginName, type;\n  function inPlugin(stream, state) {\n    var ch = stream.next();\n    var peek = stream.peek();\n\n    if (ch == \"}\") {\n      state.tokenize = inText;\n      //type = ch == \")\" ? \"endPlugin\" : \"selfclosePlugin\"; inPlugin\n      return \"tag\";\n    } else if (ch == \"(\" || ch == \")\") {\n      return \"bracket\";\n    } else if (ch == \"=\") {\n      type = \"equals\";\n\n      if (peek == \">\") {\n        stream.next();\n        peek = stream.peek();\n      }\n\n      //here we detect values directly after equal character with no quotes\n      if (!/[\\'\\\"]/.test(peek)) {\n        state.tokenize = inAttributeNoQuote();\n      }\n      //end detect values\n\n      return \"operator\";\n    } else if (/[\\'\\\"]/.test(ch)) {\n      state.tokenize = inAttribute(ch);\n      return state.tokenize(stream, state);\n    } else {\n      stream.eatWhile(/[^\\s\\u00a0=\\\"\\'\\/?]/);\n      return \"keyword\";\n    }\n  }\n\n  function inAttribute(quote) {\n    return function(stream, state) {\n      while (!stream.eol()) {\n        if (stream.next() == quote) {\n          state.tokenize = inPlugin;\n          break;\n        }\n      }\n      return \"string\";\n    };\n  }\n\n  function inAttributeNoQuote() {\n    return function(stream, state) {\n      while (!stream.eol()) {\n        var ch = stream.next();\n        var peek = stream.peek();\n        if (ch == \" \" || ch == \",\" || /[ )}]/.test(peek)) {\n      state.tokenize = inPlugin;\n      break;\n    }\n  }\n  return \"string\";\n};\n                     }\n\nvar curState, setStyle;\nfunction pass() {\n  for (var i = arguments.length - 1; i >= 0; i--) curState.cc.push(arguments[i]);\n}\n\nfunction cont() {\n  pass.apply(null, arguments);\n  return true;\n}\n\nfunction pushContext(pluginName, startOfLine) {\n  var noIndent = curState.context && curState.context.noIndent;\n  curState.context = {\n    prev: curState.context,\n    pluginName: pluginName,\n    indent: curState.indented,\n    startOfLine: startOfLine,\n    noIndent: noIndent\n  };\n}\n\nfunction popContext() {\n  if (curState.context) curState.context = curState.context.prev;\n}\n\nfunction element(type) {\n  if (type == \"openPlugin\") {curState.pluginName = pluginName; return cont(attributes, endplugin(curState.startOfLine));}\n  else if (type == \"closePlugin\") {\n    var err = false;\n    if (curState.context) {\n      err = curState.context.pluginName != pluginName;\n      popContext();\n    } else {\n      err = true;\n    }\n    if (err) setStyle = \"error\";\n    return cont(endcloseplugin(err));\n  }\n  else if (type == \"string\") {\n    if (!curState.context || curState.context.name != \"!cdata\") pushContext(\"!cdata\");\n    if (curState.tokenize == inText) popContext();\n    return cont();\n  }\n  else return cont();\n}\n\nfunction endplugin(startOfLine) {\n  return function(type) {\n    if (\n      type == \"selfclosePlugin\" ||\n        type == \"endPlugin\"\n    )\n      return cont();\n    if (type == \"endPlugin\") {pushContext(curState.pluginName, startOfLine); return cont();}\n    return cont();\n  };\n}\n\nfunction endcloseplugin(err) {\n  return function(type) {\n    if (err) setStyle = \"error\";\n    if (type == \"endPlugin\") return cont();\n    return pass();\n  };\n}\n\nfunction attributes(type) {\n  if (type == \"keyword\") {setStyle = \"attribute\"; return cont(attributes);}\n  if (type == \"equals\") return cont(attvalue, attributes);\n  return pass();\n}\nfunction attvalue(type) {\n  if (type == \"keyword\") {setStyle = \"string\"; return cont();}\n  if (type == \"string\") return cont(attvaluemaybe);\n  return pass();\n}\nfunction attvaluemaybe(type) {\n  if (type == \"string\") return cont(attvaluemaybe);\n  else return pass();\n}\nreturn {\n  startState: function() {\n    return {tokenize: inText, cc: [], indented: 0, startOfLine: true, pluginName: null, context: null};\n  },\n  token: function(stream, state) {\n    if (stream.sol()) {\n      state.startOfLine = true;\n      state.indented = stream.indentation();\n    }\n    if (stream.eatSpace()) return null;\n\n    setStyle = type = pluginName = null;\n    var style = state.tokenize(stream, state);\n    if ((style || type) && style != \"comment\") {\n      curState = state;\n      while (true) {\n        var comb = state.cc.pop() || element;\n        if (comb(type || style)) break;\n      }\n    }\n    state.startOfLine = false;\n    return setStyle || style;\n  },\n  indent: function(state, textAfter) {\n    var context = state.context;\n    if (context && context.noIndent) return 0;\n    if (context && /^{\\//.test(textAfter))\n        context = context.prev;\n    while (context && !context.startOfLine)\n        context = context.prev;\n    if (context) return context.indent + indentUnit;\n    else return 0;\n  },\n  electricChars: \"/\"\n};\n});\n\nCodeMirror.defineMIME(\"text/tiki\", \"tiki\");\n\n});\n"]}