diff --git a/app/frontend/javascript/rhino/custom-editor.js b/app/frontend/javascript/rhino/custom-editor.js
index 01a58945..cfdb608b 100644
--- a/app/frontend/javascript/rhino/custom-editor.js
+++ b/app/frontend/javascript/rhino/custom-editor.js
@@ -49,6 +49,8 @@ class CustomEditor extends TipTapEditor {
${this.renderHeadingButton()}
+ ${this.renderHorizontalRuleButton()}
+
${this.renderBlockquoteButton()}
@@ -148,42 +150,10 @@ class CustomEditor extends TipTapEditor {
+ `;
+ }
renderTableButton() {
const tableEnabled = true; // Boolean(this.editor?.commands.setAttachment);
diff --git a/app/frontend/javascript/rhino/extend-editor.js b/app/frontend/javascript/rhino/extend-editor.js
index 4ef2a9a0..9b98d8ff 100644
--- a/app/frontend/javascript/rhino/extend-editor.js
+++ b/app/frontend/javascript/rhino/extend-editor.js
@@ -1,31 +1,32 @@
-import "./custom-editor.js"
-import "./custom-editor.css"
-import { Table } from '@tiptap/extension-table'
-import { TableCell } from '@tiptap/extension-table-cell'
-import { TableHeader } from '@tiptap/extension-table-header'
-import { TableRow } from '@tiptap/extension-table-row'
-import Youtube from '@tiptap/extension-youtube'
-import TextAlign from '@tiptap/extension-text-align'
-import { Grid } from './grid/grid'
-import { GridCell } from './grid/gridCell'
+import "./custom-editor.js";
+import "./custom-editor.css";
+import { Table } from "@tiptap/extension-table";
+import { TableCell } from "@tiptap/extension-table-cell";
+import { TableHeader } from "@tiptap/extension-table-header";
+import { TableRow } from "@tiptap/extension-table-row";
+import Youtube from "@tiptap/extension-youtube";
+import TextAlign from "@tiptap/extension-text-align";
+import { Grid } from "./grid/grid";
+import { GridCell } from "./grid/gridCell";
+import HorizontalRule from "@tiptap/extension-horizontal-rule";
function extendRhinoEditor(event) {
- const rhinoEditor = event.target
- if (!rhinoEditor) return
+ const rhinoEditor = event.target;
+ if (!rhinoEditor) return;
rhinoEditor.addExtensions(
- Table,
- TableRow,
- TableHeader,
- TableCell,
- Youtube.configure({ nocookie: true }),
- TextAlign.configure({
- types: ['heading', 'paragraph'],
- }),
- Grid,
- GridCell
- )
+ Table,
+ TableRow,
+ TableHeader,
+ TableCell,
+ Youtube.configure({ nocookie: true }),
+ TextAlign.configure({
+ types: ["heading", "paragraph"],
+ }),
+ Grid,
+ GridCell,
+ HorizontalRule,
+ );
}
-document.addEventListener("rhino-before-initialize", extendRhinoEditor)
-
+document.addEventListener("rhino-before-initialize", extendRhinoEditor);
diff --git a/package-lock.json b/package-lock.json
index 7b128279..a7adef20 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -11,6 +11,7 @@
"@rails/actiontext": "^8.1.100",
"@rails/request.js": "^0.0.12",
"@tailwindcss/vite": "^4.1.13",
+ "@tiptap/extension-horizontal-rule": "^3.14.0",
"@tiptap/extension-table": "^3.13.0",
"@tiptap/extension-table-cell": "^3.13.0",
"@tiptap/extension-table-header": "^3.13.0",
@@ -1112,16 +1113,16 @@
}
},
"node_modules/@tiptap/core": {
- "version": "3.13.0",
- "resolved": "https://registry.npmjs.org/@tiptap/core/-/core-3.13.0.tgz",
- "integrity": "sha512-iUelgiTMgPVMpY5ZqASUpk8mC8HuR9FWKaDzK27w9oWip9tuB54Z8mePTxNcQaSPb6ErzEaC8x8egrRt7OsdGQ==",
+ "version": "3.14.0",
+ "resolved": "https://registry.npmjs.org/@tiptap/core/-/core-3.14.0.tgz",
+ "integrity": "sha512-nm0VWVA1Vq/jaKY3wyRXViL/kf78yMdH7qETpv4qZXDQLU+pdWV3IGoRTQTKESc7d8L1wL/2uCeByLNUJfrSIw==",
"license": "MIT",
"funding": {
"type": "github",
"url": "https://github.com/sponsors/ueberdosis"
},
"peerDependencies": {
- "@tiptap/pm": "^3.13.0"
+ "@tiptap/pm": "^3.14.0"
}
},
"node_modules/@tiptap/extension-blockquote": {
@@ -1269,17 +1270,17 @@
}
},
"node_modules/@tiptap/extension-horizontal-rule": {
- "version": "3.13.0",
- "resolved": "https://registry.npmjs.org/@tiptap/extension-horizontal-rule/-/extension-horizontal-rule-3.13.0.tgz",
- "integrity": "sha512-ZUFyORtjj22ib8ykbxRhWFQOTZjNKqOsMQjaAGof30cuD2DN5J5pMz7Haj2fFRtLpugWYH+f0Mi+WumQXC3hCw==",
+ "version": "3.14.0",
+ "resolved": "https://registry.npmjs.org/@tiptap/extension-horizontal-rule/-/extension-horizontal-rule-3.14.0.tgz",
+ "integrity": "sha512-65O4T9vPKLUKO1fLowh5jqtfQlH5eaIL7qb/uj5sXMMg8O7TCvBIRkwNuYsFTkJmTk4vBy+fjZ0uwSY3DFkO1g==",
"license": "MIT",
"funding": {
"type": "github",
"url": "https://github.com/sponsors/ueberdosis"
},
"peerDependencies": {
- "@tiptap/core": "^3.13.0",
- "@tiptap/pm": "^3.13.0"
+ "@tiptap/core": "^3.14.0",
+ "@tiptap/pm": "^3.14.0"
}
},
"node_modules/@tiptap/extension-image": {
@@ -1537,9 +1538,9 @@
}
},
"node_modules/@tiptap/pm": {
- "version": "3.13.0",
- "resolved": "https://registry.npmjs.org/@tiptap/pm/-/pm-3.13.0.tgz",
- "integrity": "sha512-WKR4ucALq+lwx0WJZW17CspeTpXorbIOpvKv5mulZica6QxqfMhn8n1IXCkDws/mCoLRx4Drk5d377tIjFNsvQ==",
+ "version": "3.14.0",
+ "resolved": "https://registry.npmjs.org/@tiptap/pm/-/pm-3.14.0.tgz",
+ "integrity": "sha512-xrZmqI5jl4yMeAsu8p8gVP9S3An5h2MBi8BQHNnZmpyzkUrlpd40vlT6u13SWIqVi5ZWhBZ6U3rL7mkVLZuRKg==",
"license": "MIT",
"dependencies": {
"prosemirror-changeset": "^2.3.0",
diff --git a/package.json b/package.json
index 6217ab8a..9dd7b573 100644
--- a/package.json
+++ b/package.json
@@ -11,6 +11,7 @@
"@rails/actiontext": "^8.1.100",
"@rails/request.js": "^0.0.12",
"@tailwindcss/vite": "^4.1.13",
+ "@tiptap/extension-horizontal-rule": "^3.14.0",
"@tiptap/extension-table": "^3.13.0",
"@tiptap/extension-table-cell": "^3.13.0",
"@tiptap/extension-table-header": "^3.13.0",