diff --git a/package-lock.json b/package-lock.json index 05cff562..f890f1aa 100644 --- a/package-lock.json +++ b/package-lock.json @@ -23,10 +23,6 @@ "@lucide/svelte": "0.*.0", "@popperjs/core": "^2.11.0", "@tailwindcss/vite": "^4.1.10", - "@tiptap/extension-bullet-list": "^2.10.2", - "@tiptap/extension-document": "^2.10.2", - "@tiptap/extension-history": "^2.10.2", - "@tiptap/extension-paragraph": "^2.10.2", "axios": "^1.7.0", "codemirror": "^6.0.1", "dayjs": "^1.11.10", @@ -53,28 +49,6 @@ "@sveltejs/vite-plugin-svelte": "^5.0.0", "@tailwindcss/forms": "^0.5.7", "@tailwindcss/typography": "^0.5.10", - "@tiptap/core": "^2.10.3", - "@tiptap/extension-bubble-menu": "^2.10.3", - "@tiptap/extension-code-block-lowlight": "^2.10.3", - "@tiptap/extension-color": "^2.10.3", - "@tiptap/extension-highlight": "^2.10.3", - "@tiptap/extension-image": "^2.10.3", - "@tiptap/extension-link": "^2.10.3", - "@tiptap/extension-subscript": "^2.10.3", - "@tiptap/extension-superscript": "^2.10.3", - "@tiptap/extension-table": "^2.10.3", - "@tiptap/extension-table-cell": "^2.10.3", - "@tiptap/extension-table-header": "^2.10.3", - "@tiptap/extension-table-row": "^2.10.3", - "@tiptap/extension-task-item": "^2.10.3", - "@tiptap/extension-task-list": "^2.10.3", - "@tiptap/extension-text": "^2.10.3", - "@tiptap/extension-text-align": "^2.10.3", - "@tiptap/extension-text-style": "^2.10.3", - "@tiptap/extension-typography": "^2.10.3", - "@tiptap/extension-underline": "^2.10.3", - "@tiptap/pm": "^2.10.3", - "@tiptap/starter-kit": "^2.10.3", "@types/eslint": "^9.0.0", "@types/node": "^24.0.0", "@types/qrcode": "^1.5.5", @@ -98,7 +72,6 @@ "svelte-check": "^4.0.0", "svelte-highlight": "^7.8.4", "svelte-idle": "^3.0.1", - "svelte-tiptap": "^2.1.0", "tailwind-merge": "^3.0.0", "tailwind-variants": "^2.1.0", "tailwindcss": "^4.1.10", @@ -576,9 +549,9 @@ } }, "node_modules/@codemirror/view": { - "version": "6.38.6", - "resolved": "https://registry.npmjs.org/@codemirror/view/-/view-6.38.6.tgz", - "integrity": "sha512-qiS0z1bKs5WOvHIAC0Cybmv4AJSkAXgX5aD6Mqd2epSLlVJsQl8NG23jCVouIgkh4All/mrbdsf2UOLFnJw0tw==", + "version": "6.38.8", + "resolved": "https://registry.npmjs.org/@codemirror/view/-/view-6.38.8.tgz", + "integrity": "sha512-XcE9fcnkHCbWkjeKyi0lllwXmBLtyYb5dt89dJyx23I9+LSh5vZDIuk7OLG4VM1lgrXZQcY6cxyZyk5WVPRv/A==", "license": "MIT", "dependencies": { "@codemirror/state": "^6.5.0", @@ -1888,12 +1861,6 @@ "url": "https://opencollective.com/popperjs" } }, - "node_modules/@remirror/core-constants": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@remirror/core-constants/-/core-constants-3.0.0.tgz", - "integrity": "sha512-42aWfPrimMfDKDi4YegyS7x+/0tlzaqwPQCULLanv3DMIlu96KTJR0fM5isWX2UViOqlGnX6YFgqWepcX+XMNg==", - "license": "MIT" - }, "node_modules/@rollup/plugin-commonjs": { "version": "28.0.9", "resolved": "https://registry.npmjs.org/@rollup/plugin-commonjs/-/plugin-commonjs-28.0.9.tgz", @@ -2797,627 +2764,6 @@ "vite": "^5.2.0 || ^6 || ^7" } }, - "node_modules/@tiptap/core": { - "version": "2.27.1", - "resolved": "https://registry.npmjs.org/@tiptap/core/-/core-2.27.1.tgz", - "integrity": "sha512-nkerkl8syHj44ZzAB7oA2GPmmZINKBKCa79FuNvmGJrJ4qyZwlkDzszud23YteFZEytbc87kVd/fP76ROS6sLg==", - "license": "MIT", - "peer": true, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/ueberdosis" - }, - "peerDependencies": { - "@tiptap/pm": "^2.7.0" - } - }, - "node_modules/@tiptap/extension-blockquote": { - "version": "2.27.1", - "resolved": "https://registry.npmjs.org/@tiptap/extension-blockquote/-/extension-blockquote-2.27.1.tgz", - "integrity": "sha512-QrUX3muElDrNjKM3nqCSAtm3H3pT33c6ON8kwRiQboOAjT/9D57Cs7XEVY7r6rMaJPeKztrRUrNVF9w/w/6B0A==", - "dev": true, - "license": "MIT", - "funding": { - "type": "github", - "url": "https://github.com/sponsors/ueberdosis" - }, - "peerDependencies": { - "@tiptap/core": "^2.7.0" - } - }, - "node_modules/@tiptap/extension-bold": { - "version": "2.27.1", - "resolved": "https://registry.npmjs.org/@tiptap/extension-bold/-/extension-bold-2.27.1.tgz", - "integrity": "sha512-g4l4p892x/r7mhea8syp3fNYODxsDrimgouQ+q4DKXIgQmm5+uNhyuEPexP3I8TFNXqQ4DlMNFoM9yCqk97etQ==", - "dev": true, - "license": "MIT", - "funding": { - "type": "github", - "url": "https://github.com/sponsors/ueberdosis" - }, - "peerDependencies": { - "@tiptap/core": "^2.7.0" - } - }, - "node_modules/@tiptap/extension-bubble-menu": { - "version": "2.27.1", - "resolved": "https://registry.npmjs.org/@tiptap/extension-bubble-menu/-/extension-bubble-menu-2.27.1.tgz", - "integrity": "sha512-ki1R27VsSvY2tT9Q2DIlcATwLOoEjf5DsN+5sExarQ8S/ZxT/tvIjRxB8Dx7lb2a818W5f/NER26YchGtmHfpg==", - "dev": true, - "license": "MIT", - "peer": true, - "dependencies": { - "tippy.js": "^6.3.7" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/ueberdosis" - }, - "peerDependencies": { - "@tiptap/core": "^2.7.0", - "@tiptap/pm": "^2.7.0" - } - }, - "node_modules/@tiptap/extension-bullet-list": { - "version": "2.27.1", - "resolved": "https://registry.npmjs.org/@tiptap/extension-bullet-list/-/extension-bullet-list-2.27.1.tgz", - "integrity": "sha512-5FmnfXkJ76wN4EbJNzBhAlmQxho8yEMIJLchTGmXdsD/n/tsyVVtewnQYaIOj/Z7naaGySTGDmjVtLgTuQ+Sxw==", - "license": "MIT", - "funding": { - "type": "github", - "url": "https://github.com/sponsors/ueberdosis" - }, - "peerDependencies": { - "@tiptap/core": "^2.7.0" - } - }, - "node_modules/@tiptap/extension-code": { - "version": "2.27.1", - "resolved": "https://registry.npmjs.org/@tiptap/extension-code/-/extension-code-2.27.1.tgz", - "integrity": "sha512-i65wUGJevzBTIIUBHBc1ggVa27bgemvGl/tY1/89fEuS/0Xmre+OQjw8rCtSLevoHSiYYLgLRlvjtUSUhE4kgg==", - "dev": true, - "license": "MIT", - "funding": { - "type": "github", - "url": "https://github.com/sponsors/ueberdosis" - }, - "peerDependencies": { - "@tiptap/core": "^2.7.0" - } - }, - "node_modules/@tiptap/extension-code-block": { - "version": "2.27.1", - "resolved": "https://registry.npmjs.org/@tiptap/extension-code-block/-/extension-code-block-2.27.1.tgz", - "integrity": "sha512-wCI5VIOfSAdkenCWFvh4m8FFCJ51EOK+CUmOC/PWUjyo2Dgn8QC8HMi015q8XF7886T0KvYVVoqxmxJSUDAYNg==", - "dev": true, - "license": "MIT", - "peer": true, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/ueberdosis" - }, - "peerDependencies": { - "@tiptap/core": "^2.7.0", - "@tiptap/pm": "^2.7.0" - } - }, - "node_modules/@tiptap/extension-code-block-lowlight": { - "version": "2.27.1", - "resolved": "https://registry.npmjs.org/@tiptap/extension-code-block-lowlight/-/extension-code-block-lowlight-2.27.1.tgz", - "integrity": "sha512-Ijg9724uX/l4LXLELEeztZIgg+bDE/jJCkgS1+mavkRA/qtidpQkHo7L/Ry22fmj/ktCtZLjPXE5JAPAoRU6zA==", - "dev": true, - "license": "MIT", - "funding": { - "type": "github", - "url": "https://github.com/sponsors/ueberdosis" - }, - "peerDependencies": { - "@tiptap/core": "^2.7.0", - "@tiptap/extension-code-block": "^2.7.0", - "@tiptap/pm": "^2.7.0", - "highlight.js": "^11", - "lowlight": "^2 || ^3" - } - }, - "node_modules/@tiptap/extension-color": { - "version": "2.27.1", - "resolved": "https://registry.npmjs.org/@tiptap/extension-color/-/extension-color-2.27.1.tgz", - "integrity": "sha512-raYRsdG2tZvVvY1LV/VTZnDG44Y0xRBwo5CZEat0OUqdx34dfvCtYm8HIOTyWBwr7OOW+yR4O1Vc2zFkmfthZw==", - "dev": true, - "license": "MIT", - "funding": { - "type": "github", - "url": "https://github.com/sponsors/ueberdosis" - }, - "peerDependencies": { - "@tiptap/core": "^2.7.0", - "@tiptap/extension-text-style": "^2.7.0" - } - }, - "node_modules/@tiptap/extension-document": { - "version": "2.27.1", - "resolved": "https://registry.npmjs.org/@tiptap/extension-document/-/extension-document-2.27.1.tgz", - "integrity": "sha512-NtJzJY7Q/6XWjpOm5OXKrnEaofrcc1XOTYlo/SaTwl8k2bZo918Vl0IDBWhPVDsUN7kx767uHwbtuQZ+9I82hA==", - "license": "MIT", - "funding": { - "type": "github", - "url": "https://github.com/sponsors/ueberdosis" - }, - "peerDependencies": { - "@tiptap/core": "^2.7.0" - } - }, - "node_modules/@tiptap/extension-dropcursor": { - "version": "2.27.1", - "resolved": "https://registry.npmjs.org/@tiptap/extension-dropcursor/-/extension-dropcursor-2.27.1.tgz", - "integrity": "sha512-3MBQRGHHZ0by3OT0CWbLKS7J3PH9PpobrXjmIR7kr0nde7+bHqxXiVNuuIf501oKU9rnEUSedipSHkLYGkmfsA==", - "dev": true, - "license": "MIT", - "funding": { - "type": "github", - "url": "https://github.com/sponsors/ueberdosis" - }, - "peerDependencies": { - "@tiptap/core": "^2.7.0", - "@tiptap/pm": "^2.7.0" - } - }, - "node_modules/@tiptap/extension-floating-menu": { - "version": "2.27.1", - "resolved": "https://registry.npmjs.org/@tiptap/extension-floating-menu/-/extension-floating-menu-2.27.1.tgz", - "integrity": "sha512-nUk/8DbiXO69l6FDwkWso94BTf52IBoWALo+YGWT6o+FO6cI9LbUGghEX2CdmQYXCvSvwvISF2jXeLQWNZvPZQ==", - "dev": true, - "license": "MIT", - "peer": true, - "dependencies": { - "tippy.js": "^6.3.7" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/ueberdosis" - }, - "peerDependencies": { - "@tiptap/core": "^2.7.0", - "@tiptap/pm": "^2.7.0" - } - }, - "node_modules/@tiptap/extension-gapcursor": { - "version": "2.27.1", - "resolved": "https://registry.npmjs.org/@tiptap/extension-gapcursor/-/extension-gapcursor-2.27.1.tgz", - "integrity": "sha512-A9e1jr+jGhDWzNSXtIO6PYVYhf5j/udjbZwMja+wCE/3KvZU9V3IrnGKz1xNW+2Q2BDOe1QO7j5uVL9ElR6nTA==", - "dev": true, - "license": "MIT", - "funding": { - "type": "github", - "url": "https://github.com/sponsors/ueberdosis" - }, - "peerDependencies": { - "@tiptap/core": "^2.7.0", - "@tiptap/pm": "^2.7.0" - } - }, - "node_modules/@tiptap/extension-hard-break": { - "version": "2.27.1", - "resolved": "https://registry.npmjs.org/@tiptap/extension-hard-break/-/extension-hard-break-2.27.1.tgz", - "integrity": "sha512-W4hHa4Io6QCTwpyTlN6UAvqMIQ7t56kIUByZhyY9EWrg/+JpbfpxE1kXFLPB4ZGgwBknFOw+e4bJ1j3oAbTJFw==", - "dev": true, - "license": "MIT", - "funding": { - "type": "github", - "url": "https://github.com/sponsors/ueberdosis" - }, - "peerDependencies": { - "@tiptap/core": "^2.7.0" - } - }, - "node_modules/@tiptap/extension-heading": { - "version": "2.27.1", - "resolved": "https://registry.npmjs.org/@tiptap/extension-heading/-/extension-heading-2.27.1.tgz", - "integrity": "sha512-6xoC7igZlW1EmnQ5WVH9IL7P1nCQb3bBUaIDLvk7LbweEogcTUECI4Xg1vxMOVmj9tlDe1I4BsgfcKpB5KEsZw==", - "dev": true, - "license": "MIT", - "funding": { - "type": "github", - "url": "https://github.com/sponsors/ueberdosis" - }, - "peerDependencies": { - "@tiptap/core": "^2.7.0" - } - }, - "node_modules/@tiptap/extension-highlight": { - "version": "2.27.1", - "resolved": "https://registry.npmjs.org/@tiptap/extension-highlight/-/extension-highlight-2.27.1.tgz", - "integrity": "sha512-ntuYX09tvHQE/R/8WbTOxbFuQhRr2jhTkKz/gLwDD2o8IhccSy3f0nm+mVmVamKQnbsBBbLohojd5IGOnX9f1A==", - "dev": true, - "license": "MIT", - "funding": { - "type": "github", - "url": "https://github.com/sponsors/ueberdosis" - }, - "peerDependencies": { - "@tiptap/core": "^2.7.0" - } - }, - "node_modules/@tiptap/extension-history": { - "version": "2.27.1", - "resolved": "https://registry.npmjs.org/@tiptap/extension-history/-/extension-history-2.27.1.tgz", - "integrity": "sha512-K8PHC9gegSAt0wzSlsd4aUpoEyIJYOmVVeyniHr1P1mIblW1KYEDbRGbDlrLALTyUEfMcBhdIm8zrB9X2Nihvg==", - "license": "MIT", - "funding": { - "type": "github", - "url": "https://github.com/sponsors/ueberdosis" - }, - "peerDependencies": { - "@tiptap/core": "^2.7.0", - "@tiptap/pm": "^2.7.0" - } - }, - "node_modules/@tiptap/extension-horizontal-rule": { - "version": "2.27.1", - "resolved": "https://registry.npmjs.org/@tiptap/extension-horizontal-rule/-/extension-horizontal-rule-2.27.1.tgz", - "integrity": "sha512-WxXWGEEsqDmGIF2o9av+3r9Qje4CKrqrpeQY6aRO5bxvWX9AabQCfasepayBok6uwtvNzh3Xpsn9zbbSk09dNA==", - "dev": true, - "license": "MIT", - "funding": { - "type": "github", - "url": "https://github.com/sponsors/ueberdosis" - }, - "peerDependencies": { - "@tiptap/core": "^2.7.0", - "@tiptap/pm": "^2.7.0" - } - }, - "node_modules/@tiptap/extension-image": { - "version": "2.27.1", - "resolved": "https://registry.npmjs.org/@tiptap/extension-image/-/extension-image-2.27.1.tgz", - "integrity": "sha512-wu3vMKDYWJwKS6Hrw5PPCKBO2RxyHNeFLiA/uDErEV7axzNpievK/U9DyaDXmtK3K/h1XzJAJz19X+2d/pY68w==", - "dev": true, - "license": "MIT", - "funding": { - "type": "github", - "url": "https://github.com/sponsors/ueberdosis" - }, - "peerDependencies": { - "@tiptap/core": "^2.7.0" - } - }, - "node_modules/@tiptap/extension-italic": { - "version": "2.27.1", - "resolved": "https://registry.npmjs.org/@tiptap/extension-italic/-/extension-italic-2.27.1.tgz", - "integrity": "sha512-rcm0GyniWW0UhcNI9+1eIK64GqWQLyIIrWGINslvqSUoBc+WkfocLvv4CMpRkzKlfsAxwVIBuH2eLxHKDtAREA==", - "dev": true, - "license": "MIT", - "funding": { - "type": "github", - "url": "https://github.com/sponsors/ueberdosis" - }, - "peerDependencies": { - "@tiptap/core": "^2.7.0" - } - }, - "node_modules/@tiptap/extension-link": { - "version": "2.27.1", - "resolved": "https://registry.npmjs.org/@tiptap/extension-link/-/extension-link-2.27.1.tgz", - "integrity": "sha512-cCwWPZsnVh9MXnGOqSIRXPPuUixRDK8eMN2TvqwbxUBb1TU7b/HtNvfMU4tAOqAuMRJ0aJkFuf3eB0Gi8LVb1g==", - "dev": true, - "license": "MIT", - "dependencies": { - "linkifyjs": "^4.3.2" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/ueberdosis" - }, - "peerDependencies": { - "@tiptap/core": "^2.7.0", - "@tiptap/pm": "^2.7.0" - } - }, - "node_modules/@tiptap/extension-list-item": { - "version": "2.27.1", - "resolved": "https://registry.npmjs.org/@tiptap/extension-list-item/-/extension-list-item-2.27.1.tgz", - "integrity": "sha512-dtsxvtzxfwOJP6dKGf0vb2MJAoDF2NxoiWzpq0XTvo7NGGYUHfuHjX07Zp0dYqb4seaDXjwsi5BIQUOp3+WMFQ==", - "dev": true, - "license": "MIT", - "funding": { - "type": "github", - "url": "https://github.com/sponsors/ueberdosis" - }, - "peerDependencies": { - "@tiptap/core": "^2.7.0" - } - }, - "node_modules/@tiptap/extension-ordered-list": { - "version": "2.27.1", - "resolved": "https://registry.npmjs.org/@tiptap/extension-ordered-list/-/extension-ordered-list-2.27.1.tgz", - "integrity": "sha512-U1/sWxc2TciozQsZjH35temyidYUjvroHj3PUPzPyh19w2fwKh1NSbFybWuoYs6jS3XnMSwnM2vF52tOwvfEmA==", - "dev": true, - "license": "MIT", - "funding": { - "type": "github", - "url": "https://github.com/sponsors/ueberdosis" - }, - "peerDependencies": { - "@tiptap/core": "^2.7.0" - } - }, - "node_modules/@tiptap/extension-paragraph": { - "version": "2.27.1", - "resolved": "https://registry.npmjs.org/@tiptap/extension-paragraph/-/extension-paragraph-2.27.1.tgz", - "integrity": "sha512-R3QdrHcUdFAsdsn2UAIvhY0yWyHjqGyP/Rv8RRdN0OyFiTKtwTPqreKMHKJOflgX4sMJl/OpHTpNG1Kaf7Lo2A==", - "license": "MIT", - "funding": { - "type": "github", - "url": "https://github.com/sponsors/ueberdosis" - }, - "peerDependencies": { - "@tiptap/core": "^2.7.0" - } - }, - "node_modules/@tiptap/extension-strike": { - "version": "2.27.1", - "resolved": "https://registry.npmjs.org/@tiptap/extension-strike/-/extension-strike-2.27.1.tgz", - "integrity": "sha512-S9I//K8KPgfFTC5I5lorClzXk0g4lrAv9y5qHzHO5EOWt7AFl0YTg2oN8NKSIBK4bHRnPIrjJJKv+dDFnUp5jQ==", - "dev": true, - "license": "MIT", - "funding": { - "type": "github", - "url": "https://github.com/sponsors/ueberdosis" - }, - "peerDependencies": { - "@tiptap/core": "^2.7.0" - } - }, - "node_modules/@tiptap/extension-subscript": { - "version": "2.27.1", - "resolved": "https://registry.npmjs.org/@tiptap/extension-subscript/-/extension-subscript-2.27.1.tgz", - "integrity": "sha512-n2jTaYriewwz3ES1o6Wt/OwREvPwi97n+yEsJ7i31wiuxGTdCP31eAuppC6DvixEvDt3/rZMZcNp8Ah9crlbnw==", - "dev": true, - "license": "MIT", - "funding": { - "type": "github", - "url": "https://github.com/sponsors/ueberdosis" - }, - "peerDependencies": { - "@tiptap/core": "^2.7.0" - } - }, - "node_modules/@tiptap/extension-superscript": { - "version": "2.27.1", - "resolved": "https://registry.npmjs.org/@tiptap/extension-superscript/-/extension-superscript-2.27.1.tgz", - "integrity": "sha512-zTYOD7k3txm21rjeYHsf/VIpBe9IvVfNHSNayyY/JOgyQ/fW40cgX0gADNoT2ayAtRes4TvpcUYdgF9vC5bkJw==", - "dev": true, - "license": "MIT", - "funding": { - "type": "github", - "url": "https://github.com/sponsors/ueberdosis" - }, - "peerDependencies": { - "@tiptap/core": "^2.7.0" - } - }, - "node_modules/@tiptap/extension-table": { - "version": "2.27.1", - "resolved": "https://registry.npmjs.org/@tiptap/extension-table/-/extension-table-2.27.1.tgz", - "integrity": "sha512-iOoOo0vYFzAogAZlw36DgmFfNM5vOkLqnApm81soO/YWpqtKAvBn+TMY4ss4OMDsOefUzBa6xqOJ0gJR5ZygjA==", - "dev": true, - "license": "MIT", - "funding": { - "type": "github", - "url": "https://github.com/sponsors/ueberdosis" - }, - "peerDependencies": { - "@tiptap/core": "^2.7.0", - "@tiptap/pm": "^2.7.0" - } - }, - "node_modules/@tiptap/extension-table-cell": { - "version": "2.27.1", - "resolved": "https://registry.npmjs.org/@tiptap/extension-table-cell/-/extension-table-cell-2.27.1.tgz", - "integrity": "sha512-VowNmz1kub2qfntWkU8jGA6DoCl9xjJBWSypuQIeiN/IRId3BMrJodT26pTNJ3ChDMtYaanWaUvYqckRxgTC2A==", - "dev": true, - "license": "MIT", - "funding": { - "type": "github", - "url": "https://github.com/sponsors/ueberdosis" - }, - "peerDependencies": { - "@tiptap/core": "^2.7.0" - } - }, - "node_modules/@tiptap/extension-table-header": { - "version": "2.27.1", - "resolved": "https://registry.npmjs.org/@tiptap/extension-table-header/-/extension-table-header-2.27.1.tgz", - "integrity": "sha512-lSbGB6kBp/sTVzAWl4v7v7ztL5XU3aTdlS7FhfGjpdsxd4zPKYG8kx+Uxgq25W9/BlCbnqHnO0poAMfOlspDQw==", - "dev": true, - "license": "MIT", - "funding": { - "type": "github", - "url": "https://github.com/sponsors/ueberdosis" - }, - "peerDependencies": { - "@tiptap/core": "^2.7.0" - } - }, - "node_modules/@tiptap/extension-table-row": { - "version": "2.27.1", - "resolved": "https://registry.npmjs.org/@tiptap/extension-table-row/-/extension-table-row-2.27.1.tgz", - "integrity": "sha512-3xtlmZ6NWDi5a42gK0qQQTeBUpJ2j1o7qyXTFkhQaJAeIFEqsemgSRhgXZxbwSmQQZsPJ/86KWBNVkT0FaRFDw==", - "dev": true, - "license": "MIT", - "funding": { - "type": "github", - "url": "https://github.com/sponsors/ueberdosis" - }, - "peerDependencies": { - "@tiptap/core": "^2.7.0" - } - }, - "node_modules/@tiptap/extension-task-item": { - "version": "2.27.1", - "resolved": "https://registry.npmjs.org/@tiptap/extension-task-item/-/extension-task-item-2.27.1.tgz", - "integrity": "sha512-vaEtdos+9jApD6yRfD6F/xShikiZFHi7I0nswAmGKT/kE1wmHCUxme8OFMe7642e2OK0lqgHsUaOLxP/0nZJ5A==", - "dev": true, - "license": "MIT", - "funding": { - "type": "github", - "url": "https://github.com/sponsors/ueberdosis" - }, - "peerDependencies": { - "@tiptap/core": "^2.7.0", - "@tiptap/pm": "^2.7.0" - } - }, - "node_modules/@tiptap/extension-task-list": { - "version": "2.27.1", - "resolved": "https://registry.npmjs.org/@tiptap/extension-task-list/-/extension-task-list-2.27.1.tgz", - "integrity": "sha512-KRlYOZ6kdURvAspUrLVsC7mLkVW2DYhpj+7QxH7gVDZuAuoPUEmpJVcBVPq7GhPF9PccaRLru+n1Ege5VqvZ+Q==", - "dev": true, - "license": "MIT", - "funding": { - "type": "github", - "url": "https://github.com/sponsors/ueberdosis" - }, - "peerDependencies": { - "@tiptap/core": "^2.7.0" - } - }, - "node_modules/@tiptap/extension-text": { - "version": "2.27.1", - "resolved": "https://registry.npmjs.org/@tiptap/extension-text/-/extension-text-2.27.1.tgz", - "integrity": "sha512-a4GCT+GZ9tUwl82F4CEum9/+WsuW0/De9Be/NqrMmi7eNfAwbUTbLCTFU0gEvv25WMHCoUzaeNk/qGmzeVPJ1Q==", - "dev": true, - "license": "MIT", - "funding": { - "type": "github", - "url": "https://github.com/sponsors/ueberdosis" - }, - "peerDependencies": { - "@tiptap/core": "^2.7.0" - } - }, - "node_modules/@tiptap/extension-text-align": { - "version": "2.27.1", - "resolved": "https://registry.npmjs.org/@tiptap/extension-text-align/-/extension-text-align-2.27.1.tgz", - "integrity": "sha512-D7dLPk7y5mDn9ZNANQ4K2gCq4vy+Emm5AdeWOGzNeqJsYrBotiQYXd9rb1QYjdup2kzAoKduMTUXV92ujo5cEg==", - "dev": true, - "license": "MIT", - "funding": { - "type": "github", - "url": "https://github.com/sponsors/ueberdosis" - }, - "peerDependencies": { - "@tiptap/core": "^2.7.0" - } - }, - "node_modules/@tiptap/extension-text-style": { - "version": "2.27.1", - "resolved": "https://registry.npmjs.org/@tiptap/extension-text-style/-/extension-text-style-2.27.1.tgz", - "integrity": "sha512-NagQ9qLk0Ril83gfrk+C65SvTqPjL3WVnLF2arsEVnCrxcx3uDOvdJW67f/K5HEwEHsoqJ4Zq9Irco/koXrOXA==", - "dev": true, - "license": "MIT", - "peer": true, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/ueberdosis" - }, - "peerDependencies": { - "@tiptap/core": "^2.7.0" - } - }, - "node_modules/@tiptap/extension-typography": { - "version": "2.27.1", - "resolved": "https://registry.npmjs.org/@tiptap/extension-typography/-/extension-typography-2.27.1.tgz", - "integrity": "sha512-jAZU5IuWH9CtZlolQ1gRhV+bT75s19SXjadQwkk18gMMiapcaIVVTxUDWY6ycv9ge4cjRoaP3lqBviW3cGqhOA==", - "dev": true, - "license": "MIT", - "funding": { - "type": "github", - "url": "https://github.com/sponsors/ueberdosis" - }, - "peerDependencies": { - "@tiptap/core": "^2.7.0" - } - }, - "node_modules/@tiptap/extension-underline": { - "version": "2.27.1", - "resolved": "https://registry.npmjs.org/@tiptap/extension-underline/-/extension-underline-2.27.1.tgz", - "integrity": "sha512-fPTmfJFAQWg1O/os1pYSPVdtvly6eW/w5sDofG7pre+bdQUN+8s1cZYelSuj/ltNVioRaB2Ws7tvNgnHL0aAJQ==", - "dev": true, - "license": "MIT", - "funding": { - "type": "github", - "url": "https://github.com/sponsors/ueberdosis" - }, - "peerDependencies": { - "@tiptap/core": "^2.7.0" - } - }, - "node_modules/@tiptap/pm": { - "version": "2.27.1", - "resolved": "https://registry.npmjs.org/@tiptap/pm/-/pm-2.27.1.tgz", - "integrity": "sha512-ijKo3+kIjALthYsnBmkRXAuw2Tswd9gd7BUR5OMfIcjGp8v576vKxOxrRfuYiUM78GPt//P0sVc1WV82H5N0PQ==", - "license": "MIT", - "peer": true, - "dependencies": { - "prosemirror-changeset": "^2.3.0", - "prosemirror-collab": "^1.3.1", - "prosemirror-commands": "^1.6.2", - "prosemirror-dropcursor": "^1.8.1", - "prosemirror-gapcursor": "^1.3.2", - "prosemirror-history": "^1.4.1", - "prosemirror-inputrules": "^1.4.0", - "prosemirror-keymap": "^1.2.2", - "prosemirror-markdown": "^1.13.1", - "prosemirror-menu": "^1.2.4", - "prosemirror-model": "^1.23.0", - "prosemirror-schema-basic": "^1.2.3", - "prosemirror-schema-list": "^1.4.1", - "prosemirror-state": "^1.4.3", - "prosemirror-tables": "^1.6.4", - "prosemirror-trailing-node": "^3.0.0", - "prosemirror-transform": "^1.10.2", - "prosemirror-view": "^1.37.0" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/ueberdosis" - } - }, - "node_modules/@tiptap/starter-kit": { - "version": "2.27.1", - "resolved": "https://registry.npmjs.org/@tiptap/starter-kit/-/starter-kit-2.27.1.tgz", - "integrity": "sha512-uQQlP0Nmn9eq19qm8YoOeloEfmcGbPpB1cujq54Q6nPgxaBozR7rE7tXbFTinxRW2+Hr7XyNWhpjB7DMNkdU2Q==", - "dev": true, - "license": "MIT", - "dependencies": { - "@tiptap/core": "^2.27.1", - "@tiptap/extension-blockquote": "^2.27.1", - "@tiptap/extension-bold": "^2.27.1", - "@tiptap/extension-bullet-list": "^2.27.1", - "@tiptap/extension-code": "^2.27.1", - "@tiptap/extension-code-block": "^2.27.1", - "@tiptap/extension-document": "^2.27.1", - "@tiptap/extension-dropcursor": "^2.27.1", - "@tiptap/extension-gapcursor": "^2.27.1", - "@tiptap/extension-hard-break": "^2.27.1", - "@tiptap/extension-heading": "^2.27.1", - "@tiptap/extension-history": "^2.27.1", - "@tiptap/extension-horizontal-rule": "^2.27.1", - "@tiptap/extension-italic": "^2.27.1", - "@tiptap/extension-list-item": "^2.27.1", - "@tiptap/extension-ordered-list": "^2.27.1", - "@tiptap/extension-paragraph": "^2.27.1", - "@tiptap/extension-strike": "^2.27.1", - "@tiptap/extension-text": "^2.27.1", - "@tiptap/extension-text-style": "^2.27.1", - "@tiptap/pm": "^2.27.1" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/ueberdosis" - } - }, "node_modules/@types/chai": { "version": "5.2.3", "resolved": "https://registry.npmjs.org/@types/chai/-/chai-5.2.3.tgz", @@ -3476,28 +2822,6 @@ "integrity": "sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==", "license": "MIT" }, - "node_modules/@types/linkify-it": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/@types/linkify-it/-/linkify-it-5.0.0.tgz", - "integrity": "sha512-sVDA58zAw4eWAffKOaQH5/5j3XeayukzDk+ewSsnv3p4yJEZHCCzMDiZM8e0OUrRvmpGZ85jf4yDHkHsgBNr9Q==", - "license": "MIT" - }, - "node_modules/@types/markdown-it": { - "version": "14.1.2", - "resolved": "https://registry.npmjs.org/@types/markdown-it/-/markdown-it-14.1.2.tgz", - "integrity": "sha512-promo4eFwuiW+TfGxhi+0x3czqTYJkG8qB17ZUJiVF10Xm7NLVRSLUsfRTU/6h1e24VvRnXCx+hG7li58lkzog==", - "license": "MIT", - "dependencies": { - "@types/linkify-it": "^5", - "@types/mdurl": "^2" - } - }, - "node_modules/@types/mdurl": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/@types/mdurl/-/mdurl-2.0.0.tgz", - "integrity": "sha512-RGdgjQUZba5p6QEFAVx2OGb8rQDL/cPRG7GiedRzMcJ1tYnUANBncjbSB1NRGwbvjcPeikRABz2nshyPk1bhWg==", - "license": "MIT" - }, "node_modules/@types/node": { "version": "24.10.1", "resolved": "https://registry.npmjs.org/@types/node/-/node-24.10.1.tgz", @@ -4646,6 +3970,7 @@ "resolved": "https://registry.npmjs.org/codemirror/-/codemirror-6.0.2.tgz", "integrity": "sha512-VhydHotNW5w1UGK0Qj96BwSk/Zqbp9WbnyK2W/eVMv4QyF41INRGpjUhFJY7/uDNuudSc33a/PKr4iDqRduvHw==", "license": "MIT", + "peer": true, "dependencies": { "@codemirror/autocomplete": "^6.0.0", "@codemirror/commands": "^6.0.0", @@ -4940,18 +4265,6 @@ "node": ">=10.13.0" } }, - "node_modules/entities": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/entities/-/entities-4.5.0.tgz", - "integrity": "sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==", - "license": "BSD-2-Clause", - "engines": { - "node": ">=0.12" - }, - "funding": { - "url": "https://github.com/fb55/entities?sponsor=1" - } - }, "node_modules/es-define-property": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.1.tgz", @@ -6255,22 +5568,6 @@ "node": ">=10" } }, - "node_modules/linkify-it": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/linkify-it/-/linkify-it-5.0.0.tgz", - "integrity": "sha512-5aHCbzQRADcdP+ATqnDuhhJ/MRIqDkZX5pyjFHRRysS8vZ5AbqGEoFIb6pYHPZ+L/OC2Lc+xT8uHVVR5CAK/wQ==", - "license": "MIT", - "dependencies": { - "uc.micro": "^2.0.0" - } - }, - "node_modules/linkifyjs": { - "version": "4.3.2", - "resolved": "https://registry.npmjs.org/linkifyjs/-/linkifyjs-4.3.2.tgz", - "integrity": "sha512-NT1CJtq3hHIreOianA8aSXn6Cw0JzYOuDQbOrSPe7gqFnCpKP++MQe3ODgO3oh2GJFORkAAdqredOa60z63GbA==", - "dev": true, - "license": "MIT" - }, "node_modules/locate-character": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/locate-character/-/locate-character-3.0.0.tgz", @@ -6350,23 +5647,6 @@ "@jridgewell/sourcemap-codec": "^1.5.5" } }, - "node_modules/markdown-it": { - "version": "14.1.0", - "resolved": "https://registry.npmjs.org/markdown-it/-/markdown-it-14.1.0.tgz", - "integrity": "sha512-a54IwgWPaeBCAAsv13YgmALOF1elABB08FxO9i+r4VFk5Vl4pKokRPeX8u5TCgSsPi6ec1otfLjdOpVcgbpshg==", - "license": "MIT", - "dependencies": { - "argparse": "^2.0.1", - "entities": "^4.4.0", - "linkify-it": "^5.0.0", - "mdurl": "^2.0.0", - "punycode.js": "^2.3.1", - "uc.micro": "^2.1.0" - }, - "bin": { - "markdown-it": "bin/markdown-it.mjs" - } - }, "node_modules/marked": { "version": "16.4.2", "resolved": "https://registry.npmjs.org/marked/-/marked-16.4.2.tgz", @@ -6388,12 +5668,6 @@ "node": ">= 0.4" } }, - "node_modules/mdurl": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/mdurl/-/mdurl-2.0.0.tgz", - "integrity": "sha512-Lf+9+2r+Tdp5wXDXC4PcIBjTDtq4UKjCPMQhKIuzpJNW0b96kVqSwW0bT7FhRSfmAiFYgP+SCRvdrDozfh0U5w==", - "license": "MIT" - }, "node_modules/merge2": { "version": "1.4.1", "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", @@ -6641,12 +5915,6 @@ "node": ">= 0.8.0" } }, - "node_modules/orderedmap": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/orderedmap/-/orderedmap-2.1.1.tgz", - "integrity": "sha512-TvAWxi0nDe1j/rtMcWcIj94+Ffe6n7zhow33h40SKxmsmozs6dz/e+EajymfoFcHd7sxNn8yHM8839uixMOV6g==", - "license": "MIT" - }, "node_modules/p-limit": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", @@ -6972,204 +6240,6 @@ "svelte": "^3.2.0 || ^4.0.0-next.0 || ^5.0.0-next.0" } }, - "node_modules/prosemirror-changeset": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/prosemirror-changeset/-/prosemirror-changeset-2.3.1.tgz", - "integrity": "sha512-j0kORIBm8ayJNl3zQvD1TTPHJX3g042et6y/KQhZhnPrruO8exkTgG8X+NRpj7kIyMMEx74Xb3DyMIBtO0IKkQ==", - "license": "MIT", - "dependencies": { - "prosemirror-transform": "^1.0.0" - } - }, - "node_modules/prosemirror-collab": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/prosemirror-collab/-/prosemirror-collab-1.3.1.tgz", - "integrity": "sha512-4SnynYR9TTYaQVXd/ieUvsVV4PDMBzrq2xPUWutHivDuOshZXqQ5rGbZM84HEaXKbLdItse7weMGOUdDVcLKEQ==", - "license": "MIT", - "dependencies": { - "prosemirror-state": "^1.0.0" - } - }, - "node_modules/prosemirror-commands": { - "version": "1.7.1", - "resolved": "https://registry.npmjs.org/prosemirror-commands/-/prosemirror-commands-1.7.1.tgz", - "integrity": "sha512-rT7qZnQtx5c0/y/KlYaGvtG411S97UaL6gdp6RIZ23DLHanMYLyfGBV5DtSnZdthQql7W+lEVbpSfwtO8T+L2w==", - "license": "MIT", - "dependencies": { - "prosemirror-model": "^1.0.0", - "prosemirror-state": "^1.0.0", - "prosemirror-transform": "^1.10.2" - } - }, - "node_modules/prosemirror-dropcursor": { - "version": "1.8.2", - "resolved": "https://registry.npmjs.org/prosemirror-dropcursor/-/prosemirror-dropcursor-1.8.2.tgz", - "integrity": "sha512-CCk6Gyx9+Tt2sbYk5NK0nB1ukHi2ryaRgadV/LvyNuO3ena1payM2z6Cg0vO1ebK8cxbzo41ku2DE5Axj1Zuiw==", - "license": "MIT", - "dependencies": { - "prosemirror-state": "^1.0.0", - "prosemirror-transform": "^1.1.0", - "prosemirror-view": "^1.1.0" - } - }, - "node_modules/prosemirror-gapcursor": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/prosemirror-gapcursor/-/prosemirror-gapcursor-1.4.0.tgz", - "integrity": "sha512-z00qvurSdCEWUIulij/isHaqu4uLS8r/Fi61IbjdIPJEonQgggbJsLnstW7Lgdk4zQ68/yr6B6bf7sJXowIgdQ==", - "license": "MIT", - "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.5.0", - "resolved": "https://registry.npmjs.org/prosemirror-history/-/prosemirror-history-1.5.0.tgz", - "integrity": "sha512-zlzTiH01eKA55UAf1MEjtssJeHnGxO0j4K4Dpx+gnmX9n+SHNlDqI2oO1Kv1iPN5B1dm5fsljCfqKF9nFL6HRg==", - "license": "MIT", - "dependencies": { - "prosemirror-state": "^1.2.2", - "prosemirror-transform": "^1.0.0", - "prosemirror-view": "^1.31.0", - "rope-sequence": "^1.3.0" - } - }, - "node_modules/prosemirror-inputrules": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/prosemirror-inputrules/-/prosemirror-inputrules-1.5.1.tgz", - "integrity": "sha512-7wj4uMjKaXWAQ1CDgxNzNtR9AlsuwzHfdFH1ygEHA2KHF2DOEaXl1CJfNPAKCg9qNEh4rum975QLaCiQPyY6Fw==", - "license": "MIT", - "dependencies": { - "prosemirror-state": "^1.0.0", - "prosemirror-transform": "^1.0.0" - } - }, - "node_modules/prosemirror-keymap": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/prosemirror-keymap/-/prosemirror-keymap-1.2.3.tgz", - "integrity": "sha512-4HucRlpiLd1IPQQXNqeo81BGtkY8Ai5smHhKW9jjPKRc2wQIxksg7Hl1tTI2IfT2B/LgX6bfYvXxEpJl7aKYKw==", - "license": "MIT", - "dependencies": { - "prosemirror-state": "^1.0.0", - "w3c-keyname": "^2.2.0" - } - }, - "node_modules/prosemirror-markdown": { - "version": "1.13.2", - "resolved": "https://registry.npmjs.org/prosemirror-markdown/-/prosemirror-markdown-1.13.2.tgz", - "integrity": "sha512-FPD9rHPdA9fqzNmIIDhhnYQ6WgNoSWX9StUZ8LEKapaXU9i6XgykaHKhp6XMyXlOWetmaFgGDS/nu/w9/vUc5g==", - "license": "MIT", - "dependencies": { - "@types/markdown-it": "^14.0.0", - "markdown-it": "^14.0.0", - "prosemirror-model": "^1.25.0" - } - }, - "node_modules/prosemirror-menu": { - "version": "1.2.5", - "resolved": "https://registry.npmjs.org/prosemirror-menu/-/prosemirror-menu-1.2.5.tgz", - "integrity": "sha512-qwXzynnpBIeg1D7BAtjOusR+81xCp53j7iWu/IargiRZqRjGIlQuu1f3jFi+ehrHhWMLoyOQTSRx/IWZJqOYtQ==", - "license": "MIT", - "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.25.4", - "resolved": "https://registry.npmjs.org/prosemirror-model/-/prosemirror-model-1.25.4.tgz", - "integrity": "sha512-PIM7E43PBxKce8OQeezAs9j4TP+5yDpZVbuurd1h5phUxEKIu+G2a+EUZzIC5nS1mJktDJWzbqS23n1tsAf5QA==", - "license": "MIT", - "peer": true, - "dependencies": { - "orderedmap": "^2.0.0" - } - }, - "node_modules/prosemirror-schema-basic": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/prosemirror-schema-basic/-/prosemirror-schema-basic-1.2.4.tgz", - "integrity": "sha512-ELxP4TlX3yr2v5rM7Sb70SqStq5NvI15c0j9j/gjsrO5vaw+fnnpovCLEGIcpeGfifkuqJwl4fon6b+KdrODYQ==", - "license": "MIT", - "dependencies": { - "prosemirror-model": "^1.25.0" - } - }, - "node_modules/prosemirror-schema-list": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/prosemirror-schema-list/-/prosemirror-schema-list-1.5.1.tgz", - "integrity": "sha512-927lFx/uwyQaGwJxLWCZRkjXG0p48KpMj6ueoYiu4JX05GGuGcgzAy62dfiV8eFZftgyBUvLx76RsMe20fJl+Q==", - "license": "MIT", - "dependencies": { - "prosemirror-model": "^1.0.0", - "prosemirror-state": "^1.0.0", - "prosemirror-transform": "^1.7.3" - } - }, - "node_modules/prosemirror-state": { - "version": "1.4.4", - "resolved": "https://registry.npmjs.org/prosemirror-state/-/prosemirror-state-1.4.4.tgz", - "integrity": "sha512-6jiYHH2CIGbCfnxdHbXZ12gySFY/fz/ulZE333G6bPqIZ4F+TXo9ifiR86nAHpWnfoNjOb3o5ESi7J8Uz1jXHw==", - "license": "MIT", - "peer": true, - "dependencies": { - "prosemirror-model": "^1.0.0", - "prosemirror-transform": "^1.0.0", - "prosemirror-view": "^1.27.0" - } - }, - "node_modules/prosemirror-tables": { - "version": "1.8.1", - "resolved": "https://registry.npmjs.org/prosemirror-tables/-/prosemirror-tables-1.8.1.tgz", - "integrity": "sha512-DAgDoUYHCcc6tOGpLVPSU1k84kCUWTWnfWX3UDy2Delv4ryH0KqTD6RBI6k4yi9j9I8gl3j8MkPpRD/vWPZbug==", - "license": "MIT", - "dependencies": { - "prosemirror-keymap": "^1.2.2", - "prosemirror-model": "^1.25.0", - "prosemirror-state": "^1.4.3", - "prosemirror-transform": "^1.10.3", - "prosemirror-view": "^1.39.1" - } - }, - "node_modules/prosemirror-trailing-node": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/prosemirror-trailing-node/-/prosemirror-trailing-node-3.0.0.tgz", - "integrity": "sha512-xiun5/3q0w5eRnGYfNlW1uU9W6x5MoFKWwq/0TIRgt09lv7Hcser2QYV8t4muXbEr+Fwo0geYn79Xs4GKywrRQ==", - "license": "MIT", - "dependencies": { - "@remirror/core-constants": "3.0.0", - "escape-string-regexp": "^4.0.0" - }, - "peerDependencies": { - "prosemirror-model": "^1.22.1", - "prosemirror-state": "^1.4.2", - "prosemirror-view": "^1.33.8" - } - }, - "node_modules/prosemirror-transform": { - "version": "1.10.5", - "resolved": "https://registry.npmjs.org/prosemirror-transform/-/prosemirror-transform-1.10.5.tgz", - "integrity": "sha512-RPDQCxIDhIBb1o36xxwsaeAvivO8VLJcgBtzmOwQ64bMtsVFh5SSuJ6dWSxO1UsHTiTXPCgQm3PDJt7p6IOLbw==", - "license": "MIT", - "dependencies": { - "prosemirror-model": "^1.21.0" - } - }, - "node_modules/prosemirror-view": { - "version": "1.41.3", - "resolved": "https://registry.npmjs.org/prosemirror-view/-/prosemirror-view-1.41.3.tgz", - "integrity": "sha512-SqMiYMUQNNBP9kfPhLO8WXEk/fon47vc52FQsUiJzTBuyjKgEcoAwMyF04eQ4WZ2ArMn7+ReypYL60aKngbACQ==", - "license": "MIT", - "peer": true, - "dependencies": { - "prosemirror-model": "^1.20.0", - "prosemirror-state": "^1.0.0", - "prosemirror-transform": "^1.1.0" - } - }, "node_modules/proxy-compare": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/proxy-compare/-/proxy-compare-3.0.1.tgz", @@ -7192,15 +6262,6 @@ "node": ">=6" } }, - "node_modules/punycode.js": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/punycode.js/-/punycode.js-2.3.1.tgz", - "integrity": "sha512-uxFIHU0YlHYhDQtV4R9J6a52SLx28BCjT+4ieh7IGbgwVJWO+km431c4yRlREUAsAmt/uMjQUyQHNEPf0M39CA==", - "license": "MIT", - "engines": { - "node": ">=6" - } - }, "node_modules/qrcode": { "version": "1.5.4", "resolved": "https://registry.npmjs.org/qrcode/-/qrcode-1.5.4.tgz", @@ -7348,12 +6409,6 @@ "fsevents": "~2.3.2" } }, - "node_modules/rope-sequence": { - "version": "1.3.4", - "resolved": "https://registry.npmjs.org/rope-sequence/-/rope-sequence-1.3.4.tgz", - "integrity": "sha512-UT5EDe2cu2E/6O4igUr5PSFs23nvvukicWHx6GnOPlHAiiYbzNuCRQCuiUdHJQcqKalLKlrYJnjY0ySGsXNQXQ==", - "license": "MIT" - }, "node_modules/run-parallel": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", @@ -8156,26 +7211,6 @@ "svelte": "^3.48.0 || ^4 || ^5" } }, - "node_modules/svelte-tiptap": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/svelte-tiptap/-/svelte-tiptap-2.2.0.tgz", - "integrity": "sha512-6i8RRk7lot0zwobkhHNcW3yqdbC6xXrigwLZ1fERtVDq8nVhiaLzvF4HUboFNoxSTOxx7S8YGy4C6x0e+OPA1w==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/sibiraj-s" - } - ], - "license": "MIT", - "peerDependencies": { - "@tiptap/core": "^2.11.5", - "@tiptap/extension-bubble-menu": "^2.11.5", - "@tiptap/extension-floating-menu": "^2.11.5", - "@tiptap/pm": "^2.11.5", - "svelte": "^5.0.0" - } - }, "node_modules/svelte-toolbelt": { "version": "0.10.6", "resolved": "https://registry.npmjs.org/svelte-toolbelt/-/svelte-toolbelt-0.10.6.tgz", @@ -8372,16 +7407,6 @@ "node": ">=14.0.0" } }, - "node_modules/tippy.js": { - "version": "6.3.7", - "resolved": "https://registry.npmjs.org/tippy.js/-/tippy.js-6.3.7.tgz", - "integrity": "sha512-E1d3oP2emgJ9dRQZdf3Kkn0qJgI6ZLpyS5z6ZkY1DF3kaQaBsGZsndEpHwx+eC+tYM41HaSNvNtLx8tU57FzTQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@popperjs/core": "^2.9.0" - } - }, "node_modules/to-regex-range": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", @@ -8483,12 +7508,6 @@ "svelte2tsx": "~0.7.35" } }, - "node_modules/uc.micro": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/uc.micro/-/uc.micro-2.1.0.tgz", - "integrity": "sha512-ARDJmphmdvUk6Glw7y9DQ2bFkKBHwQHLi2lsaH6PPmz/Ka9sFOBsBluozhDltWmnv9u/cF6Rt87znRTPV+yp/A==", - "license": "MIT" - }, "node_modules/undici-types": { "version": "7.16.0", "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-7.16.0.tgz", diff --git a/package.json b/package.json index 37df6a42..eb74e1dd 100644 --- a/package.json +++ b/package.json @@ -30,28 +30,6 @@ "@sveltejs/vite-plugin-svelte": "^5.0.0", "@tailwindcss/forms": "^0.5.7", "@tailwindcss/typography": "^0.5.10", - "@tiptap/core": "^2.10.3", - "@tiptap/extension-bubble-menu": "^2.10.3", - "@tiptap/extension-code-block-lowlight": "^2.10.3", - "@tiptap/extension-color": "^2.10.3", - "@tiptap/extension-highlight": "^2.10.3", - "@tiptap/extension-image": "^2.10.3", - "@tiptap/extension-link": "^2.10.3", - "@tiptap/extension-subscript": "^2.10.3", - "@tiptap/extension-superscript": "^2.10.3", - "@tiptap/extension-table": "^2.10.3", - "@tiptap/extension-table-cell": "^2.10.3", - "@tiptap/extension-table-header": "^2.10.3", - "@tiptap/extension-table-row": "^2.10.3", - "@tiptap/extension-task-item": "^2.10.3", - "@tiptap/extension-task-list": "^2.10.3", - "@tiptap/extension-text": "^2.10.3", - "@tiptap/extension-text-align": "^2.10.3", - "@tiptap/extension-text-style": "^2.10.3", - "@tiptap/extension-typography": "^2.10.3", - "@tiptap/extension-underline": "^2.10.3", - "@tiptap/pm": "^2.10.3", - "@tiptap/starter-kit": "^2.10.3", "@types/eslint": "^9.0.0", "@types/node": "^24.0.0", "@types/qrcode": "^1.5.5", @@ -75,7 +53,6 @@ "svelte-check": "^4.0.0", "svelte-highlight": "^7.8.4", "svelte-idle": "^3.0.1", - "svelte-tiptap": "^2.1.0", "tailwind-merge": "^3.0.0", "tailwind-variants": "^2.1.0", "tailwindcss": "^4.1.10", @@ -108,10 +85,6 @@ "@lucide/svelte": "0.*.0", "@popperjs/core": "^2.11.0", "@tailwindcss/vite": "^4.1.10", - "@tiptap/extension-bullet-list": "^2.10.2", - "@tiptap/extension-document": "^2.10.2", - "@tiptap/extension-history": "^2.10.2", - "@tiptap/extension-paragraph": "^2.10.2", "axios": "^1.7.0", "codemirror": "^6.0.1", "dayjs": "^1.11.10", diff --git a/src/lib/ae_archives/README.md b/src/lib/ae_archives/README.md index d52ce2a1..c431ef06 100644 --- a/src/lib/ae_archives/README.md +++ b/src/lib/ae_archives/README.md @@ -16,13 +16,13 @@ An `Archive_Content` item represents a single piece of content within an `Archiv This module provides the following functionality: -- **CRUD Operations:** Create, Read, Update, and Delete operations for both `Archive` and `Archive_Content` objects. -- **Local Caching:** Uses Dexie.js to cache data in the browser's IndexedDB for offline access and faster load times. -- **API Interaction:** All data operations are synced with the backend API. +- **CRUD Operations:** Create, Read, Update, and Delete operations for both `Archive` and `Archive_Content` objects. +- **Local Caching:** Uses Dexie.js to cache data in the browser's IndexedDB for offline access and faster load times. +- **API Interaction:** All data operations are synced with the backend API. ## Files -- `ae_archives__archive.ts`: Contains functions for managing `Archive` objects. -- `ae_archives__archive_content.ts`: Contains functions for managing `Archive_Content` objects. -- `ae_archives_functions.ts`: Exports all the functions from the module for easy use in other parts of the application. -- `db_archives.ts`: Defines the IndexedDB schema for the archives module using Dexie.js. +- `ae_archives__archive.ts`: Contains functions for managing `Archive` objects. +- `ae_archives__archive_content.ts`: Contains functions for managing `Archive_Content` objects. +- `ae_archives_functions.ts`: Exports all the functions from the module for easy use in other parts of the application. +- `db_archives.ts`: Defines the IndexedDB schema for the archives module using Dexie.js. diff --git a/src/lib/ae_posts/README.md b/src/lib/ae_posts/README.md index 24b49866..c72671c7 100644 --- a/src/lib/ae_posts/README.md +++ b/src/lib/ae_posts/README.md @@ -16,13 +16,13 @@ A `Post_Comment` object represents a comment made on a `Post`. This module provides the following functionality: -- **CRUD Operations:** Create, Read, Update, and Delete operations for both `Post` and `Post_Comment` objects. -- **Local Caching:** Uses Dexie.js to cache data in the browser's IndexedDB for offline access and faster load times. -- **API Interaction:** All data operations are synced with the backend API. +- **CRUD Operations:** Create, Read, Update, and Delete operations for both `Post` and `Post_Comment` objects. +- **Local Caching:** Uses Dexie.js to cache data in the browser's IndexedDB for offline access and faster load times. +- **API Interaction:** All data operations are synced with the backend API. ## Files -- `ae_posts__post.ts`: Contains functions for managing `Post` objects. -- `ae_posts__post_comment.ts`: Contains functions for managing `Post_Comment` objects. -- `ae_posts_functions.ts`: Exports all the functions from the module for easy use in other parts of the application. -- `db_posts.ts`: Defines the IndexedDB schema for the posts module using Dexie.js. +- `ae_posts__post.ts`: Contains functions for managing `Post` objects. +- `ae_posts__post_comment.ts`: Contains functions for managing `Post_Comment` objects. +- `ae_posts_functions.ts`: Exports all the functions from the module for easy use in other parts of the application. +- `db_posts.ts`: Defines the IndexedDB schema for the posts module using Dexie.js. diff --git a/src/lib/ae_sponsorships/README.md b/src/lib/ae_sponsorships/README.md index 79a4ae41..4489b2d4 100644 --- a/src/lib/ae_sponsorships/README.md +++ b/src/lib/ae_sponsorships/README.md @@ -16,12 +16,12 @@ This represents an actual sponsorship agreement with an organization or individu This module provides the following functionality: -- **Data Loading:** Functions to load sponsorship configurations and sponsorship records from the backend API. -- **Data Export:** A function to download an export of sponsorship data in CSV or Excel format. -- **Local Caching:** Uses Dexie.js to cache data in the browser's IndexedDB for offline access and faster load times. -- **API Interaction:** All data operations are synced with the backend API. +- **Data Loading:** Functions to load sponsorship configurations and sponsorship records from the backend API. +- **Data Export:** A function to download an export of sponsorship data in CSV or Excel format. +- **Local Caching:** Uses Dexie.js to cache data in the browser's IndexedDB for offline access and faster load times. +- **API Interaction:** All data operations are synced with the backend API. ## Files -- `ae_sponsorships_functions.ts`: Contains functions for loading and processing sponsorship data. -- `db_sponsorships.ts`: Defines the IndexedDB schema for the sponsorships module using Dexie.js. +- `ae_sponsorships_functions.ts`: Contains functions for loading and processing sponsorship data. +- `db_sponsorships.ts`: Defines the IndexedDB schema for the sponsorships module using Dexie.js. diff --git a/src/lib/components/shad-editor/colorpicker.svelte b/src/lib/components/shad-editor/colorpicker.svelte deleted file mode 100644 index e1122f11..00000000 --- a/src/lib/components/shad-editor/colorpicker.svelte +++ /dev/null @@ -1,17 +0,0 @@ - - -
- -
diff --git a/src/lib/components/shad-editor/custom/Extentions/ColorHighlighter.ts b/src/lib/components/shad-editor/custom/Extentions/ColorHighlighter.ts deleted file mode 100644 index cf68fcd8..00000000 --- a/src/lib/components/shad-editor/custom/Extentions/ColorHighlighter.ts +++ /dev/null @@ -1,28 +0,0 @@ -import { Extension } from '@tiptap/core'; -import { Plugin } from '@tiptap/pm/state'; - -import findColors from '../utils.js'; - -export const ColorHighlighter = Extension.create({ - name: 'colorHighlighter', - - addProseMirrorPlugins() { - return [ - new Plugin({ - state: { - init(_, { doc }) { - return findColors(doc); - }, - apply(transaction, oldState) { - return transaction.docChanged ? findColors(transaction.doc) : oldState; - } - }, - props: { - decorations(state) { - return this.getState(state); - } - } - }) - ]; - } -}); diff --git a/src/lib/components/shad-editor/custom/Extentions/ImageExtention.ts b/src/lib/components/shad-editor/custom/Extentions/ImageExtention.ts deleted file mode 100644 index f64b318c..00000000 --- a/src/lib/components/shad-editor/custom/Extentions/ImageExtention.ts +++ /dev/null @@ -1,32 +0,0 @@ -import { SvelteNodeViewRenderer } from 'svelte-tiptap'; -import ImageExtendedComponent from '../image-extended-component.svelte'; -import Image from '@tiptap/extension-image'; - -export const ImageExtension = Image.extend({ - addAttributes() { - return { - src: { - default: null - }, - alt: { - default: null - }, - title: { - default: null - }, - width: { - default: '100%' - }, - height: { - default: null - }, - align: { - default: 'left' - } - }; - }, - - addNodeView: () => { - return SvelteNodeViewRenderer(ImageExtendedComponent); - } -}); diff --git a/src/lib/components/shad-editor/custom/Extentions/SearchAndReplace.ts b/src/lib/components/shad-editor/custom/Extentions/SearchAndReplace.ts deleted file mode 100644 index e6d266ad..00000000 --- a/src/lib/components/shad-editor/custom/Extentions/SearchAndReplace.ts +++ /dev/null @@ -1,406 +0,0 @@ -// MIT License - -// Copyright (c) 2023 - 2024 Jeet Mandaliya (Github Username: sereneinserenade) - -// Permission is hereby granted, free of charge, to any person obtaining a copy -// of this software and associated documentation files (the "Software"), to deal -// in the Software without restriction, including without limitation the rights -// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -// copies of the Software, and to permit persons to whom the Software is -// furnished to do so, subject to the following conditions: - -// The above copyright notice and this permission notice shall be included in all -// copies or substantial portions of the Software. - -// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -// SOFTWARE. - -import { Extension, type Range, type Dispatch } from '@tiptap/core'; -import { Decoration, DecorationSet } from '@tiptap/pm/view'; -import { Plugin, PluginKey, type EditorState, type Transaction } from '@tiptap/pm/state'; -import { Node as PMNode } from '@tiptap/pm/model'; - -declare module '@tiptap/core' { - interface Commands { - search: { - /** - * @description Set search term in extension. - */ - setSearchTerm: (searchTerm: string) => ReturnType; - /** - * @description Set replace term in extension. - */ - setReplaceTerm: (replaceTerm: string) => ReturnType; - /** - * @description Set case sensitivity in extension. - */ - setCaseSensitive: (caseSensitive: boolean) => ReturnType; - /** - * @description Reset current search result to first instance. - */ - resetIndex: () => ReturnType; - /** - * @description Find next instance of search result. - */ - nextSearchResult: () => ReturnType; - /** - * @description Find previous instance of search result. - */ - previousSearchResult: () => ReturnType; - /** - * @description Replace first instance of search result with given replace term. - */ - replace: () => ReturnType; - /** - * @description Replace all instances of search result with given replace term. - */ - replaceAll: () => ReturnType; - }; - } -} - -interface TextNodesWithPosition { - text: string; - pos: number; -} - -const getRegex = (s: string, disableRegex: boolean, caseSensitive: boolean): RegExp => { - return RegExp( - disableRegex ? s.replace(/[.*+?^${}()|[\]\\]/g, '\\$&') : s, - caseSensitive ? 'gu' : 'gui' - ); -}; - -interface ProcessedSearches { - decorationsToReturn: DecorationSet; - results: Range[]; -} - -function processSearches( - doc: PMNode, - searchTerm: RegExp, - searchResultClass: string, - resultIndex: number -): ProcessedSearches { - const decorations: Decoration[] = []; - const results: Range[] = []; - - let textNodesWithPosition: TextNodesWithPosition[] = []; - let index = 0; - - if (!searchTerm) { - return { - decorationsToReturn: DecorationSet.empty, - results: [] - }; - } - - doc?.descendants((node, pos) => { - if (node.isText) { - if (textNodesWithPosition[index]) { - textNodesWithPosition[index] = { - text: textNodesWithPosition[index].text + node.text, - pos: textNodesWithPosition[index].pos - }; - } else { - textNodesWithPosition[index] = { - text: `${node.text}`, - pos - }; - } - } else { - index += 1; - } - }); - - textNodesWithPosition = textNodesWithPosition.filter(Boolean); - - for (const element of textNodesWithPosition) { - const { text, pos } = element; - const matches = Array.from(text.matchAll(searchTerm)).filter(([matchText]) => matchText.trim()); - - for (const m of matches) { - if (m[0] === '') break; - - if (m.index !== undefined) { - results.push({ - from: pos + m.index, - to: pos + m.index + m[0].length - }); - } - } - } - - for (let i = 0; i < results.length; i += 1) { - const r = results[i]; - const className = - i === resultIndex ? `${searchResultClass} ${searchResultClass}-current` : searchResultClass; - const decoration: Decoration = Decoration.inline(r.from, r.to, { - class: className - }); - - decorations.push(decoration); - } - - return { - decorationsToReturn: DecorationSet.create(doc, decorations), - results - }; -} - -const replace = ( - replaceTerm: string, - results: Range[], - { state, dispatch }: { state: EditorState; dispatch: Dispatch } -) => { - const firstResult = results[0]; - - if (!firstResult) return; - - const { from, to } = results[0]; - - if (dispatch) dispatch(state.tr.insertText(replaceTerm, from, to)); -}; - -const rebaseNextResult = ( - replaceTerm: string, - index: number, - lastOffset: number, - results: Range[] -): [number, Range[]] | null => { - const nextIndex = index + 1; - - if (!results[nextIndex]) return null; - - const { from: currentFrom, to: currentTo } = results[index]; - - const offset = currentTo - currentFrom - replaceTerm.length + lastOffset; - - const { from, to } = results[nextIndex]; - - results[nextIndex] = { - to: to - offset, - from: from - offset - }; - - return [offset, results]; -}; - -const replaceAll = ( - replaceTerm: string, - results: Range[], - { tr, dispatch }: { tr: Transaction; dispatch: Dispatch } -) => { - let offset = 0; - - let resultsCopy = results.slice(); - - if (!resultsCopy.length) return; - - for (let i = 0; i < resultsCopy.length; i += 1) { - const { from, to } = resultsCopy[i]; - - tr.insertText(replaceTerm, from, to); - - const rebaseNextResultResponse = rebaseNextResult(replaceTerm, i, offset, resultsCopy); - - if (!rebaseNextResultResponse) continue; - - offset = rebaseNextResultResponse[0]; - resultsCopy = rebaseNextResultResponse[1]; - } - - dispatch(tr); -}; - -export const searchAndReplacePluginKey = new PluginKey('searchAndReplacePlugin'); - -export interface SearchAndReplaceOptions { - searchResultClass: string; - disableRegex: boolean; -} - -export interface SearchAndReplaceStorage { - searchTerm: string; - replaceTerm: string; - results: Range[]; - lastSearchTerm: string; - caseSensitive: boolean; - lastCaseSensitive: boolean; - resultIndex: number; - lastResultIndex: number; -} - -export const SearchAndReplace = Extension.create({ - name: 'searchAndReplace', - - addOptions() { - return { - searchResultClass: 'search-result', - disableRegex: true - }; - }, - - addStorage() { - return { - searchTerm: '', - replaceTerm: '', - results: [], - lastSearchTerm: '', - caseSensitive: false, - lastCaseSensitive: false, - resultIndex: 0, - lastResultIndex: 0 - }; - }, - - addCommands() { - return { - setSearchTerm: - (searchTerm: string) => - ({ editor }) => { - editor.storage.searchAndReplace.searchTerm = searchTerm; - - return false; - }, - setReplaceTerm: - (replaceTerm: string) => - ({ editor }) => { - editor.storage.searchAndReplace.replaceTerm = replaceTerm; - - return false; - }, - setCaseSensitive: - (caseSensitive: boolean) => - ({ editor }) => { - editor.storage.searchAndReplace.caseSensitive = caseSensitive; - - return false; - }, - resetIndex: - () => - ({ editor }) => { - editor.storage.searchAndReplace.resultIndex = 0; - - return false; - }, - nextSearchResult: - () => - ({ editor }) => { - const { results, resultIndex } = editor.storage.searchAndReplace; - - const nextIndex = resultIndex + 1; - - if (results[nextIndex]) { - editor.storage.searchAndReplace.resultIndex = nextIndex; - } else { - editor.storage.searchAndReplace.resultIndex = 0; - } - - return false; - }, - previousSearchResult: - () => - ({ editor }) => { - const { results, resultIndex } = editor.storage.searchAndReplace; - - const prevIndex = resultIndex - 1; - - if (results[prevIndex]) { - editor.storage.searchAndReplace.resultIndex = prevIndex; - } else { - editor.storage.searchAndReplace.resultIndex = results.length - 1; - } - - return false; - }, - replace: - () => - ({ editor, state, dispatch }) => { - const { replaceTerm, results } = editor.storage.searchAndReplace; - - replace(replaceTerm, results, { state, dispatch }); - - return false; - }, - replaceAll: - () => - ({ editor, tr, dispatch }) => { - const { replaceTerm, results } = editor.storage.searchAndReplace; - - replaceAll(replaceTerm, results, { tr, dispatch }); - - return false; - } - }; - }, - - addProseMirrorPlugins() { - const editor = this.editor; - const { searchResultClass, disableRegex } = this.options; - - const setLastSearchTerm = (t: string) => (editor.storage.searchAndReplace.lastSearchTerm = t); - const setLastCaseSensitive = (t: boolean) => - (editor.storage.searchAndReplace.lastCaseSensitive = t); - const setLastResultIndex = (t: number) => (editor.storage.searchAndReplace.lastResultIndex = t); - - return [ - new Plugin({ - key: searchAndReplacePluginKey, - state: { - init: () => DecorationSet.empty, - apply({ doc, docChanged }, oldState) { - const { - searchTerm, - lastSearchTerm, - caseSensitive, - lastCaseSensitive, - resultIndex, - lastResultIndex - } = editor.storage.searchAndReplace; - - if ( - !docChanged && - lastSearchTerm === searchTerm && - lastCaseSensitive === caseSensitive && - lastResultIndex === resultIndex - ) - return oldState; - - setLastSearchTerm(searchTerm); - setLastCaseSensitive(caseSensitive); - setLastResultIndex(resultIndex); - - if (!searchTerm) { - editor.storage.searchAndReplace.results = []; - return DecorationSet.empty; - } - - const { decorationsToReturn, results } = processSearches( - doc, - getRegex(searchTerm, disableRegex, caseSensitive), - searchResultClass, - resultIndex - ); - - editor.storage.searchAndReplace.results = results; - - return decorationsToReturn; - } - }, - props: { - decorations(state) { - return this.getState(state); - } - } - }) - ]; - } -}); - -export default SearchAndReplace; diff --git a/src/lib/components/shad-editor/custom/Extentions/SmilieReplacer.ts b/src/lib/components/shad-editor/custom/Extentions/SmilieReplacer.ts deleted file mode 100644 index ea90a8f2..00000000 --- a/src/lib/components/shad-editor/custom/Extentions/SmilieReplacer.ts +++ /dev/null @@ -1,133 +0,0 @@ -import { Extension, textInputRule } from '@tiptap/core'; - -export const SmilieReplacer = Extension.create({ - name: 'smilieReplacer', - - addInputRules() { - return [ - textInputRule({ find: /-___- $/, replace: '๐Ÿ˜‘ ' }), - textInputRule({ find: /:'-\) $/, replace: '๐Ÿ˜‚ ' }), - textInputRule({ find: /':-\) $/, replace: '๐Ÿ˜… ' }), - textInputRule({ find: /':-D $/, replace: '๐Ÿ˜… ' }), - textInputRule({ find: />:-\) $/, replace: '๐Ÿ˜† ' }), - textInputRule({ find: /-__- $/, replace: '๐Ÿ˜‘ ' }), - textInputRule({ find: /':-\( $/, replace: '๐Ÿ˜“ ' }), - textInputRule({ find: /:'-\( $/, replace: '๐Ÿ˜ข ' }), - textInputRule({ find: />:-\( $/, replace: '๐Ÿ˜  ' }), - textInputRule({ find: /O:-\) $/, replace: '๐Ÿ˜‡ ' }), - textInputRule({ find: /0:-3 $/, replace: '๐Ÿ˜‡ ' }), - textInputRule({ find: /0:-\) $/, replace: '๐Ÿ˜‡ ' }), - textInputRule({ find: /0;\^\) $/, replace: '๐Ÿ˜‡ ' }), - textInputRule({ find: /O;-\) $/, replace: '๐Ÿ˜‡ ' }), - textInputRule({ find: /0;-\) $/, replace: '๐Ÿ˜‡ ' }), - textInputRule({ find: /O:-3 $/, replace: '๐Ÿ˜‡ ' }), - textInputRule({ find: /:'\) $/, replace: '๐Ÿ˜‚ ' }), - textInputRule({ find: /:-D $/, replace: '๐Ÿ˜ƒ ' }), - textInputRule({ find: /':\) $/, replace: '๐Ÿ˜… ' }), - textInputRule({ find: /'=\) $/, replace: '๐Ÿ˜… ' }), - textInputRule({ find: /':D $/, replace: '๐Ÿ˜… ' }), - textInputRule({ find: /'=D $/, replace: '๐Ÿ˜… ' }), - textInputRule({ find: />:\) $/, replace: '๐Ÿ˜† ' }), - textInputRule({ find: />;\) $/, replace: '๐Ÿ˜† ' }), - textInputRule({ find: />=\) $/, replace: '๐Ÿ˜† ' }), - textInputRule({ find: /;-\) $/, replace: '๐Ÿ˜‰ ' }), - textInputRule({ find: /\*-\) $/, replace: '๐Ÿ˜‰ ' }), - textInputRule({ find: /;-\] $/, replace: '๐Ÿ˜‰ ' }), - textInputRule({ find: /;\^\) $/, replace: '๐Ÿ˜‰ ' }), - textInputRule({ find: /B-\) $/, replace: '๐Ÿ˜Ž ' }), - textInputRule({ find: /8-\) $/, replace: '๐Ÿ˜Ž ' }), - textInputRule({ find: /B-D $/, replace: '๐Ÿ˜Ž ' }), - textInputRule({ find: /8-D $/, replace: '๐Ÿ˜Ž ' }), - textInputRule({ find: /:-\* $/, replace: '๐Ÿ˜˜ ' }), - textInputRule({ find: /:\^\* $/, replace: '๐Ÿ˜˜ ' }), - textInputRule({ find: /:-\) $/, replace: '๐Ÿ™‚ ' }), - textInputRule({ find: /-_- $/, replace: '๐Ÿ˜‘ ' }), - textInputRule({ find: /:-X $/, replace: '๐Ÿ˜ถ ' }), - textInputRule({ find: /:-# $/, replace: '๐Ÿ˜ถ ' }), - textInputRule({ find: /:-x $/, replace: '๐Ÿ˜ถ ' }), - textInputRule({ find: />.< $/, replace: '๐Ÿ˜ฃ ' }), - textInputRule({ find: /:-O $/, replace: '๐Ÿ˜ฎ ' }), - textInputRule({ find: /:-o $/, replace: '๐Ÿ˜ฎ ' }), - textInputRule({ find: /O_O $/, replace: '๐Ÿ˜ฎ ' }), - textInputRule({ find: />:O $/, replace: '๐Ÿ˜ฎ ' }), - textInputRule({ find: /:-P $/, replace: '๐Ÿ˜› ' }), - textInputRule({ find: /:-p $/, replace: '๐Ÿ˜› ' }), - textInputRule({ find: /:-รž $/, replace: '๐Ÿ˜› ' }), - textInputRule({ find: /:-รพ $/, replace: '๐Ÿ˜› ' }), - textInputRule({ find: /:-b $/, replace: '๐Ÿ˜› ' }), - textInputRule({ find: />:P $/, replace: '๐Ÿ˜œ ' }), - textInputRule({ find: /X-P $/, replace: '๐Ÿ˜œ ' }), - textInputRule({ find: /x-p $/, replace: '๐Ÿ˜œ ' }), - textInputRule({ find: /':\( $/, replace: '๐Ÿ˜“ ' }), - textInputRule({ find: /'=\( $/, replace: '๐Ÿ˜“ ' }), - textInputRule({ find: />:\\ $/, replace: '๐Ÿ˜• ' }), - textInputRule({ find: />:\/ $/, replace: '๐Ÿ˜• ' }), - textInputRule({ find: /:-\/ $/, replace: '๐Ÿ˜• ' }), - textInputRule({ find: /:-. $/, replace: '๐Ÿ˜• ' }), - textInputRule({ find: />:\[ $/, replace: '๐Ÿ˜ž ' }), - textInputRule({ find: /:-\( $/, replace: '๐Ÿ˜ž ' }), - textInputRule({ find: /:-\[ $/, replace: '๐Ÿ˜ž ' }), - textInputRule({ find: /:'\( $/, replace: '๐Ÿ˜ข ' }), - textInputRule({ find: /;-\( $/, replace: '๐Ÿ˜ข ' }), - textInputRule({ find: /#-\) $/, replace: '๐Ÿ˜ต ' }), - textInputRule({ find: /%-\) $/, replace: '๐Ÿ˜ต ' }), - textInputRule({ find: /X-\) $/, replace: '๐Ÿ˜ต ' }), - textInputRule({ find: />:\( $/, replace: '๐Ÿ˜  ' }), - textInputRule({ find: /0:3 $/, replace: '๐Ÿ˜‡ ' }), - textInputRule({ find: /0:\) $/, replace: '๐Ÿ˜‡ ' }), - textInputRule({ find: /O:\) $/, replace: '๐Ÿ˜‡ ' }), - textInputRule({ find: /O=\) $/, replace: '๐Ÿ˜‡ ' }), - textInputRule({ find: /O:3 $/, replace: '๐Ÿ˜‡ ' }), - textInputRule({ find: /<\/3 $/, replace: '๐Ÿ’” ' }), - textInputRule({ find: /:D $/, replace: '๐Ÿ˜ƒ ' }), - textInputRule({ find: /=D $/, replace: '๐Ÿ˜ƒ ' }), - textInputRule({ find: /;\) $/, replace: '๐Ÿ˜‰ ' }), - textInputRule({ find: /\*\) $/, replace: '๐Ÿ˜‰ ' }), - textInputRule({ find: /;\] $/, replace: '๐Ÿ˜‰ ' }), - textInputRule({ find: /;D $/, replace: '๐Ÿ˜‰ ' }), - textInputRule({ find: /B\) $/, replace: '๐Ÿ˜Ž ' }), - textInputRule({ find: /8\) $/, replace: '๐Ÿ˜Ž ' }), - textInputRule({ find: /:\* $/, replace: '๐Ÿ˜˜ ' }), - textInputRule({ find: /=\* $/, replace: '๐Ÿ˜˜ ' }), - textInputRule({ find: /:\) $/, replace: '๐Ÿ™‚ ' }), - textInputRule({ find: /=\] $/, replace: '๐Ÿ™‚ ' }), - textInputRule({ find: /=\) $/, replace: '๐Ÿ™‚ ' }), - textInputRule({ find: /:\] $/, replace: '๐Ÿ™‚ ' }), - textInputRule({ find: /:X $/, replace: '๐Ÿ˜ถ ' }), - textInputRule({ find: /:# $/, replace: '๐Ÿ˜ถ ' }), - textInputRule({ find: /=X $/, replace: '๐Ÿ˜ถ ' }), - textInputRule({ find: /=x $/, replace: '๐Ÿ˜ถ ' }), - textInputRule({ find: /:x $/, replace: '๐Ÿ˜ถ ' }), - textInputRule({ find: /=# $/, replace: '๐Ÿ˜ถ ' }), - textInputRule({ find: /:O $/, replace: '๐Ÿ˜ฎ ' }), - textInputRule({ find: /:o $/, replace: '๐Ÿ˜ฎ ' }), - textInputRule({ find: /:P $/, replace: '๐Ÿ˜› ' }), - textInputRule({ find: /=P $/, replace: '๐Ÿ˜› ' }), - textInputRule({ find: /:p $/, replace: '๐Ÿ˜› ' }), - textInputRule({ find: /=p $/, replace: '๐Ÿ˜› ' }), - textInputRule({ find: /:รž $/, replace: '๐Ÿ˜› ' }), - textInputRule({ find: /:รพ $/, replace: '๐Ÿ˜› ' }), - textInputRule({ find: /:b $/, replace: '๐Ÿ˜› ' }), - textInputRule({ find: /d: $/, replace: '๐Ÿ˜› ' }), - textInputRule({ find: /:\/ $/, replace: '๐Ÿ˜• ' }), - textInputRule({ find: /:\\ $/, replace: '๐Ÿ˜• ' }), - textInputRule({ find: /=\/ $/, replace: '๐Ÿ˜• ' }), - textInputRule({ find: /=\\ $/, replace: '๐Ÿ˜• ' }), - textInputRule({ find: /:L $/, replace: '๐Ÿ˜• ' }), - textInputRule({ find: /=L $/, replace: '๐Ÿ˜• ' }), - textInputRule({ find: /:\( $/, replace: '๐Ÿ˜ž ' }), - textInputRule({ find: /:\[ $/, replace: '๐Ÿ˜ž ' }), - textInputRule({ find: /=\( $/, replace: '๐Ÿ˜ž ' }), - textInputRule({ find: /;\( $/, replace: '๐Ÿ˜ข ' }), - textInputRule({ find: /D: $/, replace: '๐Ÿ˜จ ' }), - textInputRule({ find: /:\$ $/, replace: '๐Ÿ˜ณ ' }), - textInputRule({ find: /=\$ $/, replace: '๐Ÿ˜ณ ' }), - textInputRule({ find: /#\) $/, replace: '๐Ÿ˜ต ' }), - textInputRule({ find: /%\) $/, replace: '๐Ÿ˜ต ' }), - textInputRule({ find: /X\) $/, replace: '๐Ÿ˜ต ' }), - textInputRule({ find: /:@ $/, replace: '๐Ÿ˜  ' }), - textInputRule({ find: /<3 $/, replace: 'โค๏ธ ' }), - textInputRule({ find: /\/shrug $/, replace: 'ยฏ\\_(ใƒ„)_/ยฏ' }) - ]; - } -}); diff --git a/src/lib/components/shad-editor/custom/code-extended.svelte b/src/lib/components/shad-editor/custom/code-extended.svelte deleted file mode 100644 index 78412953..00000000 --- a/src/lib/components/shad-editor/custom/code-extended.svelte +++ /dev/null @@ -1,78 +0,0 @@ - - - - - {defaultLanguage} - - - - {#each languages as language} - { - defaultLanguage = language; - updateAttributes({ language: defaultLanguage }); - }} - > - {language} - - {/each} - - - -
-			
-	
-
diff --git a/src/lib/components/shad-editor/custom/image-extended-component.svelte b/src/lib/components/shad-editor/custom/image-extended-component.svelte deleted file mode 100644 index 8aa4840a..00000000 --- a/src/lib/components/shad-editor/custom/image-extended-component.svelte +++ /dev/null @@ -1,251 +0,0 @@ - - - -
- {node.attrs.alt} - {#if node.attrs.title !== null && node.attrs.title.trim() !== ''} - { - if (e.target === null) return; - //@ts-ignore - updateAttributes({ title: e.target.value }); - }} - /> - {/if} - - {#if editor?.isEditable} -
{ - handleResizingPosition(event, 'left'); - }} - ontouchstart={(event: TouchEvent) => { - handleTouchStart(event, 'left'); - }} - > -
-
- -
{ - handleResizingPosition(event, 'right'); - }} - ontouchstart={(event: TouchEvent) => { - handleTouchStart(event, 'right'); - }} - > -
-
-
- - - - (openedMore = value)}> - - - - - { - if (node.attrs.title === null || node.attrs.title.trim() === '') - updateAttributes({ - title: 'Image Caption' - }); - }} - > - Caption - - { - duplicateContent(editor); - }} - > - Duplicate - - { - updateAttributes({ - width: 'fit-content' - }); - }} - > - Full Screen - - { - deleteNode(); - }} - class="text-destructive" - > - Delete - - - -
- {/if} -
-
diff --git a/src/lib/components/shad-editor/custom/utils.ts b/src/lib/components/shad-editor/custom/utils.ts deleted file mode 100644 index 14ef0825..00000000 --- a/src/lib/components/shad-editor/custom/utils.ts +++ /dev/null @@ -1,43 +0,0 @@ -import type { Editor } from '@tiptap/core'; -import { Node } from '@tiptap/pm/model'; -import { Decoration, DecorationSet } from '@tiptap/pm/view'; - -export default function (doc: Node): DecorationSet { - const hexColor = /(#[0-9a-f]{3,6})\b/gi; - const decorations: Decoration[] = []; - - doc.descendants((node, position) => { - if (!node.text) { - return; - } - - Array.from(node.text.matchAll(hexColor)).forEach((match) => { - const color = match[0]; - const index = match.index || 0; - const from = position + index; - const to = from + color.length; - const decoration = Decoration.inline(from, to, { - class: 'color', - style: `--color: ${color}` - }); - - decorations.push(decoration); - }); - }); - - return DecorationSet.create(doc, decorations); -} - -export const duplicateContent = (editor: Editor) => { - const { view } = editor; - const { state } = view; - const { selection } = state; - - editor - .chain() - .insertContentAt(selection.to, selection.content().content.firstChild?.toJSON(), { - updateSelection: true - }) - .focus(selection.to) - .run(); -}; diff --git a/src/lib/components/shad-editor/editor-toolbar.svelte b/src/lib/components/shad-editor/editor-toolbar.svelte deleted file mode 100644 index ce0fbfe2..00000000 --- a/src/lib/components/shad-editor/editor-toolbar.svelte +++ /dev/null @@ -1,181 +0,0 @@ - - -
- - {#if show_button_kv.undo} - - {/if} - {#if show_button_kv.redo} - - {/if} - - - - {#if show_button_kv.text} - - {/if} - - - {#if show_button_kv.bold} - - {/if} - {#if show_button_kv.italic} - - {/if} - {#if show_button_kv.underline} - - {/if} - {#if show_button_kv.strikethrough} - - {/if} - - - {#if show_button_kv.align} - - {/if} - {#if show_button_kv.link} - - {/if} - {#if show_button_kv.code} - - {/if} - {#if show_button_kv.blockquote} -
- {/if} - {#if show_button_kv.subscript} - - {/if} - {#if show_button_kv.superscript} - - {/if} - {#if show_button_kv.bullet_list} - - {/if} - {#if show_button_kv.ordered_list} - - {/if} - {#if show_button_kv.task_list} - - {/if} - - {#if show_button_kv.table} - - {/if} - - - cxx - {#if show_button_kv.text_color} - - {/if} - {#if show_button_kv.highlighter} - - {/if} - {#if show_button_kv.quick_color} - - {/if} - - - {#if show_button_kv.search_replace} - - {/if} - - diff --git a/src/lib/components/shad-editor/editor.css b/src/lib/components/shad-editor/editor.css deleted file mode 100644 index 63995c09..00000000 --- a/src/lib/components/shad-editor/editor.css +++ /dev/null @@ -1,157 +0,0 @@ -@import 'tailwindcss'; - -@import '@skeletonlabs/skeleton'; -@import '@skeletonlabs/skeleton/optional/presets'; - -/* @import "tailwindcss/preflight"; */ -/* @tailwind utilities; */ - -@import '@skeletonlabs/skeleton/themes/cerberus'; -@import '@skeletonlabs/skeleton/themes/modern'; -@import '@skeletonlabs/skeleton/themes/wintry'; - -@source '../node_modules/@skeletonlabs/skeleton-svelte/dist'; - -@import 'tailwindcss/utilities.css' layer(utilities); - -.tiptap :where(p):not(:where([class~='not-prose'], [class~='not-prose'] *)) { - margin-top: 0 !important; - margin-bottom: 0 !important; -} - -.tiptap code:not(pre code) { - /* Remove the before and after pseudo elements */ - @apply rounded-sm border bg-black/50 p-1 before:content-[''] after:content-['']; -} - -.tiptap blockquote p { - @apply before:content-[''] after:content-['']; -} - -.tiptap a { - @apply text-blue-600 underline; -} - -ul[data-type='taskList'] { - list-style: none; - margin: 0; - padding: 0; -} - -ul[data-type='taskList'] li { - display: flex; - align-items: center; -} - -ul li, -ol li { - margin-top: 0 !important; - margin-bottom: 0 !important; -} - -ul[data-type='taskList'] li label { - flex: 0 0 auto; - margin-right: 0.5rem; - user-select: none; -} - -ul[data-type='taskList'] li div { - flex: 1 1 auto; -} - -ul[data-type='taskList'] li label { - display: flex; - align-items: center; - justify-content: center; -} - -ul[data-type='taskList'] li[data-checked='true'] div { - @apply text-black/50 line-through; -} - -input[type='checkbox'] { - @apply size-4 cursor-pointer rounded-sm; - /* This kills compiling !important */ -} - -ul[data-type='taskList'] ul[data-type='taskList'] { - margin: 0; -} - -/* Color swatches */ -.color { - @apply whitespace-nowrap; -} - -.color::before { - @apply mb-[0.15rem] mr-[0.1rem] inline-block size-[1rem] rounded-sm border border-black/50 align-middle; - background-color: var(--color); - content: ' '; -} - -/* Table-specific styling */ -.tiptap table { - border-collapse: collapse; - margin: 0; - overflow: hidden; - table-layout: fixed; - width: 100%; -} - -.tiptap table td, -.tiptap table th { - @apply border border-black/50; - box-sizing: border-box; - min-width: 1em; - padding: 6px 8px; - position: relative; - vertical-align: top; -} - -.tiptap table td > *, -.tiptap table th > * { - margin-bottom: 0; -} - -.tiptap table th { - @apply bg-black/50 text-left; - /* Kills compile: font-bold */ - font-weight: bold; -} - -.tiptap table .selectedCell:after { - @apply pointer-events-none absolute bottom-0 left-0 right-0 top-0 border-[2px] border-black/50; - content: ''; - z-index: 2; -} - -.tiptap table .column-resize-handle { - @apply pointer-events-none absolute -bottom-[2px] -right-[2px] top-0 w-1 bg-black/50; -} - -.tiptap .tableWrapper { - margin: 1.5rem 0; - overflow-x: auto; -} - -.tiptap.resize-cursor { - cursor: ew-resize; - cursor: col-resize; -} - -/* Tiptap code block */ -.tiptap pre { - @apply m-0 flex h-fit overflow-auto !rounded-none bg-transparent p-0; -} - -.tiptap pre code { - @apply flex-1 !rounded-none bg-transparent p-0 text-inherit; -} - -.tiptap .search-result { - background-color: yellow; -} - -.tiptap .search-result-current { - background-color: orange; -} diff --git a/src/lib/components/shad-editor/icons/block-quote.svelte b/src/lib/components/shad-editor/icons/block-quote.svelte deleted file mode 100644 index 893b6cae..00000000 --- a/src/lib/components/shad-editor/icons/block-quote.svelte +++ /dev/null @@ -1,26 +0,0 @@ - - - - - - - - -

Block Quote (โŒ˜โ‡งB)

-
-
-
diff --git a/src/lib/components/shad-editor/icons/bold.svelte b/src/lib/components/shad-editor/icons/bold.svelte deleted file mode 100644 index 80c31d49..00000000 --- a/src/lib/components/shad-editor/icons/bold.svelte +++ /dev/null @@ -1,26 +0,0 @@ - - - - - - - - -

Bold (โŒ˜B)

-
-
-
diff --git a/src/lib/components/shad-editor/icons/buttle-list.svelte b/src/lib/components/shad-editor/icons/buttle-list.svelte deleted file mode 100644 index bfe5106e..00000000 --- a/src/lib/components/shad-editor/icons/buttle-list.svelte +++ /dev/null @@ -1,27 +0,0 @@ - - - - - - - - -

Bullet List (โŒ˜โ‡ง8)

-
-
-
diff --git a/src/lib/components/shad-editor/icons/code.svelte b/src/lib/components/shad-editor/icons/code.svelte deleted file mode 100644 index a6faf183..00000000 --- a/src/lib/components/shad-editor/icons/code.svelte +++ /dev/null @@ -1,27 +0,0 @@ - - - - - - - - -

Code (โŒ˜E)

-
-
-
diff --git a/src/lib/components/shad-editor/icons/highlighter.svelte b/src/lib/components/shad-editor/icons/highlighter.svelte deleted file mode 100644 index 47885c6b..00000000 --- a/src/lib/components/shad-editor/icons/highlighter.svelte +++ /dev/null @@ -1,75 +0,0 @@ - - - - - - - - - - -
-

Pick a highlight color

- - - -
-
- { - if (event.detail.hex === undefined) return; - color = event.detail.hex; - editor.chain().focus().setHighlight({ color }).run(); - }} - isDialog={false} - --picker-indicator-size="1rem" - --input-size="1rem" - /> -
-
- -
-
-
-
- -

Highlighter (โŒ˜โ‡งH)

-
-
-
diff --git a/src/lib/components/shad-editor/icons/image.svelte b/src/lib/components/shad-editor/icons/image.svelte deleted file mode 100644 index 2e4ea242..00000000 --- a/src/lib/components/shad-editor/icons/image.svelte +++ /dev/null @@ -1,73 +0,0 @@ - - - - - - - - - - -
-

Image

- - - -
-

Insert image url

- { - if (e !== null && e.target !== null) { - //@ts-ignore - editor.chain().focus().setImage({ src: e.target.value }).run(); - } - }} - class="w-full" - /> -

OR Pick an Image

- { - //@ts-ignore - if (e.target && e.target.files) { - //@ts-ignore - const files = Array.from(e.target.files || []); - files.map((file) => { - const reader = new FileReader(); - reader.onload = () => { - const src = reader.result as string; - editor.chain().focus().setImage({ src }).run(); - }; - //@ts-ignore - reader.readAsDataURL(file); - }); - } - }} - /> -
-
-
- -

Add Image

-
-
-
diff --git a/src/lib/components/shad-editor/icons/italic.svelte b/src/lib/components/shad-editor/icons/italic.svelte deleted file mode 100644 index 01d85ab9..00000000 --- a/src/lib/components/shad-editor/icons/italic.svelte +++ /dev/null @@ -1,26 +0,0 @@ - - - - - - - - -

Italic (โŒ˜I)

-
-
-
diff --git a/src/lib/components/shad-editor/icons/link.svelte b/src/lib/components/shad-editor/icons/link.svelte deleted file mode 100644 index f81d3cb0..00000000 --- a/src/lib/components/shad-editor/icons/link.svelte +++ /dev/null @@ -1,72 +0,0 @@ - - - - - - - - - - -
-

Link

- - - -
-

Insert or remove link from selected text.

- { - //@ts-ignore - if (e !== null && e.target !== null) setLink(e.target.value); - }} - class="w-full" - /> -
- - -
-
-
-
- -

Add Or Remove Link

-
-
-
diff --git a/src/lib/components/shad-editor/icons/ordered-list.svelte b/src/lib/components/shad-editor/icons/ordered-list.svelte deleted file mode 100644 index 5a6b31a3..00000000 --- a/src/lib/components/shad-editor/icons/ordered-list.svelte +++ /dev/null @@ -1,26 +0,0 @@ - - - - - - - - -

Ordered List

-
-
-
diff --git a/src/lib/components/shad-editor/icons/quickcolor.svelte b/src/lib/components/shad-editor/icons/quickcolor.svelte deleted file mode 100644 index 31162777..00000000 --- a/src/lib/components/shad-editor/icons/quickcolor.svelte +++ /dev/null @@ -1,95 +0,0 @@ - - - - - - - - - - - - Text Color - {#each colors as color} - { - if (color.value === '' || color.label === 'Default') - editor.chain().focus().unsetColor().run(); - else - editor - .chain() - .focus() - .setColor(currentColor === color.value ? '' : color.value) - .run(); - }} - closeOnSelect={false} - > - A - {color.label} - {#if editor.isActive('textStyle', { color: color.value })} - - {/if} - - {/each} - - - - Background Colors - {#each colors as color} - { - if (color.value === '' || color.label === 'Default') - editor.chain().focus().unsetHighlight().run(); - else editor.chain().focus().toggleHighlight({ color: color.value }).run(); - }} - closeOnSelect={false} - > - A - {color.label} - {#if editor.isActive('highlight', { color: color.value })} - - {/if} - - {/each} - - - - - -

Quick Colors

-
-
-
diff --git a/src/lib/components/shad-editor/icons/redo.svelte b/src/lib/components/shad-editor/icons/redo.svelte deleted file mode 100644 index d367008a..00000000 --- a/src/lib/components/shad-editor/icons/redo.svelte +++ /dev/null @@ -1,26 +0,0 @@ - - - - - - - - -

Redo (โŒ˜R)

-
-
-
diff --git a/src/lib/components/shad-editor/icons/search-replace.svelte b/src/lib/components/shad-editor/icons/search-replace.svelte deleted file mode 100644 index e838ce53..00000000 --- a/src/lib/components/shad-editor/icons/search-replace.svelte +++ /dev/null @@ -1,146 +0,0 @@ - - - - - - { - if (open) updateSearchTerm(); - else { - clear(); - updateSearchTerm(true); - } - }} - > - - - - - { - clear(); - updateSearchTerm(true); - }} - > - - -
- updateSearchTerm()} - class="mr-1 " - /> - - -
-
- updateSearchTerm()} - class="mr-1 " - /> - - -
- -
-
- updateSearchTerm()} - /> -

Case Sensitive

-
-
- {searchCount > 0 ? searchIndex + 1 : 0} / {searchCount} -
-
-
-
-
- -

Search And Replace Text

-
-
-
diff --git a/src/lib/components/shad-editor/icons/strikethrough.svelte b/src/lib/components/shad-editor/icons/strikethrough.svelte deleted file mode 100644 index 40819787..00000000 --- a/src/lib/components/shad-editor/icons/strikethrough.svelte +++ /dev/null @@ -1,26 +0,0 @@ - - - - - - - - -

Strike (โŒ˜โ‡งS)

-
-
-
diff --git a/src/lib/components/shad-editor/icons/subscript.svelte b/src/lib/components/shad-editor/icons/subscript.svelte deleted file mode 100644 index a80b9158..00000000 --- a/src/lib/components/shad-editor/icons/subscript.svelte +++ /dev/null @@ -1,26 +0,0 @@ - - - - - - - - -

Subscript (โŒ˜,)

-
-
-
diff --git a/src/lib/components/shad-editor/icons/superscript.svelte b/src/lib/components/shad-editor/icons/superscript.svelte deleted file mode 100644 index 715e7b7c..00000000 --- a/src/lib/components/shad-editor/icons/superscript.svelte +++ /dev/null @@ -1,26 +0,0 @@ - - - - - - - - -

Superscript (โŒ˜.)

-
-
-
diff --git a/src/lib/components/shad-editor/icons/table.svelte b/src/lib/components/shad-editor/icons/table.svelte deleted file mode 100644 index 4de0dc32..00000000 --- a/src/lib/components/shad-editor/icons/table.svelte +++ /dev/null @@ -1,111 +0,0 @@ - - - - - - - -
- - - - - - editor.chain().focus().insertTable({ rows: 3, cols: 3, withHeaderRow: true }).run()} - > - Insert Table - - - - Header - - - editor.chain().focus().toggleHeaderColumn().run()}> - Toggle Column - - editor.chain().focus().toggleHeaderRow().run()}> - Toggle Row - - editor.chain().focus().toggleHeaderCell().run()}> - Toggle Cell - - - - - - Cells - - - editor.chain().focus().mergeCells().run()}> - Merge - - editor.chain().focus().splitCell().run()}> - Split - - editor.chain().focus().mergeOrSplit().run()}> - Merge or Split - - - - - - Row - - - editor.chain().focus().addRowBefore().run()}> - Insert Above - - editor.chain().focus().addRowAfter().run()}> - Insert Below - - editor.chain().focus().deleteRow().run()} - class="text-destructive hover:text-foreground data-[highlighted]:bg-destructive" - > - Delete Row - - - - - - Column - - - editor.chain().focus().addColumnBefore().run()}> - Insert Before - - editor.chain().focus().addColumnAfter().run()}> - Insert After - - editor.chain().focus().deleteColumn().run()} - class="text-destructive hover:text-foreground data-[highlighted]:bg-destructive" - > - Delete - - - - editor.chain().focus().deleteTable().run()} - class="text-destructive hover:text-foreground data-[highlighted]:bg-destructive" - > - Delete - - - - - -

Table

-
- - diff --git a/src/lib/components/shad-editor/icons/task-list.svelte b/src/lib/components/shad-editor/icons/task-list.svelte deleted file mode 100644 index b22edc92..00000000 --- a/src/lib/components/shad-editor/icons/task-list.svelte +++ /dev/null @@ -1,26 +0,0 @@ - - - - - - - - -

Tasks List (โŒ˜โ‡ง9)

-
-
-
diff --git a/src/lib/components/shad-editor/icons/text.svelte b/src/lib/components/shad-editor/icons/text.svelte deleted file mode 100644 index 9647fa60..00000000 --- a/src/lib/components/shad-editor/icons/text.svelte +++ /dev/null @@ -1,95 +0,0 @@ - - - - - - - - - - - editor.chain().focus().toggleHeading({ level: 1 }).run()} - closeOnSelect={false} - > - Heading 1 - {#if editor.isActive('heading', { level: 1 })} - - {/if} - - editor.chain().focus().toggleHeading({ level: 2 }).run()} - closeOnSelect={false} - > - Heading 2 - {#if editor.isActive('heading', { level: 2 })} - - {/if} - - editor.chain().focus().toggleHeading({ level: 3 }).run()} - closeOnSelect={false} - > - Heading 3 - {#if editor.isActive('heading', { level: 3 })} - - {/if} - - editor.chain().focus().setParagraph().run()} - closeOnSelect={false} - > - Paragraph - {#if editor.isActive('paragraph')} - - {/if} - - editor.chain().focus().toggleCodeBlock().run()} - closeOnSelect={false} - > - Code Block - {#if editor.isActive('codeBlock')} - - {/if} - - - - - -

Text Formatting

-
-
-
diff --git a/src/lib/components/shad-editor/icons/textalign.svelte b/src/lib/components/shad-editor/icons/textalign.svelte deleted file mode 100644 index 533814ec..00000000 --- a/src/lib/components/shad-editor/icons/textalign.svelte +++ /dev/null @@ -1,82 +0,0 @@ - - - - - - - - - - - editor.chain().focus().setTextAlign('left').run()} - closeOnSelect={false} - > - Align Left - {#if editor.isActive({ textAlign: 'left' })} - - {/if} - - editor.chain().focus().setTextAlign('center').run()} - closeOnSelect={false} - > - Align Center - {#if editor.isActive({ textAlign: 'center' })} - - {/if} - - editor.chain().focus().setTextAlign('right').run()} - closeOnSelect={false} - > - Align Right - {#if editor.isActive({ textAlign: 'right' })} - - {/if} - - editor.chain().focus().setTextAlign('justify').run()} - closeOnSelect={false} - > - Align Justify - {#if editor.isActive({ textAlign: 'justify' })} - - {/if} - - - - - -

Text Alignment

-
-
-
diff --git a/src/lib/components/shad-editor/icons/textcolor.svelte b/src/lib/components/shad-editor/icons/textcolor.svelte deleted file mode 100644 index a8c3c844..00000000 --- a/src/lib/components/shad-editor/icons/textcolor.svelte +++ /dev/null @@ -1,75 +0,0 @@ - - - - - - - - - - -
-

Pick a text color

- - - -
-
- { - if (event.detail.hex === undefined) return; - color = event.detail.hex; - editor.chain().focus().setColor(color).run(); - }} - isDialog={false} - --picker-indicator-size="1rem" - --input-size="1rem" - /> -
-
- -
-
-
-
- -

Text Color

-
-
-
diff --git a/src/lib/components/shad-editor/icons/underline.svelte b/src/lib/components/shad-editor/icons/underline.svelte deleted file mode 100644 index 48cd8098..00000000 --- a/src/lib/components/shad-editor/icons/underline.svelte +++ /dev/null @@ -1,26 +0,0 @@ - - - - - - - - -

Underline (โŒ˜U)

-
-
-
diff --git a/src/lib/components/shad-editor/icons/undo.svelte b/src/lib/components/shad-editor/icons/undo.svelte deleted file mode 100644 index 2cb87328..00000000 --- a/src/lib/components/shad-editor/icons/undo.svelte +++ /dev/null @@ -1,26 +0,0 @@ - - - - - - - - -

Undo (โŒ˜Z)

-
-
-
diff --git a/src/lib/components/shad-editor/onedark.css b/src/lib/components/shad-editor/onedark.css deleted file mode 100644 index 50ef156f..00000000 --- a/src/lib/components/shad-editor/onedark.css +++ /dev/null @@ -1,89 +0,0 @@ -/* One Dark and Light Theme for Highlight.js using Tailwind CSS */ -.tiptap pre code { - @apply text-[#383a42] dark:text-[#abb2bf]; -} - -/* Comment */ -.hljs-comment, -.hljs-quote { - @apply italic text-[#a0a1a7] dark:text-[#5c6370]; -} - -/* Red */ -.hljs-variable, -.hljs-template-variable, -.hljs-tag, -.hljs-name, -.hljs-selector-id, -.hljs-selector-class, -.hljs-regexp, -.hljs-deletion { - @apply text-[#e45649] dark:text-[#e06c75]; -} - -/* Orange */ -.hljs-number, -.hljs-built_in, -.hljs-literal, -.hljs-type, -.hljs-params, -.hljs-meta, -.hljs-link { - @apply text-[#986801] dark:text-[#d19a66]; -} - -/* Yellow */ -.hljs-attribute { - @apply text-[#c18401] dark:text-[#e5c07b]; -} - -/* Green */ -.hljs-string, -.hljs-symbol, -.hljs-bullet, -.hljs-addition { - @apply text-[#50a14f] dark:text-[#98c379]; -} - -/* Blue */ -.hljs-title, -.hljs-section { - @apply text-[#4078f2] dark:text-[#61afef]; -} - -/* Purple */ -.hljs-keyword, -.hljs-selector-tag { - @apply text-[#a626a4] dark:text-[#c678dd]; -} - -/* Cyan */ -.hljs-emphasis { - @apply italic text-[#0184bc] dark:text-[#56b6c2]; -} - -.hljs-strong { - /* @apply font-bold; */ - /* Kills compile: font-bold */ - font-weight: bold; -} - -/* Base styles */ -.hljs-doctag, -.hljs-formula { - @apply text-[#a626a4] dark:text-[#c678dd]; -} - -.hljs-attr, -.hljs-subst { - @apply text-[#383a42] dark:text-[#abb2bf]; -} - -/* Line highlights */ -.hljs-addition { - @apply bg-[#e6ffed] dark:bg-[#283428]; -} - -.hljs-deletion { - @apply bg-[#ffeef0] dark:bg-[#342828]; -} diff --git a/src/lib/components/shad-editor/shad-editor.svelte b/src/lib/components/shad-editor/shad-editor.svelte deleted file mode 100644 index ba110618..00000000 --- a/src/lib/components/shad-editor/shad-editor.svelte +++ /dev/null @@ -1,175 +0,0 @@ - - -
- {#if editor && show_toolbar} - - {/if} -
- -
-
diff --git a/src/lib/electron/README.md b/src/lib/electron/README.md index f734d908..88ffa661 100644 --- a/src/lib/electron/README.md +++ b/src/lib/electron/README.md @@ -19,18 +19,18 @@ The Electron integration is composed of three main parts: The native functions in `electron_native.js` provide the following key functionalities for the Event Launcher: - **File Caching:** - - `check_hash_file_cache()`: Checks if a file with a specific hash exists in the local cache. - - `download_hash_file_to_cache()`: Downloads a file from the API and stores it in the local cache. + - `check_hash_file_cache()`: Checks if a file with a specific hash exists in the local cache. + - `download_hash_file_to_cache()`: Downloads a file from the API and stores it in the local cache. - **File Operations:** - - `open_hash_file_to_temp()`: Copies a file from the cache to a temporary directory and opens it. - - `open_local_file()`: Opens a local file. + - `open_hash_file_to_temp()`: Copies a file from the cache to a temporary directory and opens it. + - `open_local_file()`: Opens a local file. - **Process Management:** - - `kill_processes()`: Kills processes by name or ID. This is used to close presentation applications after a presentation is finished. + - `kill_processes()`: Kills processes by name or ID. This is used to close presentation applications after a presentation is finished. - **Command Execution:** - - `run_osascript()`: Runs an AppleScript command (macOS only). - - `run_cmd()`: Runs a shell command. + - `run_osascript()`: Runs an AppleScript command (macOS only). + - `run_cmd()`: Runs a shell command. - **Device Information:** - - `get_device_info()`: Gets information about the device, which can be used for logging and debugging. + - `get_device_info()`: Gets information about the device, which can be used for logging and debugging. ## UI Integration diff --git a/src/lib/elements/element_codemirror_editor.svelte b/src/lib/elements/element_codemirror_editor.svelte new file mode 100644 index 00000000..da5ce41f --- /dev/null +++ b/src/lib/elements/element_codemirror_editor.svelte @@ -0,0 +1,80 @@ + + +
+
+ + + +
+ +
diff --git a/src/lib/elements/element_codemirror_wrapper.svelte b/src/lib/elements/element_codemirror_wrapper.svelte new file mode 100644 index 00000000..3b4a177b --- /dev/null +++ b/src/lib/elements/element_codemirror_wrapper.svelte @@ -0,0 +1,15 @@ + + +
+ +
diff --git a/src/lib/elements/element_tiptap_editor.svelte b/src/lib/elements/element_tiptap_editor.svelte deleted file mode 100644 index 0f47d7a1..00000000 --- a/src/lib/elements/element_tiptap_editor.svelte +++ /dev/null @@ -1,155 +0,0 @@ - - - - -
{ - if (default_minimal) { - show_toolbar = true; - } - }} - on:mouseleave={() => { - clearTimeout(mouse_entered_timer); - - mouse_entered_timer = setTimeout(() => { - if (default_minimal) { - show_toolbar = false; - } - }, mouse_leave_wait); - }} - on:mouseenter={() => { - clearTimeout(mouse_entered_timer); - - mouse_entered_timer = setTimeout(() => { - if (default_minimal) { - show_toolbar = true; - } - }, mouse_enter_wait); - }} - class="block w-full h-full {classes}" -> - -
- - diff --git a/src/routes/core/README.md b/src/routes/core/README.md index d77ba21c..427b12f4 100644 --- a/src/routes/core/README.md +++ b/src/routes/core/README.md @@ -8,29 +8,29 @@ The Aether system is built on a foundation of several core modules. The UI compo ### Accounts -- **Description:** Manages client accounts (not to be confused with user accounts). An account is the top-level organizational unit. -- **Logic:** `src/lib/ae_core/core__account.ts` +- **Description:** Manages client accounts (not to be confused with user accounts). An account is the top-level organizational unit. +- **Logic:** `src/lib/ae_core/core__account.ts` ### Hosted Files -- **Description:** Handles file uploads, storage, and retrieval. Provides components for file upload buttons and video players. -- **Logic:** `src/lib/ae_core/core__hosted_files.ts` -- **Route:** `/hosted_files` +- **Description:** Handles file uploads, storage, and retrieval. Provides components for file upload buttons and video players. +- **Logic:** `src/lib/ae_core/core__hosted_files.ts` +- **Route:** `/hosted_files` ### People -- **Description:** Manages information about individuals. A "person" can be a user, a contact, an event presenter, etc. This is the central object for representing people in the system. -- **Logic:** `src/lib/ae_core/core__person.ts` -- **UI Components:** - - `ae_comp__person_obj_tbl.svelte`: A table for displaying a list of people. - - `person_view.svelte`: A component for displaying the details of a single person. +- **Description:** Manages information about individuals. A "person" can be a user, a contact, an event presenter, etc. This is the central object for representing people in the system. +- **Logic:** `src/lib/ae_core/core__person.ts` +- **UI Components:** + - `ae_comp__person_obj_tbl.svelte`: A table for displaying a list of people. + - `person_view.svelte`: A component for displaying the details of a single person. ### Sites & Site Domains -- **Description:** Manages different sites or instances of the application and their associated domain names. This allows for multi-tenant configurations. -- **Logic:** `src/lib/ae_core/core__site.ts` and `core__site_domain.ts` +- **Description:** Manages different sites or instances of the application and their associated domain names. This allows for multi-tenant configurations. +- **Logic:** `src/lib/ae_core/core__site.ts` and `core__site_domain.ts` ### Users -- **Description:** Manages user accounts, including authentication, permissions, and user-specific settings. -- **Logic:** `src/lib/ae_core/core__user.ts` +- **Description:** Manages user accounts, including authentication, permissions, and user-specific settings. +- **Logic:** `src/lib/ae_core/core__user.ts` diff --git a/src/routes/events/README.md b/src/routes/events/README.md index 640ab2c7..202361f3 100644 --- a/src/routes/events/README.md +++ b/src/routes/events/README.md @@ -6,27 +6,27 @@ This directory (`src/routes/events`) contains the Svelte components and pages th ## Features -- **Event Program Structure:** The UI allows for viewing and managing the hierarchy of an event, including its sessions and the presentations within those sessions. -- **Session Management:** View lists of sessions for an event, wrapped in various UI components for different display needs (`li`, `tbl`). -- **Presentation Management:** View lists of presentations associated with sessions. -- **File Management:** A key feature is the ability to manage event-related files. This includes uploading new files and viewing lists of existing files associated with the event. +- **Event Program Structure:** The UI allows for viewing and managing the hierarchy of an event, including its sessions and the presentations within those sessions. +- **Session Management:** View lists of sessions for an event, wrapped in various UI components for different display needs (`li`, `tbl`). +- **Presentation Management:** View lists of presentations associated with sessions. +- **File Management:** A key feature is the ability to manage event-related files. This includes uploading new files and viewing lists of existing files associated with the event. ## UI Components & Pages -- `+page.svelte`: The main landing page that displays a list of all events. -- `[event_id]/+page.svelte`: The main page for a single event, which serves as the hub for managing its details. -- `ae_comp__event_session_obj_li.svelte` / `..._tbl.svelte`: Components that render lists of event sessions in different formats. -- `ae_comp__event_presentation_obj_li.svelte`: A component that renders a list of presentations for a session. -- `ae_comp__event_file_obj_tbl.svelte`: A component for displaying a table of files related to the event. -- `ae_comp__event_files_upload.svelte`: A component providing the UI for uploading files. -- `ae_comp__events_menu_nav.svelte` / `..._opts.svelte`: Navigation and option menus specific to the events module. +- `+page.svelte`: The main landing page that displays a list of all events. +- `[event_id]/+page.svelte`: The main page for a single event, which serves as the hub for managing its details. +- `ae_comp__event_session_obj_li.svelte` / `..._tbl.svelte`: Components that render lists of event sessions in different formats. +- `ae_comp__event_presentation_obj_li.svelte`: A component that renders a list of presentations for a session. +- `ae_comp__event_file_obj_tbl.svelte`: A component for displaying a table of files related to the event. +- `ae_comp__event_files_upload.svelte`: A component providing the UI for uploading files. +- `ae_comp__events_menu_nav.svelte` / `..._opts.svelte`: Navigation and option menus specific to the events module. ## Core Logic & Data Models The underlying data models, API interactions, and database logic for this module are located in `src/lib/ae_events/`. The key data models include: -- **`Event`**: The top-level object for an event. -- **`EventSession`**: Represents a session within an event. -- **`EventPresentation`**: Represents a presentation within a session. -- **`EventPresenter`**: Represents a speaker for a presentation. -- **`EventFile`**: Represents a file associated with any part of the event. +- **`Event`**: The top-level object for an event. +- **`EventSession`**: Represents a session within an event. +- **`EventPresentation`**: Represents a presentation within a session. +- **`EventPresenter`**: Represents a speaker for a presentation. +- **`EventFile`**: Represents a file associated with any part of the event. diff --git a/src/routes/events_leads/README.md b/src/routes/events_leads/README.md index 2be80848..ed84432c 100644 --- a/src/routes/events_leads/README.md +++ b/src/routes/events_leads/README.md @@ -16,16 +16,16 @@ The Leads module is based on two main data models: ## Features - **Authentication:** The module supports two types of authentication for exhibitor staff: - - **Shared Passcode:** A shared passcode can be used by all staff members of an exhibitor. - - **License-based:** Individual licenses can be assigned to staff members, each with their own email and passcode. + - **Shared Passcode:** A shared passcode can be used by all staff members of an exhibitor. + - **License-based:** Individual licenses can be assigned to staff members, each with their own email and passcode. - **Lead Capture:** Leads can be captured by: - - **Scanning QR Codes:** The module includes a QR code scanner that can be used to scan the QR code on an attendee's badge. - - **Manual Entry:** The attendee's badge ID can be entered manually. + - **Scanning QR Codes:** The module includes a QR code scanner that can be used to scan the QR code on an attendee's badge. + - **Manual Entry:** The attendee's badge ID can be entered manually. - **Lead Management:** The module provides a comprehensive interface for managing leads, including: - - Viewing a list of all captured leads. - - Viewing the details of a single lead. - - Adding notes to a lead. - - Answering custom questions for a lead. + - Viewing a list of all captured leads. + - Viewing the details of a single lead. + - Adding notes to a lead. + - Answering custom questions for a lead. - **Lead Export:** Leads can be exported to a CSV or Excel file for further processing. - **License Management:** Exhibitors can manage their licenses, including adding, editing, and removing licenses. - **Client-Side Caching:** The module uses Dexie.js for client-side caching in IndexedDB, which improves performance and enables offline access. diff --git a/src/routes/idaa/(idaa)/archives/[archive_id]/ae_idaa_comp__archive_content_obj_id_edit.svelte b/src/routes/idaa/(idaa)/archives/[archive_id]/ae_idaa_comp__archive_content_obj_id_edit.svelte index 93d32c15..7d1bcd63 100644 --- a/src/routes/idaa/(idaa)/archives/[archive_id]/ae_idaa_comp__archive_content_obj_id_edit.svelte +++ b/src/routes/idaa/(idaa)/archives/[archive_id]/ae_idaa_comp__archive_content_obj_id_edit.svelte @@ -18,7 +18,7 @@ import { idaa_loc, idaa_sess, idaa_slct } from '$lib/stores/ae_idaa_stores'; import { archives_func } from '$lib/ae_archives/ae_archives_functions'; - import Tiptap_editor from '$lib/elements/element_tiptap_editor.svelte'; + import Tiptap_editor from '$lib/elements/element_codemirror_wrapper.svelte'; import Comp_hosted_files_upload from '$lib/ae_core/ae_comp__hosted_files_upload.svelte'; import Element_manage_hosted_file_li_wrap from '$lib/elements/element_manage_hosted_file_li_all.svelte'; @@ -422,11 +422,7 @@