@riil-frontend/component-topology 6.0.0-alpha.41 → 6.0.0-alpha.43

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 (108) hide show
  1. package/build/index.css +1 -1
  2. package/build/index.js +20 -20
  3. package/demo/CHANGELOG/CHANGELOG.md +5 -0
  4. package/es/components/VerticalIconTab/VerticalIconTab.js +11 -1
  5. package/es/components/VerticalIconTab/VerticalIconTab.module.scss +1 -0
  6. package/es/core/components/DisplaySettingDrawer/hooks/useDisplaySetting.js +8 -3
  7. package/es/core/components/TopoView/topoView.js +3 -3
  8. package/es/core/editor/components/Sidebar/panes.js +6 -1
  9. package/es/core/editor/components/Toolbar/widgets/AddResourceButton.js +1 -1
  10. package/es/core/editor/components/Toolbar/widgets/BoxBackgroundButton/BoxBackgroundButton.js +1 -1
  11. package/es/core/editor/components/Toolbar/widgets/EdgeColorButton/EdgeColorButton.js +1 -1
  12. package/es/core/editor/components/Toolbar/widgets/EdgeTypeButton/index.js +1 -1
  13. package/es/core/editor/components/Toolbar/widgets/FontColorButton.js +38 -12
  14. package/es/core/editor/components/Toolbar/widgets/FontColorButton.module.scss +4 -5
  15. package/es/core/editor/components/Toolbar/widgets/FontStyleButton.js +1 -1
  16. package/es/core/editor/components/Toolbar/widgets/Layout/index.js +2 -2
  17. package/es/core/editor/components/Toolbar/widgets/NodeAlignWidget.js +8 -1
  18. package/es/core/editor/components/Toolbar/widgets/NodeImageButton/NodeImageButton.js +1 -1
  19. package/es/core/editor/components/Toolbar/widgets/NodeSizeButton/NodeSizeButton.js +1 -1
  20. package/es/core/editor/components/Toolbar/widgets/components/textStyleSetting/ElementTextStyleSetting/ElementTextStyleSetting.js +1 -1
  21. package/es/core/editor/components/Toolbar/widgets/components/textStyleSetting/textStyleSettingRouter.js +1 -1
  22. package/es/core/editor/components/settings/CloseablePanel.module.scss +12 -0
  23. package/es/core/editor/components/settings/PropertyView.js +21 -18
  24. package/es/core/editor/components/settings/Settings.js +39 -77
  25. package/es/core/editor/components/settings/Settings.module.scss +2 -10
  26. package/es/core/editor/components/settings/core/PropertyViewManager.js +61 -0
  27. package/es/core/editor/components/settings/core/getPropertyViewType.js +34 -0
  28. package/es/core/editor/components/settings/core/updateElementProperty.js +21 -0
  29. package/es/core/editor/components/settings/propertyViews/box/BoxPropertyView.js +3 -8
  30. package/es/core/editor/components/settings/propertyViews/box/BoxPropertyViewV1.js +58 -0
  31. package/es/core/editor/components/settings/propertyViews/edge/CommonEdgePropertyView.js +5 -2
  32. package/es/core/editor/components/settings/propertyViews/edge/EdgeGroupPropertyView.js +7 -8
  33. package/es/core/editor/components/settings/propertyViews/edge/EdgePropertyView.js +9 -23
  34. package/es/core/editor/components/settings/propertyViews/edge/addEdgeProps.js +10 -0
  35. package/es/core/editor/components/settings/propertyViews/edge/edgeGroup/EdgeGroupSetting.js +1 -6
  36. package/es/core/editor/components/settings/propertyViews/group/GroupPropertyView.js +13 -21
  37. package/es/core/editor/components/settings/propertyViews/group/GroupPropertyView.module.scss +8 -1
  38. package/es/core/editor/components/settings/propertyViews/group/GroupPropertyViewV1.js +28 -0
  39. package/es/core/editor/components/settings/propertyViews/group/SettingTab/GroupBasicSetting.js +74 -0
  40. package/es/core/editor/components/settings/propertyViews/group/SettingTab/GroupExpandSetting.js +9 -7
  41. package/es/core/editor/components/settings/propertyViews/index.js +4 -2
  42. package/es/core/editor/components/settings/propertyViews/node/NodePropertyView.js +8 -32
  43. package/es/core/editor/components/settings/propertyViews/node/NodePropertyViewV1.js +53 -0
  44. package/es/core/editor/components/settings/propertyViews/node/Setting/BasicSetting.js +49 -0
  45. package/es/core/editor/components/settings/propertyViews/text/TextPropertyView.js +4 -19
  46. package/es/core/models/HistoryManager.js +11 -14
  47. package/es/core/models/{SelectionManager.js → SelectionModel.js} +27 -18
  48. package/es/core/models/TopoApp.js +3 -3
  49. package/es/networkTopo/components/editor/propertyViews/edge/EdgePropertyView.js +39 -6
  50. package/es/networkTopo/components/editor/propertyViews/edge/LinkPropertyView/LinkPropertyView.js +10 -16
  51. package/es/networkTopo/components/editor/propertyViews/edge/LinkPropertyView/LinkPropertyViewV1.js +37 -0
  52. package/es/networkTopo/components/editor/propertyViews/edge/link/LinkInfoPreview.module.scss +1 -1
  53. package/es/networkTopo/models/LinkDynamicStyleExecutor.js +2 -2
  54. package/es/style.js +1 -1
  55. package/lib/components/VerticalIconTab/VerticalIconTab.js +14 -1
  56. package/lib/components/VerticalIconTab/VerticalIconTab.module.scss +1 -0
  57. package/lib/core/components/DisplaySettingDrawer/hooks/useDisplaySetting.js +8 -3
  58. package/lib/core/components/TopoView/topoView.js +3 -3
  59. package/lib/core/editor/components/Sidebar/panes.js +6 -1
  60. package/lib/core/editor/components/Toolbar/widgets/AddResourceButton.js +1 -1
  61. package/lib/core/editor/components/Toolbar/widgets/BoxBackgroundButton/BoxBackgroundButton.js +1 -1
  62. package/lib/core/editor/components/Toolbar/widgets/EdgeColorButton/EdgeColorButton.js +1 -1
  63. package/lib/core/editor/components/Toolbar/widgets/EdgeTypeButton/index.js +1 -1
  64. package/lib/core/editor/components/Toolbar/widgets/FontColorButton.js +38 -12
  65. package/lib/core/editor/components/Toolbar/widgets/FontColorButton.module.scss +4 -5
  66. package/lib/core/editor/components/Toolbar/widgets/FontStyleButton.js +1 -1
  67. package/lib/core/editor/components/Toolbar/widgets/Layout/index.js +2 -2
  68. package/lib/core/editor/components/Toolbar/widgets/NodeAlignWidget.js +8 -1
  69. package/lib/core/editor/components/Toolbar/widgets/NodeImageButton/NodeImageButton.js +1 -1
  70. package/lib/core/editor/components/Toolbar/widgets/NodeSizeButton/NodeSizeButton.js +1 -1
  71. package/lib/core/editor/components/Toolbar/widgets/components/textStyleSetting/ElementTextStyleSetting/ElementTextStyleSetting.js +1 -1
  72. package/lib/core/editor/components/Toolbar/widgets/components/textStyleSetting/textStyleSettingRouter.js +1 -1
  73. package/lib/core/editor/components/settings/CloseablePanel.module.scss +12 -0
  74. package/lib/core/editor/components/settings/PropertyView.js +26 -19
  75. package/lib/core/editor/components/settings/Settings.js +44 -79
  76. package/lib/core/editor/components/settings/Settings.module.scss +2 -10
  77. package/lib/core/editor/components/settings/core/PropertyViewManager.js +70 -0
  78. package/lib/core/editor/components/settings/core/getPropertyViewType.js +40 -0
  79. package/lib/core/editor/components/settings/core/updateElementProperty.js +27 -0
  80. package/lib/core/editor/components/settings/propertyViews/box/BoxPropertyView.js +3 -8
  81. package/lib/core/editor/components/settings/propertyViews/box/BoxPropertyViewV1.js +76 -0
  82. package/lib/core/editor/components/settings/propertyViews/edge/CommonEdgePropertyView.js +8 -2
  83. package/lib/core/editor/components/settings/propertyViews/edge/EdgeGroupPropertyView.js +9 -12
  84. package/lib/core/editor/components/settings/propertyViews/edge/EdgePropertyView.js +7 -23
  85. package/lib/core/editor/components/settings/propertyViews/edge/addEdgeProps.js +19 -0
  86. package/lib/core/editor/components/settings/propertyViews/edge/edgeGroup/EdgeGroupSetting.js +1 -6
  87. package/lib/core/editor/components/settings/propertyViews/group/GroupPropertyView.js +14 -25
  88. package/lib/core/editor/components/settings/propertyViews/group/GroupPropertyView.module.scss +8 -1
  89. package/lib/core/editor/components/settings/propertyViews/group/GroupPropertyViewV1.js +43 -0
  90. package/lib/core/editor/components/settings/propertyViews/group/SettingTab/GroupBasicSetting.js +97 -0
  91. package/lib/core/editor/components/settings/propertyViews/group/SettingTab/GroupExpandSetting.js +8 -6
  92. package/lib/core/editor/components/settings/propertyViews/index.js +5 -2
  93. package/lib/core/editor/components/settings/propertyViews/node/NodePropertyView.js +8 -35
  94. package/lib/core/editor/components/settings/propertyViews/node/NodePropertyViewV1.js +68 -0
  95. package/lib/core/editor/components/settings/propertyViews/node/Setting/BasicSetting.js +64 -0
  96. package/lib/core/editor/components/settings/propertyViews/text/TextPropertyView.js +4 -19
  97. package/lib/core/models/HistoryManager.js +11 -14
  98. package/lib/core/models/{SelectionManager.js → SelectionModel.js} +27 -18
  99. package/lib/core/models/TopoApp.js +3 -3
  100. package/lib/networkTopo/components/editor/propertyViews/edge/EdgePropertyView.js +45 -7
  101. package/lib/networkTopo/components/editor/propertyViews/edge/LinkPropertyView/LinkPropertyView.js +10 -18
  102. package/lib/networkTopo/components/editor/propertyViews/edge/LinkPropertyView/LinkPropertyViewV1.js +50 -0
  103. package/lib/networkTopo/components/editor/propertyViews/edge/link/LinkInfoPreview.module.scss +1 -1
  104. package/lib/networkTopo/models/LinkDynamicStyleExecutor.js +2 -2
  105. package/lib/style.js +1 -1
  106. package/package.json +2 -2
  107. package/es/core/editor/components/settings/OpenPropertyPanelListener.js +0 -33
  108. package/lib/core/editor/components/settings/OpenPropertyPanelListener.js +0 -43
@@ -27,30 +27,42 @@ function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj &&
27
27
  function FontColorDropdown(props) {
28
28
  var onChange = props.onChange,
29
29
  topo = props.topo,
30
- color = props.color,
31
- background = props.background,
32
30
  opacity = props.opacity;
33
31
 
34
32
  var _useState = (0, _react.useState)(false),
35
33
  disabled = _useState[0],
36
34
  setDisabled = _useState[1];
37
35
 
38
- var backOpacityChange = function backOpacityChange(value) {
36
+ var onPickerFocus = function onPickerFocus() {
37
+ topo.historyManager.beginTransaction();
38
+ };
39
+
40
+ var onPickerBlur = function onPickerBlur() {
41
+ topo.historyManager.endTransaction();
42
+ };
43
+
44
+ var backOpacityChange = function backOpacityChange(value, type) {
45
+ if (type === 'select') onPickerFocus();
39
46
  onChange({
40
47
  opacity: value / 100
41
48
  });
49
+ if (type === 'select') onPickerBlur();
42
50
  };
43
51
 
44
- var colorChang = function colorChang(value) {
52
+ var colorChang = function colorChang(value, type) {
53
+ if (type === 'select') onPickerFocus();
45
54
  onChange({
46
55
  color: value
47
56
  });
57
+ if (type === 'select') onPickerBlur();
48
58
  };
49
59
 
50
60
  var backgroundChang = function backgroundChang(value) {
61
+ onPickerFocus();
51
62
  onChange({
52
63
  background: value
53
64
  });
65
+ onPickerBlur();
54
66
  };
55
67
 
56
68
  var icon = disabled ? /*#__PURE__*/_react["default"].createElement("img", {
@@ -67,9 +79,16 @@ function FontColorDropdown(props) {
67
79
  className: _FontColorButtonModule["default"].content
68
80
  }, /*#__PURE__*/_react["default"].createElement("div", {
69
81
  className: _FontColorButtonModule["default"].fontColor
70
- }, /*#__PURE__*/_react["default"].createElement("span", null, "\u5B57\u4F53\u989C\u8272"), /*#__PURE__*/_react["default"].createElement(_ColorPanel["default"], {
71
- onChange: colorChang
72
- })), /*#__PURE__*/_react["default"].createElement("div", {
82
+ }, /*#__PURE__*/_react["default"].createElement("span", null, "\u5B57\u4F53\u989C\u8272"), /*#__PURE__*/_react["default"].createElement("div", {
83
+ style: {
84
+ marginTop: '10px',
85
+ marginLeft: '-4px'
86
+ }
87
+ }, /*#__PURE__*/_react["default"].createElement(_ColorPanel["default"], {
88
+ onChange: colorChang,
89
+ onPickerFocus: onPickerFocus,
90
+ onPickerBlur: onPickerBlur
91
+ }))), /*#__PURE__*/_react["default"].createElement("div", {
73
92
  className: _FontColorButtonModule["default"].backgroundColor
74
93
  }, /*#__PURE__*/_react["default"].createElement("span", null, "\u80CC\u666F\u586B\u5145"), /*#__PURE__*/_react["default"].createElement("div", {
75
94
  className: _FontColorButtonModule["default"].backOpacity
@@ -81,11 +100,19 @@ function FontColorDropdown(props) {
81
100
  unit: "%",
82
101
  list: [0, 10, 20, 30, 40, 50, 60, 70, 80, 90, 100],
83
102
  onChange: backOpacityChange,
84
- defaultValue: opacity
85
- })), /*#__PURE__*/_react["default"].createElement(_ColorPanel["default"], {
103
+ defaultValue: opacity * 100
104
+ })), /*#__PURE__*/_react["default"].createElement("div", {
105
+ style: {
106
+ marginTop: '10px',
107
+ marginLeft: '-4px',
108
+ marginBottom: '3px'
109
+ }
110
+ }, /*#__PURE__*/_react["default"].createElement(_ColorPanel["default"], {
86
111
  showClear: true,
87
- onChange: backgroundChang
88
- }))));
112
+ onChange: backgroundChang,
113
+ onPickerFocus: onPickerFocus,
114
+ onPickerBlur: onPickerBlur
115
+ })))));
89
116
  }
90
117
 
91
118
  function FontColorButton(props) {
@@ -102,7 +129,6 @@ function FontColorButton(props) {
102
129
  background: style.background,
103
130
  opacity: style.opacity,
104
131
  onChange: function onChange(val) {
105
- topo.historyManager.beginTransaction();
106
132
  setStyle(val);
107
133
  topo.historyManager.endTransaction();
108
134
  },
@@ -1,20 +1,20 @@
1
1
  .content {
2
- height: 296px;
2
+ margin: 4px 0px 0px 6px;
3
3
  .fontColor{
4
4
  width: 100%;
5
- height: 143px;//159px
5
+ margin-bottom: 16px;
6
6
  .colorPanelBox{
7
7
  padding: 9px;
8
8
  padding-top: 8px;
9
9
  }
10
10
  &>span{
11
11
  font-size: 12px;
12
- color: black;
13
12
  font-family: PingFangSC-Regular, PingFang SC;
14
13
  font-weight: 400;
15
14
  color: #4D6277;
16
15
  line-height: 17px;
17
16
  }
17
+
18
18
  }
19
19
  .backgroundColor{
20
20
  width: 100%;
@@ -32,9 +32,8 @@
32
32
  line-height: 17px;
33
33
  }
34
34
  .backOpacity{
35
- margin-top: 2px;
35
+ margin-top: 5px;
36
36
  margin-bottom: 5px;
37
- margin-left: 11px;
38
37
  line-height: 8px;
39
38
  display: flex;
40
39
  flex-direction: row;
@@ -74,7 +74,7 @@ function FontStyleButton(props) {
74
74
  setValue = _useState2[1]; // 选中的元素
75
75
 
76
76
 
77
- var selection = topo.selectionManager.useHtSelection();
77
+ var selection = topo.selectionModel.useHtSelection();
78
78
  (0, _react.useEffect)(function () {
79
79
  var isAllText = !selection.filter(function (ele) {
80
80
  return !(0, _htElementUtils.isText)(ele);
@@ -34,7 +34,7 @@ function Layout(props) {
34
34
  setLayout = _useState[1]; // 选中的元素
35
35
 
36
36
 
37
- var selectionElements = topo.selectionManager.useHtSelection();
37
+ var selectionElements = topo.selectionModel.useHtSelection();
38
38
 
39
39
  var _topo$store$useModelS = topo.store.useModelState('selection'),
40
40
  selection = _topo$store$useModelS.selection;
@@ -102,7 +102,7 @@ function LayoutWidget(props) {
102
102
  // type为partition且selection.length>=0时可以点击布局, selection[0].className != 'ht.Node'
103
103
  // type为auto且selection.length==0时可以点击布局
104
104
 
105
- var selectionElements = topo.selectionManager.useHtSelection();
105
+ var selectionElements = topo.selectionModel.useHtSelection();
106
106
  var topoShowType = topoState.type; // 获取ID以及拓扑类型 // 拓扑类型:auto自由布局,layers分层,partition分区
107
107
 
108
108
  var disabled = (0, _react.useMemo)(function () {
@@ -53,7 +53,7 @@ function NodeAlignWidget(props) {
53
53
  graphLoaded = _topo$store$useModelS.graphLoaded; // 选中的元素
54
54
 
55
55
 
56
- var selection = topo.selectionManager.useHtSelection();
56
+ var selection = topo.selectionModel.useHtSelection();
57
57
 
58
58
  var setSpace = function setSpace(type, num) {
59
59
  topo.historyManager.beginTransaction(); // eslint-disable-next-line no-shadow
@@ -87,6 +87,13 @@ function NodeAlignWidget(props) {
87
87
  setLeftInputVal();
88
88
  setRightInputVal();
89
89
  setDistributionDisabled(nodes.length <= 2);
90
+
91
+ if (nodes.length === 2) {
92
+ var h = topo.view.topoClient.htTopoClient.getElementsSpace(nodes, 'h')[0];
93
+ var v = topo.view.topoClient.htTopoClient.getElementsSpace(nodes, 'v')[0];
94
+ setLeftInputVal(h * 1 > 0 ? h : 0);
95
+ setRightInputVal(v * 1 > 0 ? v : 0);
96
+ }
90
97
  } // eslint-disable-next-line react-hooks/exhaustive-deps
91
98
 
92
99
  }, [graphLoaded, selection]);
@@ -42,7 +42,7 @@ function NodeImageButton(props) {
42
42
  setImgVal = _useState2[1]; // 选中的元素
43
43
 
44
44
 
45
- var selection = topo.selectionManager.useHtSelection();
45
+ var selection = topo.selectionModel.useHtSelection();
46
46
  (0, _react.useEffect)(function () {
47
47
  var nodes = selection.filter(function (ele) {
48
48
  return (0, _htElementUtils.isGroup)(ele) || (0, _htElementUtils.isNode)(ele);
@@ -46,7 +46,7 @@ function NodeSizeButton(props) {
46
46
  setSize = _useState2[1]; // 选中的元素
47
47
 
48
48
 
49
- var selection = topo.selectionManager.useSelection();
49
+ var selection = topo.selectionModel.useSelection();
50
50
  var settingRuntimeState = (0, _useSettingRuntimeState["default"])();
51
51
  (0, _react.useEffect)(function () {
52
52
  var elements = selection.map(function (item) {
@@ -29,7 +29,7 @@ function ElementTextStyleSetting(props) {
29
29
  graphLoaded = _topo$store$useModelS.graphLoaded; // 选中的元素
30
30
 
31
31
 
32
- var selection = topo.selectionManager.useSelection();
32
+ var selection = topo.selectionModel.useSelection();
33
33
  var htSelection = (0, _react.useMemo)(function () {
34
34
  if (!selection.length) {
35
35
  return [];
@@ -17,7 +17,7 @@ function textStyleSettingRouter(Component, options) {
17
17
  var names = (options === null || options === void 0 ? void 0 : options.names) || [];
18
18
  return function TextStyleSettingButton(props) {
19
19
  var topo = props.topo;
20
- var selection = topo.selectionManager.useHtSelection();
20
+ var selection = topo.selectionModel.useHtSelection();
21
21
  var Widget = !selection.length ? _GlobalTagStyleSetting["default"] : _ElementTextStyleSetting["default"];
22
22
  return /*#__PURE__*/_react["default"].createElement(Widget, (0, _extends2["default"])({
23
23
  Component: Component
@@ -1,9 +1,21 @@
1
+ @import '~@alifd/next/variables.scss';
2
+
3
+
1
4
  .panel {
2
5
  height: 100%;
3
6
  display: flex;
4
7
  flex-direction: column;
5
8
  background: #FFFFFF;
9
+
10
+
11
+ :global {
12
+ .#{$css-prefix}drawer-header {
13
+ padding-left: 16px;
14
+ padding-right: 16px;
15
+ }
16
+ }
6
17
  }
7
18
  .body {
8
19
  flex: 1;
20
+ overflow: auto;
9
21
  }
@@ -3,21 +3,25 @@
3
3
  var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
4
 
5
5
  exports.__esModule = true;
6
- exports["default"] = PropertyView;
6
+ exports["default"] = PropertyPanel;
7
7
 
8
8
  var _classnames = _interopRequireDefault(require("classnames"));
9
9
 
10
- var _react = _interopRequireDefault(require("react"));
10
+ var _react = _interopRequireWildcard(require("react"));
11
11
 
12
12
  var _CloseablePanel = _interopRequireDefault(require("./CloseablePanel"));
13
13
 
14
- var _OpenPropertyPanelListener = _interopRequireDefault(require("./OpenPropertyPanelListener"));
14
+ var _PropertyViewManager = _interopRequireDefault(require("./core/PropertyViewManager"));
15
15
 
16
16
  var _Settings = _interopRequireDefault(require("./Settings"));
17
17
 
18
18
  var _SettingsModule = _interopRequireDefault(require("./Settings.module.scss"));
19
19
 
20
- function PropertyView(props) {
20
+ function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
21
+
22
+ function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { "default": obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj["default"] = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
23
+
24
+ function PropertyPanel(props) {
21
25
  var _classNames;
22
26
 
23
27
  var topo = props.topo,
@@ -35,37 +39,40 @@ function PropertyView(props) {
35
39
  topoEditDispatchers = _topo$store$useModel[1];
36
40
 
37
41
  var propertyPanelVisible = topoEditState.propertyPanelVisible;
42
+ var propertyViewManager = (0, _react.useMemo)(function () {
43
+ return new _PropertyViewManager["default"](topo);
44
+ }, []);
45
+ (0, _react.useEffect)(function () {
46
+ if (graphLoaded) {
47
+ propertyViewManager.init();
48
+ }
38
49
 
39
- if (!graphLoaded) {
40
- return null;
41
- }
50
+ return function () {
51
+ propertyViewManager.destroy();
52
+ };
53
+ }, [graphLoaded, propertyViewManager]);
42
54
 
43
55
  var renderContent = function renderContent() {
44
56
  if (!propertyPanelVisible) {
45
57
  return null;
46
58
  }
47
59
 
48
- return /*#__PURE__*/_react["default"].createElement(_OpenPropertyPanelListener["default"], {
49
- topo: topo
50
- }, /*#__PURE__*/_react["default"].createElement(_Settings["default"], {
60
+ return /*#__PURE__*/_react["default"].createElement(_Settings["default"], {
51
61
  topo: topo,
62
+ selection: selection,
63
+ propertyViewManager: propertyViewManager,
52
64
  topoShowType: topoShowType,
53
65
  topoEditApi: topo.topoEdit,
54
- selection: selection,
55
66
  editorProps: editorProps
56
- }));
67
+ });
57
68
  };
58
69
 
59
70
  return /*#__PURE__*/_react["default"].createElement("div", {
60
- className: (0, _classnames["default"])(_SettingsModule["default"].settingsPanel, (_classNames = {}, _classNames[_SettingsModule["default"].settingsPanelHide] = !propertyPanelVisible, _classNames))
71
+ className: (0, _classnames["default"])(_SettingsModule["default"].propertyPanel, (_classNames = {}, _classNames[_SettingsModule["default"].hide] = !propertyPanelVisible, _classNames))
61
72
  }, /*#__PURE__*/_react["default"].createElement(_CloseablePanel["default"], {
62
73
  title: "\u6570\u636E\u5C5E\u6027",
63
74
  onClose: function onClose() {
64
- topoEditDispatchers.update({
65
- propertyPanelVisible: false
66
- });
75
+ propertyViewManager.close();
67
76
  }
68
- }, /*#__PURE__*/_react["default"].createElement(_OpenPropertyPanelListener["default"], {
69
- topo: topo
70
- }, renderContent())));
77
+ }, renderContent()));
71
78
  }
@@ -3,109 +3,74 @@
3
3
  var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
4
 
5
5
  exports.__esModule = true;
6
- exports["default"] = Settings;
6
+ exports["default"] = PropertyViewContainer;
7
7
 
8
8
  var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
9
9
 
10
- var _react = _interopRequireDefault(require("react"));
11
-
12
- var _htElementDataUtil = require("../../../../utils/htElementDataUtil");
13
-
14
- var _propertyViews = _interopRequireDefault(require("./propertyViews"));
10
+ var _react = _interopRequireWildcard(require("react"));
15
11
 
16
12
  var _useSettingRuntimeState = _interopRequireDefault(require("./useSettingRuntimeState"));
17
13
 
18
- var _SettingsModule = _interopRequireDefault(require("./Settings.module.scss"));
14
+ var _updateElementProperty = _interopRequireDefault(require("./core/updateElementProperty"));
19
15
 
20
- function getElementType(selection) {
21
- var selectionElement = selection[0];
22
- var selectionSize = selection.length;
23
- var elementType;
16
+ function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
24
17
 
25
- if (!selectionSize) {
26
- // 未选
27
- elementType = "view";
28
- } else if (selectionSize >= 2) {
29
- // 多选
30
- elementType = "multiple";
31
- } else if ((0, _htElementDataUtil.isGroup)(selectionElement)) {
32
- elementType = "group";
33
- } else if (selectionElement.attrObject.topLeftText) {
34
- // TODO 临时方式
35
- elementType = "box";
36
- } else if ((0, _htElementDataUtil.isNode)(selectionElement)) {
37
- elementType = "node";
38
- } else if ((0, _htElementDataUtil.isEdge)(selectionElement)) {
39
- elementType = "edge";
40
- } else if ((0, _htElementDataUtil.isLayer)(selectionElement)) {
41
- // 分层
42
- elementType = "layer";
43
- } else if ((0, _htElementDataUtil.isText)(selectionElement)) {
44
- elementType = "text";
45
- }
18
+ function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { "default": obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj["default"] = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
46
19
 
47
- return elementType;
20
+ function buildElementValues(selection) {
21
+ var values = (0, _extends2["default"])({}, selection[0]);
22
+ var attrTypes = ['attrObject', 'position', 'styleMap'];
23
+ attrTypes.forEach(function (type) {
24
+ Object.keys(values[type] || {}).forEach(function (key) {
25
+ values[type + "." + key] = values[type][key];
26
+ });
27
+ });
28
+ return values;
48
29
  }
49
30
 
50
- function Settings(props) {
31
+ function PropertyViewContainer(props) {
51
32
  var topo = props.topo,
52
33
  topoShowType = props.topoShowType,
53
34
  topoEditApi = props.topoEditApi,
54
35
  selection = props.selection,
55
- editorProps = props.editorProps;
56
- var settingRuntimeState = (0, _useSettingRuntimeState["default"])(); // TODO 待优化
57
-
58
- var updateElementProperty = function updateElementProperty(name, value) {
59
- // const element = topo.getDataModel().getDataById(selection[0].id);
60
- var element = topo.getSelectionModel().getFirstData(); // console.info("updateElementProperty",topo.getSelectionModel().getSelection(), { selection, element, name, value });
61
-
62
- if (name.startsWith("attrObject.")) {
63
- element.setAttr(name.replace("attrObject.", ""), value);
64
- } else if (name.startsWith("position.")) {
65
- element.setPosition(name.replace("position.", ""), value);
66
- } else if (name.startsWith("styleMap.")) {
67
- element.setStyle(name.replace("styleMap.", ""), value);
68
- } else if (name === "name") {
69
- element.setName(value);
70
- } else if (name === "width") {
71
- element.setWidth(value);
72
- } else if (name === "height") {
73
- element.setHeight(value);
74
- } else if (name === "image") {
75
- element.setImage(value);
76
- } else if (name === "layout") {
77
- // console.info("element----layout", element, value);
78
- var layouType = value.id === "toward" ? "" + value.id + value.options.subId : value.id;
79
- topo.getHtTopo().layoutInContainer(layouType);
80
- }
81
- };
82
-
83
- var elementType = getElementType(selection);
84
- var PropertyView = _propertyViews["default"][elementType];
36
+ editorProps = props.editorProps,
37
+ propertyViewManager = props.propertyViewManager;
38
+ var settingRuntimeState = (0, _useSettingRuntimeState["default"])();
39
+ var selectionElements = (0, _react.useMemo)(function () {
40
+ return topo.selectionModel.getSelection();
41
+ }, [selection]);
42
+ var PropertyView = propertyViewManager.getPropertyView(selection); // 不建议使用,直接使用ht元素对象。待优化
43
+
44
+ var singleElementValues = (0, _react.useMemo)(function () {
45
+ return selection.length === 1 ? buildElementValues(selection) : undefined;
46
+ }, [selection]);
85
47
 
86
48
  if (!PropertyView) {
49
+ propertyViewManager.close();
87
50
  return null;
88
51
  }
89
52
 
90
- var attrTypes = ["attrObject", "position", "styleMap"];
91
- var values = (0, _extends2["default"])({}, selection[0]);
92
- attrTypes.forEach(function (type) {
93
- Object.keys(values[type] || {}).forEach(function (key) {
94
- values[type + "." + key] = values[type][key];
95
- });
96
- });
97
- return /*#__PURE__*/_react["default"].createElement("div", {
98
- className: _SettingsModule["default"].content
99
- }, /*#__PURE__*/_react["default"].createElement(PropertyView, {
100
- type: elementType,
53
+ var elementProps = {};
54
+
55
+ if (selection.length === 1) {
56
+ elementProps = {
57
+ selectionElement: selectionElements[0],
58
+ values: singleElementValues
59
+ };
60
+ }
61
+
62
+ return /*#__PURE__*/_react["default"].createElement(PropertyView, (0, _extends2["default"])({
101
63
  topo: topo,
64
+ selection: selection,
65
+ selectionElements: selectionElements,
102
66
  topoShowType: topoShowType,
103
67
  topoEdit: topoEditApi,
104
68
  topoEditApi: topoEditApi,
105
- selection: selection,
106
- values: values,
107
- onChange: updateElementProperty,
108
- editorProps: editorProps,
69
+ editorProps: editorProps
70
+ }, elementProps, {
71
+ onChange: function onChange(name, value) {
72
+ (0, _updateElementProperty["default"])(topo, name, value);
73
+ },
109
74
  settingRuntimeState: settingRuntimeState
110
75
  }));
111
76
  }
@@ -1,6 +1,6 @@
1
1
  @import '~@alifd/next/variables.scss';
2
2
 
3
- .settingsPanel {
3
+ .propertyPanel {
4
4
  width: 280px;
5
5
  height: 100%;
6
6
  position: absolute;
@@ -14,7 +14,7 @@
14
14
  overflow: hidden;
15
15
  transition: width .1s linear;
16
16
 
17
- &.settingsPanelHide {
17
+ &.hide {
18
18
  width: 0;
19
19
  border-left: none;
20
20
  }
@@ -74,11 +74,3 @@
74
74
  align-items: center;
75
75
  }
76
76
  }
77
-
78
- .content {
79
- flex: 1;
80
- background: #FFFFFF;
81
- overflow: auto;
82
- // padding-bottom: 12px;
83
-
84
- }
@@ -0,0 +1,70 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+
5
+ exports.__esModule = true;
6
+ exports["default"] = void 0;
7
+
8
+ var _propertyViews = _interopRequireDefault(require("../propertyViews"));
9
+
10
+ var _getPropertyViewType = _interopRequireDefault(require("./getPropertyViewType"));
11
+
12
+ var PropertyViewManager = /*#__PURE__*/function () {
13
+ function PropertyViewManager(topo) {
14
+ this.viewMap = _propertyViews["default"];
15
+ this.topo = void 0;
16
+ this.getPropertyViewType = _getPropertyViewType["default"];
17
+ this.topo = topo;
18
+ this.open = this.open.bind(this);
19
+ }
20
+
21
+ var _proto = PropertyViewManager.prototype;
22
+
23
+ _proto.updateViews = function updateViews(viewMap) {
24
+ Object.assign(this.viewMap, viewMap);
25
+ };
26
+
27
+ _proto.init = function init() {
28
+ var notifier = this.topo.getHtTopo().getNotifier();
29
+ notifier.on('topo_element_double_click', this.open);
30
+ };
31
+
32
+ _proto.destroy = function destroy() {
33
+ var notifier = this.topo.getHtTopo().getNotifier();
34
+ notifier.off('topo_element_double_click', this.open);
35
+ };
36
+
37
+ _proto.open = function open() {
38
+ var view = this.getPropertyView();
39
+
40
+ if (!view) {
41
+ return;
42
+ }
43
+
44
+ var topoEditDispatchers = this.topo.store.getModelDispatchers('topoEdit');
45
+ topoEditDispatchers.update({
46
+ propertyPanelVisible: true
47
+ });
48
+ };
49
+
50
+ _proto.close = function close() {
51
+ var topoEditDispatchers = this.topo.store.getModelDispatchers('topoEdit');
52
+ topoEditDispatchers.update({
53
+ propertyPanelVisible: false
54
+ });
55
+ };
56
+
57
+ _proto.getPropertyView = function
58
+ /* selection */
59
+ getPropertyView() {
60
+ var selection = this.topo.selectionModel.getSelection();
61
+ var elementType = (0, _getPropertyViewType["default"])(selection);
62
+ var PropertyView = this.viewMap[elementType];
63
+ return PropertyView;
64
+ };
65
+
66
+ return PropertyViewManager;
67
+ }();
68
+
69
+ var _default = PropertyViewManager;
70
+ exports["default"] = _default;
@@ -0,0 +1,40 @@
1
+ "use strict";
2
+
3
+ exports.__esModule = true;
4
+ exports["default"] = void 0;
5
+
6
+ var _htElementUtils = require("../../../../../utils/htElementUtils");
7
+
8
+ function getPropertyViewType(selection) {
9
+ var selectionElement = selection[0];
10
+ var selectionSize = selection.length;
11
+ var viewType;
12
+
13
+ if (!selectionSize) {
14
+ // 未选
15
+ viewType = 'view';
16
+ } else if (selectionSize >= 2) {
17
+ // 多选
18
+ viewType = 'multiple';
19
+ } else if ((0, _htElementUtils.isText)(selectionElement)) {
20
+ viewType = 'text';
21
+ } else if ((0, _htElementUtils.isGroup)(selectionElement)) {
22
+ viewType = 'group';
23
+ } else if (selectionElement.a('type') === 'box') {
24
+ viewType = 'box';
25
+ } else if ((0, _htElementUtils.isNode)(selectionElement)) {
26
+ viewType = 'node';
27
+ } else if ((0, _htElementUtils.isEdgeGroupAgent)(selectionElement)) {
28
+ viewType = 'edgeGroup';
29
+ } else if ((0, _htElementUtils.isEdge)(selectionElement)) {
30
+ viewType = 'edge';
31
+ } else if ((0, _htElementUtils.isLayer)(selectionElement)) {
32
+ // 分层
33
+ viewType = 'layer';
34
+ }
35
+
36
+ return viewType;
37
+ }
38
+
39
+ var _default = getPropertyViewType;
40
+ exports["default"] = _default;
@@ -0,0 +1,27 @@
1
+ "use strict";
2
+
3
+ exports.__esModule = true;
4
+ exports["default"] = updateElementProperty;
5
+
6
+ function updateElementProperty(topo, name, value) {
7
+ // const element = topo.getDataModel().getDataById(selection[0].id);
8
+ var element = topo.getSelectionModel().getFirstData(); // console.info("updateElementProperty",topo.getSelectionModel().getSelection(), { selection, element, name, value });
9
+
10
+ if (name.startsWith('attrObject.')) {
11
+ element.setAttr(name.replace('attrObject.', ''), value);
12
+ } else if (name.startsWith('position.')) {
13
+ element.setPosition(name.replace('position.', ''), value);
14
+ } else if (name.startsWith('styleMap.')) {
15
+ element.setStyle(name.replace('styleMap.', ''), value);
16
+ } else if (name === 'name') {
17
+ element.setName(value);
18
+ } else if (name === 'width') {
19
+ element.setWidth(value);
20
+ } else if (name === 'height') {
21
+ element.setHeight(value);
22
+ } else if (name === 'image') {
23
+ element.setImage(value);
24
+ }
25
+ }
26
+
27
+ ;