diff --git a/.devcontainer/devcontainer.json b/.devcontainer/devcontainer.json
index 706ff2ad2f97b31d17646d009169ff23102d8c4a..5f66164ac1e2a26ba92fc6d0bfa271d2f173deed 100644
--- a/.devcontainer/devcontainer.json
+++ b/.devcontainer/devcontainer.json
@@ -25,19 +25,20 @@
     }
   },
   "extensions": [
-    "mikestead.dotenv",
+    "bierner.lit-html",
     "bmewburn.vscode-intelephense-client",
-    "streetsidesoftware.code-spell-checker",
-    "naumovs.color-highlight",
-    "heybourn.headwind",
-    "wayou.vscode-todo-highlight",
-    "esbenp.prettier-vscode",
     "bradlc.vscode-tailwindcss",
-    "jamesbirtles.svelte-vscode",
+    "breezelin.phpstan",
     "dbaeumer.vscode-eslint",
-    "stylelint.vscode-stylelint",
     "eamodio.gitlens",
-    "breezelin.phpstan",
-    "kasik96.latte"
+    "esbenp.prettier-vscode",
+    "heybourn.headwind",
+    "jamesbirtles.svelte-vscode",
+    "kasik96.latte",
+    "mikestead.dotenv",
+    "naumovs.color-highlight",
+    "streetsidesoftware.code-spell-checker",
+    "stylelint.vscode-stylelint",
+    "wayou.vscode-todo-highlight"
   ]
 }
diff --git a/app/Helpers/form_helper.php b/app/Helpers/form_helper.php
index 69edf75e8dc9668c4a0529bfe08b85eb90b18bc7..e80bfd40fc0cb41b5af05ebeb46836b8cf451eec 100644
--- a/app/Helpers/form_helper.php
+++ b/app/Helpers/form_helper.php
@@ -157,17 +157,9 @@ if (! function_exists('form_multiselect')) {
     ): string {
         $defaultExtra = [
             'data-class' => $customExtra['class'],
-            'data-select-text' => lang('Common.forms.multiSelect.selectText'),
-            'data-loading-text' => lang('Common.forms.multiSelect.loadingText'),
-            'data-no-results-text' => lang('Common.forms.multiSelect.noResultsText'),
-            'data-no-choices-text' => lang('Common.forms.multiSelect.noChoicesText'),
-            'data-max-item-text' => lang('Common.forms.multiSelect.maxItemText'),
+            'multiple' => 'multiple',
         ];
-        $extra = stringify_attributes(array_merge($defaultExtra, $customExtra));
-
-        if (stripos($extra, 'multiple') === false) {
-            $extra .= ' multiple="multiple"';
-        }
+        $extra = array_merge($defaultExtra, $customExtra);
 
         return form_dropdown($name, $options, $selected, $extra);
     }
@@ -179,43 +171,31 @@ if (! function_exists('form_dropdown')) {
     /**
      * Drop-down Menu (based on html select tag)
      *
-     * @param array<string, mixed>|string $data
-     * @param array<string, string> $options
-     * @param string|string[] $selected
-     * @param array<string, mixed>|string $extra
+     * @param array<string, mixed> $options
+     * @param string[] $selected
+     * @param array<string, mixed> $customExtra
      */
     function form_dropdown(
-        string | array $data = '',
+        string $name = '',
         array $options = [],
-        string | array $selected = [],
-        string | array $extra = ''
+        array $selected = [],
+        array $customExtra = []
     ): string {
-        $defaults = [];
-        if (is_array($data)) {
-            if (isset($data['selected'])) {
-                $selected = $data['selected'];
-                unset($data['selected']); // select tags don't have a selected attribute
-            }
-            if (isset($data['options'])) {
-                $options = $data['options'];
-                unset($data['options']); // select tags don't use an options attribute
-            }
-        } else {
-            $defaults = [
-                'name' => $data,
-            ];
-        }
-
-        if (! is_array($selected)) {
-            $selected = [$selected];
-        }
-        if (! is_array($options)) {
-            $options = [$options];
-        }
+        $defaultExtra = [
+            'data-select-text' => lang('Common.forms.multiSelect.selectText'),
+            'data-loading-text' => lang('Common.forms.multiSelect.loadingText'),
+            'data-no-results-text' => lang('Common.forms.multiSelect.noResultsText'),
+            'data-no-choices-text' => lang('Common.forms.multiSelect.noChoicesText'),
+            'data-max-item-text' => lang('Common.forms.multiSelect.maxItemText'),
+        ];
+        $extra = array_merge($defaultExtra, $customExtra);
+        $defaults = [
+            'name' => $name,
+        ];
 
         // standardize selected as strings, like  the option keys will be.
         foreach ($selected as $key => $item) {
-            $selected[$key] = (string) $item;
+            $selected[$key] = $item;
         }
 
         $placeholderOption = '';
@@ -230,11 +210,10 @@ if (! function_exists('form_dropdown')) {
 
         $extra = stringify_attributes($extra);
         $multiple = (count($selected) > 1 && stripos($extra, 'multiple') === false) ? ' multiple="multiple"' : '';
-        $form = '<select ' . rtrim(parse_form_attributes($data, $defaults)) . $extra . $multiple . ">\n";
+        $form = '<select ' . rtrim(parse_form_attributes($name, $defaults)) . $extra . $multiple . ">\n";
         $form .= $placeholderOption;
 
         foreach ($options as $key => $val) {
-            $key = (string) $key;
             if (is_array($val)) {
                 if ($val === []) {
                     continue;
@@ -257,4 +236,80 @@ if (! function_exists('form_dropdown')) {
     }
 }
 
+//--------------------------------------------------------------------
+
+if (! function_exists('form_editor')) {
+    /**
+     * Markdown editor
+     *
+     * @param array<string, mixed> $data
+     * @param array<string, mixed>|string $extra
+     */
+    function form_markdown_editor(array $data = [], string $value = '', string | array $extra = ''): string
+    {
+        $editorClass = 'w-full flex flex-col bg-white border border-gray-500 focus-within:ring-1 focus-within:ring-blue-600';
+        if (array_key_exists('class', $data) && $data['class'] !== '') {
+            $editorClass .= ' ' . $data['class'];
+            unset($data['class']);
+        }
+
+        $data['class'] = 'border-none outline-none focus:border-none focus:outline-none w-full h-full';
+
+        return '<div class="' . $editorClass . '">' .
+            '<header class="sticky top-0 z-20 flex flex-wrap justify-between bg-white border-b border-gray-500">' .
+                '<markdown-write-preview for="' . $data['id'] . '" class="relative inline-flex h-8">' .
+                    '<button type="button" slot="write" class="px-2 font-semibold focus:outline-none focus:ring-inset focus:ring-2 focus:ring-pine-600">' . lang(
+                        'Common.forms.editor.write'
+                    ) . '</button>' .
+                    '<button type="button" slot="preview" class="px-2 focus:outline-none focus:ring-inset focus:ring-2 focus:ring-pine-600">' . lang(
+                        'Common.forms.editor.preview'
+                    ) . '</button>' .
+                '</markdown-write-preview>' .
+                '<markdown-toolbar for="' . $data['id'] . '" class="flex gap-4 px-2 py-1">' .
+                    '<div class="inline-flex text-2xl gap-x-1">' .
+                        '<md-header class="opacity-50 hover:opacity-100 focus:outline-none focus:ring-2 focus:opacity-100 focus:ring-pine-600">' . icon(
+                            'heading'
+                        ) . '</md-header>' .
+                        '<md-bold class="opacity-50 hover:opacity-100 focus:outline-none focus:ring-2 focus:opacity-100 focus:ring-pine-600">' . icon(
+                            'bold'
+                        ) . '</md-bold>' .
+                        '<md-italic class="opacity-50 hover:opacity-100 focus:outline-none focus:ring-2 focus:opacity-100 focus:ring-pine-600">' . icon(
+                            'italic'
+                        ) . '</md-italic>' .
+                    '</div>' .
+                    '<div class="inline-flex text-2xl gap-x-1">' .
+                        '<md-unordered-list class="opacity-50 hover:opacity-100 focus:outline-none focus:ring-2 focus:opacity-100 focus:ring-pine-600">' . icon(
+                            'list-unordered'
+                        ) . '</md-unordered-list>' .
+                        '<md-ordered-list class="opacity-50 hover:opacity-100 focus:outline-none focus:ring-2 focus:opacity-100 focus:ring-pine-600">' . icon(
+                            'list-ordered'
+                        ) . '</md-ordered-list>' .
+                    '</div>' .
+                    '<div class="inline-flex text-2xl gap-x-1">' .
+                        '<md-quote class="opacity-50 hover:opacity-100 focus:outline-none focus:ring-2 focus:opacity-100 focus:ring-pine-600">' . icon(
+                            'quote'
+                        ) . '</md-quote>' .
+                        '<md-link class="opacity-50 hover:opacity-100 focus:outline-none focus:ring-2 focus:opacity-100 focus:ring-pine-600">' . icon(
+                            'link'
+                        ) . '</md-link>' .
+                        '<md-image class="opacity-50 hover:opacity-100 focus:outline-none focus:ring-2 focus:opacity-100 focus:ring-pine-600">' . icon(
+                            'image-add'
+                        ) . '</md-image>' .
+                    '</div>' .
+                '</markdown-toolbar>' .
+            '</header>' .
+            '<div class="relative">' .
+                form_textarea($data, $value, $extra) .
+                '<markdown-preview for="' . $data['id'] . '" class="absolute top-0 left-0 hidden w-full h-full p-2 overflow-y-auto prose bg-gray-50" showClass="bg-white"></markdown-preview>' .
+            '</div>' .
+            '<footer class="flex px-2 py-1 bg-gray-100 border-t">' .
+                '<a href="https://commonmark.org/help/" class="inline-flex items-center text-xs font-semibold text-gray-500 hover:text-gray-700" target="_blank" rel="noopener noreferrer">' . icon(
+                    'markdown',
+                    'mr-1 text-lg text-gray-400'
+                ) . lang('Common.forms.editor.help') . '</a>' .
+            '</footer>' .
+        '</div>';
+    }
+}
+
 // ------------------------------------------------------------------------
diff --git a/app/Language/en/Common.php b/app/Language/en/Common.php
index b406878cc8879e70ccb35efa9c7fa6c4567d3f20..0bf26a681f480810469da0090d0e655ea13eba95 100644
--- a/app/Language/en/Common.php
+++ b/app/Language/en/Common.php
@@ -24,6 +24,11 @@ return [
     'pageInfo' => 'Page {currentPage} out of {pageCount}',
     'go_back' => 'Go back',
     'forms' => [
+        'editor' => [
+            'write' => 'Write',
+            'preview' => 'Preview',
+            'help' => 'Powered by markdown',
+        ],
         'multiSelect' => [
             'selectText' => 'Press to select',
             'loadingText' => 'Loading...',
diff --git a/app/Language/fr/Common.php b/app/Language/fr/Common.php
index 668a160735ef9c711243be337fde46577b95ba20..a3415467ce622863f0b9d1c7e3e7680a7600e59a 100644
--- a/app/Language/fr/Common.php
+++ b/app/Language/fr/Common.php
@@ -24,6 +24,11 @@ return [
     'pageInfo' => 'Page {currentPage} sur {pageCount}',
     'go_back' => 'Retour en arrière',
     'forms' => [
+        'editor' => [
+            'write' => 'Écrire',
+            'preview' => 'Aperçu',
+            'help' => 'Propulsé par markdown',
+        ],
         'multiSelect' => [
             'selectText' => 'Cliquez pour selectionner',
             'loadingText' => 'Chargement...',
diff --git a/app/Resources/icons/bold.svg b/app/Resources/icons/bold.svg
new file mode 100644
index 0000000000000000000000000000000000000000..b5fb594748a75f3d6257f2c099f5b4614463661e
--- /dev/null
+++ b/app/Resources/icons/bold.svg
@@ -0,0 +1,6 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24">
+    <g>
+        <path fill="none" d="M0 0h24v24H0z"/>
+        <path d="M8 11h4.5a2.5 2.5 0 1 0 0-5H8v5zm10 4.5a4.5 4.5 0 0 1-4.5 4.5H6V4h6.5a4.5 4.5 0 0 1 3.256 7.606A4.498 4.498 0 0 1 18 15.5zM8 13v5h5.5a2.5 2.5 0 1 0 0-5H8z"/>
+    </g>
+</svg>
diff --git a/app/Resources/icons/heading.svg b/app/Resources/icons/heading.svg
new file mode 100644
index 0000000000000000000000000000000000000000..0ae177f1f637d7eafc637ce50ef0107f80a246bb
--- /dev/null
+++ b/app/Resources/icons/heading.svg
@@ -0,0 +1,6 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24">
+    <g>
+        <path fill="none" d="M0 0h24v24H0z"/>
+        <path d="M17 11V4h2v17h-2v-8H7v8H5V4h2v7z"/>
+    </g>
+</svg>
diff --git a/app/Resources/icons/image-add.svg b/app/Resources/icons/image-add.svg
new file mode 100644
index 0000000000000000000000000000000000000000..dca9aa8bce262d7d5ff7046f0d2c511e2e4216d3
--- /dev/null
+++ b/app/Resources/icons/image-add.svg
@@ -0,0 +1,6 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24">
+    <g>
+        <path fill="none" d="M0 0h24v24H0z"/>
+        <path d="M21 15v3h3v2h-3v3h-2v-3h-3v-2h3v-3h2zm.008-12c.548 0 .992.445.992.993v9.349A5.99 5.99 0 0 0 20 13V5H4l.001 14 9.292-9.293a.999.999 0 0 1 1.32-.084l.093.085 3.546 3.55a6.003 6.003 0 0 0-3.91 7.743L2.992 21A.993.993 0 0 1 2 20.007V3.993A1 1 0 0 1 2.992 3h18.016zM8 7a2 2 0 1 1 0 4 2 2 0 0 1 0-4z"/>
+    </g>
+</svg>
diff --git a/app/Resources/icons/italic.svg b/app/Resources/icons/italic.svg
new file mode 100644
index 0000000000000000000000000000000000000000..4203e07e5fa7e460447cc06128c00855d1896f3f
--- /dev/null
+++ b/app/Resources/icons/italic.svg
@@ -0,0 +1,6 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24">
+    <g>
+        <path fill="none" d="M0 0h24v24H0z"/>
+        <path d="M15 20H7v-2h2.927l2.116-12H9V4h8v2h-2.927l-2.116 12H15z"/>
+    </g>
+</svg>
diff --git a/app/Resources/icons/list-ordered.svg b/app/Resources/icons/list-ordered.svg
new file mode 100644
index 0000000000000000000000000000000000000000..be282082a3a1abdf9df9e3855455ed551c96b6f7
--- /dev/null
+++ b/app/Resources/icons/list-ordered.svg
@@ -0,0 +1,6 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24">
+    <g>
+        <path fill="none" d="M0 0h24v24H0z"/>
+        <path d="M8 4h13v2H8V4zM5 3v3h1v1H3V6h1V4H3V3h2zM3 14v-2.5h2V11H3v-1h3v2.5H4v.5h2v1H3zm2 5.5H3v-1h2V18H3v-1h3v4H3v-1h2v-.5zM8 11h13v2H8v-2zm0 7h13v2H8v-2z"/>
+    </g>
+</svg>
diff --git a/app/Resources/icons/list-unordered.svg b/app/Resources/icons/list-unordered.svg
new file mode 100644
index 0000000000000000000000000000000000000000..41809a3a1713ae6f3b1b6a1fe42fc6f9b74eea03
--- /dev/null
+++ b/app/Resources/icons/list-unordered.svg
@@ -0,0 +1,6 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24">
+    <g>
+        <path fill="none" d="M0 0h24v24H0z"/>
+        <path d="M8 4h13v2H8V4zM4.5 6.5a1.5 1.5 0 1 1 0-3 1.5 1.5 0 0 1 0 3zm0 7a1.5 1.5 0 1 1 0-3 1.5 1.5 0 0 1 0 3zm0 6.9a1.5 1.5 0 1 1 0-3 1.5 1.5 0 0 1 0 3zM8 11h13v2H8v-2zm0 7h13v2H8v-2z"/>
+    </g>
+</svg>
diff --git a/app/Resources/icons/markdown.svg b/app/Resources/icons/markdown.svg
new file mode 100644
index 0000000000000000000000000000000000000000..ab3edd2bf5f008fffcb373ef122f6914b75c082f
--- /dev/null
+++ b/app/Resources/icons/markdown.svg
@@ -0,0 +1,6 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24">
+    <g>
+        <path fill="none" d="M0 0h24v24H0z"/>
+        <path d="M3 3h18a1 1 0 0 1 1 1v16a1 1 0 0 1-1 1H3a1 1 0 0 1-1-1V4a1 1 0 0 1 1-1zm4 12.5v-4l2 2 2-2v4h2v-7h-2l-2 2-2-2H5v7h2zm11-3v-4h-2v4h-2l3 3 3-3h-2z"/>
+    </g>
+</svg>
diff --git a/app/Resources/icons/quote.svg b/app/Resources/icons/quote.svg
new file mode 100644
index 0000000000000000000000000000000000000000..a83df6c477ac268b3dbcaf117c4a4e097fa169e3
--- /dev/null
+++ b/app/Resources/icons/quote.svg
@@ -0,0 +1,6 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24">
+    <g>
+        <path fill="none" d="M0 0h24v24H0z"/>
+        <path d="M4.583 17.321C3.553 16.227 3 15 3 13.011c0-3.5 2.457-6.637 6.03-8.188l.893 1.378c-3.335 1.804-3.987 4.145-4.247 5.621.537-.278 1.24-.375 1.929-.311 1.804.167 3.226 1.648 3.226 3.489a3.5 3.5 0 0 1-3.5 3.5c-1.073 0-2.099-.49-2.748-1.179zm10 0C13.553 16.227 13 15 13 13.011c0-3.5 2.457-6.637 6.03-8.188l.893 1.378c-3.335 1.804-3.987 4.145-4.247 5.621.537-.278 1.24-.375 1.929-.311 1.804.167 3.226 1.648 3.226 3.489a3.5 3.5 0 0 1-3.5 3.5c-1.073 0-2.099-.49-2.748-1.179z"/>
+    </g>
+</svg>
diff --git a/app/Resources/js/admin.ts b/app/Resources/js/admin.ts
index 6e291aa3e15b4c4684074125b3f42e5325ac4822..79f83272161367a9b5ff9139995b35bf47964eaf 100644
--- a/app/Resources/js/admin.ts
+++ b/app/Resources/js/admin.ts
@@ -1,8 +1,10 @@
+import "@github/markdown-toolbar-element";
 import ClientTimezone from "./modules/ClientTimezone";
 import Clipboard from "./modules/Clipboard";
 import DateTimePicker from "./modules/DateTimePicker";
 import Dropdown from "./modules/Dropdown";
-import MarkdownEditor from "./modules/MarkdownEditor";
+import "./modules/markdown-preview";
+import "./modules/markdown-write-preview";
 import MultiSelect from "./modules/MultiSelect";
 import PublishMessageWarning from "./modules/PublishMessageWarning";
 import Select from "./modules/Select";
@@ -15,7 +17,6 @@ import Tooltip from "./modules/Tooltip";
 
 Dropdown();
 Tooltip();
-MarkdownEditor();
 Select();
 MultiSelect();
 Slugify();
diff --git a/app/Resources/js/modules/MarkdownEditor.ts b/app/Resources/js/modules/MarkdownEditor.ts
deleted file mode 100644
index 07dfe266ce762b1cc61a22da29fe1cac4d7ec9a0..0000000000000000000000000000000000000000
--- a/app/Resources/js/modules/MarkdownEditor.ts
+++ /dev/null
@@ -1,159 +0,0 @@
-import { exampleSetup } from "prosemirror-example-setup";
-import "prosemirror-example-setup/style/style.css";
-import {
-  defaultMarkdownParser,
-  defaultMarkdownSerializer,
-  schema,
-} from "prosemirror-markdown";
-import "prosemirror-menu/style/menu.css";
-import { EditorState } from "prosemirror-state";
-import { EditorView } from "prosemirror-view";
-import "prosemirror-view/style/prosemirror.css";
-
-class MarkdownView {
-  textarea: HTMLTextAreaElement;
-
-  constructor(target: HTMLTextAreaElement) {
-    this.textarea = target;
-    this.textarea.classList.add("w-full", "h-full");
-  }
-
-  content() {
-    return this.textarea.innerHTML;
-  }
-  focus() {
-    this.textarea.focus();
-  }
-  show() {
-    this.textarea.classList.remove("hidden");
-  }
-  hide() {
-    this.textarea.classList.add("hidden");
-  }
-}
-
-class ProseMirrorView {
-  editorContainer: HTMLDivElement;
-  view: EditorView;
-
-  constructor(target: HTMLTextAreaElement, content: string) {
-    this.editorContainer = document.createElement("div");
-    this.editorContainer.classList.add("bg-white", "border");
-    this.editorContainer.style.minHeight = "200px";
-    const editor = target.parentNode?.insertBefore(
-      this.editorContainer,
-      target.nextSibling
-    );
-
-    this.view = new EditorView(editor, {
-      state: EditorState.create({
-        doc: defaultMarkdownParser.parse(content),
-        plugins: exampleSetup({ schema }),
-      }),
-      dispatchTransaction: (transaction) => {
-        const newState = this.view.state.apply(transaction);
-        this.view.updateState(newState);
-
-        if (transaction.docChanged) {
-          target.innerHTML = this.content();
-        }
-      },
-      attributes: {
-        class: "prose-sm px-3 py-2 overflow-y-auto focus:ring",
-        style: "min-height: 200px; max-height: 500px",
-      },
-    });
-  }
-
-  content(): string {
-    return defaultMarkdownSerializer.serialize(this.view.state.doc) || "";
-  }
-  focus() {
-    this.view.focus();
-  }
-  show() {
-    this.editorContainer.classList.remove("hidden");
-  }
-  hide() {
-    this.editorContainer.classList.add("hidden");
-  }
-}
-
-const MarkdownEditor = (): void => {
-  const targets: NodeListOf<HTMLTextAreaElement> = document.querySelectorAll(
-    "textarea[data-editor='markdown']"
-  );
-  const activeClass = "font-semibold";
-
-  for (let i = 0; i < targets.length; i++) {
-    const target = targets[i];
-
-    const wysiwygBtn = document.createElement("button");
-    wysiwygBtn.classList.add(
-      activeClass,
-      "py-1",
-      "px-2",
-      "bg-white",
-      "border",
-      "text-xs",
-      "outline-none",
-      "focus:ring"
-    );
-    wysiwygBtn.setAttribute("type", "button");
-    wysiwygBtn.innerHTML = "Wysiwyg";
-    const markdownBtn = document.createElement("button");
-    markdownBtn.classList.add(
-      "py-1",
-      "px-2",
-      "bg-white",
-      "border",
-      "text-xs",
-      "outline-none",
-      "focus:ring"
-    );
-    markdownBtn.setAttribute("type", "button");
-    markdownBtn.innerHTML = "Markdown";
-
-    const viewButtons = document.createElement("div");
-    viewButtons.appendChild(wysiwygBtn);
-    viewButtons.appendChild(markdownBtn);
-    viewButtons.classList.add(
-      "inline-flex",
-      "absolute",
-      "top-0",
-      "right-0",
-      "-mt-6"
-    );
-
-    const markdownEditorContainer = document.createElement("div");
-    markdownEditorContainer.classList.add("relative");
-    markdownEditorContainer.style.minHeight = "200px";
-    target.parentNode?.appendChild(markdownEditorContainer);
-    markdownEditorContainer.appendChild(target);
-
-    // show WYSIWYG editor by default
-    target.classList.add("hidden");
-    const markdownView = new MarkdownView(target);
-    const wysiwygView = new ProseMirrorView(target, markdownView.content());
-
-    markdownEditorContainer.appendChild(viewButtons);
-
-    markdownBtn.addEventListener("click", () => {
-      if (markdownBtn.classList.contains(activeClass)) return;
-      markdownBtn.classList.add(activeClass);
-      wysiwygBtn.classList.remove(activeClass);
-      wysiwygView.hide();
-      markdownView.show();
-    });
-
-    wysiwygBtn.addEventListener("click", () => {
-      if (wysiwygBtn.classList.contains(activeClass)) return;
-      wysiwygBtn.classList.add(activeClass);
-      markdownBtn.classList.remove(activeClass);
-      markdownView.hide();
-      wysiwygView.show();
-    });
-  }
-};
-
-export default MarkdownEditor;
diff --git a/app/Resources/js/modules/MultiSelect.ts b/app/Resources/js/modules/MultiSelect.ts
index 2a5927fe9e27a61776d9b0a06a22123c401f6279..34a125922afe488f9c8ca2f1e97d969115c8838b 100644
--- a/app/Resources/js/modules/MultiSelect.ts
+++ b/app/Resources/js/modules/MultiSelect.ts
@@ -10,8 +10,11 @@ const MultiSelect = (): void => {
 
     new Choices(multiSelect, {
       maxItemCount: parseInt(multiSelect.dataset.maxItemCount || "-1"),
+      loadingText: multiSelect.dataset.loadingText,
       itemSelectText: multiSelect.dataset.selectText,
       maxItemText: multiSelect.dataset.maxItemText,
+      noChoicesText: multiSelect.dataset.noChoicesText,
+      noResultsText: multiSelect.dataset.noResultsText,
       removeItemButton: true,
       classNames: {
         containerOuter: "choices",
diff --git a/app/Resources/js/modules/Select.ts b/app/Resources/js/modules/Select.ts
index e776b14e3b0138d4bec81254519f1d5a067bd095..d3c5dce4ce6e9eeaa20c7dd54ea06cf6f7a1b3e1 100644
--- a/app/Resources/js/modules/Select.ts
+++ b/app/Resources/js/modules/Select.ts
@@ -10,6 +10,11 @@ const Select = (): void => {
     const select = selects[i];
 
     new Choices(select, {
+      loadingText: select.dataset.loadingText,
+      itemSelectText: select.dataset.selectText,
+      maxItemText: select.dataset.maxItemText,
+      noChoicesText: select.dataset.noChoicesText,
+      noResultsText: select.dataset.noResultsText,
       classNames: {
         containerOuter: "choices",
         containerInner: "choices__inner",
diff --git a/app/Resources/js/modules/markdown-preview.ts b/app/Resources/js/modules/markdown-preview.ts
new file mode 100644
index 0000000000000000000000000000000000000000..f93b5dc5decaf10300d25d099d97bb26263046f7
--- /dev/null
+++ b/app/Resources/js/modules/markdown-preview.ts
@@ -0,0 +1,60 @@
+import MarkdownToolbarElement from "@github/markdown-toolbar-element";
+import { html, LitElement, TemplateResult } from "lit";
+import { customElement, property } from "lit/decorators.js";
+import { unsafeHTML } from "lit/directives/unsafe-html.js";
+import marked from "marked";
+
+@customElement("markdown-preview")
+export class MarkdownPreview extends LitElement {
+  @property()
+  for!: string;
+
+  @property()
+  _textarea!: HTMLTextAreaElement;
+
+  @property()
+  _markdownToolbar!: MarkdownToolbarElement;
+
+  @property()
+  _show = false;
+
+  connectedCallback(): void {
+    super.connectedCallback();
+
+    this._textarea = document.getElementById(this.for) as HTMLTextAreaElement;
+    this._markdownToolbar = document.querySelector(
+      `markdown-toolbar[for=${this.for}]`
+    ) as MarkdownToolbarElement;
+  }
+
+  hide(): void {
+    this._show = false;
+    this.classList.add("hidden");
+    this._markdownToolbar.classList.remove("hidden");
+  }
+
+  show(): void {
+    this._show = true;
+    this.classList.remove("hidden");
+    this._markdownToolbar.classList.add("hidden");
+  }
+
+  markdownToHtml(): string {
+    const renderer = new marked.Renderer();
+    renderer.link = function () {
+      // eslint-disable-next-line prefer-rest-params
+      const link = marked.Renderer.prototype.link.apply(this, arguments as any);
+      return link.replace("<a", "<a target='_blank' rel='noopener noreferrer'");
+    };
+
+    return marked(this._textarea.value, {
+      renderer: renderer,
+    });
+  }
+
+  render(): TemplateResult<1> {
+    return html`${this._show
+      ? html`${unsafeHTML(this.markdownToHtml())}`
+      : html``}`;
+  }
+}
diff --git a/app/Resources/js/modules/markdown-write-preview.ts b/app/Resources/js/modules/markdown-write-preview.ts
new file mode 100644
index 0000000000000000000000000000000000000000..7c8947c3e7e8b81167dd4b1fc56a36690850fc2e
--- /dev/null
+++ b/app/Resources/js/modules/markdown-write-preview.ts
@@ -0,0 +1,47 @@
+import { html, LitElement, TemplateResult } from "lit";
+import { customElement, property, queryAssignedNodes } from "lit/decorators.js";
+import { MarkdownPreview } from "./markdown-preview";
+
+@customElement("markdown-write-preview")
+export class MarkdownWritePreview extends LitElement {
+  @property()
+  for!: string;
+
+  @property()
+  _textarea: HTMLTextAreaElement | null = null;
+
+  @property()
+  _markdownPreview!: MarkdownPreview;
+
+  @queryAssignedNodes("write", true)
+  _write!: NodeListOf<HTMLButtonElement>;
+
+  @queryAssignedNodes("preview", true)
+  _preview!: NodeListOf<HTMLButtonElement>;
+
+  connectedCallback(): void {
+    super.connectedCallback();
+
+    this._textarea = document.getElementById(this.for) as HTMLTextAreaElement;
+    this._markdownPreview = document.querySelector(
+      `markdown-preview[for=${this.for}]`
+    ) as MarkdownPreview;
+  }
+
+  write(): void {
+    this._markdownPreview.hide();
+    this._write[0].classList.add("font-semibold");
+    this._preview[0].classList.remove("font-semibold");
+  }
+
+  preview(): void {
+    this._markdownPreview.show();
+    this._preview[0].classList.add("font-semibold");
+    this._write[0].classList.remove("font-semibold");
+  }
+
+  render(): TemplateResult<1> {
+    return html`<slot name="write" @click="${this.write}"></slot>
+      <slot name="preview" @click="${this.preview}"></slot>`;
+  }
+}
diff --git a/app/Resources/types/js/admin.d.ts b/app/Resources/types/js/admin.d.ts
index cb0ff5c3b541f646105198ee23ac0fc3d805023e..4efc2a2c3d7fde1cd74eba27d254dee989845811 100644
--- a/app/Resources/types/js/admin.d.ts
+++ b/app/Resources/types/js/admin.d.ts
@@ -1 +1,3 @@
-export {};
+import "@github/markdown-toolbar-element";
+import "./modules/markdown-preview";
+import "./modules/markdown-write-preview";
diff --git a/app/Resources/types/js/main.d.ts b/app/Resources/types/js/main.d.ts
deleted file mode 100644
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..0000000000000000000000000000000000000000
diff --git a/app/Resources/types/js/modules/MarkdownEditor.d.ts b/app/Resources/types/js/modules/MarkdownEditor.d.ts
deleted file mode 100644
index f8d018b6572c81509374961c1def5aed970dc5aa..0000000000000000000000000000000000000000
--- a/app/Resources/types/js/modules/MarkdownEditor.d.ts
+++ /dev/null
@@ -1,5 +0,0 @@
-import "prosemirror-example-setup/style/style.css";
-import "prosemirror-menu/style/menu.css";
-import "prosemirror-view/style/prosemirror.css";
-declare const MarkdownEditor: () => void;
-export default MarkdownEditor;
diff --git a/app/Resources/types/js/modules/markdown-preview.d.ts b/app/Resources/types/js/modules/markdown-preview.d.ts
new file mode 100644
index 0000000000000000000000000000000000000000..2132ecefd180b001b4e1fd0bbd81d564052cfa60
--- /dev/null
+++ b/app/Resources/types/js/modules/markdown-preview.d.ts
@@ -0,0 +1,13 @@
+import MarkdownToolbarElement from "@github/markdown-toolbar-element";
+import { LitElement, TemplateResult } from "lit";
+export declare class MarkdownPreview extends LitElement {
+  for: string;
+  _textarea: HTMLTextAreaElement;
+  _markdownToolbar: MarkdownToolbarElement;
+  _show: boolean;
+  connectedCallback(): void;
+  hide(): void;
+  show(): void;
+  markdownToHtml(): string;
+  render(): TemplateResult<1>;
+}
diff --git a/app/Resources/types/js/modules/markdown-write-preview.d.ts b/app/Resources/types/js/modules/markdown-write-preview.d.ts
new file mode 100644
index 0000000000000000000000000000000000000000..1f646a9bd14830d2d2171765ad30037c6bab0485
--- /dev/null
+++ b/app/Resources/types/js/modules/markdown-write-preview.d.ts
@@ -0,0 +1,13 @@
+import { LitElement, TemplateResult } from "lit";
+import { MarkdownPreview } from "./markdown-preview";
+export declare class MarkdownWritePreview extends LitElement {
+  for: string;
+  _textarea: HTMLTextAreaElement | null;
+  _markdownPreview: MarkdownPreview;
+  _write: NodeListOf<HTMLButtonElement>;
+  _preview: NodeListOf<HTMLButtonElement>;
+  connectedCallback(): void;
+  write(): void;
+  preview(): void;
+  render(): TemplateResult<1>;
+}
diff --git a/app/Views/admin/_layout.php b/app/Views/admin/_layout.php
index ad660a84f8b6ba04aaf589e2d765fc604ff3cecb..c5375af68fc8714eae9fa5bed20f4c7a5c0c43bc 100644
--- a/app/Views/admin/_layout.php
+++ b/app/Views/admin/_layout.php
@@ -20,7 +20,7 @@
             <?= $this->include('admin/_sidebar') ?>
         <?php endif; ?>
     </aside>
-    <main class="overflow-hidden holy-grail-main">
+    <main class="holy-grail-main">
         <header class="text-white bg-pine-900">
             <div class="container flex flex-wrap items-end justify-between px-2 py-10 mx-auto md:px-12 gap-y-6 gap-x-6">
                 <div class="flex flex-col">
diff --git a/app/Views/admin/contributor/add.php b/app/Views/admin/contributor/add.php
index 38f3efa45e052c2c11dc42be9e45b963e5b4a41d..5c982f2d821c9572b61349085cd90851b4fb2fc1 100644
--- a/app/Views/admin/contributor/add.php
+++ b/app/Views/admin/contributor/add.php
@@ -17,7 +17,7 @@
 <?= csrf_field() ?>
     
 <?= form_label(lang('Contributor.form.user'), 'user') ?>
-<?= form_dropdown('user', $userOptions, old('user', ''), [
+<?= form_dropdown('user', $userOptions, [old('user', '')], [
     'id' => 'user',
     'class' => 'form-select mb-4',
     'required' => 'required',
@@ -25,7 +25,7 @@
 ]) ?>
 
 <?= form_label(lang('Contributor.form.role'), 'role') ?>
-<?= form_dropdown('role', $roleOptions, old('role', ''), [
+<?= form_dropdown('role', $roleOptions, [old('role', '')], [
     'id' => 'role',
     'class' => 'form-select mb-4',
     'required' => 'required',
diff --git a/app/Views/admin/contributor/edit.php b/app/Views/admin/contributor/edit.php
index 33398d9941e99191ffb2ecb460dd754eb88ee770..a0be336a9523c32d851b4622b2f7932e70e3b525 100644
--- a/app/Views/admin/contributor/edit.php
+++ b/app/Views/admin/contributor/edit.php
@@ -17,7 +17,7 @@
 <?= csrf_field() ?>
 
 <?= form_label(lang('Contributor.form.role'), 'role') ?>
-<?= form_dropdown('role', $roleOptions, old('role', $contributorGroupId), [
+<?= form_dropdown('role', $roleOptions, [old('role', $contributorGroupId)], [
     'id' => 'role',
     'class' => 'form-select mb-4',
     'required' => 'required',
diff --git a/app/Views/admin/episode/create.php b/app/Views/admin/episode/create.php
index 77501a2017a823a75c959bcb81cf37bd22390b3f..ef7e2a7d841d86ac22653707757569b7fba5f1ae 100644
--- a/app/Views/admin/episode/create.php
+++ b/app/Views/admin/episode/create.php
@@ -201,15 +201,13 @@
 
 <div class="mb-4">
     <?= form_label(lang('Episode.form.description'), 'description') ?>
-    <?= form_textarea(
+    <?= form_markdown_editor(
         [
             'id' => 'description',
             'name' => 'description',
-            'class' => 'form-textarea',
             'required' => 'required',
         ],
         old('description', '', false),
-        'data-editor="markdown"',
     ) ?>
 </div>
 
@@ -219,19 +217,18 @@
         'description_footer',
         [],
         lang('Episode.form.description_footer_hint'),
+        true
     ) ?>
-    <?= form_textarea(
+    <?= form_markdown_editor(
         [
             'id' => 'description_footer',
             'name' => 'description_footer',
-            'class' => 'form-textarea',
         ],
         old(
             'description_footer',
             $podcast->episode_description_footer_markdown ?? '',
             false,
         ),
-        'data-editor="markdown"',
     ) ?>
 </div>
 
diff --git a/app/Views/admin/episode/edit.php b/app/Views/admin/episode/edit.php
index d394982cc3695e9dc80bc847b2d6caf0a0278a55..1373b351a6889fd29c646abe21ceedea4ff12dbd 100644
--- a/app/Views/admin/episode/edit.php
+++ b/app/Views/admin/episode/edit.php
@@ -211,15 +211,13 @@
 
 <div class="mb-4">
     <?= form_label(lang('Episode.form.description'), 'description') ?>
-    <?= form_textarea(
+    <?= form_markdown_editor(
         [
             'id' => 'description',
             'name' => 'description',
-            'class' => 'form-textarea',
             'required' => 'required',
         ],
         old('description', $episode->description_markdown, false),
-        'data-editor="markdown"',
     ) ?>
 </div>
 
@@ -229,19 +227,18 @@
         'description_footer',
         [],
         lang('Episode.form.description_footer_hint'),
+        true
     ) ?>
-    <?= form_textarea(
+    <?= form_markdown_editor(
         [
             'id' => 'description_footer',
             'name' => 'description_footer',
-            'class' => 'form-textarea',
         ],
         old(
             'description_footer',
             $podcast->episode_description_footer_markdown ?? '',
             false,
         ),
-        'data-editor="markdown"',
     ) ?>
 </div>
 
diff --git a/app/Views/admin/page/create.php b/app/Views/admin/page/create.php
index 94b009164b2dbea04b1c6e09e82126b9e4af6c08..75a1ef7ffb9845d7fe6dc5705209bf417045d3cc 100644
--- a/app/Views/admin/page/create.php
+++ b/app/Views/admin/page/create.php
@@ -38,15 +38,14 @@
 
 <div class="mb-4">
     <?= form_label(lang('Page.form.content'), 'content') ?>
-    <?= form_textarea(
+    <?= form_markdown_editor(
         [
             'id' => 'content',
             'name' => 'content',
-            'class' => 'form-textarea',
             'required' => 'required',
         ],
         old('content', '', false),
-        'data-editor="markdown"',
+        ['rows' => '20']
     ) ?>
 </div>
 
diff --git a/app/Views/admin/page/edit.php b/app/Views/admin/page/edit.php
index 3fee95adf94c2e50124ed542649d54fa62a78ca2..7a2a581abc06a896a26dec8347d002dcf6b71ade 100644
--- a/app/Views/admin/page/edit.php
+++ b/app/Views/admin/page/edit.php
@@ -38,15 +38,13 @@
 
 <div class="mb-4">
     <?= form_label(lang('Page.form.content'), 'content') ?>
-    <?= form_textarea(
+    <?= form_markdown_editor(
         [
             'id' => 'content',
             'name' => 'content',
-            'class' => 'form-textarea',
             'required' => 'required',
         ],
         old('content', $page->content_markdown, false),
-        'data-editor="markdown"',
     ) ?>
 </div>
 
diff --git a/app/Views/admin/podcast/create.php b/app/Views/admin/podcast/create.php
index 97ee5bb4104767a4aebc520c78bd73e30b394621..eb63ac93bf66b1f5d65d75172402806f384031c0 100644
--- a/app/Views/admin/podcast/create.php
+++ b/app/Views/admin/podcast/create.php
@@ -82,15 +82,13 @@
 
 <div class="mb-4">
     <?= form_label(lang('Podcast.form.description'), 'description') ?>
-    <?= form_textarea(
+    <?= form_markdown_editor(
         [
             'id' => 'description',
             'name' => 'description',
-            'class' => 'form-textarea',
             'required' => 'required',
         ],
         old('description', '', false),
-        'data-editor="markdown"',
     ) ?>
 </div>
 
@@ -103,14 +101,14 @@
 ) ?>
 
 <?= form_label(lang('Podcast.form.language'), 'language') ?>
-<?= form_dropdown('language', $languageOptions, old('language', $browserLang), [
+<?= form_dropdown('language', $languageOptions, [old('language', $browserLang)], [
     'id' => 'language',
     'class' => 'form-select mb-4',
     'required' => 'required',
 ]) ?>
 
 <?= form_label(lang('Podcast.form.category'), 'category') ?>
-<?= form_dropdown('category', $categoryOptions, old('category', ''), [
+<?= form_dropdown('category', $categoryOptions, [old('category', '')], [
     'id' => 'category',
     'class' => 'form-select mb-4',
     'required' => 'required',
@@ -127,7 +125,7 @@
 <?= form_multiselect(
     'other_categories[]',
     $categoryOptions,
-    old('other_categories', []),
+    [old('other_categories', '')],
     [
         'id' => 'other_categories',
         'class' => 'mb-4',
@@ -282,11 +280,11 @@
 
 <?= form_label(lang('Podcast.form.partnership')) ?>
 <div class="flex flex-col mb-4 gap-x-2 gap-y-4 md:flex-row">
-    <div class="flex flex-col flex-shrink w-32">
+    <div class="flex flex-col flex-shrink">
         <?= form_label(
             lang('Podcast.form.partner_id'),
             'partner_id',
-            [],
+            ['class' => 'text-sm'],
             lang('Podcast.form.partner_id_hint'),
             true,
         ) ?>
@@ -297,11 +295,11 @@
             'value' => old('partner_id'),
         ]) ?>
     </div>
-    <div class="flex flex-col flex-1">
+    <div class="flex flex-col">
         <?= form_label(
             lang('Podcast.form.partner_link_url'),
             'partner_link_url',
-            [],
+            ['class' => 'text-sm'],
             lang('Podcast.form.partner_link_url_hint'),
             true,
         ) ?>
@@ -312,11 +310,11 @@
             'value' => old('partner_link_url'),
         ]) ?>
     </div>
-    <div class="flex flex-col flex-1">
+    <div class="flex flex-col">
         <?= form_label(
             lang('Podcast.form.partner_image_url'),
             'partner_image_url',
-            [],
+            ['class' => 'text-sm'],
             lang('Podcast.form.partner_image_url_hint'),
             true,
         ) ?>
diff --git a/app/Views/admin/podcast/edit.php b/app/Views/admin/podcast/edit.php
index c0ca9e64f6b3df13f65290bc9bae25eabd6085d0..a49bdf17b074fe684426a14c27a6a58192eef284 100644
--- a/app/Views/admin/podcast/edit.php
+++ b/app/Views/admin/podcast/edit.php
@@ -68,15 +68,12 @@
 
 <div class="mb-4">
     <?= form_label(lang('Podcast.form.description'), 'description') ?>
-    <?= form_textarea(
-        [
+    <?= form_markdown_editor([
             'id' => 'description',
             'name' => 'description',
-            'class' => 'form-textarea',
             'required' => 'required',
         ],
-        old('description', $podcast->description_markdown, false),
-        'data-editor="markdown"',
+        old('description', $podcast->description_markdown, false)
     ) ?>
 </div>
 
@@ -92,7 +89,7 @@
 <?= form_dropdown(
     'language',
     $languageOptions,
-    old('language', $podcast->language_code),
+    [old('language', $podcast->language_code)],
     [
         'id' => 'language',
         'class' => 'form-select mb-4',
@@ -104,7 +101,7 @@
 <?= form_dropdown(
     'category',
     $categoryOptions,
-    old('category', (string) $podcast->category_id),
+    [old('category', (string) $podcast->category_id)],
     [
         'id' => 'category',
         'class' => 'form-select mb-4',
diff --git a/app/Views/admin/podcast/import.php b/app/Views/admin/podcast/import.php
index 0172e854c5c3b07a985507d14f7a9aa5190b4237..369a8a4b62355e4570f4998b1b431aaac920fc68 100644
--- a/app/Views/admin/podcast/import.php
+++ b/app/Views/admin/podcast/import.php
@@ -68,14 +68,14 @@
 </div>
 
 <?= form_label(lang('Podcast.form.language'), 'language') ?>
-<?= form_dropdown('language', $languageOptions, old('language', $browserLang), [
+<?= form_dropdown('language', $languageOptions, [old('language', $browserLang)], [
     'id' => 'language',
     'class' => 'form-select mb-4',
     'required' => 'required',
 ]) ?>
 
 <?= form_label(lang('Podcast.form.category'), 'category') ?>
-<?= form_dropdown('category', $categoryOptions, old('category', ''), [
+<?= form_dropdown('category', $categoryOptions, [old('category', '')], [
     'id' => 'category',
     'class' => 'form-select mb-4',
     'required' => 'required',
diff --git a/app/Views/install/cache_config.php b/app/Views/install/cache_config.php
index 3a2543033c3bba135a570c520f9c913fbeb848ef..0f54c0fb840901b25870e7c893811e5713522029 100644
--- a/app/Views/install/cache_config.php
+++ b/app/Views/install/cache_config.php
@@ -23,7 +23,7 @@
         'redis' => lang('Install.form.cacheHandlerOptions.redis'),
         'predis' => lang('Install.form.cacheHandlerOptions.predis'),
     ],
-    old('cache_handler', 'file'),
+    [old('cache_handler', 'file')],
     [
         'id' => 'cache_handler',
         'name' => 'cache_handler',
diff --git a/package-lock.json b/package-lock.json
index 247882c2dbbefa3ca70f0ee106c63c9ab44226a0..de1db64dc0518469a894c29b847f88630edae0c4 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -11,17 +11,14 @@
       "dependencies": {
         "@amcharts/amcharts4": "^4.10.20",
         "@amcharts/amcharts4-geodata": "^4.1.21",
+        "@github/markdown-toolbar-element": "^1.5.1",
         "@popperjs/core": "^2.9.2",
-        "@rollup/plugin-multi-entry": "^4.0.0",
         "choices.js": "^9.0.1",
         "flatpickr": "^4.6.9",
         "leaflet": "^1.7.1",
         "leaflet.markercluster": "^1.5.1",
         "lit": "^2.0.0-rc.2",
-        "prosemirror-example-setup": "^1.1.2",
-        "prosemirror-markdown": "^1.5.1",
-        "prosemirror-state": "^1.3.4",
-        "prosemirror-view": "^1.18.11"
+        "marked": "^2.1.3"
       },
       "devDependencies": {
 <<<<<<< HEAD
@@ -46,10 +43,11 @@
         "@tailwindcss/typography": "^0.4.1",
 >>>>>>> dfa437f (fix: rename podcast name to podcast handle to clarify field usage)
         "@types/leaflet": "^1.7.5",
+        "@types/marked": "^2.0.4",
         "@types/prosemirror-markdown": "^1.5.2",
         "@types/prosemirror-view": "^1.18.0",
-        "@typescript-eslint/eslint-plugin": "^4.28.4",
-        "@typescript-eslint/parser": "^4.28.4",
+        "@typescript-eslint/eslint-plugin": "^4.28.5",
+        "@typescript-eslint/parser": "^4.28.5",
         "cpy-cli": "^3.1.1",
         "cross-env": "^7.0.3",
         "cssnano": "^5.0.7",
@@ -60,6 +58,7 @@
         "husky": "^7.0.1",
         "is-ci": "^3.0.0",
         "lint-staged": "^11.1.1",
+        "lit": "^2.0.0-rc.2",
         "postcss-import": "^14.0.2",
         "postcss-preset-env": "^6.7.0",
 <<<<<<< HEAD
@@ -83,8 +82,12 @@
         "svgo": "^2.3.1",
         "tailwindcss": "^2.2.7",
         "typescript": "^4.3.5",
+<<<<<<< HEAD
         "vite": "^2.4.3"
 >>>>>>> dfa437f (fix: rename podcast name to podcast handle to clarify field usage)
+=======
+        "vite": "^2.4.4"
+>>>>>>> 87ca2cf (fix(md-editor): build new markdown editor with lit + github/markdown-toolbar-element)
       }
     },
     "node_modules/@amcharts/amcharts4": {
@@ -1118,6 +1121,11 @@
       "resolved": "https://registry.npmjs.org/@foliojs-fork/restructure/-/restructure-2.0.2.tgz",
       "integrity": "sha512-59SgoZ3EXbkfSX7b63tsou/SDGzwUEK6MuB5sKqgVK1/XE0fxmpsOb9DQI8LXW3KfGnAjImCGhhEb7uPPAUVNA=="
     },
+    "node_modules/@github/markdown-toolbar-element": {
+      "version": "1.5.3",
+      "resolved": "https://registry.npmjs.org/@github/markdown-toolbar-element/-/markdown-toolbar-element-1.5.3.tgz",
+      "integrity": "sha512-fNgAuHBWWzqxMvkTMM7ijqPryLmnPVOi4OWp8YyUC74YgtJCRvQyL7gl9SzNLMXmGQxiRVIYbUJxa61X1oRObw=="
+    },
     "node_modules/@humanwhocodes/config-array": {
       "version": "0.5.0",
       "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.5.0.tgz",
@@ -1141,7 +1149,8 @@
     "node_modules/@lit/reactive-element": {
       "version": "1.0.0-rc.2",
       "resolved": "https://registry.npmjs.org/@lit/reactive-element/-/reactive-element-1.0.0-rc.2.tgz",
-      "integrity": "sha512-cujeIl5Ei8FC7UHf4/4Q3bRJOtdTe1vpJV/JEBYCggedmQ+2P8A2oz7eE+Vxi6OJ4nc0X+KZxXnBoH4QrEbmEQ=="
+      "integrity": "sha512-cujeIl5Ei8FC7UHf4/4Q3bRJOtdTe1vpJV/JEBYCggedmQ+2P8A2oz7eE+Vxi6OJ4nc0X+KZxXnBoH4QrEbmEQ==",
+      "dev": true
     },
     "node_modules/@mrmlnc/readdir-enhanced": {
       "version": "2.2.1",
@@ -1360,29 +1369,6 @@
         "url": "https://opencollective.com/popperjs"
       }
     },
-    "node_modules/@rollup/plugin-multi-entry": {
-      "version": "4.0.0",
-      "resolved": "https://registry.npmjs.org/@rollup/plugin-multi-entry/-/plugin-multi-entry-4.0.0.tgz",
-      "integrity": "sha512-1Sw86rwFxrNS7ECY3iSZ7T940xKnruNGpmQDgSDVTp+VTa1g5cPXNzBgp+IoOer41CiVeGFLwYwvicVoJLHEDQ==",
-      "dependencies": {
-        "@rollup/plugin-virtual": "^2.0.3",
-        "matched": "^5.0.0"
-      },
-      "engines": {
-        "node": ">=10.0.0"
-      },
-      "peerDependencies": {
-        "rollup": "^1.20.0 || ^2.0.0"
-      }
-    },
-    "node_modules/@rollup/plugin-virtual": {
-      "version": "2.0.3",
-      "resolved": "https://registry.npmjs.org/@rollup/plugin-virtual/-/plugin-virtual-2.0.3.tgz",
-      "integrity": "sha512-pw6ziJcyjZtntQ//bkad9qXaBx665SgEL8C8KI5wO8G5iU5MPxvdWrQyVaAvjojGm9tJoS8M9Z/EEepbqieYmw==",
-      "peerDependencies": {
-        "rollup": "^1.20.0||^2.0.0"
-      }
-    },
     "node_modules/@semantic-release/changelog": {
       "version": "6.0.1",
       "resolved": "https://registry.npmjs.org/@semantic-release/changelog/-/changelog-6.0.1.tgz",
@@ -2295,6 +2281,12 @@
         "@types/mdurl": "*"
       }
     },
+    "node_modules/@types/marked": {
+      "version": "2.0.5",
+      "resolved": "https://registry.npmjs.org/@types/marked/-/marked-2.0.5.tgz",
+      "integrity": "sha512-shRZ7XnYFD/8n8zSjKvFdto1QNSf4tONZIlNEZGrJe8GsOE8DL/hG1Hbl8gZlfLnjS7+f5tZGIaTgfpyW38h4w==",
+      "dev": true
+    },
     "node_modules/@types/mdast": {
       "version": "3.0.3",
       "resolved": "https://registry.npmjs.org/@types/mdast/-/mdast-3.0.3.tgz",
@@ -2414,7 +2406,8 @@
     "node_modules/@types/trusted-types": {
       "version": "1.0.6",
       "resolved": "https://registry.npmjs.org/@types/trusted-types/-/trusted-types-1.0.6.tgz",
-      "integrity": "sha512-230RC8sFeHoT6sSUlRO6a8cAnclO06eeiq1QDfiv2FGCLWFvvERWgwIQD4FWqD9A69BN7Lzee4OXwoMVnnsWDw=="
+      "integrity": "sha512-230RC8sFeHoT6sSUlRO6a8cAnclO06eeiq1QDfiv2FGCLWFvvERWgwIQD4FWqD9A69BN7Lzee4OXwoMVnnsWDw==",
+      "dev": true
     },
     "node_modules/@types/unist": {
       "version": "2.0.3",
@@ -2848,6 +2841,7 @@
       "version": "1.0.10",
       "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz",
       "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==",
+      "dev": true,
       "dependencies": {
         "sprintf-js": "~1.0.2"
       }
@@ -4885,11 +4879,6 @@
       "integrity": "sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ==",
       "dev": true
     },
-    "node_modules/crelt": {
-      "version": "1.0.4",
-      "resolved": "https://registry.npmjs.org/crelt/-/crelt-1.0.4.tgz",
-      "integrity": "sha512-l1cwMUOssGLEj5zgbut4lxJq95ZabOXVZnDybNqQRUtXh1lvUK7e7kJNm8SfvTQzYpE3AVJhIVUJKf382lMA7A=="
-    },
     "node_modules/cross-env": {
       "version": "7.0.3",
       "resolved": "https://registry.npmjs.org/cross-env/-/cross-env-7.0.3.tgz",
@@ -6227,84 +6216,6 @@
         "esbuild-windows-arm64": "0.13.9"
       }
     },
-    "node_modules/esbuild-android-arm64": {
-      "version": "0.13.9",
-      "resolved": "https://registry.npmjs.org/esbuild-android-arm64/-/esbuild-android-arm64-0.13.9.tgz",
-      "integrity": "sha512-Ty0hKldtjJVLHwUwbKR4GFPiXBo5iQ3aE1OLBar9lh3myaRkUGEb+Ypl74LEKa0+t/9lS3Ev1N5+5P2Sq6UvNQ==",
-      "cpu": [
-        "arm64"
-      ],
-      "dev": true,
-      "optional": true,
-      "os": [
-        "android"
-      ]
-    },
-    "node_modules/esbuild-darwin-64": {
-      "version": "0.13.9",
-      "resolved": "https://registry.npmjs.org/esbuild-darwin-64/-/esbuild-darwin-64-0.13.9.tgz",
-      "integrity": "sha512-Ay0/b98v0oYp3ApXNQ7QPbaSkCT9WjBU6h8bMB1SYrQ/PmHgwph91fb9V0pfOLKK1rYWypfrNbI0MyT2tWN+rQ==",
-      "cpu": [
-        "x64"
-      ],
-      "dev": true,
-      "optional": true,
-      "os": [
-        "darwin"
-      ]
-    },
-    "node_modules/esbuild-darwin-arm64": {
-      "version": "0.13.9",
-      "resolved": "https://registry.npmjs.org/esbuild-darwin-arm64/-/esbuild-darwin-arm64-0.13.9.tgz",
-      "integrity": "sha512-nJB8chaJdWathCe6EyIiMIqfyEzbuXPyNsPlL3bYRB1zFCF8feXT874D4IHbJ/w8B6BpY3sM1Clr/I/DK8E4ow==",
-      "cpu": [
-        "arm64"
-      ],
-      "dev": true,
-      "optional": true,
-      "os": [
-        "darwin"
-      ]
-    },
-    "node_modules/esbuild-freebsd-64": {
-      "version": "0.13.9",
-      "resolved": "https://registry.npmjs.org/esbuild-freebsd-64/-/esbuild-freebsd-64-0.13.9.tgz",
-      "integrity": "sha512-ktaBujf12XLkVXLGx7WjFcmh1tt34tm7gP4pHkhvbzbHrq+BbXwcl4EsW+5JT9VNKl7slOGf4Qnua/VW7ZcnIw==",
-      "cpu": [
-        "x64"
-      ],
-      "dev": true,
-      "optional": true,
-      "os": [
-        "freebsd"
-      ]
-    },
-    "node_modules/esbuild-freebsd-arm64": {
-      "version": "0.13.9",
-      "resolved": "https://registry.npmjs.org/esbuild-freebsd-arm64/-/esbuild-freebsd-arm64-0.13.9.tgz",
-      "integrity": "sha512-vVa5zps4dmwpXwv/amxVpIWvFJuUPWQkpV+PYtZUW9lqjXsQ3LBHP51Q1cXZZBIrqwszLsEyJPa5GuDOY15hzQ==",
-      "cpu": [
-        "arm64"
-      ],
-      "dev": true,
-      "optional": true,
-      "os": [
-        "freebsd"
-      ]
-    },
-    "node_modules/esbuild-linux-32": {
-      "version": "0.13.9",
-      "resolved": "https://registry.npmjs.org/esbuild-linux-32/-/esbuild-linux-32-0.13.9.tgz",
-      "integrity": "sha512-HxoW9QNqhO8VW1l7aBiYQH4lobeHq85+blZ4nlZ7sg5CNhGRRwnMlV6S08VYKz6V0YKnHb5OqJxx2HZuTZ7tgQ==",
-      "cpu": [
-        "ia32"
-      ],
-      "dev": true,
-      "optional": true,
-      "os": [
-        "linux"
-      ]
-    },
     "node_modules/esbuild-linux-64": {
       "version": "0.13.9",
       "resolved": "https://registry.npmjs.org/esbuild-linux-64/-/esbuild-linux-64-0.13.9.tgz",
@@ -6318,136 +6229,6 @@
         "linux"
       ]
     },
-    "node_modules/esbuild-linux-arm": {
-      "version": "0.13.9",
-      "resolved": "https://registry.npmjs.org/esbuild-linux-arm/-/esbuild-linux-arm-0.13.9.tgz",
-      "integrity": "sha512-DT0S+ufCVXatPZHjkCaBgZSFIV8FzY4GEHz/BlkitTWzUvT1dIUXjPIRPnqBUVa+0AyS1bZSfHzv9hTT4LHz7A==",
-      "cpu": [
-        "arm"
-      ],
-      "dev": true,
-      "optional": true,
-      "os": [
-        "linux"
-      ]
-    },
-    "node_modules/esbuild-linux-arm64": {
-      "version": "0.13.9",
-      "resolved": "https://registry.npmjs.org/esbuild-linux-arm64/-/esbuild-linux-arm64-0.13.9.tgz",
-      "integrity": "sha512-IjbhZpW5VQYK4nVI4dj/mLvH5oXAIf57OI8BYVkCqrdVXJwR8nVrSqux3zJSY+ElrkOK3DtG9iTPpmqvBXaU0g==",
-      "cpu": [
-        "arm64"
-      ],
-      "dev": true,
-      "optional": true,
-      "os": [
-        "linux"
-      ]
-    },
-    "node_modules/esbuild-linux-mips64le": {
-      "version": "0.13.9",
-      "resolved": "https://registry.npmjs.org/esbuild-linux-mips64le/-/esbuild-linux-mips64le-0.13.9.tgz",
-      "integrity": "sha512-ec9RgAM4r+fe1ZmG16qeMwEHdcIvqeW8tpnpkfSQu9T4487KtQF6lg3TQasTarrLLEe7Qpy+E+r4VwC8eeZySQ==",
-      "cpu": [
-        "mips64el"
-      ],
-      "dev": true,
-      "optional": true,
-      "os": [
-        "linux"
-      ]
-    },
-    "node_modules/esbuild-linux-ppc64le": {
-      "version": "0.13.9",
-      "resolved": "https://registry.npmjs.org/esbuild-linux-ppc64le/-/esbuild-linux-ppc64le-0.13.9.tgz",
-      "integrity": "sha512-7b2/wg8T1n/L1BgCWlMSez0aXfGkNjFuOqMBQdnTti3LRuUwzGJcrhRf/FdZGJ5/evML9mqu60vLRuXW1TdXCg==",
-      "cpu": [
-        "ppc64"
-      ],
-      "dev": true,
-      "optional": true,
-      "os": [
-        "linux"
-      ]
-    },
-    "node_modules/esbuild-netbsd-64": {
-      "version": "0.13.9",
-      "resolved": "https://registry.npmjs.org/esbuild-netbsd-64/-/esbuild-netbsd-64-0.13.9.tgz",
-      "integrity": "sha512-PiZu3h4+Szj0iZPgvuD2Y0isOXnlNetmF6jMcOwW54BScwynW24/baE+z7PfDyNFgjV04Ga2THdcpbKBDhgWQw==",
-      "cpu": [
-        "x64"
-      ],
-      "dev": true,
-      "optional": true,
-      "os": [
-        "netbsd"
-      ]
-    },
-    "node_modules/esbuild-openbsd-64": {
-      "version": "0.13.9",
-      "resolved": "https://registry.npmjs.org/esbuild-openbsd-64/-/esbuild-openbsd-64-0.13.9.tgz",
-      "integrity": "sha512-SJKN4Ez+ilY7mu+1gAdGQ9N6dktBfbEkiOAvw+hT7xHrNnTnrTGH0FT4qx9dazB9HX6D04L4PXmVOyynqi+oEQ==",
-      "cpu": [
-        "x64"
-      ],
-      "dev": true,
-      "optional": true,
-      "os": [
-        "openbsd"
-      ]
-    },
-    "node_modules/esbuild-sunos-64": {
-      "version": "0.13.9",
-      "resolved": "https://registry.npmjs.org/esbuild-sunos-64/-/esbuild-sunos-64-0.13.9.tgz",
-      "integrity": "sha512-9N0RjZ7cElE8ifrS0nBrLQgBMQNPiIIKO2GzLXy7Ms8AM3KjfLiV2G2+9O0B9paXjRAHchIwazTeOyeWb1vyWA==",
-      "cpu": [
-        "x64"
-      ],
-      "dev": true,
-      "optional": true,
-      "os": [
-        "sunos"
-      ]
-    },
-    "node_modules/esbuild-windows-32": {
-      "version": "0.13.9",
-      "resolved": "https://registry.npmjs.org/esbuild-windows-32/-/esbuild-windows-32-0.13.9.tgz",
-      "integrity": "sha512-awxWs1kns+RfjhqBbTbdlePjqZrAE2XMaAQJNg9dtu+C7ghC3QKsqXbu0C26OuF5YeAdJcq9q+IdG6WPLjvj9w==",
-      "cpu": [
-        "ia32"
-      ],
-      "dev": true,
-      "optional": true,
-      "os": [
-        "win32"
-      ]
-    },
-    "node_modules/esbuild-windows-64": {
-      "version": "0.13.9",
-      "resolved": "https://registry.npmjs.org/esbuild-windows-64/-/esbuild-windows-64-0.13.9.tgz",
-      "integrity": "sha512-VmA9GQMCzOr8rFfD72Dum1+AWhJui7ZO6sYwp6rBHYu4vLmWITTSUsd/zgXXmZuHBPkkvxLJLF8XsKFCRKflJA==",
-      "cpu": [
-        "x64"
-      ],
-      "dev": true,
-      "optional": true,
-      "os": [
-        "win32"
-      ]
-    },
-    "node_modules/esbuild-windows-arm64": {
-      "version": "0.13.9",
-      "resolved": "https://registry.npmjs.org/esbuild-windows-arm64/-/esbuild-windows-arm64-0.13.9.tgz",
-      "integrity": "sha512-P/jPY2JwmTpgEPh9BkXpCe690tcDSSo0K9BHTniSeEAEz26kPpqldVa4XDm0R+hNnFA7ecEgNskr4QAxE1ry0w==",
-      "cpu": [
-        "arm64"
-      ],
-      "dev": true,
-      "optional": true,
-      "os": [
-        "win32"
-      ]
-    },
     "node_modules/escalade": {
       "version": "3.1.1",
       "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz",
@@ -7678,19 +7459,6 @@
       "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz",
       "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8="
     },
-    "node_modules/fsevents": {
-      "version": "2.3.2",
-      "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz",
-      "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==",
-      "hasInstallScript": true,
-      "optional": true,
-      "os": [
-        "darwin"
-      ],
-      "engines": {
-        "node": "^8.16.0 || ^10.6.0 || >=11.0.0"
-      }
-    },
     "node_modules/function-bind": {
       "version": "1.1.1",
       "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz",
@@ -9581,14 +9349,6 @@
       "integrity": "sha1-HADHQ7QzzQpOgHWPe2SldEDZ/wA=",
       "dev": true
     },
-    "node_modules/linkify-it": {
-      "version": "2.2.0",
-      "resolved": "https://registry.npmjs.org/linkify-it/-/linkify-it-2.2.0.tgz",
-      "integrity": "sha512-GnAl/knGn+i1U/wjBz3akz2stz+HrHLsxMwHQGofCDfPvlf+gDKN58UtfmUquTY4/MXeE2x7k19KQmeoZi94Iw==",
-      "dependencies": {
-        "uc.micro": "^1.0.1"
-      }
-    },
     "node_modules/lint-staged": {
       "version": "11.2.4",
       "resolved": "https://registry.npmjs.org/lint-staged/-/lint-staged-11.2.4.tgz",
@@ -9811,6 +9571,7 @@
       "version": "2.0.0-rc.2",
       "resolved": "https://registry.npmjs.org/lit/-/lit-2.0.0-rc.2.tgz",
       "integrity": "sha512-BOCuoJR04WaTV8UqTKk09cNcQA10Aq2LCcBOiHuF7TzWH5RNDsbCBP5QM9sLBSotGTXbDug/gFO08jq6TbyEtw==",
+      "dev": true,
       "dependencies": {
         "@lit/reactive-element": "^1.0.0-rc.2",
         "lit-element": "^3.0.0-rc.2",
@@ -9821,6 +9582,7 @@
       "version": "3.0.0-rc.2",
       "resolved": "https://registry.npmjs.org/lit-element/-/lit-element-3.0.0-rc.2.tgz",
       "integrity": "sha512-2Z7DabJ3b5K+p5073vFjMODoaWqy5PIaI4y6ADKm+fCGc8OnX9fU9dMoUEBZjFpd/bEFR9PBp050tUtBnT9XTQ==",
+      "dev": true,
       "dependencies": {
         "@lit/reactive-element": "^1.0.0-rc.2",
         "lit-html": "^2.0.0-rc.3"
@@ -9830,6 +9592,7 @@
       "version": "2.0.0-rc.3",
       "resolved": "https://registry.npmjs.org/lit-html/-/lit-html-2.0.0-rc.3.tgz",
       "integrity": "sha512-Y6P8LlAyQuqvzq6l/Nc4z5/P5M/rVLYKQIRxcNwSuGajK0g4kbcBFQqZmgvqKG+ak+dHZjfm2HUw9TF5N/pkCw==",
+      "dev": true,
       "dependencies": {
         "@types/trusted-types": "^1.0.1"
       }
@@ -10279,31 +10042,14 @@
         "node": ">=0.10.0"
       }
     },
-    "node_modules/markdown-it": {
-      "version": "10.0.0",
-      "resolved": "https://registry.npmjs.org/markdown-it/-/markdown-it-10.0.0.tgz",
-      "integrity": "sha512-YWOP1j7UbDNz+TumYP1kpwnP0aEa711cJjrAQrzd0UXlbJfc5aAq0F/PZHjiioqDC1NKgvIMX+o+9Bk7yuM2dg==",
-      "dependencies": {
-        "argparse": "^1.0.7",
-        "entities": "~2.0.0",
-        "linkify-it": "^2.0.0",
-        "mdurl": "^1.0.1",
-        "uc.micro": "^1.0.5"
-      },
-      "bin": {
-        "markdown-it": "bin/markdown-it.js"
-      }
-    },
-    "node_modules/markdown-it/node_modules/entities": {
-      "version": "2.0.3",
-      "resolved": "https://registry.npmjs.org/entities/-/entities-2.0.3.tgz",
-      "integrity": "sha512-MyoZ0jgnLvB2X3Lg5HqpFmn1kybDiIfEQmKzTb5apr51Rb+T3KdmMiqa70T+bhGnyv7bQ6WMj2QMHpGMmlrUYQ=="
-    },
     "node_modules/marked": {
       "version": "2.1.3",
       "resolved": "https://registry.npmjs.org/marked/-/marked-2.1.3.tgz",
       "integrity": "sha512-/Q+7MGzaETqifOMWYEA7HVMaZb4XbcRfaOzcSsHZEith83KGlvaSG33u0SKu89Mj5h+T8V2hM+8O45Qc5XTgwA==",
+<<<<<<< HEAD
       "dev": true,
+=======
+>>>>>>> 87ca2cf (fix(md-editor): build new markdown editor with lit + github/markdown-toolbar-element)
       "bin": {
         "marked": "bin/marked"
       },
@@ -10355,21 +10101,6 @@
         "url": "https://github.com/sponsors/sindresorhus"
       }
     },
-    "node_modules/matched": {
-      "version": "5.0.1",
-      "resolved": "https://registry.npmjs.org/matched/-/matched-5.0.1.tgz",
-      "integrity": "sha512-E1fhSTPRyhAlNaNvGXAgZQlq1hL0bgYMTk/6bktVlIhzUnX/SZs7296ACdVeNJE8xFNGSuvd9IpI7vSnmcqLvw==",
-      "dependencies": {
-        "glob": "^7.1.6",
-        "picomatch": "^2.2.1"
-      },
-      "engines": {
-        "node": ">=10"
-      },
-      "funding": {
-        "url": "https://github.com/sponsors/jonschlinkert"
-      }
-    },
     "node_modules/mathml-tag-names": {
       "version": "2.1.3",
       "resolved": "https://registry.npmjs.org/mathml-tag-names/-/mathml-tag-names-2.1.3.tgz",
@@ -10425,11 +10156,6 @@
         "url": "https://opencollective.com/unified"
       }
     },
-    "node_modules/mdurl": {
-      "version": "1.0.1",
-      "resolved": "https://registry.npmjs.org/mdurl/-/mdurl-1.0.1.tgz",
-      "integrity": "sha1-/oWy7HWlkDfyrf7BAP1sYBdhFS4="
-    },
     "node_modules/meow": {
       "version": "8.1.2",
       "resolved": "https://registry.npmjs.org/meow/-/meow-8.1.2.tgz",
@@ -13994,11 +13720,6 @@
         "node": ">= 0.8.0"
       }
     },
-    "node_modules/orderedmap": {
-      "version": "1.1.1",
-      "resolved": "https://registry.npmjs.org/orderedmap/-/orderedmap-1.1.1.tgz",
-      "integrity": "sha512-3Ux8um0zXbVacKUkcytc0u3HgC0b0bBLT+I60r2J/En72cI0nZffqrA7Xtf2Hqs27j1g82llR5Mhbd0Z1XW4AQ=="
-    },
     "node_modules/os-tmpdir": {
       "version": "1.0.2",
       "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz",
@@ -14379,6 +14100,7 @@
       "version": "2.2.3",
       "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.2.3.tgz",
       "integrity": "sha512-KpELjfwcCDUb9PeigTs2mBJzXUPzAuP2oPcA989He8Rte0+YUAjw1JVedDhuTKPkHjSYzMN3npC9luThGYEKdg==",
+      "dev": true,
       "engines": {
         "node": ">=8.6"
       },
@@ -17914,145 +17636,6 @@
         "node": ">=0.4.0"
       }
     },
-    "node_modules/prosemirror-commands": {
-      "version": "1.1.4",
-      "resolved": "https://registry.npmjs.org/prosemirror-commands/-/prosemirror-commands-1.1.4.tgz",
-      "integrity": "sha512-kj4Qi+8h3EpJtZuuEDwZ9h2/QNGWDsIX/CzjmClxi9GhxWyBUMVUvIFk0mgdqHyX20lLeGmOpc0TLA5aPzgpWg==",
-      "dependencies": {
-        "prosemirror-model": "^1.0.0",
-        "prosemirror-state": "^1.0.0",
-        "prosemirror-transform": "^1.0.0"
-      }
-    },
-    "node_modules/prosemirror-dropcursor": {
-      "version": "1.3.2",
-      "resolved": "https://registry.npmjs.org/prosemirror-dropcursor/-/prosemirror-dropcursor-1.3.2.tgz",
-      "integrity": "sha512-4c94OUGyobGnwcQI70OXyMhE/9T4aTgjU+CHxkd5c7D+jH/J0mKM/lk+jneFVKt7+E4/M0D9HzRPifu8U28Thw==",
-      "dependencies": {
-        "prosemirror-state": "^1.0.0",
-        "prosemirror-transform": "^1.1.0",
-        "prosemirror-view": "^1.1.0"
-      }
-    },
-    "node_modules/prosemirror-example-setup": {
-      "version": "1.1.2",
-      "resolved": "https://registry.npmjs.org/prosemirror-example-setup/-/prosemirror-example-setup-1.1.2.tgz",
-      "integrity": "sha512-MTpIMyqk08jFnzxeRMCinCEMtVSTUtxKgQBGxfCbVe9C6zIOqp9qZZJz5Ojaad1GETySyuj8+OIHHvQsIaaaGQ==",
-      "dependencies": {
-        "prosemirror-commands": "^1.0.0",
-        "prosemirror-dropcursor": "^1.0.0",
-        "prosemirror-gapcursor": "^1.0.0",
-        "prosemirror-history": "^1.0.0",
-        "prosemirror-inputrules": "^1.0.0",
-        "prosemirror-keymap": "^1.0.0",
-        "prosemirror-menu": "^1.0.0",
-        "prosemirror-schema-list": "^1.0.0",
-        "prosemirror-state": "^1.0.0"
-      }
-    },
-    "node_modules/prosemirror-gapcursor": {
-      "version": "1.1.5",
-      "resolved": "https://registry.npmjs.org/prosemirror-gapcursor/-/prosemirror-gapcursor-1.1.5.tgz",
-      "integrity": "sha512-SjbUZq5pgsBDuV3hu8GqgIpZR5eZvGLM+gPQTqjVVYSMUCfKW3EGXTEYaLHEl1bGduwqNC95O3bZflgtAb4L6w==",
-      "dependencies": {
-        "prosemirror-keymap": "^1.0.0",
-        "prosemirror-model": "^1.0.0",
-        "prosemirror-state": "^1.0.0",
-        "prosemirror-view": "^1.0.0"
-      }
-    },
-    "node_modules/prosemirror-history": {
-      "version": "1.1.3",
-      "resolved": "https://registry.npmjs.org/prosemirror-history/-/prosemirror-history-1.1.3.tgz",
-      "integrity": "sha512-zGDotijea+vnfnyyUGyiy1wfOQhf0B/b6zYcCouBV8yo6JmrE9X23M5q7Nf/nATywEZbgRLG70R4DmfSTC+gfg==",
-      "dependencies": {
-        "prosemirror-state": "^1.2.2",
-        "prosemirror-transform": "^1.0.0",
-        "rope-sequence": "^1.3.0"
-      }
-    },
-    "node_modules/prosemirror-inputrules": {
-      "version": "1.1.2",
-      "resolved": "https://registry.npmjs.org/prosemirror-inputrules/-/prosemirror-inputrules-1.1.2.tgz",
-      "integrity": "sha512-Ja5Z3BWestlHYGvtSGqyvxMeB8QEuBjlHM8YnKtLGUXMDp965qdDV4goV8lJb17kIWHk7e7JNj6Catuoa3302g==",
-      "dependencies": {
-        "prosemirror-state": "^1.0.0",
-        "prosemirror-transform": "^1.0.0"
-      }
-    },
-    "node_modules/prosemirror-keymap": {
-      "version": "1.1.4",
-      "resolved": "https://registry.npmjs.org/prosemirror-keymap/-/prosemirror-keymap-1.1.4.tgz",
-      "integrity": "sha512-Al8cVUOnDFL4gcI5IDlG6xbZ0aOD/i3B17VT+1JbHWDguCgt/lBHVTHUBcKvvbSg6+q/W4Nj1Fu6bwZSca3xjg==",
-      "dependencies": {
-        "prosemirror-state": "^1.0.0",
-        "w3c-keyname": "^2.2.0"
-      }
-    },
-    "node_modules/prosemirror-markdown": {
-      "version": "1.5.1",
-      "resolved": "https://registry.npmjs.org/prosemirror-markdown/-/prosemirror-markdown-1.5.1.tgz",
-      "integrity": "sha512-QvucPHx+gKOQW1SETKUysrful9VBjKqpCFmPotgLfVZ3BdQEGy/NEIFhaXXo3TcuW316MMnKfA90K7GE5I7z8A==",
-      "dependencies": {
-        "markdown-it": "^10.0.0",
-        "prosemirror-model": "^1.0.0"
-      }
-    },
-    "node_modules/prosemirror-menu": {
-      "version": "1.1.4",
-      "resolved": "https://registry.npmjs.org/prosemirror-menu/-/prosemirror-menu-1.1.4.tgz",
-      "integrity": "sha512-2ROsji/X9ciDnVSRvSTqFygI34GEdHfQSsK4zBKjPxSEroeiHHcdRMS1ofNIf2zM0Vpp5/YqfpxynElymQkqzg==",
-      "dependencies": {
-        "crelt": "^1.0.0",
-        "prosemirror-commands": "^1.0.0",
-        "prosemirror-history": "^1.0.0",
-        "prosemirror-state": "^1.0.0"
-      }
-    },
-    "node_modules/prosemirror-model": {
-      "version": "1.15.0",
-      "resolved": "https://registry.npmjs.org/prosemirror-model/-/prosemirror-model-1.15.0.tgz",
-      "integrity": "sha512-hQJv7SnIhlAy9ga3lhPPgaufhvCbQB9tHwscJ9E1H1pPHmN8w5V/lURueoYv9Kc3/bpNWoyHa8r3g//m7N0ChQ==",
-      "dependencies": {
-        "orderedmap": "^1.1.0"
-      }
-    },
-    "node_modules/prosemirror-schema-list": {
-      "version": "1.1.2",
-      "resolved": "https://registry.npmjs.org/prosemirror-schema-list/-/prosemirror-schema-list-1.1.2.tgz",
-      "integrity": "sha512-dgM9PwtM4twa5WsgSYMB+J8bwjnR43DAD3L9MsR9rKm/nZR5Y85xcjB7gusVMSsbQ2NomMZF03RE6No6mTnclQ==",
-      "dependencies": {
-        "prosemirror-model": "^1.0.0",
-        "prosemirror-transform": "^1.0.0"
-      }
-    },
-    "node_modules/prosemirror-state": {
-      "version": "1.3.4",
-      "resolved": "https://registry.npmjs.org/prosemirror-state/-/prosemirror-state-1.3.4.tgz",
-      "integrity": "sha512-Xkkrpd1y/TQ6HKzN3agsQIGRcLckUMA9u3j207L04mt8ToRgpGeyhbVv0HI7omDORIBHjR29b7AwlATFFf2GLA==",
-      "dependencies": {
-        "prosemirror-model": "^1.0.0",
-        "prosemirror-transform": "^1.0.0"
-      }
-    },
-    "node_modules/prosemirror-transform": {
-      "version": "1.2.7",
-      "resolved": "https://registry.npmjs.org/prosemirror-transform/-/prosemirror-transform-1.2.7.tgz",
-      "integrity": "sha512-/107Lo2zeDgXuJBxb8s/clNu0Z2W8Gv3MKmkuSS/68Mcr7LBaUnN/Hj2g+GUxEJ7MpExCzFs65GrsNo2K9rxUQ==",
-      "dependencies": {
-        "prosemirror-model": "^1.0.0"
-      }
-    },
-    "node_modules/prosemirror-view": {
-      "version": "1.20.3",
-      "resolved": "https://registry.npmjs.org/prosemirror-view/-/prosemirror-view-1.20.3.tgz",
-      "integrity": "sha512-2ImL9K/tIEk+aC2GT8shzfmT2U0Y8UQZ13L5AY0A4Tcj09o/ICGE362gKUE3Ze/Xr/nMw61Zv5JMSQUszAj9dw==",
-      "dependencies": {
-        "prosemirror-model": "^1.14.3",
-        "prosemirror-state": "^1.0.0",
-        "prosemirror-transform": "^1.1.0"
-      }
-    },
     "node_modules/protocols": {
       "version": "1.4.8",
       "resolved": "https://registry.npmjs.org/protocols/-/protocols-1.4.8.tgz",
@@ -18691,6 +18274,7 @@
       "version": "2.58.3",
       "resolved": "https://registry.npmjs.org/rollup/-/rollup-2.58.3.tgz",
       "integrity": "sha512-ei27MSw1KhRur4p87Q0/Va2NAYqMXOX++FNEumMBcdreIRLURKy+cE2wcDJKBn0nfmhP2ZGrJkP1XPO+G8FJQw==",
+      "dev": true,
       "bin": {
         "rollup": "dist/bin/rollup"
       },
@@ -18701,11 +18285,6 @@
         "fsevents": "~2.3.2"
       }
     },
-    "node_modules/rope-sequence": {
-      "version": "1.3.2",
-      "resolved": "https://registry.npmjs.org/rope-sequence/-/rope-sequence-1.3.2.tgz",
-      "integrity": "sha512-ku6MFrwEVSVmXLvy3dYph3LAMNS0890K7fabn+0YIRQ2T96T9F4gkFf0vf0WW0JUraNWwGRtInEpH7yO4tbQZg=="
-    },
     "node_modules/run-async": {
       "version": "2.4.1",
       "resolved": "https://registry.npmjs.org/run-async/-/run-async-2.4.1.tgz",
@@ -19502,7 +19081,8 @@
     "node_modules/sprintf-js": {
       "version": "1.0.3",
       "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz",
-      "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw="
+      "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=",
+      "dev": true
     },
     "node_modules/ssf": {
       "version": "0.11.2",
@@ -21316,11 +20896,6 @@
         "node": ">=4.2.0"
       }
     },
-    "node_modules/uc.micro": {
-      "version": "1.0.6",
-      "resolved": "https://registry.npmjs.org/uc.micro/-/uc.micro-1.0.6.tgz",
-      "integrity": "sha512-8Y75pvTYkLJW2hWQHXxoqRgV7qb9B+9vFEtidML+7koHUFapnVJAZ6cKs+Qjz5Aw3aZWHMC6u0wJE3At+nSGwA=="
-    },
     "node_modules/uglify-js": {
       "version": "2.8.29",
       "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-2.8.29.tgz",
@@ -21773,11 +21348,6 @@
         "browser-process-hrtime": "^1.0.0"
       }
     },
-    "node_modules/w3c-keyname": {
-      "version": "2.2.4",
-      "resolved": "https://registry.npmjs.org/w3c-keyname/-/w3c-keyname-2.2.4.tgz",
-      "integrity": "sha512-tOhfEwEzFLJzf6d1ZPkYfGj+FWhIpBux9ppoP3rlclw3Z0BZv3N7b7030Z1kYth+6rDuAsXUFr+d0VE6Ed1ikw=="
-    },
     "node_modules/w3c-xmlserializer": {
       "version": "2.0.0",
       "resolved": "https://registry.npmjs.org/w3c-xmlserializer/-/w3c-xmlserializer-2.0.0.tgz",
@@ -23087,6 +22657,11 @@
       "resolved": "https://registry.npmjs.org/@foliojs-fork/restructure/-/restructure-2.0.2.tgz",
       "integrity": "sha512-59SgoZ3EXbkfSX7b63tsou/SDGzwUEK6MuB5sKqgVK1/XE0fxmpsOb9DQI8LXW3KfGnAjImCGhhEb7uPPAUVNA=="
     },
+    "@github/markdown-toolbar-element": {
+      "version": "1.5.3",
+      "resolved": "https://registry.npmjs.org/@github/markdown-toolbar-element/-/markdown-toolbar-element-1.5.3.tgz",
+      "integrity": "sha512-fNgAuHBWWzqxMvkTMM7ijqPryLmnPVOi4OWp8YyUC74YgtJCRvQyL7gl9SzNLMXmGQxiRVIYbUJxa61X1oRObw=="
+    },
     "@humanwhocodes/config-array": {
       "version": "0.5.0",
       "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.5.0.tgz",
@@ -23107,7 +22682,8 @@
     "@lit/reactive-element": {
       "version": "1.0.0-rc.2",
       "resolved": "https://registry.npmjs.org/@lit/reactive-element/-/reactive-element-1.0.0-rc.2.tgz",
-      "integrity": "sha512-cujeIl5Ei8FC7UHf4/4Q3bRJOtdTe1vpJV/JEBYCggedmQ+2P8A2oz7eE+Vxi6OJ4nc0X+KZxXnBoH4QrEbmEQ=="
+      "integrity": "sha512-cujeIl5Ei8FC7UHf4/4Q3bRJOtdTe1vpJV/JEBYCggedmQ+2P8A2oz7eE+Vxi6OJ4nc0X+KZxXnBoH4QrEbmEQ==",
+      "dev": true
     },
     "@mrmlnc/readdir-enhanced": {
       "version": "2.2.1",
@@ -23322,21 +22898,6 @@
       "resolved": "https://registry.npmjs.org/@popperjs/core/-/core-2.10.2.tgz",
       "integrity": "sha512-IXf3XA7+XyN7CP9gGh/XB0UxVMlvARGEgGXLubFICsUMGz6Q+DU+i4gGlpOxTjKvXjkJDJC8YdqdKkDj9qZHEQ=="
     },
-    "@rollup/plugin-multi-entry": {
-      "version": "4.0.0",
-      "resolved": "https://registry.npmjs.org/@rollup/plugin-multi-entry/-/plugin-multi-entry-4.0.0.tgz",
-      "integrity": "sha512-1Sw86rwFxrNS7ECY3iSZ7T940xKnruNGpmQDgSDVTp+VTa1g5cPXNzBgp+IoOer41CiVeGFLwYwvicVoJLHEDQ==",
-      "requires": {
-        "@rollup/plugin-virtual": "^2.0.3",
-        "matched": "^5.0.0"
-      }
-    },
-    "@rollup/plugin-virtual": {
-      "version": "2.0.3",
-      "resolved": "https://registry.npmjs.org/@rollup/plugin-virtual/-/plugin-virtual-2.0.3.tgz",
-      "integrity": "sha512-pw6ziJcyjZtntQ//bkad9qXaBx665SgEL8C8KI5wO8G5iU5MPxvdWrQyVaAvjojGm9tJoS8M9Z/EEepbqieYmw==",
-      "requires": {}
-    },
     "@semantic-release/changelog": {
       "version": "5.0.1",
       "resolved": "https://registry.npmjs.org/@semantic-release/changelog/-/changelog-5.0.1.tgz",
@@ -23919,6 +23480,12 @@
         "@types/mdurl": "*"
       }
     },
+    "@types/marked": {
+      "version": "2.0.5",
+      "resolved": "https://registry.npmjs.org/@types/marked/-/marked-2.0.5.tgz",
+      "integrity": "sha512-shRZ7XnYFD/8n8zSjKvFdto1QNSf4tONZIlNEZGrJe8GsOE8DL/hG1Hbl8gZlfLnjS7+f5tZGIaTgfpyW38h4w==",
+      "dev": true
+    },
     "@types/mdast": {
       "version": "3.0.3",
       "resolved": "https://registry.npmjs.org/@types/mdast/-/mdast-3.0.3.tgz",
@@ -24038,7 +23605,8 @@
     "@types/trusted-types": {
       "version": "1.0.6",
       "resolved": "https://registry.npmjs.org/@types/trusted-types/-/trusted-types-1.0.6.tgz",
-      "integrity": "sha512-230RC8sFeHoT6sSUlRO6a8cAnclO06eeiq1QDfiv2FGCLWFvvERWgwIQD4FWqD9A69BN7Lzee4OXwoMVnnsWDw=="
+      "integrity": "sha512-230RC8sFeHoT6sSUlRO6a8cAnclO06eeiq1QDfiv2FGCLWFvvERWgwIQD4FWqD9A69BN7Lzee4OXwoMVnnsWDw==",
+      "dev": true
     },
     "@types/unist": {
       "version": "2.0.3",
@@ -24331,6 +23899,7 @@
       "version": "1.0.10",
       "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz",
       "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==",
+      "dev": true,
       "requires": {
         "sprintf-js": "~1.0.2"
       }
@@ -26343,6 +25912,7 @@
       "integrity": "sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ==",
       "dev": true
     },
+<<<<<<< HEAD
     "crelt": {
       "version": "1.0.4",
       "resolved": "https://registry.npmjs.org/crelt/-/crelt-1.0.4.tgz",
@@ -26354,6 +25924,8 @@
       "resolved": "https://registry.npmjs.org/@types/cacheable-request/-/cacheable-request-6.0.2.tgz",
       "integrity": "sha512-B3xVo+dlKM6nnKTcmm5ZtY/OL8bOAOd2Olee9M1zft65ox50OzjEHW91sDiU9j6cvW8Ejg1/Qkf4xd2kugApUA==",
 =======
+=======
+>>>>>>> 87ca2cf (fix(md-editor): build new markdown editor with lit + github/markdown-toolbar-element)
     "cross-env": {
       "version": "7.0.3",
       "resolved": "https://registry.npmjs.org/cross-env/-/cross-env-7.0.3.tgz",
@@ -27503,48 +27075,6 @@
         "esbuild-windows-arm64": "0.13.9"
       }
     },
-    "esbuild-android-arm64": {
-      "version": "0.13.9",
-      "resolved": "https://registry.npmjs.org/esbuild-android-arm64/-/esbuild-android-arm64-0.13.9.tgz",
-      "integrity": "sha512-Ty0hKldtjJVLHwUwbKR4GFPiXBo5iQ3aE1OLBar9lh3myaRkUGEb+Ypl74LEKa0+t/9lS3Ev1N5+5P2Sq6UvNQ==",
-      "dev": true,
-      "optional": true
-    },
-    "esbuild-darwin-64": {
-      "version": "0.13.9",
-      "resolved": "https://registry.npmjs.org/esbuild-darwin-64/-/esbuild-darwin-64-0.13.9.tgz",
-      "integrity": "sha512-Ay0/b98v0oYp3ApXNQ7QPbaSkCT9WjBU6h8bMB1SYrQ/PmHgwph91fb9V0pfOLKK1rYWypfrNbI0MyT2tWN+rQ==",
-      "dev": true,
-      "optional": true
-    },
-    "esbuild-darwin-arm64": {
-      "version": "0.13.9",
-      "resolved": "https://registry.npmjs.org/esbuild-darwin-arm64/-/esbuild-darwin-arm64-0.13.9.tgz",
-      "integrity": "sha512-nJB8chaJdWathCe6EyIiMIqfyEzbuXPyNsPlL3bYRB1zFCF8feXT874D4IHbJ/w8B6BpY3sM1Clr/I/DK8E4ow==",
-      "dev": true,
-      "optional": true
-    },
-    "esbuild-freebsd-64": {
-      "version": "0.13.9",
-      "resolved": "https://registry.npmjs.org/esbuild-freebsd-64/-/esbuild-freebsd-64-0.13.9.tgz",
-      "integrity": "sha512-ktaBujf12XLkVXLGx7WjFcmh1tt34tm7gP4pHkhvbzbHrq+BbXwcl4EsW+5JT9VNKl7slOGf4Qnua/VW7ZcnIw==",
-      "dev": true,
-      "optional": true
-    },
-    "esbuild-freebsd-arm64": {
-      "version": "0.13.9",
-      "resolved": "https://registry.npmjs.org/esbuild-freebsd-arm64/-/esbuild-freebsd-arm64-0.13.9.tgz",
-      "integrity": "sha512-vVa5zps4dmwpXwv/amxVpIWvFJuUPWQkpV+PYtZUW9lqjXsQ3LBHP51Q1cXZZBIrqwszLsEyJPa5GuDOY15hzQ==",
-      "dev": true,
-      "optional": true
-    },
-    "esbuild-linux-32": {
-      "version": "0.13.9",
-      "resolved": "https://registry.npmjs.org/esbuild-linux-32/-/esbuild-linux-32-0.13.9.tgz",
-      "integrity": "sha512-HxoW9QNqhO8VW1l7aBiYQH4lobeHq85+blZ4nlZ7sg5CNhGRRwnMlV6S08VYKz6V0YKnHb5OqJxx2HZuTZ7tgQ==",
-      "dev": true,
-      "optional": true
-    },
     "esbuild-linux-64": {
       "version": "0.13.9",
       "resolved": "https://registry.npmjs.org/esbuild-linux-64/-/esbuild-linux-64-0.13.9.tgz",
@@ -27552,76 +27082,6 @@
       "dev": true,
       "optional": true
     },
-    "esbuild-linux-arm": {
-      "version": "0.13.9",
-      "resolved": "https://registry.npmjs.org/esbuild-linux-arm/-/esbuild-linux-arm-0.13.9.tgz",
-      "integrity": "sha512-DT0S+ufCVXatPZHjkCaBgZSFIV8FzY4GEHz/BlkitTWzUvT1dIUXjPIRPnqBUVa+0AyS1bZSfHzv9hTT4LHz7A==",
-      "dev": true,
-      "optional": true
-    },
-    "esbuild-linux-arm64": {
-      "version": "0.13.9",
-      "resolved": "https://registry.npmjs.org/esbuild-linux-arm64/-/esbuild-linux-arm64-0.13.9.tgz",
-      "integrity": "sha512-IjbhZpW5VQYK4nVI4dj/mLvH5oXAIf57OI8BYVkCqrdVXJwR8nVrSqux3zJSY+ElrkOK3DtG9iTPpmqvBXaU0g==",
-      "dev": true,
-      "optional": true
-    },
-    "esbuild-linux-mips64le": {
-      "version": "0.13.9",
-      "resolved": "https://registry.npmjs.org/esbuild-linux-mips64le/-/esbuild-linux-mips64le-0.13.9.tgz",
-      "integrity": "sha512-ec9RgAM4r+fe1ZmG16qeMwEHdcIvqeW8tpnpkfSQu9T4487KtQF6lg3TQasTarrLLEe7Qpy+E+r4VwC8eeZySQ==",
-      "dev": true,
-      "optional": true
-    },
-    "esbuild-linux-ppc64le": {
-      "version": "0.13.9",
-      "resolved": "https://registry.npmjs.org/esbuild-linux-ppc64le/-/esbuild-linux-ppc64le-0.13.9.tgz",
-      "integrity": "sha512-7b2/wg8T1n/L1BgCWlMSez0aXfGkNjFuOqMBQdnTti3LRuUwzGJcrhRf/FdZGJ5/evML9mqu60vLRuXW1TdXCg==",
-      "dev": true,
-      "optional": true
-    },
-    "esbuild-netbsd-64": {
-      "version": "0.13.9",
-      "resolved": "https://registry.npmjs.org/esbuild-netbsd-64/-/esbuild-netbsd-64-0.13.9.tgz",
-      "integrity": "sha512-PiZu3h4+Szj0iZPgvuD2Y0isOXnlNetmF6jMcOwW54BScwynW24/baE+z7PfDyNFgjV04Ga2THdcpbKBDhgWQw==",
-      "dev": true,
-      "optional": true
-    },
-    "esbuild-openbsd-64": {
-      "version": "0.13.9",
-      "resolved": "https://registry.npmjs.org/esbuild-openbsd-64/-/esbuild-openbsd-64-0.13.9.tgz",
-      "integrity": "sha512-SJKN4Ez+ilY7mu+1gAdGQ9N6dktBfbEkiOAvw+hT7xHrNnTnrTGH0FT4qx9dazB9HX6D04L4PXmVOyynqi+oEQ==",
-      "dev": true,
-      "optional": true
-    },
-    "esbuild-sunos-64": {
-      "version": "0.13.9",
-      "resolved": "https://registry.npmjs.org/esbuild-sunos-64/-/esbuild-sunos-64-0.13.9.tgz",
-      "integrity": "sha512-9N0RjZ7cElE8ifrS0nBrLQgBMQNPiIIKO2GzLXy7Ms8AM3KjfLiV2G2+9O0B9paXjRAHchIwazTeOyeWb1vyWA==",
-      "dev": true,
-      "optional": true
-    },
-    "esbuild-windows-32": {
-      "version": "0.13.9",
-      "resolved": "https://registry.npmjs.org/esbuild-windows-32/-/esbuild-windows-32-0.13.9.tgz",
-      "integrity": "sha512-awxWs1kns+RfjhqBbTbdlePjqZrAE2XMaAQJNg9dtu+C7ghC3QKsqXbu0C26OuF5YeAdJcq9q+IdG6WPLjvj9w==",
-      "dev": true,
-      "optional": true
-    },
-    "esbuild-windows-64": {
-      "version": "0.13.9",
-      "resolved": "https://registry.npmjs.org/esbuild-windows-64/-/esbuild-windows-64-0.13.9.tgz",
-      "integrity": "sha512-VmA9GQMCzOr8rFfD72Dum1+AWhJui7ZO6sYwp6rBHYu4vLmWITTSUsd/zgXXmZuHBPkkvxLJLF8XsKFCRKflJA==",
-      "dev": true,
-      "optional": true
-    },
-    "esbuild-windows-arm64": {
-      "version": "0.13.9",
-      "resolved": "https://registry.npmjs.org/esbuild-windows-arm64/-/esbuild-windows-arm64-0.13.9.tgz",
-      "integrity": "sha512-P/jPY2JwmTpgEPh9BkXpCe690tcDSSo0K9BHTniSeEAEz26kPpqldVa4XDm0R+hNnFA7ecEgNskr4QAxE1ry0w==",
-      "dev": true,
-      "optional": true
-    },
     "escalade": {
       "version": "3.1.1",
       "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz",
@@ -28637,12 +28097,6 @@
       "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz",
       "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8="
     },
-    "fsevents": {
-      "version": "2.3.2",
-      "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz",
-      "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==",
-      "optional": true
-    },
     "function-bind": {
       "version": "1.1.1",
       "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz",
@@ -32234,14 +31688,6 @@
       "integrity": "sha1-HADHQ7QzzQpOgHWPe2SldEDZ/wA=",
       "dev": true
     },
-    "linkify-it": {
-      "version": "2.2.0",
-      "resolved": "https://registry.npmjs.org/linkify-it/-/linkify-it-2.2.0.tgz",
-      "integrity": "sha512-GnAl/knGn+i1U/wjBz3akz2stz+HrHLsxMwHQGofCDfPvlf+gDKN58UtfmUquTY4/MXeE2x7k19KQmeoZi94Iw==",
-      "requires": {
-        "uc.micro": "^1.0.1"
-      }
-    },
     "lint-staged": {
       "version": "10.5.4",
       "resolved": "https://registry.npmjs.org/lint-staged/-/lint-staged-10.5.4.tgz",
@@ -32418,6 +31864,7 @@
       "version": "2.0.0-rc.2",
       "resolved": "https://registry.npmjs.org/lit/-/lit-2.0.0-rc.2.tgz",
       "integrity": "sha512-BOCuoJR04WaTV8UqTKk09cNcQA10Aq2LCcBOiHuF7TzWH5RNDsbCBP5QM9sLBSotGTXbDug/gFO08jq6TbyEtw==",
+      "dev": true,
       "requires": {
         "@lit/reactive-element": "^1.0.0-rc.2",
         "lit-element": "^3.0.0-rc.2",
@@ -32428,6 +31875,7 @@
       "version": "3.0.0-rc.2",
       "resolved": "https://registry.npmjs.org/lit-element/-/lit-element-3.0.0-rc.2.tgz",
       "integrity": "sha512-2Z7DabJ3b5K+p5073vFjMODoaWqy5PIaI4y6ADKm+fCGc8OnX9fU9dMoUEBZjFpd/bEFR9PBp050tUtBnT9XTQ==",
+      "dev": true,
       "requires": {
         "@lit/reactive-element": "^1.0.0-rc.2",
         "lit-html": "^2.0.0-rc.3"
@@ -32437,6 +31885,7 @@
       "version": "2.0.0-rc.3",
       "resolved": "https://registry.npmjs.org/lit-html/-/lit-html-2.0.0-rc.3.tgz",
       "integrity": "sha512-Y6P8LlAyQuqvzq6l/Nc4z5/P5M/rVLYKQIRxcNwSuGajK0g4kbcBFQqZmgvqKG+ak+dHZjfm2HUw9TF5N/pkCw==",
+      "dev": true,
       "requires": {
         "@types/trusted-types": "^1.0.1"
       }
@@ -32778,30 +32227,15 @@
         "object-visit": "^1.0.0"
       }
     },
-    "markdown-it": {
-      "version": "10.0.0",
-      "resolved": "https://registry.npmjs.org/markdown-it/-/markdown-it-10.0.0.tgz",
-      "integrity": "sha512-YWOP1j7UbDNz+TumYP1kpwnP0aEa711cJjrAQrzd0UXlbJfc5aAq0F/PZHjiioqDC1NKgvIMX+o+9Bk7yuM2dg==",
-      "requires": {
-        "argparse": "^1.0.7",
-        "entities": "~2.0.0",
-        "linkify-it": "^2.0.0",
-        "mdurl": "^1.0.1",
-        "uc.micro": "^1.0.5"
-      },
-      "dependencies": {
-        "entities": {
-          "version": "2.0.3",
-          "resolved": "https://registry.npmjs.org/entities/-/entities-2.0.3.tgz",
-          "integrity": "sha512-MyoZ0jgnLvB2X3Lg5HqpFmn1kybDiIfEQmKzTb5apr51Rb+T3KdmMiqa70T+bhGnyv7bQ6WMj2QMHpGMmlrUYQ=="
-        }
-      }
-    },
     "marked": {
       "version": "2.1.3",
       "resolved": "https://registry.npmjs.org/marked/-/marked-2.1.3.tgz",
+<<<<<<< HEAD
       "integrity": "sha512-/Q+7MGzaETqifOMWYEA7HVMaZb4XbcRfaOzcSsHZEith83KGlvaSG33u0SKu89Mj5h+T8V2hM+8O45Qc5XTgwA==",
       "dev": true
+=======
+      "integrity": "sha512-/Q+7MGzaETqifOMWYEA7HVMaZb4XbcRfaOzcSsHZEith83KGlvaSG33u0SKu89Mj5h+T8V2hM+8O45Qc5XTgwA=="
+>>>>>>> 87ca2cf (fix(md-editor): build new markdown editor with lit + github/markdown-toolbar-element)
     },
     "marked-terminal": {
       "version": "4.2.0",
@@ -32834,15 +32268,6 @@
         }
       }
     },
-    "matched": {
-      "version": "5.0.1",
-      "resolved": "https://registry.npmjs.org/matched/-/matched-5.0.1.tgz",
-      "integrity": "sha512-E1fhSTPRyhAlNaNvGXAgZQlq1hL0bgYMTk/6bktVlIhzUnX/SZs7296ACdVeNJE8xFNGSuvd9IpI7vSnmcqLvw==",
-      "requires": {
-        "glob": "^7.1.6",
-        "picomatch": "^2.2.1"
-      }
-    },
     "mathml-tag-names": {
       "version": "2.1.3",
       "resolved": "https://registry.npmjs.org/mathml-tag-names/-/mathml-tag-names-2.1.3.tgz",
@@ -32882,6 +32307,7 @@
       "integrity": "sha512-AW4DRS3QbBayY/jJmD8437V1Gombjf8RSOUCMFBuo5iHi58AGEgVCKQ+ezHkZZDpAQS75hcBMpLqjpJTjtUL7w==",
       "dev": true
     },
+<<<<<<< HEAD
     "mdn-data": {
       "version": "2.0.4",
       "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.4.tgz",
@@ -32893,6 +32319,8 @@
       "resolved": "https://registry.npmjs.org/mdurl/-/mdurl-1.0.1.tgz",
       "integrity": "sha1-/oWy7HWlkDfyrf7BAP1sYBdhFS4="
     },
+=======
+>>>>>>> 87ca2cf (fix(md-editor): build new markdown editor with lit + github/markdown-toolbar-element)
     "meow": {
       "version": "8.1.2",
       "resolved": "https://registry.npmjs.org/meow/-/meow-8.1.2.tgz",
@@ -36091,11 +35519,6 @@
         "word-wrap": "^1.2.3"
       }
     },
-    "orderedmap": {
-      "version": "1.1.1",
-      "resolved": "https://registry.npmjs.org/orderedmap/-/orderedmap-1.1.1.tgz",
-      "integrity": "sha512-3Ux8um0zXbVacKUkcytc0u3HgC0b0bBLT+I60r2J/En72cI0nZffqrA7Xtf2Hqs27j1g82llR5Mhbd0Z1XW4AQ=="
-    },
     "os-tmpdir": {
       "version": "1.0.2",
       "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz",
@@ -36383,7 +35806,8 @@
     "picomatch": {
       "version": "2.2.3",
       "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.2.3.tgz",
-      "integrity": "sha512-KpELjfwcCDUb9PeigTs2mBJzXUPzAuP2oPcA989He8Rte0+YUAjw1JVedDhuTKPkHjSYzMN3npC9luThGYEKdg=="
+      "integrity": "sha512-KpELjfwcCDUb9PeigTs2mBJzXUPzAuP2oPcA989He8Rte0+YUAjw1JVedDhuTKPkHjSYzMN3npC9luThGYEKdg==",
+      "dev": true
     },
     "pify": {
       "version": "2.3.0",
@@ -39028,145 +38452,6 @@
       "integrity": "sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==",
       "dev": true
     },
-    "prosemirror-commands": {
-      "version": "1.1.4",
-      "resolved": "https://registry.npmjs.org/prosemirror-commands/-/prosemirror-commands-1.1.4.tgz",
-      "integrity": "sha512-kj4Qi+8h3EpJtZuuEDwZ9h2/QNGWDsIX/CzjmClxi9GhxWyBUMVUvIFk0mgdqHyX20lLeGmOpc0TLA5aPzgpWg==",
-      "requires": {
-        "prosemirror-model": "^1.0.0",
-        "prosemirror-state": "^1.0.0",
-        "prosemirror-transform": "^1.0.0"
-      }
-    },
-    "prosemirror-dropcursor": {
-      "version": "1.3.2",
-      "resolved": "https://registry.npmjs.org/prosemirror-dropcursor/-/prosemirror-dropcursor-1.3.2.tgz",
-      "integrity": "sha512-4c94OUGyobGnwcQI70OXyMhE/9T4aTgjU+CHxkd5c7D+jH/J0mKM/lk+jneFVKt7+E4/M0D9HzRPifu8U28Thw==",
-      "requires": {
-        "prosemirror-state": "^1.0.0",
-        "prosemirror-transform": "^1.1.0",
-        "prosemirror-view": "^1.1.0"
-      }
-    },
-    "prosemirror-example-setup": {
-      "version": "1.1.2",
-      "resolved": "https://registry.npmjs.org/prosemirror-example-setup/-/prosemirror-example-setup-1.1.2.tgz",
-      "integrity": "sha512-MTpIMyqk08jFnzxeRMCinCEMtVSTUtxKgQBGxfCbVe9C6zIOqp9qZZJz5Ojaad1GETySyuj8+OIHHvQsIaaaGQ==",
-      "requires": {
-        "prosemirror-commands": "^1.0.0",
-        "prosemirror-dropcursor": "^1.0.0",
-        "prosemirror-gapcursor": "^1.0.0",
-        "prosemirror-history": "^1.0.0",
-        "prosemirror-inputrules": "^1.0.0",
-        "prosemirror-keymap": "^1.0.0",
-        "prosemirror-menu": "^1.0.0",
-        "prosemirror-schema-list": "^1.0.0",
-        "prosemirror-state": "^1.0.0"
-      }
-    },
-    "prosemirror-gapcursor": {
-      "version": "1.1.5",
-      "resolved": "https://registry.npmjs.org/prosemirror-gapcursor/-/prosemirror-gapcursor-1.1.5.tgz",
-      "integrity": "sha512-SjbUZq5pgsBDuV3hu8GqgIpZR5eZvGLM+gPQTqjVVYSMUCfKW3EGXTEYaLHEl1bGduwqNC95O3bZflgtAb4L6w==",
-      "requires": {
-        "prosemirror-keymap": "^1.0.0",
-        "prosemirror-model": "^1.0.0",
-        "prosemirror-state": "^1.0.0",
-        "prosemirror-view": "^1.0.0"
-      }
-    },
-    "prosemirror-history": {
-      "version": "1.1.3",
-      "resolved": "https://registry.npmjs.org/prosemirror-history/-/prosemirror-history-1.1.3.tgz",
-      "integrity": "sha512-zGDotijea+vnfnyyUGyiy1wfOQhf0B/b6zYcCouBV8yo6JmrE9X23M5q7Nf/nATywEZbgRLG70R4DmfSTC+gfg==",
-      "requires": {
-        "prosemirror-state": "^1.2.2",
-        "prosemirror-transform": "^1.0.0",
-        "rope-sequence": "^1.3.0"
-      }
-    },
-    "prosemirror-inputrules": {
-      "version": "1.1.2",
-      "resolved": "https://registry.npmjs.org/prosemirror-inputrules/-/prosemirror-inputrules-1.1.2.tgz",
-      "integrity": "sha512-Ja5Z3BWestlHYGvtSGqyvxMeB8QEuBjlHM8YnKtLGUXMDp965qdDV4goV8lJb17kIWHk7e7JNj6Catuoa3302g==",
-      "requires": {
-        "prosemirror-state": "^1.0.0",
-        "prosemirror-transform": "^1.0.0"
-      }
-    },
-    "prosemirror-keymap": {
-      "version": "1.1.4",
-      "resolved": "https://registry.npmjs.org/prosemirror-keymap/-/prosemirror-keymap-1.1.4.tgz",
-      "integrity": "sha512-Al8cVUOnDFL4gcI5IDlG6xbZ0aOD/i3B17VT+1JbHWDguCgt/lBHVTHUBcKvvbSg6+q/W4Nj1Fu6bwZSca3xjg==",
-      "requires": {
-        "prosemirror-state": "^1.0.0",
-        "w3c-keyname": "^2.2.0"
-      }
-    },
-    "prosemirror-markdown": {
-      "version": "1.5.1",
-      "resolved": "https://registry.npmjs.org/prosemirror-markdown/-/prosemirror-markdown-1.5.1.tgz",
-      "integrity": "sha512-QvucPHx+gKOQW1SETKUysrful9VBjKqpCFmPotgLfVZ3BdQEGy/NEIFhaXXo3TcuW316MMnKfA90K7GE5I7z8A==",
-      "requires": {
-        "markdown-it": "^10.0.0",
-        "prosemirror-model": "^1.0.0"
-      }
-    },
-    "prosemirror-menu": {
-      "version": "1.1.4",
-      "resolved": "https://registry.npmjs.org/prosemirror-menu/-/prosemirror-menu-1.1.4.tgz",
-      "integrity": "sha512-2ROsji/X9ciDnVSRvSTqFygI34GEdHfQSsK4zBKjPxSEroeiHHcdRMS1ofNIf2zM0Vpp5/YqfpxynElymQkqzg==",
-      "requires": {
-        "crelt": "^1.0.0",
-        "prosemirror-commands": "^1.0.0",
-        "prosemirror-history": "^1.0.0",
-        "prosemirror-state": "^1.0.0"
-      }
-    },
-    "prosemirror-model": {
-      "version": "1.15.0",
-      "resolved": "https://registry.npmjs.org/prosemirror-model/-/prosemirror-model-1.15.0.tgz",
-      "integrity": "sha512-hQJv7SnIhlAy9ga3lhPPgaufhvCbQB9tHwscJ9E1H1pPHmN8w5V/lURueoYv9Kc3/bpNWoyHa8r3g//m7N0ChQ==",
-      "requires": {
-        "orderedmap": "^1.1.0"
-      }
-    },
-    "prosemirror-schema-list": {
-      "version": "1.1.2",
-      "resolved": "https://registry.npmjs.org/prosemirror-schema-list/-/prosemirror-schema-list-1.1.2.tgz",
-      "integrity": "sha512-dgM9PwtM4twa5WsgSYMB+J8bwjnR43DAD3L9MsR9rKm/nZR5Y85xcjB7gusVMSsbQ2NomMZF03RE6No6mTnclQ==",
-      "requires": {
-        "prosemirror-model": "^1.0.0",
-        "prosemirror-transform": "^1.0.0"
-      }
-    },
-    "prosemirror-state": {
-      "version": "1.3.4",
-      "resolved": "https://registry.npmjs.org/prosemirror-state/-/prosemirror-state-1.3.4.tgz",
-      "integrity": "sha512-Xkkrpd1y/TQ6HKzN3agsQIGRcLckUMA9u3j207L04mt8ToRgpGeyhbVv0HI7omDORIBHjR29b7AwlATFFf2GLA==",
-      "requires": {
-        "prosemirror-model": "^1.0.0",
-        "prosemirror-transform": "^1.0.0"
-      }
-    },
-    "prosemirror-transform": {
-      "version": "1.2.7",
-      "resolved": "https://registry.npmjs.org/prosemirror-transform/-/prosemirror-transform-1.2.7.tgz",
-      "integrity": "sha512-/107Lo2zeDgXuJBxb8s/clNu0Z2W8Gv3MKmkuSS/68Mcr7LBaUnN/Hj2g+GUxEJ7MpExCzFs65GrsNo2K9rxUQ==",
-      "requires": {
-        "prosemirror-model": "^1.0.0"
-      }
-    },
-    "prosemirror-view": {
-      "version": "1.20.3",
-      "resolved": "https://registry.npmjs.org/prosemirror-view/-/prosemirror-view-1.20.3.tgz",
-      "integrity": "sha512-2ImL9K/tIEk+aC2GT8shzfmT2U0Y8UQZ13L5AY0A4Tcj09o/ICGE362gKUE3Ze/Xr/nMw61Zv5JMSQUszAj9dw==",
-      "requires": {
-        "prosemirror-model": "^1.14.3",
-        "prosemirror-state": "^1.0.0",
-        "prosemirror-transform": "^1.1.0"
-      }
-    },
     "protocols": {
       "version": "1.4.8",
       "resolved": "https://registry.npmjs.org/protocols/-/protocols-1.4.8.tgz",
@@ -39676,15 +38961,11 @@
       "version": "2.58.3",
       "resolved": "https://registry.npmjs.org/rollup/-/rollup-2.58.3.tgz",
       "integrity": "sha512-ei27MSw1KhRur4p87Q0/Va2NAYqMXOX++FNEumMBcdreIRLURKy+cE2wcDJKBn0nfmhP2ZGrJkP1XPO+G8FJQw==",
+      "dev": true,
       "requires": {
         "fsevents": "~2.3.2"
       }
     },
-    "rope-sequence": {
-      "version": "1.3.2",
-      "resolved": "https://registry.npmjs.org/rope-sequence/-/rope-sequence-1.3.2.tgz",
-      "integrity": "sha512-ku6MFrwEVSVmXLvy3dYph3LAMNS0890K7fabn+0YIRQ2T96T9F4gkFf0vf0WW0JUraNWwGRtInEpH7yO4tbQZg=="
-    },
     "run-async": {
       "version": "2.4.1",
       "resolved": "https://registry.npmjs.org/run-async/-/run-async-2.4.1.tgz",
@@ -40343,7 +39624,8 @@
     "sprintf-js": {
       "version": "1.0.3",
       "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz",
-      "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw="
+      "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=",
+      "dev": true
     },
     "ssf": {
       "version": "0.11.2",
@@ -41638,11 +40920,6 @@
       "integrity": "sha512-DqGhF5IKoBl8WNf8C1gu8q0xZSInh9j1kJJMqT3a94w1JzVaBU4EXOSMrz9yDqMT0xt3selp83fuFMQ0uzv6qA==",
       "dev": true
     },
-    "uc.micro": {
-      "version": "1.0.6",
-      "resolved": "https://registry.npmjs.org/uc.micro/-/uc.micro-1.0.6.tgz",
-      "integrity": "sha512-8Y75pvTYkLJW2hWQHXxoqRgV7qb9B+9vFEtidML+7koHUFapnVJAZ6cKs+Qjz5Aw3aZWHMC6u0wJE3At+nSGwA=="
-    },
     "uglify-js": {
       "version": "2.8.29",
       "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-2.8.29.tgz",
@@ -41979,11 +41256,6 @@
         "browser-process-hrtime": "^1.0.0"
       }
     },
-    "w3c-keyname": {
-      "version": "2.2.4",
-      "resolved": "https://registry.npmjs.org/w3c-keyname/-/w3c-keyname-2.2.4.tgz",
-      "integrity": "sha512-tOhfEwEzFLJzf6d1ZPkYfGj+FWhIpBux9ppoP3rlclw3Z0BZv3N7b7030Z1kYth+6rDuAsXUFr+d0VE6Ed1ikw=="
-    },
     "w3c-xmlserializer": {
       "version": "2.0.0",
       "resolved": "https://registry.npmjs.org/w3c-xmlserializer/-/w3c-xmlserializer-2.0.0.tgz",
diff --git a/package.json b/package.json
index 853c3bc152a70305d711822fe761bcdb7ef074c5..73906c6513922ef1a430c1e633f174b54a013187 100644
--- a/package.json
+++ b/package.json
@@ -28,19 +28,16 @@
     "prepare": "is-ci || husky install"
   },
   "dependencies": {
-    "@amcharts/amcharts4": "^4.10.20",
     "@amcharts/amcharts4-geodata": "^4.1.21",
+    "@amcharts/amcharts4": "^4.10.20",
+    "@github/markdown-toolbar-element": "^1.5.1",
     "@popperjs/core": "^2.9.2",
-    "@rollup/plugin-multi-entry": "^4.0.0",
     "choices.js": "^9.0.1",
     "flatpickr": "^4.6.9",
-    "leaflet": "^1.7.1",
     "leaflet.markercluster": "^1.5.1",
+    "leaflet": "^1.7.1",
     "lit": "^2.0.0-rc.2",
-    "prosemirror-example-setup": "^1.1.2",
-    "prosemirror-markdown": "^1.5.1",
-    "prosemirror-state": "^1.3.4",
-    "prosemirror-view": "^1.18.11"
+    "marked": "^2.1.3"
   },
   "devDependencies": {
     "@commitlint/cli": "^13.1.0",
@@ -53,31 +50,33 @@
     "@tailwindcss/line-clamp": "^0.2.1",
     "@tailwindcss/typography": "^0.4.1",
     "@types/leaflet": "^1.7.5",
+    "@types/marked": "^2.0.4",
     "@types/prosemirror-markdown": "^1.5.2",
     "@types/prosemirror-view": "^1.18.0",
-    "@typescript-eslint/eslint-plugin": "^4.28.4",
-    "@typescript-eslint/parser": "^4.28.4",
+    "@typescript-eslint/eslint-plugin": "^4.28.5",
+    "@typescript-eslint/parser": "^4.28.5",
     "cpy-cli": "^3.1.1",
     "cross-env": "^7.0.3",
     "cssnano": "^5.0.7",
     "cz-conventional-changelog": "^3.3.0",
-    "eslint": "^7.31.0",
     "eslint-config-prettier": "^8.3.0",
     "eslint-plugin-prettier": "^3.4.0",
+    "eslint": "^7.31.0",
     "husky": "^7.0.1",
     "is-ci": "^3.0.0",
     "lint-staged": "^11.1.1",
+    "lit": "^2.0.0-rc.2",
     "postcss-import": "^14.0.2",
     "postcss-preset-env": "^6.7.0",
-    "prettier": "2.3.2",
     "prettier-plugin-organize-imports": "^2.3.3",
+    "prettier": "2.3.2",
     "semantic-release": "^17.4.4",
-    "stylelint": "^13.13.1",
     "stylelint-config-standard": "^22.0.0",
+    "stylelint": "^13.13.1",
     "svgo": "^2.3.1",
     "tailwindcss": "^2.2.7",
     "typescript": "^4.3.5",
-    "vite": "^2.4.3"
+    "vite": "^2.4.4"
   },
   "lint-staged": {
     "*.{js,ts,css,md,json}": "prettier --write",