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",