UNPKG

laif-ds

Version:

Design System di Laif con componenti React basati su principi di Atomic Design

377 lines (376 loc) 14.4 kB
"use client"; import { $insertDataTransferForRichText as R, copyToClipboard as S } from "../clipboard/LexicalClipboard.prod.js"; import { $shouldOverrideDefaultCharacterSelection as I, $moveCharacter as P } from "../selection/LexicalSelection.prod.js"; import { addClassNamesToElement as k, mergeRegister as U, objectKlassEquals as g, $getNearestBlockElementAncestorOrThrow as j, $findMatchingParent as B } from "../utils/LexicalUtils.prod.js"; import { ElementNode as z, isHTMLElement as G, $createParagraphNode as h, $applyNodeReplacement as H, setNodeIndentFromDOM as X, KEY_TAB_COMMAND as V, $getSelection as i, $isRangeSelection as u, COMMAND_PRIORITY_EDITOR as a, KEY_SPACE_COMMAND as Z, PASTE_COMMAND as ee, createCommand as te, isDOMNode as ne, isSelectionCapturedInDecoratorInput as re, PASTE_TAG as se, CUT_COMMAND as ae, $isNodeSelection as d, COPY_COMMAND as oe, SELECT_ALL_COMMAND as ie, $selectAll as ue, DRAGOVER_COMMAND as ce, $getNearestNodeFromDOMNode as T, $isDecoratorNode as E, DRAGSTART_COMMAND as le, DROP_COMMAND as de, $createRangeSelection as fe, $isTextNode as me, $normalizeSelection__EXPERIMENTAL as ge, $setSelection as pe, KEY_ESCAPE_COMMAND as Ce, KEY_ENTER_COMMAND as he, INSERT_LINE_BREAK_COMMAND as x, INSERT_PARAGRAPH_COMMAND as $, KEY_DELETE_COMMAND as Ne, DELETE_CHARACTER_COMMAND as A, KEY_BACKSPACE_COMMAND as De, $isRootNode as Ee, OUTDENT_CONTENT_COMMAND as w, KEY_ARROW_RIGHT_COMMAND as Me, KEY_ARROW_LEFT_COMMAND as _e, KEY_ARROW_DOWN_COMMAND as Ae, $getRoot as Oe, $getAdjacentNode as F, KEY_ARROW_UP_COMMAND as Te, INDENT_CONTENT_COMMAND as ve, INSERT_TAB_COMMAND as ye, $insertNodes as Re, $createTabNode as Se, FORMAT_ELEMENT_COMMAND as Ie, FORMAT_TEXT_COMMAND as Pe, REMOVE_TEXT_COMMAND as xe, CONTROLLED_TEXT_INSERTION_COMMAND as $e, DELETE_LINE_COMMAND as we, DELETE_WORD_COMMAND as Fe, CLICK_COMMAND as Ke, $isElementNode as q } from "../../lexical/Lexical.prod.js"; function K(n, e) { if (document.caretRangeFromPoint !== void 0) { const t = document.caretRangeFromPoint(n, e); return t === null ? null : { node: t.startContainer, offset: t.startOffset }; } if (document.caretPositionFromPoint !== "undefined") { const t = document.caretPositionFromPoint(n, e); return t === null ? null : { node: t.offsetNode, offset: t.offset }; } return null; } const p = typeof window < "u" && window.document !== void 0 && window.document.createElement !== void 0, Le = p && "documentMode" in document ? document.documentMode : null, be = !(!p || !("InputEvent" in window) || Le) && "getTargetRanges" in new window.InputEvent("input"), Ye = p && /Version\/[\d.]+.*Safari/.test(navigator.userAgent), L = p && /iPad|iPhone|iPod/.test(navigator.userAgent) && !window.MSStream, We = p && /^(?=.*Chrome).*/i.test(navigator.userAgent), Je = p && /AppleWebKit\/[\d.]+/.test(navigator.userAgent) && !We, b = te("DRAG_DROP_PASTE_FILE"); class M extends z { static getType() { return "quote"; } static clone(e) { return new M(e.__key); } createDOM(e) { const t = document.createElement("blockquote"); return k(t, e.theme.quote), t; } updateDOM(e, t) { return !1; } static importDOM() { return { blockquote: (e) => ({ conversion: ke, priority: 0 }) }; } exportDOM(e) { const { element: t } = super.exportDOM(e); if (G(t)) { this.isEmpty() && t.append(document.createElement("br")); const r = this.getFormatType(); r && (t.style.textAlign = r); const s = this.getDirection(); s && (t.dir = s); } return { element: t }; } static importJSON(e) { return Q().updateFromJSON(e); } insertNewAfter(e, t) { const r = h(), s = this.getDirection(); return r.setDirection(s), this.insertAfter(r, t), r; } collapseAtStart() { const e = h(); return this.getChildren().forEach((t) => e.append(t)), this.replace(e), !0; } canMergeWhenEmpty() { return !0; } } function Q() { return H(new M()); } function Xe(n) { return n instanceof M; } class _ extends z { static getType() { return "heading"; } static clone(e) { return new _(e.__tag, e.__key); } constructor(e, t) { super(t), this.__tag = e; } getTag() { return this.__tag; } setTag(e) { const t = this.getWritable(); return this.__tag = e, t; } createDOM(e) { const t = this.__tag, r = document.createElement(t), s = e.theme.heading; if (s !== void 0) { const o = s[t]; k(r, o); } return r; } updateDOM(e, t, r) { return e.__tag !== this.__tag; } static importDOM() { return { h1: (e) => ({ conversion: m, priority: 0 }), h2: (e) => ({ conversion: m, priority: 0 }), h3: (e) => ({ conversion: m, priority: 0 }), h4: (e) => ({ conversion: m, priority: 0 }), h5: (e) => ({ conversion: m, priority: 0 }), h6: (e) => ({ conversion: m, priority: 0 }), p: (e) => { const t = e.firstChild; return t !== null && Y(t) ? { conversion: () => ({ node: null }), priority: 3 } : null; }, span: (e) => Y(e) ? { conversion: (t) => ({ node: C("h1") }), priority: 3 } : null }; } exportDOM(e) { const { element: t } = super.exportDOM(e); if (G(t)) { this.isEmpty() && t.append(document.createElement("br")); const r = this.getFormatType(); r && (t.style.textAlign = r); const s = this.getDirection(); s && (t.dir = s); } return { element: t }; } static importJSON(e) { return C(e.tag).updateFromJSON(e); } updateFromJSON(e) { return super.updateFromJSON(e).setTag(e.tag); } exportJSON() { return { ...super.exportJSON(), tag: this.getTag() }; } insertNewAfter(e, t = !0) { const r = e ? e.anchor.offset : 0, s = this.getLastDescendant(), o = !s || e && e.anchor.key === s.getKey() && r === s.getTextContentSize() || !e ? h() : C(this.getTag()), l = this.getDirection(); if (o.setDirection(l), this.insertAfter(o, t), r === 0 && !this.isEmpty() && e) { const c = h(); c.select(), this.replace(c, !0); } return o; } collapseAtStart() { const e = this.isEmpty() ? h() : C(this.getTag()); return this.getChildren().forEach((t) => e.append(t)), this.replace(e), !0; } extractWithChild() { return !0; } } function Y(n) { return n.nodeName.toLowerCase() === "span" && n.style.fontSize === "26pt"; } function m(n) { const e = n.nodeName.toLowerCase(); let t = null; return e !== "h1" && e !== "h2" && e !== "h3" && e !== "h4" && e !== "h5" && e !== "h6" || (t = C(e), n.style !== null && (X(n, t), t.setFormat(n.style.textAlign))), { node: t }; } function ke(n) { const e = Q(); return n.style !== null && (e.setFormat(n.style.textAlign), X(n, e)), { node: e }; } function C(n = "h1") { return H(new _(n)); } function qe(n) { return n instanceof _; } function D(n) { let e = null; if (g(n, DragEvent) ? e = n.dataTransfer : g(n, ClipboardEvent) && (e = n.clipboardData), e === null) return [!1, [], !1]; const t = e.types, r = t.includes("Files"), s = t.includes("text/html") || t.includes("text/plain"); return [r, Array.from(e.files), s]; } function W(n) { const e = i(); if (!u(e)) return !1; const t = /* @__PURE__ */ new Set(), r = e.getNodes(); for (let s = 0; s < r.length; s++) { const o = r[s], l = o.getKey(); if (t.has(l)) continue; const c = B(o, (N) => q(N) && !N.isInline()); if (c === null) continue; const f = c.getKey(); c.canIndent() && !t.has(f) && (t.add(f), n(c)); } return t.size > 0; } function J(n) { const e = T(n); return E(e); } function O(n) { for (const e of ["lowercase", "uppercase", "capitalize"]) n.hasFormat(e) && n.toggleFormat(e); } function Qe(n) { return U(n.registerCommand(Ke, (e) => { const t = i(); return !!d(t) && (t.clear(), !0); }, a), n.registerCommand(A, (e) => { const t = i(); return u(t) ? (t.deleteCharacter(e), !0) : !!d(t) && (t.deleteNodes(), !0); }, a), n.registerCommand(Fe, (e) => { const t = i(); return !!u(t) && (t.deleteWord(e), !0); }, a), n.registerCommand(we, (e) => { const t = i(); return !!u(t) && (t.deleteLine(e), !0); }, a), n.registerCommand($e, (e) => { const t = i(); if (typeof e == "string") t !== null && t.insertText(e); else { if (t === null) return !1; const r = e.dataTransfer; if (r != null) R(r, t, n); else if (u(t)) { const s = e.data; return s && t.insertText(s), !0; } } return !0; }, a), n.registerCommand(xe, () => { const e = i(); return !!u(e) && (e.removeText(), !0); }, a), n.registerCommand(Pe, (e) => { const t = i(); return !!u(t) && (t.formatText(e), !0); }, a), n.registerCommand(Ie, (e) => { const t = i(); if (!u(t) && !d(t)) return !1; const r = t.getNodes(); for (const s of r) { const o = B(s, (l) => q(l) && !l.isInline()); o !== null && o.setFormat(e); } return !0; }, a), n.registerCommand(x, (e) => { const t = i(); return !!u(t) && (t.insertLineBreak(e), !0); }, a), n.registerCommand($, () => { const e = i(); return !!u(e) && (e.insertParagraph(), !0); }, a), n.registerCommand(ye, () => (Re([Se()]), !0), a), n.registerCommand(ve, () => W((e) => { const t = e.getIndent(); e.setIndent(t + 1); }), a), n.registerCommand(w, () => W((e) => { const t = e.getIndent(); t > 0 && e.setIndent(Math.max(0, t - 1)); }), a), n.registerCommand(Te, (e) => { const t = i(); if (d(t)) { const r = t.getNodes(); if (r.length > 0) return r[0].selectPrevious(), !0; } else if (u(t)) { const r = F(t.focus, !0); if (!e.shiftKey && E(r) && !r.isIsolated() && !r.isInline()) return r.selectPrevious(), e.preventDefault(), !0; } return !1; }, a), n.registerCommand(Ae, (e) => { const t = i(); if (d(t)) { const r = t.getNodes(); if (r.length > 0) return r[0].selectNext(0, 0), !0; } else if (u(t)) { if (function(s) { const o = s.focus; return o.key === "root" && o.offset === Oe().getChildrenSize(); }(t)) return e.preventDefault(), !0; const r = F(t.focus, !1); if (!e.shiftKey && E(r) && !r.isIsolated() && !r.isInline()) return r.selectNext(), e.preventDefault(), !0; } return !1; }, a), n.registerCommand(_e, (e) => { const t = i(); if (d(t)) { const r = t.getNodes(); if (r.length > 0) return e.preventDefault(), r[0].selectPrevious(), !0; } if (!u(t)) return !1; if (I(t, !0)) { const r = e.shiftKey; return e.preventDefault(), P(t, r, !0), !0; } return !1; }, a), n.registerCommand(Me, (e) => { const t = i(); if (d(t)) { const s = t.getNodes(); if (s.length > 0) return e.preventDefault(), s[0].selectNext(0, 0), !0; } if (!u(t)) return !1; const r = e.shiftKey; return !!I(t, !1) && (e.preventDefault(), P(t, r, !1), !0); }, a), n.registerCommand(De, (e) => { if (J(e.target)) return !1; const t = i(); if (u(t)) { if (function(r) { if (!r.isCollapsed()) return !1; const { anchor: s } = r; if (s.offset !== 0) return !1; const o = s.getNode(); if (Ee(o)) return !1; const l = j(o); return l.getIndent() > 0 && (l.is(o) || o.is(l.getFirstDescendant())); }(t)) return e.preventDefault(), n.dispatchCommand(w, void 0); if (L && navigator.language === "ko-KR") return !1; } else if (!d(t)) return !1; return e.preventDefault(), n.dispatchCommand(A, !0); }, a), n.registerCommand(Ne, (e) => { if (J(e.target)) return !1; const t = i(); return !(!u(t) && !d(t)) && (e.preventDefault(), n.dispatchCommand(A, !1)); }, a), n.registerCommand(he, (e) => { const t = i(); if (!u(t)) return !1; if (O(t), e !== null) { if ((L || Ye || Je) && be) return !1; if (e.preventDefault(), e.shiftKey) return n.dispatchCommand(x, !1); } return n.dispatchCommand($, void 0); }, a), n.registerCommand(Ce, () => { const e = i(); return !!u(e) && (n.blur(), !0); }, a), n.registerCommand(de, (e) => { const [, t] = D(e); if (t.length > 0) { const s = K(e.clientX, e.clientY); if (s !== null) { const { offset: o, node: l } = s, c = T(l); if (c !== null) { const f = fe(); if (me(c)) f.anchor.set(c.getKey(), o, "text"), f.focus.set(c.getKey(), o, "text"); else { const v = c.getParentOrThrow().getKey(), y = c.getIndexWithinParent() + 1; f.anchor.set(v, y, "element"), f.focus.set(v, y, "element"); } const N = ge(f); pe(N); } n.dispatchCommand(b, t); } return e.preventDefault(), !0; } const r = i(); return !!u(r); }, a), n.registerCommand(le, (e) => { const [t] = D(e), r = i(); return !(t && !u(r)); }, a), n.registerCommand(ce, (e) => { const [t] = D(e), r = i(); if (t && !u(r)) return !1; const s = K(e.clientX, e.clientY); if (s !== null) { const o = T(s.node); E(o) && e.preventDefault(); } return !0; }, a), n.registerCommand(ie, () => (ue(), !0), a), n.registerCommand(oe, (e) => (S(n, g(e, ClipboardEvent) ? e : null), !0), a), n.registerCommand(ae, (e) => (async function(t, r) { await S(r, g(t, ClipboardEvent) ? t : null), r.update(() => { const s = i(); u(s) ? s.removeText() : d(s) && s.getNodes().forEach((o) => o.remove()); }); }(e, n), !0), a), n.registerCommand(ee, (e) => { const [, t, r] = D(e); return t.length > 0 && !r ? (n.dispatchCommand(b, t), !0) : ne(e.target) && re(e.target) ? !1 : i() !== null && (function(s, o) { s.preventDefault(), o.update(() => { const l = i(), c = g(s, InputEvent) || g(s, KeyboardEvent) ? null : s.clipboardData; c != null && l !== null && R(c, l, o); }, { tag: se }); }(e, n), !0); }, a), n.registerCommand(Z, (e) => { const t = i(); return u(t) && O(t), !1; }, a), n.registerCommand(V, (e) => { const t = i(); return u(t) && O(t), !1; }, a)); } export { C as $createHeadingNode, Q as $createQuoteNode, qe as $isHeadingNode, Xe as $isQuoteNode, b as DRAG_DROP_PASTE, _ as HeadingNode, M as QuoteNode, D as eventFiles, Qe as registerRichText };