{"version":3,"file":"static/npm.micromark-extension-gfm-strikethrough.99aed31f.js","mappings":"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","sources":["../node_modules/micromark-extension-gfm-strikethrough/index.js"],"sourcesContent":["module.exports = create\n\nvar classifyCharacter = require('micromark/dist/util/classify-character')\nvar chunkedSplice = require('micromark/dist/util/chunked-splice')\nvar resolveAll = require('micromark/dist/util/resolve-all')\nvar shallow = require('micromark/dist/util/shallow')\n\nfunction create(options) {\n  var settings = options || {}\n  var single = settings.singleTilde\n  var tokenizer = {\n    tokenize: tokenizeStrikethrough,\n    resolveAll: resolveAllStrikethrough\n  }\n\n  if (single === null || single === undefined) {\n    single = true\n  }\n\n  return {text: {126: tokenizer}, insideSpan: {null: tokenizer}}\n\n  // Take events and resolve strikethrough.\n  function resolveAllStrikethrough(events, context) {\n    var index = -1\n    var strikethrough\n    var text\n    var open\n    var nextEvents\n\n    // Walk through all events.\n    while (++index < events.length) {\n      // Find a token that can close.\n      if (\n        events[index][0] === 'enter' &&\n        events[index][1].type === 'strikethroughSequenceTemporary' &&\n        events[index][1]._close\n      ) {\n        open = index\n\n        // Now walk back to find an opener.\n        while (open--) {\n          // Find a token that can open the closer.\n          if (\n            events[open][0] === 'exit' &&\n            events[open][1].type === 'strikethroughSequenceTemporary' &&\n            events[open][1]._open &&\n            // If the sizes are the same:\n            events[index][1].end.offset - events[index][1].start.offset ===\n              events[open][1].end.offset - events[open][1].start.offset\n          ) {\n            events[index][1].type = 'strikethroughSequence'\n            events[open][1].type = 'strikethroughSequence'\n\n            strikethrough = {\n              type: 'strikethrough',\n              start: shallow(events[open][1].start),\n              end: shallow(events[index][1].end)\n            }\n\n            text = {\n              type: 'strikethroughText',\n              start: shallow(events[open][1].end),\n              end: shallow(events[index][1].start)\n            }\n\n            // Opening.\n            nextEvents = [\n              ['enter', strikethrough, context],\n              ['enter', events[open][1], context],\n              ['exit', events[open][1], context],\n              ['enter', text, context]\n            ]\n\n            // Between.\n            chunkedSplice(\n              nextEvents,\n              nextEvents.length,\n              0,\n              resolveAll(\n                context.parser.constructs.insideSpan.null,\n                events.slice(open + 1, index),\n                context\n              )\n            )\n\n            // Closing.\n            chunkedSplice(nextEvents, nextEvents.length, 0, [\n              ['exit', text, context],\n              ['enter', events[index][1], context],\n              ['exit', events[index][1], context],\n              ['exit', strikethrough, context]\n            ])\n\n            chunkedSplice(events, open - 1, index - open + 3, nextEvents)\n\n            index = open + nextEvents.length - 2\n            break\n          }\n        }\n      }\n    }\n\n    return removeRemainingSequences(events)\n  }\n\n  function removeRemainingSequences(events) {\n    var index = -1\n    var length = events.length\n\n    while (++index < length) {\n      if (events[index][1].type === 'strikethroughSequenceTemporary') {\n        events[index][1].type = 'data'\n      }\n    }\n\n    return events\n  }\n\n  function tokenizeStrikethrough(effects, ok, nok) {\n    var previous = this.previous\n    var events = this.events\n    var size = 0\n\n    return start\n\n    function start(code) {\n      if (\n        code !== 126 ||\n        (previous === 126 &&\n          events[events.length - 1][1].type !== 'characterEscape')\n      ) {\n        return nok(code)\n      }\n\n      effects.enter('strikethroughSequenceTemporary')\n      return more(code)\n    }\n\n    function more(code) {\n      var before = classifyCharacter(previous)\n      var token\n      var after\n\n      if (code === 126) {\n        // If this is the third marker, exit.\n        if (size > 1) return nok(code)\n        effects.consume(code)\n        size++\n        return more\n      }\n\n      if (size < 2 && !single) return nok(code)\n      token = effects.exit('strikethroughSequenceTemporary')\n      after = classifyCharacter(code)\n      token._open = !after || (after === 2 && before)\n      token._close = !before || (before === 2 && after)\n      return ok(code)\n    }\n  }\n}\n"],"names":["module","exports","options","single","singleTilde","tokenizer","tokenize","effects","ok","nok","previous","this","events","size","start","code","length","type","enter","more","token","after","before","classifyCharacter","consume","exit","_open","_close","resolveAll","context","strikethrough","text","open","nextEvents","index","end","offset","shallow","chunkedSplice","parser","constructs","insideSpan","null","slice","removeRemainingSequences","undefined","require"],"sourceRoot":""}