@lobehub/ui 2.13.0 → 2.13.2

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.
@@ -96,7 +96,7 @@ var Drawer = /*#__PURE__*/memo(function (_ref) {
96
96
  style: _objectSpread({
97
97
  background: theme.colorBgLayout,
98
98
  borderRight: "1px solid ".concat(theme.colorBorderSecondary),
99
- height: '100%',
99
+ height: '100vh',
100
100
  overflowX: 'hidden',
101
101
  overflowY: 'auto',
102
102
  position: 'sticky',
@@ -167,6 +167,7 @@ var Drawer = /*#__PURE__*/memo(function (_ref) {
167
167
  justifySelf: 'center',
168
168
  maxWidth: containerMaxWidth,
169
169
  minHeight: '100%',
170
+ overflow: sidebar ? 'visible' : undefined,
170
171
  width: '100%'
171
172
  }, styles === null || styles === void 0 ? void 0 : styles.bodyContent),
172
173
  children: [noHeader && extraNode, sidebar ? sidebarContent : children]
package/es/Image/Image.js CHANGED
@@ -14,7 +14,7 @@ import { cva } from 'class-variance-authority';
14
14
  import { memo, useMemo } from 'react';
15
15
  import { Flexbox } from 'react-layout-kit';
16
16
  import usePreview from "./components/usePreview";
17
- import { FALLBACK, useStyles } from "./style";
17
+ import { FALLBACK_DARK, FALLBACK_LIGHT, useStyles } from "./style";
18
18
  import { jsx as _jsx } from "react/jsx-runtime";
19
19
  import { jsxs as _jsxs } from "react/jsx-runtime";
20
20
  var Image = /*#__PURE__*/memo(function (_ref) {
@@ -42,12 +42,7 @@ var Image = /*#__PURE__*/memo(function (_ref) {
42
42
  height = _ref.height,
43
43
  rest = _objectWithoutProperties(_ref, _excluded);
44
44
  var _useStyles = useStyles({
45
- alwaysShowActions: alwaysShowActions,
46
- maxHeight: maxHeight,
47
- maxWidth: maxWidth,
48
- minHeight: minHeight,
49
- minWidth: minWidth,
50
- objectFit: objectFit
45
+ alwaysShowActions: alwaysShowActions
51
46
  }),
52
47
  styles = _useStyles.styles,
53
48
  cx = _useStyles.cx,
@@ -94,17 +89,23 @@ var Image = /*#__PURE__*/memo(function (_ref) {
94
89
  className: styles.actions,
95
90
  children: actions
96
91
  }), /*#__PURE__*/_jsx(AntImage, _objectSpread({
97
- className: classNames === null || classNames === void 0 ? void 0 : classNames.image,
98
- fallback: FALLBACK,
92
+ className: cx(styles.image, classNames === null || classNames === void 0 ? void 0 : classNames.image),
93
+ fallback: theme.isDarkMode ? FALLBACK_DARK : FALLBACK_LIGHT,
99
94
  height: height,
100
95
  loading: 'lazy',
101
96
  onClick: onClick,
102
97
  preview: preview === false ? false : _objectSpread({
103
98
  mask: false
104
99
  }, mergePreivew),
105
- style: _objectSpread({}, customStyles === null || customStyles === void 0 ? void 0 : customStyles.image),
100
+ style: _objectSpread({
101
+ maxHeight: maxHeight,
102
+ maxWidth: maxWidth,
103
+ minHeight: minHeight,
104
+ minWidth: minWidth,
105
+ objectFit: objectFit || 'cover'
106
+ }, customStyles === null || customStyles === void 0 ? void 0 : customStyles.image),
106
107
  width: width,
107
- wrapperClassName: cx(styles.image, classNames === null || classNames === void 0 ? void 0 : classNames.wrapper),
108
+ wrapperClassName: cx(styles.wrapper, classNames === null || classNames === void 0 ? void 0 : classNames.wrapper),
108
109
  wrapperStyle: _objectSpread({}, customStyles === null || customStyles === void 0 ? void 0 : customStyles.wrapper)
109
110
  }, rest))]
110
111
  });
@@ -1,10 +1,5 @@
1
1
  export declare const useStyles: (props?: {
2
2
  alwaysShowActions?: boolean | undefined;
3
- maxHeight?: string | number | undefined;
4
- maxWidth?: string | number | undefined;
5
- minHeight?: string | number | undefined;
6
- minWidth?: string | number | undefined;
7
- objectFit?: string | undefined;
8
3
  } | undefined) => import("antd-style").ReturnStyles<{
9
4
  actions: string;
10
5
  borderless: string;
@@ -15,5 +10,7 @@ export declare const useStyles: (props?: {
15
10
  preview: import("antd-style").SerializedStyles;
16
11
  root: import("antd-style").SerializedStyles;
17
12
  toolbar: string;
13
+ wrapper: import("antd-style").SerializedStyles;
18
14
  }>;
19
- export declare const FALLBACK = "data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIGZpbGw9Im5vbmUiIHZpZXdCb3g9IjAgMCA2NDAgNDAwIj48cGF0aCBmaWxsPSIjM0IzQjNCIiBkPSJNMCAwaDY0MHY0MDBIMHoiLz48cGF0aCBzdHJva2U9IiM2MjYyNjIiIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIgc3Ryb2tlLWxpbmVqb2luPSJyb3VuZCIgc3Ryb2tlLXdpZHRoPSIxNSIgZD0iTTM3Mi41IDEzMi41aC0xMDVjLTguMjg0IDAtMTUgNi43MTYtMTUgMTV2MTA1YzAgOC4yODQgNi43MTYgMTUgMTUgMTVoMTA1YzguMjg0IDAgMTUtNi43MTYgMTUtMTV2LTEwNWMwLTguMjg0LTYuNzE2LTE1LTE1LTE1eiIvPjxwYXRoIHN0cm9rZT0iIzYyNjI2MiIgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIiBzdHJva2UtbGluZWpvaW49InJvdW5kIiBzdHJva2Utd2lkdGg9IjE1IiBkPSJNMjk3LjUgMTkyLjVjOC4yODQgMCAxNS02LjcxNiAxNS0xNSAwLTguMjg0LTYuNzE2LTE1LTE1LTE1LTguMjg0IDAtMTUgNi43MTYtMTUgMTUgMCA4LjI4NCA2LjcxNiAxNSAxNSAxNXpNMzg3LjUgMjIyLjUwMmwtMjMuMTQ1LTIzLjE0NWExNS4wMDEgMTUuMDAxIDAgMDAtMjEuMjEgMEwyNzUgMjY3LjUwMiIvPjwvc3ZnPg==";
15
+ export declare const FALLBACK_DARK = "data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMjU2IiBoZWlnaHQ9IjI1NiIgdmlld0JveD0iMCAwIDI1NiAyNTYiIGZpbGw9Im5vbmUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+CjxyZWN0IHdpZHRoPSIyNTYiIGhlaWdodD0iMjU2IiBmaWxsPSIjM0IzQjNCIi8+CjxwYXRoIGQ9Ik0xNTYuODg4IDkxLjAwMkgxMDAuMTEyQzk1LjYzMjkgOTEuMDAyIDkyLjAwMTUgOTQuNjMzNCA5Mi4wMDE1IDk5LjExMjdWMTU1Ljg4OEM5Mi4wMDE1IDE2MC4zNjcgOTUuNjMyOSAxNjMuOTk5IDEwMC4xMTIgMTYzLjk5OUgxNTYuODg4QzE2MS4zNjcgMTYzLjk5OSAxNjQuOTk4IDE2MC4zNjcgMTY0Ljk5OCAxNTUuODg4Vjk5LjExMjdDMTY0Ljk5OCA5NC42MzM0IDE2MS4zNjcgOTEuMDAyIDE1Ni44ODggOTEuMDAyWiIgc3Ryb2tlPSIjNjI2MjYyIiBzdHJva2Utd2lkdGg9IjguMTEwNzciIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIgc3Ryb2tlLWxpbmVqb2luPSJyb3VuZCIvPgo8cGF0aCBkPSJNMTY0Ljk5OCAxMzkuNjY4TDE1Mi40ODQgMTI3LjE1M0MxNTAuOTYyIDEyNS42MzIgMTQ4LjkgMTI0Ljc3OCAxNDYuNzQ5IDEyNC43NzhDMTQ0LjU5OSAxMjQuNzc4IDE0Mi41MzYgMTI1LjYzMiAxNDEuMDE1IDEyNy4xNTNMMTA0LjE2OCAxNjRNMTE2LjMzNCAxMjMuNDQ1QzEyMC44MTMgMTIzLjQ0NSAxMjQuNDQ1IDExOS44MTQgMTI0LjQ0NSAxMTUuMzM0QzEyNC40NDUgMTEwLjg1NSAxMjAuODEzIDEwNy4yMjQgMTE2LjMzNCAxMDcuMjI0QzExMS44NTUgMTA3LjIyNCAxMDguMjIzIDExMC44NTUgMTA4LjIyMyAxMTUuMzM0QzEwOC4yMjMgMTE5LjgxNCAxMTEuODU1IDEyMy40NDUgMTE2LjMzNCAxMjMuNDQ1WiIgc3Ryb2tlPSIjNjI2MjYyIiBzdHJva2Utd2lkdGg9IjguMTEwNzciIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIgc3Ryb2tlLWxpbmVqb2luPSJyb3VuZCIvPgo8L3N2Zz4K";
16
+ export declare const FALLBACK_LIGHT = "data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMjU2IiBoZWlnaHQ9IjI1NiIgdmlld0JveD0iMCAwIDI1NiAyNTYiIGZpbGw9Im5vbmUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+CjxyZWN0IHdpZHRoPSIyNTYiIGhlaWdodD0iMjU2IiBmaWxsPSIjRUNFQ0VDIi8+CjxwYXRoIGQ9Ik0xNTYuODg4IDkxLjAwMkgxMDAuMTEyQzk1LjYzMjkgOTEuMDAyIDkyLjAwMTUgOTQuNjMzNCA5Mi4wMDE1IDk5LjExMjdWMTU1Ljg4OEM5Mi4wMDE1IDE2MC4zNjcgOTUuNjMyOSAxNjMuOTk5IDEwMC4xMTIgMTYzLjk5OUgxNTYuODg4QzE2MS4zNjcgMTYzLjk5OSAxNjQuOTk4IDE2MC4zNjcgMTY0Ljk5OCAxNTUuODg4Vjk5LjExMjdDMTY0Ljk5OCA5NC42MzM0IDE2MS4zNjcgOTEuMDAyIDE1Ni44ODggOTEuMDAyWiIgc3Ryb2tlPSIjRDdEN0Q3IiBzdHJva2Utd2lkdGg9IjguMTEwNzciIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIgc3Ryb2tlLWxpbmVqb2luPSJyb3VuZCIvPgo8cGF0aCBkPSJNMTY0Ljk5OCAxMzkuNjY4TDE1Mi40ODQgMTI3LjE1M0MxNTAuOTYyIDEyNS42MzIgMTQ4LjkgMTI0Ljc3OCAxNDYuNzQ5IDEyNC43NzhDMTQ0LjU5OSAxMjQuNzc4IDE0Mi41MzYgMTI1LjYzMiAxNDEuMDE1IDEyNy4xNTNMMTA0LjE2OCAxNjRNMTE2LjMzNCAxMjMuNDQ1QzEyMC44MTMgMTIzLjQ0NSAxMjQuNDQ1IDExOS44MTQgMTI0LjQ0NSAxMTUuMzM0QzEyNC40NDUgMTEwLjg1NSAxMjAuODEzIDEwNy4yMjQgMTE2LjMzNCAxMDcuMjI0QzExMS44NTUgMTA3LjIyNCAxMDguMjIzIDExMC44NTUgMTA4LjIyMyAxMTUuMzM0QzEwOC4yMjMgMTE5LjgxNCAxMTEuODU1IDEyMy40NDUgMTE2LjMzNCAxMjMuNDQ1WiIgc3Ryb2tlPSIjRDdEN0Q3IiBzdHJva2Utd2lkdGg9IjguMTEwNzciIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIgc3Ryb2tlLWxpbmVqb2luPSJyb3VuZCIvPgo8L3N2Zz4K";
package/es/Image/style.js CHANGED
@@ -1,4 +1,4 @@
1
- var _templateObject, _templateObject2, _templateObject3, _templateObject4, _templateObject5, _templateObject6;
1
+ var _templateObject, _templateObject2, _templateObject3, _templateObject4, _templateObject5, _templateObject6, _templateObject7;
2
2
  function _taggedTemplateLiteral(strings, raw) { if (!raw) { raw = strings.slice(0); } return Object.freeze(Object.defineProperties(strings, { raw: { value: Object.freeze(raw) } })); }
3
3
  import { createStyles } from 'antd-style';
4
4
  import { rgba } from 'polished';
@@ -6,30 +6,22 @@ export var useStyles = createStyles(function (_ref) {
6
6
  var cx = _ref.cx,
7
7
  css = _ref.css,
8
8
  token = _ref.token,
9
- stylish = _ref.stylish,
10
- prefixCls = _ref.prefixCls;
9
+ stylish = _ref.stylish;
11
10
  var _ref2 = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {},
12
- maxHeight = _ref2.maxHeight,
13
- maxWidth = _ref2.maxWidth,
14
- minWidth = _ref2.minWidth,
15
- minHeight = _ref2.minHeight,
16
- alwaysShowActions = _ref2.alwaysShowActions,
17
- objectFit = _ref2.objectFit;
18
- var MAX_HEIGHT = typeof maxHeight === 'number' ? "".concat(maxHeight, "px") : maxHeight;
19
- var MAX_WIDTH = typeof maxWidth === 'number' ? "".concat(maxWidth, "px") : maxWidth;
20
- var MIN_HEIGHT = typeof minHeight === 'number' ? "".concat(minHeight, "px") : minHeight;
21
- var MIN_WIDTH = typeof minWidth === 'number' ? "".concat(minWidth, "px") : minWidth;
11
+ alwaysShowActions = _ref2.alwaysShowActions;
22
12
  var actions = cx(css(_templateObject || (_templateObject = _taggedTemplateLiteral(["\n cursor: pointer;\n\n position: absolute;\n z-index: 1;\n inset-block-start: 0;\n inset-inline-end: 0;\n\n opacity: ", ";\n "])), alwaysShowActions ? 1 : 0));
23
13
  return {
24
14
  actions: actions,
25
15
  borderless: stylish.variantBorderlessWithoutHover,
26
16
  filled: cx(stylish.variantOutlinedWithoutHover, stylish.variantFilledWithoutHover),
27
- image: css(_templateObject2 || (_templateObject2 = _taggedTemplateLiteral(["\n position: relative;\n overflow: hidden;\n max-width: 100%;\n height: auto;\n\n .", "-image-img {\n width: auto;\n min-width: ", ";\n max-width: ", ";\n height: auto;\n min-height: ", ";\n max-height: ", ";\n\n object-fit: ", ";\n }\n "])), prefixCls, MIN_WIDTH, MAX_WIDTH, MIN_HEIGHT, MAX_HEIGHT, objectFit || 'cover'),
17
+ image: css(_templateObject2 || (_templateObject2 = _taggedTemplateLiteral(["\n display: flex;\n align-items: center;\n justify-content: center;\n\n width: auto;\n height: auto;\n "]))),
28
18
  mask: cx(stylish.blur, css(_templateObject3 || (_templateObject3 = _taggedTemplateLiteral(["\n backdrop-filter: blur(8px);\n "])))),
29
19
  outlined: stylish.variantOutlinedWithoutHover,
30
20
  preview: css(_templateObject4 || (_templateObject4 = _taggedTemplateLiteral(["\n img {\n width: 100%;\n }\n "]))),
31
21
  root: css(_templateObject5 || (_templateObject5 = _taggedTemplateLiteral(["\n cursor: pointer;\n user-select: none;\n\n position: relative;\n\n overflow: hidden;\n\n width: fit-content;\n border-radius: ", "px;\n\n line-height: 1;\n\n &:hover {\n .", " {\n opacity: 1;\n }\n }\n "])), token.borderRadius, actions),
32
- toolbar: cx(stylish.blur, stylish.variantOutlinedWithoutHover, css(_templateObject6 || (_templateObject6 = _taggedTemplateLiteral(["\n padding: 4px;\n border-color: ", ";\n border-radius: ", "px;\n background: ", ";\n "])), token.colorFillTertiary, token.borderRadiusLG, rgba(token.colorBgMask, 0.5)))
22
+ toolbar: cx(stylish.blur, stylish.variantOutlinedWithoutHover, css(_templateObject6 || (_templateObject6 = _taggedTemplateLiteral(["\n padding: 4px;\n border-color: ", ";\n border-radius: ", "px;\n background: ", ";\n "])), token.colorFillTertiary, token.borderRadiusLG, rgba(token.colorBgMask, 0.5))),
23
+ wrapper: css(_templateObject7 || (_templateObject7 = _taggedTemplateLiteral(["\n position: relative;\n overflow: hidden;\n max-width: 100%;\n height: auto;\n "])))
33
24
  };
34
25
  });
35
- export var FALLBACK = 'data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIGZpbGw9Im5vbmUiIHZpZXdCb3g9IjAgMCA2NDAgNDAwIj48cGF0aCBmaWxsPSIjM0IzQjNCIiBkPSJNMCAwaDY0MHY0MDBIMHoiLz48cGF0aCBzdHJva2U9IiM2MjYyNjIiIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIgc3Ryb2tlLWxpbmVqb2luPSJyb3VuZCIgc3Ryb2tlLXdpZHRoPSIxNSIgZD0iTTM3Mi41IDEzMi41aC0xMDVjLTguMjg0IDAtMTUgNi43MTYtMTUgMTV2MTA1YzAgOC4yODQgNi43MTYgMTUgMTUgMTVoMTA1YzguMjg0IDAgMTUtNi43MTYgMTUtMTV2LTEwNWMwLTguMjg0LTYuNzE2LTE1LTE1LTE1eiIvPjxwYXRoIHN0cm9rZT0iIzYyNjI2MiIgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIiBzdHJva2UtbGluZWpvaW49InJvdW5kIiBzdHJva2Utd2lkdGg9IjE1IiBkPSJNMjk3LjUgMTkyLjVjOC4yODQgMCAxNS02LjcxNiAxNS0xNSAwLTguMjg0LTYuNzE2LTE1LTE1LTE1LTguMjg0IDAtMTUgNi43MTYtMTUgMTUgMCA4LjI4NCA2LjcxNiAxNSAxNSAxNXpNMzg3LjUgMjIyLjUwMmwtMjMuMTQ1LTIzLjE0NWExNS4wMDEgMTUuMDAxIDAgMDAtMjEuMjEgMEwyNzUgMjY3LjUwMiIvPjwvc3ZnPg==';
26
+ export var FALLBACK_DARK = 'data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMjU2IiBoZWlnaHQ9IjI1NiIgdmlld0JveD0iMCAwIDI1NiAyNTYiIGZpbGw9Im5vbmUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+CjxyZWN0IHdpZHRoPSIyNTYiIGhlaWdodD0iMjU2IiBmaWxsPSIjM0IzQjNCIi8+CjxwYXRoIGQ9Ik0xNTYuODg4IDkxLjAwMkgxMDAuMTEyQzk1LjYzMjkgOTEuMDAyIDkyLjAwMTUgOTQuNjMzNCA5Mi4wMDE1IDk5LjExMjdWMTU1Ljg4OEM5Mi4wMDE1IDE2MC4zNjcgOTUuNjMyOSAxNjMuOTk5IDEwMC4xMTIgMTYzLjk5OUgxNTYuODg4QzE2MS4zNjcgMTYzLjk5OSAxNjQuOTk4IDE2MC4zNjcgMTY0Ljk5OCAxNTUuODg4Vjk5LjExMjdDMTY0Ljk5OCA5NC42MzM0IDE2MS4zNjcgOTEuMDAyIDE1Ni44ODggOTEuMDAyWiIgc3Ryb2tlPSIjNjI2MjYyIiBzdHJva2Utd2lkdGg9IjguMTEwNzciIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIgc3Ryb2tlLWxpbmVqb2luPSJyb3VuZCIvPgo8cGF0aCBkPSJNMTY0Ljk5OCAxMzkuNjY4TDE1Mi40ODQgMTI3LjE1M0MxNTAuOTYyIDEyNS42MzIgMTQ4LjkgMTI0Ljc3OCAxNDYuNzQ5IDEyNC43NzhDMTQ0LjU5OSAxMjQuNzc4IDE0Mi41MzYgMTI1LjYzMiAxNDEuMDE1IDEyNy4xNTNMMTA0LjE2OCAxNjRNMTE2LjMzNCAxMjMuNDQ1QzEyMC44MTMgMTIzLjQ0NSAxMjQuNDQ1IDExOS44MTQgMTI0LjQ0NSAxMTUuMzM0QzEyNC40NDUgMTEwLjg1NSAxMjAuODEzIDEwNy4yMjQgMTE2LjMzNCAxMDcuMjI0QzExMS44NTUgMTA3LjIyNCAxMDguMjIzIDExMC44NTUgMTA4LjIyMyAxMTUuMzM0QzEwOC4yMjMgMTE5LjgxNCAxMTEuODU1IDEyMy40NDUgMTE2LjMzNCAxMjMuNDQ1WiIgc3Ryb2tlPSIjNjI2MjYyIiBzdHJva2Utd2lkdGg9IjguMTEwNzciIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIgc3Ryb2tlLWxpbmVqb2luPSJyb3VuZCIvPgo8L3N2Zz4K';
27
+ export var FALLBACK_LIGHT = 'data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMjU2IiBoZWlnaHQ9IjI1NiIgdmlld0JveD0iMCAwIDI1NiAyNTYiIGZpbGw9Im5vbmUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+CjxyZWN0IHdpZHRoPSIyNTYiIGhlaWdodD0iMjU2IiBmaWxsPSIjRUNFQ0VDIi8+CjxwYXRoIGQ9Ik0xNTYuODg4IDkxLjAwMkgxMDAuMTEyQzk1LjYzMjkgOTEuMDAyIDkyLjAwMTUgOTQuNjMzNCA5Mi4wMDE1IDk5LjExMjdWMTU1Ljg4OEM5Mi4wMDE1IDE2MC4zNjcgOTUuNjMyOSAxNjMuOTk5IDEwMC4xMTIgMTYzLjk5OUgxNTYuODg4QzE2MS4zNjcgMTYzLjk5OSAxNjQuOTk4IDE2MC4zNjcgMTY0Ljk5OCAxNTUuODg4Vjk5LjExMjdDMTY0Ljk5OCA5NC42MzM0IDE2MS4zNjcgOTEuMDAyIDE1Ni44ODggOTEuMDAyWiIgc3Ryb2tlPSIjRDdEN0Q3IiBzdHJva2Utd2lkdGg9IjguMTEwNzciIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIgc3Ryb2tlLWxpbmVqb2luPSJyb3VuZCIvPgo8cGF0aCBkPSJNMTY0Ljk5OCAxMzkuNjY4TDE1Mi40ODQgMTI3LjE1M0MxNTAuOTYyIDEyNS42MzIgMTQ4LjkgMTI0Ljc3OCAxNDYuNzQ5IDEyNC43NzhDMTQ0LjU5OSAxMjQuNzc4IDE0Mi41MzYgMTI1LjYzMiAxNDEuMDE1IDEyNy4xNTNMMTA0LjE2OCAxNjRNMTE2LjMzNCAxMjMuNDQ1QzEyMC44MTMgMTIzLjQ0NSAxMjQuNDQ1IDExOS44MTQgMTI0LjQ0NSAxMTUuMzM0QzEyNC40NDUgMTEwLjg1NSAxMjAuODEzIDEwNy4yMjQgMTE2LjMzNCAxMDcuMjI0QzExMS44NTUgMTA3LjIyNCAxMDguMjIzIDExMC44NTUgMTA4LjIyMyAxMTUuMzM0QzEwOC4yMjMgMTE5LjgxNCAxMTEuODU1IDEyMy40NDUgMTE2LjMzNCAxMjMuNDQ1WiIgc3Ryb2tlPSIjRDdEN0Q3IiBzdHJva2Utd2lkdGg9IjguMTEwNzciIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIgc3Ryb2tlLWxpbmVqb2luPSJyb3VuZCIvPgo8L3N2Zz4K';
@@ -97,7 +97,7 @@ var Markdown = /*#__PURE__*/memo(function (props) {
97
97
  var enableStream = _ref.enableStream,
98
98
  children = _ref.children,
99
99
  reactMarkdownProps = _ref.reactMarkdownProps;
100
- var DefaultRender = enableStream && delayedAnimated ? StreamdownRender : MarkdownRender;
100
+ var DefaultRender = enableStream ? StreamdownRender : MarkdownRender;
101
101
  var defaultDOM = /*#__PURE__*/_jsx(DefaultRender, _objectSpread(_objectSpread({}, reactMarkdownProps), {}, {
102
102
  children: children
103
103
  }));
@@ -140,7 +140,7 @@ var Markdown = /*#__PURE__*/memo(function (props) {
140
140
  showFootnotes: showFootnotes,
141
141
  variant: variant,
142
142
  children: /*#__PURE__*/_jsx(Render, {
143
- enableStream: enableStream,
143
+ enableStream: enableStream && delayedAnimated,
144
144
  reactMarkdownProps: reactMarkdownProps,
145
145
  children: children
146
146
  })
@@ -1,5 +1,13 @@
1
1
  import { renderToString } from 'katex';
2
2
 
3
+ // Helper: replace unescaped pipes with \vert within a LaTeX math fragment
4
+ var replaceUnescapedPipes = function replaceUnescapedPipes(formula) {
5
+ return (
6
+ // Use \vert{} so the control sequence terminates before the next token
7
+ formula.replaceAll(/(?<!\\)\|/g, '\\vert{}')
8
+ );
9
+ };
10
+
3
11
  /**
4
12
  * Converts LaTeX bracket delimiters to dollar sign delimiters.
5
13
  * Converts \[...\] to $$...$$ and \(...\) to $...$
@@ -40,9 +48,16 @@ export function escapeMhchemCommands(text) {
40
48
  * @returns The string with pipe characters escaped in LaTeX expressions
41
49
  */
42
50
  export function escapeLatexPipes(text) {
43
- // According to the failing test, we should not escape pipes in LaTeX expressions
44
- // This function is now a no-op but is kept for backward compatibility
45
- return text;
51
+ // Replace unescaped '|' inside LaTeX math spans with '\vert' so that
52
+ // remark-gfm table parsing won't treat them as column separators.
53
+ // Leave code blocks/inline code untouched.
54
+ var pattern = /(```[\S\s]*?```|`[^\n`]*`)|\$\$([\S\s]*?)\$\$|(?<!\$)\$(?!\$)([\S\s]*?)(?<!\$)\$(?!\$)/g;
55
+ return text.replaceAll(pattern, function (match, code, display, inline) {
56
+ if (code !== undefined) return code; // preserve code fences/inline code
57
+ if (display !== undefined) return "$$".concat(replaceUnescapedPipes(display), "$$");
58
+ if (inline !== undefined) return "$".concat(replaceUnescapedPipes(inline), "$");
59
+ return match;
60
+ });
46
61
  }
47
62
 
48
63
  /**
@@ -9,7 +9,7 @@ function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }
9
9
  import { useMemo, useRef, useState } from 'react';
10
10
  import { useMarkdownContext } from "../../Markdown/components/MarkdownProvider";
11
11
  import { isLastFormulaRenderable } from "./latex";
12
- import { addToCache, contentCache, preprocessContent } from "./utils";
12
+ import { addToCache, contentCache, preprocessMarkdownContent } from "./utils";
13
13
  export var useMarkdownContent = function useMarkdownContent(children) {
14
14
  var _useMarkdownContext = useMarkdownContext(),
15
15
  animated = _useMarkdownContext.animated,
@@ -37,7 +37,7 @@ export var useMarkdownContent = function useMarkdownContent(children) {
37
37
  }
38
38
 
39
39
  // Process new content only if needed
40
- var processedContent = preprocessContent(children, {
40
+ var processedContent = preprocessMarkdownContent(children, {
41
41
  citationsLength: citationsLength,
42
42
  enableCustomFootnotes: enableCustomFootnotes,
43
43
  enableLatex: enableLatex
@@ -13,7 +13,6 @@ import remarkGfm from 'remark-gfm';
13
13
  import remarkMath from 'remark-math';
14
14
  import { useMarkdownContext } from "../../Markdown/components/MarkdownProvider";
15
15
  import { remarkBr } from "../../Markdown/plugins/remarkBr";
16
- import { remarkColor } from "../../Markdown/plugins/remarkColor";
17
16
  import { remarkCustomFootnotes } from "../../Markdown/plugins/remarkCustomFootnotes";
18
17
  import { remarkGfmPlus } from "../../Markdown/plugins/remarkGfmPlus";
19
18
  import { remarkVideo } from "../../Markdown/plugins/remarkVideo";
@@ -29,9 +28,11 @@ export var useMarkdownRemarkPlugins = function useMarkdownRemarkPlugins() {
29
28
  allowHtml = _useMarkdownContext.allowHtml;
30
29
  var isChatMode = variant === 'chat';
31
30
  var memoPlugins = useMemo(function () {
32
- return [remarkCjkFriendly, [remarkGfm, {
31
+ return [remarkCjkFriendly,
32
+ // Parse math before GFM so that '|' inside $...$ isn't treated as a table separator
33
+ enableLatex && remarkMath, [remarkGfm, {
33
34
  singleTilde: false
34
- }], !allowHtml && remarkBr, !allowHtml && remarkGfmPlus, !allowHtml && remarkVideo, remarkColor, enableLatex && remarkMath, enableCustomFootnotes && remarkCustomFootnotes, isChatMode && remarkBreaks].filter(Boolean);
35
+ }], !allowHtml && remarkBr, !allowHtml && remarkGfmPlus, !allowHtml && remarkVideo, enableCustomFootnotes && remarkCustomFootnotes, isChatMode && remarkBreaks].filter(Boolean);
35
36
  }, [allowHtml, isChatMode, enableLatex, enableCustomFootnotes]);
36
37
  return useMemo(function () {
37
38
  return [].concat(_toConsumableArray(remarkPluginsAhead), _toConsumableArray(memoPlugins), _toConsumableArray(remarkPlugins));
@@ -26,5 +26,5 @@ interface PreprocessOptions {
26
26
  enableCustomFootnotes?: boolean;
27
27
  enableLatex?: boolean;
28
28
  }
29
- export declare const preprocessContent: (str: string, { enableCustomFootnotes, enableLatex, citationsLength }?: PreprocessOptions) => string;
29
+ export declare const preprocessMarkdownContent: (str: string, { enableCustomFootnotes, enableLatex, citationsLength }?: PreprocessOptions) => string;
30
30
  export {};
@@ -117,7 +117,7 @@ export var transformCitations = function transformCitations(rawContent) {
117
117
  * Preprocessing options for markdown content
118
118
  */
119
119
 
120
- export var preprocessContent = function preprocessContent(str) {
120
+ export var preprocessMarkdownContent = function preprocessMarkdownContent(str) {
121
121
  var _ref = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {},
122
122
  enableCustomFootnotes = _ref.enableCustomFootnotes,
123
123
  enableLatex = _ref.enableLatex,
package/es/index.d.ts CHANGED
@@ -29,6 +29,7 @@ export { default as GroupAvatar, type GroupAvatarProps } from './GroupAvatar';
29
29
  export { default as GuideCard, type GuideCardProps } from './GuideCard';
30
30
  export { default as Header, type HeaderProps } from './Header';
31
31
  export { default as Highlighter, type HighlighterProps, highlighterThemes, SyntaxHighlighter, type SyntaxHighlighterProps, } from './Highlighter';
32
+ export { preprocessMarkdownContent } from './hooks/useMarkdown/utils';
32
33
  export { combineKeys, default as Hotkey, type HotkeyProps, KeyMapEnum } from './Hotkey';
33
34
  export { default as HotkeyInput, type HotkeyInputProps } from './HotkeyInput';
34
35
  export { default as Icon, type IconProps, IconProvider, type IconSize } from './Icon';
@@ -39,6 +40,14 @@ export { default as Layout, LayoutFooter, type LayoutFooterProps, LayoutHeader,
39
40
  export { default as List, ListItem, type ListItemProps, type ListProps } from './List';
40
41
  export { default as Markdown, type MarkdownProps, Typography, type TypographyProps, } from './Markdown';
41
42
  export { default as SearchResultCards, type SearchResultCardsProps, } from './Markdown/components/SearchResultCards';
43
+ export { rehypeCustomFootnotes } from './Markdown/plugins/rehypeCustomFootnotes';
44
+ export { rehypeKatexDir } from './Markdown/plugins/rehypeKatexDir';
45
+ export { rehypeStreamAnimated } from './Markdown/plugins/rehypeStreamAnimated';
46
+ export { remarkBr } from './Markdown/plugins/remarkBr';
47
+ export { remarkColor } from './Markdown/plugins/remarkColor';
48
+ export { remarkCustomFootnotes } from './Markdown/plugins/remarkCustomFootnotes';
49
+ export { remarkGfmPlus } from './Markdown/plugins/remarkGfmPlus';
50
+ export { remarkVideo } from './Markdown/plugins/remarkVideo';
42
51
  export { default as MaskShadow, type MaskShadowProps } from './MaskShadow';
43
52
  export { default as MaterialFileTypeIcon, type MaterialFileTypeIconProps, } from './MaterialFileTypeIcon';
44
53
  export { type ItemType, default as Menu, type MenuInfo, type MenuItemType, type MenuProps, } from './Menu';
package/es/index.js CHANGED
@@ -29,6 +29,7 @@ export { default as GroupAvatar } from "./GroupAvatar";
29
29
  export { default as GuideCard } from "./GuideCard";
30
30
  export { default as Header } from "./Header";
31
31
  export { default as Highlighter, highlighterThemes, SyntaxHighlighter } from "./Highlighter";
32
+ export { preprocessMarkdownContent } from "./hooks/useMarkdown/utils";
32
33
  export { combineKeys, default as Hotkey, KeyMapEnum } from "./Hotkey";
33
34
  export { default as HotkeyInput } from "./HotkeyInput";
34
35
  export { default as Icon, IconProvider } from "./Icon";
@@ -39,6 +40,14 @@ export { default as Layout, LayoutFooter, LayoutHeader, LayoutMain, LayoutSideba
39
40
  export { default as List, ListItem } from "./List";
40
41
  export { default as Markdown, Typography } from "./Markdown";
41
42
  export { default as SearchResultCards } from "./Markdown/components/SearchResultCards";
43
+ export { rehypeCustomFootnotes } from "./Markdown/plugins/rehypeCustomFootnotes";
44
+ export { rehypeKatexDir } from "./Markdown/plugins/rehypeKatexDir";
45
+ export { rehypeStreamAnimated } from "./Markdown/plugins/rehypeStreamAnimated";
46
+ export { remarkBr } from "./Markdown/plugins/remarkBr";
47
+ export { remarkColor } from "./Markdown/plugins/remarkColor";
48
+ export { remarkCustomFootnotes } from "./Markdown/plugins/remarkCustomFootnotes";
49
+ export { remarkGfmPlus } from "./Markdown/plugins/remarkGfmPlus";
50
+ export { remarkVideo } from "./Markdown/plugins/remarkVideo";
42
51
  export { default as MaskShadow } from "./MaskShadow";
43
52
  export { default as MaterialFileTypeIcon } from "./MaterialFileTypeIcon";
44
53
  export { default as Menu } from "./Menu";
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@lobehub/ui",
3
- "version": "2.13.0",
3
+ "version": "2.13.2",
4
4
  "description": "Lobe UI is an open-source UI component library for building AIGC web apps",
5
5
  "keywords": [
6
6
  "lobehub",
@@ -52,33 +52,33 @@
52
52
  "@dnd-kit/utilities": "^3.2.2",
53
53
  "@emoji-mart/data": "^1.2.1",
54
54
  "@emoji-mart/react": "^1.1.1",
55
- "@floating-ui/react": "^0.27.14",
55
+ "@floating-ui/react": "^0.27.16",
56
56
  "@giscus/react": "^3.1.0",
57
57
  "@lobehub/fluent-emoji": "^2.0.0",
58
- "@lobehub/icons": "^2.19.0",
59
- "@mdx-js/mdx": "^3.1.0",
60
- "@mdx-js/react": "^3.1.0",
58
+ "@lobehub/icons": "^2.33.0",
59
+ "@mdx-js/mdx": "^3.1.1",
60
+ "@mdx-js/react": "^3.1.1",
61
61
  "@radix-ui/react-slot": "^1.2.3",
62
- "@shikijs/transformers": "^3.8.1",
62
+ "@shikijs/transformers": "^3.12.2",
63
63
  "@splinetool/runtime": "0.9.526",
64
- "ahooks": "^3.9.0",
64
+ "ahooks": "^3.9.5",
65
65
  "antd-style": "^3.7.1",
66
66
  "chroma-js": "^3.1.2",
67
67
  "class-variance-authority": "^0.7.1",
68
- "dayjs": "^1.11.13",
68
+ "dayjs": "^1.11.18",
69
69
  "emoji-mart": "^5.6.0",
70
70
  "fast-deep-equal": "^3.1.3",
71
- "framer-motion": "^12.23.11",
72
- "immer": "^10.1.1",
71
+ "framer-motion": "^12.23.13",
72
+ "immer": "^10.1.3",
73
73
  "katex": "^0.16.22",
74
74
  "leva": "^0.10.0",
75
75
  "lodash-es": "^4.17.21",
76
76
  "lucide-react": "^0.543.0",
77
- "marked": "^16.2.0",
78
- "mermaid": "^11.9.0",
77
+ "marked": "^16.3.0",
78
+ "mermaid": "^11.11.0",
79
79
  "numeral": "^2.0.6",
80
80
  "polished": "^4.3.1",
81
- "query-string": "^9.2.2",
81
+ "query-string": "^9.3.0",
82
82
  "rc-collapse": "^4.0.0",
83
83
  "rc-footer": "^0.6.8",
84
84
  "rc-image": "^7.12.0",
@@ -100,9 +100,9 @@
100
100
  "remark-gfm": "^4.0.1",
101
101
  "remark-github": "^12.0.0",
102
102
  "remark-math": "^6.0.0",
103
- "shiki": "^3.8.1",
104
- "swr": "^2.3.4",
105
- "ts-md5": "^2.0.0",
103
+ "shiki": "^3.12.2",
104
+ "swr": "^2.3.6",
105
+ "ts-md5": "^2.0.1",
106
106
  "unified": "^11.0.5",
107
107
  "url-join": "^5.0.0",
108
108
  "use-merge-value": "^1.2.0",