diff --git a/browser/package.json b/browser/package.json
index 2bb27da..4bd8539 100644
--- a/browser/package.json
+++ b/browser/package.json
@@ -13,6 +13,21 @@
"@testing-library/jest-dom": "^5.14.1",
"@testing-library/react": "^12.0.0",
"@testing-library/user-event": "^13.2.1",
+ "@tiptap/core": "^2.0.0-beta.163",
+ "@tiptap/extension-bold": "^2.0.0-beta.25",
+ "@tiptap/extension-bubble-menu": "^2.0.0-beta.54",
+ "@tiptap/extension-character-count": "^2.0.0-beta.24",
+ "@tiptap/extension-document": "^2.0.0-beta.15",
+ "@tiptap/extension-history": "^2.0.0-beta.21",
+ "@tiptap/extension-italic": "^2.0.0-beta.25",
+ "@tiptap/extension-link": "^2.0.0-beta.35",
+ "@tiptap/extension-paragraph": "^2.0.0-beta.23",
+ "@tiptap/extension-placeholder": "^2.0.0-beta.46",
+ "@tiptap/extension-text": "^2.0.0-beta.15",
+ "@tiptap/extension-underline": "^2.0.0-beta.22",
+ "@tiptap/html": "^2.0.0-beta.162",
+ "@tiptap/react": "^2.0.0-beta.105",
+ "@tiptap/starter-kit": "^2.0.0-beta.171",
"@types/jest": "^27.0.1",
"@types/node": "^16.7.13",
"@types/react": "^17.0.20",
@@ -25,6 +40,7 @@
"glsl-rotate": "^1.1.0",
"glslify-loader": "^2.0.0",
"gsap": "^3.9.1",
+ "html-react-parser": "^1.4.5",
"ipfs-http-client": "^55.0.0",
"node-polyfill-webpack-plugin": "^1.1.4",
"raw-loader": "^4.0.2",
@@ -33,10 +49,13 @@
"react-helmet": "^6.1.0",
"react-icons": "^4.3.1",
"react-intersection-observer": "^8.33.1",
+ "react-modal": "^3.14.4",
"react-router-dom": "^6.2.1",
"react-scripts": "5.0.0",
+ "sanitize-html": "^2.6.1",
"stream-browserify": "^3.0.0",
"three": "^0.135.0",
+ "tippy.js": "^6.3.7",
"typescript": "^4.4.2",
"web-vitals": "^2.1.0",
"webpack": "^5.66.0"
diff --git a/browser/src/components/ContributionCard.tsx b/browser/src/components/ContributionCard.tsx
index f129b13..7922d24 100644
--- a/browser/src/components/ContributionCard.tsx
+++ b/browser/src/components/ContributionCard.tsx
@@ -14,6 +14,9 @@ import {
import { getPatternPlaceholder } from "src/types";
import { getDisplayForAuthor } from "./SignatureContent";
+import sanitizeHtml from "sanitize-html";
+import parse from 'html-react-parser';
+
interface Props {
contribution: Contribution;
hideHeader?: boolean;
@@ -47,6 +50,8 @@ export function ContributionCard({
const authorDisplay = getDisplayForAuthor(author, true);
const date = dayjs(createdAt, { utc: true });
const dateDisplay = date.format("MMM, YYYY");
+
+ const responseHtml = parse(sanitizeHtml(response));
return (
{getPatternPlaceholder(pattern, prompt)},
})}{" "}
- {response}
+ {responseHtml}
(undefined);
+ const [responseLength, setResponseLength] = useState(undefined);
const [user, setUser] = useState();
const [provider, setProvider] = useState<
ethers.providers.Web3Provider | undefined
@@ -548,6 +549,8 @@ export function ContributionSection() {
value={response}
onChange={setResponse}
className="responseInput"
+ responseLength={responseLength}
+ setResponseLength={setResponseLength}
// TODO: make this populate an actual live preview from an example?? and shuffle?
extraProps={{
placeholder: "free gardens",
@@ -557,7 +560,7 @@ export function ContributionSection() {
}
- {response?.length || 0} / {ResponseCharacterLimit}
+ {responseLength || 0} / {ResponseCharacterLimit}
>
)}
diff --git a/browser/src/components/core/AutoGrowInput.css b/browser/src/components/core/AutoGrowInput.css
index c7d5a32..1e5af0c 100644
--- a/browser/src/components/core/AutoGrowInput.css
+++ b/browser/src/components/core/AutoGrowInput.css
@@ -40,5 +40,5 @@
font: inherit;
/* Place on top of each other */
- grid-area: 1 / 1 / 2 / 2;
+ /*grid-area: 1 / 1 / 2 / 2;*/
}
diff --git a/browser/src/components/core/AutoGrowInput.tsx b/browser/src/components/core/AutoGrowInput.tsx
index 41153f4..6293a5e 100644
--- a/browser/src/components/core/AutoGrowInput.tsx
+++ b/browser/src/components/core/AutoGrowInput.tsx
@@ -1,9 +1,12 @@
import { InputHTMLAttributes } from "react";
import "./AutoGrowInput.css";
+import { Editor } from "./Editor";
interface Props {
value?: string;
onChange: (value: string) => void;
+ responseLength: number | undefined;
+ setResponseLength: (value: number) => void;
className?: string;
extraProps?: InputHTMLAttributes
;
}
@@ -11,6 +14,8 @@ interface Props {
export function AutoGrowInput({
value,
onChange,
+ responseLength,
+ setResponseLength,
extraProps,
className,
}: Props) {
@@ -45,20 +50,16 @@ export function AutoGrowInput({
// >
// {value}
//
-
- {/*
*/}
-
-
-
- //
- // {!value ? extraProps?.placeholder : ""}
- //
+ <>
+
+
+
+ >
);
}
diff --git a/browser/src/components/core/Editor.css b/browser/src/components/core/Editor.css
new file mode 100755
index 0000000..20de53b
--- /dev/null
+++ b/browser/src/components/core/Editor.css
@@ -0,0 +1,136 @@
+.ProseMirror {
+ /* You could leave this, but after a user resizes, then it ruins the auto sizing */
+ resize: none;
+
+ /* Firefox shows scrollbar on growth, you can hide like this. */
+ overflow: hidden;
+
+ /* Identical styling required!! */
+ border: 1px solid black;
+ padding: 0.5rem;
+ font: inherit;
+
+ width: 300px;
+ min-height: 200px;
+ max-height: 200px;
+
+ background-color: hsla(0,0%,100%,.1)
+}
+
+/* Placeholder (at the top) */
+.ProseMirror p.is-editor-empty:first-child::before {
+ color: #adb5bd;
+ content: attr(data-placeholder);
+ float: left;
+ height: 0;
+ pointer-events: none;
+}
+
+.ProseMirror > p {
+ padding-top: 0;
+ font-size: inherit;
+}
+
+.ProseMirror > p::selection{
+ background: rgba(198, 142, 255, 0.5);
+}
+
+.ProseMirror > code {
+ padding-top: 0;
+ font-size: inherit;
+}
+
+.ProseMirror > a {
+ padding-top: 0;
+ font-size: inherit;
+}
+
+.contenteditableSpan {
+ display:inline-block;
+ border: solid 1px black;
+ background: white;
+ min-width: 200px;
+ padding: 0 2px;
+}
+
+.menu {
+ border: 1px solid black;
+ border-bottom: 0px;
+ padding: 0.25rem;
+ background-color: hsla(0,0%,100%,.1);
+ border-radius: 0.375rem 0.375rem 0 0;
+ width: 100%;
+ display: inline-block;
+}
+
+.menuItem {
+ margin-left: 0.5rem;
+ margin-right: 0.5rem;
+}
+
+
+.linkInput {
+ font: inherit;
+ padding-top: 0;
+ padding-bottom: 0;
+ border-radius: 0.375rem;
+ width: 100%;
+ margin-top: 24px;
+}
+
+.modal {
+ background-color: hsla(0, 0%, 15%, 1);
+ width:100%;
+ max-width:576px;
+ padding:3rem;
+ position:relative;
+ border-radius:0.375rem;
+ z-index: 9999;
+}
+
+.linkIcon {
+ font-size: 85%;
+ padding-left: 2px;
+}
+
+.white {
+ text-align: center;
+
+ background: white;
+ background-size: 200% auto;
+
+ color: white;
+ background-clip: text;
+ text-fill-color: transparent;
+ -webkit-background-clip: text;
+ -webkit-text-fill-color: transparent;
+}
+
+.modalButtons {
+ margin-top: 24px;
+ width: 100%;
+ display: flex;
+ justify-content: flex-end;
+}
+
+.addButton {
+ padding-left: 6px;
+}
+
+.cancelButton {
+ padding-right: 6px;
+}
+
+.overlay {
+ background-color: hsla(0,0%,100%,.1);
+ position: fixed;
+ top: 0;
+ left: 0;
+ right: 0;
+ bottom: 0;
+
+ display:flex;
+ align-items: center;
+ justify-content:center;
+ z-index: 8000;
+}
diff --git a/browser/src/components/core/Editor.tsx b/browser/src/components/core/Editor.tsx
new file mode 100755
index 0000000..617ac46
--- /dev/null
+++ b/browser/src/components/core/Editor.tsx
@@ -0,0 +1,225 @@
+import React, { useCallback, useState } from "react";
+import Modal from "react-modal";
+
+// Tiptap + extensions
+import { useEditor, EditorContent } from "@tiptap/react";
+import Document from "@tiptap/extension-document";
+import Paragraph from "@tiptap/extension-paragraph";
+import Text from "@tiptap/extension-text";
+import Bold from "@tiptap/extension-bold";
+import Italic from "@tiptap/extension-italic";
+import Link from "@tiptap/extension-link";
+import Placeholder from "@tiptap/extension-placeholder";
+import History from "@tiptap/extension-history";
+import CharacterCount from "@tiptap/extension-character-count";
+
+import { ButtonClass } from "src/types/styles";
+import { ResponseCharacterLimit } from "../ContributionSection";
+import "./Editor.css";
+
+interface Props {
+ value?: string;
+ onChange: (value: string) => void;
+ responseLength: number | undefined;
+ setResponseLength: (value: number) => void;
+ placeholder?: string;
+}
+
+Modal.setAppElement("#root");
+export function Editor({
+ value,
+ onChange,
+ responseLength,
+ setResponseLength,
+ placeholder,
+}: Props) {
+ const [linkInput, setLinkInput] = useState
(null);
+ const [displayLinkModal, setDisplayLinkModal] = useState(false);
+
+ const sanitize = (inputHtml: string): string => {
+ // Remove first p tag to prevent text going to next line
+ return inputHtml.replace(
+ /]*>|<\/p[^>]*>/,
+ ""
+ );
+ };
+
+ const openModal = () => {
+ setDisplayLinkModal(true)
+ toggleBackgroundScrollingOnModal(false);
+ }
+
+ // Set Cmd/Ctrl-k shortcut
+ const CustomLink = Link.extend({
+ addKeyboardShortcuts() {
+ return {
+ 'Mod-k': () => openModal(),
+ }
+ },
+ })
+
+ const editor = useEditor({
+ extensions: [
+ Document,
+ Paragraph,
+ Text,
+ History,
+ Bold,
+ Italic,
+ CustomLink,
+ CharacterCount.configure({
+ limit: ResponseCharacterLimit,
+ }),
+ Placeholder.configure({
+ placeholder: `${placeholder}`,
+ }),
+ ],
+ onUpdate: ({ editor }) => {
+ onChange(
+ sanitize(
+ editor.getHTML()
+ )
+ );
+ setResponseLength(editor.storage.characterCount.characters());
+ },
+ })
+
+ const setLink = (cancel: boolean) => {
+ if (cancel) {
+ // Previous url
+ return editor.getAttributes('link').href;
+ }
+ var url = linkInput;
+
+ // TODO: Add Link validation
+
+ if (url === "" || url === null || url === undefined) {
+ //editor.chain().focus().extendMarkRange('link').unsetLink().run()
+ editor.chain().focus().unsetLink().run()
+ return
+ }
+
+ // Add so href doesn't point to pluriverse.world/{url}
+ if (
+ !(url.toLowerCase().startsWith("https://")
+ || url.toLowerCase().startsWith("http://"))
+ ) {
+ url = "http://" + url;
+ }
+
+ // Update link
+ editor.chain().focus().setLink({ href: url }).run()
+ };
+
+ const onClickAddLink = () => {
+ setLink(false);
+ setDisplayLinkModal(false);
+ setLinkInput(null);
+ toggleBackgroundScrollingOnModal(true)
+ };
+
+ const onCloseModal = () => {
+ setLink(true);
+ setDisplayLinkModal(false);
+ setLinkInput(null);
+ toggleBackgroundScrollingOnModal(true);
+ };
+
+ const getPreviousLink = () => {
+ const prevUrl = editor.getAttributes('link').href;
+ setLinkInput(prevUrl);
+ }
+
+ const toggleBackgroundScrollingOnModal = (scrollable: boolean) => {
+ if (scrollable) {
+ document.body.style.overflow = "scroll";
+ } else {
+ document.body.style.overflow = "hidden";
+ }
+ }
+
+ const handleKeyPress = (event) => {
+ // Enter key press
+ if (event.key === "Enter") {
+ onClickAddLink();
+ }
+ }
+
+ return (
+ <>
+ {editor &&
+ <>
+
+
+
+
+
+ >
+ }
+ onCloseModal()}
+ shouldCloseOnOverlayClick={true}
+ >
+
+ Add Link
+
+
+ {
+ setLinkInput(e.target.value)
+ }}
+ onKeyPress={handleKeyPress}
+ autoFocus
+ />
+
+
+
+
+
+
+
+
+
+
+
+ >
+ )
+}
diff --git a/browser/yarn.lock b/browser/yarn.lock
index b9fe462..054837c 100644
--- a/browser/yarn.lock
+++ b/browser/yarn.lock
@@ -1777,6 +1777,11 @@
schema-utils "^3.0.0"
source-map "^0.7.3"
+"@popperjs/core@^2.9.0":
+ version "2.11.2"
+ resolved "https://registry.yarnpkg.com/@popperjs/core/-/core-2.11.2.tgz#830beaec4b4091a9e9398ac50f865ddea52186b9"
+ integrity sha512-92FRmppjjqz29VMJ2dn+xdyXZBrMlE42AV6Kq6BwjWV7CNUW1hs2FtxSNLQE+gJhaZ6AAmYuO9y8dshhcBl7vA==
+
"@protobufjs/aspromise@^1.1.1", "@protobufjs/aspromise@^1.1.2":
version "1.1.2"
resolved "https://registry.yarnpkg.com/@protobufjs/aspromise/-/aspromise-1.1.2.tgz#9b8b0cc663d669a7d8f6f5d0893a14d348f30fbf"
@@ -2151,6 +2156,218 @@
dependencies:
"@babel/runtime" "^7.12.5"
+"@tiptap/core@^2.0.0-beta.163":
+ version "2.0.0-beta.163"
+ resolved "https://registry.yarnpkg.com/@tiptap/core/-/core-2.0.0-beta.163.tgz#f9a64b4bb1597f1ab08a8fd8086cf718545737fa"
+ integrity sha512-Rg2UaAhmb9z6eunQ5D6dSEO/e4zK2cfIuYJniB87o8nLogaNBNKkhy6Q2kZB1PpYLIpbl0C/DdHIQ7QYy92ZAg==
+ dependencies:
+ "@types/prosemirror-commands" "^1.0.4"
+ "@types/prosemirror-keymap" "^1.0.4"
+ "@types/prosemirror-model" "^1.16.0"
+ "@types/prosemirror-schema-list" "^1.0.3"
+ "@types/prosemirror-state" "^1.2.8"
+ "@types/prosemirror-transform" "^1.1.5"
+ "@types/prosemirror-view" "^1.19.2"
+ prosemirror-commands "^1.1.12"
+ prosemirror-keymap "^1.1.5"
+ prosemirror-model "^1.16.1"
+ prosemirror-schema-list "^1.1.6"
+ prosemirror-state "^1.3.4"
+ prosemirror-transform "^1.3.3"
+ prosemirror-view "^1.23.5"
+
+"@tiptap/extension-blockquote@^2.0.0-beta.26":
+ version "2.0.0-beta.26"
+ resolved "https://registry.yarnpkg.com/@tiptap/extension-blockquote/-/extension-blockquote-2.0.0-beta.26.tgz#e5ae4b7bd9376db37407a23e22080c7b11287f3b"
+ integrity sha512-A6yjcYovONJfOjQFk6vDYXswaCdCtCwjL7w9VTB0R2DLTuJvvRt9DWN0IDcMrj5G+aMgDq4GUUTitv+2Y8krDg==
+
+"@tiptap/extension-bold@^2.0.0-beta.25":
+ version "2.0.0-beta.25"
+ resolved "https://registry.yarnpkg.com/@tiptap/extension-bold/-/extension-bold-2.0.0-beta.25.tgz#ec19e7c862d25bae49609c5d6a873f372c506dee"
+ integrity sha512-ZNdgFYDxKo8lAp0Pqzu45I0JH3ah8/X5TCYg9zNg3QwLUFT16g2LlWDMUDGT5pH9aXxgtFaEdoVacu0EyhlPnQ==
+
+"@tiptap/extension-bubble-menu@^2.0.0-beta.54":
+ version "2.0.0-beta.54"
+ resolved "https://registry.yarnpkg.com/@tiptap/extension-bubble-menu/-/extension-bubble-menu-2.0.0-beta.54.tgz#90ac838cb7899317207037abb74ed2f68528bd22"
+ integrity sha512-jSvNy+ZVHIzEvf8BY/pLpir7CB4lWL4RNUWLT6YMmGCzdzYJK3RZ6Qp0Yoo7UMTjA5JDGn3Ax1lDj4qcsoXwzA==
+ dependencies:
+ prosemirror-state "^1.3.4"
+ prosemirror-view "^1.23.5"
+ tippy.js "^6.3.7"
+
+"@tiptap/extension-bullet-list@^2.0.0-beta.26":
+ version "2.0.0-beta.26"
+ resolved "https://registry.yarnpkg.com/@tiptap/extension-bullet-list/-/extension-bullet-list-2.0.0-beta.26.tgz#b42126d2d984c04041b14037e8d3ec1bcf16e7ec"
+ integrity sha512-1n5HV8gY1tLjPk4x48nva6SZlFHoPlRfF6pqSu9JcJxPO7FUSPxUokuz4swYNe0LRrtykfyNz44dUcxKVhoFow==
+
+"@tiptap/extension-character-count@^2.0.0-beta.24":
+ version "2.0.0-beta.24"
+ resolved "https://registry.yarnpkg.com/@tiptap/extension-character-count/-/extension-character-count-2.0.0-beta.24.tgz#8b5dba59be75343b0d660c59656acbb0a0eb4c4b"
+ integrity sha512-zMe+iNmHypvGQop5yV6xLetXvgEx7oMXJUvX+WwvtjZwx+/jJKLOzsR5EVt0vY/T5P5VCC8hkTseQhgrv4p72w==
+
+"@tiptap/extension-code-block@^2.0.0-beta.35":
+ version "2.0.0-beta.35"
+ resolved "https://registry.yarnpkg.com/@tiptap/extension-code-block/-/extension-code-block-2.0.0-beta.35.tgz#32cfb1cdeb849701a4a143985598d16e5ffa20d3"
+ integrity sha512-8SIP45Bl/mii3mdRdVPCF3yJGU37Nt2EJiU9eyfTzQSMbaf9Vf1Kop39tjKdbjTrsZ3W7Lnycj+q4x18Zusb6Q==
+ dependencies:
+ prosemirror-state "^1.3.4"
+
+"@tiptap/extension-code@^2.0.0-beta.26":
+ version "2.0.0-beta.26"
+ resolved "https://registry.yarnpkg.com/@tiptap/extension-code/-/extension-code-2.0.0-beta.26.tgz#bbfa600a252ee2cded6947b56b6c4c33d998e53a"
+ integrity sha512-QcFWdEFfbJ1n5UFFBD17QPPAJ3J5p/b7XV484u0shCzywO7aNPV32QeHy1z0eMoyZtCbOWf6hg/a7Ugv8IwpHw==
+
+"@tiptap/extension-document@^2.0.0-beta.15":
+ version "2.0.0-beta.15"
+ resolved "https://registry.yarnpkg.com/@tiptap/extension-document/-/extension-document-2.0.0-beta.15.tgz#5d17a0289244a913ab2ef08e8495a1e46950711e"
+ integrity sha512-ypENC+xUYD5m2t+KOKNYqyXnanXd5fxyIyhR1qeEEwwQwMXGNrO3kCH6O4mIDCpy+/WqHvVay2tV5dVsXnvY8w==
+
+"@tiptap/extension-dropcursor@^2.0.0-beta.25":
+ version "2.0.0-beta.25"
+ resolved "https://registry.yarnpkg.com/@tiptap/extension-dropcursor/-/extension-dropcursor-2.0.0-beta.25.tgz#962f290a200259533a26194daca5a4b4a53e72d3"
+ integrity sha512-GYf5s6dkZtsDy+TEkrQK6kLbfbitG4qnk02D+FlhlJMI/Nnx8rYCRJbwEHDdqrfX7XwZzULMqqqHvzxZYrEeNg==
+ dependencies:
+ "@types/prosemirror-dropcursor" "^1.0.3"
+ prosemirror-dropcursor "^1.4.0"
+
+"@tiptap/extension-floating-menu@^2.0.0-beta.49":
+ version "2.0.0-beta.49"
+ resolved "https://registry.yarnpkg.com/@tiptap/extension-floating-menu/-/extension-floating-menu-2.0.0-beta.49.tgz#36682849f50e217137775d7f738af952a0434113"
+ integrity sha512-VY0d+fJmz8FP1CxqB9u09xCZe/9Wtwff+SxY+LGpflVf0JjS+CWcaVIDNF8zHG13SMobQ5xH6RRnSuTzlS2bRA==
+ dependencies:
+ prosemirror-state "^1.3.4"
+ prosemirror-view "^1.23.5"
+ tippy.js "^6.3.7"
+
+"@tiptap/extension-gapcursor@^2.0.0-beta.34":
+ version "2.0.0-beta.34"
+ resolved "https://registry.yarnpkg.com/@tiptap/extension-gapcursor/-/extension-gapcursor-2.0.0-beta.34.tgz#0e4971affb1621934422dd5fc4bf2dd7a84f70f7"
+ integrity sha512-Vm8vMWWQ2kJcUOLfB5CEo5pYgyudI7JeeiZvX9ScPmUmgKVYhEpt3EAICY9pUYJ41aAVH35gZLXkUtsz2f9GHw==
+ dependencies:
+ "@types/prosemirror-gapcursor" "^1.0.4"
+ prosemirror-gapcursor "^1.2.1"
+
+"@tiptap/extension-hard-break@^2.0.0-beta.30":
+ version "2.0.0-beta.30"
+ resolved "https://registry.yarnpkg.com/@tiptap/extension-hard-break/-/extension-hard-break-2.0.0-beta.30.tgz#165494f1194a7bad08907e6d64d349dd15851b72"
+ integrity sha512-X9xj/S+CikrbIE7ccUFVwit5QHEbflnKVxod+4zPwr1cxogFbE9AyLZE2MpYdx3z9LcnTYYi9leBqFrP4T/Olw==
+
+"@tiptap/extension-heading@^2.0.0-beta.25":
+ version "2.0.0-beta.25"
+ resolved "https://registry.yarnpkg.com/@tiptap/extension-heading/-/extension-heading-2.0.0-beta.25.tgz#80d88cd0269e824b6b2e3e4dcd60280aff83c906"
+ integrity sha512-7cK2gB3eqb7U0KmpWIPT7tsHGuVeFk4q1q/V6q91NTtZ4HdOMAyFuYTZu1iXufKyoEXTftByE85EYsfJGeGiRQ==
+
+"@tiptap/extension-history@^2.0.0-beta.21":
+ version "2.0.0-beta.21"
+ resolved "https://registry.yarnpkg.com/@tiptap/extension-history/-/extension-history-2.0.0-beta.21.tgz#5d96a17a83a7130744f0757a3275dd5b11eb1bf7"
+ integrity sha512-0v8Cl30V4dsabdpspLdk+f+lMoIvLFlJN5WRxtc7RRZ5gfJVxPHwooIKdvC51brfh/oJtWFCNMRjhoz0fRaF9A==
+ dependencies:
+ "@types/prosemirror-history" "^1.0.3"
+ prosemirror-history "^1.2.0"
+
+"@tiptap/extension-horizontal-rule@^2.0.0-beta.30":
+ version "2.0.0-beta.30"
+ resolved "https://registry.yarnpkg.com/@tiptap/extension-horizontal-rule/-/extension-horizontal-rule-2.0.0-beta.30.tgz#56d497f1187384d131f3f3320f30748c1e4b766f"
+ integrity sha512-h/PlkvfcMuoBGRfD7Cbeh8mxZiEc2pKveLDwOfCES9TKV5i2lqcIgctpohWyISuFcTq4K+OFgr910+Rsp8qwEg==
+ dependencies:
+ prosemirror-state "^1.3.4"
+
+"@tiptap/extension-italic@^2.0.0-beta.25":
+ version "2.0.0-beta.25"
+ resolved "https://registry.yarnpkg.com/@tiptap/extension-italic/-/extension-italic-2.0.0-beta.25.tgz#c2ec95cc5baf855134883c5e261da4ab0d3b9479"
+ integrity sha512-7PvhioTX9baVp5+AmmZU0qna+dFPZCRlSEN/GciH57N77d2uhJ/ZW5iQWTbvy5HBNddQB4Jts1UDIaC7WASrGA==
+
+"@tiptap/extension-link@^2.0.0-beta.35":
+ version "2.0.0-beta.35"
+ resolved "https://registry.yarnpkg.com/@tiptap/extension-link/-/extension-link-2.0.0-beta.35.tgz#78fff63542a9032499bfeed7b695dab1c8f9d43e"
+ integrity sha512-FQRjboP69QvUxPI97BRlLzfm7LHDYuAdM/mgEBwDE/i0w7I9lVlfpdGGd4hiPNfD2gMEqHfYJzb1K1qMZw+yRw==
+ dependencies:
+ linkifyjs "^3.0.5"
+ prosemirror-model "^1.16.1"
+ prosemirror-state "^1.3.4"
+
+"@tiptap/extension-list-item@^2.0.0-beta.20":
+ version "2.0.0-beta.20"
+ resolved "https://registry.yarnpkg.com/@tiptap/extension-list-item/-/extension-list-item-2.0.0-beta.20.tgz#7169528b226dee4590e013bdf6e5fc6d83729b0f"
+ integrity sha512-5IPEspJt38t9ROj4xLUesOVEYlTT/R9Skd9meHRxJQZX1qrzBICs5PC/WRIsnexrvTBhdxpYgCYjpvpsJBlKuQ==
+
+"@tiptap/extension-ordered-list@^2.0.0-beta.27":
+ version "2.0.0-beta.27"
+ resolved "https://registry.yarnpkg.com/@tiptap/extension-ordered-list/-/extension-ordered-list-2.0.0-beta.27.tgz#ed48a53a9b012d578613b68375db31e8664bfdc9"
+ integrity sha512-apFDeignxdZb3cA3p1HJu0zw1JgJdBYUBz1r7f99qdNybYuk3I/1MPUvlOuOgvIrBB/wydoyVDP+v9F7QN3tfQ==
+
+"@tiptap/extension-paragraph@^2.0.0-beta.23":
+ version "2.0.0-beta.23"
+ resolved "https://registry.yarnpkg.com/@tiptap/extension-paragraph/-/extension-paragraph-2.0.0-beta.23.tgz#2ab77308519494994d7a9e5a4acd14042f45f28c"
+ integrity sha512-VWAxyzecErYWk97Kv/Gkghh97zAQTcaVOisEnYYArZAlyYDaYM48qVssAC/vnRRynP2eQxb1EkppbAxE+bMHAA==
+
+"@tiptap/extension-placeholder@^2.0.0-beta.46":
+ version "2.0.0-beta.46"
+ resolved "https://registry.yarnpkg.com/@tiptap/extension-placeholder/-/extension-placeholder-2.0.0-beta.46.tgz#9aac81183f270fcf09ca9ae79c5bd3f83326fe29"
+ integrity sha512-/Oz8fS95qA+sHX70AC85mc5RARIEeNbdKr97DCYjrsH2P3uDwt4O5NSxNZvvtxzBmBxmN+rfUhiCjIN/GlldlQ==
+ dependencies:
+ prosemirror-model "^1.16.1"
+ prosemirror-state "^1.3.4"
+ prosemirror-view "^1.23.5"
+
+"@tiptap/extension-strike@^2.0.0-beta.27":
+ version "2.0.0-beta.27"
+ resolved "https://registry.yarnpkg.com/@tiptap/extension-strike/-/extension-strike-2.0.0-beta.27.tgz#c5187bf3c28837f95a5c0c0617d0dd31c318353d"
+ integrity sha512-2dmCgtesuDdivM/54Q+Y6Tc3JbGz1SkHP6c62piuqBiYLWg3xa16zChZOhfN8szbbQlBgLT6XRTDt3c2Ux+Dug==
+
+"@tiptap/extension-text@^2.0.0-beta.15":
+ version "2.0.0-beta.15"
+ resolved "https://registry.yarnpkg.com/@tiptap/extension-text/-/extension-text-2.0.0-beta.15.tgz#f08cff1b78f1c6996464dfba1fef8ec1e107617f"
+ integrity sha512-S3j2+HyV2gsXZP8Wg/HA+YVXQsZ3nrXgBM9HmGAxB0ESOO50l7LWfip0f3qcw1oRlh5H3iLPkA6/f7clD2/TFA==
+
+"@tiptap/extension-underline@^2.0.0-beta.22":
+ version "2.0.0-beta.22"
+ resolved "https://registry.yarnpkg.com/@tiptap/extension-underline/-/extension-underline-2.0.0-beta.22.tgz#e6b83be0c0944183b47aa30d53f2ab5cd7defe23"
+ integrity sha512-c+tOv4CRBG2pgtAACEsDwvbmM8C89M/CeelTcLLu8zrk+PRy7yj8DKLUtcb9Ybsa7f1Suk6iqyj3dkfxuuvDLw==
+
+"@tiptap/html@^2.0.0-beta.162":
+ version "2.0.0-beta.162"
+ resolved "https://registry.yarnpkg.com/@tiptap/html/-/html-2.0.0-beta.162.tgz#c85fbbee95cbe68ea4fa9b16c75aeaecbf262a30"
+ integrity sha512-rIhn9zTTggVdMg4l33w8QM6Ji7ljoyz/EpfGQTYqb7kQvRFXqFDqpHf1qpNW9wE5+ZFGtKgYw3LVoeuZmIqfww==
+ dependencies:
+ "@tiptap/core" "^2.0.0-beta.163"
+ prosemirror-model "^1.16.1"
+ zeed-dom "^0.9.19"
+
+"@tiptap/react@^2.0.0-beta.105":
+ version "2.0.0-beta.105"
+ resolved "https://registry.yarnpkg.com/@tiptap/react/-/react-2.0.0-beta.105.tgz#95da700fd72675ebb5adacb19734ff6af67606aa"
+ integrity sha512-Mhob9itMdbaRxUNfn4iSr4Y3zGzuCiV/YTbGgaiTaKSWEPbQBtuq3Keopn2Wp1rjt3M/pEAYr7C3QwSbGiwvFQ==
+ dependencies:
+ "@tiptap/extension-bubble-menu" "^2.0.0-beta.54"
+ "@tiptap/extension-floating-menu" "^2.0.0-beta.49"
+ prosemirror-view "^1.23.5"
+
+"@tiptap/starter-kit@^2.0.0-beta.171":
+ version "2.0.0-beta.171"
+ resolved "https://registry.yarnpkg.com/@tiptap/starter-kit/-/starter-kit-2.0.0-beta.171.tgz#b1bd8b04da55219c2c59c4c9ac536fc8d018700b"
+ integrity sha512-ifgaPMsKinFDWQ03beMCPpdtcbYSCD4QXMMjdzHlGi2cDZQP6/s3IYpBVZ5kMBAX2x81QAgNjgy2BJ2PaGzsbw==
+ dependencies:
+ "@tiptap/core" "^2.0.0-beta.163"
+ "@tiptap/extension-blockquote" "^2.0.0-beta.26"
+ "@tiptap/extension-bold" "^2.0.0-beta.25"
+ "@tiptap/extension-bullet-list" "^2.0.0-beta.26"
+ "@tiptap/extension-code" "^2.0.0-beta.26"
+ "@tiptap/extension-code-block" "^2.0.0-beta.35"
+ "@tiptap/extension-document" "^2.0.0-beta.15"
+ "@tiptap/extension-dropcursor" "^2.0.0-beta.25"
+ "@tiptap/extension-gapcursor" "^2.0.0-beta.34"
+ "@tiptap/extension-hard-break" "^2.0.0-beta.30"
+ "@tiptap/extension-heading" "^2.0.0-beta.25"
+ "@tiptap/extension-history" "^2.0.0-beta.21"
+ "@tiptap/extension-horizontal-rule" "^2.0.0-beta.30"
+ "@tiptap/extension-italic" "^2.0.0-beta.25"
+ "@tiptap/extension-list-item" "^2.0.0-beta.20"
+ "@tiptap/extension-ordered-list" "^2.0.0-beta.27"
+ "@tiptap/extension-paragraph" "^2.0.0-beta.23"
+ "@tiptap/extension-strike" "^2.0.0-beta.27"
+ "@tiptap/extension-text" "^2.0.0-beta.15"
+
"@tootallnate/once@1":
version "1.1.2"
resolved "https://registry.npmjs.org/@tootallnate/once/-/once-1.1.2.tgz"
@@ -2370,6 +2587,11 @@
resolved "https://registry.npmjs.org/@types/node/-/node-16.11.17.tgz"
integrity sha512-C1vTZME8cFo8uxY2ui41xcynEotVkczIVI5AjLmy5pkpBv/FtG+jhtOlfcPysI8VRVwoOMv6NJm44LGnoMSWkw==
+"@types/orderedmap@*":
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/@types/orderedmap/-/orderedmap-1.0.0.tgz#807455a192bba52cbbb4517044bc82bdbfa8c596"
+ integrity sha512-dxKo80TqYx3YtBipHwA/SdFmMMyLCnP+5mkEqN0eMjcTBzHkiiX0ES118DsjDBjvD+zeSsSU9jULTZ+frog+Gw==
+
"@types/parse-json@^4.0.0":
version "4.0.0"
resolved "https://registry.npmjs.org/@types/parse-json/-/parse-json-4.0.0.tgz"
@@ -2392,6 +2614,89 @@
resolved "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.4.tgz"
integrity sha512-rZ5drC/jWjrArrS8BR6SIr4cWpW09RNTYt9AMZo3Jwwif+iacXAqgVjm0B0Bv/S1jhDXKHqRVNCbACkJ89RAnQ==
+"@types/prosemirror-commands@*", "@types/prosemirror-commands@^1.0.4":
+ version "1.0.4"
+ resolved "https://registry.yarnpkg.com/@types/prosemirror-commands/-/prosemirror-commands-1.0.4.tgz#d08551415127d93ae62e7239d30db0b5e7208e22"
+ integrity sha512-utDNYB3EXLjAfYIcRWJe6pn3kcQ5kG4RijbT/0Y/TFOm6yhvYS/D9eJVnijdg9LDjykapcezchxGRqFD5LcyaQ==
+ dependencies:
+ "@types/prosemirror-model" "*"
+ "@types/prosemirror-state" "*"
+ "@types/prosemirror-view" "*"
+
+"@types/prosemirror-dropcursor@^1.0.3":
+ version "1.0.3"
+ resolved "https://registry.yarnpkg.com/@types/prosemirror-dropcursor/-/prosemirror-dropcursor-1.0.3.tgz#49250849b8a0b86e8c29eb1ba70a463e53e46947"
+ integrity sha512-b0/8njnJ4lwyHKcGuCMf3x7r1KjxyugB1R/c2iMCjplsJHSC7UY9+OysqgJR5uUXRekUSGniiLgBtac/lvH6wg==
+ dependencies:
+ "@types/prosemirror-state" "*"
+
+"@types/prosemirror-gapcursor@^1.0.4":
+ version "1.0.4"
+ resolved "https://registry.yarnpkg.com/@types/prosemirror-gapcursor/-/prosemirror-gapcursor-1.0.4.tgz#7df7d373edb33ea8da12084bfd462cf84cd69761"
+ integrity sha512-9xKjFIG5947dzerFvkLWp6F53JwrUYoYwh3SgcTFEp8SbSfNNrez/PFYVZKPnoqPoaK5WtTdQTaMwpCV9rXQIg==
+ dependencies:
+ "@types/prosemirror-model" "*"
+ "@types/prosemirror-state" "*"
+
+"@types/prosemirror-history@^1.0.3":
+ version "1.0.3"
+ resolved "https://registry.yarnpkg.com/@types/prosemirror-history/-/prosemirror-history-1.0.3.tgz#f1110efbe758129b5475e466ff077f0a8d9b964f"
+ integrity sha512-5TloMDRavgLjOAKXp1Li8u0xcsspzbT1Cm9F2pwHOkgvQOz1jWQb2VIXO7RVNsFjLBZdIXlyfSLivro3DuMWXg==
+ dependencies:
+ "@types/prosemirror-model" "*"
+ "@types/prosemirror-state" "*"
+
+"@types/prosemirror-keymap@^1.0.4":
+ version "1.0.4"
+ resolved "https://registry.yarnpkg.com/@types/prosemirror-keymap/-/prosemirror-keymap-1.0.4.tgz#f73c79810e8d0e0a20d153d84f998f02e5afbc0c"
+ integrity sha512-ycevwkqUh+jEQtPwqO7sWGcm+Sybmhu8MpBsM8DlO3+YTKnXbKA6SDz/+q14q1wK3UA8lHJyfR+v+GPxfUSemg==
+ dependencies:
+ "@types/prosemirror-commands" "*"
+ "@types/prosemirror-model" "*"
+ "@types/prosemirror-state" "*"
+ "@types/prosemirror-view" "*"
+
+"@types/prosemirror-model@*", "@types/prosemirror-model@^1.16.0":
+ version "1.16.0"
+ resolved "https://registry.yarnpkg.com/@types/prosemirror-model/-/prosemirror-model-1.16.0.tgz#8b22c7431a4c93f7f550fc89c4b0e2d44d42c8b6"
+ integrity sha512-nv93YLyTEcDDl17OB90EldxZjyJQJll2WSMLDvLzTewbpvE/vtMjHT3j4mik3uSzQ6YD486AcloCO3WODY/lDg==
+ dependencies:
+ "@types/orderedmap" "*"
+
+"@types/prosemirror-schema-list@^1.0.3":
+ version "1.0.3"
+ resolved "https://registry.yarnpkg.com/@types/prosemirror-schema-list/-/prosemirror-schema-list-1.0.3.tgz#bdf1893a7915fbdc5c49b3cac9368e96213d70de"
+ integrity sha512-uWybOf+M2Ea7rlbs0yLsS4YJYNGXYtn4N+w8HCw3Vvfl6wBAROzlMt0gV/D/VW/7J/LlAjwMezuGe8xi24HzXA==
+ dependencies:
+ "@types/orderedmap" "*"
+ "@types/prosemirror-model" "*"
+ "@types/prosemirror-state" "*"
+
+"@types/prosemirror-state@*", "@types/prosemirror-state@^1.2.8":
+ version "1.2.8"
+ resolved "https://registry.yarnpkg.com/@types/prosemirror-state/-/prosemirror-state-1.2.8.tgz#65080eeec52f63c50bf7034377f07773b4f6b2ac"
+ integrity sha512-mq9uyQWcpu8jeamO6Callrdvf/e1H/aRLR2kZWSpZrPHctEsxWHBbluD/wqVjXBRIOoMHLf6ZvOkrkmGLoCHVA==
+ dependencies:
+ "@types/prosemirror-model" "*"
+ "@types/prosemirror-transform" "*"
+ "@types/prosemirror-view" "*"
+
+"@types/prosemirror-transform@*", "@types/prosemirror-transform@^1.1.5":
+ version "1.1.5"
+ resolved "https://registry.yarnpkg.com/@types/prosemirror-transform/-/prosemirror-transform-1.1.5.tgz#e6949398c64a5d3ca53e6081352751aa9e9ce76e"
+ integrity sha512-Wr2HXaEF4JPklWpC17RTxE6PxyU54Taqk5FMhK1ojgcN93J+GpkYW8s0mD3rl7KfTmlhVwZPCHE9o0cYf2Go5A==
+ dependencies:
+ "@types/prosemirror-model" "*"
+
+"@types/prosemirror-view@*", "@types/prosemirror-view@^1.19.2":
+ version "1.23.0"
+ resolved "https://registry.yarnpkg.com/@types/prosemirror-view/-/prosemirror-view-1.23.0.tgz#651caeeb88c45ef431c99036b1a2f9c7fe16483d"
+ integrity sha512-CaGnoiKeNYNRSmPNKSkFOl9KeWih4J7rAziiUk9eGwUgw4Yp2K3rorgI9QRKY7lp9DLIh6njxzZo891O1DSplw==
+ dependencies:
+ "@types/prosemirror-model" "*"
+ "@types/prosemirror-state" "*"
+ "@types/prosemirror-transform" "*"
+
"@types/q@^1.5.1":
version "1.5.5"
resolved "https://registry.npmjs.org/@types/q/-/q-1.5.5.tgz"
@@ -5092,7 +5397,7 @@ domexception@^2.0.1:
dependencies:
webidl-conversions "^5.0.0"
-domhandler@^4.0.0, domhandler@^4.2.0, domhandler@^4.3.0:
+domhandler@4.3.0, domhandler@^4.0.0, domhandler@^4.2.0, domhandler@^4.2.2, domhandler@^4.3.0:
version "4.3.0"
resolved "https://registry.npmjs.org/domhandler/-/domhandler-4.3.0.tgz"
integrity sha512-fC0aXNQXqKSFTr2wDNZDhsEYjCiYsDWl3D01kwt25hm1YIPyDGHvvi3rw+PLqHAl/m71MaiF7d5zvBr0p5UB2g==
@@ -5256,6 +5561,11 @@ entities@^2.0.0:
resolved "https://registry.npmjs.org/entities/-/entities-2.2.0.tgz"
integrity sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A==
+entities@^3.0.1:
+ version "3.0.1"
+ resolved "https://registry.yarnpkg.com/entities/-/entities-3.0.1.tgz#2b887ca62585e96db3903482d336c1006c3001d4"
+ integrity sha512-WiyBqoomrwMdFG1e0kqvASYfnlb0lp8M5o5Fw2OFq1hNZxxcNk8Ik0Xm7LxzBhuidnZB/UtBqVCgUz3kBOP51Q==
+
err-code@^3.0.1:
version "3.0.1"
resolved "https://registry.yarnpkg.com/err-code/-/err-code-3.0.1.tgz#a444c7b992705f2b120ee320b09972eef331c920"
@@ -5960,6 +6270,11 @@ execa@^5.0.0:
signal-exit "^3.0.3"
strip-final-newline "^2.0.0"
+exenv@^1.2.0:
+ version "1.2.2"
+ resolved "https://registry.yarnpkg.com/exenv/-/exenv-1.2.2.tgz#2ae78e85d9894158670b03d47bec1f03bd91bb9d"
+ integrity sha1-KueOhdmJQVhnCwPUe+wfA72Ru50=
+
exit@^0.1.2:
version "0.1.2"
resolved "https://registry.npmjs.org/exit/-/exit-0.1.2.tgz"
@@ -6839,7 +7154,7 @@ hash.js@1.1.7, hash.js@^1.0.0, hash.js@^1.0.3, hash.js@^1.1.7:
inherits "^2.0.3"
minimalistic-assert "^1.0.1"
-he@^1.2.0:
+he@1.2.0, he@^1.2.0:
version "1.2.0"
resolved "https://registry.npmjs.org/he/-/he-1.2.0.tgz"
integrity sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==
@@ -6875,6 +7190,14 @@ hpack.js@^2.1.6:
readable-stream "^2.0.1"
wbuf "^1.1.0"
+html-dom-parser@1.0.4:
+ version "1.0.4"
+ resolved "https://registry.yarnpkg.com/html-dom-parser/-/html-dom-parser-1.0.4.tgz#84878b54e1d434f25e611e44254b49d39340a81b"
+ integrity sha512-ThM/vK/18R5/cVB9UsqhNqbJU7LE2BmSA7C/FjYV88wIDW75GSUpvSE/JxE4mJ8bOuU6Kp15/I1giM2JbD+ieA==
+ dependencies:
+ domhandler "4.3.0"
+ htmlparser2 "7.2.0"
+
html-encoding-sniffer@^2.0.1:
version "2.0.1"
resolved "https://registry.npmjs.org/html-encoding-sniffer/-/html-encoding-sniffer-2.0.1.tgz"
@@ -6905,6 +7228,16 @@ html-minifier-terser@^6.0.2:
relateurl "^0.2.7"
terser "^5.10.0"
+html-react-parser@^1.4.5:
+ version "1.4.5"
+ resolved "https://registry.yarnpkg.com/html-react-parser/-/html-react-parser-1.4.5.tgz#030ad310c4020658d568dd9a6d237fb90284b499"
+ integrity sha512-dxo0z1G9b3mS1VGmcVw4cUGwVsEwkJZZ7r29pOSdE69JukJyFTCL1I6TXSEp2p1LAHvuO6ZBiEVp2M5lXqKLAg==
+ dependencies:
+ domhandler "4.3.0"
+ html-dom-parser "1.0.4"
+ react-property "2.0.0"
+ style-to-js "1.1.0"
+
html-webpack-plugin@^5.5.0:
version "5.5.0"
resolved "https://registry.npmjs.org/html-webpack-plugin/-/html-webpack-plugin-5.5.0.tgz"
@@ -6916,7 +7249,17 @@ html-webpack-plugin@^5.5.0:
pretty-error "^4.0.0"
tapable "^2.0.0"
-htmlparser2@^6.1.0:
+htmlparser2@7.2.0:
+ version "7.2.0"
+ resolved "https://registry.yarnpkg.com/htmlparser2/-/htmlparser2-7.2.0.tgz#8817cdea38bbc324392a90b1990908e81a65f5a5"
+ integrity sha512-H7MImA4MS6cw7nbyURtLPO1Tms7C5H602LRETv95z1MxO/7CP7rDVROehUYeYBUYEON94NXXDEPmZuq+hX4sog==
+ dependencies:
+ domelementtype "^2.0.1"
+ domhandler "^4.2.2"
+ domutils "^2.8.0"
+ entities "^3.0.1"
+
+htmlparser2@^6.0.0, htmlparser2@^6.1.0:
version "6.1.0"
resolved "https://registry.npmjs.org/htmlparser2/-/htmlparser2-6.1.0.tgz"
integrity sha512-gyyPk6rgonLFEDGoeRgQNaEUvdJ4ktTmmUh/h2t7s+M8oPpIPxgNACWa+6ESR57kXstwqPiCut0V8NRpcwgU7A==
@@ -7142,6 +7485,11 @@ ini@^1.3.5:
resolved "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz"
integrity sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==
+inline-style-parser@0.1.1:
+ version "0.1.1"
+ resolved "https://registry.yarnpkg.com/inline-style-parser/-/inline-style-parser-0.1.1.tgz#ec8a3b429274e9c0a1f1c4ffa9453a7fef72cea1"
+ integrity sha512-7NXolsK4CAS5+xvdj5OMMbI962hU/wvwoxk+LWR9Ek9bVtyuuYScDN6eS0rUm6TxApFpw7CX1o4uJzcd4AyD3Q==
+
inquirer@6.2.1:
version "6.2.1"
resolved "https://registry.npmjs.org/inquirer/-/inquirer-6.2.1.tgz"
@@ -7553,6 +7901,11 @@ is-plain-object@^2.0.3, is-plain-object@^2.0.4:
dependencies:
isobject "^3.0.1"
+is-plain-object@^5.0.0:
+ version "5.0.0"
+ resolved "https://registry.yarnpkg.com/is-plain-object/-/is-plain-object-5.0.0.tgz#4427f50ab3429e9025ea7d52e9043a9ef4159344"
+ integrity sha512-VRSzKkbMm5jMDoKLbltAkFQ5Qr7VDiTFGXxYFXXowVj387GeGNOCsOH6Msy00SGZ3Fp84b1Naa1psqgcCIEP5Q==
+
is-potential-custom-element-name@^1.0.1:
version "1.0.1"
resolved "https://registry.npmjs.org/is-potential-custom-element-name/-/is-potential-custom-element-name-1.0.1.tgz"
@@ -8565,6 +8918,11 @@ lines-and-columns@^1.1.6:
resolved "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz"
integrity sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==
+linkifyjs@^3.0.5:
+ version "3.0.5"
+ resolved "https://registry.yarnpkg.com/linkifyjs/-/linkifyjs-3.0.5.tgz#99e51a3a0c0e232fcb63ebb89eea3ff923378f34"
+ integrity sha512-1Y9XQH65eQKA9p2xtk+zxvnTeQBG7rdAXSkUG97DmuI/Xhji9uaUzaWxRj6rf9YC0v8KKHkxav7tnLX82Sz5Fg==
+
loader-runner@^4.2.0:
version "4.2.0"
resolved "https://registry.npmjs.org/loader-runner/-/loader-runner-4.2.0.tgz"
@@ -8677,7 +9035,7 @@ long@^4.0.0:
resolved "https://registry.yarnpkg.com/long/-/long-4.0.0.tgz#9a7b71cfb7d361a194ea555241c92f7468d5bf28"
integrity sha512-XsP+KhQif4bjX1kbuSiySJFNAehNxgLb6hPRGJ9QsUr8ajHkuXGdrHmFUTUUXhDwVX2R5bY4JNZEwbUiMhV+MA==
-loose-envify@^1.1.0, loose-envify@^1.4.0:
+loose-envify@^1.0.0, loose-envify@^1.1.0, loose-envify@^1.4.0:
version "1.4.0"
resolved "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz"
integrity sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==
@@ -9108,6 +9466,14 @@ node-gyp-build@^4.2.0:
resolved "https://registry.yarnpkg.com/node-gyp-build/-/node-gyp-build-4.3.0.tgz#9f256b03e5826150be39c764bf51e993946d71a3"
integrity sha512-iWjXZvmboq0ja1pUGULQBexmxq8CV4xBhX7VDOTbL7ZR4FOowwY/VOtRxBN/yKxmdGoIp4j5ysNT4u3S2pDQ3Q==
+node-html-parser@^5.2.0:
+ version "5.2.0"
+ resolved "https://registry.yarnpkg.com/node-html-parser/-/node-html-parser-5.2.0.tgz#6f29fd00d79f65334e7e20200964644207925607"
+ integrity sha512-fmiwLfQu+J2A0zjwSEkztSHexAf5qq/WoiL/Hgo1K7JpfEP+OGWY5maG0kGaM+IFVdixF/1QbyXaQ3h4cGfeLw==
+ dependencies:
+ css-select "^4.1.3"
+ he "1.2.0"
+
node-int64@^0.4.0:
version "0.4.0"
resolved "https://registry.npmjs.org/node-int64/-/node-int64-0.4.0.tgz"
@@ -9402,6 +9768,11 @@ optionator@^0.9.1:
type-check "^0.4.0"
word-wrap "^1.2.3"
+orderedmap@^1.1.0:
+ version "1.1.1"
+ resolved "https://registry.yarnpkg.com/orderedmap/-/orderedmap-1.1.1.tgz#c618e77611b3b21d0fe3edc92586265e0059c789"
+ integrity sha512-3Ux8um0zXbVacKUkcytc0u3HgC0b0bBLT+I60r2J/En72cI0nZffqrA7Xtf2Hqs27j1g82llR5Mhbd0Z1XW4AQ==
+
original@^1.0.0:
version "1.0.2"
resolved "https://registry.npmjs.org/original/-/original-1.0.2.tgz"
@@ -9557,6 +9928,11 @@ parse-json@^5.0.0:
json-parse-even-better-errors "^2.3.0"
lines-and-columns "^1.1.6"
+parse-srcset@^1.0.2:
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/parse-srcset/-/parse-srcset-1.0.2.tgz#f2bd221f6cc970a938d88556abc589caaaa2bde1"
+ integrity sha1-8r0iH2zJcKk42IVWq8WJyqqiveE=
+
parse5@6.0.1:
version "6.0.1"
resolved "https://registry.npmjs.org/parse5/-/parse5-6.0.1.tgz"
@@ -10237,7 +10613,7 @@ postcss@^7.0.35:
picocolors "^0.2.1"
source-map "^0.6.1"
-postcss@^8.1.6, postcss@^8.2.15, postcss@^8.3.5, postcss@^8.4.4, postcss@^8.4.5:
+postcss@^8.1.6, postcss@^8.2.15, postcss@^8.3.11, postcss@^8.3.5, postcss@^8.4.4, postcss@^8.4.5:
version "8.4.5"
resolved "https://registry.npmjs.org/postcss/-/postcss-8.4.5.tgz"
integrity sha512-jBDboWM8qpaqwkMwItqTQTiFikhs/67OYVvblFFTM7MrZjt6yMKd6r2kgXizEbTTljacm4NldIlZnhbjr84QYg==
@@ -10358,6 +10734,90 @@ prop-types@^15.6.0, prop-types@^15.7.2:
object-assign "^4.1.1"
react-is "^16.13.1"
+prosemirror-commands@^1.1.12:
+ version "1.1.12"
+ resolved "https://registry.yarnpkg.com/prosemirror-commands/-/prosemirror-commands-1.1.12.tgz#5cb0fef4e5a0039e2fa19b42a5626af03d7c2ec3"
+ integrity sha512-+CrMs3w/ZVPSkR+REg8KL/clyFLv/1+SgY/OMN+CB22Z24j9TZDje72vL36lOZ/E4NeRXuiCcmENcW/vAcG67A==
+ dependencies:
+ prosemirror-model "^1.0.0"
+ prosemirror-state "^1.0.0"
+ prosemirror-transform "^1.0.0"
+
+prosemirror-dropcursor@^1.4.0:
+ version "1.4.0"
+ resolved "https://registry.yarnpkg.com/prosemirror-dropcursor/-/prosemirror-dropcursor-1.4.0.tgz#91a859d4ee79c99b1c0ba6ee61c093b195c0d9f0"
+ integrity sha512-6+YwTjmqDwlA/Dm+5wK67ezgqgjA/MhSDgaNxKUzH97SmeuWFXyLeDRxxOPZeSo7yTxcDGUCWTEjmQZsVBuMrQ==
+ dependencies:
+ prosemirror-state "^1.0.0"
+ prosemirror-transform "^1.1.0"
+ prosemirror-view "^1.1.0"
+
+prosemirror-gapcursor@^1.2.1:
+ version "1.2.1"
+ resolved "https://registry.yarnpkg.com/prosemirror-gapcursor/-/prosemirror-gapcursor-1.2.1.tgz#02365e1bcc1ad25d390b0fb7f0e94a7fc173ad75"
+ integrity sha512-PHa9lj27iM/g4C46gxVzsefuXVfy/LrGQH4QjMRht7VDBgw77iWYWn8ZHMWSFkwtr9jQEuxI5gccHHHwWG80nw==
+ dependencies:
+ prosemirror-keymap "^1.0.0"
+ prosemirror-model "^1.0.0"
+ prosemirror-state "^1.0.0"
+ prosemirror-view "^1.0.0"
+
+prosemirror-history@^1.2.0:
+ version "1.2.0"
+ resolved "https://registry.yarnpkg.com/prosemirror-history/-/prosemirror-history-1.2.0.tgz#04cc4df8d2f7b2a46651a2780de191ada6d465ea"
+ integrity sha512-B9v9xtf4fYbKxQwIr+3wtTDNLDZcmMMmGiI3TAPShnUzvo+Rmv1GiUrsQChY1meetHl7rhML2cppF3FTs7f7UQ==
+ dependencies:
+ prosemirror-state "^1.2.2"
+ prosemirror-transform "^1.0.0"
+ rope-sequence "^1.3.0"
+
+prosemirror-keymap@^1.0.0, prosemirror-keymap@^1.1.5:
+ version "1.1.5"
+ resolved "https://registry.yarnpkg.com/prosemirror-keymap/-/prosemirror-keymap-1.1.5.tgz#b5984c7d30f5c75956c853126c54e9e624c0327b"
+ integrity sha512-8SZgPH3K+GLsHL2wKuwBD9rxhsbnVBTwpHCO4VUO5GmqUQlxd/2GtBVWTsyLq4Dp3N9nGgPd3+lZFKUDuVp+Vw==
+ dependencies:
+ prosemirror-state "^1.0.0"
+ w3c-keyname "^2.2.0"
+
+prosemirror-model@^1.0.0, prosemirror-model@^1.16.0, prosemirror-model@^1.16.1:
+ version "1.16.1"
+ resolved "https://registry.yarnpkg.com/prosemirror-model/-/prosemirror-model-1.16.1.tgz#fb388270bc9609b66298d6a7e15d0cc1d6c61253"
+ integrity sha512-r1/w0HDU40TtkXp0DyKBnFPYwd8FSlUSJmGCGFv4DeynfeSlyQF2FD0RQbVEMOe6P3PpUSXM6LZBV7W/YNZ4mA==
+ dependencies:
+ orderedmap "^1.1.0"
+
+prosemirror-schema-list@^1.1.6:
+ version "1.1.6"
+ resolved "https://registry.yarnpkg.com/prosemirror-schema-list/-/prosemirror-schema-list-1.1.6.tgz#c3e13fe2f74750e4a53ff88d798dc0c4ccca6707"
+ integrity sha512-aFGEdaCWmJzouZ8DwedmvSsL50JpRkqhQ6tcpThwJONVVmCgI36LJHtoQ4VGZbusMavaBhXXr33zyD2IVsTlkw==
+ dependencies:
+ prosemirror-model "^1.0.0"
+ prosemirror-transform "^1.0.0"
+
+prosemirror-state@^1.0.0, prosemirror-state@^1.2.2, prosemirror-state@^1.3.4:
+ version "1.3.4"
+ resolved "https://registry.yarnpkg.com/prosemirror-state/-/prosemirror-state-1.3.4.tgz#4c6b52628216e753fc901c6d2bfd84ce109e8952"
+ integrity sha512-Xkkrpd1y/TQ6HKzN3agsQIGRcLckUMA9u3j207L04mt8ToRgpGeyhbVv0HI7omDORIBHjR29b7AwlATFFf2GLA==
+ dependencies:
+ prosemirror-model "^1.0.0"
+ prosemirror-transform "^1.0.0"
+
+prosemirror-transform@^1.0.0, prosemirror-transform@^1.1.0, prosemirror-transform@^1.3.3:
+ version "1.3.3"
+ resolved "https://registry.yarnpkg.com/prosemirror-transform/-/prosemirror-transform-1.3.3.tgz#5f6712b0577a119cc418686fe7588b6dd9b7464d"
+ integrity sha512-9NLVXy1Sfa2G6qPqhWMkEvwQQMTw7OyTqOZbJaGQWsCeH3hH5Cw+c5eNaLM1Uu75EyKLsEZhJ93XpHJBa6RX8A==
+ dependencies:
+ prosemirror-model "^1.0.0"
+
+prosemirror-view@^1.0.0, prosemirror-view@^1.1.0, prosemirror-view@^1.23.5:
+ version "1.23.6"
+ resolved "https://registry.yarnpkg.com/prosemirror-view/-/prosemirror-view-1.23.6.tgz#f514b3166942cb70aac4ac24d0a28c21c3897608"
+ integrity sha512-B4DAzriNpI/AVoW0Lu6SVfX00jZZQxOVwdBQEjWlRbCdT9V0pvk4GQJ3JTFaib+b6BcPdRZ3MjWXz2xvV1rblA==
+ dependencies:
+ prosemirror-model "^1.16.0"
+ prosemirror-state "^1.0.0"
+ prosemirror-transform "^1.1.0"
+
protobufjs@^6.10.2:
version "6.11.2"
resolved "https://registry.yarnpkg.com/protobufjs/-/protobufjs-6.11.2.tgz#de39fabd4ed32beaa08e9bb1e30d08544c1edf8b"
@@ -10669,11 +11129,26 @@ react-is@^17.0.1:
resolved "https://registry.npmjs.org/react-is/-/react-is-17.0.2.tgz"
integrity sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==
+react-lifecycles-compat@^3.0.0:
+ version "3.0.4"
+ resolved "https://registry.yarnpkg.com/react-lifecycles-compat/-/react-lifecycles-compat-3.0.4.tgz#4f1a273afdfc8f3488a8c516bfda78f872352362"
+ integrity sha512-fBASbA6LnOU9dOU2eW7aQ8xmYBSXUIWr+UmF9b1efZBazGNO+rcXT/icdKnYm2pTwcRylVUYwW7H1PHfLekVzA==
+
react-merge-refs@^1.1.0:
version "1.1.0"
resolved "https://registry.npmjs.org/react-merge-refs/-/react-merge-refs-1.1.0.tgz"
integrity sha512-alTKsjEL0dKH/ru1Iyn7vliS2QRcBp9zZPGoWxUOvRGWPUYgjo+V01is7p04It6KhgrzhJGnIj9GgX8W4bZoCQ==
+react-modal@^3.14.4:
+ version "3.14.4"
+ resolved "https://registry.yarnpkg.com/react-modal/-/react-modal-3.14.4.tgz#2ca7e8e9a180955e5c9508c228b73167c1e6f6a3"
+ integrity sha512-8surmulejafYCH9wfUmFyj4UfbSJwjcgbS9gf3oOItu4Hwd6ivJyVBETI0yHRhpJKCLZMUtnhzk76wXTsNL6Qg==
+ dependencies:
+ exenv "^1.2.0"
+ prop-types "^15.7.2"
+ react-lifecycles-compat "^3.0.0"
+ warning "^4.0.3"
+
react-native-fetch-api@^2.0.0:
version "2.0.0"
resolved "https://registry.yarnpkg.com/react-native-fetch-api/-/react-native-fetch-api-2.0.0.tgz#c4af188b4fce3f3eaf1f1ff4e61dae1a00d4ffa0"
@@ -10681,6 +11156,11 @@ react-native-fetch-api@^2.0.0:
dependencies:
p-defer "^3.0.0"
+react-property@2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/react-property/-/react-property-2.0.0.tgz#2156ba9d85fa4741faf1918b38efc1eae3c6a136"
+ integrity sha512-kzmNjIgU32mO4mmH5+iUyrqlpFQhF8K2k7eZ4fdLSOPFrD1XgEuSBv9LDEgxRXTMBqMd8ppT0x6TIzqE5pdGdw==
+
react-reconciler@^0.26.2:
version "0.26.2"
resolved "https://registry.npmjs.org/react-reconciler/-/react-reconciler-0.26.2.tgz"
@@ -11152,6 +11632,11 @@ rollup@^2.43.1:
optionalDependencies:
fsevents "~2.3.2"
+rope-sequence@^1.3.0:
+ version "1.3.2"
+ resolved "https://registry.yarnpkg.com/rope-sequence/-/rope-sequence-1.3.2.tgz#a19e02d72991ca71feb6b5f8a91154e48e3c098b"
+ integrity sha512-ku6MFrwEVSVmXLvy3dYph3LAMNS0890K7fabn+0YIRQ2T96T9F4gkFf0vf0WW0JUraNWwGRtInEpH7yO4tbQZg==
+
run-async@^2.2.0:
version "2.4.1"
resolved "https://registry.npmjs.org/run-async/-/run-async-2.4.1.tgz"
@@ -11205,6 +11690,18 @@ safe-regex@^1.1.0:
resolved "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz"
integrity sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==
+sanitize-html@^2.6.1:
+ version "2.6.1"
+ resolved "https://registry.yarnpkg.com/sanitize-html/-/sanitize-html-2.6.1.tgz#5d37c08e189c61c0631560a889b10d9d155d000e"
+ integrity sha512-DzjSz3H5qDntD7s1TcWCSoRPmNR8UmA+y+xZQOvWgjATe2Br9ZW73+vD3Pj6Snrg0RuEuJdXgrKvnYuiuixRkA==
+ dependencies:
+ deepmerge "^4.2.2"
+ escape-string-regexp "^4.0.0"
+ htmlparser2 "^6.0.0"
+ is-plain-object "^5.0.0"
+ parse-srcset "^1.0.2"
+ postcss "^8.3.11"
+
sanitize.css@*:
version "13.0.0"
resolved "https://registry.npmjs.org/sanitize.css/-/sanitize.css-13.0.0.tgz"
@@ -11953,6 +12450,20 @@ style-loader@^3.3.1:
resolved "https://registry.npmjs.org/style-loader/-/style-loader-3.3.1.tgz"
integrity sha512-GPcQ+LDJbrcxHORTRes6Jy2sfvK2kS6hpSfI/fXhPt+spVzxF6LJ1dHLN9zIGmVaaP044YKaIatFaufENRiDoQ==
+style-to-js@1.1.0:
+ version "1.1.0"
+ resolved "https://registry.yarnpkg.com/style-to-js/-/style-to-js-1.1.0.tgz#631cbb20fce204019b3aa1fcb5b69d951ceac4ac"
+ integrity sha512-1OqefPDxGrlMwcbfpsTVRyzwdhr4W0uxYQzeA2F1CBc8WG04udg2+ybRnvh3XYL4TdHQrCahLtax2jc8xaE6rA==
+ dependencies:
+ style-to-object "0.3.0"
+
+style-to-object@0.3.0:
+ version "0.3.0"
+ resolved "https://registry.yarnpkg.com/style-to-object/-/style-to-object-0.3.0.tgz#b1b790d205991cc783801967214979ee19a76e46"
+ integrity sha512-CzFnRRXhzWIdItT3OmF8SQfWyahHhjq3HwcMNCNLn+N7klOOqPjMeG/4JSu77D7ypZdGvSzvkrbyeTMizz2VrA==
+ dependencies:
+ inline-style-parser "0.1.1"
+
stylehacks@^5.0.1:
version "5.0.1"
resolved "https://registry.npmjs.org/stylehacks/-/stylehacks-5.0.1.tgz"
@@ -12224,6 +12735,13 @@ tiny-inflate@^1.0.3:
resolved "https://registry.npmjs.org/tiny-inflate/-/tiny-inflate-1.0.3.tgz"
integrity sha512-pkY1fj1cKHb2seWDy0B16HeWyczlJA9/WW3u3c4z/NiWDsO3DOU5D7nhTLE9CF0yXv/QZFY7sEJmj24dK+Rrqw==
+tippy.js@^6.3.7:
+ version "6.3.7"
+ resolved "https://registry.yarnpkg.com/tippy.js/-/tippy.js-6.3.7.tgz#8ccfb651d642010ed9a32ff29b0e9e19c5b8c61c"
+ integrity sha512-E1d3oP2emgJ9dRQZdf3Kkn0qJgI6ZLpyS5z6ZkY1DF3kaQaBsGZsndEpHwx+eC+tYM41HaSNvNtLx8tU57FzTQ==
+ dependencies:
+ "@popperjs/core" "^2.9.0"
+
tmp@^0.0.33:
version "0.0.33"
resolved "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz"
@@ -12675,6 +13193,11 @@ w3c-hr-time@^1.0.2:
dependencies:
browser-process-hrtime "^1.0.0"
+w3c-keyname@^2.2.0:
+ version "2.2.4"
+ resolved "https://registry.yarnpkg.com/w3c-keyname/-/w3c-keyname-2.2.4.tgz#4ade6916f6290224cdbd1db8ac49eab03d0eef6b"
+ integrity sha512-tOhfEwEzFLJzf6d1ZPkYfGj+FWhIpBux9ppoP3rlclw3Z0BZv3N7b7030Z1kYth+6rDuAsXUFr+d0VE6Ed1ikw==
+
w3c-xmlserializer@^2.0.0:
version "2.0.0"
resolved "https://registry.npmjs.org/w3c-xmlserializer/-/w3c-xmlserializer-2.0.0.tgz"
@@ -12689,6 +13212,13 @@ walker@^1.0.7:
dependencies:
makeerror "1.0.12"
+warning@^4.0.3:
+ version "4.0.3"
+ resolved "https://registry.yarnpkg.com/warning/-/warning-4.0.3.tgz#16e9e077eb8a86d6af7d64aa1e05fd85b4678ca3"
+ integrity sha512-rpJyN222KWIvHJ/F53XSZv0Zl/accqHR8et1kpaMTD/fLCRxtV8iX8czMzY7sVZupTI3zcUTg8eycS2kNF9l6w==
+ dependencies:
+ loose-envify "^1.0.0"
+
watchpack@^2.3.1:
version "2.3.1"
resolved "https://registry.npmjs.org/watchpack/-/watchpack-2.3.1.tgz"
@@ -13348,6 +13878,11 @@ yocto-queue@^0.1.0:
resolved "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz"
integrity sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==
+zeed-dom@^0.9.19:
+ version "0.9.19"
+ resolved "https://registry.yarnpkg.com/zeed-dom/-/zeed-dom-0.9.19.tgz#21d54c62ca38b6113cab65e4c07a92a586310ed7"
+ integrity sha512-Em7Rw15NpdOMMVpT0MValA/5RlZCmVTHlPjvBITsD//wyO+g0SWJ7VCVo2hd6hIHztND3RwMaclylJ4AAlfwnQ==
+
zstddec@^0.0.2:
version "0.0.2"
resolved "https://registry.npmjs.org/zstddec/-/zstddec-0.0.2.tgz"
diff --git a/server/.env.template b/server/.env.template
old mode 100644
new mode 100755