"use strict";
/*
 * ATTENTION: The "eval" devtool has been used (maybe by default in mode: "development").
 * This devtool is neither made for production nor for readable output files.
 * It uses "eval()" calls to create a separate source file in the browser devtools.
 * If you are trying to read the output file, select a different devtool (https://webpack.js.org/configuration/devtool/)
 * or disable the default devtool with "devtool: false".
 * If you are looking for production-ready output files, see mode: "production" (https://webpack.js.org/configuration/mode/).
 */
(self["webpackChunk_JUPYTERLAB_CORE_OUTPUT"] = self["webpackChunk_JUPYTERLAB_CORE_OUTPUT"] || []).push([["vendors-node_modules_codemirror_legacy-modes_mode_pug_js"],{

/***/ "../node_modules/@codemirror/legacy-modes/mode/pug.js":
/*!************************************************************!*\
  !*** ../node_modules/@codemirror/legacy-modes/mode/pug.js ***!
  \************************************************************/
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {

eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   pug: () => (/* binding */ pug)\n/* harmony export */ });\n/* harmony import */ var _javascript_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./javascript.js */ \"../node_modules/@codemirror/legacy-modes/mode/javascript.js\");\n\n\nvar ATTRS_NEST = {\n  '{': '}',\n  '(': ')',\n  '[': ']'\n}\n\nfunction defaultCopyState(state) {\n  if (typeof state != \"object\") return state\n  let newState = {}\n  for (let prop in state) {\n    let val = state[prop]\n    newState[prop] = val instanceof Array ? val.slice() : val\n  }\n  return newState\n}\n\nclass State {\n  constructor(indentUnit) {\n    this.indentUnit = indentUnit\n\n    this.javaScriptLine = false\n    this.javaScriptLineExcludesColon = false\n\n    this.javaScriptArguments = false\n    this.javaScriptArgumentsDepth = 0\n\n    this.isInterpolating = false\n    this.interpolationNesting = 0\n\n    this.jsState = _javascript_js__WEBPACK_IMPORTED_MODULE_0__.javascript.startState(indentUnit)\n\n    this.restOfLine = ''\n\n    this.isIncludeFiltered = false\n    this.isEach = false\n\n    this.lastTag = ''\n\n    // Attributes Mode\n    this.isAttrs = false\n    this.attrsNest = []\n    this.inAttributeName = true\n    this.attributeIsType = false\n    this.attrValue = ''\n\n    // Indented Mode\n    this.indentOf = Infinity\n    this.indentToken = ''\n  }\n\n  copy() {\n    var res = new State(this.indentUnit)\n    res.javaScriptLine = this.javaScriptLine\n    res.javaScriptLineExcludesColon = this.javaScriptLineExcludesColon\n    res.javaScriptArguments = this.javaScriptArguments\n    res.javaScriptArgumentsDepth = this.javaScriptArgumentsDepth\n    res.isInterpolating = this.isInterpolating\n    res.interpolationNesting = this.interpolationNesting\n\n    res.jsState = (_javascript_js__WEBPACK_IMPORTED_MODULE_0__.javascript.copyState || defaultCopyState)(this.jsState)\n\n    res.restOfLine = this.restOfLine\n\n    res.isIncludeFiltered = this.isIncludeFiltered\n    res.isEach = this.isEach\n    res.lastTag = this.lastTag\n    res.isAttrs = this.isAttrs\n    res.attrsNest = this.attrsNest.slice()\n    res.inAttributeName = this.inAttributeName\n    res.attributeIsType = this.attributeIsType\n    res.attrValue = this.attrValue\n    res.indentOf = this.indentOf\n    res.indentToken = this.indentToken\n\n    return res\n  }\n}\n\nfunction javaScript(stream, state) {\n  if (stream.sol()) {\n    // if javaScriptLine was set at end of line, ignore it\n    state.javaScriptLine = false\n    state.javaScriptLineExcludesColon = false\n  }\n  if (state.javaScriptLine) {\n    if (state.javaScriptLineExcludesColon && stream.peek() === ':') {\n      state.javaScriptLine = false\n      state.javaScriptLineExcludesColon = false\n      return\n    }\n    var tok = _javascript_js__WEBPACK_IMPORTED_MODULE_0__.javascript.token(stream, state.jsState)\n    if (stream.eol()) state.javaScriptLine = false\n    return tok || true\n  }\n}\nfunction javaScriptArguments(stream, state) {\n  if (state.javaScriptArguments) {\n    if (state.javaScriptArgumentsDepth === 0 && stream.peek() !== '(') {\n      state.javaScriptArguments = false\n      return\n    }\n    if (stream.peek() === '(') {\n      state.javaScriptArgumentsDepth++\n    } else if (stream.peek() === ')') {\n      state.javaScriptArgumentsDepth--\n    }\n    if (state.javaScriptArgumentsDepth === 0) {\n      state.javaScriptArguments = false\n      return\n    }\n\n    var tok = _javascript_js__WEBPACK_IMPORTED_MODULE_0__.javascript.token(stream, state.jsState)\n    return tok || true\n  }\n}\n\nfunction yieldStatement(stream) {\n  if (stream.match(/^yield\\b/)) {\n    return 'keyword'\n  }\n}\n\nfunction doctype(stream) {\n  if (stream.match(/^(?:doctype) *([^\\n]+)?/)) return 'meta'\n}\n\nfunction interpolation(stream, state) {\n  if (stream.match('#{')) {\n    state.isInterpolating = true\n    state.interpolationNesting = 0\n    return 'punctuation'\n  }\n}\n\nfunction interpolationContinued(stream, state) {\n  if (state.isInterpolating) {\n    if (stream.peek() === '}') {\n      state.interpolationNesting--\n      if (state.interpolationNesting < 0) {\n        stream.next()\n        state.isInterpolating = false\n        return 'punctuation'\n      }\n    } else if (stream.peek() === '{') {\n      state.interpolationNesting++\n    }\n    return _javascript_js__WEBPACK_IMPORTED_MODULE_0__.javascript.token(stream, state.jsState) || true\n  }\n}\n\nfunction caseStatement(stream, state) {\n  if (stream.match(/^case\\b/)) {\n    state.javaScriptLine = true\n    return 'keyword'\n  }\n}\n\nfunction when(stream, state) {\n  if (stream.match(/^when\\b/)) {\n    state.javaScriptLine = true\n    state.javaScriptLineExcludesColon = true\n    return 'keyword'\n  }\n}\n\nfunction defaultStatement(stream) {\n  if (stream.match(/^default\\b/)) {\n    return 'keyword'\n  }\n}\n\nfunction extendsStatement(stream, state) {\n  if (stream.match(/^extends?\\b/)) {\n    state.restOfLine = 'string'\n    return 'keyword'\n  }\n}\n\nfunction append(stream, state) {\n  if (stream.match(/^append\\b/)) {\n    state.restOfLine = 'variable'\n    return 'keyword'\n  }\n}\nfunction prepend(stream, state) {\n  if (stream.match(/^prepend\\b/)) {\n    state.restOfLine = 'variable'\n    return 'keyword'\n  }\n}\nfunction block(stream, state) {\n  if (stream.match(/^block\\b *(?:(prepend|append)\\b)?/)) {\n    state.restOfLine = 'variable'\n    return 'keyword'\n  }\n}\n\nfunction include(stream, state) {\n  if (stream.match(/^include\\b/)) {\n    state.restOfLine = 'string'\n    return 'keyword'\n  }\n}\n\nfunction includeFiltered(stream, state) {\n  if (stream.match(/^include:([a-zA-Z0-9\\-]+)/, false) && stream.match('include')) {\n    state.isIncludeFiltered = true\n    return 'keyword'\n  }\n}\n\nfunction includeFilteredContinued(stream, state) {\n  if (state.isIncludeFiltered) {\n    var tok = filter(stream, state)\n    state.isIncludeFiltered = false\n    state.restOfLine = 'string'\n    return tok\n  }\n}\n\nfunction mixin(stream, state) {\n  if (stream.match(/^mixin\\b/)) {\n    state.javaScriptLine = true\n    return 'keyword'\n  }\n}\n\nfunction call(stream, state) {\n  if (stream.match(/^\\+([-\\w]+)/)) {\n    if (!stream.match(/^\\( *[-\\w]+ *=/, false)) {\n      state.javaScriptArguments = true\n      state.javaScriptArgumentsDepth = 0\n    }\n    return 'variable'\n  }\n  if (stream.match('+#{', false)) {\n    stream.next()\n    state.mixinCallAfter = true\n    return interpolation(stream, state)\n  }\n}\nfunction callArguments(stream, state) {\n  if (state.mixinCallAfter) {\n    state.mixinCallAfter = false\n    if (!stream.match(/^\\( *[-\\w]+ *=/, false)) {\n      state.javaScriptArguments = true\n      state.javaScriptArgumentsDepth = 0\n    }\n    return true\n  }\n}\n\nfunction conditional(stream, state) {\n  if (stream.match(/^(if|unless|else if|else)\\b/)) {\n    state.javaScriptLine = true\n    return 'keyword'\n  }\n}\n\nfunction each(stream, state) {\n  if (stream.match(/^(- *)?(each|for)\\b/)) {\n    state.isEach = true\n    return 'keyword'\n  }\n}\nfunction eachContinued(stream, state) {\n  if (state.isEach) {\n    if (stream.match(/^ in\\b/)) {\n      state.javaScriptLine = true\n      state.isEach = false\n      return 'keyword'\n    } else if (stream.sol() || stream.eol()) {\n      state.isEach = false\n    } else if (stream.next()) {\n      while (!stream.match(/^ in\\b/, false) && stream.next()) {}\n      return 'variable'\n    }\n  }\n}\n\nfunction whileStatement(stream, state) {\n  if (stream.match(/^while\\b/)) {\n    state.javaScriptLine = true\n    return 'keyword'\n  }\n}\n\nfunction tag(stream, state) {\n  var captures\n  if (captures = stream.match(/^(\\w(?:[-:\\w]*\\w)?)\\/?/)) {\n    state.lastTag = captures[1].toLowerCase()\n    return 'tag'\n  }\n}\n\nfunction filter(stream, state) {\n  if (stream.match(/^:([\\w\\-]+)/)) {\n    setStringMode(stream, state)\n    return 'atom'\n  }\n}\n\nfunction code(stream, state) {\n  if (stream.match(/^(!?=|-)/)) {\n    state.javaScriptLine = true\n    return 'punctuation'\n  }\n}\n\nfunction id(stream) {\n  if (stream.match(/^#([\\w-]+)/)) {\n    return 'builtin'\n  }\n}\n\nfunction className(stream) {\n  if (stream.match(/^\\.([\\w-]+)/)) {\n    return 'className'\n  }\n}\n\nfunction attrs(stream, state) {\n  if (stream.peek() == '(') {\n    stream.next()\n    state.isAttrs = true\n    state.attrsNest = []\n    state.inAttributeName = true\n    state.attrValue = ''\n    state.attributeIsType = false\n    return 'punctuation'\n  }\n}\n\nfunction attrsContinued(stream, state) {\n  if (state.isAttrs) {\n    if (ATTRS_NEST[stream.peek()]) {\n      state.attrsNest.push(ATTRS_NEST[stream.peek()])\n    }\n    if (state.attrsNest[state.attrsNest.length - 1] === stream.peek()) {\n      state.attrsNest.pop()\n    } else if (stream.eat(')')) {\n      state.isAttrs = false\n      return 'punctuation'\n    }\n    if (state.inAttributeName && stream.match(/^[^=,\\)!]+/)) {\n      if (stream.peek() === '=' || stream.peek() === '!') {\n        state.inAttributeName = false\n        state.jsState = _javascript_js__WEBPACK_IMPORTED_MODULE_0__.javascript.startState(2)\n        if (state.lastTag === 'script' && stream.current().trim().toLowerCase() === 'type') {\n          state.attributeIsType = true\n        } else {\n          state.attributeIsType = false\n        }\n      }\n      return 'attribute'\n    }\n\n    var tok = _javascript_js__WEBPACK_IMPORTED_MODULE_0__.javascript.token(stream, state.jsState)\n    if (state.attrsNest.length === 0 && (tok === 'string' || tok === 'variable' || tok === 'keyword')) {\n      try {\n        Function('', 'var x ' + state.attrValue.replace(/,\\s*$/, '').replace(/^!/, ''))\n        state.inAttributeName = true\n        state.attrValue = ''\n        stream.backUp(stream.current().length)\n        return attrsContinued(stream, state)\n      } catch (ex) {\n        //not the end of an attribute\n      }\n    }\n    state.attrValue += stream.current()\n    return tok || true\n  }\n}\n\nfunction attributesBlock(stream, state) {\n  if (stream.match(/^&attributes\\b/)) {\n    state.javaScriptArguments = true\n    state.javaScriptArgumentsDepth = 0\n    return 'keyword'\n  }\n}\n\nfunction indent(stream) {\n  if (stream.sol() && stream.eatSpace()) {\n    return 'indent'\n  }\n}\n\nfunction comment(stream, state) {\n  if (stream.match(/^ *\\/\\/(-)?([^\\n]*)/)) {\n    state.indentOf = stream.indentation()\n    state.indentToken = 'comment'\n    return 'comment'\n  }\n}\n\nfunction colon(stream) {\n  if (stream.match(/^: */)) {\n    return 'colon'\n  }\n}\n\nfunction text(stream, state) {\n  if (stream.match(/^(?:\\| ?| )([^\\n]+)/)) {\n    return 'string'\n  }\n  if (stream.match(/^(<[^\\n]*)/, false)) {\n    // html string\n    setStringMode(stream, state)\n    stream.skipToEnd()\n    return state.indentToken\n  }\n}\n\nfunction dot(stream, state) {\n  if (stream.eat('.')) {\n    setStringMode(stream, state)\n    return 'dot'\n  }\n}\n\nfunction fail(stream) {\n  stream.next()\n  return null\n}\n\n\nfunction setStringMode(stream, state) {\n  state.indentOf = stream.indentation()\n  state.indentToken = 'string'\n}\nfunction restOfLine(stream, state) {\n  if (stream.sol()) {\n    // if restOfLine was set at end of line, ignore it\n    state.restOfLine = ''\n  }\n  if (state.restOfLine) {\n    stream.skipToEnd()\n    var tok = state.restOfLine\n    state.restOfLine = ''\n    return tok\n  }\n}\n\n\nfunction startState(indentUnit) {\n  return new State(indentUnit)\n}\nfunction copyState(state) {\n  return state.copy()\n}\nfunction nextToken(stream, state) {\n  var tok = restOfLine(stream, state)\n      || interpolationContinued(stream, state)\n      || includeFilteredContinued(stream, state)\n      || eachContinued(stream, state)\n      || attrsContinued(stream, state)\n      || javaScript(stream, state)\n      || javaScriptArguments(stream, state)\n      || callArguments(stream, state)\n\n      || yieldStatement(stream)\n      || doctype(stream)\n      || interpolation(stream, state)\n      || caseStatement(stream, state)\n      || when(stream, state)\n      || defaultStatement(stream)\n      || extendsStatement(stream, state)\n      || append(stream, state)\n      || prepend(stream, state)\n      || block(stream, state)\n      || include(stream, state)\n      || includeFiltered(stream, state)\n      || mixin(stream, state)\n      || call(stream, state)\n      || conditional(stream, state)\n      || each(stream, state)\n      || whileStatement(stream, state)\n      || tag(stream, state)\n      || filter(stream, state)\n      || code(stream, state)\n      || id(stream)\n      || className(stream)\n      || attrs(stream, state)\n      || attributesBlock(stream, state)\n      || indent(stream)\n      || text(stream, state)\n      || comment(stream, state)\n      || colon(stream)\n      || dot(stream, state)\n      || fail(stream)\n\n  return tok === true ? null : tok\n}\n\nconst pug = {\n  startState: startState,\n  copyState: copyState,\n  token: nextToken\n}\n\n\n//# sourceURL=webpack://_JUPYTERLAB.CORE_OUTPUT/../node_modules/@codemirror/legacy-modes/mode/pug.js?");

/***/ })

}]);