@blocknote/core
Version:
A "Notion-style" block-based extensible text editor built on top of Prosemirror and Tiptap.
73 lines (72 loc) • 2.02 kB
JavaScript
import { n as e, t } from "./BlockNoteExtension-B_IEJHS8.js";
import { Plugin as n, PluginKey as r } from "prosemirror-state";
import { Decoration as i, DecorationSet as a } from "prosemirror-view";
//#region src/extensions/ShowSelection/ShowSelection.ts
var o = new r("blocknote-show-selection"), s = t(({ editor: t }) => {
let r = e({ enabledSet: /* @__PURE__ */ new Set() }, { onUpdate() {
t.transact((e) => e.setMeta(o, {}));
} });
return {
key: "showSelection",
store: r,
prosemirrorPlugins: [new n({
key: o,
props: { decorations: (e) => {
let { doc: t, selection: n } = e;
if (r.state.enabledSet.size === 0) return a.empty;
let o = i.inline(n.from, n.to, { "data-show-selection": "true" });
return a.create(t, [o]);
} }
})],
showSelection(e, t) {
r.setState({ enabledSet: e ? new Set([...r.state.enabledSet, t]) : new Set([...r.state.enabledSet].filter((e) => e !== t)) });
}
};
});
//#endregion
//#region src/user/UserStore.ts
function c(t) {
if (!t) throw Error("resolveUsers is required to create a user store");
let n = e(/* @__PURE__ */ new Map()), r = /* @__PURE__ */ new Set(), i = {
store: n,
async loadUsers(e) {
await a(e.filter((e) => !n.state.has(e) && !r.has(e)));
},
async refetchUsers(e) {
await a(e.filter((e) => !r.has(e)));
},
getUser(e) {
return n.state.get(e);
},
setUser(e) {
let t = Array.isArray(e) ? e : [e];
n.setState((e) => {
let n = new Map(e);
for (let e of t) n.set(e.id, e);
return n;
});
}
};
async function a(e) {
if (e.length !== 0) {
for (let t of e) r.add(t);
try {
let r = await t(e, i);
r.length > 0 && n.setState((e) => {
let t = new Map(e);
for (let e of r) t.set(e.id, e);
return t;
});
} finally {
for (let t of e) r.delete(t);
}
}
}
return i;
}
function l(e) {
return typeof e == "function" ? c(e) : e ?? c(async () => []);
}
//#endregion
export { l as n, s as r, c as t };
//# sourceMappingURL=UserStore-QbbPFj0z.js.map