{"version":3,"sources":["jsdelivr-header.js","/npm/@yocdev/react-prism-editor@1.1.5-alpha/es/index.js"],"names":[],"mappings":"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","file":"/npm/@yocdev/react-prism-editor@1.1.5-alpha/es/index.js","sourceRoot":"","sourcesContent":["/**\n * Minified by jsDelivr using Terser v5.39.0.\n * Original file: /npm/@yocdev/react-prism-editor@1.1.5-alpha/es/index.js\n *\n * Do NOT use SRI with dynamically generated files! More information: https://www.jsdelivr.com/using-sri-with-dynamic-files\n */\n","function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nimport React from \"react\";\nimport { renderToString } from \"react-dom/server\";\nimport prism from \"./utils/prism\";\nimport escapeHtml from \"escape-html\";\nimport normalizeHtml from \"./utils/normalizeHtml.js\";\nimport htmlToPlain from \"./utils/htmlToPlain.js\";\nimport selectionRange from \"./utils/selection-range.js\";\nimport { getIndent, getDeindentLevel } from \"./utils/getIndent\";\nimport { FORBIDDEN_KEYS } from \"./utils/constant\";\nimport { basicThemes } from \"./utils/themes\";\nimport { basicLanguages } from \"./utils/languages\";\nimport { plugins } from \"./utils/plugins\";\nimport { // themesCss,\n// lineNumbersCss,\n// languagesJs,\n// pluginsJs,\n// prismJs,\naddCssParent } from \"./getPrismSource\";\n\nvar Editor = /*#__PURE__*/function (_React$Component) {\n  _inheritsLoose(Editor, _React$Component);\n\n  function Editor(props) {\n    var _this;\n\n    _this = _React$Component.call(this, props) || this;\n\n    _defineProperty(_assertThisInitialized(_this), \"undoStack\", []);\n\n    _defineProperty(_assertThisInitialized(_this), \"undoOffset\", 0);\n\n    _defineProperty(_assertThisInitialized(_this), \"lastPos\", 0);\n\n    _defineProperty(_assertThisInitialized(_this), \"undoTimestamp\", 0);\n\n    _defineProperty(_assertThisInitialized(_this), \"composing\", false);\n\n    _defineProperty(_assertThisInitialized(_this), \"onPaste\", function (e) {\n      e.preventDefault();\n      var currentCursorPos = selectionRange(_this.pre); // get text representation of clipboard\n\n      var text = (e.originalEvent || e).clipboardData.getData(\"Text\"); // insert text manually\n\n      document.execCommand(\"insertHTML\", false, escapeHtml(text));\n      var newCursorPos = currentCursorPos.end + text.length;\n      _this.selection = {\n        start: newCursorPos,\n        end: newCursorPos\n      };\n\n      var plain = _this.getPlain();\n\n      _this.recordChange(plain, _this.selection);\n\n      _this.updateContent(plain);\n\n      _this.styleLineNumbers();\n    });\n\n    _defineProperty(_assertThisInitialized(_this), \"addedDomNames\", []);\n\n    _defineProperty(_assertThisInitialized(_this), \"deletePx\", function (str) {\n      if (str === void 0) {\n        str = \"\";\n      }\n\n      return parseInt(str.split(\"px\")[0]);\n    });\n\n    _this.state = {\n      lineNumbersHeight: \"20px\",\n      selection: undefined,\n      codeData: \"\",\n      content: \"\",\n      id: (\"\" + Math.random()).split(\"0.\")[1]\n    };\n    return _this;\n  }\n\n  var _proto = Editor.prototype;\n\n  _proto.getLanguage = function getLanguage(language) {\n    if (basicLanguages.includes(language)) {\n      return language;\n    } else {\n      console.warn(\"Provided languages:\" + basicLanguages);\n      console.warn(\"Your input language is not support, use default language javascript\");\n      return \"javascript\";\n    }\n  };\n\n  _proto.getTheme = function getTheme(theme) {\n    if (basicThemes.includes(theme)) {\n      return theme;\n    } else {\n      console.warn(\"Provided themes:\" + basicThemes);\n      console.warn(\"Your input theme is not support, use default theme\");\n      return \"default\";\n    }\n  };\n\n  _proto.handleClick = function handleClick(evt) {\n    this.undoTimestamp = 0;\n    this.selection = selectionRange(this.pre);\n  };\n\n  _proto.getPlain = function getPlain() {\n    if (this._innerHTML === this.pre.innerHTML) {\n      return this._plain;\n    }\n\n    var plain = htmlToPlain(normalizeHtml(this.pre.innerHTML));\n    this._innerHTML = this.pre.innerHTML;\n    this._plain = plain;\n    return this._plain;\n  };\n\n  _proto.recordChange = function recordChange(plain, selection) {\n    if (plain === this.undoStack[this.undoStack.length - 1]) {\n      return;\n    }\n\n    if (this.undoOffset > 0) {\n      this.undoStack = this.undoStack.slice(0, -this.undoOffset);\n      this.undoOffset = 0;\n    }\n\n    var timestamp = Date.now();\n    var record = {\n      plain: plain,\n      selection: selection\n    }; // Overwrite last record if threshold is not crossed\n\n    if (timestamp - this.undoTimestamp < 3000) {\n      this.undoStack[this.undoStack.length - 1] = record;\n    } else {\n      this.undoStack.push(record);\n\n      if (this.undoStack.length > 50) {\n        this.undoStack.shift();\n      }\n    }\n\n    this.undoTimestamp = timestamp;\n  };\n\n  _proto.restoreStackState = function restoreStackState(offset) {\n    console.log(this.undoStack);\n    var _this$undoStack = this.undoStack[this.undoStack.length - 1 - offset],\n        plain = _this$undoStack.plain,\n        selection = _this$undoStack.selection;\n    this.selection = selection;\n    this.undoOffset = offset;\n    this.updateContent(plain);\n  };\n\n  _proto.undo = function undo() {\n    var offset = this.undoOffset + 1;\n\n    if (offset >= this.undoStack.length) {\n      return;\n    }\n\n    this.restoreStackState(offset);\n  };\n\n  _proto.redo = function redo() {\n    var offset = this.undoOffset - 1;\n\n    if (offset < 0) {\n      return;\n    }\n\n    this.restoreStackState(offset);\n  };\n\n  _proto.handleKeyDown = function handleKeyDown(evt) {\n    if (evt.keyCode === 9 && !this.ignoreTabKey) {\n      document.execCommand(\"insertHTML\", false, \"  \");\n      evt.preventDefault();\n    } else if (evt.keyCode === 8) {\n      // Backspace Key\n      var _selectionRange = selectionRange(this.pre),\n          cursorPos = _selectionRange.start,\n          cursorEndPos = _selectionRange.end;\n\n      if (cursorPos !== cursorEndPos) {\n        return; // Bail on selections\n      }\n\n      var deindent = getDeindentLevel(this.pre.innerText, cursorPos);\n\n      if (deindent <= 0) {\n        return; // Bail when deindent level defaults to 0\n      } // Delete chars `deindent` times\n\n\n      for (var i = 0; i < deindent; i++) {\n        document.execCommand(\"delete\", false);\n      }\n\n      evt.preventDefault();\n    } else if (evt.keyCode === 13) {\n      // Enter Key\n      var _selectionRange2 = selectionRange(this.pre),\n          _cursorPos = _selectionRange2.start;\n\n      var indentation = getIndent(this.pre.innerText, _cursorPos); // https://stackoverflow.com/questions/35585421\n      // add a space and remove it. it works :/\n\n      document.execCommand(\"insertHTML\", false, \"\\n \" + indentation);\n      document.execCommand(\"delete\", false);\n      evt.preventDefault();\n    } else if ( // Undo / Redo\n    evt.keyCode === 90 && evt.metaKey !== evt.ctrlKey && !evt.altKey) {\n      if (evt.shiftKey) {\n        this.redo();\n      } else {\n        this.undo();\n      }\n\n      evt.preventDefault();\n    }\n  };\n\n  _proto.handleKeyUp = function handleKeyUp(evt) {\n    var keyupCode = evt.which;\n\n    if (this.composing) {\n      if (keyupCode === 13) {\n        // finish inputting via IM.\n        this.composing = false;\n      } else {\n        // now inputting words using IM.\n        // must not update view.\n        return;\n      }\n    }\n\n    if (!this.code) {\n      this.codeData = evt.target.innerText;\n    } // if (this.emitEvents) {\n    //     this.$emit(\"keyup\", evt);\n    // }\n\n\n    if (evt.keyCode === 91 || // left cmd\n    evt.keyCode === 93 || // right cmd\n    evt.ctrlKey || evt.metaKey) {\n      return;\n    } // Enter key\n\n\n    if (evt.keyCode === 13) {\n      this.undoTimestamp = 0;\n    }\n\n    this.selection = selectionRange(this.pre);\n\n    if (!Object.values(FORBIDDEN_KEYS).includes(evt.keyCode)) {\n      var plain = this.getPlain();\n      this.recordChange(plain, this.selection);\n      this.updateContent(plain);\n    } else {\n      this.undoTimestamp = 0;\n    }\n  };\n\n  _proto.getContent = function getContent(codeData, language) {\n    return prism(this.Prism, codeData || \"\", language);\n  };\n\n  _proto.componentWillUnmount = function componentWillUnmount() {\n    this.pre.removeEventListener(\"paste\", this.onPaste);\n  };\n\n  _proto.shouldComponentUpdate = function shouldComponentUpdate(nextProps, nextState) {\n    if (this.props.code !== nextProps.code || this.props.language !== nextProps.language) {\n      this.setPrismContent(nextProps.code, nextProps.language);\n    }\n\n    if (this.props.theme !== nextProps.theme) {\n      this.setThemeStyle(nextProps.theme);\n      this.setLineNumbersStyle(nextProps.theme);\n      this.setState({}, this.styleLineNumbers);\n    }\n\n    return true;\n  };\n\n  _proto.componentDidMount = function componentDidMount() {\n    var _this2 = this;\n\n    // document.addEventListener('DOMContentLoaded',()=>{\n    //     console.log('DOMContentLoaded')\n    // })\n    // const event = new CustomEvent(\"DOMContentLoaded\", {\n    //     detail: {\n    //       hazcheeseburger: true\n    //     }\n    //   })\n    // setInterval(() => {\n    //     document.dispatchEvent(event)\n    // }, 1000);\n    var _this$props = this.props,\n        theme = _this$props.theme,\n        code = _this$props.code,\n        language = _this$props.language;\n    this.setThemeStyle(theme);\n    this.setLineNumbersStyle(theme);\n    this.setPrismScript();\n    this.setPluginsScript(); //php等语言需要先引入这个\n\n    this.setLanguageScript(\"markup-templating\");\n    this.Prism = window.Prism;\n    this.setPrismContent(code, language);\n    this.setState({}, function () {\n      _this2.recordChange(_this2.getPlain());\n    });\n    this.undoTimestamp = 0; // Reset timestamp\n\n    var $pre = this.pre;\n    $pre.addEventListener(\"paste\", this.onPaste);\n    $pre.addEventListener(\"compositionstart\", function () {\n      _this2.composing = true;\n    });\n    $pre.addEventListener(\"compositionend\", function () {\n      // for canceling input.\n      _this2.composing = false;\n    });\n  };\n\n  _proto.componentWillUnmount = function componentWillUnmount() {\n    var _this3 = this;\n\n    this.addedDomNames.forEach(function (domName) {\n      _this3[domName] && document.body.removeChild(_this3[domName]);\n    });\n  };\n\n  _proto.updateContent = function updateContent(plain) {\n    var _this$props2 = this.props,\n        changeCode = _this$props2.changeCode,\n        language = _this$props2.language;\n\n    if (changeCode) {\n      changeCode(plain);\n    }\n\n    this.setPrismContent(plain, language); // }, () => this.styleLineNumbers())\n  };\n\n  _proto.addElement = function addElement(type, name, content) {\n    var domName = name + \"-\" + type + \"-dom\";\n\n    if (document.querySelector(\"#\" + domName)) {\n      // if (this[domName] || window[domName]) {\n      return; //script必须每次通过appendChild的方式才会重新执行，所以先要remove掉\n\n      document.body.removeChild(this[domName]);\n    } else {\n      this.addedDomNames.push(domName);\n    } // window[domName] = true\n\n\n    this[domName] = document.createElement(type);\n    this[domName].id = domName;\n    this[domName].innerHTML = content;\n    document.body.appendChild(this[domName]);\n  };\n\n  _proto.setPrismContent = function setPrismContent(code, language) {\n    var _this4 = this;\n\n    // debugger\n    // this.Prism = null\n    // this.setPrismScript()\n    this.setLanguageScript(language); // const event = new CustomEvent(\"DOMContentLoaded\", {\n    //     detail: {\n    //         hazcheeseburger: true\n    //     }\n    // })\n    // document.dispatchEvent(event)\n    // setInterval(() => {\n    //\n    // }, 1000);\n    //\n\n    this.setState({\n      codeData: code || \"\",\n      content: this.getContent(code, language)\n    }, function () {\n      // const container = this.pre.parentNode\n      //去掉 toolbar，但是不能改container的className，否则每次keyUp光变都要消失\n      // container.className = container.className.replace(/code-toolbar/g, '')\n      //const toolbar = container.querySelector('.toolbar')\n      // toolbar && container.removeChild(toolbar)\n      //重新执行Prism的complete操作，linenumber,toobar等插件都在complete里挂载了回调方法\n      _this4.Prism.hooks.run(\"complete\", {\n        language: language,\n        code: code,\n        element: _this4.pre.querySelector(\"code\")\n      }); // this.styleLineNumbers()\n\n    });\n  };\n\n  _proto.setThemeStyle = function setThemeStyle(theme) {// this.addElement(\n    //   \"style\",\n    //   theme,\n    //   addCssParent(`.module-theme-${theme}`, themesCss[theme])\n    // );\n  };\n\n  _proto.setLineNumbersStyle = function setLineNumbersStyle(theme) {// this.addElement(\n    //   \"style\",\n    //   `${theme}-lineNumbers`,\n    //   addCssParent(`.module-theme-${theme}`, lineNumbersCss)\n    // );\n  };\n\n  _proto.setPrismScript = function setPrismScript() {// this.addElement(\"script\", \"prism\", prismJs);\n  };\n\n  _proto.setPluginsScript = function setPluginsScript() {// Array.from(new Set(plugins.map((item) => item.value))).forEach((item) => {\n    //   this.addElement(\"script\", item, pluginsJs[item]);\n    // });\n  };\n\n  _proto.setLanguageScript = function setLanguageScript(language) {// this.addElement(\"script\", `${language}-language`, languagesJs[language]);\n    // this.Prism.language = window.Prism.language\n    // console.log(this.Prism)\n  };\n\n  _proto.componentDidUpdate = function componentDidUpdate() {\n    if (this.selection) {\n      selectionRange(this.pre, this.selection);\n    }\n  } // getLineNumbers() {\n  //     let totalLines = this.state.codeData.split(/\\r\\n|\\n/).length;\n  //     // TODO: Find a better way of doing this - ignore last line break (os spesific etc.)\n  //     if (this.state.codeData.endsWith(\"\\n\")) {\n  //         totalLines--;\n  //     }\n  //     const lineNumbers = []\n  //     for (let i = 0; i < totalLines; i++) {\n  //         lineNumbers.push(i)\n  //     }\n  //     return lineNumbers\n  // }\n  ;\n\n  _proto.styleLineNumbers = function styleLineNumbers() {// clearTimeout(this.timeout)\n    // if (this.props.lineNumber) {\n    //     this.timeout = setTimeout(() => {\n    //         const lineNumbers = this.getLineNumbers()\n    //         const reactLineNumbers = lineNumbers.map((item, i) => <span key={i} />)\n    //         const $editor = this.pre;\n    //         const $code = $editor.querySelector('code')\n    //         const editorStyles = window.getComputedStyle($editor);\n    //         let $lineNumbers = $code.querySelector('.line-numbers-rows')\n    //         if (!$lineNumbers) {\n    //             $lineNumbers = document.createElement('div')\n    //             $code.appendChild($lineNumbers)\n    //             $lineNumbers.className = \"line-numbers-rows\"\n    //             const btlr = \"border-top-left-radius\";\n    //             const bblr = \"border-bottom-left-radius\";\n    //             $lineNumbers.style[btlr] = editorStyles[btlr];\n    //             $lineNumbers.style[bblr] = editorStyles[bblr];\n    //             $editor.style[btlr] = 0;\n    //             $editor.style[bblr] = 0;\n    //             const stylesList = [\n    //                 // \"background-color\",\n    //                 \"font-family\",\n    //                 \"font-size\",\n    //                 \"line-height\",\n    //                 // \"padding-top\",\n    //                 // \"padding-bottom\",\n    //             ];\n    //             stylesList.forEach(style => {\n    //                 $lineNumbers.style[style] = editorStyles[style];\n    //             });\n    //         }\n    //         $lineNumbers.innerHTML = renderToString(reactLineNumbers)\n    //         $editor.style['height'] = $lineNumbers.offsetHeight +\n    //             // this.deletePx(editorStyles[\"padding-top\"]) +\n    //             // this.deletePx(editorStyles[\"padding-bottom\"]) +\n    //             // this.deletePx(editorStyles[\"border-top-width\"]) +\n    //             // this.deletePx(editorStyles[\"border-bottom-width\"]) +\n    //             'px'\n    //     }, 20)\n    // }\n  };\n\n  _proto.render = function render() {\n    var _this5 = this;\n\n    var _this$props3 = this.props,\n        language = _this$props3.language,\n        readOnly = _this$props3.readOnly,\n        theme = _this$props3.theme,\n        lineNumber = _this$props3.lineNumber,\n        clipboard = _this$props3.clipboard,\n        showLanguage = _this$props3.showLanguage;\n    var _this$state = this.state,\n        content = _this$state.content,\n        lineNumbersHeight = _this$state.lineNumbersHeight,\n        id = _this$state.id;\n    return /*#__PURE__*/React.createElement(\"div\", {\n      className: \"prism-editor-\" + id + \" module-theme-\" + theme\n    }, /*#__PURE__*/React.createElement(\"pre\", {\n      className: \"language-\" + language + \" line-numbers copy-to-clipboard show-language\",\n      ref: function ref(_ref) {\n        return _this5.pre = _ref;\n      },\n      style: {\n        marginTop: 0\n      },\n      dangerouslySetInnerHTML: {\n        __html: content\n      },\n      contentEditable: !readOnly,\n      onKeyDown: this.handleKeyDown.bind(this),\n      onKeyUp: this.handleKeyUp.bind(this),\n      onClick: this.handleClick.bind(this),\n      spellCheck: \"false\",\n      autoCapitalize: \"off\",\n      autoComplete: \"off\",\n      autoCorrect: \"off\",\n      \"data-gramm\": \"false\"\n    }), /*#__PURE__*/React.createElement(\"style\", null, \"\\n            .prism-editor-\" + id + \" .line-numbers-rows{\\n                display:\" + (lineNumber ? \"block\" : \"none\") + \";\\n            }\\n            .prism-editor-\" + id + \" .toolbar .toolbar-item:nth-child(1){\\n                display:\" + (showLanguage ? \"inline-block\" : \"none\") + \";\\n            }\\n            .prism-editor-\" + id + \" .toolbar .toolbar-item:nth-child(2){\\n                display:\" + (clipboard ? \"inline-block\" : \"none\") + \";\\n            }\\n            \"));\n  };\n\n  return Editor;\n}(React.Component);\n\nexport default Editor;"]}