eoss 0.1.0-alpha.32 → 0.1.0-alpha.34

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 (56) hide show
  1. package/lib/account-login.js +1 -1
  2. package/lib/audit-trajectory.js +1 -1
  3. package/lib/autocomplete.js +109 -70
  4. package/lib/cascader.js +109 -70
  5. package/lib/checkbox-group.js +1 -1
  6. package/lib/color-picker.js +109 -70
  7. package/lib/config/api.js +1 -1
  8. package/lib/data-table.js +1 -1
  9. package/lib/date-picker.js +109 -70
  10. package/lib/dropdown-menu.js +109 -70
  11. package/lib/email-login.js +1 -1
  12. package/lib/eoss.common.js +320 -147
  13. package/lib/flow.js +1 -1
  14. package/lib/flows.js +1 -1
  15. package/lib/form.js +1 -1
  16. package/lib/icon.js +1 -1
  17. package/lib/index.js +1 -1
  18. package/lib/login.js +1 -1
  19. package/lib/lowcode-view.js +94 -35
  20. package/lib/lowcode.js +98 -24
  21. package/lib/main.js +3 -2
  22. package/lib/menu.js +109 -70
  23. package/lib/phone-login.js +1 -1
  24. package/lib/popover.js +109 -70
  25. package/lib/process-config.js +1 -1
  26. package/lib/process-module.js +1 -1
  27. package/lib/process-rule.js +1 -1
  28. package/lib/qrcode-login.js +1 -1
  29. package/lib/radio-group.js +1 -1
  30. package/lib/select.js +110 -71
  31. package/lib/selector-panel.js +1 -1
  32. package/lib/selector.js +1 -1
  33. package/lib/submenu.js +109 -70
  34. package/lib/table.js +110 -71
  35. package/lib/theme-chalk/base.css +1 -1
  36. package/lib/theme-chalk/index.css +1 -1
  37. package/lib/theme-chalk/main.css +1 -1
  38. package/lib/time-picker.js +109 -70
  39. package/lib/time-select.js +109 -70
  40. package/lib/tips.js +1 -1
  41. package/lib/tooltip.js +109 -70
  42. package/lib/tree-group.js +1 -1
  43. package/lib/tree.js +1 -1
  44. package/lib/update-history.js +1 -1
  45. package/lib/upload.js +1 -1
  46. package/lib/utils/popper.js +97 -48
  47. package/package.json +1 -1
  48. package/packages/lowcode/src/lowcode.vue +43 -2
  49. package/packages/lowcode/src/render.vue +47 -12
  50. package/packages/lowcode-view/src/render.vue +66 -26
  51. package/packages/lowcode-view/src/view.vue +13 -2
  52. package/packages/main/src/minxs.js +2 -1
  53. package/packages/theme-chalk/src/base.scss +2 -1
  54. package/src/config/api.js +1 -1
  55. package/src/index.js +1 -1
  56. package/src/utils/popper.js +109 -70
@@ -3687,7 +3687,7 @@ var publishedLists = '/main2/pageComponentConfig/listPublished';
3687
3687
  // 获取自定义配置详情
3688
3688
  var pageInfo = '/main2/pageComponentConfig/info';
3689
3689
  // 获取自定义配置授权列表
3690
- var pageGroup = 'main2/pageComponentTarget/listByConfigIdAndTypeGroup';
3690
+ var pageGroup = '/main2/pageComponentTarget/listByConfigIdAndTypeGroup';
3691
3691
 
3692
3692
  // 保存自定义配置,发布也调这个接口但要加上字段status=1
3693
3693
  var pageSave = '/main2/pageComponentConfig/save';
@@ -3804,7 +3804,7 @@ var changeInTime = '/baseIssueRules/changeInTime';
3804
3804
  /* harmony import */ var _config_api__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(2);
3805
3805
  /* harmony import */ var eoss_packages_message_box__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(27);
3806
3806
  /* harmony import */ var eoss_packages_message_box__WEBPACK_IMPORTED_MODULE_8___default = /*#__PURE__*/__webpack_require__.n(eoss_packages_message_box__WEBPACK_IMPORTED_MODULE_8__);
3807
- /* harmony import */ var eoss_packages_message__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(21);
3807
+ /* harmony import */ var eoss_packages_message__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(19);
3808
3808
  /* harmony import */ var eoss_packages_message__WEBPACK_IMPORTED_MODULE_9___default = /*#__PURE__*/__webpack_require__.n(eoss_packages_message__WEBPACK_IMPORTED_MODULE_9__);
3809
3809
  var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };
3810
3810
 
@@ -6572,19 +6572,19 @@ module.exports = require("eoss/lib/checkbox-group");
6572
6572
  /* 19 */
6573
6573
  /***/ (function(module, exports) {
6574
6574
 
6575
- module.exports = require("eoss/lib/tooltip");
6575
+ module.exports = require("eoss/lib/message");
6576
6576
 
6577
6577
  /***/ }),
6578
6578
  /* 20 */
6579
6579
  /***/ (function(module, exports) {
6580
6580
 
6581
- module.exports = require("eoss/lib/select");
6581
+ module.exports = require("eoss/lib/tooltip");
6582
6582
 
6583
6583
  /***/ }),
6584
6584
  /* 21 */
6585
6585
  /***/ (function(module, exports) {
6586
6586
 
6587
- module.exports = require("eoss/lib/message");
6587
+ module.exports = require("eoss/lib/select");
6588
6588
 
6589
6589
  /***/ }),
6590
6590
  /* 22 */
@@ -9768,7 +9768,7 @@ var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_RESULT__;/**
9768
9768
  //
9769
9769
  var referenceOffsets = getOffsetRectRelativeToCustomParent(
9770
9770
  reference,
9771
- getOffsetParent(popper),
9771
+ popper,
9772
9772
  isParentFixed
9773
9773
  );
9774
9774
 
@@ -9823,17 +9823,12 @@ var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_RESULT__;/**
9823
9823
  Popper.prototype._setupEventListeners = function () {
9824
9824
  // NOTE: 1 DOM access here
9825
9825
  this.state.updateBound = this.update.bind(this);
9826
- root.addEventListener('resize', this.state.updateBound);
9826
+ // 无界等微前端场景下沙箱 window 不会触发 resize,需监听真实 window
9827
+ this.state.realWindow = getRealWindow(this._popper);
9828
+ this.state.realWindow.addEventListener('resize', this.state.updateBound);
9827
9829
  // if the boundariesElement is window we don't need to listen for the scroll event
9828
9830
  if (this._options.boundariesElement !== 'window') {
9829
9831
  var target = getScrollParent(this._reference);
9830
- // here it could be both `body` or `documentElement` thanks to Firefox, we then check both
9831
- if (
9832
- target === root.document.body ||
9833
- target === root.document.documentElement
9834
- ) {
9835
- target = root;
9836
- }
9837
9832
  target.addEventListener('scroll', this.state.updateBound);
9838
9833
  this.state.scrollTarget = target;
9839
9834
  }
@@ -9847,7 +9842,10 @@ var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_RESULT__;/**
9847
9842
  */
9848
9843
  Popper.prototype._removeEventListeners = function () {
9849
9844
  // NOTE: 1 DOM access here
9850
- root.removeEventListener('resize', this.state.updateBound);
9845
+ (this.state.realWindow || root).removeEventListener(
9846
+ 'resize',
9847
+ this.state.updateBound
9848
+ );
9851
9849
  if (
9852
9850
  this._options.boundariesElement !== 'window' &&
9853
9851
  this.state.scrollTarget
@@ -9901,47 +9899,24 @@ var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_RESULT__;/**
9901
9899
  left: 0
9902
9900
  };
9903
9901
  } else if (boundariesElement === 'viewport') {
9904
- var offsetParent = getOffsetParent(this._popper);
9905
- var scrollParent = getScrollParent(this._popper);
9906
- var offsetParentRect = getOffsetRect(offsetParent);
9907
-
9908
- // Thanks the fucking native API, `document.body.scrollTop` & `document.documentElement.scrollTop`
9909
- var getScrollTopValue = function (element) {
9910
- return element == document.body
9911
- ? Math.max(
9912
- document.documentElement.scrollTop,
9913
- document.body.scrollTop
9914
- )
9915
- : element.scrollTop;
9916
- };
9917
- var getScrollLeftValue = function (element) {
9918
- return element == document.body
9919
- ? Math.max(
9920
- document.documentElement.scrollLeft,
9921
- document.body.scrollLeft
9922
- )
9923
- : element.scrollLeft;
9924
- };
9925
-
9926
- // if the popper is fixed we don't have to substract scrolling from the boundaries
9927
- var scrollTop =
9902
+ // 将真实 window 的视口换算到 popper 所在包含块的坐标系。
9903
+ // 无界等场景下沙箱 window 的尺寸、shadowRoot 内元素的 scrollTop 均不可靠,
9904
+ // 统一从元素自身的 view 与真实包含块获取
9905
+ var realWindow = getRealWindow(this._popper);
9906
+ var containingBlockRect = getContainingBlockRect(
9907
+ this._popper,
9928
9908
  data.offsets.popper.position === 'fixed'
9929
- ? 0
9930
- : getScrollTopValue(scrollParent);
9931
- var scrollLeft =
9932
- data.offsets.popper.position === 'fixed'
9933
- ? 0
9934
- : getScrollLeftValue(scrollParent);
9909
+ );
9935
9910
 
9936
9911
  boundaries = {
9937
- top: 0 - (offsetParentRect.top - scrollTop),
9912
+ top: 0 - containingBlockRect.top,
9938
9913
  right:
9939
- root.document.documentElement.clientWidth -
9940
- (offsetParentRect.left - scrollLeft),
9914
+ realWindow.document.documentElement.clientWidth -
9915
+ containingBlockRect.left,
9941
9916
  bottom:
9942
- root.document.documentElement.clientHeight -
9943
- (offsetParentRect.top - scrollTop),
9944
- left: 0 - (offsetParentRect.left - scrollLeft)
9917
+ realWindow.document.documentElement.clientHeight -
9918
+ containingBlockRect.top,
9919
+ left: 0 - containingBlockRect.left
9945
9920
  };
9946
9921
  } else {
9947
9922
  if (getOffsetParent(this._popper) === boundariesElement) {
@@ -10409,7 +10384,7 @@ var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_RESULT__;/**
10409
10384
  element.style.visibility = 'hidden';
10410
10385
  var calcWidthToForceRepaint = element.offsetWidth;
10411
10386
  // original method
10412
- var styles = root.getComputedStyle(element);
10387
+ var styles = getRealWindow(element).getComputedStyle(element);
10413
10388
  var x = parseFloat(styles.marginTop) + parseFloat(styles.marginBottom);
10414
10389
  var y = parseFloat(styles.marginLeft) + parseFloat(styles.marginRight);
10415
10390
  var result = {
@@ -10480,9 +10455,12 @@ var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_RESULT__;/**
10480
10455
  */
10481
10456
  function getStyleComputedProperty(element, property) {
10482
10457
  // NOTE: 1 DOM access here
10483
- var css = root.getComputedStyle(element, null);
10458
+ // 无界等微前端场景下沙箱 window 与元素实际渲染所在 window 可能不一致,
10459
+ // 需使用元素自身的 view 读取计算样式,避免跨 document 读取到空值
10460
+ var css = getRealWindow(element).getComputedStyle(element, null);
10484
10461
  return css[property];
10485
10462
  }
10463
+
10486
10464
  /**
10487
10465
  * Returns the offset parent of the given element
10488
10466
  * @function
@@ -10497,6 +10475,68 @@ var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_RESULT__;/**
10497
10475
  : offsetParent;
10498
10476
  }
10499
10477
 
10478
+ /**
10479
+ * Returns the window the given element actually renders in.
10480
+ * 无界等微前端场景下组件代码运行在沙箱 window 中,而 DOM 实际渲染在
10481
+ * 主应用的 window(shadowRoot 内),滚动量、视口尺寸等必须取自元素自身的 view
10482
+ * @function
10483
+ * @ignore
10484
+ * @argument {Element} element
10485
+ * @returns {Window} window
10486
+ */
10487
+ function getRealWindow(element) {
10488
+ return (
10489
+ (element &&
10490
+ element.ownerDocument &&
10491
+ element.ownerDocument.defaultView) ||
10492
+ root
10493
+ );
10494
+ }
10495
+
10496
+ /**
10497
+ * Returns the viewport rect of the containing block actually used to position the popper.
10498
+ * 无界微前端等场景下 popper 被挂载进子应用的 shadowRoot,offsetParent 的兜底值
10499
+ * (documentElement)与浏览器真实的包含块不再重合,导致下拉框/提示框整体偏移
10500
+ * (偏移量恰为子应用容器在主应用中的位置),因此需要沿 composed tree 查找:
10501
+ * - fixed 定位:包含块为视口;
10502
+ * - absolute 定位:最近的 positioned 祖先元素(跨 shadowRoot 边界查找);
10503
+ * - 无 positioned 祖先:初始包含块,其视口原点为真实 window 滚动量的负值。
10504
+ * @function
10505
+ * @ignore
10506
+ * @argument {Element} element - popper element
10507
+ * @argument {Boolean} fixed - whether the popper is fixed positioned
10508
+ * @returns {Object} rect
10509
+ */
10510
+ function getContainingBlockRect(element, fixed) {
10511
+ if (fixed) {
10512
+ return { top: 0, left: 0, right: 0, bottom: 0 };
10513
+ }
10514
+
10515
+ var node = element.parentNode;
10516
+ while (node) {
10517
+ if (node.nodeType === 1) {
10518
+ if (getStyleComputedProperty(node, 'position') !== 'static') {
10519
+ return getBoundingClientRect(node);
10520
+ }
10521
+ } else if (node.nodeType === 11) {
10522
+ // 遇到 shadowRoot,跨边界从宿主元素继续向上查找
10523
+ node = node.host;
10524
+ continue;
10525
+ } else {
10526
+ break;
10527
+ }
10528
+ node = node.parentNode;
10529
+ }
10530
+
10531
+ var win = getRealWindow(element);
10532
+ return {
10533
+ top: -(win.pageYOffset || 0),
10534
+ left: -(win.pageXOffset || 0),
10535
+ right: 0,
10536
+ bottom: 0
10537
+ };
10538
+ }
10539
+
10500
10540
  /**
10501
10541
  * Returns the scrolling parent of the given element
10502
10542
  * @function
@@ -10506,18 +10546,20 @@ var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_RESULT__;/**
10506
10546
  */
10507
10547
  function getScrollParent(element) {
10508
10548
  var parent = element.parentNode;
10509
- if (!parent || parent.nodeType !== 1) {
10549
+ if (!parent) {
10510
10550
  return element;
10511
10551
  }
10512
10552
 
10513
- if (parent === root.document) {
10514
- // Firefox puts the scrollTOp value on `documentElement` instead of `body`, we then check which of them is
10515
- // greater than 0 and return the proper element
10516
- if (root.document.body.scrollTop || root.document.body.scrollLeft) {
10517
- return root.document.body;
10518
- } else {
10519
- return root.document.documentElement;
10520
- }
10553
+ if (parent.nodeType === 11) {
10554
+ // 无界等微前端场景 DOM 位于 shadowRoot 内,需跨边界从宿主元素继续向上查找,
10555
+ // 否则查找到 shadowRoot 即终止,滚动事件无法被监听
10556
+ return getScrollParent(parent.host);
10557
+ }
10558
+
10559
+ if (parent.nodeType !== 1) {
10560
+ // 到达 document,返回元素实际渲染所在的真实 window,
10561
+ // 保证 window 滚动时能触发位置更新
10562
+ return getRealWindow(element);
10521
10563
  }
10522
10564
 
10523
10565
  // Firefox want us to check `-x` and `-y` variations as well
@@ -10537,7 +10579,7 @@ var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_RESULT__;/**
10537
10579
  // fixes issue #65
10538
10580
  return parent;
10539
10581
  }
10540
- return getScrollParent(element.parentNode);
10582
+ return getScrollParent(parent);
10541
10583
  }
10542
10584
 
10543
10585
  /**
@@ -10555,9 +10597,12 @@ var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_RESULT__;/**
10555
10597
  if (getStyleComputedProperty(element, 'position') === 'fixed') {
10556
10598
  return true;
10557
10599
  }
10558
- return element.parentNode && element.parentNode.nodeType === 1
10559
- ? isFixed(element.parentNode)
10560
- : element;
10600
+ var parent = element.parentNode;
10601
+ if (parent && parent.nodeType === 11) {
10602
+ // 跨 shadowRoot 边界,从宿主元素继续向上判断
10603
+ parent = parent.host;
10604
+ }
10605
+ return parent && parent.nodeType === 1 ? isFixed(parent) : false;
10561
10606
  }
10562
10607
 
10563
10608
  /**
@@ -10673,15 +10718,9 @@ var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_RESULT__;/**
10673
10718
  */
10674
10719
  function getOffsetRectRelativeToCustomParent(element, parent, fixed) {
10675
10720
  var elementRect = getBoundingClientRect(element);
10676
- var parentRect = getBoundingClientRect(parent);
10677
-
10678
- if (fixed) {
10679
- var scrollParent = getScrollParent(parent);
10680
- parentRect.top += scrollParent.scrollTop;
10681
- parentRect.bottom += scrollParent.scrollTop;
10682
- parentRect.left += scrollParent.scrollLeft;
10683
- parentRect.right += scrollParent.scrollLeft;
10684
- }
10721
+ // parent 为 popper 元素:取其真实包含块的视口 rect,
10722
+ // 避免无界 shadowRoot 等场景下包含块假设错误导致的整体偏移
10723
+ var parentRect = getContainingBlockRect(parent, fixed);
10685
10724
 
10686
10725
  var rect = {
10687
10726
  top: elementRect.top - parentRect.top,
@@ -21490,7 +21529,7 @@ checkboxvue_type_template_id_cb3c173a_render._withStripped = true
21490
21529
  // CONCATENATED MODULE: ./packages/checkbox/src/checkbox.vue?vue&type=template&id=cb3c173a&
21491
21530
 
21492
21531
  // EXTERNAL MODULE: external "eoss/lib/tooltip"
21493
- var tooltip_ = __webpack_require__(19);
21532
+ var tooltip_ = __webpack_require__(20);
21494
21533
  var tooltip_default = /*#__PURE__*/__webpack_require__.n(tooltip_);
21495
21534
 
21496
21535
  // CONCATENATED MODULE: ./node_modules/babel-loader/lib!./node_modules/vue-loader/lib??vue-loader-options!./packages/checkbox/src/checkbox.vue?vue&type=script&lang=js&
@@ -23235,7 +23274,7 @@ var checkbox_group_ = __webpack_require__(18);
23235
23274
  var checkbox_group_default = /*#__PURE__*/__webpack_require__.n(checkbox_group_);
23236
23275
 
23237
23276
  // EXTERNAL MODULE: external "eoss/lib/select"
23238
- var select_ = __webpack_require__(20);
23277
+ var select_ = __webpack_require__(21);
23239
23278
  var select_default = /*#__PURE__*/__webpack_require__.n(select_);
23240
23279
 
23241
23280
  // EXTERNAL MODULE: external "eoss/lib/cascader"
@@ -64196,7 +64235,7 @@ start_flowvue_type_template_id_19dc68c7_render._withStripped = true
64196
64235
  // CONCATENATED MODULE: ./packages/flows/src/components/start-flow.vue?vue&type=template&id=19dc68c7&
64197
64236
 
64198
64237
  // EXTERNAL MODULE: external "eoss/lib/message"
64199
- var message_ = __webpack_require__(21);
64238
+ var message_ = __webpack_require__(19);
64200
64239
  var message_default = /*#__PURE__*/__webpack_require__.n(message_);
64201
64240
 
64202
64241
  // CONCATENATED MODULE: ./node_modules/babel-loader/lib!./node_modules/vue-loader/lib??vue-loader-options!./packages/flows/src/components/start-flow.vue?vue&type=script&lang=js&
@@ -80712,8 +80751,8 @@ login.install = function (Vue) {
80712
80751
  };
80713
80752
 
80714
80753
  /* harmony default export */ var packages_login = (login);
80715
- // CONCATENATED MODULE: ./node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/vue-loader/lib??vue-loader-options!./packages/lowcode/src/lowcode.vue?vue&type=template&id=ac68474e&
80716
- var lowcodevue_type_template_id_ac68474e_render = function () {
80754
+ // CONCATENATED MODULE: ./node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/vue-loader/lib??vue-loader-options!./packages/lowcode/src/lowcode.vue?vue&type=template&id=2c9b5e4a&
80755
+ var lowcodevue_type_template_id_2c9b5e4a_render = function () {
80717
80756
  var _vm = this
80718
80757
  var _h = _vm.$createElement
80719
80758
  var _c = _vm._self._c || _h
@@ -81197,11 +81236,11 @@ var lowcodevue_type_template_id_ac68474e_render = function () {
81197
81236
  1
81198
81237
  )
81199
81238
  }
81200
- var lowcodevue_type_template_id_ac68474e_staticRenderFns = []
81201
- lowcodevue_type_template_id_ac68474e_render._withStripped = true
81239
+ var lowcodevue_type_template_id_2c9b5e4a_staticRenderFns = []
81240
+ lowcodevue_type_template_id_2c9b5e4a_render._withStripped = true
81202
81241
 
81203
81242
 
81204
- // CONCATENATED MODULE: ./packages/lowcode/src/lowcode.vue?vue&type=template&id=ac68474e&
81243
+ // CONCATENATED MODULE: ./packages/lowcode/src/lowcode.vue?vue&type=template&id=2c9b5e4a&
81205
81244
 
81206
81245
  // CONCATENATED MODULE: ./src/utils/bus.js
81207
81246
  /**
@@ -83077,8 +83116,8 @@ canvasvue_type_template_id_3f236c3d_render._withStripped = true
83077
83116
 
83078
83117
  // CONCATENATED MODULE: ./packages/lowcode/src/canvas.vue?vue&type=template&id=3f236c3d&
83079
83118
 
83080
- // CONCATENATED MODULE: ./node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/vue-loader/lib??vue-loader-options!./packages/lowcode/src/render.vue?vue&type=template&id=12ff94c0&
83081
- var rendervue_type_template_id_12ff94c0_render = function () {
83119
+ // CONCATENATED MODULE: ./node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/vue-loader/lib??vue-loader-options!./packages/lowcode/src/render.vue?vue&type=template&id=274525cb&
83120
+ var rendervue_type_template_id_274525cb_render = function () {
83082
83121
  var _vm = this
83083
83122
  var _h = _vm.$createElement
83084
83123
  var _c = _vm._self._c || _h
@@ -83129,6 +83168,7 @@ var rendervue_type_template_id_12ff94c0_render = function () {
83129
83168
  key: _vm.instanceKey,
83130
83169
  tag: "component",
83131
83170
  style: _vm.innerLayoutStyle,
83171
+ attrs: { height: _vm.newHeight },
83132
83172
  },
83133
83173
  "component",
83134
83174
  _vm.cleanProps,
@@ -83381,11 +83421,11 @@ var rendervue_type_template_id_12ff94c0_render = function () {
83381
83421
  2
83382
83422
  )
83383
83423
  }
83384
- var rendervue_type_template_id_12ff94c0_staticRenderFns = []
83385
- rendervue_type_template_id_12ff94c0_render._withStripped = true
83424
+ var rendervue_type_template_id_274525cb_staticRenderFns = []
83425
+ rendervue_type_template_id_274525cb_render._withStripped = true
83386
83426
 
83387
83427
 
83388
- // CONCATENATED MODULE: ./packages/lowcode/src/render.vue?vue&type=template&id=12ff94c0&
83428
+ // CONCATENATED MODULE: ./packages/lowcode/src/render.vue?vue&type=template&id=274525cb&
83389
83429
 
83390
83430
  // CONCATENATED MODULE: ./node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/vue-loader/lib??vue-loader-options!./packages/lowcode/src/iframe.vue?vue&type=template&id=ceca7cf4&scoped=true&
83391
83431
  var iframevue_type_template_id_ceca7cf4_scoped_true_render = function () {
@@ -83641,6 +83681,7 @@ var rendervue_type_script_lang_js_extends = Object.assign || function (target) {
83641
83681
  //
83642
83682
  //
83643
83683
  //
83684
+ //
83644
83685
 
83645
83686
 
83646
83687
 
@@ -83687,11 +83728,9 @@ var LAYOUT_PROPS = ['display', 'gap', 'grid-gap', 'grid-template-columns', 'flex
83687
83728
  initialMouseY: 0,
83688
83729
  initialWidth: 0,
83689
83730
  initialHeight: 0,
83690
- resizeObserver: null,
83691
83731
  isResizing: false,
83692
83732
  direction: '',
83693
- width: 0,
83694
- height: 0,
83733
+ newHeight: 0,
83695
83734
  isDragOver: false
83696
83735
  };
83697
83736
  },
@@ -83708,6 +83747,42 @@ var LAYOUT_PROPS = ['display', 'gap', 'grid-gap', 'grid-template-columns', 'flex
83708
83747
  }
83709
83748
  },
83710
83749
  computed: {
83750
+ /**
83751
+ * 手柄旁 span 展示的宽度
83752
+ * - masonry:style.width 由 layoutWaterfall 按 span×列宽 算好写入
83753
+ * - flex:style.width 补默认值 / 拖拽写入
83754
+ * - grid:canvas 会删除 style.width,宽度由 grid-column: span N 决定,
83755
+ * 按 span×列宽+(span-1)×gap 计算(公式与 util.js layoutWaterfall 一致);
83756
+ * 读取 style.span 建立响应式依赖,span 变化时立即重算,无需等浏览器重排
83757
+ */
83758
+ width: function width() {
83759
+ var style = this.newNode && this.newNode.style || {};
83760
+ if (style.width) {
83761
+ var w = parseInt(style.width);
83762
+ if (!isNaN(w)) return w;
83763
+ }
83764
+ // grid 模式:按 span 计算列宽
83765
+ var pageStyle = this.page && this.page.style || {};
83766
+ var columns = parseInt(pageStyle.columns) || 1;
83767
+ var gap = parseInt(pageStyle.gap) || 0;
83768
+ var span = Math.max(1, Math.min(parseInt(style.span) || 1, columns));
83769
+ var parent = this.$el && this.$el.parentElement;
83770
+ if (!parent) return 0;
83771
+ var cs = window.getComputedStyle(parent);
83772
+ var containerWidth = parent.clientWidth - (parseFloat(cs.paddingLeft) || 0) - (parseFloat(cs.paddingRight) || 0);
83773
+ if (containerWidth <= 0) return 0;
83774
+ var columnWidth = (containerWidth - gap * (columns - 1)) / columns;
83775
+ return Math.round(columnWidth * span + gap * (span - 1));
83776
+ },
83777
+
83778
+ /**
83779
+ * 手柄旁 span 展示的高度:style.height 由编辑器保证存在,直接派生
83780
+ */
83781
+ height: function height() {
83782
+ var h = this.newNode && this.newNode.style && this.newNode.style.height;
83783
+ return parseInt(h) || 0;
83784
+ },
83785
+
83711
83786
  /**
83712
83787
  * 解析 text 指令中的表达式
83713
83788
  * 支持 {{variable}} 形式,从 page.data 中获取值
@@ -83813,6 +83888,7 @@ var LAYOUT_PROPS = ['display', 'gap', 'grid-gap', 'grid-template-columns', 'flex
83813
83888
  if (src[key]) style[key] = src[key];
83814
83889
  });
83815
83890
  }
83891
+ this.newHeight = parseInt(style.height) || 0;
83816
83892
  return style;
83817
83893
  },
83818
83894
 
@@ -83926,15 +84002,14 @@ var LAYOUT_PROPS = ['display', 'gap', 'grid-gap', 'grid-template-columns', 'flex
83926
84002
  this.direction = direction;
83927
84003
  // 只响应鼠标左键或触摸
83928
84004
  if (event.pointerType === 'mouse' && event.button !== 0) return;
84005
+ // 防御性兜底:若历史数据中 style.width/height 缺失,从 DOM 补一次
84006
+ // (正常流程下 canvas.vue 会保证 style.height 存在,这里仅防异常数据)
83929
84007
  if (!node.style || !node.style.width || !node.style.height) {
83930
- // 从组件DOM元素获取实际宽高
83931
84008
  var componentElement = document.querySelector('[data-id="' + node.id + '"]');
83932
84009
  if (componentElement) {
83933
- // 获取计算后的样式
83934
84010
  var computedStyle = window.getComputedStyle(componentElement);
83935
84011
  var width = parseInt(computedStyle.width) || componentElement.offsetWidth;
83936
84012
  var height = parseInt(computedStyle.height) || componentElement.offsetHeight;
83937
- // 只补全缺失的 width/height,保留 span 等其它属性
83938
84013
  if (!node.style) this.$set(this.newNode, 'style', {});
83939
84014
  if (!this.newNode.style.width) {
83940
84015
  this.$set(this.newNode.style, 'width', width + 'px');
@@ -83955,9 +84030,10 @@ var LAYOUT_PROPS = ['display', 'gap', 'grid-gap', 'grid-template-columns', 'flex
83955
84030
  this.resizingComponent = rendervue_type_script_lang_js_extends({}, this.newNode, { direction: direction });
83956
84031
  this.initialMouseX = event.clientX;
83957
84032
  this.initialMouseY = event.clientY;
83958
- // 记录初始宽高
83959
- this.initialWidth = parseInt(this.newNode.style.width) || 200;
83960
- this.initialHeight = parseInt(this.newNode.style.height) || 100;
84033
+ // 记录初始宽高:直接取 computed width/height,已覆盖 grid(按 span 计算)/masonry/flex 各模式,
84034
+ // 与展示值同源,避免 grid 模式下 style.width 缺失导致拖拽基准为 0
84035
+ this.initialWidth = this.width || 0;
84036
+ this.initialHeight = this.height || 0;
83961
84037
  this.$emit('change', this.newNode, true, this.initialWidth);
83962
84038
 
83963
84039
  document.addEventListener('pointermove', this.handleResizeMove);
@@ -84017,10 +84093,8 @@ var LAYOUT_PROPS = ['display', 'gap', 'grid-gap', 'grid-template-columns', 'flex
84017
84093
 
84018
84094
  // 限制最大宽度不超过画布宽度
84019
84095
  newWidth = Math.min(canvasWidth, newWidth);
84020
- this.width = parseInt(newWidth);
84021
- this.height = parseInt(newHeight);
84022
84096
  if (this.newNode) {
84023
- // 使用Vue.set确保样式变化能触发响应式更新
84097
+ // 写入 style 后,computed width/height 会自动跟随更新,无需再手动赋值
84024
84098
  this.$set(this.newNode.style, 'width', newWidth + 'px');
84025
84099
  this.$set(this.newNode.style, 'height', newHeight + 'px');
84026
84100
  }
@@ -84146,8 +84220,8 @@ var LAYOUT_PROPS = ['display', 'gap', 'grid-gap', 'grid-template-columns', 'flex
84146
84220
 
84147
84221
  var render_component = Object(componentNormalizer["a" /* default */])(
84148
84222
  src_rendervue_type_script_lang_js_,
84149
- rendervue_type_template_id_12ff94c0_render,
84150
- rendervue_type_template_id_12ff94c0_staticRenderFns,
84223
+ rendervue_type_template_id_274525cb_render,
84224
+ rendervue_type_template_id_274525cb_staticRenderFns,
84151
84225
  false,
84152
84226
  null,
84153
84227
  null,
@@ -93239,10 +93313,49 @@ function lowcodevue_type_script_lang_js_objectWithoutProperties(obj, keys) { var
93239
93313
 
93240
93314
  /**
93241
93315
  * 复制 URL 到剪贴板
93316
+ * 说明:wujie 微前端 / dialog 挂载到子应用 document 时,navigator.clipboard
93317
+ * 会因 "Document is not focused" 抛出 NotAllowedError,这里采用
93318
+ * 异步 Clipboard API + execCommand('copy') 同步兜底 的双通道策略。
93242
93319
  */
93243
93320
  copyUrl: function copyUrl() {
93244
- navigator.clipboard.writeText(this.publishForm.url);
93245
- message_default.a.success('复制成功');
93321
+ var text = this.publishForm.url;
93322
+ if (!text) {
93323
+ message_default.a.warning('没有可复制的内容');
93324
+ return;
93325
+ }
93326
+ var fallbackCopy = function fallbackCopy() {
93327
+ var textarea = document.createElement('textarea');
93328
+ textarea.value = text;
93329
+ textarea.setAttribute('readonly', '');
93330
+ textarea.style.position = 'fixed';
93331
+ textarea.style.top = '-1000px';
93332
+ textarea.style.left = '-1000px';
93333
+ textarea.style.opacity = '0';
93334
+ document.body.appendChild(textarea);
93335
+ textarea.select();
93336
+ textarea.setSelectionRange(0, textarea.value.length);
93337
+ var ok = false;
93338
+ try {
93339
+ ok = document.execCommand('copy');
93340
+ } catch (e) {
93341
+ ok = false;
93342
+ }
93343
+ document.body.removeChild(textarea);
93344
+ if (ok) {
93345
+ message_default.a.success('复制成功');
93346
+ } else {
93347
+ message_default.a.error('复制失败,请手动选择地址复制');
93348
+ }
93349
+ };
93350
+ if (navigator.clipboard && typeof navigator.clipboard.writeText === 'function') {
93351
+ navigator.clipboard.writeText(text).then(function () {
93352
+ return message_default.a.success('复制成功');
93353
+ }, function () {
93354
+ return fallbackCopy();
93355
+ });
93356
+ } else {
93357
+ fallbackCopy();
93358
+ }
93246
93359
  },
93247
93360
 
93248
93361
  /**
@@ -93352,8 +93465,8 @@ function lowcodevue_type_script_lang_js_objectWithoutProperties(obj, keys) { var
93352
93465
 
93353
93466
  var lowcode_component = Object(componentNormalizer["a" /* default */])(
93354
93467
  src_lowcodevue_type_script_lang_js_,
93355
- lowcodevue_type_template_id_ac68474e_render,
93356
- lowcodevue_type_template_id_ac68474e_staticRenderFns,
93468
+ lowcodevue_type_template_id_2c9b5e4a_render,
93469
+ lowcodevue_type_template_id_2c9b5e4a_staticRenderFns,
93357
93470
  false,
93358
93471
  null,
93359
93472
  null,
@@ -93370,8 +93483,8 @@ lowcode.install = function (Vue) {
93370
93483
  };
93371
93484
 
93372
93485
  /* harmony default export */ var packages_lowcode = (lowcode);
93373
- // CONCATENATED MODULE: ./node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/vue-loader/lib??vue-loader-options!./packages/lowcode-view/src/view.vue?vue&type=template&id=a1097a78&
93374
- var viewvue_type_template_id_a1097a78_render = function () {
93486
+ // CONCATENATED MODULE: ./node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/vue-loader/lib??vue-loader-options!./packages/lowcode-view/src/view.vue?vue&type=template&id=4955d640&
93487
+ var viewvue_type_template_id_4955d640_render = function () {
93375
93488
  var _vm = this
93376
93489
  var _h = _vm.$createElement
93377
93490
  var _c = _vm._self._c || _h
@@ -93572,14 +93685,14 @@ var viewvue_type_template_id_a1097a78_render = function () {
93572
93685
  1
93573
93686
  )
93574
93687
  }
93575
- var viewvue_type_template_id_a1097a78_staticRenderFns = []
93576
- viewvue_type_template_id_a1097a78_render._withStripped = true
93688
+ var viewvue_type_template_id_4955d640_staticRenderFns = []
93689
+ viewvue_type_template_id_4955d640_render._withStripped = true
93577
93690
 
93578
93691
 
93579
- // CONCATENATED MODULE: ./packages/lowcode-view/src/view.vue?vue&type=template&id=a1097a78&
93692
+ // CONCATENATED MODULE: ./packages/lowcode-view/src/view.vue?vue&type=template&id=4955d640&
93580
93693
 
93581
- // CONCATENATED MODULE: ./node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/vue-loader/lib??vue-loader-options!./packages/lowcode-view/src/render.vue?vue&type=template&id=30079e52&
93582
- var rendervue_type_template_id_30079e52_render = function () {
93694
+ // CONCATENATED MODULE: ./node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/vue-loader/lib??vue-loader-options!./packages/lowcode-view/src/render.vue?vue&type=template&id=45a220b2&
93695
+ var rendervue_type_template_id_45a220b2_render = function () {
93583
93696
  var _vm = this
93584
93697
  var _h = _vm.$createElement
93585
93698
  var _c = _vm._self._c || _h
@@ -93615,6 +93728,7 @@ var rendervue_type_template_id_30079e52_render = function () {
93615
93728
  key: _vm.newNode.id,
93616
93729
  tag: "component",
93617
93730
  staticStyle: { width: "100%", height: "100%" },
93731
+ attrs: { height: _vm.newHeight },
93618
93732
  },
93619
93733
  "component",
93620
93734
  _vm.cleanProps,
@@ -93784,11 +93898,11 @@ var rendervue_type_template_id_30079e52_render = function () {
93784
93898
  2
93785
93899
  )
93786
93900
  }
93787
- var rendervue_type_template_id_30079e52_staticRenderFns = []
93788
- rendervue_type_template_id_30079e52_render._withStripped = true
93901
+ var rendervue_type_template_id_45a220b2_staticRenderFns = []
93902
+ rendervue_type_template_id_45a220b2_render._withStripped = true
93789
93903
 
93790
93904
 
93791
- // CONCATENATED MODULE: ./packages/lowcode-view/src/render.vue?vue&type=template&id=30079e52&
93905
+ // CONCATENATED MODULE: ./packages/lowcode-view/src/render.vue?vue&type=template&id=45a220b2&
93792
93906
 
93793
93907
  // CONCATENATED MODULE: ./node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/vue-loader/lib??vue-loader-options!./packages/lowcode-view/src/Iframe.vue?vue&type=template&id=3a1f5bf7&
93794
93908
  var Iframevue_type_template_id_3a1f5bf7_render = function () {
@@ -94005,6 +94119,7 @@ var src_rendervue_type_script_lang_js_extends = Object.assign || function (targe
94005
94119
  //
94006
94120
  //
94007
94121
  //
94122
+ //
94008
94123
 
94009
94124
 
94010
94125
 
@@ -94046,11 +94161,8 @@ var src_rendervue_type_script_lang_js_extends = Object.assign || function (targe
94046
94161
  initialMouseY: 0,
94047
94162
  initialWidth: 0,
94048
94163
  initialHeight: 0,
94049
- resizeObserver: null,
94050
94164
  isResizing: false,
94051
- direction: '',
94052
- width: 0,
94053
- height: 0
94165
+ direction: ''
94054
94166
  };
94055
94167
  },
94056
94168
 
@@ -94066,6 +94178,50 @@ var src_rendervue_type_script_lang_js_extends = Object.assign || function (targe
94066
94178
  }
94067
94179
  },
94068
94180
  computed: {
94181
+ /**
94182
+ * 手柄旁 span 展示的宽度
94183
+ * - masonry:style.width 由 layoutWaterfall 按 span×列宽 算好写入
94184
+ * - flex:style.width 补默认值 / 拖拽写入
94185
+ * - grid:style.width 被删除,宽度由 grid-column: span N 决定,
94186
+ * 按 span×列宽+(span-1)×gap 计算(公式与 util.js layoutWaterfall 一致);
94187
+ * 读取 style.span 建立响应式依赖,span 变化时立即重算
94188
+ */
94189
+ width: function width() {
94190
+ var style = this.newNode && this.newNode.style || {};
94191
+ if (style.width) {
94192
+ var w = parseInt(style.width);
94193
+ if (!isNaN(w)) return w;
94194
+ }
94195
+ // grid 模式:按 span 计算列宽
94196
+ var pageStyle = this.page && this.page.style || {};
94197
+ var columns = parseInt(pageStyle.columns) || 1;
94198
+ var gap = parseInt(pageStyle.gap) || 0;
94199
+ var span = Math.max(1, Math.min(parseInt(style.span) || 1, columns));
94200
+ var parent = this.$el && this.$el.parentElement;
94201
+ if (!parent) return 0;
94202
+ var cs = window.getComputedStyle(parent);
94203
+ var containerWidth = parent.clientWidth - (parseFloat(cs.paddingLeft) || 0) - (parseFloat(cs.paddingRight) || 0);
94204
+ if (containerWidth <= 0) return 0;
94205
+ var columnWidth = (containerWidth - gap * (columns - 1)) / columns;
94206
+ return Math.round(columnWidth * span + gap * (span - 1));
94207
+ },
94208
+
94209
+ /**
94210
+ * 手柄旁 span 展示的高度:style.height 由编辑器保证存在,直接派生
94211
+ */
94212
+ height: function height() {
94213
+ var h = this.newNode && this.newNode.style && this.newNode.style.height;
94214
+ return parseInt(h) || 0;
94215
+ },
94216
+
94217
+ /**
94218
+ * 传递给内层业务组件的 height(:height):与展示用 height 同源,取自 style.height,
94219
+ * 保证业务组件(如图表/表格)拿到的是节点真实像素高度,且随 style.height 响应式变化
94220
+ */
94221
+ newHeight: function newHeight() {
94222
+ return this.height;
94223
+ },
94224
+
94069
94225
  /**
94070
94226
  * 解析 text 指令中的表达式
94071
94227
  * 支持 {{variable}} 形式,从 page.data 中获取值
@@ -94122,18 +94278,17 @@ var src_rendervue_type_script_lang_js_extends = Object.assign || function (targe
94122
94278
  this.direction = direction;
94123
94279
  // 只响应鼠标左键或触摸
94124
94280
  if (event.pointerType === 'mouse' && event.button !== 0) return;
94125
- if (!node.style || !node.style.width || !node.style.height) {
94126
- // 从组件 DOM 元素获取实际宽高
94281
+ // 防御性兜底:历史数据中 style.height 缺失时从 DOM 补一次
94282
+ // (grid 模式 style.width 本就被删除,不强行补,交给 computed 按 span 计算)
94283
+ if (!node.style || !node.style.height) {
94127
94284
  var componentElement = document.querySelector('[data-id="' + node.id + '"]');
94128
94285
  if (componentElement) {
94129
- // 获取计算后的样式
94130
94286
  var computedStyle = window.getComputedStyle(componentElement);
94131
- var width = parseInt(computedStyle.width) || componentElement.offsetWidth;
94132
- var height = parseInt(computedStyle.height) || componentElement.offsetHeight;
94133
- // 只设置 width 和 height,不替换整个 style 对象(保留 span 等其他属性)
94134
94287
  if (!node.style) this.$set(this.newNode, 'style', {});
94135
- this.$set(this.newNode.style, 'width', width + 'px');
94136
- this.$set(this.newNode.style, 'height', height + 'px');
94288
+ if (!this.newNode.style.height) {
94289
+ var height = parseInt(computedStyle.height) || componentElement.offsetHeight;
94290
+ this.$set(this.newNode.style, 'height', height + 'px');
94291
+ }
94137
94292
  }
94138
94293
  }
94139
94294
 
@@ -94141,9 +94296,9 @@ var src_rendervue_type_script_lang_js_extends = Object.assign || function (targe
94141
94296
  this.resizingComponent = src_rendervue_type_script_lang_js_extends({}, this.newNode, { direction: direction });
94142
94297
  this.initialMouseX = event.clientX;
94143
94298
  this.initialMouseY = event.clientY;
94144
- // 记录初始宽高
94145
- this.initialWidth = parseInt(this.newNode.style.width) || 200;
94146
- this.initialHeight = parseInt(this.newNode.style.height) || 100;
94299
+ // 记录初始宽高:直接取 computed width/height,已覆盖 grid(按 span 计算)/masonry/flex 各模式,与展示值同源
94300
+ this.initialWidth = this.width || 0;
94301
+ this.initialHeight = this.height || 0;
94147
94302
  this.$emit('change', this.newNode, true);
94148
94303
 
94149
94304
  document.addEventListener('pointermove', this.handleResizeMove);
@@ -94163,8 +94318,11 @@ var src_rendervue_type_script_lang_js_extends = Object.assign || function (targe
94163
94318
  var deltaX = pointerEvent.clientX - this.initialMouseX;
94164
94319
  var deltaY = pointerEvent.clientY - this.initialMouseY;
94165
94320
  var direction = this.resizingComponent.direction;
94166
- var canvasElement = document.querySelector('.es-lowcode__canvas--content');
94167
- var canvasWidth = canvasElement && canvasElement.offsetWidth || 0;
94321
+ // 容器宽度:view 版内容容器是 .es-lowcode-view__waterfall(即当前元素的父容器),
94322
+ // 不能沿用编辑器 canvas.vue 的 .es-lowcode__canvas--content 类名(view 版不存在,
94323
+ // 会查到 null 使 canvasWidth=0,进而把宽度钳成 0 导致元素塌成竖线)
94324
+ var parent = this.$el && this.$el.parentElement;
94325
+ var canvasWidth = parent ? parent.clientWidth : 0;
94168
94326
 
94169
94327
  // 使用初始宽高进行计算
94170
94328
  var newWidth = this.initialWidth;
@@ -94201,12 +94359,11 @@ var src_rendervue_type_script_lang_js_extends = Object.assign || function (targe
94201
94359
  break;
94202
94360
  }
94203
94361
 
94204
- // 限制最大宽度不超过画布宽度
94205
- newWidth = Math.min(canvasWidth, newWidth);
94206
- this.width = parseInt(newWidth);
94207
- this.height = parseInt(newHeight);
94362
+ // 限制最大宽度不超过容器宽度;容器宽度不可用时不钳制,避免误塌成 0
94363
+ newWidth = canvasWidth > 0 ? Math.min(canvasWidth, newWidth) : newWidth;
94208
94364
  if (this.newNode) {
94209
- // grid 模式下宽度由列宽/span 决定,拖动过程中不更新 width 样式,避免视觉跳动
94365
+ // grid 模式下宽度由列宽/span 决定,拖动过程中不更新 width 样式,避免视觉跳动;
94366
+ // 展示用的 width/height 为 computed,写入 style 后会自动跟随更新
94210
94367
  if (this.displayMode !== 'grid') {
94211
94368
  this.$set(this.newNode.style, 'width', newWidth + 'px');
94212
94369
  }
@@ -94263,8 +94420,8 @@ var src_rendervue_type_script_lang_js_extends = Object.assign || function (targe
94263
94420
 
94264
94421
  var src_render_component = Object(componentNormalizer["a" /* default */])(
94265
94422
  packages_lowcode_view_src_rendervue_type_script_lang_js_,
94266
- rendervue_type_template_id_30079e52_render,
94267
- rendervue_type_template_id_30079e52_staticRenderFns,
94423
+ rendervue_type_template_id_45a220b2_render,
94424
+ rendervue_type_template_id_45a220b2_staticRenderFns,
94268
94425
  false,
94269
94426
  null,
94270
94427
  null,
@@ -94944,7 +95101,7 @@ var viewvue_type_script_lang_js_DROP_SPACE = 200;
94944
95101
  }
94945
95102
  }).then(function () {
94946
95103
  var _ref = viewvue_type_script_lang_js_asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee(res) {
94947
- var _ref2, pageInfo, targetList, content, page, parsed, userConfig, modules, _parsed, children, parseds;
95104
+ var _ref2, pageInfo, targetList, content, page, parsed, userConfig, modules, _parsed, children, parseds, childrens;
94948
95105
 
94949
95106
  return regeneratorRuntime.wrap(function _callee$(_context) {
94950
95107
  while (1) {
@@ -94998,8 +95155,17 @@ var viewvue_type_script_lang_js_DROP_SPACE = 200;
94998
95155
  if (userConfig.rCode === 0 && userConfig.results && userConfig.results[pageInfo.code] && userConfig.results[pageInfo.code].userConfig) {
94999
95156
  modules = JSON.parse(userConfig.results[pageInfo.code].userConfig);
95000
95157
  _parsed = parsed, children = _parsed.children, parseds = viewvue_type_script_lang_js_objectWithoutProperties(_parsed, ['children']);
95158
+ // 以模块(modules)为准,按 id 合并已保存的子节点配置(child),
95159
+ // 使渲染节点同时具备模块信息与编辑器保存的布局/样式等配置
95160
+
95161
+ childrens = modules.map(function (item) {
95162
+ var child = (children || []).find(function (c) {
95163
+ return c.id === item.id;
95164
+ }) || {};
95165
+ return viewvue_type_script_lang_js_extends({}, child, item);
95166
+ });
95001
95167
 
95002
- _this.pageData = viewvue_type_script_lang_js_extends({}, page, parseds, { children: modules });
95168
+ _this.pageData = viewvue_type_script_lang_js_extends({}, page, parseds, { children: childrens });
95003
95169
  _this.pagesMap = children || [];
95004
95170
  } else {
95005
95171
  _this.pageData = viewvue_type_script_lang_js_extends({}, page, parsed);
@@ -95112,13 +95278,19 @@ var viewvue_type_script_lang_js_DROP_SPACE = 200;
95112
95278
  return;
95113
95279
  }
95114
95280
  var loadingInstance = Object(utils_util["K" /* loading */])('保存中...');
95281
+ var data = this.pages.map(function (item) {
95282
+ return {
95283
+ id: item.id,
95284
+ style: item.style
95285
+ };
95286
+ });
95115
95287
  Object(utils_ajax["a" /* ajax */])({
95116
95288
  url: api["Zb" /* saveOrUpdate */],
95117
95289
  method: 'post',
95118
95290
  format: false,
95119
95291
  data: {
95120
95292
  type: this.pageData.code,
95121
- userConfig: JSON.stringify(this.pages)
95293
+ userConfig: JSON.stringify(data)
95122
95294
  }
95123
95295
  }).then(function (res) {
95124
95296
  if (res.rCode == 0 || res.status == 'success') {
@@ -95507,8 +95679,8 @@ var viewvue_type_script_lang_js_DROP_SPACE = 200;
95507
95679
 
95508
95680
  var view_component = Object(componentNormalizer["a" /* default */])(
95509
95681
  src_viewvue_type_script_lang_js_,
95510
- viewvue_type_template_id_a1097a78_render,
95511
- viewvue_type_template_id_a1097a78_staticRenderFns,
95682
+ viewvue_type_template_id_4955d640_render,
95683
+ viewvue_type_template_id_4955d640_staticRenderFns,
95512
95684
  false,
95513
95685
  null,
95514
95686
  null,
@@ -104917,7 +105089,7 @@ var appid = Object(utils_util["s" /* getParams */])('applicationId');
104917
105089
  return t.id === item.id;
104918
105090
  });
104919
105091
  });
104920
- var customMenus = _this8.customMenus.split(',');
105092
+ var customMenus = typeof _this8.customMenus === 'string' ? _this8.customMenus.split(',') : _this8.customMenus;
104921
105093
  var filteredApps = allApps.filter(function (item) {
104922
105094
  return customMenus.includes(item.id);
104923
105095
  });
@@ -104973,6 +105145,7 @@ var appid = Object(utils_util["s" /* getParams */])('applicationId');
104973
105145
  case 'themeColor':
104974
105146
  var themeColor = unescape(res[i]).toLowerCase();
104975
105147
  if (Object(utils_util["R" /* startWith */])(themeColor, '#')) {
105148
+ Object(utils_util["W" /* updateTheme */])(themeColor);
104976
105149
  this.themeColor = themeColor;
104977
105150
  }
104978
105151
  break;
@@ -155045,7 +155218,7 @@ if (typeof window !== 'undefined' && window.Vue) {
155045
155218
  }
155046
155219
 
155047
155220
  /* harmony default export */ var src_0 = __webpack_exports__["default"] = ({
155048
- version: '0.1.0-alpha.32',
155221
+ version: '0.1.0-alpha.34',
155049
155222
  install: src_install,
155050
155223
  CollapseTransition: collapse_transition,
155051
155224
  Loading: packages_loading,