{"version":3,"file":"ClassicWysiwyg-BKq8ExjM.mjs","names":[],"sources":["../src/components/form/ClassicWysiwyg.vue","../src/components/form/ClassicWysiwyg.vue"],"sourcesContent":["<template>\n  <div class=\"wysiwyg-editor\">\n    <div v-if=\"editor\" class=\"editor-menubar\">\n      <button\n        :title=\"t('Bold')\"\n        data-selenium=\"Bold\"\n        :class=\"{ 'is-active': editor.isActive('bold') }\"\n        @click=\"editor.chain().focus().toggleBold().run()\"\n      >\n        <FormatBoldIcon />\n      </button>\n      <button\n        :title=\"t('Italic')\"\n        data-selenium=\"Italic\"\n        :class=\"{ 'is-active': editor.isActive('italic') }\"\n        @click=\"editor.chain().focus().toggleItalic().run()\"\n      >\n        <FormatItalicIcon />\n      </button>\n      <button\n        :title=\"t('Underline')\"\n        data-selenium=\"Underline\"\n        :class=\"{ 'is-active': editor.isActive('underline') }\"\n        @click=\"editor.chain().focus().toggleUnderline().run()\"\n      >\n        <FormatUnderlineIcon />\n      </button>\n      <button\n        :title=\"t('Link')\"\n        data-selenium=\"link\"\n        :class=\"{ 'is-active': editor.isActive('link') }\"\n        @click=\"setLink\"\n      >\n        <LinkVariantIcon />\n      </button>\n      <button\n        :title=\"t('Delete link')\"\n        data-selenium=\"unlink\"\n        :disabled=\"!editor.isActive('link')\"\n        @click=\"editor.chain().focus().unsetLink().run()\"\n      >\n        <LinkVariantOffIcon />\n      </button>\n      <button\n        :title=\"t('Heading3')\"\n        data-selenium=\"Heading3\"\n        :class=\"{ 'is-active': editor.isActive('heading', { level: 3 }) }\"\n        @click=\"editor.chain().focus().toggleHeading({ level: 3 }).run()\"\n      >\n        H3\n      </button>\n      <button\n        :title=\"t('Heading4')\"\n        data-selenium=\"Heading4\"\n        :class=\"{ 'is-active': editor.isActive('heading', { level: 4 }) }\"\n        @click=\"editor.chain().focus().toggleHeading({ level: 4 }).run()\"\n      >\n        H4\n      </button>\n      <button\n        :title=\"t('Line break')\"\n        data-selenium=\"lineBreak\"\n        @click=\"editor.chain().focus().setHardBreak().run()\"\n      >\n        <KeyboardReturnIcon />\n      </button>\n\n      <button\n        :title=\"t('UnorderedList')\"\n        data-selenium=\"UnorderedList\"\n        :class=\"{ 'is-active': editor.isActive('bulletList') }\"\n        @click=\"editor.chain().focus().toggleBulletList().run()\"\n      >\n        <FormatListBulletedIcon />\n      </button>\n      <button\n        :title=\"t('List')\"\n        data-selenium=\"List\"\n        :class=\"{ 'is-active': editor.isActive('orderedList') }\"\n        @click=\"editor.chain().focus().toggleOrderedList().run()\"\n      >\n        <FormatListNumberedIcon />\n      </button>\n      <button\n        :title=\"t('Display HTML')\"\n        data-selenium=\"Display-HTML\"\n        class=\"html-button\"\n        :class=\"{ 'is-active': isHtmlDisplay }\"\n        @click=\"isHtmlDisplay = !isHtmlDisplay\"\n      >\n        HTML\n      </button>\n    </div>\n    <editor-content\n      v-if=\"!isHtmlDisplay\"\n      class=\"form-input html-wysiwyg-content\"\n      :class=\"{\n        'border border-danger': errorDescription,\n        disabled: isDisabled,\n      }\"\n      :editor=\"editor\"\n    />\n    <pre\n      v-else\n      class=\"form-input\"\n      :class=\"{\n        'border border-danger': errorDescription,\n        disabled: isDisabled,\n      }\"\n    ><code>{{ html }}</code></pre>\n  </div>\n</template>\n\n<script setup lang=\"ts\">\nimport FormatBoldIcon from \"vue-material-design-icons/FormatBold.vue\";\nimport FormatItalicIcon from \"vue-material-design-icons/FormatItalic.vue\";\nimport FormatUnderlineIcon from \"vue-material-design-icons/FormatUnderline.vue\";\nimport LinkVariantIcon from \"vue-material-design-icons/LinkVariant.vue\";\nimport LinkVariantOffIcon from \"vue-material-design-icons/LinkVariantOff.vue\";\nimport KeyboardReturnIcon from \"vue-material-design-icons/KeyboardReturn.vue\";\nimport FormatListBulletedIcon from \"vue-material-design-icons/FormatListBulleted.vue\";\nimport FormatListNumberedIcon from \"vue-material-design-icons/FormatListNumbered.vue\";\nimport { EditorContent, Editor } from \"@tiptap/vue-3\";\nimport StarterKit from \"@tiptap/starter-kit\";\nimport Underline from \"@tiptap/extension-underline\";\nimport TextStyle from \"@tiptap/extension-text-style\";\nimport Link from \"@tiptap/extension-link\";\nimport HardBreak from \"@tiptap/extension-hard-break\";\nimport { onMounted, onUnmounted, Ref, ref, watch } from \"vue\";\nimport { useI18n } from \"vue-i18n\";\n\n//Props \nconst props = defineProps({\n  content: { default: undefined, type: String },\n  errorDescription: { default: false, type: Boolean },\n  isDisabled: { default: false, type: Boolean },\n})\n\n//Emits\nconst emit = defineEmits([\"update:content\"]);\n\n//Data \nconst isHtmlDisplay = ref(false);\nconst html = ref(props.content);\nconst editor: Ref<Editor | null> = ref(null);\n\n//Composables\nconst { t } = useI18n();\n\n\n//Watch\nwatch(()=>props.content,() => {\n  if (props.content === html.value) {\n    return;\n  }\n  initContent();\n});\nwatch(()=>props.isDisabled,() => {\n  if (editor.value) {\n    editor.value.setOptions({\n      editable: true !== props.isDisabled,\n    });\n  }\n});\n\n\nonMounted(()=>{\n  editor.value = new Editor({\n    extensions: [\n      StarterKit,\n      Underline,\n      TextStyle,\n      Link.configure({\n        openOnClick: false,\n      }),\n      HardBreak,\n    ],\n    content: \"\",\n    editable: true !== props.isDisabled,\n    onUpdate: updateHtml,\n  });\n  initContent();\n})\n\nonUnmounted(()=>{\n  if (editor.value) {\n    editor.value.destroy();\n  }\n})\n\n//Methods\nfunction initContent(): void {\n  if (undefined !== props.content && editor.value && !editor.value.isFocused) {\n    editor.value.commands.setContent(props.content);\n    html.value = editor.value.getHTML();\n  }\n}\nfunction updateHtml(): void {\n  if (!editor.value) {return}\n  const plainText= editor.value.getText();\n  const regexHtml = /<(a|b|h3|h4|em|i|li|ol|p|strong|ul|u|br|span).*?/i\n  if(regexHtml.test(plainText)){\n    editor.value.commands.setContent(plainText);\n  }\n  html.value = editor.value.getHTML().trim();\n  const htmlHeart = html.value.substring(3, html.value.length - 4);\n  if (\n    html.value.startsWith(\"<p>\") &&\n    html.value.endsWith(\"</p>\") &&\n    !regexHtml.test(htmlHeart)\n  ) {\n    html.value = htmlHeart;\n  }\n  html.value = html.value.replaceAll(\"&nbsp;\", \" \");\n  emit(\"update:content\", html.value);\n}\nfunction setLink() {\n  if (!editor.value) {\n    return;\n  }\n  const previousUrl = editor.value.getAttributes(\"link\").href;\n  const url = window.prompt(\"URL\", previousUrl);\n  if (!url) {\n    return;\n  }\n  if (\"\" === url) {\n    editor.value.chain().focus().extendMarkRange(\"link\").unsetLink().run();\n    return;\n  }\n  editor.value\n    .chain()\n    .focus()\n    .extendMarkRange(\"link\")\n    .setLink({ href: url })\n    .run();\n}\n</script>\n<style lang=\"scss\">\n\n\n.octopus-app {\n  .wysiwyg-editor {\n    .form-input {\n      height: 200px;\n      display: flex;\n    }\n\n    pre {\n      background: var(--octopus-secondary);\n      margin: 0;\n    }\n\n    code {\n      display: block;\n      white-space: pre-wrap;\n      width: 0;\n      flex-grow: 1;\n      overflow: auto;\n    }\n\n    .editor-menubar {\n      display: flex;\n      padding: 0.2rem;\n      flex-wrap: wrap;\n\n      button {\n        width: 40px;\n        height: 40px;\n        background: var(--octopus-secondary);\n        border-width: 0;\n        border-radius: var(--octopus-border-radius);\n        margin: 0.2rem;\n        padding: 0;\n        font-size: 1.1rem;\n        font-weight: 600;\n\n        &:hover,\n        &.is-active {\n          background: var(--octopus-primary-transparent);\n        }\n      }\n\n      .html-button {\n        font-size: 12px;\n      }\n\n      svg {\n        width: 40px;\n        height: 40px;\n      }\n    }\n    /* stylelint-disable-next-line */\n    .ProseMirror {\n      width: 0;\n      flex-grow: 1;\n      overflow: auto;\n    }\n  }\n}\n</style>\n","<template>\n  <div class=\"wysiwyg-editor\">\n    <div v-if=\"editor\" class=\"editor-menubar\">\n      <button\n        :title=\"t('Bold')\"\n        data-selenium=\"Bold\"\n        :class=\"{ 'is-active': editor.isActive('bold') }\"\n        @click=\"editor.chain().focus().toggleBold().run()\"\n      >\n        <FormatBoldIcon />\n      </button>\n      <button\n        :title=\"t('Italic')\"\n        data-selenium=\"Italic\"\n        :class=\"{ 'is-active': editor.isActive('italic') }\"\n        @click=\"editor.chain().focus().toggleItalic().run()\"\n      >\n        <FormatItalicIcon />\n      </button>\n      <button\n        :title=\"t('Underline')\"\n        data-selenium=\"Underline\"\n        :class=\"{ 'is-active': editor.isActive('underline') }\"\n        @click=\"editor.chain().focus().toggleUnderline().run()\"\n      >\n        <FormatUnderlineIcon />\n      </button>\n      <button\n        :title=\"t('Link')\"\n        data-selenium=\"link\"\n        :class=\"{ 'is-active': editor.isActive('link') }\"\n        @click=\"setLink\"\n      >\n        <LinkVariantIcon />\n      </button>\n      <button\n        :title=\"t('Delete link')\"\n        data-selenium=\"unlink\"\n        :disabled=\"!editor.isActive('link')\"\n        @click=\"editor.chain().focus().unsetLink().run()\"\n      >\n        <LinkVariantOffIcon />\n      </button>\n      <button\n        :title=\"t('Heading3')\"\n        data-selenium=\"Heading3\"\n        :class=\"{ 'is-active': editor.isActive('heading', { level: 3 }) }\"\n        @click=\"editor.chain().focus().toggleHeading({ level: 3 }).run()\"\n      >\n        H3\n      </button>\n      <button\n        :title=\"t('Heading4')\"\n        data-selenium=\"Heading4\"\n        :class=\"{ 'is-active': editor.isActive('heading', { level: 4 }) }\"\n        @click=\"editor.chain().focus().toggleHeading({ level: 4 }).run()\"\n      >\n        H4\n      </button>\n      <button\n        :title=\"t('Line break')\"\n        data-selenium=\"lineBreak\"\n        @click=\"editor.chain().focus().setHardBreak().run()\"\n      >\n        <KeyboardReturnIcon />\n      </button>\n\n      <button\n        :title=\"t('UnorderedList')\"\n        data-selenium=\"UnorderedList\"\n        :class=\"{ 'is-active': editor.isActive('bulletList') }\"\n        @click=\"editor.chain().focus().toggleBulletList().run()\"\n      >\n        <FormatListBulletedIcon />\n      </button>\n      <button\n        :title=\"t('List')\"\n        data-selenium=\"List\"\n        :class=\"{ 'is-active': editor.isActive('orderedList') }\"\n        @click=\"editor.chain().focus().toggleOrderedList().run()\"\n      >\n        <FormatListNumberedIcon />\n      </button>\n      <button\n        :title=\"t('Display HTML')\"\n        data-selenium=\"Display-HTML\"\n        class=\"html-button\"\n        :class=\"{ 'is-active': isHtmlDisplay }\"\n        @click=\"isHtmlDisplay = !isHtmlDisplay\"\n      >\n        HTML\n      </button>\n    </div>\n    <editor-content\n      v-if=\"!isHtmlDisplay\"\n      class=\"form-input html-wysiwyg-content\"\n      :class=\"{\n        'border border-danger': errorDescription,\n        disabled: isDisabled,\n      }\"\n      :editor=\"editor\"\n    />\n    <pre\n      v-else\n      class=\"form-input\"\n      :class=\"{\n        'border border-danger': errorDescription,\n        disabled: isDisabled,\n      }\"\n    ><code>{{ html }}</code></pre>\n  </div>\n</template>\n\n<script setup lang=\"ts\">\nimport FormatBoldIcon from \"vue-material-design-icons/FormatBold.vue\";\nimport FormatItalicIcon from \"vue-material-design-icons/FormatItalic.vue\";\nimport FormatUnderlineIcon from \"vue-material-design-icons/FormatUnderline.vue\";\nimport LinkVariantIcon from \"vue-material-design-icons/LinkVariant.vue\";\nimport LinkVariantOffIcon from \"vue-material-design-icons/LinkVariantOff.vue\";\nimport KeyboardReturnIcon from \"vue-material-design-icons/KeyboardReturn.vue\";\nimport FormatListBulletedIcon from \"vue-material-design-icons/FormatListBulleted.vue\";\nimport FormatListNumberedIcon from \"vue-material-design-icons/FormatListNumbered.vue\";\nimport { EditorContent, Editor } from \"@tiptap/vue-3\";\nimport StarterKit from \"@tiptap/starter-kit\";\nimport Underline from \"@tiptap/extension-underline\";\nimport TextStyle from \"@tiptap/extension-text-style\";\nimport Link from \"@tiptap/extension-link\";\nimport HardBreak from \"@tiptap/extension-hard-break\";\nimport { onMounted, onUnmounted, Ref, ref, watch } from \"vue\";\nimport { useI18n } from \"vue-i18n\";\n\n//Props \nconst props = defineProps({\n  content: { default: undefined, type: String },\n  errorDescription: { default: false, type: Boolean },\n  isDisabled: { default: false, type: Boolean },\n})\n\n//Emits\nconst emit = defineEmits([\"update:content\"]);\n\n//Data \nconst isHtmlDisplay = ref(false);\nconst html = ref(props.content);\nconst editor: Ref<Editor | null> = ref(null);\n\n//Composables\nconst { t } = useI18n();\n\n\n//Watch\nwatch(()=>props.content,() => {\n  if (props.content === html.value) {\n    return;\n  }\n  initContent();\n});\nwatch(()=>props.isDisabled,() => {\n  if (editor.value) {\n    editor.value.setOptions({\n      editable: true !== props.isDisabled,\n    });\n  }\n});\n\n\nonMounted(()=>{\n  editor.value = new Editor({\n    extensions: [\n      StarterKit,\n      Underline,\n      TextStyle,\n      Link.configure({\n        openOnClick: false,\n      }),\n      HardBreak,\n    ],\n    content: \"\",\n    editable: true !== props.isDisabled,\n    onUpdate: updateHtml,\n  });\n  initContent();\n})\n\nonUnmounted(()=>{\n  if (editor.value) {\n    editor.value.destroy();\n  }\n})\n\n//Methods\nfunction initContent(): void {\n  if (undefined !== props.content && editor.value && !editor.value.isFocused) {\n    editor.value.commands.setContent(props.content);\n    html.value = editor.value.getHTML();\n  }\n}\nfunction updateHtml(): void {\n  if (!editor.value) {return}\n  const plainText= editor.value.getText();\n  const regexHtml = /<(a|b|h3|h4|em|i|li|ol|p|strong|ul|u|br|span).*?/i\n  if(regexHtml.test(plainText)){\n    editor.value.commands.setContent(plainText);\n  }\n  html.value = editor.value.getHTML().trim();\n  const htmlHeart = html.value.substring(3, html.value.length - 4);\n  if (\n    html.value.startsWith(\"<p>\") &&\n    html.value.endsWith(\"</p>\") &&\n    !regexHtml.test(htmlHeart)\n  ) {\n    html.value = htmlHeart;\n  }\n  html.value = html.value.replaceAll(\"&nbsp;\", \" \");\n  emit(\"update:content\", html.value);\n}\nfunction setLink() {\n  if (!editor.value) {\n    return;\n  }\n  const previousUrl = editor.value.getAttributes(\"link\").href;\n  const url = window.prompt(\"URL\", previousUrl);\n  if (!url) {\n    return;\n  }\n  if (\"\" === url) {\n    editor.value.chain().focus().extendMarkRange(\"link\").unsetLink().run();\n    return;\n  }\n  editor.value\n    .chain()\n    .focus()\n    .extendMarkRange(\"link\")\n    .setLink({ href: url })\n    .run();\n}\n</script>\n<style lang=\"scss\">\n\n\n.octopus-app {\n  .wysiwyg-editor {\n    .form-input {\n      height: 200px;\n      display: flex;\n    }\n\n    pre {\n      background: var(--octopus-secondary);\n      margin: 0;\n    }\n\n    code {\n      display: block;\n      white-space: pre-wrap;\n      width: 0;\n      flex-grow: 1;\n      overflow: auto;\n    }\n\n    .editor-menubar {\n      display: flex;\n      padding: 0.2rem;\n      flex-wrap: wrap;\n\n      button {\n        width: 40px;\n        height: 40px;\n        background: var(--octopus-secondary);\n        border-width: 0;\n        border-radius: var(--octopus-border-radius);\n        margin: 0.2rem;\n        padding: 0;\n        font-size: 1.1rem;\n        font-weight: 600;\n\n        &:hover,\n        &.is-active {\n          background: var(--octopus-primary-transparent);\n        }\n      }\n\n      .html-button {\n        font-size: 12px;\n      }\n\n      svg {\n        width: 40px;\n        height: 40px;\n      }\n    }\n    /* stylelint-disable-next-line */\n    .ProseMirror {\n      width: 0;\n      flex-grow: 1;\n      overflow: auto;\n    }\n  }\n}\n</style>\n"],"mappings":"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"}