{"version":3,"file":"mbox-B-KNExnr.cjs","sources":["../../../node_modules/@codemirror/legacy-modes/mode/mbox.js"],"sourcesContent":["var rfc2822 = [\n  \"From\", \"Sender\", \"Reply-To\", \"To\", \"Cc\", \"Bcc\", \"Message-ID\",\n  \"In-Reply-To\", \"References\", \"Resent-From\", \"Resent-Sender\", \"Resent-To\",\n  \"Resent-Cc\", \"Resent-Bcc\", \"Resent-Message-ID\", \"Return-Path\", \"Received\"\n];\nvar rfc2822NoEmail = [\n  \"Date\", \"Subject\", \"Comments\", \"Keywords\", \"Resent-Date\"\n];\n\nvar whitespace = /^[ \\t]/;\nvar separator = /^From /; // See RFC 4155\nvar rfc2822Header = new RegExp(\"^(\" + rfc2822.join(\"|\") + \"): \");\nvar rfc2822HeaderNoEmail = new RegExp(\"^(\" + rfc2822NoEmail.join(\"|\") + \"): \");\nvar header = /^[^:]+:/; // Optional fields defined in RFC 2822\nvar email = /^[^ ]+@[^ ]+/;\nvar untilEmail = /^.*?(?=[^ ]+?@[^ ]+)/;\nvar bracketedEmail = /^<.*?>/;\nvar untilBracketedEmail = /^.*?(?=<.*>)/;\n\nfunction styleForHeader(header) {\n  if (header === \"Subject\") return \"header\";\n  return \"string\";\n}\n\nfunction readToken(stream, state) {\n  if (stream.sol()) {\n    // From last line\n    state.inSeparator = false;\n    if (state.inHeader && stream.match(whitespace)) {\n      // Header folding\n      return null;\n    } else {\n      state.inHeader = false;\n      state.header = null;\n    }\n\n    if (stream.match(separator)) {\n      state.inHeaders = true;\n      state.inSeparator = true;\n      return \"atom\";\n    }\n\n    var match;\n    var emailPermitted = false;\n    if ((match = stream.match(rfc2822HeaderNoEmail)) ||\n        (emailPermitted = true) && (match = stream.match(rfc2822Header))) {\n      state.inHeaders = true;\n      state.inHeader = true;\n      state.emailPermitted = emailPermitted;\n      state.header = match[1];\n      return \"atom\";\n    }\n\n    // Use vim's heuristics: recognize custom headers only if the line is in a\n    // block of legitimate headers.\n    if (state.inHeaders && (match = stream.match(header))) {\n      state.inHeader = true;\n      state.emailPermitted = true;\n      state.header = match[1];\n      return \"atom\";\n    }\n\n    state.inHeaders = false;\n    stream.skipToEnd();\n    return null;\n  }\n\n  if (state.inSeparator) {\n    if (stream.match(email)) return \"link\";\n    if (stream.match(untilEmail)) return \"atom\";\n    stream.skipToEnd();\n    return \"atom\";\n  }\n\n  if (state.inHeader) {\n    var style = styleForHeader(state.header);\n\n    if (state.emailPermitted) {\n      if (stream.match(bracketedEmail)) return style + \" link\";\n      if (stream.match(untilBracketedEmail)) return style;\n    }\n    stream.skipToEnd();\n    return style;\n  }\n\n  stream.skipToEnd();\n  return null;\n};\n\nexport const mbox = {\n  name: \"mbox\",\n  startState: function() {\n    return {\n      // Is in a mbox separator\n      inSeparator: false,\n      // Is in a mail header\n      inHeader: false,\n      // If bracketed email is permitted. Only applicable when inHeader\n      emailPermitted: false,\n      // Name of current header\n      header: null,\n      // Is in a region of mail headers\n      inHeaders: false\n    };\n  },\n  token: readToken,\n  blankLine: function(state) {\n    state.inHeaders = state.inSeparator = state.inHeader = false;\n  },\n  languageData: {\n    autocomplete: rfc2822.concat(rfc2822NoEmail)\n  }\n}\n\n"],"names":["rfc2822","rfc2822NoEmail","whitespace","separator","rfc2822Header","RegExp","join","rfc2822HeaderNoEmail","header","email","untilEmail","bracketedEmail","untilBracketedEmail","mbox","name","startState","inSeparator","inHeader","emailPermitted","inHeaders","token","stream","state","sol","match","skipToEnd","style","styleForHeader","blankLine","languageData","autocomplete","concat"],"mappings":"gFAAA,IAAIA,EAAU,CACZ,OAAQ,SAAU,WAAY,KAAM,KAAM,MAAO,aACjD,cAAe,aAAc,cAAe,gBAAiB,YAC7D,YAAa,aAAc,oBAAqB,cAAe,YAE7DC,EAAiB,CACnB,OAAQ,UAAW,WAAY,WAAY,eAGzCC,EAAa,SACbC,EAAY,SACZC,EAAgB,IAAIC,OAAO,KAAOL,EAAQM,KAAK,KAAO,OACtDC,EAAuB,IAAIF,OAAO,KAAOJ,EAAeK,KAAK,KAAO,OACpEE,EAAS,UACTC,EAAQ,eACRC,EAAa,uBACbC,EAAiB,SACjBC,EAAsB,eAwEd,MAACC,EAAO,CAClBC,KAAM,OACNC,WAAY,WACV,MAAO,CAELC,aAAa,EAEbC,UAAU,EAEVC,gBAAgB,EAEhBV,OAAQ,KAERW,WAAW,EAEf,EACAC,MAjFF,SAAmBC,EAAQC,GACzB,GAAID,EAAOE,MAAO,CAGhB,GADAD,EAAMN,aAAc,EAChBM,EAAML,UAAYI,EAAOG,MAAMtB,GAEjC,OAAO,KAMT,GAJEoB,EAAML,UAAW,EACjBK,EAAMd,OAAS,KAGba,EAAOG,MAAMrB,GAGf,OAFAmB,EAAMH,WAAY,EAClBG,EAAMN,aAAc,EACb,OAGT,IAAIQ,EACAN,GAAiB,EACrB,OAAKM,EAAQH,EAAOG,MAAMjB,MACrBW,GAAiB,KAAUM,EAAQH,EAAOG,MAAMpB,KACnDkB,EAAMH,WAAY,EAClBG,EAAML,UAAW,EACjBK,EAAMJ,eAAiBA,EACvBI,EAAMd,OAASgB,EAAM,GACd,QAKLF,EAAMH,YAAcK,EAAQH,EAAOG,MAAMhB,KAC3Cc,EAAML,UAAW,EACjBK,EAAMJ,gBAAiB,EACvBI,EAAMd,OAASgB,EAAM,GACd,SAGTF,EAAMH,WAAY,EAClBE,EAAOI,YACA,KACT,CAEA,GAAIH,EAAMN,YACR,OAAIK,EAAOG,MAAMf,GAAe,QAC5BY,EAAOG,MAAMd,IACjBW,EAAOI,YAD8B,QAKvC,GAAIH,EAAML,SAAU,CAClB,IAAIS,EAxDR,SAAwBlB,GACtB,MAAe,YAAXA,EAA6B,SAC1B,QACT,CAqDgBmB,CAAeL,EAAMd,QAEjC,GAAIc,EAAMJ,eAAgB,CACxB,GAAIG,EAAOG,MAAMb,GAAiB,OAAOe,EAAQ,QACjD,GAAIL,EAAOG,MAAMZ,GAAsB,OAAOc,CAChD,CAEA,OADAL,EAAOI,YACAC,CACT,CAGA,OADAL,EAAOI,YACA,IACT,EAmBEG,UAAW,SAASN,GAClBA,EAAMH,UAAYG,EAAMN,YAAcM,EAAML,UAAW,CACzD,EACAY,aAAc,CACZC,aAAc9B,EAAQ+B,OAAO9B","x_google_ignoreList":[0]}