@toptal/picasso-rich-text-editor 3.0.0 → 3.1.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/LexicalEditor/LazyLexicalEditor.d.ts +1 -1
- package/LexicalEditor/LexicalEditor.d.ts +2 -1
- package/LexicalEditor/LexicalEditor.js +4 -12
- package/LexicalEditor/LexicalEditor.js.map +1 -1
- package/LexicalEditor/LexicalEditor.test.js +0 -6
- package/LexicalEditor/LexicalEditor.test.js.map +1 -1
- package/LexicalEditor/hooks/useComponentPlugins/useComponentPlugins.d.ts +4 -2
- package/LexicalEditor/hooks/useComponentPlugins/useComponentPlugins.js +19 -4
- package/LexicalEditor/hooks/useComponentPlugins/useComponentPlugins.js.map +1 -1
- package/LexicalEditor/types.d.ts +0 -25
- package/LexicalEditorToolbarPlugin/LexicalEditorToolbarPlugin.d.ts +1 -4
- package/LexicalEditorToolbarPlugin/LexicalEditorToolbarPlugin.js +5 -21
- package/LexicalEditorToolbarPlugin/LexicalEditorToolbarPlugin.js.map +1 -1
- package/RichTextEditor/RichTextEditor.d.ts +4 -4
- package/RichTextEditor/RichTextEditor.js +5 -5
- package/RichTextEditor/RichTextEditor.js.map +1 -1
- package/RichTextEditor/index.d.ts +2 -1
- package/RichTextEditor/index.js.map +1 -1
- package/RichTextEditor/types.d.ts +0 -1
- package/RichTextEditorEmojiPicker/RichTextEditorEmojiPicker.d.ts +2 -3
- package/RichTextEditorEmojiPicker/RichTextEditorEmojiPicker.js +2 -2
- package/RichTextEditorEmojiPicker/RichTextEditorEmojiPicker.js.map +1 -1
- package/RichTextEditorToolbar/RichTextEditorToolbar.d.ts +1 -6
- package/RichTextEditorToolbar/RichTextEditorToolbar.js +10 -14
- package/RichTextEditorToolbar/RichTextEditorToolbar.js.map +1 -1
- package/package.json +1 -1
- package/plugins/EmojiPlugin/EmojiPlugin.d.ts +6 -1
- package/plugins/EmojiPlugin/EmojiPlugin.js +28 -4
- package/plugins/EmojiPlugin/EmojiPlugin.js.map +1 -1
- package/plugins/EmojiPlugin/EmojiPlugin.test.js +3 -3
- package/plugins/EmojiPlugin/EmojiPlugin.test.js.map +1 -1
- package/plugins/EmojiPlugin/index.d.ts +1 -0
- package/plugins/EmojiPlugin/types.d.ts +27 -0
- package/plugins/LinkPlugin/LinkPlugin.d.ts +1 -1
- package/plugins/LinkPlugin/LinkPlugin.js.map +1 -1
- package/plugins/Toolbar/Toolbar.d.ts +13 -0
- package/plugins/Toolbar/Toolbar.js +31 -0
- package/plugins/Toolbar/Toolbar.js.map +1 -0
- package/plugins/Toolbar/index.d.ts +1 -0
- package/plugins/Toolbar/index.js +2 -0
- package/plugins/Toolbar/index.js.map +1 -0
- package/plugins/Toolbar/styles.d.ts +3 -0
- package/plugins/Toolbar/styles.js +19 -0
- package/plugins/Toolbar/styles.js.map +1 -0
- package/plugins/api.d.ts +4 -12
- package/plugins/api.js +6 -18
- package/plugins/api.js.map +1 -1
|
@@ -17,7 +17,7 @@ declare const LazyLexicalEditor: React.ForwardRefExoticComponent<import("@toptal
|
|
|
17
17
|
unorderedListButton?: string | undefined;
|
|
18
18
|
orderedListButton?: string | undefined;
|
|
19
19
|
} | undefined;
|
|
20
|
-
customEmojis?: import("
|
|
20
|
+
customEmojis?: import("../plugins/EmojiPlugin").CustomEmojiGroup[] | undefined;
|
|
21
21
|
plugins?: import("./types").EditorPlugin[] | undefined;
|
|
22
22
|
hiddenInputId?: string | undefined;
|
|
23
23
|
} & React.RefAttributes<HTMLDivElement>>;
|
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
2
|
import type { BaseProps } from '@toptal/picasso-shared';
|
|
3
3
|
import type { ASTType } from '../RichText';
|
|
4
|
-
import type { ChangeHandler,
|
|
4
|
+
import type { ChangeHandler, EditorPlugin, TextLengthChangeHandler } from './types';
|
|
5
|
+
import type { CustomEmojiGroup } from '../plugins/EmojiPlugin';
|
|
5
6
|
export declare type Props = BaseProps & {
|
|
6
7
|
/** Indicates that an element is to be focused on page load */
|
|
7
8
|
autoFocus?: boolean;
|
|
@@ -15,8 +15,7 @@ import { noop } from '@toptal/picasso/utils';
|
|
|
15
15
|
import { $getRoot } from 'lexical';
|
|
16
16
|
import ToolbarPlugin from '../LexicalEditorToolbarPlugin';
|
|
17
17
|
import { RTEPluginContextProvider } from '../plugins/api';
|
|
18
|
-
import {
|
|
19
|
-
import { EmojiPlugin, ListPlugin, TextLengthPlugin, HeadingsReplacementPlugin, TriggerInitialOnChangePlugin, FocusOnLabelClickPlugin, } from '../plugins';
|
|
18
|
+
import { ListPlugin, TextLengthPlugin, HeadingsReplacementPlugin, TriggerInitialOnChangePlugin, FocusOnLabelClickPlugin, } from '../plugins';
|
|
20
19
|
import { useOnFocus, useTypographyClasses } from './hooks';
|
|
21
20
|
import { useComponentPlugins } from './hooks/useComponentPlugins/useComponentPlugins';
|
|
22
21
|
import styles from './styles';
|
|
@@ -39,7 +38,7 @@ const LexicalEditor = forwardRef(function LexicalEditor(props, ref) {
|
|
|
39
38
|
typographyClassNames,
|
|
40
39
|
classes,
|
|
41
40
|
}), [typographyClassNames, classes]);
|
|
42
|
-
const { componentPlugins, lexicalNodes } = useComponentPlugins(plugins);
|
|
41
|
+
const { componentPlugins, lexicalNodes } = useComponentPlugins(plugins, customEmojis);
|
|
43
42
|
const editorConfig = useMemo(() => ({
|
|
44
43
|
editorState: (editor) => setEditorValue(editor, defaultValue),
|
|
45
44
|
theme,
|
|
@@ -47,13 +46,7 @@ const LexicalEditor = forwardRef(function LexicalEditor(props, ref) {
|
|
|
47
46
|
throw error;
|
|
48
47
|
},
|
|
49
48
|
namespace: 'editor',
|
|
50
|
-
nodes: [
|
|
51
|
-
CustomEmojiNode,
|
|
52
|
-
ListNode,
|
|
53
|
-
ListItemNode,
|
|
54
|
-
HeadingNode,
|
|
55
|
-
...lexicalNodes,
|
|
56
|
-
],
|
|
49
|
+
nodes: [ListNode, ListItemNode, HeadingNode, ...lexicalNodes],
|
|
57
50
|
editable: !disabled,
|
|
58
51
|
}), [defaultValue, theme, disabled, lexicalNodes]);
|
|
59
52
|
const handleChange = useCallback((editorState, editor) => {
|
|
@@ -83,14 +76,13 @@ const LexicalEditor = forwardRef(function LexicalEditor(props, ref) {
|
|
|
83
76
|
React.createElement(RTEPluginContextProvider, { disabled: disabled, focused: focused },
|
|
84
77
|
React.createElement(ToolbarPlugin, { disabled: disabled || !focused, toolbarRef: toolbarRef,
|
|
85
78
|
// remount Toolbar when disabled
|
|
86
|
-
key: `${disabled || !focused}`,
|
|
79
|
+
key: `${disabled || !focused}`, testIds: testIds }),
|
|
87
80
|
defaultValue ? (React.createElement(TriggerInitialOnChangePlugin, { onChange: handleChange })) : null,
|
|
88
81
|
React.createElement(OnChangePlugin, { ignoreSelectionChange: true, onChange: handleChange }),
|
|
89
82
|
autoFocus && React.createElement(AutoFocusPlugin, null),
|
|
90
83
|
React.createElement(HeadingsReplacementPlugin, null),
|
|
91
84
|
React.createElement(TextLengthPlugin, { onTextLengthChange: onTextLengthChange }),
|
|
92
85
|
React.createElement(ListPlugin, null),
|
|
93
|
-
React.createElement(EmojiPlugin, null),
|
|
94
86
|
React.createElement(HistoryPlugin, null),
|
|
95
87
|
hiddenInputId && (React.createElement(FocusOnLabelClickPlugin, { hiddenInputId: hiddenInputId })),
|
|
96
88
|
componentPlugins,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"LexicalEditor.js","sourceRoot":"","sources":["../../src/LexicalEditor/LexicalEditor.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAAE,UAAU,EAAE,WAAW,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,OAAO,CAAA;AACvE,OAAO,EAAE,sBAAsB,EAAE,MAAM,eAAe,CAAA;AACtD,OAAO,EAAE,YAAY,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAA;AACtD,OAAO,EAAE,eAAe,EAAE,MAAM,uCAAuC,CAAA;AAEvE,OAAO,EAAE,eAAe,EAAE,MAAM,gCAAgC,CAAA;AAChE,OAAO,EAAE,eAAe,EAAE,MAAM,uCAAuC,CAAA;AACvE,OAAO,oBAAoB,MAAM,qCAAqC,CAAA;AACtE,OAAO,EAAE,aAAa,EAAE,MAAM,qCAAqC,CAAA;AACnE,OAAO,EAAE,cAAc,EAAE,MAAM,sCAAsC,CAAA;AACrE,OAAO,EAAE,cAAc,EAAE,MAAM,sCAAsC,CAAA;AACrE,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAA;AAEhD,OAAO,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAA;AACrD,OAAO,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAA;AAEvD,OAAO,EAAE,IAAI,EAAE,MAAM,uBAAuB,CAAA;AAE5C,OAAO,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAA;AAElC,OAAO,aAAa,MAAM,+BAA+B,CAAA;AACzD,OAAO,EAAE,wBAAwB,EAAE,MAAM,gBAAgB,CAAA;AACzD,OAAO,
|
|
1
|
+
{"version":3,"file":"LexicalEditor.js","sourceRoot":"","sources":["../../src/LexicalEditor/LexicalEditor.tsx"],"names":[],"mappings":"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"}
|
|
@@ -99,8 +99,6 @@ describe('LexicalEditor', () => {
|
|
|
99
99
|
renderLexicalEditor();
|
|
100
100
|
expect(mockedToolbarPlugin).toHaveBeenCalledWith({
|
|
101
101
|
disabled: true,
|
|
102
|
-
customEmojis: undefined,
|
|
103
|
-
plugins: [],
|
|
104
102
|
toolbarRef: {
|
|
105
103
|
current: null,
|
|
106
104
|
},
|
|
@@ -112,8 +110,6 @@ describe('LexicalEditor', () => {
|
|
|
112
110
|
renderLexicalEditor({ disabled: true });
|
|
113
111
|
expect(mockedToolbarPlugin).toHaveBeenCalledWith({
|
|
114
112
|
disabled: true,
|
|
115
|
-
customEmojis: undefined,
|
|
116
|
-
plugins: [],
|
|
117
113
|
toolbarRef: {
|
|
118
114
|
current: null,
|
|
119
115
|
},
|
|
@@ -129,8 +125,6 @@ describe('LexicalEditor', () => {
|
|
|
129
125
|
});
|
|
130
126
|
expect(mockedToolbarPlugin).toHaveBeenCalledWith({
|
|
131
127
|
disabled: true,
|
|
132
|
-
customEmojis: ['foo'],
|
|
133
|
-
plugins: ['link'],
|
|
134
128
|
toolbarRef: {
|
|
135
129
|
current: null,
|
|
136
130
|
},
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"LexicalEditor.test.js","sourceRoot":"","sources":["../../src/LexicalEditor/LexicalEditor.test.tsx"],"names":[],"mappings":";;;;;;;;;AAAA,OAAO,KAAK,MAAM,OAAO,CAAA;AACzB,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,4BAA4B,CAAA;AAE5D,OAAO,EAAE,cAAc,EAAE,MAAM,sCAAsC,CAAA;AACrE,OAAO,EAAE,aAAa,EAAE,MAAM,qCAAqC,CAAA;AAEnE,OAAO,aAAa,MAAM,iBAAiB,CAAA;AAE3C,OAAO,EACL,gBAAgB,EAChB,yBAAyB,EACzB,UAAU,EACV,UAAU,GACX,MAAM,YAAY,CAAA;AACnB,OAAO,aAAa,MAAM,+BAA+B,CAAA;
|
|
1
|
+
{"version":3,"file":"LexicalEditor.test.js","sourceRoot":"","sources":["../../src/LexicalEditor/LexicalEditor.test.tsx"],"names":[],"mappings":"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"}
|
|
@@ -1,6 +1,8 @@
|
|
|
1
|
+
import type { ReactElement } from 'react';
|
|
1
2
|
import React from 'react';
|
|
2
3
|
import type { EditorPlugin } from '../..';
|
|
3
|
-
|
|
4
|
+
import type { CustomEmojiGroup } from '../../../plugins/EmojiPlugin';
|
|
5
|
+
export declare const useComponentPlugins: (plugins: EditorPlugin[], customEmojis: CustomEmojiGroup[] | undefined) => {
|
|
4
6
|
lexicalNodes: import("lexical").Klass<import("lexical").LexicalNode>[];
|
|
5
|
-
componentPlugins:
|
|
7
|
+
componentPlugins: ReactElement<unknown, string | React.JSXElementConstructor<any>>[];
|
|
6
8
|
};
|
|
@@ -1,15 +1,30 @@
|
|
|
1
1
|
import React, { cloneElement } from 'react';
|
|
2
|
-
import { isRTEPluginElement, RTEPluginMeta } from '../../../plugins/api';
|
|
3
2
|
import { LinkPlugin } from '../../../plugins';
|
|
4
|
-
|
|
5
|
-
|
|
3
|
+
import { isRTEPluginElement, RTEPluginMeta } from '../../../plugins/api';
|
|
4
|
+
import EmojiPlugin from '../../../plugins/EmojiPlugin';
|
|
5
|
+
const uniquePlugins = () => {
|
|
6
|
+
const plugins = new Set();
|
|
7
|
+
return ({ type }) => {
|
|
8
|
+
if (plugins.has(type)) {
|
|
9
|
+
return false;
|
|
10
|
+
}
|
|
11
|
+
plugins.add(type);
|
|
12
|
+
return true;
|
|
13
|
+
};
|
|
14
|
+
};
|
|
15
|
+
export const useComponentPlugins = (plugins, customEmojis) => {
|
|
16
|
+
const mappedPlugins = plugins
|
|
17
|
+
.map(plugin => {
|
|
6
18
|
switch (plugin) {
|
|
7
19
|
case 'link':
|
|
8
20
|
return React.createElement(LinkPlugin, null);
|
|
21
|
+
case 'emoji':
|
|
22
|
+
return React.createElement(EmojiPlugin, { customEmojis: customEmojis });
|
|
9
23
|
default:
|
|
10
24
|
return plugin;
|
|
11
25
|
}
|
|
12
|
-
})
|
|
26
|
+
})
|
|
27
|
+
.filter(uniquePlugins());
|
|
13
28
|
const componentPlugins = mappedPlugins.filter(isRTEPluginElement);
|
|
14
29
|
const lexicalNodes = componentPlugins.flatMap(plugin => { var _a, _b, _c; return (_c = (_b = (_a = plugin.type[RTEPluginMeta]) === null || _a === void 0 ? void 0 : _a.lexical) === null || _b === void 0 ? void 0 : _b.nodes) !== null && _c !== void 0 ? _c : []; });
|
|
15
30
|
return {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useComponentPlugins.js","sourceRoot":"","sources":["../../../../src/LexicalEditor/hooks/useComponentPlugins/useComponentPlugins.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"useComponentPlugins.js","sourceRoot":"","sources":["../../../../src/LexicalEditor/hooks/useComponentPlugins/useComponentPlugins.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,EAAE,YAAY,EAAE,MAAM,OAAO,CAAA;AAG3C,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAA;AAE7C,OAAO,EAAE,kBAAkB,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAA;AAExE,OAAO,WAAW,MAAM,8BAA8B,CAAA;AAEtD,MAAM,aAAa,GAAG,GAAG,EAAE;IACzB,MAAM,OAAO,GAAG,IAAI,GAAG,EAAE,CAAA;IAEzB,OAAO,CAAC,EAAE,IAAI,EAA6C,EAAW,EAAE;QACtE,IAAI,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE;YACrB,OAAO,KAAK,CAAA;SACb;QAED,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAA;QAEjB,OAAO,IAAI,CAAA;IACb,CAAC,CAAA;AACH,CAAC,CAAA;AAED,MAAM,CAAC,MAAM,mBAAmB,GAAG,CACjC,OAAuB,EACvB,YAA4C,EAC5C,EAAE;IACF,MAAM,aAAa,GAAmB,OAAO;SAC1C,GAAG,CAAC,MAAM,CAAC,EAAE;QACZ,QAAQ,MAAM,EAAE;YACd,KAAK,MAAM;gBACT,OAAO,oBAAC,UAAU,OAAG,CAAA;YAEvB,KAAK,OAAO;gBACV,OAAO,oBAAC,WAAW,IAAC,YAAY,EAAE,YAAY,GAAI,CAAA;YAEpD;gBACE,OAAO,MAAM,CAAA;SAChB;IACH,CAAC,CAAC;SACD,MAAM,CAAC,aAAa,EAAE,CAAC,CAAA;IAE1B,MAAM,gBAAgB,GAAG,aAAa,CAAC,MAAM,CAAC,kBAAkB,CAAC,CAAA;IAEjE,MAAM,YAAY,GAAG,gBAAgB,CAAC,OAAO,CAC3C,MAAM,CAAC,EAAE,mBAAC,OAAA,MAAA,MAAA,MAAA,MAAM,CAAC,IAAI,CAAC,aAAa,CAAC,0CAAE,OAAO,0CAAE,KAAK,mCAAI,EAAE,CAAA,EAAA,CAC3D,CAAA;IAED,OAAO;QACL,YAAY;QACZ,gBAAgB,EAAE,gBAAgB,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,WAC1C,OAAA,YAAY,CAAC,EAAE,EAAE,EAAE,GAAG,EAAE,MAAA,EAAE,CAAC,IAAI,CAAC,aAAa,CAAC,0CAAE,IAAI,EAAE,CAAC,CAAA,EAAA,CACxD;KACF,CAAA;AACH,CAAC,CAAA"}
|
package/LexicalEditor/types.d.ts
CHANGED
|
@@ -3,28 +3,3 @@ import type { RTEPlugin } from '../plugins/api';
|
|
|
3
3
|
export declare type ChangeHandler = (html: string) => void;
|
|
4
4
|
export type { TextLengthChangeHandler } from '../plugins/TextLengthPlugin';
|
|
5
5
|
export declare type EditorPlugin = 'link' | 'emoji' | ReactElement<unknown, RTEPlugin<unknown>>;
|
|
6
|
-
export declare type CustomEmoji = {
|
|
7
|
-
id: string;
|
|
8
|
-
name: string;
|
|
9
|
-
keywords: string[];
|
|
10
|
-
skins: [
|
|
11
|
-
{
|
|
12
|
-
src: string;
|
|
13
|
-
}
|
|
14
|
-
];
|
|
15
|
-
};
|
|
16
|
-
export declare type CustomEmojiGroup = {
|
|
17
|
-
id: string;
|
|
18
|
-
name: string;
|
|
19
|
-
emojis: CustomEmoji[];
|
|
20
|
-
};
|
|
21
|
-
export declare type Emoji = {
|
|
22
|
-
id: string;
|
|
23
|
-
name: string;
|
|
24
|
-
native?: string;
|
|
25
|
-
unified?: string;
|
|
26
|
-
keywords: string[];
|
|
27
|
-
shortcodes: string;
|
|
28
|
-
emoticons?: string[];
|
|
29
|
-
src?: string;
|
|
30
|
-
};
|
|
@@ -1,10 +1,7 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
|
-
import type { CustomEmojiGroup, EditorPlugin } from '../LexicalEditor/types';
|
|
3
2
|
declare type Props = {
|
|
4
|
-
customEmojis?: CustomEmojiGroup[];
|
|
5
3
|
disabled?: boolean;
|
|
6
4
|
toolbarRef: React.RefObject<HTMLDivElement>;
|
|
7
|
-
plugins?: EditorPlugin[];
|
|
8
5
|
testIds?: {
|
|
9
6
|
wrapper?: string;
|
|
10
7
|
editor?: string;
|
|
@@ -15,5 +12,5 @@ declare type Props = {
|
|
|
15
12
|
orderedListButton?: string;
|
|
16
13
|
};
|
|
17
14
|
};
|
|
18
|
-
declare const LexicalEditorToolbarPlugin: ({ disabled, toolbarRef,
|
|
15
|
+
declare const LexicalEditorToolbarPlugin: ({ disabled, toolbarRef, testIds, }: Props) => JSX.Element;
|
|
19
16
|
export default LexicalEditorToolbarPlugin;
|
|
@@ -1,13 +1,12 @@
|
|
|
1
|
-
import React, { useEffect, useReducer } from 'react';
|
|
2
|
-
import { useLexicalComposerContext } from '@lexical/react/LexicalComposerContext';
|
|
3
1
|
import { INSERT_ORDERED_LIST_COMMAND, INSERT_UNORDERED_LIST_COMMAND, REMOVE_LIST_COMMAND, } from '@lexical/list';
|
|
4
|
-
import {
|
|
2
|
+
import { useLexicalComposerContext } from '@lexical/react/LexicalComposerContext';
|
|
5
3
|
import { $createHeadingNode } from '@lexical/rich-text';
|
|
6
4
|
import { $setBlocksType } from '@lexical/selection';
|
|
5
|
+
import { $createParagraphNode, $getSelection, $isRangeSelection, FORMAT_TEXT_COMMAND, } from 'lexical';
|
|
6
|
+
import React, { useEffect, useReducer } from 'react';
|
|
7
7
|
import { registerLexicalEvents, synchronizeToolbarState, toolbarStateReducer, } from '../LexicalEditor/utils';
|
|
8
|
-
import { INSERT_CUSTOM_EMOJI_COMMAND, INSERT_EMOJI_COMMAND, } from '../plugins/EmojiPlugin/commands';
|
|
9
8
|
import RichTextEditorToolbar, { ALLOWED_HEADER_TYPE, } from '../RichTextEditorToolbar';
|
|
10
|
-
const LexicalEditorToolbarPlugin = ({ disabled = false, toolbarRef,
|
|
9
|
+
const LexicalEditorToolbarPlugin = ({ disabled = false, toolbarRef, testIds, }) => {
|
|
11
10
|
const [editor] = useLexicalComposerContext();
|
|
12
11
|
const [{ bold, italic, list, header }, dispatch] = useReducer(toolbarStateReducer, {
|
|
13
12
|
bold: false,
|
|
@@ -33,21 +32,6 @@ const LexicalEditorToolbarPlugin = ({ disabled = false, toolbarRef, customEmojis
|
|
|
33
32
|
const handleOrderedClick = () => {
|
|
34
33
|
editor.dispatchCommand(list === 'ordered' ? REMOVE_LIST_COMMAND : INSERT_ORDERED_LIST_COMMAND, undefined);
|
|
35
34
|
};
|
|
36
|
-
const handleInsertEmoji = (emoji) => {
|
|
37
|
-
const isNativeEmoji = emoji.native;
|
|
38
|
-
const isCustomEmoji = emoji.src;
|
|
39
|
-
if (isNativeEmoji) {
|
|
40
|
-
// eslint-disable-next-line @typescript-eslint/no-non-null-assertion
|
|
41
|
-
editor.dispatchCommand(INSERT_EMOJI_COMMAND, emoji.native);
|
|
42
|
-
}
|
|
43
|
-
if (isCustomEmoji) {
|
|
44
|
-
editor.dispatchCommand(INSERT_CUSTOM_EMOJI_COMMAND, {
|
|
45
|
-
// eslint-disable-next-line @typescript-eslint/no-non-null-assertion
|
|
46
|
-
src: emoji.src,
|
|
47
|
-
id: emoji.id,
|
|
48
|
-
});
|
|
49
|
-
}
|
|
50
|
-
};
|
|
51
35
|
const handleHeaderClick = ({ target: { value }, }) => {
|
|
52
36
|
editor.update(() => {
|
|
53
37
|
const selection = $getSelection();
|
|
@@ -66,7 +50,7 @@ const LexicalEditorToolbarPlugin = ({ disabled = false, toolbarRef, customEmojis
|
|
|
66
50
|
italic,
|
|
67
51
|
list,
|
|
68
52
|
header,
|
|
69
|
-
},
|
|
53
|
+
}, onUnorderedClick: handleUnorderedClick, onOrderedClick: handleOrderedClick, onBoldClick: handleBoldClick, onItalicClick: handleItalicClick, onHeaderChange: handleHeaderClick, disabled: disabled, ref: toolbarRef, testIds: testIds }));
|
|
70
54
|
};
|
|
71
55
|
export default LexicalEditorToolbarPlugin;
|
|
72
56
|
//# sourceMappingURL=LexicalEditorToolbarPlugin.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"LexicalEditorToolbarPlugin.js","sourceRoot":"","sources":["../../src/LexicalEditorToolbarPlugin/LexicalEditorToolbarPlugin.tsx"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"LexicalEditorToolbarPlugin.js","sourceRoot":"","sources":["../../src/LexicalEditorToolbarPlugin/LexicalEditorToolbarPlugin.tsx"],"names":[],"mappings":"AAAA,OAAO,EACL,2BAA2B,EAC3B,6BAA6B,EAC7B,mBAAmB,GACpB,MAAM,eAAe,CAAA;AACtB,OAAO,EAAE,yBAAyB,EAAE,MAAM,uCAAuC,CAAA;AACjF,OAAO,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAA;AACvD,OAAO,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAA;AACnD,OAAO,EACL,oBAAoB,EACpB,aAAa,EACb,iBAAiB,EACjB,mBAAmB,GACpB,MAAM,SAAS,CAAA;AAEhB,OAAO,KAAK,EAAE,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,OAAO,CAAA;AAEpD,OAAO,EACL,qBAAqB,EACrB,uBAAuB,EACvB,mBAAmB,GACpB,MAAM,wBAAwB,CAAA;AAE/B,OAAO,qBAAqB,EAAE,EAC5B,mBAAmB,GACpB,MAAM,0BAA0B,CAAA;AAgBjC,MAAM,0BAA0B,GAAG,CAAC,EAClC,QAAQ,GAAG,KAAK,EAChB,UAAU,EACV,OAAO,GACD,EAAE,EAAE;IACV,MAAM,CAAC,MAAM,CAAC,GAAG,yBAAyB,EAAE,CAAA;IAC5C,MAAM,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,QAAQ,CAAC,GAAG,UAAU,CAC3D,mBAAmB,EACnB;QACE,IAAI,EAAE,KAAK;QACX,MAAM,EAAE,KAAK;QACb,IAAI,EAAE,KAAK;QACX,MAAM,EAAE,EAAE;KACX,CACF,CAAA;IAED,SAAS,CAAC,GAAG,EAAE;QACb,OAAO,qBAAqB,CAAC;YAC3B,MAAM;YACN,aAAa,EAAE,GAAG,EAAE,CAAC,uBAAuB,CAAC,QAAQ,EAAE,MAAM,CAAC;SAC/D,CAAC,CAAA;IACJ,CAAC,EAAE,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC,CAAA;IAEtB,MAAM,eAAe,GAAG,GAAG,EAAE;QAC3B,MAAM,CAAC,eAAe,CAAC,mBAAmB,EAAE,MAAM,CAAC,CAAA;IACrD,CAAC,CAAA;IACD,MAAM,iBAAiB,GAAG,GAAG,EAAE;QAC7B,MAAM,CAAC,eAAe,CAAC,mBAAmB,EAAE,QAAQ,CAAC,CAAA;IACvD,CAAC,CAAA;IACD,MAAM,oBAAoB,GAAG,GAAG,EAAE;QAChC,MAAM,CAAC,eAAe,CACpB,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,mBAAmB,CAAC,CAAC,CAAC,6BAA6B,EACvE,SAAS,CACV,CAAA;IACH,CAAC,CAAA;IACD,MAAM,kBAAkB,GAAG,GAAG,EAAE;QAC9B,MAAM,CAAC,eAAe,CACpB,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,mBAAmB,CAAC,CAAC,CAAC,2BAA2B,EACtE,SAAS,CACV,CAAA;IACH,CAAC,CAAA;IAED,MAAM,iBAAiB,GAAG,CAAC,EACzB,MAAM,EAAE,EAAE,KAAK,EAAE,GAGjB,EAAE,EAAE;QACJ,MAAM,CAAC,MAAM,CAAC,GAAG,EAAE;YACjB,MAAM,SAAS,GAAG,aAAa,EAAE,CAAA;YAEjC,IAAI,iBAAiB,CAAC,SAAS,CAAC,EAAE;gBAChC,IAAI,KAAK,KAAK,mBAAmB,EAAE;oBACjC,cAAc,CAAC,SAAS,EAAE,GAAG,EAAE,CAAC,kBAAkB,CAAC,IAAI,CAAC,CAAC,CAAA;iBAC1D;qBAAM;oBACL,cAAc,CAAC,SAAS,EAAE,GAAG,EAAE,CAAC,oBAAoB,EAAE,CAAC,CAAA;iBACxD;aACF;QACH,CAAC,CAAC,CAAA;IACJ,CAAC,CAAA;IAED,OAAO,CACL,oBAAC,qBAAqB,IACpB,MAAM,EAAE;YACN,IAAI;YACJ,MAAM;YACN,IAAI;YACJ,MAAM;SACP,EACD,gBAAgB,EAAE,oBAAoB,EACtC,cAAc,EAAE,kBAAkB,EAClC,WAAW,EAAE,eAAe,EAC5B,aAAa,EAAE,iBAAiB,EAChC,cAAc,EAAE,iBAAiB,EACjC,QAAQ,EAAE,QAAQ,EAClB,GAAG,EAAE,UAAU,EACf,OAAO,EAAE,OAAO,GAChB,CACH,CAAA;AACH,CAAC,CAAA;AAED,eAAe,0BAA0B,CAAA"}
|
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
import React from 'react';
|
|
2
|
-
import type { BaseProps } from '@toptal/picasso-shared';
|
|
3
1
|
import type { OutlinedInputStatus } from '@toptal/picasso';
|
|
2
|
+
import type { BaseProps } from '@toptal/picasso-shared';
|
|
3
|
+
import React from 'react';
|
|
4
|
+
import type { ChangeHandler, EditorPlugin, LexicalEditorProps } from '../LexicalEditor';
|
|
4
5
|
import type { ASTType } from '../RichText';
|
|
5
6
|
import type { CounterMessageSetter } from './types';
|
|
6
|
-
import type { ChangeHandler, CustomEmojiGroup, EditorPlugin } from '../LexicalEditor';
|
|
7
7
|
export interface Props extends BaseProps {
|
|
8
8
|
/** Indicates that an element is to be focused on page load */
|
|
9
9
|
autoFocus?: boolean;
|
|
@@ -71,7 +71,7 @@ export interface Props extends BaseProps {
|
|
|
71
71
|
orderedListButton?: string;
|
|
72
72
|
};
|
|
73
73
|
highlight?: 'autofill';
|
|
74
|
-
customEmojis?:
|
|
74
|
+
customEmojis?: LexicalEditorProps['customEmojis'];
|
|
75
75
|
}
|
|
76
76
|
export declare const RichTextEditor: React.ForwardRefExoticComponent<Props & React.RefAttributes<HTMLDivElement>>;
|
|
77
77
|
export default RichTextEditor;
|
|
@@ -1,12 +1,12 @@
|
|
|
1
|
-
import React, { forwardRef, useRef, useState, useCallback } from 'react';
|
|
2
1
|
import { makeStyles } from '@material-ui/core/styles';
|
|
2
|
+
import { InputMultilineAdornment } from '@toptal/picasso';
|
|
3
3
|
import { useHasMultilineCounter } from '@toptal/picasso-shared';
|
|
4
|
-
import cx from 'classnames';
|
|
5
4
|
import { noop, usePropDeprecationWarning } from '@toptal/picasso/utils';
|
|
6
|
-
import
|
|
7
|
-
import
|
|
8
|
-
import { useCounter } from './hooks';
|
|
5
|
+
import cx from 'classnames';
|
|
6
|
+
import React, { forwardRef, useCallback, useRef, useState } from 'react';
|
|
9
7
|
import LexicalEditor from '../LexicalEditor';
|
|
8
|
+
import { useCounter } from './hooks';
|
|
9
|
+
import styles from './styles';
|
|
10
10
|
const useStyles = makeStyles(styles, {
|
|
11
11
|
name: 'RichTextEditor',
|
|
12
12
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"RichTextEditor.js","sourceRoot":"","sources":["../../src/RichTextEditor/RichTextEditor.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"RichTextEditor.js","sourceRoot":"","sources":["../../src/RichTextEditor/RichTextEditor.tsx"],"names":[],"mappings":"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"}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import type { OmitInternalProps } from '@toptal/picasso-shared';
|
|
2
2
|
import type { Props } from './RichTextEditor';
|
|
3
|
-
export type {
|
|
3
|
+
export type { RichTextEditorChangeHandler } from './types';
|
|
4
|
+
export declare type CustomEmojiGroup = Exclude<Props['customEmojis'], undefined>[0];
|
|
4
5
|
export { default } from './RichTextEditor';
|
|
5
6
|
export declare type RichTextEditorProps = OmitInternalProps<Props>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/RichTextEditor/index.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/RichTextEditor/index.ts"],"names":[],"mappings":"AAOA,OAAO,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAA"}
|
|
@@ -1,3 +1,2 @@
|
|
|
1
1
|
export declare type CounterMessageSetter = (limit: number, currLength: number, isError: boolean) => string;
|
|
2
2
|
export type { ChangeHandler, ChangeHandler as RichTextEditorChangeHandler, TextLengthChangeHandler, } from '../LexicalEditor';
|
|
3
|
-
export type { CustomEmojiGroup, CustomEmoji } from '../LexicalEditor';
|
|
@@ -1,10 +1,9 @@
|
|
|
1
1
|
/// <reference types="react" />
|
|
2
|
-
import type { CustomEmojiGroup, Emoji } from '../
|
|
2
|
+
import type { CustomEmojiGroup, Emoji } from '../plugins/EmojiPlugin';
|
|
3
3
|
interface Props {
|
|
4
|
-
richEditorId: string;
|
|
5
4
|
customEmojis?: CustomEmojiGroup[];
|
|
6
5
|
onInsertEmoji: (emoji: Emoji) => void;
|
|
7
6
|
disabled?: boolean;
|
|
8
7
|
}
|
|
9
|
-
export declare const RichTextEditorEmojiPicker: ({
|
|
8
|
+
export declare const RichTextEditorEmojiPicker: ({ customEmojis, onInsertEmoji, disabled, }: Props) => JSX.Element;
|
|
10
9
|
export {};
|
|
@@ -24,7 +24,7 @@ const handleEmojiPickerEscBehaviour = (event, setShowEmojiPicker) => {
|
|
|
24
24
|
setShowEmojiPicker(false);
|
|
25
25
|
}
|
|
26
26
|
};
|
|
27
|
-
export const RichTextEditorEmojiPicker = ({
|
|
27
|
+
export const RichTextEditorEmojiPicker = ({ customEmojis, onInsertEmoji, disabled, }) => {
|
|
28
28
|
const [showEmojiPicker, setShowEmojiPicker] = React.useState(false);
|
|
29
29
|
const classes = useStyles({ showEmojiPicker });
|
|
30
30
|
const handleEmojiPickerClick = () => {
|
|
@@ -53,6 +53,6 @@ export const RichTextEditorEmojiPicker = ({ richEditorId, customEmojis, onInsert
|
|
|
53
53
|
return (React.createElement(Container, { style: { position: 'relative' } },
|
|
54
54
|
React.createElement(TextEditorButton, { onClick: handleEmojiPickerClick, icon: React.createElement(Container, { style: { pointerEvents: 'none' } }, "\uD83D\uDE42"), id: TRIGGER_EMOJI_PICKER_ID, disabled: disabled }),
|
|
55
55
|
React.createElement(Container, { className: cx(classes.emojiPicker, showEmojiPicker && classes.activeOpacity, showEmojiPicker && classes.activePointers) },
|
|
56
|
-
React.createElement(Picker, {
|
|
56
|
+
React.createElement(Picker, { data: data, custom: customEmojis, onEmojiSelect: handleEmojiInsert, onClickOutside: showEmojiPicker && closePicker }))));
|
|
57
57
|
};
|
|
58
58
|
//# sourceMappingURL=RichTextEditorEmojiPicker.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"RichTextEditorEmojiPicker.js","sourceRoot":"","sources":["../../src/RichTextEditorEmojiPicker/RichTextEditorEmojiPicker.tsx"],"names":[],"mappings":"AAAA,sDAAsD;AACtD,OAAO,KAAK,EAAE,EAAE,SAAS,EAAE,MAAM,OAAO,CAAA;AACxC,OAAO,IAAI,MAAM,kBAAkB,CAAA;AACnC,OAAO,MAAM,MAAM,mBAAmB,CAAA;AAEtC,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAA;AAC9C,OAAO,EAAE,MAAM,YAAY,CAAA;AAC3B,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAA;AAE3C,OAAO,gBAAgB,MAAM,yBAAyB,CAAA;
|
|
1
|
+
{"version":3,"file":"RichTextEditorEmojiPicker.js","sourceRoot":"","sources":["../../src/RichTextEditorEmojiPicker/RichTextEditorEmojiPicker.tsx"],"names":[],"mappings":"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"}
|
|
@@ -1,9 +1,7 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
|
-
import type { ButtonHandlerType,
|
|
3
|
-
import type { CustomEmojiGroup, EditorPlugin, Emoji } from '../LexicalEditor';
|
|
2
|
+
import type { ButtonHandlerType, FormatType, SelectOnChangeHandler } from './types';
|
|
4
3
|
declare type Props = {
|
|
5
4
|
disabled: boolean;
|
|
6
|
-
id: string;
|
|
7
5
|
format: FormatType;
|
|
8
6
|
testIds?: {
|
|
9
7
|
headerSelect?: string;
|
|
@@ -16,12 +14,9 @@ declare type Props = {
|
|
|
16
14
|
};
|
|
17
15
|
onBoldClick: ButtonHandlerType;
|
|
18
16
|
onItalicClick: ButtonHandlerType;
|
|
19
|
-
onInsertEmoji: (emoji: Emoji) => void;
|
|
20
17
|
onHeaderChange: SelectOnChangeHandler;
|
|
21
18
|
onUnorderedClick: ButtonHandlerType;
|
|
22
19
|
onOrderedClick: ButtonHandlerType;
|
|
23
|
-
plugins?: EditorPlugin[];
|
|
24
|
-
customEmojis?: CustomEmojiGroup[];
|
|
25
20
|
};
|
|
26
21
|
export declare const ALLOWED_HEADER_TYPE = "3";
|
|
27
22
|
export declare const RichTextEditorToolbar: React.ForwardRefExoticComponent<Props & React.RefAttributes<HTMLDivElement>>;
|
|
@@ -1,24 +1,22 @@
|
|
|
1
|
-
import React, { forwardRef } from 'react';
|
|
2
1
|
import { makeStyles } from '@material-ui/core';
|
|
2
|
+
import { Bold16, Container, Italic16, ListOrdered16, ListUnordered16, Select, } from '@toptal/picasso';
|
|
3
|
+
import { useMultipleForwardRefs } from '@toptal/picasso/utils';
|
|
3
4
|
import cx from 'classnames';
|
|
4
|
-
import
|
|
5
|
-
import styles from './styles';
|
|
6
|
-
import TextEditorButton from '../RichTextEditorButton';
|
|
7
|
-
import { RichTextEditorEmojiPicker } from '../RichTextEditorEmojiPicker/RichTextEditorEmojiPicker';
|
|
5
|
+
import React, { forwardRef } from 'react';
|
|
8
6
|
import { useToolbarPortalRegister } from '../plugins/api';
|
|
7
|
+
import TextEditorButton from '../RichTextEditorButton';
|
|
8
|
+
import styles from './styles';
|
|
9
9
|
const useStyles = makeStyles(styles, {
|
|
10
10
|
name: 'RichTextEditorToolbar',
|
|
11
11
|
});
|
|
12
12
|
export const ALLOWED_HEADER_TYPE = '3';
|
|
13
|
-
export const RichTextEditorToolbar = forwardRef(
|
|
14
|
-
|
|
15
|
-
function RichTextEditorToolbar(props, ref) {
|
|
16
|
-
const { disabled, id, format, onBoldClick, onItalicClick, onInsertEmoji, onHeaderChange, onUnorderedClick, onOrderedClick, testIds, plugins, customEmojis, } = props;
|
|
13
|
+
export const RichTextEditorToolbar = forwardRef(function RichTextEditorToolbar(props, ref) {
|
|
14
|
+
const { disabled, format, onBoldClick, onItalicClick, onHeaderChange, onUnorderedClick, onOrderedClick, testIds, } = props;
|
|
17
15
|
const { setToolbarPortalEl } = useToolbarPortalRegister();
|
|
16
|
+
const toolbarRef = useMultipleForwardRefs([ref, setToolbarPortalEl]);
|
|
18
17
|
const classes = useStyles(props);
|
|
19
18
|
const isHeadingFormat = format.header === ALLOWED_HEADER_TYPE;
|
|
20
|
-
|
|
21
|
-
return (React.createElement(Container, { id: `${id}toolbar`, ref: ref, className: classes.toolbar },
|
|
19
|
+
return (React.createElement(Container, { ref: toolbarRef, className: classes.toolbar },
|
|
22
20
|
React.createElement(Container, { className: cx(classes.group, {
|
|
23
21
|
groupDisabled: disabled,
|
|
24
22
|
}) },
|
|
@@ -31,9 +29,7 @@ function RichTextEditorToolbar(props, ref) {
|
|
|
31
29
|
React.createElement(TextEditorButton, { icon: React.createElement(Italic16, null), onClick: onItalicClick, active: isHeadingFormat ? false : format.italic, disabled: isHeadingFormat || disabled, "data-testid": testIds === null || testIds === void 0 ? void 0 : testIds.italicButton })),
|
|
32
30
|
React.createElement(Container, { className: classes.group },
|
|
33
31
|
React.createElement(TextEditorButton, { icon: React.createElement(ListUnordered16, null), onClick: onUnorderedClick, active: format.list === 'bullet', disabled: disabled, "data-testid": testIds === null || testIds === void 0 ? void 0 : testIds.unorderedListButton }),
|
|
34
|
-
React.createElement(TextEditorButton, { icon: React.createElement(ListOrdered16, null), onClick: onOrderedClick, active: format.list === 'ordered', disabled: disabled, "data-testid": testIds === null || testIds === void 0 ? void 0 : testIds.orderedListButton }))
|
|
35
|
-
React.createElement(Container, { ref: setToolbarPortalEl, className: classes.group }),
|
|
36
|
-
allowEmojis && (React.createElement(RichTextEditorEmojiPicker, { richEditorId: id, customEmojis: customEmojis, onInsertEmoji: onInsertEmoji, disabled: disabled }))));
|
|
32
|
+
React.createElement(TextEditorButton, { icon: React.createElement(ListOrdered16, null), onClick: onOrderedClick, active: format.list === 'ordered', disabled: disabled, "data-testid": testIds === null || testIds === void 0 ? void 0 : testIds.orderedListButton }))));
|
|
37
33
|
});
|
|
38
34
|
RichTextEditorToolbar.defaultProps = {
|
|
39
35
|
disabled: false,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"RichTextEditorToolbar.js","sourceRoot":"","sources":["../../src/RichTextEditorToolbar/RichTextEditorToolbar.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"RichTextEditorToolbar.js","sourceRoot":"","sources":["../../src/RichTextEditorToolbar/RichTextEditorToolbar.tsx"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,2 +1,7 @@
|
|
|
1
|
-
|
|
1
|
+
import type { RTEPlugin } from '../api';
|
|
2
|
+
import type { CustomEmojiGroup } from './types';
|
|
3
|
+
export declare type Props = {
|
|
4
|
+
customEmojis?: CustomEmojiGroup[];
|
|
5
|
+
};
|
|
6
|
+
declare const EmojiPlugin: RTEPlugin<Props>;
|
|
2
7
|
export default EmojiPlugin;
|
|
@@ -1,11 +1,28 @@
|
|
|
1
1
|
import { useLexicalComposerContext } from '@lexical/react/LexicalComposerContext';
|
|
2
2
|
import { mergeRegister } from '@lexical/utils';
|
|
3
|
-
import { useEffect } from 'react';
|
|
4
3
|
import { $createTextNode, $insertNodes, COMMAND_PRIORITY_EDITOR } from 'lexical';
|
|
4
|
+
import React, { useCallback, useEffect } from 'react';
|
|
5
|
+
import { RichTextEditorEmojiPicker } from '../../RichTextEditorEmojiPicker/RichTextEditorEmojiPicker';
|
|
6
|
+
import { RTEPluginMeta, Toolbar, useRTEPluginContext } from '../api';
|
|
5
7
|
import { INSERT_CUSTOM_EMOJI_COMMAND, INSERT_EMOJI_COMMAND } from './commands';
|
|
6
|
-
import { $createCustomEmojiNode } from './nodes/CustomEmojiNode';
|
|
7
|
-
const
|
|
8
|
+
import { $createCustomEmojiNode, CustomEmojiNode, } from './nodes/CustomEmojiNode';
|
|
9
|
+
const PLUGIN_NAME = 'emoji';
|
|
10
|
+
const EmojiPlugin = ({ customEmojis }) => {
|
|
8
11
|
const [editor] = useLexicalComposerContext();
|
|
12
|
+
const { disabled, focused } = useRTEPluginContext();
|
|
13
|
+
const handleInsertEmoji = useCallback((emoji) => {
|
|
14
|
+
const isNativeEmoji = 'native' in emoji;
|
|
15
|
+
const isCustomEmoji = 'src' in emoji;
|
|
16
|
+
if (isNativeEmoji) {
|
|
17
|
+
editor.dispatchCommand(INSERT_EMOJI_COMMAND, emoji.native);
|
|
18
|
+
}
|
|
19
|
+
if (isCustomEmoji) {
|
|
20
|
+
editor.dispatchCommand(INSERT_CUSTOM_EMOJI_COMMAND, {
|
|
21
|
+
src: emoji.src,
|
|
22
|
+
id: emoji.id,
|
|
23
|
+
});
|
|
24
|
+
}
|
|
25
|
+
}, [editor]);
|
|
9
26
|
useEffect(() => {
|
|
10
27
|
return mergeRegister(editor.registerCommand(INSERT_EMOJI_COMMAND, (nativeEmoji) => {
|
|
11
28
|
$insertNodes([$createTextNode(nativeEmoji)]);
|
|
@@ -16,7 +33,14 @@ const EmojiPlugin = () => {
|
|
|
16
33
|
return true;
|
|
17
34
|
}, COMMAND_PRIORITY_EDITOR));
|
|
18
35
|
}, [editor]);
|
|
19
|
-
return
|
|
36
|
+
return (React.createElement(Toolbar, { keyName: PLUGIN_NAME },
|
|
37
|
+
React.createElement(RichTextEditorEmojiPicker, { customEmojis: customEmojis, onInsertEmoji: handleInsertEmoji, disabled: disabled || !focused })));
|
|
38
|
+
};
|
|
39
|
+
EmojiPlugin[RTEPluginMeta] = {
|
|
40
|
+
name: PLUGIN_NAME,
|
|
41
|
+
lexical: {
|
|
42
|
+
nodes: [CustomEmojiNode],
|
|
43
|
+
},
|
|
20
44
|
};
|
|
21
45
|
export default EmojiPlugin;
|
|
22
46
|
//# sourceMappingURL=EmojiPlugin.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"EmojiPlugin.js","sourceRoot":"","sources":["../../../src/plugins/EmojiPlugin/EmojiPlugin.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,yBAAyB,EAAE,MAAM,uCAAuC,CAAA;AACjF,OAAO,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAA;AAC9C,OAAO,EAAE,SAAS,EAAE,MAAM,OAAO,CAAA;
|
|
1
|
+
{"version":3,"file":"EmojiPlugin.js","sourceRoot":"","sources":["../../../src/plugins/EmojiPlugin/EmojiPlugin.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,yBAAyB,EAAE,MAAM,uCAAuC,CAAA;AACjF,OAAO,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAA;AAC9C,OAAO,EAAE,eAAe,EAAE,YAAY,EAAE,uBAAuB,EAAE,MAAM,SAAS,CAAA;AAChF,OAAO,KAAK,EAAE,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,OAAO,CAAA;AAErD,OAAO,EAAE,yBAAyB,EAAE,MAAM,2DAA2D,CAAA;AAErG,OAAO,EAAE,aAAa,EAAE,OAAO,EAAE,mBAAmB,EAAE,MAAM,QAAQ,CAAA;AACpE,OAAO,EAAE,2BAA2B,EAAE,oBAAoB,EAAE,MAAM,YAAY,CAAA;AAC9E,OAAO,EACL,sBAAsB,EACtB,eAAe,GAChB,MAAM,yBAAyB,CAAA;AAGhC,MAAM,WAAW,GAAG,OAAO,CAAA;AAM3B,MAAM,WAAW,GAAqB,CAAC,EAAE,YAAY,EAAS,EAAE,EAAE;IAChE,MAAM,CAAC,MAAM,CAAC,GAAG,yBAAyB,EAAE,CAAA;IAC5C,MAAM,EAAE,QAAQ,EAAE,OAAO,EAAE,GAAG,mBAAmB,EAAE,CAAA;IAEnD,MAAM,iBAAiB,GAAG,WAAW,CACnC,CAAC,KAAY,EAAE,EAAE;QACf,MAAM,aAAa,GAAG,QAAQ,IAAI,KAAK,CAAA;QACvC,MAAM,aAAa,GAAG,KAAK,IAAI,KAAK,CAAA;QAEpC,IAAI,aAAa,EAAE;YACjB,MAAM,CAAC,eAAe,CAAC,oBAAoB,EAAE,KAAK,CAAC,MAAM,CAAC,CAAA;SAC3D;QAED,IAAI,aAAa,EAAE;YACjB,MAAM,CAAC,eAAe,CAAC,2BAA2B,EAAE;gBAClD,GAAG,EAAE,KAAK,CAAC,GAAG;gBACd,EAAE,EAAE,KAAK,CAAC,EAAE;aACb,CAAC,CAAA;SACH;IACH,CAAC,EACD,CAAC,MAAM,CAAC,CACT,CAAA;IAED,SAAS,CAAC,GAAG,EAAE;QACb,OAAO,aAAa,CAClB,MAAM,CAAC,eAAe,CACpB,oBAAoB,EACpB,CAAC,WAAmB,EAAE,EAAE;YACtB,YAAY,CAAC,CAAC,eAAe,CAAC,WAAW,CAAC,CAAC,CAAC,CAAA;YAE5C,OAAO,IAAI,CAAA;QACb,CAAC,EACD,uBAAuB,CACxB,EACD,MAAM,CAAC,eAAe,CACpB,2BAA2B,EAC3B,CAAC,kBAAsC,EAAE,EAAE;YACzC,MAAM,SAAS,GAAG,sBAAsB,CAAC,kBAAkB,CAAC,CAAA;YAE5D,YAAY,CAAC,CAAC,SAAS,CAAC,CAAC,CAAA;YAEzB,OAAO,IAAI,CAAA;QACb,CAAC,EACD,uBAAuB,CACxB,CACF,CAAA;IACH,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,CAAA;IAEZ,OAAO,CACL,oBAAC,OAAO,IAAC,OAAO,EAAE,WAAW;QAC3B,oBAAC,yBAAyB,IACxB,YAAY,EAAE,YAAY,EAC1B,aAAa,EAAE,iBAAiB,EAChC,QAAQ,EAAE,QAAQ,IAAI,CAAC,OAAO,GAC9B,CACM,CACX,CAAA;AACH,CAAC,CAAA;AAED,WAAW,CAAC,aAAa,CAAC,GAAG;IAC3B,IAAI,EAAE,WAAW;IACjB,OAAO,EAAE;QACP,KAAK,EAAE,CAAC,eAAe,CAAC;KACzB;CACF,CAAA;AAED,eAAe,WAAW,CAAA"}
|
|
@@ -27,13 +27,13 @@ describe('LexicalEmojiPlugin', () => {
|
|
|
27
27
|
useLexicalComposerContext.mockReturnValue([mockEditor]);
|
|
28
28
|
});
|
|
29
29
|
it('registers commands on mount', () => {
|
|
30
|
-
renderHook(() => EmojiPlugin());
|
|
30
|
+
renderHook(() => EmojiPlugin({}));
|
|
31
31
|
expect(mockEditor.registerCommand).toHaveBeenCalledTimes(2);
|
|
32
32
|
expect(mockEditor.registerCommand).toHaveBeenCalledWith(INSERT_EMOJI_COMMAND, expect.any(Function), COMMAND_PRIORITY_EDITOR);
|
|
33
33
|
expect(mockEditor.registerCommand).toHaveBeenCalledWith(INSERT_CUSTOM_EMOJI_COMMAND, expect.any(Function), COMMAND_PRIORITY_EDITOR);
|
|
34
34
|
});
|
|
35
35
|
it('inserts a text node when the native emoji command is called', () => {
|
|
36
|
-
renderHook(() => EmojiPlugin());
|
|
36
|
+
renderHook(() => EmojiPlugin({}));
|
|
37
37
|
const nativeEmojiCommand = mockEditor.registerCommand.mock.calls[0][1];
|
|
38
38
|
nativeEmojiCommand('😃');
|
|
39
39
|
expect($createTextNode).toHaveBeenCalledWith('😃');
|
|
@@ -41,7 +41,7 @@ describe('LexicalEmojiPlugin', () => {
|
|
|
41
41
|
});
|
|
42
42
|
it('inserts a custom emoji node when the custom emoji command is called', () => {
|
|
43
43
|
const payload = { id: 'custom emoji', src: 'https://example.com/emoji.png' };
|
|
44
|
-
renderHook(() => EmojiPlugin());
|
|
44
|
+
renderHook(() => EmojiPlugin({}));
|
|
45
45
|
const customEmojiCommand = mockEditor.registerCommand.mock.calls[1][1];
|
|
46
46
|
customEmojiCommand(payload);
|
|
47
47
|
expect($createCustomEmojiNode).toHaveBeenCalledWith(payload);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"EmojiPlugin.test.js","sourceRoot":"","sources":["../../../src/plugins/EmojiPlugin/EmojiPlugin.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,8BAA8B,CAAA;AACzD,OAAO,EAAE,yBAAyB,EAAE,MAAM,uCAAuC,CAAA;AACjF,OAAO,EAAE,eAAe,EAAE,YAAY,EAAE,uBAAuB,EAAE,MAAM,SAAS,CAAA;AAEhF,OAAO,WAAW,EAAE,EAClB,2BAA2B,EAC3B,oBAAoB,GACrB,MAAM,SAAS,CAAA;AAChB,OAAO,EAAE,sBAAsB,EAAE,MAAM,yBAAyB,CAAA;AAEhE,IAAI,CAAC,IAAI,CAAC,uCAAuC,EAAE,GAAG,EAAE,CAAC,CAAC;IACxD,yBAAyB,EAAE,IAAI,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC;CAC/C,CAAC,CAAC,CAAA;AAEH,IAAI,CAAC,IAAI,CAAC,gBAAgB,EAAE,GAAG,EAAE,CAAC,CAAC;IACjC,aAAa,EAAE,IAAI,CAAC,EAAE,EAAE;CACzB,CAAC,CAAC,CAAA;AAEH,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,GAAG,EAAE,CAAC,CAAC;IAC1B,eAAe,EAAE,IAAI,CAAC,EAAE,EAAE;IAC1B,YAAY,EAAE,IAAI,CAAC,EAAE,EAAE;IACvB,uBAAuB,EAAE,IAAI,CAAC,EAAE,EAAE;IAClC,aAAa,EAAE,IAAI,CAAC,EAAE,EAAE;CACzB,CAAC,CAAC,CAAA;AAEH,IAAI,CAAC,IAAI,CAAC,yBAAyB,EAAE,GAAG,EAAE,CAAC,CAAC;IAC1C,sBAAsB,EAAE,IAAI,CAAC,EAAE,EAAE;CAClC,CAAC,CAAC,CAAA;AAEH,QAAQ,CAAC,oBAAoB,EAAE,GAAG,EAAE;IAClC,MAAM,UAAU,GAAG;QACjB,eAAe,EAAE,IAAI,CAAC,EAAE,EAAE;KAC3B,CAAA;IAED,UAAU,CAAC,GAAG,EAAE;QACd,IAAI,CAAC,aAAa,EAAE,CACnB;QAAC,yBAAuC,CAAC,eAAe,CAAC,CAAC,UAAU,CAAC,CAAC,CAAA;IACzE,CAAC,CAAC,CAAA;IAEF,EAAE,CAAC,6BAA6B,EAAE,GAAG,EAAE;QACrC,UAAU,CAAC,GAAG,EAAE,CAAC,WAAW,EAAE,CAAC,CAAA;
|
|
1
|
+
{"version":3,"file":"EmojiPlugin.test.js","sourceRoot":"","sources":["../../../src/plugins/EmojiPlugin/EmojiPlugin.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1,28 @@
|
|
|
1
1
|
export type { CustomEmojiPayload } from './nodes/CustomEmojiNode';
|
|
2
|
+
export declare type CustomEmoji = {
|
|
3
|
+
id: string;
|
|
4
|
+
name: string;
|
|
5
|
+
keywords: string[];
|
|
6
|
+
skins: [
|
|
7
|
+
{
|
|
8
|
+
src: string;
|
|
9
|
+
}
|
|
10
|
+
];
|
|
11
|
+
};
|
|
12
|
+
export declare type CustomEmojiGroup = {
|
|
13
|
+
id: string;
|
|
14
|
+
name: string;
|
|
15
|
+
emojis: CustomEmoji[];
|
|
16
|
+
};
|
|
17
|
+
export declare type Emoji = {
|
|
18
|
+
id: string;
|
|
19
|
+
name: string;
|
|
20
|
+
unified?: string;
|
|
21
|
+
keywords: string[];
|
|
22
|
+
shortcodes: string;
|
|
23
|
+
emoticons?: string[];
|
|
24
|
+
} & ({
|
|
25
|
+
native: string;
|
|
26
|
+
} | {
|
|
27
|
+
src: string;
|
|
28
|
+
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"LinkPlugin.js","sourceRoot":"","sources":["../../../src/plugins/LinkPlugin/LinkPlugin.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAA;AACxC,OAAO,EAAE,UAAU,IAAI,iBAAiB,EAAE,MAAM,kCAAkC,CAAA;AAClF,OAAO,KAAK,MAAM,OAAO,CAAA;AAGzB,OAAO,EAAE,aAAa,EAAE,OAAO,EAAE,MAAM,QAAQ,CAAA;AAC/C,OAAO,gBAAgB,MAAM,oBAAoB,CAAA;AAEjD,MAAM,WAAW,GAAG,MAAM,CAAA;AAM1B,MAAM,UAAU,
|
|
1
|
+
{"version":3,"file":"LinkPlugin.js","sourceRoot":"","sources":["../../../src/plugins/LinkPlugin/LinkPlugin.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAA;AACxC,OAAO,EAAE,UAAU,IAAI,iBAAiB,EAAE,MAAM,kCAAkC,CAAA;AAClF,OAAO,KAAK,MAAM,OAAO,CAAA;AAGzB,OAAO,EAAE,aAAa,EAAE,OAAO,EAAE,MAAM,QAAQ,CAAA;AAC/C,OAAO,gBAAgB,MAAM,oBAAoB,CAAA;AAEjD,MAAM,WAAW,GAAG,MAAM,CAAA;AAM1B,MAAM,UAAU,GAAqB,CAAC,EAAE,aAAa,EAAE,MAAM,EAAS,EAAE,EAAE;IACxE,OAAO,CACL;QACE,oBAAC,OAAO,IAAC,OAAO,EAAE,WAAW;YAC3B,oBAAC,gBAAgB,mBAAc,MAAM,GAAI,CACjC;QACV,oBAAC,iBAAiB,OAAG,CACpB,CACJ,CAAA;AACH,CAAC,CAAA;AAED,UAAU,CAAC,aAAa,CAAC,GAAG;IAC1B,IAAI,EAAE,WAAW;IACjB,OAAO,EAAE;QACP,KAAK,EAAE,CAAC,QAAQ,CAAC;KAClB;CACF,CAAA;AAED,eAAe,UAAU,CAAA"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import type { ReactNode } from 'react';
|
|
2
|
+
import React from 'react';
|
|
3
|
+
export declare const ToolbarProvider: ({ children }: {
|
|
4
|
+
children: ReactNode;
|
|
5
|
+
}) => JSX.Element;
|
|
6
|
+
export declare const useToolbarPortalRegister: () => {
|
|
7
|
+
setToolbarPortalEl: (element: HTMLElement | null) => void;
|
|
8
|
+
};
|
|
9
|
+
export declare type Props = {
|
|
10
|
+
children: ReactNode;
|
|
11
|
+
keyName: string;
|
|
12
|
+
};
|
|
13
|
+
export declare const Toolbar: (props: Props) => React.ReactPortal | null;
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import { makeStyles } from '@material-ui/core';
|
|
2
|
+
import { Container } from '@toptal/picasso';
|
|
3
|
+
import React, { createContext, useContext, useState } from 'react';
|
|
4
|
+
import { createPortal } from 'react-dom';
|
|
5
|
+
import styles from './styles';
|
|
6
|
+
const Context = createContext({
|
|
7
|
+
setPortalEl: () => { },
|
|
8
|
+
});
|
|
9
|
+
export const ToolbarProvider = ({ children }) => {
|
|
10
|
+
const [portalEl, setPortalEl] = useState(null);
|
|
11
|
+
return (React.createElement(Context.Provider, { value: { portalEl: portalEl !== null && portalEl !== void 0 ? portalEl : undefined, setPortalEl } }, children));
|
|
12
|
+
};
|
|
13
|
+
export const useToolbarPortalRegister = () => {
|
|
14
|
+
const { setPortalEl } = useContext(Context);
|
|
15
|
+
return {
|
|
16
|
+
setToolbarPortalEl: setPortalEl,
|
|
17
|
+
};
|
|
18
|
+
};
|
|
19
|
+
const useStyles = makeStyles(styles, {
|
|
20
|
+
name: 'RichTextEditorToolbar',
|
|
21
|
+
});
|
|
22
|
+
export const Toolbar = (props) => {
|
|
23
|
+
const { children, keyName } = props;
|
|
24
|
+
const { portalEl } = useContext(Context);
|
|
25
|
+
const classes = useStyles(props);
|
|
26
|
+
if (!portalEl) {
|
|
27
|
+
return null;
|
|
28
|
+
}
|
|
29
|
+
return createPortal(React.createElement(Container, { className: classes.group }, children), portalEl, keyName);
|
|
30
|
+
};
|
|
31
|
+
//# sourceMappingURL=Toolbar.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Toolbar.js","sourceRoot":"","sources":["../../../src/plugins/Toolbar/Toolbar.tsx"],"names":[],"mappings":"AACA,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAA;AAC9C,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAA;AAE3C,OAAO,KAAK,EAAE,EAAE,aAAa,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAA;AAClE,OAAO,EAAE,YAAY,EAAE,MAAM,WAAW,CAAA;AAExC,OAAO,MAAM,MAAM,UAAU,CAAA;AAO7B,MAAM,OAAO,GAAG,aAAa,CAAe;IAC1C,WAAW,EAAE,GAAG,EAAE,GAAE,CAAC;CACtB,CAAC,CAAA;AAEF,MAAM,CAAC,MAAM,eAAe,GAAG,CAAC,EAAE,QAAQ,EAA2B,EAAE,EAAE;IACvE,MAAM,CAAC,QAAQ,EAAE,WAAW,CAAC,GAAG,QAAQ,CAAqB,IAAI,CAAC,CAAA;IAElE,OAAO,CACL,oBAAC,OAAO,CAAC,QAAQ,IAAC,KAAK,EAAE,EAAE,QAAQ,EAAE,QAAQ,aAAR,QAAQ,cAAR,QAAQ,GAAI,SAAS,EAAE,WAAW,EAAE,IACtE,QAAQ,CACQ,CACpB,CAAA;AACH,CAAC,CAAA;AAED,MAAM,CAAC,MAAM,wBAAwB,GAAG,GAAG,EAAE;IAC3C,MAAM,EAAE,WAAW,EAAE,GAAG,UAAU,CAAC,OAAO,CAAC,CAAA;IAE3C,OAAO;QACL,kBAAkB,EAAE,WAAW;KAChC,CAAA;AACH,CAAC,CAAA;AAOD,MAAM,SAAS,GAAG,UAAU,CAAe,MAAM,EAAE;IACjD,IAAI,EAAE,uBAAuB;CAC9B,CAAC,CAAA;AAEF,MAAM,CAAC,MAAM,OAAO,GAAG,CAAC,KAAY,EAAE,EAAE;IACtC,MAAM,EAAE,QAAQ,EAAE,OAAO,EAAE,GAAG,KAAK,CAAA;IACnC,MAAM,EAAE,QAAQ,EAAE,GAAG,UAAU,CAAC,OAAO,CAAC,CAAA;IAExC,MAAM,OAAO,GAAG,SAAS,CAAC,KAAK,CAAC,CAAA;IAEhC,IAAI,CAAC,QAAQ,EAAE;QACb,OAAO,IAAI,CAAA;KACZ;IAED,OAAO,YAAY,CACjB,oBAAC,SAAS,IAAC,SAAS,EAAE,OAAO,CAAC,KAAK,IAAG,QAAQ,CAAa,EAC3D,QAAQ,EACR,OAAO,CACR,CAAA;AACH,CAAC,CAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from './Toolbar';
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/plugins/Toolbar/index.ts"],"names":[],"mappings":"AAAA,cAAc,WAAW,CAAA"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { createStyles } from '@material-ui/core/styles';
|
|
2
|
+
export default ({ palette }) => createStyles({
|
|
3
|
+
group: {
|
|
4
|
+
display: 'flex',
|
|
5
|
+
alignItems: 'center',
|
|
6
|
+
position: 'relative',
|
|
7
|
+
pointerEvents: 'unset',
|
|
8
|
+
'&:not(:last-child):not(:empty)::after': {
|
|
9
|
+
content: '""',
|
|
10
|
+
height: '1em',
|
|
11
|
+
width: '1px',
|
|
12
|
+
position: 'relative',
|
|
13
|
+
marginLeft: '0.5em',
|
|
14
|
+
marginRight: '0.5em',
|
|
15
|
+
backgroundColor: palette.grey.lighter2,
|
|
16
|
+
},
|
|
17
|
+
},
|
|
18
|
+
});
|
|
19
|
+
//# sourceMappingURL=styles.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"styles.js","sourceRoot":"","sources":["../../../src/plugins/Toolbar/styles.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAA;AAEvD,eAAe,CAAC,EAAE,OAAO,EAAS,EAAE,EAAE,CACpC,YAAY,CAAC;IACX,KAAK,EAAE;QACL,OAAO,EAAE,MAAM;QACf,UAAU,EAAE,QAAQ;QACpB,QAAQ,EAAE,UAAU;QACpB,aAAa,EAAE,OAAO;QAEtB,uCAAuC,EAAE;YACvC,OAAO,EAAE,IAAI;YACb,MAAM,EAAE,KAAK;YACb,KAAK,EAAE,KAAK;YACZ,QAAQ,EAAE,UAAU;YACpB,UAAU,EAAE,OAAO;YACnB,WAAW,EAAE,OAAO;YACpB,eAAe,EAAE,OAAO,CAAC,IAAI,CAAC,QAAQ;SACvC;KACF;CACF,CAAC,CAAA"}
|
package/plugins/api.d.ts
CHANGED
|
@@ -1,6 +1,5 @@
|
|
|
1
|
-
import
|
|
1
|
+
import type { Klass, LexicalNode } from 'lexical';
|
|
2
2
|
import type { ReactElement, ReactNode } from 'react';
|
|
3
|
-
import type { LexicalNode, Klass } from 'lexical';
|
|
4
3
|
export declare const RTEPluginMeta: unique symbol;
|
|
5
4
|
export declare type RTEPluginMeta = {
|
|
6
5
|
name: string;
|
|
@@ -8,11 +7,11 @@ export declare type RTEPluginMeta = {
|
|
|
8
7
|
nodes?: Klass<LexicalNode>[];
|
|
9
8
|
};
|
|
10
9
|
};
|
|
11
|
-
export interface RTEPlugin<P
|
|
10
|
+
export interface RTEPlugin<P> {
|
|
12
11
|
(props: P): ReactElement | null;
|
|
13
12
|
[RTEPluginMeta]?: RTEPluginMeta;
|
|
14
13
|
}
|
|
15
|
-
export declare const isRTEPluginElement: (plugin: {}) => plugin is
|
|
14
|
+
export declare const isRTEPluginElement: (plugin: {}) => plugin is ReactElement<unknown, RTEPlugin<unknown>>;
|
|
16
15
|
export declare const useRTEUpdate: (callback: () => void) => void;
|
|
17
16
|
export declare type ToolbarPortalProviderProps = {
|
|
18
17
|
children: ReactNode;
|
|
@@ -20,15 +19,8 @@ export declare type ToolbarPortalProviderProps = {
|
|
|
20
19
|
focused: boolean;
|
|
21
20
|
};
|
|
22
21
|
export declare const RTEPluginContextProvider: ({ children, disabled, focused, }: ToolbarPortalProviderProps) => JSX.Element;
|
|
23
|
-
export declare const useToolbarPortalRegister: () => {
|
|
24
|
-
setToolbarPortalEl: (element: HTMLElement | null) => void;
|
|
25
|
-
};
|
|
26
22
|
export declare const useRTEPluginContext: () => {
|
|
27
23
|
disabled: boolean;
|
|
28
24
|
focused: boolean;
|
|
29
25
|
};
|
|
30
|
-
export
|
|
31
|
-
children: ReactNode;
|
|
32
|
-
keyName: string;
|
|
33
|
-
};
|
|
34
|
-
export declare const Toolbar: ({ children, keyName }: ToolbarProps) => JSX.Element;
|
|
26
|
+
export { Props as ToolbarProps, Toolbar, useToolbarPortalRegister, } from './Toolbar/Toolbar';
|
package/plugins/api.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import React, { createContext, useState, useContext, useEffect } from 'react';
|
|
2
|
-
import { createPortal } from 'react-dom';
|
|
3
1
|
import { useLexicalComposerContext } from '@lexical/react/LexicalComposerContext';
|
|
4
|
-
import {
|
|
2
|
+
import React, { createContext, useContext, useEffect } from 'react';
|
|
3
|
+
import { registerLexicalEvents } from '../LexicalEditor/utils/registerLexicalEvents';
|
|
4
|
+
import { ToolbarProvider } from './Toolbar/Toolbar';
|
|
5
5
|
export const RTEPluginMeta = Symbol('PicassoRTEPluginMeta');
|
|
6
6
|
export const isRTEPluginElement = (plugin) => {
|
|
7
7
|
return (React.isValidElement(plugin) &&
|
|
@@ -18,23 +18,14 @@ export const useRTEUpdate = (callback) => {
|
|
|
18
18
|
const RTEPluginContext = createContext({
|
|
19
19
|
disabled: false,
|
|
20
20
|
focused: false,
|
|
21
|
-
setToolbarPortalEl: () => { },
|
|
22
21
|
});
|
|
23
22
|
export const RTEPluginContextProvider = ({ children, disabled, focused, }) => {
|
|
24
|
-
const [element, setElement] = useState(null);
|
|
25
23
|
const value = {
|
|
26
24
|
disabled,
|
|
27
25
|
focused,
|
|
28
|
-
toolbarPortalEl: element !== null && element !== void 0 ? element : undefined,
|
|
29
|
-
setToolbarPortalEl: setElement,
|
|
30
|
-
};
|
|
31
|
-
return (React.createElement(RTEPluginContext.Provider, { value: value }, children));
|
|
32
|
-
};
|
|
33
|
-
export const useToolbarPortalRegister = () => {
|
|
34
|
-
const { setToolbarPortalEl } = useContext(RTEPluginContext);
|
|
35
|
-
return {
|
|
36
|
-
setToolbarPortalEl,
|
|
37
26
|
};
|
|
27
|
+
return (React.createElement(ToolbarProvider, null,
|
|
28
|
+
React.createElement(RTEPluginContext.Provider, { value: value }, children)));
|
|
38
29
|
};
|
|
39
30
|
export const useRTEPluginContext = () => {
|
|
40
31
|
const { disabled, focused } = useContext(RTEPluginContext);
|
|
@@ -43,8 +34,5 @@ export const useRTEPluginContext = () => {
|
|
|
43
34
|
focused,
|
|
44
35
|
};
|
|
45
36
|
};
|
|
46
|
-
export
|
|
47
|
-
const { toolbarPortalEl: element } = useContext(RTEPluginContext);
|
|
48
|
-
return React.createElement(React.Fragment, null, element && createPortal(children, element, keyName));
|
|
49
|
-
};
|
|
37
|
+
export { Toolbar, useToolbarPortalRegister, } from './Toolbar/Toolbar';
|
|
50
38
|
//# sourceMappingURL=api.js.map
|
package/plugins/api.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"api.js","sourceRoot":"","sources":["../../src/plugins/api.tsx"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"api.js","sourceRoot":"","sources":["../../src/plugins/api.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,yBAAyB,EAAE,MAAM,uCAAuC,CAAA;AAGjF,OAAO,KAAK,EAAE,EAAE,aAAa,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,OAAO,CAAA;AAEnE,OAAO,EAAE,qBAAqB,EAAE,MAAM,8CAA8C,CAAA;AACpF,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAA;AAEnD,MAAM,CAAC,MAAM,aAAa,GAAG,MAAM,CAAC,sBAAsB,CAAC,CAAA;AAe3D,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAAC,MAAU,EAG3C,EAAE;IACF,OAAO,CACL,KAAK,CAAC,cAAc,CAAC,MAAM,CAAC;QAC5B,OAAO,MAAM,CAAC,IAAI,KAAK,UAAU;QACjC,aAAa,IAAI,MAAM,CAAC,IAAI,CAC7B,CAAA;AACH,CAAC,CAAA;AAOD,MAAM,CAAC,MAAM,YAAY,GAAG,CAAC,QAAoB,EAAE,EAAE;IACnD,MAAM,CAAC,MAAM,CAAC,GAAG,yBAAyB,EAAE,CAAA;IAE5C,SAAS,CACP,GAAG,EAAE,CACH,qBAAqB,CAAC;QACpB,MAAM;QACN,aAAa,EAAE,QAAQ;KACxB,CAAC,EACJ,CAAC,QAAQ,EAAE,MAAM,CAAC,CACnB,CAAA;AACH,CAAC,CAAA;AAED,MAAM,gBAAgB,GAAG,aAAa,CAAwB;IAC5D,QAAQ,EAAE,KAAK;IACf,OAAO,EAAE,KAAK;CACf,CAAC,CAAA;AAQF,MAAM,CAAC,MAAM,wBAAwB,GAAG,CAAC,EACvC,QAAQ,EACR,QAAQ,EACR,OAAO,GACoB,EAAE,EAAE;IAC/B,MAAM,KAAK,GAA0B;QACnC,QAAQ;QACR,OAAO;KACR,CAAA;IAED,OAAO,CACL,oBAAC,eAAe;QACd,oBAAC,gBAAgB,CAAC,QAAQ,IAAC,KAAK,EAAE,KAAK,IACpC,QAAQ,CACiB,CACZ,CACnB,CAAA;AACH,CAAC,CAAA;AAED,MAAM,CAAC,MAAM,mBAAmB,GAAG,GAAG,EAAE;IACtC,MAAM,EAAE,QAAQ,EAAE,OAAO,EAAE,GAAG,UAAU,CAAC,gBAAgB,CAAC,CAAA;IAE1D,OAAO;QACL,QAAQ;QACR,OAAO;KACR,CAAA;AACH,CAAC,CAAA;AAED,OAAO,EAEL,OAAO,EACP,wBAAwB,GACzB,MAAM,mBAAmB,CAAA"}
|