{"version":3,"sources":["../src/index.ts","../src/styles/theme-default.ts","../src/utils/css-supports.ts","../src/styles/editor.ts","../src/styles/injector.ts","../src/utils/html-escape.ts"],"sourcesContent":["import { InitCodeHighlightOptions, InitHighlightEventMap } from \"@/types\";\nimport { editorCss } from \"./styles/editor\";\nimport { injectCss } from \"./styles/injector\";\nimport { defaultCssTheme } from \"./styles/theme-default\";\nimport { escapeHtml } from \"./utils/html-escape\";\nimport Prism from \"prismjs\";\nimport \"prismjs/plugins/autoloader/prism-autoloader\";\n\nexport type { InitCodeHighlightOptions };\n\nexport default class InitCodeHighlight {\n  editorRoot!: HTMLElement;\n  opts: InitCodeHighlightOptions;\n  events: InitHighlightEventMap;\n  code: string = \"\";\n  elWrapper!: HTMLElement;\n  elTextarea!: HTMLTextAreaElement;\n  elPre!: HTMLElement;\n  elCode!: HTMLElement;\n  elLineNumbers!: HTMLElement;\n  elCopyButton!: HTMLElement;\n  elCopyButtonMessage!: HTMLElement;\n  lineNumber: number = 0;\n\n  constructor(\n    selectorOrElement: string | HTMLElement,\n    opts: InitCodeHighlightOptions\n  ) {\n    if (!selectorOrElement) {\n      throw new Error(\n        \"InitCodeHighlight expects a parameter which is Element or a String selector\"\n      );\n    }\n\n    if (!opts) {\n      throw new Error(\n        \"InitCodeHighlight expects an object containing options as second parameter\"\n      );\n    }\n\n    Prism.plugins.autoloader.languages_path =\n      opts.languagesUrl ||\n      \"https://cdnjs.cloudflare.com/ajax/libs/prism/1.29.0/components/\";\n\n    if (selectorOrElement instanceof HTMLElement) {\n      this.editorRoot = selectorOrElement;\n    } else {\n      const editorRoot = document.querySelector<HTMLElement>(selectorOrElement);\n      if (editorRoot) {\n        this.editorRoot = editorRoot;\n      }\n    }\n\n    this.opts = opts;\n\n    this.events = {\n      _input() {},\n      _keydown() {},\n      _scroll() {},\n    };\n\n    this.startEditor();\n  }\n\n  protected startEditor() {\n    const isCSSInjected = injectCss(\n      editorCss,\n      undefined,\n      this.opts.styleParent\n    );\n    if (!isCSSInjected) {\n      throw new Error(\"Failed to inject init-code-highlight CSS.\");\n    }\n\n    this.createWrapper();\n    this.createTextarea();\n    this.createPre();\n    this.createCode();\n\n    this.runOptions();\n    this.listenTextarea();\n    this.populateDefault();\n    this.updateCode(this.code);\n\n    // this.elTextarea.addEventListener('keyup', (e) => {\n    //   this.highlight()\n    // });\n  }\n\n  protected createWrapper() {\n    this.code = this.editorRoot.innerHTML;\n    this.editorRoot.innerHTML = \"\";\n    this.elWrapper = this.createElement(\"div\", this.editorRoot);\n    this.elWrapper.classList.add(\"init-code-highlight\");\n  }\n\n  protected createTextarea() {\n    this.elTextarea = this.createElement(\n      \"textarea\",\n      this.elWrapper\n    ) as HTMLTextAreaElement;\n    this.elTextarea.classList.add(\n      \"init-code-highlight__textarea\",\n      \"init-code-highlight__flatten\"\n    );\n  }\n\n  protected createPre() {\n    this.elPre = this.createElement(\"pre\", this.elWrapper);\n    this.elPre.classList.add(\n      \"init-code-highlight__pre\",\n      \"init-code-highlight__flatten\",\n      `language-${this.opts.language || \"plain\"}`\n    );\n  }\n\n  protected createCode() {\n    this.elCode = this.createElement(\"code\", this.elPre);\n    this.elCode.classList.add(\n      \"init-code-highlight__code\",\n      `language-${this.opts.language || \"html\"}`\n    );\n  }\n\n  protected createLineNumbers() {\n    this.elLineNumbers = this.createElement(\"div\", this.elWrapper);\n    this.elLineNumbers.classList.add(\"init-code-highlight__lines\");\n    this.elWrapper.classList.add(\"init-code-highlight--has-line-numbers\");\n    this.setLineNumber();\n  }\n\n  protected createCopyButton() {\n    this.elCopyButtonMessage = this.createElement(\"div\", this.elWrapper);\n    this.elCopyButtonMessage.classList.add(\"init-code-highlight__copyMessage\");\n    this.elCopyButtonMessage.innerHTML = \"Copied!\";\n    this.elCopyButtonMessage.style.display = \"none\";\n\n    this.elCopyButton = this.createElement(\"div\", this.elWrapper);\n    this.elCopyButton.classList.add(\"init-code-highlight__copyButton\");\n    this.elCopyButton.innerHTML =\n      '<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 256 256\"><rect width=\"256\" height=\"256\" fill=\"none\"/><polygon points=\"88 40 88 88 168 88 168 168 216 168 216 40 88 40\" opacity=\"0.2\"/><polyline points=\"168 168 216 168 216 40 88 40 88 88\" fill=\"none\" stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"16\"/><rect x=\"40\" y=\"88\" width=\"128\" height=\"128\" fill=\"none\" stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"16\"/></svg>';\n    this.elCopyButton.addEventListener(\"click\", () => {\n      navigator.clipboard.writeText(this.code).then(() => {\n        this.elCopyButtonMessage.style.display = \"block\";\n        setTimeout(() => {\n          this.elCopyButtonMessage.style.display = \"none\";\n        }, 1000);\n      });\n    });\n  }\n\n  protected destroyLineNumbers() {\n    this.elWrapper.classList.remove(\"init-code-highlight--has-line-numbers\");\n    if (this.elLineNumbers) {\n      this.elLineNumbers.remove();\n    }\n  }\n\n  protected createElement(\n    elementTag: string,\n    whereToAppend: HTMLElement\n  ): HTMLElement {\n    const element = document.createElement(elementTag);\n    whereToAppend.appendChild(element);\n    return element;\n  }\n\n  protected runOptions() {\n    this.opts.rtl = this.opts.rtl || false;\n    this.opts.tabSize = this.opts.tabSize || 2;\n    this.opts.enableAutocorrect = this.opts.enableAutocorrect || false;\n    this.opts.lineNumbers = this.opts.lineNumbers || false;\n    this.opts.defaultTheme = this.opts.defaultTheme !== false;\n    this.opts.areaId = this.opts.areaId || null;\n    this.opts.ariaLabelledby = this.opts.ariaLabelledby || null;\n    this.opts.readonly = this.opts.readonly || false;\n    this.opts.copyButton = this.opts.copyButton || false;\n    this.opts.maxLines = this.opts.maxLines || 100;\n    this.opts.minLines = this.opts.minLines || 1;\n\n    if (typeof this.opts.handleTabs !== \"boolean\") {\n      this.opts.handleTabs = true;\n    }\n    if (typeof this.opts.handleSelfClosingCharacters !== \"boolean\") {\n      this.opts.handleSelfClosingCharacters = true;\n    }\n    if (typeof this.opts.handleNewLineIndentation !== \"boolean\") {\n      this.opts.handleNewLineIndentation = true;\n    }\n\n    if (this.opts.rtl === true) {\n      this.elTextarea.setAttribute(\"dir\", \"rtl\");\n      this.elPre.setAttribute(\"dir\", \"rtl\");\n    }\n\n    if (this.opts.enableAutocorrect === false) {\n      this.elTextarea.setAttribute(\"spellcheck\", \"false\");\n      this.elTextarea.setAttribute(\"autocapitalize\", \"off\");\n      this.elTextarea.setAttribute(\"autocomplete\", \"off\");\n      this.elTextarea.setAttribute(\"autocorrect\", \"off\");\n    }\n\n    if (this.opts.lineNumbers) {\n      this.createLineNumbers();\n    }\n\n    if (this.opts.defaultTheme) {\n      injectCss(defaultCssTheme, \"theme-default\", this.opts.styleParent);\n    }\n\n    if (this.opts.areaId) {\n      this.elTextarea.setAttribute(\"id\", this.opts.areaId);\n    }\n\n    if (this.opts.ariaLabelledby) {\n      this.elTextarea.setAttribute(\"aria-labelledby\", this.opts.ariaLabelledby);\n    }\n\n    if (this.opts.readonly) {\n      this.enableReadonlyMode();\n    }\n\n    if (this.opts.copyButton) {\n      this.createCopyButton();\n    }\n\n    if (this.opts.lineNumbers) {\n      this.updateLineNumbersCount();\n    }\n  }\n\n  protected updateLineNumbersCount() {\n    let numberList = \"\";\n    for (let i = 1; i <= this.lineNumber; i++) {\n      numberList =\n        numberList +\n        `<span class=\"init-code-highlight__lines__line\">${i}</span>`;\n    }\n    this.elLineNumbers!.innerHTML = numberList;\n  }\n\n  protected updateEditorHeight() {\n    let maxLineNumber = this.opts.maxLines || 100;\n    let minLineNumber = this.opts.minLines || 3;\n    let limitedLineNumber = this.lineNumber;\n    if (limitedLineNumber > maxLineNumber) {\n      limitedLineNumber = maxLineNumber;\n    } else if (limitedLineNumber < minLineNumber) {\n      limitedLineNumber = minLineNumber;\n    }\n\n    this.elWrapper.style.height = `${limitedLineNumber * 20 + 24}px`;\n  }\n\n  protected listenTextarea() {\n    this.events._input = (e) => {\n      if (this.opts.readonly) {\n        return;\n      }\n      const target = e.target as HTMLInputElement;\n      this.code = target.value;\n      this.elCode.innerHTML = escapeHtml(target.value);\n\n      this.highlight();\n\n      setTimeout(() => {\n        this.runUpdate();\n        this.setLineNumber();\n      }, 1);\n    };\n\n    this.elTextarea.addEventListener(\"input\", this.events._input);\n\n    this.elTextarea.addEventListener(\n      \"keydown\",\n      (this.events._keydown = (e: KeyboardEvent) => {\n        if (this.opts.readonly) {\n          return;\n        }\n        this.handleTabs(e);\n        this.handleSelfClosingCharacters(e);\n        this.handleNewLineIndentation(e);\n      })\n    );\n\n    this.elTextarea.addEventListener(\n      \"scroll\",\n      (this.events._scroll = (e) => {\n        const target = e.target as HTMLElement;\n        this.elPre.style.transform = `translate3d(-${target.scrollLeft}px, -${target.scrollTop}px, 0)`;\n        this.elLineNumbers.style.transform = `translate3d(0px, -${target.scrollTop}px, 0)`;\n      })\n    );\n  }\n\n  protected handleTabs(e: KeyboardEvent) {\n    if (this.opts.handleTabs) {\n      if (e.code !== \"Tab\") {\n        return;\n      }\n\n      e.preventDefault();\n\n      const input = this.elTextarea as HTMLTextAreaElement;\n      const selectionDir = input.selectionDirection;\n      const selStartPos = input.selectionStart;\n      const selEndPos = input.selectionEnd;\n      const inputVal = input.value;\n\n      let beforeSelection = inputVal.substring(0, selStartPos);\n      let selectionVal = inputVal.substring(selStartPos, selEndPos);\n      const afterSelection = inputVal.substring(selEndPos);\n      const indent = \" \".repeat(this.opts.tabSize || 2);\n\n      if (selStartPos !== selEndPos && selectionVal.length >= indent.length) {\n        const currentLineStart =\n          selStartPos - (beforeSelection.split(\"\\n\").pop()?.length || 0);\n        let startIndentLen = indent.length;\n        let endIndentLen = indent.length;\n\n        // Unindent\n        if (e.shiftKey) {\n          const currentLineStartStr = inputVal.substring(\n            currentLineStart,\n            currentLineStart + indent.length\n          );\n\n          // Line start with indent\n          if (currentLineStartStr === indent) {\n            startIndentLen = -startIndentLen;\n\n            if (currentLineStart > selStartPos) {\n              // Indent is in selection\n              selectionVal =\n                selectionVal.substring(0, currentLineStart) +\n                selectionVal.substring(currentLineStart + indent.length);\n              endIndentLen = 0;\n            } else if (currentLineStart === selStartPos) {\n              // Indent is at the start of selection\n              startIndentLen = 0;\n              endIndentLen = 0;\n              selectionVal = selectionVal.substring(indent.length);\n            } else {\n              // Indent is before selection\n              endIndentLen = -endIndentLen;\n              beforeSelection =\n                beforeSelection.substring(0, currentLineStart) +\n                beforeSelection.substring(currentLineStart + indent.length);\n            }\n          } else {\n            startIndentLen = 0;\n            endIndentLen = 0;\n          }\n\n          selectionVal = selectionVal.replace(\n            new RegExp(\"\\n\" + indent.split(\"\").join(\"\\\\\"), \"g\"),\n            \"\\n\"\n          );\n        } else {\n          // Indent\n          beforeSelection =\n            beforeSelection.substring(0, currentLineStart) +\n            indent +\n            beforeSelection.substring(currentLineStart, selStartPos);\n          selectionVal = selectionVal.replace(/\\n/g, \"\\n\" + indent);\n        }\n\n        // Set new indented value\n        input.value = beforeSelection + selectionVal + afterSelection;\n\n        input.selectionStart = selStartPos + startIndentLen;\n        input.selectionEnd = selStartPos + selectionVal.length + endIndentLen;\n        input.selectionDirection = selectionDir;\n      } else {\n        input.value = beforeSelection + indent + afterSelection;\n        input.selectionStart = selStartPos + indent.length;\n        input.selectionEnd = selStartPos + indent.length;\n      }\n\n      const newCode = input.value;\n      this.updateCode(newCode);\n      input.selectionEnd = selEndPos + (this.opts?.tabSize || 2);\n    }\n  }\n\n  protected handleSelfClosingCharacters(e: KeyboardEvent) {\n    if (!this.opts.handleSelfClosingCharacters) return;\n\n    const openChars: string[] = [\"(\", \"[\", \"{\", \"<\", \"'\", '\"'];\n    const closeChars: string[] = [\")\", \"]\", \"}\", \">\", \"'\", '\"'];\n    const key: string = e.key;\n\n    if (!openChars.includes(key) && !closeChars.includes(key)) {\n      return;\n    }\n\n    this.closeCharacter(key);\n  }\n\n  protected setLineNumber() {\n    this.lineNumber = this.code.split(\"\\n\").length;\n    if (this.opts.lineNumbers) {\n      this.updateLineNumbersCount();\n    }\n    this.updateEditorHeight();\n  }\n\n  protected handleNewLineIndentation(e: KeyboardEvent) {\n    if (!this.opts.handleNewLineIndentation) return;\n    if (e.code !== \"Enter\") {\n      return;\n    }\n\n    e.preventDefault();\n    const input = this.elTextarea as HTMLTextAreaElement;\n    const selStartPos = input.selectionStart;\n    const selEndPos = input.selectionEnd;\n    const inputVal = input.value;\n\n    const beforeSelection = inputVal.substring(0, selStartPos);\n    const afterSelection = inputVal.substring(selEndPos);\n\n    const lineStart = inputVal.lastIndexOf(\"\\n\", selStartPos - 1);\n    const spaceLast =\n      lineStart + inputVal.slice(lineStart + 1).search(/[^ ]|$/);\n    const indent = spaceLast > lineStart ? spaceLast - lineStart : 0;\n    const newCode =\n      beforeSelection + \"\\n\" + \" \".repeat(indent) + afterSelection;\n\n    input.value = newCode;\n    input.selectionStart = selStartPos + indent + 1;\n    input.selectionEnd = selStartPos + indent + 1;\n\n    this.updateCode(input.value);\n    this.updateEditorHeight();\n  }\n\n  protected closeCharacter(char: string) {\n    const input = this.elTextarea as HTMLTextAreaElement;\n    const selectionStart = input.selectionStart;\n    const selectionEnd = input.selectionEnd;\n\n    if (!this.skipCloseChar(char)) {\n      let closeChar: string = char;\n      switch (char) {\n        case \"(\":\n          closeChar = String.fromCharCode(char.charCodeAt(0) + 1);\n          break;\n        case \"<\":\n        case \"{\":\n        case \"[\":\n          closeChar = String.fromCharCode(char.charCodeAt(0) + 2);\n          break;\n      }\n      const selectionText = this.code.substring(selectionStart, selectionEnd);\n      const newCode = `${this.code.substring(\n        0,\n        selectionStart\n      )}${selectionText}${closeChar}${this.code.substring(selectionEnd)}`;\n      this.updateCode(newCode);\n    } else {\n      const skipChar =\n        this.code.substring(selectionEnd, selectionEnd + 1) === char;\n      const newSelectionEnd = skipChar ? selectionEnd + 1 : selectionEnd;\n      const closeChar = !skipChar && [\"'\", '\"'].includes(char) ? char : \"\";\n      const newCode = `${this.code.substring(\n        0,\n        selectionStart\n      )}${closeChar}${this.code.substring(newSelectionEnd)}`;\n      this.updateCode(newCode);\n      input.selectionEnd = ++input.selectionStart;\n    }\n\n    input.selectionEnd = selectionStart;\n  }\n\n  protected skipCloseChar(char: string): boolean {\n    const input = this.elTextarea as HTMLTextAreaElement;\n    const selectionStart = input.selectionStart;\n    const selectionEnd = input.selectionEnd;\n    const hasSelection = Math.abs(selectionEnd - selectionStart) > 0;\n\n    return (\n      [\")\", \"}\", \"]\", \">\"].includes(char) ||\n      ([\"'\", '\"'].includes(char) && !hasSelection)\n    );\n  }\n\n  public updateCode(newCode: string) {\n    this.code = newCode;\n    // this.elTextarea.value = escapeHtml(newCode)\n    this.elTextarea.value = newCode;\n    this.elCode.innerHTML = escapeHtml(newCode);\n    this.highlight();\n    this.setLineNumber();\n    setTimeout(this.runUpdate.bind(this), 1);\n  }\n\n  public updateLanguage(newLanguage: string) {\n    this.opts.language = newLanguage;\n    this.elCode.classList.forEach((className) => {\n      if (className.startsWith(\"language-\")) {\n        this.elCode.classList.remove(className);\n      }\n    });\n\n    this.elCode.classList.add(`language-${newLanguage}`);\n    this.highlight();\n  }\n\n  public getPrism() {\n    return Prism;\n  }\n\n  protected populateDefault() {\n    this.updateCode(this.code);\n  }\n\n  public highlight() {\n    Prism.highlightElement(this.elCode, false);\n  }\n\n  protected updateCallBack: ((code: string) => void) | null = null;\n\n  public onUpdate(callback: (code: string) => void) {\n    // console.log(\"chanfge\")\n    if (callback && {}.toString.call(callback) !== \"[object Function]\") {\n      throw Error(\"CodeHighlight expects callback of type Function\");\n    }\n\n    this.updateCallBack = callback;\n  }\n\n  public getCode() {\n    return this.code;\n  }\n\n  public runUpdate() {\n    if (this.updateCallBack) {\n      this.updateCallBack(this.code);\n    }\n  }\n\n  public enableReadonlyMode() {\n    this.elTextarea.setAttribute(\"readonly\", \"true\");\n    this.opts.readonly = true;\n  }\n\n  public disableReadonlyMode() {\n    this.elTextarea.removeAttribute(\"readonly\");\n    this.opts.readonly = false;\n  }\n\n  public toggleReadonlyMode() {\n    if (!this.opts.readonly) {\n      this.enableReadonlyMode();\n    } else {\n      this.disableReadonlyMode();\n    }\n  }\n\n  public enableLineNumbers() {\n    this.opts.lineNumbers = true;\n    this.destroyLineNumbers();\n    this.createLineNumbers();\n    this.updateLineNumbersCount();\n  }\n\n  public disableLineNumbers() {\n    if (this.opts.lineNumbers) {\n      this.destroyLineNumbers();\n    }\n    this.opts.lineNumbers = false;\n  }\n\n  public toggleLineNumbers() {\n    if (!this.opts.lineNumbers) {\n      this.enableLineNumbers();\n    } else {\n      this.disableLineNumbers();\n    }\n  }\n\n  public dispose() {\n    this.elTextarea.removeEventListener(\"input\", this.events._input);\n    this.elTextarea.removeEventListener(\"keydown\", this.events._keydown);\n    this.elTextarea.removeEventListener(\"scroll\", this.events._scroll);\n    this.elWrapper.remove();\n  }\n}\n","export const BACKGROUND_COLOR = \"#fff\";\nexport const LINE_HEIGHT = \"20px\";\nexport const FONT_SIZE = \"13px\";\n\nexport const defaultCssTheme = `\n.init-code-highlight {\n  background: ${BACKGROUND_COLOR};\n  color: #4f559c;\n}\n\n.init-code-highlight .token.punctuation {\n  color: #4a4a4a;\n}\n\n.init-code-highlight .token.keyword {\n  color: #8500ff;\n}\n\n.init-code-highlight .token.operator {\n  color: #ff5598;\n}\n\n.init-code-highlight .token.string {\n  color: #41ad8f;\n}\n\n.init-code-highlight .token.comment {\n  color: #9badb7;\n}\n\n.init-code-highlight .token.function {\n  color: #8500ff;\n}\n\n.init-code-highlight .token.boolean {\n  color: #8500ff;\n}\n\n.init-code-highlight .token.number {\n  color: #8500ff;\n}\n\n.init-code-highlight .token.selector {\n  color: #8500ff;\n}\n\n.init-code-highlight .token.property {\n  color: #8500ff;\n}\n\n.init-code-highlight .token.tag {\n  color: #8500ff;\n}\n\n.init-code-highlight .token.attr-value {\n  color: #8500ff;\n}\n`;\n","export function cssSupports(property: string, value: string): boolean {\n  if (typeof CSS !== \"undefined\") {\n    return CSS.supports(property, value);\n  }\n\n  if (typeof document === \"undefined\") {\n    return false;\n  }\n\n  return toCamelCase(property) in document.body.style;\n}\n\nexport function toCamelCase(cssProperty: string): string {\n  cssProperty = cssProperty\n    .split(\"-\")\n    .filter((word) => !!word)\n    .map((word) => word[0].toUpperCase() + word.substr(1))\n    .join(\"\");\n\n  return cssProperty[0].toLowerCase() + cssProperty.substr(1);\n}\n","import { BACKGROUND_COLOR, LINE_HEIGHT, FONT_SIZE } from \"./theme-default\";\nimport { cssSupports } from \"../utils/css-supports\";\n\nconst FONT_FAMILY = `\"SFMono-Regular\", Consolas, \"Liberation Mono\", Menlo, Courier, monospace`;\nconst COLOR = cssSupports(\"caret-color\", \"#000\") ? BACKGROUND_COLOR : \"#ccc\";\nconst LINE_NUMBER_WIDTH = \"40px\";\n\nexport const editorCss = `\n  .init-code-highlight {\n    width: 100%;\n    height: 100%;\n    overflow: hidden;\n    border : 1px solid #EAEEFB;\n    border-radius: 4px;\n    position: relative;\n  }\n\n  .init-code-highlight, .init-code-highlight * {\n    box-sizing: border-box;\n  }\n\n  .init-code-highlight__pre {\n    pointer-events: none;\n    z-index: 3;\n    overflow: hidden;\n  }\n\n  .init-code-highlight__textarea {\n    background: none;\n    border: none;\n    color: ${COLOR};\n    z-index: 1;\n    resize: none;\n    font-family: ${FONT_FAMILY};\n    -webkit-appearance: pre;\n    caret-color: #111;\n    z-index: 2;\n    width: 100%;\n    height: 100%;\n  }\n\n  .init-code-highlight--has-line-numbers .init-code-highlight__textarea {\n    width: calc(100% - ${LINE_NUMBER_WIDTH});\n  }\n\n  .init-code-highlight__code {\n    display: block;\n    font-family: ${FONT_FAMILY};\n    overflow: hidden;\n  }\n\n  .init-code-highlight__flatten {\n    padding: 10px;\n    font-size: ${FONT_SIZE};\n    line-height: ${LINE_HEIGHT};\n    white-space: pre;\n    position: absolute;\n    top: 0;\n    left: 0;\n    overflow: auto;\n    margin: 0 !important;\n    outline: none;\n    text-align: left;\n  }\n\n  .init-code-highlight--has-line-numbers .init-code-highlight__flatten {\n    width: calc(100% - ${LINE_NUMBER_WIDTH});\n    left: ${LINE_NUMBER_WIDTH};\n  }\n\n  .init-code-highlight__line-highlight {\n    position: absolute;\n    top: 10px;\n    left: 0;\n    width: 100%;\n    height: ${LINE_HEIGHT};\n    background: rgba(0,0,0,0.1);\n    z-index: 1;\n  }\n\n  .init-code-highlight__lines {\n    padding: 10px 4px;\n    font-size: 12px;\n    line-height: ${LINE_HEIGHT};\n    font-family: 'Cousine', monospace;\n    position: absolute;\n    left: 0;\n    top: 0;\n    width: ${LINE_NUMBER_WIDTH};\n    height: 100%;\n    text-align: right;\n    color: #999;\n    z-index: 2;\n  }\n\n  .init-code-highlight__lines__line {\n    display: block;\n  }\n\n  .init-code-highlight.init-code-highlight--has-line-numbers {\n    padding-left: ${LINE_NUMBER_WIDTH};\n  }\n\n  .init-code-highlight.init-code-highlight--has-line-numbers:before {\n    content: '';\n    position: absolute;\n    left: 0;\n    top: 0;\n    width: ${LINE_NUMBER_WIDTH};\n    height: 100%;\n    // background: #eee;\n    background: #dcdfe6;\n    z-index: 1;\n  }\n\n  .init-code-highlight__copyButton{\n    position: absolute;\n    right: 5px;\n    top: 5px;\n    z-index: 3;\n    background: #EAEEFB;\n    border: none;\n    color: #999;\n    cursor: pointer;\n    outline: none;\n    width: 22px;\n    height: 22px;\n    border-radius: 4px;\n    z-index: 9999;\n  }\n\n  .init-code-highlight__copyMessage{\n    position: absolute;\n    right: 32px;\n    top: 5px;\n    z-index: 3;\n    background: #EAEEFB;\n    border: none;\n    color: #999;\n    cursor: pointer;\n    outline: none;\n    width: 55px;\n    height: 22px;\n    line-height: 22px;\n    border-radius: 4px;\n    font-size: 12px;\n    text-align: center;\n    font-family: 'Cousine', monospace;\n    z-index: 9999;\n  }\n`;\n","export function injectCss(\n  css: string | undefined,\n  styleName: string = \"init-code-highlight-style\",\n  parent: HTMLElement = document.head\n): boolean {\n  const CSS_ID = styleName;\n  const PARENT = parent;\n\n  if (!css) {\n    return false;\n  }\n\n  if (document.getElementById(CSS_ID)) {\n    return true;\n  }\n\n  const style = document.createElement(\"style\");\n  style.innerHTML = css;\n  style.id = CSS_ID;\n  PARENT.appendChild(style);\n\n  return true;\n}\n","const entityMap: Record<string, string> = {\n  \"&\": \"&amp;\",\n  \"<\": \"&lt;\",\n  \">\": \"&gt;\",\n  '\"': \"&quot;\",\n  \"'\": \"&#39;\",\n  \"/\": \"&#x2F;\",\n  \"`\": \"&#x60;\",\n  \"=\": \"&#x3D;\",\n};\n\nexport function escapeHtml(string: unknown): string {\n  return String(string).replace(/[&<>\"'`=/]/g, (s) => entityMap[s]);\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;;;ACAO,IAAM,mBAAmB;AACzB,IAAM,cAAc;AACpB,IAAM,YAAY;AAElB,IAAM,kBAAkB;AAAA;AAAA,gBAEf,gBAAgB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;;ACNzB,SAAS,YAAY,UAAkB,OAAwB;AACpE,MAAI,OAAO,QAAQ,aAAa;AAC9B,WAAO,IAAI,SAAS,UAAU,KAAK;AAAA,EACrC;AAEA,MAAI,OAAO,aAAa,aAAa;AACnC,WAAO;AAAA,EACT;AAEA,SAAO,YAAY,QAAQ,KAAK,SAAS,KAAK;AAChD;AAEO,SAAS,YAAY,aAA6B;AACvD,gBAAc,YACX,MAAM,GAAG,EACT,OAAO,CAAC,SAAS,CAAC,CAAC,IAAI,EACvB,IAAI,CAAC,SAAS,KAAK,CAAC,EAAE,YAAY,IAAI,KAAK,OAAO,CAAC,CAAC,EACpD,KAAK,EAAE;AAEV,SAAO,YAAY,CAAC,EAAE,YAAY,IAAI,YAAY,OAAO,CAAC;AAC5D;;;ACjBA,IAAM,cAAc;AACpB,IAAM,QAAQ,YAAY,eAAe,MAAM,IAAI,mBAAmB;AACtE,IAAM,oBAAoB;AAEnB,IAAM,YAAY;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,aAuBZ,KAAK;AAAA;AAAA;AAAA,mBAGC,WAAW;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,yBASL,iBAAiB;AAAA;AAAA;AAAA;AAAA;AAAA,mBAKvB,WAAW;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,iBAMb,SAAS;AAAA,mBACP,WAAW;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,yBAYL,iBAAiB;AAAA,YAC9B,iBAAiB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,cAQf,WAAW;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,mBAQN,WAAW;AAAA;AAAA;AAAA;AAAA;AAAA,aAKjB,iBAAiB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,oBAYV,iBAAiB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,aAQxB,iBAAiB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;;AC5GvB,SAAS,UACd,KACA,YAAoB,6BACpB,SAAsB,SAAS,MACtB;AACT,QAAM,SAAS;AACf,QAAM,SAAS;AAEf,MAAI,CAAC,KAAK;AACR,WAAO;AAAA,EACT;AAEA,MAAI,SAAS,eAAe,MAAM,GAAG;AACnC,WAAO;AAAA,EACT;AAEA,QAAM,QAAQ,SAAS,cAAc,OAAO;AAC5C,QAAM,YAAY;AAClB,QAAM,KAAK;AACX,SAAO,YAAY,KAAK;AAExB,SAAO;AACT;;;ACtBA,IAAM,YAAoC;AAAA,EACxC,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AACP;AAEO,SAAS,WAAW,QAAyB;AAClD,SAAO,OAAO,MAAM,EAAE,QAAQ,eAAe,CAAC,MAAM,UAAU,CAAC,CAAC;AAClE;;;ALRA,qBAAkB;AAClB,8BAAO;AAIP,IAAqB,oBAArB,MAAuC;AAAA,EACrC;AAAA,EACA;AAAA,EACA;AAAA,EACA,OAAe;AAAA,EACf;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA,aAAqB;AAAA,EAErB,YACE,mBACA,MACA;AACA,QAAI,CAAC,mBAAmB;AACtB,YAAM,IAAI;AAAA,QACR;AAAA,MACF;AAAA,IACF;AAEA,QAAI,CAAC,MAAM;AACT,YAAM,IAAI;AAAA,QACR;AAAA,MACF;AAAA,IACF;AAEA,mBAAAA,QAAM,QAAQ,WAAW,iBACvB,KAAK,gBACL;AAEF,QAAI,6BAA6B,aAAa;AAC5C,WAAK,aAAa;AAAA,IACpB,OAAO;AACL,YAAM,aAAa,SAAS,cAA2B,iBAAiB;AACxE,UAAI,YAAY;AACd,aAAK,aAAa;AAAA,MACpB;AAAA,IACF;AAEA,SAAK,OAAO;AAEZ,SAAK,SAAS;AAAA,MACZ,SAAS;AAAA,MAAC;AAAA,MACV,WAAW;AAAA,MAAC;AAAA,MACZ,UAAU;AAAA,MAAC;AAAA,IACb;AAEA,SAAK,YAAY;AAAA,EACnB;AAAA,EAEU,cAAc;AACtB,UAAM,gBAAgB;AAAA,MACpB;AAAA,MACA;AAAA,MACA,KAAK,KAAK;AAAA,IACZ;AACA,QAAI,CAAC,eAAe;AAClB,YAAM,IAAI,MAAM,2CAA2C;AAAA,IAC7D;AAEA,SAAK,cAAc;AACnB,SAAK,eAAe;AACpB,SAAK,UAAU;AACf,SAAK,WAAW;AAEhB,SAAK,WAAW;AAChB,SAAK,eAAe;AACpB,SAAK,gBAAgB;AACrB,SAAK,WAAW,KAAK,IAAI;AAAA,EAK3B;AAAA,EAEU,gBAAgB;AACxB,SAAK,OAAO,KAAK,WAAW;AAC5B,SAAK,WAAW,YAAY;AAC5B,SAAK,YAAY,KAAK,cAAc,OAAO,KAAK,UAAU;AAC1D,SAAK,UAAU,UAAU,IAAI,qBAAqB;AAAA,EACpD;AAAA,EAEU,iBAAiB;AACzB,SAAK,aAAa,KAAK;AAAA,MACrB;AAAA,MACA,KAAK;AAAA,IACP;AACA,SAAK,WAAW,UAAU;AAAA,MACxB;AAAA,MACA;AAAA,IACF;AAAA,EACF;AAAA,EAEU,YAAY;AACpB,SAAK,QAAQ,KAAK,cAAc,OAAO,KAAK,SAAS;AACrD,SAAK,MAAM,UAAU;AAAA,MACnB;AAAA,MACA;AAAA,MACA,YAAY,KAAK,KAAK,YAAY,OAAO;AAAA,IAC3C;AAAA,EACF;AAAA,EAEU,aAAa;AACrB,SAAK,SAAS,KAAK,cAAc,QAAQ,KAAK,KAAK;AACnD,SAAK,OAAO,UAAU;AAAA,MACpB;AAAA,MACA,YAAY,KAAK,KAAK,YAAY,MAAM;AAAA,IAC1C;AAAA,EACF;AAAA,EAEU,oBAAoB;AAC5B,SAAK,gBAAgB,KAAK,cAAc,OAAO,KAAK,SAAS;AAC7D,SAAK,cAAc,UAAU,IAAI,4BAA4B;AAC7D,SAAK,UAAU,UAAU,IAAI,uCAAuC;AACpE,SAAK,cAAc;AAAA,EACrB;AAAA,EAEU,mBAAmB;AAC3B,SAAK,sBAAsB,KAAK,cAAc,OAAO,KAAK,SAAS;AACnE,SAAK,oBAAoB,UAAU,IAAI,kCAAkC;AACzE,SAAK,oBAAoB,YAAY;AACrC,SAAK,oBAAoB,MAAM,UAAU;AAEzC,SAAK,eAAe,KAAK,cAAc,OAAO,KAAK,SAAS;AAC5D,SAAK,aAAa,UAAU,IAAI,iCAAiC;AACjE,SAAK,aAAa,YAChB;AACF,SAAK,aAAa,iBAAiB,SAAS,MAAM;AAChD,gBAAU,UAAU,UAAU,KAAK,IAAI,EAAE,KAAK,MAAM;AAClD,aAAK,oBAAoB,MAAM,UAAU;AACzC,mBAAW,MAAM;AACf,eAAK,oBAAoB,MAAM,UAAU;AAAA,QAC3C,GAAG,GAAI;AAAA,MACT,CAAC;AAAA,IACH,CAAC;AAAA,EACH;AAAA,EAEU,qBAAqB;AAC7B,SAAK,UAAU,UAAU,OAAO,uCAAuC;AACvE,QAAI,KAAK,eAAe;AACtB,WAAK,cAAc,OAAO;AAAA,IAC5B;AAAA,EACF;AAAA,EAEU,cACR,YACA,eACa;AACb,UAAM,UAAU,SAAS,cAAc,UAAU;AACjD,kBAAc,YAAY,OAAO;AACjC,WAAO;AAAA,EACT;AAAA,EAEU,aAAa;AACrB,SAAK,KAAK,MAAM,KAAK,KAAK,OAAO;AACjC,SAAK,KAAK,UAAU,KAAK,KAAK,WAAW;AACzC,SAAK,KAAK,oBAAoB,KAAK,KAAK,qBAAqB;AAC7D,SAAK,KAAK,cAAc,KAAK,KAAK,eAAe;AACjD,SAAK,KAAK,eAAe,KAAK,KAAK,iBAAiB;AACpD,SAAK,KAAK,SAAS,KAAK,KAAK,UAAU;AACvC,SAAK,KAAK,iBAAiB,KAAK,KAAK,kBAAkB;AACvD,SAAK,KAAK,WAAW,KAAK,KAAK,YAAY;AAC3C,SAAK,KAAK,aAAa,KAAK,KAAK,cAAc;AAC/C,SAAK,KAAK,WAAW,KAAK,KAAK,YAAY;AAC3C,SAAK,KAAK,WAAW,KAAK,KAAK,YAAY;AAE3C,QAAI,OAAO,KAAK,KAAK,eAAe,WAAW;AAC7C,WAAK,KAAK,aAAa;AAAA,IACzB;AACA,QAAI,OAAO,KAAK,KAAK,gCAAgC,WAAW;AAC9D,WAAK,KAAK,8BAA8B;AAAA,IAC1C;AACA,QAAI,OAAO,KAAK,KAAK,6BAA6B,WAAW;AAC3D,WAAK,KAAK,2BAA2B;AAAA,IACvC;AAEA,QAAI,KAAK,KAAK,QAAQ,MAAM;AAC1B,WAAK,WAAW,aAAa,OAAO,KAAK;AACzC,WAAK,MAAM,aAAa,OAAO,KAAK;AAAA,IACtC;AAEA,QAAI,KAAK,KAAK,sBAAsB,OAAO;AACzC,WAAK,WAAW,aAAa,cAAc,OAAO;AAClD,WAAK,WAAW,aAAa,kBAAkB,KAAK;AACpD,WAAK,WAAW,aAAa,gBAAgB,KAAK;AAClD,WAAK,WAAW,aAAa,eAAe,KAAK;AAAA,IACnD;AAEA,QAAI,KAAK,KAAK,aAAa;AACzB,WAAK,kBAAkB;AAAA,IACzB;AAEA,QAAI,KAAK,KAAK,cAAc;AAC1B,gBAAU,iBAAiB,iBAAiB,KAAK,KAAK,WAAW;AAAA,IACnE;AAEA,QAAI,KAAK,KAAK,QAAQ;AACpB,WAAK,WAAW,aAAa,MAAM,KAAK,KAAK,MAAM;AAAA,IACrD;AAEA,QAAI,KAAK,KAAK,gBAAgB;AAC5B,WAAK,WAAW,aAAa,mBAAmB,KAAK,KAAK,cAAc;AAAA,IAC1E;AAEA,QAAI,KAAK,KAAK,UAAU;AACtB,WAAK,mBAAmB;AAAA,IAC1B;AAEA,QAAI,KAAK,KAAK,YAAY;AACxB,WAAK,iBAAiB;AAAA,IACxB;AAEA,QAAI,KAAK,KAAK,aAAa;AACzB,WAAK,uBAAuB;AAAA,IAC9B;AAAA,EACF;AAAA,EAEU,yBAAyB;AACjC,QAAI,aAAa;AACjB,aAAS,IAAI,GAAG,KAAK,KAAK,YAAY,KAAK;AACzC,mBACE,aACA,kDAAkD,CAAC;AAAA,IACvD;AACA,SAAK,cAAe,YAAY;AAAA,EAClC;AAAA,EAEU,qBAAqB;AAC7B,QAAI,gBAAgB,KAAK,KAAK,YAAY;AAC1C,QAAI,gBAAgB,KAAK,KAAK,YAAY;AAC1C,QAAI,oBAAoB,KAAK;AAC7B,QAAI,oBAAoB,eAAe;AACrC,0BAAoB;AAAA,IACtB,WAAW,oBAAoB,eAAe;AAC5C,0BAAoB;AAAA,IACtB;AAEA,SAAK,UAAU,MAAM,SAAS,GAAG,oBAAoB,KAAK,EAAE;AAAA,EAC9D;AAAA,EAEU,iBAAiB;AACzB,SAAK,OAAO,SAAS,CAAC,MAAM;AAC1B,UAAI,KAAK,KAAK,UAAU;AACtB;AAAA,MACF;AACA,YAAM,SAAS,EAAE;AACjB,WAAK,OAAO,OAAO;AACnB,WAAK,OAAO,YAAY,WAAW,OAAO,KAAK;AAE/C,WAAK,UAAU;AAEf,iBAAW,MAAM;AACf,aAAK,UAAU;AACf,aAAK,cAAc;AAAA,MACrB,GAAG,CAAC;AAAA,IACN;AAEA,SAAK,WAAW,iBAAiB,SAAS,KAAK,OAAO,MAAM;AAE5D,SAAK,WAAW;AAAA,MACd;AAAA,MACC,KAAK,OAAO,WAAW,CAAC,MAAqB;AAC5C,YAAI,KAAK,KAAK,UAAU;AACtB;AAAA,QACF;AACA,aAAK,WAAW,CAAC;AACjB,aAAK,4BAA4B,CAAC;AAClC,aAAK,yBAAyB,CAAC;AAAA,MACjC;AAAA,IACF;AAEA,SAAK,WAAW;AAAA,MACd;AAAA,MACC,KAAK,OAAO,UAAU,CAAC,MAAM;AAC5B,cAAM,SAAS,EAAE;AACjB,aAAK,MAAM,MAAM,YAAY,gBAAgB,OAAO,UAAU,QAAQ,OAAO,SAAS;AACtF,aAAK,cAAc,MAAM,YAAY,qBAAqB,OAAO,SAAS;AAAA,MAC5E;AAAA,IACF;AAAA,EACF;AAAA,EAEU,WAAW,GAAkB;AACrC,QAAI,KAAK,KAAK,YAAY;AACxB,UAAI,EAAE,SAAS,OAAO;AACpB;AAAA,MACF;AAEA,QAAE,eAAe;AAEjB,YAAM,QAAQ,KAAK;AACnB,YAAM,eAAe,MAAM;AAC3B,YAAM,cAAc,MAAM;AAC1B,YAAM,YAAY,MAAM;AACxB,YAAM,WAAW,MAAM;AAEvB,UAAI,kBAAkB,SAAS,UAAU,GAAG,WAAW;AACvD,UAAI,eAAe,SAAS,UAAU,aAAa,SAAS;AAC5D,YAAM,iBAAiB,SAAS,UAAU,SAAS;AACnD,YAAM,SAAS,IAAI,OAAO,KAAK,KAAK,WAAW,CAAC;AAEhD,UAAI,gBAAgB,aAAa,aAAa,UAAU,OAAO,QAAQ;AACrE,cAAM,mBACJ,eAAe,gBAAgB,MAAM,IAAI,EAAE,IAAI,GAAG,UAAU;AAC9D,YAAI,iBAAiB,OAAO;AAC5B,YAAI,eAAe,OAAO;AAG1B,YAAI,EAAE,UAAU;AACd,gBAAM,sBAAsB,SAAS;AAAA,YACnC;AAAA,YACA,mBAAmB,OAAO;AAAA,UAC5B;AAGA,cAAI,wBAAwB,QAAQ;AAClC,6BAAiB,CAAC;AAElB,gBAAI,mBAAmB,aAAa;AAElC,6BACE,aAAa,UAAU,GAAG,gBAAgB,IAC1C,aAAa,UAAU,mBAAmB,OAAO,MAAM;AACzD,6BAAe;AAAA,YACjB,WAAW,qBAAqB,aAAa;AAE3C,+BAAiB;AACjB,6BAAe;AACf,6BAAe,aAAa,UAAU,OAAO,MAAM;AAAA,YACrD,OAAO;AAEL,6BAAe,CAAC;AAChB,gCACE,gBAAgB,UAAU,GAAG,gBAAgB,IAC7C,gBAAgB,UAAU,mBAAmB,OAAO,MAAM;AAAA,YAC9D;AAAA,UACF,OAAO;AACL,6BAAiB;AACjB,2BAAe;AAAA,UACjB;AAEA,yBAAe,aAAa;AAAA,YAC1B,IAAI,OAAO,OAAO,OAAO,MAAM,EAAE,EAAE,KAAK,IAAI,GAAG,GAAG;AAAA,YAClD;AAAA,UACF;AAAA,QACF,OAAO;AAEL,4BACE,gBAAgB,UAAU,GAAG,gBAAgB,IAC7C,SACA,gBAAgB,UAAU,kBAAkB,WAAW;AACzD,yBAAe,aAAa,QAAQ,OAAO,OAAO,MAAM;AAAA,QAC1D;AAGA,cAAM,QAAQ,kBAAkB,eAAe;AAE/C,cAAM,iBAAiB,cAAc;AACrC,cAAM,eAAe,cAAc,aAAa,SAAS;AACzD,cAAM,qBAAqB;AAAA,MAC7B,OAAO;AACL,cAAM,QAAQ,kBAAkB,SAAS;AACzC,cAAM,iBAAiB,cAAc,OAAO;AAC5C,cAAM,eAAe,cAAc,OAAO;AAAA,MAC5C;AAEA,YAAM,UAAU,MAAM;AACtB,WAAK,WAAW,OAAO;AACvB,YAAM,eAAe,aAAa,KAAK,MAAM,WAAW;AAAA,IAC1D;AAAA,EACF;AAAA,EAEU,4BAA4B,GAAkB;AACtD,QAAI,CAAC,KAAK,KAAK,4BAA6B;AAE5C,UAAM,YAAsB,CAAC,KAAK,KAAK,KAAK,KAAK,KAAK,GAAG;AACzD,UAAM,aAAuB,CAAC,KAAK,KAAK,KAAK,KAAK,KAAK,GAAG;AAC1D,UAAM,MAAc,EAAE;AAEtB,QAAI,CAAC,UAAU,SAAS,GAAG,KAAK,CAAC,WAAW,SAAS,GAAG,GAAG;AACzD;AAAA,IACF;AAEA,SAAK,eAAe,GAAG;AAAA,EACzB;AAAA,EAEU,gBAAgB;AACxB,SAAK,aAAa,KAAK,KAAK,MAAM,IAAI,EAAE;AACxC,QAAI,KAAK,KAAK,aAAa;AACzB,WAAK,uBAAuB;AAAA,IAC9B;AACA,SAAK,mBAAmB;AAAA,EAC1B;AAAA,EAEU,yBAAyB,GAAkB;AACnD,QAAI,CAAC,KAAK,KAAK,yBAA0B;AACzC,QAAI,EAAE,SAAS,SAAS;AACtB;AAAA,IACF;AAEA,MAAE,eAAe;AACjB,UAAM,QAAQ,KAAK;AACnB,UAAM,cAAc,MAAM;AAC1B,UAAM,YAAY,MAAM;AACxB,UAAM,WAAW,MAAM;AAEvB,UAAM,kBAAkB,SAAS,UAAU,GAAG,WAAW;AACzD,UAAM,iBAAiB,SAAS,UAAU,SAAS;AAEnD,UAAM,YAAY,SAAS,YAAY,MAAM,cAAc,CAAC;AAC5D,UAAM,YACJ,YAAY,SAAS,MAAM,YAAY,CAAC,EAAE,OAAO,QAAQ;AAC3D,UAAM,SAAS,YAAY,YAAY,YAAY,YAAY;AAC/D,UAAM,UACJ,kBAAkB,OAAO,IAAI,OAAO,MAAM,IAAI;AAEhD,UAAM,QAAQ;AACd,UAAM,iBAAiB,cAAc,SAAS;AAC9C,UAAM,eAAe,cAAc,SAAS;AAE5C,SAAK,WAAW,MAAM,KAAK;AAC3B,SAAK,mBAAmB;AAAA,EAC1B;AAAA,EAEU,eAAe,MAAc;AACrC,UAAM,QAAQ,KAAK;AACnB,UAAM,iBAAiB,MAAM;AAC7B,UAAM,eAAe,MAAM;AAE3B,QAAI,CAAC,KAAK,cAAc,IAAI,GAAG;AAC7B,UAAI,YAAoB;AACxB,cAAQ,MAAM;AAAA,QACZ,KAAK;AACH,sBAAY,OAAO,aAAa,KAAK,WAAW,CAAC,IAAI,CAAC;AACtD;AAAA,QACF,KAAK;AAAA,QACL,KAAK;AAAA,QACL,KAAK;AACH,sBAAY,OAAO,aAAa,KAAK,WAAW,CAAC,IAAI,CAAC;AACtD;AAAA,MACJ;AACA,YAAM,gBAAgB,KAAK,KAAK,UAAU,gBAAgB,YAAY;AACtE,YAAM,UAAU,GAAG,KAAK,KAAK;AAAA,QAC3B;AAAA,QACA;AAAA,MACF,CAAC,GAAG,aAAa,GAAG,SAAS,GAAG,KAAK,KAAK,UAAU,YAAY,CAAC;AACjE,WAAK,WAAW,OAAO;AAAA,IACzB,OAAO;AACL,YAAM,WACJ,KAAK,KAAK,UAAU,cAAc,eAAe,CAAC,MAAM;AAC1D,YAAM,kBAAkB,WAAW,eAAe,IAAI;AACtD,YAAM,YAAY,CAAC,YAAY,CAAC,KAAK,GAAG,EAAE,SAAS,IAAI,IAAI,OAAO;AAClE,YAAM,UAAU,GAAG,KAAK,KAAK;AAAA,QAC3B;AAAA,QACA;AAAA,MACF,CAAC,GAAG,SAAS,GAAG,KAAK,KAAK,UAAU,eAAe,CAAC;AACpD,WAAK,WAAW,OAAO;AACvB,YAAM,eAAe,EAAE,MAAM;AAAA,IAC/B;AAEA,UAAM,eAAe;AAAA,EACvB;AAAA,EAEU,cAAc,MAAuB;AAC7C,UAAM,QAAQ,KAAK;AACnB,UAAM,iBAAiB,MAAM;AAC7B,UAAM,eAAe,MAAM;AAC3B,UAAM,eAAe,KAAK,IAAI,eAAe,cAAc,IAAI;AAE/D,WACE,CAAC,KAAK,KAAK,KAAK,GAAG,EAAE,SAAS,IAAI,KACjC,CAAC,KAAK,GAAG,EAAE,SAAS,IAAI,KAAK,CAAC;AAAA,EAEnC;AAAA,EAEO,WAAW,SAAiB;AACjC,SAAK,OAAO;AAEZ,SAAK,WAAW,QAAQ;AACxB,SAAK,OAAO,YAAY,WAAW,OAAO;AAC1C,SAAK,UAAU;AACf,SAAK,cAAc;AACnB,eAAW,KAAK,UAAU,KAAK,IAAI,GAAG,CAAC;AAAA,EACzC;AAAA,EAEO,eAAe,aAAqB;AACzC,SAAK,KAAK,WAAW;AACrB,SAAK,OAAO,UAAU,QAAQ,CAAC,cAAc;AAC3C,UAAI,UAAU,WAAW,WAAW,GAAG;AACrC,aAAK,OAAO,UAAU,OAAO,SAAS;AAAA,MACxC;AAAA,IACF,CAAC;AAED,SAAK,OAAO,UAAU,IAAI,YAAY,WAAW,EAAE;AACnD,SAAK,UAAU;AAAA,EACjB;AAAA,EAEO,WAAW;AAChB,WAAO,eAAAA;AAAA,EACT;AAAA,EAEU,kBAAkB;AAC1B,SAAK,WAAW,KAAK,IAAI;AAAA,EAC3B;AAAA,EAEO,YAAY;AACjB,mBAAAA,QAAM,iBAAiB,KAAK,QAAQ,KAAK;AAAA,EAC3C;AAAA,EAEU,iBAAkD;AAAA,EAErD,SAAS,UAAkC;AAEhD,QAAI,YAAY,CAAC,EAAE,SAAS,KAAK,QAAQ,MAAM,qBAAqB;AAClE,YAAM,MAAM,iDAAiD;AAAA,IAC/D;AAEA,SAAK,iBAAiB;AAAA,EACxB;AAAA,EAEO,UAAU;AACf,WAAO,KAAK;AAAA,EACd;AAAA,EAEO,YAAY;AACjB,QAAI,KAAK,gBAAgB;AACvB,WAAK,eAAe,KAAK,IAAI;AAAA,IAC/B;AAAA,EACF;AAAA,EAEO,qBAAqB;AAC1B,SAAK,WAAW,aAAa,YAAY,MAAM;AAC/C,SAAK,KAAK,WAAW;AAAA,EACvB;AAAA,EAEO,sBAAsB;AAC3B,SAAK,WAAW,gBAAgB,UAAU;AAC1C,SAAK,KAAK,WAAW;AAAA,EACvB;AAAA,EAEO,qBAAqB;AAC1B,QAAI,CAAC,KAAK,KAAK,UAAU;AACvB,WAAK,mBAAmB;AAAA,IAC1B,OAAO;AACL,WAAK,oBAAoB;AAAA,IAC3B;AAAA,EACF;AAAA,EAEO,oBAAoB;AACzB,SAAK,KAAK,cAAc;AACxB,SAAK,mBAAmB;AACxB,SAAK,kBAAkB;AACvB,SAAK,uBAAuB;AAAA,EAC9B;AAAA,EAEO,qBAAqB;AAC1B,QAAI,KAAK,KAAK,aAAa;AACzB,WAAK,mBAAmB;AAAA,IAC1B;AACA,SAAK,KAAK,cAAc;AAAA,EAC1B;AAAA,EAEO,oBAAoB;AACzB,QAAI,CAAC,KAAK,KAAK,aAAa;AAC1B,WAAK,kBAAkB;AAAA,IACzB,OAAO;AACL,WAAK,mBAAmB;AAAA,IAC1B;AAAA,EACF;AAAA,EAEO,UAAU;AACf,SAAK,WAAW,oBAAoB,SAAS,KAAK,OAAO,MAAM;AAC/D,SAAK,WAAW,oBAAoB,WAAW,KAAK,OAAO,QAAQ;AACnE,SAAK,WAAW,oBAAoB,UAAU,KAAK,OAAO,OAAO;AACjE,SAAK,UAAU,OAAO;AAAA,EACxB;AACF;","names":["Prism"]}