@lobehub/editor 2.0.2 → 2.0.4

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.
Files changed (48) hide show
  1. package/es/editor-kernel/react/PortalAnchor.d.ts +5 -4
  2. package/es/editor-kernel/react/PortalAnchor.js +2 -3
  3. package/es/plugins/common/react/Placeholder/index.js +2 -0
  4. package/es/plugins/common/react/ReactPlainText.js +1 -0
  5. package/es/plugins/file/react/components/ReactFile.d.ts +2 -2
  6. package/es/plugins/file/react/components/ReactFile.js +4 -5
  7. package/es/plugins/image/react/components/BrokenImage.d.ts +2 -2
  8. package/es/plugins/image/react/components/BrokenImage.js +2 -3
  9. package/es/plugins/image/react/components/Image.js +1 -0
  10. package/es/plugins/image/react/components/LazyImage.js +2 -0
  11. package/es/plugins/link/react/components/LinkEdit.js +1 -2
  12. package/es/plugins/litexml/command/index.js +9 -2
  13. package/es/plugins/litexml/react/DiffNodeToolbar/index.d.ts +2 -2
  14. package/es/plugins/litexml/react/DiffNodeToolbar/index.js +2 -3
  15. package/es/plugins/math/react/components/MathEditorContent.js +1 -2
  16. package/es/plugins/math/react/components/Placeholder.d.ts +5 -4
  17. package/es/plugins/math/react/components/Placeholder.js +3 -5
  18. package/es/plugins/mention/react/components/Mention.d.ts +5 -4
  19. package/es/plugins/mention/react/components/Mention.js +3 -3
  20. package/es/plugins/slash/react/components/DefaultSlashMenu.js +1 -0
  21. package/es/plugins/slash/react/components/SlashMenu.js +1 -0
  22. package/es/react/ChatInput/ChatInput.js +2 -1
  23. package/es/react/ChatInput/type.d.ts +1 -1
  24. package/es/react/ChatInputActionBar/ChatInputActionBar.d.ts +2 -2
  25. package/es/react/ChatInputActionBar/ChatInputActionBar.js +3 -4
  26. package/es/react/ChatInputActionBar/type.d.ts +1 -1
  27. package/es/react/ChatInputActions/ChatInputActions.js +2 -1
  28. package/es/react/ChatInputActions/components/ActionItem.js +1 -0
  29. package/es/react/ChatInputActions/components/ActionRender.js +1 -0
  30. package/es/react/ChatInputActions/components/CollapsedActions.js +2 -2
  31. package/es/react/ChatInputActions/type.d.ts +1 -2
  32. package/es/react/CodeLanguageSelect/CodeLanguageSelect.js +2 -2
  33. package/es/react/Editor/Editor.js +1 -0
  34. package/es/react/FloatActions/FloatActions.js +2 -1
  35. package/es/react/FloatActions/components/ActionItem.js +1 -0
  36. package/es/react/FloatActions/components/ActionRender.js +1 -0
  37. package/es/react/FloatActions/components/CollapsedActions.js +2 -2
  38. package/es/react/FloatActions/type.d.ts +1 -2
  39. package/es/react/FloatMenu/FloatMenu.d.ts +2 -2
  40. package/es/react/FloatMenu/FloatMenu.js +3 -5
  41. package/es/react/SendButton/SendButton.js +1 -0
  42. package/es/react/SendButton/components/SendIcon.d.ts +6 -5
  43. package/es/react/SendButton/components/SendIcon.js +3 -4
  44. package/es/react/SendButton/components/StopIcon.d.ts +6 -5
  45. package/es/react/SendButton/components/StopIcon.js +2 -3
  46. package/es/react/SlashMenu/SlashMenu.d.ts +2 -2
  47. package/es/react/SlashMenu/SlashMenu.js +3 -3
  48. package/package.json +1 -2
@@ -1,5 +1,6 @@
1
- import { PropsWithChildren } from 'react';
2
- declare const PortalAnchor: import("react").NamedExoticComponent<PropsWithChildren<{
3
- anchorElem?: HTMLElement | undefined;
4
- }>>;
1
+ import { type FC, type PropsWithChildren } from 'react';
2
+ interface PortalAnchorProps {
3
+ anchorElem?: HTMLElement;
4
+ }
5
+ declare const PortalAnchor: FC<PropsWithChildren<PortalAnchorProps>>;
5
6
  export default PortalAnchor;
@@ -1,13 +1,12 @@
1
1
  'use client';
2
2
 
3
- import { memo } from 'react';
4
3
  import { createPortal } from 'react-dom';
5
4
  import { useAnchor } from "./useAnchor";
6
- var PortalAnchor = /*#__PURE__*/memo(function (_ref) {
5
+ var PortalAnchor = function PortalAnchor(_ref) {
7
6
  var children = _ref.children;
8
7
  var targetElement = useAnchor();
9
8
  if (!targetElement) return null;
10
9
  return /*#__PURE__*/createPortal(children, targetElement);
11
- });
10
+ };
12
11
  PortalAnchor.displayName = 'PortalAnchor';
13
12
  export default PortalAnchor;
@@ -22,6 +22,8 @@ function hasOnlyBrChild(element) {
22
22
  var children = element.childNodes;
23
23
  return children.length === 1 && children[0].nodeType === Node.ELEMENT_NODE && children[0].tagName.toLowerCase() === 'br';
24
24
  }
25
+
26
+ // Keep memo: Complex editor state monitoring with update listeners and DOM manipulation
25
27
  var Placeholder = /*#__PURE__*/memo(function (_ref) {
26
28
  var children = _ref.children,
27
29
  style = _ref.style,
@@ -26,6 +26,7 @@ import Placeholder from "./Placeholder";
26
26
  import { useStyles, useThemeStyles } from "./style";
27
27
  import { jsx as _jsx } from "react/jsx-runtime";
28
28
  import { jsxs as _jsxs } from "react/jsx-runtime";
29
+ // Keep memo: Core editor rendering layer with complex event handling and decorator management
29
30
  var ReactPlainText = /*#__PURE__*/memo(function (_ref) {
30
31
  var style = _ref.style,
31
32
  children = _ref.children,
@@ -1,10 +1,10 @@
1
- /// <reference types="react" />
2
1
  import { LexicalEditor } from 'lexical';
2
+ import { type FC } from 'react';
3
3
  import { FileNode } from '../../node/FileNode';
4
4
  interface ReactFileProps {
5
5
  className?: string;
6
6
  editor: LexicalEditor;
7
7
  node: FileNode;
8
8
  }
9
- declare const ReactFile: import("react").NamedExoticComponent<ReactFileProps>;
9
+ declare const ReactFile: FC<ReactFileProps>;
10
10
  export default ReactFile;
@@ -4,15 +4,14 @@ function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o =
4
4
  function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }
5
5
  function _iterableToArrayLimit(r, l) { var t = null == r ? null : "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (null != t) { var e, n, i, u, a = [], f = !0, o = !1; try { if (i = (t = t.call(r)).next, 0 === l) { if (Object(t) !== t) return; f = !1; } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0); } catch (r) { o = !0, n = r; } finally { try { if (!f && null != t.return && (u = t.return(), Object(u) !== u)) return; } finally { if (o) throw n; } } return a; } }
6
6
  function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }
7
- import { MaterialFileTypeIcon } from '@lobehub/ui';
7
+ import { MaterialFileTypeIcon, Center } from '@lobehub/ui';
8
8
  import { CLICK_COMMAND, COMMAND_PRIORITY_LOW } from 'lexical';
9
- import { memo, useCallback, useEffect, useRef } from 'react';
10
- import { Center } from 'react-layout-kit';
9
+ import { useCallback, useEffect, useRef } from 'react';
11
10
  import { useLexicalNodeSelection } from "../../../../editor-kernel/react/useLexicalNodeSelection";
12
11
  import { useTranslation } from "../../../../editor-kernel/react/useTranslation";
13
12
  import { jsx as _jsx } from "react/jsx-runtime";
14
13
  import { jsxs as _jsxs } from "react/jsx-runtime";
15
- var ReactFile = /*#__PURE__*/memo(function (_ref) {
14
+ var ReactFile = function ReactFile(_ref) {
16
15
  var className = _ref.className,
17
16
  editor = _ref.editor,
18
17
  node = _ref.node;
@@ -60,6 +59,6 @@ var ReactFile = /*#__PURE__*/memo(function (_ref) {
60
59
  variant: 'raw'
61
60
  }), node.name]
62
61
  });
63
- });
62
+ };
64
63
  ReactFile.displayName = 'ReactFile';
65
64
  export default ReactFile;
@@ -1,3 +1,3 @@
1
- /// <reference types="react" />
2
- declare const BrokenImage: import("react").MemoExoticComponent<() => import("react/jsx-runtime").JSX.Element>;
1
+ import { type FC } from 'react';
2
+ declare const BrokenImage: FC;
3
3
  export default BrokenImage;
@@ -1,8 +1,7 @@
1
- import { memo } from 'react';
2
1
  import { useTranslation } from "../../../../editor-kernel/react/useTranslation";
3
2
  import { imageBroken } from "../style";
4
3
  import { jsx as _jsx } from "react/jsx-runtime";
5
- var BrokenImage = /*#__PURE__*/memo(function () {
4
+ var BrokenImage = function BrokenImage() {
6
5
  var t = useTranslation();
7
6
  return /*#__PURE__*/_jsx("img", {
8
7
  alt: t('image.broken'),
@@ -13,6 +12,6 @@ var BrokenImage = /*#__PURE__*/memo(function () {
13
12
  width: 200
14
13
  }
15
14
  });
16
- });
15
+ };
17
16
  BrokenImage.displayName = 'BrokenImage';
18
17
  export default BrokenImage;
@@ -16,6 +16,7 @@ import { useStyles } from "./style";
16
16
  import { jsx as _jsx } from "react/jsx-runtime";
17
17
  import { jsxs as _jsxs } from "react/jsx-runtime";
18
18
  import { Fragment as _Fragment } from "react/jsx-runtime";
19
+ // Keep memo: Complex resize logic, state management, and multiple event handlers
19
20
  var Image = /*#__PURE__*/memo(function (_ref) {
20
21
  var node = _ref.node,
21
22
  className = _ref.className,
@@ -17,6 +17,8 @@ import { jsx as _jsx } from "react/jsx-runtime";
17
17
  function isSVG(src) {
18
18
  return src.toLowerCase().endsWith('.svg');
19
19
  }
20
+
21
+ // Keep memo: Lazy loading with dimension calculation and SVG handling
20
22
  var LazyImage = /*#__PURE__*/memo(function (_ref) {
21
23
  var className = _ref.className,
22
24
  node = _ref.node,
@@ -5,11 +5,10 @@ function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len
5
5
  function _iterableToArrayLimit(r, l) { var t = null == r ? null : "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (null != t) { var e, n, i, u, a = [], f = !0, o = !1; try { if (i = (t = t.call(r)).next, 0 === l) { if (Object(t) !== t) return; f = !1; } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0); } catch (r) { o = !0, n = r; } finally { try { if (!f && null != t.return && (u = t.return(), Object(u) !== u)) return; } finally { if (o) throw n; } } return a; } }
6
6
  function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }
7
7
  import { mergeRegister } from '@lexical/utils';
8
- import { Block, Button, Hotkey, Icon, Input, Text } from '@lobehub/ui';
8
+ import { Block, Button, Hotkey, Icon, Input, Text, Flexbox } from '@lobehub/ui';
9
9
  import { COMMAND_PRIORITY_EDITOR, COMMAND_PRIORITY_NORMAL, KEY_ESCAPE_COMMAND, KEY_TAB_COMMAND, createCommand } from 'lexical';
10
10
  import { BaselineIcon, LinkIcon } from 'lucide-react';
11
11
  import { memo, useCallback, useEffect, useRef, useState } from 'react';
12
- import { Flexbox } from 'react-layout-kit';
13
12
  import { useLexicalEditor } from "../../../../editor-kernel/react";
14
13
  import { useEditable } from "../../../../editor-kernel/react/useEditable";
15
14
  import { useTranslation } from "../../../../editor-kernel/react/useTranslation";
@@ -264,11 +264,18 @@ function handleRemove(editor, key, delay) {
264
264
  originDiffNode.remove();
265
265
  return;
266
266
  }
267
- case 'listItemModify':
268
267
  case 'modify':
269
268
  {
270
269
  var children = originDiffNode.getChildren();
271
- originDiffNode.replace(children[0], false).selectEnd();
270
+ var newDiff = $createDiffNode('remove');
271
+ newDiff.append(children[0]);
272
+ originDiffNode.replace(newDiff, false);
273
+ return;
274
+ }
275
+ case 'listItemModify':
276
+ {
277
+ var _children = originDiffNode.getChildren();
278
+ originDiffNode.replace(_children[0], false).selectEnd();
272
279
  return;
273
280
  }
274
281
  case 'remove':
@@ -1,10 +1,10 @@
1
- /// <reference types="react" />
2
1
  import { LexicalEditor } from 'lexical';
2
+ import type { FC } from 'react';
3
3
  import { DiffNode } from '../../node/DiffNode';
4
4
  interface ReactDiffNodeToolbarProps {
5
5
  className?: string;
6
6
  editor: LexicalEditor;
7
7
  node: DiffNode;
8
8
  }
9
- declare const ReactDiffNodeToolbar: import("react").NamedExoticComponent<ReactDiffNodeToolbarProps>;
9
+ declare const ReactDiffNodeToolbar: FC<ReactDiffNodeToolbarProps>;
10
10
  export default ReactDiffNodeToolbar;
@@ -1,13 +1,12 @@
1
1
  import { ActionIcon, Block } from '@lobehub/ui';
2
2
  import { Check, X } from 'lucide-react';
3
- import { memo } from 'react';
4
3
  import { LexicalPortalContainer } from "../../../../editor-kernel/react";
5
4
  import { useTranslation } from "../../../../editor-kernel/react/useTranslation";
6
5
  import { DiffAction, LITEXML_DIFFNODE_COMMAND } from "../../command/diffCommand";
7
6
  import { useStyles } from "./style";
8
7
  import { jsx as _jsx } from "react/jsx-runtime";
9
8
  import { jsxs as _jsxs } from "react/jsx-runtime";
10
- var ReactDiffNodeToolbar = /*#__PURE__*/memo(function (_ref) {
9
+ var ReactDiffNodeToolbar = function ReactDiffNodeToolbar(_ref) {
11
10
  var editor = _ref.editor,
12
11
  node = _ref.node;
13
12
  var t = useTranslation();
@@ -57,6 +56,6 @@ var ReactDiffNodeToolbar = /*#__PURE__*/memo(function (_ref) {
57
56
  })]
58
57
  })
59
58
  });
60
- });
59
+ };
61
60
  ReactDiffNodeToolbar.displayName = 'ReactDiffNodeToolbar';
62
61
  export default ReactDiffNodeToolbar;
@@ -4,11 +4,10 @@ function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o =
4
4
  function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }
5
5
  function _iterableToArrayLimit(r, l) { var t = null == r ? null : "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (null != t) { var e, n, i, u, a = [], f = !0, o = !1; try { if (i = (t = t.call(r)).next, 0 === l) { if (Object(t) !== t) return; f = !1; } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0); } catch (r) { o = !0, n = r; } finally { try { if (!f && null != t.return && (u = t.return(), Object(u) !== u)) return; } finally { if (o) throw n; } } return a; } }
6
6
  function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }
7
- import { Button, Hotkey, Text, TextArea } from '@lobehub/ui';
7
+ import { Button, Hotkey, Text, TextArea, Flexbox } from '@lobehub/ui';
8
8
  import { renderToString } from 'katex';
9
9
  import { isModifierMatch } from 'lexical';
10
10
  import { memo, useCallback, useEffect, useRef, useState } from 'react';
11
- import { Flexbox } from 'react-layout-kit';
12
11
  import { CONTROL_OR_META } from "../../../../common/sys";
13
12
  import { useTranslation } from "../../../../editor-kernel/react/useTranslation";
14
13
  import { useStyles } from "../style";
@@ -1,5 +1,6 @@
1
- /// <reference types="react" />
2
- declare const Placeholder: import("react").NamedExoticComponent<{
3
- mathBlock?: boolean | undefined;
4
- }>;
1
+ import { type FC } from 'react';
2
+ interface PlaceholderProps {
3
+ mathBlock?: boolean;
4
+ }
5
+ declare const Placeholder: FC<PlaceholderProps>;
5
6
  export default Placeholder;
@@ -1,9 +1,7 @@
1
- import { Text } from '@lobehub/ui';
2
- import { memo } from 'react';
3
- import { Center } from 'react-layout-kit';
1
+ import { Text, Center } from '@lobehub/ui';
4
2
  import { useTranslation } from "../../../../editor-kernel/react/useTranslation";
5
3
  import { jsx as _jsx } from "react/jsx-runtime";
6
- var Placeholder = /*#__PURE__*/memo(function (_ref) {
4
+ var Placeholder = function Placeholder(_ref) {
7
5
  var mathBlock = _ref.mathBlock;
8
6
  var t = useTranslation();
9
7
  var node = /*#__PURE__*/_jsx(Text, {
@@ -23,5 +21,5 @@ var Placeholder = /*#__PURE__*/memo(function (_ref) {
23
21
  width: '100%',
24
22
  children: node
25
23
  });
26
- });
24
+ };
27
25
  export default Placeholder;
@@ -1,9 +1,10 @@
1
- /// <reference types="react" />
2
1
  import { LexicalEditor } from 'lexical';
2
+ import { type FC } from 'react';
3
3
  import { MentionNode } from '../../node/MentionNode';
4
- declare const Mention: import("react").NamedExoticComponent<{
5
- className?: string | undefined;
4
+ interface MentionProps {
5
+ className?: string;
6
6
  editor: LexicalEditor;
7
7
  node: MentionNode;
8
- }>;
8
+ }
9
+ declare const Mention: FC<MentionProps>;
9
10
  export default Mention;
@@ -5,10 +5,10 @@ function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len
5
5
  function _iterableToArrayLimit(r, l) { var t = null == r ? null : "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (null != t) { var e, n, i, u, a = [], f = !0, o = !1; try { if (i = (t = t.call(r)).next, 0 === l) { if (Object(t) !== t) return; f = !1; } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0); } catch (r) { o = !0, n = r; } finally { try { if (!f && null != t.return && (u = t.return(), Object(u) !== u)) return; } finally { if (o) throw n; } } return a; } }
6
6
  function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }
7
7
  import { CLICK_COMMAND, COMMAND_PRIORITY_LOW } from 'lexical';
8
- import { memo, useCallback, useEffect, useRef } from 'react';
8
+ import { useCallback, useEffect, useRef } from 'react';
9
9
  import { useLexicalNodeSelection } from "../../../../editor-kernel/react/useLexicalNodeSelection";
10
10
  import { jsxs as _jsxs } from "react/jsx-runtime";
11
- var Mention = /*#__PURE__*/memo(function (_ref) {
11
+ var Mention = function Mention(_ref) {
12
12
  var node = _ref.node,
13
13
  editor = _ref.editor,
14
14
  className = _ref.className;
@@ -34,6 +34,6 @@ var Mention = /*#__PURE__*/memo(function (_ref) {
34
34
  ref: spanRef,
35
35
  children: ["@", node.label]
36
36
  });
37
- });
37
+ };
38
38
  Mention.displayName = 'Mention';
39
39
  export default Mention;
@@ -3,6 +3,7 @@
3
3
  import { Dropdown } from '@lobehub/ui';
4
4
  import { memo, useCallback } from 'react';
5
5
  import { jsx as _jsx } from "react/jsx-runtime";
6
+ // Keep memo: Menu list rendering with item selection handling
6
7
  var DefaultSlashMenu = /*#__PURE__*/memo(function (_ref) {
7
8
  var activeKey = _ref.activeKey,
8
9
  anchorClassName = _ref.anchorClassName,
@@ -7,6 +7,7 @@ import DefaultSlashMenu from "./DefaultSlashMenu";
7
7
  * SlashMenu component - Only responsible for rendering the menu UI
8
8
  * All state management and plugin registration is handled by ReactSlashPlugin
9
9
  */
10
+ // Keep memo: Menu rendering with keyboard navigation and selection state
10
11
  import { jsx as _jsx } from "react/jsx-runtime";
11
12
  var SlashMenu = /*#__PURE__*/memo(function (_ref) {
12
13
  var activeKey = _ref.activeKey,
@@ -15,14 +15,15 @@ function _iterableToArrayLimit(r, l) { var t = null == r ? null : "undefined" !=
15
15
  function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }
16
16
  function _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }
17
17
  function _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }
18
+ import { Flexbox } from '@lobehub/ui';
18
19
  import { Resizable } from 're-resizable';
19
20
  import { memo, useCallback } from 'react';
20
- import { Flexbox } from 'react-layout-kit';
21
21
  import useMergeState from 'use-merge-value';
22
22
  import { useHeight } from "../hooks/useSize";
23
23
  import { useStyles } from "./style";
24
24
  import { jsx as _jsx } from "react/jsx-runtime";
25
25
  import { jsxs as _jsxs } from "react/jsx-runtime";
26
+ // Keep memo: Complex resize logic and state management
26
27
  var ChatInput = /*#__PURE__*/memo(function (props) {
27
28
  var _props$defaultHeight = props.defaultHeight,
28
29
  defaultHeight = _props$defaultHeight === void 0 ? props.defaultHeight || props.minHeight || 64 : _props$defaultHeight,
@@ -1,5 +1,5 @@
1
+ import type { FlexboxProps } from '@lobehub/ui';
1
2
  import type { CSSProperties, ReactNode, Ref } from 'react';
2
- import { FlexboxProps } from 'react-layout-kit';
3
3
  export interface ChatInputProps extends Omit<FlexboxProps, 'height'> {
4
4
  classNames?: {
5
5
  body?: string;
@@ -1,4 +1,4 @@
1
- /// <reference types="react" />
1
+ import { type FC } from 'react';
2
2
  import type { ChatInputActionBarProps } from './type';
3
- declare const ChatInputActionBar: import("react").NamedExoticComponent<ChatInputActionBarProps>;
3
+ declare const ChatInputActionBar: FC<ChatInputActionBarProps>;
4
4
  export default ChatInputActionBar;
@@ -9,11 +9,10 @@ function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol"
9
9
  function _toPrimitive(t, r) { if ("object" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != _typeof(i)) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); }
10
10
  function _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }
11
11
  function _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }
12
- import { memo } from 'react';
13
- import { Flexbox } from 'react-layout-kit';
12
+ import { Flexbox } from '@lobehub/ui';
14
13
  import { useStyles } from "./style";
15
14
  import { jsxs as _jsxs } from "react/jsx-runtime";
16
- var ChatInputActionBar = /*#__PURE__*/memo(function (_ref) {
15
+ var ChatInputActionBar = function ChatInputActionBar(_ref) {
17
16
  var className = _ref.className,
18
17
  style = _ref.style,
19
18
  left = _ref.left,
@@ -33,6 +32,6 @@ var ChatInputActionBar = /*#__PURE__*/memo(function (_ref) {
33
32
  }, rest), {}, {
34
33
  children: [left, right]
35
34
  }));
36
- });
35
+ };
37
36
  ChatInputActionBar.displayName = 'ChatInputActionBar';
38
37
  export default ChatInputActionBar;
@@ -1,5 +1,5 @@
1
+ import type { FlexboxProps } from '@lobehub/ui';
1
2
  import type { ReactNode } from 'react';
2
- import { FlexboxProps } from 'react-layout-kit';
3
3
  export interface ChatInputActionBarProps extends Omit<FlexboxProps, 'children'> {
4
4
  left?: ReactNode;
5
5
  right?: ReactNode;
@@ -19,13 +19,14 @@ function _iterableToArrayLimit(r, l) { var t = null == r ? null : "undefined" !=
19
19
  function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }
20
20
  function _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }
21
21
  function _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }
22
+ import { Flexbox } from '@lobehub/ui';
22
23
  import { memo, useMemo } from 'react';
23
- import { Flexbox } from 'react-layout-kit';
24
24
  import useMergeState from 'use-merge-value';
25
25
  import ActionItem from "./components/ActionItem";
26
26
  import { useDisplayActionCount } from "./components/useDisplayActionCount";
27
27
  import { useStyles } from "./style";
28
28
  import { jsx as _jsx } from "react/jsx-runtime";
29
+ // Keep memo: Complex calcItem computation and list rendering with state management
29
30
  var ChatInputActions = /*#__PURE__*/memo(function (_ref) {
30
31
  var _ref$gap = _ref.gap,
31
32
  gap = _ref$gap === void 0 ? 2 : _ref$gap,
@@ -11,6 +11,7 @@ import { memo } from 'react';
11
11
  import ActionRender from "./ActionRender";
12
12
  import CollapsedActions from "./CollapsedActions";
13
13
  import { jsx as _jsx } from "react/jsx-runtime";
14
+ // Keep memo: Rendered as list item with conditional logic and mode switching
14
15
  var ActionItem = /*#__PURE__*/memo(function (_ref) {
15
16
  var item = _ref.item,
16
17
  disabled = _ref.disabled,
@@ -12,6 +12,7 @@ import { Divider } from 'antd';
12
12
  import { isValidElement, memo } from 'react';
13
13
  import { useStyles } from "../style";
14
14
  import { jsx as _jsx } from "react/jsx-runtime";
15
+ // Keep memo: List rendering component with conditional wrapper logic
15
16
  var ActionRender = /*#__PURE__*/memo(function (_ref) {
16
17
  var item = _ref.item,
17
18
  onActionClick = _ref.onActionClick,
@@ -1,13 +1,13 @@
1
1
  'use client';
2
2
 
3
- import { ActionIcon } from '@lobehub/ui';
3
+ import { ActionIcon, Flexbox } from '@lobehub/ui';
4
4
  import { Popover } from 'antd';
5
5
  import { CircleChevronLeftIcon, CircleChevronRightIcon, CircleChevronUpIcon } from 'lucide-react';
6
6
  import { motion } from 'motion/react';
7
7
  import { memo } from 'react';
8
- import { Flexbox } from 'react-layout-kit';
9
8
  import { jsx as _jsx } from "react/jsx-runtime";
10
9
  import { jsxs as _jsxs } from "react/jsx-runtime";
10
+ // Keep memo: Complex animation and state management with motion.div and mode switching
11
11
  var CollapsedActions = /*#__PURE__*/memo(function (_ref) {
12
12
  var children = _ref.children,
13
13
  _ref$groupCollapse = _ref.groupCollapse,
@@ -1,6 +1,5 @@
1
- import type { MenuInfo, MenuItemType, TooltipProps } from '@lobehub/ui';
1
+ import type { FlexboxProps, MenuInfo, MenuItemType, TooltipProps } from '@lobehub/ui';
2
2
  import type { ReactNode } from 'react';
3
- import type { FlexboxProps } from 'react-layout-kit';
4
3
  export type ChatInputActionEvent = Pick<MenuInfo, 'key' | 'keyPath' | 'domEvent'>;
5
4
  export interface ActionItem extends MenuItemType {
6
5
  active?: boolean;
@@ -15,13 +15,13 @@ function _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToAr
15
15
  function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }
16
16
  function _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }
17
17
  function _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }
18
- import { MaterialFileTypeIcon, Select, Text } from '@lobehub/ui';
18
+ import { MaterialFileTypeIcon, Select, Text, Flexbox } from '@lobehub/ui';
19
19
  import { memo, useMemo } from 'react';
20
- import { Flexbox } from 'react-layout-kit';
21
20
  import { bundledLanguagesInfo } from 'shiki';
22
21
  import { useStyles } from "./style";
23
22
  import { jsx as _jsx } from "react/jsx-runtime";
24
23
  import { jsxs as _jsxs } from "react/jsx-runtime";
24
+ // Keep memo: UseMemo calculation of large language options array (100+ items from bundledLanguagesInfo)
25
25
  var CodeLanguageSelect = /*#__PURE__*/memo(function (_ref) {
26
26
  var className = _ref.className,
27
27
  rest = _objectWithoutProperties(_ref, _excluded);
@@ -24,6 +24,7 @@ import { ReactSlashOption, ReactSlashPlugin } from "../../plugins/slash";
24
24
  import { useEditorContent } from "../EditorProvider";
25
25
  import { jsx as _jsx } from "react/jsx-runtime";
26
26
  import { jsxs as _jsxs } from "react/jsx-runtime";
27
+ // Keep memo: Core editor component with complex useMemo calculations and plugin system
27
28
  var Editor = /*#__PURE__*/memo(function (_ref) {
28
29
  var content = _ref.content,
29
30
  style = _ref.style,
@@ -15,12 +15,13 @@ function _iterableToArrayLimit(r, l) { var t = null == r ? null : "undefined" !=
15
15
  function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }
16
16
  function _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }
17
17
  function _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }
18
+ import { Flexbox } from '@lobehub/ui';
18
19
  import { memo } from 'react';
19
- import { Flexbox } from 'react-layout-kit';
20
20
  import useMergeState from 'use-merge-value';
21
21
  import ActionItem from "./components/ActionItem";
22
22
  import { useStyles } from "./style";
23
23
  import { jsx as _jsx } from "react/jsx-runtime";
24
+ // Keep memo: List rendering with state management for collapsed/expanded states
24
25
  var FloatActions = /*#__PURE__*/memo(function (_ref) {
25
26
  var _ref$gap = _ref.gap,
26
27
  gap = _ref$gap === void 0 ? 2 : _ref$gap,
@@ -11,6 +11,7 @@ import { memo } from 'react';
11
11
  import ActionRender from "./ActionRender";
12
12
  import CollapsedActions from "./CollapsedActions";
13
13
  import { jsx as _jsx } from "react/jsx-runtime";
14
+ // Keep memo: Rendered as list item with conditional logic for collapse/dropdown types
14
15
  var ActionItem = /*#__PURE__*/memo(function (_ref) {
15
16
  var item = _ref.item,
16
17
  disabled = _ref.disabled,
@@ -12,6 +12,7 @@ import { Divider } from 'antd';
12
12
  import { isValidElement, memo } from 'react';
13
13
  import { useStyles } from "../style";
14
14
  import { jsx as _jsx } from "react/jsx-runtime";
15
+ // Keep memo: List rendering component with conditional wrapper logic
15
16
  var ActionRender = /*#__PURE__*/memo(function (_ref) {
16
17
  var item = _ref.item,
17
18
  onActionClick = _ref.onActionClick,
@@ -1,13 +1,13 @@
1
1
  'use client';
2
2
 
3
- import { ActionIcon } from '@lobehub/ui';
3
+ import { ActionIcon, Flexbox } from '@lobehub/ui';
4
4
  import { Popover } from 'antd';
5
5
  import { CircleChevronLeftIcon, CircleChevronRightIcon, CircleChevronUpIcon } from 'lucide-react';
6
6
  import { motion } from 'motion/react';
7
7
  import { memo } from 'react';
8
- import { Flexbox } from 'react-layout-kit';
9
8
  import { jsx as _jsx } from "react/jsx-runtime";
10
9
  import { jsxs as _jsxs } from "react/jsx-runtime";
10
+ // Keep memo: Complex animation and state management with motion.div
11
11
  var CollapsedActions = /*#__PURE__*/memo(function (_ref) {
12
12
  var children = _ref.children,
13
13
  _ref$groupCollapse = _ref.groupCollapse,
@@ -1,6 +1,5 @@
1
- import type { MenuInfo, MenuItemType, TooltipProps } from '@lobehub/ui';
1
+ import type { FlexboxProps, MenuInfo, MenuItemType, TooltipProps } from '@lobehub/ui';
2
2
  import type { ReactNode } from 'react';
3
- import type { FlexboxProps } from 'react-layout-kit';
4
3
  export type FloatActionsEvent = Pick<MenuInfo, 'key' | 'keyPath' | 'domEvent'>;
5
4
  export interface ActionItem extends MenuItemType {
6
5
  active?: boolean;
@@ -1,4 +1,4 @@
1
- /// <reference types="react" />
1
+ import { type FC } from 'react';
2
2
  import type { FloatMenuProps } from './type';
3
- declare const FloatMenu: import("react").NamedExoticComponent<FloatMenuProps>;
3
+ declare const FloatMenu: FC<FloatMenuProps>;
4
4
  export default FloatMenu;
@@ -6,13 +6,11 @@ function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t =
6
6
  function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
7
7
  function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == _typeof(i) ? i : String(i); }
8
8
  function _toPrimitive(t, r) { if ("object" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != _typeof(i)) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); }
9
- import { Block } from '@lobehub/ui';
10
- import { memo } from 'react';
9
+ import { Block, Flexbox } from '@lobehub/ui';
11
10
  import { createPortal } from 'react-dom';
12
- import { Flexbox } from 'react-layout-kit';
13
11
  import { useStyles } from "./style";
14
12
  import { jsx as _jsx } from "react/jsx-runtime";
15
- var FloatMenu = /*#__PURE__*/memo(function (_ref) {
13
+ var FloatMenu = function FloatMenu(_ref) {
16
14
  var className = _ref.className,
17
15
  style = _ref.style,
18
16
  getPopupContainer = _ref.getPopupContainer,
@@ -44,6 +42,6 @@ var FloatMenu = /*#__PURE__*/memo(function (_ref) {
44
42
  })
45
43
  });
46
44
  return /*#__PURE__*/createPortal(node, parent);
47
- });
45
+ };
48
46
  FloatMenu.displayName = 'FloatMenu';
49
47
  export default FloatMenu;
@@ -18,6 +18,7 @@ import StopIcon from "./components/StopIcon";
18
18
  import { useStyles } from "./style";
19
19
  import { jsx as _jsx } from "react/jsx-runtime";
20
20
  import { jsxs as _jsxs } from "react/jsx-runtime";
21
+ // Keep memo: Multiple state transitions and conditional rendering logic
21
22
  var SendButton = /*#__PURE__*/memo(function (_ref) {
22
23
  var _ref$type = _ref.type,
23
24
  type = _ref$type === void 0 ? 'primary' : _ref$type,
@@ -1,6 +1,7 @@
1
- import { type CSSProperties } from 'react';
2
- declare const SendIcon: import("react").NamedExoticComponent<{
3
- size?: string | number | undefined;
4
- style?: CSSProperties | undefined;
5
- }>;
1
+ import { type CSSProperties, type FC } from 'react';
2
+ interface SendIconProps {
3
+ size?: string | number;
4
+ style?: CSSProperties;
5
+ }
6
+ declare const SendIcon: FC<SendIconProps>;
6
7
  export default SendIcon;
@@ -1,14 +1,13 @@
1
1
  'use client';
2
2
 
3
3
  function _typeof(o) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, _typeof(o); }
4
+ import { jsx as _jsx } from "react/jsx-runtime";
4
5
  function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
5
6
  function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
6
7
  function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
7
8
  function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == _typeof(i) ? i : String(i); }
8
9
  function _toPrimitive(t, r) { if ("object" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != _typeof(i)) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); }
9
- import { memo } from 'react';
10
- import { jsx as _jsx } from "react/jsx-runtime";
11
- var SendIcon = /*#__PURE__*/memo(function (_ref) {
10
+ var SendIcon = function SendIcon(_ref) {
12
11
  var _ref$size = _ref.size,
13
12
  size = _ref$size === void 0 ? '1em' : _ref$size,
14
13
  style = _ref.style;
@@ -28,5 +27,5 @@ var SendIcon = /*#__PURE__*/memo(function (_ref) {
28
27
  d: "M.743 3.773c-.818-.555-.422-1.834.567-1.828l11.496.074a1 1 0 01.837 1.538l-6.189 9.689c-.532.833-1.822.47-1.842-.518L5.525 8.51a1 1 0 01.522-.9l1.263-.686a.808.808 0 00-.772-1.42l-1.263.686a1 1 0 01-1.039-.051L.743 3.773z"
29
28
  })
30
29
  });
31
- });
30
+ };
32
31
  export default SendIcon;
@@ -1,6 +1,7 @@
1
- import { type CSSProperties } from 'react';
2
- declare const StopIcon: import("react").NamedExoticComponent<{
3
- size?: string | number | undefined;
4
- style?: CSSProperties | undefined;
5
- }>;
1
+ import { type CSSProperties, type FC } from 'react';
2
+ interface StopIconProps {
3
+ size?: string | number;
4
+ style?: CSSProperties;
5
+ }
6
+ declare const StopIcon: FC<StopIconProps>;
6
7
  export default StopIcon;
@@ -5,10 +5,9 @@ function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key i
5
5
  function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == _typeof(i) ? i : String(i); }
6
6
  function _toPrimitive(t, r) { if ("object" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != _typeof(i)) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); }
7
7
  import { useTheme } from 'antd-style';
8
- import { memo } from 'react';
9
8
  import { jsx as _jsx } from "react/jsx-runtime";
10
9
  import { jsxs as _jsxs } from "react/jsx-runtime";
11
- var StopIcon = /*#__PURE__*/memo(function (_ref) {
10
+ var StopIcon = function StopIcon(_ref) {
12
11
  var _ref$size = _ref.size,
13
12
  size = _ref$size === void 0 ? '1.5em' : _ref$size,
14
13
  style = _ref.style;
@@ -57,5 +56,5 @@ var StopIcon = /*#__PURE__*/memo(function (_ref) {
57
56
  })]
58
57
  })
59
58
  });
60
- });
59
+ };
61
60
  export default StopIcon;
@@ -1,4 +1,4 @@
1
- /// <reference types="react" />
1
+ import { type FC } from 'react';
2
2
  import type { SlashMenuProps } from './type';
3
- declare const SlashMenu: import("react").NamedExoticComponent<SlashMenuProps>;
3
+ declare const SlashMenu: FC<SlashMenuProps>;
4
4
  export default SlashMenu;
@@ -10,10 +10,10 @@ function _toPrimitive(t, r) { if ("object" != _typeof(t) || !t) return t; var e
10
10
  function _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }
11
11
  function _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }
12
12
  import { Menu } from '@lobehub/ui';
13
- import { memo, useCallback } from 'react';
13
+ import { useCallback } from 'react';
14
14
  import FloatMenu from "../FloatMenu";
15
15
  import { jsx as _jsx } from "react/jsx-runtime";
16
- var SlashMenu = /*#__PURE__*/memo(function (_ref) {
16
+ var SlashMenu = function SlashMenu(_ref) {
17
17
  var options = _ref.options,
18
18
  activeKey = _ref.activeKey,
19
19
  loading = _ref.loading,
@@ -53,6 +53,6 @@ var SlashMenu = /*#__PURE__*/memo(function (_ref) {
53
53
  style: customStyles === null || customStyles === void 0 ? void 0 : customStyles.menu
54
54
  }, menuProps))
55
55
  }));
56
- });
56
+ };
57
57
  SlashMenu.displayName = 'SlashMenu';
58
58
  export default SlashMenu;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@lobehub/editor",
3
- "version": "2.0.2",
3
+ "version": "2.0.4",
4
4
  "description": "A powerful and extensible rich text editor built on Meta's Lexical framework, providing a modern editing experience with React integration.",
5
5
  "keywords": [
6
6
  "lobehub",
@@ -55,7 +55,6 @@
55
55
  "polished": "^4.3.1",
56
56
  "re-resizable": "^6.11.2",
57
57
  "react-error-boundary": "^6.0.0",
58
- "react-layout-kit": "^2.0.1",
59
58
  "react-merge-refs": "^3.0.2",
60
59
  "remark-cjk-friendly": "^1.2.3",
61
60
  "remark-supersub": "^1.0.0",