@mybricks/to-code-taro 1.1.0 → 1.1.4
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/cjs/core/comlib/{index.js → Index.js} +6 -6
- package/dist/cjs/core/utils/PopupRenderer.js +1 -1
- package/dist/cjs/core/utils/hooks.js +102 -38
- package/dist/cjs/core/utils/slots.js +11 -4
- package/dist/cjs/core/utils/useContext.js +6 -4
- package/dist/cjs/core/utils/with.js +3 -3
- package/dist/cjs/generate/generateTaroProjectJson.js +36 -11
- package/dist/cjs/generate/utils/commonDir.js +14 -10
- package/dist/cjs/generate/utils/pageImages.d.ts +14 -0
- package/dist/cjs/generate/utils/pageImages.js +36 -0
- package/dist/cjs/handleCom.js +37 -14
- package/dist/cjs/handleDom.d.ts +2 -0
- package/dist/cjs/handleDom.js +5 -2
- package/dist/cjs/handleGlobal.js +4 -2
- package/dist/cjs/handleSlot.d.ts +3 -0
- package/dist/cjs/handleSlot.js +38 -10
- package/dist/cjs/processors/processScene.js +3 -1
- package/dist/cjs/taro-template.json +313 -13
- package/dist/cjs/toCodeTaro.d.ts +4 -1
- package/dist/cjs/toCodeTaro.js +80 -1
- package/dist/cjs/utils/builder/buildResult.js +3 -16
- package/dist/cjs/utils/config/content/converter.js +2 -2
- package/dist/cjs/utils/config/content/pageConfig.js +4 -1
- package/dist/cjs/utils/config/content/saveBase64Image.d.ts +10 -0
- package/dist/cjs/utils/config/content/saveBase64Image.js +44 -3
- package/dist/cjs/utils/config/content/tabBarConfig.js +8 -2
- package/dist/cjs/utils/config/handlePageConfig.js +5 -3
- package/dist/cjs/utils/context/collectJSModules.d.ts +4 -0
- package/dist/cjs/utils/context/collectJSModules.js +4 -2
- package/dist/cjs/utils/logic/genJSModules.d.ts +8 -4
- package/dist/cjs/utils/logic/genJSModules.js +31 -33
- package/dist/cjs/utils/logic/handleProcess.js +4 -4
- package/dist/cjs/utils/logic/processChildren.d.ts +14 -1
- package/dist/cjs/utils/logic/processChildren.js +30 -6
- package/dist/cjs/utils/style/converter.js +34 -72
- package/dist/cjs/utils/templates/index.d.ts +1 -0
- package/dist/cjs/utils/templates/index.js +11 -2
- package/dist/cjs/utils/templates/renderManager.d.ts +4 -0
- package/dist/cjs/utils/templates/renderManager.js +10 -3
- package/dist/cjs/utils/templates/scene.js +13 -1
- package/dist/esm/core/comlib/{index.js → Index.js} +1 -1
- package/dist/esm/core/utils/PopupRenderer.js +1 -1
- package/dist/esm/core/utils/hooks.js +137 -53
- package/dist/esm/core/utils/popupRouter.js +2 -1
- package/dist/esm/core/utils/slots.js +24 -22
- package/dist/esm/core/utils/useContext.js +8 -10
- package/dist/esm/core/utils/with.js +3 -3
- package/dist/esm/generate/generateTaroProjectJson.js +28 -8
- package/dist/esm/generate/utils/commonDir.js +18 -14
- package/dist/esm/generate/utils/pageImages.d.ts +14 -0
- package/dist/esm/generate/utils/pageImages.d.ts.map +1 -0
- package/dist/esm/generate/utils/pageImages.js +15 -0
- package/dist/esm/handleCom.js +44 -17
- package/dist/esm/handleDom.d.ts +2 -0
- package/dist/esm/handleDom.js +6 -4
- package/dist/esm/handleGlobal.js +4 -2
- package/dist/esm/handleSlot.d.ts +3 -0
- package/dist/esm/handleSlot.js +57 -12
- package/dist/esm/processors/processComEvents.d.ts.map +1 -0
- package/dist/esm/processors/processScene.d.ts.map +1 -1
- package/dist/esm/processors/processScene.js +13 -3
- package/dist/esm/processors/processSceneLogic.d.ts.map +1 -0
- package/dist/esm/taro-template.json +313 -13
- package/dist/esm/toCodeTaro.d.ts +4 -1
- package/dist/esm/toCodeTaro.d.ts.map +1 -1
- package/dist/esm/toCodeTaro.js +89 -4
- package/dist/esm/utils/builder/buildResult.d.ts.map +1 -1
- package/dist/esm/utils/builder/buildResult.js +5 -14
- package/dist/esm/utils/common/helper.d.ts.map +1 -0
- package/dist/esm/utils/config/content/converter.js +2 -2
- package/dist/esm/utils/config/content/pageConfig.js +4 -1
- package/dist/esm/utils/config/content/saveBase64Image.d.ts +10 -0
- package/dist/esm/utils/config/content/saveBase64Image.js +42 -1
- package/dist/esm/utils/config/content/tabBarConfig.js +7 -2
- package/dist/esm/utils/config/handlePageConfig.d.ts.map +1 -1
- package/dist/esm/utils/config/handlePageConfig.js +5 -3
- package/dist/esm/utils/context/collectJSModules.d.ts +4 -0
- package/dist/esm/utils/context/collectJSModules.d.ts.map +1 -1
- package/dist/esm/utils/context/collectJSModules.js +1 -1
- package/dist/esm/utils/logic/genJSModules.d.ts +8 -4
- package/dist/esm/utils/logic/genJSModules.d.ts.map +1 -1
- package/dist/esm/utils/logic/genJSModules.js +16 -27
- package/dist/esm/utils/logic/handleProcess.js +4 -4
- package/dist/esm/utils/logic/processChildren.d.ts +14 -1
- package/dist/esm/utils/logic/processChildren.js +45 -8
- package/dist/esm/utils/style/converter.js +57 -106
- package/dist/esm/utils/templates/index.d.ts +1 -0
- package/dist/esm/utils/templates/index.js +9 -2
- package/dist/esm/utils/templates/renderManager.d.ts +4 -0
- package/dist/esm/utils/templates/renderManager.js +17 -4
- package/dist/esm/utils/templates/scene.js +8 -2
- package/package.json +1 -1
- package/dist/esm/generate/generateTaroProjectJson.d.ts.map +0 -1
- package/dist/esm/generate/utils/commonDir.d.ts.map +0 -1
- package/dist/esm/handleDom.d.ts.map +0 -1
- package/dist/esm/handleGlobal.d.ts.map +0 -1
- package/dist/esm/utils/config/content/converter.d.ts.map +0 -1
- package/dist/esm/utils/config/content/pageConfig.d.ts.map +0 -1
- package/dist/esm/utils/config/content/saveBase64Image.d.ts.map +0 -1
- package/dist/esm/utils/config/content/tabBarConfig.d.ts.map +0 -1
- package/dist/esm/utils/logic/processChildren.d.ts.map +0 -1
|
@@ -1,16 +1,13 @@
|
|
|
1
1
|
import _slicedToArray from "@babel/runtime/helpers/esm/slicedToArray";
|
|
2
2
|
import { useRef, useState, useMemo } from 'react';
|
|
3
|
-
import {
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
// - comRefs: 组件实例/inputs/outputs 注册表(可 scoped)
|
|
9
|
-
// - $vars/$fxs: 逻辑能力注册表(仅页面级,全作用域共享)
|
|
10
|
-
var comRefs = useRef(deepProxy({
|
|
3
|
+
import { proxyRefs } from "./hooks";
|
|
4
|
+
var GLOBAL_TODO_POOL = new Map();
|
|
5
|
+
export function useAppCreateContext(id) {
|
|
6
|
+
var globalTodoInputs = useRef(GLOBAL_TODO_POOL);
|
|
7
|
+
var comRefs = useRef(proxyRefs({
|
|
11
8
|
$inputs: {},
|
|
12
9
|
$outputs: {}
|
|
13
|
-
}));
|
|
10
|
+
}, undefined, globalTodoInputs.current));
|
|
14
11
|
var $vars = useRef({});
|
|
15
12
|
var $fxs = useRef({});
|
|
16
13
|
var _useState = useState({
|
|
@@ -24,7 +21,7 @@ export function useAppCreateContext() {
|
|
|
24
21
|
setPopupState = _useState2[1];
|
|
25
22
|
var appContext = useRef({
|
|
26
23
|
canvas: {
|
|
27
|
-
id:
|
|
24
|
+
id: id
|
|
28
25
|
},
|
|
29
26
|
runtime: {
|
|
30
27
|
debug: false
|
|
@@ -45,6 +42,7 @@ export function useAppCreateContext() {
|
|
|
45
42
|
comRefs: comRefs,
|
|
46
43
|
$vars: $vars,
|
|
47
44
|
$fxs: $fxs,
|
|
45
|
+
globalTodoInputs: globalTodoInputs.current,
|
|
48
46
|
appContext: appContext,
|
|
49
47
|
popupState: popupState,
|
|
50
48
|
setPopupState: setPopupState
|
|
@@ -122,11 +122,11 @@ export var WithCom = function WithCom(props) {
|
|
|
122
122
|
return show || isPopup ? /*#__PURE__*/React.createElement(View, {
|
|
123
123
|
className: className,
|
|
124
124
|
style: _objectSpread(_objectSpread({}, style), dynamicStyle)
|
|
125
|
-
}, jsx) : null;
|
|
125
|
+
}, jsx, props.children) : null;
|
|
126
126
|
};
|
|
127
|
-
export var WithWrapper = function WithWrapper(Component) {
|
|
127
|
+
export var WithWrapper = function WithWrapper(id, Component) {
|
|
128
128
|
return function WrappedComponent(props) {
|
|
129
|
-
var contextStore = useAppCreateContext();
|
|
129
|
+
var contextStore = useAppCreateContext(id);
|
|
130
130
|
var setPopupState = contextStore.setPopupState;
|
|
131
131
|
var isPopup = Component.isPopup;
|
|
132
132
|
|
|
@@ -4,7 +4,9 @@ import * as path from "path";
|
|
|
4
4
|
import { findDir, ensureDir } from "./utils/fileNode";
|
|
5
5
|
import { handleCommonDir } from "./utils/commonDir";
|
|
6
6
|
import { handleTabBarImages } from "./utils/tabBarImages";
|
|
7
|
+
import { handlePageImages } from "./utils/pageImages";
|
|
7
8
|
import { updateAppConfig } from "./utils/appConfig";
|
|
9
|
+
import { genScopedJSModules } from "../utils/logic/genJSModules";
|
|
8
10
|
/**
|
|
9
11
|
* 根据数组生成文件结构 JSON 对象
|
|
10
12
|
* @param result 包含 files 和 assets 的生成结果对象
|
|
@@ -46,6 +48,7 @@ var generateTaroProjectJson = function generateTaroProjectJson(result) {
|
|
|
46
48
|
|
|
47
49
|
// 从 assets 中获取 TabBar 图片文件信息
|
|
48
50
|
var imageFiles = assets.tabBarImages || [];
|
|
51
|
+
var pageImages = assets.pageImages || [];
|
|
49
52
|
|
|
50
53
|
// 过滤出类型为 normal 的项
|
|
51
54
|
var normalItems = files.filter(function (item) {
|
|
@@ -76,6 +79,13 @@ var generateTaroProjectJson = function generateTaroProjectJson(result) {
|
|
|
76
79
|
path: "src/pages/".concat(pageName, "/index.tsx"),
|
|
77
80
|
content: fullContent
|
|
78
81
|
}];
|
|
82
|
+
// 生成页面级 jsModules(如果有 JS 计算组件)
|
|
83
|
+
if (item.jsModules && item.jsModules.length > 0) {
|
|
84
|
+
pageChildren.push({
|
|
85
|
+
path: "src/pages/".concat(pageName, "/index.jsModules.ts"),
|
|
86
|
+
content: genScopedJSModules(item.jsModules, "@/core/mybricks/index", "@/common/jsModulesRuntime")
|
|
87
|
+
});
|
|
88
|
+
}
|
|
79
89
|
|
|
80
90
|
// 返回页面目录节点
|
|
81
91
|
return {
|
|
@@ -98,16 +108,23 @@ var generateTaroProjectJson = function generateTaroProjectJson(result) {
|
|
|
98
108
|
var popupId = item.meta.id;
|
|
99
109
|
var importCode = ((_item$importManager2 = item.importManager) === null || _item$importManager2 === void 0 ? void 0 : _item$importManager2.toCode()) || "";
|
|
100
110
|
var fullContent = "".concat(importCode, "\n").concat(item.content || "");
|
|
111
|
+
var popupChildren = [{
|
|
112
|
+
path: "src/popupComponents/".concat(popupId, "/index.tsx"),
|
|
113
|
+
content: fullContent
|
|
114
|
+
}, {
|
|
115
|
+
path: "src/popupComponents/".concat(popupId, "/index.global.less"),
|
|
116
|
+
content: item.cssContent || ""
|
|
117
|
+
}];
|
|
118
|
+
if (item.jsModules && item.jsModules.length > 0) {
|
|
119
|
+
popupChildren.push({
|
|
120
|
+
path: "src/popupComponents/".concat(popupId, "/index.jsModules.ts"),
|
|
121
|
+
content: genScopedJSModules(item.jsModules, "@/core/mybricks/index", "@/common/jsModulesRuntime")
|
|
122
|
+
});
|
|
123
|
+
}
|
|
101
124
|
popupComponentsDir.children.push({
|
|
102
125
|
path: "src/popupComponents/".concat(popupId),
|
|
103
126
|
content: null,
|
|
104
|
-
children:
|
|
105
|
-
path: "src/popupComponents/".concat(popupId, "/index.tsx"),
|
|
106
|
-
content: fullContent
|
|
107
|
-
}, {
|
|
108
|
-
path: "src/popupComponents/".concat(popupId, "/index.global.less"),
|
|
109
|
-
content: item.cssContent || ""
|
|
110
|
-
}]
|
|
127
|
+
children: popupChildren
|
|
111
128
|
});
|
|
112
129
|
});
|
|
113
130
|
|
|
@@ -122,12 +139,15 @@ var generateTaroProjectJson = function generateTaroProjectJson(result) {
|
|
|
122
139
|
// 处理 TabBar 图片文件
|
|
123
140
|
handleTabBarImages(tabbarDir, imageFiles);
|
|
124
141
|
|
|
142
|
+
// 处理页面 base64 图片文件(与 tabbar 同级别)
|
|
143
|
+
handlePageImages(assetsDir, pageImages);
|
|
144
|
+
|
|
125
145
|
// 替换自定义 Tabbar 配置文件
|
|
126
146
|
var CUSTOM_TAB_BAR_CONFIG_PATH = "src/custom-tab-bar/mybricks/tabbar-config.ts";
|
|
127
147
|
var customTabBarItem = files.find(function (item) {
|
|
128
148
|
return item.type === 'customTabBar';
|
|
129
149
|
});
|
|
130
|
-
if (customTabBarItem.content) {
|
|
150
|
+
if (customTabBarItem !== null && customTabBarItem !== void 0 && customTabBarItem.content) {
|
|
131
151
|
var _mybricksDir$children;
|
|
132
152
|
var customTabBarDir = ensureDir(srcDir, "src/custom-tab-bar");
|
|
133
153
|
var mybricksDir = ensureDir(customTabBarDir, "src/custom-tab-bar/mybricks");
|
|
@@ -8,29 +8,33 @@
|
|
|
8
8
|
export function handleCommonDir(commonDir, items) {
|
|
9
9
|
commonDir.children = commonDir.children || [];
|
|
10
10
|
|
|
11
|
-
// 处理
|
|
12
|
-
var
|
|
13
|
-
return item.type === '
|
|
11
|
+
// 处理 jsModulesRuntime
|
|
12
|
+
var jsModulesRuntimeItem = items.find(function (item) {
|
|
13
|
+
return item.type === 'jsModulesRuntime';
|
|
14
14
|
});
|
|
15
|
-
if (
|
|
16
|
-
var
|
|
17
|
-
var importCode = ((
|
|
18
|
-
var fileContent =
|
|
15
|
+
if (jsModulesRuntimeItem) {
|
|
16
|
+
var _jsModulesRuntimeItem;
|
|
17
|
+
var importCode = ((_jsModulesRuntimeItem = jsModulesRuntimeItem.importManager) === null || _jsModulesRuntimeItem === void 0 ? void 0 : _jsModulesRuntimeItem.toCode()) || '';
|
|
18
|
+
var fileContent = jsModulesRuntimeItem.content || '';
|
|
19
19
|
var fullContent = importCode ? "".concat(importCode, "\n").concat(fileContent) : fileContent;
|
|
20
20
|
commonDir.children.push({
|
|
21
|
-
path: 'src/common/
|
|
21
|
+
path: 'src/common/jsModulesRuntime.ts',
|
|
22
22
|
content: fullContent
|
|
23
23
|
});
|
|
24
24
|
}
|
|
25
25
|
|
|
26
|
-
// 处理
|
|
27
|
-
var
|
|
28
|
-
return item.type === '
|
|
26
|
+
// 处理 global
|
|
27
|
+
var globalItem = items.find(function (item) {
|
|
28
|
+
return item.type === 'global';
|
|
29
29
|
});
|
|
30
|
-
if (
|
|
30
|
+
if (globalItem) {
|
|
31
|
+
var _globalItem$importMan;
|
|
32
|
+
var _importCode = ((_globalItem$importMan = globalItem.importManager) === null || _globalItem$importMan === void 0 ? void 0 : _globalItem$importMan.toCode()) || '';
|
|
33
|
+
var _fileContent = globalItem.content || '';
|
|
34
|
+
var _fullContent = _importCode ? "".concat(_importCode, "\n").concat(_fileContent) : _fileContent;
|
|
31
35
|
commonDir.children.push({
|
|
32
|
-
path: 'src/common/
|
|
33
|
-
content:
|
|
36
|
+
path: 'src/common/global.ts',
|
|
37
|
+
content: _fullContent
|
|
34
38
|
});
|
|
35
39
|
}
|
|
36
40
|
}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* 页面图片文件处理工具
|
|
3
|
+
*/
|
|
4
|
+
import type { ImageFileInfo } from '../../utils/config/content';
|
|
5
|
+
interface FileNode {
|
|
6
|
+
path: string;
|
|
7
|
+
content: string | null;
|
|
8
|
+
children?: FileNode[];
|
|
9
|
+
}
|
|
10
|
+
/**
|
|
11
|
+
* 处理页面 base64 图片文件
|
|
12
|
+
*/
|
|
13
|
+
export declare function handlePageImages(assetsDir: FileNode, imageFiles: ImageFileInfo[]): void;
|
|
14
|
+
export {};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pageImages.d.ts","sourceRoot":"","sources":["pageImages.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAC;AAEhE,UAAU,QAAQ;IAChB,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,QAAQ,CAAC,EAAE,QAAQ,EAAE,CAAC;CACvB;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAC9B,SAAS,EAAE,QAAQ,EACnB,UAAU,EAAE,aAAa,EAAE,GAC1B,IAAI,CAON"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* 页面图片文件处理工具
|
|
3
|
+
*/
|
|
4
|
+
|
|
5
|
+
/**
|
|
6
|
+
* 处理页面 base64 图片文件
|
|
7
|
+
*/
|
|
8
|
+
export function handlePageImages(assetsDir, imageFiles) {
|
|
9
|
+
imageFiles.forEach(function (imageFile) {
|
|
10
|
+
assetsDir.children.push({
|
|
11
|
+
path: imageFile.filePath,
|
|
12
|
+
content: imageFile.fileContent.toString('base64')
|
|
13
|
+
});
|
|
14
|
+
});
|
|
15
|
+
}
|
package/dist/esm/handleCom.js
CHANGED
|
@@ -1,12 +1,13 @@
|
|
|
1
1
|
import _slicedToArray from "@babel/runtime/helpers/esm/slicedToArray";
|
|
2
|
-
import _objectSpread from "@babel/runtime/helpers/esm/objectSpread2";
|
|
3
2
|
import _defineProperty from "@babel/runtime/helpers/esm/defineProperty";
|
|
3
|
+
import _objectSpread from "@babel/runtime/helpers/esm/objectSpread2";
|
|
4
4
|
/* eslint-disable @typescript-eslint/no-explicit-any */
|
|
5
5
|
import { convertComponentStyle, convertStyleAryToCss } from "./utils/style/converter";
|
|
6
|
-
import { indentation, firstCharToUpperCase,
|
|
6
|
+
import { indentation, firstCharToUpperCase, getUiComponentCode } from "./utils/templates/index";
|
|
7
7
|
import { genSlotRenderRef } from "./utils/templates/component";
|
|
8
8
|
import { RenderManager } from "./utils/templates/renderManager";
|
|
9
9
|
import handleSlot from "./handleSlot";
|
|
10
|
+
import handleDom from "./handleDom";
|
|
10
11
|
import { processComEvents } from "./processors/processComEvents";
|
|
11
12
|
import { handleProcess } from "./utils/logic/handleProcess";
|
|
12
13
|
/**
|
|
@@ -52,6 +53,11 @@ export var handleCom = function handleCom(com, config) {
|
|
|
52
53
|
rootStyle = _prepareStyles.rootStyle;
|
|
53
54
|
var accumulatedCssContent = cssContent;
|
|
54
55
|
|
|
56
|
+
// 鸿蒙化:如果存在内置子节点(child),确保容器为 relative,以便内部绝对定位生效
|
|
57
|
+
if (com.child) {
|
|
58
|
+
rootStyle.position = "relative";
|
|
59
|
+
}
|
|
60
|
+
|
|
55
61
|
// 4. 处理插槽
|
|
56
62
|
var _processComSlots = processComSlots(com, config, accumulatedCssContent),
|
|
57
63
|
slotsCode = _processComSlots.slotsCode,
|
|
@@ -60,15 +66,28 @@ export var handleCom = function handleCom(com, config) {
|
|
|
60
66
|
childrenResults = _processComSlots.childrenResults;
|
|
61
67
|
accumulatedCssContent = slotCss;
|
|
62
68
|
|
|
63
|
-
// 5.
|
|
64
|
-
var
|
|
69
|
+
// 5. 处理组件内置子节点 (child 属性,常用于自由布局中的绝对定位包装层)
|
|
70
|
+
var childrenUi = "";
|
|
71
|
+
if (com.child) {
|
|
72
|
+
var childResult = handleDom(com.child, _objectSpread(_objectSpread({}, config), {}, {
|
|
73
|
+
depth: config.depth + 1
|
|
74
|
+
}));
|
|
75
|
+
childrenUi = childResult.ui;
|
|
76
|
+
if (childResult.cssContent) {
|
|
77
|
+
accumulatedCssContent += (accumulatedCssContent ? "\n" : "") + childResult.cssContent;
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
|
|
81
|
+
// 6. 生成 UI 代码 (支持嵌套子节点)
|
|
82
|
+
var ui = generateUiCode(com, config, componentName, rootStyle, comEventCode, slotsCode, eventHandlers, childrenUi);
|
|
83
|
+
var hasEvents = Object.keys(eventHandlers).length > 0;
|
|
65
84
|
return {
|
|
66
85
|
slots: [],
|
|
67
86
|
scopeSlots: [],
|
|
68
87
|
ui: ui,
|
|
69
88
|
js: eventCode,
|
|
70
89
|
cssContent: accumulatedCssContent,
|
|
71
|
-
outputsConfig:
|
|
90
|
+
outputsConfig: hasEvents ? _defineProperty({}, meta.id, eventHandlers) : undefined,
|
|
72
91
|
childrenResults: childrenResults,
|
|
73
92
|
name: meta.name,
|
|
74
93
|
// 返回解析后的稳定名称
|
|
@@ -147,9 +166,12 @@ var processComSlots = function processComSlots(com, config, initialCss) {
|
|
|
147
166
|
var _ref3 = _slicedToArray(_ref2, 2),
|
|
148
167
|
slotId = _ref3[0],
|
|
149
168
|
slot = _ref3[1];
|
|
150
|
-
//
|
|
169
|
+
// 鸿蒙规范:如果插槽内没有组件,直接渲染空
|
|
151
170
|
var children = slot.comAry || slot.children || [];
|
|
171
|
+
var isLast = index === slotEntries.length - 1;
|
|
172
|
+
var slotIndent = indentation(config.codeStyle.indent * (config.depth + 2));
|
|
152
173
|
if (children.length === 0) {
|
|
174
|
+
slotsCode += "".concat(slotIndent).concat(slotId, ": {\n").concat(slotIndent, " render: () => null\n").concat(slotIndent, "}").concat(isLast ? '' : ',', "\n");
|
|
153
175
|
return;
|
|
154
176
|
}
|
|
155
177
|
var slotLayout = (_com$props$data = com.props.data) === null || _com$props$data === void 0 ? void 0 : _com$props$data.layout;
|
|
@@ -160,6 +182,8 @@ var processComSlots = function processComSlots(com, config, initialCss) {
|
|
|
160
182
|
depth: 1,
|
|
161
183
|
renderManager: renderManager,
|
|
162
184
|
slotKey: slotId,
|
|
185
|
+
// 给 slot 根容器打标用(slot wrapper className)
|
|
186
|
+
parentComId: meta.id,
|
|
163
187
|
// 鸿蒙化:传递父容器的布局配置给插槽
|
|
164
188
|
layout: slotLayout
|
|
165
189
|
}));
|
|
@@ -168,15 +192,16 @@ var processComSlots = function processComSlots(com, config, initialCss) {
|
|
|
168
192
|
accumulatedCssContent += (accumulatedCssContent ? "\n" : "") + result.cssContent;
|
|
169
193
|
}
|
|
170
194
|
var renderId = "".concat(meta.id, "_").concat(slotId);
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
195
|
+
|
|
196
|
+
// 关键:不再预先 formatSlotContent,而是将原始 ui 传给 renderManager
|
|
197
|
+
// 这样 RenderManager 在内部进行精确字符串替换时才能匹配成功
|
|
198
|
+
var rawContent = result.ui;
|
|
174
199
|
|
|
175
200
|
// 鸿蒙化处理:针对表单容器进行别名对齐
|
|
176
|
-
if (meta.def.namespace === "mybricks.taro.formContainer" && Array.isArray((_props$data2 = props.data) === null || _props$data2 === void 0 ? void 0 : _props$data2.items) && result.
|
|
201
|
+
if (meta.def.namespace === "mybricks.taro.formContainer" && Array.isArray((_props$data2 = props.data) === null || _props$data2 === void 0 ? void 0 : _props$data2.items) && result.directChildren) {
|
|
177
202
|
var _props$data3;
|
|
178
203
|
var items = (_props$data3 = props.data) === null || _props$data3 === void 0 ? void 0 : _props$data3.items;
|
|
179
|
-
result.
|
|
204
|
+
result.directChildren.forEach(function (childRes) {
|
|
180
205
|
var itemConfig = items.find(function (it) {
|
|
181
206
|
return it.id === childRes.id;
|
|
182
207
|
});
|
|
@@ -192,22 +217,23 @@ var processComSlots = function processComSlots(com, config, initialCss) {
|
|
|
192
217
|
var logicCode = buildSlotLogicCode({
|
|
193
218
|
parentComId: meta.id,
|
|
194
219
|
slotKey: slotId,
|
|
195
|
-
children: result.
|
|
220
|
+
children: result.directChildren,
|
|
196
221
|
config: config
|
|
197
222
|
});
|
|
198
223
|
|
|
199
224
|
// 生成插槽描述注释内容
|
|
200
225
|
var description = "".concat(meta.title || meta.id, "\u7684").concat(slot.title || slotId, "\u63D2\u69FD");
|
|
201
|
-
renderManager.register(renderId,
|
|
226
|
+
renderManager.register(renderId, rawContent, result.directChildren,
|
|
227
|
+
// 仅传入直接子组件,避免递归替换导致的结构破坏
|
|
228
|
+
logicCode, slot.type, slot.wrap || slot.itemWrap || ((_COM_PROTOCOL$meta$de = COM_PROTOCOL[meta.def.namespace]) === null || _COM_PROTOCOL$meta$de === void 0 ? void 0 : _COM_PROTOCOL$meta$de.useWrap), description);
|
|
202
229
|
if (result.childrenResults) {
|
|
203
230
|
allChildrenResults = allChildrenResults.concat(result.childrenResults);
|
|
204
231
|
}
|
|
205
|
-
var slotIndent = indentation(config.codeStyle.indent * (config.depth + 2));
|
|
206
232
|
slotsCode += genSlotRenderRef({
|
|
207
233
|
slotId: slotId,
|
|
208
234
|
renderId: renderId,
|
|
209
235
|
indent: slotIndent,
|
|
210
|
-
isLast:
|
|
236
|
+
isLast: isLast
|
|
211
237
|
});
|
|
212
238
|
});
|
|
213
239
|
return {
|
|
@@ -263,7 +289,7 @@ var buildSlotLogicCode = function buildSlotLogicCode(args) {
|
|
|
263
289
|
/**
|
|
264
290
|
* 生成 UI 代码
|
|
265
291
|
*/
|
|
266
|
-
var generateUiCode = function generateUiCode(com, config, componentName, rootStyle, comEventCode, slotsCode, eventHandlers) {
|
|
292
|
+
var generateUiCode = function generateUiCode(com, config, componentName, rootStyle, comEventCode, slotsCode, eventHandlers, childrenUi) {
|
|
267
293
|
var _scene$coms, _sceneCom$inputs, _sceneCom$outputs, _meta$outputs;
|
|
268
294
|
var meta = com.meta,
|
|
269
295
|
props = com.props;
|
|
@@ -280,7 +306,8 @@ var generateUiCode = function generateUiCode(com, config, componentName, rootSty
|
|
|
280
306
|
componentOutputs: ((sceneCom === null || sceneCom === void 0 || (_sceneCom$outputs = sceneCom.outputs) === null || _sceneCom$outputs === void 0 ? void 0 : _sceneCom$outputs.length) || 0) > 0 ? sceneCom.outputs : (((_meta$outputs = meta.outputs) === null || _meta$outputs === void 0 ? void 0 : _meta$outputs.length) || 0) > 0 ? meta.outputs : undefined,
|
|
281
307
|
comEventCode: comEventCode,
|
|
282
308
|
slotsCode: slotsCode,
|
|
283
|
-
eventHandlers: eventHandlers
|
|
309
|
+
eventHandlers: eventHandlers,
|
|
310
|
+
childrenUi: childrenUi
|
|
284
311
|
}, {
|
|
285
312
|
codeStyle: config.codeStyle,
|
|
286
313
|
depth: config.depth + 1,
|
package/dist/esm/handleDom.d.ts
CHANGED
|
@@ -14,6 +14,8 @@ type HandleDomResult = {
|
|
|
14
14
|
slots: string[];
|
|
15
15
|
scopeSlots: string[];
|
|
16
16
|
cssContent: string;
|
|
17
|
+
directChildren?: any[];
|
|
18
|
+
childrenResults?: any[];
|
|
17
19
|
};
|
|
18
20
|
declare const handleDom: (dom: Dom, config: HandleDomConfig) => HandleDomResult;
|
|
19
21
|
export default handleDom;
|
package/dist/esm/handleDom.js
CHANGED
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
import _objectSpread from "@babel/runtime/helpers/esm/objectSpread2";
|
|
2
2
|
import { indentation, convertStyleAryToCss, convertRootStyle } from "./utils";
|
|
3
|
-
import { processChildren } from "./utils/logic/processChildren";
|
|
3
|
+
import { normalizeChildren, processChildren } from "./utils/logic/processChildren";
|
|
4
4
|
var handleDom = function handleDom(dom, config) {
|
|
5
5
|
var _domProps$style;
|
|
6
|
-
var props = dom.props
|
|
7
|
-
children = dom.children;
|
|
6
|
+
var props = dom.props;
|
|
8
7
|
var domProps = props;
|
|
8
|
+
var children = normalizeChildren(dom);
|
|
9
9
|
var childResults = processChildren(children, _objectSpread(_objectSpread({}, config), {}, {
|
|
10
10
|
depth: config.depth + 1
|
|
11
11
|
}));
|
|
@@ -18,7 +18,9 @@ var handleDom = function handleDom(dom, config) {
|
|
|
18
18
|
js: childResults.js,
|
|
19
19
|
slots: childResults.slots,
|
|
20
20
|
scopeSlots: childResults.scopeSlots,
|
|
21
|
-
cssContent: cssContent
|
|
21
|
+
cssContent: cssContent,
|
|
22
|
+
directChildren: childResults.directChildren,
|
|
23
|
+
childrenResults: childResults.childrenResults
|
|
22
24
|
};
|
|
23
25
|
};
|
|
24
26
|
export default handleDom;
|
package/dist/esm/handleGlobal.js
CHANGED
|
@@ -8,6 +8,7 @@ import _slicedToArray from "@babel/runtime/helpers/esm/slicedToArray";
|
|
|
8
8
|
/* eslint-disable @typescript-eslint/no-explicit-any */
|
|
9
9
|
import { ImportManager, indentation } from "./utils";
|
|
10
10
|
import { handleProcess } from "./utils/logic/handleProcess";
|
|
11
|
+
import { getSafeVarName } from "./utils/common/string";
|
|
11
12
|
var handleGlobal = function handleGlobal(params, config) {
|
|
12
13
|
var tojson = params.tojson,
|
|
13
14
|
globalFxs = params.globalFxs,
|
|
@@ -50,8 +51,9 @@ var handleGlobal = function handleGlobal(params, config) {
|
|
|
50
51
|
return tojson.global;
|
|
51
52
|
}
|
|
52
53
|
}));
|
|
53
|
-
|
|
54
|
-
|
|
54
|
+
var varKey = getSafeVarName(com);
|
|
55
|
+
globalVarsRegisterChangeCode += "\n".concat(indent2, "this.").concat(varKey, ".registerChange((value: any) => {") + "\n".concat(res) + "\n".concat(indent2, "})");
|
|
56
|
+
globalVarsInitCode += "".concat(indent).concat(varKey, ": any = createVariable(").concat(JSON.stringify(com.model.data.initValue || {}), ")\n");
|
|
55
57
|
});
|
|
56
58
|
var globalFxsInitCode = "";
|
|
57
59
|
globalFxs.forEach(function (event) {
|
package/dist/esm/handleSlot.d.ts
CHANGED
|
@@ -12,6 +12,8 @@ interface HandleSlotConfig extends BaseConfig {
|
|
|
12
12
|
hasPopups?: boolean;
|
|
13
13
|
/** handleCom 处理 slots 时的 slot key(如 item/content),用于识别 scope 入参 */
|
|
14
14
|
slotKey?: string;
|
|
15
|
+
/** 父组件 id(用于给插槽根容器打标 className) */
|
|
16
|
+
parentComId?: string;
|
|
15
17
|
}
|
|
16
18
|
declare const handleSlot: (ui: UI, config: HandleSlotConfig) => {
|
|
17
19
|
js: string;
|
|
@@ -20,6 +22,7 @@ declare const handleSlot: (ui: UI, config: HandleSlotConfig) => {
|
|
|
20
22
|
cssContent: string;
|
|
21
23
|
slots: any[];
|
|
22
24
|
scopeSlots: any[];
|
|
25
|
+
directChildren: any[];
|
|
23
26
|
childrenResults: any[];
|
|
24
27
|
};
|
|
25
28
|
export default handleSlot;
|
package/dist/esm/handleSlot.js
CHANGED
|
@@ -2,15 +2,15 @@ import _objectSpread from "@babel/runtime/helpers/esm/objectSpread2";
|
|
|
2
2
|
import { ImportManager, indentation, convertStyleAryToCss, convertRootStyle, getRootComponentClassName } from "./utils";
|
|
3
3
|
import { genRootDefineCode, genSlotDefineCode, genComponentTemplate, wrapInEffect } from "./utils/templates/scene";
|
|
4
4
|
import { RenderManager } from "./utils/templates/renderManager";
|
|
5
|
-
import { processChildren } from "./utils/logic/processChildren";
|
|
5
|
+
import { processChildren, normalizeChildren } from "./utils/logic/processChildren";
|
|
6
6
|
import { processSceneLogic } from "./processors/processSceneLogic";
|
|
7
7
|
var handleSlot = function handleSlot(ui, config) {
|
|
8
8
|
var _meta, _props$style;
|
|
9
9
|
var importManager = new ImportManager(config);
|
|
10
10
|
var _ui$props = ui.props,
|
|
11
11
|
props = _ui$props === void 0 ? {} : _ui$props;
|
|
12
|
-
//
|
|
13
|
-
var children = ui
|
|
12
|
+
// 使用归一化处理器
|
|
13
|
+
var children = normalizeChildren(ui);
|
|
14
14
|
var isRoot = config.checkIsRoot();
|
|
15
15
|
var slotId = ((_meta = ui.meta) === null || _meta === void 0 ? void 0 : _meta.id) || ui.id;
|
|
16
16
|
|
|
@@ -26,7 +26,7 @@ var handleSlot = function handleSlot(ui, config) {
|
|
|
26
26
|
});
|
|
27
27
|
addDependencyImport({
|
|
28
28
|
packageName: utilsPkg,
|
|
29
|
-
dependencyNames: ["useAppContext"
|
|
29
|
+
dependencyNames: ["useAppContext"],
|
|
30
30
|
importType: "named"
|
|
31
31
|
});
|
|
32
32
|
// 补全 useEffect 导入(用于插槽逻辑驱动)
|
|
@@ -59,7 +59,7 @@ var handleSlot = function handleSlot(ui, config) {
|
|
|
59
59
|
var combinedJsCode = "".concat(envDefineCode).concat(childResults.js).concat(initCode).concat(wrapInEffect(indent2, effectCode));
|
|
60
60
|
|
|
61
61
|
// 5. 生成 UI 结构
|
|
62
|
-
var uiResult = generateSlotUi(ui, props, childResults.ui, config);
|
|
62
|
+
var uiResult = generateSlotUi(ui, props, childResults.ui, childResults.childrenResults, config);
|
|
63
63
|
|
|
64
64
|
// 6. 如果是根场景,生成完整文件
|
|
65
65
|
if (isRoot) {
|
|
@@ -73,6 +73,7 @@ var handleSlot = function handleSlot(ui, config) {
|
|
|
73
73
|
cssContent: cssContent,
|
|
74
74
|
slots: [],
|
|
75
75
|
scopeSlots: [],
|
|
76
|
+
directChildren: childResults.directChildren,
|
|
76
77
|
childrenResults: childResults.childrenResults
|
|
77
78
|
};
|
|
78
79
|
};
|
|
@@ -88,7 +89,7 @@ var setupImports = function setupImports(addImport, config, isRoot) {
|
|
|
88
89
|
var comPkg = config.getComponentPackageName(importParams);
|
|
89
90
|
addImport({
|
|
90
91
|
packageName: "react",
|
|
91
|
-
dependencyNames: ["useRef", "useEffect", "useState"],
|
|
92
|
+
dependencyNames: ["useRef", "useEffect", "useState", "createContext", "useContext"],
|
|
92
93
|
importType: "named"
|
|
93
94
|
});
|
|
94
95
|
addImport({
|
|
@@ -96,7 +97,9 @@ var setupImports = function setupImports(addImport, config, isRoot) {
|
|
|
96
97
|
dependencyNames: ["View"],
|
|
97
98
|
importType: "named"
|
|
98
99
|
});
|
|
99
|
-
|
|
100
|
+
|
|
101
|
+
// 页面/插槽产物通常不直接使用,避免生成未使用的 import。
|
|
102
|
+
var dependencyNames = ["WithCom", "WithWrapper"];
|
|
100
103
|
if (isRoot && config.hasPopups) {
|
|
101
104
|
dependencyNames.push("PopupRenderer");
|
|
102
105
|
}
|
|
@@ -111,9 +114,14 @@ var setupImports = function setupImports(addImport, config, isRoot) {
|
|
|
111
114
|
importType: "named"
|
|
112
115
|
});
|
|
113
116
|
if (isRoot) {
|
|
117
|
+
addImport({
|
|
118
|
+
packageName: "@/common/pageLife",
|
|
119
|
+
dependencyNames: ["usePageLife"],
|
|
120
|
+
importType: "named"
|
|
121
|
+
});
|
|
114
122
|
if (config.hasPopups) {
|
|
115
123
|
addImport({
|
|
116
|
-
packageName: "
|
|
124
|
+
packageName: "@/common/popup",
|
|
117
125
|
dependencyNames: ["POPUP_MAP", "POPUP_IDS"],
|
|
118
126
|
importType: "named"
|
|
119
127
|
});
|
|
@@ -129,19 +137,33 @@ var setupImports = function setupImports(addImport, config, isRoot) {
|
|
|
129
137
|
/**
|
|
130
138
|
* 生成 Slot 的 UI 代码
|
|
131
139
|
*/
|
|
132
|
-
var generateSlotUi = function generateSlotUi(ui, props, childrenUi, config) {
|
|
140
|
+
var generateSlotUi = function generateSlotUi(ui, props, childrenUi, childrenResults, config) {
|
|
133
141
|
var indent = indentation(config.codeStyle.indent * config.depth);
|
|
142
|
+
var slotStyle = ui.style || {};
|
|
143
|
+
var propsStyle = props.style || {};
|
|
134
144
|
var mergedStyle = _objectSpread(_objectSpread({
|
|
135
145
|
width: "100%",
|
|
136
146
|
height: "100%"
|
|
137
|
-
},
|
|
147
|
+
}, slotStyle), propsStyle);
|
|
148
|
+
|
|
138
149
|
// 鸿蒙化:优先使用 config 中传递的 layout(来自父容器 data.layout),否则使用 slot 自身的 layout
|
|
139
150
|
var layout = config.layout || ui.layout || mergedStyle.layout;
|
|
151
|
+
var smart = isSmartLayout(layout);
|
|
152
|
+
var layoutAdjustment = smart ? {
|
|
153
|
+
position: isHasInSmartLayout(childrenResults) ? "fixed" : "relative"
|
|
154
|
+
} : hasFixedChildren(childrenResults) ? {
|
|
155
|
+
transform: "translateX(0)"
|
|
156
|
+
} : {};
|
|
140
157
|
var styleCode = JSON.stringify(convertRootStyle(_objectSpread(_objectSpread({}, mergedStyle), {}, {
|
|
141
158
|
layout: layout
|
|
142
|
-
})));
|
|
159
|
+
}, layoutAdjustment)));
|
|
143
160
|
var rootClassName = getRootComponentClassName(config.getCurrentScene(), config.checkIsRoot());
|
|
144
|
-
|
|
161
|
+
// 插槽根容器增强:加上可读的标识,便于用户定位/调试
|
|
162
|
+
// - className: slot-<parentComId>
|
|
163
|
+
var parentComId = config === null || config === void 0 ? void 0 : config.parentComId;
|
|
164
|
+
var slotMarkClass = parentComId ? "slot-".concat(parentComId) : "";
|
|
165
|
+
var classNameStr = [rootClassName, slotMarkClass].filter(Boolean).join(" ");
|
|
166
|
+
var classNameAttr = classNameStr ? " className='".concat(classNameStr, "'") : "";
|
|
145
167
|
return "".concat(indent, "<View").concat(classNameAttr, " style={").concat(styleCode, "}>\n").concat(childrenUi, "\n").concat(indent, "</View>");
|
|
146
168
|
};
|
|
147
169
|
|
|
@@ -169,4 +191,27 @@ var finalizeRootComponent = function finalizeRootComponent(ui, config, importMan
|
|
|
169
191
|
name: fileName
|
|
170
192
|
});
|
|
171
193
|
};
|
|
194
|
+
|
|
195
|
+
/**
|
|
196
|
+
* 检查子元素是否有固定定位的元素
|
|
197
|
+
*/
|
|
198
|
+
var hasFixedChildren = function hasFixedChildren(childrenResults) {
|
|
199
|
+
return childrenResults.some(function (item) {
|
|
200
|
+
var _item$rootStyle;
|
|
201
|
+
return (item === null || item === void 0 || (_item$rootStyle = item.rootStyle) === null || _item$rootStyle === void 0 ? void 0 : _item$rootStyle.position) === "fixed";
|
|
202
|
+
});
|
|
203
|
+
};
|
|
204
|
+
|
|
205
|
+
/**
|
|
206
|
+
* 检查是否是智能布局
|
|
207
|
+
*/
|
|
208
|
+
var isSmartLayout = function isSmartLayout(layout) {
|
|
209
|
+
return layout === "smart" || (layout === null || layout === void 0 ? void 0 : layout.position) === "smart";
|
|
210
|
+
};
|
|
211
|
+
var isHasInSmartLayout = function isHasInSmartLayout(childrenResults) {
|
|
212
|
+
return childrenResults.some(function (item) {
|
|
213
|
+
var _item$rootStyle2;
|
|
214
|
+
return (item === null || item === void 0 || (_item$rootStyle2 = item.rootStyle) === null || _item$rootStyle2 === void 0 ? void 0 : _item$rootStyle2.inSmartLayout) === true;
|
|
215
|
+
});
|
|
216
|
+
};
|
|
172
217
|
export default handleSlot;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"processComEvents.d.ts","sourceRoot":"","sources":["processComEvents.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,eAAe,EAAE,GAAG,EAAE,MAAM,cAAc,CAAC;AAEzD;;GAEG;AACH,eAAO,MAAM,gBAAgB,QACtB,GAAG,UACA,eAAe;kBAET,MAAM;mBACL,OAAO,MAAM,EAAE,GAAG,CAAC;iBACrB,OAAO,MAAM,EAAE,GAAG,CAAC;CA8HjC,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"processScene.d.ts","sourceRoot":"","sources":["processScene.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAKH,OAAO,KAAK,EAAE,gBAAgB,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AACrE,OAAO,MAAM,MAAM,yCAAyC,CAAC;AAC7D,OAAO,EAGL,KAAK,QAAQ,EACd,MAAM,iCAAiC,CAAC;AAGzC,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,mCAAmC,CAAC;AAEtE,KAAK,YAAY,GAAG,UAAU,CAAC,OAAO,MAAM,CAAC,CAAC;AAC9C,KAAK,KAAK,GAAG,YAAY,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;AAEvC,UAAU,kBAAkB;IAC1B,KAAK,EAAE,KAAK,CAAC;IACb,MAAM,EAAE,gBAAgB,CAAC;IACzB,gBAAgB,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IACtC,aAAa,EAAE,MAAM,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;IACxC,uBAAuB,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IAC7C,YAAY,EAAE,YAAY,CAAC;IAC3B,qBAAqB,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,GAAG,CAAC;IAC3C,YAAY,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,GAAG,CAAC;IAClC,YAAY,CAAC,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,GAAG,CAAC;IACnC,iBAAiB,EAAE,GAAG,CAAC;IACvB,SAAS,EAAE,CAAC,MAAM,EAAE,aAAa,KAAK,IAAI,CAAC;CAC5C;AAED;;GAEG;AACH,eAAO,MAAM,YAAY,WAAY,kBAAkB,KAAG,
|
|
1
|
+
{"version":3,"file":"processScene.d.ts","sourceRoot":"","sources":["processScene.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAKH,OAAO,KAAK,EAAE,gBAAgB,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AACrE,OAAO,MAAM,MAAM,yCAAyC,CAAC;AAC7D,OAAO,EAGL,KAAK,QAAQ,EACd,MAAM,iCAAiC,CAAC;AAGzC,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,mCAAmC,CAAC;AAEtE,KAAK,YAAY,GAAG,UAAU,CAAC,OAAO,MAAM,CAAC,CAAC;AAC9C,KAAK,KAAK,GAAG,YAAY,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;AAEvC,UAAU,kBAAkB;IAC1B,KAAK,EAAE,KAAK,CAAC;IACb,MAAM,EAAE,gBAAgB,CAAC;IACzB,gBAAgB,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IACtC,aAAa,EAAE,MAAM,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;IACxC,uBAAuB,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IAC7C,YAAY,EAAE,YAAY,CAAC;IAC3B,qBAAqB,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,GAAG,CAAC;IAC3C,YAAY,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,GAAG,CAAC;IAClC,YAAY,CAAC,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,GAAG,CAAC;IACnC,iBAAiB,EAAE,GAAG,CAAC;IACvB,SAAS,EAAE,CAAC,MAAM,EAAE,aAAa,KAAK,IAAI,CAAC;CAC5C;AAED;;GAEG;AACH,eAAO,MAAM,YAAY,WAAY,kBAAkB,KAAG,IAwJzD,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,aAAa,WAChB,KAAK,EAAE,UACP,KAAK,kBAAkB,EAAE,OAAO,CAAC,KACxC,IAOF,CAAC"}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import _objectSpread from "@babel/runtime/helpers/esm/objectSpread2";
|
|
2
|
+
import _slicedToArray from "@babel/runtime/helpers/esm/slicedToArray";
|
|
2
3
|
/**
|
|
3
4
|
* 处理场景(Scene)
|
|
4
5
|
* 参考鸿蒙实现,将场景处理逻辑独立出来
|
|
@@ -8,7 +9,7 @@ import handleSlot from "../handleSlot";
|
|
|
8
9
|
import { RenderManager } from "../utils/templates/renderManager";
|
|
9
10
|
import { createProvider, createProviderMap } from "../utils/context/createProvider";
|
|
10
11
|
import { createEventQueries } from "../utils/context/createEventQueries";
|
|
11
|
-
import { collectJSModulesFromScene } from "../utils/context/collectJSModules";
|
|
12
|
+
import { collectJSModulesFromScene, extractJSModuleFromCom } from "../utils/context/collectJSModules";
|
|
12
13
|
/**
|
|
13
14
|
* 处理单个场景
|
|
14
15
|
*/
|
|
@@ -28,9 +29,17 @@ export var processScene = function processScene(params) {
|
|
|
28
29
|
getFrameById = params.getFrameById,
|
|
29
30
|
pageConfigHandler = params.pageConfigHandler;
|
|
30
31
|
|
|
31
|
-
// 收集 JS
|
|
32
|
+
// 收集 JS 计算组件(全局)
|
|
32
33
|
collectJSModulesFromScene(scene, jsModulesMap);
|
|
33
34
|
|
|
35
|
+
// 收集当前页面/弹窗内的 JS 计算组件(用于生成 index.jsModules.ts)
|
|
36
|
+
var localJsModules = Object.entries(scene.coms || {}).map(function (_ref) {
|
|
37
|
+
var _ref2 = _slicedToArray(_ref, 2),
|
|
38
|
+
comId = _ref2[0],
|
|
39
|
+
comInfo = _ref2[1];
|
|
40
|
+
return extractJSModuleFromCom(comId, comInfo);
|
|
41
|
+
}).filter(Boolean);
|
|
42
|
+
|
|
34
43
|
// 创建 Provider
|
|
35
44
|
var fileName = (_config$getFileName = config.getFileName) === null || _config$getFileName === void 0 ? void 0 : _config$getFileName.call(config, ui.meta.slotId);
|
|
36
45
|
var currentProvider = createProvider(fileName, true);
|
|
@@ -141,7 +150,8 @@ export var processScene = function processScene(params) {
|
|
|
141
150
|
params.addResult(_objectSpread(_objectSpread({}, value), {}, {
|
|
142
151
|
type: isPopup ? "popup" : originalScene !== null && originalScene !== void 0 && originalScene.type ? originalScene.type : "normal",
|
|
143
152
|
meta: scene,
|
|
144
|
-
pageConfigContent: pageConfigContent
|
|
153
|
+
pageConfigContent: pageConfigContent,
|
|
154
|
+
jsModules: localJsModules
|
|
145
155
|
}));
|
|
146
156
|
},
|
|
147
157
|
addJSModule: function addJSModule(module) {
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"processSceneLogic.d.ts","sourceRoot":"","sources":["processSceneLogic.ts"],"names":[],"mappings":"AAWA;;GAEG;AACH,eAAO,MAAM,iBAAiB,OACxB,GAAG,UACC,GAAG,uBACU,GAAG;;;CAyBzB,CAAC"}
|