@mybricks/to-code-taro 1.0.7 → 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.
Files changed (120) hide show
  1. package/dist/cjs/core/comlib/_Modal.js +68 -0
  2. package/dist/cjs/core/comlib/_TimerDelay.js +55 -30
  3. package/dist/cjs/core/comlib/index.js +3 -0
  4. package/dist/cjs/core/mybricks/log.js +0 -1
  5. package/dist/cjs/core/utils/hooks.js +3 -2
  6. package/dist/cjs/core/utils/slots.js +11 -5
  7. package/dist/cjs/core/utils/useContext.js +5 -3
  8. package/dist/cjs/core/utils/with.js +5 -6
  9. package/dist/cjs/generate/generateTaroProjectJson.js +18 -1
  10. package/dist/cjs/handleCom.js +47 -73
  11. package/dist/cjs/handleSlot.js +5 -3
  12. package/dist/cjs/processors/processComEvents.js +2 -3
  13. package/dist/cjs/processors/processModule.js +23 -0
  14. package/dist/cjs/processors/processScene.js +23 -0
  15. package/dist/cjs/processors/processSceneLogic.d.ts +4 -1
  16. package/dist/cjs/processors/processSceneLogic.js +72 -12
  17. package/dist/cjs/taro-template.json +68 -42
  18. package/dist/cjs/toCodeTaro.d.ts +14 -1
  19. package/dist/cjs/toCodeTaro.js +1 -0
  20. package/dist/cjs/utils/builder/buildResult.d.ts +1 -0
  21. package/dist/cjs/utils/builder/buildResult.js +8 -1
  22. package/dist/cjs/utils/common/helper.d.ts +10 -0
  23. package/dist/cjs/utils/common/helper.js +21 -0
  24. package/dist/cjs/utils/common/string.d.ts +10 -0
  25. package/dist/cjs/utils/common/string.js +13 -0
  26. package/dist/cjs/utils/config/content/converter.js +1 -0
  27. package/dist/cjs/utils/config/content/tabBarConfig.d.ts +19 -4
  28. package/dist/cjs/utils/config/content/tabBarConfig.js +18 -1
  29. package/dist/cjs/utils/config/content/types.d.ts +15 -10
  30. package/dist/cjs/utils/config/handlePageConfig.d.ts +6 -0
  31. package/dist/cjs/utils/config/handlePageConfig.js +13 -1
  32. package/dist/cjs/utils/logic/handleProcess.js +50 -33
  33. package/dist/cjs/utils/style/converter.js +1 -6
  34. package/dist/cjs/utils/templates/index.d.ts +1 -0
  35. package/dist/cjs/utils/templates/index.js +11 -4
  36. package/dist/cjs/utils/templates/renderManager.js +4 -2
  37. package/dist/cjs/utils/templates/scene.d.ts +2 -1
  38. package/dist/cjs/utils/templates/scene.js +4 -3
  39. package/dist/esm/abstractEventTypeDef.d.ts.map +1 -0
  40. package/dist/esm/core/comlib/_Modal.js +51 -0
  41. package/dist/esm/core/comlib/_TimerDelay.js +46 -14
  42. package/dist/esm/core/comlib/index.js +2 -0
  43. package/dist/esm/core/mybricks/log.js +1 -5
  44. package/dist/esm/core/utils/hooks.js +7 -2
  45. package/dist/esm/core/utils/slots.js +28 -10
  46. package/dist/esm/core/utils/useContext.js +9 -3
  47. package/dist/esm/core/utils/with.js +5 -9
  48. package/dist/esm/generate/generateTaroProjectJson.d.ts.map +1 -0
  49. package/dist/esm/generate/generateTaroProjectJson.js +22 -0
  50. package/dist/esm/generate/generateTaroTempalteJson.d.ts.map +1 -0
  51. package/dist/esm/generate/utils/appConfig.d.ts.map +1 -0
  52. package/dist/esm/generate/utils/commonDir.d.ts.map +1 -0
  53. package/dist/esm/generate/utils/fileNode.d.ts.map +1 -0
  54. package/dist/esm/generate/utils/index.d.ts.map +1 -0
  55. package/dist/esm/generate/utils/tabBarImages.d.ts.map +1 -0
  56. package/dist/esm/handleCom.js +60 -95
  57. package/dist/esm/handleDom.d.ts.map +1 -0
  58. package/dist/esm/handleExtension.d.ts.map +1 -0
  59. package/dist/esm/handleGlobal.d.ts.map +1 -0
  60. package/dist/esm/handleModule.d.ts.map +1 -0
  61. package/dist/esm/handleSlot.js +9 -4
  62. package/dist/esm/index.d.ts.map +1 -0
  63. package/dist/esm/processors/processComEvents.js +6 -3
  64. package/dist/esm/processors/processModule.d.ts.map +1 -0
  65. package/dist/esm/processors/processModule.js +35 -0
  66. package/dist/esm/processors/processScene.d.ts.map +1 -0
  67. package/dist/esm/processors/processScene.js +35 -0
  68. package/dist/esm/processors/processSceneLogic.d.ts +4 -1
  69. package/dist/esm/processors/processSceneLogic.js +90 -15
  70. package/dist/esm/taro-template.json +68 -42
  71. package/dist/esm/toCodeTaro.d.ts +14 -1
  72. package/dist/esm/toCodeTaro.d.ts.map +1 -0
  73. package/dist/esm/toCodeTaro.js +1 -0
  74. package/dist/esm/utils/builder/buildResult.d.ts +1 -0
  75. package/dist/esm/utils/builder/buildResult.d.ts.map +1 -0
  76. package/dist/esm/utils/builder/buildResult.js +8 -1
  77. package/dist/esm/utils/common/ImportManager.d.ts.map +1 -0
  78. package/dist/esm/utils/common/helper.d.ts +10 -0
  79. package/dist/esm/utils/common/helper.js +29 -0
  80. package/dist/esm/utils/common/object.d.ts.map +1 -0
  81. package/dist/esm/utils/common/string.d.ts +10 -0
  82. package/dist/esm/utils/common/string.d.ts.map +1 -0
  83. package/dist/esm/utils/common/string.js +16 -0
  84. package/dist/esm/utils/config/content/converter.d.ts.map +1 -0
  85. package/dist/esm/utils/config/content/converter.js +1 -0
  86. package/dist/esm/utils/config/content/index.d.ts.map +1 -0
  87. package/dist/esm/utils/config/content/pageConfig.d.ts.map +1 -0
  88. package/dist/esm/utils/config/content/saveBase64Image.d.ts.map +1 -0
  89. package/dist/esm/utils/config/content/tabBarConfig.d.ts +19 -4
  90. package/dist/esm/utils/config/content/tabBarConfig.d.ts.map +1 -0
  91. package/dist/esm/utils/config/content/tabBarConfig.js +28 -4
  92. package/dist/esm/utils/config/content/types.d.ts +15 -10
  93. package/dist/esm/utils/config/content/types.d.ts.map +1 -0
  94. package/dist/esm/utils/config/content/validator.d.ts.map +1 -0
  95. package/dist/esm/utils/config/handlePageConfig.d.ts +6 -0
  96. package/dist/esm/utils/config/handlePageConfig.d.ts.map +1 -0
  97. package/dist/esm/utils/config/handlePageConfig.js +17 -2
  98. package/dist/esm/utils/context/buildContext.d.ts.map +1 -0
  99. package/dist/esm/utils/context/buildFrameMap.d.ts.map +1 -0
  100. package/dist/esm/utils/context/buildGlobalData.d.ts.map +1 -0
  101. package/dist/esm/utils/context/collectJSModules.d.ts.map +1 -0
  102. package/dist/esm/utils/context/createEventQueries.d.ts.map +1 -0
  103. package/dist/esm/utils/context/createProvider.d.ts.map +1 -0
  104. package/dist/esm/utils/index.d.ts.map +1 -0
  105. package/dist/esm/utils/logic/convertNamespace.d.ts.map +1 -0
  106. package/dist/esm/utils/logic/genJSModules.d.ts.map +1 -0
  107. package/dist/esm/utils/logic/handleProcess.js +66 -40
  108. package/dist/esm/utils/logic/processChildren.d.ts.map +1 -0
  109. package/dist/esm/utils/style/color.d.ts.map +1 -0
  110. package/dist/esm/utils/style/converter.js +11 -8
  111. package/dist/esm/utils/style/getComponentClassName.d.ts.map +1 -0
  112. package/dist/esm/utils/style/pxtransform.d.ts.map +1 -0
  113. package/dist/esm/utils/style/types.d.ts.map +1 -0
  114. package/dist/esm/utils/templates/component.d.ts.map +1 -0
  115. package/dist/esm/utils/templates/index.d.ts +1 -0
  116. package/dist/esm/utils/templates/index.js +20 -10
  117. package/dist/esm/utils/templates/renderManager.js +5 -2
  118. package/dist/esm/utils/templates/scene.d.ts +2 -1
  119. package/dist/esm/utils/templates/scene.js +7 -6
  120. 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
- (_inputs$delay = inputs.delay) === null || _inputs$delay === void 0 || _inputs$delay.call(inputs, function (val) {
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
- if (timeoutId) {
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
- clearTimeout(timeoutId);
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
- var _console;
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
- if (key.startsWith('on') && typeof props[key] === 'function') {
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
- var value = context ? {
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(SlotProvider, {
58
- value: _objectSpread(_objectSpread({}, state), {}, {
59
- params: params
60
- })
61
- }, content);
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
- }, content));
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 outputs = useRef(deepProxy({}));
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
- outputs: outputs,
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", "inputValues", "inputValuesMapping"],
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
- // 注册到全局 IO 管理
96
- if (globalOutputs && globalOutputs.current) {
97
- globalOutputs.current[id] = eventProxy;
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"}
@@ -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
- var resultStyle = convertComponentStyle(props.style);
114
- var cssContent = convertStyleAryToCss((_props$style = props.style) === null || _props$style === void 0 ? void 0 : _props$style.styleAry, meta.id);
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 _props$data, _COM_PROTOCOL$meta$de;
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$data = props.data) === null || _props$data === void 0 ? void 0 : _props$data.items) && result.childrenResults) {
169
- var _props$data2;
170
- var items = (_props$data2 = props.data) === null || _props$data2 === void 0 ? void 0 : _props$data2.items;
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
- // 生成插槽内的驱动逻辑 (jsModules 驱动输入)
182
- var logicCode = buildSlotLogicCode(slotId, result.childrenResults, config);
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(slotId, children, config) {
210
- var scene = config.getCurrentScene();
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
- // 寻找连线:frame-input -> child.id
219
- var mapping = collectSlotInputMappingForCom({
220
- slotFrameId: slotId,
221
- scene: scene,
222
- targetComId: child.id
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 (!bodyCode) {
236
- return "";
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) {\n");
240
- code += bodyCode;
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$data3, _props$data4, _props$data5;
296
+ var _props$data4, _props$data5, _props$data6;
279
297
  var meta = com.meta,
280
298
  props = com.props;
281
- var transformCode = ((_props$data3 = props.data) === null || _props$data3 === void 0 || (_props$data3 = _props$data3.fns) === null || _props$data3 === void 0 ? void 0 : _props$data3.code) || ((_props$data4 = props.data) === null || _props$data4 === void 0 || (_props$data4 = _props$data4.fns) === null || _props$data4 === void 0 ? void 0 : _props$data4.transformCode) || ((_props$data5 = props.data) === null || _props$data5 === void 0 ? void 0 : _props$data5.fns);
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"}