1{"version":3,"sources":["../../node_modules/codemirror/mode/tiddlywiki/tiddlywiki.js"],"names":["mod","exports","module","require","define","amd","CodeMirror","defineMode","textwords","keywords","allTags","closeAll","list","newJournal","newTiddler","permaview","saveChanges","search","slider","tabs","tag","tagging","tags","tiddler","timeline","today","version","option","with","filter","isSpaceName","reHR","reWikiCommentStart","reWikiCommentStop","reBlockQuote","reJsCodeStart","reJsCodeStop","reXmlCodeStart","reXmlCodeStop","reCodeBlockStart","reCodeBlockStop","reUntilCodeStop","chain","stream","state","f","tokenize","tokenBase","sol","ch","peek","block","test","match","twTokenCode","next","skipToEnd","eatWhile","eat","twTokenComment","twTokenEm","twTokenUnderline","twTokenStrike","twTokenStrong","twTokenMacro","propertyIsEnumerable","current","maybeEnd","sb","startState","token","eatSpace","style","defineMIME"],"mappings":"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","file":"tiddlywiki.min.js","sourcesContent":["// CodeMirror, copyright (c) by Marijn Haverbeke and others\n// Distributed under an MIT license: https://codemirror.net/LICENSE\n\n/***\n    |''Name''|tiddlywiki.js|\n    |''Description''|Enables TiddlyWikiy syntax highlighting using CodeMirror|\n    |''Author''|PMario|\n    |''Version''|0.1.7|\n    |''Status''|''stable''|\n    |''Source''|[[GitHub|https://github.com/pmario/CodeMirror2/blob/tw-syntax/mode/tiddlywiki]]|\n    |''Documentation''|https://codemirror.tiddlyspace.com/|\n    |''License''|[[MIT License|http://www.opensource.org/licenses/mit-license.php]]|\n    |''CoreVersion''|2.5.0|\n    |''Requires''|codemirror.js|\n    |''Keywords''|syntax highlighting color code mirror codemirror|\n    ! Info\n    CoreVersion parameter is needed for TiddlyWiki only!\n***/\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(\"tiddlywiki\", function () {\n  // Tokenizer\n  var textwords = {};\n\n  var keywords = {\n    \"allTags\": true, \"closeAll\": true, \"list\": true,\n    \"newJournal\": true, \"newTiddler\": true,\n    \"permaview\": true, \"saveChanges\": true,\n    \"search\": true, \"slider\": true, \"tabs\": true,\n    \"tag\": true, \"tagging\": true, \"tags\": true,\n    \"tiddler\": true, \"timeline\": true,\n    \"today\": true, \"version\": true, \"option\": true,\n    \"with\": true, \"filter\": true\n  };\n\n  var isSpaceName = /[\\w_\\-]/i,\n      reHR = /^\\-\\-\\-\\-+$/,                                 // <hr>\n      reWikiCommentStart = /^\\/\\*\\*\\*$/,            // /***\n      reWikiCommentStop = /^\\*\\*\\*\\/$/,             // ***/\n      reBlockQuote = /^<<<$/,\n\n      reJsCodeStart = /^\\/\\/\\{\\{\\{$/,                       // //{{{ js block start\n      reJsCodeStop = /^\\/\\/\\}\\}\\}$/,                        // //}}} js stop\n      reXmlCodeStart = /^<!--\\{\\{\\{-->$/,           // xml block start\n      reXmlCodeStop = /^<!--\\}\\}\\}-->$/,            // xml stop\n\n      reCodeBlockStart = /^\\{\\{\\{$/,                        // {{{ TW text div block start\n      reCodeBlockStop = /^\\}\\}\\}$/,                 // }}} TW text stop\n\n      reUntilCodeStop = /.*?\\}\\}\\}/;\n\n  function chain(stream, state, f) {\n    state.tokenize = f;\n    return f(stream, state);\n  }\n\n  function tokenBase(stream, state) {\n    var sol = stream.sol(), ch = stream.peek();\n\n    state.block = false;        // indicates the start of a code block.\n\n    // check start of  blocks\n    if (sol && /[<\\/\\*{}\\-]/.test(ch)) {\n      if (stream.match(reCodeBlockStart)) {\n        state.block = true;\n        return chain(stream, state, twTokenCode);\n      }\n      if (stream.match(reBlockQuote))\n        return 'quote';\n      if (stream.match(reWikiCommentStart) || stream.match(reWikiCommentStop))\n        return 'comment';\n      if (stream.match(reJsCodeStart) || stream.match(reJsCodeStop) || stream.match(reXmlCodeStart) || stream.match(reXmlCodeStop))\n        return 'comment';\n      if (stream.match(reHR))\n        return 'hr';\n    }\n\n    stream.next();\n    if (sol && /[\\/\\*!#;:>|]/.test(ch)) {\n      if (ch == \"!\") { // tw header\n        stream.skipToEnd();\n        return \"header\";\n      }\n      if (ch == \"*\") { // tw list\n        stream.eatWhile('*');\n        return \"comment\";\n      }\n      if (ch == \"#\") { // tw numbered list\n        stream.eatWhile('#');\n        return \"comment\";\n      }\n      if (ch == \";\") { // definition list, term\n        stream.eatWhile(';');\n        return \"comment\";\n      }\n      if (ch == \":\") { // definition list, description\n        stream.eatWhile(':');\n        return \"comment\";\n      }\n      if (ch == \">\") { // single line quote\n        stream.eatWhile(\">\");\n        return \"quote\";\n      }\n      if (ch == '|')\n        return 'header';\n    }\n\n    if (ch == '{' && stream.match(/\\{\\{/))\n      return chain(stream, state, twTokenCode);\n\n    // rudimentary html:// file:// link matching. TW knows much more ...\n    if (/[hf]/i.test(ch) &&\n        /[ti]/i.test(stream.peek()) &&\n        stream.match(/\\b(ttps?|tp|ile):\\/\\/[\\-A-Z0-9+&@#\\/%?=~_|$!:,.;]*[A-Z0-9+&@#\\/%=~_|$]/i))\n      return \"link\";\n\n    // just a little string indicator, don't want to have the whole string covered\n    if (ch == '\"')\n      return 'string';\n\n    if (ch == '~')    // _no_ CamelCase indicator should be bold\n      return 'brace';\n\n    if (/[\\[\\]]/.test(ch) && stream.match(ch)) // check for [[..]]\n      return 'brace';\n\n    if (ch == \"@\") {    // check for space link. TODO fix @@...@@ highlighting\n      stream.eatWhile(isSpaceName);\n      return \"link\";\n    }\n\n    if (/\\d/.test(ch)) {        // numbers\n      stream.eatWhile(/\\d/);\n      return \"number\";\n    }\n\n    if (ch == \"/\") { // tw invisible comment\n      if (stream.eat(\"%\")) {\n        return chain(stream, state, twTokenComment);\n      } else if (stream.eat(\"/\")) { //\n        return chain(stream, state, twTokenEm);\n      }\n    }\n\n    if (ch == \"_\" && stream.eat(\"_\")) // tw underline\n        return chain(stream, state, twTokenUnderline);\n\n    // strikethrough and mdash handling\n    if (ch == \"-\" && stream.eat(\"-\")) {\n      // if strikethrough looks ugly, change CSS.\n      if (stream.peek() != ' ')\n        return chain(stream, state, twTokenStrike);\n      // mdash\n      if (stream.peek() == ' ')\n        return 'brace';\n    }\n\n    if (ch == \"'\" && stream.eat(\"'\")) // tw bold\n      return chain(stream, state, twTokenStrong);\n\n    if (ch == \"<\" && stream.eat(\"<\")) // tw macro\n      return chain(stream, state, twTokenMacro);\n\n    // core macro handling\n    stream.eatWhile(/[\\w\\$_]/);\n    return textwords.propertyIsEnumerable(stream.current()) ? \"keyword\" : null\n  }\n\n  // tw invisible comment\n  function twTokenComment(stream, state) {\n    var maybeEnd = false, ch;\n    while (ch = stream.next()) {\n      if (ch == \"/\" && maybeEnd) {\n        state.tokenize = tokenBase;\n        break;\n      }\n      maybeEnd = (ch == \"%\");\n    }\n    return \"comment\";\n  }\n\n  // tw strong / bold\n  function twTokenStrong(stream, state) {\n    var maybeEnd = false,\n    ch;\n    while (ch = stream.next()) {\n      if (ch == \"'\" && maybeEnd) {\n        state.tokenize = tokenBase;\n        break;\n      }\n      maybeEnd = (ch == \"'\");\n    }\n    return \"strong\";\n  }\n\n  // tw code\n  function twTokenCode(stream, state) {\n    var sb = state.block;\n\n    if (sb && stream.current()) {\n      return \"comment\";\n    }\n\n    if (!sb && stream.match(reUntilCodeStop)) {\n      state.tokenize = tokenBase;\n      return \"comment\";\n    }\n\n    if (sb && stream.sol() && stream.match(reCodeBlockStop)) {\n      state.tokenize = tokenBase;\n      return \"comment\";\n    }\n\n    stream.next();\n    return \"comment\";\n  }\n\n  // tw em / italic\n  function twTokenEm(stream, state) {\n    var maybeEnd = false,\n    ch;\n    while (ch = stream.next()) {\n      if (ch == \"/\" && maybeEnd) {\n        state.tokenize = tokenBase;\n        break;\n      }\n      maybeEnd = (ch == \"/\");\n    }\n    return \"em\";\n  }\n\n  // tw underlined text\n  function twTokenUnderline(stream, state) {\n    var maybeEnd = false,\n    ch;\n    while (ch = stream.next()) {\n      if (ch == \"_\" && maybeEnd) {\n        state.tokenize = tokenBase;\n        break;\n      }\n      maybeEnd = (ch == \"_\");\n    }\n    return \"underlined\";\n  }\n\n  // tw strike through text looks ugly\n  // change CSS if needed\n  function twTokenStrike(stream, state) {\n    var maybeEnd = false, ch;\n\n    while (ch = stream.next()) {\n      if (ch == \"-\" && maybeEnd) {\n        state.tokenize = tokenBase;\n        break;\n      }\n      maybeEnd = (ch == \"-\");\n    }\n    return \"strikethrough\";\n  }\n\n  // macro\n  function twTokenMacro(stream, state) {\n    if (stream.current() == '<<') {\n      return 'macro';\n    }\n\n    var ch = stream.next();\n    if (!ch) {\n      state.tokenize = tokenBase;\n      return null;\n    }\n    if (ch == \">\") {\n      if (stream.peek() == '>') {\n        stream.next();\n        state.tokenize = tokenBase;\n        return \"macro\";\n      }\n    }\n\n    stream.eatWhile(/[\\w\\$_]/);\n    return keywords.propertyIsEnumerable(stream.current()) ? \"keyword\" : null\n  }\n\n  // Interface\n  return {\n    startState: function () {\n      return {tokenize: tokenBase};\n    },\n\n    token: function (stream, state) {\n      if (stream.eatSpace()) return null;\n      var style = state.tokenize(stream, state);\n      return style;\n    }\n  };\n});\n\nCodeMirror.defineMIME(\"text/x-tiddlywiki\", \"tiddlywiki\");\n});\n"]}