reactjs-tiptap-editor
Version:
A modern WYSIWYG rich text editor based on tiptap and shadcn ui for React
286 lines (285 loc) • 6.53 kB
JavaScript
import { useSyncExternalStore as w, useCallback as V } from "react";
function E({ update: e, notify: t, unwatched: s }) {
return {
link: a,
unlink: g,
propagate: C,
checkDirty: P,
shallowPropagate: x
};
function a(n, i, f) {
const d = i.depsTail;
if (d !== void 0 && d.dep === n)
return;
const u = d !== void 0 ? d.nextDep : i.deps;
if (u !== void 0 && u.dep === n) {
u.version = f, i.depsTail = u;
return;
}
const l = n.subsTail;
if (l !== void 0 && l.version === f && l.sub === i)
return;
const r = i.depsTail = n.subsTail = {
version: f,
dep: n,
sub: i,
prevDep: d,
nextDep: u,
prevSub: l,
nextSub: void 0
};
u !== void 0 && (u.prevDep = r), d !== void 0 ? d.nextDep = r : i.deps = r, l !== void 0 ? l.nextSub = r : n.subs = r;
}
function g(n, i = n.sub) {
const f = n.dep, d = n.prevDep, u = n.nextDep, l = n.nextSub, r = n.prevSub;
return u !== void 0 ? u.prevDep = d : i.depsTail = d, d !== void 0 ? d.nextDep = u : i.deps = u, l !== void 0 ? l.prevSub = r : f.subsTail = r, r !== void 0 ? r.nextSub = l : (f.subs = l) === void 0 && s(f), u;
}
function C(n) {
let i = n.nextSub, f;
e: do {
const d = n.sub;
let u = d.flags;
if (u & 60 ? u & 12 ? u & 4 ? !(u & 48) && A(n, d) ? (d.flags = u | 40, u &= 1) : u = 0 : d.flags = u & -9 | 32 : u = 0 : d.flags = u | 32, u & 2 && t(d), u & 1) {
const l = d.subs;
if (l !== void 0) {
const r = (n = l).nextSub;
r !== void 0 && (f = { value: i, prev: f }, i = r);
continue;
}
}
if ((n = i) !== void 0) {
i = n.nextSub;
continue;
}
for (; f !== void 0; )
if (n = f.value, f = f.prev, n !== void 0) {
i = n.nextSub;
continue e;
}
break;
} while (!0);
}
function P(n, i) {
let f, d = 0, u = !1;
e: do {
const l = n.dep, r = l.flags;
if (i.flags & 16)
u = !0;
else if ((r & 17) === 17) {
if (e(l)) {
const c = l.subs;
c.nextSub !== void 0 && x(c), u = !0;
}
} else if ((r & 33) === 33) {
(n.nextSub !== void 0 || n.prevSub !== void 0) && (f = { value: n, prev: f }), n = l.deps, i = l, ++d;
continue;
}
if (!u) {
const c = n.nextDep;
if (c !== void 0) {
n = c;
continue;
}
}
for (; d--; ) {
const c = i.subs, y = c.nextSub !== void 0;
if (y ? (n = f.value, f = f.prev) : n = c, u) {
if (e(i)) {
y && x(c), i = n.sub;
continue;
}
u = !1;
} else
i.flags &= -33;
i = n.sub;
const T = n.nextDep;
if (T !== void 0) {
n = T;
continue e;
}
}
return u;
} while (!0);
}
function x(n) {
do {
const i = n.sub, f = i.flags;
(f & 48) === 32 && (i.flags = f | 16, (f & 6) === 2 && t(i));
} while ((n = n.nextSub) !== void 0);
}
function A(n, i) {
let f = i.depsTail;
for (; f !== void 0; ) {
if (f === n)
return !0;
f = f.prevDep;
}
return !1;
}
}
let v = 0, o = 0, h = 0, b;
const p = [], { link: m, unlink: I, propagate: M, checkDirty: R, shallowPropagate: j } = E({
update(e) {
return e.depsTail !== void 0 ? B(e) : O(e);
},
notify(e) {
var a;
let t = h, s = t;
do
if (p[t++] = e, e.flags &= -3, e = (a = e.subs) == null ? void 0 : a.sub, e === void 0 || !(e.flags & 2))
break;
while (!0);
for (h = t; s < --t; ) {
const g = p[s];
p[s++] = p[t], p[t] = g;
}
},
unwatched(e) {
e.flags & 1 ? e.depsTail !== void 0 && (e.depsTail = void 0, e.flags = 17, S(e)) : q.call(e);
}
});
function D(e) {
const t = b;
return b = e, t;
}
function z(e) {
return H.bind({
currentValue: e,
pendingValue: e,
subs: void 0,
subsTail: void 0,
flags: 1
});
}
function L(e) {
const t = {
fn: e,
subs: void 0,
subsTail: void 0,
deps: void 0,
depsTail: void 0,
flags: 6
}, s = D(t);
s !== void 0 && m(t, s, 0);
try {
t.fn();
} finally {
b = s, t.flags &= -5;
}
return J.bind(t);
}
function B(e) {
++v, e.depsTail = void 0, e.flags = 5;
const t = D(e);
try {
const s = e.value;
return s !== (e.value = e.getter(s));
} finally {
b = t, e.flags &= -5, S(e);
}
}
function O(e) {
return e.flags = 1, e.currentValue !== (e.currentValue = e.pendingValue);
}
function F(e) {
const t = e.flags;
if (t & 16 || t & 32 && R(e.deps, e)) {
++v, e.depsTail = void 0, e.flags = 6;
const s = D(e);
try {
e.fn();
} finally {
b = s, e.flags &= -5, S(e);
}
} else
e.flags = 2;
}
function G() {
try {
for (; o < h; ) {
const e = p[o];
p[o++] = void 0, F(e);
}
} finally {
for (; o < h; ) {
const e = p[o];
p[o++] = void 0, e.flags |= 10;
}
o = 0, h = 0;
}
}
function H(...e) {
var t;
if (e.length) {
if (this.pendingValue !== (this.pendingValue = e[0])) {
this.flags = 17;
const s = this.subs;
s !== void 0 && (M(s), G());
}
} else {
if (this.flags & 16 && O(this)) {
const a = this.subs;
a !== void 0 && j(a);
}
let s = b;
for (; s !== void 0; ) {
if (s.flags & 3) {
m(this, s, v);
break;
}
s = (t = s.subs) == null ? void 0 : t.sub;
}
return this.currentValue;
}
}
function J() {
q.call(this);
}
function q() {
this.depsTail = void 0, this.flags = 0, S(this);
const e = this.subs;
e !== void 0 && I(e);
}
function S(e) {
const t = e.depsTail;
let s = t !== void 0 ? t.nextDep : e.deps;
for (; s !== void 0; )
s = I(s, e);
}
var N = z;
function Q(e) {
let t = w((a) => {
let g = L(() => {
e(), a();
});
return () => g();
}, () => e(), () => e()), s = V((a) => {
e(typeof a == "function" ? a(e()) : a);
}, []);
return [t, s];
}
function U(e) {
return w((t) => {
let s = L(() => {
e(), t();
});
return () => s();
}, () => e(), () => e());
}
function W(e) {
return V((t) => {
e(typeof t == "function" ? t(e()) : t);
}, []);
}
function X(e) {
return { value: () => e(), setValue: (t) => {
e(typeof t == "function" ? t(e()) : t);
} };
}
export {
W as S,
Q as V,
U as b,
X as v,
N as y
};