UNPKG

@blocknote/core

Version:

A "Notion-style" block-based extensible text editor built on top of Prosemirror and Tiptap.

73 lines (72 loc) 2.03 kB
import { n as e, t } from "./BlockNoteExtension-CbvDA0F7.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 ? /* @__PURE__ */ 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-C4TzkGEn.js.map