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}
-
-
-
- {#if isCopying}
-
- {:else}
-
- {/if}
-
-
-
-
-
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 @@
-
-
-
-
-
- {#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');
- }}
- >
-
-
-
-
updateAttributes({ align: 'left' })}
- >
-
-
-
updateAttributes({ align: 'center' })}
- >
-
-
-
updateAttributes({ align: '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 @@
-
-
-
-
-
- editor.chain().focus().toggleBlockquote().run()}
- >
-
-
-
-
- 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 @@
-
-
-
-
-
- editor.chain().focus().toggleBold().run()}
- >
-
-
-
-
- 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 @@
-
-
-
-
-
- editor.chain().focus().toggleBulletList().run()}
- >
-
-
-
-
- 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 @@
-
-
-
-
-
- editor.chain().focus().toggleCode().run()}
- >
-
-
-
-
- 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 @@
-
-
-
-
-
-
-
- editor.chain().focus()}
- >
-
-
-
-
-
-
-
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"
- />
-
-
- editor.chain().focus().unsetHighlight().run()}
- >Remove Highlight
-
-
-
-
-
-
- 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 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- 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 @@
-
-
-
-
-
- editor.chain().focus().toggleItalic().run()}
- >
-
-
-
-
- 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 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- Insert or remove link from selected text.
- {
- //@ts-ignore
- if (e !== null && e.target !== null) setLink(e.target.value);
- }}
- class="w-full"
- />
-
-
{}}>
- Insert
-
-
{
- editor.chain().focus().extendMarkRange('link').unsetLink().run();
- }}>Remove
-
-
-
-
-
- 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 @@
-
-
-
-
-
- editor.chain().focus().toggleOrderedList().run()}
- >
-
-
-
-
- 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 @@
-
-
-
-
-
-
-
-
- A
-
-
-
-
-
- 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 @@
-
-
-
-
-
- editor.chain().focus().redo().run()}
- disabled={!editor.can().chain().focus().redo().run()}
- >
-
-
-
-
- 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 @@
-
-
-
-
-
- editor.chain().focus().toggleStrike().run()}
- >
-
-
-
-
- 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 @@
-
-
-
-
-
- editor.chain().focus().toggleSubscript().run()}
- >
-
-
-
-
- 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 @@
-
-
-
-
-
- editor.chain().focus().toggleSuperscript().run()}
- >
-
-
-
-
- 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 @@
-
-
-
-
-
- editor.chain().focus().toggleTaskList().run()}
- >
-
-
-
-
- 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 @@
-
-
-
-
-
-
-
-
- {#if editor.isActive('heading', { level: 1 })}
-
- {:else if editor.isActive('heading', { level: 2 })}
-
- {:else if editor.isActive('heading', { level: 3 })}
-
- {:else if editor.isActive('paragraph')}
-
- {:else if editor.isActive('codeBlock')}
-
- {:else}
-
- {/if}
-
-
-
-
- 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 @@
-
-
-
-
-
-
-
-
- {#if editor.isActive({ textAlign: 'left' })}
-
- {:else if editor.isActive({ textAlign: 'center' })}
-
- {:else if editor.isActive({ textAlign: 'right' })}
-
- {:else if editor.isActive({ textAlign: 'justify' })}
-
- {:else}
-
- {/if}
-
-
-
-
- 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 @@
-
-
-
-
-
-
-
- editor.chain().focus()}
- >
-
-
-
-
-
-
-
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"
- />
-
-
- editor.chain().focus().unsetColor().run()}
- >Remove Color
-
-
-
-
-
-
- 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 @@
-
-
-
-
-
- editor.chain().focus().toggleUnderline().run()}
- >
-
-
-
-
- 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 @@
-
-
-
-
-
- editor.chain().focus().undo().run()}
- disabled={!editor.can().chain().focus().undo().run()}
- >
-
-
-
-
- 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}
-
- '}>{placeholder}
-
-
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 @@
+
+
+
+
+ wrapSelection('**')} class="px-2 py-1 rounded hover:bg-gray-200"
+ >B
+ wrapSelection('*')} class="px-2 py-1 rounded hover:bg-gray-200"
+ >I
+ List
+
+
+
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 @@
Description
@@ -914,11 +910,7 @@
>Internal Staff Notes
diff --git a/src/routes/idaa/(idaa)/archives/[archive_id]/ae_idaa_comp__archive_obj_id_edit.svelte b/src/routes/idaa/(idaa)/archives/[archive_id]/ae_idaa_comp__archive_obj_id_edit.svelte
index 54c91dd6..cd754171 100644
--- a/src/routes/idaa/(idaa)/archives/[archive_id]/ae_idaa_comp__archive_obj_id_edit.svelte
+++ b/src/routes/idaa/(idaa)/archives/[archive_id]/ae_idaa_comp__archive_obj_id_edit.svelte
@@ -19,7 +19,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';
interface Props {
log_lvl?: number;
@@ -339,11 +339,7 @@
Description
@@ -682,11 +678,7 @@
>Internal Staff Notes
diff --git a/src/routes/idaa/(idaa)/bb/ae_idaa_comp__post_comment_obj_id_edit.svelte b/src/routes/idaa/(idaa)/bb/ae_idaa_comp__post_comment_obj_id_edit.svelte
index 07838b6e..b57f0d8f 100644
--- a/src/routes/idaa/(idaa)/bb/ae_idaa_comp__post_comment_obj_id_edit.svelte
+++ b/src/routes/idaa/(idaa)/bb/ae_idaa_comp__post_comment_obj_id_edit.svelte
@@ -34,7 +34,7 @@
} from '$lib/stores/ae_stores';
import { idaa_loc, idaa_sess, idaa_slct } from '$lib/stores/ae_idaa_stores';
import { posts_func } from '$lib/ae_posts/ae_posts_functions';
- import Tiptap_editor from '$lib/elements/element_tiptap_editor.svelte';
+ import Tiptap_editor from '$lib/elements/element_codemirror_wrapper.svelte';
let prom_api__post_comment_obj: any = $state();
@@ -487,11 +487,7 @@
diff --git a/src/routes/idaa/(idaa)/bb/ae_idaa_comp__post_obj_id_edit.svelte b/src/routes/idaa/(idaa)/bb/ae_idaa_comp__post_obj_id_edit.svelte
index f87e0a44..89d2e7ea 100644
--- a/src/routes/idaa/(idaa)/bb/ae_idaa_comp__post_obj_id_edit.svelte
+++ b/src/routes/idaa/(idaa)/bb/ae_idaa_comp__post_obj_id_edit.svelte
@@ -31,7 +31,7 @@
} from '$lib/stores/ae_stores';
import { idaa_loc, idaa_sess, idaa_slct } from '$lib/stores/ae_idaa_stores';
import { posts_func } from '$lib/ae_posts/ae_posts_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';
// let obj_changed = $state(false);
@@ -483,17 +483,7 @@
{#if $ae_loc.administrator_access}
@@ -1053,15 +1043,7 @@
>Internal Staff Notes
diff --git a/src/routes/idaa/(idaa)/recovery_meetings/ae_idaa_comp__event_obj_id_edit.svelte b/src/routes/idaa/(idaa)/recovery_meetings/ae_idaa_comp__event_obj_id_edit.svelte
index fad169b6..59ef5881 100644
--- a/src/routes/idaa/(idaa)/recovery_meetings/ae_idaa_comp__event_obj_id_edit.svelte
+++ b/src/routes/idaa/(idaa)/recovery_meetings/ae_idaa_comp__event_obj_id_edit.svelte
@@ -32,7 +32,7 @@
} from '$lib/stores/ae_stores';
import { idaa_loc, idaa_sess, idaa_slct, idaa_trig } from '$lib/stores/ae_idaa_stores';
import { events_func } from '$lib/ae_events_functions';
- import Tiptap_editor from '$lib/elements/element_tiptap_editor.svelte';
+ import Tiptap_editor from '$lib/elements/element_codemirror_wrapper.svelte';
// export let container_class_li = [];
@@ -933,11 +933,7 @@
@@ -1315,11 +1311,7 @@
@@ -1788,11 +1780,7 @@
@@ -2034,17 +2022,7 @@
@@ -2594,11 +2572,7 @@
Internal Staff Notes
diff --git a/src/routes/idaa/README.md b/src/routes/idaa/README.md
index 2c7ec109..d7d56fa3 100644
--- a/src/routes/idaa/README.md
+++ b/src/routes/idaa/README.md
@@ -10,10 +10,10 @@ The integration uses a multi-step iframe-based approach:
1. **Novi Page:** A page on the IDAA website contains a snippet of code that loads a static HTML file from this Aether project's `static/` directory into an iframe.
2. **Static HTML Bridge:** The static file (e.g., `static/idaa_novi_iframe_archives.html`) acts as a bridge. It contains JavaScript that:
- a. Executes within the context of the Novi site, allowing it to access Novi-specific data like the current user's unique ID (`<%=Novi.User.CustomerUniqueId%>`).
- b. Uses the Novi user ID to make a call to the Novi API to get more user details (like email and full name).
- c. Uses the retrieved user details to construct a URL for the actual Aether application page.
- d. Loads the Aether page into a nested iframe on the static page.
+ a. Executes within the context of the Novi site, allowing it to access Novi-specific data like the current user's unique ID (`<%=Novi.User.CustomerUniqueId%>`).
+ b. Uses the Novi user ID to make a call to the Novi API to get more user details (like email and full name).
+ c. Uses the retrieved user details to construct a URL for the actual Aether application page.
+ d. Loads the Aether page into a nested iframe on the static page.
3. **Aether Application:** The final Aether page (e.g., `/idaa/archives`) receives the user information via URL parameters and displays the relevant content.
This architecture allows the Aether application to securely authenticate and identify the Novi user without a complex SSO integration.
@@ -24,18 +24,18 @@ The IDAA integration includes the following features, each corresponding to a ro
### IDAA - Archives
-- **Route:** `/idaa/archives`
-- **Bridge File:** `static/idaa_novi_iframe_archives.html`
-- **Functionality:** Provides access to the Aether Archives module, allowing IDAA members to view and search archived content.
+- **Route:** `/idaa/archives`
+- **Bridge File:** `static/idaa_novi_iframe_archives.html`
+- **Functionality:** Provides access to the Aether Archives module, allowing IDAA members to view and search archived content.
### IDAA - Bulletin Board (BB)
-- **Route:** `/idaa/bb`
-- **Bridge File:** `static/idaa_novi_iframe_bulletin_board.html`
-- **Functionality:** Provides a bulletin board or forum feature, powered by the Aether Posts module.
+- **Route:** `/idaa/bb`
+- **Bridge File:** `static/idaa_novi_iframe_bulletin_board.html`
+- **Functionality:** Provides a bulletin board or forum feature, powered by the Aether Posts module.
### IDAA - Recovery Meetings
-- **Route:** `/idaa/recovery_meetings`
-- **Bridge File:** `static/idaa_novi_iframe_recovery_meetings.html`
-- **Functionality:** Displays a list of recovery meetings. This may also integrate with a Jitsi meeting interface (`idaa_novi_iframe_jitsi_meeting.html`).
+- **Route:** `/idaa/recovery_meetings`
+- **Bridge File:** `static/idaa_novi_iframe_recovery_meetings.html`
+- **Functionality:** Displays a list of recovery meetings. This may also integrate with a Jitsi meeting interface (`idaa_novi_iframe_jitsi_meeting.html`).
diff --git a/src/routes/journals/README.md b/src/routes/journals/README.md
index 971bcd04..77a08c08 100644
--- a/src/routes/journals/README.md
+++ b/src/routes/journals/README.md
@@ -13,13 +13,13 @@ This directory (`src/routes/journals`) contains the Svelte components and pages
## UI Components & Pages
-- `+page.svelte`: The main landing page that displays a list of all journals for the current user.
-- `[journal_id]/+page.svelte`: The page for viewing a single journal and its list of entries.
-- `ae_comp__journal_obj_li.svelte`: A component that renders the list of journals.
-- `ae_comp__journal_obj_id_view.svelte`: A component for viewing the details of a selected journal.
-- `ae_comp__journal_entry_obj_li.svelte`: A component that renders the list of entries for a journal.
-- `ae_comp__journal_entry_obj_id_view.svelte`: A component for viewing the content of a single journal entry.
-- `ae_comp__journal_obj_id_edit.svelte`: A modal component for creating and editing journals.
+- `+page.svelte`: The main landing page that displays a list of all journals for the current user.
+- `[journal_id]/+page.svelte`: The page for viewing a single journal and its list of entries.
+- `ae_comp__journal_obj_li.svelte`: A component that renders the list of journals.
+- `ae_comp__journal_obj_id_view.svelte`: A component for viewing the details of a selected journal.
+- `ae_comp__journal_entry_obj_li.svelte`: A component that renders the list of entries for a journal.
+- `ae_comp__journal_entry_obj_id_view.svelte`: A component for viewing the content of a single journal entry.
+- `ae_comp__journal_obj_id_edit.svelte`: A modal component for creating and editing journals.
## Core Logic