@mybricks/to-code-taro 1.0.8 → 1.1.0
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/_Modal.js +68 -0
- package/dist/cjs/core/comlib/_TimerDelay.js +55 -30
- package/dist/cjs/core/comlib/index.js +3 -0
- package/dist/cjs/core/mybricks/log.js +0 -1
- package/dist/cjs/core/utils/hooks.js +3 -2
- package/dist/cjs/core/utils/slots.js +11 -5
- package/dist/cjs/core/utils/useContext.js +5 -3
- package/dist/cjs/core/utils/with.js +5 -6
- package/dist/cjs/generate/generateTaroProjectJson.js +18 -1
- package/dist/cjs/handleCom.js +47 -73
- package/dist/cjs/handleSlot.js +5 -3
- package/dist/cjs/processors/processComEvents.js +2 -3
- package/dist/cjs/processors/processModule.js +23 -0
- package/dist/cjs/processors/processScene.js +23 -0
- package/dist/cjs/processors/processSceneLogic.d.ts +4 -1
- package/dist/cjs/processors/processSceneLogic.js +72 -12
- package/dist/cjs/taro-template.json +68 -42
- package/dist/cjs/toCodeTaro.d.ts +14 -1
- package/dist/cjs/toCodeTaro.js +1 -0
- package/dist/cjs/utils/builder/buildResult.d.ts +1 -0
- package/dist/cjs/utils/builder/buildResult.js +8 -1
- package/dist/cjs/utils/common/helper.d.ts +10 -0
- package/dist/cjs/utils/common/helper.js +21 -0
- package/dist/cjs/utils/common/string.d.ts +10 -0
- package/dist/cjs/utils/common/string.js +13 -0
- package/dist/cjs/utils/config/content/converter.js +1 -0
- package/dist/cjs/utils/config/content/tabBarConfig.d.ts +19 -4
- package/dist/cjs/utils/config/content/tabBarConfig.js +18 -1
- package/dist/cjs/utils/config/content/types.d.ts +15 -10
- package/dist/cjs/utils/config/handlePageConfig.d.ts +6 -0
- package/dist/cjs/utils/config/handlePageConfig.js +13 -1
- package/dist/cjs/utils/logic/handleProcess.js +50 -33
- package/dist/cjs/utils/style/converter.js +1 -6
- package/dist/cjs/utils/templates/index.d.ts +1 -0
- package/dist/cjs/utils/templates/index.js +11 -4
- package/dist/cjs/utils/templates/renderManager.js +4 -2
- package/dist/cjs/utils/templates/scene.d.ts +2 -1
- package/dist/cjs/utils/templates/scene.js +4 -3
- package/dist/esm/abstractEventTypeDef.d.ts.map +1 -0
- package/dist/esm/core/comlib/_Modal.js +51 -0
- package/dist/esm/core/comlib/_TimerDelay.js +46 -14
- package/dist/esm/core/comlib/index.js +2 -0
- package/dist/esm/core/mybricks/log.js +1 -5
- package/dist/esm/core/utils/hooks.js +7 -2
- package/dist/esm/core/utils/slots.js +28 -10
- package/dist/esm/core/utils/useContext.js +9 -3
- package/dist/esm/core/utils/with.js +5 -9
- package/dist/esm/generate/generateTaroProjectJson.d.ts.map +1 -0
- package/dist/esm/generate/generateTaroProjectJson.js +22 -0
- package/dist/esm/generate/generateTaroTempalteJson.d.ts.map +1 -0
- package/dist/esm/generate/utils/appConfig.d.ts.map +1 -0
- package/dist/esm/generate/utils/commonDir.d.ts.map +1 -0
- package/dist/esm/generate/utils/fileNode.d.ts.map +1 -0
- package/dist/esm/generate/utils/index.d.ts.map +1 -0
- package/dist/esm/generate/utils/tabBarImages.d.ts.map +1 -0
- package/dist/esm/handleCom.js +60 -95
- package/dist/esm/handleDom.d.ts.map +1 -0
- package/dist/esm/handleExtension.d.ts.map +1 -0
- package/dist/esm/handleGlobal.d.ts.map +1 -0
- package/dist/esm/handleModule.d.ts.map +1 -0
- package/dist/esm/handleSlot.js +9 -4
- package/dist/esm/index.d.ts.map +1 -0
- package/dist/esm/processors/processComEvents.js +6 -3
- package/dist/esm/processors/processModule.d.ts.map +1 -0
- package/dist/esm/processors/processModule.js +35 -0
- package/dist/esm/processors/processScene.d.ts.map +1 -0
- package/dist/esm/processors/processScene.js +35 -0
- package/dist/esm/processors/processSceneLogic.d.ts +4 -1
- package/dist/esm/processors/processSceneLogic.js +90 -15
- package/dist/esm/taro-template.json +68 -42
- package/dist/esm/toCodeTaro.d.ts +14 -1
- package/dist/esm/toCodeTaro.d.ts.map +1 -0
- package/dist/esm/toCodeTaro.js +1 -0
- package/dist/esm/utils/builder/buildResult.d.ts +1 -0
- package/dist/esm/utils/builder/buildResult.d.ts.map +1 -0
- package/dist/esm/utils/builder/buildResult.js +8 -1
- package/dist/esm/utils/common/ImportManager.d.ts.map +1 -0
- package/dist/esm/utils/common/helper.d.ts +10 -0
- package/dist/esm/utils/common/helper.js +29 -0
- package/dist/esm/utils/common/object.d.ts.map +1 -0
- package/dist/esm/utils/common/string.d.ts +10 -0
- package/dist/esm/utils/common/string.d.ts.map +1 -0
- package/dist/esm/utils/common/string.js +16 -0
- package/dist/esm/utils/config/content/converter.d.ts.map +1 -0
- package/dist/esm/utils/config/content/converter.js +1 -0
- package/dist/esm/utils/config/content/index.d.ts.map +1 -0
- package/dist/esm/utils/config/content/pageConfig.d.ts.map +1 -0
- package/dist/esm/utils/config/content/saveBase64Image.d.ts.map +1 -0
- package/dist/esm/utils/config/content/tabBarConfig.d.ts +19 -4
- package/dist/esm/utils/config/content/tabBarConfig.d.ts.map +1 -0
- package/dist/esm/utils/config/content/tabBarConfig.js +28 -4
- package/dist/esm/utils/config/content/types.d.ts +15 -10
- package/dist/esm/utils/config/content/types.d.ts.map +1 -0
- package/dist/esm/utils/config/content/validator.d.ts.map +1 -0
- package/dist/esm/utils/config/handlePageConfig.d.ts +6 -0
- package/dist/esm/utils/config/handlePageConfig.d.ts.map +1 -0
- package/dist/esm/utils/config/handlePageConfig.js +17 -2
- package/dist/esm/utils/context/buildContext.d.ts.map +1 -0
- package/dist/esm/utils/context/buildFrameMap.d.ts.map +1 -0
- package/dist/esm/utils/context/buildGlobalData.d.ts.map +1 -0
- package/dist/esm/utils/context/collectJSModules.d.ts.map +1 -0
- package/dist/esm/utils/context/createEventQueries.d.ts.map +1 -0
- package/dist/esm/utils/context/createProvider.d.ts.map +1 -0
- package/dist/esm/utils/index.d.ts.map +1 -0
- package/dist/esm/utils/logic/convertNamespace.d.ts.map +1 -0
- package/dist/esm/utils/logic/genJSModules.d.ts.map +1 -0
- package/dist/esm/utils/logic/handleProcess.js +66 -40
- package/dist/esm/utils/logic/processChildren.d.ts.map +1 -0
- package/dist/esm/utils/style/color.d.ts.map +1 -0
- package/dist/esm/utils/style/converter.js +11 -8
- package/dist/esm/utils/style/getComponentClassName.d.ts.map +1 -0
- package/dist/esm/utils/style/pxtransform.d.ts.map +1 -0
- package/dist/esm/utils/style/types.d.ts.map +1 -0
- package/dist/esm/utils/templates/component.d.ts.map +1 -0
- package/dist/esm/utils/templates/index.d.ts +1 -0
- package/dist/esm/utils/templates/index.js +20 -10
- package/dist/esm/utils/templates/renderManager.js +5 -2
- package/dist/esm/utils/templates/scene.d.ts +2 -1
- package/dist/esm/utils/templates/scene.js +7 -6
- package/package.json +1 -1
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
import _regeneratorRuntime from "@babel/runtime/helpers/esm/regeneratorRuntime";
|
|
2
|
+
import _asyncToGenerator from "@babel/runtime/helpers/esm/asyncToGenerator";
|
|
3
|
+
import Taro from '@tarojs/taro';
|
|
4
|
+
export default (function (context) {
|
|
5
|
+
var _inputs$show;
|
|
6
|
+
var data = context.data;
|
|
7
|
+
var inputs = context.inputs;
|
|
8
|
+
var outputs = context.outputs;
|
|
9
|
+
(_inputs$show = inputs.show) === null || _inputs$show === void 0 || _inputs$show.call(inputs, /*#__PURE__*/function () {
|
|
10
|
+
var _ref = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee(val) {
|
|
11
|
+
var _ref2, _cfg$title, _ref3, _cfg$content, _ref4, _cfg$showCancel, _ref5, _cfg$cancelText, _cfg$cancelColor, _ref6, _cfg$confirmText, _cfg$confirmColor, _outputs$onConfirm, _outputs$onCancel, cfg, modalConfig, res, _outputs$onCancel2;
|
|
12
|
+
return _regeneratorRuntime().wrap(function _callee$(_context) {
|
|
13
|
+
while (1) switch (_context.prev = _context.next) {
|
|
14
|
+
case 0:
|
|
15
|
+
_context.prev = 0;
|
|
16
|
+
cfg = typeof val === 'string' ? {
|
|
17
|
+
content: val
|
|
18
|
+
} : val || {};
|
|
19
|
+
modalConfig = {
|
|
20
|
+
title: (_ref2 = (_cfg$title = cfg.title) !== null && _cfg$title !== void 0 ? _cfg$title : data.title) !== null && _ref2 !== void 0 ? _ref2 : '',
|
|
21
|
+
content: (_ref3 = (_cfg$content = cfg.content) !== null && _cfg$content !== void 0 ? _cfg$content : data.content) !== null && _ref3 !== void 0 ? _ref3 : '',
|
|
22
|
+
showCancel: (_ref4 = (_cfg$showCancel = cfg.showCancel) !== null && _cfg$showCancel !== void 0 ? _cfg$showCancel : data.showCancel) !== null && _ref4 !== void 0 ? _ref4 : true,
|
|
23
|
+
cancelText: (_ref5 = (_cfg$cancelText = cfg.cancelText) !== null && _cfg$cancelText !== void 0 ? _cfg$cancelText : data.cancelText) !== null && _ref5 !== void 0 ? _ref5 : '取消',
|
|
24
|
+
cancelColor: (_cfg$cancelColor = cfg.cancelColor) !== null && _cfg$cancelColor !== void 0 ? _cfg$cancelColor : data.cancelColor,
|
|
25
|
+
confirmText: (_ref6 = (_cfg$confirmText = cfg.confirmText) !== null && _cfg$confirmText !== void 0 ? _cfg$confirmText : data.confirmText) !== null && _ref6 !== void 0 ? _ref6 : '确认',
|
|
26
|
+
confirmColor: (_cfg$confirmColor = cfg.confirmColor) !== null && _cfg$confirmColor !== void 0 ? _cfg$confirmColor : data.confirmColor
|
|
27
|
+
}; // editable 不是所有端都支持,按存在即传
|
|
28
|
+
if (cfg.editable !== undefined) modalConfig.editable = cfg.editable;else if (data.editable !== undefined) modalConfig.editable = data.editable;
|
|
29
|
+
_context.next = 6;
|
|
30
|
+
return Taro.showModal(modalConfig);
|
|
31
|
+
case 6:
|
|
32
|
+
res = _context.sent;
|
|
33
|
+
if (res !== null && res !== void 0 && res.confirm) (_outputs$onConfirm = outputs.onConfirm) === null || _outputs$onConfirm === void 0 || _outputs$onConfirm.call(outputs, res);else (_outputs$onCancel = outputs.onCancel) === null || _outputs$onCancel === void 0 || _outputs$onCancel.call(outputs, res);
|
|
34
|
+
_context.next = 14;
|
|
35
|
+
break;
|
|
36
|
+
case 10:
|
|
37
|
+
_context.prev = 10;
|
|
38
|
+
_context.t0 = _context["catch"](0);
|
|
39
|
+
console.error('显示 Modal 失败:', _context.t0);
|
|
40
|
+
(_outputs$onCancel2 = outputs.onCancel) === null || _outputs$onCancel2 === void 0 || _outputs$onCancel2.call(outputs, _context.t0);
|
|
41
|
+
case 14:
|
|
42
|
+
case "end":
|
|
43
|
+
return _context.stop();
|
|
44
|
+
}
|
|
45
|
+
}, _callee, null, [[0, 10]]);
|
|
46
|
+
}));
|
|
47
|
+
return function (_x) {
|
|
48
|
+
return _ref.apply(this, arguments);
|
|
49
|
+
};
|
|
50
|
+
}());
|
|
51
|
+
});
|
|
@@ -1,17 +1,53 @@
|
|
|
1
1
|
export default (function (context) {
|
|
2
|
-
var _inputs$delay, _inputs$cancel;
|
|
2
|
+
var _inputs$trigger, _inputs$delay, _inputs$cancel;
|
|
3
3
|
var data = context.data;
|
|
4
4
|
var inputs = context.inputs;
|
|
5
5
|
var outputs = context.outputs;
|
|
6
6
|
var timeoutId = null;
|
|
7
|
-
|
|
7
|
+
var inputPins = new Set(Object.keys(inputs));
|
|
8
|
+
var outputPins = new Set(Object.keys(outputs));
|
|
9
|
+
var hasIn = function hasIn(pin) {
|
|
10
|
+
return inputPins.has(pin);
|
|
11
|
+
};
|
|
12
|
+
var hasOut = function hasOut(pin) {
|
|
13
|
+
return outputPins.has(pin);
|
|
14
|
+
};
|
|
15
|
+
var clear = function clear() {
|
|
16
|
+
if (timeoutId) {
|
|
17
|
+
clearTimeout(timeoutId);
|
|
18
|
+
timeoutId = null;
|
|
19
|
+
}
|
|
20
|
+
};
|
|
21
|
+
|
|
22
|
+
// 兼容:inputs.trigger(payload) -> 延迟后 outputs.trigger(payload)
|
|
23
|
+
if (hasIn("trigger")) (_inputs$trigger = inputs.trigger) === null || _inputs$trigger === void 0 || _inputs$trigger.call(inputs, function (payload) {
|
|
24
|
+
try {
|
|
25
|
+
var _outputs$onStart;
|
|
26
|
+
// 允许 payload 自带 delay 覆盖;否则用 data.delay;再否则 1000
|
|
27
|
+
var delay = (payload === null || payload === void 0 ? void 0 : payload.delay) || data.delay || 1000;
|
|
28
|
+
clear();
|
|
29
|
+
(_outputs$onStart = outputs.onStart) === null || _outputs$onStart === void 0 || _outputs$onStart.call(outputs, {
|
|
30
|
+
delay: delay,
|
|
31
|
+
timestamp: Date.now()
|
|
32
|
+
});
|
|
33
|
+
timeoutId = setTimeout(function () {
|
|
34
|
+
var _outputs$trigger, _outputs$onExecute;
|
|
35
|
+
if (hasOut("trigger")) (_outputs$trigger = outputs.trigger) === null || _outputs$trigger === void 0 || _outputs$trigger.call(outputs, payload);
|
|
36
|
+
(_outputs$onExecute = outputs.onExecute) === null || _outputs$onExecute === void 0 || _outputs$onExecute.call(outputs, {
|
|
37
|
+
delay: delay,
|
|
38
|
+
timestamp: Date.now()
|
|
39
|
+
});
|
|
40
|
+
timeoutId = null;
|
|
41
|
+
}, delay);
|
|
42
|
+
} catch (error) {
|
|
43
|
+
console.error('延迟执行失败:', error);
|
|
44
|
+
clear();
|
|
45
|
+
}
|
|
46
|
+
});
|
|
47
|
+
if (hasIn("delay")) (_inputs$delay = inputs.delay) === null || _inputs$delay === void 0 || _inputs$delay.call(inputs, function (val) {
|
|
8
48
|
try {
|
|
9
49
|
var delay = (val === null || val === void 0 ? void 0 : val.delay) || data.delay || 1000;
|
|
10
|
-
|
|
11
|
-
// 清除之前的定时器
|
|
12
|
-
if (timeoutId) {
|
|
13
|
-
clearTimeout(timeoutId);
|
|
14
|
-
}
|
|
50
|
+
clear();
|
|
15
51
|
outputs.onStart({
|
|
16
52
|
delay: delay,
|
|
17
53
|
timestamp: Date.now()
|
|
@@ -25,17 +61,13 @@ export default (function (context) {
|
|
|
25
61
|
}, delay);
|
|
26
62
|
} catch (error) {
|
|
27
63
|
console.error('延迟执行失败:', error);
|
|
28
|
-
|
|
29
|
-
clearTimeout(timeoutId);
|
|
30
|
-
timeoutId = null;
|
|
31
|
-
}
|
|
64
|
+
clear();
|
|
32
65
|
}
|
|
33
66
|
});
|
|
34
|
-
(_inputs$cancel = inputs.cancel) === null || _inputs$cancel === void 0 || _inputs$cancel.call(inputs, function () {
|
|
67
|
+
if (hasIn("cancel")) (_inputs$cancel = inputs.cancel) === null || _inputs$cancel === void 0 || _inputs$cancel.call(inputs, function () {
|
|
35
68
|
try {
|
|
36
69
|
if (timeoutId) {
|
|
37
|
-
|
|
38
|
-
timeoutId = null;
|
|
70
|
+
clear();
|
|
39
71
|
outputs.onCancel('延迟任务已取消');
|
|
40
72
|
} else {
|
|
41
73
|
outputs.onCancel('没有正在执行的延迟任务');
|
|
@@ -18,6 +18,8 @@ export { default as mybricks_taro_share } from "./_Share";
|
|
|
18
18
|
export { default as mybricks_taro_getSystemInfo } from "./_GetSystemInfo";
|
|
19
19
|
// 数据处理
|
|
20
20
|
export { default as mybricks_taro_aesEncode } from "./_AesEncode";
|
|
21
|
+
// 模态对话框
|
|
22
|
+
export { default as mybricks_taro_modal } from "./_Modal";
|
|
21
23
|
export { default as mybricks_taro_format } from "./_Format";
|
|
22
24
|
// 文件和媒体
|
|
23
25
|
export { default as mybricks_taro_chooseFile } from "./_ChooseFile";
|
|
@@ -1,9 +1,5 @@
|
|
|
1
1
|
export var log = function log() {
|
|
2
|
-
|
|
3
|
-
for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
|
|
4
|
-
args[_key] = arguments[_key];
|
|
5
|
-
}
|
|
6
|
-
(_console = console).log.apply(_console, ["[MyBricks]"].concat(args));
|
|
2
|
+
// console.log("[MyBricks]", ...args)
|
|
7
3
|
};
|
|
8
4
|
export var logger = {
|
|
9
5
|
info: log,
|
|
@@ -95,12 +95,16 @@ export function useBindEvents(props, context) {
|
|
|
95
95
|
|
|
96
96
|
// 预处理已存在的事件
|
|
97
97
|
Object.keys(props).forEach(function (key) {
|
|
98
|
-
|
|
98
|
+
// 兼容:MyBricks 输出 pin 既可能是 onChange,也可能是 changeTab 这种非 on 前缀
|
|
99
|
+
if (typeof props[key] === 'function') {
|
|
99
100
|
var handler = props[key];
|
|
100
101
|
var wrapped = function wrapped(originalValue) {
|
|
102
|
+
var _context$parentSlot;
|
|
101
103
|
// 鸿蒙/render-web 规范:如果是在插槽中触发事件,且存在父级协议,则自动封装元数据
|
|
102
104
|
// 这解决了 FormContainer 等组件识别子项的需求
|
|
103
|
-
|
|
105
|
+
// 注意:不要仅凭 parentSlot 存在就封装,否则会影响 Tabs2/changeTab 这类事件直接给 JS 计算组件传参
|
|
106
|
+
// 仅在父级 slot 使用 itemWrap 协议时才需要这层元数据
|
|
107
|
+
var value = context !== null && context !== void 0 && (_context$parentSlot = context.parentSlot) !== null && _context$parentSlot !== void 0 && (_context$parentSlot = _context$parentSlot.params) !== null && _context$parentSlot !== void 0 && _context$parentSlot.itemWrap ? {
|
|
104
108
|
id: context.id,
|
|
105
109
|
name: context.name,
|
|
106
110
|
value: originalValue
|
|
@@ -117,6 +121,7 @@ export function useBindEvents(props, context) {
|
|
|
117
121
|
});
|
|
118
122
|
return new Proxy(_events, {
|
|
119
123
|
get: function get(target, key) {
|
|
124
|
+
// 对 onXXX 事件(不少组件 runtime 直接 outputs["onChange"](...))提供兜底函数,避免未连线时报错
|
|
120
125
|
if (typeof key === 'string' && key.startsWith('on')) {
|
|
121
126
|
if (target[key]) {
|
|
122
127
|
return target[key];
|
|
@@ -1,8 +1,22 @@
|
|
|
1
|
-
import _objectSpread from "@babel/runtime/helpers/esm/objectSpread2";
|
|
2
1
|
import _slicedToArray from "@babel/runtime/helpers/esm/slicedToArray";
|
|
2
|
+
import _objectSpread from "@babel/runtime/helpers/esm/objectSpread2";
|
|
3
3
|
import React, { useMemo, useRef } from "react";
|
|
4
4
|
import ComContext, { SlotProvider, useAppContext, useParentSlot } from "./ComContext";
|
|
5
5
|
import { createReactiveInputHandler } from "../mybricks/createReactiveInputHandler";
|
|
6
|
+
function SlotParamsBridge(props) {
|
|
7
|
+
var _props$params, _parentSlot$params, _props$children;
|
|
8
|
+
var parentSlot = useParentSlot();
|
|
9
|
+
var mergedParams = ((_props$params = props.params) === null || _props$params === void 0 ? void 0 : _props$params.inputValues) === undefined && parentSlot !== null && parentSlot !== void 0 && (_parentSlot$params = parentSlot.params) !== null && _parentSlot$params !== void 0 && _parentSlot$params.inputValues ? _objectSpread(_objectSpread({}, props.params || {}), {}, {
|
|
10
|
+
inputValues: parentSlot.params.inputValues
|
|
11
|
+
}) : props.params;
|
|
12
|
+
var SlotComp = props.render;
|
|
13
|
+
var content = SlotComp ? /*#__PURE__*/React.createElement(SlotComp, mergedParams || {}) : (_props$children = props.children) !== null && _props$children !== void 0 ? _props$children : null;
|
|
14
|
+
return /*#__PURE__*/React.createElement(SlotProvider, {
|
|
15
|
+
value: _objectSpread(_objectSpread({}, props.state), {}, {
|
|
16
|
+
params: mergedParams
|
|
17
|
+
})
|
|
18
|
+
}, content);
|
|
19
|
+
}
|
|
6
20
|
function createChannelProxy(title) {
|
|
7
21
|
var handlersMap = {};
|
|
8
22
|
return new Proxy({}, {
|
|
@@ -51,19 +65,18 @@ export function useEnhancedSlots(rawSlots, id) {
|
|
|
51
65
|
var r = state._render;
|
|
52
66
|
// 只有存在 key 或 index 时才认为是“多实例作用域插槽”,需要实例隔离
|
|
53
67
|
var rawScope = (_ref3 = (_params$key = params === null || params === void 0 ? void 0 : params.key) !== null && _params$key !== void 0 ? _params$key : params === null || params === void 0 || (_params$inputValues = params.inputValues) === null || _params$inputValues === void 0 ? void 0 : _params$inputValues.index) !== null && _ref3 !== void 0 ? _ref3 : params === null || params === void 0 || (_params$inputValues2 = params.inputValues) === null || _params$inputValues2 === void 0 || (_params$inputValues2 = _params$inputValues2.itemData) === null || _params$inputValues2 === void 0 ? void 0 : _params$inputValues2.id;
|
|
54
|
-
var SlotComp = r;
|
|
55
|
-
var content = r ? /*#__PURE__*/React.createElement(SlotComp, params || {}) : null;
|
|
56
68
|
if (rawScope === undefined || rawScope === null) {
|
|
57
|
-
return /*#__PURE__*/React.createElement(
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
}
|
|
69
|
+
return /*#__PURE__*/React.createElement(SlotParamsBridge, {
|
|
70
|
+
state: state,
|
|
71
|
+
params: params,
|
|
72
|
+
render: r
|
|
73
|
+
});
|
|
62
74
|
}
|
|
63
75
|
var scopeId = "".concat(id, ".").concat(slotKey, "::").concat(String(rawScope));
|
|
64
76
|
var scopedComRefs = (_ref4 = state._scopedComRefs)[scopeId] || (_ref4[scopeId] = {
|
|
65
77
|
current: {
|
|
66
|
-
$inputs: {}
|
|
78
|
+
$inputs: {},
|
|
79
|
+
$outputs: {}
|
|
67
80
|
}
|
|
68
81
|
});
|
|
69
82
|
return /*#__PURE__*/React.createElement(SlotProvider, {
|
|
@@ -73,7 +86,11 @@ export function useEnhancedSlots(rawSlots, id) {
|
|
|
73
86
|
}, /*#__PURE__*/React.createElement(ScopedComContextProvider, {
|
|
74
87
|
comRefs: scopedComRefs,
|
|
75
88
|
scopeId: scopeId
|
|
76
|
-
},
|
|
89
|
+
}, /*#__PURE__*/React.createElement(SlotParamsBridge, {
|
|
90
|
+
state: state,
|
|
91
|
+
params: params,
|
|
92
|
+
render: r
|
|
93
|
+
})));
|
|
77
94
|
}
|
|
78
95
|
});
|
|
79
96
|
state._render = slotDef === null || slotDef === void 0 ? void 0 : slotDef.render;
|
|
@@ -90,6 +107,7 @@ export function useEnhancedSlots(rawSlots, id) {
|
|
|
90
107
|
export function ScopedComContextProvider(props) {
|
|
91
108
|
var parent = useAppContext();
|
|
92
109
|
var value = useMemo(function () {
|
|
110
|
+
// $outputs 与 $inputs 一样:在 scoped 下应当隔离(由 scopedComRefs.current.$outputs 提供)
|
|
93
111
|
// 如果没有显式传 comRefs,则沿用父级的,但依然带上新的 scopeId
|
|
94
112
|
return _objectSpread(_objectSpread({}, parent), {}, {
|
|
95
113
|
comRefs: props.comRefs || parent.comRefs,
|
|
@@ -4,10 +4,15 @@ import { deepProxy } from "./hooks";
|
|
|
4
4
|
export function useAppCreateContext() {
|
|
5
5
|
// 约定:场景级 inputs 统一挂载到 $inputs,避免与组件 runtime 的 inputs 命名冲突
|
|
6
6
|
// 同时可避免 `Cannot set property 'open' of undefined`
|
|
7
|
+
// 注册表拆分:
|
|
8
|
+
// - comRefs: 组件实例/inputs/outputs 注册表(可 scoped)
|
|
9
|
+
// - $vars/$fxs: 逻辑能力注册表(仅页面级,全作用域共享)
|
|
7
10
|
var comRefs = useRef(deepProxy({
|
|
8
|
-
$inputs: {}
|
|
11
|
+
$inputs: {},
|
|
12
|
+
$outputs: {}
|
|
9
13
|
}));
|
|
10
|
-
var
|
|
14
|
+
var $vars = useRef({});
|
|
15
|
+
var $fxs = useRef({});
|
|
11
16
|
var _useState = useState({
|
|
12
17
|
visible: false,
|
|
13
18
|
name: '',
|
|
@@ -38,7 +43,8 @@ export function useAppCreateContext() {
|
|
|
38
43
|
return useMemo(function () {
|
|
39
44
|
return {
|
|
40
45
|
comRefs: comRefs,
|
|
41
|
-
|
|
46
|
+
$vars: $vars,
|
|
47
|
+
$fxs: $fxs,
|
|
42
48
|
appContext: appContext,
|
|
43
49
|
popupState: popupState,
|
|
44
50
|
setPopupState: setPopupState
|
|
@@ -2,7 +2,7 @@ import _extends from "@babel/runtime/helpers/esm/extends";
|
|
|
2
2
|
import _objectSpread from "@babel/runtime/helpers/esm/objectSpread2";
|
|
3
3
|
import _slicedToArray from "@babel/runtime/helpers/esm/slicedToArray";
|
|
4
4
|
import _objectWithoutProperties from "@babel/runtime/helpers/esm/objectWithoutProperties";
|
|
5
|
-
var _excluded = ["component", "id", "data", "className", "style"
|
|
5
|
+
var _excluded = ["component", "id", "data", "className", "style"],
|
|
6
6
|
_excluded2 = ["slots", "parentSlot"];
|
|
7
7
|
import React, { useState, useEffect } from 'react';
|
|
8
8
|
// @ts-ignore 运行时由宿主项目提供 @tarojs/components
|
|
@@ -14,15 +14,13 @@ import { useEnhancedSlots, useResolvedParentSlot } from "./slots";
|
|
|
14
14
|
// @ts-ignore 运行时由宿主项目提供 @tarojs/taro
|
|
15
15
|
import { useTabItemTap } from '@tarojs/taro';
|
|
16
16
|
export var WithCom = function WithCom(props) {
|
|
17
|
-
var _parentSlot$params;
|
|
17
|
+
var _comRefs$current, _parentSlot$params;
|
|
18
18
|
var Component = props.component,
|
|
19
19
|
_props$id = props.id,
|
|
20
20
|
id = _props$id === void 0 ? '' : _props$id,
|
|
21
21
|
data = props.data,
|
|
22
22
|
className = props.className,
|
|
23
23
|
style = props.style,
|
|
24
|
-
inputValues = props.inputValues,
|
|
25
|
-
inputValuesMapping = props.inputValuesMapping,
|
|
26
24
|
rest = _objectWithoutProperties(props, _excluded);
|
|
27
25
|
var _useAppContext = useAppContext(),
|
|
28
26
|
comRefs = _useAppContext.comRefs,
|
|
@@ -81,8 +79,6 @@ export var WithCom = function WithCom(props) {
|
|
|
81
79
|
rawSlots = _ref.slots,
|
|
82
80
|
parentSlotProp = _ref.parentSlot,
|
|
83
81
|
restProps = _objectWithoutProperties(_ref, _excluded2);
|
|
84
|
-
var _useAppContext2 = useAppContext(),
|
|
85
|
-
globalOutputs = _useAppContext2.outputs;
|
|
86
82
|
var parentSlot = useResolvedParentSlot(parentSlotProp);
|
|
87
83
|
|
|
88
84
|
// 绑定事件,带上上下文(用于事件流自动封装 id/name)
|
|
@@ -92,9 +88,9 @@ export var WithCom = function WithCom(props) {
|
|
|
92
88
|
parentSlot: parentSlot
|
|
93
89
|
});
|
|
94
90
|
|
|
95
|
-
//
|
|
96
|
-
if (
|
|
97
|
-
|
|
91
|
+
// 注册 outputs 到注册表(按组件 id)
|
|
92
|
+
if (comRefs !== null && comRefs !== void 0 && (_comRefs$current = comRefs.current) !== null && _comRefs$current !== void 0 && _comRefs$current.$outputs) {
|
|
93
|
+
comRefs.current.$outputs[id] = eventProxy;
|
|
98
94
|
}
|
|
99
95
|
|
|
100
96
|
// 鸿蒙规范:确保 comRefs 中挂载的是最新的 inputProxy
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"generateTaroProjectJson.d.ts","sourceRoot":"","sources":["generateTaroProjectJson.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,gBAAgB,EAAiB,MAAM,eAAe,CAAC;AAErE,UAAU,QAAQ;IAChB,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,QAAQ,CAAC,EAAE,QAAQ,EAAE,CAAC;CACvB;AAED;;;;GAIG;AACH,QAAA,MAAM,uBAAuB,WAAY,gBAAgB,KAAG,QAAQ,EAsJnE,CAAC;AAEF,eAAe,uBAAuB,CAAC"}
|
|
@@ -122,6 +122,28 @@ var generateTaroProjectJson = function generateTaroProjectJson(result) {
|
|
|
122
122
|
// 处理 TabBar 图片文件
|
|
123
123
|
handleTabBarImages(tabbarDir, imageFiles);
|
|
124
124
|
|
|
125
|
+
// 替换自定义 Tabbar 配置文件
|
|
126
|
+
var CUSTOM_TAB_BAR_CONFIG_PATH = "src/custom-tab-bar/mybricks/tabbar-config.ts";
|
|
127
|
+
var customTabBarItem = files.find(function (item) {
|
|
128
|
+
return item.type === 'customTabBar';
|
|
129
|
+
});
|
|
130
|
+
if (customTabBarItem.content) {
|
|
131
|
+
var _mybricksDir$children;
|
|
132
|
+
var customTabBarDir = ensureDir(srcDir, "src/custom-tab-bar");
|
|
133
|
+
var mybricksDir = ensureDir(customTabBarDir, "src/custom-tab-bar/mybricks");
|
|
134
|
+
var tabbarConfigFileIndex = (_mybricksDir$children = mybricksDir.children) === null || _mybricksDir$children === void 0 ? void 0 : _mybricksDir$children.findIndex(function (node) {
|
|
135
|
+
return node.path === CUSTOM_TAB_BAR_CONFIG_PATH;
|
|
136
|
+
});
|
|
137
|
+
if (tabbarConfigFileIndex === -1) {
|
|
138
|
+
mybricksDir.children.push({
|
|
139
|
+
path: CUSTOM_TAB_BAR_CONFIG_PATH,
|
|
140
|
+
content: customTabBarItem.content
|
|
141
|
+
});
|
|
142
|
+
} else {
|
|
143
|
+
mybricksDir.children[tabbarConfigFileIndex].content = customTabBarItem.content;
|
|
144
|
+
}
|
|
145
|
+
}
|
|
146
|
+
|
|
125
147
|
// 处理 common 目录下的文件
|
|
126
148
|
handleCommonDir(commonDir, files);
|
|
127
149
|
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"generateTaroTempalteJson.d.ts","sourceRoot":"","sources":["generateTaroTempalteJson.ts"],"names":[],"mappings":"AAGA,UAAU,QAAQ;IAChB,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,QAAQ,CAAC,EAAE,QAAQ,EAAE,CAAC;CACvB;AAED,UAAU,YAAY;IACpB,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,QAAQ,EAAE,CAAC;CACnB;AAKD;;;GAGG;AACH,QAAA,MAAM,wBAAwB,iBAAiB,MAAM,KAAkB,YAqFtE,CAAC;AAEF,eAAe,wBAAwB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"appConfig.d.ts","sourceRoot":"","sources":["appConfig.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,UAAU,QAAQ;IAChB,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,QAAQ,CAAC,EAAE,QAAQ,EAAE,CAAC;CACvB;AAED,UAAU,YAAY;IACpB,IAAI,EAAE,MAAM,CAAC;IACb,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,IAAI,CAAC,EAAE;QACL,EAAE,EAAE,MAAM,CAAC;KACZ,CAAC;IACF,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAC;CACpB;AAED;;GAEG;AACH,wBAAgB,eAAe,CAC7B,aAAa,EAAE,QAAQ,EACvB,WAAW,EAAE,YAAY,EAAE,EAC3B,KAAK,EAAE,YAAY,EAAE,GACpB,IAAI,CAuBN"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"commonDir.d.ts","sourceRoot":"","sources":["commonDir.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,UAAU,QAAQ;IAChB,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,QAAQ,CAAC,EAAE,QAAQ,EAAE,CAAC;CACvB;AAED,UAAU,YAAY;IACpB,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,aAAa,CAAC,EAAE;QACd,MAAM,EAAE,MAAM,MAAM,CAAC;KACtB,CAAC;IACF,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAC;CACpB;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,SAAS,EAAE,QAAQ,EAAE,KAAK,EAAE,YAAY,EAAE,GAAG,IAAI,CAuBhF"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"fileNode.d.ts","sourceRoot":"","sources":["fileNode.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,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,OAAO,CAAC,KAAK,EAAE,QAAQ,EAAE,EAAE,UAAU,EAAE,MAAM,GAAG,QAAQ,GAAG,IAAI,CAW9E;AAED;;GAEG;AACH,wBAAgB,SAAS,CAAC,SAAS,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,GAAG,QAAQ,CAaxE"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,cAAc,YAAY,CAAC;AAC3B,cAAc,aAAa,CAAC;AAC5B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,aAAa,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tabBarImages.d.ts","sourceRoot":"","sources":["tabBarImages.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,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,kBAAkB,CAChC,SAAS,EAAE,QAAQ,EACnB,UAAU,EAAE,aAAa,EAAE,GAC1B,IAAI,CAON"}
|
package/dist/esm/handleCom.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import _objectSpread from "@babel/runtime/helpers/esm/objectSpread2";
|
|
2
1
|
import _slicedToArray from "@babel/runtime/helpers/esm/slicedToArray";
|
|
2
|
+
import _objectSpread from "@babel/runtime/helpers/esm/objectSpread2";
|
|
3
3
|
import _defineProperty from "@babel/runtime/helpers/esm/defineProperty";
|
|
4
4
|
/* eslint-disable @typescript-eslint/no-explicit-any */
|
|
5
5
|
import { convertComponentStyle, convertStyleAryToCss } from "./utils/style/converter";
|
|
@@ -8,6 +8,7 @@ import { genSlotRenderRef } from "./utils/templates/component";
|
|
|
8
8
|
import { RenderManager } from "./utils/templates/renderManager";
|
|
9
9
|
import handleSlot from "./handleSlot";
|
|
10
10
|
import { processComEvents } from "./processors/processComEvents";
|
|
11
|
+
import { handleProcess } from "./utils/logic/handleProcess";
|
|
11
12
|
/**
|
|
12
13
|
* 组件协议配置(参考鸿蒙规范)
|
|
13
14
|
* - useWrap: 是否支持容器协议(如 Form 容器需要 metadata 包装)
|
|
@@ -107,11 +108,15 @@ var prepareComponent = function prepareComponent(com, config) {
|
|
|
107
108
|
* 准备样式转换
|
|
108
109
|
*/
|
|
109
110
|
var prepareStyles = function prepareStyles(com) {
|
|
110
|
-
var _props$style;
|
|
111
|
+
var _props$data, _props$style, _props$style2;
|
|
111
112
|
var meta = com.meta,
|
|
112
113
|
props = com.props;
|
|
113
|
-
|
|
114
|
-
var
|
|
114
|
+
// 鸿蒙化:合并 data.layout 到样式中,确保容器布局生效
|
|
115
|
+
var styleWithLayout = _objectSpread(_objectSpread({}, props.style || {}), {}, {
|
|
116
|
+
layout: ((_props$data = props.data) === null || _props$data === void 0 ? void 0 : _props$data.layout) || ((_props$style = props.style) === null || _props$style === void 0 ? void 0 : _props$style.layout)
|
|
117
|
+
});
|
|
118
|
+
var resultStyle = convertComponentStyle(styleWithLayout);
|
|
119
|
+
var cssContent = convertStyleAryToCss((_props$style2 = props.style) === null || _props$style2 === void 0 ? void 0 : _props$style2.styleAry, meta.id);
|
|
115
120
|
return {
|
|
116
121
|
cssContent: cssContent,
|
|
117
122
|
rootStyle: resultStyle.root || {}
|
|
@@ -138,7 +143,7 @@ var processComSlots = function processComSlots(com, config, initialCss) {
|
|
|
138
143
|
var renderManager = config.renderManager || new RenderManager();
|
|
139
144
|
var slotEntries = Object.entries(slots);
|
|
140
145
|
slotEntries.forEach(function (_ref2, index) {
|
|
141
|
-
var
|
|
146
|
+
var _com$props$data, _props$data2, _COM_PROTOCOL$meta$de;
|
|
142
147
|
var _ref3 = _slicedToArray(_ref2, 2),
|
|
143
148
|
slotId = _ref3[0],
|
|
144
149
|
slot = _ref3[1];
|
|
@@ -147,13 +152,16 @@ var processComSlots = function processComSlots(com, config, initialCss) {
|
|
|
147
152
|
if (children.length === 0) {
|
|
148
153
|
return;
|
|
149
154
|
}
|
|
155
|
+
var slotLayout = (_com$props$data = com.props.data) === null || _com$props$data === void 0 ? void 0 : _com$props$data.layout;
|
|
150
156
|
var result = handleSlot(slot, _objectSpread(_objectSpread({}, config), {}, {
|
|
151
157
|
checkIsRoot: function checkIsRoot() {
|
|
152
158
|
return false;
|
|
153
159
|
},
|
|
154
160
|
depth: 1,
|
|
155
161
|
renderManager: renderManager,
|
|
156
|
-
slotKey: slotId
|
|
162
|
+
slotKey: slotId,
|
|
163
|
+
// 鸿蒙化:传递父容器的布局配置给插槽
|
|
164
|
+
layout: slotLayout
|
|
157
165
|
}));
|
|
158
166
|
eventCode += result.js;
|
|
159
167
|
if (result.cssContent) {
|
|
@@ -165,9 +173,9 @@ var processComSlots = function processComSlots(com, config, initialCss) {
|
|
|
165
173
|
var formattedContent = formatSlotContent(result.ui, baseIndentSize, renderBodyIndent);
|
|
166
174
|
|
|
167
175
|
// 鸿蒙化处理:针对表单容器进行别名对齐
|
|
168
|
-
if (meta.def.namespace === "mybricks.taro.formContainer" && Array.isArray((_props$
|
|
169
|
-
var _props$
|
|
170
|
-
var items = (_props$
|
|
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.childrenResults) {
|
|
177
|
+
var _props$data3;
|
|
178
|
+
var items = (_props$data3 = props.data) === null || _props$data3 === void 0 ? void 0 : _props$data3.items;
|
|
171
179
|
result.childrenResults.forEach(function (childRes) {
|
|
172
180
|
var itemConfig = items.find(function (it) {
|
|
173
181
|
return it.id === childRes.id;
|
|
@@ -178,8 +186,15 @@ var processComSlots = function processComSlots(com, config, initialCss) {
|
|
|
178
186
|
});
|
|
179
187
|
}
|
|
180
188
|
|
|
181
|
-
//
|
|
182
|
-
|
|
189
|
+
// 插槽驱动逻辑(用户侧可读的最小版):
|
|
190
|
+
// - 直连:params.inputValues -> 子组件 inputs
|
|
191
|
+
// - js-autorun:执行一次 jsModules,并把 outputs 路由到下游 inputs
|
|
192
|
+
var logicCode = buildSlotLogicCode({
|
|
193
|
+
parentComId: meta.id,
|
|
194
|
+
slotKey: slotId,
|
|
195
|
+
children: result.childrenResults,
|
|
196
|
+
config: config
|
|
197
|
+
});
|
|
183
198
|
|
|
184
199
|
// 生成插槽描述注释内容
|
|
185
200
|
var description = "".concat(meta.title || meta.id, "\u7684").concat(slot.title || slotId, "\u63D2\u69FD");
|
|
@@ -206,39 +221,41 @@ var processComSlots = function processComSlots(com, config, initialCss) {
|
|
|
206
221
|
/**
|
|
207
222
|
* 生成插槽内部的驱动逻辑 (useEffect 监听 inputValues 并调用子组件 inputs)
|
|
208
223
|
*/
|
|
209
|
-
var buildSlotLogicCode = function buildSlotLogicCode(
|
|
210
|
-
var
|
|
224
|
+
var buildSlotLogicCode = function buildSlotLogicCode(args) {
|
|
225
|
+
var _config$getEffectEven;
|
|
226
|
+
var parentComId = args.parentComId,
|
|
227
|
+
slotKey = args.slotKey,
|
|
228
|
+
config = args.config;
|
|
211
229
|
var indent = indentation(2);
|
|
212
230
|
var indent2 = indentation(4);
|
|
213
|
-
var indent3 = indentation(6);
|
|
214
|
-
var bodyCode = "";
|
|
215
|
-
children === null || children === void 0 || children.forEach(function (child) {
|
|
216
|
-
if (child.type !== 'com') return;
|
|
217
231
|
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
});
|
|
224
|
-
Object.entries(mapping).forEach(function (_ref4) {
|
|
225
|
-
var _ref5 = _slicedToArray(_ref4, 2),
|
|
226
|
-
pinId = _ref5[0],
|
|
227
|
-
slotKey = _ref5[1];
|
|
228
|
-
bodyCode += "".concat(indent3, "const val_").concat(child.id, "_").concat(pinId, " = params.inputValues['").concat(slotKey, "'];\n");
|
|
229
|
-
bodyCode += "".concat(indent3, "if (val_").concat(child.id, "_").concat(pinId, " !== undefined) {\n");
|
|
230
|
-
// 生成调用代码:comRefs.current['u_TXC0P']?.['value']?.(val)
|
|
231
|
-
bodyCode += "".concat(indent3).concat(indent, "comRefs.current['").concat(child.id, "']?.['").concat(pinId, "']?.(val_").concat(child.id, "_").concat(pinId, ");\n");
|
|
232
|
-
bodyCode += "".concat(indent3, "}\n");
|
|
233
|
-
});
|
|
232
|
+
// 更直接:用 to-code-react 已经解析好的“effect event”(底层来自 diagrams[].conAry)
|
|
233
|
+
// buildSlotLogicCode 只负责包一层 useEffect,不再自己扫描/猜测 cons/pinValueProxies
|
|
234
|
+
var effectEvent = (_config$getEffectEven = config.getEffectEvent) === null || _config$getEffectEven === void 0 ? void 0 : _config$getEffectEven.call(config, {
|
|
235
|
+
comId: parentComId,
|
|
236
|
+
slotId: slotKey
|
|
234
237
|
});
|
|
235
|
-
if (!
|
|
236
|
-
|
|
237
|
-
|
|
238
|
+
if (!effectEvent) return "";
|
|
239
|
+
|
|
240
|
+
// 任意 slot 入参都映射到 params.inputValues[pinId]
|
|
241
|
+
var paramsProxy = new Proxy({}, {
|
|
242
|
+
get: function get(_t, key) {
|
|
243
|
+
return "params?.inputValues?.['".concat(String(key), "']");
|
|
244
|
+
}
|
|
245
|
+
});
|
|
246
|
+
var process = handleProcess(effectEvent, _objectSpread(_objectSpread({}, config), {}, {
|
|
247
|
+
target: "comRefs.current",
|
|
248
|
+
depth: 3,
|
|
249
|
+
addParentDependencyImport: config.addParentDependencyImport,
|
|
250
|
+
addConsumer: config.addConsumer,
|
|
251
|
+
getParams: function getParams() {
|
|
252
|
+
return paramsProxy;
|
|
253
|
+
}
|
|
254
|
+
})).replace(/this\./g, "comRefs.current.").replace(/comRefs\.current\.([a-zA-Z0-9_]+)\.controller_/g, "comRefs.current.$1.").replace(/comRefs\.current\.slot_Index\./g, "comRefs.current.");
|
|
255
|
+
if (!process.trim()) return "";
|
|
238
256
|
var code = "".concat(indent, "useEffect(() => {\n");
|
|
239
|
-
code += "".concat(indent2, "if (params?.inputValues)
|
|
240
|
-
code +=
|
|
241
|
-
code += "".concat(indent2, "}\n");
|
|
257
|
+
code += "".concat(indent2, "if (!params?.inputValues) return;\n");
|
|
258
|
+
code += "".concat(process, "\n");
|
|
242
259
|
code += "".concat(indent, "}, [params?.inputValues]);\n");
|
|
243
260
|
return code;
|
|
244
261
|
};
|
|
@@ -267,7 +284,8 @@ var generateUiCode = function generateUiCode(com, config, componentName, rootSty
|
|
|
267
284
|
}, {
|
|
268
285
|
codeStyle: config.codeStyle,
|
|
269
286
|
depth: config.depth + 1,
|
|
270
|
-
verbose: config.verbose
|
|
287
|
+
verbose: config.verbose,
|
|
288
|
+
checkIsRoot: config.checkIsRoot
|
|
271
289
|
});
|
|
272
290
|
};
|
|
273
291
|
|
|
@@ -275,10 +293,10 @@ var generateUiCode = function generateUiCode(com, config, componentName, rootSty
|
|
|
275
293
|
* JS 计算组件专用处理
|
|
276
294
|
*/
|
|
277
295
|
var handleJsCalculation = function handleJsCalculation(com, config) {
|
|
278
|
-
var _props$
|
|
296
|
+
var _props$data4, _props$data5, _props$data6;
|
|
279
297
|
var meta = com.meta,
|
|
280
298
|
props = com.props;
|
|
281
|
-
var transformCode = ((_props$
|
|
299
|
+
var transformCode = ((_props$data4 = props.data) === null || _props$data4 === void 0 || (_props$data4 = _props$data4.fns) === null || _props$data4 === void 0 ? void 0 : _props$data4.code) || ((_props$data5 = props.data) === null || _props$data5 === void 0 || (_props$data5 = _props$data5.fns) === null || _props$data5 === void 0 ? void 0 : _props$data5.transformCode) || ((_props$data6 = props.data) === null || _props$data6 === void 0 ? void 0 : _props$data6.fns);
|
|
282
300
|
if (transformCode && config.addJSModule) {
|
|
283
301
|
var _meta$model, _meta$model2;
|
|
284
302
|
config.addJSModule({
|
|
@@ -299,57 +317,4 @@ var handleJsCalculation = function handleJsCalculation(com, config) {
|
|
|
299
317
|
outputsConfig: undefined
|
|
300
318
|
};
|
|
301
319
|
};
|
|
302
|
-
|
|
303
|
-
/**
|
|
304
|
-
* 鸿蒙化解析逻辑:通过连线关系(cons)和 作用域代理(pinValueProxies)推导数据源映射
|
|
305
|
-
*/
|
|
306
|
-
function collectSlotInputMappingForCom(params) {
|
|
307
|
-
var slotFrameId = params.slotFrameId,
|
|
308
|
-
scene = params.scene,
|
|
309
|
-
targetComId = params.targetComId;
|
|
310
|
-
var mapping = {};
|
|
311
|
-
var cons = (scene === null || scene === void 0 ? void 0 : scene.cons) || {};
|
|
312
|
-
var pinValueProxies = (scene === null || scene === void 0 ? void 0 : scene.pinValueProxies) || {};
|
|
313
|
-
var coms = (scene === null || scene === void 0 ? void 0 : scene.coms) || {};
|
|
314
|
-
|
|
315
|
-
// 1. 识别属于当前插槽的 frame-input
|
|
316
|
-
var frameInputComIdToKey = {};
|
|
317
|
-
Object.entries(pinValueProxies).forEach(function (_ref6) {
|
|
318
|
-
var _ref7 = _slicedToArray(_ref6, 2),
|
|
319
|
-
key = _ref7[0],
|
|
320
|
-
proxy = _ref7[1];
|
|
321
|
-
if ((proxy === null || proxy === void 0 ? void 0 : proxy.type) === "frame" && proxy.frameId === slotFrameId && proxy.pinId) {
|
|
322
|
-
var _coms$comId;
|
|
323
|
-
var _String$split = String(key).split("-"),
|
|
324
|
-
_String$split2 = _slicedToArray(_String$split, 1),
|
|
325
|
-
comId = _String$split2[0];
|
|
326
|
-
if (comId && ((_coms$comId = coms[comId]) === null || _coms$comId === void 0 || (_coms$comId = _coms$comId.def) === null || _coms$comId === void 0 ? void 0 : _coms$comId.namespace) === "mybricks.core-comlib.frame-input") {
|
|
327
|
-
frameInputComIdToKey[comId] = proxy.pinId;
|
|
328
|
-
}
|
|
329
|
-
}
|
|
330
|
-
});
|
|
331
|
-
if (Object.keys(frameInputComIdToKey).length === 0) return mapping;
|
|
332
|
-
|
|
333
|
-
// 2. 推导连线:frame-input -> targetCom
|
|
334
|
-
Object.entries(cons).forEach(function (_ref8) {
|
|
335
|
-
var _ref9 = _slicedToArray(_ref8, 2),
|
|
336
|
-
sourceKey = _ref9[0],
|
|
337
|
-
targets = _ref9[1];
|
|
338
|
-
if (!Array.isArray(targets)) return;
|
|
339
|
-
var _String$split3 = String(sourceKey).split("-"),
|
|
340
|
-
_String$split4 = _slicedToArray(_String$split3, 1),
|
|
341
|
-
sourceComId = _String$split4[0];
|
|
342
|
-
var slotInputKey = frameInputComIdToKey[sourceComId];
|
|
343
|
-
if (slotInputKey) {
|
|
344
|
-
targets.forEach(function (t) {
|
|
345
|
-
var targetId = typeof t === 'string' ? t.split('-')[0] : t.comId;
|
|
346
|
-
var targetPin = typeof t === 'string' ? t.split('-')[1] : t.pinId;
|
|
347
|
-
if (targetId === targetComId && targetPin) {
|
|
348
|
-
mapping[targetPin] = slotInputKey;
|
|
349
|
-
}
|
|
350
|
-
});
|
|
351
|
-
}
|
|
352
|
-
});
|
|
353
|
-
return mapping;
|
|
354
|
-
}
|
|
355
320
|
export default handleCom;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"handleDom.d.ts","sourceRoot":"","sources":["handleDom.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAAE,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AACnD,OAAO,EAAE,aAAa,EAAuD,MAAM,SAAS,CAAC;AAG7F,KAAK,GAAG,GAAG,OAAO,CAAC,EAAE,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,EAAE;IAAE,IAAI,EAAE,KAAK,CAAA;CAAE,CAAC,CAAC;AAEvD,UAAU,eAAgB,SAAQ,UAAU;IAC1C,yBAAyB,EAAE,CAAC,OAAO,aAAa,CAAC,CAAC,WAAW,CAAC,CAAC,WAAW,CAAC,CAAC;IAC5E,WAAW,EAAE,CAAC,QAAQ,EAAE,UAAU,CAAC,UAAU,CAAC,oBAAoB,CAAC,CAAC,KAAK,IAAI,CAAC;IAC9E,QAAQ,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;CACnC;AAED,KAAK,eAAe,GAAG;IACrB,EAAE,EAAE,MAAM,CAAC;IACX,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,EAAE,CAAC;IAChB,UAAU,EAAE,MAAM,EAAE,CAAC;IACrB,UAAU,EAAE,MAAM,CAAC;CACpB,CAAC;AAEF,QAAA,MAAM,SAAS,QAAS,GAAG,UAAU,eAAe,KAAG,eAwBtD,CAAC;AAEF,eAAe,SAAS,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"handleExtension.d.ts","sourceRoot":"","sources":["handleExtension.ts"],"names":[],"mappings":"AACA;;GAEG;AAIH,OAAO,KAAK,EAAE,gBAAgB,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAEpE,UAAU,qBAAqB;IAC7B,MAAM,EAAE,GAAG,CAAC;IACZ,eAAe,EAAE,GAAG,EAAE,CAAC;CACxB;AAED,QAAA,MAAM,eAAe,WACX,qBAAqB,UACrB,gBAAgB,KACvB,aAAa,EAsEf,CAAC;AAEF,eAAe,eAAe,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"handleGlobal.d.ts","sourceRoot":"","sources":["handleGlobal.ts"],"names":[],"mappings":"AAAA;;GAEG;AAKH,OAAO,KAAK,EAAE,gBAAgB,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAEpE,UAAU,kBAAkB;IAC1B,MAAM,EAAE,GAAG,CAAC;IACZ,SAAS,EAAE,GAAG,EAAE,CAAC;IACjB,UAAU,EAAE,GAAG,EAAE,CAAC;CACnB;AAED,QAAA,MAAM,YAAY,WACR,kBAAkB,UAClB,gBAAgB,KACvB,aAAa,EAuKf,CAAC;AAEF,eAAe,YAAY,CAAC"}
|