@salutejs/plasma-new-hope 0.330.0-canary.2085.16327084883.0 → 0.330.0-canary.2091.16388455946.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 (58) hide show
  1. package/cjs/components/Tree/Tree.css +6 -6
  2. package/cjs/components/Tree/Tree.js +22 -6
  3. package/cjs/components/Tree/Tree.js.map +1 -1
  4. package/cjs/components/Tree/Tree.styles.js +1 -1
  5. package/cjs/components/Tree/Tree.styles.js.map +1 -1
  6. package/cjs/components/Tree/{Tree.styles_2v5lpb.css → Tree.styles_1d34sho.css} +1 -1
  7. package/cjs/components/Tree/Tree.tokens.js +6 -2
  8. package/cjs/components/Tree/Tree.tokens.js.map +1 -1
  9. package/cjs/components/Tree/utils/traverseTree.js +64 -0
  10. package/cjs/components/Tree/utils/traverseTree.js.map +1 -0
  11. package/cjs/index.css +6 -6
  12. package/emotion/cjs/components/Tree/Tree.js +66 -6
  13. package/emotion/cjs/components/Tree/Tree.styles.js +13 -13
  14. package/emotion/cjs/components/Tree/Tree.tokens.js +6 -2
  15. package/emotion/cjs/components/Tree/utils/index.js +12 -3
  16. package/emotion/cjs/components/Tree/utils/traverseTree.js +131 -0
  17. package/emotion/cjs/examples/components/Tree/Tree.config.js +5 -5
  18. package/emotion/es/components/Tree/Tree.js +68 -8
  19. package/emotion/es/components/Tree/Tree.styles.js +13 -13
  20. package/emotion/es/components/Tree/Tree.tokens.js +6 -2
  21. package/emotion/es/components/Tree/utils/index.js +1 -0
  22. package/emotion/es/components/Tree/utils/traverseTree.js +116 -0
  23. package/emotion/es/examples/components/Tree/Tree.config.js +5 -5
  24. package/es/components/Tree/Tree.css +6 -6
  25. package/es/components/Tree/Tree.js +24 -8
  26. package/es/components/Tree/Tree.js.map +1 -1
  27. package/es/components/Tree/Tree.styles.js +1 -1
  28. package/es/components/Tree/Tree.styles.js.map +1 -1
  29. package/es/components/Tree/{Tree.styles_2v5lpb.css → Tree.styles_1d34sho.css} +1 -1
  30. package/es/components/Tree/Tree.tokens.js +6 -2
  31. package/es/components/Tree/Tree.tokens.js.map +1 -1
  32. package/es/components/Tree/utils/traverseTree.js +56 -0
  33. package/es/components/Tree/utils/traverseTree.js.map +1 -0
  34. package/es/index.css +6 -6
  35. package/package.json +2 -2
  36. package/styled-components/cjs/components/Tree/Tree.js +66 -6
  37. package/styled-components/cjs/components/Tree/Tree.styles.js +16 -10
  38. package/styled-components/cjs/components/Tree/Tree.tokens.js +6 -2
  39. package/styled-components/cjs/components/Tree/utils/index.js +12 -3
  40. package/styled-components/cjs/components/Tree/utils/traverseTree.js +131 -0
  41. package/styled-components/cjs/examples/components/Tree/Tree.config.js +3 -1
  42. package/styled-components/es/components/Tree/Tree.js +68 -8
  43. package/styled-components/es/components/Tree/Tree.styles.js +16 -10
  44. package/styled-components/es/components/Tree/Tree.tokens.js +6 -2
  45. package/styled-components/es/components/Tree/utils/index.js +1 -0
  46. package/styled-components/es/components/Tree/utils/traverseTree.js +116 -0
  47. package/styled-components/es/examples/components/Combobox/Combobox.js +0 -7
  48. package/styled-components/es/examples/components/Tree/Tree.config.js +3 -1
  49. package/types/components/Tree/Tree.d.ts.map +1 -1
  50. package/types/components/Tree/Tree.styles.d.ts.map +1 -1
  51. package/types/components/Tree/Tree.tokens.d.ts +5 -1
  52. package/types/components/Tree/Tree.tokens.d.ts.map +1 -1
  53. package/types/components/Tree/Tree.types.d.ts +14 -12
  54. package/types/components/Tree/Tree.types.d.ts.map +1 -1
  55. package/types/components/Tree/utils/index.d.ts +1 -0
  56. package/types/components/Tree/utils/index.d.ts.map +1 -1
  57. package/types/components/Tree/utils/traverseTree.d.ts +4 -0
  58. package/types/components/Tree/utils/traverseTree.d.ts.map +1 -0
@@ -78,7 +78,7 @@ function _interop_require_wildcard(obj, nodeInterop) {
78
78
  }
79
79
  var IconArrowWrapper = _styledcomponents.default.div.withConfig({
80
80
  displayName: "Tree.styles__IconArrowWrapper",
81
- componentId: "sc-687dc5a9-0"
81
+ componentId: "sc-b94b5aad-0"
82
82
  })([
83
83
  "line-height:0;color:var(",
84
84
  ");&:hover{color:var(",
@@ -87,19 +87,19 @@ var IconArrowWrapper = _styledcomponents.default.div.withConfig({
87
87
  ], _Treetokens.treeTokens.arrowColor, _Treetokens.treeTokens.arrowColorHover, _Treetokens.treeTokens.arrowColorActive);
88
88
  var StyledArrow = (0, _styledcomponents.default)(_Icon.IconDisclosureRightCentered).withConfig({
89
89
  displayName: "Tree.styles__StyledArrow",
90
- componentId: "sc-687dc5a9-1"
90
+ componentId: "sc-b94b5aad-1"
91
91
  })([
92
92
  "transition:color 0.3s ease-in,transform 0.15s ease-in;pointer-events:none;user-select:none;"
93
93
  ]);
94
94
  var StyledFolder = (0, _styledcomponents.default)(_Icon.IconFolder).withConfig({
95
95
  displayName: "Tree.styles__StyledFolder",
96
- componentId: "sc-687dc5a9-2"
96
+ componentId: "sc-b94b5aad-2"
97
97
  })([
98
98
  ""
99
99
  ]);
100
100
  var TitleWrapper = _styledcomponents.default.div.withConfig({
101
101
  displayName: "Tree.styles__TitleWrapper",
102
- componentId: "sc-687dc5a9-3"
102
+ componentId: "sc-b94b5aad-3"
103
103
  })([
104
104
  "display:flex;align-items:center;justify-content:space-between;margin:",
105
105
  ";",
@@ -110,7 +110,7 @@ var TitleWrapper = _styledcomponents.default.div.withConfig({
110
110
  }, (0, _mixins.applyEllipsis)());
111
111
  var Title = _styledcomponents.default.span.withConfig({
112
112
  displayName: "Tree.styles__Title",
113
- componentId: "sc-687dc5a9-4"
113
+ componentId: "sc-b94b5aad-4"
114
114
  })([
115
115
  "margin:var(",
116
116
  ");",
@@ -118,7 +118,7 @@ var Title = _styledcomponents.default.span.withConfig({
118
118
  ], _Treetokens.treeTokens.iconFolderMargin, (0, _mixins.applyEllipsis)());
119
119
  var ContentRight = _styledcomponents.default.div.withConfig({
120
120
  displayName: "Tree.styles__ContentRight",
121
- componentId: "sc-687dc5a9-5"
121
+ componentId: "sc-b94b5aad-5"
122
122
  })([
123
123
  "line-height:0;"
124
124
  ]);
@@ -139,8 +139,12 @@ var base = (0, _styledcomponents.css)([
139
139
  ");right:0;background:transparent;border-radius:var(",
140
140
  ");}.rc-tree .rc-tree-treenode.rc-tree-treenode-disabled{opacity:var(",
141
141
  ");}.rc-tree.",
142
- " .rc-tree-treenode::before{inset:0;border-radius:0;}.rc-tree .rc-tree-treenode.rc-tree-treenode-selected::before{background:var(",
143
- ") !important;}.rc-tree .rc-tree-treenode:not(.rc-tree-treenode-disabled):hover::before{background:var(",
142
+ " .rc-tree-treenode::before{inset:0;border-radius:0;}.rc-tree .rc-tree-treenode.",
143
+ "::before{background:var(",
144
+ ");}.rc-tree .rc-tree-treenode.",
145
+ "::before{background:var(",
146
+ ");}.rc-tree .rc-tree-treenode.rc-tree-treenode-selected::before{background:var(",
147
+ ");}.rc-tree .rc-tree-treenode:not(.rc-tree-treenode-disabled):hover::before{background:var(",
144
148
  ");}.rc-tree .rc-tree-treenode:not(.rc-tree-treenode-disabled):active::before{background:var(",
145
149
  ");}.rc-tree .rc-tree-treenode .rc-tree-node-content-wrapper{display:flex;align-items:center;align-self:stretch;height:auto;flex:1;min-width:max-content;}.rc-tree .rc-tree-treenode span.rc-tree-switcher{width:var(",
146
150
  ");height:var(",
@@ -168,10 +172,12 @@ var base = (0, _styledcomponents.css)([
168
172
  ");font-weight:var(",
169
173
  ");letter-spacing:var(",
170
174
  ");line-height:var(",
171
- ");}.rc-tree.tree-inverted .rc-tree-treenode span.rc-tree-switcher{order:1;}.rc-tree.tree-inverted .rc-tree-treenode::before{left:0;}.rc-tree-node-selected{opacity:1;box-shadow:none;background:none;}.rc-tree-node-selected .rc-tree-title{color:var(",
175
+ ");}.rc-tree.",
176
+ " .rc-tree-treenode span.rc-tree-switcher{order:1;}.rc-tree.",
177
+ " .rc-tree-treenode::before{left:0;}.rc-tree-node-selected{opacity:1;box-shadow:none;background:none;}.rc-tree-node-selected .rc-tree-title{color:var(",
172
178
  ");}.rc-tree .rc-tree-treenode.rc-tree-treenode-disabled .rc-tree-title{color:var(",
173
179
  ");}.rc-tree-node-selected .rc-tree-icon__customize{color:var(",
174
180
  ");}.rc-tree .rc-tree-treenode.rc-tree-treenode-disabled .rc-tree-icon__customize{color:var(",
175
181
  ");;}.rc-tree-indent-unit{width:var(",
176
182
  ");}"
177
- ], _Treetokens.treeTokens.color, _Treetokens.classes.treeInverted, _Treetokens.treeTokens.iconFolderColor, _Treetokens.treeTokens.iconFolderMargin, _Treetokens.treeTokens.itemHeight, _Treetokens.classes.treeItemFilled, _Treetokens.treeTokens.itemPadding, _Treetokens.classes.treeInverted, _Treetokens.classes.treeItemFilled, _Treetokens.treeTokens.itemPaddingTight, _Treetokens.treeTokens.itemTop, _Treetokens.treeTokens.itemBottom, _Treetokens.treeTokens.switcherSize, _Treetokens.treeTokens.itemBorderRadius, _Treetokens.treeTokens.itemDisabledOpacity, _Treetokens.classes.treeItemFilled, _Treetokens.treeTokens.itemBackgroundColor, _Treetokens.treeTokens.itemBackgroundColorHover, _Treetokens.treeTokens.itemBackgroundColorActive, _Treetokens.treeTokens.switcherSize, _Treetokens.treeTokens.switcherSize, _Treetokens.treeTokens.switcherMargin, _Treetokens.classes.treeInverted, _Treetokens.treeTokens.switcherMarginInverted, _Treetokens.classes.treeInverted, _Treetokens.classes.treeInverted, _Treetokens.treeTokens.checkboxSize, _Treetokens.treeTokens.checkboxSize, _Treetokens.treeTokens.checkboxMargin, _Treetokens.treeTokens.checkboxInnerSize, _Treetokens.treeTokens.checkboxInnerSize, _Treetokens.treeTokens.checkboxBorderColor, _Treetokens.treeTokens.checkboxBorderRadius, _Treetokens.treeTokens.itemDisabledBorderColor, _Treetokens.treeTokens.checkboxBackgroundColor, _Treetokens.treeTokens.checkboxBackgroundColor, _Treetokens.treeTokens.checkboxBackgroundColor, _Treetokens.treeTokens.checkboxBackgroundColor, _Treetokens.treeTokens.color, _Treetokens.treeTokens.fontFamily, _Treetokens.treeTokens.fontSize, _Treetokens.treeTokens.fontStyle, _Treetokens.treeTokens.fontWeight, _Treetokens.treeTokens.letterSpacing, _Treetokens.treeTokens.lineHeight, _Treetokens.treeTokens.colorSelected, _Treetokens.treeTokens.itemDisabledColor, _Treetokens.treeTokens.colorSelected, _Treetokens.treeTokens.itemDisabledColor, _Treetokens.treeTokens.itemIndent);
183
+ ], _Treetokens.treeTokens.color, _Treetokens.classes.treeInverted, _Treetokens.treeTokens.iconFolderColor, _Treetokens.treeTokens.iconFolderMargin, _Treetokens.treeTokens.itemHeight, _Treetokens.classes.treeItemFilled, _Treetokens.treeTokens.itemPadding, _Treetokens.classes.treeInverted, _Treetokens.classes.treeItemFilled, _Treetokens.treeTokens.itemPaddingTight, _Treetokens.treeTokens.itemTop, _Treetokens.treeTokens.itemBottom, _Treetokens.treeTokens.switcherSize, _Treetokens.treeTokens.itemBorderRadius, _Treetokens.treeTokens.itemDisabledOpacity, _Treetokens.classes.treeItemFilled, _Treetokens.classes.closestParentHasSelectedChildren, _Treetokens.treeTokens.itemBackgroundColorClosestParentHasSelectedChildren, _Treetokens.classes.parentHasSelectedChildren, _Treetokens.treeTokens.itemBackgroundColorParentHasSelectedChildren, _Treetokens.treeTokens.itemBackgroundColorSelected, _Treetokens.treeTokens.itemBackgroundColorHover, _Treetokens.treeTokens.itemBackgroundColorActive, _Treetokens.treeTokens.switcherSize, _Treetokens.treeTokens.switcherSize, _Treetokens.treeTokens.switcherMargin, _Treetokens.classes.treeInverted, _Treetokens.treeTokens.switcherMarginInverted, _Treetokens.classes.treeInverted, _Treetokens.classes.treeInverted, _Treetokens.treeTokens.checkboxSize, _Treetokens.treeTokens.checkboxSize, _Treetokens.treeTokens.checkboxMargin, _Treetokens.treeTokens.checkboxInnerSize, _Treetokens.treeTokens.checkboxInnerSize, _Treetokens.treeTokens.checkboxBorderColor, _Treetokens.treeTokens.checkboxBorderRadius, _Treetokens.treeTokens.itemDisabledBorderColor, _Treetokens.treeTokens.checkboxBackgroundColor, _Treetokens.treeTokens.checkboxBackgroundColor, _Treetokens.treeTokens.checkboxBackgroundColor, _Treetokens.treeTokens.checkboxBackgroundColor, _Treetokens.treeTokens.color, _Treetokens.treeTokens.fontFamily, _Treetokens.treeTokens.fontSize, _Treetokens.treeTokens.fontStyle, _Treetokens.treeTokens.fontWeight, _Treetokens.treeTokens.letterSpacing, _Treetokens.treeTokens.lineHeight, _Treetokens.classes.treeInverted, _Treetokens.classes.treeInverted, _Treetokens.treeTokens.colorSelected, _Treetokens.treeTokens.itemDisabledColor, _Treetokens.treeTokens.colorSelected, _Treetokens.treeTokens.itemDisabledColor, _Treetokens.treeTokens.itemIndent);
@@ -18,7 +18,9 @@ _export(exports, {
18
18
  });
19
19
  var classes = {
20
20
  treeInverted: 'tree-inverted',
21
- treeItemFilled: 'tree-item-filled'
21
+ treeItemFilled: 'tree-item-filled',
22
+ parentHasSelectedChildren: 'tree-parent-has-selected-children',
23
+ closestParentHasSelectedChildren: 'tree-closest-parent-has-selected-children'
22
24
  };
23
25
  var treeTokens = {
24
26
  arrowColor: '--plasma-tree-arrow-color',
@@ -50,7 +52,9 @@ var treeTokens = {
50
52
  checkboxMargin: '--plasma-tree-checkbox-margin',
51
53
  checkboxBorderColor: '--plasma-tree-checkbox-border-color',
52
54
  checkboxBackgroundColor: '--plasma-tree-checkbox-background-color',
53
- itemBackgroundColor: '--plasma-tree-item-background-color',
55
+ itemBackgroundColorSelected: '--plasma-tree-item-background-color-selected',
56
+ itemBackgroundColorParentHasSelectedChildren: '--plasma-tree-item-background-color-parent-has-selected-children',
57
+ itemBackgroundColorClosestParentHasSelectedChildren: '--plasma-tree-item-background-color-closest-parent-has-selected-children',
54
58
  itemBackgroundColorHover: '--plasma-tree-item-background-color-hover',
55
59
  itemBackgroundColorActive: '--plasma-tree-item-background-color-active',
56
60
  itemDisabledOpacity: '--plasma-tree-item-disabled-opacity',
@@ -2,10 +2,19 @@
2
2
  Object.defineProperty(exports, "__esModule", {
3
3
  value: true
4
4
  });
5
- Object.defineProperty(exports, "sizeToIconSize", {
6
- enumerable: true,
7
- get: function() {
5
+ function _export(target, all) {
6
+ for(var name in all)Object.defineProperty(target, name, {
7
+ enumerable: true,
8
+ get: Object.getOwnPropertyDescriptor(all, name).get
9
+ });
10
+ }
11
+ _export(exports, {
12
+ get sizeToIconSize () {
8
13
  return _sizeToIconSize.sizeToIconSize;
14
+ },
15
+ get traverseTree () {
16
+ return _traverseTree.traverseTree;
9
17
  }
10
18
  });
11
19
  var _sizeToIconSize = require("./sizeToIconSize");
20
+ var _traverseTree = require("./traverseTree");
@@ -0,0 +1,131 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", {
3
+ value: true
4
+ });
5
+ Object.defineProperty(exports, "traverseTree", {
6
+ enumerable: true,
7
+ get: function() {
8
+ return traverseTree;
9
+ }
10
+ });
11
+ var _dedupe = /*#__PURE__*/ _interop_require_default(require("classnames/dedupe"));
12
+ var _Treetokens = require("../Tree.tokens");
13
+ function _array_like_to_array(arr, len) {
14
+ if (len == null || len > arr.length) len = arr.length;
15
+ for(var i = 0, arr2 = new Array(len); i < len; i++)arr2[i] = arr[i];
16
+ return arr2;
17
+ }
18
+ function _array_with_holes(arr) {
19
+ if (Array.isArray(arr)) return arr;
20
+ }
21
+ function _array_without_holes(arr) {
22
+ if (Array.isArray(arr)) return _array_like_to_array(arr);
23
+ }
24
+ function _interop_require_default(obj) {
25
+ return obj && obj.__esModule ? obj : {
26
+ default: obj
27
+ };
28
+ }
29
+ function _iterable_to_array(iter) {
30
+ if (typeof Symbol !== "undefined" && iter[Symbol.iterator] != null || iter["@@iterator"] != null) return Array.from(iter);
31
+ }
32
+ function _iterable_to_array_limit(arr, i) {
33
+ var _i = arr == null ? null : typeof Symbol !== "undefined" && arr[Symbol.iterator] || arr["@@iterator"];
34
+ if (_i == null) return;
35
+ var _arr = [];
36
+ var _n = true;
37
+ var _d = false;
38
+ var _s, _e;
39
+ try {
40
+ for(_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true){
41
+ _arr.push(_s.value);
42
+ if (i && _arr.length === i) break;
43
+ }
44
+ } catch (err) {
45
+ _d = true;
46
+ _e = err;
47
+ } finally{
48
+ try {
49
+ if (!_n && _i["return"] != null) _i["return"]();
50
+ } finally{
51
+ if (_d) throw _e;
52
+ }
53
+ }
54
+ return _arr;
55
+ }
56
+ function _non_iterable_rest() {
57
+ throw new TypeError("Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.");
58
+ }
59
+ function _non_iterable_spread() {
60
+ throw new TypeError("Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.");
61
+ }
62
+ function _sliced_to_array(arr, i) {
63
+ return _array_with_holes(arr) || _iterable_to_array_limit(arr, i) || _unsupported_iterable_to_array(arr, i) || _non_iterable_rest();
64
+ }
65
+ function _to_consumable_array(arr) {
66
+ return _array_without_holes(arr) || _iterable_to_array(arr) || _unsupported_iterable_to_array(arr) || _non_iterable_spread();
67
+ }
68
+ function _type_of(obj) {
69
+ "@swc/helpers - typeof";
70
+ return obj && typeof Symbol !== "undefined" && obj.constructor === Symbol ? "symbol" : typeof obj;
71
+ }
72
+ function _unsupported_iterable_to_array(o, minLen) {
73
+ if (!o) return;
74
+ if (typeof o === "string") return _array_like_to_array(o, minLen);
75
+ var n = Object.prototype.toString.call(o).slice(8, -1);
76
+ if (n === "Object" && o.constructor) n = o.constructor.name;
77
+ if (n === "Map" || n === "Set") return Array.from(n);
78
+ if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _array_like_to_array(o, minLen);
79
+ }
80
+ // Blazing-fast хелпер для глубокого копирования объектов.
81
+ // Ссылки на функции (React-компоненты) сохраняются.
82
+ var deepCopy = function(obj) {
83
+ if (obj === null || (typeof obj === "undefined" ? "undefined" : _type_of(obj)) !== 'object') {
84
+ return obj;
85
+ }
86
+ if (Array.isArray(obj)) {
87
+ return obj.map(function(item) {
88
+ return deepCopy(item);
89
+ });
90
+ }
91
+ if (obj.type && (typeof obj.type === 'function' || typeof obj.type === 'string')) {
92
+ return obj;
93
+ }
94
+ return Object.fromEntries(Object.entries(obj).map(function(param) {
95
+ var _param = _sliced_to_array(param, 2), key = _param[0], value = _param[1];
96
+ return [
97
+ key,
98
+ deepCopy(value)
99
+ ];
100
+ }));
101
+ };
102
+ var dfs = function(node, selectedKeys, parents) {
103
+ var selected = selectedKeys.has(node.key);
104
+ if (node.children) {
105
+ node.children = node.children.map(function(childNode) {
106
+ return dfs(childNode, selectedKeys, _to_consumable_array(parents).concat([
107
+ node
108
+ ]));
109
+ });
110
+ }
111
+ if (selected && parents.length > 0) {
112
+ var _parents_at_children, _parents_at;
113
+ parents.forEach(function(parent) {
114
+ parent.className = (0, _dedupe.default)(parent.className, _Treetokens.classes.parentHasSelectedChildren);
115
+ });
116
+ (_parents_at = parents.at(-1)) === null || _parents_at === void 0 ? void 0 : (_parents_at_children = _parents_at.children) === null || _parents_at_children === void 0 ? void 0 : _parents_at_children.forEach(function(childNode) {
117
+ childNode.className = (0, _dedupe.default)(childNode.className, _Treetokens.classes.closestParentHasSelectedChildren);
118
+ });
119
+ }
120
+ return node;
121
+ };
122
+ var traverseTree = function(items, selectedKeys) {
123
+ if (!selectedKeys || selectedKeys.length === 0) {
124
+ return items;
125
+ }
126
+ var copyItems = deepCopy(items);
127
+ return dfs({
128
+ key: 'root',
129
+ children: copyItems
130
+ }, new Set(selectedKeys), []).children;
131
+ };
@@ -25,7 +25,9 @@ var config = {
25
25
  ":var(--text-secondary-active);",
26
26
  ":var(--text-secondary);",
27
27
  ":var(--text-primary);",
28
+ ":var(--surface-transparent-tertiary);",
28
29
  ":var(--surface-transparent-secondary);",
30
+ ":var(--surface-transparent-primary);",
29
31
  ":var(--surface-transparent-secondary-hover);",
30
32
  ":var(--surface-transparent-secondary-active);",
31
33
  ":var(--text-secondary);",
@@ -33,7 +35,7 @@ var config = {
33
35
  ":0.4;",
34
36
  ":var(--text-secondary);",
35
37
  ":var(--text-secondary);"
36
- ], _Treetokens.treeTokens.iconFolderColor, _Treetokens.treeTokens.arrowColor, _Treetokens.treeTokens.arrowColorHover, _Treetokens.treeTokens.arrowColorActive, _Treetokens.treeTokens.color, _Treetokens.treeTokens.colorSelected, _Treetokens.treeTokens.itemBackgroundColor, _Treetokens.treeTokens.itemBackgroundColorHover, _Treetokens.treeTokens.itemBackgroundColorActive, _Treetokens.treeTokens.checkboxBorderColor, _Treetokens.treeTokens.checkboxBackgroundColor, _Treetokens.treeTokens.itemDisabledOpacity, _Treetokens.treeTokens.itemDisabledBorderColor, _Treetokens.treeTokens.itemDisabledColor)
38
+ ], _Treetokens.treeTokens.iconFolderColor, _Treetokens.treeTokens.arrowColor, _Treetokens.treeTokens.arrowColorHover, _Treetokens.treeTokens.arrowColorActive, _Treetokens.treeTokens.color, _Treetokens.treeTokens.colorSelected, _Treetokens.treeTokens.itemBackgroundColorSelected, _Treetokens.treeTokens.itemBackgroundColorParentHasSelectedChildren, _Treetokens.treeTokens.itemBackgroundColorClosestParentHasSelectedChildren, _Treetokens.treeTokens.itemBackgroundColorHover, _Treetokens.treeTokens.itemBackgroundColorActive, _Treetokens.treeTokens.checkboxBorderColor, _Treetokens.treeTokens.checkboxBackgroundColor, _Treetokens.treeTokens.itemDisabledOpacity, _Treetokens.treeTokens.itemDisabledBorderColor, _Treetokens.treeTokens.itemDisabledColor)
37
39
  },
38
40
  size: {
39
41
  l: (0, _styledcomponents.css)([
@@ -1,3 +1,11 @@
1
+ function _array_like_to_array(arr, len) {
2
+ if (len == null || len > arr.length) len = arr.length;
3
+ for(var i = 0, arr2 = new Array(len); i < len; i++)arr2[i] = arr[i];
4
+ return arr2;
5
+ }
6
+ function _array_with_holes(arr) {
7
+ if (Array.isArray(arr)) return arr;
8
+ }
1
9
  function _define_property(obj, key, value) {
2
10
  if (key in obj) {
3
11
  Object.defineProperty(obj, key, {
@@ -11,6 +19,33 @@ function _define_property(obj, key, value) {
11
19
  }
12
20
  return obj;
13
21
  }
22
+ function _iterable_to_array_limit(arr, i) {
23
+ var _i = arr == null ? null : typeof Symbol !== "undefined" && arr[Symbol.iterator] || arr["@@iterator"];
24
+ if (_i == null) return;
25
+ var _arr = [];
26
+ var _n = true;
27
+ var _d = false;
28
+ var _s, _e;
29
+ try {
30
+ for(_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true){
31
+ _arr.push(_s.value);
32
+ if (i && _arr.length === i) break;
33
+ }
34
+ } catch (err) {
35
+ _d = true;
36
+ _e = err;
37
+ } finally{
38
+ try {
39
+ if (!_n && _i["return"] != null) _i["return"]();
40
+ } finally{
41
+ if (_d) throw _e;
42
+ }
43
+ }
44
+ return _arr;
45
+ }
46
+ function _non_iterable_rest() {
47
+ throw new TypeError("Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.");
48
+ }
14
49
  function _object_spread(target) {
15
50
  for(var i = 1; i < arguments.length; i++){
16
51
  var source = arguments[i] != null ? arguments[i] : {};
@@ -50,19 +85,46 @@ function _object_spread_props(target, source) {
50
85
  }
51
86
  return target;
52
87
  }
53
- import React, { forwardRef } from "react";
88
+ function _sliced_to_array(arr, i) {
89
+ return _array_with_holes(arr) || _iterable_to_array_limit(arr, i) || _unsupported_iterable_to_array(arr, i) || _non_iterable_rest();
90
+ }
91
+ function _unsupported_iterable_to_array(o, minLen) {
92
+ if (!o) return;
93
+ if (typeof o === "string") return _array_like_to_array(o, minLen);
94
+ var n = Object.prototype.toString.call(o).slice(8, -1);
95
+ if (n === "Object" && o.constructor) n = o.constructor.name;
96
+ if (n === "Map" || n === "Set") return Array.from(n);
97
+ if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _array_like_to_array(o, minLen);
98
+ }
99
+ import React, { forwardRef, useMemo, useState } from "react";
54
100
  import Tree from "rc-tree";
55
101
  import { cx } from "../../utils";
56
102
  import { IconArrowWrapper, StyledArrow, base, StyledFolder, TitleWrapper, Title, ContentRight } from "./Tree.styles";
57
- import { sizeToIconSize } from "./utils";
103
+ import { sizeToIconSize, traverseTree } from "./utils";
58
104
  import { classes } from "./Tree.tokens";
59
105
  /**
60
106
  * Многоуровневый раскрывающийся список в виде дерева.
61
107
  */ export var treeRoot = function(Root) {
62
108
  return /*#__PURE__*/ forwardRef(function(param, ref) {
63
- var items = param.items, _param_arrowPlacement = param.arrowPlacement, arrowPlacement = _param_arrowPlacement === void 0 ? 'left' : _param_arrowPlacement, _param_virtual = param.virtual, virtual = _param_virtual === void 0 ? true : _param_virtual, height = param.height, itemHeight = param.itemHeight, size = param.size, view = param.view, _param_fullWidthItemSelection = param.fullWidthItemSelection, fullWidthItemSelection = _param_fullWidthItemSelection === void 0 ? false : _param_fullWidthItemSelection, _param_multiple = param.multiple, multiple = _param_multiple === void 0 ? false : _param_multiple, _param_defaultExpandAll = param.defaultExpandAll, defaultExpandAll = _param_defaultExpandAll === void 0 ? false : _param_defaultExpandAll, _param_checkable = param.checkable, checkable = _param_checkable === void 0 ? false : _param_checkable, checkedKeys = param.checkedKeys, expandedKeys = param.expandedKeys, selectedKeys = param.selectedKeys, defaultCheckedKeys = param.defaultCheckedKeys, defaultExpandedKeys = param.defaultExpandedKeys, defaultSelectedKeys = param.defaultSelectedKeys, className = param.className, onTreeSelect = param.onTreeSelect, onTreeCheck = param.onTreeCheck, onTreeExpand = param.onTreeExpand, _param_hasIcon = param.hasIcon, hasIcon = _param_hasIcon === void 0 ? false : _param_hasIcon, icon = param.icon, renderTitle = param.renderTitle;
109
+ var items = param.items, _param_arrowPlacement = param.arrowPlacement, arrowPlacement = _param_arrowPlacement === void 0 ? 'left' : _param_arrowPlacement, _param_virtual = param.virtual, virtual = _param_virtual === void 0 ? true : _param_virtual, height = param.height, itemHeight = param.itemHeight, size = param.size, view = param.view, _param_fullWidthItemSelection = param.fullWidthItemSelection, fullWidthItemSelection = _param_fullWidthItemSelection === void 0 ? false : _param_fullWidthItemSelection, _param_multiple = param.multiple, multiple = _param_multiple === void 0 ? false : _param_multiple, _param_defaultExpandAll = param.defaultExpandAll, defaultExpandAll = _param_defaultExpandAll === void 0 ? false : _param_defaultExpandAll, _param_checkable = param.checkable, checkable = _param_checkable === void 0 ? false : _param_checkable, outerSelectedKeys = param.selectedKeys, checkedKeys = param.checkedKeys, expandedKeys = param.expandedKeys, defaultCheckedKeys = param.defaultCheckedKeys, defaultExpandedKeys = param.defaultExpandedKeys, defaultSelectedKeys = param.defaultSelectedKeys, className = param.className, onTreeSelect = param.onTreeSelect, onTreeCheck = param.onTreeCheck, onTreeExpand = param.onTreeExpand, _param_hasIcon = param.hasIcon, hasIcon = _param_hasIcon === void 0 ? false : _param_hasIcon, icon = param.icon, renderTitle = param.renderTitle;
110
+ var _useState = _sliced_to_array(useState(defaultSelectedKeys || []), 2), selected = _useState[0], setSelected = _useState[1];
111
+ var selectedKeys = outerSelectedKeys !== null && outerSelectedKeys !== void 0 ? outerSelectedKeys : selected;
112
+ var handleSelect = function(updatedSelectedKeys, info) {
113
+ setSelected(updatedSelectedKeys);
114
+ if (onTreeSelect) {
115
+ onTreeSelect(updatedSelectedKeys, info);
116
+ }
117
+ };
64
118
  var invertedClass = arrowPlacement === 'right' ? classes.treeInverted : undefined;
65
119
  var itemFilledClass = fullWidthItemSelection ? classes.treeItemFilled : undefined;
120
+ // Проходимся по дереву и устанавливаем соответствующие классы для узлов дерева,
121
+ // чтобы соблюсти иерархию вложенности в UI.
122
+ var treeData = useMemo(function() {
123
+ return traverseTree(items, selectedKeys);
124
+ }, [
125
+ items,
126
+ selectedKeys
127
+ ]);
66
128
  return /*#__PURE__*/ React.createElement(Root, {
67
129
  view: view,
68
130
  size: size,
@@ -79,18 +141,16 @@ import { classes } from "./Tree.tokens";
79
141
  style: {
80
142
  border: '1px solid #000'
81
143
  },
82
- treeData: items
144
+ treeData: treeData,
145
+ selectedKeys: selectedKeys
83
146
  }, checkedKeys !== undefined ? {
84
147
  checkedKeys: checkedKeys
85
148
  } : {}, expandedKeys !== undefined ? {
86
149
  expandedKeys: expandedKeys
87
- } : {}, selectedKeys !== undefined ? {
88
- selectedKeys: selectedKeys
89
150
  } : {}), {
90
151
  defaultCheckedKeys: defaultCheckedKeys,
91
152
  defaultExpandedKeys: defaultExpandedKeys,
92
- defaultSelectedKeys: defaultSelectedKeys,
93
- onSelect: onTreeSelect,
153
+ onSelect: handleSelect,
94
154
  // Тайп кастинг для упрощения API
95
155
  onCheck: onTreeCheck,
96
156
  onExpand: onTreeExpand,
@@ -5,7 +5,7 @@ import { IconDisclosureRightCentered, IconFolder } from "../_Icon";
5
5
  import { treeTokens as tokens, classes } from "./Tree.tokens";
6
6
  export var IconArrowWrapper = styled.div.withConfig({
7
7
  displayName: "Tree.styles__IconArrowWrapper",
8
- componentId: "sc-687dc5a9-0"
8
+ componentId: "sc-b94b5aad-0"
9
9
  })([
10
10
  "line-height:0;color:var(",
11
11
  ");&:hover{color:var(",
@@ -14,19 +14,19 @@ export var IconArrowWrapper = styled.div.withConfig({
14
14
  ], tokens.arrowColor, tokens.arrowColorHover, tokens.arrowColorActive);
15
15
  export var StyledArrow = styled(IconDisclosureRightCentered).withConfig({
16
16
  displayName: "Tree.styles__StyledArrow",
17
- componentId: "sc-687dc5a9-1"
17
+ componentId: "sc-b94b5aad-1"
18
18
  })([
19
19
  "transition:color 0.3s ease-in,transform 0.15s ease-in;pointer-events:none;user-select:none;"
20
20
  ]);
21
21
  export var StyledFolder = styled(IconFolder).withConfig({
22
22
  displayName: "Tree.styles__StyledFolder",
23
- componentId: "sc-687dc5a9-2"
23
+ componentId: "sc-b94b5aad-2"
24
24
  })([
25
25
  ""
26
26
  ]);
27
27
  export var TitleWrapper = styled.div.withConfig({
28
28
  displayName: "Tree.styles__TitleWrapper",
29
- componentId: "sc-687dc5a9-3"
29
+ componentId: "sc-b94b5aad-3"
30
30
  })([
31
31
  "display:flex;align-items:center;justify-content:space-between;margin:",
32
32
  ";",
@@ -37,7 +37,7 @@ export var TitleWrapper = styled.div.withConfig({
37
37
  }, applyEllipsis());
38
38
  export var Title = styled.span.withConfig({
39
39
  displayName: "Tree.styles__Title",
40
- componentId: "sc-687dc5a9-4"
40
+ componentId: "sc-b94b5aad-4"
41
41
  })([
42
42
  "margin:var(",
43
43
  ");",
@@ -45,7 +45,7 @@ export var Title = styled.span.withConfig({
45
45
  ], tokens.iconFolderMargin, applyEllipsis());
46
46
  export var ContentRight = styled.div.withConfig({
47
47
  displayName: "Tree.styles__ContentRight",
48
- componentId: "sc-687dc5a9-5"
48
+ componentId: "sc-b94b5aad-5"
49
49
  })([
50
50
  "line-height:0;"
51
51
  ]);
@@ -66,8 +66,12 @@ export var base = css([
66
66
  ");right:0;background:transparent;border-radius:var(",
67
67
  ");}.rc-tree .rc-tree-treenode.rc-tree-treenode-disabled{opacity:var(",
68
68
  ");}.rc-tree.",
69
- " .rc-tree-treenode::before{inset:0;border-radius:0;}.rc-tree .rc-tree-treenode.rc-tree-treenode-selected::before{background:var(",
70
- ") !important;}.rc-tree .rc-tree-treenode:not(.rc-tree-treenode-disabled):hover::before{background:var(",
69
+ " .rc-tree-treenode::before{inset:0;border-radius:0;}.rc-tree .rc-tree-treenode.",
70
+ "::before{background:var(",
71
+ ");}.rc-tree .rc-tree-treenode.",
72
+ "::before{background:var(",
73
+ ");}.rc-tree .rc-tree-treenode.rc-tree-treenode-selected::before{background:var(",
74
+ ");}.rc-tree .rc-tree-treenode:not(.rc-tree-treenode-disabled):hover::before{background:var(",
71
75
  ");}.rc-tree .rc-tree-treenode:not(.rc-tree-treenode-disabled):active::before{background:var(",
72
76
  ");}.rc-tree .rc-tree-treenode .rc-tree-node-content-wrapper{display:flex;align-items:center;align-self:stretch;height:auto;flex:1;min-width:max-content;}.rc-tree .rc-tree-treenode span.rc-tree-switcher{width:var(",
73
77
  ");height:var(",
@@ -95,10 +99,12 @@ export var base = css([
95
99
  ");font-weight:var(",
96
100
  ");letter-spacing:var(",
97
101
  ");line-height:var(",
98
- ");}.rc-tree.tree-inverted .rc-tree-treenode span.rc-tree-switcher{order:1;}.rc-tree.tree-inverted .rc-tree-treenode::before{left:0;}.rc-tree-node-selected{opacity:1;box-shadow:none;background:none;}.rc-tree-node-selected .rc-tree-title{color:var(",
102
+ ");}.rc-tree.",
103
+ " .rc-tree-treenode span.rc-tree-switcher{order:1;}.rc-tree.",
104
+ " .rc-tree-treenode::before{left:0;}.rc-tree-node-selected{opacity:1;box-shadow:none;background:none;}.rc-tree-node-selected .rc-tree-title{color:var(",
99
105
  ");}.rc-tree .rc-tree-treenode.rc-tree-treenode-disabled .rc-tree-title{color:var(",
100
106
  ");}.rc-tree-node-selected .rc-tree-icon__customize{color:var(",
101
107
  ");}.rc-tree .rc-tree-treenode.rc-tree-treenode-disabled .rc-tree-icon__customize{color:var(",
102
108
  ");;}.rc-tree-indent-unit{width:var(",
103
109
  ");}"
104
- ], tokens.color, classes.treeInverted, tokens.iconFolderColor, tokens.iconFolderMargin, tokens.itemHeight, classes.treeItemFilled, tokens.itemPadding, classes.treeInverted, classes.treeItemFilled, tokens.itemPaddingTight, tokens.itemTop, tokens.itemBottom, tokens.switcherSize, tokens.itemBorderRadius, tokens.itemDisabledOpacity, classes.treeItemFilled, tokens.itemBackgroundColor, tokens.itemBackgroundColorHover, tokens.itemBackgroundColorActive, tokens.switcherSize, tokens.switcherSize, tokens.switcherMargin, classes.treeInverted, tokens.switcherMarginInverted, classes.treeInverted, classes.treeInverted, tokens.checkboxSize, tokens.checkboxSize, tokens.checkboxMargin, tokens.checkboxInnerSize, tokens.checkboxInnerSize, tokens.checkboxBorderColor, tokens.checkboxBorderRadius, tokens.itemDisabledBorderColor, tokens.checkboxBackgroundColor, tokens.checkboxBackgroundColor, tokens.checkboxBackgroundColor, tokens.checkboxBackgroundColor, tokens.color, tokens.fontFamily, tokens.fontSize, tokens.fontStyle, tokens.fontWeight, tokens.letterSpacing, tokens.lineHeight, tokens.colorSelected, tokens.itemDisabledColor, tokens.colorSelected, tokens.itemDisabledColor, tokens.itemIndent);
110
+ ], tokens.color, classes.treeInverted, tokens.iconFolderColor, tokens.iconFolderMargin, tokens.itemHeight, classes.treeItemFilled, tokens.itemPadding, classes.treeInverted, classes.treeItemFilled, tokens.itemPaddingTight, tokens.itemTop, tokens.itemBottom, tokens.switcherSize, tokens.itemBorderRadius, tokens.itemDisabledOpacity, classes.treeItemFilled, classes.closestParentHasSelectedChildren, tokens.itemBackgroundColorClosestParentHasSelectedChildren, classes.parentHasSelectedChildren, tokens.itemBackgroundColorParentHasSelectedChildren, tokens.itemBackgroundColorSelected, tokens.itemBackgroundColorHover, tokens.itemBackgroundColorActive, tokens.switcherSize, tokens.switcherSize, tokens.switcherMargin, classes.treeInverted, tokens.switcherMarginInverted, classes.treeInverted, classes.treeInverted, tokens.checkboxSize, tokens.checkboxSize, tokens.checkboxMargin, tokens.checkboxInnerSize, tokens.checkboxInnerSize, tokens.checkboxBorderColor, tokens.checkboxBorderRadius, tokens.itemDisabledBorderColor, tokens.checkboxBackgroundColor, tokens.checkboxBackgroundColor, tokens.checkboxBackgroundColor, tokens.checkboxBackgroundColor, tokens.color, tokens.fontFamily, tokens.fontSize, tokens.fontStyle, tokens.fontWeight, tokens.letterSpacing, tokens.lineHeight, classes.treeInverted, classes.treeInverted, tokens.colorSelected, tokens.itemDisabledColor, tokens.colorSelected, tokens.itemDisabledColor, tokens.itemIndent);
@@ -1,6 +1,8 @@
1
1
  export var classes = {
2
2
  treeInverted: 'tree-inverted',
3
- treeItemFilled: 'tree-item-filled'
3
+ treeItemFilled: 'tree-item-filled',
4
+ parentHasSelectedChildren: 'tree-parent-has-selected-children',
5
+ closestParentHasSelectedChildren: 'tree-closest-parent-has-selected-children'
4
6
  };
5
7
  export var treeTokens = {
6
8
  arrowColor: '--plasma-tree-arrow-color',
@@ -32,7 +34,9 @@ export var treeTokens = {
32
34
  checkboxMargin: '--plasma-tree-checkbox-margin',
33
35
  checkboxBorderColor: '--plasma-tree-checkbox-border-color',
34
36
  checkboxBackgroundColor: '--plasma-tree-checkbox-background-color',
35
- itemBackgroundColor: '--plasma-tree-item-background-color',
37
+ itemBackgroundColorSelected: '--plasma-tree-item-background-color-selected',
38
+ itemBackgroundColorParentHasSelectedChildren: '--plasma-tree-item-background-color-parent-has-selected-children',
39
+ itemBackgroundColorClosestParentHasSelectedChildren: '--plasma-tree-item-background-color-closest-parent-has-selected-children',
36
40
  itemBackgroundColorHover: '--plasma-tree-item-background-color-hover',
37
41
  itemBackgroundColorActive: '--plasma-tree-item-background-color-active',
38
42
  itemDisabledOpacity: '--plasma-tree-item-disabled-opacity',
@@ -1 +1,2 @@
1
1
  export { sizeToIconSize } from "./sizeToIconSize";
2
+ export { traverseTree } from "./traverseTree";
@@ -0,0 +1,116 @@
1
+ function _array_like_to_array(arr, len) {
2
+ if (len == null || len > arr.length) len = arr.length;
3
+ for(var i = 0, arr2 = new Array(len); i < len; i++)arr2[i] = arr[i];
4
+ return arr2;
5
+ }
6
+ function _array_with_holes(arr) {
7
+ if (Array.isArray(arr)) return arr;
8
+ }
9
+ function _array_without_holes(arr) {
10
+ if (Array.isArray(arr)) return _array_like_to_array(arr);
11
+ }
12
+ function _iterable_to_array(iter) {
13
+ if (typeof Symbol !== "undefined" && iter[Symbol.iterator] != null || iter["@@iterator"] != null) return Array.from(iter);
14
+ }
15
+ function _iterable_to_array_limit(arr, i) {
16
+ var _i = arr == null ? null : typeof Symbol !== "undefined" && arr[Symbol.iterator] || arr["@@iterator"];
17
+ if (_i == null) return;
18
+ var _arr = [];
19
+ var _n = true;
20
+ var _d = false;
21
+ var _s, _e;
22
+ try {
23
+ for(_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true){
24
+ _arr.push(_s.value);
25
+ if (i && _arr.length === i) break;
26
+ }
27
+ } catch (err) {
28
+ _d = true;
29
+ _e = err;
30
+ } finally{
31
+ try {
32
+ if (!_n && _i["return"] != null) _i["return"]();
33
+ } finally{
34
+ if (_d) throw _e;
35
+ }
36
+ }
37
+ return _arr;
38
+ }
39
+ function _non_iterable_rest() {
40
+ throw new TypeError("Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.");
41
+ }
42
+ function _non_iterable_spread() {
43
+ throw new TypeError("Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.");
44
+ }
45
+ function _sliced_to_array(arr, i) {
46
+ return _array_with_holes(arr) || _iterable_to_array_limit(arr, i) || _unsupported_iterable_to_array(arr, i) || _non_iterable_rest();
47
+ }
48
+ function _to_consumable_array(arr) {
49
+ return _array_without_holes(arr) || _iterable_to_array(arr) || _unsupported_iterable_to_array(arr) || _non_iterable_spread();
50
+ }
51
+ function _type_of(obj) {
52
+ "@swc/helpers - typeof";
53
+ return obj && typeof Symbol !== "undefined" && obj.constructor === Symbol ? "symbol" : typeof obj;
54
+ }
55
+ function _unsupported_iterable_to_array(o, minLen) {
56
+ if (!o) return;
57
+ if (typeof o === "string") return _array_like_to_array(o, minLen);
58
+ var n = Object.prototype.toString.call(o).slice(8, -1);
59
+ if (n === "Object" && o.constructor) n = o.constructor.name;
60
+ if (n === "Map" || n === "Set") return Array.from(n);
61
+ if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _array_like_to_array(o, minLen);
62
+ }
63
+ import cls from "classnames/dedupe";
64
+ import { classes } from "../Tree.tokens";
65
+ // Blazing-fast хелпер для глубокого копирования объектов.
66
+ // Ссылки на функции (React-компоненты) сохраняются.
67
+ var deepCopy = function(obj) {
68
+ if (obj === null || (typeof obj === "undefined" ? "undefined" : _type_of(obj)) !== 'object') {
69
+ return obj;
70
+ }
71
+ if (Array.isArray(obj)) {
72
+ return obj.map(function(item) {
73
+ return deepCopy(item);
74
+ });
75
+ }
76
+ if (obj.type && (typeof obj.type === 'function' || typeof obj.type === 'string')) {
77
+ return obj;
78
+ }
79
+ return Object.fromEntries(Object.entries(obj).map(function(param) {
80
+ var _param = _sliced_to_array(param, 2), key = _param[0], value = _param[1];
81
+ return [
82
+ key,
83
+ deepCopy(value)
84
+ ];
85
+ }));
86
+ };
87
+ var dfs = function(node, selectedKeys, parents) {
88
+ var selected = selectedKeys.has(node.key);
89
+ if (node.children) {
90
+ node.children = node.children.map(function(childNode) {
91
+ return dfs(childNode, selectedKeys, _to_consumable_array(parents).concat([
92
+ node
93
+ ]));
94
+ });
95
+ }
96
+ if (selected && parents.length > 0) {
97
+ var _parents_at_children, _parents_at;
98
+ parents.forEach(function(parent) {
99
+ parent.className = cls(parent.className, classes.parentHasSelectedChildren);
100
+ });
101
+ (_parents_at = parents.at(-1)) === null || _parents_at === void 0 ? void 0 : (_parents_at_children = _parents_at.children) === null || _parents_at_children === void 0 ? void 0 : _parents_at_children.forEach(function(childNode) {
102
+ childNode.className = cls(childNode.className, classes.closestParentHasSelectedChildren);
103
+ });
104
+ }
105
+ return node;
106
+ };
107
+ export var traverseTree = function(items, selectedKeys) {
108
+ if (!selectedKeys || selectedKeys.length === 0) {
109
+ return items;
110
+ }
111
+ var copyItems = deepCopy(items);
112
+ return dfs({
113
+ key: 'root',
114
+ children: copyItems
115
+ }, new Set(selectedKeys), []).children;
116
+ };
@@ -1,7 +0,0 @@
1
- import { component, mergeConfig } from "../../../engines";
2
- import { comboboxNewConfig } from "../../../../es";
3
- import { config } from "./Combobox.config";
4
- var mergedConfig = mergeConfig(comboboxNewConfig, config);
5
- var ComboboxComponent = component(mergedConfig);
6
- var Combobox = ComboboxComponent;
7
- export { Combobox };