@arronqzy/abuilder 1.1.38 → 1.1.40
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 +66 -20
- package/dist/index.cjs +119 -4
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +9 -4
- package/dist/index.d.ts +9 -4
- package/dist/index.js +9 -6
- package/dist/index.js.map +1 -1
- package/package.json +6 -6
package/README.md
CHANGED
|
@@ -4,7 +4,7 @@ React 一站式编辑器。安装后渲染 `<App />`,就是完整的 Abuilder
|
|
|
4
4
|
|
|
5
5
|

|
|
6
6
|
|
|
7
|
-
当前版本见本包 `package.json`(设置菜单「关于」里显示的就是这个版本号)。本包 **1.1.38** 起提供本地工作区清理接口(`listWorkspaceProjects` / `deleteWorkspaceProject` / `clearWorkspaceProjects`);**1.1.37** 起配套 chroma.js 主题配色、全系统国际化修复与问号图标式字段说明;**1.1.36** 起配套蓝图 Soft UI 节点样式;**1.1.35** 起配套接口集合、`{system?...}` 模版、JSON 节点错误高亮。完整中文手册见仓库 `docs/Abuilder使用文档与功能说明.docx`(适用版本表写在文首)。
|
|
7
|
+
当前版本见本包 `package.json`(设置菜单「关于」里显示的就是这个版本号)。本包 **1.1.40** 起补齐宿主侧完整 CRUD(put / 命令式打开 / 事件 nameSpace / Vue 预览截图);**1.1.39** 起补齐本地数据接口(蓝图库、执行日志、接口集合的读取与清理,`clearAbuilderStorage` 一次清空,`workspace:delete` 事件);**1.1.38** 起提供本地工作区清理接口(`listWorkspaceProjects` / `deleteWorkspaceProject` / `clearWorkspaceProjects`);**1.1.37** 起配套 chroma.js 主题配色、全系统国际化修复与问号图标式字段说明;**1.1.36** 起配套蓝图 Soft UI 节点样式;**1.1.35** 起配套接口集合、`{system?...}` 模版、JSON 节点错误高亮。完整中文手册见仓库 `docs/Abuilder使用文档与功能说明.docx`(适用版本表写在文首)。
|
|
8
8
|
|
|
9
9
|
## 安装
|
|
10
10
|
|
|
@@ -64,7 +64,8 @@ createRoot(document.getElementById("root")!).render(<App locale="zh-CN" />);
|
|
|
64
64
|
| `nameSpace` | 隔离 IndexedDB;同一页多个 App 必须不同 | — |
|
|
65
65
|
| `previewSearch` | 预览 URL 查询串 | `window.location.search` |
|
|
66
66
|
| `preview` | `true` 只渲染预览页 | `false` |
|
|
67
|
-
| `initialWorkspace` | 完整工作区。不传则空白画布,**不会**自动打开 IndexedDB
|
|
67
|
+
| `initialWorkspace` | 完整工作区。不传则空白画布,**不会**自动打开 IndexedDB 里已有项目。传入且带 `id` 时,会默认同步写入 IndexedDB(本地已有更新的记录不会被旧数据覆盖),以便预览与「同步」可用 | — |
|
|
68
|
+
| `workspaceId` | 按 IndexedDB id 打开(不 remount)。与 `initialWorkspace` 同时存在时:首次优先完整记录;之后 id 变化从 IndexedDB 打开 | — |
|
|
68
69
|
|
|
69
70
|
```tsx
|
|
70
71
|
<App
|
|
@@ -95,10 +96,11 @@ URL 带 `?preview=online&projectId=<id>` 时进入预览,从 IndexedDB 读。
|
|
|
95
96
|
|
|
96
97
|
## 把工作区交给自己的后端
|
|
97
98
|
|
|
98
|
-
IndexedDB
|
|
99
|
+
IndexedDB 是编辑器自己的浏览器缓存。宿主仍应以自己的后端为准:
|
|
99
100
|
|
|
100
|
-
1.
|
|
101
|
-
2. 下次打开时校验 JSON,再交给 `initialWorkspace
|
|
101
|
+
1. 订阅创建和同步事件(`workspace:add` / `workspace:sync`),把回调里的完整对象写到自己的存储。
|
|
102
|
+
2. 下次打开时校验 JSON,再交给 `initialWorkspace`;编辑器会把这份工作区默认同步进 IndexedDB,之后「同步 / 预览」不会因本地缺记录报错。
|
|
103
|
+
3. 需要清理本地副本时,用导出的 `listWorkspaceProjects` / `deleteWorkspaceProject` / `clearWorkspaceProjects` / `clearAbuilderStorage`,不要直接操作 IndexedDB。
|
|
102
104
|
|
|
103
105
|
```tsx
|
|
104
106
|
import { useEffect, useState } from "react";
|
|
@@ -139,8 +141,13 @@ function HostApp() {
|
|
|
139
141
|
|------|------|----------|
|
|
140
142
|
| `workspace:add` | `AbuilderEvents.workspaceAdd` | 创建工作区成功 |
|
|
141
143
|
| `workspace:sync` | `AbuilderEvents.workspaceSync` | 同步工作区成功 |
|
|
144
|
+
| `workspace:delete` | `AbuilderEvents.workspaceDelete` | 删除工作区(界面删除,或调用 `deleteWorkspaceProject` / `clearWorkspaceProjects`) |
|
|
145
|
+
| `blueprint-library:changed` | `AbuilderEvents.blueprintLibraryChanged` | 蓝图库 put / delete / clear |
|
|
146
|
+
| `api-collection:upload-start` | `AbuilderEvents.apiCollectionUploadStart` | 开始上传接口集合 |
|
|
147
|
+
| `api-collection:upload-success` | `AbuilderEvents.apiCollectionUploadSuccess` | 上传接口集合成功 |
|
|
148
|
+
| `api-collection:changed` | `AbuilderEvents.apiCollectionChanged` | 接口集合 put / delete / clear |
|
|
142
149
|
|
|
143
|
-
|
|
150
|
+
`workspace:add` / `workspace:sync` 的回调是 `WorkspaceData & { nameSpace }`:
|
|
144
151
|
|
|
145
152
|
| 字段 | 说明 |
|
|
146
153
|
|------|------|
|
|
@@ -152,8 +159,9 @@ function HostApp() {
|
|
|
152
159
|
| `blueprintMeta` | 蓝图名称、备注 |
|
|
153
160
|
| `productName` | 产物名称 |
|
|
154
161
|
| `titleIconDataUrl` | 标题图标(可选) |
|
|
162
|
+
| `nameSpace` | 所属命名空间;默认库为 `null` |
|
|
155
163
|
|
|
156
|
-
|
|
164
|
+
同页多个 App 时,用第三个参数过滤:`addEventSubscription(AbuilderEvents.workspaceSync, cb, { nameSpace: "my-app" })`。
|
|
157
165
|
|
|
158
166
|
## 校验和空工作区
|
|
159
167
|
|
|
@@ -184,29 +192,67 @@ createEmptyWorkspace({ name: "未命名", id: createWorkspaceProjectId() });
|
|
|
184
192
|
|
|
185
193
|
`initialWorkspace` 为空时,首次是空画布和空蓝图。侧栏仍可列出已保存项目,但要用户手动打开。
|
|
186
194
|
|
|
187
|
-
##
|
|
195
|
+
## 本地数据完整 CRUD
|
|
188
196
|
|
|
189
|
-
|
|
197
|
+
编辑器把四类数据存进 IndexedDB,按 `nameSpace` 隔离。公开 API 覆盖读写删清:
|
|
198
|
+
|
|
199
|
+
| 数据 | Create / Update | Read | Delete |
|
|
200
|
+
|------|-----------------|------|--------|
|
|
201
|
+
| 工作区 | `putWorkspaceProject` / `upsertWorkspaceProject`(可选 `emitEvent: "add"\|"sync"`);或 UI 创建/同步 | `listWorkspaceProjects` / `getWorkspaceProject` | `deleteWorkspaceProject` / `clearWorkspaceProjects` |
|
|
202
|
+
| 蓝图库 | `putBlueprintLibraryRecord` | `listBlueprintLibrary` / `getBlueprintLibraryRecord` | `deleteBlueprintLibraryRecord` / `clearBlueprintLibrary` |
|
|
203
|
+
| 执行日志 | `putExecutionRunRecord` | `listExecutionRunRecords` / `getExecutionRunRecord` | `deleteExecutionRunRecord` / `clearAllExecutionRunRecords` / `purge*` / `trim*` |
|
|
204
|
+
| 接口集合 | `putApiCollection` / `upsertApiCollectionFromJson` | `listApiCollectionRecords` | `deleteApiCollection` / `clearApiCollections` |
|
|
190
205
|
|
|
191
206
|
```ts
|
|
192
207
|
import {
|
|
208
|
+
putWorkspaceProject,
|
|
193
209
|
listWorkspaceProjects,
|
|
194
210
|
deleteWorkspaceProject,
|
|
195
|
-
|
|
211
|
+
clearAbuilderStorage,
|
|
212
|
+
putBlueprintLibraryRecord,
|
|
213
|
+
putApiCollection,
|
|
196
214
|
} from "@arronqzy/abuilder";
|
|
197
215
|
|
|
198
|
-
|
|
199
|
-
await
|
|
200
|
-
|
|
216
|
+
// 不挂载编辑器也能预热 IndexedDB(例如后台同步后端数据)
|
|
217
|
+
await putWorkspaceProject(parsedWorkspace, nameSpace);
|
|
218
|
+
// 需要顺带通知宿主后端时:
|
|
219
|
+
await putWorkspaceProject(parsedWorkspace, nameSpace, { emitEvent: "sync" });
|
|
220
|
+
|
|
221
|
+
const result = await clearAbuilderStorage(nameSpace);
|
|
201
222
|
```
|
|
202
223
|
|
|
203
|
-
- `nameSpace` 要和 `<App nameSpace>` 一致;省略时操作默认库。
|
|
204
|
-
-
|
|
205
|
-
-
|
|
224
|
+
- 所有存储函数的 `nameSpace` 要和 `<App nameSpace>` 一致;省略时操作默认库。
|
|
225
|
+
- `clearAbuilderStorage` 不动主题、字号、执行日志保留策略等偏好设置。
|
|
226
|
+
- 写入 / 删除工作区或蓝图库后,已挂载编辑器会自动刷新列表。
|
|
227
|
+
|
|
228
|
+
## 命令式打开 / 保存(不 remount)
|
|
229
|
+
|
|
230
|
+
挂载编辑器后,可用模块函数或 `ref`:
|
|
231
|
+
|
|
232
|
+
```tsx
|
|
233
|
+
import { useRef } from "react";
|
|
234
|
+
import {
|
|
235
|
+
App,
|
|
236
|
+
openWorkspace,
|
|
237
|
+
getCurrentWorkspace,
|
|
238
|
+
syncWorkspace,
|
|
239
|
+
type AbuilderViewHandle,
|
|
240
|
+
} from "@arronqzy/abuilder";
|
|
241
|
+
|
|
242
|
+
const ref = useRef<AbuilderViewHandle>(null);
|
|
243
|
+
|
|
244
|
+
<App ref={ref} nameSpace="my-app" workspaceId={selectedId} />;
|
|
245
|
+
|
|
246
|
+
await openWorkspace(selectedId, "my-app"); // 或 ref.current.openWorkspace(selectedId)
|
|
247
|
+
await syncWorkspace("my-app"); // 把当前编辑内容写入 IndexedDB + 发 workspace:sync
|
|
248
|
+
const draft = getCurrentWorkspace("my-app"); // 导出当前脏状态;无 active 时为 null
|
|
249
|
+
```
|
|
250
|
+
|
|
251
|
+
同页多个实例时务必传同一个 `nameSpace`。
|
|
206
252
|
|
|
207
253
|
## 预览缩略图
|
|
208
254
|
|
|
209
|
-
|
|
255
|
+
画布已经渲染且有内容时(React / Vue 均支持):
|
|
210
256
|
|
|
211
257
|
```ts
|
|
212
258
|
import { getPreviewSnapshot } from "@arronqzy/abuilder";
|
|
@@ -226,8 +272,6 @@ const thumbnail = await getPreviewSnapshot({
|
|
|
226
272
|
| `quality` | JPEG 0–1 | `0.92` |
|
|
227
273
|
| `backgroundColor` | 背景色 | `"#ffffff"` |
|
|
228
274
|
|
|
229
|
-
Vue 包没有这个函数。
|
|
230
|
-
|
|
231
275
|
## 还导出什么
|
|
232
276
|
|
|
233
277
|
一般宿主只用 `App`。需要拆开时:
|
|
@@ -241,10 +285,12 @@ import {
|
|
|
241
285
|
getPreviewSnapshot,
|
|
242
286
|
parseWorkspaceData,
|
|
243
287
|
createEmptyWorkspace,
|
|
288
|
+
openWorkspace,
|
|
289
|
+
getCurrentWorkspace,
|
|
244
290
|
} from "@arronqzy/abuilder";
|
|
245
291
|
```
|
|
246
292
|
|
|
247
|
-
类型:`WorkspaceData`、`WorkspaceProjectRecord`、`WorkspaceProjectListItem`、`AbuilderEventName`、`GetPreviewSnapshotOptions`、`ParseCheckResult`、`WorkspaceParseCheckResult`。
|
|
293
|
+
类型:`AbuilderViewHandle`、`WorkspaceData`、`WorkspaceProjectRecord`、`WorkspaceProjectListItem`、`WorkspaceDeleteEventPayload`、`AbuilderStorageClearResult`、`BlueprintLibraryListItem`、`BlueprintLibraryRecord`、`ExecutionRunRecord`、`ExecutionLogSettings`、`ApiCollectionRecord`、`UpsertApiCollectionInput`、`AbuilderEventName`、`GetPreviewSnapshotOptions`、`ParseCheckResult`、`WorkspaceParseCheckResult`。
|
|
248
294
|
|
|
249
295
|
## 本仓库里怎么预览
|
|
250
296
|
|
package/dist/index.cjs
CHANGED
|
@@ -10,7 +10,7 @@ var jsxRuntime = require('react/jsx-runtime');
|
|
|
10
10
|
// package.json
|
|
11
11
|
var package_default = {
|
|
12
12
|
name: "@arronqzy/abuilder",
|
|
13
|
-
version: "1.1.
|
|
13
|
+
version: "1.1.40"};
|
|
14
14
|
|
|
15
15
|
// src/version.ts
|
|
16
16
|
var ABUILDER_PACKAGE_NAME = package_default.name;
|
|
@@ -30,7 +30,7 @@ function PreviewShell({ children }) {
|
|
|
30
30
|
}
|
|
31
31
|
);
|
|
32
32
|
}
|
|
33
|
-
|
|
33
|
+
var App = react.forwardRef(function App2({
|
|
34
34
|
className,
|
|
35
35
|
initialZoom,
|
|
36
36
|
defaultTheme = "dark",
|
|
@@ -38,8 +38,9 @@ function App({
|
|
|
38
38
|
previewSearch,
|
|
39
39
|
preview = false,
|
|
40
40
|
initialWorkspace = null,
|
|
41
|
+
workspaceId = null,
|
|
41
42
|
nameSpace = null
|
|
42
|
-
}) {
|
|
43
|
+
}, ref) {
|
|
43
44
|
const [localeState, setLocaleState] = react.useState(locale);
|
|
44
45
|
const effectiveLocale = locale ?? localeState;
|
|
45
46
|
const search = previewSearch ?? (typeof window !== "undefined" ? window.location.search : "");
|
|
@@ -74,9 +75,11 @@ function App({
|
|
|
74
75
|
return /* @__PURE__ */ jsxRuntime.jsx(ui.ThemeProvider, { defaultTheme, enableSystem: false, children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
75
76
|
reactView.ReactViewPanel,
|
|
76
77
|
{
|
|
78
|
+
ref,
|
|
77
79
|
className,
|
|
78
80
|
initialZoom,
|
|
79
81
|
initialWorkspace,
|
|
82
|
+
workspaceId,
|
|
80
83
|
locale: effectiveLocale,
|
|
81
84
|
onLocaleChange: setLocaleState,
|
|
82
85
|
nameSpace,
|
|
@@ -84,7 +87,7 @@ function App({
|
|
|
84
87
|
packageVersion: ABUILDER_VERSION
|
|
85
88
|
}
|
|
86
89
|
) });
|
|
87
|
-
}
|
|
90
|
+
});
|
|
88
91
|
|
|
89
92
|
Object.defineProperty(exports, "AbuilderEvents", {
|
|
90
93
|
enumerable: true,
|
|
@@ -106,6 +109,22 @@ Object.defineProperty(exports, "addEventSubscription", {
|
|
|
106
109
|
enumerable: true,
|
|
107
110
|
get: function () { return reactView.addEventSubscription; }
|
|
108
111
|
});
|
|
112
|
+
Object.defineProperty(exports, "clearAbuilderStorage", {
|
|
113
|
+
enumerable: true,
|
|
114
|
+
get: function () { return reactView.clearAbuilderStorage; }
|
|
115
|
+
});
|
|
116
|
+
Object.defineProperty(exports, "clearAllExecutionRunRecords", {
|
|
117
|
+
enumerable: true,
|
|
118
|
+
get: function () { return reactView.clearAllExecutionRunRecords; }
|
|
119
|
+
});
|
|
120
|
+
Object.defineProperty(exports, "clearApiCollections", {
|
|
121
|
+
enumerable: true,
|
|
122
|
+
get: function () { return reactView.clearApiCollections; }
|
|
123
|
+
});
|
|
124
|
+
Object.defineProperty(exports, "clearBlueprintLibrary", {
|
|
125
|
+
enumerable: true,
|
|
126
|
+
get: function () { return reactView.clearBlueprintLibrary; }
|
|
127
|
+
});
|
|
109
128
|
Object.defineProperty(exports, "clearWorkspaceProjects", {
|
|
110
129
|
enumerable: true,
|
|
111
130
|
get: function () { return reactView.clearWorkspaceProjects; }
|
|
@@ -114,22 +133,70 @@ Object.defineProperty(exports, "createEmptyWorkspace", {
|
|
|
114
133
|
enumerable: true,
|
|
115
134
|
get: function () { return reactView.createEmptyWorkspace; }
|
|
116
135
|
});
|
|
136
|
+
Object.defineProperty(exports, "createWorkspace", {
|
|
137
|
+
enumerable: true,
|
|
138
|
+
get: function () { return reactView.createWorkspace; }
|
|
139
|
+
});
|
|
117
140
|
Object.defineProperty(exports, "createWorkspaceProjectId", {
|
|
118
141
|
enumerable: true,
|
|
119
142
|
get: function () { return reactView.createWorkspaceProjectId; }
|
|
120
143
|
});
|
|
144
|
+
Object.defineProperty(exports, "deleteApiCollection", {
|
|
145
|
+
enumerable: true,
|
|
146
|
+
get: function () { return reactView.deleteApiCollection; }
|
|
147
|
+
});
|
|
148
|
+
Object.defineProperty(exports, "deleteBlueprintLibraryRecord", {
|
|
149
|
+
enumerable: true,
|
|
150
|
+
get: function () { return reactView.deleteBlueprintLibraryRecord; }
|
|
151
|
+
});
|
|
152
|
+
Object.defineProperty(exports, "deleteExecutionRunRecord", {
|
|
153
|
+
enumerable: true,
|
|
154
|
+
get: function () { return reactView.deleteExecutionRunRecord; }
|
|
155
|
+
});
|
|
121
156
|
Object.defineProperty(exports, "deleteWorkspaceProject", {
|
|
122
157
|
enumerable: true,
|
|
123
158
|
get: function () { return reactView.deleteWorkspaceProject; }
|
|
124
159
|
});
|
|
160
|
+
Object.defineProperty(exports, "getBlueprintLibraryRecord", {
|
|
161
|
+
enumerable: true,
|
|
162
|
+
get: function () { return reactView.getBlueprintLibraryRecord; }
|
|
163
|
+
});
|
|
164
|
+
Object.defineProperty(exports, "getCurrentWorkspace", {
|
|
165
|
+
enumerable: true,
|
|
166
|
+
get: function () { return reactView.getCurrentWorkspace; }
|
|
167
|
+
});
|
|
168
|
+
Object.defineProperty(exports, "getExecutionRunRecord", {
|
|
169
|
+
enumerable: true,
|
|
170
|
+
get: function () { return reactView.getExecutionRunRecord; }
|
|
171
|
+
});
|
|
125
172
|
Object.defineProperty(exports, "getPreviewSnapshot", {
|
|
126
173
|
enumerable: true,
|
|
127
174
|
get: function () { return reactView.getPreviewSnapshot; }
|
|
128
175
|
});
|
|
176
|
+
Object.defineProperty(exports, "getWorkspaceProject", {
|
|
177
|
+
enumerable: true,
|
|
178
|
+
get: function () { return reactView.getWorkspaceProject; }
|
|
179
|
+
});
|
|
180
|
+
Object.defineProperty(exports, "listApiCollectionRecords", {
|
|
181
|
+
enumerable: true,
|
|
182
|
+
get: function () { return reactView.listApiCollectionRecords; }
|
|
183
|
+
});
|
|
184
|
+
Object.defineProperty(exports, "listBlueprintLibrary", {
|
|
185
|
+
enumerable: true,
|
|
186
|
+
get: function () { return reactView.listBlueprintLibrary; }
|
|
187
|
+
});
|
|
188
|
+
Object.defineProperty(exports, "listExecutionRunRecords", {
|
|
189
|
+
enumerable: true,
|
|
190
|
+
get: function () { return reactView.listExecutionRunRecords; }
|
|
191
|
+
});
|
|
129
192
|
Object.defineProperty(exports, "listWorkspaceProjects", {
|
|
130
193
|
enumerable: true,
|
|
131
194
|
get: function () { return reactView.listWorkspaceProjects; }
|
|
132
195
|
});
|
|
196
|
+
Object.defineProperty(exports, "openWorkspace", {
|
|
197
|
+
enumerable: true,
|
|
198
|
+
get: function () { return reactView.openWorkspace; }
|
|
199
|
+
});
|
|
133
200
|
Object.defineProperty(exports, "parseBlueprintData", {
|
|
134
201
|
enumerable: true,
|
|
135
202
|
get: function () { return reactView.parseBlueprintData; }
|
|
@@ -146,6 +213,50 @@ Object.defineProperty(exports, "parseWorkspaceData", {
|
|
|
146
213
|
enumerable: true,
|
|
147
214
|
get: function () { return reactView.parseWorkspaceData; }
|
|
148
215
|
});
|
|
216
|
+
Object.defineProperty(exports, "purgeExecutionRunsOlderThan", {
|
|
217
|
+
enumerable: true,
|
|
218
|
+
get: function () { return reactView.purgeExecutionRunsOlderThan; }
|
|
219
|
+
});
|
|
220
|
+
Object.defineProperty(exports, "putApiCollection", {
|
|
221
|
+
enumerable: true,
|
|
222
|
+
get: function () { return reactView.putApiCollection; }
|
|
223
|
+
});
|
|
224
|
+
Object.defineProperty(exports, "putBlueprintLibraryRecord", {
|
|
225
|
+
enumerable: true,
|
|
226
|
+
get: function () { return reactView.putBlueprintLibraryRecord; }
|
|
227
|
+
});
|
|
228
|
+
Object.defineProperty(exports, "putExecutionRunRecord", {
|
|
229
|
+
enumerable: true,
|
|
230
|
+
get: function () { return reactView.putExecutionRunRecord; }
|
|
231
|
+
});
|
|
232
|
+
Object.defineProperty(exports, "putWorkspaceProject", {
|
|
233
|
+
enumerable: true,
|
|
234
|
+
get: function () { return reactView.putWorkspaceProject; }
|
|
235
|
+
});
|
|
236
|
+
Object.defineProperty(exports, "readExecutionLogSettings", {
|
|
237
|
+
enumerable: true,
|
|
238
|
+
get: function () { return reactView.readExecutionLogSettings; }
|
|
239
|
+
});
|
|
240
|
+
Object.defineProperty(exports, "saveWorkspace", {
|
|
241
|
+
enumerable: true,
|
|
242
|
+
get: function () { return reactView.saveWorkspace; }
|
|
243
|
+
});
|
|
244
|
+
Object.defineProperty(exports, "syncWorkspace", {
|
|
245
|
+
enumerable: true,
|
|
246
|
+
get: function () { return reactView.syncWorkspace; }
|
|
247
|
+
});
|
|
248
|
+
Object.defineProperty(exports, "trimExecutionRunRecordsToMax", {
|
|
249
|
+
enumerable: true,
|
|
250
|
+
get: function () { return reactView.trimExecutionRunRecordsToMax; }
|
|
251
|
+
});
|
|
252
|
+
Object.defineProperty(exports, "upsertApiCollectionFromJson", {
|
|
253
|
+
enumerable: true,
|
|
254
|
+
get: function () { return reactView.upsertApiCollectionFromJson; }
|
|
255
|
+
});
|
|
256
|
+
Object.defineProperty(exports, "upsertWorkspaceProject", {
|
|
257
|
+
enumerable: true,
|
|
258
|
+
get: function () { return reactView.upsertWorkspaceProject; }
|
|
259
|
+
});
|
|
149
260
|
Object.defineProperty(exports, "validateBlueprintData", {
|
|
150
261
|
enumerable: true,
|
|
151
262
|
get: function () { return reactView.validateBlueprintData; }
|
|
@@ -158,6 +269,10 @@ Object.defineProperty(exports, "validateWorkspaceData", {
|
|
|
158
269
|
enumerable: true,
|
|
159
270
|
get: function () { return reactView.validateWorkspaceData; }
|
|
160
271
|
});
|
|
272
|
+
Object.defineProperty(exports, "writeExecutionLogSettings", {
|
|
273
|
+
enumerable: true,
|
|
274
|
+
get: function () { return reactView.writeExecutionLogSettings; }
|
|
275
|
+
});
|
|
161
276
|
exports.ABUILDER_PACKAGE_NAME = ABUILDER_PACKAGE_NAME;
|
|
162
277
|
exports.ABUILDER_VERSION = ABUILDER_VERSION;
|
|
163
278
|
exports.App = App;
|
package/dist/index.cjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../package.json","../src/version.ts","../src/App.tsx"],"names":["jsx","useState","useMemo","parseOnlinePreviewSearchParams","ReactViewOnlinePreview","ThemeProvider","ReactViewPanel"],"mappings":";;;;;;;;;;AAAA,IAAA,eAAA,GAAA;AAAA,EACE,IAAQ,EAAA,oBAAA;AAAA,EACR,OAAW,EAAA,QAiEb,CAAA;;;AChEO,IAAM,wBAAwB,eAAY,CAAA;AAC1C,IAAM,mBAAmB,eAAY,CAAA;
|
|
1
|
+
{"version":3,"sources":["../package.json","../src/version.ts","../src/App.tsx"],"names":["jsx","forwardRef","App","useState","useMemo","parseOnlinePreviewSearchParams","ReactViewOnlinePreview","ThemeProvider","ReactViewPanel"],"mappings":";;;;;;;;;;AAAA,IAAA,eAAA,GAAA;AAAA,EACE,IAAQ,EAAA,oBAAA;AAAA,EACR,OAAW,EAAA,QAiEb,CAAA;;;AChEO,IAAM,wBAAwB,eAAY,CAAA;AAC1C,IAAM,mBAAmB,eAAY,CAAA;AC8C5C,SAAS,YAAA,CAAa,EAAE,QAAA,EAAqC,EAAA;AAC3D,EAAI,IAAA,OAAO,aAAa,WAAa,EAAA;AACnC,IAAS,QAAA,CAAA,eAAA,CAAgB,SAAU,CAAA,MAAA,CAAO,MAAM,CAAA;AAChD,IAAS,QAAA,CAAA,eAAA,CAAgB,SAAU,CAAA,GAAA,CAAI,OAAO,CAAA;AAC9C,IAAS,QAAA,CAAA,eAAA,CAAgB,QAAQ,KAAQ,GAAA,OAAA;AAAA;AAG3C,EACE,uBAAAA,cAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACC,SAAU,EAAA,mDAAA;AAAA,MACV,YAAW,EAAA,OAAA;AAAA,MAEV;AAAA;AAAA,GACH;AAEJ;AAEa,IAAA,GAAA,GAAMC,gBAAiD,CAAA,SAASC,IAC3E,CAAA;AAAA,EACE,SAAA;AAAA,EACA,WAAA;AAAA,EACA,YAAe,GAAA,MAAA;AAAA,EACf,MAAS,GAAA,IAAA;AAAA,EACT,aAAA;AAAA,EACA,OAAU,GAAA,KAAA;AAAA,EACV,gBAAmB,GAAA,IAAA;AAAA,EACnB,WAAc,GAAA,IAAA;AAAA,EACd,SAAY,GAAA;AACd,CAAA,EACA,GACA,EAAA;AACA,EAAA,MAAM,CAAC,WAAA,EAAa,cAAc,CAAA,GAAIC,eAAwB,MAAM,CAAA;AACpE,EAAA,MAAM,kBAAkB,MAAU,IAAA,WAAA;AAElC,EAAA,MAAM,SACJ,aACC,KAAA,OAAO,WAAW,WAAc,GAAA,MAAA,CAAO,SAAS,MAAS,GAAA,EAAA,CAAA;AAE5D,EAAA,MAAM,aAAgB,GAAAC,aAAA;AAAA,IACpB,MAAMC,yCAA+B,MAAM,CAAA;AAAA,IAC3C,CAAC,MAAM;AAAA,GACT;AAEA,EAAA,IAAI,OAAS,EAAA;AACX,IAAA,sCACG,YACC,EAAA,EAAA,QAAA,kBAAAL,cAAA;AAAA,MAACM,gCAAA;AAAA,MAAA;AAAA,QACC,SAAW,EAAA,gBAAA;AAAA,QACX,WAAW,gBAAkB,EAAA,EAAA;AAAA,QAC7B,MAAQ,EAAA,eAAA;AAAA,QACR,cAAgB,EAAA,cAAA;AAAA,QAChB;AAAA;AAAA,KAEJ,EAAA,CAAA;AAAA;AAIJ,EAAA,IAAI,aAAe,EAAA;AACjB,IAAA,sCACG,YACC,EAAA,EAAA,QAAA,kBAAAN,cAAA;AAAA,MAACM,gCAAA;AAAA,MAAA;AAAA,QACC,WAAW,aAAc,CAAA,SAAA;AAAA,QACzB,mBAAmB,aAAc,CAAA,iBAAA;AAAA,QACjC,MAAQ,EAAA,eAAA;AAAA,QACR,cAAgB,EAAA,cAAA;AAAA,QAChB,SAAA,EAAW,cAAc,SAAa,IAAA;AAAA;AAAA,KAE1C,EAAA,CAAA;AAAA;AAIJ,EAAA,uBACGN,cAAA,CAAAO,gBAAA,EAAA,EAAc,YAA4B,EAAA,YAAA,EAAc,KACvD,EAAA,QAAA,kBAAAP,cAAA;AAAA,IAACQ,wBAAA;AAAA,IAAA;AAAA,MACC,GAAA;AAAA,MACA,SAAA;AAAA,MACA,WAAA;AAAA,MACA,gBAAA;AAAA,MACA,WAAA;AAAA,MACA,MAAQ,EAAA,eAAA;AAAA,MACR,cAAgB,EAAA,cAAA;AAAA,MAChB,SAAA;AAAA,MACA,WAAa,EAAA,qBAAA;AAAA,MACb,cAAgB,EAAA;AAAA;AAAA,GAEpB,EAAA,CAAA;AAEJ,CAAC","file":"index.cjs","sourcesContent":["{\n \"name\": \"@arronqzy/abuilder\",\n \"version\": \"1.1.40\",\n \"description\": \"Abuilder 可视化编辑器 — 安装后即可通过 <App /> 渲染完整应用\",\n \"license\": \"MIT\",\n \"type\": \"module\",\n \"sideEffects\": [\n \"*.css\"\n ],\n \"files\": [\n \"dist\",\n \"README.md\"\n ],\n \"main\": \"./dist/index.cjs\",\n \"module\": \"./dist/index.js\",\n \"types\": \"./dist/index.d.ts\",\n \"exports\": {\n \".\": {\n \"types\": \"./dist/index.d.ts\",\n \"import\": \"./dist/index.js\",\n \"require\": \"./dist/index.cjs\"\n },\n \"./styles.css\": \"./dist/styles.css\",\n \"./vite\": {\n \"types\": \"./dist/vite.d.ts\",\n \"import\": \"./dist/vite.js\",\n \"require\": \"./dist/vite.cjs\",\n \"default\": \"./dist/vite.js\"\n }\n },\n \"scripts\": {\n \"lint\": \"eslint \\\"src/**/*.{ts,tsx}\\\"\",\n \"typecheck\": \"tsc -p tsconfig.json --noEmit --skipLibCheck\",\n \"build:css\": \"node ./scripts/build-css.mjs\",\n \"build:js\": \"tsup && cp src/vite.d.ts dist/vite.d.ts && cp src/vite.d.ts dist/vite.d.cts\",\n \"build\": \"pnpm run build:js && pnpm run build:css\",\n \"prepublishOnly\": \"pnpm run build\",\n \"dev\": \"tsup --watch\"\n },\n \"dependencies\": {\n \"@arronqzy/blueprint-dsl\": \"workspace:*\",\n \"@arronqzy/i18n\": \"workspace:*\",\n \"@arronqzy/react-blueprint\": \"workspace:*\",\n \"@arronqzy/react-view\": \"workspace:*\",\n \"@arronqzy/rx-store\": \"workspace:*\",\n \"@arronqzy/ui\": \"workspace:*\",\n \"@arronqzy/webllm-assistant\": \"workspace:*\"\n },\n \"peerDependencies\": {\n \"react\": \">=18\",\n \"react-dom\": \">=18\"\n },\n \"devDependencies\": {\n \"@arronqzy/eslint-config\": \"workspace:*\",\n \"@arronqzy/typescript-config\": \"workspace:*\",\n \"@types/react\": \"^19.0.1\",\n \"@types/react-dom\": \"^19.0.2\",\n \"@xyflow/react\": \"^12.9.3\",\n \"eslint\": \"^8.57.0\",\n \"postcss\": \"^8.4.49\",\n \"postcss-import\": \"^16.1.0\",\n \"tsup\": \"^8.4.0\",\n \"typescript\": \"^5.5.4\"\n },\n \"publishConfig\": {\n \"access\": \"public\"\n }\n}\n","import packageJson from \"../package.json\";\n\n/** 与 packages/abuilder/package.json 的 name / version 保持同步(构建时从 JSON 读入)。 */\nexport const ABUILDER_PACKAGE_NAME = packageJson.name;\nexport const ABUILDER_VERSION = packageJson.version;\n","import { forwardRef, useMemo, useState, type ReactNode } from \"react\";\nimport { ThemeProvider } from \"@arronqzy/ui\";\nimport type { Locale } from \"@arronqzy/i18n\";\nimport {\n ReactViewOnlinePreview,\n ReactViewPanel,\n parseOnlinePreviewSearchParams,\n type AbuilderViewHandle,\n} from \"@arronqzy/react-view\";\nimport type { WorkspaceProjectRecord } from \"@arronqzy/react-view\";\nimport { ABUILDER_PACKAGE_NAME, ABUILDER_VERSION } from \"./version\";\n\nexport type AbuilderAppProps = {\n className?: string;\n initialZoom?: number;\n /** 编辑器默认主题 */\n defaultTheme?: \"dark\" | \"light\";\n /**\n * 界面语言。省略时按 localStorage → 浏览器语言 → zh-CN 解析。\n */\n locale?: Locale | null;\n /**\n * 在线预览模式的 URL 查询串。\n * 默认读取 `window.location.search`;含 `?preview=online&projectId=...` 时进入预览页。\n */\n previewSearch?: string;\n /**\n * 是否为预览模式。`true` 时根据 `initialWorkspace` 直接渲染预览页;`false` 为编辑面板。\n * @default false\n */\n preview?: boolean;\n /**\n * 外部传入的完整工作区数据(面板 + 蓝图)。\n * 编辑模式:挂载后按这份数据完整渲染;预览模式:直接渲染预览页。\n * 省略或空:首次显示空画布 / 空蓝图,不会自动选中 IndexedDB 中的工作区。\n */\n initialWorkspace?: WorkspaceProjectRecord | null;\n /**\n * 按 IndexedDB id 打开工作区(不 remount)。\n * 与 `initialWorkspace` 同时存在时:首次优先完整记录;之后 id 变化从 IndexedDB 打开。\n */\n workspaceId?: string | null;\n /**\n * 隔离 IndexedDB / localStorage / BroadcastChannel。\n * 同一页面挂多个 App 时传入不同值,避免工作区、蓝图库、预览缓存互相覆盖。\n * 省略或空字符串保持历史全局库名。\n */\n nameSpace?: string | null;\n};\n\nfunction PreviewShell({ children }: { children: ReactNode }) {\n if (typeof document !== \"undefined\") {\n document.documentElement.classList.remove(\"dark\");\n document.documentElement.classList.add(\"light\");\n document.documentElement.dataset.theme = \"light\";\n }\n\n return (\n <div\n className=\"light min-h-[100vh] w-full bg-white text-gray-900\"\n data-theme=\"light\"\n >\n {children}\n </div>\n );\n}\n\nexport const App = forwardRef<AbuilderViewHandle, AbuilderAppProps>(function App(\n {\n className,\n initialZoom,\n defaultTheme = \"dark\",\n locale = null,\n previewSearch,\n preview = false,\n initialWorkspace = null,\n workspaceId = null,\n nameSpace = null,\n },\n ref\n) {\n const [localeState, setLocaleState] = useState<Locale | null>(locale);\n const effectiveLocale = locale ?? localeState;\n\n const search =\n previewSearch ??\n (typeof window !== \"undefined\" ? window.location.search : \"\");\n\n const previewParams = useMemo(\n () => parseOnlinePreviewSearchParams(search),\n [search]\n );\n\n if (preview) {\n return (\n <PreviewShell>\n <ReactViewOnlinePreview\n workspace={initialWorkspace}\n projectId={initialWorkspace?.id}\n locale={effectiveLocale}\n onLocaleChange={setLocaleState}\n nameSpace={nameSpace}\n />\n </PreviewShell>\n );\n }\n\n if (previewParams) {\n return (\n <PreviewShell>\n <ReactViewOnlinePreview\n projectId={previewParams.projectId}\n previewInstanceId={previewParams.previewInstanceId}\n locale={effectiveLocale}\n onLocaleChange={setLocaleState}\n nameSpace={previewParams.nameSpace ?? nameSpace}\n />\n </PreviewShell>\n );\n }\n\n return (\n <ThemeProvider defaultTheme={defaultTheme} enableSystem={false}>\n <ReactViewPanel\n ref={ref}\n className={className}\n initialZoom={initialZoom}\n initialWorkspace={initialWorkspace}\n workspaceId={workspaceId}\n locale={effectiveLocale}\n onLocaleChange={setLocaleState}\n nameSpace={nameSpace}\n packageName={ABUILDER_PACKAGE_NAME}\n packageVersion={ABUILDER_VERSION}\n />\n </ThemeProvider>\n );\n});\n"]}
|
package/dist/index.d.cts
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
import * as
|
|
1
|
+
import * as react from 'react';
|
|
2
2
|
import { Locale } from '@arronqzy/i18n';
|
|
3
3
|
export { Locale } from '@arronqzy/i18n';
|
|
4
|
-
import { WorkspaceProjectRecord } from '@arronqzy/react-view';
|
|
5
|
-
export { AbuilderEventName, AbuilderEventPayloadMap, AbuilderEvents, ApiCollectionUploadStartEventPayload, ApiCollectionUploadSuccessEventPayload, GetPreviewSnapshotOptions, I18nProvider, ParseCheckResult, ReactViewOnlinePreview, ReactViewPanel, ReactViewPanelProps, WorkspaceAddEventPayload, WorkspaceData, WorkspaceParseCheckResult, WorkspaceProjectListItem, WorkspaceProjectRecord, WorkspaceSyncEventPayload, addEventSubscription, clearWorkspaceProjects, createEmptyWorkspace, createWorkspaceProjectId, deleteWorkspaceProject, getPreviewSnapshot, listWorkspaceProjects, parseBlueprintData, parseOnlinePreviewSearchParams, parseViewData, parseWorkspaceData, validateBlueprintData, validateViewData, validateWorkspaceData } from '@arronqzy/react-view';
|
|
4
|
+
import { WorkspaceProjectRecord, AbuilderViewHandle } from '@arronqzy/react-view';
|
|
5
|
+
export { AbuilderEventName, AbuilderEventPayloadMap, AbuilderEvents, AbuilderStorageClearResult, AbuilderViewHandle, AddEventSubscriptionOptions, ApiCollectionChangedEventPayload, ApiCollectionRecord, ApiCollectionUploadStartEventPayload, ApiCollectionUploadSuccessEventPayload, BlueprintLibraryChangedEventPayload, BlueprintLibraryListItem, BlueprintLibraryRecord, ExecutionLogSettings, ExecutionRunRecord, GetPreviewSnapshotOptions, I18nProvider, ParseCheckResult, PutWorkspaceProjectOptions, ReactViewOnlinePreview, ReactViewPanel, ReactViewPanelProps, UpsertApiCollectionInput, UpsertApiCollectionResult, WorkspaceAddEventPayload, WorkspaceData, WorkspaceDeleteEventPayload, WorkspaceParseCheckResult, WorkspaceProjectListItem, WorkspaceProjectRecord, WorkspaceSyncEventPayload, addEventSubscription, clearAbuilderStorage, clearAllExecutionRunRecords, clearApiCollections, clearBlueprintLibrary, clearWorkspaceProjects, createEmptyWorkspace, createWorkspace, createWorkspaceProjectId, deleteApiCollection, deleteBlueprintLibraryRecord, deleteExecutionRunRecord, deleteWorkspaceProject, getBlueprintLibraryRecord, getCurrentWorkspace, getExecutionRunRecord, getPreviewSnapshot, getWorkspaceProject, listApiCollectionRecords, listBlueprintLibrary, listExecutionRunRecords, listWorkspaceProjects, openWorkspace, parseBlueprintData, parseOnlinePreviewSearchParams, parseViewData, parseWorkspaceData, purgeExecutionRunsOlderThan, putApiCollection, putBlueprintLibraryRecord, putExecutionRunRecord, putWorkspaceProject, readExecutionLogSettings, saveWorkspace, syncWorkspace, trimExecutionRunRecordsToMax, upsertApiCollectionFromJson, upsertWorkspaceProject, validateBlueprintData, validateViewData, validateWorkspaceData, writeExecutionLogSettings } from '@arronqzy/react-view';
|
|
6
6
|
|
|
7
7
|
type AbuilderAppProps = {
|
|
8
8
|
className?: string;
|
|
@@ -29,6 +29,11 @@ type AbuilderAppProps = {
|
|
|
29
29
|
* 省略或空:首次显示空画布 / 空蓝图,不会自动选中 IndexedDB 中的工作区。
|
|
30
30
|
*/
|
|
31
31
|
initialWorkspace?: WorkspaceProjectRecord | null;
|
|
32
|
+
/**
|
|
33
|
+
* 按 IndexedDB id 打开工作区(不 remount)。
|
|
34
|
+
* 与 `initialWorkspace` 同时存在时:首次优先完整记录;之后 id 变化从 IndexedDB 打开。
|
|
35
|
+
*/
|
|
36
|
+
workspaceId?: string | null;
|
|
32
37
|
/**
|
|
33
38
|
* 隔离 IndexedDB / localStorage / BroadcastChannel。
|
|
34
39
|
* 同一页面挂多个 App 时传入不同值,避免工作区、蓝图库、预览缓存互相覆盖。
|
|
@@ -36,7 +41,7 @@ type AbuilderAppProps = {
|
|
|
36
41
|
*/
|
|
37
42
|
nameSpace?: string | null;
|
|
38
43
|
};
|
|
39
|
-
declare
|
|
44
|
+
declare const App: react.ForwardRefExoticComponent<AbuilderAppProps & react.RefAttributes<AbuilderViewHandle>>;
|
|
40
45
|
|
|
41
46
|
/** 与 packages/abuilder/package.json 的 name / version 保持同步(构建时从 JSON 读入)。 */
|
|
42
47
|
declare const ABUILDER_PACKAGE_NAME: string;
|
package/dist/index.d.ts
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
import * as
|
|
1
|
+
import * as react from 'react';
|
|
2
2
|
import { Locale } from '@arronqzy/i18n';
|
|
3
3
|
export { Locale } from '@arronqzy/i18n';
|
|
4
|
-
import { WorkspaceProjectRecord } from '@arronqzy/react-view';
|
|
5
|
-
export { AbuilderEventName, AbuilderEventPayloadMap, AbuilderEvents, ApiCollectionUploadStartEventPayload, ApiCollectionUploadSuccessEventPayload, GetPreviewSnapshotOptions, I18nProvider, ParseCheckResult, ReactViewOnlinePreview, ReactViewPanel, ReactViewPanelProps, WorkspaceAddEventPayload, WorkspaceData, WorkspaceParseCheckResult, WorkspaceProjectListItem, WorkspaceProjectRecord, WorkspaceSyncEventPayload, addEventSubscription, clearWorkspaceProjects, createEmptyWorkspace, createWorkspaceProjectId, deleteWorkspaceProject, getPreviewSnapshot, listWorkspaceProjects, parseBlueprintData, parseOnlinePreviewSearchParams, parseViewData, parseWorkspaceData, validateBlueprintData, validateViewData, validateWorkspaceData } from '@arronqzy/react-view';
|
|
4
|
+
import { WorkspaceProjectRecord, AbuilderViewHandle } from '@arronqzy/react-view';
|
|
5
|
+
export { AbuilderEventName, AbuilderEventPayloadMap, AbuilderEvents, AbuilderStorageClearResult, AbuilderViewHandle, AddEventSubscriptionOptions, ApiCollectionChangedEventPayload, ApiCollectionRecord, ApiCollectionUploadStartEventPayload, ApiCollectionUploadSuccessEventPayload, BlueprintLibraryChangedEventPayload, BlueprintLibraryListItem, BlueprintLibraryRecord, ExecutionLogSettings, ExecutionRunRecord, GetPreviewSnapshotOptions, I18nProvider, ParseCheckResult, PutWorkspaceProjectOptions, ReactViewOnlinePreview, ReactViewPanel, ReactViewPanelProps, UpsertApiCollectionInput, UpsertApiCollectionResult, WorkspaceAddEventPayload, WorkspaceData, WorkspaceDeleteEventPayload, WorkspaceParseCheckResult, WorkspaceProjectListItem, WorkspaceProjectRecord, WorkspaceSyncEventPayload, addEventSubscription, clearAbuilderStorage, clearAllExecutionRunRecords, clearApiCollections, clearBlueprintLibrary, clearWorkspaceProjects, createEmptyWorkspace, createWorkspace, createWorkspaceProjectId, deleteApiCollection, deleteBlueprintLibraryRecord, deleteExecutionRunRecord, deleteWorkspaceProject, getBlueprintLibraryRecord, getCurrentWorkspace, getExecutionRunRecord, getPreviewSnapshot, getWorkspaceProject, listApiCollectionRecords, listBlueprintLibrary, listExecutionRunRecords, listWorkspaceProjects, openWorkspace, parseBlueprintData, parseOnlinePreviewSearchParams, parseViewData, parseWorkspaceData, purgeExecutionRunsOlderThan, putApiCollection, putBlueprintLibraryRecord, putExecutionRunRecord, putWorkspaceProject, readExecutionLogSettings, saveWorkspace, syncWorkspace, trimExecutionRunRecordsToMax, upsertApiCollectionFromJson, upsertWorkspaceProject, validateBlueprintData, validateViewData, validateWorkspaceData, writeExecutionLogSettings } from '@arronqzy/react-view';
|
|
6
6
|
|
|
7
7
|
type AbuilderAppProps = {
|
|
8
8
|
className?: string;
|
|
@@ -29,6 +29,11 @@ type AbuilderAppProps = {
|
|
|
29
29
|
* 省略或空:首次显示空画布 / 空蓝图,不会自动选中 IndexedDB 中的工作区。
|
|
30
30
|
*/
|
|
31
31
|
initialWorkspace?: WorkspaceProjectRecord | null;
|
|
32
|
+
/**
|
|
33
|
+
* 按 IndexedDB id 打开工作区(不 remount)。
|
|
34
|
+
* 与 `initialWorkspace` 同时存在时:首次优先完整记录;之后 id 变化从 IndexedDB 打开。
|
|
35
|
+
*/
|
|
36
|
+
workspaceId?: string | null;
|
|
32
37
|
/**
|
|
33
38
|
* 隔离 IndexedDB / localStorage / BroadcastChannel。
|
|
34
39
|
* 同一页面挂多个 App 时传入不同值,避免工作区、蓝图库、预览缓存互相覆盖。
|
|
@@ -36,7 +41,7 @@ type AbuilderAppProps = {
|
|
|
36
41
|
*/
|
|
37
42
|
nameSpace?: string | null;
|
|
38
43
|
};
|
|
39
|
-
declare
|
|
44
|
+
declare const App: react.ForwardRefExoticComponent<AbuilderAppProps & react.RefAttributes<AbuilderViewHandle>>;
|
|
40
45
|
|
|
41
46
|
/** 与 packages/abuilder/package.json 的 name / version 保持同步(构建时从 JSON 读入)。 */
|
|
42
47
|
declare const ABUILDER_PACKAGE_NAME: string;
|
package/dist/index.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import { useState, useMemo } from 'react';
|
|
1
|
+
import { forwardRef, useState, useMemo } from 'react';
|
|
2
2
|
import { ThemeProvider } from '@arronqzy/ui';
|
|
3
3
|
import { parseOnlinePreviewSearchParams, ReactViewOnlinePreview, ReactViewPanel } from '@arronqzy/react-view';
|
|
4
|
-
export { AbuilderEvents, I18nProvider, ReactViewOnlinePreview, ReactViewPanel, addEventSubscription, clearWorkspaceProjects, createEmptyWorkspace, createWorkspaceProjectId, deleteWorkspaceProject, getPreviewSnapshot, listWorkspaceProjects, parseBlueprintData, parseOnlinePreviewSearchParams, parseViewData, parseWorkspaceData, validateBlueprintData, validateViewData, validateWorkspaceData } from '@arronqzy/react-view';
|
|
4
|
+
export { AbuilderEvents, I18nProvider, ReactViewOnlinePreview, ReactViewPanel, addEventSubscription, clearAbuilderStorage, clearAllExecutionRunRecords, clearApiCollections, clearBlueprintLibrary, clearWorkspaceProjects, createEmptyWorkspace, createWorkspace, createWorkspaceProjectId, deleteApiCollection, deleteBlueprintLibraryRecord, deleteExecutionRunRecord, deleteWorkspaceProject, getBlueprintLibraryRecord, getCurrentWorkspace, getExecutionRunRecord, getPreviewSnapshot, getWorkspaceProject, listApiCollectionRecords, listBlueprintLibrary, listExecutionRunRecords, listWorkspaceProjects, openWorkspace, parseBlueprintData, parseOnlinePreviewSearchParams, parseViewData, parseWorkspaceData, purgeExecutionRunsOlderThan, putApiCollection, putBlueprintLibraryRecord, putExecutionRunRecord, putWorkspaceProject, readExecutionLogSettings, saveWorkspace, syncWorkspace, trimExecutionRunRecordsToMax, upsertApiCollectionFromJson, upsertWorkspaceProject, validateBlueprintData, validateViewData, validateWorkspaceData, writeExecutionLogSettings } from '@arronqzy/react-view';
|
|
5
5
|
import { jsx } from 'react/jsx-runtime';
|
|
6
6
|
|
|
7
7
|
// src/App.tsx
|
|
@@ -9,7 +9,7 @@ import { jsx } from 'react/jsx-runtime';
|
|
|
9
9
|
// package.json
|
|
10
10
|
var package_default = {
|
|
11
11
|
name: "@arronqzy/abuilder",
|
|
12
|
-
version: "1.1.
|
|
12
|
+
version: "1.1.40"};
|
|
13
13
|
|
|
14
14
|
// src/version.ts
|
|
15
15
|
var ABUILDER_PACKAGE_NAME = package_default.name;
|
|
@@ -29,7 +29,7 @@ function PreviewShell({ children }) {
|
|
|
29
29
|
}
|
|
30
30
|
);
|
|
31
31
|
}
|
|
32
|
-
|
|
32
|
+
var App = forwardRef(function App2({
|
|
33
33
|
className,
|
|
34
34
|
initialZoom,
|
|
35
35
|
defaultTheme = "dark",
|
|
@@ -37,8 +37,9 @@ function App({
|
|
|
37
37
|
previewSearch,
|
|
38
38
|
preview = false,
|
|
39
39
|
initialWorkspace = null,
|
|
40
|
+
workspaceId = null,
|
|
40
41
|
nameSpace = null
|
|
41
|
-
}) {
|
|
42
|
+
}, ref) {
|
|
42
43
|
const [localeState, setLocaleState] = useState(locale);
|
|
43
44
|
const effectiveLocale = locale ?? localeState;
|
|
44
45
|
const search = previewSearch ?? (typeof window !== "undefined" ? window.location.search : "");
|
|
@@ -73,9 +74,11 @@ function App({
|
|
|
73
74
|
return /* @__PURE__ */ jsx(ThemeProvider, { defaultTheme, enableSystem: false, children: /* @__PURE__ */ jsx(
|
|
74
75
|
ReactViewPanel,
|
|
75
76
|
{
|
|
77
|
+
ref,
|
|
76
78
|
className,
|
|
77
79
|
initialZoom,
|
|
78
80
|
initialWorkspace,
|
|
81
|
+
workspaceId,
|
|
79
82
|
locale: effectiveLocale,
|
|
80
83
|
onLocaleChange: setLocaleState,
|
|
81
84
|
nameSpace,
|
|
@@ -83,7 +86,7 @@ function App({
|
|
|
83
86
|
packageVersion: ABUILDER_VERSION
|
|
84
87
|
}
|
|
85
88
|
) });
|
|
86
|
-
}
|
|
89
|
+
});
|
|
87
90
|
|
|
88
91
|
export { ABUILDER_PACKAGE_NAME, ABUILDER_VERSION, App };
|
|
89
92
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../package.json","../src/version.ts","../src/App.tsx"],"names":[],"mappings":";;;;;;;;;AAAA,IAAA,eAAA,GAAA;AAAA,EACE,IAAQ,EAAA,oBAAA;AAAA,EACR,OAAW,EAAA,QAiEb,CAAA;;;AChEO,IAAM,wBAAwB,eAAY,CAAA;AAC1C,IAAM,mBAAmB,eAAY,CAAA;
|
|
1
|
+
{"version":3,"sources":["../package.json","../src/version.ts","../src/App.tsx"],"names":["App"],"mappings":";;;;;;;;;AAAA,IAAA,eAAA,GAAA;AAAA,EACE,IAAQ,EAAA,oBAAA;AAAA,EACR,OAAW,EAAA,QAiEb,CAAA;;;AChEO,IAAM,wBAAwB,eAAY,CAAA;AAC1C,IAAM,mBAAmB,eAAY,CAAA;AC8C5C,SAAS,YAAA,CAAa,EAAE,QAAA,EAAqC,EAAA;AAC3D,EAAI,IAAA,OAAO,aAAa,WAAa,EAAA;AACnC,IAAS,QAAA,CAAA,eAAA,CAAgB,SAAU,CAAA,MAAA,CAAO,MAAM,CAAA;AAChD,IAAS,QAAA,CAAA,eAAA,CAAgB,SAAU,CAAA,GAAA,CAAI,OAAO,CAAA;AAC9C,IAAS,QAAA,CAAA,eAAA,CAAgB,QAAQ,KAAQ,GAAA,OAAA;AAAA;AAG3C,EACE,uBAAA,GAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACC,SAAU,EAAA,mDAAA;AAAA,MACV,YAAW,EAAA,OAAA;AAAA,MAEV;AAAA;AAAA,GACH;AAEJ;AAEa,IAAA,GAAA,GAAM,UAAiD,CAAA,SAASA,IAC3E,CAAA;AAAA,EACE,SAAA;AAAA,EACA,WAAA;AAAA,EACA,YAAe,GAAA,MAAA;AAAA,EACf,MAAS,GAAA,IAAA;AAAA,EACT,aAAA;AAAA,EACA,OAAU,GAAA,KAAA;AAAA,EACV,gBAAmB,GAAA,IAAA;AAAA,EACnB,WAAc,GAAA,IAAA;AAAA,EACd,SAAY,GAAA;AACd,CAAA,EACA,GACA,EAAA;AACA,EAAA,MAAM,CAAC,WAAA,EAAa,cAAc,CAAA,GAAI,SAAwB,MAAM,CAAA;AACpE,EAAA,MAAM,kBAAkB,MAAU,IAAA,WAAA;AAElC,EAAA,MAAM,SACJ,aACC,KAAA,OAAO,WAAW,WAAc,GAAA,MAAA,CAAO,SAAS,MAAS,GAAA,EAAA,CAAA;AAE5D,EAAA,MAAM,aAAgB,GAAA,OAAA;AAAA,IACpB,MAAM,+BAA+B,MAAM,CAAA;AAAA,IAC3C,CAAC,MAAM;AAAA,GACT;AAEA,EAAA,IAAI,OAAS,EAAA;AACX,IAAA,2BACG,YACC,EAAA,EAAA,QAAA,kBAAA,GAAA;AAAA,MAAC,sBAAA;AAAA,MAAA;AAAA,QACC,SAAW,EAAA,gBAAA;AAAA,QACX,WAAW,gBAAkB,EAAA,EAAA;AAAA,QAC7B,MAAQ,EAAA,eAAA;AAAA,QACR,cAAgB,EAAA,cAAA;AAAA,QAChB;AAAA;AAAA,KAEJ,EAAA,CAAA;AAAA;AAIJ,EAAA,IAAI,aAAe,EAAA;AACjB,IAAA,2BACG,YACC,EAAA,EAAA,QAAA,kBAAA,GAAA;AAAA,MAAC,sBAAA;AAAA,MAAA;AAAA,QACC,WAAW,aAAc,CAAA,SAAA;AAAA,QACzB,mBAAmB,aAAc,CAAA,iBAAA;AAAA,QACjC,MAAQ,EAAA,eAAA;AAAA,QACR,cAAgB,EAAA,cAAA;AAAA,QAChB,SAAA,EAAW,cAAc,SAAa,IAAA;AAAA;AAAA,KAE1C,EAAA,CAAA;AAAA;AAIJ,EAAA,uBACG,GAAA,CAAA,aAAA,EAAA,EAAc,YAA4B,EAAA,YAAA,EAAc,KACvD,EAAA,QAAA,kBAAA,GAAA;AAAA,IAAC,cAAA;AAAA,IAAA;AAAA,MACC,GAAA;AAAA,MACA,SAAA;AAAA,MACA,WAAA;AAAA,MACA,gBAAA;AAAA,MACA,WAAA;AAAA,MACA,MAAQ,EAAA,eAAA;AAAA,MACR,cAAgB,EAAA,cAAA;AAAA,MAChB,SAAA;AAAA,MACA,WAAa,EAAA,qBAAA;AAAA,MACb,cAAgB,EAAA;AAAA;AAAA,GAEpB,EAAA,CAAA;AAEJ,CAAC","file":"index.js","sourcesContent":["{\n \"name\": \"@arronqzy/abuilder\",\n \"version\": \"1.1.40\",\n \"description\": \"Abuilder 可视化编辑器 — 安装后即可通过 <App /> 渲染完整应用\",\n \"license\": \"MIT\",\n \"type\": \"module\",\n \"sideEffects\": [\n \"*.css\"\n ],\n \"files\": [\n \"dist\",\n \"README.md\"\n ],\n \"main\": \"./dist/index.cjs\",\n \"module\": \"./dist/index.js\",\n \"types\": \"./dist/index.d.ts\",\n \"exports\": {\n \".\": {\n \"types\": \"./dist/index.d.ts\",\n \"import\": \"./dist/index.js\",\n \"require\": \"./dist/index.cjs\"\n },\n \"./styles.css\": \"./dist/styles.css\",\n \"./vite\": {\n \"types\": \"./dist/vite.d.ts\",\n \"import\": \"./dist/vite.js\",\n \"require\": \"./dist/vite.cjs\",\n \"default\": \"./dist/vite.js\"\n }\n },\n \"scripts\": {\n \"lint\": \"eslint \\\"src/**/*.{ts,tsx}\\\"\",\n \"typecheck\": \"tsc -p tsconfig.json --noEmit --skipLibCheck\",\n \"build:css\": \"node ./scripts/build-css.mjs\",\n \"build:js\": \"tsup && cp src/vite.d.ts dist/vite.d.ts && cp src/vite.d.ts dist/vite.d.cts\",\n \"build\": \"pnpm run build:js && pnpm run build:css\",\n \"prepublishOnly\": \"pnpm run build\",\n \"dev\": \"tsup --watch\"\n },\n \"dependencies\": {\n \"@arronqzy/blueprint-dsl\": \"workspace:*\",\n \"@arronqzy/i18n\": \"workspace:*\",\n \"@arronqzy/react-blueprint\": \"workspace:*\",\n \"@arronqzy/react-view\": \"workspace:*\",\n \"@arronqzy/rx-store\": \"workspace:*\",\n \"@arronqzy/ui\": \"workspace:*\",\n \"@arronqzy/webllm-assistant\": \"workspace:*\"\n },\n \"peerDependencies\": {\n \"react\": \">=18\",\n \"react-dom\": \">=18\"\n },\n \"devDependencies\": {\n \"@arronqzy/eslint-config\": \"workspace:*\",\n \"@arronqzy/typescript-config\": \"workspace:*\",\n \"@types/react\": \"^19.0.1\",\n \"@types/react-dom\": \"^19.0.2\",\n \"@xyflow/react\": \"^12.9.3\",\n \"eslint\": \"^8.57.0\",\n \"postcss\": \"^8.4.49\",\n \"postcss-import\": \"^16.1.0\",\n \"tsup\": \"^8.4.0\",\n \"typescript\": \"^5.5.4\"\n },\n \"publishConfig\": {\n \"access\": \"public\"\n }\n}\n","import packageJson from \"../package.json\";\n\n/** 与 packages/abuilder/package.json 的 name / version 保持同步(构建时从 JSON 读入)。 */\nexport const ABUILDER_PACKAGE_NAME = packageJson.name;\nexport const ABUILDER_VERSION = packageJson.version;\n","import { forwardRef, useMemo, useState, type ReactNode } from \"react\";\nimport { ThemeProvider } from \"@arronqzy/ui\";\nimport type { Locale } from \"@arronqzy/i18n\";\nimport {\n ReactViewOnlinePreview,\n ReactViewPanel,\n parseOnlinePreviewSearchParams,\n type AbuilderViewHandle,\n} from \"@arronqzy/react-view\";\nimport type { WorkspaceProjectRecord } from \"@arronqzy/react-view\";\nimport { ABUILDER_PACKAGE_NAME, ABUILDER_VERSION } from \"./version\";\n\nexport type AbuilderAppProps = {\n className?: string;\n initialZoom?: number;\n /** 编辑器默认主题 */\n defaultTheme?: \"dark\" | \"light\";\n /**\n * 界面语言。省略时按 localStorage → 浏览器语言 → zh-CN 解析。\n */\n locale?: Locale | null;\n /**\n * 在线预览模式的 URL 查询串。\n * 默认读取 `window.location.search`;含 `?preview=online&projectId=...` 时进入预览页。\n */\n previewSearch?: string;\n /**\n * 是否为预览模式。`true` 时根据 `initialWorkspace` 直接渲染预览页;`false` 为编辑面板。\n * @default false\n */\n preview?: boolean;\n /**\n * 外部传入的完整工作区数据(面板 + 蓝图)。\n * 编辑模式:挂载后按这份数据完整渲染;预览模式:直接渲染预览页。\n * 省略或空:首次显示空画布 / 空蓝图,不会自动选中 IndexedDB 中的工作区。\n */\n initialWorkspace?: WorkspaceProjectRecord | null;\n /**\n * 按 IndexedDB id 打开工作区(不 remount)。\n * 与 `initialWorkspace` 同时存在时:首次优先完整记录;之后 id 变化从 IndexedDB 打开。\n */\n workspaceId?: string | null;\n /**\n * 隔离 IndexedDB / localStorage / BroadcastChannel。\n * 同一页面挂多个 App 时传入不同值,避免工作区、蓝图库、预览缓存互相覆盖。\n * 省略或空字符串保持历史全局库名。\n */\n nameSpace?: string | null;\n};\n\nfunction PreviewShell({ children }: { children: ReactNode }) {\n if (typeof document !== \"undefined\") {\n document.documentElement.classList.remove(\"dark\");\n document.documentElement.classList.add(\"light\");\n document.documentElement.dataset.theme = \"light\";\n }\n\n return (\n <div\n className=\"light min-h-[100vh] w-full bg-white text-gray-900\"\n data-theme=\"light\"\n >\n {children}\n </div>\n );\n}\n\nexport const App = forwardRef<AbuilderViewHandle, AbuilderAppProps>(function App(\n {\n className,\n initialZoom,\n defaultTheme = \"dark\",\n locale = null,\n previewSearch,\n preview = false,\n initialWorkspace = null,\n workspaceId = null,\n nameSpace = null,\n },\n ref\n) {\n const [localeState, setLocaleState] = useState<Locale | null>(locale);\n const effectiveLocale = locale ?? localeState;\n\n const search =\n previewSearch ??\n (typeof window !== \"undefined\" ? window.location.search : \"\");\n\n const previewParams = useMemo(\n () => parseOnlinePreviewSearchParams(search),\n [search]\n );\n\n if (preview) {\n return (\n <PreviewShell>\n <ReactViewOnlinePreview\n workspace={initialWorkspace}\n projectId={initialWorkspace?.id}\n locale={effectiveLocale}\n onLocaleChange={setLocaleState}\n nameSpace={nameSpace}\n />\n </PreviewShell>\n );\n }\n\n if (previewParams) {\n return (\n <PreviewShell>\n <ReactViewOnlinePreview\n projectId={previewParams.projectId}\n previewInstanceId={previewParams.previewInstanceId}\n locale={effectiveLocale}\n onLocaleChange={setLocaleState}\n nameSpace={previewParams.nameSpace ?? nameSpace}\n />\n </PreviewShell>\n );\n }\n\n return (\n <ThemeProvider defaultTheme={defaultTheme} enableSystem={false}>\n <ReactViewPanel\n ref={ref}\n className={className}\n initialZoom={initialZoom}\n initialWorkspace={initialWorkspace}\n workspaceId={workspaceId}\n locale={effectiveLocale}\n onLocaleChange={setLocaleState}\n nameSpace={nameSpace}\n packageName={ABUILDER_PACKAGE_NAME}\n packageVersion={ABUILDER_VERSION}\n />\n </ThemeProvider>\n );\n});\n"]}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@arronqzy/abuilder",
|
|
3
|
-
"version": "1.1.
|
|
3
|
+
"version": "1.1.40",
|
|
4
4
|
"description": "Abuilder 可视化编辑器 — 安装后即可通过 <App /> 渲染完整应用",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"type": "module",
|
|
@@ -29,13 +29,13 @@
|
|
|
29
29
|
}
|
|
30
30
|
},
|
|
31
31
|
"dependencies": {
|
|
32
|
-
"@arronqzy/react-blueprint": "1.0.22",
|
|
33
|
-
"@arronqzy/react-view": "1.0.37",
|
|
34
|
-
"@arronqzy/rx-store": "1.0.8",
|
|
35
32
|
"@arronqzy/blueprint-dsl": "1.0.17",
|
|
33
|
+
"@arronqzy/react-blueprint": "1.0.24",
|
|
34
|
+
"@arronqzy/rx-store": "1.0.8",
|
|
35
|
+
"@arronqzy/i18n": "0.1.17",
|
|
36
36
|
"@arronqzy/ui": "1.0.10",
|
|
37
|
-
"@arronqzy/
|
|
38
|
-
"@arronqzy/
|
|
37
|
+
"@arronqzy/react-view": "1.0.39",
|
|
38
|
+
"@arronqzy/webllm-assistant": "0.1.16"
|
|
39
39
|
},
|
|
40
40
|
"peerDependencies": {
|
|
41
41
|
"react": ">=18",
|