@next-bricks/vb-experiment 1.3.18 → 1.3.20
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/dist/bricks.json +4 -4
- package/dist/chunks/{1563.e386a37f.js → 1563.f975c5ed.js} +2 -2
- package/dist/chunks/1563.f975c5ed.js.map +1 -0
- package/dist/chunks/246.edb40dcb.js +2 -0
- package/dist/chunks/{246.3c1287e4.js.map → 246.edb40dcb.js.map} +1 -1
- package/dist/chunks/{3171.bee73fe6.js → 3171.95cc1b7d.js} +2 -2
- package/dist/chunks/{3171.bee73fe6.js.map → 3171.95cc1b7d.js.map} +1 -1
- package/dist/chunks/{3483.c5ce1021.js → 3483.023fac95.js} +3 -3
- package/dist/chunks/{3483.c5ce1021.js.map → 3483.023fac95.js.map} +1 -1
- package/dist/chunks/{4212.c9d10eb9.js → 4212.0034ca30.js} +2 -2
- package/dist/chunks/{4212.c9d10eb9.js.map → 4212.0034ca30.js.map} +1 -1
- package/dist/chunks/4765.c8d6b7c7.js +2 -0
- package/dist/chunks/{7146.a8c80bcf.js.map → 4765.c8d6b7c7.js.map} +1 -1
- package/dist/chunks/{4837.05a838ee.js → 4837.208ae445.js} +2 -2
- package/dist/chunks/{7218.b5820c83.js.map → 4837.208ae445.js.map} +1 -1
- package/dist/chunks/{5552.96d83691.js → 5552.7cd1c4db.js} +2 -2
- package/dist/chunks/{5552.96d83691.js.map → 5552.7cd1c4db.js.map} +1 -1
- package/dist/chunks/{6746.1bd8aaa8.js → 6746.c32f150c.js} +4 -4
- package/dist/chunks/6746.c32f150c.js.map +1 -0
- package/dist/chunks/7146.fae544eb.js +2 -0
- package/dist/chunks/{4765.3a3c2ed3.js.map → 7146.fae544eb.js.map} +1 -1
- package/dist/chunks/{7218.b5820c83.js → 7218.00131d23.js} +2 -2
- package/dist/chunks/{4837.05a838ee.js.map → 7218.00131d23.js.map} +1 -1
- package/dist/chunks/948.7f8e7e72.js +3 -0
- package/dist/chunks/948.7f8e7e72.js.map +1 -0
- package/dist/chunks/{app-playground.12d062e1.js → app-playground.bbfe9735.js} +2 -2
- package/dist/chunks/app-playground.bbfe9735.js.map +1 -0
- package/dist/chunks/{app-preview.12cdd3e2.js → app-preview.9d068eec.js} +2 -2
- package/dist/chunks/app-preview.9d068eec.js.map +1 -0
- package/dist/chunks/export-as-source-files.3cabf001.js +2 -0
- package/dist/chunks/{export-as-source-files.5accf195.js.map → export-as-source-files.3cabf001.js.map} +1 -1
- package/dist/chunks/export-widgets.b6325df8.js +2 -0
- package/dist/chunks/{export-widgets.1562a8ae.js.map → export-widgets.b6325df8.js.map} +1 -1
- package/dist/chunks/main.a0f77374.js +2 -0
- package/dist/chunks/{main.4a8e170f.js.map → main.a0f77374.js.map} +1 -1
- package/dist/chunks/tsx-playground.7cc3ac8d.js +2 -0
- package/dist/chunks/tsx-playground.7cc3ac8d.js.map +1 -0
- package/dist/examples.json +7 -1
- package/dist/index.a6ac7da7.js +2 -0
- package/dist/index.a6ac7da7.js.map +1 -0
- package/dist/manifest.json +29 -19
- package/dist-types/app-playground/index.d.ts +7 -2
- package/dist-types/app-preview/index.d.ts +4 -1
- package/dist-types/tsx-playground/index.d.ts +16 -2
- package/docs/app-playground.md +121 -0
- package/docs/app-playground.react.md +105 -0
- package/docs/app-preview.md +37 -0
- package/docs/app-preview.react.md +51 -0
- package/docs/tsx-playground.md +68 -33
- package/docs/tsx-playground.react.md +139 -0
- package/package.json +5 -3
- package/dist/chunks/1563.e386a37f.js.map +0 -1
- package/dist/chunks/246.3c1287e4.js +0 -2
- package/dist/chunks/4765.3a3c2ed3.js +0 -2
- package/dist/chunks/6746.1bd8aaa8.js.map +0 -1
- package/dist/chunks/7146.a8c80bcf.js +0 -2
- package/dist/chunks/948.1b677be1.js +0 -3
- package/dist/chunks/948.1b677be1.js.map +0 -1
- package/dist/chunks/app-playground.12d062e1.js.map +0 -1
- package/dist/chunks/app-preview.12cdd3e2.js.map +0 -1
- package/dist/chunks/export-as-source-files.5accf195.js +0 -2
- package/dist/chunks/export-widgets.1562a8ae.js +0 -2
- package/dist/chunks/main.4a8e170f.js +0 -2
- package/dist/chunks/tsx-playground.c67c0906.js +0 -2
- package/dist/chunks/tsx-playground.c67c0906.js.map +0 -1
- package/dist/index.d90bf964.js +0 -2
- package/dist/index.d90bf964.js.map +0 -1
- /package/dist/chunks/{3483.c5ce1021.js.LICENSE.txt → 3483.023fac95.js.LICENSE.txt} +0 -0
- /package/dist/chunks/{6746.1bd8aaa8.js.LICENSE.txt → 6746.c32f150c.js.LICENSE.txt} +0 -0
- /package/dist/chunks/{948.1b677be1.js.LICENSE.txt → 948.7f8e7e72.js.LICENSE.txt} +0 -0
package/docs/tsx-playground.md
CHANGED
|
@@ -1,9 +1,37 @@
|
|
|
1
|
-
|
|
1
|
+
---
|
|
2
|
+
tagName: vb-experiment.tsx-playground
|
|
3
|
+
displayName: WrappedVbExperimentTsxPlayground
|
|
4
|
+
description: TSX 视图编辑器与实时预览的集成 Playground,支持用 TSX 语法编写视图,并即时渲染到右侧预览区
|
|
5
|
+
category: ""
|
|
6
|
+
source: "@next-bricks/vb-experiment"
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
# vb-experiment.tsx-playground
|
|
10
|
+
|
|
11
|
+
> TSX 视图编辑器与实时预览的集成 Playground,支持用 TSX 语法编写视图,并即时渲染到右侧预览区
|
|
12
|
+
|
|
13
|
+
## Props
|
|
14
|
+
|
|
15
|
+
| 属性 | 类型 | 必填 | 默认值 | 说明 |
|
|
16
|
+
| -------------- | -------------- | ---- | ------ | ------------------------------------------------------------------ |
|
|
17
|
+
| source | `string` | 否 | - | 初始代码内容,仅在首次渲染时有效,后续更改不会同步到编辑器 |
|
|
18
|
+
| extraLibs | `ExtraLib[]` | 否 | - | 额外注入到编辑器的类型声明库,用于提供代码补全和类型检查 |
|
|
19
|
+
| viewLibs | `SourceFile[]` | 否 | - | 额外的视图库源文件,会合并到类型声明中,并在解析视图时作为依赖提供 |
|
|
20
|
+
| withoutWrapper | `boolean` | 否 | - | 是否跳过顶层 wrapper 包裹,启用后视图直接渲染为裸砖块列表 |
|
|
21
|
+
| allowAnyBricks | `boolean` | 否 | - | 是否允许使用任意砖块,默认仅允许 next-tsx 白名单砖块 |
|
|
22
|
+
|
|
23
|
+
## Events
|
|
24
|
+
|
|
25
|
+
| 事件 | detail | 说明 |
|
|
26
|
+
| ------ | ----------------------------------- | -------------------- |
|
|
27
|
+
| change | `string` — 当前编辑器中的代码字符串 | 编辑器内容变化时触发 |
|
|
2
28
|
|
|
3
29
|
## Examples
|
|
4
30
|
|
|
5
31
|
### Basic
|
|
6
32
|
|
|
33
|
+
展示 TSX Playground 的基本用法,左侧代码编辑器,右侧实时预览视图。
|
|
34
|
+
|
|
7
35
|
```yaml preview minHeight="600px"
|
|
8
36
|
- brick: vb-experiment.tsx-playground
|
|
9
37
|
properties:
|
|
@@ -51,38 +79,6 @@
|
|
|
51
79
|
{
|
|
52
80
|
"path": "/opt/maxkb/maxkb-pro-v2.0.1-x86_64-offline-installer/images/maxkb-pro.tar.gz",
|
|
53
81
|
"size": "1.00GB"
|
|
54
|
-
},
|
|
55
|
-
{
|
|
56
|
-
"path": "/data/easyops/kafka/data/aggregate.metric.message.json-0/00000000000044787540.log",
|
|
57
|
-
"size": "759.00MB"
|
|
58
|
-
},
|
|
59
|
-
{
|
|
60
|
-
"size": "739.00MB",
|
|
61
|
-
"path": "/data/easyops/kafka/data/monitor.metric.message.json-0/00000000000741056461.log"
|
|
62
|
-
},
|
|
63
|
-
{
|
|
64
|
-
"path": "/data/easyops/mysql/data/ib_logfile1",
|
|
65
|
-
"size": "512.00MB"
|
|
66
|
-
},
|
|
67
|
-
{
|
|
68
|
-
"size": "512.00MB",
|
|
69
|
-
"path": "/data/easyops/mysql/data/ib_logfile0"
|
|
70
|
-
},
|
|
71
|
-
{
|
|
72
|
-
"size": "452.00MB",
|
|
73
|
-
"path": "/usr/local/easyops/clickhouse/bin/clickhouse"
|
|
74
|
-
},
|
|
75
|
-
{
|
|
76
|
-
"path": "/data/easyops/seaweedfs/data/data/easyops_5.dat",
|
|
77
|
-
"size": "371.00MB"
|
|
78
|
-
},
|
|
79
|
-
{
|
|
80
|
-
"size": "369.00MB",
|
|
81
|
-
"path": "/data/easyops/seaweedfs/data/data/easyops_6.dat"
|
|
82
|
-
},
|
|
83
|
-
{
|
|
84
|
-
"size": "360.00MB",
|
|
85
|
-
"path": "/data/easyops/seaweedfs/data/data/easyops_1.dat"
|
|
86
82
|
}
|
|
87
83
|
],
|
|
88
84
|
"device": "/dev/mapper/centos-root",
|
|
@@ -176,3 +172,42 @@
|
|
|
176
172
|
border: none!important;
|
|
177
173
|
}
|
|
178
174
|
```
|
|
175
|
+
|
|
176
|
+
### Without Wrapper
|
|
177
|
+
|
|
178
|
+
跳过顶层包裹,直接渲染裸砖块列表,适合嵌入到其他布局中使用。
|
|
179
|
+
|
|
180
|
+
```yaml preview minHeight="300px"
|
|
181
|
+
brick: vb-experiment.tsx-playground
|
|
182
|
+
properties:
|
|
183
|
+
style:
|
|
184
|
+
display: block
|
|
185
|
+
height: 300px
|
|
186
|
+
withoutWrapper: true
|
|
187
|
+
source: |
|
|
188
|
+
export default (
|
|
189
|
+
<Button type="primary">Hello World</Button>
|
|
190
|
+
);
|
|
191
|
+
```
|
|
192
|
+
|
|
193
|
+
### Allow Any Bricks
|
|
194
|
+
|
|
195
|
+
允许使用任意砖块(不限于 next-tsx 白名单),适合高级使用场景。
|
|
196
|
+
|
|
197
|
+
```yaml preview minHeight="300px"
|
|
198
|
+
brick: vb-experiment.tsx-playground
|
|
199
|
+
properties:
|
|
200
|
+
style:
|
|
201
|
+
display: block
|
|
202
|
+
height: 300px
|
|
203
|
+
allowAnyBricks: true
|
|
204
|
+
source: |
|
|
205
|
+
export default (
|
|
206
|
+
<View title="自定义砖块示例">
|
|
207
|
+
<Plaintext>支持使用任意砖块</Plaintext>
|
|
208
|
+
</View>
|
|
209
|
+
);
|
|
210
|
+
events:
|
|
211
|
+
change:
|
|
212
|
+
action: console.log
|
|
213
|
+
```
|
|
@@ -0,0 +1,139 @@
|
|
|
1
|
+
---
|
|
2
|
+
tagName: vb-experiment.tsx-playground
|
|
3
|
+
displayName: WrappedVbExperimentTsxPlayground
|
|
4
|
+
description: TSX 视图编辑器与实时预览的集成 Playground,支持用 TSX 语法编写视图,并即时渲染到右侧预览区
|
|
5
|
+
category: ""
|
|
6
|
+
source: "@next-bricks/vb-experiment"
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
# WrappedVbExperimentTsxPlayground
|
|
10
|
+
|
|
11
|
+
> TSX 视图编辑器与实时预览的集成 Playground,支持用 TSX 语法编写视图,并即时渲染到右侧预览区
|
|
12
|
+
|
|
13
|
+
## 导入
|
|
14
|
+
|
|
15
|
+
```tsx
|
|
16
|
+
import { WrappedVbExperimentTsxPlayground } from "@easyops/wrapped-components";
|
|
17
|
+
```
|
|
18
|
+
|
|
19
|
+
## Props
|
|
20
|
+
|
|
21
|
+
| 属性 | 类型 | 必填 | 默认值 | 说明 |
|
|
22
|
+
| -------------- | -------------- | ---- | ------ | ------------------------------------------------------------------ |
|
|
23
|
+
| source | `string` | 否 | - | 初始代码内容,仅在首次渲染时有效,后续更改不会同步到编辑器 |
|
|
24
|
+
| extraLibs | `ExtraLib[]` | 否 | - | 额外注入到编辑器的类型声明库,用于提供代码补全和类型检查 |
|
|
25
|
+
| viewLibs | `SourceFile[]` | 否 | - | 额外的视图库源文件,会合并到类型声明中,并在解析视图时作为依赖提供 |
|
|
26
|
+
| withoutWrapper | `boolean` | 否 | - | 是否跳过顶层 wrapper 包裹,启用后视图直接渲染为裸砖块列表 |
|
|
27
|
+
| allowAnyBricks | `boolean` | 否 | - | 是否允许使用任意砖块,默认仅允许 next-tsx 白名单砖块 |
|
|
28
|
+
|
|
29
|
+
## Events
|
|
30
|
+
|
|
31
|
+
| 事件 | detail | 说明 |
|
|
32
|
+
| -------- | ----------------------------------- | -------------------- |
|
|
33
|
+
| onChange | `string` — 当前编辑器中的代码字符串 | 编辑器内容变化时触发 |
|
|
34
|
+
|
|
35
|
+
## Examples
|
|
36
|
+
|
|
37
|
+
### Basic
|
|
38
|
+
|
|
39
|
+
展示 TSX Playground 的基本用法,左侧代码编辑器,右侧实时预览视图。
|
|
40
|
+
|
|
41
|
+
```tsx
|
|
42
|
+
<WrappedVbExperimentTsxPlayground
|
|
43
|
+
source={`
|
|
44
|
+
import { useState } from "next-tsx";
|
|
45
|
+
|
|
46
|
+
const RESPONSE = {
|
|
47
|
+
list: [
|
|
48
|
+
{
|
|
49
|
+
ip: "172.30.0.134",
|
|
50
|
+
disk_usage: [
|
|
51
|
+
{
|
|
52
|
+
total: "95.00GB",
|
|
53
|
+
used: "85.00GB",
|
|
54
|
+
free: "9.00GB",
|
|
55
|
+
percent: "91%",
|
|
56
|
+
rw_status: "rw",
|
|
57
|
+
large_files: [
|
|
58
|
+
{ size: "1.00GB", path: "/opt/maxkb/maxkb-pro-2.0.1.tgz" }
|
|
59
|
+
],
|
|
60
|
+
device: "/dev/mapper/centos-root",
|
|
61
|
+
mount_point: "/"
|
|
62
|
+
}
|
|
63
|
+
],
|
|
64
|
+
inode_usage: [
|
|
65
|
+
{
|
|
66
|
+
total_inodes: 21162000,
|
|
67
|
+
used_inodes: 1385716,
|
|
68
|
+
free_inodes: 19776284,
|
|
69
|
+
percent: "7%",
|
|
70
|
+
device: "/dev/mapper/centos-root",
|
|
71
|
+
mount_point: "/"
|
|
72
|
+
}
|
|
73
|
+
]
|
|
74
|
+
}
|
|
75
|
+
]
|
|
76
|
+
};
|
|
77
|
+
|
|
78
|
+
export default (
|
|
79
|
+
<View title="磁盘使用情况">
|
|
80
|
+
{RESPONSE.list.map((item) => (
|
|
81
|
+
<Card title={item.ip}>
|
|
82
|
+
<Plaintext>磁盘空间使用</Plaintext>
|
|
83
|
+
<Table
|
|
84
|
+
dataSource={{ list: item.disk_usage }}
|
|
85
|
+
columns={[
|
|
86
|
+
{ dataIndex: "device", key: "device", title: "设备" },
|
|
87
|
+
{ dataIndex: "mount_point", key: "mount_point", title: "挂载点" },
|
|
88
|
+
{ dataIndex: "total", key: "total", title: "总大小" },
|
|
89
|
+
{ dataIndex: "used", key: "used", title: "已用空间" },
|
|
90
|
+
{ dataIndex: "free", key: "free", title: "可用空间" },
|
|
91
|
+
{ dataIndex: "percent", key: "percent", title: "使用率" },
|
|
92
|
+
{ dataIndex: "rw_status", key: "rw_status", title: "读写状态" }
|
|
93
|
+
]}
|
|
94
|
+
rowKey="device"
|
|
95
|
+
pagination={false}
|
|
96
|
+
/>
|
|
97
|
+
</Card>
|
|
98
|
+
))}
|
|
99
|
+
</View>
|
|
100
|
+
);
|
|
101
|
+
`}
|
|
102
|
+
style={{ display: "block", position: "fixed", inset: 0 }}
|
|
103
|
+
/>
|
|
104
|
+
```
|
|
105
|
+
|
|
106
|
+
### Without Wrapper
|
|
107
|
+
|
|
108
|
+
跳过顶层包裹,直接渲染裸砖块列表,适合嵌入到其他布局中使用。
|
|
109
|
+
|
|
110
|
+
```tsx
|
|
111
|
+
<WrappedVbExperimentTsxPlayground
|
|
112
|
+
withoutWrapper={true}
|
|
113
|
+
source={`
|
|
114
|
+
export default (
|
|
115
|
+
<Button type="primary">Hello World</Button>
|
|
116
|
+
);
|
|
117
|
+
`}
|
|
118
|
+
style={{ display: "block", height: "300px" }}
|
|
119
|
+
/>
|
|
120
|
+
```
|
|
121
|
+
|
|
122
|
+
### Allow Any Bricks
|
|
123
|
+
|
|
124
|
+
允许使用任意砖块(不限于 next-tsx 白名单),适合高级使用场景。
|
|
125
|
+
|
|
126
|
+
```tsx
|
|
127
|
+
<WrappedVbExperimentTsxPlayground
|
|
128
|
+
allowAnyBricks={true}
|
|
129
|
+
source={`
|
|
130
|
+
export default (
|
|
131
|
+
<View title="自定义砖块示例">
|
|
132
|
+
<Plaintext>支持使用任意砖块</Plaintext>
|
|
133
|
+
</View>
|
|
134
|
+
);
|
|
135
|
+
`}
|
|
136
|
+
style={{ display: "block", height: "300px" }}
|
|
137
|
+
onChange={(e) => console.log(e.detail)}
|
|
138
|
+
/>
|
|
139
|
+
```
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@next-bricks/vb-experiment",
|
|
3
|
-
"version": "1.3.
|
|
3
|
+
"version": "1.3.20",
|
|
4
4
|
"homepage": "https://github.com/easyops-cn/next-advanced-bricks/tree/master/bricks/vb-experiment",
|
|
5
5
|
"repository": {
|
|
6
6
|
"type": "git",
|
|
@@ -15,10 +15,12 @@
|
|
|
15
15
|
"dist-types",
|
|
16
16
|
"docs"
|
|
17
17
|
],
|
|
18
|
+
"types": "dist-types/jsx.d.ts",
|
|
18
19
|
"exports": {
|
|
19
20
|
"./package.json": "./package.json",
|
|
20
21
|
"./dist/bricks.json": "./dist/bricks.json",
|
|
21
22
|
"./dist/manifest.json": "./dist/manifest.json",
|
|
23
|
+
".": "./dist-types/jsx.d.ts",
|
|
22
24
|
"./*": {
|
|
23
25
|
"types": "./dist-types/*/index.d.ts"
|
|
24
26
|
}
|
|
@@ -33,10 +35,10 @@
|
|
|
33
35
|
"postpublish": "mv package.json.bak package.json"
|
|
34
36
|
},
|
|
35
37
|
"devDependencies": {
|
|
36
|
-
"@next-core/build-next-bricks": "^1.
|
|
38
|
+
"@next-core/build-next-bricks": "^1.25.1"
|
|
37
39
|
},
|
|
38
40
|
"peerDependencies": {
|
|
39
41
|
"@next-bricks/vs": "*"
|
|
40
42
|
},
|
|
41
|
-
"gitHead": "
|
|
43
|
+
"gitHead": "2670992c377a46bcaed4f3ed70431bb5441c4bb7"
|
|
42
44
|
}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"chunks/1563.e386a37f.js","mappings":"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","sources":["webpack:///./src/data-providers/export-as-source-files.ts","webpack:///./src/data-providers/export-widgets.ts","webpack:///../../node_modules/@next-tsx/converter/dist/esm/withBox.js","webpack:///../../node_modules/@next-tsx/converter/dist/esm/modules/convertView.js","webpack:///./src/tsx-playground/styles.module.css?e933","webpack:///./src/tsx-playground/workers/tsxParser.ts","webpack:///./src/tsx-playground/index.tsx","webpack:///./src/tsx-playground/createPortal.ts","webpack:///./src/app-preview/index.tsx","webpack:///../../node_modules/@next-tsx/converter/dist/esm/modules/convertApp.js","webpack:///./src/app-playground/styles.module.css?1659","webpack:///./src/app-playground/index.tsx","webpack:///./src/app-playground/styles.module.css","webpack:///./src/app-preview/styles.shadow.css","webpack:///./src/tsx-playground/styles.module.css"],"sourcesContent":["/* eslint-disable @typescript-eslint/no-non-null-assertion */\nimport type { Storyboard, MicroApp, StoryboardMeta } from \"@next-core/types\";\nimport { createProviderClass } from \"@next-core/utils/general\";\nimport JSZip from \"jszip\";\nimport { saveAs } from \"file-saver\";\nimport { format } from \"prettier/standalone\";\nimport * as prettierPluginBabel from \"prettier/plugins/babel\";\nimport * as prettierPluginEstree from \"prettier/plugins/estree\";\nimport { transform } from \"@babel/standalone\";\nimport {\n ExtractState,\n extractRoutes,\n extractTemplates,\n} from \"./utils/extract.js\";\nimport {\n SourceFileOrFolder,\n buildFileStructure,\n} from \"./utils/buildFileStructure.js\";\nimport { generate } from \"./utils/generators/generate.js\";\nimport srcResourcesIndexJs from \"./raws/src/resources/index.js.txt\";\nimport srcIndexJs from \"./raws/src/index.js.txt\";\nimport editorConfig from \"./raws/.editorconfig.txt\";\nimport gitIgnore from \"./raws/.gitignore.txt\";\nimport declarationsDTs from \"./raws/declarations.d.ts.txt\";\nimport devConfigMjs from \"./raws/dev.config.mjs.txt\";\nimport jsconfigJson from \"./raws/jsconfig.json.txt\";\nimport nextJsxConfigJs from \"./raws/next-jsx.config.js.txt\";\nimport packageJson from \"./raws/package.json.txt\";\nimport readmeMd from \"./raws/README.md.txt\";\nimport { JS_RESERVED_WORDS } from \"./utils/constants.js\";\nimport TransformStoryboardFunction from \"./utils/plugins/storyboard-function.js\";\nimport SmartImports from \"./utils/plugins/smart-imports.js\";\n\nexport interface StoryboardAssemblyResult {\n storyboard: Storyboard;\n\n projectDetail: {\n appId: string;\n name: string;\n appSetting: Pick<\n MicroApp,\n \"homepage\" | \"theme\" | \"locales\" | \"noAuthGuard\"\n > & {\n layoutType?: string;\n defaultConfig?: string;\n icon?: string;\n };\n brickNextVersion?: number;\n };\n}\n\nexport async function exportAsSourceFiles({\n projectDetail,\n storyboard,\n}: StoryboardAssemblyResult): Promise<void> {\n const zip = new JSZip();\n const project = zip.folder(\"project\")!;\n const src = project.folder(\"src\")!;\n\n const extractState: ExtractState = {\n extracts: [],\n namePool: new Map(),\n };\n const extractedRoutes = extractRoutes(storyboard.routes, [], extractState);\n\n const app: MicroApp & { layoutType?: string } = {\n id: projectDetail.appId,\n name: projectDetail.name,\n homepage: projectDetail.appSetting.homepage,\n layoutType: projectDetail.appSetting.layoutType,\n theme: projectDetail.appSetting.theme,\n noAuthGuard: projectDetail.appSetting.noAuthGuard,\n locales: projectDetail.appSetting.locales,\n defaultConfig: JSON.parse(projectDetail.appSetting.defaultConfig || \"{}\"),\n menuIcon: JSON.parse(projectDetail.appSetting.icon || \"null\"),\n standaloneMode: true,\n };\n src.file(\n \"app.js\",\n await formatJs(`export default ${JSON.stringify(app, null, 2)};`)\n );\n\n const meta = (storyboard.meta ?? {}) as StoryboardMeta & {\n workflows?: unknown;\n userGroups?: unknown;\n };\n const customTemplates = meta.customTemplates ?? [];\n const functions = meta.functions ?? [];\n const menus = meta.menus ?? [];\n const contracts = meta.contracts ?? [];\n const i18n = meta.i18n ?? {};\n delete meta.customTemplates;\n delete meta.functions;\n delete meta.menus;\n delete meta.contracts;\n delete meta.i18n;\n delete meta.workflows;\n delete meta.mocks;\n delete meta.userGroups;\n\n const extractedTemplates = extractTemplates(\n customTemplates,\n [\"components\"],\n extractState\n );\n extractState.extracts.push({\n name: \"index\",\n path: [\"components\"],\n node: extractedTemplates,\n nodeType: \"others\",\n });\n\n const fileStructure = buildFileStructure(extractState.extracts);\n\n src.file(\"index.js\", srcIndexJs);\n\n src.file(\n \"routes.jsx\",\n await formatJs(generate(extractedRoutes, \"routes\", [\"routes.jsx\"]))\n );\n\n const resources = src.folder(\"resources\")!;\n\n // Functions\n const fnDir = resources.folder(\"functions\")!;\n const fnNames: string[] = [];\n const fnImports: string[] = [];\n for (const fn of functions) {\n if (fn.name === \"index\") {\n throw new Error('Unexpected function name: \"index\"');\n }\n\n // Prepend with `export default` for functions\n const inferredImports = new Set<string>();\n let { code } = transform(fn.source, {\n filename: `expr.${fn.typescript ? \"ts\" : \"js\"}`,\n plugins: [\n ...(fn.typescript ? [\"syntax-typescript\"] : []),\n TransformStoryboardFunction,\n [\n SmartImports,\n {\n imports: inferredImports,\n },\n ],\n ],\n }) as { code: string };\n const hasFN = inferredImports.has(\"FN\");\n if (hasFN) {\n inferredImports.delete(\"FN\");\n }\n const importStrings: string[] = [];\n if (inferredImports.size > 0) {\n importStrings.push(\n `import { ${[...inferredImports].join(\", \")} } from \"next-jsx/runtime\";`\n );\n }\n if (hasFN) {\n importStrings.push(`import FN from \"./index.js\";`);\n }\n if (importStrings.length > 0) {\n code = `${importStrings.join(\"\\n\")}\\n\\n${code}`;\n }\n\n fnDir.file(`${fn.name}.${fn.typescript ? \"ts\" : \"js\"}`, code);\n fnImports.push(`import ${fn.name} from \"./${fn.name}.js\";`);\n fnNames.push(fn.name);\n }\n fnDir.file(\n \"index.js\",\n await formatJs(\n `${fnImports.join(\"\\n\")}\\n\\nconst FN = { ${fnNames.join(\n \",\"\n )} };\\n\\nexport default FN;`\n )\n );\n\n // Menus\n const menusDir = resources.folder(\"menus\")!;\n const menuNames: string[] = [];\n const menuImports: string[] = [];\n for (const menu of menus) {\n cleanMenu(menu);\n if (menu.menuId === \"index\") {\n throw new Error('Unexpected menu id: \"index\"');\n }\n const filename = `${menu.menuId}.js`;\n menusDir.file(\n filename,\n await formatJs(generate(menu, \"menu\", [\"resources\", \"menus\", filename]))\n );\n let name = menu.menuId.replace(/^\\d+|[^\\w]+/g, \"_\");\n if (JS_RESERVED_WORDS.has(name)) {\n name = `${name}__2`;\n }\n menuImports.push(`import ${name} from \"./${filename}\";`);\n menuNames.push(name);\n }\n menusDir.file(\n \"index.js\",\n await formatJs(\n `${menuImports.join(\"\\n\")}\\n\\nexport default [${menuNames.join(\",\")}]`\n )\n );\n\n // Contracts\n const contractsDir = resources.folder(\"contracts\")!;\n const contractImports: string[] = [];\n const contractNames = new Set<string>();\n for (const contract of contracts) {\n const baseName = contract.name.replace(/^\\d+|[^\\w]+/g, \"_\");\n let counter = 2;\n let varName = baseName;\n while (\n contractNames.has(varName) ||\n JS_RESERVED_WORDS.has(varName) ||\n varName === \"index\"\n ) {\n varName = `${baseName}_${counter++}`;\n }\n contractNames.add(varName);\n\n contractsDir.file(\n `${varName}.js`,\n await formatJs(`export default ${JSON.stringify(contract)};`)\n );\n contractImports.push(`import ${varName} from \"./${varName}.js\";`);\n }\n contractsDir.file(\n \"index.js\",\n await formatJs(\n `${contractImports.join(\"\\n\")}\\n\\nexport default [${[\n ...contractNames,\n ].join(\",\")}]`\n )\n );\n\n resources\n .folder(\"i18n\")!\n .file(\n \"index.js\",\n await formatJs(`export default ${JSON.stringify(i18n)};`)\n );\n resources.file(\n \"meta.js\",\n await formatJs(`export default ${JSON.stringify(meta, null, 2)};`)\n );\n resources.file(\"index.js\", srcResourcesIndexJs);\n\n await generateByFileStructure(fileStructure, src, []);\n\n const appDir = project\n .folder(\"mock-micro-apps\")!\n .folder(projectDetail.appId)!;\n appDir.file(\".gitignore\", \"*\\n!.gitignore\");\n\n project.file(\".editorconfig\", editorConfig);\n project.file(\".gitignore\", gitIgnore);\n project.file(\"dev.config.mjs\", devConfigMjs);\n project.file(\"declarations.d.ts\", declarationsDTs);\n project.file(\"jsconfig.json\", jsconfigJson);\n project.file(\n \"next-jsx.config.js\",\n nextJsxConfigJs.replaceAll(\"__APP_ID__\", projectDetail.appId)\n );\n project.file(\n \"package.json\",\n packageJson.replaceAll(\"__APP_ID__\", projectDetail.appId)\n );\n project.file(\n \"README.md\",\n readmeMd\n .replaceAll(\"__PROJECT_NAME__\", projectDetail.name)\n .replaceAll(\"__PROJECT_HOMEPAGE__\", projectDetail.appSetting.homepage)\n );\n\n const blob = await zip.generateAsync({ type: \"blob\" });\n saveAs(blob, \"project.zip\");\n}\n\ninterface FormatJsOptions {\n typescript?: boolean;\n semi?: boolean;\n printWidth?: number;\n}\n\nasync function formatJs(\n source: string,\n { typescript, semi = true, printWidth }: FormatJsOptions = {}\n): Promise<string> {\n return await format(source, {\n parser: typescript ? \"babel-ts\" : \"babel\",\n plugins: [prettierPluginBabel, prettierPluginEstree as any],\n semi,\n printWidth,\n trailingComma: \"es5\",\n });\n}\n\nasync function generateByFileStructure(\n items: SourceFileOrFolder[],\n folder: JSZip,\n path: string[]\n) {\n for (const item of items) {\n const childPath = [...path, item.name];\n if (item.type === \"folder\") {\n const childFolder = folder.folder(item.name)!;\n await generateByFileStructure(item.items, childFolder, childPath);\n } else {\n folder.file(\n `${item.name}.js${\n item.nodeType === \"routes\" ||\n item.nodeType === \"bricks\" ||\n item.nodeType === \"template\"\n ? \"x\"\n : \"\"\n }`,\n await formatJs(generate(item.node, item.nodeType, childPath))\n );\n }\n }\n}\n\nfunction cleanMenu(menu: Record<string, any>) {\n for (const [key, value] of Object.entries(menu)) {\n switch (key) {\n case \"items\":\n if (Array.isArray(value)) {\n for (const item of value) {\n cleanMenuItem(item);\n }\n }\n break;\n case \"type\":\n if (value === \"main\") {\n delete menu[key];\n }\n break;\n case \"if\":\n break;\n case \"i18n\":\n if (Object.keys(value).length === 0) {\n delete menu[key];\n }\n break;\n default:\n if (value === null || value === false) {\n delete menu[key];\n }\n }\n }\n}\n\nfunction cleanMenuItem(menuItem: Record<string, any>) {\n for (const [key, value] of Object.entries(menuItem)) {\n switch (key) {\n case \"children\":\n if (Array.isArray(value) && value.length > 0) {\n cleanMenuItem(value);\n }\n break;\n case \"if\":\n break;\n case \"activeExcludes\":\n case \"activeIncludes\":\n if (Array.isArray(value) && value.length === 0) {\n delete menuItem[key];\n }\n break;\n default:\n if (value === null || value === false) {\n delete menuItem[key];\n }\n }\n }\n}\n\ncustomElements.define(\n \"vb-experiment.export-as-source-files\",\n createProviderClass(exportAsSourceFiles)\n);\n","import { createProviderClass } from \"@next-core/utils/general\";\nimport JSZip from \"jszip\";\nimport { saveAs } from \"file-saver\";\n\ninterface ExportWidgetsParams {\n name: string;\n files: FileInfo[];\n}\n\ninterface FileInfo {\n path: string;\n content: string;\n}\n\nexport async function exportWidgets({\n name,\n files,\n}: ExportWidgetsParams): Promise<void> {\n const fs = new Map<string, JSZip>();\n const zip = new JSZip();\n const widgets = zip.folder(\"widgets\")!;\n const project = widgets.folder(name)!;\n\n for (const { path, content } of files) {\n const segments = path.split(\"/\");\n const filename = segments.pop()!;\n let handle = project;\n let i = 1;\n for (const segment of segments) {\n const current = segments.slice(0, i).join(\"/\");\n const found = fs.get(current);\n if (found) {\n handle = found;\n } else {\n handle = handle.folder(segment)!;\n fs.set(current, handle);\n }\n i++;\n }\n handle.file(filename, content);\n }\n\n const blob = await zip.generateAsync({ type: \"blob\" });\n saveAs(blob, `${name}.zip`);\n}\n\ncustomElements.define(\n \"vb-experiment.export-widgets\",\n createProviderClass(exportWidgets)\n);\n","export function withBox(children, options) {\n return {\n brick: \"div\",\n properties: {\n style: options.expanded ? {\n background: \"rgba(255, 255, 255, 0.9)\",\n backdropFilter: \"blur(10px)\",\n borderRadius: \"16px\",\n padding: \"24px\"\n } : {\n background: \"var(--elevo-component-background)\",\n backdropFilter: \"var(--elevo-component-backdrop-filter)\",\n borderRadius: \"var(--elevo-border-radius)\",\n padding: \"16px\"\n }\n },\n children: children\n };\n}\n//# sourceMappingURL=withBox.js.map","import _slicedToArray from \"@babel/runtime/helpers/slicedToArray\";\nimport _regeneratorRuntime from \"@babel/runtime/helpers/regeneratorRuntime\";\nimport _toConsumableArray from \"@babel/runtime/helpers/toConsumableArray\";\nimport _asyncToGenerator from \"@babel/runtime/helpers/asyncToGenerator\";\nimport convertModule from \"./convertModule.js\";\nimport { getHelperFunctions } from \"../helpers/index.js\";\nimport { getViewTplName } from \"./getTplName.js\";\nimport { withBox } from \"../withBox.js\";\nexport function convertView(_x, _x2) {\n return _convertView.apply(this, arguments);\n}\nfunction _convertView() {\n _convertView = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime().mark(function _callee2(view, options) {\n var _convertedEntry;\n var entry, convertedEntry, state, functions, templates, helpers, _ref2, title, bricks, context, needBox;\n return _regeneratorRuntime().wrap(function (_context2) {\n while (1) switch (_context2.prev = _context2.next) {\n case 0:\n entry = view.entry;\n if (entry) {\n _context2.next = 1;\n break;\n }\n throw new Error(\"No entry module found in the view.\");\n case 1:\n state = {\n usedHelpers: new Set(),\n app: view,\n convertedModules: new Map()\n };\n functions = [];\n templates = [];\n _context2.next = 2;\n return Promise.all(Array.from(view.modules.values()).map(/*#__PURE__*/function () {\n var _ref = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime().mark(function _callee(mod) {\n var converted, _i, _arr, part, raw, promise, _part, _t;\n return _regeneratorRuntime().wrap(function (_context) {\n while (1) switch (_context.prev = _context.next) {\n case 0:\n if (!mod) {\n _context.next = 8;\n break;\n }\n _context.next = 1;\n return convertModule(mod, state, options);\n case 1:\n converted = _context.sent;\n if (mod === entry) {\n convertedEntry = converted;\n }\n _i = 0, _arr = [].concat(_toConsumableArray(converted.internals), _toConsumableArray(converted.namedExports.values()), [converted.defaultExport]);\n case 2:\n if (!(_i < _arr.length)) {\n _context.next = 8;\n break;\n }\n part = _arr[_i];\n if (part) {\n _context.next = 3;\n break;\n }\n return _context.abrupt(\"continue\", 7);\n case 3:\n raw = part.raw, promise = part.promise;\n _t = raw === null || raw === void 0 ? void 0 : raw.type;\n _context.next = _t === \"function\" ? 4 : _t === \"template\" ? 5 : 7;\n break;\n case 4:\n functions.push(raw[\"function\"]);\n return _context.abrupt(\"continue\", 7);\n case 5:\n _context.next = 6;\n return promise;\n case 6:\n _part = _context.sent;\n templates.push({\n name: getViewTplName(_part.name, options.rootId),\n bricks: _part.bricks,\n state: _part.context\n });\n return _context.abrupt(\"continue\", 7);\n case 7:\n _i++;\n _context.next = 2;\n break;\n case 8:\n case \"end\":\n return _context.stop();\n }\n }, _callee);\n }));\n return function (_x3) {\n return _ref.apply(this, arguments);\n };\n }()));\n case 2:\n if ((_convertedEntry = convertedEntry) !== null && _convertedEntry !== void 0 && _convertedEntry.defaultExport) {\n _context2.next = 3;\n break;\n }\n throw new Error(\"No view found in the entry module.\");\n case 3:\n helpers = Array.from(state.usedHelpers).map(function (name) {\n var source = getHelperFunctions().get(name);\n if (!source) {\n throw new Error(\"Helper function \".concat(name, \" not found\"));\n }\n return {\n name: name,\n source: source,\n typescript: true\n };\n });\n _context2.next = 4;\n return convertedEntry.defaultExport.promise;\n case 4:\n _ref2 = _context2.sent;\n title = _ref2.title;\n bricks = _ref2.bricks;\n context = _ref2.context;\n needBox = function needBox() {\n return bricks.every(function (brick) {\n return [\"eo-form\", \"eo-descriptions\", \"eo-button\"].includes(brick.brick);\n });\n };\n return _context2.abrupt(\"return\", {\n title: title,\n brick: options.withoutWrapper ? bricks : {\n brick: \"eo-content-layout\",\n children: needBox() ? [withBox(bricks, options)] : bricks\n },\n context: [].concat(_toConsumableArray(context), _toConsumableArray(options.withContexts ? Object.entries(options.withContexts).map(function (_ref3) {\n var _ref4 = _slicedToArray(_ref3, 2),\n name = _ref4[0],\n value = _ref4[1];\n return {\n name: name,\n value: value\n };\n }) : [])),\n functions: [].concat(functions, _toConsumableArray(helpers)),\n templates: templates\n });\n case 5:\n case \"end\":\n return _context2.stop();\n }\n }, _callee2);\n }));\n return _convertView.apply(this, arguments);\n}\n//# sourceMappingURL=convertView.js.map","\n import API from \"!../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../node_modules/css-loader/dist/cjs.js??ruleSet[1].rules[3].use[1]!../../../../node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[3].use[2]!./styles.module.css\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\noptions.insert = insertFn.bind(null, \"head\");\noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../node_modules/css-loader/dist/cjs.js??ruleSet[1].rules[3].use[1]!../../../../node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[3].use[2]!./styles.module.css\";\n export default content && content.locals ? content.locals : undefined;\n","// istanbul ignore file\nimport type { ParsedApp, ParseOptions, SourceFile } from \"@next-tsx/parser\";\nimport { wrap } from \"comlink\";\n\nexport interface RemoteTsxParserWorker {\n parseView(source: string, options?: ParseOptions): Promise<ParsedApp>;\n parseApp(files: SourceFile[]): Promise<ParsedApp>;\n}\n\nlet remoteWorkerPromise: Promise<RemoteTsxParserWorker> | undefined;\n\nlet worker: Worker | undefined;\n\nexport function getRemoteTsxParserWorker() {\n if (!remoteWorkerPromise) {\n remoteWorkerPromise = (async () => {\n const Remote = wrap<{ new (): RemoteTsxParserWorker }>(getWorker());\n return await new Remote();\n })();\n }\n return remoteWorkerPromise;\n}\n\nfunction getWorker() {\n if (!worker) {\n worker = new Worker(new URL(\"./tsxParser.worker.ts\", import.meta.url));\n }\n return worker;\n}\n","import React, {\n Suspense,\n useCallback,\n useDeferredValue,\n useEffect,\n useMemo,\n useRef,\n useState,\n} from \"react\";\nimport { createDecorators, type EventEmitter } from \"@next-core/element\";\nimport { httpErrorToString, unstable_createRoot } from \"@next-core/runtime\";\nimport { ReactNextElement } from \"@next-core/react-element\";\nimport { asyncWrapBrick } from \"@next-core/react-runtime\";\nimport { uniqueId } from \"lodash\";\nimport type {\n CodeEditor,\n CodeEditorProps,\n ExtraLib,\n ExtraMarker,\n} from \"@next-bricks/vs/code-editor\";\nimport nextTsxDefinition from \"@next-tsx/core/index.d.ts?raw\";\nimport componentsDefinition from \"@next-tsx/converter/lib/components.d.ts?raw\";\nimport { convertView, type ConvertResult } from \"@next-tsx/converter\";\nimport type { ParsedApp, SourceFile } from \"@next-tsx/parser\";\nimport \"@next-core/theme\";\nimport styles from \"./styles.module.css\";\nimport { getRemoteTsxParserWorker } from \"./workers/tsxParser.js\";\nimport { createPortal } from \"./createPortal.js\";\n\ninterface CodeEditorEvents {\n \"code.change\": CustomEvent<string>;\n}\n\ninterface CodeEditorMapEvents {\n onCodeChange: \"code.change\";\n}\n\nconst AsyncWrappedCodeEditor = React.lazy(async () => ({\n default: await asyncWrapBrick<\n CodeEditor,\n CodeEditorProps,\n CodeEditorEvents,\n CodeEditorMapEvents\n >(\"vs.code-editor\", {\n onCodeChange: \"code.change\",\n }),\n}));\n\nconst BUILTIN_LIBS: ExtraLib[] = [\n {\n filePath: \"/node_modules/next-tsx/components.d.ts\",\n content: componentsDefinition.replaceAll(\"export interface\", \"interface\"),\n },\n {\n filePath: \"/node_modules/next-tsx/package.json\",\n content: JSON.stringify({\n name: \"next-tsx\",\n types: \"./index.d.ts\",\n }),\n },\n {\n filePath: \"/node_modules/next-tsx/index.d.ts\",\n content: nextTsxDefinition,\n },\n];\n\nconst { defineElement, property, event } = createDecorators();\n\nexport interface TsxPlaygroundProps {\n source?: string;\n extraLibs?: ExtraLib[];\n viewLibs?: SourceFile[];\n withoutWrapper?: boolean;\n allowAnyBricks?: boolean;\n}\n\n/**\n * 构件 `vb-experiment.tsx-playground`\n */\nexport\n@defineElement(\"vb-experiment.tsx-playground\", {\n // Monaco editor does not work well with shadow DOM\n shadowOptions: false,\n})\nclass TsxPlayground extends ReactNextElement implements TsxPlaygroundProps {\n /** 仅初始有效 */\n @property({ attribute: false })\n accessor source: string | undefined;\n\n @property({ attribute: false })\n accessor extraLibs: ExtraLib[] | undefined;\n\n @property({ attribute: false })\n accessor viewLibs: SourceFile[] | undefined;\n\n @property({ type: Boolean })\n accessor withoutWrapper: boolean | undefined;\n\n @property({ type: Boolean })\n accessor allowAnyBricks: boolean | undefined;\n\n @event({ type: \"change\" })\n accessor #change!: EventEmitter<string>;\n\n #handleChange = (value: string) => {\n this.#change?.emit(value);\n };\n\n render() {\n return (\n <TsxPlaygroundComponent\n source={this.source}\n extraLibs={this.extraLibs}\n viewLibs={this.viewLibs}\n withoutWrapper={this.withoutWrapper}\n allowAnyBricks={this.allowAnyBricks}\n onChange={this.#handleChange}\n />\n );\n }\n}\n\ninterface TsxPlaygroundComponentProps extends TsxPlaygroundProps {\n onChange: (value: string) => void;\n}\n\nfunction convertSeverity(\n severity: \"notice\" | \"warning\" | \"error\" | \"fatal\"\n): \"Hint\" | \"Info\" | \"Warning\" | \"Error\" {\n switch (severity) {\n case \"notice\":\n return \"Hint\";\n case \"warning\":\n return \"Warning\";\n case \"error\":\n return \"Error\";\n case \"fatal\":\n return \"Error\";\n }\n return severity;\n}\n\nfunction TsxPlaygroundComponent({\n source,\n extraLibs,\n withoutWrapper,\n allowAnyBricks,\n viewLibs,\n onChange,\n}: TsxPlaygroundComponentProps) {\n const [code, setCode] = useState(source ?? \"\");\n const deferredCode = useDeferredValue(code);\n const [markers, setMarkers] = useState<ExtraMarker[] | undefined>();\n const [view, setView] = useState<ParsedApp | undefined>();\n\n const allLibs = useMemo(\n () => [...BUILTIN_LIBS, ...(extraLibs ?? []), ...(viewLibs ?? [])],\n [extraLibs, viewLibs]\n );\n\n const handleCodeChange = useCallback(\n (e: CustomEvent<string>) => {\n setCode(e.detail);\n onChange(e.detail);\n },\n [onChange]\n );\n useEffect(() => {\n let ignore = false;\n (async function run() {\n const worker = await getRemoteTsxParserWorker();\n if (ignore) {\n return;\n }\n const result = await worker.parseView(deferredCode, { libs: viewLibs });\n if (ignore) {\n return;\n }\n setView(result);\n const withNodeErrors = result.errors.filter((err) => !!err.node);\n if (withNodeErrors.length > 0) {\n setMarkers(\n withNodeErrors.map((error) => ({\n message: error.message,\n severity: convertSeverity(error.severity),\n startLineNumber: error.node!.loc!.start.line,\n startColumn: error.node!.loc!.start.column + 1,\n endLineNumber: error.node!.loc!.end.line,\n endColumn: error.node!.loc!.end.column + 1,\n }))\n );\n } else {\n setMarkers(undefined);\n }\n if (ignore) {\n return;\n }\n })();\n return () => {\n ignore = true;\n };\n }, [deferredCode]);\n\n const rootId = useMemo(() => uniqueId(), []);\n const ref = useRef<HTMLDivElement>(null);\n const rootRef = useRef<Awaited<\n ReturnType<typeof unstable_createRoot>\n > | null>(null);\n\n useEffect(() => {\n const container = ref.current;\n if (!container) {\n return;\n }\n const portal = createPortal(rootId);\n const root = unstable_createRoot(container, {\n portal,\n supportsUseChildren: true,\n } as any);\n rootRef.current = root;\n\n return () => {\n root.unmount();\n portal.remove();\n rootRef.current = null;\n };\n }, [rootId]);\n\n // const [loading, setLoading] = useState(true);\n\n useEffect(() => {\n let ignore = false;\n (async () => {\n if (!view) {\n return;\n }\n // setLoading(true);\n let convertedView: ConvertResult | undefined;\n try {\n convertedView = await convertView(view, {\n rootId,\n expanded: true,\n withoutWrapper,\n allowAnyBricks,\n });\n if (ignore) {\n return;\n }\n const { brick, context, functions, templates } = convertedView ?? {};\n await rootRef.current?.render(brick ?? [], {\n context,\n functions,\n templates,\n });\n } catch (error) {\n // eslint-disable-next-line no-console\n console.error(\"Failed to render view:\", error);\n rootRef.current?.render({\n brick: customElements.get(\"easyops-default-error\")\n ? \"easyops-default-error\"\n : \"div\",\n properties: {\n errorTitle: \"解析失败\",\n dataset: {\n errorBoundary: \"\",\n },\n style: {\n color: \"var(--color-error)\",\n },\n },\n children: [\n {\n brick: \"div\",\n properties: {\n textContent: httpErrorToString(error),\n },\n },\n ],\n });\n }\n // if (!ignore) {\n // setLoading(false);\n // }\n })();\n\n return () => {\n ignore = true;\n };\n }, [rootId, view, withoutWrapper, allowAnyBricks]);\n\n return (\n <div className={styles.container}>\n <div className={styles.editor}>\n <Suspense fallback=\"Loading...\">\n <AsyncWrappedCodeEditor\n value={source}\n onCodeChange={handleCodeChange}\n language=\"typescript\"\n uri=\"file:///View.tsx\"\n automaticLayout=\"fit-container\"\n theme=\"tm-vs-dark\"\n extraLibs={allLibs}\n extraMarkers={markers}\n data-override-theme=\"dark-v2\"\n />\n </Suspense>\n </div>\n <div className={styles.preview}>\n <div data-root-id={rootId} ref={ref} />\n </div>\n </div>\n );\n}\n","export function createPortal(rootId: string) {\n const portal = document.createElement(\"div\");\n portal.dataset.rootId = rootId;\n portal.style.position = \"absolute\";\n portal.style.width = portal.style.height = \"0\";\n document.body.append(portal);\n return portal;\n}\n","import React, { useCallback, useEffect, useRef, useState } from \"react\";\nimport { createDecorators } from \"@next-core/element\";\nimport { ReactNextElement } from \"@next-core/react-element\";\nimport { __secret_internals, getBasePath } from \"@next-core/runtime\";\nimport type { BootstrapData, MicroApp, Storyboard } from \"@next-core/types\";\nimport \"@next-core/theme\";\nimport styleText from \"./styles.shadow.css\";\n\nconst { defineElement, property } = createDecorators();\n\nexport interface AppPreviewProps {\n storyboard?: Storyboard;\n}\n\n/**\n * 构件 `vb-experiment.app-preview`\n */\nexport\n@defineElement(\"vb-experiment.app-preview\", {\n styleTexts: [styleText],\n})\nclass AppPreview extends ReactNextElement {\n @property({ attribute: false })\n accessor storyboard: Storyboard | undefined;\n\n render() {\n return <AppPreviewComponent storyboard={this.storyboard} />;\n }\n}\n\ninterface PreviewWindow extends Window {\n _preview_only_appPreviewer?: AppPreviewer;\n}\n\ninterface AppPreviewer {\n setup(data: BootstrapData, url: string): Promise<void>;\n update(appId: string, storyboard: Partial<Storyboard>): void;\n reload(): void;\n push(url: string): void;\n replace(url: string): void;\n goBack(): void;\n goForward(): void;\n}\n\nfunction AppPreviewComponent({ storyboard }: AppPreviewProps) {\n const iframeRef = useRef<HTMLIFrameElement>(null);\n const [appPreviewer, setAppPreviewer] = useState<AppPreviewer | null>(null);\n\n const handleIframeLoad = useCallback(() => {\n const check = () => {\n const previewer = (iframeRef.current?.contentWindow as PreviewWindow)\n ?._preview_only_appPreviewer;\n if (previewer) {\n setAppPreviewer(previewer);\n } else {\n setTimeout(check, 100);\n }\n };\n check();\n }, []);\n\n const setupRef = useRef<Promise<void> | null>(null);\n\n useEffect(() => {\n if (!appPreviewer || !storyboard) {\n return;\n }\n\n const app = {\n id: \"lab-app-preview\",\n name: \"Lab: App Preview\",\n homepage: \"/lab-app-preview\",\n standaloneMode: true,\n noPlaceholders: true,\n } as MicroApp;\n\n if (setupRef.current) {\n let ignore = false;\n setupRef.current.then(() => {\n if (ignore) {\n return;\n }\n appPreviewer.update(app.id, { ...storyboard, app });\n appPreviewer.reload();\n });\n return () => {\n ignore = true;\n };\n } else {\n setupRef.current = appPreviewer.setup(\n {\n brickPackages: (__secret_internals as any).getBrickPackages(),\n storyboards: [\n {\n ...storyboard,\n app,\n },\n ],\n },\n app.homepage\n );\n }\n }, [appPreviewer, storyboard]);\n\n return (\n <div className=\"container\">\n <iframe\n ref={iframeRef}\n src={`${getBasePath()}lab/?_experimental_app_preview_=1`}\n loading=\"lazy\"\n onLoad={handleIframeLoad}\n />\n </div>\n );\n}\n","import _regeneratorRuntime from \"@babel/runtime/helpers/regeneratorRuntime\";\nimport _slicedToArray from \"@babel/runtime/helpers/slicedToArray\";\nimport _toConsumableArray from \"@babel/runtime/helpers/toConsumableArray\";\nimport _createForOfIteratorHelper from \"@babel/runtime/helpers/createForOfIteratorHelper\";\nimport _asyncToGenerator from \"@babel/runtime/helpers/asyncToGenerator\";\nimport { MODULE_SOURCE, isOfficialComponent } from \"@next-tsx/parser\";\nimport convertModule from \"./convertModule.js\";\nimport { getAppTplName } from \"./getTplName.js\";\nimport { convertRoutes } from \"./convertRoutes.js\";\nimport { getHelperFunctions } from \"../helpers/index.js\";\nexport function convertApp(_x, _x2) {\n return _convertApp.apply(this, arguments);\n}\nfunction _convertApp() {\n _convertApp = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime().mark(function _callee(app, options) {\n var entry, modules, render, children, routesComponent, state, convertingEntry, routes, functions, templates, _iterator, _step, _step$value, filePath, mod, convertedMod, _iterator2, _step2, _mod, _i, _arr, part, raw, promise, _part, helpers, _t, _t2;\n return _regeneratorRuntime().wrap(function (_context) {\n while (1) switch (_context.prev = _context.next) {\n case 0:\n entry = app.entry, modules = app.modules;\n if (entry) {\n _context.next = 1;\n break;\n }\n throw new Error(\"No entry module found in the app.\");\n case 1:\n render = entry.render;\n if (render) {\n _context.next = 2;\n break;\n }\n throw new Error(\"No render call found in the entry module.\");\n case 2:\n children = render.children;\n if (!(children.length !== 1)) {\n _context.next = 3;\n break;\n }\n throw new Error(\"Expects exactly one root component in the render call, but got \".concat(children.length, \".\"));\n case 3:\n routesComponent = children[0];\n if (isOfficialComponent(routesComponent, \"Routes\")) {\n _context.next = 4;\n break;\n }\n throw new Error(\"The root component must be <Routes> from \\\"\".concat(MODULE_SOURCE, \"\\\".\"));\n case 4:\n state = {\n usedHelpers: new Set(),\n app: app,\n convertedModules: new Map()\n };\n convertingEntry = convertModule(entry, state, options);\n state.convertedModules.set(entry.filePath, convertingEntry);\n _context.next = 5;\n return convertRoutes(routesComponent.children, state, entry, options);\n case 5:\n routes = _context.sent;\n functions = [];\n templates = []; // Some modules are not converted after routes being converted,\n // such as functions.\n _iterator = _createForOfIteratorHelper(modules);\n try {\n for (_iterator.s(); !(_step = _iterator.n()).done;) {\n _step$value = _slicedToArray(_step.value, 2), filePath = _step$value[0], mod = _step$value[1];\n if (!state.convertedModules.has(filePath)) {\n convertedMod = convertModule(mod, state, options);\n state.convertedModules.set(filePath, convertedMod);\n }\n }\n } catch (err) {\n _iterator.e(err);\n } finally {\n _iterator.f();\n }\n _iterator2 = _createForOfIteratorHelper(state.convertedModules.values());\n _context.prev = 6;\n _iterator2.s();\n case 7:\n if ((_step2 = _iterator2.n()).done) {\n _context.next = 15;\n break;\n }\n _mod = _step2.value;\n if (!_mod) {\n _context.next = 14;\n break;\n }\n _i = 0, _arr = [].concat(_toConsumableArray(_mod.internals), _toConsumableArray(_mod.namedExports.values()), [_mod.defaultExport]);\n case 8:\n if (!(_i < _arr.length)) {\n _context.next = 14;\n break;\n }\n part = _arr[_i];\n if (part) {\n _context.next = 9;\n break;\n }\n return _context.abrupt(\"continue\", 13);\n case 9:\n raw = part.raw, promise = part.promise;\n _t = raw === null || raw === void 0 ? void 0 : raw.type;\n _context.next = _t === \"function\" ? 10 : _t === \"template\" ? 11 : 13;\n break;\n case 10:\n functions.push(raw[\"function\"]);\n return _context.abrupt(\"continue\", 13);\n case 11:\n _context.next = 12;\n return promise;\n case 12:\n _part = _context.sent;\n templates.push({\n name: getAppTplName(_part.name),\n bricks: _part.bricks,\n state: _part.context,\n proxy: _part.proxy\n });\n return _context.abrupt(\"continue\", 13);\n case 13:\n _i++;\n _context.next = 8;\n break;\n case 14:\n _context.next = 7;\n break;\n case 15:\n _context.next = 17;\n break;\n case 16:\n _context.prev = 16;\n _t2 = _context[\"catch\"](6);\n _iterator2.e(_t2);\n case 17:\n _context.prev = 17;\n _iterator2.f();\n return _context.finish(17);\n case 18:\n helpers = Array.from(state.usedHelpers).map(function (name) {\n var source = getHelperFunctions().get(name);\n if (!source) {\n throw new Error(\"Helper function \".concat(name, \" not found\"));\n }\n return {\n name: name,\n source: source,\n typescript: true\n };\n });\n return _context.abrupt(\"return\", {\n routes: routes,\n functions: [].concat(functions, _toConsumableArray(helpers)),\n templates: templates,\n constants: Object.fromEntries(app.constants)\n });\n case 19:\n case \"end\":\n return _context.stop();\n }\n }, _callee, null, [[6, 16, 17, 18]]);\n }));\n return _convertApp.apply(this, arguments);\n}\n//# sourceMappingURL=convertApp.js.map","\n import API from \"!../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../node_modules/css-loader/dist/cjs.js??ruleSet[1].rules[3].use[1]!../../../../node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[3].use[2]!./styles.module.css\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\noptions.insert = insertFn.bind(null, \"head\");\noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../node_modules/css-loader/dist/cjs.js??ruleSet[1].rules[3].use[1]!../../../../node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[3].use[2]!./styles.module.css\";\n export default content && content.locals ? content.locals : undefined;\n","import React, {\n Suspense,\n useCallback,\n useDeferredValue,\n useEffect,\n useMemo,\n useState,\n} from \"react\";\nimport { createDecorators, type EventEmitter } from \"@next-core/element\";\nimport { ReactNextElement, wrapBrick } from \"@next-core/react-element\";\nimport { asyncWrapBrick } from \"@next-core/react-runtime\";\nimport type { Storyboard } from \"@next-core/types\";\nimport { uniqueId } from \"lodash\";\nimport type {\n CodeEditor,\n CodeEditorProps,\n ExtraLib,\n ExtraMarker,\n} from \"@next-bricks/vs/code-editor\";\nimport nextTsxDefinition from \"@next-tsx/core/index.d.ts?raw\";\nimport componentsDefinition from \"@next-tsx/converter/lib/components.d.ts?raw\";\nimport { convertApp, type ConvertedApp } from \"@next-tsx/converter\";\nimport type { ParsedApp } from \"@next-tsx/parser\";\nimport \"@next-core/theme\";\nimport styles from \"./styles.module.css\";\nimport { getRemoteTsxParserWorker } from \"../tsx-playground/workers/tsxParser.js\";\nimport type { AppPreview, AppPreviewProps } from \"../app-preview/index.js\";\n\ninterface CodeEditorEvents {\n \"code.change\": CustomEvent<string>;\n}\n\ninterface CodeEditorMapEvents {\n onCodeChange: \"code.change\";\n}\n\nconst AsyncWrappedCodeEditor = React.lazy(async () => ({\n default: await asyncWrapBrick<\n CodeEditor,\n CodeEditorProps,\n CodeEditorEvents,\n CodeEditorMapEvents\n >(\"vs.code-editor\", {\n onCodeChange: \"code.change\",\n }),\n}));\n\nconst WrappedAppPreview = wrapBrick<AppPreview, AppPreviewProps>(\n \"vb-experiment.app-preview\"\n);\n\nconst BUILTIN_LIBS: ExtraLib[] = [\n {\n filePath: \"/node_modules/next-tsx/components.d.ts\",\n content: componentsDefinition.replaceAll(\"export interface\", \"interface\"),\n },\n {\n filePath: \"/node_modules/next-tsx/package.json\",\n content: JSON.stringify({\n name: \"next-tsx\",\n types: \"./index.d.ts\",\n }),\n },\n {\n filePath: \"/node_modules/next-tsx/index.d.ts\",\n content: nextTsxDefinition,\n },\n];\n\nconst { defineElement, property, event } = createDecorators();\n\nexport interface AppPlaygroundProps {\n source?: string;\n extraLibs?: ExtraLib[];\n}\n\n/**\n * 构件 `vb-experiment.app-playground`\n */\nexport\n@defineElement(\"vb-experiment.app-playground\", {\n // Monaco editor does not work well with shadow DOM\n shadowOptions: false,\n})\nclass AppPlayground extends ReactNextElement implements AppPlaygroundProps {\n /** 仅初始有效 */\n @property({ attribute: false })\n accessor source: string | undefined;\n\n @property({ attribute: false })\n accessor extraLibs: ExtraLib[] | undefined;\n\n @event({ type: \"change\" })\n accessor #change!: EventEmitter<string>;\n\n #handleChange = (value: string) => {\n this.#change?.emit(value);\n };\n\n render() {\n return (\n <AppPlaygroundComponent\n source={this.source}\n extraLibs={this.extraLibs}\n onChange={this.#handleChange}\n />\n );\n }\n}\n\ninterface AppPlaygroundComponentProps extends AppPlaygroundProps {\n onChange: (value: string) => void;\n}\n\nfunction convertSeverity(\n severity: \"notice\" | \"warning\" | \"error\" | \"fatal\"\n): \"Hint\" | \"Info\" | \"Warning\" | \"Error\" {\n switch (severity) {\n case \"notice\":\n return \"Hint\";\n case \"warning\":\n return \"Warning\";\n case \"error\":\n return \"Error\";\n case \"fatal\":\n return \"Error\";\n }\n return severity;\n}\n\nfunction AppPlaygroundComponent({\n source,\n extraLibs,\n onChange,\n}: AppPlaygroundComponentProps) {\n const [code, setCode] = useState(source ?? \"\");\n const deferredCode = useDeferredValue(code);\n const [markers, setMarkers] = useState<ExtraMarker[] | undefined>();\n const [app, setApp] = useState<ParsedApp | undefined>();\n\n const allLibs = useMemo(\n () => [...BUILTIN_LIBS, ...(extraLibs ?? [])],\n [extraLibs]\n );\n\n const handleCodeChange = useCallback(\n (e: CustomEvent<string>) => {\n setCode(e.detail);\n onChange(e.detail);\n },\n [onChange]\n );\n useEffect(() => {\n let ignore = false;\n (async function run() {\n const worker = await getRemoteTsxParserWorker();\n if (ignore) {\n return;\n }\n const result = await worker.parseApp([\n {\n filePath: \"/index.tsx\",\n content: deferredCode,\n },\n ]);\n if (ignore) {\n return;\n }\n setApp(result);\n const withNodeErrors = result.errors.filter((err) => !!err.node);\n if (withNodeErrors.length > 0) {\n setMarkers(\n withNodeErrors.map((error) => ({\n message: error.message,\n severity: convertSeverity(error.severity),\n startLineNumber: error.node!.loc!.start.line,\n startColumn: error.node!.loc!.start.column + 1,\n endLineNumber: error.node!.loc!.end.line,\n endColumn: error.node!.loc!.end.column + 1,\n }))\n );\n } else {\n setMarkers(undefined);\n }\n if (ignore) {\n return;\n }\n })();\n return () => {\n ignore = true;\n };\n }, [deferredCode]);\n\n const rootId = useMemo(() => uniqueId(), []);\n\n // const [loading, setLoading] = useState(true);\n\n const [storyboard, setStoryboard] = useState<Storyboard | undefined>();\n\n useEffect(() => {\n let ignore = false;\n (async () => {\n if (!app) {\n return;\n }\n // setLoading(true);\n let convertedApp: ConvertedApp | undefined;\n try {\n convertedApp = await convertApp(app, { rootId, expanded: true });\n if (ignore) {\n return;\n }\n const storyboard = {\n routes: convertedApp.routes,\n meta: {\n functions: convertedApp.functions,\n customTemplates: convertedApp.templates,\n },\n } as Partial<Storyboard> as Storyboard;\n setStoryboard(storyboard);\n } catch (error) {\n // eslint-disable-next-line no-console\n console.error(\"Failed to render app:\", error);\n }\n // if (!ignore) {\n // setLoading(false);\n // }\n })();\n\n return () => {\n ignore = true;\n };\n }, [rootId, app]);\n\n return (\n <div className={styles.container}>\n <div className={styles.editor}>\n <Suspense fallback=\"Loading...\">\n <AsyncWrappedCodeEditor\n value={source}\n onCodeChange={handleCodeChange}\n language=\"typescript\"\n uri=\"file:///index.tsx\"\n automaticLayout=\"fit-container\"\n theme=\"tm-vs-dark\"\n extraLibs={allLibs}\n extraMarkers={markers}\n data-override-theme=\"dark-v2\"\n />\n </Suspense>\n </div>\n <div className={styles.preview}>\n <WrappedAppPreview storyboard={storyboard} />\n </div>\n </div>\n );\n}\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `.container--AW813tLb{display:flex;height:100%}.editor--B5m74LRR,\n.preview--THWZoCIv{flex:1;min-width:0}.preview--THWZoCIv{padding:0;height:100%}`, \"\"]);\n// Exports\n___CSS_LOADER_EXPORT___.locals = {\n\t\"container\": `container--AW813tLb`,\n\t\"editor\": `editor--B5m74LRR`,\n\t\"preview\": `preview--THWZoCIv`\n};\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `:host{display:block;height:100%}:host([hidden]){display:none}*{box-sizing:border-box}.container,\niframe{width:100%;height:100%;border-radius:4px}iframe{display:block;border:none;margin:0;padding:0;transform-origin:0% 0%;-webkit-user-select:none;user-select:none}`, \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___.toString();\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `.container--M22i1CYq{display:flex;height:100%}.editor--kF8SUoBP,\n.preview--gu5OlS2X{flex:1;min-width:0}.preview--gu5OlS2X{padding:1em;overflow:auto}`, \"\"]);\n// Exports\n___CSS_LOADER_EXPORT___.locals = {\n\t\"container\": `container--M22i1CYq`,\n\t\"editor\": `editor--kF8SUoBP`,\n\t\"preview\": `preview--gu5OlS2X`\n};\nexport default ___CSS_LOADER_EXPORT___;\n"],"names":["async","formatJs","source","typescript","semi","printWidth","arguments","length","undefined","format","parser","plugins","prettierPluginBabel","prettierPluginEstree","trailingComma","generateByFileStructure","items","folder","path","item","childPath","name","type","childFolder","file","nodeType","generate","node","cleanMenu","menu","key","value","Object","entries","Array","isArray","cleanMenuItem","keys","menuItem","customElements","define","createProviderClass","_ref","_storyboard$meta","_meta$customTemplates","_meta$functions","_meta$menus","_meta$contracts","_meta$i18n","projectDetail","storyboard","zip","JSZip","project","src","extractState","extracts","namePool","Map","extractedRoutes","extractRoutes","routes","app","id","appId","homepage","appSetting","layoutType","theme","noAuthGuard","locales","defaultConfig","JSON","parse","menuIcon","icon","standaloneMode","stringify","meta","customTemplates","functions","menus","contracts","i18n","workflows","mocks","userGroups","extractedTemplates","extractTemplates","push","fileStructure","buildFileStructure","srcIndexJs","resources","fnDir","fnNames","fnImports","fn","Error","inferredImports","Set","code","transform","filename","TransformStoryboardFunction","SmartImports","imports","hasFN","has","delete","importStrings","size","join","menusDir","menuNames","menuImports","menuId","replace","JS_RESERVED_WORDS","contractsDir","contractImports","contractNames","contract","baseName","counter","varName","add","srcResourcesIndexJs","editorConfig","gitIgnore","devConfigMjs","declarationsDTs","jsconfigJson","nextJsxConfigJs","replaceAll","packageJson","readmeMd","blob","generateAsync","saveAs","files","fs","content","segments","split","pop","handle","i","segment","current","slice","found","get","set","withBox","children","options","brick","properties","style","expanded","background","backdropFilter","borderRadius","padding","_convertView","mark","_callee2","view","_convertedEntry","entry","convertedEntry","state","templates","helpers","_ref2","title","bricks","context","needBox","wrap","_context2","prev","next","usedHelpers","convertedModules","Promise","all","from","modules","values","map","_callee","mod","converted","_i","_arr","part","raw","promise","_part","_t","_context","convertModule","sent","concat","internals","namedExports","defaultExport","abrupt","rootId","stop","_x3","apply","this","every","includes","withoutWrapper","withContexts","_ref3","_ref4","styleTagTransform","setAttributes","insert","domAPI","insertStyleElement","locals","remoteWorkerPromise","worker","getRemoteTsxParserWorker","Remote","Worker","URL","AsyncWrappedCodeEditor","React","default","asyncWrapBrick","onCodeChange","BUILTIN_LIBS","filePath","componentsDefinition","types","nextTsxDefinition","defineElement","property","event","createDecorators","_TsxPlayground","_A","WeakMap","_B","_C","_D","_E","_F","_TsxPlayground_brand","WeakSet","_handleChange","TsxPlayground","ReactNextElement","constructor","_classPrivateMethodInitSpec","_classPrivateFieldInitSpec","_init_source","_init_extra_source","_init_extraLibs","_init_extra_extraLibs","_init_viewLibs","_init_extra_viewLibs","_init_withoutWrapper","_init_extra_withoutWrapper","_init_allowAnyBricks","_init_extra_allowAnyBricks","_init_change","_init_extra_change","_classPrivateGetter2","_classPrivateGetter","_get_change","emit","_classPrivateFieldGet","v","_classPrivateFieldSet","extraLibs","viewLibs","allowAnyBricks","render","TsxPlaygroundComponent","onChange","convertSeverity","severity","setCode","useState","deferredCode","useDeferredValue","markers","setMarkers","setView","allLibs","useMemo","handleCodeChange","useCallback","e","detail","useEffect","ignore","result","parseView","libs","withNodeErrors","errors","filter","err","error","message","startLineNumber","loc","start","line","startColumn","column","endLineNumber","end","endColumn","uniqueId","ref","useRef","rootRef","container","portal","document","createElement","dataset","position","width","height","body","append","createPortal","root","unstable_createRoot","supportsUseChildren","unmount","remove","convertedView","_rootRef$current","_x","_x2","convertView","_rootRef$current2","console","errorTitle","errorBoundary","color","textContent","httpErrorToString","className","styles","editor","Suspense","fallback","language","uri","automaticLayout","extraMarkers","preview","_TsxPlayground2","_set_change","c","_initClass","_applyDecs","shadowOptions","attribute","Boolean","o","_","_checkInRHS","_AppPreview","AppPreview","_init_storyboard","_init_extra_storyboard","AppPreviewComponent","iframeRef","appPreviewer","setAppPreviewer","handleIframeLoad","check","_iframeRef$current","previewer","contentWindow","_preview_only_appPreviewer","setTimeout","setupRef","noPlaceholders","then","update","reload","setup","brickPackages","__secret_internals","getBrickPackages","storyboards","getBasePath","loading","onLoad","_AppPreview2","styleTexts","styleText","_convertApp","routesComponent","convertingEntry","_iterator","_step","_step$value","convertedMod","_iterator2","_step2","_mod","_t2","convertRoutes","s","n","done","f","proxy","finish","constants","fromEntries","WrappedAppPreview","wrapBrick","_AppPlayground","_AppPlayground_brand","AppPlayground","AppPlaygroundComponent","setApp","parseApp","setStoryboard","convertedApp","convertApp","_AppPlayground2","___CSS_LOADER_EXPORT___","module","toString"],"sourceRoot":""}
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
(globalThis.webpackChunk_next_bricks_vb_experiment=globalThis.webpackChunk_next_bricks_vb_experiment||[]).push([[246],{535:e=>{"use strict";e.exports="node_modules\n/dist\n/temp\n"},743:e=>{"use strict";e.exports='import functions from "./functions/index.js";\nimport menus from "./menus/index.js";\nimport contracts from "./contracts/index.js";\nimport i18n from "./i18n/index.js";\nimport meta from "./meta.js";\n\nexport default {\n functions,\n menus,\n contracts,\n i18n,\n meta,\n};\n'},1259:e=>{"use strict";e.exports='export default {\n appId: "__APP_ID__"\n};\n'},1330:e=>{"use strict";e.exports='// @ts-check\n/** @typedef {import("express").RequestHandler} Mock */\n/** @typedef {{ featureFlags?: Record<string, boolean>; misc?: Record<string, unknown>; [k: string]: unknown; }} Settings */\n/** @type {{ brickFolders?: string[]; mocks?: Mock[]; settings?: Settings }} */\nexport default {\n brickFolders: [\n "./bricks",\n ],\n // NOTE: Uncomment these lines below to enable local mocks:\n // mocks: [\n // (req, res, next) => {\n // switch (`${req.method} ${req.path}`) {\n // case "GET /api/auth/login":\n // res.send({\n // code: 0,\n // data: {\n // loggedIn: true,\n // username: "mock_user",\n // },\n // });\n // return;\n // }\n //\n // next();\n // }\n // ],\n}\n'},1672:(e,n,t)=>{"use strict";t.d(n,{c:()=>A});var r=t(8135),s=t(7585);function o(e,n,t){let r=e.get(n);r||(r=new Set,e.set(n,r)),r.add(t)}function i(e){return[...e].sort(((e,n)=>Number(e[0].startsWith("."))-Number(n[0].startsWith(".")))).map((e=>{let[n,t]=e;const r=[...t];return 1===r.length&&r[0].startsWith(s.jC)?`import ${r[0].substring(s.jC.length)} from "${n}";`:`import { ${r.join(", ")} } from "${n}";`}))}var a=t(7019),c=t(4437),l=t(77);const p="transform-pipeline-operator-minimal";(0,l.registerPlugin)(p,(()=>({name:p,inherits:l.availablePlugins["syntax-pipeline-operator"],visitor:{BinaryExpression(e){const{node:n}=e,{operator:t,left:s,right:o}=n;if("|>"!==t)return;const i=r.callExpression(o,[s]);e.replaceWith(i)}}})));const u=p;var f=t(7837);function d(e,n,t){if(/^\s*<%[~=]?\s/.test(e)&&/\s%>\s*$/.test(e))try{let s="";const i=e.replace(/^\s*<%([~=])?\s|\s%>\s*$/g,((e,n)=>(n&&(s=n),"")));let a="="===s;const c="~"===s,p=new Set;let d,m=(0,l.transform)(`(${i})`,{ast:!0,code:!1,plugins:[[u,{proposal:"minimal"}],[f.A,{imports:p}]]}).ast.program.body[0].expression;"SequenceExpression"!==m.type||(d=m.expressions[0],"StringLiteral"!==d.type)||"track context"!==d.value&&"track state"!==d.value||a||(a=!0,m=m.expressions.length>2?r.sequenceExpression(m.expressions.slice(1)):m.expressions[1]),!a||p.has("STATE")||p.has("CTX")||(a=!1);for(const e of p)if("FN"===e){const e=["resources","functions","index.js"];let r=0;for(let n=0;n<e.length&&n<t.length&&(r=n,t[n]===e[n]);n++);o(n,`${1===t.length?".":new Array(t.length-1-r).fill("..").join("/")}/${e.slice(r).join("/")}`,"default:FN")}else o(n,"next-jsx/runtime",e);return c&&(o(n,"next-jsx/runtime","recursive"),m=r.callExpression(r.identifier("recursive"),[m])),a&&(o(n,"next-jsx/runtime","bind"),m=r.callExpression(r.identifier("bind"),[m])),m}catch(n){console.warn("Parse expression failed:",e,n)}return null}function m(e,n,t,s,o){var i;return null!==(i=x(e,n,t,s,o))&&void 0!==i?i:r.nullLiteral()}function x(e,n,t,s,o){if(s&&"useBrick"===o){if(Array.isArray(e))return b(e,n,t);if((0,a.isObject)(e))return v(e,n,t)}if(Array.isArray(e))return r.arrayExpression(e.map((e=>x(e,n,t,s))));if("function"==typeof e)return null;if((0,a.isObject)(e))return r.objectExpression(Object.entries(e).map((e=>{let[o,i]=e;const a=x(i,n,t,s,o);return null!==a?r.objectProperty(r.stringLiteral(o),a):null})).filter(Boolean));if("string"==typeof e){const s=d(e,n,t);return null!=s?s:r.stringLiteral(e)}return"number"==typeof e?r.numericLiteral(e):"boolean"==typeof e?r.booleanLiteral(e):null===e?r.nullLiteral():null}function g(e,n,t,s,o,i){const l=[],p=[];for(const[s,i]of Object.entries(e))void 0!==i&&(/^[_$a-zA-Z][$\w]*$/.test(s)?l.push([s,i]):p.push(r.objectProperty(r.stringLiteral(o?`${o}:${s}`:s),m(i,n,t))));const u=(s?l.sort((f=s,function(e,n){return f.indexOf(n[0])-f.indexOf(e[0])})):l).map((e=>{let[s,l]=e;const p=function(e,n,t,s,o){if("string"==typeof e){const s=d(e,n,t);if(s)return r.jsxExpressionContainer(s);const o=r.stringLiteral(e);return e.includes(c.j4)||JSON.stringify(e).includes("\\")?r.jsxExpressionContainer(o):o}if(!0===e)return null;if(o&&"useBrick"===s){if(Array.isArray(e))return y(b(e,n,t));if((0,a.isObject)(e))return y(v(e,n,t))}const i=m(e,n,t,o);return r.jsxExpressionContainer(i)}(l,n,t,s,i);return r.jsxAttribute(o?r.jsxNamespacedName(r.jsxIdentifier(o),r.jsxIdentifier(s)):r.jsxIdentifier(s),p)}));var f;return p.length>0&&u.push(r.jsxSpreadAttribute(r.objectExpression(p))),u}function y(e){return"StringLiteral"!==e.type?r.jsxExpressionContainer(e):e}function h(e,n,t){o(n,"next-jsx","Route");const{children:i,slot:a,_isRoute:c,...l}=e,p=null!=i?i:[],u=""===a?void 0:a,f=0===p.length;return r.jsxElement(r.jsxOpeningElement(r.jsxIdentifier("Route"),g({...l,slot:u},n,t,s.O7),f),f?null:r.jsxClosingElement(r.jsxIdentifier("Route")),p.map((e=>h(e,n,t))),f)}function j(e){return"StringLiteral"===e.type?r.jsxExpressionContainer(e):e}function b(e,n,t){const s=e.map((e=>v(e,n,t)));return 1===s.length?s[0]:r.jsxFragment(r.jsxOpeningFragment(),r.jsxClosingFragment(),s.map(j))}function v(e,n,t){if("string"==typeof e)return r.stringLiteral(e);if(e.template)return function(e,n,t){o(n,"next-jsx","LegacyTemplate");const{children:s,...i}=e;return r.jsxElement(r.jsxOpeningElement(r.jsxIdentifier("LegacyTemplate"),g(i,n,t),!0),null,[],!0)}(e,n,t);const{brick:s,children:i,properties:a,events:c,lifeCycle:l,if:p,portal:u,ref:f,slot:d,...m}=e;if("string"==typeof s){let x,y,b=!0;switch(s){case":forEach":case":if":case":switch":x=`${s[1].toUpperCase()}${s.substring(2)}`,o(n,"next-jsx",x);break;default:b=!1,x=s.replaceAll(".","_")}b&&(y=m.dataSource,delete m.dataSource);const E=""===d?void 0:d,k=null!=a?a:{},{textContent:A,children:w,events:O,lifeCycle:$,if:P,ref:S,id:C,slot:T,...I}=k,R="string"==typeof A,F=0===i.length&&!R;i.length>0&&R&&console.warn("Invalid brick: mix slotted children and textContent:",e);const L=r.jsxOpeningElement(r.jsxIdentifier(x),[...g({if:!0===p?void 0:p,slot:E,ref:f,id:C,...b?{value:y}:null},n,t),...g(I,n,t,void 0,void 0,!0),...g({events:c,lifeCycle:l,portal:u},n,t),...g({children:w,events:O,lifeCycle:$,if:P,ref:S},n,t,void 0,"prop"),...g(m,n,t,void 0,"conf")],F),N=F?null:r.jsxClosingElement(r.jsxIdentifier(x));let M;return M=F?[]:i.length>0?i.map((e=>"string"!=typeof e&&e._isRoute?h(e,n,t):j(v(e,n,t)))):[_(A,n,t)],r.jsxElement(L,N,M,F)}throw new Error(`Unexpected brick node: ${JSON.stringify(e)}`)}function _(e,n,t){const s=d(e,n,t);return s?r.jsxExpressionContainer(s):/[{}<>]|&(?:[a-zA-Z0-9]+|#\d+|#x[\da-fA-F]+);/.test(e)?r.jsxExpressionContainer(r.stringLiteral(e)):r.jsxText(e)}function E(e,n){const t=r.exportDefaultDeclaration(e),{code:o}=(0,l.transformFromAst)(r.program([t],void 0,"module"),void 0,{generatorOpts:{jsescOption:{minimal:!0}},cloneInputAst:!1}),a=function(e){const n=new Set;for(const t of e.values())for(const e of t)n.add(e.startsWith(s.jC)?e.substring(s.jC.length):/\s+as\s+/.test(e)?e.split(/\s+as\s+/)[1]:e);return n}(n),p=i(n),u=o.replace(c.dC,((e,n)=>{const t=n.split("/"),r=t[t.length-1],o=("context"===r&&3===t.length&&"views"===t[0]?`${t[t.length-2]}_${r}`:r).replaceAll("-","_").replace(/^(\d)/,"_$1");let i=2,c=o;for(;a.has(c)||s.bB.has(c);)c=`${o}_${i++}`;return a.add(c),p.push(`import ${c} from "./${n}.js";`),c}));return p.length>0?`${p.join("\n")}\n\n${u}`:o}function k(e){return`export default ${JSON.stringify(e)};`}function A(e,n,t){switch(n){case"routes":return function(e,n){const t=new Map;return E(r.jsxFragment(r.jsxOpeningFragment(),r.jsxClosingFragment(),e.map((e=>h(e,t,n)))),t)}(e,t);case"bricks":return function(e,n){const t=new Map;return E(Array.isArray(e)?b(e,t,n):v(e,t,n),t)}(e,t);case"template":return function(e,n){const t=new Map;o(t,"next-jsx","Component");const{bricks:s,name:i,state:a,proxy:c}=e;return E(r.jsxElement(r.jsxOpeningElement(r.jsxIdentifier("Component"),g({name:i,state:a,proxy:c},t,n)),r.jsxClosingElement(r.jsxIdentifier("Component")),(null!=s?s:[]).map((e=>j(v(e,t,n))))),t)}(e,t);case"context":case"menu":return function(e,n){const t=new Map,s=r.exportDefaultDeclaration(m(e,t,n)),o=r.program([s],void 0,"module"),a=i(t),c=(0,l.transformFromAst)(o,void 0,{generatorOpts:{jsescOption:{minimal:!0}},cloneInputAst:!1}).code;return a.length>0?`${a.join("\n")}\n\n${c}`:c}(e,t);case"plain":return k(e);case"others":return function(e){let n=k(e);const t=new Set,r=[];return n=n.replace(c.dC,((e,n)=>{const s=n.split("/"),o=s[s.length-1].replaceAll("-","_").replace(/^(\d)/,"_$1");let i=2,a=o;for(;t.has(a);)a=`${o}_${i++}`;return t.add(a),r.push(`import ${a} from "./${n}.js";`),a})),r.length>0&&(n=`${r.join("\n")}\n\n${n}`),n}(e);default:throw new Error(`Unknown node type: ${n}`)}}},1895:e=>{"use strict";e.exports='{\n "name": "__APP_ID__",\n "private": true,\n "type": "module",\n "scripts": {\n "dev": "run-p start serve",\n "start": "next-jsx-start",\n "serve": "brick-container-serve --local-micro-apps=\\"__APP_ID__\\" --live-reload"\n },\n "engines": {\n "node": ">=16"\n },\n "devDependencies": {\n "@next-core/brick-container": "^3.6.2",\n "@next-core/types": "^1.6.0",\n "next-jsx": "^0.1.5",\n "npm-run-all": "^4.1.5",\n "csstype": "^3.1.2"\n }\n}\n'},1897:e=>{function n(e){var n=new Error("Cannot find module '"+e+"'");throw n.code="MODULE_NOT_FOUND",n}n.keys=()=>[],n.resolve=n,n.id=1897,e.exports=n},2582:e=>{"use strict";e.exports="root = true\n\n[*]\nindent_style = space\nindent_size = 2\ncharset = utf-8\ntrim_trailing_whitespace = true\ninsert_final_newline = true\n"},3812:e=>{"use strict";e.exports='{\n "compilerOptions": {\n "moduleResolution": "Node16",\n "module": "Node16"\n },\n "include": ["./src", "./declarations.d.ts"]\n}\n'},4215:e=>{"use strict";e.exports='declare namespace JSX {\n interface IntrinsicElements {\n "basic-bricks_general-button": BrickProps & {\n buttonName?: string;\n buttonType?: string;\n };\n\n "basic-bricks_micro-view": BrickProps & {\n pageTitle?: string;\n };\n\n "forms_general-input": FormItemProps;\n "forms_general-select": FormItemProps;\n "forms_general-textarea": FormItemProps;\n "forms_general-checkbox": FormItemProps;\n "forms_general-radio": FormItemProps;\n "forms_general-switch": FormItemProps;\n }\n\n interface BrickProps {\n // HTML properties:\n id?: string;\n slot?: string;\n title?: string;\n className?: string;\n style?: import("csstype").Properties;\n\n // Brick configurations:\n ref?: string;\n if?: unknown;\n portal?: unknown;\n events?: import("@next-core/types").BrickEventsMap;\n lifeCycle?: import("@next-core/types").BrickLifeCycle;\n\n // JSX\n children?: any;\n }\n\n interface FormItemProps extends BrickProps {\n name?: string;\n label?: string;\n placeholder?: string;\n value?: unknown\n }\n}\n'},4437:(e,n,t)=>{"use strict";t.d(n,{WM:()=>c,dC:()=>i,j4:()=>o,pA:()=>l});var r=t(7019);const s={properties:["ref","refProperty","extraOneWayRefs","refTransform","mergeType","mergeMethod","mergeArgs","mergeProperty","asVariable"],slots:["ref","refSlot","refPosition"],events:["ref","refEvent"],methods:["ref","refMethod"]},o=`--${Math.floor(1e16*Math.random()).toString(36)}--:`,i=new RegExp(`"${o}((?:[-\\w]+/)*[-\\w]+)"`,"g");function a(e,n){return`${o}${e}${e?"/":""}${n}`}function c(e,n,t){return e.map((e=>function(e,n,t){const r=[...n,"views"],s=u("route",e.alias,r,t.namePool);let o;f(t.namePool,[...r,s],s),function(e){delete e.alias,delete e.iid,delete e.deviceOwner,delete e.analyticsData,""===e.menu&&delete e.menu,j(e,["redirect","exact"]),"bricks"===e.type&&delete e.type}(e);const i=[...r,s];if("redirect"===e.type)o=e;else if("routes"===e.type){const{routes:r,...s}=e;o={...s,children:c(r,n,t)}}else{const{bricks:n,...r}=e,c=m(n,i,t);t.extracts.push({name:s,path:i,node:c,nodeType:"bricks"}),o={...r,view:a(`views/${s}`,s)}}const l=p("context",e.context,s,i,t);return{...o,context:l}}(e,n,t)))}function l(e,n,t){return e.map((e=>function(e,n,t){if(!e.name.startsWith("tpl-"))throw new Error(`Invalid template name: "${e.name}"`);const o=e.name.substring(4),i=[...n,o],c=m(e.bricks,i,t),l=p("state",e.state,o,i,t),f=function(e,n,t){if((0,r.isObject)(e)&&Object.keys(e).length>0){const o=u("proxy","proxy",n,t.namePool);return function(e){for(const[n,t]of Object.entries(e))switch(n){case"properties":case"events":case"slots":case"methods":if((0,r.isObject)(t))for(const[e,o]of Object.entries(t))if((0,r.isObject)(o)){const r=Object.keys(o);for(const e of r)s[n].includes(e)||delete o[e];0===r.length&&delete t[e]}break;default:delete e[n]}}(e),t.extracts.push({name:o,path:n,node:e,nodeType:"plain"}),a("",o)}return e}(e.proxy,i,t);return t.extracts.push({name:o,path:i,node:{...e,bricks:c,state:l,proxy:f},nodeType:"template"}),a(o,o)}(e,n,t)))}function p(e,n,t,r,s){if(Array.isArray(n)&&n.length>0){for(const e of n)h(e);const o=u(e,e,r,s.namePool);return s.extracts.push({name:o,path:r,node:n,nodeType:"context"}),a("context"===e?`views/${t}`:"",o)}}function u(e,n,t,r){let s=null==n?void 0:n.toLowerCase();"index"==s&&(s=`${s}_2`);const o=d(r,t),i="route"!==e||"string"==typeof s&&/^[-\w]+$/.test(s)&&"index"!==s;if(!i||o.has(s)){const n=i?s:e;let t,r=2;for(;o.has(t=`${n}_${r}`);)r++;s=t}return o.add(s),s}function f(e,n,t){d(e,n).add(t)}function d(e,n){const t=n.join("/");let r=e.get(t);return r||e.set(t,r=new Set),r}function m(e,n,t){return Array.isArray(e)?e.map((e=>x(e,n,t))):e}function x(e,n,t){let s;"string"==typeof e.alias&&/^<[-\w]+>$/.test(e.alias)&&"<index>"!==e.alias&&(s=e.alias.slice(1,-1)),function(e){if("string"==typeof e.properties){const n=`The \`properties\` of brick cannot be a string, received: "${e.properties}"`;throw console.error(`${n}. Check your brick:`,e),new Error(n)}delete e.alias,delete e.iid,delete e.deviceOwner,delete e.uuid,e.events&&0===Object.keys(e.events).length&&delete e.events,e.lifeCycle&&0===Object.keys(e.lifeCycle).length&&delete e.lifeCycle,j(e,["bg","portal"])}(e),s&&(s=u("brick",s,n,t.namePool),f(t.namePool,[...n,s],s));const{slots:o,...i}=e,l=[],p=[...n,...s?[s]:[]];if((0,r.isObject)(o))for(const[e,r]of Object.entries(o))if("routes"===r.type){var d;const s=c((null!==(d=r.routes)&&void 0!==d?d:[]).map((n=>({...n,_isRoute:!0,slot:e}))),n,t);l.push(...s)}else{var x;const n=m((null!==(x=r.bricks)&&void 0!==x?x:[]).map((n=>({...n,slot:e}))),p,t);l.push(...n)}return(0,r.isObject)(i.properties)&&!Array.isArray(i.properties)&&(i.properties=g(i.properties,p,t)),i.children=l,s?(t.extracts.push({name:s,node:i,path:[...n,s],nodeType:"bricks"}),a(s,s)):i}function g(e,n,t){return Object.fromEntries(Object.entries(e).map((e=>{let[r,s]=e;return[r,y(s,r,n,t)]})))}function y(e,n,t,s){return"useBrick"===n?Array.isArray(e)?m(e,t,s):(0,r.isObject)(e)?x(e,t,s):e:Array.isArray(e)?e.map(((e,n)=>y(e,n,t,s))):(0,r.isObject)(e)?g(e,t,s):e}function h(e){delete e.path,delete e.relatedId,delete e.doc}function j(e,n){for(const t of n)e[t]||delete e[t]}},6337:(e,n,t)=>{"use strict";function r(e){const n=[];for(const t of e)s(t,n);return n}function s(e,n){let{name:t,path:r,node:s,nodeType:o}=e,i=n;for(const e of r){const n=i.find((n=>n.name===e&&"folder"===n.type));if(n){i=n.items;continue}const t={type:"folder",name:e,items:[]};i.push(t),i=t.items}const a={type:"file",name:t,node:s,nodeType:o};i.push(a)}t.d(n,{_:()=>r})},6357:(e,n,t)=>{"use strict";t.d(n,{A:()=>i});var r=t(8135),s=t(77);const o="transform-storyboard-function";(0,s.registerPlugin)(o,(()=>({name:o,visitor:{FunctionDeclaration(e){"Program"===e.parent.type&&e.replaceWith(r.exportDefaultDeclaration(e.node))},TSDeclareFunction(e){"Program"===e.parent.type&&e.replaceWith(r.exportDefaultDeclaration(e.node))}}})));const i=o},6414:e=>{"use strict";e.exports="# __PROJECT_NAME__\n\n## 准备\n\n```bash\nyarn\n```\n\n## 开发\n\n打开两个终端,分别运行 `yarn start` 和 `yarn serve`。\n\n然后浏览器打开 http://localhost:8081__PROJECT_HOMEPAGE__\n\n提示:\n- 运行 `yarn serve` 时按需使用 `--subdir` 和 `--server` 等参数。\n- 也可以选择只使用一个终端运行 `yarn dev`,此时需要把 `yarn serve` 相关的参数定义在 `package.json` 文件中。\n\n## 离线开发\n\n修改 `dev.config.mjs`,取消注释 `mock` 一节的代码,参考对 `GET /api/auth/login` 接口,对其他远端接口进行 mock。\n"},7577:e=>{"use strict";e.exports='import app from "./app.js";\nimport routes from "./routes.js";\nimport components from "./components/index.js";\nimport resources from "./resources/index.js";\n\nexport default {\n app,\n routes,\n components,\n resources,\n};\n'},7585:(e,n,t)=>{"use strict";t.d(n,{O7:()=>r,bB:()=>o,jC:()=>s});const r=["context","exact","path","slot"],s="default:",o=new Set(["break","case","catch","class","continue","const","constructor","debugger","default","delete","do","else","export","extends","false","finally","for","from","function","get","if","import","in","instanceof","let","new","null","return","set","static","super","switch","symbol","this","throw","true","try","typeof","undefined","var","void","while","with","yield","async","await","of"])},7837:(e,n,t)=>{"use strict";t.d(n,{A:()=>i}),t(8135);var r=t(77);t(7019);const s=new Set(["_","location","moment","ANCHOR","APP","BASE_URL","CTX","DATA","EVENT","FLAGS","FN","HASH","I18N_TEXT","I18N","IMG","INSTALLED_APPS","ITEM","INDEX","SIZE","LOCAL_STORAGE","MEDIA","MISC","PARAMS","PATH_NAME","PATH","PERMISSIONS","PIPES","PROCESSORS","QUERY_ARRAY","QUERY","SESSION_STORAGE","STATE","SYS","THEME","TAG_URL","SAFE_TAG_URL"]),o="smart-imports";(0,r.registerPlugin)(o,((e,n)=>({name:o,visitor:{Identifier(e){const{node:t,scope:r,key:o,parent:i}=e,{name:a}=t;!r.hasGlobal(a)||"undefined"===a||"key"===o&&"ObjectProperty"===i.type&&!i.computed||"property"===o&&"MemberExpression"===i.type&&!i.computed||s.has(a)&&(null==n||n.imports.add(a))}}})));const i=o}}]);
|
|
2
|
-
//# sourceMappingURL=246.3c1287e4.js.map
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
"use strict";(globalThis.webpackChunk_next_bricks_vb_experiment=globalThis.webpackChunk_next_bricks_vb_experiment||[]).push([[4765,7146],{7146:(e,t,r)=>{function o(e,t){let r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:1,o=arguments.length>3&&void 0!==arguments[3]&&arguments[3];return function(n,s){if("string"==typeof t?n.name===t:t.includes(n.name)){const t=[];for(let i=1;i<=r;i++){const r=s[s.length-i];if("MemberExpression"===(null==r?void 0:r.node.type)&&"object"===r.key){const s=r.node;s.computed||"Identifier"!==s.property.type?s.computed&&"Literal"===s.property.type&&"string"==typeof s.property.value?t.push(o?`${n.name}.${s.property.value}`:s.property.value):e.hasNonStaticUsage=!0:t.push(o?`${n.name}.${s.property.name}`:s.property.name)}else e.hasNonStaticUsage=!0}t.length===r&&e.usedProperties.add(t.join("."))}}}function n(e,t){return function(r,o,n){if(o.name===e){const e=n[n.length-1],o=n[n.length-2];if("CallExpression"===(null==o?void 0:o.node.type)&&"callee"===(null==o?void 0:o.key)&&"MemberExpression"===(null==e?void 0:e.node.type)&&"object"===e.key&&(e.node.computed?"Literal"===e.node.property.type&&e.node.property.value===t:"Identifier"===e.node.property.type&&e.node.property.name===t)){const e=o.node.arguments;if(e.length>0){const t=e[0];"Literal"===t.type&&"string"==typeof t.value?r.usedArgs.add(t.value):r.hasNonStaticUsage=!0}}}}}r.r(t),r.d(t,{beforeVisitGlobalMember:()=>o,collectAppGetMenuUsage:()=>s,collectInstalledAppsHasUsage:()=>i,collectMemberUsage:()=>p,collectMemberUsageInFunction:()=>b,createProviderClass:()=>c.createProviderClass,replaceUseChildren:()=>E,scanPermissionActionsInAny:()=>A,scanPermissionActionsInStoryboard:()=>m,strictCollectMemberUsage:()=>u,track:()=>f,trackAll:()=>y,traverseStoryboardExpressions:()=>l,traverseStoryboardFunction:()=>g,traverseStoryboardFunctions:()=>h,unwrapProvider:()=>c.unwrapProvider});const s=n("APP","getMenu"),i=n("INSTALLED_APPS","has");var a=r(1321),c=r(7019);function l(e,t,r){const o=new WeakSet,{matchExpressionString:n,visitNotMatchedExpressionString:s,visitNonExpressionString:i,visitObject:l}="string"==typeof r?{matchExpressionString:e=>e.includes(r)}:r;!function e(r){if("string"==typeof r)if((0,a.isEvaluable)(r))if(n(r))try{(0,a.preevaluate)(r,{cache:!0,withParent:!0,hooks:{beforeVisitGlobal(e,o){t(e,o,r)}}})}catch(e){console.error("Parse storyboard expression failed:",e)}else null==s||s(r);else null==i||i(r);else if((0,c.isObject)(r)){if(o.has(r))return;o.add(r),null==l||l(r);for(const t of Array.isArray(r)?r:Object.values(r))e(t)}}(e)}function u(e,t){let r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:1;const{hasNonStaticUsage:o,nonStaticUsage:n,usedProperties:s}=p(e,t,r);if(o)throw new Error(`Non-static usage of ${t} is prohibited, check your expression: "${n}"`);return s}function p(e,t){let r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:1;const n={usedProperties:new Set,hasNonStaticUsage:!1},s=o(n,t,r);return l(e,((e,t,r)=>{s(e,t),n.hasNonStaticUsage&&(n.nonStaticUsage=r)}),t),n}const d=["CTX","STATE","FORM_STATE"];function f(e,t,r){if(e.includes(t)){const n={usedProperties:new Set,hasNonStaticUsage:!1},{expression:s}=(0,a.preevaluate)(e,{cache:!0,withParent:!0,hooks:{beforeVisitGlobal:o(n,r)}});let i;if("SequenceExpression"===s.type&&(i=s.expressions[0])&&"Literal"===i.type&&i.value===t){if(n.usedProperties.size>0)return n.usedProperties;console.warn(`You are using "${t}" but no \`${r}\` usage found in your expression: ${JSON.stringify(e)}`)}}return!1}function y(e){if(d.some((t=>e.includes(t)))){const t={usedProperties:new Set,hasNonStaticUsage:!1};if((0,a.preevaluate)(e,{cache:!0,withParent:!0,hooks:{beforeVisitGlobal:o(t,d,1,!0)}}),t.usedProperties.size>0){const e=[...t.usedProperties],r={context:!1,state:!1,formState:!1},o={CTX:"context",STATE:"state",FORM_STATE:"formState"};return e.forEach((e=>{const[t,n]=e.split(".");r[o[t]]||(r[o[t]]=[]),r[o[t]].push(n)})),r}console.warn(`You are using track all but no "CTX" or "STATE" or "FORM_STATE" usage found in your expression: ${JSON.stringify(e)}`)}return!1}function h(e,t,r){if(Array.isArray(e))for(const o of e)null!=r&&r.matchSource&&!r.matchSource(o.source)||g(o,t)}function g(e,t,r){try{(0,a.precookFunction)(e.source,{typescript:e.typescript,withParent:!0,hooks:{beforeVisitGlobal:t},cacheKey:e})}catch(t){r||console.error(`Parse storyboard function "${e.name}" failed:`,t)}}function b(e,t,r){let n=arguments.length>3&&void 0!==arguments[3]?arguments[3]:1;const s={usedProperties:new Set,hasNonStaticUsage:!1};if(e.source.includes(t)&&g(e,o(s,t,n),r),s.hasNonStaticUsage&&!r)throw new Error(`Non-static usage of ${t} is prohibited, check your function: "${e.name}"`);return s.usedProperties.delete(e.name),s.usedProperties}const S="PERMISSIONS",v="check";function m(e){var t;const r=new Set,o=P(r),{customTemplates:n,functions:s}=null!==(t=e.meta)&&void 0!==t?t:{};return l([e.routes,n],o,S),h(s,o,{matchSource:e=>e.includes(S)}),Array.from(r)}function A(e){const t=new Set;return l(e,P(t),S),Array.from(t)}function P(e){return function(t,r){if(t.name===S){const t=r[r.length-1],o=r[r.length-2];if("CallExpression"===(null==o?void 0:o.node.type)&&"callee"===(null==o?void 0:o.key)&&"MemberExpression"===(null==t?void 0:t.node.type)&&"object"===t.key&&(t.node.computed?"Literal"===t.node.property.type&&t.node.property.value===v:"Identifier"===t.node.property.type&&t.node.property.name===v))for(const t of o.node.arguments)"Literal"===t.type&&"string"==typeof t.value&&e.add(t.value)}}}var k=r(563);const{pull:w}=k,x=/^\[\w+\]$/;function E(e){if(Array.isArray(e))for(const t of e)T(t);else T(e)}function T(e){let t=e.slots;const r=new Map;if(Array.isArray(e.children)&&!t){const t=[];for(const n of e.children){var o;const e=null!==(o=n.slot)&&void 0!==o?o:"";if(x.test(e)){delete n.slot;const o=r.get(e);o?o.push(n):r.set(e,[n]),t.push(n)}T(n)}w(e.children,...t)}else{null!=t||(t={});for(const[e,o]of Object.entries(t)){if(x.test(e)){const{bricks:n}=o;Array.isArray(n)&&n.length>0&&(r.set(e,n),E(n)),delete t[e]}Array.isArray(o.bricks)&&E(o.bricks)}}r.size>0&&N(e.properties,r)}function N(e,t){if(Array.isArray(e))for(const r of e)N(r,t);else if((0,c.isObject)(e))for(const[r,o]of Object.entries(e))if("useChildren"===r){const n=t.get(o);n&&(delete e[r],e.useBrick=1===n.length?n[0]:n)}else N(o,t)}}}]);
|
|
2
|
-
//# sourceMappingURL=4765.3a3c2ed3.js.map
|