quoin-editor 0.4.2 → 1.0.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.
- package/CHANGELOG.md +205 -0
- package/MIGRATION.md +233 -0
- package/README.md +78 -716
- package/dist/ai.cjs +1107 -0
- package/dist/ai.cjs.map +1 -0
- package/dist/ai.d.cts +68 -0
- package/dist/ai.d.ts +68 -0
- package/dist/ai.js +1107 -0
- package/dist/ai.js.map +1 -0
- package/dist/catalogue.cjs +59 -0
- package/dist/catalogue.cjs.map +1 -0
- package/dist/catalogue.d.cts +39 -0
- package/dist/catalogue.d.ts +39 -0
- package/dist/catalogue.js +59 -0
- package/dist/catalogue.js.map +1 -0
- package/dist/chunk-2QCRZ7OL.cjs +319 -0
- package/dist/chunk-2QCRZ7OL.cjs.map +1 -0
- package/dist/chunk-2VDK27IF.cjs +6666 -0
- package/dist/chunk-2VDK27IF.cjs.map +1 -0
- package/dist/chunk-47MLKSI2.js +326 -0
- package/dist/chunk-47MLKSI2.js.map +1 -0
- package/dist/chunk-5DNCCN6X.cjs +326 -0
- package/dist/chunk-5DNCCN6X.cjs.map +1 -0
- package/dist/chunk-AEJXZBVR.cjs +1378 -0
- package/dist/chunk-AEJXZBVR.cjs.map +1 -0
- package/dist/chunk-CDELOHDY.cjs +239 -0
- package/dist/chunk-CDELOHDY.cjs.map +1 -0
- package/dist/chunk-E75EHRPA.cjs +175 -0
- package/dist/chunk-E75EHRPA.cjs.map +1 -0
- package/dist/chunk-EL2OEJQC.cjs +562 -0
- package/dist/chunk-EL2OEJQC.cjs.map +1 -0
- package/dist/chunk-GLLXHMH2.cjs +25 -0
- package/dist/chunk-GLLXHMH2.cjs.map +1 -0
- package/dist/chunk-GTTPVJSD.cjs +3286 -0
- package/dist/chunk-GTTPVJSD.cjs.map +1 -0
- package/dist/chunk-HELJTLNC.cjs +100 -0
- package/dist/chunk-HELJTLNC.cjs.map +1 -0
- package/dist/chunk-HJIQT3S5.js +4047 -0
- package/dist/chunk-HJIQT3S5.js.map +1 -0
- package/dist/chunk-HZSSEYJS.cjs +504 -0
- package/dist/chunk-HZSSEYJS.cjs.map +1 -0
- package/dist/chunk-JDPTZUBW.js +184 -0
- package/dist/chunk-JDPTZUBW.js.map +1 -0
- package/dist/chunk-JEIFJHEI.js +14 -0
- package/dist/chunk-JEIFJHEI.js.map +1 -0
- package/dist/chunk-K574XHMM.js +25 -0
- package/dist/chunk-K574XHMM.js.map +1 -0
- package/dist/chunk-KAVU6T6J.js +249 -0
- package/dist/chunk-KAVU6T6J.js.map +1 -0
- package/dist/chunk-KXOBZGQO.js +1378 -0
- package/dist/chunk-KXOBZGQO.js.map +1 -0
- package/dist/chunk-LCQSG4M6.js +3335 -0
- package/dist/chunk-LCQSG4M6.js.map +1 -0
- package/dist/chunk-MQ2XQ4MX.js +100 -0
- package/dist/chunk-MQ2XQ4MX.js.map +1 -0
- package/dist/chunk-ND5XJVK2.cjs +3335 -0
- package/dist/chunk-ND5XJVK2.cjs.map +1 -0
- package/dist/chunk-NNDYYEW5.js +504 -0
- package/dist/chunk-NNDYYEW5.js.map +1 -0
- package/dist/chunk-NOKWNK2O.js +319 -0
- package/dist/chunk-NOKWNK2O.js.map +1 -0
- package/dist/chunk-OMOBMXD5.cjs +57 -0
- package/dist/chunk-OMOBMXD5.cjs.map +1 -0
- package/dist/chunk-PMWCQSQX.js +239 -0
- package/dist/chunk-PMWCQSQX.js.map +1 -0
- package/dist/chunk-POBM7MGR.js +30 -0
- package/dist/chunk-POBM7MGR.js.map +1 -0
- package/dist/chunk-PWUEPDA3.cjs +598 -0
- package/dist/chunk-PWUEPDA3.cjs.map +1 -0
- package/dist/chunk-PZ4GT5JO.cjs +4047 -0
- package/dist/chunk-PZ4GT5JO.cjs.map +1 -0
- package/dist/chunk-QAW5NH6S.cjs +14 -0
- package/dist/chunk-QAW5NH6S.cjs.map +1 -0
- package/dist/chunk-RDG4VI6E.cjs +706 -0
- package/dist/chunk-RDG4VI6E.cjs.map +1 -0
- package/dist/chunk-RUDWMKYX.js +562 -0
- package/dist/chunk-RUDWMKYX.js.map +1 -0
- package/dist/chunk-SG37UBDO.js +706 -0
- package/dist/chunk-SG37UBDO.js.map +1 -0
- package/dist/chunk-SLVDAHHK.cjs +30 -0
- package/dist/chunk-SLVDAHHK.cjs.map +1 -0
- package/dist/chunk-T7SW6OWV.js +598 -0
- package/dist/chunk-T7SW6OWV.js.map +1 -0
- package/dist/chunk-TC4DARU2.js +175 -0
- package/dist/chunk-TC4DARU2.js.map +1 -0
- package/dist/chunk-WQHV3MRE.cjs +184 -0
- package/dist/chunk-WQHV3MRE.cjs.map +1 -0
- package/dist/chunk-WXMYDXPN.cjs +33 -0
- package/dist/chunk-WXMYDXPN.cjs.map +1 -0
- package/dist/chunk-XEBWC7ZL.js +57 -0
- package/dist/chunk-XEBWC7ZL.js.map +1 -0
- package/dist/chunk-ZC24WB7Y.cjs +249 -0
- package/dist/chunk-ZC24WB7Y.cjs.map +1 -0
- package/dist/chunk-ZGZEJCRV.js +6666 -0
- package/dist/chunk-ZGZEJCRV.js.map +1 -0
- package/dist/chunk-ZHOSSWUM.js +33 -0
- package/dist/chunk-ZHOSSWUM.js.map +1 -0
- package/dist/chunk-ZS2WA357.js +3286 -0
- package/dist/chunk-ZS2WA357.js.map +1 -0
- package/dist/comments.cjs +993 -0
- package/dist/comments.cjs.map +1 -0
- package/dist/comments.d.cts +88 -0
- package/dist/comments.d.ts +88 -0
- package/dist/comments.js +993 -0
- package/dist/comments.js.map +1 -0
- package/dist/diff.cjs +343 -0
- package/dist/diff.cjs.map +1 -0
- package/dist/diff.d.cts +67 -0
- package/dist/diff.d.ts +67 -0
- package/dist/diff.js +343 -0
- package/dist/diff.js.map +1 -0
- package/dist/docx.cjs +854 -0
- package/dist/docx.cjs.map +1 -0
- package/dist/docx.d.cts +27 -0
- package/dist/docx.d.ts +27 -0
- package/dist/docx.js +854 -0
- package/dist/docx.js.map +1 -0
- package/dist/embed-provider-jXwlRmnp.d.cts +19 -0
- package/dist/embed-provider-jXwlRmnp.d.ts +19 -0
- package/dist/embed.cjs +17 -0
- package/dist/embed.cjs.map +1 -0
- package/dist/embed.d.cts +56 -0
- package/dist/embed.d.ts +56 -0
- package/dist/embed.js +17 -0
- package/dist/embed.js.map +1 -0
- package/dist/emoji-data.cjs +1968 -0
- package/dist/emoji-data.cjs.map +1 -0
- package/dist/emoji-data.js +1968 -0
- package/dist/emoji-data.js.map +1 -0
- package/dist/emoji-extension-C12gDPm6.d.cts +46 -0
- package/dist/emoji-extension-DpQ43HjE.d.ts +46 -0
- package/dist/emoji.cjs +18 -0
- package/dist/emoji.cjs.map +1 -0
- package/dist/emoji.d.cts +31 -0
- package/dist/emoji.d.ts +31 -0
- package/dist/emoji.js +18 -0
- package/dist/emoji.js.map +1 -0
- package/dist/engine.cjs +119 -0
- package/dist/engine.cjs.map +1 -0
- package/dist/engine.d.cts +144 -0
- package/dist/engine.d.ts +144 -0
- package/dist/engine.js +119 -0
- package/dist/engine.js.map +1 -0
- package/dist/find-extension-DKqLLSuP.d.ts +41 -0
- package/dist/find-extension-_sbZEt3R.d.cts +41 -0
- package/dist/find.cjs +20 -0
- package/dist/find.cjs.map +1 -0
- package/dist/find.d.cts +44 -0
- package/dist/find.d.ts +44 -0
- package/dist/find.js +20 -0
- package/dist/find.js.map +1 -0
- package/dist/headless.cjs +151 -518
- package/dist/headless.cjs.map +1 -1
- package/dist/headless.d.cts +102 -69
- package/dist/headless.d.ts +102 -69
- package/dist/headless.js +149 -467
- package/dist/headless.js.map +1 -1
- package/dist/index-CgD72kHB.d.cts +65 -0
- package/dist/index-DNYbTK3w.d.ts +65 -0
- package/dist/index.cjs +183 -2753
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +345 -253
- package/dist/index.d.ts +345 -253
- package/dist/index.js +168 -2696
- package/dist/index.js.map +1 -1
- package/dist/math.cjs +18 -0
- package/dist/math.cjs.map +1 -0
- package/dist/math.d.cts +49 -0
- package/dist/math.d.ts +49 -0
- package/dist/math.js +18 -0
- package/dist/math.js.map +1 -0
- package/dist/mention.cjs +18 -0
- package/dist/mention.cjs.map +1 -0
- package/dist/mention.d.cts +50 -0
- package/dist/mention.d.ts +50 -0
- package/dist/mention.js +18 -0
- package/dist/mention.js.map +1 -0
- package/dist/presence.cjs +565 -0
- package/dist/presence.cjs.map +1 -0
- package/dist/presence.d.cts +30 -0
- package/dist/presence.d.ts +30 -0
- package/dist/presence.js +565 -0
- package/dist/presence.js.map +1 -0
- package/dist/registry-CWBOSAHm.d.cts +121 -0
- package/dist/registry-CWBOSAHm.d.ts +121 -0
- package/dist/stats-extension-Bly88uio.d.ts +40 -0
- package/dist/stats-extension-CJPijvUb.d.cts +40 -0
- package/dist/stats.cjs +19 -0
- package/dist/stats.cjs.map +1 -0
- package/dist/stats.d.cts +19 -0
- package/dist/stats.d.ts +19 -0
- package/dist/stats.js +19 -0
- package/dist/stats.js.map +1 -0
- package/dist/styles.css +1 -1
- package/dist/table-extension-BTLxFy2S.d.cts +57 -0
- package/dist/table-extension-Dzf4k6hI.d.ts +57 -0
- package/dist/table.cjs +50 -0
- package/dist/table.cjs.map +1 -0
- package/dist/table.d.cts +57 -0
- package/dist/table.d.ts +57 -0
- package/dist/table.js +50 -0
- package/dist/table.js.map +1 -0
- package/dist/to-html-C5t7xyaM.d.ts +21 -0
- package/dist/to-html-CNCITCln.d.cts +21 -0
- package/dist/toc-extension-B3-s6h2x.d.cts +25 -0
- package/dist/toc-extension-DWm5alVj.d.ts +25 -0
- package/dist/toc.cjs +18 -0
- package/dist/toc.cjs.map +1 -0
- package/dist/toc.d.cts +24 -0
- package/dist/toc.d.ts +24 -0
- package/dist/toc.js +18 -0
- package/dist/toc.js.map +1 -0
- package/dist/types-Cz7XJLaK.d.cts +366 -0
- package/dist/types-DULc8wwg.d.cts +120 -0
- package/dist/types-DULc8wwg.d.ts +120 -0
- package/dist/types-a1CRBlEh.d.ts +366 -0
- package/dist/view-controller-DSHw0ltQ.d.cts +118 -0
- package/dist/view-controller-UbpzblGl.d.ts +118 -0
- package/dist/view.cjs +23 -0
- package/dist/view.cjs.map +1 -0
- package/dist/view.d.cts +40 -0
- package/dist/view.d.ts +40 -0
- package/dist/view.js +23 -0
- package/dist/view.js.map +1 -0
- package/dist/yjs.cjs +1026 -0
- package/dist/yjs.cjs.map +1 -0
- package/dist/yjs.d.cts +22 -0
- package/dist/yjs.d.ts +22 -0
- package/dist/yjs.js +1026 -0
- package/dist/yjs.js.map +1 -0
- package/package.json +217 -18
|
@@ -0,0 +1,565 @@
|
|
|
1
|
+
'use client';"use strict";Object.defineProperty(exports, "__esModule", {value: true}); function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { newObj[key] = obj[key]; } } } newObj.default = obj; return newObj; } } function _nullishCoalesce(lhs, rhsFn) { if (lhs != null) { return lhs; } else { return rhsFn(); } } function _optionalChain(ops) { let lastAccessLHS = undefined; let value = ops[0]; let i = 1; while (i < ops.length) { const op = ops[i]; const fn = ops[i + 1]; i += 2; if ((op === 'optionalAccess' || op === 'optionalCall') && value == null) { return undefined; } if (op === 'access' || op === 'optionalAccess') { lastAccessLHS = value; value = fn(value); } else if (op === 'call' || op === 'optionalCall') { value = fn((...args) => value.call(lastAccessLHS, ...args)); lastAccessLHS = undefined; } } return value; }"use client";
|
|
2
|
+
|
|
3
|
+
|
|
4
|
+
var _chunkQAW5NH6Scjs = require('./chunk-QAW5NH6S.cjs');
|
|
5
|
+
|
|
6
|
+
|
|
7
|
+
|
|
8
|
+
var _chunkWXMYDXPNcjs = require('./chunk-WXMYDXPN.cjs');
|
|
9
|
+
require('./chunk-2VDK27IF.cjs');
|
|
10
|
+
|
|
11
|
+
|
|
12
|
+
|
|
13
|
+
|
|
14
|
+
var _chunkGTTPVJSDcjs = require('./chunk-GTTPVJSD.cjs');
|
|
15
|
+
|
|
16
|
+
|
|
17
|
+
var _chunkOMOBMXD5cjs = require('./chunk-OMOBMXD5.cjs');
|
|
18
|
+
|
|
19
|
+
|
|
20
|
+
|
|
21
|
+
|
|
22
|
+
var _chunkE75EHRPAcjs = require('./chunk-E75EHRPA.cjs');
|
|
23
|
+
|
|
24
|
+
|
|
25
|
+
|
|
26
|
+
|
|
27
|
+
|
|
28
|
+
|
|
29
|
+
|
|
30
|
+
|
|
31
|
+
|
|
32
|
+
|
|
33
|
+
|
|
34
|
+
var _chunkPZ4GT5JOcjs = require('./chunk-PZ4GT5JO.cjs');
|
|
35
|
+
require('./chunk-2QCRZ7OL.cjs');
|
|
36
|
+
require('./chunk-ND5XJVK2.cjs');
|
|
37
|
+
|
|
38
|
+
// src/extensions/presence/PresenceAvatars.tsx
|
|
39
|
+
var _react = require('react');
|
|
40
|
+
|
|
41
|
+
// src/extensions/presence/presence-plugin.ts
|
|
42
|
+
var presenceKey = _chunkPZ4GT5JOcjs.createPluginKey.call(void 0, "presence");
|
|
43
|
+
var PRESENCE = "presence";
|
|
44
|
+
var samePeer = (a, b) => a.client === b.client && a.name === b.name && a.color === b.color && a.idle === b.idle && _chunkPZ4GT5JOcjs.sameSelection.call(void 0, a.selection, b.selection);
|
|
45
|
+
var samePeers = (a, b) => a.length === b.length && a.every((peer, i) => samePeer(peer, b[i]));
|
|
46
|
+
var NO_PEERS = [];
|
|
47
|
+
var presencePlugin = {
|
|
48
|
+
key: presenceKey,
|
|
49
|
+
init: () => NO_PEERS,
|
|
50
|
+
apply(tr, peers) {
|
|
51
|
+
const given = tr.getMeta(PRESENCE);
|
|
52
|
+
if (given !== void 0) return given;
|
|
53
|
+
if (!tr.docChanged) return peers;
|
|
54
|
+
let moved = false;
|
|
55
|
+
const next = peers.map((peer) => {
|
|
56
|
+
const selection = peer.selection && _chunkPZ4GT5JOcjs.mapSelection.call(void 0, peer.selection, (pos) => tr.mapPos(pos, -1), tr.before.doc);
|
|
57
|
+
if (selection === peer.selection) return peer;
|
|
58
|
+
moved = true;
|
|
59
|
+
return { ...peer, selection };
|
|
60
|
+
});
|
|
61
|
+
return moved ? next : peers;
|
|
62
|
+
}
|
|
63
|
+
};
|
|
64
|
+
|
|
65
|
+
// src/extensions/presence/PresenceAvatars.tsx
|
|
66
|
+
var _jsxruntime = require('react/jsx-runtime');
|
|
67
|
+
var headBlock = (selection) => selection.kind === "node" ? selection.block : selection.kind === "blocks" ? selection.head : selection.head.block;
|
|
68
|
+
var initials = (name) => name.trim().split(/\s+/).slice(0, 2).map((word) => _nullishCoalesce(_optionalChain([Array, 'access', _ => _.from, 'call', _2 => _2(word), 'access', _3 => _3[0], 'optionalAccess', _4 => _4.toUpperCase, 'call', _5 => _5()]), () => ( ""))).join("");
|
|
69
|
+
function groupsOf(state) {
|
|
70
|
+
const byBlock = /* @__PURE__ */ new Map();
|
|
71
|
+
for (const { client, name, color, selection } of _chunkPZ4GT5JOcjs.getPluginState.call(void 0, state, presenceKey)) {
|
|
72
|
+
if (selection === null) continue;
|
|
73
|
+
const block = headBlock(selection);
|
|
74
|
+
byBlock.set(block, [..._nullishCoalesce(byBlock.get(block), () => ( [])), { client, name, color }]);
|
|
75
|
+
}
|
|
76
|
+
return [...byBlock];
|
|
77
|
+
}
|
|
78
|
+
var sameGroups = (a, b) => JSON.stringify(a) === JSON.stringify(b);
|
|
79
|
+
function place(controller, root, group) {
|
|
80
|
+
const shell = controller.blockElement(_nullishCoalesce(group.dataset.block, () => ( "")));
|
|
81
|
+
group.style.visibility = shell === void 0 ? "hidden" : "";
|
|
82
|
+
if (shell === void 0) return;
|
|
83
|
+
const top = shell.getBoundingClientRect().top - root.getBoundingClientRect().top - root.clientTop + root.scrollTop;
|
|
84
|
+
group.style.transform = `translateY(${top}px)`;
|
|
85
|
+
}
|
|
86
|
+
function PresenceAvatars({ controller, labels }) {
|
|
87
|
+
const groups = _chunkGTTPVJSDcjs.useEditorState.call(void 0, controller, groupsOf, sameGroups);
|
|
88
|
+
const box = _react.useRef.call(void 0, null);
|
|
89
|
+
_chunkGTTPVJSDcjs.useIsomorphicLayoutEffect.call(void 0, () => {
|
|
90
|
+
const root = controller.root;
|
|
91
|
+
const view = _optionalChain([root, 'optionalAccess', _6 => _6.ownerDocument, 'access', _7 => _7.defaultView]);
|
|
92
|
+
if (!root || !view || box.current === null) return void 0;
|
|
93
|
+
const children = Array.from(box.current.children);
|
|
94
|
+
const update = () => children.forEach((group) => place(controller, root, group));
|
|
95
|
+
update();
|
|
96
|
+
let frame = 0;
|
|
97
|
+
const later = () => {
|
|
98
|
+
view.cancelAnimationFrame(frame);
|
|
99
|
+
frame = view.requestAnimationFrame(update);
|
|
100
|
+
};
|
|
101
|
+
const unsubscribe = controller.editor.subscribe(later);
|
|
102
|
+
const observer = new ResizeObserver(later);
|
|
103
|
+
observer.observe(root);
|
|
104
|
+
return () => {
|
|
105
|
+
view.cancelAnimationFrame(frame);
|
|
106
|
+
unsubscribe();
|
|
107
|
+
observer.disconnect();
|
|
108
|
+
};
|
|
109
|
+
}, [controller, groups]);
|
|
110
|
+
return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { ref: box, className: "quoin-presence-avatars", children: groups.map(([block, people]) => /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
111
|
+
"div",
|
|
112
|
+
{
|
|
113
|
+
"data-block": block,
|
|
114
|
+
role: "img",
|
|
115
|
+
"aria-label": labels.here(people.map(({ name }) => name)),
|
|
116
|
+
className: "quoin-presence-group",
|
|
117
|
+
children: people.map(({ client, name, color }) => /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
118
|
+
"span",
|
|
119
|
+
{
|
|
120
|
+
className: "quoin-presence-avatar",
|
|
121
|
+
style: color === void 0 ? void 0 : { "--quoin-presence": color },
|
|
122
|
+
children: initials(name)
|
|
123
|
+
},
|
|
124
|
+
client
|
|
125
|
+
))
|
|
126
|
+
},
|
|
127
|
+
block
|
|
128
|
+
)) });
|
|
129
|
+
}
|
|
130
|
+
|
|
131
|
+
// src/extensions/presence/presence-decorations.ts
|
|
132
|
+
function tintOf(state, { color, selection }) {
|
|
133
|
+
if (_optionalChain([selection, 'optionalAccess', _8 => _8.kind]) !== "text") return [];
|
|
134
|
+
if (![selection.anchor, selection.head].every(({ block }) => state.doc.index.has(block))) return [];
|
|
135
|
+
const attrs = { class: "quoin-presence-selection" };
|
|
136
|
+
if (color !== void 0) attrs.style = `--quoin-presence:${color}`;
|
|
137
|
+
return _chunkPZ4GT5JOcjs.markRanges.call(void 0, { ...state, selection }).map((range) => ({ kind: "inline", ...range, attrs }));
|
|
138
|
+
}
|
|
139
|
+
var drawn = /* @__PURE__ */ new WeakMap();
|
|
140
|
+
function peerDecorations(state, peer) {
|
|
141
|
+
const last = drawn.get(peer);
|
|
142
|
+
if (_optionalChain([last, 'optionalAccess', _9 => _9.doc]) === state.doc) return last.decorations;
|
|
143
|
+
const decorations = tintOf(state, peer);
|
|
144
|
+
drawn.set(peer, { doc: state.doc, decorations });
|
|
145
|
+
return decorations;
|
|
146
|
+
}
|
|
147
|
+
function presenceDecorations(state) {
|
|
148
|
+
return _chunkPZ4GT5JOcjs.getPluginState.call(void 0, state, presenceKey).flatMap((peer) => peerDecorations(state, peer));
|
|
149
|
+
}
|
|
150
|
+
|
|
151
|
+
// src/extensions/presence/presence-labels.ts
|
|
152
|
+
var list = (names) => names.length < 2 ? names.join("") : `${names.slice(0, -1).join(", ")} and ${names[names.length - 1]}`;
|
|
153
|
+
var englishPresenceLabels = {
|
|
154
|
+
joined: (names) => `${list(names)} joined`,
|
|
155
|
+
left: (names) => `${list(names)} left`,
|
|
156
|
+
here: (names) => `${list(names)} ${names.length === 1 ? "is" : "are"} here`,
|
|
157
|
+
caret: (name) => name
|
|
158
|
+
};
|
|
159
|
+
function resolvePresenceLabels(overrides) {
|
|
160
|
+
const given = Object.entries(_nullishCoalesce(overrides, () => ( {}))).filter(([, value]) => value !== void 0);
|
|
161
|
+
return given.length === 0 ? englishPresenceLabels : { ...englishPresenceLabels, ...Object.fromEntries(given) };
|
|
162
|
+
}
|
|
163
|
+
|
|
164
|
+
// src/extensions/presence/presence-link.ts
|
|
165
|
+
var links = /* @__PURE__ */ new WeakMap();
|
|
166
|
+
function linkOf(editor) {
|
|
167
|
+
let link = links.get(editor);
|
|
168
|
+
if (link === void 0) {
|
|
169
|
+
link = { active: false, session: null, listeners: /* @__PURE__ */ new Set() };
|
|
170
|
+
links.set(editor, link);
|
|
171
|
+
}
|
|
172
|
+
return link;
|
|
173
|
+
}
|
|
174
|
+
function setActive(link, active) {
|
|
175
|
+
if (link.active === active) return;
|
|
176
|
+
link.active = active;
|
|
177
|
+
_optionalChain([link, 'access', _10 => _10.session, 'optionalAccess', _11 => _11.activeChanged, 'call', _12 => _12()]);
|
|
178
|
+
}
|
|
179
|
+
|
|
180
|
+
// src/yjs/awareness.ts
|
|
181
|
+
var _yjs = require('yjs'); var Y = _interopRequireWildcard(_yjs);
|
|
182
|
+
function awarePos(shared, pos) {
|
|
183
|
+
try {
|
|
184
|
+
return {
|
|
185
|
+
...pos,
|
|
186
|
+
rel: Y.relativePositionToJSON(_chunkE75EHRPAcjs.relative.call(void 0, shared.text, shared.layout, pos))
|
|
187
|
+
};
|
|
188
|
+
} catch (e) {
|
|
189
|
+
return pos;
|
|
190
|
+
}
|
|
191
|
+
}
|
|
192
|
+
function toAware(shared, selection) {
|
|
193
|
+
if (selection === null) return null;
|
|
194
|
+
if (selection.kind === "text") {
|
|
195
|
+
return {
|
|
196
|
+
anchor: awarePos(shared, selection.anchor),
|
|
197
|
+
head: awarePos(shared, selection.head)
|
|
198
|
+
};
|
|
199
|
+
}
|
|
200
|
+
const [anchor, head] = selection.kind === "node" ? [selection.block, selection.block] : [selection.anchor, selection.head];
|
|
201
|
+
return { anchor: { block: anchor }, head: { block: head } };
|
|
202
|
+
}
|
|
203
|
+
var isRecord = (value) => typeof value === "object" && value !== null;
|
|
204
|
+
function textPos(shared, doc, value) {
|
|
205
|
+
if (shared !== null && value.rel !== void 0) {
|
|
206
|
+
try {
|
|
207
|
+
const found = _chunkE75EHRPAcjs.absolute.call(void 0, shared.text, shared.layout, Y.createRelativePositionFromJSON(value.rel));
|
|
208
|
+
if (found !== null) return found;
|
|
209
|
+
} catch (e2) {
|
|
210
|
+
}
|
|
211
|
+
}
|
|
212
|
+
const { block, region, offset } = value;
|
|
213
|
+
const placed = typeof region === "string" && typeof offset === "number" && Number.isInteger(offset) && offset >= 0;
|
|
214
|
+
return placed && typeof block === "string" && doc.index.has(block) ? { block, region, offset } : null;
|
|
215
|
+
}
|
|
216
|
+
var blockOf = (doc, value) => typeof value.block === "string" && doc.index.has(value.block) ? value.block : null;
|
|
217
|
+
function fromAware(shared, doc, schema, value) {
|
|
218
|
+
if (!isRecord(value) || !isRecord(value.anchor) || !isRecord(value.head)) return null;
|
|
219
|
+
const { anchor, head } = value;
|
|
220
|
+
if (anchor.region === void 0 && head.region === void 0) {
|
|
221
|
+
const [from2, to2] = [blockOf(doc, anchor), blockOf(doc, head)];
|
|
222
|
+
if (from2 === null || to2 === null) return null;
|
|
223
|
+
return from2 === to2 ? _chunkPZ4GT5JOcjs.nodeSelection.call(void 0, from2) : _chunkPZ4GT5JOcjs.blockRangeSelection.call(void 0, from2, to2);
|
|
224
|
+
}
|
|
225
|
+
const [from, to] = [textPos(shared, doc, anchor), textPos(shared, doc, head)];
|
|
226
|
+
return from === null || to === null ? null : _chunkPZ4GT5JOcjs.validateSelection.call(void 0, doc, schema, _chunkPZ4GT5JOcjs.textSelection.call(void 0, from, to));
|
|
227
|
+
}
|
|
228
|
+
|
|
229
|
+
// src/extensions/presence/presence-session.ts
|
|
230
|
+
var THROTTLE_MS = 50;
|
|
231
|
+
var IDLE_MS = 2e3;
|
|
232
|
+
var COLOR = /^(#[\da-f]{3,8}|[a-z]+|(rgba?|hsla?|hwb|lab|lch|oklab|oklch)\([\d\s.,%/+-]*\))$/i;
|
|
233
|
+
var safeColor = (value) => typeof value === "string" && COLOR.test(value) ? value : void 0;
|
|
234
|
+
var userOf = (state) => {
|
|
235
|
+
const { user } = state;
|
|
236
|
+
return typeof user === "object" && user !== null && typeof user.name === "string" ? user : null;
|
|
237
|
+
};
|
|
238
|
+
var namedBy = /* @__PURE__ */ new WeakMap();
|
|
239
|
+
function startPresence(editor, collaboration, awareness, link, sharedOf2) {
|
|
240
|
+
const { doc, user } = collaboration;
|
|
241
|
+
const seen = /* @__PURE__ */ new Map();
|
|
242
|
+
let heard = false;
|
|
243
|
+
let writing = false;
|
|
244
|
+
let timer;
|
|
245
|
+
let dirty = false;
|
|
246
|
+
const put = (field, value) => {
|
|
247
|
+
writing = true;
|
|
248
|
+
try {
|
|
249
|
+
awareness.setLocalStateField(field, value);
|
|
250
|
+
} finally {
|
|
251
|
+
writing = false;
|
|
252
|
+
}
|
|
253
|
+
};
|
|
254
|
+
const write = (selection) => put("selection", selection);
|
|
255
|
+
const tick = () => {
|
|
256
|
+
timer = void 0;
|
|
257
|
+
if (!dirty || !link.active) return;
|
|
258
|
+
dirty = false;
|
|
259
|
+
const shared = sharedOf2();
|
|
260
|
+
write(shared === null ? null : toAware(shared, editor.state.selection));
|
|
261
|
+
timer = setTimeout(tick, THROTTLE_MS);
|
|
262
|
+
};
|
|
263
|
+
const schedule = () => {
|
|
264
|
+
dirty = true;
|
|
265
|
+
timer ??= setTimeout(tick, 0);
|
|
266
|
+
};
|
|
267
|
+
const refresh = () => {
|
|
268
|
+
const before = _chunkPZ4GT5JOcjs.getPluginState.call(void 0, editor.state, presenceKey);
|
|
269
|
+
const peers = [];
|
|
270
|
+
const joined = [];
|
|
271
|
+
const gone = new Set(seen.keys());
|
|
272
|
+
for (const [client, state] of awareness.getStates()) {
|
|
273
|
+
const found = client === awareness.clientID ? null : userOf(state);
|
|
274
|
+
if (found === null) continue;
|
|
275
|
+
gone.delete(client);
|
|
276
|
+
const key = JSON.stringify(_nullishCoalesce(state.selection, () => ( null)));
|
|
277
|
+
let known = seen.get(client);
|
|
278
|
+
if (known === void 0 && heard) joined.push({ client, name: found.name });
|
|
279
|
+
if (_optionalChain([known, 'optionalAccess', _13 => _13.key]) !== key) {
|
|
280
|
+
clearTimeout(_optionalChain([known, 'optionalAccess', _14 => _14.timer]));
|
|
281
|
+
const fresh = { name: found.name, key, idle: false };
|
|
282
|
+
fresh.timer = setTimeout(() => {
|
|
283
|
+
fresh.idle = true;
|
|
284
|
+
refresh();
|
|
285
|
+
}, IDLE_MS);
|
|
286
|
+
seen.set(client, known = fresh);
|
|
287
|
+
}
|
|
288
|
+
const selection = fromAware(sharedOf2(), editor.state.doc, editor.state.schema, state.selection);
|
|
289
|
+
const peer = { client, name: found.name, color: safeColor(found.color), selection, idle: known.idle };
|
|
290
|
+
peers.push(_nullishCoalesce(before.find((last) => samePeer(last, peer)), () => ( peer)));
|
|
291
|
+
}
|
|
292
|
+
const left = [...gone].map((client) => {
|
|
293
|
+
const { name, timer: idle } = seen.get(client);
|
|
294
|
+
clearTimeout(idle);
|
|
295
|
+
seen.delete(client);
|
|
296
|
+
return { client, name };
|
|
297
|
+
});
|
|
298
|
+
if (heard && joined.length + left.length > 0)
|
|
299
|
+
for (const listener of [...link.listeners]) listener({ joined, left });
|
|
300
|
+
heard = true;
|
|
301
|
+
if (samePeers(peers, before)) return;
|
|
302
|
+
const tr = editor.createTransaction().setOrigin("remote").setMeta("addToHistory", false);
|
|
303
|
+
editor.dispatch(tr.setMeta(PRESENCE, peers));
|
|
304
|
+
};
|
|
305
|
+
const changed = () => {
|
|
306
|
+
if (!writing) refresh();
|
|
307
|
+
};
|
|
308
|
+
const afterTransaction = (transaction) => {
|
|
309
|
+
if (!transaction.local && seen.size > 0) refresh();
|
|
310
|
+
};
|
|
311
|
+
const stopEditor = editor.subscribe((state, tr) => {
|
|
312
|
+
if (tr !== null && tr.origin !== "remote" && !_chunkPZ4GT5JOcjs.sameSelection.call(void 0, tr.before.selection, state.selection)) schedule();
|
|
313
|
+
});
|
|
314
|
+
put("user", { name: user.name, color: user.color });
|
|
315
|
+
write(null);
|
|
316
|
+
awareness.on("change", changed);
|
|
317
|
+
doc.on("afterTransaction", afterTransaction);
|
|
318
|
+
refresh();
|
|
319
|
+
if (link.active) schedule();
|
|
320
|
+
const session = {
|
|
321
|
+
activeChanged() {
|
|
322
|
+
if (link.active) return schedule();
|
|
323
|
+
clearTimeout(timer);
|
|
324
|
+
timer = void 0;
|
|
325
|
+
write(null);
|
|
326
|
+
},
|
|
327
|
+
stop() {
|
|
328
|
+
awareness.off("change", changed);
|
|
329
|
+
doc.off("afterTransaction", afterTransaction);
|
|
330
|
+
stopEditor();
|
|
331
|
+
clearTimeout(timer);
|
|
332
|
+
for (const { timer: idle } of seen.values()) clearTimeout(idle);
|
|
333
|
+
write(null);
|
|
334
|
+
queueMicrotask(() => {
|
|
335
|
+
if (namedBy.get(awareness) === session) put("user", null);
|
|
336
|
+
});
|
|
337
|
+
}
|
|
338
|
+
};
|
|
339
|
+
namedBy.set(awareness, session);
|
|
340
|
+
return session;
|
|
341
|
+
}
|
|
342
|
+
|
|
343
|
+
// src/extensions/presence/RemoteCarets.tsx
|
|
344
|
+
|
|
345
|
+
|
|
346
|
+
// src/extensions/presence/place-caret.ts
|
|
347
|
+
function caretBox(host, offset) {
|
|
348
|
+
const map = _chunkGTTPVJSDcjs.domMapOf.call(void 0, host);
|
|
349
|
+
if (!map || !host.isConnected) return null;
|
|
350
|
+
const doc = host.ownerDocument;
|
|
351
|
+
const spans = [
|
|
352
|
+
[offset, offset, "start"],
|
|
353
|
+
[offset - 1, offset, "end"],
|
|
354
|
+
[offset, offset + 1, "start"]
|
|
355
|
+
];
|
|
356
|
+
for (const [from, to, side] of spans) {
|
|
357
|
+
if (from < 0 || to > map.length) continue;
|
|
358
|
+
const range = doc.createRange();
|
|
359
|
+
const start = map.toDom(from, from === to ? -1 : 1);
|
|
360
|
+
const end = map.toDom(to, -1);
|
|
361
|
+
range.setStart(start.node, start.offset);
|
|
362
|
+
range.setEnd(end.node, end.offset);
|
|
363
|
+
const rects = range.getClientRects();
|
|
364
|
+
const rect = side === "end" ? rects[rects.length - 1] : rects[0];
|
|
365
|
+
if (rect === void 0) continue;
|
|
366
|
+
return new DOMRect(side === "end" ? rect.right : rect.left, rect.top, 0, rect.height);
|
|
367
|
+
}
|
|
368
|
+
const box = host.getBoundingClientRect();
|
|
369
|
+
return new DOMRect(box.left, box.top, 0, box.height);
|
|
370
|
+
}
|
|
371
|
+
function inside(box, clip) {
|
|
372
|
+
if (clip === null) return true;
|
|
373
|
+
const area = clip.getBoundingClientRect();
|
|
374
|
+
return box.left >= area.left && box.left <= area.right && box.bottom > area.top && box.top < area.bottom;
|
|
375
|
+
}
|
|
376
|
+
function placeCaret(controller, root, caret, observer) {
|
|
377
|
+
const client = Number(caret.dataset.client);
|
|
378
|
+
const peer = _chunkPZ4GT5JOcjs.getPluginState.call(void 0, controller.editor.state, presenceKey).find((one) => one.client === client);
|
|
379
|
+
const head = _optionalChain([peer, 'optionalAccess', _15 => _15.selection, 'optionalAccess', _16 => _16.kind]) === "text" ? peer.selection.head : null;
|
|
380
|
+
const host = head && controller.registry.get(head.block, head.region);
|
|
381
|
+
const box = host ? caretBox(host, head.offset) : null;
|
|
382
|
+
const shown = box !== null && inside(box, _chunkQAW5NH6Scjs.clipOf.call(void 0, host, root));
|
|
383
|
+
caret.style.visibility = shown ? "" : "hidden";
|
|
384
|
+
if (!shown) return;
|
|
385
|
+
observer.observe(host);
|
|
386
|
+
const origin = root.getBoundingClientRect();
|
|
387
|
+
const scale = origin.width / root.offsetWidth || 1;
|
|
388
|
+
const left = (box.left - origin.left) / scale - root.clientLeft + root.scrollLeft;
|
|
389
|
+
const top = (box.top - origin.top) / scale - root.clientTop + root.scrollTop;
|
|
390
|
+
caret.style.transform = `translate(${left}px, ${top}px)`;
|
|
391
|
+
caret.style.height = `${box.height / scale}px`;
|
|
392
|
+
}
|
|
393
|
+
|
|
394
|
+
// src/extensions/presence/RemoteCarets.tsx
|
|
395
|
+
|
|
396
|
+
var shownOf = (state) => _chunkPZ4GT5JOcjs.getPluginState.call(void 0, state, presenceKey).flatMap(
|
|
397
|
+
({ client, name, color, idle, selection }) => _optionalChain([selection, 'optionalAccess', _17 => _17.kind]) === "text" ? [{ client, name, color, idle }] : []
|
|
398
|
+
);
|
|
399
|
+
var sameShown = (a, b) => JSON.stringify(a) === JSON.stringify(b);
|
|
400
|
+
function RemoteCarets({ controller, labels }) {
|
|
401
|
+
const shown = _chunkGTTPVJSDcjs.useEditorState.call(void 0, controller, shownOf, sameShown);
|
|
402
|
+
const box = _react.useRef.call(void 0, null);
|
|
403
|
+
_chunkGTTPVJSDcjs.useIsomorphicLayoutEffect.call(void 0, () => {
|
|
404
|
+
const root = controller.root;
|
|
405
|
+
const view = _optionalChain([root, 'optionalAccess', _18 => _18.ownerDocument, 'access', _19 => _19.defaultView]);
|
|
406
|
+
if (!root || !view || box.current === null) return void 0;
|
|
407
|
+
const carets = Array.from(box.current.children);
|
|
408
|
+
let frame = 0;
|
|
409
|
+
const later = () => {
|
|
410
|
+
view.cancelAnimationFrame(frame);
|
|
411
|
+
frame = view.requestAnimationFrame(update);
|
|
412
|
+
};
|
|
413
|
+
const observer = new ResizeObserver(later);
|
|
414
|
+
const update = () => carets.forEach((caret) => placeCaret(controller, root, caret, observer));
|
|
415
|
+
update();
|
|
416
|
+
observer.observe(root);
|
|
417
|
+
const unsubscribe = controller.editor.subscribe(later);
|
|
418
|
+
const fonts = root.ownerDocument.fonts;
|
|
419
|
+
root.addEventListener("scroll", later, { capture: true, passive: true });
|
|
420
|
+
_optionalChain([fonts, 'optionalAccess', _20 => _20.addEventListener, 'call', _21 => _21("loadingdone", later)]);
|
|
421
|
+
return () => {
|
|
422
|
+
view.cancelAnimationFrame(frame);
|
|
423
|
+
unsubscribe();
|
|
424
|
+
observer.disconnect();
|
|
425
|
+
root.removeEventListener("scroll", later, { capture: true });
|
|
426
|
+
_optionalChain([fonts, 'optionalAccess', _22 => _22.removeEventListener, 'call', _23 => _23("loadingdone", later)]);
|
|
427
|
+
};
|
|
428
|
+
}, [controller, shown]);
|
|
429
|
+
return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { ref: box, className: "quoin-presence-carets", "aria-hidden": "true", children: shown.map(({ client, name, color, idle }) => /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
430
|
+
"div",
|
|
431
|
+
{
|
|
432
|
+
"data-client": client,
|
|
433
|
+
"data-idle": idle ? "" : void 0,
|
|
434
|
+
className: "quoin-presence-caret",
|
|
435
|
+
style: color === void 0 ? void 0 : { "--quoin-presence": color },
|
|
436
|
+
children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { className: "quoin-presence-name", children: labels.caret(name) })
|
|
437
|
+
},
|
|
438
|
+
client
|
|
439
|
+
)) });
|
|
440
|
+
}
|
|
441
|
+
|
|
442
|
+
// src/extensions/presence/use-presence-activity.ts
|
|
443
|
+
|
|
444
|
+
function usePresenceActivity(controller, link) {
|
|
445
|
+
_react.useEffect.call(void 0, () => {
|
|
446
|
+
const doc = _optionalChain([controller, 'access', _24 => _24.root, 'optionalAccess', _25 => _25.ownerDocument]);
|
|
447
|
+
if (!doc) return void 0;
|
|
448
|
+
let focused = _chunkWXMYDXPNcjs.ownsNode.call(void 0, controller, doc.activeElement);
|
|
449
|
+
const update = () => setActive(link, focused && !controller.readOnly);
|
|
450
|
+
const stopFocus = _chunkWXMYDXPNcjs.watchCanvasFocus.call(void 0, controller, doc, (inside2) => {
|
|
451
|
+
focused = inside2;
|
|
452
|
+
update();
|
|
453
|
+
});
|
|
454
|
+
const stopReadOnly = controller.subscribeReadOnly(update);
|
|
455
|
+
update();
|
|
456
|
+
return () => {
|
|
457
|
+
stopFocus();
|
|
458
|
+
stopReadOnly();
|
|
459
|
+
setActive(link, false);
|
|
460
|
+
};
|
|
461
|
+
}, [controller, link]);
|
|
462
|
+
}
|
|
463
|
+
|
|
464
|
+
// src/extensions/presence/use-presence-announcements.ts
|
|
465
|
+
|
|
466
|
+
|
|
467
|
+
// src/extensions/presence/presence-announcements.ts
|
|
468
|
+
var PRESENCE_ANNOUNCEMENT_MS = 3e3;
|
|
469
|
+
var GROUP_MS = 500;
|
|
470
|
+
function createPresenceAnnouncer(announce, labels) {
|
|
471
|
+
const people = /* @__PURE__ */ new Map();
|
|
472
|
+
let waiting = { joined: [], left: [] };
|
|
473
|
+
let group;
|
|
474
|
+
const flush = () => {
|
|
475
|
+
group = void 0;
|
|
476
|
+
const { joined, left } = waiting;
|
|
477
|
+
waiting = { joined: [], left: [] };
|
|
478
|
+
announce(
|
|
479
|
+
[joined.length > 0 && labels.joined(joined), left.length > 0 && labels.left(left)].filter(Boolean).join(". ")
|
|
480
|
+
);
|
|
481
|
+
};
|
|
482
|
+
const say = (known, kind) => {
|
|
483
|
+
known.said = kind;
|
|
484
|
+
known.at = Date.now();
|
|
485
|
+
waiting[kind].push(known.name);
|
|
486
|
+
group ??= setTimeout(flush, GROUP_MS);
|
|
487
|
+
};
|
|
488
|
+
const note = ({ client, name }, kind) => {
|
|
489
|
+
const known = people.get(client);
|
|
490
|
+
const wait = known === void 0 ? 0 : known.at + PRESENCE_ANNOUNCEMENT_MS - Date.now();
|
|
491
|
+
if (known === void 0 || wait <= 0) {
|
|
492
|
+
clearTimeout(_optionalChain([known, 'optionalAccess', _26 => _26.later]));
|
|
493
|
+
const fresh = _nullishCoalesce(known, () => ( { name, said: kind, at: 0 }));
|
|
494
|
+
people.set(client, fresh);
|
|
495
|
+
return say(fresh, kind);
|
|
496
|
+
}
|
|
497
|
+
clearTimeout(known.later);
|
|
498
|
+
known.later = kind === known.said ? void 0 : setTimeout(() => say(known, kind), wait);
|
|
499
|
+
};
|
|
500
|
+
return {
|
|
501
|
+
hear({ joined, left }) {
|
|
502
|
+
for (const person of joined) note(person, "joined");
|
|
503
|
+
for (const person of left) note(person, "left");
|
|
504
|
+
},
|
|
505
|
+
stop() {
|
|
506
|
+
clearTimeout(group);
|
|
507
|
+
for (const { later } of people.values()) clearTimeout(later);
|
|
508
|
+
}
|
|
509
|
+
};
|
|
510
|
+
}
|
|
511
|
+
|
|
512
|
+
// src/extensions/presence/use-presence-announcements.ts
|
|
513
|
+
function usePresenceAnnouncements(controller, link, labels) {
|
|
514
|
+
_react.useEffect.call(void 0, () => {
|
|
515
|
+
const announcer = createPresenceAnnouncer((message) => controller.announce(message), labels);
|
|
516
|
+
const listener = (change) => announcer.hear(change);
|
|
517
|
+
link.listeners.add(listener);
|
|
518
|
+
return () => {
|
|
519
|
+
link.listeners.delete(listener);
|
|
520
|
+
announcer.stop();
|
|
521
|
+
};
|
|
522
|
+
}, [controller, link, labels]);
|
|
523
|
+
}
|
|
524
|
+
|
|
525
|
+
// src/extensions/presence/presence-extension.tsx
|
|
526
|
+
|
|
527
|
+
var UNBOUND = "presenceExtension shares nothing without collaborationExtension.";
|
|
528
|
+
function presenceExtension(collaboration, options = {}) {
|
|
529
|
+
const { awareness } = collaboration;
|
|
530
|
+
if (awareness === void 0) throw new Error("presenceExtension needs yjsCollaboration({ awareness })");
|
|
531
|
+
const labels = resolvePresenceLabels(options.labels);
|
|
532
|
+
function Overlay({ controller }) {
|
|
533
|
+
const link = linkOf(controller.editor);
|
|
534
|
+
usePresenceActivity(controller, link);
|
|
535
|
+
usePresenceAnnouncements(controller, link, labels);
|
|
536
|
+
return /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _jsxruntime.Fragment, { children: [
|
|
537
|
+
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, RemoteCarets, { controller, labels }),
|
|
538
|
+
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, PresenceAvatars, { controller, labels })
|
|
539
|
+
] });
|
|
540
|
+
}
|
|
541
|
+
const ui = { overlays: [Overlay] };
|
|
542
|
+
return _chunkPZ4GT5JOcjs.defineExtension.call(void 0, {
|
|
543
|
+
name: "presence",
|
|
544
|
+
// Below the default, so the collaboration it reads has connected before it starts.
|
|
545
|
+
priority: 99,
|
|
546
|
+
plugins: [presencePlugin],
|
|
547
|
+
decorations: presenceDecorations,
|
|
548
|
+
onMount(editor) {
|
|
549
|
+
const link = linkOf(editor);
|
|
550
|
+
if (_chunkE75EHRPAcjs.sharedOf.call(void 0, collaboration, editor) === null) _chunkOMOBMXD5cjs.devWarn.call(void 0, UNBOUND);
|
|
551
|
+
const session = startPresence(editor, collaboration, awareness, link, () => _chunkE75EHRPAcjs.sharedOf.call(void 0, collaboration, editor));
|
|
552
|
+
link.session = session;
|
|
553
|
+
return () => {
|
|
554
|
+
session.stop();
|
|
555
|
+
if (link.session === session) link.session = null;
|
|
556
|
+
};
|
|
557
|
+
},
|
|
558
|
+
ui
|
|
559
|
+
});
|
|
560
|
+
}
|
|
561
|
+
|
|
562
|
+
|
|
563
|
+
|
|
564
|
+
exports.englishPresenceLabels = englishPresenceLabels; exports.presenceExtension = presenceExtension;
|
|
565
|
+
//# sourceMappingURL=presence.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["presence.cjs","../src/extensions/presence/PresenceAvatars.tsx","../src/extensions/presence/presence-plugin.ts","../src/extensions/presence/presence-decorations.ts","../src/extensions/presence/presence-labels.ts","../src/extensions/presence/presence-link.ts","../src/yjs/awareness.ts","../src/extensions/presence/presence-session.ts","../src/extensions/presence/RemoteCarets.tsx","../src/extensions/presence/place-caret.ts","../src/extensions/presence/use-presence-activity.ts","../src/extensions/presence/use-presence-announcements.ts","../src/extensions/presence/presence-announcements.ts","../src/extensions/presence/presence-extension.tsx"],"names":["sharedOf","inside"],"mappings":"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","file":"/home/runner/work/quoin-editor/quoin-editor/dist/presence.cjs"}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import { E as Extension } from './types-Cz7XJLaK.cjs';
|
|
2
|
+
import { Y as YjsCollaboration } from './index-CgD72kHB.cjs';
|
|
3
|
+
import './types-DULc8wwg.cjs';
|
|
4
|
+
import 'yjs';
|
|
5
|
+
|
|
6
|
+
/** Every string presence shows or speaks. Names come as a list of the people meant, in the order they came. */
|
|
7
|
+
type PresenceLabels = {
|
|
8
|
+
/** Said through the live region when people open the document. */
|
|
9
|
+
joined(names: readonly string[]): string;
|
|
10
|
+
/** Said when people close it. */
|
|
11
|
+
left(names: readonly string[]): string;
|
|
12
|
+
/** The accessible name of the avatars beside a block, naming the people whose selection is in it. */
|
|
13
|
+
here(names: readonly string[]): string;
|
|
14
|
+
/** The text a collaborator's caret shows, given the name the collaborator gave. */
|
|
15
|
+
caret(name: string): string;
|
|
16
|
+
};
|
|
17
|
+
declare const englishPresenceLabels: PresenceLabels;
|
|
18
|
+
|
|
19
|
+
type PresenceOptions = {
|
|
20
|
+
/** Every string presence shows or speaks, English by default. A key left out stays English. */
|
|
21
|
+
labels?: Partial<PresenceLabels>;
|
|
22
|
+
};
|
|
23
|
+
/**
|
|
24
|
+
* Shows the collaborators that the awareness of `collaboration` knows: their selections tinted with their colour, their
|
|
25
|
+
* carets with their names, avatars beside the blocks they are in, and who joins and leaves through the live region.
|
|
26
|
+
* This editor's selection is shared while it is focused and editable.
|
|
27
|
+
*/
|
|
28
|
+
declare function presenceExtension(collaboration: YjsCollaboration, options?: PresenceOptions): Extension;
|
|
29
|
+
|
|
30
|
+
export { type PresenceLabels, type PresenceOptions, englishPresenceLabels, presenceExtension };
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import { E as Extension } from './types-a1CRBlEh.js';
|
|
2
|
+
import { Y as YjsCollaboration } from './index-DNYbTK3w.js';
|
|
3
|
+
import './types-DULc8wwg.js';
|
|
4
|
+
import 'yjs';
|
|
5
|
+
|
|
6
|
+
/** Every string presence shows or speaks. Names come as a list of the people meant, in the order they came. */
|
|
7
|
+
type PresenceLabels = {
|
|
8
|
+
/** Said through the live region when people open the document. */
|
|
9
|
+
joined(names: readonly string[]): string;
|
|
10
|
+
/** Said when people close it. */
|
|
11
|
+
left(names: readonly string[]): string;
|
|
12
|
+
/** The accessible name of the avatars beside a block, naming the people whose selection is in it. */
|
|
13
|
+
here(names: readonly string[]): string;
|
|
14
|
+
/** The text a collaborator's caret shows, given the name the collaborator gave. */
|
|
15
|
+
caret(name: string): string;
|
|
16
|
+
};
|
|
17
|
+
declare const englishPresenceLabels: PresenceLabels;
|
|
18
|
+
|
|
19
|
+
type PresenceOptions = {
|
|
20
|
+
/** Every string presence shows or speaks, English by default. A key left out stays English. */
|
|
21
|
+
labels?: Partial<PresenceLabels>;
|
|
22
|
+
};
|
|
23
|
+
/**
|
|
24
|
+
* Shows the collaborators that the awareness of `collaboration` knows: their selections tinted with their colour, their
|
|
25
|
+
* carets with their names, avatars beside the blocks they are in, and who joins and leaves through the live region.
|
|
26
|
+
* This editor's selection is shared while it is focused and editable.
|
|
27
|
+
*/
|
|
28
|
+
declare function presenceExtension(collaboration: YjsCollaboration, options?: PresenceOptions): Extension;
|
|
29
|
+
|
|
30
|
+
export { type PresenceLabels, type PresenceOptions, englishPresenceLabels, presenceExtension };
|