{"version":3,"file":"tiki-DrQIeHRf.cjs","sources":["../../../node_modules/@codemirror/legacy-modes/mode/tiki.js"],"sourcesContent":["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\nfunction 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\nfunction 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(\"link\", \"))\", inText));\n    break;\n  case \"[\":// Weblink\n    return chain(inBlock(\"url\", \"]\", 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// Return variables for tokenizers\nvar pluginName, type;\nfunction 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\nfunction 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\nfunction 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}\nexport const tiki = {\n  name: \"tiki\",\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, cx) {\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 + cx.unit;\n    else return 0;\n  }\n};\n"],"names":["inBlock","style","terminator","returnTokenizer","stream","state","eol","match","tokenize","inText","next","inLine","chain","parser","sol","ch","eat","eatSpace","eatWhile","inPlugin","pluginName","type","curState","setStyle","quote","peek","test","pass","i","arguments","length","cc","push","cont","apply","pushContext","startOfLine","noIndent","context","prev","indent","indented","popContext","element","attributes","err","endcloseplugin","name","attvalue","attvaluemaybe","tiki","startState","token","indentation","pop","textAfter","cx","unit"],"mappings":"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","x_google_ignoreList":[0]}