@ant-design/agentic-ui 2.29.7 → 2.29.8

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 (83) hide show
  1. package/dist/ChatLayout/components/FooterBackgroundLottie/index.js +1 -1
  2. package/dist/MarkdownEditor/BaseMarkdownEditor.js +1 -1
  3. package/dist/MarkdownEditor/editor/elements/Blockquote/ReadonlyBlockquote.d.ts +33 -0
  4. package/dist/MarkdownEditor/editor/elements/Blockquote/ReadonlyBlockquote.js +69 -0
  5. package/dist/MarkdownEditor/editor/elements/Break/ReadonlyBreak.d.ts +30 -0
  6. package/dist/MarkdownEditor/editor/elements/Break/ReadonlyBreak.js +88 -0
  7. package/dist/MarkdownEditor/editor/elements/Card/ReadonlyCard.d.ts +34 -0
  8. package/dist/MarkdownEditor/editor/elements/Card/ReadonlyCard.js +96 -0
  9. package/dist/MarkdownEditor/editor/elements/Code/ReadonlyCode.d.ts +33 -0
  10. package/dist/MarkdownEditor/editor/elements/Code/ReadonlyCode.js +145 -0
  11. package/dist/MarkdownEditor/editor/elements/FootnoteDefinition/ReadonlyFootnoteDefinition.d.ts +34 -0
  12. package/dist/MarkdownEditor/editor/elements/FootnoteDefinition/ReadonlyFootnoteDefinition.js +125 -0
  13. package/dist/MarkdownEditor/editor/elements/FootnoteReference/ReadonlyFootnoteReference.d.ts +34 -0
  14. package/dist/MarkdownEditor/editor/elements/FootnoteReference/ReadonlyFootnoteReference.js +101 -0
  15. package/dist/MarkdownEditor/editor/elements/Head/ReadonlyHead.d.ts +35 -0
  16. package/dist/MarkdownEditor/editor/elements/Head/ReadonlyHead.js +111 -0
  17. package/dist/MarkdownEditor/editor/elements/Head/index.d.ts +3 -0
  18. package/dist/MarkdownEditor/editor/elements/Head/index.js +3 -1
  19. package/dist/MarkdownEditor/editor/elements/Hr/ReadonlyHr.d.ts +30 -0
  20. package/dist/MarkdownEditor/editor/elements/Hr/ReadonlyHr.js +95 -0
  21. package/dist/MarkdownEditor/editor/elements/Image/ReadonlyEditorImage.d.ts +35 -0
  22. package/dist/MarkdownEditor/editor/elements/Image/ReadonlyEditorImage.js +426 -0
  23. package/dist/MarkdownEditor/editor/elements/Image/index.js +38 -50
  24. package/dist/MarkdownEditor/editor/elements/InlineKatex/ReadonlyInlineKatex.d.ts +32 -0
  25. package/dist/MarkdownEditor/editor/elements/InlineKatex/ReadonlyInlineKatex.js +100 -0
  26. package/dist/MarkdownEditor/editor/elements/Katex/ReadonlyKatex.d.ts +32 -0
  27. package/dist/MarkdownEditor/editor/elements/Katex/ReadonlyKatex.js +110 -0
  28. package/dist/MarkdownEditor/editor/elements/LinkCard/ReadonlyLinkCard.d.ts +40 -0
  29. package/dist/MarkdownEditor/editor/elements/LinkCard/ReadonlyLinkCard.js +215 -0
  30. package/dist/MarkdownEditor/editor/elements/List/List.js +27 -12
  31. package/dist/MarkdownEditor/editor/elements/List/ReadonlyList.d.ts +33 -0
  32. package/dist/MarkdownEditor/editor/elements/List/ReadonlyList.js +93 -0
  33. package/dist/MarkdownEditor/editor/elements/List/ReadonlyListItem.d.ts +35 -0
  34. package/dist/MarkdownEditor/editor/elements/List/ReadonlyListItem.js +138 -0
  35. package/dist/MarkdownEditor/editor/elements/Media/ReadonlyMedia.d.ts +36 -0
  36. package/dist/MarkdownEditor/editor/elements/Media/ReadonlyMedia.js +600 -0
  37. package/dist/MarkdownEditor/editor/elements/Mermaid/ReadonlyMermaid.d.ts +32 -0
  38. package/dist/MarkdownEditor/editor/elements/Mermaid/ReadonlyMermaid.js +101 -0
  39. package/dist/MarkdownEditor/editor/elements/Paragraph/ReadonlyParagraph.d.ts +35 -0
  40. package/dist/MarkdownEditor/editor/elements/Paragraph/ReadonlyParagraph.js +109 -0
  41. package/dist/MarkdownEditor/editor/elements/Paragraph/index.js +2 -1
  42. package/dist/MarkdownEditor/editor/elements/Schema/ReadonlySchema.d.ts +33 -0
  43. package/dist/MarkdownEditor/editor/elements/Schema/ReadonlySchema.js +163 -0
  44. package/dist/MarkdownEditor/editor/elements/index.d.ts +20 -1
  45. package/dist/MarkdownEditor/editor/elements/index.js +65 -29
  46. package/dist/MarkdownEditor/editor/parser/parse/parseBlockElements.js +18 -10
  47. package/dist/MarkdownEditor/editor/parser/parserSlateNodeToMarkdown.js +64 -21
  48. package/dist/MarkdownEditor/editor/plugins/elements.js +60 -6
  49. package/dist/MarkdownEditor/editor/plugins/hotKeyCommands/backspace.js +97 -39
  50. package/dist/MarkdownEditor/editor/plugins/hotKeyCommands/tab.d.ts +14 -0
  51. package/dist/MarkdownEditor/editor/plugins/hotKeyCommands/tab.js +117 -90
  52. package/dist/MarkdownEditor/editor/plugins/index.d.ts +8 -0
  53. package/dist/MarkdownEditor/editor/plugins/index.js +8 -0
  54. package/dist/MarkdownEditor/editor/plugins/insertParsedHtmlNodes.d.ts +12 -6
  55. package/dist/MarkdownEditor/editor/plugins/insertParsedHtmlNodes.js +67 -42
  56. package/dist/MarkdownEditor/editor/plugins/utils.d.ts +31 -0
  57. package/dist/MarkdownEditor/editor/plugins/utils.js +75 -0
  58. package/dist/MarkdownEditor/editor/plugins/withCardPlugin.d.ts +15 -0
  59. package/dist/MarkdownEditor/editor/plugins/withCardPlugin.js +329 -0
  60. package/dist/MarkdownEditor/editor/plugins/withCodeTagPlugin.d.ts +11 -0
  61. package/dist/MarkdownEditor/editor/plugins/withCodeTagPlugin.js +299 -0
  62. package/dist/MarkdownEditor/editor/plugins/withInlineNodes.d.ts +12 -0
  63. package/dist/MarkdownEditor/editor/plugins/withInlineNodes.js +17 -0
  64. package/dist/MarkdownEditor/editor/plugins/withLinkAndMediaPlugin.d.ts +11 -0
  65. package/dist/MarkdownEditor/editor/plugins/withLinkAndMediaPlugin.js +70 -0
  66. package/dist/MarkdownEditor/editor/plugins/withListsPlugin.d.ts +23 -0
  67. package/dist/MarkdownEditor/editor/plugins/withListsPlugin.js +204 -0
  68. package/dist/MarkdownEditor/editor/plugins/withMarkdown.d.ts +9 -12
  69. package/dist/MarkdownEditor/editor/plugins/withMarkdown.js +17 -764
  70. package/dist/MarkdownEditor/editor/plugins/withSchemaPlugin.d.ts +11 -0
  71. package/dist/MarkdownEditor/editor/plugins/withSchemaPlugin.js +55 -0
  72. package/dist/MarkdownEditor/editor/plugins/withVoidNodes.d.ts +12 -0
  73. package/dist/MarkdownEditor/editor/plugins/withVoidNodes.js +17 -0
  74. package/dist/MarkdownEditor/editor/store.js +1 -1
  75. package/dist/MarkdownEditor/editor/utils/docx/module.js +41 -8
  76. package/dist/MarkdownEditor/editor/utils/editorCommands.d.ts +97 -0
  77. package/dist/MarkdownEditor/editor/utils/editorCommands.js +966 -0
  78. package/dist/MarkdownEditor/editor/utils/editorUtils.js +2 -2
  79. package/dist/MarkdownEditor/editor/utils/keyboard.js +15 -391
  80. package/dist/MarkdownEditor/el.d.ts +12 -5
  81. package/dist/MarkdownInputField/MarkdownInputField.js +10 -23
  82. package/dist/MarkdownInputField/style.js +9 -4
  83. package/package.json +8 -8
@@ -0,0 +1,426 @@
1
+ function _array_like_to_array(arr, len) {
2
+ if (len == null || len > arr.length) len = arr.length;
3
+ for(var i = 0, arr2 = new Array(len); i < len; i++)arr2[i] = arr[i];
4
+ return arr2;
5
+ }
6
+ function _array_with_holes(arr) {
7
+ if (Array.isArray(arr)) return arr;
8
+ }
9
+ function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) {
10
+ try {
11
+ var info = gen[key](arg);
12
+ var value = info.value;
13
+ } catch (error) {
14
+ reject(error);
15
+ return;
16
+ }
17
+ if (info.done) {
18
+ resolve(value);
19
+ } else {
20
+ Promise.resolve(value).then(_next, _throw);
21
+ }
22
+ }
23
+ function _async_to_generator(fn) {
24
+ return function() {
25
+ var self = this, args = arguments;
26
+ return new Promise(function(resolve, reject) {
27
+ var gen = fn.apply(self, args);
28
+ function _next(value) {
29
+ asyncGeneratorStep(gen, resolve, reject, _next, _throw, "next", value);
30
+ }
31
+ function _throw(err) {
32
+ asyncGeneratorStep(gen, resolve, reject, _next, _throw, "throw", err);
33
+ }
34
+ _next(undefined);
35
+ });
36
+ };
37
+ }
38
+ function _define_property(obj, key, value) {
39
+ if (key in obj) {
40
+ Object.defineProperty(obj, key, {
41
+ value: value,
42
+ enumerable: true,
43
+ configurable: true,
44
+ writable: true
45
+ });
46
+ } else {
47
+ obj[key] = value;
48
+ }
49
+ return obj;
50
+ }
51
+ function _iterable_to_array_limit(arr, i) {
52
+ var _i = arr == null ? null : typeof Symbol !== "undefined" && arr[Symbol.iterator] || arr["@@iterator"];
53
+ if (_i == null) return;
54
+ var _arr = [];
55
+ var _n = true;
56
+ var _d = false;
57
+ var _s, _e;
58
+ try {
59
+ for(_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true){
60
+ _arr.push(_s.value);
61
+ if (i && _arr.length === i) break;
62
+ }
63
+ } catch (err) {
64
+ _d = true;
65
+ _e = err;
66
+ } finally{
67
+ try {
68
+ if (!_n && _i["return"] != null) _i["return"]();
69
+ } finally{
70
+ if (_d) throw _e;
71
+ }
72
+ }
73
+ return _arr;
74
+ }
75
+ function _non_iterable_rest() {
76
+ throw new TypeError("Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.");
77
+ }
78
+ function _object_spread(target) {
79
+ for(var i = 1; i < arguments.length; i++){
80
+ var source = arguments[i] != null ? arguments[i] : {};
81
+ var ownKeys = Object.keys(source);
82
+ if (typeof Object.getOwnPropertySymbols === "function") {
83
+ ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function(sym) {
84
+ return Object.getOwnPropertyDescriptor(source, sym).enumerable;
85
+ }));
86
+ }
87
+ ownKeys.forEach(function(key) {
88
+ _define_property(target, key, source[key]);
89
+ });
90
+ }
91
+ return target;
92
+ }
93
+ function ownKeys(object, enumerableOnly) {
94
+ var keys = Object.keys(object);
95
+ if (Object.getOwnPropertySymbols) {
96
+ var symbols = Object.getOwnPropertySymbols(object);
97
+ if (enumerableOnly) {
98
+ symbols = symbols.filter(function(sym) {
99
+ return Object.getOwnPropertyDescriptor(object, sym).enumerable;
100
+ });
101
+ }
102
+ keys.push.apply(keys, symbols);
103
+ }
104
+ return keys;
105
+ }
106
+ function _object_spread_props(target, source) {
107
+ source = source != null ? source : {};
108
+ if (Object.getOwnPropertyDescriptors) {
109
+ Object.defineProperties(target, Object.getOwnPropertyDescriptors(source));
110
+ } else {
111
+ ownKeys(Object(source)).forEach(function(key) {
112
+ Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));
113
+ });
114
+ }
115
+ return target;
116
+ }
117
+ function _sliced_to_array(arr, i) {
118
+ return _array_with_holes(arr) || _iterable_to_array_limit(arr, i) || _unsupported_iterable_to_array(arr, i) || _non_iterable_rest();
119
+ }
120
+ function _unsupported_iterable_to_array(o, minLen) {
121
+ if (!o) return;
122
+ if (typeof o === "string") return _array_like_to_array(o, minLen);
123
+ var n = Object.prototype.toString.call(o).slice(8, -1);
124
+ if (n === "Object" && o.constructor) n = o.constructor.name;
125
+ if (n === "Map" || n === "Set") return Array.from(n);
126
+ if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _array_like_to_array(o, minLen);
127
+ }
128
+ function _ts_generator(thisArg, body) {
129
+ var f, y, t, _ = {
130
+ label: 0,
131
+ sent: function() {
132
+ if (t[0] & 1) throw t[1];
133
+ return t[1];
134
+ },
135
+ trys: [],
136
+ ops: []
137
+ }, g = Object.create((typeof Iterator === "function" ? Iterator : Object).prototype), d = Object.defineProperty;
138
+ return d(g, "next", {
139
+ value: verb(0)
140
+ }), d(g, "throw", {
141
+ value: verb(1)
142
+ }), d(g, "return", {
143
+ value: verb(2)
144
+ }), typeof Symbol === "function" && d(g, Symbol.iterator, {
145
+ value: function() {
146
+ return this;
147
+ }
148
+ }), g;
149
+ function verb(n) {
150
+ return function(v) {
151
+ return step([
152
+ n,
153
+ v
154
+ ]);
155
+ };
156
+ }
157
+ function step(op) {
158
+ if (f) throw new TypeError("Generator is already executing.");
159
+ while(g && (g = 0, op[0] && (_ = 0)), _)try {
160
+ if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
161
+ if (y = 0, t) op = [
162
+ op[0] & 2,
163
+ t.value
164
+ ];
165
+ switch(op[0]){
166
+ case 0:
167
+ case 1:
168
+ t = op;
169
+ break;
170
+ case 4:
171
+ _.label++;
172
+ return {
173
+ value: op[1],
174
+ done: false
175
+ };
176
+ case 5:
177
+ _.label++;
178
+ y = op[1];
179
+ op = [
180
+ 0
181
+ ];
182
+ continue;
183
+ case 7:
184
+ op = _.ops.pop();
185
+ _.trys.pop();
186
+ continue;
187
+ default:
188
+ if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) {
189
+ _ = 0;
190
+ continue;
191
+ }
192
+ if (op[0] === 3 && (!t || op[1] > t[0] && op[1] < t[3])) {
193
+ _.label = op[1];
194
+ break;
195
+ }
196
+ if (op[0] === 6 && _.label < t[1]) {
197
+ _.label = t[1];
198
+ t = op;
199
+ break;
200
+ }
201
+ if (t && _.label < t[2]) {
202
+ _.label = t[2];
203
+ _.ops.push(op);
204
+ break;
205
+ }
206
+ if (t[2]) _.ops.pop();
207
+ _.trys.pop();
208
+ continue;
209
+ }
210
+ op = body.call(thisArg, _);
211
+ } catch (e) {
212
+ op = [
213
+ 6,
214
+ e
215
+ ];
216
+ y = 0;
217
+ } finally{
218
+ f = t = 0;
219
+ }
220
+ if (op[0] & 5) throw op[1];
221
+ return {
222
+ value: op[0] ? op[1] : void 0,
223
+ done: true
224
+ };
225
+ }
226
+ }
227
+ import { Skeleton } from "antd";
228
+ import React, { useEffect, useLayoutEffect, useState } from "react";
229
+ import { useRefFunction } from "../../../../Hooks/useRefFunction";
230
+ import { MediaErrorLink } from "../../components/MediaErrorLink";
231
+ import { useGetSetState } from "../../utils";
232
+ import { getMediaType } from "../../utils/dom";
233
+ import { ReadonlyImage } from "./index";
234
+ /**
235
+ * ReadonlyEditorImage 组件 - 只读图片预览组件
236
+ *
237
+ * 专门针对 readonly 模式优化的图片组件,移除了调整大小、选择等编辑相关功能。
238
+ * 简化渲染逻辑,提升预览模式性能。
239
+ *
240
+ * @component
241
+ * @description 只读图片预览组件,用于预览模式下的图片渲染
242
+ * @param {ElementProps<MediaNode>} props - 组件属性
243
+ * @param {MediaNode} props.element - 图片节点元素
244
+ * @param {React.ReactNode} props.children - 子组件内容
245
+ * @param {Object} props.attributes - 元素属性
246
+ *
247
+ * @example
248
+ * ```tsx
249
+ * <ReadonlyEditorImage
250
+ * element={imageNode}
251
+ * attributes={attributes}
252
+ * >
253
+ * 内容
254
+ * </ReadonlyEditorImage>
255
+ * ```
256
+ *
257
+ * @returns {React.ReactElement} 渲染的只读图片组件
258
+ *
259
+ * @remarks
260
+ * - 移除调整大小功能
261
+ * - 移除选择状态管理
262
+ * - 保留加载状态和错误处理
263
+ * - 使用 React.memo 优化性能
264
+ * - 保持预览模式的视觉效果
265
+ */ export var ReadonlyEditorImage = /*#__PURE__*/ React.memo(function(props) {
266
+ var _state;
267
+ var element = props.element, attributes = props.attributes, children = props.children;
268
+ var htmlRef = React.useRef(null);
269
+ var _useState = _sliced_to_array(useState(false), 2), showAsText = _useState[0], setShowAsText = _useState[1];
270
+ var _useGetSetState = _sliced_to_array(useGetSetState({
271
+ loadSuccess: true,
272
+ url: '',
273
+ type: getMediaType(element === null || element === void 0 ? void 0 : element.url, element.alt)
274
+ }), 2), state = _useGetSetState[0], setState = _useGetSetState[1];
275
+ // 如果 finished 为 false,设置 5 秒超时,超时后显示为文本
276
+ useEffect(function() {
277
+ if (element.finished === false) {
278
+ setShowAsText(false);
279
+ var timer = setTimeout(function() {
280
+ setShowAsText(true);
281
+ }, 5000);
282
+ return function() {
283
+ clearTimeout(timer);
284
+ };
285
+ } else {
286
+ setShowAsText(false);
287
+ }
288
+ }, [
289
+ element.finished
290
+ ]);
291
+ var initial = useRefFunction(function() {
292
+ return _async_to_generator(function() {
293
+ var type, realUrl, img;
294
+ return _ts_generator(this, function(_state) {
295
+ type = getMediaType(element === null || element === void 0 ? void 0 : element.url, element.alt);
296
+ type = !type ? 'image' : type;
297
+ setState({
298
+ type: [
299
+ 'image',
300
+ 'video',
301
+ 'autio',
302
+ 'attachment'
303
+ ].includes(type) ? type : 'other'
304
+ });
305
+ realUrl = element === null || element === void 0 ? void 0 : element.url;
306
+ setState({
307
+ url: realUrl
308
+ });
309
+ if (state().type === 'image' || state().type === 'other') {
310
+ img = document.createElement('img');
311
+ img.referrerPolicy = 'no-referrer';
312
+ img.crossOrigin = 'anonymous';
313
+ img.src = realUrl;
314
+ img.onerror = function() {
315
+ setState({
316
+ loadSuccess: false
317
+ });
318
+ };
319
+ img.onload = function() {
320
+ setState({
321
+ loadSuccess: true
322
+ });
323
+ };
324
+ }
325
+ return [
326
+ 2
327
+ ];
328
+ });
329
+ })();
330
+ });
331
+ useLayoutEffect(function() {
332
+ initial();
333
+ }, [
334
+ element === null || element === void 0 ? void 0 : element.url,
335
+ initial
336
+ ]);
337
+ // 图片预览 DOM
338
+ var imageDom = React.useMemo(function() {
339
+ var _state;
340
+ // 检查是否为不完整的图片(finished 状态)
341
+ if (element.finished === false) {
342
+ // 如果 5 秒后仍未完成,显示为文本
343
+ if (showAsText) {
344
+ return /*#__PURE__*/ React.createElement("div", {
345
+ style: {
346
+ padding: '8px 12px',
347
+ border: '1px solid #d9d9d9',
348
+ borderRadius: '4px',
349
+ color: 'rgba(0, 0, 0, 0.65)',
350
+ wordBreak: 'break-all'
351
+ }
352
+ }, element.alt || element.url || '图片链接');
353
+ }
354
+ // 5 秒内显示 loading 状态的占位符
355
+ return /*#__PURE__*/ React.createElement(Skeleton.Image, {
356
+ active: true
357
+ });
358
+ }
359
+ // 如果图片加载失败,显示为链接
360
+ if (!state().loadSuccess) {
361
+ var _state1, _state2;
362
+ return /*#__PURE__*/ React.createElement(MediaErrorLink, {
363
+ url: (_state1 = state()) === null || _state1 === void 0 ? void 0 : _state1.url,
364
+ fallbackUrl: element === null || element === void 0 ? void 0 : element.url,
365
+ displayText: (element === null || element === void 0 ? void 0 : element.alt) || ((_state2 = state()) === null || _state2 === void 0 ? void 0 : _state2.url) || (element === null || element === void 0 ? void 0 : element.url) || '图片链接',
366
+ style: {
367
+ fontSize: '13px',
368
+ lineHeight: '1.5'
369
+ }
370
+ });
371
+ }
372
+ return /*#__PURE__*/ React.createElement(ReadonlyImage, {
373
+ src: ((_state = state()) === null || _state === void 0 ? void 0 : _state.url) || (element === null || element === void 0 ? void 0 : element.url),
374
+ alt: (element === null || element === void 0 ? void 0 : element.alt) || 'image',
375
+ width: element.width,
376
+ height: element.height,
377
+ crossOrigin: "anonymous"
378
+ });
379
+ }, [
380
+ state().type,
381
+ (_state = state()) === null || _state === void 0 ? void 0 : _state.url,
382
+ state().loadSuccess,
383
+ element.finished,
384
+ showAsText,
385
+ element.url,
386
+ element.alt,
387
+ element.width,
388
+ element.height
389
+ ]);
390
+ return /*#__PURE__*/ React.createElement("div", _object_spread_props(_object_spread({}, attributes), {
391
+ "data-be": "image",
392
+ "data-testid": "image-container",
393
+ style: {
394
+ position: 'relative',
395
+ userSelect: 'none',
396
+ WebkitUserSelect: 'none',
397
+ MozUserSelect: 'none',
398
+ msUserSelect: 'none',
399
+ width: '100%',
400
+ maxWidth: '100%',
401
+ boxSizing: 'border-box'
402
+ },
403
+ draggable: false
404
+ }), /*#__PURE__*/ React.createElement("div", {
405
+ tabIndex: -1,
406
+ style: {
407
+ color: 'transparent',
408
+ padding: 4,
409
+ userSelect: 'none',
410
+ display: 'flex',
411
+ flexDirection: 'column',
412
+ width: imageDom ? '100%' : undefined,
413
+ maxWidth: '100%',
414
+ boxSizing: 'border-box'
415
+ },
416
+ ref: htmlRef,
417
+ draggable: false,
418
+ contentEditable: false,
419
+ "data-be": "image-container"
420
+ }, imageDom, /*#__PURE__*/ React.createElement("div", {
421
+ style: {
422
+ display: 'none'
423
+ }
424
+ }, children)));
425
+ });
426
+ ReadonlyEditorImage.displayName = 'ReadonlyEditorImage';
@@ -466,7 +466,7 @@ export function EditorImage(param) {
466
466
  });
467
467
  // eslint-disable-next-line @typescript-eslint/no-unused-vars
468
468
  var _useSelStatus = _sliced_to_array(useSelStatus(element), 2), _ = _useSelStatus[0], path = _useSelStatus[1];
469
- var _useEditorStore = useEditorStore(), markdownEditorRef = _useEditorStore.markdownEditorRef, readonly = _useEditorStore.readonly;
469
+ var markdownEditorRef = useEditorStore().markdownEditorRef;
470
470
  var htmlRef = React.useRef(null);
471
471
  var _useState = _sliced_to_array(useState(false), 2), showAsText = _useState[0], setShowAsText = _useState[1];
472
472
  var _useGetSetState = _sliced_to_array(useGetSetState({
@@ -561,11 +561,11 @@ export function EditorImage(param) {
561
561
  element.finished
562
562
  ]);
563
563
  var imageDom = useMemo(function() {
564
+ var _state;
564
565
  debugInfo('EditorImage - 生成图片 DOM', {
565
566
  finished: element.finished,
566
567
  showAsText: showAsText,
567
- loadSuccess: state().loadSuccess,
568
- readonly: readonly
568
+ loadSuccess: state().loadSuccess
569
569
  });
570
570
  // 检查是否为不完整的图片(finished 状态)
571
571
  if (element.finished === false) {
@@ -590,64 +590,52 @@ export function EditorImage(param) {
590
590
  }
591
591
  // 如果图片加载失败,显示为链接
592
592
  if (!state().loadSuccess) {
593
- var _state, _state1;
593
+ var _state1, _state2;
594
594
  debugInfo('EditorImage - 显示错误链接');
595
595
  return /*#__PURE__*/ React.createElement(MediaErrorLink, {
596
- url: (_state = state()) === null || _state === void 0 ? void 0 : _state.url,
596
+ url: (_state1 = state()) === null || _state1 === void 0 ? void 0 : _state1.url,
597
597
  fallbackUrl: element === null || element === void 0 ? void 0 : element.url,
598
- displayText: (element === null || element === void 0 ? void 0 : element.alt) || ((_state1 = state()) === null || _state1 === void 0 ? void 0 : _state1.url) || (element === null || element === void 0 ? void 0 : element.url) || '图片链接',
598
+ displayText: (element === null || element === void 0 ? void 0 : element.alt) || ((_state2 = state()) === null || _state2 === void 0 ? void 0 : _state2.url) || (element === null || element === void 0 ? void 0 : element.url) || '图片链接',
599
599
  style: {
600
600
  fontSize: '13px',
601
601
  lineHeight: '1.5'
602
602
  }
603
603
  });
604
604
  }
605
- return !readonly ? function() {
606
- var _state;
607
- debugInfo('EditorImage - 使用可调整大小的图片', {
608
- width: element.width,
609
- height: element.height
610
- });
611
- return /*#__PURE__*/ React.createElement(ResizeImage, {
612
- defaultSize: {
613
- width: Number(element.width) || element.width || 400,
614
- height: Number(element.height) || 400
615
- },
616
- selected: state().selected,
617
- src: (_state = state()) === null || _state === void 0 ? void 0 : _state.url,
618
- onResizeStart: function() {
619
- debugInfo('EditorImage - 开始调整大小');
620
- setState({
621
- selected: true
622
- });
623
- },
624
- onResizeStop: function(size) {
625
- debugInfo('EditorImage - 调整大小完成', {
626
- size: size
627
- });
628
- if (!(markdownEditorRef === null || markdownEditorRef === void 0 ? void 0 : markdownEditorRef.current)) return;
629
- Transforms.setNodes(markdownEditorRef.current, size, {
630
- at: path
631
- });
632
- setState({
633
- selected: false
634
- });
635
- }
636
- });
637
- }() : function() {
638
- var _state;
639
- debugInfo('EditorImage - 使用只读图片');
640
- return /*#__PURE__*/ React.createElement(ReadonlyImage, {
641
- src: ((_state = state()) === null || _state === void 0 ? void 0 : _state.url) || (element === null || element === void 0 ? void 0 : element.url),
642
- alt: (element === null || element === void 0 ? void 0 : element.alt) || 'image',
643
- width: element.width,
644
- height: element.height
645
- });
646
- }();
605
+ // 编辑模式:使用可调整大小的图片
606
+ debugInfo('EditorImage - 使用可调整大小的图片', {
607
+ width: element.width,
608
+ height: element.height
609
+ });
610
+ return /*#__PURE__*/ React.createElement(ResizeImage, {
611
+ defaultSize: {
612
+ width: Number(element.width) || element.width || 400,
613
+ height: Number(element.height) || 400
614
+ },
615
+ selected: state().selected,
616
+ src: (_state = state()) === null || _state === void 0 ? void 0 : _state.url,
617
+ onResizeStart: function() {
618
+ debugInfo('EditorImage - 开始调整大小');
619
+ setState({
620
+ selected: true
621
+ });
622
+ },
623
+ onResizeStop: function(size) {
624
+ debugInfo('EditorImage - 调整大小完成', {
625
+ size: size
626
+ });
627
+ if (!(markdownEditorRef === null || markdownEditorRef === void 0 ? void 0 : markdownEditorRef.current)) return;
628
+ Transforms.setNodes(markdownEditorRef.current, size, {
629
+ at: path
630
+ });
631
+ setState({
632
+ selected: false
633
+ });
634
+ }
635
+ });
647
636
  }, [
648
637
  state().type,
649
638
  (_state = state()) === null || _state === void 0 ? void 0 : _state.url,
650
- readonly,
651
639
  state().selected,
652
640
  state().loadSuccess,
653
641
  element.finished,
@@ -688,7 +676,7 @@ export function EditorImage(param) {
688
676
  }
689
677
  },
690
678
  trigger: "hover",
691
- open: state().selected && !readonly ? undefined : false,
679
+ open: state().selected ? undefined : false,
692
680
  content: /*#__PURE__*/ React.createElement(Space, null, /*#__PURE__*/ React.createElement(ActionIconBox, {
693
681
  title: (locale === null || locale === void 0 ? void 0 : locale.delete) || '删除',
694
682
  type: "danger",
@@ -0,0 +1,32 @@
1
+ import React from 'react';
2
+ import { RenderElementProps } from 'slate-react';
3
+ /**
4
+ * ReadonlyInlineKatex 组件 - 只读行内数学公式预览组件
5
+ *
6
+ * 专门针对 readonly 模式优化的行内数学公式组件。
7
+ * 简化渲染逻辑,提升预览模式性能。
8
+ *
9
+ * @component
10
+ * @description 只读行内数学公式预览组件,用于预览模式下的行内数学公式渲染
11
+ * @param {RenderElementProps} props - 组件属性
12
+ * @param {any} props.element - 行内数学公式节点元素
13
+ * @param {React.ReactNode} props.children - 子组件内容
14
+ * @param {Object} props.attributes - 元素属性
15
+ *
16
+ * @example
17
+ * ```tsx
18
+ * <ReadonlyInlineKatex
19
+ * element={inlineKatexNode}
20
+ * attributes={attributes}
21
+ * >
22
+ * 公式内容
23
+ * </ReadonlyInlineKatex>
24
+ * ```
25
+ *
26
+ * @returns {React.ReactElement} 渲染的只读行内数学公式组件
27
+ *
28
+ * @remarks
29
+ * - 使用 React.memo 优化性能
30
+ * - 保持预览模式的视觉效果
31
+ */
32
+ export declare const ReadonlyInlineKatex: React.FC<RenderElementProps>;
@@ -0,0 +1,100 @@
1
+ function _define_property(obj, key, value) {
2
+ if (key in obj) {
3
+ Object.defineProperty(obj, key, {
4
+ value: value,
5
+ enumerable: true,
6
+ configurable: true,
7
+ writable: true
8
+ });
9
+ } else {
10
+ obj[key] = value;
11
+ }
12
+ return obj;
13
+ }
14
+ function _object_spread(target) {
15
+ for(var i = 1; i < arguments.length; i++){
16
+ var source = arguments[i] != null ? arguments[i] : {};
17
+ var ownKeys = Object.keys(source);
18
+ if (typeof Object.getOwnPropertySymbols === "function") {
19
+ ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function(sym) {
20
+ return Object.getOwnPropertyDescriptor(source, sym).enumerable;
21
+ }));
22
+ }
23
+ ownKeys.forEach(function(key) {
24
+ _define_property(target, key, source[key]);
25
+ });
26
+ }
27
+ return target;
28
+ }
29
+ function ownKeys(object, enumerableOnly) {
30
+ var keys = Object.keys(object);
31
+ if (Object.getOwnPropertySymbols) {
32
+ var symbols = Object.getOwnPropertySymbols(object);
33
+ if (enumerableOnly) {
34
+ symbols = symbols.filter(function(sym) {
35
+ return Object.getOwnPropertyDescriptor(object, sym).enumerable;
36
+ });
37
+ }
38
+ keys.push.apply(keys, symbols);
39
+ }
40
+ return keys;
41
+ }
42
+ function _object_spread_props(target, source) {
43
+ source = source != null ? source : {};
44
+ if (Object.getOwnPropertyDescriptors) {
45
+ Object.defineProperties(target, Object.getOwnPropertyDescriptors(source));
46
+ } else {
47
+ ownKeys(Object(source)).forEach(function(key) {
48
+ Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));
49
+ });
50
+ }
51
+ return target;
52
+ }
53
+ import React from "react";
54
+ import { debugInfo } from "../../../../Utils/debugUtils";
55
+ /**
56
+ * ReadonlyInlineKatex 组件 - 只读行内数学公式预览组件
57
+ *
58
+ * 专门针对 readonly 模式优化的行内数学公式组件。
59
+ * 简化渲染逻辑,提升预览模式性能。
60
+ *
61
+ * @component
62
+ * @description 只读行内数学公式预览组件,用于预览模式下的行内数学公式渲染
63
+ * @param {RenderElementProps} props - 组件属性
64
+ * @param {any} props.element - 行内数学公式节点元素
65
+ * @param {React.ReactNode} props.children - 子组件内容
66
+ * @param {Object} props.attributes - 元素属性
67
+ *
68
+ * @example
69
+ * ```tsx
70
+ * <ReadonlyInlineKatex
71
+ * element={inlineKatexNode}
72
+ * attributes={attributes}
73
+ * >
74
+ * 公式内容
75
+ * </ReadonlyInlineKatex>
76
+ * ```
77
+ *
78
+ * @returns {React.ReactElement} 渲染的只读行内数学公式组件
79
+ *
80
+ * @remarks
81
+ * - 使用 React.memo 优化性能
82
+ * - 保持预览模式的视觉效果
83
+ */ export var ReadonlyInlineKatex = /*#__PURE__*/ React.memo(function(param) {
84
+ var attributes = param.attributes, children = param.children, element = param.element;
85
+ var _element_value;
86
+ debugInfo('ReadonlyInlineKatex - 渲染只读行内数学公式', {
87
+ valueLength: element === null || element === void 0 ? void 0 : (_element_value = element.value) === null || _element_value === void 0 ? void 0 : _element_value.length
88
+ });
89
+ return /*#__PURE__*/ React.createElement("code", _object_spread_props(_object_spread({}, attributes), {
90
+ style: {
91
+ background: 'rgb(242, 241, 241)',
92
+ color: 'rgb(27, 27, 27)',
93
+ padding: '0.2em 0.4em',
94
+ borderRadius: '0.25em',
95
+ fontSize: '0.9em',
96
+ fontFamily: 'monospace'
97
+ }
98
+ }), element.value, children);
99
+ });
100
+ ReadonlyInlineKatex.displayName = 'ReadonlyInlineKatex';