@easyv/biz-components 1.0.6 → 1.0.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.
@@ -1,5 +1,5 @@
1
- var reactIs = { exports: {} };
1
+ var coWebWorker = { exports: {} };
2
2
  export {
3
- reactIs as __module
3
+ coWebWorker as __module
4
4
  };
5
5
  //# sourceMappingURL=index.es4.js.map
@@ -1,5 +1,5 @@
1
- var coWebWorker = { exports: {} };
1
+ var reactIs = { exports: {} };
2
2
  export {
3
- coWebWorker as __module
3
+ reactIs as __module
4
4
  };
5
5
  //# sourceMappingURL=index.es5.js.map
@@ -1,9 +1,10 @@
1
1
  import { j as jsxRuntimeExports } from "../../node_modules/.pnpm/react@18.2.0/node_modules/react/jsx-runtime.es.js";
2
- import { forwardRef, useRef, useState, useImperativeHandle } from "react";
2
+ import { forwardRef, useRef, useState, useMemo, useImperativeHandle } from "react";
3
3
  import useLatest from "../../node_modules/.pnpm/ahooks@3.8.5_react@18.2.0/node_modules/ahooks/es/useLatest/index.es.js";
4
4
  import useMemoizedFn from "../../node_modules/.pnpm/ahooks@3.8.5_react@18.2.0/node_modules/ahooks/es/useMemoizedFn/index.es.js";
5
5
  import classNames from "../../node_modules/.pnpm/classnames@2.5.1/node_modules/classnames/index.es.js";
6
6
  /* empty css */
7
+ import { ErrorBoundary } from "../error-boundary/error-boundary.es.js";
7
8
  import { useInitialized } from "../../hooks/use-initialized.es.js";
8
9
  import { useWatchValue } from "../../hooks/use-watch-value/use-watch-value.es.js";
9
10
  function EasyvMonacoEditorCpn(props, ref) {
@@ -11,7 +12,7 @@ function EasyvMonacoEditorCpn(props, ref) {
11
12
  className,
12
13
  style,
13
14
  languageMode,
14
- code,
15
+ code: propsCode,
15
16
  monacoEditorOptions,
16
17
  globalVarType = "",
17
18
  monaco,
@@ -38,6 +39,12 @@ function EasyvMonacoEditorCpn(props, ref) {
38
39
  const onFocusRef = useLatest(propsOnFocus);
39
40
  const onBlurRef = useLatest(propsOnBlur);
40
41
  const onEditorMountedRef = useLatest(propsOnEditorMounted);
42
+ const code = useMemo(() => {
43
+ if (typeof propsCode === "string") {
44
+ return propsCode;
45
+ }
46
+ return "";
47
+ }, [propsCode]);
41
48
  const formatFn = async () => {
42
49
  var _a, _b, _c;
43
50
  try {
@@ -228,7 +235,11 @@ function EasyvMonacoEditorCpn(props, ref) {
228
235
  }
229
236
  ) });
230
237
  }
231
- const EasyvMonacoEditor = forwardRef(EasyvMonacoEditorCpn);
238
+ const EasyvMonacoEditorWithRef = forwardRef(EasyvMonacoEditorCpn);
239
+ const EasyvMonacoEditorCpnWithError = (props, ref) => {
240
+ return /* @__PURE__ */ jsxRuntimeExports.jsx(ErrorBoundary, { children: /* @__PURE__ */ jsxRuntimeExports.jsx(EasyvMonacoEditorWithRef, { ...props, ref }) });
241
+ };
242
+ const EasyvMonacoEditor = forwardRef(EasyvMonacoEditorCpnWithError);
232
243
  export {
233
244
  EasyvMonacoEditor
234
245
  };
@@ -1 +1 @@
1
- {"version":3,"file":"easyv-monaco-editor.es.js","sources":["../../../src/components/easyv-monaco-editor/easyv-monaco-editor.tsx"],"sourcesContent":["import React, { forwardRef, Ref, useImperativeHandle, useRef, useState } from 'react';\nimport { useLatest, useMemoizedFn } from 'ahooks';\nimport classNames from 'classnames';\nimport type * as monacoType from 'monaco-editor/esm/vs/editor/editor.api';\nimport { useInitialized, useWatchValue } from '@/hooks';\nimport { EasyvMonacoEditorProps, EasyvMonacoEditorRef } from './types';\nimport './index.less';\n\nfunction EasyvMonacoEditorCpn(props: EasyvMonacoEditorProps, ref: Ref<EasyvMonacoEditorRef>) {\n const {\n className,\n style,\n languageMode,\n code,\n monacoEditorOptions,\n globalVarType = '',\n monaco,\n onChange: propsOnChange,\n onCodeMark: propsOnCodeMark,\n onFocus: propsOnFocus,\n onBlur: propsOnBlur,\n formatOnBlur,\n ignoreErrorCodes,\n initJSCompilerOptions,\n constructionOptions,\n customTheme,\n onEditorMounted: propsOnEditorMounted,\n globalVarTypeName = 'default',\n isDomEnv = true,\n onError,\n } = props;\n const editorRef = useRef<HTMLDivElement | null>(null);\n const editorInstanceRef = useRef<monacoType.editor.IStandaloneCodeEditor>();\n const globalDataLibRef = useRef<monacoType.IDisposable>();\n const [isFocus, setIsFocus] = useState(false);\n\n const onChangeRef = useLatest(propsOnChange);\n const onCodeMarkRef = useLatest(propsOnCodeMark);\n const onFocusRef = useLatest(propsOnFocus);\n const onBlurRef = useLatest(propsOnBlur);\n const onEditorMountedRef = useLatest(propsOnEditorMounted);\n\n const formatFn = async () => {\n try {\n await editorInstanceRef.current?.getAction('editor.action.formatDocument')?.run();\n return editorInstanceRef.current?.getValue();\n } catch (error) {\n onError?.(error as Error);\n }\n };\n\n useImperativeHandle(ref, () => {\n return {\n editor: editorInstanceRef.current,\n format: formatFn,\n };\n });\n\n const initFn = useMemoizedFn(() => {\n // 配置 JavaScript 语言服务\n monaco.languages.typescript.javascriptDefaults.setCompilerOptions({\n target: monaco.languages.typescript.ScriptTarget.ESNext,\n allowNonTsExtensions: true,\n allowJs: true,\n checkJs: true, // 关键:启用 JS 校验\n noLib: false,\n lib: isDomEnv ? ['esnext', 'dom'] : ['esnext'], // dom 会带上浏览器里可使用的方法 如 console, window\n typeRoots: ['node_modules/@types'],\n ...initJSCompilerOptions,\n });\n\n monaco.languages.typescript.javascriptDefaults.setDiagnosticsOptions({\n noSemanticValidation: false, // 启用语义校验\n noSyntaxValidation: false, // 启用语法校验\n diagnosticCodesToIgnore: ignoreErrorCodes ?? [], // 忽略特定错误\n });\n\n if (editorRef.current) {\n editorInstanceRef.current = monaco.editor.create(editorRef.current, {\n value: code,\n language: languageMode,\n theme: 'vs-dark',\n automaticLayout: true,\n minimap: {\n enabled: false,\n },\n // 启用智能提示的关键设置\n suggest: {\n showKeywords: true, // 关键字建议\n showSnippets: true, // 代码片段建议\n },\n quickSuggestions: true, // 在输入时自动显示建议列表\n suggestOnTriggerCharacters: true, // 当输入触发字符(如点号.)时自动显示建议\n hover: { enabled: true }, // 必须启用 hover\n renderValidationDecorations: 'on', // 确保错误渲染开启\n ...constructionOptions,\n });\n if (!editorInstanceRef.current) {\n return;\n }\n onEditorMountedRef.current?.(editorInstanceRef.current);\n editorInstanceRef.current.onDidChangeModelContent(() => {\n const currentValue = editorInstanceRef.current!.getValue();\n // 更新状态\n onChangeRef.current?.(currentValue);\n });\n\n // 监听诊断变化\n monaco.editor.onDidChangeMarkers(() => {\n const markers = monaco.editor.getModelMarkers({});\n onCodeMarkRef.current?.(markers);\n });\n }\n // 添加聚焦焦事件监听\n const focusDisposable = editorInstanceRef.current!.onDidFocusEditorText(() => {\n setIsFocus(true);\n onFocusRef.current?.();\n });\n // 添加失焦事件监听\n const blurDisposable = editorInstanceRef.current!.onDidBlurEditorText(async () => {\n setIsFocus(false);\n if (formatOnBlur) {\n const currentValue = await formatFn();\n onBlurRef.current?.(currentValue || '');\n } else {\n const currentValue = editorInstanceRef.current!.getValue();\n onBlurRef.current?.(currentValue);\n }\n });\n return () => {\n focusDisposable.dispose();\n blurDisposable.dispose();\n editorInstanceRef.current?.dispose();\n globalDataLibRef.current?.dispose();\n };\n });\n\n useInitialized(initFn);\n\n useWatchValue({\n value: code,\n callback: () => {\n if (editorInstanceRef.current) {\n // 获取当前编辑器的值\n const currentValue = editorInstanceRef.current.getValue();\n // 如果状态中的value和编辑器的当前值不同,则更新编辑器\n if (currentValue !== code) {\n editorInstanceRef.current.setValue(code);\n }\n }\n },\n });\n\n useWatchValue({\n value: languageMode,\n callback(newLanguage) {\n const model = editorInstanceRef.current?.getModel();\n if (!model) {\n return;\n }\n monaco.editor.setModelLanguage(model, newLanguage);\n },\n });\n\n useWatchValue({\n value: { monacoEditorOptions, isFocus },\n callback: () => {\n editorInstanceRef.current?.updateOptions({\n wordWrap: 'on',\n /** 让下面不显示空白区域 */\n scrollBeyondLastLine: false,\n tabSize: 2,\n ...monacoEditorOptions,\n scrollbar: {\n // 默认让聚焦时,内部滚动,失焦时不滚动\n handleMouseWheel: isFocus ? true : false,\n ...monacoEditorOptions?.scrollbar,\n },\n });\n },\n options: { immediate: true },\n });\n\n const addGlobalType = () => {\n if (languageMode !== 'javascript') {\n return;\n }\n globalDataLibRef.current = monaco.languages.typescript.javascriptDefaults.addExtraLib(\n globalVarType,\n `global-${globalVarTypeName}.d.ts`,\n );\n };\n useWatchValue({\n value: globalVarType,\n callback() {\n addGlobalType();\n },\n options: {\n immediate: true,\n },\n });\n\n useWatchValue({\n value: customTheme,\n callback() {\n if (!customTheme) {\n return;\n }\n const themeName = 'customTheme';\n monaco.editor.defineTheme(themeName, customTheme);\n monaco.editor.setTheme(themeName);\n },\n options: {\n immediate: true,\n },\n });\n\n return (\n <div className='biz-components-dom' style={{ display: 'contents' }}>\n <div\n ref={editorRef}\n className={classNames('easyv-monaco-editor', className)}\n style={{\n border: '1px solid #393b4a',\n width: '100%',\n height: '100%',\n ...style,\n }}\n />\n </div>\n );\n}\n\nexport const EasyvMonacoEditor = forwardRef(EasyvMonacoEditorCpn);\n"],"names":["_a","jsx"],"mappings":"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"}
1
+ {"version":3,"file":"easyv-monaco-editor.es.js","sources":["../../../src/components/easyv-monaco-editor/easyv-monaco-editor.tsx"],"sourcesContent":["import React, { forwardRef, Ref, useImperativeHandle, useMemo, useRef, useState } from 'react';\nimport { useLatest, useMemoizedFn } from 'ahooks';\nimport classNames from 'classnames';\nimport type * as monacoType from 'monaco-editor/esm/vs/editor/editor.api';\nimport { useInitialized, useWatchValue } from '@/hooks';\nimport { EasyvMonacoEditorProps, EasyvMonacoEditorRef } from './types';\nimport './index.less';\nimport { ErrorBoundary } from '../error-boundary/error-boundary';\n\nfunction EasyvMonacoEditorCpn(props: EasyvMonacoEditorProps, ref: Ref<EasyvMonacoEditorRef>) {\n const {\n className,\n style,\n languageMode,\n code: propsCode,\n monacoEditorOptions,\n globalVarType = '',\n monaco,\n onChange: propsOnChange,\n onCodeMark: propsOnCodeMark,\n onFocus: propsOnFocus,\n onBlur: propsOnBlur,\n formatOnBlur,\n ignoreErrorCodes,\n initJSCompilerOptions,\n constructionOptions,\n customTheme,\n onEditorMounted: propsOnEditorMounted,\n globalVarTypeName = 'default',\n isDomEnv = true,\n onError,\n } = props;\n const editorRef = useRef<HTMLDivElement | null>(null);\n const editorInstanceRef = useRef<monacoType.editor.IStandaloneCodeEditor>();\n const globalDataLibRef = useRef<monacoType.IDisposable>();\n const [isFocus, setIsFocus] = useState(false);\n\n const onChangeRef = useLatest(propsOnChange);\n const onCodeMarkRef = useLatest(propsOnCodeMark);\n const onFocusRef = useLatest(propsOnFocus);\n const onBlurRef = useLatest(propsOnBlur);\n const onEditorMountedRef = useLatest(propsOnEditorMounted);\n const code = useMemo(() => {\n if (typeof propsCode === 'string') {\n return propsCode;\n }\n return '';\n }, [propsCode]);\n\n const formatFn = async () => {\n try {\n await editorInstanceRef.current?.getAction('editor.action.formatDocument')?.run();\n return editorInstanceRef.current?.getValue();\n } catch (error) {\n onError?.(error as Error);\n }\n };\n\n useImperativeHandle(ref, () => {\n return {\n editor: editorInstanceRef.current,\n format: formatFn,\n };\n });\n\n const initFn = useMemoizedFn(() => {\n // 配置 JavaScript 语言服务\n monaco.languages.typescript.javascriptDefaults.setCompilerOptions({\n target: monaco.languages.typescript.ScriptTarget.ESNext,\n allowNonTsExtensions: true,\n allowJs: true,\n checkJs: true, // 关键:启用 JS 校验\n noLib: false,\n lib: isDomEnv ? ['esnext', 'dom'] : ['esnext'], // dom 会带上浏览器里可使用的方法 如 console, window\n typeRoots: ['node_modules/@types'],\n ...initJSCompilerOptions,\n });\n\n monaco.languages.typescript.javascriptDefaults.setDiagnosticsOptions({\n noSemanticValidation: false, // 启用语义校验\n noSyntaxValidation: false, // 启用语法校验\n diagnosticCodesToIgnore: ignoreErrorCodes ?? [], // 忽略特定错误\n });\n\n if (editorRef.current) {\n editorInstanceRef.current = monaco.editor.create(editorRef.current, {\n value: code,\n language: languageMode,\n theme: 'vs-dark',\n automaticLayout: true,\n minimap: {\n enabled: false,\n },\n // 启用智能提示的关键设置\n suggest: {\n showKeywords: true, // 关键字建议\n showSnippets: true, // 代码片段建议\n },\n quickSuggestions: true, // 在输入时自动显示建议列表\n suggestOnTriggerCharacters: true, // 当输入触发字符(如点号.)时自动显示建议\n hover: { enabled: true }, // 必须启用 hover\n renderValidationDecorations: 'on', // 确保错误渲染开启\n ...constructionOptions,\n });\n if (!editorInstanceRef.current) {\n return;\n }\n onEditorMountedRef.current?.(editorInstanceRef.current);\n editorInstanceRef.current.onDidChangeModelContent(() => {\n const currentValue = editorInstanceRef.current!.getValue();\n // 更新状态\n onChangeRef.current?.(currentValue);\n });\n\n // 监听诊断变化\n monaco.editor.onDidChangeMarkers(() => {\n const markers = monaco.editor.getModelMarkers({});\n onCodeMarkRef.current?.(markers);\n });\n }\n // 添加聚焦焦事件监听\n const focusDisposable = editorInstanceRef.current!.onDidFocusEditorText(() => {\n setIsFocus(true);\n onFocusRef.current?.();\n });\n // 添加失焦事件监听\n const blurDisposable = editorInstanceRef.current!.onDidBlurEditorText(async () => {\n setIsFocus(false);\n if (formatOnBlur) {\n const currentValue = await formatFn();\n onBlurRef.current?.(currentValue || '');\n } else {\n const currentValue = editorInstanceRef.current!.getValue();\n onBlurRef.current?.(currentValue);\n }\n });\n return () => {\n focusDisposable.dispose();\n blurDisposable.dispose();\n editorInstanceRef.current?.dispose();\n globalDataLibRef.current?.dispose();\n };\n });\n\n useInitialized(initFn);\n\n useWatchValue({\n value: code,\n callback: () => {\n if (editorInstanceRef.current) {\n // 获取当前编辑器的值\n const currentValue = editorInstanceRef.current.getValue();\n // 如果状态中的value和编辑器的当前值不同,则更新编辑器\n if (currentValue !== code) {\n editorInstanceRef.current.setValue(code);\n }\n }\n },\n });\n\n useWatchValue({\n value: languageMode,\n callback(newLanguage) {\n const model = editorInstanceRef.current?.getModel();\n if (!model) {\n return;\n }\n monaco.editor.setModelLanguage(model, newLanguage);\n },\n });\n\n useWatchValue({\n value: { monacoEditorOptions, isFocus },\n callback: () => {\n editorInstanceRef.current?.updateOptions({\n wordWrap: 'on',\n /** 让下面不显示空白区域 */\n scrollBeyondLastLine: false,\n tabSize: 2,\n ...monacoEditorOptions,\n scrollbar: {\n // 默认让聚焦时,内部滚动,失焦时不滚动\n handleMouseWheel: isFocus ? true : false,\n ...monacoEditorOptions?.scrollbar,\n },\n });\n },\n options: { immediate: true },\n });\n\n const addGlobalType = () => {\n if (languageMode !== 'javascript') {\n return;\n }\n globalDataLibRef.current = monaco.languages.typescript.javascriptDefaults.addExtraLib(\n globalVarType,\n `global-${globalVarTypeName}.d.ts`,\n );\n };\n useWatchValue({\n value: globalVarType,\n callback() {\n addGlobalType();\n },\n options: {\n immediate: true,\n },\n });\n\n useWatchValue({\n value: customTheme,\n callback() {\n if (!customTheme) {\n return;\n }\n const themeName = 'customTheme';\n monaco.editor.defineTheme(themeName, customTheme);\n monaco.editor.setTheme(themeName);\n },\n options: {\n immediate: true,\n },\n });\n\n return (\n <div className='biz-components-dom' style={{ display: 'contents' }}>\n <div\n ref={editorRef}\n className={classNames('easyv-monaco-editor', className)}\n style={{\n border: '1px solid #393b4a',\n width: '100%',\n height: '100%',\n ...style,\n }}\n />\n </div>\n );\n}\n\nconst EasyvMonacoEditorWithRef = forwardRef(EasyvMonacoEditorCpn);\n\nconst EasyvMonacoEditorCpnWithError = (\n props: EasyvMonacoEditorProps,\n ref: Ref<EasyvMonacoEditorRef>,\n) => {\n return (\n <ErrorBoundary>\n <EasyvMonacoEditorWithRef {...props} ref={ref} />\n </ErrorBoundary>\n );\n};\n\nexport const EasyvMonacoEditor = forwardRef(EasyvMonacoEditorCpnWithError);\n"],"names":["_a","jsx"],"mappings":"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"}
@@ -3,16 +3,6 @@ export interface EasyvMonacoEditorProps {
3
3
  className?: string;
4
4
  style?: React.CSSProperties;
5
5
  languageMode: 'javascript' | 'json' | 'sql';
6
- /** 编辑器配置项
7
- - theme: 主题名称 ('vs', 'vs-dark', 'hc-black' 或自定义主题)
8
- - fontSize: 字体大小
9
- - fontFamily: 字体
10
- - lineNumbers: 行号显示 ('on', 'off', 'relative' 等)
11
- - wordWrap: 自动换行 ('on', 'off', 'wordWrapColumn' 等)
12
- - minimap: 缩略图配置
13
- - renderWhitespace: 空白字符显示
14
- - tabSize: 制表符大小
15
- */
16
6
  code: string;
17
7
  onChange?: (v: string) => void;
18
8
  /** 定义 monaco-editor 的类型文件。如:
@@ -77,6 +67,16 @@ export interface EasyvMonacoEditorProps {
77
67
  initJSCompilerOptions?: monacoType.languages.typescript.CompilerOptions;
78
68
  /** 新建 monaco-editor 时,传入的配置选项,具体选项可查看类型, 大部分的配置 可以通过传递 monacoEditorOptions 来更新 */
79
69
  constructionOptions?: Parameters<typeof monacoType.editor.create>[1];
70
+ /** 编辑器配置项
71
+ - theme: 主题名称 ('vs', 'vs-dark', 'hc-black' 或自定义主题)
72
+ - fontSize: 字体大小
73
+ - fontFamily: 字体
74
+ - lineNumbers: 行号显示 ('on', 'off', 'relative' 等)
75
+ - wordWrap: 自动换行 ('on', 'off', 'wordWrapColumn' 等)
76
+ - minimap: 缩略图配置
77
+ - renderWhitespace: 空白字符显示
78
+ - tabSize: 制表符大小
79
+ */
80
80
  monacoEditorOptions?: monacoType.editor.IEditorOptions & monacoType.editor.IGlobalEditorOptions;
81
81
  customTheme?: monacoType.editor.IStandaloneThemeData;
82
82
  onEditorMounted?: (editor: monacoType.editor.IStandaloneCodeEditor) => void;
@@ -0,0 +1,19 @@
1
+ import { Component, ErrorInfo, ReactNode } from 'react';
2
+
3
+ interface ErrorBoundaryProps {
4
+ children: ReactNode;
5
+ fallback?: ReactNode | ((error: Error, errorInfo: ErrorInfo) => ReactNode);
6
+ onError?: (error: Error, errorInfo: ErrorInfo) => void;
7
+ }
8
+ interface ErrorBoundaryState {
9
+ hasError: boolean;
10
+ error?: Error;
11
+ errorInfo?: ErrorInfo;
12
+ }
13
+ export declare class ErrorBoundary extends Component<ErrorBoundaryProps, ErrorBoundaryState> {
14
+ state: ErrorBoundaryState;
15
+ static getDerivedStateFromError(error: Error): Partial<ErrorBoundaryState>;
16
+ componentDidCatch(error: Error, errorInfo: ErrorInfo): void;
17
+ render(): ReactNode;
18
+ }
19
+ export {};
@@ -0,0 +1,41 @@
1
+ var __defProp = Object.defineProperty;
2
+ var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
3
+ var __publicField = (obj, key, value) => __defNormalProp(obj, typeof key !== "symbol" ? key + "" : key, value);
4
+ import { j as jsxRuntimeExports } from "../../node_modules/.pnpm/react@18.2.0/node_modules/react/jsx-runtime.es.js";
5
+ import { Component } from "react";
6
+ class ErrorBoundary extends Component {
7
+ constructor() {
8
+ super(...arguments);
9
+ __publicField(this, "state", {
10
+ hasError: false
11
+ });
12
+ }
13
+ static getDerivedStateFromError(error) {
14
+ return { hasError: true, error };
15
+ }
16
+ componentDidCatch(error, errorInfo) {
17
+ this.setState({ errorInfo });
18
+ console.error("Error caught by ErrorBoundary:", error, errorInfo);
19
+ if (this.props.onError) {
20
+ this.props.onError(error, errorInfo);
21
+ }
22
+ }
23
+ render() {
24
+ const { hasError, error, errorInfo } = this.state;
25
+ const { children, fallback } = this.props;
26
+ if (hasError) {
27
+ if (fallback) {
28
+ return typeof fallback === "function" ? fallback(error, errorInfo) : fallback;
29
+ }
30
+ return /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { style: { padding: "16px", color: "#ff4d4f", border: "1px solid #ff4d4f" }, children: [
31
+ /* @__PURE__ */ jsxRuntimeExports.jsx("h3", { children: "Something went wrong" }),
32
+ error && /* @__PURE__ */ jsxRuntimeExports.jsx("p", { children: error.message })
33
+ ] });
34
+ }
35
+ return children;
36
+ }
37
+ }
38
+ export {
39
+ ErrorBoundary
40
+ };
41
+ //# sourceMappingURL=error-boundary.es.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"error-boundary.es.js","sources":["../../../src/components/error-boundary/error-boundary.tsx"],"sourcesContent":["import React, { Component, ErrorInfo, ReactNode } from 'react';\n\ninterface ErrorBoundaryProps {\n children: ReactNode;\n fallback?: ReactNode | ((error: Error, errorInfo: ErrorInfo) => ReactNode);\n onError?: (error: Error, errorInfo: ErrorInfo) => void;\n}\n\ninterface ErrorBoundaryState {\n hasError: boolean;\n error?: Error;\n errorInfo?: ErrorInfo;\n}\n\nexport class ErrorBoundary extends Component<ErrorBoundaryProps, ErrorBoundaryState> {\n state: ErrorBoundaryState = {\n hasError: false,\n };\n\n static getDerivedStateFromError(error: Error): Partial<ErrorBoundaryState> {\n return { hasError: true, error };\n }\n\n componentDidCatch(error: Error, errorInfo: ErrorInfo): void {\n this.setState({ errorInfo });\n console.error('Error caught by ErrorBoundary:', error, errorInfo);\n\n // 调用自定义的错误处理回调\n if (this.props.onError) {\n this.props.onError(error, errorInfo);\n }\n }\n\n render(): ReactNode {\n const { hasError, error, errorInfo } = this.state;\n const { children, fallback } = this.props;\n\n if (hasError) {\n // 渲染自定义的 fallback UI\n if (fallback) {\n return typeof fallback === 'function' ? fallback(error!, errorInfo!) : fallback;\n }\n\n // 默认的错误提示\n return (\n <div style={{ padding: '16px', color: '#ff4d4f', border: '1px solid #ff4d4f' }}>\n <h3>Something went wrong</h3>\n {error && <p>{error.message}</p>}\n </div>\n );\n }\n\n return children;\n }\n}\n"],"names":["jsxs","jsx"],"mappings":";;;;;AAcO,MAAM,sBAAsB,UAAkD;AAAA,EAA9E;AAAA;AACL,iCAA4B;AAAA,MAC1B,UAAU;AAAA,IACZ;AAAA;AAAA,EAEA,OAAO,yBAAyB,OAA2C;AAClE,WAAA,EAAE,UAAU,MAAM,MAAM;AAAA,EAAA;AAAA,EAGjC,kBAAkB,OAAc,WAA4B;AACrD,SAAA,SAAS,EAAE,WAAW;AACnB,YAAA,MAAM,kCAAkC,OAAO,SAAS;AAG5D,QAAA,KAAK,MAAM,SAAS;AACjB,WAAA,MAAM,QAAQ,OAAO,SAAS;AAAA,IAAA;AAAA,EACrC;AAAA,EAGF,SAAoB;AAClB,UAAM,EAAE,UAAU,OAAO,cAAc,KAAK;AAC5C,UAAM,EAAE,UAAU,SAAS,IAAI,KAAK;AAEpC,QAAI,UAAU;AAEZ,UAAI,UAAU;AACZ,eAAO,OAAO,aAAa,aAAa,SAAS,OAAQ,SAAU,IAAI;AAAA,MAAA;AAKvE,aAAAA,uCAAC,OAAI,EAAA,OAAO,EAAE,SAAS,QAAQ,OAAO,WAAW,QAAQ,oBAAA,GACvD,UAAA;AAAA,QAAAC,kCAAAA,IAAC,QAAG,UAAoB,uBAAA,CAAA;AAAA,QACvB,SAASA,kCAAA,IAAC,KAAG,EAAA,UAAA,MAAM,QAAQ,CAAA;AAAA,MAAA,GAC9B;AAAA,IAAA;AAIG,WAAA;AAAA,EAAA;AAEX;"}
@@ -0,0 +1 @@
1
+ export * from './error-boundary';
@@ -5,3 +5,4 @@ export * from './voice-animation';
5
5
  export * from './echarts-render';
6
6
  export * from './code-editor';
7
7
  export * from './easyv-monaco-editor';
8
+ export * from './error-boundary';
package/dist/index.es.js CHANGED
@@ -7,6 +7,7 @@ import { VoiceAnimation } from "./components/voice-animation/voice-animation.es.
7
7
  import { EchartsRender } from "./components/echarts-render/echarts-render.es.js";
8
8
  import { CodeEditor } from "./components/code-editor/code-editor.es.js";
9
9
  import { EasyvMonacoEditor } from "./components/easyv-monaco-editor/easyv-monaco-editor.es.js";
10
+ import { ErrorBoundary } from "./components/error-boundary/error-boundary.es.js";
10
11
  import { useDivAutoScroll } from "./hooks/use-div-auto-scroll.es.js";
11
12
  import { useXunFeiSteamVoiceManager } from "./hooks/use-xun-fei-steam-voice-manager.es.js";
12
13
  import { useInitialized } from "./hooks/use-initialized.es.js";
@@ -26,6 +27,7 @@ export {
26
27
  EXPLICIT_DISCONNECT_REASON,
27
28
  EasyvMonacoEditor,
28
29
  EchartsRender,
30
+ ErrorBoundary,
29
31
  FunASRManager,
30
32
  MAX_TIMEOUT,
31
33
  MessageType,
@@ -1 +1 @@
1
- {"version":3,"file":"index.es.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;"}
1
+ {"version":3,"file":"index.es.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;"}
@@ -1,5 +1,5 @@
1
1
  import { getDefaultExportFromCjs } from "../../../../../_virtual/_commonjsHelpers.es.js";
2
- import { __module as coWebWorker } from "../../../../../_virtual/index.es5.js";
2
+ import { __module as coWebWorker } from "../../../../../_virtual/index.es4.js";
3
3
  class CrossOriginWorker extends Worker {
4
4
  constructor(scriptUrl) {
5
5
  const b = new Blob([`importScripts('${new URL(scriptUrl).toString()}')`], { type: "application/javascript" });
@@ -1,4 +1,4 @@
1
- import { __module as reactIs } from "../../../../../_virtual/index.es4.js";
1
+ import { __module as reactIs } from "../../../../../_virtual/index.es5.js";
2
2
  import { __require as requireReactIs_production_min } from "./cjs/react-is.production.min.es.js";
3
3
  import { __require as requireReactIs_development } from "./cjs/react-is.development.es.js";
4
4
  var hasRequiredReactIs;