ifs-code-tools 1.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +115 -0
- package/dist/index.cjs +9987 -0
- package/dist/index.cjs.map +1 -0
- package/dist/index.d.cts +167 -0
- package/dist/index.d.ts +167 -0
- package/dist/index.js +9985 -0
- package/dist/index.js.map +1 -0
- package/package.json +31 -0
package/dist/index.d.cts
ADDED
|
@@ -0,0 +1,167 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* Widget 类型定义
|
|
5
|
+
*/
|
|
6
|
+
interface WidgetProps {
|
|
7
|
+
/** 自定义类名 */
|
|
8
|
+
className?: string;
|
|
9
|
+
/** 自定义样式 */
|
|
10
|
+
style?: Partial<CSSStyleDeclaration>;
|
|
11
|
+
/** 其他自定义属性 */
|
|
12
|
+
[key: string]: unknown;
|
|
13
|
+
}
|
|
14
|
+
interface WidgetInstance {
|
|
15
|
+
/** 更新 Widget props */
|
|
16
|
+
update: (newProps: WidgetProps) => void;
|
|
17
|
+
/** 卸载 Widget */
|
|
18
|
+
unmount: () => void;
|
|
19
|
+
}
|
|
20
|
+
interface LoadWidgetOptions {
|
|
21
|
+
/** Widget 根目录地址(如 https://cdn.example.com/widgets/my-widget),与 appId 二选一 */
|
|
22
|
+
url?: string;
|
|
23
|
+
/** Widget 应用 ID,与 url 二选一 */
|
|
24
|
+
appId?: string;
|
|
25
|
+
/** 挂载容器,可以是 DOM 元素或选择器 */
|
|
26
|
+
container: HTMLElement | string;
|
|
27
|
+
/** Widget 属性 */
|
|
28
|
+
props?: WidgetProps;
|
|
29
|
+
/** 加载超时时间(毫秒),默认 30000 */
|
|
30
|
+
timeout?: number;
|
|
31
|
+
/** 加载完成回调 */
|
|
32
|
+
onLoad?: () => void;
|
|
33
|
+
/** 加载失败回调 */
|
|
34
|
+
onError?: (error: Error) => void;
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
/**
|
|
38
|
+
* Widget 加载器
|
|
39
|
+
* 轻量级工具,用于在第三方平台嵌入 Mixo Widget
|
|
40
|
+
*/
|
|
41
|
+
|
|
42
|
+
/**
|
|
43
|
+
* 加载并挂载 Widget
|
|
44
|
+
*
|
|
45
|
+
* @example
|
|
46
|
+
* ```ts
|
|
47
|
+
* import { widget } from '@ali/mixo-tools';
|
|
48
|
+
*
|
|
49
|
+
* // 方式一:通过 url 加载
|
|
50
|
+
* const instance = await widget.loadWidget({
|
|
51
|
+
* url: 'https://cdn.example.com/widgets/my-widget',
|
|
52
|
+
* container: '#widget-container',
|
|
53
|
+
* props: { theme: 'dark' }
|
|
54
|
+
* });
|
|
55
|
+
*
|
|
56
|
+
* // 方式二:通过 appId 加载
|
|
57
|
+
* const instance = await widget.loadWidget({
|
|
58
|
+
* appId: 'my-app-id',
|
|
59
|
+
* container: '#widget-container',
|
|
60
|
+
* props: { theme: 'dark' }
|
|
61
|
+
* });
|
|
62
|
+
*
|
|
63
|
+
* // 更新 props
|
|
64
|
+
* instance.update({ theme: 'light' });
|
|
65
|
+
*
|
|
66
|
+
* // 卸载
|
|
67
|
+
* instance.unmount();
|
|
68
|
+
* ```
|
|
69
|
+
*/
|
|
70
|
+
declare function loadWidget(options: LoadWidgetOptions): Promise<WidgetInstance>;
|
|
71
|
+
/**
|
|
72
|
+
* 预加载 Widget 资源(不挂载)
|
|
73
|
+
* 用于提前加载 Widget,优化用户体验
|
|
74
|
+
*
|
|
75
|
+
* @example
|
|
76
|
+
* ```ts
|
|
77
|
+
* import { widget } from '@ali/mixo-tools';
|
|
78
|
+
*
|
|
79
|
+
* // 方式一:通过 url 预加载
|
|
80
|
+
* widget.preloadWidget({ url: 'https://cdn.example.com/widgets/my-widget' });
|
|
81
|
+
*
|
|
82
|
+
* // 方式二:通过 appId 预加载
|
|
83
|
+
* widget.preloadWidget({ appId: 'my-app-id' });
|
|
84
|
+
*
|
|
85
|
+
* // 用户交互时快速挂载(会从缓存中读取,加载更快)
|
|
86
|
+
* const instance = await widget.loadWidget({
|
|
87
|
+
* url: 'https://cdn.example.com/widgets/my-widget',
|
|
88
|
+
* container: '#container'
|
|
89
|
+
* });
|
|
90
|
+
* ```
|
|
91
|
+
*/
|
|
92
|
+
declare function preloadWidget(options: {
|
|
93
|
+
url?: string;
|
|
94
|
+
appId?: string;
|
|
95
|
+
}): Promise<void>;
|
|
96
|
+
|
|
97
|
+
/**
|
|
98
|
+
* WidgetRender - React 组件形式的 Widget 加载器
|
|
99
|
+
*/
|
|
100
|
+
|
|
101
|
+
/**
|
|
102
|
+
* WidgetRender 组件属性
|
|
103
|
+
*/
|
|
104
|
+
interface WidgetRenderProps {
|
|
105
|
+
/** Widget 根目录地址,与 appId 二选一 */
|
|
106
|
+
url?: string;
|
|
107
|
+
/** Widget 应用 ID,与 url 二选一 */
|
|
108
|
+
appId?: string;
|
|
109
|
+
/** 传递给 Widget 的属性 */
|
|
110
|
+
widgetProps?: WidgetProps;
|
|
111
|
+
/** 加载超时时间(毫秒),默认 30000 */
|
|
112
|
+
timeout?: number;
|
|
113
|
+
/** 容器类名 */
|
|
114
|
+
className?: string;
|
|
115
|
+
/** 容器样式 */
|
|
116
|
+
style?: React.CSSProperties;
|
|
117
|
+
/** 加载中渲染内容 */
|
|
118
|
+
loading?: React.ReactNode;
|
|
119
|
+
/** 加载失败渲染内容,传入错误对象 */
|
|
120
|
+
fallback?: React.ReactNode | ((error: Error) => React.ReactNode);
|
|
121
|
+
/** 加载完成回调 */
|
|
122
|
+
onLoad?: () => void;
|
|
123
|
+
/** 加载失败回调 */
|
|
124
|
+
onError?: (error: Error) => void;
|
|
125
|
+
}
|
|
126
|
+
/**
|
|
127
|
+
* WidgetRender - React 组件形式的 Widget 加载器
|
|
128
|
+
*
|
|
129
|
+
* @example
|
|
130
|
+
* ```tsx
|
|
131
|
+
* import { WidgetRender } from '@ali/mixo-tools';
|
|
132
|
+
*
|
|
133
|
+
* function App() {
|
|
134
|
+
* return (
|
|
135
|
+
* // 方式一:通过 url 加载
|
|
136
|
+
* <WidgetRender
|
|
137
|
+
* url="https://cdn.example.com/widgets/my-widget"
|
|
138
|
+
* widgetProps={{ theme: 'dark' }}
|
|
139
|
+
* loading={<div>Loading...</div>}
|
|
140
|
+
* fallback={(error) => <div>Error: {error.message}</div>}
|
|
141
|
+
* />
|
|
142
|
+
*
|
|
143
|
+
* // 方式二:通过 appId 加载
|
|
144
|
+
* <WidgetRender
|
|
145
|
+
* appId="my-app-id"
|
|
146
|
+
* widgetProps={{ theme: 'dark' }}
|
|
147
|
+
* loading={<div>Loading...</div>}
|
|
148
|
+
* fallback={(error) => <div>Error: {error.message}</div>}
|
|
149
|
+
* />
|
|
150
|
+
* );
|
|
151
|
+
* }
|
|
152
|
+
* ```
|
|
153
|
+
*/
|
|
154
|
+
declare function WidgetRender(props: WidgetRenderProps): React.ReactElement;
|
|
155
|
+
|
|
156
|
+
/**
|
|
157
|
+
* Widget 模块
|
|
158
|
+
* 提供 Widget 加载和 React 组件
|
|
159
|
+
*/
|
|
160
|
+
|
|
161
|
+
declare const _default: {
|
|
162
|
+
loadWidget: typeof loadWidget;
|
|
163
|
+
preloadWidget: typeof preloadWidget;
|
|
164
|
+
WidgetRender: typeof WidgetRender;
|
|
165
|
+
};
|
|
166
|
+
|
|
167
|
+
export { _default as widget };
|
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1,167 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* Widget 类型定义
|
|
5
|
+
*/
|
|
6
|
+
interface WidgetProps {
|
|
7
|
+
/** 自定义类名 */
|
|
8
|
+
className?: string;
|
|
9
|
+
/** 自定义样式 */
|
|
10
|
+
style?: Partial<CSSStyleDeclaration>;
|
|
11
|
+
/** 其他自定义属性 */
|
|
12
|
+
[key: string]: unknown;
|
|
13
|
+
}
|
|
14
|
+
interface WidgetInstance {
|
|
15
|
+
/** 更新 Widget props */
|
|
16
|
+
update: (newProps: WidgetProps) => void;
|
|
17
|
+
/** 卸载 Widget */
|
|
18
|
+
unmount: () => void;
|
|
19
|
+
}
|
|
20
|
+
interface LoadWidgetOptions {
|
|
21
|
+
/** Widget 根目录地址(如 https://cdn.example.com/widgets/my-widget),与 appId 二选一 */
|
|
22
|
+
url?: string;
|
|
23
|
+
/** Widget 应用 ID,与 url 二选一 */
|
|
24
|
+
appId?: string;
|
|
25
|
+
/** 挂载容器,可以是 DOM 元素或选择器 */
|
|
26
|
+
container: HTMLElement | string;
|
|
27
|
+
/** Widget 属性 */
|
|
28
|
+
props?: WidgetProps;
|
|
29
|
+
/** 加载超时时间(毫秒),默认 30000 */
|
|
30
|
+
timeout?: number;
|
|
31
|
+
/** 加载完成回调 */
|
|
32
|
+
onLoad?: () => void;
|
|
33
|
+
/** 加载失败回调 */
|
|
34
|
+
onError?: (error: Error) => void;
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
/**
|
|
38
|
+
* Widget 加载器
|
|
39
|
+
* 轻量级工具,用于在第三方平台嵌入 Mixo Widget
|
|
40
|
+
*/
|
|
41
|
+
|
|
42
|
+
/**
|
|
43
|
+
* 加载并挂载 Widget
|
|
44
|
+
*
|
|
45
|
+
* @example
|
|
46
|
+
* ```ts
|
|
47
|
+
* import { widget } from '@ali/mixo-tools';
|
|
48
|
+
*
|
|
49
|
+
* // 方式一:通过 url 加载
|
|
50
|
+
* const instance = await widget.loadWidget({
|
|
51
|
+
* url: 'https://cdn.example.com/widgets/my-widget',
|
|
52
|
+
* container: '#widget-container',
|
|
53
|
+
* props: { theme: 'dark' }
|
|
54
|
+
* });
|
|
55
|
+
*
|
|
56
|
+
* // 方式二:通过 appId 加载
|
|
57
|
+
* const instance = await widget.loadWidget({
|
|
58
|
+
* appId: 'my-app-id',
|
|
59
|
+
* container: '#widget-container',
|
|
60
|
+
* props: { theme: 'dark' }
|
|
61
|
+
* });
|
|
62
|
+
*
|
|
63
|
+
* // 更新 props
|
|
64
|
+
* instance.update({ theme: 'light' });
|
|
65
|
+
*
|
|
66
|
+
* // 卸载
|
|
67
|
+
* instance.unmount();
|
|
68
|
+
* ```
|
|
69
|
+
*/
|
|
70
|
+
declare function loadWidget(options: LoadWidgetOptions): Promise<WidgetInstance>;
|
|
71
|
+
/**
|
|
72
|
+
* 预加载 Widget 资源(不挂载)
|
|
73
|
+
* 用于提前加载 Widget,优化用户体验
|
|
74
|
+
*
|
|
75
|
+
* @example
|
|
76
|
+
* ```ts
|
|
77
|
+
* import { widget } from '@ali/mixo-tools';
|
|
78
|
+
*
|
|
79
|
+
* // 方式一:通过 url 预加载
|
|
80
|
+
* widget.preloadWidget({ url: 'https://cdn.example.com/widgets/my-widget' });
|
|
81
|
+
*
|
|
82
|
+
* // 方式二:通过 appId 预加载
|
|
83
|
+
* widget.preloadWidget({ appId: 'my-app-id' });
|
|
84
|
+
*
|
|
85
|
+
* // 用户交互时快速挂载(会从缓存中读取,加载更快)
|
|
86
|
+
* const instance = await widget.loadWidget({
|
|
87
|
+
* url: 'https://cdn.example.com/widgets/my-widget',
|
|
88
|
+
* container: '#container'
|
|
89
|
+
* });
|
|
90
|
+
* ```
|
|
91
|
+
*/
|
|
92
|
+
declare function preloadWidget(options: {
|
|
93
|
+
url?: string;
|
|
94
|
+
appId?: string;
|
|
95
|
+
}): Promise<void>;
|
|
96
|
+
|
|
97
|
+
/**
|
|
98
|
+
* WidgetRender - React 组件形式的 Widget 加载器
|
|
99
|
+
*/
|
|
100
|
+
|
|
101
|
+
/**
|
|
102
|
+
* WidgetRender 组件属性
|
|
103
|
+
*/
|
|
104
|
+
interface WidgetRenderProps {
|
|
105
|
+
/** Widget 根目录地址,与 appId 二选一 */
|
|
106
|
+
url?: string;
|
|
107
|
+
/** Widget 应用 ID,与 url 二选一 */
|
|
108
|
+
appId?: string;
|
|
109
|
+
/** 传递给 Widget 的属性 */
|
|
110
|
+
widgetProps?: WidgetProps;
|
|
111
|
+
/** 加载超时时间(毫秒),默认 30000 */
|
|
112
|
+
timeout?: number;
|
|
113
|
+
/** 容器类名 */
|
|
114
|
+
className?: string;
|
|
115
|
+
/** 容器样式 */
|
|
116
|
+
style?: React.CSSProperties;
|
|
117
|
+
/** 加载中渲染内容 */
|
|
118
|
+
loading?: React.ReactNode;
|
|
119
|
+
/** 加载失败渲染内容,传入错误对象 */
|
|
120
|
+
fallback?: React.ReactNode | ((error: Error) => React.ReactNode);
|
|
121
|
+
/** 加载完成回调 */
|
|
122
|
+
onLoad?: () => void;
|
|
123
|
+
/** 加载失败回调 */
|
|
124
|
+
onError?: (error: Error) => void;
|
|
125
|
+
}
|
|
126
|
+
/**
|
|
127
|
+
* WidgetRender - React 组件形式的 Widget 加载器
|
|
128
|
+
*
|
|
129
|
+
* @example
|
|
130
|
+
* ```tsx
|
|
131
|
+
* import { WidgetRender } from '@ali/mixo-tools';
|
|
132
|
+
*
|
|
133
|
+
* function App() {
|
|
134
|
+
* return (
|
|
135
|
+
* // 方式一:通过 url 加载
|
|
136
|
+
* <WidgetRender
|
|
137
|
+
* url="https://cdn.example.com/widgets/my-widget"
|
|
138
|
+
* widgetProps={{ theme: 'dark' }}
|
|
139
|
+
* loading={<div>Loading...</div>}
|
|
140
|
+
* fallback={(error) => <div>Error: {error.message}</div>}
|
|
141
|
+
* />
|
|
142
|
+
*
|
|
143
|
+
* // 方式二:通过 appId 加载
|
|
144
|
+
* <WidgetRender
|
|
145
|
+
* appId="my-app-id"
|
|
146
|
+
* widgetProps={{ theme: 'dark' }}
|
|
147
|
+
* loading={<div>Loading...</div>}
|
|
148
|
+
* fallback={(error) => <div>Error: {error.message}</div>}
|
|
149
|
+
* />
|
|
150
|
+
* );
|
|
151
|
+
* }
|
|
152
|
+
* ```
|
|
153
|
+
*/
|
|
154
|
+
declare function WidgetRender(props: WidgetRenderProps): React.ReactElement;
|
|
155
|
+
|
|
156
|
+
/**
|
|
157
|
+
* Widget 模块
|
|
158
|
+
* 提供 Widget 加载和 React 组件
|
|
159
|
+
*/
|
|
160
|
+
|
|
161
|
+
declare const _default: {
|
|
162
|
+
loadWidget: typeof loadWidget;
|
|
163
|
+
preloadWidget: typeof preloadWidget;
|
|
164
|
+
WidgetRender: typeof WidgetRender;
|
|
165
|
+
};
|
|
166
|
+
|
|
167
|
+
export { _default as widget };
|