@liveblocks/react-lexical 1.12.0-lexical4 → 2.0.0-alpha2
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/dist/classnames.js +8 -0
- package/dist/classnames.js.map +1 -0
- package/dist/classnames.mjs +6 -0
- package/dist/classnames.mjs.map +1 -0
- package/dist/comments/ThreadPanel.js +27 -7
- package/dist/comments/ThreadPanel.js.map +1 -1
- package/dist/comments/ThreadPanel.mjs +28 -8
- package/dist/comments/ThreadPanel.mjs.map +1 -1
- package/dist/comments/comment-plugin-provider.js +18 -106
- package/dist/comments/comment-plugin-provider.js.map +1 -1
- package/dist/comments/comment-plugin-provider.mjs +17 -104
- package/dist/comments/comment-plugin-provider.mjs.map +1 -1
- package/dist/comments/floating-composer.js +226 -15
- package/dist/comments/floating-composer.js.map +1 -1
- package/dist/comments/floating-composer.mjs +224 -15
- package/dist/comments/floating-composer.mjs.map +1 -1
- package/dist/comments/thread-mark-node.js +1 -16
- package/dist/comments/thread-mark-node.js.map +1 -1
- package/dist/comments/thread-mark-node.mjs +1 -16
- package/dist/comments/thread-mark-node.mjs.map +1 -1
- package/dist/create-dom-range.js +63 -0
- package/dist/create-dom-range.js.map +1 -0
- package/dist/create-dom-range.mjs +61 -0
- package/dist/create-dom-range.mjs.map +1 -0
- package/dist/create-rects-from-dom-range.js +36 -0
- package/dist/create-rects-from-dom-range.js.map +1 -0
- package/dist/create-rects-from-dom-range.mjs +34 -0
- package/dist/create-rects-from-dom-range.mjs.map +1 -0
- package/dist/index.d.mts +113 -0
- package/dist/index.d.ts +96 -44
- package/dist/index.js +9 -6
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +5 -4
- package/dist/index.mjs.map +1 -1
- package/dist/liveblocks-config.js +3 -75
- package/dist/liveblocks-config.js.map +1 -1
- package/dist/liveblocks-config.mjs +4 -56
- package/dist/liveblocks-config.mjs.map +1 -1
- package/dist/liveblocks-plugin-provider.js +12 -29
- package/dist/liveblocks-plugin-provider.js.map +1 -1
- package/dist/liveblocks-plugin-provider.mjs +13 -29
- package/dist/liveblocks-plugin-provider.mjs.map +1 -1
- package/dist/mentions/avatar.js +11 -7
- package/dist/mentions/avatar.js.map +1 -1
- package/dist/mentions/avatar.mjs +11 -7
- package/dist/mentions/avatar.mjs.map +1 -1
- package/dist/mentions/mention-component.js +5 -18
- package/dist/mentions/mention-component.js.map +1 -1
- package/dist/mentions/mention-component.mjs +7 -19
- package/dist/mentions/mention-component.mjs.map +1 -1
- package/dist/mentions/mention-node.js +77 -74
- package/dist/mentions/mention-node.js.map +1 -1
- package/dist/mentions/mention-node.mjs +76 -75
- package/dist/mentions/mention-node.mjs.map +1 -1
- package/dist/mentions/mention-plugin.js +130 -91
- package/dist/mentions/mention-plugin.js.map +1 -1
- package/dist/mentions/mention-plugin.mjs +119 -76
- package/dist/mentions/mention-plugin.mjs.map +1 -1
- package/dist/mentions/suggestions.js +34 -6
- package/dist/mentions/suggestions.js.map +1 -1
- package/dist/mentions/suggestions.mjs +28 -3
- package/dist/mentions/suggestions.mjs.map +1 -1
- package/dist/mentions/user.js +9 -6
- package/dist/mentions/user.js.map +1 -1
- package/dist/mentions/user.mjs +9 -6
- package/dist/mentions/user.mjs.map +1 -1
- package/dist/version.js +1 -1
- package/dist/version.js.map +1 -1
- package/dist/version.mjs +1 -1
- package/dist/version.mjs.map +1 -1
- package/package.json +23 -15
- package/src/styles/constants.css +1 -0
- package/src/styles/index.css +154 -0
- package/src/styles/utils.css +6 -0
- package/styles.css +1 -0
- package/styles.css.d.ts +1 -0
- package/styles.css.map +1 -0
- package/dist/active-selection.js +0 -143
- package/dist/active-selection.js.map +0 -1
- package/dist/active-selection.mjs +0 -123
- package/dist/active-selection.mjs.map +0 -1
- package/dist/floating-selection-container.js +0 -157
- package/dist/floating-selection-container.js.map +0 -1
- package/dist/floating-selection-container.mjs +0 -155
- package/dist/floating-selection-container.mjs.map +0 -1
package/dist/index.d.ts
CHANGED
|
@@ -1,61 +1,113 @@
|
|
|
1
|
-
import
|
|
1
|
+
import { BaseMetadata, ThreadData } from '@liveblocks/core';
|
|
2
|
+
import { ComposerProps } from '@liveblocks/react-ui';
|
|
2
3
|
import * as lexical from 'lexical';
|
|
4
|
+
import { LexicalCommand, ElementNode, NodeKey, RangeSelection, LexicalNode, BaseSelection, Spread, SerializedElementNode, DecoratorNode, DOMConversionMap, DOMExportOutput, SerializedLexicalNode } from 'lexical';
|
|
5
|
+
import React, { ComponentType, ReactNode, JSX as JSX$1 } from 'react';
|
|
3
6
|
import { InitialConfigType } from '@lexical/react/LexicalComposer';
|
|
4
|
-
import { ComposerProps } from '@liveblocks/react-comments';
|
|
5
|
-
import { BaseMetadata } from '@liveblocks/core';
|
|
6
7
|
|
|
7
|
-
declare const
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
children?: React.ReactNode;
|
|
8
|
+
declare const OPEN_FLOATING_COMPOSER_COMMAND: LexicalCommand<void>;
|
|
9
|
+
declare type ThreadMetadata = {
|
|
10
|
+
resolved?: boolean;
|
|
11
11
|
};
|
|
12
|
-
declare
|
|
12
|
+
declare type FloatingComposerProps<M extends BaseMetadata = ThreadMetadata> = Omit<ComposerProps<M>, "threadId" | "commentId">;
|
|
13
|
+
declare const FloatingComposer: React.ForwardRefExoticComponent<FloatingComposerProps<ThreadMetadata> & React.RefAttributes<HTMLFormElement>>;
|
|
13
14
|
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
15
|
+
/**
|
|
16
|
+
* MIT License
|
|
17
|
+
* Copyright (c) Meta Platforms, Inc. and affiliates.
|
|
18
|
+
|
|
19
|
+
* Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
20
|
+
* of this software and associated documentation files (the "Software"), to deal
|
|
21
|
+
* in the Software without restriction, including without limitation the rights
|
|
22
|
+
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
23
|
+
* copies of the Software, and to permit persons to whom the Software is
|
|
24
|
+
* furnished to do so, subject to the following conditions:
|
|
25
|
+
*
|
|
26
|
+
* The above copyright notice and this permission notice shall be included in all
|
|
27
|
+
* copies or substantial portions of the Software.
|
|
28
|
+
*
|
|
29
|
+
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
30
|
+
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
31
|
+
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
32
|
+
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
33
|
+
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
34
|
+
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
35
|
+
* SOFTWARE.
|
|
36
|
+
*/
|
|
37
|
+
|
|
38
|
+
declare type SerializedThreadMarkNode = Spread<{
|
|
39
|
+
ids: Array<string>;
|
|
40
|
+
}, SerializedElementNode>;
|
|
41
|
+
declare class ThreadMarkNode extends ElementNode {
|
|
42
|
+
static getType(): string;
|
|
43
|
+
static clone(node: ThreadMarkNode): ThreadMarkNode;
|
|
44
|
+
static importDOM(): null;
|
|
45
|
+
static importJSON(serializedNode: SerializedThreadMarkNode): ThreadMarkNode;
|
|
46
|
+
exportJSON(): SerializedThreadMarkNode;
|
|
47
|
+
constructor(ids: Array<string>, key?: NodeKey);
|
|
48
|
+
createDOM(): HTMLElement;
|
|
49
|
+
updateDOM(): boolean;
|
|
50
|
+
hasID(id: string): boolean;
|
|
51
|
+
getIDs(): Array<string>;
|
|
52
|
+
addID(id: string): void;
|
|
53
|
+
deleteID(id: string): void;
|
|
54
|
+
insertNewAfter(_: RangeSelection, restoreSelection?: boolean): null | ElementNode;
|
|
55
|
+
canInsertTextBefore(): false;
|
|
56
|
+
canInsertTextAfter(): false;
|
|
57
|
+
canBeEmpty(): false;
|
|
58
|
+
isInline(): true;
|
|
59
|
+
extractWithChild(_: LexicalNode, selection: BaseSelection, destination: "clone" | "html"): boolean;
|
|
60
|
+
excludeFromCopy(destination: "clone" | "html"): boolean;
|
|
39
61
|
}
|
|
40
|
-
|
|
62
|
+
|
|
63
|
+
declare type ThreadProps = {
|
|
64
|
+
thread: ThreadData<BaseMetadata>;
|
|
65
|
+
isActive: boolean;
|
|
66
|
+
};
|
|
67
|
+
declare type ThreadPanelProps = {
|
|
68
|
+
renderThread?: ComponentType<ThreadProps>;
|
|
69
|
+
};
|
|
70
|
+
declare const ThreadPanel: ({ renderThread }: ThreadPanelProps) => React.JSX.Element;
|
|
71
|
+
|
|
72
|
+
declare function liveblocksConfig(editorConfig: Omit<InitialConfigType, "editorState">): {
|
|
41
73
|
nodes: (lexical.KlassConstructor<typeof lexical.LexicalNode> | lexical.LexicalNodeReplacement)[];
|
|
42
74
|
editorState: null;
|
|
75
|
+
html?: lexical.HTMLConfig | undefined;
|
|
76
|
+
onError: (error: Error, editor: lexical.LexicalEditor) => void;
|
|
43
77
|
editor__DEPRECATED?: lexical.LexicalEditor | null | undefined;
|
|
44
78
|
namespace: string;
|
|
45
|
-
onError: (error: Error, editor: lexical.LexicalEditor) => void;
|
|
46
79
|
editable?: boolean | undefined;
|
|
47
80
|
theme?: lexical.EditorThemeClasses | undefined;
|
|
48
|
-
html?: lexical.HTMLConfig | undefined;
|
|
49
81
|
};
|
|
50
82
|
|
|
51
|
-
declare
|
|
52
|
-
|
|
53
|
-
declare type ThreadMetadata = {
|
|
54
|
-
resolved?: boolean;
|
|
83
|
+
declare type LiveblocksPluginProps = {
|
|
84
|
+
children?: React.ReactNode;
|
|
55
85
|
};
|
|
56
|
-
declare
|
|
57
|
-
declare const FloatingComposer: React.ForwardRefExoticComponent<FloatingComposerProps<ThreadMetadata> & React.RefAttributes<HTMLFormElement>>;
|
|
86
|
+
declare const LiveblocksPlugin: ({ children, }: LiveblocksPluginProps) => JSX.Element;
|
|
58
87
|
|
|
59
|
-
declare function
|
|
88
|
+
declare function Mention({ nodeKey, children, }: {
|
|
89
|
+
nodeKey: NodeKey;
|
|
90
|
+
children: ReactNode;
|
|
91
|
+
}): React.JSX.Element;
|
|
92
|
+
|
|
93
|
+
declare type SerializedMentionNode = Spread<{
|
|
94
|
+
userId: string;
|
|
95
|
+
}, SerializedLexicalNode>;
|
|
96
|
+
declare class MentionNode extends DecoratorNode<JSX$1.Element> {
|
|
97
|
+
__id: string;
|
|
98
|
+
__userId: string;
|
|
99
|
+
constructor(id: string, userId: string, key?: NodeKey);
|
|
100
|
+
static getType(): string;
|
|
101
|
+
static clone(node: MentionNode): MentionNode;
|
|
102
|
+
createDOM(): HTMLElement;
|
|
103
|
+
updateDOM(): boolean;
|
|
104
|
+
static importDom(): DOMConversionMap<HTMLElement> | null;
|
|
105
|
+
exportDOM(): DOMExportOutput;
|
|
106
|
+
static importJSON(serializedNode: SerializedMentionNode): MentionNode;
|
|
107
|
+
exportJSON(): SerializedMentionNode;
|
|
108
|
+
getUserId(): string;
|
|
109
|
+
getId(): string;
|
|
110
|
+
decorate(): JSX$1.Element;
|
|
111
|
+
}
|
|
60
112
|
|
|
61
|
-
export { FloatingComposer,
|
|
113
|
+
export { FloatingComposer, LiveblocksPlugin, Mention, MentionNode, OPEN_FLOATING_COMPOSER_COMMAND, ThreadMarkNode, ThreadPanel, liveblocksConfig };
|
package/dist/index.js
CHANGED
|
@@ -2,19 +2,22 @@
|
|
|
2
2
|
|
|
3
3
|
var core = require('@liveblocks/core');
|
|
4
4
|
var version = require('./version.js');
|
|
5
|
+
var floatingComposer = require('./comments/floating-composer.js');
|
|
6
|
+
var threadMarkNode = require('./comments/thread-mark-node.js');
|
|
5
7
|
var ThreadPanel = require('./comments/ThreadPanel.js');
|
|
6
8
|
var liveblocksConfig = require('./liveblocks-config.js');
|
|
7
9
|
var liveblocksPluginProvider = require('./liveblocks-plugin-provider.js');
|
|
8
10
|
var mentionComponent = require('./mentions/mention-component.js');
|
|
9
|
-
var
|
|
10
|
-
var commentPluginProvider = require('./comments/comment-plugin-provider.js');
|
|
11
|
+
var mentionNode = require('./mentions/mention-node.js');
|
|
11
12
|
|
|
12
13
|
core.detectDupes(version.PKG_NAME, version.PKG_VERSION, version.PKG_FORMAT);
|
|
13
14
|
|
|
15
|
+
exports.FloatingComposer = floatingComposer.FloatingComposer;
|
|
16
|
+
exports.OPEN_FLOATING_COMPOSER_COMMAND = floatingComposer.OPEN_FLOATING_COMPOSER_COMMAND;
|
|
17
|
+
exports.ThreadMarkNode = threadMarkNode.ThreadMarkNode;
|
|
14
18
|
exports.ThreadPanel = ThreadPanel.ThreadPanel;
|
|
15
|
-
exports.
|
|
16
|
-
exports.
|
|
19
|
+
exports.liveblocksConfig = liveblocksConfig.liveblocksConfig;
|
|
20
|
+
exports.LiveblocksPlugin = liveblocksPluginProvider.LiveblocksPlugin;
|
|
17
21
|
exports.Mention = mentionComponent.Mention;
|
|
18
|
-
exports.
|
|
19
|
-
exports.useCreateThread = commentPluginProvider.useCreateThread;
|
|
22
|
+
exports.MentionNode = mentionNode.MentionNode;
|
|
20
23
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":["../src/index.ts"],"sourcesContent":["import { detectDupes } from \"@liveblocks/core\";\n\nimport { PKG_FORMAT, PKG_NAME, PKG_VERSION } from \"./version\";\n\ndetectDupes(PKG_NAME, PKG_VERSION, PKG_FORMAT);\n\nexport {
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../src/index.ts"],"sourcesContent":["import { detectDupes } from \"@liveblocks/core\";\n\nimport { PKG_FORMAT, PKG_NAME, PKG_VERSION } from \"./version\";\n\ndetectDupes(PKG_NAME, PKG_VERSION, PKG_FORMAT);\n\nexport {\n FloatingComposer,\n OPEN_FLOATING_COMPOSER_COMMAND,\n} from \"./comments/floating-composer\";\nexport { ThreadMarkNode } from \"./comments/thread-mark-node\";\nexport { ThreadPanel } from \"./comments/ThreadPanel\";\nexport { liveblocksConfig } from \"./liveblocks-config\";\nexport { LiveblocksPlugin } from \"./liveblocks-plugin-provider\";\nexport { Mention } from \"./mentions/mention-component\";\nexport { MentionNode } from \"./mentions/mention-node\";\n"],"names":["detectDupes","PKG_NAME","PKG_VERSION","PKG_FORMAT"],"mappings":";;;;;;;;;;;;AAIAA,gBAAY,CAAAC,gBAAA,EAAUC,qBAAaC,kBAAU,CAAA;;;;;;;;;;;"}
|
package/dist/index.mjs
CHANGED
|
@@ -1,11 +1,12 @@
|
|
|
1
1
|
import { detectDupes } from '@liveblocks/core';
|
|
2
2
|
import { PKG_NAME, PKG_VERSION, PKG_FORMAT } from './version.mjs';
|
|
3
|
+
export { FloatingComposer, OPEN_FLOATING_COMPOSER_COMMAND } from './comments/floating-composer.mjs';
|
|
4
|
+
export { ThreadMarkNode } from './comments/thread-mark-node.mjs';
|
|
3
5
|
export { ThreadPanel } from './comments/ThreadPanel.mjs';
|
|
4
|
-
export {
|
|
5
|
-
export {
|
|
6
|
+
export { liveblocksConfig } from './liveblocks-config.mjs';
|
|
7
|
+
export { LiveblocksPlugin } from './liveblocks-plugin-provider.mjs';
|
|
6
8
|
export { Mention } from './mentions/mention-component.mjs';
|
|
7
|
-
export {
|
|
8
|
-
export { useCreateThread } from './comments/comment-plugin-provider.mjs';
|
|
9
|
+
export { MentionNode } from './mentions/mention-node.mjs';
|
|
9
10
|
|
|
10
11
|
detectDupes(PKG_NAME, PKG_VERSION, PKG_FORMAT);
|
|
11
12
|
//# sourceMappingURL=index.mjs.map
|
package/dist/index.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.mjs","sources":["../src/index.ts"],"sourcesContent":["import { detectDupes } from \"@liveblocks/core\";\n\nimport { PKG_FORMAT, PKG_NAME, PKG_VERSION } from \"./version\";\n\ndetectDupes(PKG_NAME, PKG_VERSION, PKG_FORMAT);\n\nexport {
|
|
1
|
+
{"version":3,"file":"index.mjs","sources":["../src/index.ts"],"sourcesContent":["import { detectDupes } from \"@liveblocks/core\";\n\nimport { PKG_FORMAT, PKG_NAME, PKG_VERSION } from \"./version\";\n\ndetectDupes(PKG_NAME, PKG_VERSION, PKG_FORMAT);\n\nexport {\n FloatingComposer,\n OPEN_FLOATING_COMPOSER_COMMAND,\n} from \"./comments/floating-composer\";\nexport { ThreadMarkNode } from \"./comments/thread-mark-node\";\nexport { ThreadPanel } from \"./comments/ThreadPanel\";\nexport { liveblocksConfig } from \"./liveblocks-config\";\nexport { LiveblocksPlugin } from \"./liveblocks-plugin-provider\";\nexport { Mention } from \"./mentions/mention-component\";\nexport { MentionNode } from \"./mentions/mention-node\";\n"],"names":[],"mappings":";;;;;;;;;;AAIA,WAAY,CAAA,QAAA,EAAU,aAAa,UAAU,CAAA"}
|
|
@@ -1,89 +1,17 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
|
-
var React = require('react');
|
|
4
3
|
var threadMarkNode = require('./comments/thread-mark-node.js');
|
|
5
|
-
var avatar = require('./mentions/avatar.js');
|
|
6
|
-
var mentionComponent = require('./mentions/mention-component.js');
|
|
7
4
|
var mentionNode = require('./mentions/mention-node.js');
|
|
8
|
-
var suggestions = require('./mentions/suggestions.js');
|
|
9
|
-
var user = require('./mentions/user.js');
|
|
10
5
|
|
|
11
|
-
function
|
|
12
|
-
var n = Object.create(null);
|
|
13
|
-
if (e) {
|
|
14
|
-
Object.keys(e).forEach(function (k) {
|
|
15
|
-
if (k !== 'default') {
|
|
16
|
-
var d = Object.getOwnPropertyDescriptor(e, k);
|
|
17
|
-
Object.defineProperty(n, k, d.get ? d : {
|
|
18
|
-
enumerable: true,
|
|
19
|
-
get: function () { return e[k]; }
|
|
20
|
-
});
|
|
21
|
-
}
|
|
22
|
-
});
|
|
23
|
-
}
|
|
24
|
-
n.default = e;
|
|
25
|
-
return Object.freeze(n);
|
|
26
|
-
}
|
|
27
|
-
|
|
28
|
-
var React__namespace = /*#__PURE__*/_interopNamespaceDefault(React);
|
|
29
|
-
|
|
30
|
-
let liveblocksConfig = null;
|
|
31
|
-
const MENTION_CHARACTER = "@";
|
|
32
|
-
const defaultComponents = {
|
|
33
|
-
Mention: ({ userId }) => {
|
|
34
|
-
return /* @__PURE__ */ React__namespace.createElement(mentionComponent.Mention, {
|
|
35
|
-
className: "lb-lexical-mention"
|
|
36
|
-
}, MENTION_CHARACTER, /* @__PURE__ */ React__namespace.createElement(user, {
|
|
37
|
-
userId
|
|
38
|
-
}));
|
|
39
|
-
},
|
|
40
|
-
MentionSuggestions: ({ userIds }) => {
|
|
41
|
-
return /* @__PURE__ */ React__namespace.createElement(suggestions.List, {
|
|
42
|
-
className: "lb-lexical-suggestions-list"
|
|
43
|
-
}, userIds.map((userId) => /* @__PURE__ */ React__namespace.createElement(suggestions.Item, {
|
|
44
|
-
key: userId,
|
|
45
|
-
value: userId,
|
|
46
|
-
className: "lb-lexical-suggestions-list-item"
|
|
47
|
-
}, /* @__PURE__ */ React__namespace.createElement(avatar, {
|
|
48
|
-
userId,
|
|
49
|
-
className: "lb-lexical-mention-suggestion-avatar"
|
|
50
|
-
}), /* @__PURE__ */ React__namespace.createElement(user, {
|
|
51
|
-
userId,
|
|
52
|
-
className: "lb-lexical-mention-suggestion-user"
|
|
53
|
-
}))));
|
|
54
|
-
}
|
|
55
|
-
};
|
|
56
|
-
function liveblocksLexicalConfig(editorConfig, config = {}) {
|
|
57
|
-
const { comments = true, components = {} } = config;
|
|
6
|
+
function liveblocksConfig(editorConfig) {
|
|
58
7
|
const nodes = [...editorConfig.nodes ?? []];
|
|
59
|
-
|
|
60
|
-
const MentionSuggestions = components.MentionSuggestions ?? defaultComponents.MentionSuggestions;
|
|
61
|
-
const mentionFactory = mentionNode.createMentionNodeFactory(Mention2);
|
|
62
|
-
nodes.push(threadMarkNode.ThreadMarkNode, mentionFactory.MentionNode);
|
|
63
|
-
liveblocksConfig = {
|
|
64
|
-
comments,
|
|
65
|
-
mentions: {
|
|
66
|
-
factory: mentionFactory,
|
|
67
|
-
components: {
|
|
68
|
-
MentionSuggestions
|
|
69
|
-
}
|
|
70
|
-
}
|
|
71
|
-
};
|
|
8
|
+
nodes.push(threadMarkNode.ThreadMarkNode, mentionNode.MentionNode);
|
|
72
9
|
return {
|
|
73
10
|
...editorConfig,
|
|
74
11
|
nodes,
|
|
75
12
|
editorState: null
|
|
76
13
|
};
|
|
77
14
|
}
|
|
78
|
-
function getLiveblocksLexicalConfig() {
|
|
79
|
-
if (liveblocksConfig === null) {
|
|
80
|
-
throw new Error("Liveblocks config is not initialized.");
|
|
81
|
-
}
|
|
82
|
-
return {
|
|
83
|
-
...liveblocksConfig
|
|
84
|
-
};
|
|
85
|
-
}
|
|
86
15
|
|
|
87
|
-
exports.
|
|
88
|
-
exports.liveblocksLexicalConfig = liveblocksLexicalConfig;
|
|
16
|
+
exports.liveblocksConfig = liveblocksConfig;
|
|
89
17
|
//# sourceMappingURL=liveblocks-config.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"liveblocks-config.js","sources":["../src/liveblocks-config.
|
|
1
|
+
{"version":3,"file":"liveblocks-config.js","sources":["../src/liveblocks-config.ts"],"sourcesContent":["import type { InitialConfigType } from \"@lexical/react/LexicalComposer\";\n\nimport { ThreadMarkNode } from \"./comments/thread-mark-node\";\nimport { MentionNode } from \"./mentions/mention-node\";\n\nexport function liveblocksConfig(\n editorConfig: Omit<InitialConfigType, \"editorState\">\n) {\n const nodes = [...(editorConfig.nodes ?? [])];\n\n nodes.push(ThreadMarkNode, MentionNode);\n\n return {\n ...editorConfig,\n nodes,\n editorState: null, // explicitly null because CollabProvider requires it\n };\n}\n"],"names":["ThreadMarkNode","MentionNode"],"mappings":";;;;;AAKO,SAAS,iBACd,YACA,EAAA;AACA,EAAA,MAAM,QAAQ,CAAC,GAAI,YAAa,CAAA,KAAA,IAAS,EAAG,CAAA,CAAA;AAE5C,EAAM,KAAA,CAAA,IAAA,CAAKA,+BAAgBC,uBAAW,CAAA,CAAA;AAEtC,EAAO,OAAA;AAAA,IACL,GAAG,YAAA;AAAA,IACH,KAAA;AAAA,IACA,WAAa,EAAA,IAAA;AAAA,GACf,CAAA;AACF;;;;"}
|
|
@@ -1,67 +1,15 @@
|
|
|
1
|
-
import * as React from 'react';
|
|
2
1
|
import { ThreadMarkNode } from './comments/thread-mark-node.mjs';
|
|
3
|
-
import
|
|
4
|
-
import { Mention } from './mentions/mention-component.mjs';
|
|
5
|
-
import { createMentionNodeFactory } from './mentions/mention-node.mjs';
|
|
6
|
-
import { List, Item } from './mentions/suggestions.mjs';
|
|
7
|
-
import User from './mentions/user.mjs';
|
|
2
|
+
import { MentionNode } from './mentions/mention-node.mjs';
|
|
8
3
|
|
|
9
|
-
|
|
10
|
-
const MENTION_CHARACTER = "@";
|
|
11
|
-
const defaultComponents = {
|
|
12
|
-
Mention: ({ userId }) => {
|
|
13
|
-
return /* @__PURE__ */ React.createElement(Mention, {
|
|
14
|
-
className: "lb-lexical-mention"
|
|
15
|
-
}, MENTION_CHARACTER, /* @__PURE__ */ React.createElement(User, {
|
|
16
|
-
userId
|
|
17
|
-
}));
|
|
18
|
-
},
|
|
19
|
-
MentionSuggestions: ({ userIds }) => {
|
|
20
|
-
return /* @__PURE__ */ React.createElement(List, {
|
|
21
|
-
className: "lb-lexical-suggestions-list"
|
|
22
|
-
}, userIds.map((userId) => /* @__PURE__ */ React.createElement(Item, {
|
|
23
|
-
key: userId,
|
|
24
|
-
value: userId,
|
|
25
|
-
className: "lb-lexical-suggestions-list-item"
|
|
26
|
-
}, /* @__PURE__ */ React.createElement(Avatar, {
|
|
27
|
-
userId,
|
|
28
|
-
className: "lb-lexical-mention-suggestion-avatar"
|
|
29
|
-
}), /* @__PURE__ */ React.createElement(User, {
|
|
30
|
-
userId,
|
|
31
|
-
className: "lb-lexical-mention-suggestion-user"
|
|
32
|
-
}))));
|
|
33
|
-
}
|
|
34
|
-
};
|
|
35
|
-
function liveblocksLexicalConfig(editorConfig, config = {}) {
|
|
36
|
-
const { comments = true, components = {} } = config;
|
|
4
|
+
function liveblocksConfig(editorConfig) {
|
|
37
5
|
const nodes = [...editorConfig.nodes ?? []];
|
|
38
|
-
|
|
39
|
-
const MentionSuggestions = components.MentionSuggestions ?? defaultComponents.MentionSuggestions;
|
|
40
|
-
const mentionFactory = createMentionNodeFactory(Mention2);
|
|
41
|
-
nodes.push(ThreadMarkNode, mentionFactory.MentionNode);
|
|
42
|
-
liveblocksConfig = {
|
|
43
|
-
comments,
|
|
44
|
-
mentions: {
|
|
45
|
-
factory: mentionFactory,
|
|
46
|
-
components: {
|
|
47
|
-
MentionSuggestions
|
|
48
|
-
}
|
|
49
|
-
}
|
|
50
|
-
};
|
|
6
|
+
nodes.push(ThreadMarkNode, MentionNode);
|
|
51
7
|
return {
|
|
52
8
|
...editorConfig,
|
|
53
9
|
nodes,
|
|
54
10
|
editorState: null
|
|
55
11
|
};
|
|
56
12
|
}
|
|
57
|
-
function getLiveblocksLexicalConfig() {
|
|
58
|
-
if (liveblocksConfig === null) {
|
|
59
|
-
throw new Error("Liveblocks config is not initialized.");
|
|
60
|
-
}
|
|
61
|
-
return {
|
|
62
|
-
...liveblocksConfig
|
|
63
|
-
};
|
|
64
|
-
}
|
|
65
13
|
|
|
66
|
-
export {
|
|
14
|
+
export { liveblocksConfig };
|
|
67
15
|
//# sourceMappingURL=liveblocks-config.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"liveblocks-config.mjs","sources":["../src/liveblocks-config.
|
|
1
|
+
{"version":3,"file":"liveblocks-config.mjs","sources":["../src/liveblocks-config.ts"],"sourcesContent":["import type { InitialConfigType } from \"@lexical/react/LexicalComposer\";\n\nimport { ThreadMarkNode } from \"./comments/thread-mark-node\";\nimport { MentionNode } from \"./mentions/mention-node\";\n\nexport function liveblocksConfig(\n editorConfig: Omit<InitialConfigType, \"editorState\">\n) {\n const nodes = [...(editorConfig.nodes ?? [])];\n\n nodes.push(ThreadMarkNode, MentionNode);\n\n return {\n ...editorConfig,\n nodes,\n editorState: null, // explicitly null because CollabProvider requires it\n };\n}\n"],"names":[],"mappings":";;;AAKO,SAAS,iBACd,YACA,EAAA;AACA,EAAA,MAAM,QAAQ,CAAC,GAAI,YAAa,CAAA,KAAA,IAAS,EAAG,CAAA,CAAA;AAE5C,EAAM,KAAA,CAAA,IAAA,CAAK,gBAAgB,WAAW,CAAA,CAAA;AAEtC,EAAO,OAAA;AAAA,IACL,GAAG,YAAA;AAAA,IACH,KAAA;AAAA,IACA,WAAa,EAAA,IAAA;AAAA,GACf,CAAA;AACF;;;;"}
|
|
@@ -4,26 +4,23 @@ var LexicalCollaborationPlugin = require('@lexical/react/LexicalCollaborationPlu
|
|
|
4
4
|
var LexicalComposerContext = require('@lexical/react/LexicalComposerContext');
|
|
5
5
|
var core = require('@liveblocks/core');
|
|
6
6
|
var react = require('@liveblocks/react');
|
|
7
|
-
var
|
|
7
|
+
var yjs$1 = require('@liveblocks/yjs');
|
|
8
8
|
var React = require('react');
|
|
9
9
|
var yjs = require('yjs');
|
|
10
10
|
var commentPluginProvider = require('./comments/comment-plugin-provider.js');
|
|
11
|
-
var liveblocksConfig = require('./liveblocks-config.js');
|
|
12
11
|
var mentionPlugin = require('./mentions/mention-plugin.js');
|
|
13
12
|
|
|
14
|
-
const
|
|
15
|
-
const LiveblocksPluginProvider = ({
|
|
13
|
+
const LiveblocksPlugin = ({
|
|
16
14
|
children
|
|
17
15
|
}) => {
|
|
18
16
|
const client = react.useClient();
|
|
19
17
|
const hasResolveMentionSuggestions = client[core.kInternal].resolveMentionSuggestions !== void 0;
|
|
20
|
-
const { useSelf, useRoom } = react.useRoomContextBundle();
|
|
21
18
|
const [editor] = LexicalComposerContext.useLexicalComposerContext();
|
|
22
|
-
const room = useRoom();
|
|
19
|
+
const room = react.useRoom();
|
|
23
20
|
const [provider, setProvider] = React.useState();
|
|
24
21
|
const doc = React.useMemo(() => new yjs.Doc(), []);
|
|
25
22
|
React.useEffect(() => {
|
|
26
|
-
const _provider = new
|
|
23
|
+
const _provider = new yjs$1.LiveblocksYjsProvider(room, doc);
|
|
27
24
|
setProvider(_provider);
|
|
28
25
|
return () => {
|
|
29
26
|
_provider.destroy();
|
|
@@ -34,13 +31,15 @@ const LiveblocksPluginProvider = ({
|
|
|
34
31
|
if (process.env.NODE_ENV !== "production") {
|
|
35
32
|
if (!editor.getEditorState().isEmpty()) {
|
|
36
33
|
console.warn(
|
|
37
|
-
"Warning:
|
|
34
|
+
"Warning: LiveblocksPlugin: editorState in initialConfig detected, but must be null."
|
|
38
35
|
);
|
|
39
36
|
}
|
|
40
37
|
}
|
|
41
|
-
room[core.kInternal].reportTextEditor("lexical", "root");
|
|
42
38
|
}, []);
|
|
43
|
-
|
|
39
|
+
React.useEffect(() => {
|
|
40
|
+
room[core.kInternal].reportTextEditor("lexical", "root");
|
|
41
|
+
}, [room]);
|
|
42
|
+
const info = react.useSelf((me) => me.info);
|
|
44
43
|
const username = info?.name;
|
|
45
44
|
const cursorcolor = info?.color;
|
|
46
45
|
const providerFactory = React.useCallback(
|
|
@@ -50,30 +49,14 @@ const LiveblocksPluginProvider = ({
|
|
|
50
49
|
},
|
|
51
50
|
[provider, doc]
|
|
52
51
|
);
|
|
53
|
-
|
|
54
|
-
if (configRef.current === null) {
|
|
55
|
-
configRef.current = liveblocksConfig.getLiveblocksLexicalConfig();
|
|
56
|
-
}
|
|
57
|
-
return /* @__PURE__ */ React.createElement(LiveblocksLexicalConfigContext.Provider, {
|
|
58
|
-
value: configRef.current
|
|
59
|
-
}, provider && /* @__PURE__ */ React.createElement(LexicalCollaborationPlugin.CollaborationPlugin, {
|
|
52
|
+
return /* @__PURE__ */ React.createElement(React.Fragment, null, provider && /* @__PURE__ */ React.createElement(LexicalCollaborationPlugin.CollaborationPlugin, {
|
|
60
53
|
providerFactory,
|
|
61
54
|
id: "liveblocks-document",
|
|
62
55
|
username,
|
|
63
56
|
cursorColor: cursorcolor,
|
|
64
57
|
shouldBootstrap: true
|
|
65
|
-
}), hasResolveMentionSuggestions && /* @__PURE__ */ React.createElement(mentionPlugin.
|
|
58
|
+
}), hasResolveMentionSuggestions && /* @__PURE__ */ React.createElement(mentionPlugin.MentionPlugin, null), /* @__PURE__ */ React.createElement(commentPluginProvider.CommentPluginProvider, null, children));
|
|
66
59
|
};
|
|
67
|
-
function useLiveblocksLexicalConfigContext() {
|
|
68
|
-
const config = React.useContext(LiveblocksLexicalConfigContext);
|
|
69
|
-
if (config === null) {
|
|
70
|
-
throw new Error(
|
|
71
|
-
"useLiveblocksLexicalConfigContext must be used within a LiveblocksPluginProviderProvider"
|
|
72
|
-
);
|
|
73
|
-
}
|
|
74
|
-
return config;
|
|
75
|
-
}
|
|
76
60
|
|
|
77
|
-
exports.
|
|
78
|
-
exports.useLiveblocksLexicalConfigContext = useLiveblocksLexicalConfigContext;
|
|
61
|
+
exports.LiveblocksPlugin = LiveblocksPlugin;
|
|
79
62
|
//# sourceMappingURL=liveblocks-plugin-provider.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"liveblocks-plugin-provider.js","sources":["../src/liveblocks-plugin-provider.tsx"],"sourcesContent":["import { CollaborationPlugin } from \"@lexical/react/LexicalCollaborationPlugin\";\nimport { useLexicalComposerContext } from \"@lexical/react/LexicalComposerContext\";\nimport type { Provider } from \"@lexical/yjs\";\nimport type {\n BaseUserMeta,\n Json,\n JsonObject,\n LsonObject,\n} from \"@liveblocks/core\";\nimport { kInternal } from \"@liveblocks/core\";\nimport { useClient,
|
|
1
|
+
{"version":3,"file":"liveblocks-plugin-provider.js","sources":["../src/liveblocks-plugin-provider.tsx"],"sourcesContent":["import { CollaborationPlugin } from \"@lexical/react/LexicalCollaborationPlugin\";\nimport { useLexicalComposerContext } from \"@lexical/react/LexicalComposerContext\";\nimport type { Provider } from \"@lexical/yjs\";\nimport type {\n BaseMetadata,\n BaseUserMeta,\n Json,\n JsonObject,\n LsonObject,\n} from \"@liveblocks/core\";\nimport { kInternal } from \"@liveblocks/core\";\nimport { useClient, useRoom, useSelf } from \"@liveblocks/react\";\nimport { LiveblocksYjsProvider } from \"@liveblocks/yjs\";\nimport React, { useCallback, useEffect, useMemo, useState } from \"react\";\nimport { Doc } from \"yjs\";\n\nimport { CommentPluginProvider } from \"./comments/comment-plugin-provider\";\nimport { MentionPlugin } from \"./mentions/mention-plugin\";\n\nexport type LiveblocksPluginProps = {\n children?: React.ReactNode;\n};\n\nexport const LiveblocksPlugin = ({\n children,\n}: LiveblocksPluginProps): JSX.Element => {\n const client = useClient();\n const hasResolveMentionSuggestions =\n client[kInternal].resolveMentionSuggestions !== undefined;\n const [editor] = useLexicalComposerContext();\n const room = useRoom();\n\n const [provider, setProvider] = useState<\n | LiveblocksYjsProvider<\n JsonObject,\n LsonObject,\n BaseUserMeta,\n Json,\n BaseMetadata\n >\n | undefined\n >();\n\n const doc = useMemo(() => new Doc(), []);\n\n useEffect(() => {\n const _provider = new LiveblocksYjsProvider(room, doc);\n setProvider(_provider);\n return () => {\n _provider.destroy();\n setProvider(undefined);\n };\n }, [room, doc]);\n\n // Warn users if initialConfig.editorState, set on the composer, is not null\n useEffect(() => {\n // only in dev mode\n if (process.env.NODE_ENV !== \"production\") {\n // A user should not even be set an emptyState, but when passing null, getEditorState still has initial empty state\n if (!editor.getEditorState().isEmpty()) {\n console.warn(\n \"Warning: LiveblocksPlugin: editorState in initialConfig detected, but must be null.\"\n );\n }\n }\n\n // we know editor is already defined as we're inside LexicalComposer, and we only want this running the first time\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n useEffect(() => {\n // Report that this is lexical and root is the rootKey\n room[kInternal].reportTextEditor(\"lexical\", \"root\");\n }, [room]);\n\n // Get user info or allow override from props\n const info = useSelf((me) => me.info);\n const username = info?.name;\n const cursorcolor = info?.color as string | undefined;\n\n // Create the provider factory\n const providerFactory = useCallback(\n (id: string, yjsDocMap: Map<string, Doc>) => {\n yjsDocMap.set(id, doc);\n return provider as Provider;\n },\n [provider, doc]\n );\n\n return (\n <>\n {provider && (\n <CollaborationPlugin\n providerFactory={providerFactory}\n id={\"liveblocks-document\"}\n username={username}\n cursorColor={cursorcolor}\n shouldBootstrap={true}\n />\n )}\n\n {hasResolveMentionSuggestions && <MentionPlugin />}\n\n <CommentPluginProvider>{children}</CommentPluginProvider>\n </>\n );\n};\n"],"names":["useClient","kInternal","useLexicalComposerContext","useRoom","useState","useMemo","Doc","useEffect","LiveblocksYjsProvider","useSelf","useCallback","CollaborationPlugin","MentionPlugin","CommentPluginProvider"],"mappings":";;;;;;;;;;;;AAuBO,MAAM,mBAAmB,CAAC;AAAA,EAC/B,QAAA;AACF,CAA0C,KAAA;AACxC,EAAA,MAAM,SAASA,eAAU,EAAA,CAAA;AACzB,EAAM,MAAA,4BAAA,GACJ,MAAO,CAAAC,cAAA,CAAA,CAAW,yBAA8B,KAAA,KAAA,CAAA,CAAA;AAClD,EAAM,MAAA,CAAC,MAAM,CAAA,GAAIC,gDAA0B,EAAA,CAAA;AAC3C,EAAA,MAAM,OAAOC,aAAQ,EAAA,CAAA;AAErB,EAAA,MAAM,CAAC,QAAA,EAAU,WAAW,CAAA,GAAIC,cAS9B,EAAA,CAAA;AAEF,EAAA,MAAM,MAAMC,aAAQ,CAAA,MAAM,IAAIC,OAAI,EAAA,EAAG,EAAE,CAAA,CAAA;AAEvC,EAAAC,eAAA,CAAU,MAAM;AACd,IAAA,MAAM,SAAY,GAAA,IAAIC,2BAAsB,CAAA,IAAA,EAAM,GAAG,CAAA,CAAA;AACrD,IAAA,WAAA,CAAY,SAAS,CAAA,CAAA;AACrB,IAAA,OAAO,MAAM;AACX,MAAA,SAAA,CAAU,OAAQ,EAAA,CAAA;AAClB,MAAA,WAAA,CAAY,KAAS,CAAA,CAAA,CAAA;AAAA,KACvB,CAAA;AAAA,GACC,EAAA,CAAC,IAAM,EAAA,GAAG,CAAC,CAAA,CAAA;AAGd,EAAAD,eAAA,CAAU,MAAM;AAEd,IAAI,IAAA,OAAA,CAAQ,GAAI,CAAA,QAAA,KAAa,YAAc,EAAA;AAEzC,MAAA,IAAI,CAAC,MAAA,CAAO,cAAe,EAAA,CAAE,SAAW,EAAA;AACtC,QAAQ,OAAA,CAAA,IAAA;AAAA,UACN,qFAAA;AAAA,SACF,CAAA;AAAA,OACF;AAAA,KACF;AAAA,GAIF,EAAG,EAAE,CAAA,CAAA;AAEL,EAAAA,eAAA,CAAU,MAAM;AAEd,IAAK,IAAA,CAAAN,cAAA,CAAA,CAAW,gBAAiB,CAAA,SAAA,EAAW,MAAM,CAAA,CAAA;AAAA,GACpD,EAAG,CAAC,IAAI,CAAC,CAAA,CAAA;AAGT,EAAA,MAAM,IAAO,GAAAQ,aAAA,CAAQ,CAAC,EAAA,KAAO,GAAG,IAAI,CAAA,CAAA;AACpC,EAAA,MAAM,WAAW,IAAM,EAAA,IAAA,CAAA;AACvB,EAAA,MAAM,cAAc,IAAM,EAAA,KAAA,CAAA;AAG1B,EAAA,MAAM,eAAkB,GAAAC,iBAAA;AAAA,IACtB,CAAC,IAAY,SAAgC,KAAA;AAC3C,MAAU,SAAA,CAAA,GAAA,CAAI,IAAI,GAAG,CAAA,CAAA;AACrB,MAAO,OAAA,QAAA,CAAA;AAAA,KACT;AAAA,IACA,CAAC,UAAU,GAAG,CAAA;AAAA,GAChB,CAAA;AAEA,EACE,uBAAA,KAAA,CAAA,aAAA,CAAA,KAAA,CAAA,QAAA,EAAA,IAAA,EACG,4BACE,KAAA,CAAA,aAAA,CAAAC,8CAAA,EAAA;AAAA,IACC,eAAA;AAAA,IACA,EAAI,EAAA,qBAAA;AAAA,IACJ,QAAA;AAAA,IACA,WAAa,EAAA,WAAA;AAAA,IACb,eAAiB,EAAA,IAAA;AAAA,GACnB,CAAA,EAGD,gDAAiC,KAAA,CAAA,aAAA,CAAAC,2BAAA,EAAA,IAAc,mBAE/C,KAAA,CAAA,aAAA,CAAAC,2CAAA,EAAA,IAAA,EAAuB,QAAS,CACnC,CAAA,CAAA;AAEJ;;;;"}
|
|
@@ -1,27 +1,24 @@
|
|
|
1
1
|
import { CollaborationPlugin } from '@lexical/react/LexicalCollaborationPlugin';
|
|
2
2
|
import { useLexicalComposerContext } from '@lexical/react/LexicalComposerContext';
|
|
3
3
|
import { kInternal } from '@liveblocks/core';
|
|
4
|
-
import { useClient,
|
|
5
|
-
import
|
|
6
|
-
import React__default, {
|
|
4
|
+
import { useClient, useRoom, useSelf } from '@liveblocks/react';
|
|
5
|
+
import { LiveblocksYjsProvider } from '@liveblocks/yjs';
|
|
6
|
+
import React__default, { useState, useMemo, useEffect, useCallback } from 'react';
|
|
7
7
|
import { Doc } from 'yjs';
|
|
8
8
|
import { CommentPluginProvider } from './comments/comment-plugin-provider.mjs';
|
|
9
|
-
import {
|
|
10
|
-
import MentionPlugin from './mentions/mention-plugin.mjs';
|
|
9
|
+
import { MentionPlugin } from './mentions/mention-plugin.mjs';
|
|
11
10
|
|
|
12
|
-
const
|
|
13
|
-
const LiveblocksPluginProvider = ({
|
|
11
|
+
const LiveblocksPlugin = ({
|
|
14
12
|
children
|
|
15
13
|
}) => {
|
|
16
14
|
const client = useClient();
|
|
17
15
|
const hasResolveMentionSuggestions = client[kInternal].resolveMentionSuggestions !== void 0;
|
|
18
|
-
const { useSelf, useRoom } = useRoomContextBundle();
|
|
19
16
|
const [editor] = useLexicalComposerContext();
|
|
20
17
|
const room = useRoom();
|
|
21
18
|
const [provider, setProvider] = useState();
|
|
22
19
|
const doc = useMemo(() => new Doc(), []);
|
|
23
20
|
useEffect(() => {
|
|
24
|
-
const _provider = new
|
|
21
|
+
const _provider = new LiveblocksYjsProvider(room, doc);
|
|
25
22
|
setProvider(_provider);
|
|
26
23
|
return () => {
|
|
27
24
|
_provider.destroy();
|
|
@@ -32,12 +29,14 @@ const LiveblocksPluginProvider = ({
|
|
|
32
29
|
if (process.env.NODE_ENV !== "production") {
|
|
33
30
|
if (!editor.getEditorState().isEmpty()) {
|
|
34
31
|
console.warn(
|
|
35
|
-
"Warning:
|
|
32
|
+
"Warning: LiveblocksPlugin: editorState in initialConfig detected, but must be null."
|
|
36
33
|
);
|
|
37
34
|
}
|
|
38
35
|
}
|
|
39
|
-
room[kInternal].reportTextEditor("lexical", "root");
|
|
40
36
|
}, []);
|
|
37
|
+
useEffect(() => {
|
|
38
|
+
room[kInternal].reportTextEditor("lexical", "root");
|
|
39
|
+
}, [room]);
|
|
41
40
|
const info = useSelf((me) => me.info);
|
|
42
41
|
const username = info?.name;
|
|
43
42
|
const cursorcolor = info?.color;
|
|
@@ -48,29 +47,14 @@ const LiveblocksPluginProvider = ({
|
|
|
48
47
|
},
|
|
49
48
|
[provider, doc]
|
|
50
49
|
);
|
|
51
|
-
|
|
52
|
-
if (configRef.current === null) {
|
|
53
|
-
configRef.current = getLiveblocksLexicalConfig();
|
|
54
|
-
}
|
|
55
|
-
return /* @__PURE__ */ React__default.createElement(LiveblocksLexicalConfigContext.Provider, {
|
|
56
|
-
value: configRef.current
|
|
57
|
-
}, provider && /* @__PURE__ */ React__default.createElement(CollaborationPlugin, {
|
|
50
|
+
return /* @__PURE__ */ React__default.createElement(React__default.Fragment, null, provider && /* @__PURE__ */ React__default.createElement(CollaborationPlugin, {
|
|
58
51
|
providerFactory,
|
|
59
52
|
id: "liveblocks-document",
|
|
60
53
|
username,
|
|
61
54
|
cursorColor: cursorcolor,
|
|
62
55
|
shouldBootstrap: true
|
|
63
|
-
}), hasResolveMentionSuggestions && /* @__PURE__ */ React__default.createElement(MentionPlugin, null),
|
|
56
|
+
}), hasResolveMentionSuggestions && /* @__PURE__ */ React__default.createElement(MentionPlugin, null), /* @__PURE__ */ React__default.createElement(CommentPluginProvider, null, children));
|
|
64
57
|
};
|
|
65
|
-
function useLiveblocksLexicalConfigContext() {
|
|
66
|
-
const config = useContext(LiveblocksLexicalConfigContext);
|
|
67
|
-
if (config === null) {
|
|
68
|
-
throw new Error(
|
|
69
|
-
"useLiveblocksLexicalConfigContext must be used within a LiveblocksPluginProviderProvider"
|
|
70
|
-
);
|
|
71
|
-
}
|
|
72
|
-
return config;
|
|
73
|
-
}
|
|
74
58
|
|
|
75
|
-
export {
|
|
59
|
+
export { LiveblocksPlugin };
|
|
76
60
|
//# sourceMappingURL=liveblocks-plugin-provider.mjs.map
|