diff --git a/package-lock.json b/package-lock.json index 51efccfe..b3adf415 100644 --- a/package-lock.json +++ b/package-lock.json @@ -25,7 +25,6 @@ "react-hotkeys-hook": "~4.3.7", "react-intersection-observer": "~9.4.2", "react-router-dom": "6.6.2", - "rich-textarea": "~0.19.5", "string-length": "~5.0.1", "swiped-events": "~1.1.7", "toastify-js": "~1.12.0", @@ -3201,20 +3200,6 @@ "@babel/core": "^7.12.10" } }, - "node_modules/babel-runtime": { - "version": "4.7.4", - "resolved": "https://registry.npmjs.org/babel-runtime/-/babel-runtime-4.7.4.tgz", - "integrity": "sha512-0gnK56hiHkbUCwqtaiK15MAsnNxI8T7aOBYUyoAYyNxWs86ExL0NNTDhn0eDO/AIhJf0oXMgV5+1wfSLQ/FMyw==", - "dependencies": { - "core-js": "^0.6.1" - } - }, - "node_modules/babel-runtime/node_modules/core-js": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/core-js/-/core-js-0.6.1.tgz", - "integrity": "sha512-ANdRS9QdyvvVCqMD7gvDhgI5T+/t5FELQB1ZLN94oCDXTJLwt4Q1o6Nbc1wnVrhl6QPyJ5mv0k8hMCdAFLNbLg==", - "deprecated": "core-js@<3.23.3 is no longer maintained and not recommended for usage due to the number of issues. Because of the V8 engine whims, feature detection in old core-js versions could cause a slowdown up to 100x even if nothing is polyfilled. Some versions have web compatibility issues. Please, upgrade your dependencies to the actual version of core-js." - }, "node_modules/balanced-match": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", @@ -5748,14 +5733,6 @@ "safe-buffer": "^5.1.0" } }, - "node_modules/range-at-index": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/range-at-index/-/range-at-index-1.0.4.tgz", - "integrity": "sha512-Aob2FK5jL0cCKvIzA0tuRrdsSXTvxLY5p9dr7GrLY31NwKtUk5EhgHwcKi0kbUacJukGVRglLi6MEqBHB4NHMA==", - "dependencies": { - "babel-runtime": "4.7.4" - } - }, "node_modules/react": { "version": "18.2.0", "resolved": "https://registry.npmjs.org/react/-/react-18.2.0.tgz", @@ -5980,18 +5957,6 @@ "node": ">=0.10.0" } }, - "node_modules/rich-textarea": { - "version": "0.19.5", - "resolved": "https://registry.npmjs.org/rich-textarea/-/rich-textarea-0.19.5.tgz", - "integrity": "sha512-jGzE84BUs0VKLTEIdJaQcToQjRxYO1aNRnPNtnGupkwKWl59dCpp5EWWi5qxU1JMjPtKOBFSSynYG0srr71TJw==", - "dependencies": { - "range-at-index": "^1.0.4", - "use-sync-external-store": "^1.2.0" - }, - "peerDependencies": { - "react": ">=16.14.0" - } - }, "node_modules/rollup": { "version": "3.12.1", "resolved": "https://registry.npmjs.org/rollup/-/rollup-3.12.1.tgz", @@ -9181,21 +9146,6 @@ "dev": true, "requires": {} }, - "babel-runtime": { - "version": "4.7.4", - "resolved": "https://registry.npmjs.org/babel-runtime/-/babel-runtime-4.7.4.tgz", - "integrity": "sha512-0gnK56hiHkbUCwqtaiK15MAsnNxI8T7aOBYUyoAYyNxWs86ExL0NNTDhn0eDO/AIhJf0oXMgV5+1wfSLQ/FMyw==", - "requires": { - "core-js": "^0.6.1" - }, - "dependencies": { - "core-js": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/core-js/-/core-js-0.6.1.tgz", - "integrity": "sha512-ANdRS9QdyvvVCqMD7gvDhgI5T+/t5FELQB1ZLN94oCDXTJLwt4Q1o6Nbc1wnVrhl6QPyJ5mv0k8hMCdAFLNbLg==" - } - } - }, "balanced-match": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", @@ -10942,14 +10892,6 @@ "safe-buffer": "^5.1.0" } }, - "range-at-index": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/range-at-index/-/range-at-index-1.0.4.tgz", - "integrity": "sha512-Aob2FK5jL0cCKvIzA0tuRrdsSXTvxLY5p9dr7GrLY31NwKtUk5EhgHwcKi0kbUacJukGVRglLi6MEqBHB4NHMA==", - "requires": { - "babel-runtime": "4.7.4" - } - }, "react": { "version": "18.2.0", "resolved": "https://registry.npmjs.org/react/-/react-18.2.0.tgz", @@ -11115,15 +11057,6 @@ "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", "dev": true }, - "rich-textarea": { - "version": "0.19.5", - "resolved": "https://registry.npmjs.org/rich-textarea/-/rich-textarea-0.19.5.tgz", - "integrity": "sha512-jGzE84BUs0VKLTEIdJaQcToQjRxYO1aNRnPNtnGupkwKWl59dCpp5EWWi5qxU1JMjPtKOBFSSynYG0srr71TJw==", - "requires": { - "range-at-index": "^1.0.4", - "use-sync-external-store": "^1.2.0" - } - }, "rollup": { "version": "3.12.1", "resolved": "https://registry.npmjs.org/rollup/-/rollup-3.12.1.tgz", diff --git a/package.json b/package.json index fe84c7bc..e457306e 100644 --- a/package.json +++ b/package.json @@ -27,7 +27,6 @@ "react-hotkeys-hook": "~4.3.7", "react-intersection-observer": "~9.4.2", "react-router-dom": "6.6.2", - "rich-textarea": "~0.19.5", "string-length": "~5.0.1", "swiped-events": "~1.1.7", "toastify-js": "~1.12.0", diff --git a/src/components/compose.css b/src/components/compose.css index fff6aa54..8c0d0956 100644 --- a/src/components/compose.css +++ b/src/components/compose.css @@ -466,12 +466,6 @@ vertical-align: middle; } -.compose-highlight, -.compose-link { - color: var(--link-color); - background-color: transparent; -} - @media (min-width: 50em) { #media-sheet main { flex-direction: row; diff --git a/src/components/compose.jsx b/src/components/compose.jsx index 191fd364..9fdd23bd 100644 --- a/src/components/compose.jsx +++ b/src/components/compose.jsx @@ -5,7 +5,6 @@ import equal from 'fast-deep-equal'; import { forwardRef } from 'preact/compat'; import { useEffect, useRef, useState } from 'preact/hooks'; import { useHotkeys } from 'react-hotkeys-hook'; -import { createRegexRenderer, RichTextarea } from 'rich-textarea'; import stringLength from 'string-length'; import { uid } from 'uid/single'; import { useDebouncedCallback } from 'use-debounce'; @@ -1039,28 +1038,6 @@ function Compose({ ); } -const HIGHLIGHT_REG = /(#|@|:)[\p{L}\p{M}\p{N}\p{Pc}_@\.]+:?/gu; -const highlightRenderer = createRegexRenderer([ - [ - HIGHLIGHT_REG, - ({ value }) => { - const first = value[0]; - const last = value[value.length - 1] === ':' ? ':' : ''; - const rest = value.slice(1, last ? -1 : undefined); - return ( - <> - {first} - {rest} - {last && {last}} - - ); - }, - ], - [urlRegexObj, (props) => ], -]); - -const RICH_TEXTAREA = true; - const Textarea = forwardRef((props, ref) => { const { masto } = api(); const [text, setText] = useState(ref.current?.value || ''); @@ -1239,39 +1216,33 @@ const Textarea = forwardRef((props, ref) => { }; }, []); - const fieldProps = { - autoCapitalize: 'sentences', - autoComplete: 'on', - autoCorrect: 'on', - spellCheck: 'true', - dir: 'auto', - rows: '6', - cols: '50', - ...textareaProps, - ref, - name: 'status', - value: text, - onInput: (e) => { - const { scrollHeight, offsetHeight, clientHeight, value } = e.target; - setText(value); - const offset = offsetHeight - clientHeight; - e.target.style.height = value ? scrollHeight + offset + 'px' : null; - props.onInput?.(e); - }, - style: { - width: '100%', - height: '4em', - '--text-weight': (1 + charCount / 140).toFixed(1) || 1, - }, - }; - return ( - {RICH_TEXTAREA ? ( - {highlightRenderer} - ) : ( -