@onereach/ui-components 25.1.0 → 25.1.1-beta.5754.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/esm/{OrRichTextEditor-B_uVsae1.mjs → OrRichTextEditor-DJTBMYpL.mjs} +186 -180
- package/dist/esm/OrRichTextEditor-DJTBMYpL.mjs.map +1 -0
- package/dist/esm/components/index.mjs +1 -1
- package/dist/esm/components/or-rich-text-editor-v3/index.mjs +1 -1
- package/dist/esm/index.mjs +1 -1
- package/package.json +4 -5
- package/dist/esm/OrRichTextEditor-B_uVsae1.mjs.map +0 -1
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
(function(){"use strict";try{if(typeof document<"u"){var e=document.createElement("style");e.appendChild(document.createTextNode("[data-v-
|
|
1
|
+
(function(){"use strict";try{if(typeof document<"u"){var e=document.createElement("style");e.appendChild(document.createTextNode("[data-v-538f3986] .or-cm-paragraph{@apply my-xs;}[data-v-538f3986] .or-cm-bulletList{@apply mx-lg my-xs list-disc;}[data-v-538f3986] .or-cm-orderedList{@apply mx-lg my-xs list-decimal;}[data-v-538f3986] .or-cm-blockquote{@apply my-sm mx-lg px-lg border-l-2 border-outline;}[data-v-538f3986] .or-cm-link{@apply text-primary cursor-pointer;}[data-v-538f3986] .or-cm-placeholder{@apply text-outline;}[data-v-538f3986] .or-cm-editorProps{@apply flex flex-col focus:outline-none gap-xs h-full;}.tiptap-editor-v3 .is-editor-empty:before{float:left;height:0;pointer-events:none;content:attr(data-placeholder)}")),document.head.appendChild(e)}}catch(t){console.error("vite-plugin-css-injected-by-js",t)}})();
|
|
2
2
|
import { useTheme as ft, useResponsive as pt } from "@onereach/ui-components-common/hooks";
|
|
3
3
|
import { isArray as gt } from "@onereach/ui-components-common/utils";
|
|
4
4
|
import { O as ht } from "./OrButton-C_hXddAf.mjs";
|
|
@@ -25,7 +25,7 @@ import We from "@tiptap/extension-underline";
|
|
|
25
25
|
import Nt from "@tiptap/starter-kit";
|
|
26
26
|
import { useResizeObserver as Vt, useDebounceFn as $t, onClickOutside as It } from "@vueuse/core";
|
|
27
27
|
import { useFocusTrap as Et } from "@vueuse/integrations/useFocusTrap";
|
|
28
|
-
import { defineComponent as Ft, shallowRef as qt, ref as m, onMounted as zt, onBeforeUnmount as Tt, computed as w, watch as Dt, nextTick as Ut, resolveComponent as O, openBlock as f, createElementBlock as
|
|
28
|
+
import { defineComponent as Ft, shallowRef as qt, ref as m, onMounted as zt, onBeforeUnmount as Tt, computed as w, watch as Dt, nextTick as Ut, resolveComponent as O, openBlock as f, createElementBlock as q, normalizeClass as N, createBlock as R, withCtx as v, renderSlot as re, createTextVNode as V, toDisplayString as ne, createCommentVNode as D, createVNode as $, createElementVNode as z, Fragment as ae, renderList as le, withDirectives as se, vShow as ie, vModelText as Wt } from "vue";
|
|
29
29
|
import { TextSelection as Gt, Selection as Jt } from "prosemirror-state";
|
|
30
30
|
import { exitCode as jt } from "prosemirror-commands";
|
|
31
31
|
import { EditorState as Ce } from "@codemirror/state";
|
|
@@ -42,8 +42,8 @@ import ao from "@tiptap/extension-list-item";
|
|
|
42
42
|
import lo from "@tiptap/extension-strike";
|
|
43
43
|
import so from "@tiptap/extension-horizontal-rule";
|
|
44
44
|
import { marked as io } from "marked";
|
|
45
|
-
import { defaultMarkdownSerializer as S, MarkdownSerializer as
|
|
46
|
-
import { DOMParser as
|
|
45
|
+
import { defaultMarkdownSerializer as S, MarkdownSerializer as uo } from "prosemirror-markdown";
|
|
46
|
+
import { DOMParser as co } from "prosemirror-model";
|
|
47
47
|
import { _ as mo } from "./_plugin-vue_export-helper-CHgC5LLL.mjs";
|
|
48
48
|
var Je = /* @__PURE__ */ ((e) => (e.Markdown = "markdown", e.Markup = "markup", e))(Je || {}), je = /* @__PURE__ */ ((e) => (e.bold = "format_bold", e.italic = "format_italic", e.underline = "format_underlined", e.strike = "format_strikethrough", e.bulletList = "format_list_bulleted", e.orderedList = "format_list_numbered", e.link = "link", e.highlight = "highlight", e.redo = "redo", e.undo = "undo", e.codeBlock = "code_blocks", e.blockquote = "format_quote", e.file = "attach_file", e.source = "source_notes", e))(je || {}), Ke = /* @__PURE__ */ ((e) => (e.bold = "Bold", e.italic = "Italic", e.underline = "Underline", e.strike = "Strike", e.bulletList = "Bulleted List", e.orderedList = "Numbered List", e.link = "Link", e.highlight = "Highlight", e.redo = "Redo", e.undo = "Undo", e.codeBlock = "Code Block", e.blockquote = "Quote", e.file = "File", e.source = "Source", e))(Ke || {});
|
|
49
49
|
const fo = [
|
|
@@ -86,11 +86,11 @@ const fo = [
|
|
|
86
86
|
"h-full"
|
|
87
87
|
], n = ft(), vo = n == null ? void 0 : n.backgroundColor["custom-colors-custom-6"], we = n == null ? void 0 : n.backgroundColor["custom-colors-custom-1"], bo = n == null ? void 0 : n.backgroundColor["custom-colors-custom-3"];
|
|
88
88
|
var Be;
|
|
89
|
-
const ko = (Be = n == null ? void 0 : n.backgroundColor) == null ? void 0 : Be.white,
|
|
89
|
+
const ko = (Be = n == null ? void 0 : n.backgroundColor) == null ? void 0 : Be.white, ue = n == null ? void 0 : n.backgroundColor["custom-colors-custom-6"], he = n == null ? void 0 : n.backgroundColor["custom-colors-custom-5"], yo = n == null ? void 0 : n.backgroundColor["custom-colors-custom-3"], Co = n == null ? void 0 : n.backgroundColor.success, Oe = n == null ? void 0 : n.backgroundColor.warning, wo = n == null ? void 0 : n.backgroundColor["custom-colors-custom-1"];
|
|
90
90
|
var Me, Ae, Pe, He, Re, Ne, Ve, $e, Ie, Ee;
|
|
91
91
|
const Oo = Ge.theme({
|
|
92
92
|
"&": {
|
|
93
|
-
color:
|
|
93
|
+
color: ue,
|
|
94
94
|
backgroundColor: (Me = n == null ? void 0 : n.backgroundColor) == null ? void 0 : Me["bg-primary-container"]
|
|
95
95
|
},
|
|
96
96
|
".cm-editor": {
|
|
@@ -122,7 +122,7 @@ const Oo = Ge.theme({
|
|
|
122
122
|
},
|
|
123
123
|
".cm-panels": {
|
|
124
124
|
// backgroundColor: darkBackground,
|
|
125
|
-
color:
|
|
125
|
+
color: ue
|
|
126
126
|
},
|
|
127
127
|
// '.cm-panels.cm-panels-top': { borderBottom: `2px solid ${themes?.colors?.neutral?.[200]}` },
|
|
128
128
|
// '.cm-panels.cm-panels-bottom': { borderTop: `2px solid ${themes?.colors?.neutral?.[200]}` },
|
|
@@ -142,7 +142,7 @@ const Oo = Ge.theme({
|
|
|
142
142
|
},
|
|
143
143
|
".cm-gutters": {
|
|
144
144
|
backgroundColor: (Ne = n == null ? void 0 : n.backgroundColor) == null ? void 0 : Ne["primary-opacity-0-12"],
|
|
145
|
-
color:
|
|
145
|
+
color: he,
|
|
146
146
|
border: "none"
|
|
147
147
|
},
|
|
148
148
|
".cm-lineNumbers .cm-gutterElement": {
|
|
@@ -172,7 +172,7 @@ const Oo = Ge.theme({
|
|
|
172
172
|
".cm-tooltip-autocomplete": {
|
|
173
173
|
"& > ul > li[aria-selected]": {
|
|
174
174
|
// backgroundColor: highlightBackground,
|
|
175
|
-
color:
|
|
175
|
+
color: ue
|
|
176
176
|
}
|
|
177
177
|
},
|
|
178
178
|
".cm-textfield": {
|
|
@@ -202,7 +202,7 @@ const Oo = Ge.theme({
|
|
|
202
202
|
},
|
|
203
203
|
{
|
|
204
204
|
tag: [a.definition(a.name), a.separator],
|
|
205
|
-
color:
|
|
205
|
+
color: ue
|
|
206
206
|
},
|
|
207
207
|
{
|
|
208
208
|
tag: [a.typeName, a.className, a.number, a.changed, a.annotation, a.modifier, a.self, a.namespace],
|
|
@@ -214,7 +214,7 @@ const Oo = Ge.theme({
|
|
|
214
214
|
},
|
|
215
215
|
{
|
|
216
216
|
tag: [a.meta, a.comment],
|
|
217
|
-
color:
|
|
217
|
+
color: he
|
|
218
218
|
},
|
|
219
219
|
{
|
|
220
220
|
tag: a.strong,
|
|
@@ -230,7 +230,7 @@ const Oo = Ge.theme({
|
|
|
230
230
|
},
|
|
231
231
|
{
|
|
232
232
|
tag: a.link,
|
|
233
|
-
color:
|
|
233
|
+
color: he,
|
|
234
234
|
textDecoration: "underline"
|
|
235
235
|
},
|
|
236
236
|
{
|
|
@@ -253,14 +253,14 @@ const Oo = Ge.theme({
|
|
|
253
253
|
]), Lo = [Oo, xt(So)], Se = (e, o) => {
|
|
254
254
|
if (e === o)
|
|
255
255
|
return null;
|
|
256
|
-
let t = 0,
|
|
257
|
-
for (; t <
|
|
256
|
+
let t = 0, s = e.length, l = o.length;
|
|
257
|
+
for (; t < s && e.charCodeAt(t) === o.charCodeAt(t); )
|
|
258
258
|
t += 1;
|
|
259
|
-
for (;
|
|
260
|
-
|
|
259
|
+
for (; s > t && l > t && e.charCodeAt(s - 1) === o.charCodeAt(l - 1); )
|
|
260
|
+
s -= 1, l -= 1;
|
|
261
261
|
return {
|
|
262
262
|
from: t,
|
|
263
|
-
to:
|
|
263
|
+
to: s,
|
|
264
264
|
text: o.slice(t, l)
|
|
265
265
|
};
|
|
266
266
|
};
|
|
@@ -270,7 +270,7 @@ class Bo {
|
|
|
270
270
|
this.updating = !1, this.node = o.node, this.view = o.view;
|
|
271
271
|
const t = ((g = o.cmOptions) == null ? void 0 : g.extensions) || [];
|
|
272
272
|
this.name = "codeBlock", this.getPos = o.getPos;
|
|
273
|
-
const
|
|
273
|
+
const s = Ce.changeFilter.of((L) => (!L.docChanged && !this.updating && this.forwardSelection(), !0));
|
|
274
274
|
this.cm = new Ge({
|
|
275
275
|
dispatch: this.dispatch.bind(this)
|
|
276
276
|
}), this.dom = this.cm.dom;
|
|
@@ -278,7 +278,7 @@ class Bo {
|
|
|
278
278
|
doc: this.node.textContent,
|
|
279
279
|
extensions: [
|
|
280
280
|
Lo,
|
|
281
|
-
|
|
281
|
+
s,
|
|
282
282
|
Kt(),
|
|
283
283
|
Qt(),
|
|
284
284
|
Xt(),
|
|
@@ -316,12 +316,12 @@ class Bo {
|
|
|
316
316
|
t.eq(o.selection) || this.view.dispatch(o.tr.setSelection(t));
|
|
317
317
|
}
|
|
318
318
|
asProseMirrorSelection(o) {
|
|
319
|
-
const t = this.getPos() + 1, { anchor:
|
|
320
|
-
return Gt.create(o,
|
|
319
|
+
const t = this.getPos() + 1, { anchor: s, head: l } = this.cm.state.selection.main;
|
|
320
|
+
return Gt.create(o, s + t, l + t);
|
|
321
321
|
}
|
|
322
322
|
dispatch(o) {
|
|
323
323
|
if (this.cm.setState(o.state), o.docChanged && !this.updating) {
|
|
324
|
-
const t = this.getPos() + 1,
|
|
324
|
+
const t = this.getPos() + 1, s = o.state.doc.toString(), l = Se(this.node.textContent, s);
|
|
325
325
|
if (!l)
|
|
326
326
|
return;
|
|
327
327
|
const g = l.text ? this.view.state.schema.text(l.text) : null, L = this.view.state.tr.replaceWith(l.from + t, l.to + t, g);
|
|
@@ -329,17 +329,17 @@ class Bo {
|
|
|
329
329
|
}
|
|
330
330
|
}
|
|
331
331
|
mayBeEscape(o, t) {
|
|
332
|
-
return (
|
|
333
|
-
const { state: l } =
|
|
332
|
+
return (s) => {
|
|
333
|
+
const { state: l } = s, { selection: g } = l, k = (() => {
|
|
334
334
|
const y = g.main.from, A = l.doc.lineAt(y);
|
|
335
335
|
return {
|
|
336
336
|
line: A.number,
|
|
337
337
|
ch: y - A.from
|
|
338
338
|
};
|
|
339
|
-
})(),
|
|
340
|
-
if (
|
|
339
|
+
})(), U = l.selection.ranges.some((y) => !y.empty), W = 1, G = l.doc.lineAt(l.doc.length).number;
|
|
340
|
+
if (U || k.line !== (t < 0 ? W : G) || o === "char" && k.ch !== (t < 0 ? 0 : l.doc.line(k.line).length))
|
|
341
341
|
return !1;
|
|
342
|
-
const
|
|
342
|
+
const J = this.getPos() + (t < 0 ? 0 : this.node.nodeSize), B = Jt.near(this.view.state.doc.resolve(J), t);
|
|
343
343
|
return this.view.dispatch(this.view.state.tr.setSelection(B).scrollIntoView()), this.view.focus(), !0;
|
|
344
344
|
};
|
|
345
345
|
}
|
|
@@ -444,37 +444,37 @@ const Mo = Mt.create({
|
|
|
444
444
|
expelEnclosingWhitespace: !0
|
|
445
445
|
},
|
|
446
446
|
[Te.name]: {
|
|
447
|
-
open(e, o, t,
|
|
448
|
-
return Le(o, t,
|
|
447
|
+
open(e, o, t, s) {
|
|
448
|
+
return Le(o, t, s, 1) ? "<" : "[";
|
|
449
449
|
},
|
|
450
|
-
close(e, o, t,
|
|
450
|
+
close(e, o, t, s) {
|
|
451
451
|
const l = o.attrs.canonicalSrc || o.attrs.href;
|
|
452
|
-
return Le(o, t,
|
|
452
|
+
return Le(o, t, s, -1) ? ">" : `](${e.esc(l)}${o.attrs.title ? ` ${e.quote(o.attrs.title)}` : ""})`;
|
|
453
453
|
}
|
|
454
454
|
}
|
|
455
455
|
};
|
|
456
|
-
function Le(e, o, t,
|
|
456
|
+
function Le(e, o, t, s) {
|
|
457
457
|
if (e.attrs.title || !/^\w+:/.test(e.attrs.href)) return !1;
|
|
458
|
-
const l = o.child(t + (
|
|
458
|
+
const l = o.child(t + (s < 0 ? -1 : 0));
|
|
459
459
|
if (!l.isText || l.text !== e.attrs.href || l.marks[l.marks.length - 1] !== e)
|
|
460
460
|
return !1;
|
|
461
|
-
if (t === (
|
|
462
|
-
const g = o.child(t + (
|
|
461
|
+
if (t === (s < 0 ? 1 : o.childCount - 1)) return !0;
|
|
462
|
+
const g = o.child(t + (s < 0 ? -2 : 1));
|
|
463
463
|
return !e.isInSet(g.marks);
|
|
464
464
|
}
|
|
465
|
-
function
|
|
466
|
-
const t = new
|
|
465
|
+
function pe(e, o) {
|
|
466
|
+
const t = new uo(
|
|
467
467
|
Ao,
|
|
468
468
|
Po
|
|
469
|
-
),
|
|
470
|
-
return t.serialize(
|
|
469
|
+
), s = e.nodeFromJSON(o);
|
|
470
|
+
return t.serialize(s, { tightLists: !0 });
|
|
471
471
|
}
|
|
472
|
-
function
|
|
472
|
+
function ge(e, o) {
|
|
473
473
|
if (!o) return null;
|
|
474
474
|
const t = io.parse(o);
|
|
475
475
|
if (!t) return null;
|
|
476
|
-
const
|
|
477
|
-
return l.append(document.createComment(o)),
|
|
476
|
+
const s = new DOMParser(), { body: l } = s.parseFromString(t, "text/html");
|
|
477
|
+
return l.append(document.createComment(o)), co.fromSchema(e).parse(l).toJSON();
|
|
478
478
|
}
|
|
479
479
|
const Ho = Ft({
|
|
480
480
|
name: "OrRichTextEditor",
|
|
@@ -550,7 +550,7 @@ const Ho = Ft({
|
|
|
550
550
|
],
|
|
551
551
|
setup(e, o) {
|
|
552
552
|
let t = qt();
|
|
553
|
-
const
|
|
553
|
+
const s = m(), l = m(), g = m(), L = m(), k = m(), U = m(), W = m(), G = m(), J = m(), B = m({
|
|
554
554
|
bold: !1,
|
|
555
555
|
italic: !1,
|
|
556
556
|
underline: !1,
|
|
@@ -565,29 +565,29 @@ const Ho = Ft({
|
|
|
565
565
|
blockquote: !1,
|
|
566
566
|
file: !1,
|
|
567
567
|
source: !1
|
|
568
|
-
}), y = m(e.autofocus), A = [1, 2, 3, 4], P = m(0), I = m(""),
|
|
569
|
-
let
|
|
568
|
+
}), y = m(e.autofocus), A = [1, 2, 3, 4], P = m(0), I = m(""), i = m(!1), H = m(!1), d = m(""), b = m(""), ce = m(0), ve = m(""), { isMobile: be } = pt();
|
|
569
|
+
let ke = Et(s, {
|
|
570
570
|
fallbackFocus: ".container",
|
|
571
571
|
allowOutsideClick: !0
|
|
572
572
|
});
|
|
573
573
|
Vt(g, $t((r) => {
|
|
574
574
|
var h, p;
|
|
575
|
-
const
|
|
576
|
-
if (k.value && l.value &&
|
|
575
|
+
const u = r[0], { width: c } = u.contentRect;
|
|
576
|
+
if (k.value && l.value && ye.value) {
|
|
577
577
|
let C = 0;
|
|
578
578
|
C = ((p = (h = l.value.firstElementChild) == null ? void 0 : h.firstElementChild) == null ? void 0 : p.offsetWidth) + 16;
|
|
579
|
-
const M =
|
|
580
|
-
|
|
579
|
+
const M = c / C - 2;
|
|
580
|
+
ce.value = Math.round(ye.value - M);
|
|
581
581
|
}
|
|
582
582
|
}, 10)), zt(() => {
|
|
583
583
|
t.value = new At({
|
|
584
584
|
onUpdate: ({ editor: r }) => {
|
|
585
|
-
y.value = !0,
|
|
586
|
-
const
|
|
587
|
-
e.format === "markdown" ? (I.value =
|
|
585
|
+
y.value = !0, me();
|
|
586
|
+
const u = r.getHTML(), c = r.getText();
|
|
587
|
+
e.format === "markdown" ? (I.value = pe(r.schema, r.getJSON()), E.value = I.value) : E.value = c === "" ? c : u;
|
|
588
588
|
},
|
|
589
589
|
onCreate: ({ editor: r }) => {
|
|
590
|
-
e.format === "markdown" ? r.commands.setContent(
|
|
590
|
+
e.format === "markdown" ? r.commands.setContent(ge(r.schema, E.value)) : r.commands.setContent(E.value);
|
|
591
591
|
},
|
|
592
592
|
onFocus(r) {
|
|
593
593
|
o.emit("focus", r);
|
|
@@ -595,7 +595,7 @@ const Ho = Ft({
|
|
|
595
595
|
onBlur(r) {
|
|
596
596
|
o.emit("blur", r);
|
|
597
597
|
},
|
|
598
|
-
element:
|
|
598
|
+
element: s.value,
|
|
599
599
|
autofocus: e.autofocus,
|
|
600
600
|
enableInputRules: !0,
|
|
601
601
|
enablePasteRules: !0,
|
|
@@ -631,10 +631,10 @@ const Ho = Ft({
|
|
|
631
631
|
}),
|
|
632
632
|
Ht.configure({ levels: A }).extend({
|
|
633
633
|
levels: A,
|
|
634
|
-
renderHTML({ node: r, HTMLAttributes:
|
|
634
|
+
renderHTML({ node: r, HTMLAttributes: u }) {
|
|
635
635
|
return [
|
|
636
636
|
"h" + r.attrs.level,
|
|
637
|
-
Pt(
|
|
637
|
+
Pt(u, {
|
|
638
638
|
class: `typography-headline-${r.attrs.level} my-xs`
|
|
639
639
|
}),
|
|
640
640
|
0
|
|
@@ -666,93 +666,99 @@ const Ho = Ft({
|
|
|
666
666
|
parseOptions: {
|
|
667
667
|
preserveWhitespace: !0
|
|
668
668
|
}
|
|
669
|
-
}),
|
|
669
|
+
}), me(), ke.activate();
|
|
670
670
|
}), Tt(() => {
|
|
671
671
|
var r;
|
|
672
672
|
(r = t.value) == null || r.destroy();
|
|
673
673
|
}), It(g, () => {
|
|
674
|
-
y.value = !1,
|
|
674
|
+
y.value = !1, ke.deactivate();
|
|
675
675
|
});
|
|
676
676
|
const E = w({
|
|
677
677
|
get: () => e.modelValue,
|
|
678
678
|
set: (r) => {
|
|
679
679
|
o.emit("input", r), o.emit("update:modelValue", r);
|
|
680
680
|
}
|
|
681
|
-
}), Qe = w(() => e.toolbar.flat().indexOf("heading")), Xe = w(() => (r) => je[r]), Ye = w(() => (r) => Ke[r]), Ze = w(() => P.value && B.value.heading ? `format_h${P.value}` : "format_paragraph"),
|
|
682
|
-
const r =
|
|
683
|
-
let
|
|
681
|
+
}), Qe = w(() => e.toolbar.flat().indexOf("heading")), Xe = w(() => (r) => je[r]), Ye = w(() => (r) => Ke[r]), Ze = w(() => P.value && B.value.heading ? `format_h${P.value}` : "format_paragraph"), ye = w(() => e.toolbar.flat().length), de = w(() => {
|
|
682
|
+
const r = ce.value, u = e.toolbar.flat();
|
|
683
|
+
let c = new Set(u.slice(u.length - r, u.length));
|
|
684
684
|
return e.toolbar.forEach((h) => {
|
|
685
|
-
h.some((p) =>
|
|
686
|
-
}),
|
|
685
|
+
h.some((p) => c.has(p)) && h.forEach((p) => c.add(p));
|
|
686
|
+
}), c;
|
|
687
687
|
}), xe = () => {
|
|
688
|
-
var r,
|
|
689
|
-
|
|
690
|
-
}, _e = (r) =>
|
|
688
|
+
var r, u, c;
|
|
689
|
+
me(), y.value = !0, (r = t.value) == null || r.commands.focus(), P.value = ((c = (u = t.value) == null ? void 0 : u.getAttributes("heading")) == null ? void 0 : c.level) || 0;
|
|
690
|
+
}, _e = (r) => be.value ? !0 : gt(r) ? !r.some((c) => de.value.has(c)) : !de.value.has(r), et = (r) => {
|
|
691
691
|
var h, p, C, M;
|
|
692
|
-
const
|
|
693
|
-
(p = t.value) == null || p.commands.setContent(
|
|
694
|
-
}, tt = (r,
|
|
695
|
-
var
|
|
692
|
+
const c = r.target.value;
|
|
693
|
+
(p = t.value) == null || p.commands.setContent(ge((h = t.value) == null ? void 0 : h.schema, c)), I.value = pe((C = t.value) == null ? void 0 : C.schema, (M = t.value) == null ? void 0 : M.getJSON()), E.value = I.value;
|
|
694
|
+
}, tt = (r, u) => {
|
|
695
|
+
var c, h, p, C, M, j, K, Q, X, Y, Z, x, _, ee, te, oe, T;
|
|
696
696
|
switch (r) {
|
|
697
697
|
case "source":
|
|
698
|
-
|
|
699
|
-
var
|
|
700
|
-
return (
|
|
698
|
+
i.value = !i.value, ve.value = pe((c = t.value) == null ? void 0 : c.schema, (h = t.value) == null ? void 0 : h.getJSON()), (C = L.value) == null || C.style.setProperty("height", `${((p = s.value) == null ? void 0 : p.offsetHeight) || 88}px`), Ut(() => {
|
|
699
|
+
var F;
|
|
700
|
+
return (F = L.value) == null ? void 0 : F.focus();
|
|
701
701
|
});
|
|
702
702
|
break;
|
|
703
703
|
case "bulletList":
|
|
704
704
|
case "orderedList":
|
|
705
|
-
r === "bulletList" ? (M = t.value) == null || M.commands.toggleBulletList() : (
|
|
705
|
+
r === "bulletList" ? (M = t.value) == null || M.commands.toggleBulletList() : (j = t.value) == null || j.commands.toggleOrderedList();
|
|
706
706
|
break;
|
|
707
707
|
case "link":
|
|
708
708
|
if (t.value) {
|
|
709
|
-
const
|
|
710
|
-
d.value =
|
|
709
|
+
const F = ((K = t.value) == null ? void 0 : K.state.selection.$anchor.pos) || 0, { from: it, to: ut, empty: ct } = t.value.state.selection, fe = (Q = t.value.view.state.doc.nodeAt(F)) == null ? void 0 : Q.marks.filter((mt) => mt.type.name === "link"), dt = fe != null && fe.length && ((X = t.value.view.state.doc.nodeAt(F)) == null ? void 0 : X.text) || "";
|
|
710
|
+
d.value = ct ? dt : t.value.state.doc.textBetween(it, ut, " "), b.value = t.value.getAttributes("link").href || "";
|
|
711
711
|
}
|
|
712
|
-
|
|
712
|
+
H.value = !H.value;
|
|
713
713
|
break;
|
|
714
714
|
case "blockquote":
|
|
715
|
-
(
|
|
715
|
+
(Y = t.value) == null || Y.chain().toggleBlockquote().run();
|
|
716
716
|
break;
|
|
717
717
|
case "codeBlock":
|
|
718
|
-
B.value.codeBlock ? (
|
|
718
|
+
B.value.codeBlock ? (x = t.value) == null || x.commands.setNode("paragraph") : (Z = t.value) == null || Z.commands.setNode(r, { language: "javascript" });
|
|
719
719
|
break;
|
|
720
720
|
case "heading":
|
|
721
|
-
|
|
721
|
+
u ? (P.value = u, (ee = t.value) == null || ee.commands.toggleHeading({ level: u })) : ((_ = t.value) == null || _.commands.setParagraph(), P.value = 0);
|
|
722
722
|
break;
|
|
723
723
|
case "undo":
|
|
724
724
|
case "redo":
|
|
725
|
-
r === "undo" ? (
|
|
725
|
+
r === "undo" ? (te = t.value) == null || te.commands.undo() : (oe = t.value) == null || oe.commands.redo();
|
|
726
726
|
break;
|
|
727
727
|
case "file":
|
|
728
728
|
o.emit("file-upload");
|
|
729
729
|
break;
|
|
730
730
|
default:
|
|
731
|
-
(
|
|
731
|
+
(T = t.value) == null || T.chain().toggleMark(r).run();
|
|
732
732
|
break;
|
|
733
733
|
}
|
|
734
734
|
}, ot = async () => {
|
|
735
|
-
var p, C, M,
|
|
735
|
+
var p, C, M, j, K, Q, X, Y, Z, x, _, ee, te, oe;
|
|
736
736
|
b.value === "" && ((p = t.value) == null || p.chain().focus().extendMarkRange("link").unsetLink().run());
|
|
737
|
-
const r = (C = t.value) == null ? void 0 : C.state.selection.empty,
|
|
738
|
-
b.value && r && !h && ((
|
|
737
|
+
const r = (C = t.value) == null ? void 0 : C.state.selection.empty, u = ((M = t.value) == null ? void 0 : M.state.selection.$anchor.pos) || 0, c = (K = (j = t.value) == null ? void 0 : j.view.state.doc.nodeAt(u)) == null ? void 0 : K.marks.filter((T) => T.type.name === "link"), h = c != null && c.length ? (X = (Q = t.value) == null ? void 0 : Q.view.state.doc.nodeAt(u)) == null ? void 0 : X.text : "";
|
|
738
|
+
b.value && r && !h && ((Y = t.value) == null || Y.chain().focus().setMark("link", {
|
|
739
739
|
href: b.value,
|
|
740
740
|
target: "__blank"
|
|
741
|
-
}).command(({ tr:
|
|
742
|
-
const
|
|
743
|
-
return
|
|
744
|
-
}).run()), b.value && h === d.value && r && ((
|
|
741
|
+
}).command(({ tr: T }) => {
|
|
742
|
+
const F = d.value[d.value.length - 1] === " " ? d.value : `${d.value} `;
|
|
743
|
+
return T.insertText(F), !0;
|
|
744
|
+
}).run()), b.value && h === d.value && r && ((Z = t.value) == null || Z.chain().extendMarkRange("link").updateAttributes("link", {
|
|
745
745
|
href: b.value
|
|
746
|
-
}).run()), b.value && !r && ((
|
|
746
|
+
}).run()), b.value && !r && ((oe = t.value) == null || oe.chain().focus().insertContentAt({
|
|
747
|
+
from: (x = t.value) == null ? void 0 : x.state.selection.from,
|
|
748
|
+
to: (_ = t.value) == null ? void 0 : _.state.selection.to
|
|
749
|
+
}, d.value).setTextSelection({
|
|
750
|
+
from: (ee = t.value) == null ? void 0 : ee.state.selection.from,
|
|
751
|
+
to: ((te = t.value) == null ? void 0 : te.state.selection.from) + d.value.length
|
|
752
|
+
}).setMark("link", {
|
|
747
753
|
href: b.value,
|
|
748
754
|
target: "__blank"
|
|
749
|
-
}).run()), d.value = "", b.value = "",
|
|
755
|
+
}).run()), d.value = "", b.value = "", H.value = !1;
|
|
750
756
|
}, rt = () => {
|
|
751
|
-
|
|
752
|
-
},
|
|
753
|
-
e.toolbar.flat().forEach((
|
|
754
|
-
var
|
|
755
|
-
|
|
757
|
+
H.value = !1;
|
|
758
|
+
}, me = () => {
|
|
759
|
+
e.toolbar.flat().forEach((u) => {
|
|
760
|
+
var c;
|
|
761
|
+
u === "source" ? B.value[u] = i.value : B.value[u] = ((c = t.value) == null ? void 0 : c.isActive(u)) || !1;
|
|
756
762
|
});
|
|
757
763
|
};
|
|
758
764
|
Dt([
|
|
@@ -761,10 +767,10 @@ const Ho = Ft({
|
|
|
761
767
|
() => e.disabled
|
|
762
768
|
], ([
|
|
763
769
|
r,
|
|
764
|
-
|
|
765
|
-
|
|
770
|
+
u,
|
|
771
|
+
c
|
|
766
772
|
]) => {
|
|
767
|
-
|
|
773
|
+
u !== (r == null ? void 0 : r.getHTML()) && e.format !== "markdown" && (r == null || r.commands.setContent(u)), u !== I.value && e.format === "markdown" && (r == null || r.commands.setContent(ge(r == null ? void 0 : r.schema, u))), r == null || r.setEditable(!c);
|
|
768
774
|
});
|
|
769
775
|
const nt = w(() => [
|
|
770
776
|
"or-rich-text-editor-v3",
|
|
@@ -783,15 +789,15 @@ const Ho = Ft({
|
|
|
783
789
|
toolbarRef: l,
|
|
784
790
|
toolbarStyles: at,
|
|
785
791
|
toolbarGroupStyles: lt,
|
|
786
|
-
controlRef:
|
|
792
|
+
controlRef: s,
|
|
787
793
|
controlStyles: st,
|
|
788
794
|
editor: t,
|
|
789
795
|
containerRef: k,
|
|
790
|
-
toolbarButtonRef:
|
|
791
|
-
moreButtonRef:
|
|
796
|
+
toolbarButtonRef: G,
|
|
797
|
+
moreButtonRef: U,
|
|
792
798
|
textareaRef: L,
|
|
793
|
-
morePopoverRef:
|
|
794
|
-
menuRef:
|
|
799
|
+
morePopoverRef: W,
|
|
800
|
+
menuRef: J,
|
|
795
801
|
handleToolbarClick: tt,
|
|
796
802
|
handleEditorClick: xe,
|
|
797
803
|
isActive: B,
|
|
@@ -802,74 +808,74 @@ const Ho = Ft({
|
|
|
802
808
|
headingIcon: Ze,
|
|
803
809
|
attachLink: ot,
|
|
804
810
|
discardLink: rt,
|
|
805
|
-
isOpenLinkModal:
|
|
811
|
+
isOpenLinkModal: H,
|
|
806
812
|
text: d,
|
|
807
813
|
link: b,
|
|
808
814
|
isFocused: y,
|
|
809
815
|
isVisible: _e,
|
|
810
|
-
isMobile:
|
|
811
|
-
countOfNotVisibleTools:
|
|
812
|
-
notVisibleTools:
|
|
816
|
+
isMobile: be,
|
|
817
|
+
countOfNotVisibleTools: ce,
|
|
818
|
+
notVisibleTools: de,
|
|
813
819
|
handleInput: et,
|
|
814
820
|
model: E,
|
|
815
|
-
disableMarkdown:
|
|
816
|
-
sourceValue:
|
|
821
|
+
disableMarkdown: i,
|
|
822
|
+
sourceValue: ve,
|
|
817
823
|
activeHeadingLevel: P
|
|
818
824
|
};
|
|
819
825
|
}
|
|
820
826
|
}), Ro = ["disabled"], No = ["disabled"], Vo = {
|
|
821
|
-
class: /* @__PURE__ */
|
|
827
|
+
class: /* @__PURE__ */ N(["p-sm", "overflow-auto", "min-h-[88px]", "h-full"])
|
|
822
828
|
}, $o = ["activated"], Io = { class: "flex p-sm gap-md" }, Eo = {
|
|
823
|
-
class: /* @__PURE__ */
|
|
829
|
+
class: /* @__PURE__ */ N(["layout-column", "gap-md"])
|
|
824
830
|
}, Fo = {
|
|
825
|
-
class: /* @__PURE__ */
|
|
831
|
+
class: /* @__PURE__ */ N(["layout-row-reverse", "gap-md"])
|
|
826
832
|
};
|
|
827
|
-
function qo(e, o, t,
|
|
828
|
-
const L = O("OrLabel"), k = O("OrIconButton"),
|
|
829
|
-
return f(),
|
|
833
|
+
function qo(e, o, t, s, l, g) {
|
|
834
|
+
const L = O("OrLabel"), k = O("OrIconButton"), U = O("OrInputBox"), W = O("OrHint"), G = O("OrError"), J = O("OrPopover"), B = O("OrMenuItem"), y = O("OrMenu"), A = O("OrInput"), P = O("OrButton"), I = O("OrModal");
|
|
835
|
+
return f(), q("div", {
|
|
830
836
|
ref: "root",
|
|
831
|
-
class:
|
|
837
|
+
class: N(e.rootStyles)
|
|
832
838
|
}, [
|
|
833
|
-
e.$slots.label || e.$slots.addon || e.label ? (f(),
|
|
839
|
+
e.$slots.label || e.$slots.addon || e.label ? (f(), R(L, {
|
|
834
840
|
key: 0,
|
|
835
841
|
variant: "input",
|
|
836
842
|
required: e.required,
|
|
837
843
|
disabled: e.disabled
|
|
838
844
|
}, {
|
|
839
845
|
addon: v(() => [
|
|
840
|
-
|
|
846
|
+
re(e.$slots, "addon", {}, void 0, !0)
|
|
841
847
|
]),
|
|
842
848
|
default: v(() => [
|
|
843
|
-
|
|
844
|
-
V(
|
|
849
|
+
re(e.$slots, "label", {}, () => [
|
|
850
|
+
V(ne(e.label), 1)
|
|
845
851
|
], !0)
|
|
846
852
|
]),
|
|
847
853
|
_: 3
|
|
848
|
-
}, 8, ["required", "disabled"])) :
|
|
849
|
-
$(
|
|
854
|
+
}, 8, ["required", "disabled"])) : D("", !0),
|
|
855
|
+
$(U, {
|
|
850
856
|
ref: "containerRef",
|
|
851
857
|
class: "grow",
|
|
852
858
|
direction: "column",
|
|
853
859
|
invalid: !!e.error,
|
|
854
860
|
disabled: e.disabled,
|
|
855
|
-
onClick: o[4] || (o[4] = (
|
|
861
|
+
onClick: o[4] || (o[4] = (i) => e.handleEditorClick())
|
|
856
862
|
}, {
|
|
857
863
|
default: v(() => [
|
|
858
|
-
|
|
864
|
+
z("div", {
|
|
859
865
|
ref: "toolbarRef",
|
|
860
|
-
class:
|
|
866
|
+
class: N(e.toolbarStyles),
|
|
861
867
|
disabled: e.disabled || !e.isFocused
|
|
862
868
|
}, [
|
|
863
|
-
(f(!0),
|
|
864
|
-
key:
|
|
865
|
-
class:
|
|
869
|
+
(f(!0), q(ae, null, le(e.toolbar, (i, H) => (f(), q("div", {
|
|
870
|
+
key: H,
|
|
871
|
+
class: N([...e.toolbarGroupStyles, { hidden: !e.isVisible(i) }]),
|
|
866
872
|
disabled: e.disabled || !e.isFocused
|
|
867
873
|
}, [
|
|
868
|
-
(f(!0),
|
|
874
|
+
(f(!0), q(ae, null, le(i, (d) => (f(), q("div", {
|
|
869
875
|
key: d,
|
|
870
|
-
class:
|
|
876
|
+
class: N(["flex gap-md", { hidden: !e.isVisible(d) }])
|
|
871
877
|
}, [
|
|
872
|
-
d === "heading" ? (f(),
|
|
878
|
+
d === "heading" ? (f(), R(k, {
|
|
873
879
|
key: 0,
|
|
874
880
|
ref_for: !0,
|
|
875
881
|
ref: "toolbarButtonRef",
|
|
@@ -878,108 +884,108 @@ function qo(e, o, t, i, l, g) {
|
|
|
878
884
|
selected: e.isActive[d],
|
|
879
885
|
disabled: e.disabled || !e.isFocused,
|
|
880
886
|
onClick: o[0] || (o[0] = (b) => e.menuRef && e.menuRef.toggle())
|
|
881
|
-
}, null, 8, ["icon", "tooltip", "selected", "disabled"])) : e.isVisible(d) ? (f(),
|
|
887
|
+
}, null, 8, ["icon", "tooltip", "selected", "disabled"])) : e.isVisible(d) ? (f(), R(k, {
|
|
882
888
|
key: 1,
|
|
883
889
|
icon: { icon: e.getRichTextEditorIcon(d), variant: "inherit" },
|
|
884
890
|
tooltip: { content: e.getRichTextEditorTooltipIcon(d), placement: "top" },
|
|
885
891
|
selected: e.isActive[d],
|
|
886
892
|
disabled: e.disabled || !e.isFocused,
|
|
887
893
|
onClick: (b) => e.handleToolbarClick(d)
|
|
888
|
-
}, null, 8, ["icon", "tooltip", "selected", "disabled", "onClick"])) :
|
|
894
|
+
}, null, 8, ["icon", "tooltip", "selected", "disabled", "onClick"])) : D("", !0)
|
|
889
895
|
], 2))), 128))
|
|
890
896
|
], 10, No))), 128)),
|
|
891
|
-
e.countOfNotVisibleTools > 0 && !e.isMobile ? (f(),
|
|
897
|
+
e.countOfNotVisibleTools > 0 && !e.isMobile ? (f(), R(k, {
|
|
892
898
|
key: 0,
|
|
893
899
|
ref: "moreButtonRef",
|
|
894
|
-
class:
|
|
900
|
+
class: N(["mx-sm"]),
|
|
895
901
|
icon: { icon: "more_horiz", variant: "inherit" },
|
|
896
902
|
disabled: e.disabled || !e.isFocused,
|
|
897
903
|
"force-state": e.morePopoverRef && e.morePopoverRef.state === "open" ? "hover" : void 0,
|
|
898
|
-
onClick: o[1] || (o[1] = (
|
|
899
|
-
}, null, 8, ["disabled", "force-state"])) :
|
|
904
|
+
onClick: o[1] || (o[1] = (i) => e.morePopoverRef && e.morePopoverRef.open())
|
|
905
|
+
}, null, 8, ["disabled", "force-state"])) : D("", !0)
|
|
900
906
|
], 10, Ro),
|
|
901
|
-
|
|
902
|
-
|
|
907
|
+
z("div", Vo, [
|
|
908
|
+
se(z("textarea", {
|
|
903
909
|
ref: "textareaRef",
|
|
904
|
-
"onUpdate:modelValue": o[2] || (o[2] = (
|
|
910
|
+
"onUpdate:modelValue": o[2] || (o[2] = (i) => e.sourceValue = i),
|
|
905
911
|
activated: e.disableMarkdown,
|
|
906
912
|
class: "block w-full h-full resize-none border-none outline-none bg-transparent typography-body-2-regular",
|
|
907
|
-
onInput: o[3] || (o[3] = (...
|
|
913
|
+
onInput: o[3] || (o[3] = (...i) => e.handleInput && e.handleInput(...i))
|
|
908
914
|
}, null, 40, $o), [
|
|
909
|
-
[
|
|
915
|
+
[ie, e.disableMarkdown],
|
|
910
916
|
[Wt, e.sourceValue]
|
|
911
917
|
]),
|
|
912
|
-
|
|
918
|
+
se(z("div", {
|
|
913
919
|
ref: "controlRef",
|
|
914
|
-
class:
|
|
920
|
+
class: N(e.controlStyles)
|
|
915
921
|
}, null, 2), [
|
|
916
|
-
[
|
|
922
|
+
[ie, !e.disableMarkdown]
|
|
917
923
|
]),
|
|
918
|
-
|
|
924
|
+
re(e.$slots, "files", {}, void 0, !0)
|
|
919
925
|
])
|
|
920
926
|
]),
|
|
921
927
|
_: 3
|
|
922
928
|
}, 8, ["invalid", "disabled"]),
|
|
923
|
-
e.$slots.hint || e.hint ?
|
|
929
|
+
e.$slots.hint || e.hint ? se((f(), R(W, {
|
|
924
930
|
key: 1,
|
|
925
931
|
disabled: e.disabled
|
|
926
932
|
}, {
|
|
927
933
|
default: v(() => [
|
|
928
|
-
|
|
929
|
-
V(
|
|
934
|
+
re(e.$slots, "hint", {}, () => [
|
|
935
|
+
V(ne(e.hint), 1)
|
|
930
936
|
], !0)
|
|
931
937
|
]),
|
|
932
938
|
_: 3
|
|
933
939
|
}, 8, ["disabled"])), [
|
|
934
|
-
[
|
|
935
|
-
]) :
|
|
936
|
-
|
|
940
|
+
[ie, !e.error]
|
|
941
|
+
]) : D("", !0),
|
|
942
|
+
se($(G, { disabled: e.disabled }, {
|
|
937
943
|
default: v(() => [
|
|
938
|
-
V(
|
|
944
|
+
V(ne(e.error), 1)
|
|
939
945
|
]),
|
|
940
946
|
_: 1
|
|
941
947
|
}, 8, ["disabled"]), [
|
|
942
|
-
[
|
|
948
|
+
[ie, typeof e.error == "string" && e.error.length > 0]
|
|
943
949
|
]),
|
|
944
|
-
e.moreButtonRef ? (f(),
|
|
950
|
+
e.moreButtonRef ? (f(), R(J, {
|
|
945
951
|
key: 2,
|
|
946
952
|
ref: "morePopoverRef",
|
|
947
953
|
trigger: e.moreButtonRef && e.moreButtonRef.root,
|
|
948
954
|
placement: "top-end"
|
|
949
955
|
}, {
|
|
950
956
|
default: v(() => [
|
|
951
|
-
|
|
952
|
-
(f(!0),
|
|
953
|
-
key:
|
|
954
|
-
icon: { icon: e.getRichTextEditorIcon(
|
|
955
|
-
tooltip: { content: e.getRichTextEditorTooltipIcon(
|
|
956
|
-
selected: e.isActive[
|
|
957
|
-
onClick: (
|
|
957
|
+
z("div", Io, [
|
|
958
|
+
(f(!0), q(ae, null, le(e.notVisibleTools, (i) => (f(), R(k, {
|
|
959
|
+
key: i,
|
|
960
|
+
icon: { icon: e.getRichTextEditorIcon(i), variant: "inherit" },
|
|
961
|
+
tooltip: { content: e.getRichTextEditorTooltipIcon(i), placement: "top" },
|
|
962
|
+
selected: e.isActive[i],
|
|
963
|
+
onClick: (H) => e.handleToolbarClick(i)
|
|
958
964
|
}, null, 8, ["icon", "tooltip", "selected", "onClick"]))), 128))
|
|
959
965
|
])
|
|
960
966
|
]),
|
|
961
967
|
_: 1
|
|
962
|
-
}, 8, ["trigger"])) :
|
|
963
|
-
e.toolbarButtonRef ? (f(),
|
|
968
|
+
}, 8, ["trigger"])) : D("", !0),
|
|
969
|
+
e.toolbarButtonRef ? (f(), R(y, {
|
|
964
970
|
key: 3,
|
|
965
971
|
ref: "menuRef",
|
|
966
972
|
trigger: e.toolbarButtonRef[e.getIndexOfHeading] && e.toolbarButtonRef[e.getIndexOfHeading].root,
|
|
967
973
|
placement: "bottom-start"
|
|
968
974
|
}, {
|
|
969
975
|
default: v(() => [
|
|
970
|
-
(f(!0),
|
|
971
|
-
key:
|
|
972
|
-
selected: e.activeHeadingLevel ===
|
|
973
|
-
onClick: (
|
|
976
|
+
(f(!0), q(ae, null, le(e.headingLevels, (i) => (f(), R(B, {
|
|
977
|
+
key: i,
|
|
978
|
+
selected: e.activeHeadingLevel === i,
|
|
979
|
+
onClick: (H) => e.handleToolbarClick("heading", i)
|
|
974
980
|
}, {
|
|
975
981
|
default: v(() => [
|
|
976
|
-
V(" Heading " +
|
|
982
|
+
V(" Heading " + ne(i), 1)
|
|
977
983
|
]),
|
|
978
984
|
_: 2
|
|
979
985
|
}, 1032, ["selected", "onClick"]))), 128)),
|
|
980
986
|
$(B, {
|
|
981
987
|
selected: !e.activeHeadingLevel,
|
|
982
|
-
onClick: o[5] || (o[5] = (
|
|
988
|
+
onClick: o[5] || (o[5] = (i) => e.handleToolbarClick("heading"))
|
|
983
989
|
}, {
|
|
984
990
|
default: v(() => [
|
|
985
991
|
V(" None ")
|
|
@@ -988,7 +994,7 @@ function qo(e, o, t, i, l, g) {
|
|
|
988
994
|
}, 8, ["selected"])
|
|
989
995
|
]),
|
|
990
996
|
_: 1
|
|
991
|
-
}, 8, ["trigger"])) :
|
|
997
|
+
}, 8, ["trigger"])) : D("", !0),
|
|
992
998
|
$(I, {
|
|
993
999
|
"is-open": e.isOpenLinkModal,
|
|
994
1000
|
size: "s"
|
|
@@ -997,10 +1003,10 @@ function qo(e, o, t, i, l, g) {
|
|
|
997
1003
|
V(" Add Link ")
|
|
998
1004
|
]),
|
|
999
1005
|
footer: v(() => [
|
|
1000
|
-
|
|
1006
|
+
z("div", Fo, [
|
|
1001
1007
|
$(P, {
|
|
1002
1008
|
variant: "contained",
|
|
1003
|
-
onClick: o[8] || (o[8] = (
|
|
1009
|
+
onClick: o[8] || (o[8] = (i) => e.attachLink())
|
|
1004
1010
|
}, {
|
|
1005
1011
|
default: v(() => [
|
|
1006
1012
|
V(" Save ")
|
|
@@ -1009,7 +1015,7 @@ function qo(e, o, t, i, l, g) {
|
|
|
1009
1015
|
}),
|
|
1010
1016
|
$(P, {
|
|
1011
1017
|
variant: "outlined",
|
|
1012
|
-
onClick: o[9] || (o[9] = (
|
|
1018
|
+
onClick: o[9] || (o[9] = (i) => e.discardLink())
|
|
1013
1019
|
}, {
|
|
1014
1020
|
default: v(() => [
|
|
1015
1021
|
V(" Cancel ")
|
|
@@ -1019,16 +1025,16 @@ function qo(e, o, t, i, l, g) {
|
|
|
1019
1025
|
])
|
|
1020
1026
|
]),
|
|
1021
1027
|
default: v(() => [
|
|
1022
|
-
|
|
1028
|
+
z("div", Eo, [
|
|
1023
1029
|
$(A, {
|
|
1024
1030
|
modelValue: e.text,
|
|
1025
|
-
"onUpdate:modelValue": o[6] || (o[6] = (
|
|
1031
|
+
"onUpdate:modelValue": o[6] || (o[6] = (i) => e.text = i),
|
|
1026
1032
|
label: "Text",
|
|
1027
1033
|
placeholder: "Enter text"
|
|
1028
1034
|
}, null, 8, ["modelValue"]),
|
|
1029
1035
|
$(A, {
|
|
1030
1036
|
modelValue: e.link,
|
|
1031
|
-
"onUpdate:modelValue": o[7] || (o[7] = (
|
|
1037
|
+
"onUpdate:modelValue": o[7] || (o[7] = (i) => e.link = i),
|
|
1032
1038
|
label: "Link",
|
|
1033
1039
|
placeholder: "Enter link"
|
|
1034
1040
|
}, null, 8, ["modelValue"])
|
|
@@ -1038,11 +1044,11 @@ function qo(e, o, t, i, l, g) {
|
|
|
1038
1044
|
}, 8, ["is-open"])
|
|
1039
1045
|
], 2);
|
|
1040
1046
|
}
|
|
1041
|
-
const Rr = /* @__PURE__ */ mo(Ho, [["render", qo], ["__scopeId", "data-v-
|
|
1047
|
+
const Rr = /* @__PURE__ */ mo(Ho, [["render", qo], ["__scopeId", "data-v-538f3986"]]);
|
|
1042
1048
|
export {
|
|
1043
1049
|
Je as F,
|
|
1044
1050
|
Rr as O,
|
|
1045
1051
|
je as R,
|
|
1046
1052
|
Ke as a
|
|
1047
1053
|
};
|
|
1048
|
-
//# sourceMappingURL=OrRichTextEditor-
|
|
1054
|
+
//# sourceMappingURL=OrRichTextEditor-DJTBMYpL.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"OrRichTextEditor-DJTBMYpL.mjs","sources":["../../../components/or-rich-text-editor-v3/src/props.ts","../../../components/or-rich-text-editor-v3/src/styles.ts","../../../components/or-rich-text-editor-v3/src/utils/codemirror/theme.ts","../../../components/or-rich-text-editor-v3/src/utils/codemirror/codemirrorView.ts","../../../components/or-rich-text-editor-v3/src/utils/codemirror/codemirrorNode.ts","../../../components/or-rich-text-editor-v3/src/utils/markdown.ts","../../../components/or-rich-text-editor-v3/src/OrRichTextEditor.vue"],"sourcesContent":["export enum Formats {\n Markdown = 'markdown',\n Markup = 'markup',\n}\n\nexport type Tools = string[][]; // TODO: Improve this type\n\nexport enum RichTextEditorIcons {\n bold = 'format_bold',\n italic = 'format_italic',\n underline = 'format_underlined',\n strike = 'format_strikethrough',\n bulletList = 'format_list_bulleted',\n orderedList = 'format_list_numbered',\n link = 'link',\n highlight = 'highlight',\n redo = 'redo',\n undo = 'undo',\n codeBlock = 'code_blocks',\n blockquote = 'format_quote',\n file = 'attach_file',\n source = 'source_notes',\n}\n\nexport enum RichTextEditorTooltips {\n bold = 'Bold',\n italic = 'Italic',\n underline = 'Underline',\n strike = 'Strike',\n bulletList = 'Bulleted List',\n orderedList = 'Numbered List',\n link = 'Link',\n highlight = 'Highlight',\n redo = 'Redo',\n undo = 'Undo',\n codeBlock = 'Code Block',\n blockquote = 'Quote',\n file = 'File',\n source = 'Source',\n}\n","export const RichTextEditor: string[] = [\n // Layout\n 'layout-column',\n\n // Spacing\n 'gap-xs',\n\n // Box\n 'max-h-full',\n];\n\nexport const RichTextEditorToolbar: string[] = [\n // Layout\n 'layout-row',\n\n // Overflow\n 'overflow-x-scroll md:overflow-x-hidden',\n 'scrollbar-hidden',\n\n // Spacing\n 'px-0',\n 'py-sm',\n\n // Theme\n 'border-b-1',\n\n 'theme-border-outline',\n 'dark:theme-border-outline-dark',\n];\n\nexport const RichTextEditorToolbarGroup: string[] = [\n // Layout\n 'layout-row',\n\n // Spacing\n 'px-sm',\n 'py-0',\n\n 'gap-md',\n\n // Theme\n 'theme-foreground-outline',\n 'dark:theme-foreground-outline-dark',\n\n 'border-e-1 last:border-e-0',\n\n 'theme-border-outline',\n 'dark:theme-border-outline-dark',\n];\n\nexport const RichTextEditorControl: string[] = [\n // Typography\n 'typography-body-2-regular',\n\n // Size\n 'h-full',\n];\n","import { EditorView } from '@codemirror/view';\nimport { HighlightStyle, syntaxHighlighting } from '@codemirror/language';\nimport { tags as t } from '@lezer/highlight';\n\n// Using https://github.com/one-dark/vscode-one-dark-theme/ as reference for the colors\n\nimport { useTheme } from '@onereach/ui-components-common/hooks';\n\nconst themes = useTheme();\n\nconst chalky = themes?.backgroundColor['custom-colors-custom-6'],\n coral = themes?.backgroundColor['custom-colors-custom-1'],\n cyan = themes?.backgroundColor['custom-colors-custom-3'],\n invalid = themes?.backgroundColor?.white,\n ivory = themes?.backgroundColor['custom-colors-custom-6'],\n stone = themes?.backgroundColor['custom-colors-custom-5'], // Brightened compared to original to increase contrast\n malibu = themes?.backgroundColor['custom-colors-custom-3'],\n sage = themes?.backgroundColor.success,\n whiskey = themes?.backgroundColor.warning,\n violet = themes?.backgroundColor['custom-colors-custom-1'];\n // darkBackground = themes?.colors?.neutral?.[100],\n // highlightBackground = themes?.colors?.neutral?.[200],\n // background = themes?.colors?.neutral?.[100],\n // tooltipBackground = themes?.colors?.neutral?.[200],\n // selection = themes?.colors?.blue?.[100],\n // cursor = themes?.colors?.blue?.[700];\n\n/// The colors used in the theme, as CSS color strings.\nexport const color = {\n chalky,\n coral,\n cyan,\n invalid,\n ivory,\n stone,\n malibu,\n sage,\n whiskey,\n violet,\n // darkBackground,\n // highlightBackground,\n // background,\n // tooltipBackground,\n // selection,\n // cursor,\n};\n\n/// The editor theme styles for One Dark.\nexport const orCodeTheme = EditorView.theme({\n '&': {\n color: ivory,\n backgroundColor: themes?.backgroundColor?.['bg-primary-container'],\n },\n\n '.cm-editor': {\n border: 'none',\n borderRadius: themes?.spacing?.xs,\n },\n\n '&.cm-focused': {\n outline: 'none',\n },\n\n '.cm-scroller': {\n borderRadius: themes?.spacing?.xs,\n },\n\n '.cm-content': {\n // caretColor: cursor,\n },\n\n '.cm-button': {\n // background: highlightBackground,\n // color: themes?.colors?.neutral?.[600],\n border: 0,\n borderRadius: themes?.spacing?.xs,\n },\n\n '.cm-panel.cm-search input[type=checkbox]': {\n display: 'inline-block',\n verticalAlign: 'middle',\n },\n\n // '.cm-cursor, .cm-dropCursor': { borderLeftColor: cursor },\n '&.cm-focused .cm-selectionBackground, .cm-selectionBackground, .cm-content ::selection': {\n // backgroundColor: selection,\n },\n\n '.cm-panels': {\n // backgroundColor: darkBackground,\n color: ivory,\n },\n // '.cm-panels.cm-panels-top': { borderBottom: `2px solid ${themes?.colors?.neutral?.[200]}` },\n // '.cm-panels.cm-panels-bottom': { borderTop: `2px solid ${themes?.colors?.neutral?.[200]}` },\n\n '.cm-searchMatch': {\n // backgroundColor: themes?.colors?.neutral?.[100],\n // outline: `1px solid ${themes?.colors?.neutral?.[200]}`,\n },\n\n '.cm-searchMatch.cm-searchMatch-selected': {\n // backgroundColor: themes?.colors?.sky?.[100],\n },\n\n '.cm-activeLine': {\n backgroundColor: themes?.backgroundColor?.['bg-secondary-container'],\n },\n\n // '.cm-selectionMatch': { backgroundColor: themes?.colors?.lime?.[500] },\n\n '&.cm-focused .cm-matchingBracket, &.cm-focused .cm-nonmatchingBracket': {\n // backgroundColor: themes?.colors?.lime?.[600],\n },\n\n '.cm-gutters': {\n backgroundColor: themes?.backgroundColor?.['primary-opacity-0-12'],\n color: stone,\n border: 'none',\n },\n\n '.cm-lineNumbers .cm-gutterElement': {\n paddingLeft: themes?.spacing?.['sm+*'],\n paddingRight: themes?.spacing?.['sm+*'],\n },\n\n '.cm-activeLineGutter': {\n backgroundColor: themes?.backgroundColor?.['primary-opacity-0-16'],\n },\n\n '.cm-foldPlaceholder': {\n backgroundColor: 'transparent',\n border: 'none',\n // color: themes?.colors?.neutral?.[200],\n },\n\n '.cm-tooltip': {\n border: 'none',\n // backgroundColor: tooltipBackground,\n },\n '.cm-tooltip .cm-tooltip-arrow:before': {\n borderTopColor: 'transparent',\n borderBottomColor: 'transparent',\n },\n '.cm-tooltip .cm-tooltip-arrow:after': {\n // borderTopColor: tooltipBackground,\n // borderBottomColor: tooltipBackground,\n },\n '.cm-tooltip-autocomplete': {\n '& > ul > li[aria-selected]': {\n // backgroundColor: highlightBackground,\n color: ivory,\n },\n },\n '.cm-textfield': {\n outline: 'none',\n // background: background,\n // color: themes?.colors?.neutral?.[600],\n // backgroundColor: themes?.colors?.neutral?.[100],\n // border: `1px solid ${themes?.colors?.neutral?.[200]}`,\n borderRadius: themes?.spacing?.xs,\n },\n}, { dark: true });\n\n/// The highlighting style for code in the One Dark theme.\nexport const orCodeHighlightStyle = HighlightStyle.define([\n {\n tag: t.keyword,\n color: violet,\n },\n {\n tag: [t.name, t.deleted, t.character, t.propertyName, t.macroName],\n color: coral,\n },\n {\n tag: [t.function(t.variableName), t.labelName],\n color: malibu,\n },\n {\n tag: [t.color, t.constant(t.name), t.standard(t.name)],\n color: whiskey,\n },\n {\n tag: [t.definition(t.name), t.separator],\n color: ivory,\n },\n {\n tag: [t.typeName, t.className, t.number, t.changed, t.annotation, t.modifier, t.self, t.namespace],\n color: chalky,\n },\n {\n tag: [t.operator, t.operatorKeyword, t.url, t.escape, t.regexp, t.link, t.special(t.string)],\n color: cyan,\n },\n {\n tag: [t.meta, t.comment],\n color: stone,\n },\n {\n tag: t.strong,\n fontWeight: 'bold',\n },\n {\n tag: t.emphasis,\n fontStyle: 'italic',\n },\n {\n tag: t.strikethrough,\n textDecoration: 'line-through',\n },\n {\n tag: t.link,\n color: stone,\n textDecoration: 'underline',\n },\n {\n tag: t.heading,\n fontWeight: 'bold',\n color: coral,\n },\n {\n tag: [t.atom, t.bool, t.special(t.variableName)],\n color: whiskey,\n },\n {\n tag: [t.processingInstruction, t.string, t.inserted],\n color: sage,\n },\n {\n tag: t.invalid,\n color: invalid,\n },\n]);\n\n/// Extension to enable the One Dark theme (both the editor theme and\n/// the highlight style).\nconst theme = [orCodeTheme, syntaxHighlighting(orCodeHighlightStyle)];\n\nexport default theme;\n","import { Selection, TextSelection } from 'prosemirror-state';\nimport { EditorView, NodeView } from 'prosemirror-view';\nimport { Node as ProsemirrorNode } from 'prosemirror-model';\nimport { exitCode } from 'prosemirror-commands';\nimport { EditorState as CMState, Transaction as CMTransaction, Extension } from '@codemirror/state';\nimport {\n Command,\n EditorView as CMView,\n keymap,\n highlightActiveLine,\n highlightActiveLineGutter,\n lineNumbers,\n} from '@codemirror/view';\nimport orCodeTheme from './theme';\n\nimport { ComputeChange, CodeMirrorViewOptions } from './types';\n\nconst computeChange = (oldVal: string, newVal: string): ComputeChange | null => {\n if (oldVal === newVal) {\n return null;\n }\n\n let start = 0;\n let oldEnd = oldVal.length;\n let newEnd = newVal.length;\n\n while (start < oldEnd && oldVal.charCodeAt(start) === newVal.charCodeAt(start)) {\n start += 1;\n }\n\n while (oldEnd > start && newEnd > start && oldVal.charCodeAt(oldEnd - 1) === newVal.charCodeAt(newEnd - 1)) {\n oldEnd -= 1;\n newEnd -= 1;\n }\n\n return {\n from: start,\n to: oldEnd,\n text: newVal.slice(start, newEnd),\n };\n};\n\nclass CodeMirrorView implements NodeView {\n name: string;\n\n node: ProsemirrorNode;\n\n view: EditorView;\n\n dom: HTMLElement;\n\n cm: CMView;\n\n getPos: () => number;\n\n updating = false;\n\n constructor(options: CodeMirrorViewOptions) {\n // Store for later\n this.node = options.node;\n this.view = options.view;\n const cmExtensions = options.cmOptions?.extensions || [];\n this.name = 'codeBlock',\n\n this.getPos = options.getPos as () => number;\n\n const changeFilter = CMState.changeFilter.of((tr) => {\n if (!tr.docChanged && !this.updating) {\n this.forwardSelection();\n }\n return true;\n });\n\n // Create a CodeMirror instancew\n this.cm = new CMView({\n dispatch: this.dispatch.bind(this),\n });\n\n // The editor's outer node is our DOM representation\n this.dom = this.cm.dom;\n\n const cmState = CMState.create({\n doc: this.node.textContent,\n extensions: [\n orCodeTheme as Extension,\n changeFilter,\n highlightActiveLine(),\n highlightActiveLineGutter(),\n lineNumbers(),\n keymap.of([\n {\n key: 'ArrowUp',\n run: this.mayBeEscape('line', -1),\n },\n {\n key: 'ArrowLeft',\n run: this.mayBeEscape('char', -1),\n },\n {\n key: 'ArrowDown',\n run: this.mayBeEscape('line', 1),\n },\n {\n key: 'ArrowRight',\n run: this.mayBeEscape('char', 1),\n },\n {\n key: 'Ctrl-Enter',\n run: () => {\n if (exitCode(this.view.state, this.view.dispatch)) {\n this.view.focus();\n return true;\n }\n return false;\n },\n },\n ]),\n cmExtensions,\n ],\n });\n\n this.cm.setState(cmState);\n }\n\n forwardSelection() {\n if (!this.cm.hasFocus) {\n return;\n }\n\n const { state } = this.view;\n const selection = this.asProseMirrorSelection(state.doc);\n\n if (!selection.eq(state.selection)) {\n this.view.dispatch(state.tr.setSelection(selection));\n }\n }\n\n asProseMirrorSelection(doc: ProsemirrorNode) {\n const offset = this.getPos() + 1;\n const { anchor, head } = this.cm.state.selection.main;\n return TextSelection.create(doc, anchor + offset, head + offset);\n }\n\n dispatch(cmTr: CMTransaction) {\n this.cm.setState(cmTr.state);\n\n if (cmTr.docChanged && !this.updating) {\n const start = this.getPos() + 1;\n\n const cmValue = cmTr.state.doc.toString();\n const change = computeChange(this.node.textContent, cmValue);\n\n if (!change) {\n return;\n }\n\n const content = change.text ? this.view.state.schema.text(change.text) : null;\n\n const tr = this.view.state.tr.replaceWith(change.from + start, change.to + start, content as ProsemirrorNode);\n this.view.dispatch(tr);\n this.forwardSelection();\n }\n }\n\n mayBeEscape(unit: 'char' | 'line', dir: -1 | 1): Command {\n return (view) => {\n const { state } = view;\n const { selection } = state;\n\n const offsetToPos = () => {\n const offset = selection.main.from;\n const line = state.doc.lineAt(offset);\n return {\n line: line.number,\n ch: offset - line.from,\n };\n };\n\n const pos = offsetToPos();\n const hasSelection = state.selection.ranges.some((r) => !r.empty);\n\n const firstLine = 1;\n const lastLine = state.doc.lineAt(state.doc.length).number;\n\n if (\n hasSelection\n || pos.line !== (dir < 0 ? firstLine : lastLine)\n || (unit === 'char' && pos.ch !== (dir < 0 ? 0 : state.doc.line(pos.line).length))\n ) {\n return false;\n }\n\n const targetPos = this.getPos() + (dir < 0 ? 0 : this.node.nodeSize);\n const pmSelection = Selection.near(this.view.state.doc.resolve(targetPos), dir);\n this.view.dispatch(this.view.state.tr.setSelection(pmSelection).scrollIntoView());\n this.view.focus();\n return true;\n };\n }\n\n update(node: ProsemirrorNode) {\n if (node.type !== this.node.type) {\n return false;\n }\n\n this.node = node;\n const change = computeChange(this.cm.state.doc.toString(), node.textContent);\n\n if (change) {\n this.updating = true;\n this.cm.dispatch({\n changes: {\n from: change.from,\n to: change.to,\n insert: change.text,\n },\n });\n this.updating = false;\n }\n\n return true;\n }\n\n setSelection(anchor: number, head: number): void {\n this.focus();\n this.updating = true;\n this.cm.dispatch({\n selection: {\n anchor,\n head,\n },\n });\n this.updating = false;\n }\n\n focus() {\n this.cm.focus();\n this.forwardSelection();\n }\n\n selectNode() {\n this.focus();\n }\n\n stopEvent() {\n return true;\n }\n\n destroy() {\n this.cm.destroy();\n }\n}\n\nexport default CodeMirrorView;\n","import { Node } from '@tiptap/core';\nimport CodeBlockView from './codemirrorView';\nimport { minimalSetup } from 'codemirror';\nimport { javascript } from '@codemirror/lang-javascript';\n\nexport default Node.create({\n name: 'codeBlock',\n content: 'text*',\n marks: '',\n group: 'block',\n code: true,\n defining: true,\n isolating: true,\n\n parseHTML() {\n return [\n {\n tag: 'pre',\n preserveWhitespace: 'full',\n },\n ];\n },\n\n renderHTML() {\n return ['pre', ['code', 0]];\n },\n\n addNodeView() {\n return ({ node, editor, getPos }) => {\n return new CodeBlockView({\n node,\n view: editor.view,\n getPos: getPos as () => number,\n cmOptions: {\n extensions: [minimalSetup, javascript()],\n },\n });\n };\n },\n});\n","import Blockquote from '@tiptap/extension-blockquote';\nimport Bold from '@tiptap/extension-bold';\nimport BulletList from '@tiptap/extension-bullet-list';\nimport CodeBlock from '@tiptap/extension-code-block';\nimport HardBreak from '@tiptap/extension-hard-break';\nimport Italic from '@tiptap/extension-italic';\nimport ListItem from '@tiptap/extension-list-item';\nimport Paragraph from '@tiptap/extension-paragraph';\nimport OrderedList from '@tiptap/extension-ordered-list';\nimport Strike from '@tiptap/extension-strike';\nimport HorizontalRule from '@tiptap/extension-horizontal-rule';\nimport Link from '@tiptap/extension-link';\nimport Highlight from '@tiptap/extension-highlight';\nimport Underline from '@tiptap/extension-underline';\nimport { marked } from 'marked';\nimport {\n MarkdownSerializer as ProseMirrorMarkdownSerializer,\n defaultMarkdownSerializer,\n} from 'prosemirror-markdown';\nimport { DOMParser as ProseMirrorDOMParser, Node, Mark } from 'prosemirror-model';\n\nconst mdSerializerNodes = {\n ...defaultMarkdownSerializer.nodes,\n [Paragraph.name]: defaultMarkdownSerializer.nodes.paragraph,\n [BulletList.name]: defaultMarkdownSerializer.nodes.bullet_list,\n [ListItem.name]: defaultMarkdownSerializer.nodes.list_item,\n [OrderedList.name]: defaultMarkdownSerializer.nodes.ordered_list,\n [HardBreak.name]: defaultMarkdownSerializer.nodes.hard_break,\n [CodeBlock.name]: defaultMarkdownSerializer.nodes.code_block,\n [Blockquote.name]: defaultMarkdownSerializer.nodes.blockquote,\n [HorizontalRule.name]: defaultMarkdownSerializer.nodes.horizontal_rule,\n};\n\nconst mdSerializerMarks = {\n ...defaultMarkdownSerializer.marks,\n [Bold.name]: defaultMarkdownSerializer.marks.strong,\n [Strike.name]: {\n open: '~~',\n close: '~~',\n mixable: true,\n expelEnclosingWhitespace: true,\n },\n [Italic.name]: {\n open: ' _',\n close: '_ ',\n mixable: true,\n expelEnclosingWhitespace: true,\n },\n [Highlight.name]: {\n open: '==',\n close: '==',\n mixable: true,\n expelEnclosingWhitespace: true,\n },\n [Underline.name]: {\n open: '<u>',\n close: '</u>',\n mixable: true,\n expelEnclosingWhitespace: true,\n },\n [Link.name]: {\n open(state: any, mark: Mark, parent: Node, index: number) {\n return isPlainURL(mark, parent, index, 1) ? '<' : '[';\n },\n close(state: any, mark: Mark, parent: Node, index: number) {\n const href = mark.attrs.canonicalSrc || mark.attrs.href;\n\n return isPlainURL(mark, parent, index, -1)\n ? '>'\n : `](${state.esc(href)}${\n mark.attrs.title ? ` ${state.quote(mark.attrs.title)}` : ''\n })`;\n },\n },\n};\n\nfunction isPlainURL(link: Mark, parent: Node, index: number, side: number) {\n if (link.attrs.title || !/^\\w+:/.test(link.attrs.href)) return false;\n const content = parent.child(index + (side < 0 ? -1 : 0));\n if (\n !content.isText ||\n content.text !== link.attrs.href ||\n content.marks[content.marks.length - 1] !== link\n )\n return false;\n if (index === (side < 0 ? 1 : parent.childCount - 1)) return true;\n const next = parent.child(index + (side < 0 ? -2 : 1));\n return !link.isInSet(next.marks);\n}\n\nexport function serialize(schema: any, content: any) {\n const mdSerializer = new ProseMirrorMarkdownSerializer(\n mdSerializerNodes,\n mdSerializerMarks,\n );\n\n const proseMirrorDocument = schema.nodeFromJSON(content);\n\n return mdSerializer.serialize(proseMirrorDocument, { tightLists: true });\n}\n\nexport function deserialize(schema: any, content?: string) {\n if (!content) return null;\n const html = marked.parse(content);\n\n if (!html) return null;\n\n const parser = new DOMParser();\n const { body } = parser.parseFromString(html, 'text/html');\n\n // append original source as a comment that nodes can access\n body.append(document.createComment(content));\n\n const state = ProseMirrorDOMParser.fromSchema(schema).parse(body);\n return state.toJSON();\n}\n\n","<template>\n <div\n :ref=\"'root'\"\n :class=\"rootStyles\"\n >\n <template v-if=\"$slots.label || $slots.addon || label\">\n <OrLabel\n :variant=\"'input'\"\n :required=\"required\"\n :disabled=\"disabled\"\n >\n <slot name=\"label\">\n {{ label }}\n </slot>\n\n <template v-slot:addon>\n <slot name=\"addon\" />\n </template>\n </OrLabel>\n </template>\n\n <OrInputBox\n :ref=\"'containerRef'\"\n class=\"grow\"\n :direction=\"'column'\"\n :invalid=\"!!error\"\n :disabled=\"disabled\"\n @click=\"handleEditorClick()\"\n >\n <div\n :ref=\"'toolbarRef'\"\n :class=\"toolbarStyles\"\n :disabled=\"disabled || !isFocused\"\n >\n <div\n v-for=\"(tools, index) in toolbar\"\n :key=\"index\"\n :class=\"[...toolbarGroupStyles, { 'hidden': !isVisible(tools)}]\"\n :disabled=\"disabled || !isFocused\"\n >\n <div\n v-for=\"item in tools\"\n :key=\"item\"\n :class=\"['flex gap-md', { 'hidden': !isVisible(item)}]\"\n >\n <OrIconButton\n v-if=\"item === 'heading'\"\n :ref=\"'toolbarButtonRef'\"\n :icon=\"{ icon: headingIcon, variant: 'inherit' }\"\n :tooltip=\"{ content: item, placement: 'top' }\"\n :selected=\"isActive[item]\"\n :disabled=\"disabled || !isFocused\"\n @click=\"menuRef && menuRef.toggle()\"\n />\n\n <OrIconButton\n v-else-if=\"isVisible(item)\"\n :icon=\"{ icon: getRichTextEditorIcon(item), variant: 'inherit' }\"\n :tooltip=\"{ content: getRichTextEditorTooltipIcon(item), placement: 'top' }\"\n :selected=\"isActive[item]\"\n :disabled=\"disabled || !isFocused\"\n @click=\"handleToolbarClick(item)\"\n />\n </div>\n </div>\n\n <OrIconButton\n v-if=\"countOfNotVisibleTools > 0 && !isMobile\"\n :ref=\"'moreButtonRef'\"\n :class=\"['mx-sm']\"\n :icon=\"{ icon: 'more_horiz', variant: 'inherit' }\"\n :disabled=\"disabled || !isFocused\"\n :force-state=\"morePopoverRef && morePopoverRef.state === 'open' ? 'hover' : undefined\"\n @click=\"morePopoverRef && morePopoverRef.open()\"\n />\n </div>\n\n <div :class=\"['p-sm', 'overflow-auto', 'min-h-[88px]', 'h-full']\">\n <textarea\n v-show=\"disableMarkdown\"\n :ref=\"'textareaRef'\"\n v-model=\"sourceValue\"\n :activated=\"disableMarkdown\"\n class=\"block w-full h-full resize-none border-none outline-none bg-transparent typography-body-2-regular\"\n @input=\"handleInput\"\n />\n\n <div\n v-show=\"!disableMarkdown\"\n :ref=\"'controlRef'\"\n :class=\"controlStyles\"\n />\n\n <slot name=\"files\" />\n </div>\n </OrInputBox>\n\n <template v-if=\"$slots.hint || hint\">\n <OrHint\n v-show=\"!error\"\n :disabled=\"disabled\"\n >\n <slot name=\"hint\">\n {{ hint }}\n </slot>\n </OrHint>\n </template>\n\n <OrError\n v-show=\"typeof error === 'string' && error.length > 0\"\n :disabled=\"disabled\"\n >\n {{ error }}\n </OrError>\n\n <OrPopover\n v-if=\"moreButtonRef\"\n :ref=\"'morePopoverRef'\"\n :trigger=\"moreButtonRef && moreButtonRef.root\"\n :placement=\"'top-end'\"\n >\n <div class=\"flex p-sm gap-md\">\n <OrIconButton\n v-for=\"item in notVisibleTools\"\n :key=\"item\"\n :icon=\"{ icon: getRichTextEditorIcon(item), variant: 'inherit' }\"\n :tooltip=\"{ content: getRichTextEditorTooltipIcon(item), placement: 'top' }\"\n :selected=\"isActive[item]\"\n @click=\"handleToolbarClick(item)\"\n />\n </div>\n </OrPopover>\n\n <OrMenu\n v-if=\"toolbarButtonRef\"\n :ref=\"'menuRef'\"\n :trigger=\"toolbarButtonRef[getIndexOfHeading] && toolbarButtonRef[getIndexOfHeading].root\"\n :placement=\"'bottom-start'\"\n >\n <OrMenuItem\n v-for=\"heading in headingLevels\"\n :key=\"heading\"\n :selected=\"activeHeadingLevel === heading\"\n @click=\"handleToolbarClick('heading', heading)\"\n >\n Heading {{ heading }}\n </OrMenuItem>\n\n <OrMenuItem\n :selected=\"!activeHeadingLevel\"\n @click=\"handleToolbarClick('heading')\"\n >\n None\n </OrMenuItem>\n </OrMenu>\n\n <OrModal\n :is-open=\"isOpenLinkModal\"\n :size=\"'s'\"\n >\n <template v-slot:header>\n Add Link\n </template>\n\n <div :class=\"['layout-column', 'gap-md']\">\n <OrInput\n v-model=\"text\"\n :label=\"'Text'\"\n :placeholder=\"'Enter text'\"\n />\n\n <OrInput\n v-model=\"link\"\n :label=\"'Link'\"\n :placeholder=\"'Enter link'\"\n />\n </div>\n\n <template v-slot:footer>\n <div :class=\"['layout-row-reverse', 'gap-md']\">\n <OrButton\n :variant=\"'contained'\"\n @click=\"attachLink()\"\n >\n Save\n </OrButton>\n\n <OrButton\n :variant=\"'outlined'\"\n @click=\"discardLink()\"\n >\n Cancel\n </OrButton>\n </div>\n </template>\n </OrModal>\n </div>\n</template>\n\n<script lang=\"ts\">\nimport { useResponsive } from '@onereach/ui-components-common/hooks';\nimport { isArray } from '@onereach/ui-components-common/utils';\nimport { OrButtonV3 as OrButton } from '@onereach/ui-components.or-button-v3';\nimport { OrErrorV3 as OrError } from '@onereach/ui-components.or-error-v3';\nimport { OrHintV3 as OrHint } from '@onereach/ui-components.or-hint-v3';\nimport { OrIconButtonV3 as OrIconButton } from '@onereach/ui-components.or-icon-button-v3';\nimport { OrInputBoxV3 as OrInputBox } from '@onereach/ui-components.or-input-box-v3';\nimport { OrInputV3 as OrInput } from '@onereach/ui-components.or-input-v3';\nimport { OrLabelV3 as OrLabel } from '@onereach/ui-components.or-label-v3';\nimport { OrMenuItemV3 as OrMenuItem } from '@onereach/ui-components.or-menu-item-v3';\nimport { OrMenuV3 as OrMenu } from '@onereach/ui-components.or-menu-v3';\nimport { OrModalV3 as OrModal } from '@onereach/ui-components.or-modal-v3';\nimport { OrPopoverV3 as OrPopover } from '@onereach/ui-components.or-popover-v3';\nimport { Editor, mergeAttributes } from '@tiptap/core';\nimport Blockquote from '@tiptap/extension-blockquote';\nimport BulletList from '@tiptap/extension-bullet-list';\nimport Heading, { Level } from '@tiptap/extension-heading';\nimport Highlight from '@tiptap/extension-highlight';\nimport Link from '@tiptap/extension-link';\nimport OrderedList from '@tiptap/extension-ordered-list';\nimport Paragraph from '@tiptap/extension-paragraph';\nimport Placeholder from '@tiptap/extension-placeholder';\nimport Underline from '@tiptap/extension-underline';\nimport StarterKit from '@tiptap/starter-kit';\nimport { onClickOutside, useDebounceFn, useResizeObserver } from '@vueuse/core';\nimport { UseFocusTrapReturn, useFocusTrap } from '@vueuse/integrations/useFocusTrap';\nimport { ComponentPublicInstance, PropType, computed, defineComponent, nextTick, onBeforeUnmount, onMounted, ref, shallowRef, watch } from 'vue';\n\nimport { Formats, Tools, RichTextEditorIcons, RichTextEditorTooltips } from './props';\nimport * as Styles from './styles';\nimport codemirrorNode from './utils/codemirror/codemirrorNode';\nimport { deserialize, serialize } from './utils/markdown';\n\nexport default defineComponent({\n name: 'OrRichTextEditor',\n\n components: {\n OrButton,\n OrError,\n OrHint,\n OrIconButton,\n OrInput,\n OrInputBox,\n OrLabel,\n OrMenu,\n OrMenuItem,\n OrModal,\n OrPopover,\n },\n\n model: {\n prop: 'modelValue',\n event: 'update:modelValue',\n },\n\n props: {\n modelValue: {\n type: String,\n default: undefined,\n },\n\n toolbar: {\n type: Array as PropType<Tools>,\n default: () => [],\n },\n\n autofocus: {\n type: Boolean,\n default: false,\n },\n\n format: {\n type: String as PropType<`${Formats}`>,\n default: () => Formats.Markup,\n },\n\n label: {\n type: String,\n default: undefined,\n },\n\n placeholder: {\n type: String,\n default: undefined,\n },\n\n hint: {\n type: String,\n default: undefined,\n },\n\n error: {\n type: [String, Boolean],\n default: undefined,\n },\n\n required: {\n type: Boolean,\n default: false,\n },\n\n disabled: {\n type: Boolean,\n default: false,\n },\n },\n\n emits: [\n 'update:modelValue',\n\n 'input',\n 'file-upload',\n\n 'focus',\n 'blur',\n ],\n\n expose: [\n 'root',\n 'editor',\n ],\n\n setup(props, context) {\n let editor = shallowRef<Editor>();\n const controlRef = ref<HTMLDivElement>();\n const toolbarRef = ref<ComponentPublicInstance<HTMLInputElement>>();\n\n // Refs & Styles\n const root = ref<HTMLElement>();\n\n const textareaRef = ref<HTMLTextAreaElement>();\n const containerRef = ref<ComponentPublicInstance<HTMLInputElement>>();\n const moreButtonRef = ref<InstanceType<typeof OrIconButton>>();\n const morePopoverRef = ref<InstanceType<typeof OrPopover>>();\n const toolbarButtonRef = ref<InstanceType<typeof OrIconButton>>();\n const menuRef = ref<InstanceType<typeof OrMenu>>();\n\n // isActive should be set with default values for all toolbar buttons, otherwise it will not work in vue2\n const isActive = ref<{[key: string]: boolean;}>({\n bold: false,\n italic: false,\n underline: false,\n strike: false,\n bulletList: false,\n orderedList: false,\n link: false,\n highlight: false,\n redo: false,\n undo: false,\n codeBlock: false,\n blockquote: false,\n file: false,\n source: false,\n });\n\n const isFocused = ref<boolean>(props.autofocus);\n const headingLevels = [1, 2, 3, 4] as Level[];\n const activeHeadingLevel = ref<number>(0);\n const markdownOutput = ref<string>('');\n const disableMarkdown = ref<boolean>(false);\n\n // Attach link modal\n const isOpenLinkModal = ref<boolean>(false);\n const text = ref<string>('');\n const link = ref<string>('');\n\n const countOfNotVisibleTools = ref<number>(0);\n const sourceValue = ref<string>('');\n\n const { isMobile } = useResponsive();\n\n let trap: UseFocusTrapReturn = useFocusTrap(controlRef, {\n fallbackFocus: '.container',\n allowOutsideClick: true,\n });\n\n\n useResizeObserver(root, useDebounceFn((entries) => {\n const entry = entries[0];\n const { width } = entry.contentRect;\n if (containerRef.value && toolbarRef.value && toolbarLength.value) {\n let lengthOfItem = 0;\n lengthOfItem = (toolbarRef.value.firstElementChild?.firstElementChild as HTMLDivElement)?.offsetWidth + 16;\n\n const count = (width / lengthOfItem) - 2;\n countOfNotVisibleTools.value = Math.round(toolbarLength.value - count);\n }\n }, 10));\n\n onMounted(() => {\n editor.value = new Editor({\n onUpdate: ({ editor }) => {\n isFocused.value = true;\n setActiveFormats();\n const html = editor.getHTML();\n const text = editor.getText();\n if (props.format === 'markdown') {\n markdownOutput.value = serialize(editor.schema, editor.getJSON());\n model.value = markdownOutput.value;\n } else {\n model.value = text === '' ? text : html;\n }\n },\n onCreate: ({ editor }) => {\n if (props.format === 'markdown') {\n editor.commands.setContent(deserialize(editor.schema, model.value));\n } else {\n editor.commands.setContent(model.value as string);\n }\n },\n onFocus(props) {\n context.emit('focus', props);\n },\n onBlur(props) {\n context.emit('blur', props);\n },\n element: controlRef.value,\n autofocus: props.autofocus,\n enableInputRules: true,\n enablePasteRules: true,\n extensions: [\n codemirrorNode,\n StarterKit.configure({\n heading: false,\n codeBlock: false,\n paragraph: false,\n bulletList: false,\n orderedList: false,\n blockquote: false,\n }),\n Paragraph.configure({\n HTMLAttributes: {\n class: 'or-cm-paragraph my-xs',\n },\n }),\n BulletList.configure({\n HTMLAttributes: {\n class: 'or-cm-bulletList mx-lg my-xs list-disc',\n },\n }),\n OrderedList.configure({\n HTMLAttributes: {\n class: 'or-cm-orderedList mx-lg my-xs list-decimal',\n },\n }),\n Blockquote.configure({\n HTMLAttributes: {\n class: 'or-cm-blockquote my-sm mx-lg px-lg border-l-2 border-outline',\n },\n }),\n Heading.configure({ levels: headingLevels }).extend({\n levels: headingLevels,\n renderHTML({ node, HTMLAttributes }) {\n return [\n 'h' + node.attrs.level,\n mergeAttributes(HTMLAttributes, {\n class: `typography-headline-${node.attrs.level} my-xs`,\n }),\n 0,\n ];\n },\n }),\n Underline,\n Link.configure({\n openOnClick: true,\n linkOnPaste: true,\n autolink: false,\n protocols: ['ftp', 'mailto', 'http', 'https'],\n validate: href => /^https?:\\/\\//.test(href),\n HTMLAttributes: {\n class: 'or-cm-link text-primary cursor-pointer',\n },\n }),\n Highlight,\n Placeholder\n .configure({\n placeholder: props.placeholder,\n emptyEditorClass: 'or-cm-placeholder text-outline is-editor-empty',\n }),\n ],\n editorProps: {\n attributes: {\n class: 'or-cm-editorProps flex flex-col focus:outline-none gap-xs h-full',\n },\n },\n parseOptions: {\n preserveWhitespace: true,\n },\n });\n setActiveFormats();\n trap.activate();\n });\n\n onBeforeUnmount(() => {\n editor.value?.destroy();\n });\n\n onClickOutside(root, () => {\n isFocused.value = false;\n trap.deactivate();\n });\n\n // Computed\n const model = computed({\n get: () => {\n return props.modelValue;\n },\n\n set: (value) => {\n context.emit('input', value);\n context.emit('update:modelValue', value);\n },\n });\n\n const getIndexOfHeading = computed(() => {\n return props.toolbar.flat().indexOf('heading');\n });\n\n const getRichTextEditorIcon = computed(() => (item: string) => {\n return RichTextEditorIcons[item as keyof typeof RichTextEditorTooltips];\n });\n\n const getRichTextEditorTooltipIcon = computed(() => (item: string) => {\n return RichTextEditorTooltips[item as keyof typeof RichTextEditorTooltips];\n });\n\n const headingIcon = computed(() => {\n if (activeHeadingLevel.value && isActive.value.heading) {\n return `format_h${activeHeadingLevel.value}`;\n }\n return 'format_paragraph';\n });\n\n const toolbarLength = computed(() => {\n return props.toolbar.flat().length;\n });\n\n const notVisibleTools = computed((): Set<string> => {\n const count = countOfNotVisibleTools.value;\n const toolbar = props.toolbar.flat();\n let notVisible = new Set(toolbar.slice(toolbar.length - count, toolbar.length));\n props.toolbar.forEach(tools => {\n if (tools.some(item => notVisible.has(item))) {\n tools.forEach(item => notVisible.add(item));\n }\n });\n return notVisible;\n });\n\n //Methods\n const handleEditorClick = () => {\n setActiveFormats();\n isFocused.value = true;\n editor.value?.commands.focus();\n activeHeadingLevel.value = editor.value?.getAttributes('heading')?.level || 0;\n };\n\n const isVisible = (value: string | Array<string>) => {\n if (isMobile.value) return true;\n\n if (isArray(value)) {\n const isHaveNotVisibleTools = value.some(item => notVisibleTools.value.has(item));\n return !isHaveNotVisibleTools;\n }\n return !notVisibleTools.value.has(value);\n };\n\n const handleInput = (event: InputEvent) => {\n const target = event.target as HTMLTextAreaElement;\n const value = target.value;\n editor.value?.commands.setContent(deserialize(editor.value?.schema, value));\n markdownOutput.value = serialize(editor.value?.schema, editor.value?.getJSON());\n model.value = markdownOutput.value;\n };\n\n const handleToolbarClick = (item: string, level?: number) => {\n switch (item) {\n case 'source':\n disableMarkdown.value = !disableMarkdown.value;\n sourceValue.value = serialize(editor.value?.schema, editor.value?.getJSON());\n\n textareaRef.value?.style.setProperty('height', `${controlRef.value?.offsetHeight || 88}px`);\n\n nextTick(() => textareaRef.value?.focus());\n break;\n case 'bulletList':\n case 'orderedList':\n item === 'bulletList' ? editor.value?.commands.toggleBulletList() : editor.value?.commands.toggleOrderedList();\n break;\n case 'link':\n if (editor.value) {\n const cursorPosition = editor.value?.state.selection.$anchor.pos || 0;\n const { from, to, empty } = editor.value!.state.selection;\n const isLink = editor.value!.view.state.doc.nodeAt(cursorPosition)?.marks.filter((mark) => mark.type.name === 'link');\n const existedText = isLink?.length ? editor.value!.view.state.doc.nodeAt(cursorPosition)?.text || '' : '';\n\n text.value = empty ? existedText : editor.value!.state.doc.textBetween(from, to, ' ');\n link.value = editor.value!.getAttributes('link').href || '';\n }\n isOpenLinkModal.value = !isOpenLinkModal.value;\n break;\n case 'blockquote':\n editor.value?.chain().toggleBlockquote().run();\n break;\n case 'codeBlock':\n if (!isActive.value['codeBlock']) {\n editor.value?.commands.setNode(item, { language: 'javascript' });\n } else {\n editor.value?.commands.setNode('paragraph');\n }\n break;\n case 'heading':\n if (!level) {\n editor.value?.commands.setParagraph();\n activeHeadingLevel.value = 0;\n } else {\n activeHeadingLevel.value = level;\n editor.value?.commands.toggleHeading({ level: level as Level });\n }\n break;\n case 'undo':\n case 'redo':\n item === 'undo' ? editor.value?.commands.undo() : editor.value?.commands.redo();\n break;\n case 'file':\n context.emit('file-upload');\n break;\n default:\n editor.value?.chain().toggleMark(item).run();\n break;\n }\n };\n\n const attachLink = async () => {\n // empty\n if (link.value === '') {\n editor.value?.chain().focus().extendMarkRange('link').unsetLink().run();\n }\n\n const isEmptySelection = editor.value?.state.selection.empty;\n const cursorPosition = editor.value?.state.selection.$anchor.pos || 0;\n // Check if it's already link\n const isLink = editor.value?.view.state.doc.nodeAt(cursorPosition)?.marks.filter((mark) => mark.type.name === 'link');\n const existedText = isLink?.length ? editor.value?.view.state.doc.nodeAt(cursorPosition)?.text : '';\n\n if (link.value && isEmptySelection && !existedText) {\n editor.value?.chain()\n .focus()\n .setMark('link', {\n href: link.value,\n target: '__blank',\n })\n .command(({ tr }) => {\n const preparedValue = text.value[text.value.length - 1] === ' ' ? text.value : `${text.value} `;\n tr.insertText(preparedValue);\n return true;\n })\n .run();\n }\n\n if (link.value && existedText === text.value && isEmptySelection) {\n editor.value?.chain()\n .extendMarkRange('link')\n .updateAttributes('link', {\n href: link.value,\n })\n .run();\n }\n\n if (link.value && !isEmptySelection) {\n editor.value?.chain()\n .focus()\n .insertContentAt({\n from: editor.value?.state.selection.from,\n to: editor.value?.state.selection.to,\n }, text.value)\n .setTextSelection({\n from: editor.value?.state.selection.from,\n to: editor.value?.state.selection.from + text.value.length,\n })\n .setMark('link', {\n href: link.value,\n target: '__blank',\n })\n .run();\n }\n\n text.value = '';\n link.value = '';\n\n isOpenLinkModal.value = false;\n };\n\n const discardLink = () => {\n isOpenLinkModal.value = false;\n };\n\n const setActiveFormats = () => {\n const toolbarList = props.toolbar.flat() as string[];\n toolbarList.forEach((item) => {\n if (item === 'source') {\n isActive.value[item] = disableMarkdown.value;\n } else {\n isActive.value[item] = editor.value?.isActive(item) || false;\n }\n });\n };\n\n\n // Effects\n watch([\n editor,\n model,\n () => props.disabled,\n ], ([\n editor,\n model,\n disabled,\n ]) => {\n if (model !== editor?.getHTML() && props.format !== 'markdown') {\n editor?.commands.setContent(model as string);\n }\n\n if (model !== markdownOutput.value && props.format === 'markdown') {\n editor?.commands.setContent(deserialize(editor?.schema, model));\n }\n\n editor?.setEditable(!disabled);\n });\n\n // Styles\n const rootStyles = computed(() => [\n 'or-rich-text-editor-v3',\n ...Styles.RichTextEditor,\n ]);\n\n const toolbarStyles = computed(() => [\n ...Styles.RichTextEditorToolbar,\n ]);\n\n const toolbarGroupStyles = computed(() => [\n ...Styles.RichTextEditorToolbarGroup,\n ]);\n\n const controlStyles = computed(() => [\n 'tiptap-editor-v3',\n ...Styles.RichTextEditorControl,\n ]);\n\n return {\n root,\n rootStyles,\n\n toolbarRef,\n toolbarStyles,\n\n toolbarGroupStyles,\n\n controlRef,\n controlStyles,\n\n editor,\n containerRef,\n toolbarButtonRef,\n moreButtonRef,\n textareaRef,\n morePopoverRef,\n menuRef,\n handleToolbarClick,\n handleEditorClick,\n isActive,\n getRichTextEditorIcon,\n getRichTextEditorTooltipIcon,\n getIndexOfHeading,\n headingLevels,\n headingIcon,\n attachLink,\n discardLink,\n isOpenLinkModal,\n text,\n link,\n isFocused,\n isVisible,\n isMobile,\n countOfNotVisibleTools,\n notVisibleTools,\n handleInput,\n model,\n disableMarkdown,\n sourceValue,\n activeHeadingLevel,\n };\n },\n});\n</script>\n\n<style scoped lang=\"scss\">\n// Unavoidable hack for bundled (browser) build\n// Created by the fact that this is deep styles in editor\n// As far as we need scoping for browser builds, we can't rely on global existence of this classes\n:deep(.or-cm-paragraph) {\n @apply my-xs;\n}\n\n:deep(.or-cm-bulletList) {\n @apply mx-lg my-xs list-disc;\n}\n\n:deep(.or-cm-orderedList) {\n @apply mx-lg my-xs list-decimal;\n}\n\n:deep(.or-cm-blockquote) {\n @apply my-sm mx-lg px-lg border-l-2 border-outline;\n}\n\n:deep(.or-cm-link) {\n @apply text-primary cursor-pointer;\n}\n\n:deep(.or-cm-placeholder) {\n @apply text-outline;\n}\n\n:deep(.or-cm-editorProps) {\n @apply flex flex-col focus:outline-none gap-xs h-full;\n}\n</style>\n\n<style lang=\"scss\">\n.tiptap-editor-v3 {\n .is-editor-empty::before {\n float: left;\n height: 0;\n pointer-events: none;\n content: attr(data-placeholder);\n }\n}\n</style>\n"],"names":["Formats","RichTextEditorIcons","RichTextEditorTooltips","RichTextEditor","RichTextEditorToolbar","RichTextEditorToolbarGroup","RichTextEditorControl","themes","useTheme","chalky","coral","cyan","invalid","_a","ivory","stone","malibu","sage","whiskey","violet","orCodeTheme","EditorView","_b","_c","_d","_e","_f","_g","_h","_i","_j","orCodeHighlightStyle","HighlightStyle","t","theme","syntaxHighlighting","computeChange","oldVal","newVal","start","oldEnd","newEnd","CodeMirrorView","options","cmExtensions","changeFilter","CMState","tr","CMView","cmState","highlightActiveLine","highlightActiveLineGutter","lineNumbers","keymap","exitCode","state","selection","doc","offset","anchor","head","TextSelection","cmTr","cmValue","change","content","unit","dir","view","pos","line","hasSelection","r","firstLine","lastLine","targetPos","pmSelection","Selection","node","codemirrorNode","Node","editor","getPos","CodeBlockView","minimalSetup","javascript","mdSerializerNodes","defaultMarkdownSerializer","Paragraph","BulletList","ListItem","OrderedList","HardBreak","CodeBlock","Blockquote","HorizontalRule","mdSerializerMarks","Bold","Strike","Italic","Highlight","Underline","Link","mark","parent","index","isPlainURL","href","link","side","next","serialize","schema","mdSerializer","ProseMirrorMarkdownSerializer","proseMirrorDocument","deserialize","html","marked","parser","body","ProseMirrorDOMParser","_sfc_main","defineComponent","OrButton","OrError","OrHint","OrIconButton","OrInput","OrInputBox","OrLabel","OrMenu","OrMenuItem","OrModal","OrPopover","props","context","shallowRef","controlRef","ref","toolbarRef","root","textareaRef","containerRef","moreButtonRef","morePopoverRef","toolbarButtonRef","menuRef","isActive","isFocused","headingLevels","activeHeadingLevel","markdownOutput","disableMarkdown","isOpenLinkModal","text","countOfNotVisibleTools","sourceValue","isMobile","useResponsive","trap","useFocusTrap","useResizeObserver","useDebounceFn","entries","entry","width","toolbarLength","lengthOfItem","count","onMounted","Editor","setActiveFormats","model","StarterKit","Heading","HTMLAttributes","mergeAttributes","Placeholder","onBeforeUnmount","onClickOutside","computed","value","getIndexOfHeading","getRichTextEditorIcon","item","getRichTextEditorTooltipIcon","headingIcon","notVisibleTools","toolbar","notVisible","tools","handleEditorClick","isVisible","isArray","handleInput","event","handleToolbarClick","level","nextTick","cursorPosition","from","to","empty","isLink","existedText","_l","_k","_n","_m","_o","_p","_q","attachLink","isEmptySelection","preparedValue","discardLink","watch","disabled","rootStyles","Styles.RichTextEditor","toolbarStyles","Styles.RichTextEditorToolbar","toolbarGroupStyles","Styles.RichTextEditorToolbarGroup","controlStyles","Styles.RichTextEditorControl","_hoisted_2","_hoisted_5","_resolveComponent","_openBlock","_createElementBlock","_normalizeClass","_ctx","_createBlock","_component_OrLabel","_renderSlot","_createCommentVNode","_createVNode","_component_OrInputBox","_cache","$event","_withCtx","_createElementVNode","_Fragment","_renderList","_component_OrIconButton","_hoisted_1","_hoisted_3","_withDirectives","args","_hoisted_4","_vShow","_vModelText","_component_OrHint","_component_OrError","_component_OrPopover","_component_OrMenu","heading","_component_OrMenuItem","_component_OrModal","_createTextVNode","_hoisted_7","_component_OrButton","_hoisted_6","_component_OrInput"],"mappings":"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"}
|
|
@@ -66,7 +66,7 @@ import { O as Xo } from "../OrRadio-BU9YDLzB.mjs";
|
|
|
66
66
|
import { O as Zo } from "../OrRangeSlider-Dim4sU4v.mjs";
|
|
67
67
|
import { O as $o, R as re } from "../OrRating-BhuvRBRy.mjs";
|
|
68
68
|
import { O as oe, R as ee, a as te } from "../OrResizeablePanel-DuGgwmhB.mjs";
|
|
69
|
-
import { F as Oe, O as ie, R as pe, a as me } from "../OrRichTextEditor-
|
|
69
|
+
import { F as Oe, O as ie, R as pe, a as me } from "../OrRichTextEditor-DJTBMYpL.mjs";
|
|
70
70
|
import { O as xe, R as Ve } from "../OrRichTooltip-D8vv5Btb.mjs";
|
|
71
71
|
import { O as le } from "../OrSearch-OIfce3Md.mjs";
|
|
72
72
|
import { O as de, S as ce } from "../OrSegmentedControl-D5QoWe-N.mjs";
|
package/dist/esm/index.mjs
CHANGED
|
@@ -66,7 +66,7 @@ import { O as Xo } from "./OrRadio-BU9YDLzB.mjs";
|
|
|
66
66
|
import { O as Zo } from "./OrRangeSlider-Dim4sU4v.mjs";
|
|
67
67
|
import { O as $o, R as re } from "./OrRating-BhuvRBRy.mjs";
|
|
68
68
|
import { O as oe, R as ee, a as te } from "./OrResizeablePanel-DuGgwmhB.mjs";
|
|
69
|
-
import { F as Oe, O as ie, R as pe, a as me } from "./OrRichTextEditor-
|
|
69
|
+
import { F as Oe, O as ie, R as pe, a as me } from "./OrRichTextEditor-DJTBMYpL.mjs";
|
|
70
70
|
import { O as xe, R as Ve } from "./OrRichTooltip-D8vv5Btb.mjs";
|
|
71
71
|
import { O as le } from "./OrSearch-OIfce3Md.mjs";
|
|
72
72
|
import { O as de, S as ce } from "./OrSegmentedControl-D5QoWe-N.mjs";
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@onereach/ui-components",
|
|
3
|
-
"version": "25.1.0",
|
|
3
|
+
"version": "25.1.1-beta.5754.0",
|
|
4
4
|
"description": "Vue components library for v3",
|
|
5
5
|
"license": "Apache-2.0",
|
|
6
6
|
"sideEffects": false,
|
|
@@ -46,8 +46,8 @@
|
|
|
46
46
|
"@codemirror/view": "^6",
|
|
47
47
|
"@floating-ui/dom": "1.5.3",
|
|
48
48
|
"@lezer/highlight": "*",
|
|
49
|
-
"@onereach/styles": "^25.1.0",
|
|
50
|
-
"@onereach/ui-components-common": "^25.1.0",
|
|
49
|
+
"@onereach/styles": "^25.1.1-beta.5754.0",
|
|
50
|
+
"@onereach/ui-components-common": "^25.1.1-beta.5754.0",
|
|
51
51
|
"@splidejs/splide": "4.0.6",
|
|
52
52
|
"@tiptap/core": "2.0.3",
|
|
53
53
|
"@tiptap/extension-blockquote": "2.0.3",
|
|
@@ -102,6 +102,5 @@
|
|
|
102
102
|
"publishConfig": {
|
|
103
103
|
"access": "public"
|
|
104
104
|
},
|
|
105
|
-
"npmUnpacked": "4.15.2"
|
|
106
|
-
"gitHead": "8ff5abfe661d0a6cc39c65f904fd3deb47cf54a4"
|
|
105
|
+
"npmUnpacked": "4.15.2"
|
|
107
106
|
}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"OrRichTextEditor-B_uVsae1.mjs","sources":["../../../components/or-rich-text-editor-v3/src/props.ts","../../../components/or-rich-text-editor-v3/src/styles.ts","../../../components/or-rich-text-editor-v3/src/utils/codemirror/theme.ts","../../../components/or-rich-text-editor-v3/src/utils/codemirror/codemirrorView.ts","../../../components/or-rich-text-editor-v3/src/utils/codemirror/codemirrorNode.ts","../../../components/or-rich-text-editor-v3/src/utils/markdown.ts","../../../components/or-rich-text-editor-v3/src/OrRichTextEditor.vue"],"sourcesContent":["export enum Formats {\n Markdown = 'markdown',\n Markup = 'markup',\n}\n\nexport type Tools = string[][]; // TODO: Improve this type\n\nexport enum RichTextEditorIcons {\n bold = 'format_bold',\n italic = 'format_italic',\n underline = 'format_underlined',\n strike = 'format_strikethrough',\n bulletList = 'format_list_bulleted',\n orderedList = 'format_list_numbered',\n link = 'link',\n highlight = 'highlight',\n redo = 'redo',\n undo = 'undo',\n codeBlock = 'code_blocks',\n blockquote = 'format_quote',\n file = 'attach_file',\n source = 'source_notes',\n}\n\nexport enum RichTextEditorTooltips {\n bold = 'Bold',\n italic = 'Italic',\n underline = 'Underline',\n strike = 'Strike',\n bulletList = 'Bulleted List',\n orderedList = 'Numbered List',\n link = 'Link',\n highlight = 'Highlight',\n redo = 'Redo',\n undo = 'Undo',\n codeBlock = 'Code Block',\n blockquote = 'Quote',\n file = 'File',\n source = 'Source',\n}\n","export const RichTextEditor: string[] = [\n // Layout\n 'layout-column',\n\n // Spacing\n 'gap-xs',\n\n // Box\n 'max-h-full',\n];\n\nexport const RichTextEditorToolbar: string[] = [\n // Layout\n 'layout-row',\n\n // Overflow\n 'overflow-x-scroll md:overflow-x-hidden',\n 'scrollbar-hidden',\n\n // Spacing\n 'px-0',\n 'py-sm',\n\n // Theme\n 'border-b-1',\n\n 'theme-border-outline',\n 'dark:theme-border-outline-dark',\n];\n\nexport const RichTextEditorToolbarGroup: string[] = [\n // Layout\n 'layout-row',\n\n // Spacing\n 'px-sm',\n 'py-0',\n\n 'gap-md',\n\n // Theme\n 'theme-foreground-outline',\n 'dark:theme-foreground-outline-dark',\n\n 'border-e-1 last:border-e-0',\n\n 'theme-border-outline',\n 'dark:theme-border-outline-dark',\n];\n\nexport const RichTextEditorControl: string[] = [\n // Typography\n 'typography-body-2-regular',\n\n // Size\n 'h-full',\n];\n","import { EditorView } from '@codemirror/view';\nimport { HighlightStyle, syntaxHighlighting } from '@codemirror/language';\nimport { tags as t } from '@lezer/highlight';\n\n// Using https://github.com/one-dark/vscode-one-dark-theme/ as reference for the colors\n\nimport { useTheme } from '@onereach/ui-components-common/hooks';\n\nconst themes = useTheme();\n\nconst chalky = themes?.backgroundColor['custom-colors-custom-6'],\n coral = themes?.backgroundColor['custom-colors-custom-1'],\n cyan = themes?.backgroundColor['custom-colors-custom-3'],\n invalid = themes?.backgroundColor?.white,\n ivory = themes?.backgroundColor['custom-colors-custom-6'],\n stone = themes?.backgroundColor['custom-colors-custom-5'], // Brightened compared to original to increase contrast\n malibu = themes?.backgroundColor['custom-colors-custom-3'],\n sage = themes?.backgroundColor.success,\n whiskey = themes?.backgroundColor.warning,\n violet = themes?.backgroundColor['custom-colors-custom-1'];\n // darkBackground = themes?.colors?.neutral?.[100],\n // highlightBackground = themes?.colors?.neutral?.[200],\n // background = themes?.colors?.neutral?.[100],\n // tooltipBackground = themes?.colors?.neutral?.[200],\n // selection = themes?.colors?.blue?.[100],\n // cursor = themes?.colors?.blue?.[700];\n\n/// The colors used in the theme, as CSS color strings.\nexport const color = {\n chalky,\n coral,\n cyan,\n invalid,\n ivory,\n stone,\n malibu,\n sage,\n whiskey,\n violet,\n // darkBackground,\n // highlightBackground,\n // background,\n // tooltipBackground,\n // selection,\n // cursor,\n};\n\n/// The editor theme styles for One Dark.\nexport const orCodeTheme = EditorView.theme({\n '&': {\n color: ivory,\n backgroundColor: themes?.backgroundColor?.['bg-primary-container'],\n },\n\n '.cm-editor': {\n border: 'none',\n borderRadius: themes?.spacing?.xs,\n },\n\n '&.cm-focused': {\n outline: 'none',\n },\n\n '.cm-scroller': {\n borderRadius: themes?.spacing?.xs,\n },\n\n '.cm-content': {\n // caretColor: cursor,\n },\n\n '.cm-button': {\n // background: highlightBackground,\n // color: themes?.colors?.neutral?.[600],\n border: 0,\n borderRadius: themes?.spacing?.xs,\n },\n\n '.cm-panel.cm-search input[type=checkbox]': {\n display: 'inline-block',\n verticalAlign: 'middle',\n },\n\n // '.cm-cursor, .cm-dropCursor': { borderLeftColor: cursor },\n '&.cm-focused .cm-selectionBackground, .cm-selectionBackground, .cm-content ::selection': {\n // backgroundColor: selection,\n },\n\n '.cm-panels': {\n // backgroundColor: darkBackground,\n color: ivory,\n },\n // '.cm-panels.cm-panels-top': { borderBottom: `2px solid ${themes?.colors?.neutral?.[200]}` },\n // '.cm-panels.cm-panels-bottom': { borderTop: `2px solid ${themes?.colors?.neutral?.[200]}` },\n\n '.cm-searchMatch': {\n // backgroundColor: themes?.colors?.neutral?.[100],\n // outline: `1px solid ${themes?.colors?.neutral?.[200]}`,\n },\n\n '.cm-searchMatch.cm-searchMatch-selected': {\n // backgroundColor: themes?.colors?.sky?.[100],\n },\n\n '.cm-activeLine': {\n backgroundColor: themes?.backgroundColor?.['bg-secondary-container'],\n },\n\n // '.cm-selectionMatch': { backgroundColor: themes?.colors?.lime?.[500] },\n\n '&.cm-focused .cm-matchingBracket, &.cm-focused .cm-nonmatchingBracket': {\n // backgroundColor: themes?.colors?.lime?.[600],\n },\n\n '.cm-gutters': {\n backgroundColor: themes?.backgroundColor?.['primary-opacity-0-12'],\n color: stone,\n border: 'none',\n },\n\n '.cm-lineNumbers .cm-gutterElement': {\n paddingLeft: themes?.spacing?.['sm+*'],\n paddingRight: themes?.spacing?.['sm+*'],\n },\n\n '.cm-activeLineGutter': {\n backgroundColor: themes?.backgroundColor?.['primary-opacity-0-16'],\n },\n\n '.cm-foldPlaceholder': {\n backgroundColor: 'transparent',\n border: 'none',\n // color: themes?.colors?.neutral?.[200],\n },\n\n '.cm-tooltip': {\n border: 'none',\n // backgroundColor: tooltipBackground,\n },\n '.cm-tooltip .cm-tooltip-arrow:before': {\n borderTopColor: 'transparent',\n borderBottomColor: 'transparent',\n },\n '.cm-tooltip .cm-tooltip-arrow:after': {\n // borderTopColor: tooltipBackground,\n // borderBottomColor: tooltipBackground,\n },\n '.cm-tooltip-autocomplete': {\n '& > ul > li[aria-selected]': {\n // backgroundColor: highlightBackground,\n color: ivory,\n },\n },\n '.cm-textfield': {\n outline: 'none',\n // background: background,\n // color: themes?.colors?.neutral?.[600],\n // backgroundColor: themes?.colors?.neutral?.[100],\n // border: `1px solid ${themes?.colors?.neutral?.[200]}`,\n borderRadius: themes?.spacing?.xs,\n },\n}, { dark: true });\n\n/// The highlighting style for code in the One Dark theme.\nexport const orCodeHighlightStyle = HighlightStyle.define([\n {\n tag: t.keyword,\n color: violet,\n },\n {\n tag: [t.name, t.deleted, t.character, t.propertyName, t.macroName],\n color: coral,\n },\n {\n tag: [t.function(t.variableName), t.labelName],\n color: malibu,\n },\n {\n tag: [t.color, t.constant(t.name), t.standard(t.name)],\n color: whiskey,\n },\n {\n tag: [t.definition(t.name), t.separator],\n color: ivory,\n },\n {\n tag: [t.typeName, t.className, t.number, t.changed, t.annotation, t.modifier, t.self, t.namespace],\n color: chalky,\n },\n {\n tag: [t.operator, t.operatorKeyword, t.url, t.escape, t.regexp, t.link, t.special(t.string)],\n color: cyan,\n },\n {\n tag: [t.meta, t.comment],\n color: stone,\n },\n {\n tag: t.strong,\n fontWeight: 'bold',\n },\n {\n tag: t.emphasis,\n fontStyle: 'italic',\n },\n {\n tag: t.strikethrough,\n textDecoration: 'line-through',\n },\n {\n tag: t.link,\n color: stone,\n textDecoration: 'underline',\n },\n {\n tag: t.heading,\n fontWeight: 'bold',\n color: coral,\n },\n {\n tag: [t.atom, t.bool, t.special(t.variableName)],\n color: whiskey,\n },\n {\n tag: [t.processingInstruction, t.string, t.inserted],\n color: sage,\n },\n {\n tag: t.invalid,\n color: invalid,\n },\n]);\n\n/// Extension to enable the One Dark theme (both the editor theme and\n/// the highlight style).\nconst theme = [orCodeTheme, syntaxHighlighting(orCodeHighlightStyle)];\n\nexport default theme;\n","import { Selection, TextSelection } from 'prosemirror-state';\nimport { EditorView, NodeView } from 'prosemirror-view';\nimport { Node as ProsemirrorNode } from 'prosemirror-model';\nimport { exitCode } from 'prosemirror-commands';\nimport { EditorState as CMState, Transaction as CMTransaction, Extension } from '@codemirror/state';\nimport {\n Command,\n EditorView as CMView,\n keymap,\n highlightActiveLine,\n highlightActiveLineGutter,\n lineNumbers,\n} from '@codemirror/view';\nimport orCodeTheme from './theme';\n\nimport { ComputeChange, CodeMirrorViewOptions } from './types';\n\nconst computeChange = (oldVal: string, newVal: string): ComputeChange | null => {\n if (oldVal === newVal) {\n return null;\n }\n\n let start = 0;\n let oldEnd = oldVal.length;\n let newEnd = newVal.length;\n\n while (start < oldEnd && oldVal.charCodeAt(start) === newVal.charCodeAt(start)) {\n start += 1;\n }\n\n while (oldEnd > start && newEnd > start && oldVal.charCodeAt(oldEnd - 1) === newVal.charCodeAt(newEnd - 1)) {\n oldEnd -= 1;\n newEnd -= 1;\n }\n\n return {\n from: start,\n to: oldEnd,\n text: newVal.slice(start, newEnd),\n };\n};\n\nclass CodeMirrorView implements NodeView {\n name: string;\n\n node: ProsemirrorNode;\n\n view: EditorView;\n\n dom: HTMLElement;\n\n cm: CMView;\n\n getPos: () => number;\n\n updating = false;\n\n constructor(options: CodeMirrorViewOptions) {\n // Store for later\n this.node = options.node;\n this.view = options.view;\n const cmExtensions = options.cmOptions?.extensions || [];\n this.name = 'codeBlock',\n\n this.getPos = options.getPos as () => number;\n\n const changeFilter = CMState.changeFilter.of((tr) => {\n if (!tr.docChanged && !this.updating) {\n this.forwardSelection();\n }\n return true;\n });\n\n // Create a CodeMirror instancew\n this.cm = new CMView({\n dispatch: this.dispatch.bind(this),\n });\n\n // The editor's outer node is our DOM representation\n this.dom = this.cm.dom;\n\n const cmState = CMState.create({\n doc: this.node.textContent,\n extensions: [\n orCodeTheme as Extension,\n changeFilter,\n highlightActiveLine(),\n highlightActiveLineGutter(),\n lineNumbers(),\n keymap.of([\n {\n key: 'ArrowUp',\n run: this.mayBeEscape('line', -1),\n },\n {\n key: 'ArrowLeft',\n run: this.mayBeEscape('char', -1),\n },\n {\n key: 'ArrowDown',\n run: this.mayBeEscape('line', 1),\n },\n {\n key: 'ArrowRight',\n run: this.mayBeEscape('char', 1),\n },\n {\n key: 'Ctrl-Enter',\n run: () => {\n if (exitCode(this.view.state, this.view.dispatch)) {\n this.view.focus();\n return true;\n }\n return false;\n },\n },\n ]),\n cmExtensions,\n ],\n });\n\n this.cm.setState(cmState);\n }\n\n forwardSelection() {\n if (!this.cm.hasFocus) {\n return;\n }\n\n const { state } = this.view;\n const selection = this.asProseMirrorSelection(state.doc);\n\n if (!selection.eq(state.selection)) {\n this.view.dispatch(state.tr.setSelection(selection));\n }\n }\n\n asProseMirrorSelection(doc: ProsemirrorNode) {\n const offset = this.getPos() + 1;\n const { anchor, head } = this.cm.state.selection.main;\n return TextSelection.create(doc, anchor + offset, head + offset);\n }\n\n dispatch(cmTr: CMTransaction) {\n this.cm.setState(cmTr.state);\n\n if (cmTr.docChanged && !this.updating) {\n const start = this.getPos() + 1;\n\n const cmValue = cmTr.state.doc.toString();\n const change = computeChange(this.node.textContent, cmValue);\n\n if (!change) {\n return;\n }\n\n const content = change.text ? this.view.state.schema.text(change.text) : null;\n\n const tr = this.view.state.tr.replaceWith(change.from + start, change.to + start, content as ProsemirrorNode);\n this.view.dispatch(tr);\n this.forwardSelection();\n }\n }\n\n mayBeEscape(unit: 'char' | 'line', dir: -1 | 1): Command {\n return (view) => {\n const { state } = view;\n const { selection } = state;\n\n const offsetToPos = () => {\n const offset = selection.main.from;\n const line = state.doc.lineAt(offset);\n return {\n line: line.number,\n ch: offset - line.from,\n };\n };\n\n const pos = offsetToPos();\n const hasSelection = state.selection.ranges.some((r) => !r.empty);\n\n const firstLine = 1;\n const lastLine = state.doc.lineAt(state.doc.length).number;\n\n if (\n hasSelection\n || pos.line !== (dir < 0 ? firstLine : lastLine)\n || (unit === 'char' && pos.ch !== (dir < 0 ? 0 : state.doc.line(pos.line).length))\n ) {\n return false;\n }\n\n const targetPos = this.getPos() + (dir < 0 ? 0 : this.node.nodeSize);\n const pmSelection = Selection.near(this.view.state.doc.resolve(targetPos), dir);\n this.view.dispatch(this.view.state.tr.setSelection(pmSelection).scrollIntoView());\n this.view.focus();\n return true;\n };\n }\n\n update(node: ProsemirrorNode) {\n if (node.type !== this.node.type) {\n return false;\n }\n\n this.node = node;\n const change = computeChange(this.cm.state.doc.toString(), node.textContent);\n\n if (change) {\n this.updating = true;\n this.cm.dispatch({\n changes: {\n from: change.from,\n to: change.to,\n insert: change.text,\n },\n });\n this.updating = false;\n }\n\n return true;\n }\n\n setSelection(anchor: number, head: number): void {\n this.focus();\n this.updating = true;\n this.cm.dispatch({\n selection: {\n anchor,\n head,\n },\n });\n this.updating = false;\n }\n\n focus() {\n this.cm.focus();\n this.forwardSelection();\n }\n\n selectNode() {\n this.focus();\n }\n\n stopEvent() {\n return true;\n }\n\n destroy() {\n this.cm.destroy();\n }\n}\n\nexport default CodeMirrorView;\n","import { Node } from '@tiptap/core';\nimport CodeBlockView from './codemirrorView';\nimport { minimalSetup } from 'codemirror';\nimport { javascript } from '@codemirror/lang-javascript';\n\nexport default Node.create({\n name: 'codeBlock',\n content: 'text*',\n marks: '',\n group: 'block',\n code: true,\n defining: true,\n isolating: true,\n\n parseHTML() {\n return [\n {\n tag: 'pre',\n preserveWhitespace: 'full',\n },\n ];\n },\n\n renderHTML() {\n return ['pre', ['code', 0]];\n },\n\n addNodeView() {\n return ({ node, editor, getPos }) => {\n return new CodeBlockView({\n node,\n view: editor.view,\n getPos: getPos as () => number,\n cmOptions: {\n extensions: [minimalSetup, javascript()],\n },\n });\n };\n },\n});\n","import Blockquote from '@tiptap/extension-blockquote';\nimport Bold from '@tiptap/extension-bold';\nimport BulletList from '@tiptap/extension-bullet-list';\nimport CodeBlock from '@tiptap/extension-code-block';\nimport HardBreak from '@tiptap/extension-hard-break';\nimport Italic from '@tiptap/extension-italic';\nimport ListItem from '@tiptap/extension-list-item';\nimport Paragraph from '@tiptap/extension-paragraph';\nimport OrderedList from '@tiptap/extension-ordered-list';\nimport Strike from '@tiptap/extension-strike';\nimport HorizontalRule from '@tiptap/extension-horizontal-rule';\nimport Link from '@tiptap/extension-link';\nimport Highlight from '@tiptap/extension-highlight';\nimport Underline from '@tiptap/extension-underline';\nimport { marked } from 'marked';\nimport {\n MarkdownSerializer as ProseMirrorMarkdownSerializer,\n defaultMarkdownSerializer,\n} from 'prosemirror-markdown';\nimport { DOMParser as ProseMirrorDOMParser, Node, Mark } from 'prosemirror-model';\n\nconst mdSerializerNodes = {\n ...defaultMarkdownSerializer.nodes,\n [Paragraph.name]: defaultMarkdownSerializer.nodes.paragraph,\n [BulletList.name]: defaultMarkdownSerializer.nodes.bullet_list,\n [ListItem.name]: defaultMarkdownSerializer.nodes.list_item,\n [OrderedList.name]: defaultMarkdownSerializer.nodes.ordered_list,\n [HardBreak.name]: defaultMarkdownSerializer.nodes.hard_break,\n [CodeBlock.name]: defaultMarkdownSerializer.nodes.code_block,\n [Blockquote.name]: defaultMarkdownSerializer.nodes.blockquote,\n [HorizontalRule.name]: defaultMarkdownSerializer.nodes.horizontal_rule,\n};\n\nconst mdSerializerMarks = {\n ...defaultMarkdownSerializer.marks,\n [Bold.name]: defaultMarkdownSerializer.marks.strong,\n [Strike.name]: {\n open: '~~',\n close: '~~',\n mixable: true,\n expelEnclosingWhitespace: true,\n },\n [Italic.name]: {\n open: ' _',\n close: '_ ',\n mixable: true,\n expelEnclosingWhitespace: true,\n },\n [Highlight.name]: {\n open: '==',\n close: '==',\n mixable: true,\n expelEnclosingWhitespace: true,\n },\n [Underline.name]: {\n open: '<u>',\n close: '</u>',\n mixable: true,\n expelEnclosingWhitespace: true,\n },\n [Link.name]: {\n open(state: any, mark: Mark, parent: Node, index: number) {\n return isPlainURL(mark, parent, index, 1) ? '<' : '[';\n },\n close(state: any, mark: Mark, parent: Node, index: number) {\n const href = mark.attrs.canonicalSrc || mark.attrs.href;\n\n return isPlainURL(mark, parent, index, -1)\n ? '>'\n : `](${state.esc(href)}${\n mark.attrs.title ? ` ${state.quote(mark.attrs.title)}` : ''\n })`;\n },\n },\n};\n\nfunction isPlainURL(link: Mark, parent: Node, index: number, side: number) {\n if (link.attrs.title || !/^\\w+:/.test(link.attrs.href)) return false;\n const content = parent.child(index + (side < 0 ? -1 : 0));\n if (\n !content.isText ||\n content.text !== link.attrs.href ||\n content.marks[content.marks.length - 1] !== link\n )\n return false;\n if (index === (side < 0 ? 1 : parent.childCount - 1)) return true;\n const next = parent.child(index + (side < 0 ? -2 : 1));\n return !link.isInSet(next.marks);\n}\n\nexport function serialize(schema: any, content: any) {\n const mdSerializer = new ProseMirrorMarkdownSerializer(\n mdSerializerNodes,\n mdSerializerMarks,\n );\n\n const proseMirrorDocument = schema.nodeFromJSON(content);\n\n return mdSerializer.serialize(proseMirrorDocument, { tightLists: true });\n}\n\nexport function deserialize(schema: any, content?: string) {\n if (!content) return null;\n const html = marked.parse(content);\n\n if (!html) return null;\n\n const parser = new DOMParser();\n const { body } = parser.parseFromString(html, 'text/html');\n\n // append original source as a comment that nodes can access\n body.append(document.createComment(content));\n\n const state = ProseMirrorDOMParser.fromSchema(schema).parse(body);\n return state.toJSON();\n}\n\n","<template>\n <div\n :ref=\"'root'\"\n :class=\"rootStyles\"\n >\n <template v-if=\"$slots.label || $slots.addon || label\">\n <OrLabel\n :variant=\"'input'\"\n :required=\"required\"\n :disabled=\"disabled\"\n >\n <slot name=\"label\">\n {{ label }}\n </slot>\n\n <template v-slot:addon>\n <slot name=\"addon\" />\n </template>\n </OrLabel>\n </template>\n\n <OrInputBox\n :ref=\"'containerRef'\"\n class=\"grow\"\n :direction=\"'column'\"\n :invalid=\"!!error\"\n :disabled=\"disabled\"\n @click=\"handleEditorClick()\"\n >\n <div\n :ref=\"'toolbarRef'\"\n :class=\"toolbarStyles\"\n :disabled=\"disabled || !isFocused\"\n >\n <div\n v-for=\"(tools, index) in toolbar\"\n :key=\"index\"\n :class=\"[...toolbarGroupStyles, { 'hidden': !isVisible(tools)}]\"\n :disabled=\"disabled || !isFocused\"\n >\n <div\n v-for=\"item in tools\"\n :key=\"item\"\n :class=\"['flex gap-md', { 'hidden': !isVisible(item)}]\"\n >\n <OrIconButton\n v-if=\"item === 'heading'\"\n :ref=\"'toolbarButtonRef'\"\n :icon=\"{ icon: headingIcon, variant: 'inherit' }\"\n :tooltip=\"{ content: item, placement: 'top' }\"\n :selected=\"isActive[item]\"\n :disabled=\"disabled || !isFocused\"\n @click=\"menuRef && menuRef.toggle()\"\n />\n\n <OrIconButton\n v-else-if=\"isVisible(item)\"\n :icon=\"{ icon: getRichTextEditorIcon(item), variant: 'inherit' }\"\n :tooltip=\"{ content: getRichTextEditorTooltipIcon(item), placement: 'top' }\"\n :selected=\"isActive[item]\"\n :disabled=\"disabled || !isFocused\"\n @click=\"handleToolbarClick(item)\"\n />\n </div>\n </div>\n\n <OrIconButton\n v-if=\"countOfNotVisibleTools > 0 && !isMobile\"\n :ref=\"'moreButtonRef'\"\n :class=\"['mx-sm']\"\n :icon=\"{ icon: 'more_horiz', variant: 'inherit' }\"\n :disabled=\"disabled || !isFocused\"\n :force-state=\"morePopoverRef && morePopoverRef.state === 'open' ? 'hover' : undefined\"\n @click=\"morePopoverRef && morePopoverRef.open()\"\n />\n </div>\n\n <div :class=\"['p-sm', 'overflow-auto', 'min-h-[88px]', 'h-full']\">\n <textarea\n v-show=\"disableMarkdown\"\n :ref=\"'textareaRef'\"\n v-model=\"sourceValue\"\n :activated=\"disableMarkdown\"\n class=\"block w-full h-full resize-none border-none outline-none bg-transparent typography-body-2-regular\"\n @input=\"handleInput\"\n />\n\n <div\n v-show=\"!disableMarkdown\"\n :ref=\"'controlRef'\"\n :class=\"controlStyles\"\n />\n\n <slot name=\"files\" />\n </div>\n </OrInputBox>\n\n <template v-if=\"$slots.hint || hint\">\n <OrHint\n v-show=\"!error\"\n :disabled=\"disabled\"\n >\n <slot name=\"hint\">\n {{ hint }}\n </slot>\n </OrHint>\n </template>\n\n <OrError\n v-show=\"typeof error === 'string' && error.length > 0\"\n :disabled=\"disabled\"\n >\n {{ error }}\n </OrError>\n\n <OrPopover\n v-if=\"moreButtonRef\"\n :ref=\"'morePopoverRef'\"\n :trigger=\"moreButtonRef && moreButtonRef.root\"\n :placement=\"'top-end'\"\n >\n <div class=\"flex p-sm gap-md\">\n <OrIconButton\n v-for=\"item in notVisibleTools\"\n :key=\"item\"\n :icon=\"{ icon: getRichTextEditorIcon(item), variant: 'inherit' }\"\n :tooltip=\"{ content: getRichTextEditorTooltipIcon(item), placement: 'top' }\"\n :selected=\"isActive[item]\"\n @click=\"handleToolbarClick(item)\"\n />\n </div>\n </OrPopover>\n\n <OrMenu\n v-if=\"toolbarButtonRef\"\n :ref=\"'menuRef'\"\n :trigger=\"toolbarButtonRef[getIndexOfHeading] && toolbarButtonRef[getIndexOfHeading].root\"\n :placement=\"'bottom-start'\"\n >\n <OrMenuItem\n v-for=\"heading in headingLevels\"\n :key=\"heading\"\n :selected=\"activeHeadingLevel === heading\"\n @click=\"handleToolbarClick('heading', heading)\"\n >\n Heading {{ heading }}\n </OrMenuItem>\n\n <OrMenuItem\n :selected=\"!activeHeadingLevel\"\n @click=\"handleToolbarClick('heading')\"\n >\n None\n </OrMenuItem>\n </OrMenu>\n\n <OrModal\n :is-open=\"isOpenLinkModal\"\n :size=\"'s'\"\n >\n <template v-slot:header>\n Add Link\n </template>\n\n <div :class=\"['layout-column', 'gap-md']\">\n <OrInput\n v-model=\"text\"\n :label=\"'Text'\"\n :placeholder=\"'Enter text'\"\n />\n\n <OrInput\n v-model=\"link\"\n :label=\"'Link'\"\n :placeholder=\"'Enter link'\"\n />\n </div>\n\n <template v-slot:footer>\n <div :class=\"['layout-row-reverse', 'gap-md']\">\n <OrButton\n :variant=\"'contained'\"\n @click=\"attachLink()\"\n >\n Save\n </OrButton>\n\n <OrButton\n :variant=\"'outlined'\"\n @click=\"discardLink()\"\n >\n Cancel\n </OrButton>\n </div>\n </template>\n </OrModal>\n </div>\n</template>\n\n<script lang=\"ts\">\nimport { useResponsive } from '@onereach/ui-components-common/hooks';\nimport { isArray } from '@onereach/ui-components-common/utils';\nimport { OrButtonV3 as OrButton } from '@onereach/ui-components.or-button-v3';\nimport { OrErrorV3 as OrError } from '@onereach/ui-components.or-error-v3';\nimport { OrHintV3 as OrHint } from '@onereach/ui-components.or-hint-v3';\nimport { OrIconButtonV3 as OrIconButton } from '@onereach/ui-components.or-icon-button-v3';\nimport { OrInputBoxV3 as OrInputBox } from '@onereach/ui-components.or-input-box-v3';\nimport { OrInputV3 as OrInput } from '@onereach/ui-components.or-input-v3';\nimport { OrLabelV3 as OrLabel } from '@onereach/ui-components.or-label-v3';\nimport { OrMenuItemV3 as OrMenuItem } from '@onereach/ui-components.or-menu-item-v3';\nimport { OrMenuV3 as OrMenu } from '@onereach/ui-components.or-menu-v3';\nimport { OrModalV3 as OrModal } from '@onereach/ui-components.or-modal-v3';\nimport { OrPopoverV3 as OrPopover } from '@onereach/ui-components.or-popover-v3';\nimport { Editor, mergeAttributes } from '@tiptap/core';\nimport Blockquote from '@tiptap/extension-blockquote';\nimport BulletList from '@tiptap/extension-bullet-list';\nimport Heading, { Level } from '@tiptap/extension-heading';\nimport Highlight from '@tiptap/extension-highlight';\nimport Link from '@tiptap/extension-link';\nimport OrderedList from '@tiptap/extension-ordered-list';\nimport Paragraph from '@tiptap/extension-paragraph';\nimport Placeholder from '@tiptap/extension-placeholder';\nimport Underline from '@tiptap/extension-underline';\nimport StarterKit from '@tiptap/starter-kit';\nimport { onClickOutside, useDebounceFn, useResizeObserver } from '@vueuse/core';\nimport { UseFocusTrapReturn, useFocusTrap } from '@vueuse/integrations/useFocusTrap';\nimport { ComponentPublicInstance, PropType, computed, defineComponent, nextTick, onBeforeUnmount, onMounted, ref, shallowRef, watch } from 'vue';\n\nimport { Formats, Tools, RichTextEditorIcons, RichTextEditorTooltips } from './props';\nimport * as Styles from './styles';\nimport codemirrorNode from './utils/codemirror/codemirrorNode';\nimport { deserialize, serialize } from './utils/markdown';\n\nexport default defineComponent({\n name: 'OrRichTextEditor',\n\n components: {\n OrButton,\n OrError,\n OrHint,\n OrIconButton,\n OrInput,\n OrInputBox,\n OrLabel,\n OrMenu,\n OrMenuItem,\n OrModal,\n OrPopover,\n },\n\n model: {\n prop: 'modelValue',\n event: 'update:modelValue',\n },\n\n props: {\n modelValue: {\n type: String,\n default: undefined,\n },\n\n toolbar: {\n type: Array as PropType<Tools>,\n default: () => [],\n },\n\n autofocus: {\n type: Boolean,\n default: false,\n },\n\n format: {\n type: String as PropType<`${Formats}`>,\n default: () => Formats.Markup,\n },\n\n label: {\n type: String,\n default: undefined,\n },\n\n placeholder: {\n type: String,\n default: undefined,\n },\n\n hint: {\n type: String,\n default: undefined,\n },\n\n error: {\n type: [String, Boolean],\n default: undefined,\n },\n\n required: {\n type: Boolean,\n default: false,\n },\n\n disabled: {\n type: Boolean,\n default: false,\n },\n },\n\n emits: [\n 'update:modelValue',\n\n 'input',\n 'file-upload',\n\n 'focus',\n 'blur',\n ],\n\n expose: [\n 'root',\n 'editor',\n ],\n\n setup(props, context) {\n let editor = shallowRef<Editor>();\n const controlRef = ref<HTMLDivElement>();\n const toolbarRef = ref<ComponentPublicInstance<HTMLInputElement>>();\n\n // Refs & Styles\n const root = ref<HTMLElement>();\n\n const textareaRef = ref<HTMLTextAreaElement>();\n const containerRef = ref<ComponentPublicInstance<HTMLInputElement>>();\n const moreButtonRef = ref<InstanceType<typeof OrIconButton>>();\n const morePopoverRef = ref<InstanceType<typeof OrPopover>>();\n const toolbarButtonRef = ref<InstanceType<typeof OrIconButton>>();\n const menuRef = ref<InstanceType<typeof OrMenu>>();\n\n // isActive should be set with default values for all toolbar buttons, otherwise it will not work in vue2\n const isActive = ref<{[key: string]: boolean;}>({\n bold: false,\n italic: false,\n underline: false,\n strike: false,\n bulletList: false,\n orderedList: false,\n link: false,\n highlight: false,\n redo: false,\n undo: false,\n codeBlock: false,\n blockquote: false,\n file: false,\n source: false,\n });\n\n const isFocused = ref<boolean>(props.autofocus);\n const headingLevels = [1, 2, 3, 4] as Level[];\n const activeHeadingLevel = ref<number>(0);\n const markdownOutput = ref<string>('');\n const isOpenLinkModal = ref<boolean>(false);\n const disableMarkdown = ref<boolean>(false);\n const text = ref<string>('');\n const link = ref<string>('');\n const countOfNotVisibleTools = ref<number>(0);\n const sourceValue = ref<string>('');\n\n const { isMobile } = useResponsive();\n\n let trap: UseFocusTrapReturn = useFocusTrap(controlRef, {\n fallbackFocus: '.container',\n allowOutsideClick: true,\n });\n\n\n useResizeObserver(root, useDebounceFn((entries) => {\n const entry = entries[0];\n const { width } = entry.contentRect;\n if (containerRef.value && toolbarRef.value && toolbarLength.value) {\n let lengthOfItem = 0;\n lengthOfItem = (toolbarRef.value.firstElementChild?.firstElementChild as HTMLDivElement)?.offsetWidth + 16;\n\n const count = (width / lengthOfItem) - 2;\n countOfNotVisibleTools.value = Math.round(toolbarLength.value - count);\n }\n }, 10));\n\n onMounted(() => {\n editor.value = new Editor({\n onUpdate: ({ editor }) => {\n isFocused.value = true;\n setActiveFormats();\n const html = editor.getHTML();\n const text = editor.getText();\n if (props.format === 'markdown') {\n markdownOutput.value = serialize(editor.schema, editor.getJSON());\n model.value = markdownOutput.value;\n } else {\n model.value = text === '' ? text : html;\n }\n },\n onCreate: ({ editor }) => {\n if (props.format === 'markdown') {\n editor.commands.setContent(deserialize(editor.schema, model.value));\n } else {\n editor.commands.setContent(model.value as string);\n }\n },\n onFocus(props) {\n context.emit('focus', props);\n },\n onBlur(props) {\n context.emit('blur', props);\n },\n element: controlRef.value,\n autofocus: props.autofocus,\n enableInputRules: true,\n enablePasteRules: true,\n extensions: [\n codemirrorNode,\n StarterKit.configure({\n heading: false,\n codeBlock: false,\n paragraph: false,\n bulletList: false,\n orderedList: false,\n blockquote: false,\n }),\n Paragraph.configure({\n HTMLAttributes: {\n class: 'or-cm-paragraph my-xs',\n },\n }),\n BulletList.configure({\n HTMLAttributes: {\n class: 'or-cm-bulletList mx-lg my-xs list-disc',\n },\n }),\n OrderedList.configure({\n HTMLAttributes: {\n class: 'or-cm-orderedList mx-lg my-xs list-decimal',\n },\n }),\n Blockquote.configure({\n HTMLAttributes: {\n class: 'or-cm-blockquote my-sm mx-lg px-lg border-l-2 border-outline',\n },\n }),\n Heading.configure({ levels: headingLevels }).extend({\n levels: headingLevels,\n renderHTML({ node, HTMLAttributes }) {\n return [\n 'h' + node.attrs.level,\n mergeAttributes(HTMLAttributes, {\n class: `typography-headline-${node.attrs.level} my-xs`,\n }),\n 0,\n ];\n },\n }),\n Underline,\n Link.configure({\n openOnClick: true,\n linkOnPaste: true,\n autolink: false,\n protocols: ['ftp', 'mailto', 'http', 'https'],\n validate: href => /^https?:\\/\\//.test(href),\n HTMLAttributes: {\n class: 'or-cm-link text-primary cursor-pointer',\n },\n }),\n Highlight,\n Placeholder\n .configure({\n placeholder: props.placeholder,\n emptyEditorClass: 'or-cm-placeholder text-outline is-editor-empty',\n }),\n ],\n editorProps: {\n attributes: {\n class: 'or-cm-editorProps flex flex-col focus:outline-none gap-xs h-full',\n },\n },\n parseOptions: {\n preserveWhitespace: true,\n },\n });\n setActiveFormats();\n trap.activate();\n });\n\n onBeforeUnmount(() => {\n editor.value?.destroy();\n });\n\n onClickOutside(root, () => {\n isFocused.value = false;\n trap.deactivate();\n });\n\n // Computed\n const model = computed({\n get: () => {\n return props.modelValue;\n },\n\n set: (value) => {\n context.emit('input', value);\n context.emit('update:modelValue', value);\n },\n });\n\n const getIndexOfHeading = computed(() => {\n return props.toolbar.flat().indexOf('heading');\n });\n\n const getRichTextEditorIcon = computed(() => (item: string) => {\n return RichTextEditorIcons[item as keyof typeof RichTextEditorTooltips];\n });\n\n const getRichTextEditorTooltipIcon = computed(() => (item: string) => {\n return RichTextEditorTooltips[item as keyof typeof RichTextEditorTooltips];\n });\n\n const headingIcon = computed(() => {\n if (activeHeadingLevel.value && isActive.value.heading) {\n return `format_h${activeHeadingLevel.value}`;\n }\n return 'format_paragraph';\n });\n\n const toolbarLength = computed(() => {\n return props.toolbar.flat().length;\n });\n\n const notVisibleTools = computed((): Set<string> => {\n const count = countOfNotVisibleTools.value;\n const toolbar = props.toolbar.flat();\n let notVisible = new Set(toolbar.slice(toolbar.length - count, toolbar.length));\n props.toolbar.forEach(tools => {\n if (tools.some(item => notVisible.has(item))) {\n tools.forEach(item => notVisible.add(item));\n }\n });\n return notVisible;\n });\n\n //Methods\n const handleEditorClick = () => {\n setActiveFormats();\n isFocused.value = true;\n editor.value?.commands.focus();\n activeHeadingLevel.value = editor.value?.getAttributes('heading')?.level || 0;\n };\n\n const isVisible = (value: string | Array<string>) => {\n if (isMobile.value) return true;\n\n if (isArray(value)) {\n const isHaveNotVisibleTools = value.some(item => notVisibleTools.value.has(item));\n return !isHaveNotVisibleTools;\n }\n return !notVisibleTools.value.has(value);\n };\n\n const handleInput = (event: InputEvent) => {\n const target = event.target as HTMLTextAreaElement;\n const value = target.value;\n editor.value?.commands.setContent(deserialize(editor.value?.schema, value));\n markdownOutput.value = serialize(editor.value?.schema, editor.value?.getJSON());\n model.value = markdownOutput.value;\n };\n\n const handleToolbarClick = (item: string, level?: number) => {\n switch (item) {\n case 'source':\n disableMarkdown.value = !disableMarkdown.value;\n sourceValue.value = serialize(editor.value?.schema, editor.value?.getJSON());\n\n textareaRef.value?.style.setProperty('height', `${controlRef.value?.offsetHeight || 88}px`);\n\n nextTick(() => textareaRef.value?.focus());\n break;\n case 'bulletList':\n case 'orderedList':\n item === 'bulletList' ? editor.value?.commands.toggleBulletList() : editor.value?.commands.toggleOrderedList();\n break;\n case 'link':\n if (editor.value) {\n const cursorPosition = editor.value?.state.selection.$anchor.pos || 0;\n const { from, to, empty } = editor.value!.state.selection;\n const isLink = editor.value!.view.state.doc.nodeAt(cursorPosition)?.marks.filter((mark) => mark.type.name === 'link');\n const existedText = isLink?.length ? editor.value!.view.state.doc.nodeAt(cursorPosition)?.text || '' : '';\n\n text.value = empty ? existedText : editor.value!.state.doc.textBetween(from, to, ' ');\n link.value = editor.value!.getAttributes('link').href || '';\n }\n isOpenLinkModal.value = !isOpenLinkModal.value;\n break;\n case 'blockquote':\n editor.value?.chain().toggleBlockquote().run();\n break;\n case 'codeBlock':\n if (!isActive.value['codeBlock']) {\n editor.value?.commands.setNode(item, { language: 'javascript' });\n } else {\n editor.value?.commands.setNode('paragraph');\n }\n break;\n case 'heading':\n if (!level) {\n editor.value?.commands.setParagraph();\n activeHeadingLevel.value = 0;\n } else {\n activeHeadingLevel.value = level;\n editor.value?.commands.toggleHeading({ level: level as Level });\n }\n break;\n case 'undo':\n case 'redo':\n item === 'undo' ? editor.value?.commands.undo() : editor.value?.commands.redo();\n break;\n case 'file':\n context.emit('file-upload');\n break;\n default:\n editor.value?.chain().toggleMark(item).run();\n break;\n }\n };\n\n const attachLink = async () => {\n // empty\n if (link.value === '') {\n editor.value?.chain().focus().extendMarkRange('link').unsetLink().run();\n }\n\n const isEmptySelection = editor.value?.state.selection.empty;\n const cursorPosition = editor.value?.state.selection.$anchor.pos || 0;\n const isLink = editor.value?.view.state.doc.nodeAt(cursorPosition)?.marks.filter((mark) => mark.type.name === 'link');\n const existedText = isLink?.length ? editor.value?.view.state.doc.nodeAt(cursorPosition)?.text : '';\n\n if (link.value && isEmptySelection && !existedText) {\n editor.value?.chain()\n .focus()\n .setMark('link', {\n href: link.value,\n target: '__blank',\n })\n .command(({ tr }) => {\n const preparedValue = text.value[text.value.length - 1] === ' ' ? text.value : `${text.value} `;\n tr.insertText(preparedValue);\n return true;\n })\n .run();\n }\n\n if (link.value && existedText === text.value && isEmptySelection) {\n editor.value?.chain()\n .extendMarkRange('link')\n .updateAttributes('link', {\n href: link.value,\n })\n .run();\n }\n\n if (link.value && !isEmptySelection) {\n editor.value?.chain()\n .focus()\n .setMark('link', {\n href: link.value,\n target: '__blank',\n })\n .run();\n }\n\n text.value = '';\n link.value = '';\n\n isOpenLinkModal.value = false;\n };\n\n const discardLink = () => {\n isOpenLinkModal.value = false;\n };\n\n const setActiveFormats = () => {\n const toolbarList = props.toolbar.flat() as string[];\n toolbarList.forEach((item) => {\n if (item === 'source') {\n isActive.value[item] = disableMarkdown.value;\n } else {\n isActive.value[item] = editor.value?.isActive(item) || false;\n }\n });\n };\n\n\n // Effects\n watch([\n editor,\n model,\n () => props.disabled,\n ], ([\n editor,\n model,\n disabled,\n ]) => {\n if (model !== editor?.getHTML() && props.format !== 'markdown') {\n editor?.commands.setContent(model as string);\n }\n\n if (model !== markdownOutput.value && props.format === 'markdown') {\n editor?.commands.setContent(deserialize(editor?.schema, model));\n }\n\n editor?.setEditable(!disabled);\n });\n\n // Styles\n const rootStyles = computed(() => [\n 'or-rich-text-editor-v3',\n ...Styles.RichTextEditor,\n ]);\n\n const toolbarStyles = computed(() => [\n ...Styles.RichTextEditorToolbar,\n ]);\n\n const toolbarGroupStyles = computed(() => [\n ...Styles.RichTextEditorToolbarGroup,\n ]);\n\n const controlStyles = computed(() => [\n 'tiptap-editor-v3',\n ...Styles.RichTextEditorControl,\n ]);\n\n return {\n root,\n rootStyles,\n\n toolbarRef,\n toolbarStyles,\n\n toolbarGroupStyles,\n\n controlRef,\n controlStyles,\n\n editor,\n containerRef,\n toolbarButtonRef,\n moreButtonRef,\n textareaRef,\n morePopoverRef,\n menuRef,\n handleToolbarClick,\n handleEditorClick,\n isActive,\n getRichTextEditorIcon,\n getRichTextEditorTooltipIcon,\n getIndexOfHeading,\n headingLevels,\n headingIcon,\n attachLink,\n discardLink,\n isOpenLinkModal,\n text,\n link,\n isFocused,\n isVisible,\n isMobile,\n countOfNotVisibleTools,\n notVisibleTools,\n handleInput,\n model,\n disableMarkdown,\n sourceValue,\n activeHeadingLevel,\n };\n },\n});\n</script>\n\n<style scoped lang=\"scss\">\n// Unavoidable hack for bundled (browser) build\n// Created by the fact that this is deep styles in editor\n// As far as we need scoping for browser builds, we can't rely on global existence of this classes\n:deep(.or-cm-paragraph) {\n @apply my-xs;\n}\n\n:deep(.or-cm-bulletList) {\n @apply mx-lg my-xs list-disc;\n}\n\n:deep(.or-cm-orderedList) {\n @apply mx-lg my-xs list-decimal;\n}\n\n:deep(.or-cm-blockquote) {\n @apply my-sm mx-lg px-lg border-l-2 border-outline;\n}\n\n:deep(.or-cm-link) {\n @apply text-primary cursor-pointer;\n}\n\n:deep(.or-cm-placeholder) {\n @apply text-outline;\n}\n\n:deep(.or-cm-editorProps) {\n @apply flex flex-col focus:outline-none gap-xs h-full;\n}\n</style>\n\n<style lang=\"scss\">\n.tiptap-editor-v3 {\n .is-editor-empty::before {\n float: left;\n height: 0;\n pointer-events: none;\n content: attr(data-placeholder);\n }\n}\n</style>\n"],"names":["Formats","RichTextEditorIcons","RichTextEditorTooltips","RichTextEditor","RichTextEditorToolbar","RichTextEditorToolbarGroup","RichTextEditorControl","themes","useTheme","chalky","coral","cyan","invalid","_a","ivory","stone","malibu","sage","whiskey","violet","orCodeTheme","EditorView","_b","_c","_d","_e","_f","_g","_h","_i","_j","orCodeHighlightStyle","HighlightStyle","t","theme","syntaxHighlighting","computeChange","oldVal","newVal","start","oldEnd","newEnd","CodeMirrorView","options","cmExtensions","changeFilter","CMState","tr","CMView","cmState","highlightActiveLine","highlightActiveLineGutter","lineNumbers","keymap","exitCode","state","selection","doc","offset","anchor","head","TextSelection","cmTr","cmValue","change","content","unit","dir","view","pos","line","hasSelection","r","firstLine","lastLine","targetPos","pmSelection","Selection","node","codemirrorNode","Node","editor","getPos","CodeBlockView","minimalSetup","javascript","mdSerializerNodes","defaultMarkdownSerializer","Paragraph","BulletList","ListItem","OrderedList","HardBreak","CodeBlock","Blockquote","HorizontalRule","mdSerializerMarks","Bold","Strike","Italic","Highlight","Underline","Link","mark","parent","index","isPlainURL","href","link","side","next","serialize","schema","mdSerializer","ProseMirrorMarkdownSerializer","proseMirrorDocument","deserialize","html","marked","parser","body","ProseMirrorDOMParser","_sfc_main","defineComponent","OrButton","OrError","OrHint","OrIconButton","OrInput","OrInputBox","OrLabel","OrMenu","OrMenuItem","OrModal","OrPopover","props","context","shallowRef","controlRef","ref","toolbarRef","root","textareaRef","containerRef","moreButtonRef","morePopoverRef","toolbarButtonRef","menuRef","isActive","isFocused","headingLevels","activeHeadingLevel","markdownOutput","isOpenLinkModal","disableMarkdown","text","countOfNotVisibleTools","sourceValue","isMobile","useResponsive","trap","useFocusTrap","useResizeObserver","useDebounceFn","entries","entry","width","toolbarLength","lengthOfItem","count","onMounted","Editor","setActiveFormats","model","StarterKit","Heading","HTMLAttributes","mergeAttributes","Placeholder","onBeforeUnmount","onClickOutside","computed","value","getIndexOfHeading","getRichTextEditorIcon","item","getRichTextEditorTooltipIcon","headingIcon","notVisibleTools","toolbar","notVisible","tools","handleEditorClick","isVisible","isArray","handleInput","event","handleToolbarClick","level","nextTick","cursorPosition","from","to","empty","isLink","existedText","_l","_k","_n","_m","_o","_p","_q","attachLink","isEmptySelection","preparedValue","discardLink","watch","disabled","rootStyles","Styles.RichTextEditor","toolbarStyles","Styles.RichTextEditorToolbar","toolbarGroupStyles","Styles.RichTextEditorToolbarGroup","controlStyles","Styles.RichTextEditorControl","_hoisted_2","_hoisted_5","_resolveComponent","_openBlock","_createElementBlock","_normalizeClass","_ctx","_createBlock","_component_OrLabel","_renderSlot","_createCommentVNode","_createVNode","_component_OrInputBox","_cache","$event","_withCtx","_createElementVNode","_Fragment","_renderList","_component_OrIconButton","_hoisted_1","_hoisted_3","_withDirectives","args","_hoisted_4","_vShow","_vModelText","_component_OrHint","_component_OrError","_component_OrPopover","_component_OrMenu","heading","_component_OrMenuItem","_component_OrModal","_createTextVNode","_hoisted_7","_component_OrButton","_hoisted_6","_component_OrInput"],"mappings":"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"}
|