@onereach/ui-components 25.0.2-beta.5752.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.
@@ -1,4 +1,4 @@
1
- (function(){"use strict";try{if(typeof document<"u"){var e=document.createElement("style");e.appendChild(document.createTextNode("[data-v-f034427c] .or-cm-paragraph{@apply my-xs;}[data-v-f034427c] .or-cm-bulletList{@apply mx-lg my-xs list-disc;}[data-v-f034427c] .or-cm-orderedList{@apply mx-lg my-xs list-decimal;}[data-v-f034427c] .or-cm-blockquote{@apply my-sm mx-lg px-lg border-l-2 border-outline;}[data-v-f034427c] .or-cm-link{@apply text-primary cursor-pointer;}[data-v-f034427c] .or-cm-placeholder{@apply text-outline;}[data-v-f034427c] .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)}})();
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 F, normalizeClass as R, createBlock as H, withCtx as v, renderSlot as ee, createTextVNode as V, toDisplayString as te, createCommentVNode as T, createVNode as $, createElementVNode as q, Fragment as oe, renderList as re, withDirectives as ne, vShow as ae, vModelText as Wt } from "vue";
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 co } from "prosemirror-markdown";
46
- import { DOMParser as uo } from "prosemirror-model";
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, le = n == null ? void 0 : n.backgroundColor["custom-colors-custom-6"], fe = 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"];
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: le,
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: le
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: fe,
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: le
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: le
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: fe
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: fe,
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, i = e.length, l = o.length;
257
- for (; t < i && e.charCodeAt(t) === o.charCodeAt(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 (; i > t && l > t && e.charCodeAt(i - 1) === o.charCodeAt(l - 1); )
260
- i -= 1, l -= 1;
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: i,
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 i = Ce.changeFilter.of((L) => (!L.docChanged && !this.updating && this.forwardSelection(), !0));
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
- i,
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: i, head: l } = this.cm.state.selection.main;
320
- return Gt.create(o, i + t, l + t);
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, i = o.state.doc.toString(), l = Se(this.node.textContent, i);
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 (i) => {
333
- const { state: l } = i, { selection: g } = l, k = (() => {
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
- })(), D = l.selection.ranges.some((y) => !y.empty), U = 1, W = l.doc.lineAt(l.doc.length).number;
340
- if (D || k.line !== (t < 0 ? U : W) || o === "char" && k.ch !== (t < 0 ? 0 : l.doc.line(k.line).length))
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 G = this.getPos() + (t < 0 ? 0 : this.node.nodeSize), B = Jt.near(this.view.state.doc.resolve(G), t);
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, i) {
448
- return Le(o, t, i, 1) ? "<" : "[";
447
+ open(e, o, t, s) {
448
+ return Le(o, t, s, 1) ? "<" : "[";
449
449
  },
450
- close(e, o, t, i) {
450
+ close(e, o, t, s) {
451
451
  const l = o.attrs.canonicalSrc || o.attrs.href;
452
- return Le(o, t, i, -1) ? ">" : `](${e.esc(l)}${o.attrs.title ? ` ${e.quote(o.attrs.title)}` : ""})`;
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, i) {
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 + (i < 0 ? -1 : 0));
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 === (i < 0 ? 1 : o.childCount - 1)) return !0;
462
- const g = o.child(t + (i < 0 ? -2 : 1));
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 de(e, o) {
466
- const t = new co(
465
+ function pe(e, o) {
466
+ const t = new uo(
467
467
  Ao,
468
468
  Po
469
- ), i = e.nodeFromJSON(o);
470
- return t.serialize(i, { tightLists: !0 });
469
+ ), s = e.nodeFromJSON(o);
470
+ return t.serialize(s, { tightLists: !0 });
471
471
  }
472
- function me(e, o) {
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 i = new DOMParser(), { body: l } = i.parseFromString(t, "text/html");
477
- return l.append(document.createComment(o)), uo.fromSchema(e).parse(l).toJSON();
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 i = m(), l = m(), g = m(), L = m(), k = m(), D = m(), U = m(), W = m(), G = m(), B = m({
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(""), s = m(!1), N = m(!1), d = m(""), b = m(""), se = m(0), pe = m(""), { isMobile: ge } = pt();
569
- let he = Et(i, {
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 c = r[0], { width: u } = c.contentRect;
576
- if (k.value && l.value && ve.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 = u / C - 2;
580
- se.value = Math.round(ve.value - M);
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, ce();
586
- const c = r.getHTML(), u = r.getText();
587
- e.format === "markdown" ? (I.value = de(r.schema, r.getJSON()), E.value = I.value) : E.value = u === "" ? u : c;
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(me(r.schema, E.value)) : r.commands.setContent(E.value);
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: i.value,
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: c }) {
634
+ renderHTML({ node: r, HTMLAttributes: u }) {
635
635
  return [
636
636
  "h" + r.attrs.level,
637
- Pt(c, {
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
- }), ce(), he.activate();
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, he.deactivate();
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"), ve = w(() => e.toolbar.flat().length), ie = w(() => {
682
- const r = se.value, c = e.toolbar.flat();
683
- let u = new Set(c.slice(c.length - r, c.length));
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) => u.has(p)) && h.forEach((p) => u.add(p));
686
- }), u;
685
+ h.some((p) => c.has(p)) && h.forEach((p) => c.add(p));
686
+ }), c;
687
687
  }), xe = () => {
688
- var r, c, u;
689
- ce(), y.value = !0, (r = t.value) == null || r.commands.focus(), P.value = ((u = (c = t.value) == null ? void 0 : c.getAttributes("heading")) == null ? void 0 : u.level) || 0;
690
- }, _e = (r) => ge.value ? !0 : gt(r) ? !r.some((u) => ie.value.has(u)) : !ie.value.has(r), et = (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 u = r.target.value;
693
- (p = t.value) == null || p.commands.setContent(me((h = t.value) == null ? void 0 : h.schema, u)), I.value = de((C = t.value) == null ? void 0 : C.schema, (M = t.value) == null ? void 0 : M.getJSON()), E.value = I.value;
694
- }, tt = (r, c) => {
695
- var u, h, p, C, M, J, j, K, Q, X, Y, Z, z, _, be, ke, ye;
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
- N.value = !N.value, pe.value = de((u = t.value) == null ? void 0 : u.schema, (h = t.value) == null ? void 0 : h.getJSON()), (C = L.value) == null || C.style.setProperty("height", `${((p = i.value) == null ? void 0 : p.offsetHeight) || 88}px`), Ut(() => {
699
- var x;
700
- return (x = L.value) == null ? void 0 : x.focus();
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() : (J = t.value) == null || J.commands.toggleOrderedList();
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 x = ((j = t.value) == null ? void 0 : j.state.selection.$anchor.pos) || 0, { from: it, to: ct, empty: ut } = t.value.state.selection, ue = (K = t.value.view.state.doc.nodeAt(x)) == null ? void 0 : K.marks.filter((mt) => mt.type.name === "link"), dt = ue != null && ue.length && ((Q = t.value.view.state.doc.nodeAt(x)) == null ? void 0 : Q.text) || "";
710
- d.value = ut ? dt : t.value.state.doc.textBetween(it, ct, " "), b.value = t.value.getAttributes("link").href || "";
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
- s.value = !s.value;
712
+ H.value = !H.value;
713
713
  break;
714
714
  case "blockquote":
715
- (X = t.value) == null || X.chain().toggleBlockquote().run();
715
+ (Y = t.value) == null || Y.chain().toggleBlockquote().run();
716
716
  break;
717
717
  case "codeBlock":
718
- B.value.codeBlock ? (Z = t.value) == null || Z.commands.setNode("paragraph") : (Y = t.value) == null || Y.commands.setNode(r, { language: "javascript" });
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
- c ? (P.value = c, (_ = t.value) == null || _.commands.toggleHeading({ level: c })) : ((z = t.value) == null || z.commands.setParagraph(), P.value = 0);
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" ? (be = t.value) == null || be.commands.undo() : (ke = t.value) == null || ke.commands.redo();
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
- (ye = t.value) == null || ye.chain().toggleMark(r).run();
731
+ (T = t.value) == null || T.chain().toggleMark(r).run();
732
732
  break;
733
733
  }
734
734
  }, ot = async () => {
735
- var p, C, M, J, j, K, Q, X, Y, Z;
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, c = ((M = t.value) == null ? void 0 : M.state.selection.$anchor.pos) || 0, u = (j = (J = t.value) == null ? void 0 : J.view.state.doc.nodeAt(c)) == null ? void 0 : j.marks.filter((z) => z.type.name === "link"), h = u != null && u.length ? (Q = (K = t.value) == null ? void 0 : K.view.state.doc.nodeAt(c)) == null ? void 0 : Q.text : "";
738
- b.value && r && !h && ((X = t.value) == null || X.chain().focus().setMark("link", {
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: z }) => {
742
- const _ = d.value[d.value.length - 1] === " " ? d.value : `${d.value} `;
743
- return z.insertText(_), !0;
744
- }).run()), b.value && h === d.value && r && ((Y = t.value) == null || Y.chain().extendMarkRange("link").updateAttributes("link", {
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 && ((Z = t.value) == null || Z.chain().focus().setMark("link", {
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 = "", s.value = !1;
755
+ }).run()), d.value = "", b.value = "", H.value = !1;
750
756
  }, rt = () => {
751
- s.value = !1;
752
- }, ce = () => {
753
- e.toolbar.flat().forEach((c) => {
754
- var u;
755
- c === "source" ? B.value[c] = N.value : B.value[c] = ((u = t.value) == null ? void 0 : u.isActive(c)) || !1;
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
- c,
765
- u
770
+ u,
771
+ c
766
772
  ]) => {
767
- c !== (r == null ? void 0 : r.getHTML()) && e.format !== "markdown" && (r == null || r.commands.setContent(c)), c !== I.value && e.format === "markdown" && (r == null || r.commands.setContent(me(r == null ? void 0 : r.schema, c))), r == null || r.setEditable(!u);
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: i,
792
+ controlRef: s,
787
793
  controlStyles: st,
788
794
  editor: t,
789
795
  containerRef: k,
790
- toolbarButtonRef: W,
791
- moreButtonRef: D,
796
+ toolbarButtonRef: G,
797
+ moreButtonRef: U,
792
798
  textareaRef: L,
793
- morePopoverRef: U,
794
- menuRef: G,
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: s,
811
+ isOpenLinkModal: H,
806
812
  text: d,
807
813
  link: b,
808
814
  isFocused: y,
809
815
  isVisible: _e,
810
- isMobile: ge,
811
- countOfNotVisibleTools: se,
812
- notVisibleTools: ie,
816
+ isMobile: be,
817
+ countOfNotVisibleTools: ce,
818
+ notVisibleTools: de,
813
819
  handleInput: et,
814
820
  model: E,
815
- disableMarkdown: N,
816
- sourceValue: pe,
821
+ disableMarkdown: i,
822
+ sourceValue: ve,
817
823
  activeHeadingLevel: P
818
824
  };
819
825
  }
820
826
  }), Ro = ["disabled"], No = ["disabled"], Vo = {
821
- class: /* @__PURE__ */ R(["p-sm", "overflow-auto", "min-h-[88px]", "h-full"])
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__ */ R(["layout-column", "gap-md"])
829
+ class: /* @__PURE__ */ N(["layout-column", "gap-md"])
824
830
  }, Fo = {
825
- class: /* @__PURE__ */ R(["layout-row-reverse", "gap-md"])
831
+ class: /* @__PURE__ */ N(["layout-row-reverse", "gap-md"])
826
832
  };
827
- function qo(e, o, t, i, l, g) {
828
- const L = O("OrLabel"), k = O("OrIconButton"), D = O("OrInputBox"), U = O("OrHint"), W = O("OrError"), G = O("OrPopover"), B = O("OrMenuItem"), y = O("OrMenu"), A = O("OrInput"), P = O("OrButton"), I = O("OrModal");
829
- return f(), F("div", {
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: R(e.rootStyles)
837
+ class: N(e.rootStyles)
832
838
  }, [
833
- e.$slots.label || e.$slots.addon || e.label ? (f(), H(L, {
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
- ee(e.$slots, "addon", {}, void 0, !0)
846
+ re(e.$slots, "addon", {}, void 0, !0)
841
847
  ]),
842
848
  default: v(() => [
843
- ee(e.$slots, "label", {}, () => [
844
- V(te(e.label), 1)
849
+ re(e.$slots, "label", {}, () => [
850
+ V(ne(e.label), 1)
845
851
  ], !0)
846
852
  ]),
847
853
  _: 3
848
- }, 8, ["required", "disabled"])) : T("", !0),
849
- $(D, {
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] = (s) => e.handleEditorClick())
861
+ onClick: o[4] || (o[4] = (i) => e.handleEditorClick())
856
862
  }, {
857
863
  default: v(() => [
858
- q("div", {
864
+ z("div", {
859
865
  ref: "toolbarRef",
860
- class: R(e.toolbarStyles),
866
+ class: N(e.toolbarStyles),
861
867
  disabled: e.disabled || !e.isFocused
862
868
  }, [
863
- (f(!0), F(oe, null, re(e.toolbar, (s, N) => (f(), F("div", {
864
- key: N,
865
- class: R([...e.toolbarGroupStyles, { hidden: !e.isVisible(s) }]),
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), F(oe, null, re(s, (d) => (f(), F("div", {
874
+ (f(!0), q(ae, null, le(i, (d) => (f(), q("div", {
869
875
  key: d,
870
- class: R(["flex gap-md", { hidden: !e.isVisible(d) }])
876
+ class: N(["flex gap-md", { hidden: !e.isVisible(d) }])
871
877
  }, [
872
- d === "heading" ? (f(), H(k, {
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(), H(k, {
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"])) : T("", !0)
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(), H(k, {
897
+ e.countOfNotVisibleTools > 0 && !e.isMobile ? (f(), R(k, {
892
898
  key: 0,
893
899
  ref: "moreButtonRef",
894
- class: R(["mx-sm"]),
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] = (s) => e.morePopoverRef && e.morePopoverRef.open())
899
- }, null, 8, ["disabled", "force-state"])) : T("", !0)
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
- q("div", Vo, [
902
- ne(q("textarea", {
907
+ z("div", Vo, [
908
+ se(z("textarea", {
903
909
  ref: "textareaRef",
904
- "onUpdate:modelValue": o[2] || (o[2] = (s) => e.sourceValue = s),
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] = (...s) => e.handleInput && e.handleInput(...s))
913
+ onInput: o[3] || (o[3] = (...i) => e.handleInput && e.handleInput(...i))
908
914
  }, null, 40, $o), [
909
- [ae, e.disableMarkdown],
915
+ [ie, e.disableMarkdown],
910
916
  [Wt, e.sourceValue]
911
917
  ]),
912
- ne(q("div", {
918
+ se(z("div", {
913
919
  ref: "controlRef",
914
- class: R(e.controlStyles)
920
+ class: N(e.controlStyles)
915
921
  }, null, 2), [
916
- [ae, !e.disableMarkdown]
922
+ [ie, !e.disableMarkdown]
917
923
  ]),
918
- ee(e.$slots, "files", {}, void 0, !0)
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 ? ne((f(), H(U, {
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
- ee(e.$slots, "hint", {}, () => [
929
- V(te(e.hint), 1)
934
+ re(e.$slots, "hint", {}, () => [
935
+ V(ne(e.hint), 1)
930
936
  ], !0)
931
937
  ]),
932
938
  _: 3
933
939
  }, 8, ["disabled"])), [
934
- [ae, !e.error]
935
- ]) : T("", !0),
936
- ne($(W, { disabled: e.disabled }, {
940
+ [ie, !e.error]
941
+ ]) : D("", !0),
942
+ se($(G, { disabled: e.disabled }, {
937
943
  default: v(() => [
938
- V(te(e.error), 1)
944
+ V(ne(e.error), 1)
939
945
  ]),
940
946
  _: 1
941
947
  }, 8, ["disabled"]), [
942
- [ae, typeof e.error == "string" && e.error.length > 0]
948
+ [ie, typeof e.error == "string" && e.error.length > 0]
943
949
  ]),
944
- e.moreButtonRef ? (f(), H(G, {
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
- q("div", Io, [
952
- (f(!0), F(oe, null, re(e.notVisibleTools, (s) => (f(), H(k, {
953
- key: s,
954
- icon: { icon: e.getRichTextEditorIcon(s), variant: "inherit" },
955
- tooltip: { content: e.getRichTextEditorTooltipIcon(s), placement: "top" },
956
- selected: e.isActive[s],
957
- onClick: (N) => e.handleToolbarClick(s)
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"])) : T("", !0),
963
- e.toolbarButtonRef ? (f(), H(y, {
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), F(oe, null, re(e.headingLevels, (s) => (f(), H(B, {
971
- key: s,
972
- selected: e.activeHeadingLevel === s,
973
- onClick: (N) => e.handleToolbarClick("heading", s)
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 " + te(s), 1)
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] = (s) => e.handleToolbarClick("heading"))
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"])) : T("", !0),
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
- q("div", Fo, [
1006
+ z("div", Fo, [
1001
1007
  $(P, {
1002
1008
  variant: "contained",
1003
- onClick: o[8] || (o[8] = (s) => e.attachLink())
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] = (s) => e.discardLink())
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
- q("div", Eo, [
1028
+ z("div", Eo, [
1023
1029
  $(A, {
1024
1030
  modelValue: e.text,
1025
- "onUpdate:modelValue": o[6] || (o[6] = (s) => e.text = s),
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] = (s) => e.link = s),
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-f034427c"]]);
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-B_uVsae1.mjs.map
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-B_uVsae1.mjs";
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";
@@ -1,4 +1,4 @@
1
- import { F as i, O as r, R as s, a } from "../../OrRichTextEditor-B_uVsae1.mjs";
1
+ import { F as i, O as r, R as s, a } from "../../OrRichTextEditor-DJTBMYpL.mjs";
2
2
  export {
3
3
  i as Formats,
4
4
  r as OrRichTextEditorV3,
@@ -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-B_uVsae1.mjs";
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.0.2-beta.5752.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.0.2-beta.5752.0",
50
- "@onereach/ui-components-common": "^25.0.2-beta.5752.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",
@@ -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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"}