export declare const editor_js = "\n<script>\n(function (doc) {\n\n  var getAttributes = function (node) {\n    const attrArray = node?.attributes ? [...node.attributes] : [];\n    return attrArray.reduce((_attr, node) => ({ ..._attr, [node.nodeName]: node.nodeValue}), {});\n  }\n\n  var sendMessage = function (message) {\n    if (window.ReactNativeWebView)\n      window.ReactNativeWebView.postMessage(message);\n      else console.log(message)\n  }\n\n  // Get the dimensions of the quill content field\n  var getDimensions = function (key) {\n    const dimensionsJson = JSON.stringify({\n      type: 'get-dimensions',\n      key: key,\n      data: {\n        width: quill.root.scrollWidth,\n        height: quill.root.scrollHeight\n      }\n    });\n    sendMessage(dimensionsJson);\n  }\n\n  var getSelectedFormats = function () {\n    var formats = quill.getFormat();\n      var contentChanged = JSON.stringify({\n                type: 'format-change',\n                data: {formats} });\n      sendMessage(contentChanged);\n  }\n  //Format text at user\u2019s current selection\n  var formatSelection = function (name, value) {\n    var range = quill.getSelection();\n    if (!range) quill.focus();\n    quill.format(name, value);\n    getSelectedFormats();\n  }\n\n  var hasFocus = function (key) {\n    var hs = quill.hasFocus();\n\n    var hsJson = JSON.stringify({\n                type: 'has-focus',\n                key: key,\n                data: hs });\n      sendMessage(hsJson);\n  }\n\n  var getContents = function (key, index, length) {\n    var getContentsData = quill.getContents(index, length);\n    var getContentsDataJson = JSON.stringify({\n      type: 'get-contents',\n      key: key,\n      data: getContentsData });\n      sendMessage(getContentsDataJson);\n  }\n\n  var getText = function (key, index, length) {\n    var getTextData = quill.getText(index, length);\n    var getTextDataJson = JSON.stringify({\n      type: 'get-text',\n      key: key,\n      data: getTextData });\n      sendMessage(getTextDataJson);\n  }\n\n  var getLength = function (key) {\n    var getLengthData = quill.getLength();\n    var getLengthDataJson = JSON.stringify({\n      type: 'get-length',\n      key: key,\n      data: getLengthData });\n      sendMessage(getLengthDataJson);\n  }\n\n  var getHtml = function (key) {\n    var html = quill.root.innerHTML;\n    var getHtmlJson = JSON.stringify({\n      type: 'get-html',\n      key: key,\n      data: html\n    });\n    sendMessage(getHtmlJson);\n  }\n\n  var insertEmbed = function (index, type, value) {\n    quill.insertEmbed(index, type, value);\n  }\n\n  var insertText = function (index, text, formats={}) {\n    quill.insertText(index, text, formats);\n  }\n\n  var setContents = function (key, delta) {\n    try {\n      var setContentsData = quill.setContents(delta);\n      var setContentsDataJson = JSON.stringify({\n        type: 'set-contents',\n        key: key,\n        data: setContentsData });\n        sendMessage(setContentsDataJson);\n    } catch (error) {\n      var errorJson = JSON.stringify({\n        type: 'set-contents-error',\n        key: key,\n        data: { message: error.message, stack: error.stack } });\n        sendMessage(errorJson);\n\n        var setContentsDataJson = JSON.stringify({\n          type: 'set-contents',\n          key: key,\n          data: {} });\n          sendMessage(setContentsDataJson);\n    }\n  }\n\n  var setText = function (text) {\n    quill.setText(text);\n  }\n\n  var setPlaceholder = function (text) {\n    quill.root.dataset.placeholder = text;\n  }\n\n  var updateContents = function (delta) {\n    quill.updateContents(delta);\n  }\n\n  var dangerouslyPasteHTML = function (index, html) {\n    quill.clipboard.dangerouslyPasteHTML(index, html);\n  }\n\n  var setSelection = function (index, length = 0, source = 'api') {\n    quill.setSelection(index, length, source);\n  }\n\n  var getBounds = function (key, index, length = 0) {\n    var boundsData = quill.getBounds(index, length);\n    var getBoundsJson = JSON.stringify({\n      type: 'get-bounds',\n      key: key,\n      data: boundsData });\n      sendMessage(getBoundsJson);\n  }\n\n  var getSelection = function (key, focus = false) {\n    var getSelectionData = quill.getSelection(focus);\n    var getSelectionJson = JSON.stringify({\n      type: 'get-selection',\n      key: key,\n      data: getSelectionData \n    });\n    sendMessage(getSelectionJson);\n  }\n\n  const getFormat = function (key, index, length) {\n    const getFormatData = quill.getFormat(index, length);\n    const getFormatJson = JSON.stringify({\n      type: 'get-format',\n      key: key,\n      data: getFormatData\n    });\n    sendMessage(getFormatJson);\n  }\n\n  const getLeaf = function (key, index) {\n    const [leaf, offset] = quill.getLeaf(index);\n    const getLeafData = leaf ? {\n      offset,\n      text: leaf.text,\n      length: leaf.text.length,\n      index: quill.getIndex(leaf),\n      attributes: getAttributes(leaf?.parent?.domNode)\n    } : null\n    const getLeafJson = JSON.stringify({\n      type: 'get-leaf',\n      key: key,\n      data: getLeafData\n    });\n    sendMessage(getLeafJson);\n  }\n\n  const removeFormat = function (key, index, length) {\n    const removeFormatData = quill.removeFormat(index, length);\n    const removeFormatJson = JSON.stringify({\n      type: 'remove-format',\n      key: key,\n      data: removeFormatData\n    });\n    sendMessage(removeFormatJson);\n  }\n\n  const formatText = function (key, index, length, formats, source) {\n    const formatTextData = quill.formatText(index, length, formats, source);\n    const formatTextJson = JSON.stringify({\n      type: 'format-text',\n      key: key,\n      data: formatTextData\n    });\n    sendMessage(formatTextJson);\n  }\n\n\n  var getRequest = function (event) {\n    var msg = JSON.parse(event.data);\n    switch (msg.command) {\n      case 'format':\n        formatSelection(msg.name, msg.value);\n        break;\n      case 'focus':\n        quill.focus();\n        break;\n      case 'blur':\n        quill.blur();\n        break;\n      case 'enable':\n        quill.enable(msg.value);\n        break;\n      case 'hasFocus':\n        hasFocus(msg.key);\n        break;\n      case 'deleteText':\n        quill.deleteText(msg.index, msg.length);\n        break;\n      case 'getDimensions':\n        getDimensions(msg.key);\n        break;\n      case 'getContents':\n        getContents(msg.key, msg.index, msg.length);\n        break;\n      case 'getText':\n        getText(msg.key, msg.index, msg.length);\n        break;\n      case 'getBounds':\n        getBounds(msg.key, msg.index, msg.length);\n        break;\n      case 'getSelection':\n        getSelection(msg.key, msg.focus);\n        break;\n      case 'getFormat': \n        getFormat(msg.key, msg?.index, msg?.length);\n        break;\n      case 'getLeaf':\n        getLeaf(msg.key, msg.index);\n        break;\n      case 'setSelection':\n        setSelection(msg.index, msg.length, msg.source);\n        break;\n      case 'getHtml':\n        getHtml(msg.key);\n        break;\n      case 'getLength':\n        getLength(msg.key);\n        break;\n      case 'insertEmbed':\n        insertEmbed(msg.index, msg.type, msg.value);\n        break;\n      case 'insertText':\n        insertText(msg.index, msg.text, msg.formats);\n        break;\n      case 'setContents':\n        setContents(msg.key, msg.delta);\n        break;\n      case 'setText':\n        setText(msg.text);\n        break;\n      case 'setPlaceholder':\n        setPlaceholder(msg.text);\n        break;\n      case 'updateContents':\n        updateContents(msg.delta);\n        break;\n      case 'dangerouslyPasteHTML':\n        dangerouslyPasteHTML(msg.index, msg.html);\n        break;\n      case 'removeFormat':\n        removeFormat(msg.key, msg.index, msg.length);\n        break;\n      case 'formatText':\n        formatText(msg.key, msg.index, msg.length, msg.formats, msg.source);\n        break;\n      default:\n        break;\n    }\n  };\n\n  document.addEventListener(\"message\", getRequest, false);\n  window.addEventListener(\"message\", getRequest, false);\n\n  quill.on('editor-change', function(eventName, ...args) {\n    if (eventName === 'text-change') {\n      getSelectedFormats();\n    } else if (eventName === 'selection-change') {\n      var range = quill.getSelection();\n      if (range) {\n        getSelectedFormats();\n      }\n    }\n    var getEditorChange = JSON.stringify({\n      type: 'editor-change',\n      data: { eventName, args }\n    });\n    sendMessage(getEditorChange);\n\n    // Notify of dimensions update\n    const getDimensionsJson = JSON.stringify({\n      type: 'dimensions-change',\n      data: {\n        width: quill.root.scrollWidth,\n        height: quill.root.scrollHeight\n      }\n    });\n    sendMessage(getDimensionsJson);\n  });\n\n  quill.on('text-change', function(delta, oldDelta, source) {\n    var getTextChange = JSON.stringify({\n      type: 'text-change',\n      data: { delta, oldDelta, source }\n    });\n    sendMessage(getTextChange);\n\n    // Notify of HTML update\n    var html = quill.root.innerHTML;\n    var getHtmlJson = JSON.stringify({\n      type: 'html-change',\n      data: { html }\n    });\n    sendMessage(getHtmlJson);\n  });\n\n  quill.on('selection-change', function(range, oldRange, source) {\n    var getSelectionChange = JSON.stringify({\n      type: 'selection-change',\n      data: { range, oldRange, source } });\n      sendMessage(getSelectionChange)\n  });\n\n  quill.root.addEventListener('blur', function () {\n    sendMessage(JSON.stringify({type: 'blur'}));\n  });\n\n  quill.root.addEventListener('focus', function () {\n    sendMessage(JSON.stringify({type: 'focus'}));\n  });\n\n\n\n  // Report initial dimensions when the editor is instantiated\n  setTimeout(() => {\n    const getDimensionsJson = JSON.stringify({\n      type: 'dimensions-change',\n      data: {\n        width: quill.root.scrollWidth,\n        height: quill.root.scrollHeight\n      }\n    });\n    sendMessage(getDimensionsJson);\n  }, 250)\n\n})(document)\n</script>\n";
