@mybricks/to-code-taro 1.1.2 → 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/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 +7 -4
- package/dist/cjs/generate/utils/commonDir.js +12 -1
- 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 +31 -7
- package/dist/cjs/taro-template.json +1250 -946
- package/dist/cjs/toCodeTaro.d.ts +1 -0
- package/dist/cjs/toCodeTaro.js +80 -1
- 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/logic/handleProcess.js +3 -3
- 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 +2 -0
- 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 +7 -2
- package/dist/esm/generate/utils/commonDir.js +15 -0
- 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 +52 -10
- package/dist/esm/taro-template.json +1250 -946
- package/dist/esm/toCodeTaro.d.ts +1 -0
- package/dist/esm/toCodeTaro.d.ts.map +1 -1
- package/dist/esm/toCodeTaro.js +89 -4
- 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 -0
- package/dist/esm/utils/logic/genJSModules.d.ts.map +1 -0
- package/dist/esm/utils/logic/handleProcess.js +3 -3
- 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 +1 -0
- package/package.json +1 -1
- package/dist/esm/generate/utils/commonDir.d.ts.map +0 -1
- package/dist/esm/handleCom.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/handleProcess.d.ts.map +0 -1
- package/dist/esm/utils/logic/processChildren.d.ts.map +0 -1
- package/dist/esm/utils/templates/index.d.ts.map +0 -1
- package/dist/esm/utils/templates/renderManager.d.ts.map +0 -1
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
|
|
|
@@ -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
|
};
|
|
@@ -97,7 +98,6 @@ var setupImports = function setupImports(addImport, config, isRoot) {
|
|
|
97
98
|
importType: "named"
|
|
98
99
|
});
|
|
99
100
|
|
|
100
|
-
// SlotProvider/ScopedComContextProvider 属于 runtime 内部实现(core/utils/slots.tsx)使用,
|
|
101
101
|
// 页面/插槽产物通常不直接使用,避免生成未使用的 import。
|
|
102
102
|
var dependencyNames = ["WithCom", "WithWrapper"];
|
|
103
103
|
if (isRoot && config.hasPopups) {
|
|
@@ -114,9 +114,14 @@ var setupImports = function setupImports(addImport, config, isRoot) {
|
|
|
114
114
|
importType: "named"
|
|
115
115
|
});
|
|
116
116
|
if (isRoot) {
|
|
117
|
+
addImport({
|
|
118
|
+
packageName: "@/common/pageLife",
|
|
119
|
+
dependencyNames: ["usePageLife"],
|
|
120
|
+
importType: "named"
|
|
121
|
+
});
|
|
117
122
|
if (config.hasPopups) {
|
|
118
123
|
addImport({
|
|
119
|
-
packageName: "
|
|
124
|
+
packageName: "@/common/popup",
|
|
120
125
|
dependencyNames: ["POPUP_MAP", "POPUP_IDS"],
|
|
121
126
|
importType: "named"
|
|
122
127
|
});
|
|
@@ -132,19 +137,33 @@ var setupImports = function setupImports(addImport, config, isRoot) {
|
|
|
132
137
|
/**
|
|
133
138
|
* 生成 Slot 的 UI 代码
|
|
134
139
|
*/
|
|
135
|
-
var generateSlotUi = function generateSlotUi(ui, props, childrenUi, config) {
|
|
140
|
+
var generateSlotUi = function generateSlotUi(ui, props, childrenUi, childrenResults, config) {
|
|
136
141
|
var indent = indentation(config.codeStyle.indent * config.depth);
|
|
142
|
+
var slotStyle = ui.style || {};
|
|
143
|
+
var propsStyle = props.style || {};
|
|
137
144
|
var mergedStyle = _objectSpread(_objectSpread({
|
|
138
145
|
width: "100%",
|
|
139
146
|
height: "100%"
|
|
140
|
-
},
|
|
147
|
+
}, slotStyle), propsStyle);
|
|
148
|
+
|
|
141
149
|
// 鸿蒙化:优先使用 config 中传递的 layout(来自父容器 data.layout),否则使用 slot 自身的 layout
|
|
142
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
|
+
} : {};
|
|
143
157
|
var styleCode = JSON.stringify(convertRootStyle(_objectSpread(_objectSpread({}, mergedStyle), {}, {
|
|
144
158
|
layout: layout
|
|
145
|
-
})));
|
|
159
|
+
}, layoutAdjustment)));
|
|
146
160
|
var rootClassName = getRootComponentClassName(config.getCurrentScene(), config.checkIsRoot());
|
|
147
|
-
|
|
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, "'") : "";
|
|
148
167
|
return "".concat(indent, "<View").concat(classNameAttr, " style={").concat(styleCode, "}>\n").concat(childrenUi, "\n").concat(indent, "</View>");
|
|
149
168
|
};
|
|
150
169
|
|
|
@@ -172,4 +191,27 @@ var finalizeRootComponent = function finalizeRootComponent(ui, config, importMan
|
|
|
172
191
|
name: fileName
|
|
173
192
|
});
|
|
174
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
|
+
};
|
|
175
217
|
export default handleSlot;
|