@gravity-ui/navigation 0.1.0 → 0.2.1

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 (88) hide show
  1. package/CHANGELOG.md +23 -0
  2. package/build/cjs/{types/components → components}/ActionBar/ActionBar.d.ts +0 -0
  3. package/build/cjs/{types/components → components}/ActionBar/Group/ActionBarGroup.d.ts +0 -0
  4. package/build/cjs/{types/components → components}/ActionBar/Item/ActionBarItem.d.ts +0 -0
  5. package/build/cjs/{types/components → components}/ActionBar/Section/ActionBarSection.d.ts +0 -0
  6. package/build/cjs/{types/components → components}/ActionBar/Separator/ActionBarSeparator.d.ts +0 -0
  7. package/build/cjs/{types/components → components}/ActionBar/__stories__/ActionBar.stories.d.ts +0 -0
  8. package/build/cjs/{types/components → components}/ActionBar/__stories__/ActionBarShowcase.d.ts +0 -0
  9. package/build/cjs/{types/components → components}/ActionBar/index.d.ts +0 -0
  10. package/build/cjs/{types/components → components}/ActionBar/types.d.ts +0 -0
  11. package/build/{esm/types → cjs}/components/AsideHeader/AsideHeader.d.ts +2 -7
  12. package/build/cjs/{types/components → components}/AsideHeader/Content.d.ts +0 -0
  13. package/build/cjs/{types/components → components}/AsideHeader/__stories__/AsideHeader.stories.d.ts +0 -0
  14. package/build/cjs/{types/components → components}/AsideHeader/__stories__/AsideHeaderShowcase.d.ts +0 -0
  15. package/build/cjs/{types/components → components}/AsideHeader/__stories__/getAsideHeaderWrapper.d.ts +0 -0
  16. package/build/cjs/{types/components → components}/AsideHeader/__stories__/moc.d.ts +0 -0
  17. package/build/cjs/{types/components → components}/CompositeBar/CompositeBar.d.ts +1 -1
  18. package/build/{esm/types → cjs}/components/CompositeBar/Item/Item.d.ts +1 -0
  19. package/build/cjs/{types/components → components}/CompositeBar/__stories__/CompositeBar.stories.d.ts +0 -0
  20. package/build/cjs/{types/components → components}/CompositeBar/__stories__/moc.d.ts +0 -0
  21. package/build/cjs/{types/components → components}/CompositeBar/constants.d.ts +0 -0
  22. package/build/cjs/{types/components → components}/CompositeBar/utils.d.ts +0 -0
  23. package/build/cjs/{types/components → components}/Drawer/Drawer.d.ts +0 -0
  24. package/build/cjs/{types/components → components}/Drawer/__stories__/Drawer.stories.d.ts +0 -0
  25. package/build/cjs/{types/components → components}/Drawer/__stories__/DrawerShowcase.d.ts +0 -0
  26. package/build/{esm/types → cjs}/components/FooterItem/FooterItem.d.ts +1 -1
  27. package/build/cjs/{types/components → components}/FooterItem/__stories__/FooterItem.stories.d.ts +0 -0
  28. package/build/cjs/{types/components → components}/ItemTooltip/ItemTooltip.d.ts +0 -0
  29. package/build/cjs/{types/components → components}/Logo/Logo.d.ts +0 -0
  30. package/build/cjs/components/Settings/Settings.d.ts +49 -0
  31. package/build/cjs/components/Settings/SettingsMenu/SettingsMenu.d.ts +27 -0
  32. package/build/cjs/components/Settings/SettingsSearch/SettingsSearch.d.ts +10 -0
  33. package/build/{esm/types/components/AsideHeader/__stories__/AsideHeader.stories.d.ts → cjs/components/Settings/__stories__/Settings.stories.d.ts} +0 -0
  34. package/build/cjs/components/Settings/__stories__/SettingsDemo.d.ts +13 -0
  35. package/build/cjs/components/Settings/collect-settings.d.ts +40 -0
  36. package/build/cjs/components/Settings/helpers.d.ts +6 -0
  37. package/build/cjs/components/Settings/index.d.ts +1 -0
  38. package/build/cjs/{types/components → components}/constants.d.ts +0 -0
  39. package/build/cjs/{types/components → components}/index.d.ts +1 -0
  40. package/build/cjs/{types/components → components}/types.d.ts +0 -0
  41. package/build/cjs/{types/components → components}/utils/cn.d.ts +0 -0
  42. package/build/cjs/{types/index.d.ts → index.d.ts} +0 -0
  43. package/build/cjs/index.js +1053 -141
  44. package/build/cjs/index.js.map +1 -1
  45. package/build/esm/{types/components → components}/ActionBar/ActionBar.d.ts +0 -0
  46. package/build/esm/{types/components → components}/ActionBar/Group/ActionBarGroup.d.ts +0 -0
  47. package/build/esm/{types/components → components}/ActionBar/Item/ActionBarItem.d.ts +0 -0
  48. package/build/esm/{types/components → components}/ActionBar/Section/ActionBarSection.d.ts +0 -0
  49. package/build/esm/{types/components → components}/ActionBar/Separator/ActionBarSeparator.d.ts +0 -0
  50. package/build/esm/{types/components → components}/ActionBar/__stories__/ActionBar.stories.d.ts +0 -0
  51. package/build/esm/{types/components → components}/ActionBar/__stories__/ActionBarShowcase.d.ts +0 -0
  52. package/build/esm/{types/components → components}/ActionBar/index.d.ts +0 -0
  53. package/build/esm/{types/components → components}/ActionBar/types.d.ts +0 -0
  54. package/build/{cjs/types → esm}/components/AsideHeader/AsideHeader.d.ts +2 -7
  55. package/build/esm/{types/components → components}/AsideHeader/Content.d.ts +0 -0
  56. package/build/esm/{types/components/Drawer/__stories__/Drawer.stories.d.ts → components/AsideHeader/__stories__/AsideHeader.stories.d.ts} +0 -0
  57. package/build/esm/{types/components → components}/AsideHeader/__stories__/AsideHeaderShowcase.d.ts +0 -0
  58. package/build/esm/{types/components → components}/AsideHeader/__stories__/getAsideHeaderWrapper.d.ts +0 -0
  59. package/build/esm/{types/components → components}/AsideHeader/__stories__/moc.d.ts +0 -0
  60. package/build/esm/{types/components → components}/CompositeBar/CompositeBar.d.ts +1 -1
  61. package/build/{cjs/types → esm}/components/CompositeBar/Item/Item.d.ts +1 -0
  62. package/build/esm/{types/components → components}/CompositeBar/__stories__/CompositeBar.stories.d.ts +0 -0
  63. package/build/esm/{types/components → components}/CompositeBar/__stories__/moc.d.ts +0 -0
  64. package/build/esm/{types/components → components}/CompositeBar/constants.d.ts +0 -0
  65. package/build/esm/{types/components → components}/CompositeBar/utils.d.ts +0 -0
  66. package/build/esm/{types/components → components}/Drawer/Drawer.d.ts +0 -0
  67. package/build/esm/components/Drawer/__stories__/Drawer.stories.d.ts +4 -0
  68. package/build/esm/{types/components → components}/Drawer/__stories__/DrawerShowcase.d.ts +0 -0
  69. package/build/{cjs/types → esm}/components/FooterItem/FooterItem.d.ts +1 -1
  70. package/build/esm/{types/components → components}/FooterItem/__stories__/FooterItem.stories.d.ts +0 -0
  71. package/build/esm/{types/components → components}/ItemTooltip/ItemTooltip.d.ts +0 -0
  72. package/build/esm/{types/components → components}/Logo/Logo.d.ts +0 -0
  73. package/build/esm/components/Settings/Settings.d.ts +49 -0
  74. package/build/esm/components/Settings/SettingsMenu/SettingsMenu.d.ts +27 -0
  75. package/build/esm/components/Settings/SettingsSearch/SettingsSearch.d.ts +10 -0
  76. package/build/esm/components/Settings/__stories__/Settings.stories.d.ts +4 -0
  77. package/build/esm/components/Settings/__stories__/SettingsDemo.d.ts +13 -0
  78. package/build/esm/components/Settings/collect-settings.d.ts +40 -0
  79. package/build/esm/components/Settings/helpers.d.ts +6 -0
  80. package/build/esm/components/Settings/index.d.ts +1 -0
  81. package/build/esm/{types/components → components}/constants.d.ts +0 -0
  82. package/build/esm/{types/components → components}/index.d.ts +1 -0
  83. package/build/esm/{types/components → components}/types.d.ts +0 -0
  84. package/build/esm/{types/components → components}/utils/cn.d.ts +0 -0
  85. package/build/esm/{types/index.d.ts → index.d.ts} +0 -0
  86. package/build/esm/index.js +1054 -143
  87. package/build/esm/index.js.map +1 -1
  88. package/package.json +2 -2
@@ -114,48 +114,48 @@ function styleInject(css, ref) {
114
114
  }
115
115
  }
116
116
 
117
- var css_248z$b = ".ycn-action-bar-group {\n display: flex;\n flex-flow: row nowrap;\n align-items: center;\n justify-content: flex-start;\n margin: 0;\n padding: 0;\n}\n.ycn-action-bar-group_pull_left {\n margin-left: 0;\n margin-right: auto;\n}\n.ycn-action-bar-group_pull_right {\n margin-left: auto;\n margin-right: 0;\n}\n.ycn-action-bar-group_pull_center {\n margin-left: auto;\n margin-right: auto;\n}";
118
- styleInject(css_248z$b);
117
+ var css_248z$d = ".ycn-action-bar-group {\n display: flex;\n flex-flow: row nowrap;\n align-items: center;\n justify-content: flex-start;\n margin: 0;\n padding: 0;\n}\n.ycn-action-bar-group_pull_left {\n margin-left: 0;\n margin-right: auto;\n}\n.ycn-action-bar-group_pull_right {\n margin-left: auto;\n margin-right: 0;\n}\n.ycn-action-bar-group_pull_center {\n margin-left: auto;\n margin-right: auto;\n}";
118
+ styleInject(css_248z$d);
119
119
 
120
- const b$b = block('action-bar-group');
120
+ const b$e = block('action-bar-group');
121
121
  const ActionBarGroup = ({ children, className, pull }) => {
122
- return (React__default["default"].createElement("ul", { className: b$b({ pull }, className), role: "group" }, children));
122
+ return (React__default["default"].createElement("ul", { className: b$e({ pull }, className), role: "group" }, children));
123
123
  };
124
124
  ActionBarGroup.displayName = 'ActionBar.Group';
125
125
 
126
- var css_248z$a = ".ycn-action-bar-item {\n list-style: none;\n margin: 0;\n padding: 0;\n}\n.ycn-action-bar-item_pull_left {\n margin-left: 0;\n margin-right: auto;\n}\n.ycn-action-bar-item_pull_right {\n margin-left: auto;\n margin-right: 0;\n}\n.ycn-action-bar-item_pull_center {\n margin-left: auto;\n margin-right: auto;\n}\n.ycn-action-bar-item + .ycn-action-bar-item_spacing {\n margin-left: 8px;\n}";
127
- styleInject(css_248z$a);
126
+ var css_248z$c = ".ycn-action-bar-item {\n list-style: none;\n margin: 0;\n padding: 0;\n}\n.ycn-action-bar-item_pull_left {\n margin-left: 0;\n margin-right: auto;\n}\n.ycn-action-bar-item_pull_right {\n margin-left: auto;\n margin-right: 0;\n}\n.ycn-action-bar-item_pull_center {\n margin-left: auto;\n margin-right: auto;\n}\n.ycn-action-bar-item + .ycn-action-bar-item_spacing {\n margin-left: 8px;\n}";
127
+ styleInject(css_248z$c);
128
128
 
129
- const b$a = block('action-bar-item');
129
+ const b$d = block('action-bar-item');
130
130
  const ActionBarItem = ({ children, className, pull, spacing = true }) => {
131
- return React__default["default"].createElement("li", { className: b$a({ pull, spacing }, className) }, children);
131
+ return React__default["default"].createElement("li", { className: b$d({ pull, spacing }, className) }, children);
132
132
  };
133
133
  ActionBarItem.displayName = 'ActionBar.Item';
134
134
 
135
- var css_248z$9 = ".ycn-action-bar-section {\n display: flex;\n flex-flow: row nowrap;\n justify-content: flex-start;\n align-items: stretch;\n}\n.ycn-action-bar-section + .ycn-action-bar-section {\n border-left: solid 1px var(--yc-color-line-generic);\n}\n.ycn-action-bar-section_type_primary {\n flex: 1 1 auto;\n padding-left: 20px;\n padding-right: 20px;\n}\n.ycn-action-bar-section_type_secondary {\n padding-left: 6px;\n padding-right: 6px;\n}";
136
- styleInject(css_248z$9);
135
+ var css_248z$b = ".ycn-action-bar-section {\n display: flex;\n flex-flow: row nowrap;\n justify-content: flex-start;\n align-items: stretch;\n}\n.ycn-action-bar-section + .ycn-action-bar-section {\n border-left: solid 1px var(--yc-color-line-generic);\n}\n.ycn-action-bar-section_type_primary {\n flex: 1 1 auto;\n padding-left: 20px;\n padding-right: 20px;\n}\n.ycn-action-bar-section_type_secondary {\n padding-left: 6px;\n padding-right: 6px;\n}";
136
+ styleInject(css_248z$b);
137
137
 
138
- const b$9 = block('action-bar-section');
138
+ const b$c = block('action-bar-section');
139
139
  const ActionBarSection = ({ children, type = 'primary' }) => {
140
- return React__default["default"].createElement("div", { className: b$9({ type }) }, children);
140
+ return React__default["default"].createElement("div", { className: b$c({ type }) }, children);
141
141
  };
142
142
  ActionBarSection.displayName = 'ActionBar.Section';
143
143
 
144
- var css_248z$8 = ".ycn-action-bar-separator {\n list-style: none;\n margin: 0;\n padding: 0;\n margin-left: 6px;\n margin-right: 6px;\n border-right: solid 1px var(--yc-color-line-generic);\n height: 40px;\n}";
145
- styleInject(css_248z$8);
144
+ var css_248z$a = ".ycn-action-bar-separator {\n list-style: none;\n margin: 0;\n padding: 0;\n margin-left: 6px;\n margin-right: 6px;\n border-right: solid 1px var(--yc-color-line-generic);\n height: 40px;\n}";
145
+ styleInject(css_248z$a);
146
146
 
147
- const b$8 = block('action-bar-separator');
147
+ const b$b = block('action-bar-separator');
148
148
  const ActionBarSeparator = () => {
149
- return React__default["default"].createElement("li", { role: "separator", className: b$8() });
149
+ return React__default["default"].createElement("li", { role: "separator", className: b$b() });
150
150
  };
151
151
  ActionBarSeparator.displayName = 'ActionBar.Separator';
152
152
 
153
- var css_248z$7 = ".ycn-action-bar {\n box-sizing: border-box;\n height: 40px;\n border-bottom: solid 1px var(--yc-color-line-generic);\n display: flex;\n flex-flow: row nowrap;\n justify-content: flex-start;\n align-items: stretch;\n}";
154
- styleInject(css_248z$7);
153
+ var css_248z$9 = ".ycn-action-bar {\n box-sizing: border-box;\n height: 40px;\n border-bottom: solid 1px var(--yc-color-line-generic);\n display: flex;\n flex-flow: row nowrap;\n justify-content: flex-start;\n align-items: stretch;\n}";
154
+ styleInject(css_248z$9);
155
155
 
156
- const b$7 = block('action-bar');
156
+ const b$a = block('action-bar');
157
157
  const ActionBar = ({ children, className, 'aria-label': ariaLabel }) => {
158
- return (React__default["default"].createElement("section", { className: b$7(null, className), "aria-label": ariaLabel }, children));
158
+ return (React__default["default"].createElement("section", { className: b$a(null, className), "aria-label": ariaLabel }, children));
159
159
  };
160
160
  ActionBar.displayName = 'ActionBar';
161
161
  const PublicActionBar = Object.assign(ActionBar, {
@@ -175,7 +175,7 @@ exports.Dict = void 0;
175
175
  const ASIDE_HEADER_FOOTER_ICON_SIZE = 20;
176
176
  const ASIDE_HEADER_COMPACT_WIDTH = 56;
177
177
  const ASIDE_HEADER_EXPANDED_WIDTH = 236;
178
- const defaultDict = {
178
+ const defaultDict$1 = {
179
179
  [exports.Dict.CollapseButton]: 'Collapse',
180
180
  [exports.Dict.ExpandButton]: 'Expand',
181
181
  [exports.Dict.MoreButton]: 'More',
@@ -185,14 +185,12 @@ function _extends$4() {
185
185
  _extends$4 = Object.assign ? Object.assign.bind() : function (target) {
186
186
  for (var i = 1; i < arguments.length; i++) {
187
187
  var source = arguments[i];
188
-
189
188
  for (var key in source) {
190
189
  if (Object.prototype.hasOwnProperty.call(source, key)) {
191
190
  target[key] = source[key];
192
191
  }
193
192
  }
194
193
  }
195
-
196
194
  return target;
197
195
  };
198
196
  return _extends$4.apply(this, arguments);
@@ -203,13 +201,11 @@ function _objectWithoutPropertiesLoose(source, excluded) {
203
201
  var target = {};
204
202
  var sourceKeys = Object.keys(source);
205
203
  var key, i;
206
-
207
204
  for (i = 0; i < sourceKeys.length; i++) {
208
205
  key = sourceKeys[i];
209
206
  if (excluded.indexOf(key) >= 0) continue;
210
207
  target[key] = source[key];
211
208
  }
212
-
213
209
  return target;
214
210
  }
215
211
 
@@ -1476,6 +1472,10 @@ var classNamesShape = process.env.NODE_ENV !== 'production' ? propTypes.exports.
1476
1472
 
1477
1473
  var TransitionGroupContext = React__default["default"].createContext(null);
1478
1474
 
1475
+ var forceReflow = function forceReflow(node) {
1476
+ return node.scrollTop;
1477
+ };
1478
+
1479
1479
  var UNMOUNTED = 'unmounted';
1480
1480
  var EXITED = 'exited';
1481
1481
  var ENTERING = 'entering';
@@ -1695,6 +1695,14 @@ var Transition = /*#__PURE__*/function (_React$Component) {
1695
1695
  this.cancelNextCallback();
1696
1696
 
1697
1697
  if (nextStatus === ENTERING) {
1698
+ if (this.props.unmountOnExit || this.props.mountOnEnter) {
1699
+ var node = this.props.nodeRef ? this.props.nodeRef.current : ReactDOM__default["default"].findDOMNode(this); // https://github.com/reactjs/react-transition-group/pull/749
1700
+ // With unmountOnExit or mountOnEnter, the enter animation should happen at the transition between `exited` and `entering`.
1701
+ // To make the animation happen, we have to separate each rendering and avoid being processed as batched.
1702
+
1703
+ if (node) forceReflow(node);
1704
+ }
1705
+
1698
1706
  this.performEnter(mounting);
1699
1707
  } else {
1700
1708
  this.performExit();
@@ -1887,7 +1895,10 @@ Transition.propTypes = process.env.NODE_ENV !== "production" ? {
1887
1895
  * [test/CSSTransition-test.js](https://github.com/reactjs/react-transition-group/blob/13435f897b3ab71f6e19d724f145596f5910581c/test/CSSTransition-test.js#L362-L437)).
1888
1896
  */
1889
1897
  nodeRef: propTypes.exports.shape({
1890
- current: typeof Element === 'undefined' ? propTypes.exports.any : propTypes.exports.instanceOf(Element)
1898
+ current: typeof Element === 'undefined' ? propTypes.exports.any : function (propValue, key, componentName, location, propFullName, secret) {
1899
+ var value = propValue[key];
1900
+ return propTypes.exports.instanceOf(value && 'ownerDocument' in value ? value.ownerDocument.defaultView.Element : Element)(propValue, key, componentName, location, propFullName, secret);
1901
+ }
1891
1902
  }),
1892
1903
 
1893
1904
  /**
@@ -2295,13 +2306,12 @@ var CSSTransition = /*#__PURE__*/function (_React$Component) {
2295
2306
 
2296
2307
  if (type === 'appear' && phase === 'done' && doneClassName) {
2297
2308
  className += " " + doneClassName;
2298
- } // This is for to force a repaint,
2309
+ } // This is to force a repaint,
2299
2310
  // which is necessary in order to transition styles when adding a class name.
2300
2311
 
2301
2312
 
2302
2313
  if (phase === 'active') {
2303
- /* eslint-disable no-unused-expressions */
2304
- node && node.scrollTop;
2314
+ if (node) forceReflow(node);
2305
2315
  }
2306
2316
 
2307
2317
  if (className) {
@@ -2487,7 +2497,6 @@ function _assertThisInitialized(self) {
2487
2497
  if (self === void 0) {
2488
2498
  throw new ReferenceError("this hasn't been initialised - super() hasn't been called");
2489
2499
  }
2490
-
2491
2500
  return self;
2492
2501
  }
2493
2502
 
@@ -3191,15 +3200,15 @@ SwitchTransition.defaultProps = {
3191
3200
  mode: modes.out
3192
3201
  };
3193
3202
 
3194
- var css_248z$6 = ".ycn-drawer__item {\n position: absolute;\n left: 0;\n top: 0;\n bottom: 0;\n height: 100%;\n will-change: transform;\n background-color: var(--yc-color-base-background);\n}\n.ycn-drawer__item-transition-enter {\n transform: translate(-100%, 0);\n}\n.ycn-drawer__item-transition-enter-active {\n transform: translate(0, 0);\n transition: transform 300ms;\n}\n.ycn-drawer__item-transition-enter-done {\n filter: blur(0px);\n transform: translateZ(0);\n}\n.ycn-drawer__item-transition-exit {\n transform: translate(0, 0);\n}\n.ycn-drawer__item-transition-exit-active {\n transform: translate(-100%, 0);\n transition: transform 300ms;\n}\n.ycn-drawer__item-transition-exit-done {\n visibility: hidden;\n}\n.ycn-drawer__veil {\n position: absolute;\n left: 0;\n right: 0;\n bottom: 0;\n top: 0;\n background-color: var(--yc-color-sfx-veil);\n}\n.ycn-drawer__veil-transition-enter {\n opacity: 0;\n}\n.ycn-drawer__veil-transition-enter-active {\n opacity: 1;\n transition: opacity 300ms;\n}\n.ycn-drawer__veil-transition-exit {\n opacity: 1;\n}\n.ycn-drawer__veil-transition-exit-active {\n opacity: 0;\n transition: opacity 300ms;\n}\n.ycn-drawer__veil-transition-exit-done {\n visibility: hidden;\n}";
3195
- styleInject(css_248z$6);
3203
+ var css_248z$8 = ".ycn-drawer__item {\n position: absolute;\n left: 0;\n top: 0;\n bottom: 0;\n height: 100%;\n will-change: transform;\n background-color: var(--yc-color-base-background);\n}\n.ycn-drawer__item-transition-enter {\n transform: translate(-100%, 0);\n}\n.ycn-drawer__item-transition-enter-active {\n transform: translate(0, 0);\n transition: transform 300ms;\n}\n.ycn-drawer__item-transition-enter-done {\n filter: blur(0px);\n transform: translateZ(0);\n}\n.ycn-drawer__item-transition-exit {\n transform: translate(0, 0);\n}\n.ycn-drawer__item-transition-exit-active {\n transform: translate(-100%, 0);\n transition: transform 300ms;\n}\n.ycn-drawer__item-transition-exit-done {\n visibility: hidden;\n}\n.ycn-drawer__veil {\n position: absolute;\n left: 0;\n right: 0;\n bottom: 0;\n top: 0;\n background-color: var(--yc-color-sfx-veil);\n}\n.ycn-drawer__veil-transition-enter {\n opacity: 0;\n}\n.ycn-drawer__veil-transition-enter-active {\n opacity: 1;\n transition: opacity 300ms;\n}\n.ycn-drawer__veil-transition-exit {\n opacity: 1;\n}\n.ycn-drawer__veil-transition-exit-active {\n opacity: 0;\n transition: opacity 300ms;\n}\n.ycn-drawer__veil-transition-exit-done {\n visibility: hidden;\n}";
3204
+ styleInject(css_248z$8);
3196
3205
 
3197
- const b$6 = block('drawer');
3206
+ const b$9 = block('drawer');
3198
3207
  const TIMEOUT = 300;
3199
3208
  const DrawerItem = ({ visible, content, className }) => {
3200
3209
  const itemRef = React__default["default"].useRef(null);
3201
- return (React__default["default"].createElement(CSSTransition, { in: visible, timeout: TIMEOUT, unmountOnExit: true, classNames: b$6('item-transition'), nodeRef: itemRef },
3202
- React__default["default"].createElement("div", { ref: itemRef, className: b$6('item', className) }, content)));
3210
+ return (React__default["default"].createElement(CSSTransition, { in: visible, timeout: TIMEOUT, unmountOnExit: true, classNames: b$9('item-transition'), nodeRef: itemRef },
3211
+ React__default["default"].createElement("div", { ref: itemRef, className: b$9('item', className) }, content)));
3203
3212
  };
3204
3213
  const Drawer = ({ className, children, style, onVeilClick, onEscape, preventScrollBody = true, }) => {
3205
3214
  let someItemVisible = false;
@@ -3257,9 +3266,9 @@ const Drawer = ({ className, children, style, onVeilClick, onEscape, preventScro
3257
3266
  const veilRef = React__default["default"].useRef(null);
3258
3267
  return (React__default["default"].createElement(Transition, { in: someItemVisible, timeout: { enter: 0, exit: TIMEOUT }, mountOnEnter: true, unmountOnExit: true, nodeRef: containerRef }, (state) => {
3259
3268
  const childrenVisible = someItemVisible && state === 'entered';
3260
- return (React__default["default"].createElement("div", { ref: containerRef, className: b$6(null, className), style: style },
3261
- React__default["default"].createElement(CSSTransition, { in: childrenVisible, timeout: TIMEOUT, unmountOnExit: true, classNames: b$6('veil-transition'), nodeRef: veilRef },
3262
- React__default["default"].createElement("div", { ref: veilRef, className: b$6('veil'), onClick: onVeilClick })),
3269
+ return (React__default["default"].createElement("div", { ref: containerRef, className: b$9(null, className), style: style },
3270
+ React__default["default"].createElement(CSSTransition, { in: childrenVisible, timeout: TIMEOUT, unmountOnExit: true, classNames: b$9('veil-transition'), nodeRef: veilRef },
3271
+ React__default["default"].createElement("div", { ref: veilRef, className: b$9('veil'), onClick: onVeilClick })),
3263
3272
  React__default["default"].Children.map(children, (child) => {
3264
3273
  const childElem = child;
3265
3274
  if (childElem.type === DrawerItem) {
@@ -3271,10 +3280,10 @@ const Drawer = ({ className, children, style, onVeilClick, onEscape, preventScro
3271
3280
  }));
3272
3281
  };
3273
3282
 
3274
- var css_248z$5 = ".ycn-logo {\n display: flex;\n align-items: center;\n flex-shrink: 0;\n height: 40px;\n}\n.ycn-logo__logo-btn-place {\n flex-shrink: 0;\n width: var(--aside-header-min-width);\n display: flex;\n align-items: center;\n justify-content: center;\n}\n.ycn-logo__btn-logo.yc-button_view_flat.yc-button_size_l {\n --yc-button-height: 38px;\n}\n.ycn-logo__logo {\n font-size: var(--yc-text-body-2-font-size);\n line-height: var(--yc-text-body-2-line-height);\n font-weight: var(--yc-text-body-font-weight);\n vertical-align: middle;\n}\n.ycn-logo__logo-link, .ycn-logo__logo-link:hover, .ycn-logo__logo-link:active, .ycn-logo__logo-link:visited, .ycn-logo__logo-link:focus {\n text-decoration: none;\n outline: none;\n color: inherit;\n}\n.yc-root .ycn-logo__btn-logo.button2_theme_flat.button2_hovered_yes::before {\n background-color: transparent;\n}";
3275
- styleInject(css_248z$5);
3283
+ var css_248z$7 = ".ycn-logo {\n display: flex;\n align-items: center;\n flex-shrink: 0;\n height: 40px;\n}\n.ycn-logo__logo-btn-place {\n flex-shrink: 0;\n width: var(--aside-header-min-width);\n display: flex;\n align-items: center;\n justify-content: center;\n}\n.ycn-logo__btn-logo.yc-button_view_flat.yc-button_size_l {\n --yc-button-height: 38px;\n}\n.ycn-logo__logo {\n font-size: var(--yc-text-body-2-font-size);\n line-height: var(--yc-text-body-2-line-height);\n font-weight: var(--yc-text-body-font-weight);\n vertical-align: middle;\n}\n.ycn-logo__logo-link, .ycn-logo__logo-link:hover, .ycn-logo__logo-link:active, .ycn-logo__logo-link:visited, .ycn-logo__logo-link:focus {\n text-decoration: none;\n outline: none;\n color: inherit;\n}\n.yc-root .ycn-logo__btn-logo.button2_theme_flat.button2_hovered_yes::before {\n background-color: transparent;\n}";
3284
+ styleInject(css_248z$7);
3276
3285
 
3277
- const b$5 = block('logo');
3286
+ const b$8 = block('logo');
3278
3287
  const Logo = ({ text, compact, icon, iconSrc, iconClassName, iconSize = 24, textSize = 15, href = '/', wrapper, onClick, }) => {
3279
3288
  const hasClickHandler = typeof onClick === 'function';
3280
3289
  const hasWrapper = typeof wrapper === 'function';
@@ -3292,18 +3301,18 @@ const Logo = ({ text, compact, icon, iconSrc, iconClassName, iconSize = 24, text
3292
3301
  else if (icon) {
3293
3302
  buttonIcon = React__default["default"].createElement(uikit.Icon, { data: icon, size: iconSize, className: iconClassName });
3294
3303
  }
3295
- const button = (React__default["default"].createElement(uikit.Button, Object.assign({ view: "flat", size: "l", className: b$5('btn-logo'), component: hasWrapper ? 'span' : undefined, onClick: onClick }, linkProps), buttonIcon));
3304
+ const button = (React__default["default"].createElement(uikit.Button, Object.assign({ view: "flat", size: "l", className: b$8('btn-logo'), component: hasWrapper ? 'span' : undefined, onClick: onClick }, linkProps), buttonIcon));
3296
3305
  let logo;
3297
3306
  if (typeof text === 'function') {
3298
3307
  logo = text();
3299
3308
  }
3300
3309
  else {
3301
- logo = (React__default["default"].createElement("div", { className: b$5('logo'), style: { fontSize: textSize } }, text));
3310
+ logo = (React__default["default"].createElement("div", { className: b$8('logo'), style: { fontSize: textSize } }, text));
3302
3311
  }
3303
- return (React__default["default"].createElement("div", { className: b$5() },
3304
- React__default["default"].createElement("div", { className: b$5('logo-btn-place') }, hasWrapper ? wrapper(button, compact) : button),
3312
+ return (React__default["default"].createElement("div", { className: b$8() },
3313
+ React__default["default"].createElement("div", { className: b$8('logo-btn-place') }, hasWrapper ? wrapper(button, compact) : button),
3305
3314
  !compact &&
3306
- (hasWrapper ? (wrapper(logo, compact)) : (React__default["default"].createElement("a", Object.assign({}, linkProps, { className: b$5('logo-link'), onClick: onClick }), logo)))));
3315
+ (hasWrapper ? (wrapper(logo, compact)) : (React__default["default"].createElement("a", Object.assign({}, linkProps, { className: b$8('logo-link'), onClick: onClick }), logo)))));
3307
3316
  };
3308
3317
 
3309
3318
  var classCallCheck = function (instance, Constructor) {
@@ -3835,10 +3844,10 @@ function getItemsMinHeight(items) {
3835
3844
  (pinnedItems.length === items.length ? 0 : ITEM_HEIGHT));
3836
3845
  }
3837
3846
 
3838
- var css_248z$4 = ".ycn-item-tooltip.yc-popup {\n animation-name: none;\n box-shadow: none;\n border: none;\n}\n.ycn-item-tooltip__text {\n padding: 6px 12px;\n background-color: var(--yc-color-base-float-heavy);\n color: var(--yc-color-text-light-primary);\n border-radius: 4px;\n}";
3839
- styleInject(css_248z$4);
3847
+ var css_248z$6 = ".ycn-item-tooltip.yc-popup {\n animation-name: none;\n box-shadow: none;\n border: none;\n}\n.ycn-item-tooltip__text {\n padding: 6px 12px;\n background-color: var(--yc-color-base-float-heavy);\n color: var(--yc-color-text-light-primary);\n border-radius: 4px;\n}";
3848
+ styleInject(css_248z$6);
3840
3849
 
3841
- const b$4 = block('item-tooltip');
3850
+ const b$7 = block('item-tooltip');
3842
3851
  const popupPlacement = ['right'];
3843
3852
  const ItemTooltip = ({ anchor, text }) => {
3844
3853
  const anchorRef = React__default["default"].useRef(anchor);
@@ -3848,28 +3857,28 @@ const ItemTooltip = ({ anchor, text }) => {
3848
3857
  if (!anchor) {
3849
3858
  return null;
3850
3859
  }
3851
- return (React__default["default"].createElement(uikit.Popup, { className: b$4(), open: true, anchorRef: anchorRef, placement: popupPlacement, disableEscapeKeyDown: true, disableOutsideClick: true, disableLayer: true },
3852
- React__default["default"].createElement("div", { className: b$4('text') }, text)));
3860
+ return (React__default["default"].createElement(uikit.Popup, { className: b$7(), open: true, anchorRef: anchorRef, placement: popupPlacement, disableEscapeKeyDown: true, disableOutsideClick: true, disableLayer: true },
3861
+ React__default["default"].createElement("div", { className: b$7('text') }, text)));
3853
3862
  };
3854
3863
 
3855
- var css_248z$3 = ".ycn-composite-bar-item {\n --composite-bar-item-action-size: 36px;\n display: flex;\n width: 100%;\n height: 100%;\n align-items: center;\n cursor: pointer;\n}\n.ycn-composite-bar-item__icon {\n color: var(--yc-color-text-misc);\n}\n.ycn-composite-bar-item__icon-place {\n flex-shrink: 0;\n width: var(--aside-header-min-width);\n display: flex;\n align-items: center;\n justify-content: center;\n height: 100%;\n}\n.ycn-composite-bar-item__title {\n display: flex;\n overflow: hidden;\n}\n.ycn-composite-bar-item__title-text {\n white-space: nowrap;\n text-overflow: ellipsis;\n overflow: hidden;\n}\n.ycn-composite-bar-item__title-adornment {\n margin: 0 10px;\n}\n.ycn-composite-bar-item__collapse-item {\n display: flex;\n padding: 0 16px;\n align-items: center;\n width: 100%;\n height: 100%;\n cursor: pointer;\n}\n.ycn-composite-bar-item__collapse-item .ycn-composite-bar-item__title-adornment {\n margin-right: 0;\n}\n.ycn-composite-bar-item__menu-divider {\n margin: 0 8px;\n width: 100%;\n border-top: 1px solid var(--yc-color-line-generic);\n cursor: default;\n}\n.ycn-composite-bar-item__collapse-items-popup-content {\n padding: 4px 0;\n}\n.ycn-composite-bar-item__link {\n display: flex;\n width: 100%;\n height: 100%;\n align-items: center;\n}\n.ycn-composite-bar-item__link, .ycn-composite-bar-item__link:hover, .ycn-composite-bar-item__link:active, .ycn-composite-bar-item__link:visited, .ycn-composite-bar-item__link:focus {\n text-decoration: none;\n outline: none;\n color: inherit;\n}\n.ycn-composite-bar-item__btn-icon {\n width: 100%;\n height: 100%;\n display: flex;\n align-items: center;\n justify-content: center;\n}\n.ycn-composite-bar-item_type_action {\n justify-content: center;\n height: var(--composite-bar-item-action-size);\n margin: 0 10px 8px;\n background: var(--yc-color-base-float);\n box-shadow: 0px 0px 0px 1px rgba(0, 0, 0, 0.03), 0px 5px 6px rgba(0, 0, 0, 0.12);\n border-radius: var(--composite-bar-item-action-size);\n transition: transform 0.1s ease-out, background-color 0.15s linear;\n}\n.ycn-composite-bar-item_type_action:focus {\n box-shadow: 0 0 0 2px var(--yc-color-line-misc);\n}\n.ycn-composite-bar-item_type_action:focus:not(:focus-visible) {\n box-shadow: none;\n}\n.ycn-composite-bar-item_type_action:hover {\n background-color: var(--yc-color-base-float-hover);\n}\n.ycn-composite-bar-item_type_action:active {\n box-shadow: 0 1px 2px var(--yc-color-sfx-shadow);\n transition: none;\n transform: scale(0.96);\n}\n.ycn-composite-bar-item_type_action .ycn-composite-bar-item__icon-place {\n width: var(--composite-bar-item-action-size);\n}\n.ycn-composite-bar-item_type_action .ycn-composite-bar-item__title {\n margin-right: 16px;\n}\n.ycn-composite-bar-item:not(.ycn-composite-bar-item_compact).ycn-composite-bar-item_current.ycn-composite-bar-item_type_regular {\n background-color: var(--yc-color-base-selection);\n}\n.ycn-composite-bar-item:not(.ycn-composite-bar-item_compact):not(.ycn-composite-bar-item_current):hover.ycn-composite-bar-item_type_regular {\n background-color: var(--yc-color-base-simple-hover);\n}\n.ycn-composite-bar-item_compact.ycn-composite-bar-item_type_action {\n width: var(--composite-bar-item-action-size);\n}\n.ycn-composite-bar-item_compact.ycn-composite-bar-item_type_action .ycn-composite-bar-item__title {\n margin: 0;\n}\n.ycn-composite-bar-item_compact.ycn-composite-bar-item_current.ycn-composite-bar-item_type_regular .ycn-composite-bar-item__btn-icon {\n position: relative;\n background-color: transparent;\n}\n.ycn-composite-bar-item_compact.ycn-composite-bar-item_current.ycn-composite-bar-item_type_regular .ycn-composite-bar-item__btn-icon::before {\n content: \"\";\n position: absolute;\n top: 50%;\n left: 50%;\n z-index: -1;\n width: 38px;\n height: 38px;\n margin-top: -19px;\n margin-left: -19px;\n border-radius: 7px;\n}\n.ycn-composite-bar-item_compact.ycn-composite-bar-item_current.ycn-composite-bar-item_type_regular .ycn-composite-bar-item__btn-icon::before {\n background-color: var(--yc-color-base-selection);\n}\n.ycn-composite-bar-item_compact:not(.ycn-composite-bar-item_current):hover.ycn-composite-bar-item_type_regular .ycn-composite-bar-item__btn-icon {\n position: relative;\n background-color: transparent;\n}\n.ycn-composite-bar-item_compact:not(.ycn-composite-bar-item_current):hover.ycn-composite-bar-item_type_regular .ycn-composite-bar-item__btn-icon::before {\n content: \"\";\n position: absolute;\n top: 50%;\n left: 50%;\n z-index: -1;\n width: 38px;\n height: 38px;\n margin-top: -19px;\n margin-left: -19px;\n border-radius: 7px;\n}\n.ycn-composite-bar-item_compact:not(.ycn-composite-bar-item_current):hover.ycn-composite-bar-item_type_regular .ycn-composite-bar-item__btn-icon::before {\n background-color: var(--yc-color-base-simple-hover);\n}";
3856
- styleInject(css_248z$3);
3864
+ var css_248z$5 = ".ycn-composite-bar-item {\n --composite-bar-item-action-size: 36px;\n display: flex;\n width: 100%;\n height: 100%;\n align-items: center;\n cursor: pointer;\n}\n.ycn-composite-bar-item__icon {\n color: var(--yc-color-text-misc);\n}\n.ycn-composite-bar-item__icon-place {\n flex-shrink: 0;\n width: var(--aside-header-min-width);\n display: flex;\n align-items: center;\n justify-content: center;\n height: 100%;\n}\n.ycn-composite-bar-item__title {\n display: flex;\n overflow: hidden;\n}\n.ycn-composite-bar-item__title-text {\n white-space: nowrap;\n text-overflow: ellipsis;\n overflow: hidden;\n}\n.ycn-composite-bar-item__title-adornment {\n margin: 0 10px;\n}\n.ycn-composite-bar-item__collapse-item {\n display: flex;\n padding: 0 16px;\n align-items: center;\n width: 100%;\n height: 100%;\n cursor: pointer;\n}\n.ycn-composite-bar-item__collapse-item .ycn-composite-bar-item__title-adornment {\n margin-right: 0;\n}\n.ycn-composite-bar-item__menu-divider {\n margin: 0 8px;\n width: 100%;\n border-top: 1px solid var(--yc-color-line-generic);\n cursor: default;\n}\n.ycn-composite-bar-item__collapse-items-popup-content {\n padding: 4px 0;\n}\n.ycn-composite-bar-item__link {\n display: flex;\n width: 100%;\n height: 100%;\n align-items: center;\n}\n.ycn-composite-bar-item__link, .ycn-composite-bar-item__link:hover, .ycn-composite-bar-item__link:active, .ycn-composite-bar-item__link:visited, .ycn-composite-bar-item__link:focus {\n text-decoration: none;\n outline: none;\n color: inherit;\n}\n.ycn-composite-bar-item__btn-icon {\n width: 100%;\n height: 100%;\n display: flex;\n align-items: center;\n justify-content: center;\n}\n.ycn-composite-bar-item_type_action {\n justify-content: center;\n height: var(--composite-bar-item-action-size);\n margin: 0 10px 8px;\n background: var(--yc-color-base-float);\n box-shadow: 0px 0px 0px 1px rgba(0, 0, 0, 0.03), 0px 5px 6px rgba(0, 0, 0, 0.12);\n border-radius: var(--composite-bar-item-action-size);\n transition: transform 0.1s ease-out, background-color 0.15s linear;\n}\n.ycn-composite-bar-item_type_action:focus {\n box-shadow: 0 0 0 2px var(--yc-color-line-misc);\n}\n.ycn-composite-bar-item_type_action:focus:not(:focus-visible) {\n box-shadow: none;\n}\n.ycn-composite-bar-item_type_action:hover {\n background-color: var(--yc-color-base-float-hover);\n}\n.ycn-composite-bar-item_type_action:active {\n box-shadow: 0 1px 2px var(--yc-color-sfx-shadow);\n transition: none;\n transform: scale(0.96);\n}\n.ycn-composite-bar-item_type_action .ycn-composite-bar-item__icon-place {\n width: var(--composite-bar-item-action-size);\n}\n.ycn-composite-bar-item_type_action .ycn-composite-bar-item__title {\n margin-right: 16px;\n}\n.ycn-composite-bar-item:not(.ycn-composite-bar-item_compact).ycn-composite-bar-item_current.ycn-composite-bar-item_type_regular {\n background-color: var(--yc-color-base-selection);\n}\n.ycn-composite-bar-item:not(.ycn-composite-bar-item_compact):not(.ycn-composite-bar-item_current):hover.ycn-composite-bar-item_type_regular {\n background-color: var(--yc-color-base-simple-hover);\n}\n.ycn-composite-bar-item_compact.ycn-composite-bar-item_type_action {\n width: var(--composite-bar-item-action-size);\n}\n.ycn-composite-bar-item_compact.ycn-composite-bar-item_type_action .ycn-composite-bar-item__title {\n margin: 0;\n}\n.ycn-composite-bar-item_compact.ycn-composite-bar-item_current.ycn-composite-bar-item_type_regular .ycn-composite-bar-item__btn-icon {\n position: relative;\n background-color: transparent;\n}\n.ycn-composite-bar-item_compact.ycn-composite-bar-item_current.ycn-composite-bar-item_type_regular .ycn-composite-bar-item__btn-icon::before {\n content: \"\";\n position: absolute;\n top: 50%;\n left: 50%;\n z-index: -1;\n width: 38px;\n height: 38px;\n margin-top: -19px;\n margin-left: -19px;\n border-radius: 7px;\n}\n.ycn-composite-bar-item_compact.ycn-composite-bar-item_current.ycn-composite-bar-item_type_regular .ycn-composite-bar-item__btn-icon::before {\n background-color: var(--yc-color-base-selection);\n}\n.ycn-composite-bar-item_compact:not(.ycn-composite-bar-item_current):hover.ycn-composite-bar-item_type_regular .ycn-composite-bar-item__btn-icon {\n position: relative;\n background-color: transparent;\n}\n.ycn-composite-bar-item_compact:not(.ycn-composite-bar-item_current):hover.ycn-composite-bar-item_type_regular .ycn-composite-bar-item__btn-icon::before {\n content: \"\";\n position: absolute;\n top: 50%;\n left: 50%;\n z-index: -1;\n width: 38px;\n height: 38px;\n margin-top: -19px;\n margin-left: -19px;\n border-radius: 7px;\n}\n.ycn-composite-bar-item_compact:not(.ycn-composite-bar-item_current):hover.ycn-composite-bar-item_type_regular .ycn-composite-bar-item__btn-icon::before {\n background-color: var(--yc-color-base-simple-hover);\n}";
3865
+ styleInject(css_248z$5);
3857
3866
 
3858
- const b$3 = block('composite-bar-item');
3867
+ const b$6 = block('composite-bar-item');
3859
3868
  function renderItemTitle(item) {
3860
- let titleNode = React__default["default"].createElement("div", { className: b$3('title-text') }, item.title);
3869
+ let titleNode = React__default["default"].createElement("div", { className: b$6('title-text') }, item.title);
3861
3870
  if (item.rightAdornment) {
3862
3871
  titleNode = (React__default["default"].createElement(React__default["default"].Fragment, null,
3863
3872
  titleNode,
3864
- React__default["default"].createElement("div", { className: b$3('title-adornment') }, item.rightAdornment)));
3873
+ React__default["default"].createElement("div", { className: b$6('title-adornment') }, item.rightAdornment)));
3865
3874
  }
3866
3875
  return titleNode;
3867
3876
  }
3868
3877
  const defaultPopupPlacement = ['right-end'];
3869
3878
  const defaultPopupOffset = [-20, 8];
3870
- const Item = ({ item, compact, className, collapseItems, onMouseLeave, onMouseEnter, enableTooltip = true, popupVisible = false, popupAnchor, popupPlacement = defaultPopupPlacement, popupOffset = defaultPopupOffset, renderPopupContent, onClosePopup, }) => {
3879
+ const Item = ({ item, compact, className, collapseItems, onMouseLeave, onMouseEnter, enableTooltip = true, popupVisible = false, popupAnchor, popupPlacement = defaultPopupPlacement, popupOffset = defaultPopupOffset, renderPopupContent, onClosePopup, onItemClick, }) => {
3871
3880
  if (item.type === 'divider') {
3872
- return React__default["default"].createElement("div", { className: b$3('menu-divider') });
3881
+ return React__default["default"].createElement("div", { className: b$6('menu-divider') });
3873
3882
  }
3874
3883
  const [tooltipAnchor, setTooltipAnchor] = React__default["default"].useState(null);
3875
3884
  const [open, toggleOpen] = React__default["default"].useState(false);
@@ -3890,14 +3899,19 @@ const Item = ({ item, compact, className, collapseItems, onMouseLeave, onMouseEn
3890
3899
  }
3891
3900
  onClosePopup === null || onClosePopup === void 0 ? void 0 : onClosePopup();
3892
3901
  }, [onClosePopup]);
3893
- const node = (React__default["default"].createElement("div", { className: b$3({ type, current, compact }, className), ref: ref, onClick: () => {
3894
- if (typeof item.onItemClick === 'function') {
3895
- item.onItemClick(item, false);
3896
- }
3902
+ const node = (React__default["default"].createElement("div", { className: b$6({ type, current, compact }, className), ref: ref, onClick: () => {
3897
3903
  if (collapsedItem) {
3904
+ /**
3905
+ * If we call onItemClick for collapsedItem then:
3906
+ * - User get unexpected item in onItemClick callback
3907
+ * - onClosePanel calls twice for each popuped item, as result it will prevent opening of panelItems
3908
+ */
3898
3909
  toggleOpen(!open);
3899
3910
  setTooltipAnchor(null);
3900
3911
  }
3912
+ else {
3913
+ onItemClick === null || onItemClick === void 0 ? void 0 : onItemClick(item, false);
3914
+ }
3901
3915
  }, onMouseEnter: () => {
3902
3916
  if (!compact) {
3903
3917
  onMouseEnter === null || onMouseEnter === void 0 ? void 0 : onMouseEnter();
@@ -3907,7 +3921,7 @@ const Item = ({ item, compact, className, collapseItems, onMouseLeave, onMouseEn
3907
3921
  onMouseLeave === null || onMouseLeave === void 0 ? void 0 : onMouseLeave();
3908
3922
  }
3909
3923
  } },
3910
- React__default["default"].createElement("div", { className: b$3('icon-place') }, compact ? (React__default["default"].createElement(React__default["default"].Fragment, null,
3924
+ React__default["default"].createElement("div", { className: b$6('icon-place') }, compact ? (React__default["default"].createElement(React__default["default"].Fragment, null,
3911
3925
  React__default["default"].createElement("div", { onMouseEnter: (event) => {
3912
3926
  if (!open) {
3913
3927
  setTooltipAnchor(event.currentTarget);
@@ -3916,51 +3930,47 @@ const Item = ({ item, compact, className, collapseItems, onMouseLeave, onMouseEn
3916
3930
  }, onMouseLeave: () => {
3917
3931
  setTooltipAnchor(null);
3918
3932
  onMouseLeave === null || onMouseLeave === void 0 ? void 0 : onMouseLeave();
3919
- }, className: b$3('btn-icon') }, icon && React__default["default"].createElement(uikit.Icon, { data: icon, size: iconSize, className: b$3('icon') })),
3920
- enableTooltip && React__default["default"].createElement(ItemTooltip, { anchor: tooltipAnchor, text: tooltipText }))) : (icon && React__default["default"].createElement(uikit.Icon, { data: icon, size: iconSize, className: b$3('icon') }))),
3921
- React__default["default"].createElement("div", { className: b$3('title'), title: typeof item.title === 'string' ? item.title : undefined }, renderItemTitle(item)),
3933
+ }, className: b$6('btn-icon') }, icon && React__default["default"].createElement(uikit.Icon, { data: icon, size: iconSize, className: b$6('icon') })),
3934
+ enableTooltip && React__default["default"].createElement(ItemTooltip, { anchor: tooltipAnchor, text: tooltipText }))) : (icon && React__default["default"].createElement(uikit.Icon, { data: icon, size: iconSize, className: b$6('icon') }))),
3935
+ React__default["default"].createElement("div", { className: b$6('title'), title: typeof item.title === 'string' ? item.title : undefined }, renderItemTitle(item)),
3922
3936
  collapsedItem && (collapseItems === null || collapseItems === void 0 ? void 0 : collapseItems.length) && Boolean(anchorRef === null || anchorRef === void 0 ? void 0 : anchorRef.current) && (React__default["default"].createElement(uikit.Popup, { placement: POPUP_PLACEMENT, open: open, anchorRef: ref, onClose: () => toggleOpen(false) },
3923
- React__default["default"].createElement("div", { className: b$3('collapse-items-popup-content') },
3924
- React__default["default"].createElement(uikit.List, { itemClassName: b$3('root-collapse-item'), items: collapseItems, selectedItemIndex: getSelectedItemIndex(collapseItems), itemHeight: POPUP_ITEM_HEIGHT, itemsHeight: collapseItems.length * POPUP_ITEM_HEIGHT, virtualized: false, filterable: false, sortable: false, renderItem: (collapseItem) => {
3925
- const collapseNode = (React__default["default"].createElement("div", { className: b$3('collapse-item'), onClick: () => {
3926
- if (typeof collapseItem.onItemClick === 'function') {
3927
- collapseItem.onItemClick(collapseItem, true);
3928
- }
3937
+ React__default["default"].createElement("div", { className: b$6('collapse-items-popup-content') },
3938
+ React__default["default"].createElement(uikit.List, { itemClassName: b$6('root-collapse-item'), items: collapseItems, selectedItemIndex: getSelectedItemIndex(collapseItems), itemHeight: POPUP_ITEM_HEIGHT, itemsHeight: collapseItems.length * POPUP_ITEM_HEIGHT, virtualized: false, filterable: false, sortable: false, renderItem: (collapseItem) => {
3939
+ const collapseNode = (React__default["default"].createElement("div", { className: b$6('collapse-item'), onClick: () => {
3940
+ onItemClick === null || onItemClick === void 0 ? void 0 : onItemClick(collapseItem, true);
3929
3941
  } }, renderItemTitle(collapseItem)));
3930
3942
  if (typeof collapseItem.itemWrapper === 'function') {
3931
3943
  return collapseItem.itemWrapper(collapseNode, collapseItem, true, compact);
3932
3944
  }
3933
- return collapseItem.link ? (React__default["default"].createElement("a", { href: collapseItem.link, className: b$3('link') }, collapseNode)) : (collapseNode);
3945
+ return collapseItem.link ? (React__default["default"].createElement("a", { href: collapseItem.link, className: b$6('link') }, collapseNode)) : (collapseNode);
3934
3946
  } })))),
3935
- renderPopupContent && Boolean(anchorRef === null || anchorRef === void 0 ? void 0 : anchorRef.current) && (React__default["default"].createElement(uikit.Popup, { className: b$3('popup'), open: popupVisible, placement: popupPlacement, offset: popupOffset, anchorRef: anchorRef, onClose: onClose }, renderPopupContent()))));
3947
+ renderPopupContent && Boolean(anchorRef === null || anchorRef === void 0 ? void 0 : anchorRef.current) && (React__default["default"].createElement(uikit.Popup, { className: b$6('popup'), open: popupVisible, placement: popupPlacement, offset: popupOffset, anchorRef: anchorRef, onClose: onClose }, renderPopupContent()))));
3936
3948
  if (typeof item.itemWrapper === 'function') {
3937
3949
  return item.itemWrapper(node, item, false, compact);
3938
3950
  }
3939
- return item.link ? (React__default["default"].createElement("a", { href: item.link, className: b$3('link') }, node)) : (node);
3951
+ return item.link ? (React__default["default"].createElement("a", { href: item.link, className: b$6('link') }, node)) : (node);
3940
3952
  };
3941
3953
  Item.displayName = 'Item';
3942
3954
 
3943
3955
  var _path$2;
3944
-
3945
3956
  function _extends$2() { _extends$2 = Object.assign ? Object.assign.bind() : 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; }; return _extends$2.apply(this, arguments); }
3946
-
3947
3957
  var SvgDots = function SvgDots(props) {
3948
3958
  return /*#__PURE__*/React__namespace.createElement("svg", _extends$2({
3949
3959
  xmlns: "http://www.w3.org/2000/svg",
3950
3960
  width: 16,
3951
- height: 16,
3952
- role: "img"
3961
+ height: 16
3953
3962
  }, props), _path$2 || (_path$2 = /*#__PURE__*/React__namespace.createElement("path", {
3954
3963
  d: "M14 6.125a1.874 1.874 0 1 1 .001 3.749A1.874 1.874 0 0 1 14 6.125zm-5.906 0a1.874 1.874 0 1 1 0 3.749 1.874 1.874 0 0 1 0-3.749zM2 6.125a1.874 1.874 0 1 1 .001 3.749A1.874 1.874 0 0 1 2 6.125z",
3955
3964
  fill: "currentColor",
3956
3965
  fillRule: "evenodd"
3957
3966
  })));
3958
3967
  };
3968
+ var dotsIcon = SvgDots;
3959
3969
 
3960
- var css_248z$2 = ".ycn-composite-bar {\n flex: 1 0 auto;\n width: 100%;\n min-height: 40px;\n}\n.ycn-composite-bar .ycn-composite-bar__root-menu-item[class] {\n background-color: transparent;\n}";
3961
- styleInject(css_248z$2);
3970
+ var css_248z$4 = ".ycn-composite-bar {\n flex: 1 0 auto;\n width: 100%;\n min-height: 40px;\n}\n.ycn-composite-bar .ycn-composite-bar__root-menu-item[class] {\n background-color: transparent;\n}";
3971
+ styleInject(css_248z$4);
3962
3972
 
3963
- const b$2 = block('composite-bar');
3973
+ const b$5 = block('composite-bar');
3964
3974
  class CompositeBar extends React__default["default"].Component {
3965
3975
  constructor() {
3966
3976
  super(...arguments);
@@ -3975,10 +3985,10 @@ class CompositeBar extends React__default["default"].Component {
3975
3985
  return null;
3976
3986
  }
3977
3987
  if (!enableCollapsing) {
3978
- return React__default["default"].createElement("div", { className: b$2() }, this.renderMenu());
3988
+ return React__default["default"].createElement("div", { className: b$5() }, this.renderMenu());
3979
3989
  }
3980
3990
  const minHeight = getItemsMinHeight(items);
3981
- return (React__default["default"].createElement("div", { className: b$2({ autosizer: true }), style: { minHeight } }, items.length !== 0 && (React__default["default"].createElement(AutoSizer, null, ({ width, height }) => {
3991
+ return (React__default["default"].createElement("div", { className: b$5({ autosizer: true }), style: { minHeight } }, items.length !== 0 && (React__default["default"].createElement(AutoSizer, null, ({ width, height }) => {
3982
3992
  const style = {
3983
3993
  width,
3984
3994
  height,
@@ -3989,30 +3999,30 @@ class CompositeBar extends React__default["default"].Component {
3989
3999
  renderAutosizeMenu(height) {
3990
4000
  const { compact, onItemClick } = this.props;
3991
4001
  const { listItems, collapseItems } = this.getAutosizeListItems(height);
3992
- return (React__default["default"].createElement(uikit.List, { ref: this.listRef, items: listItems, selectedItemIndex: getSelectedItemIndex(listItems), itemHeight: getItemHeight, itemClassName: b$2('root-menu-item'), itemsHeight: getItemsHeight, virtualized: false, filterable: false, sortable: false, onItemClick: onItemClick, renderItem: (item) => (React__default["default"].createElement(Item, { item: item, onMouseLeave: () => {
4002
+ return (React__default["default"].createElement(uikit.List, { ref: this.listRef, items: listItems, selectedItemIndex: getSelectedItemIndex(listItems), itemHeight: getItemHeight, itemClassName: b$5('root-menu-item'), itemsHeight: getItemsHeight, virtualized: false, filterable: false, sortable: false, renderItem: (item) => (React__default["default"].createElement(Item, { item: item, onMouseLeave: () => {
3993
4003
  var _a;
3994
4004
  if (compact) {
3995
4005
  (_a = this.listRef.current) === null || _a === void 0 ? void 0 : _a.activateItem(undefined);
3996
4006
  }
3997
- }, compact: compact, collapseItems: collapseItems })) }));
4007
+ }, compact: compact, collapseItems: collapseItems, onItemClick: onItemClick })) }));
3998
4008
  }
3999
4009
  renderMenu() {
4000
4010
  const { items, onItemClick, compact } = this.props;
4001
- return (React__default["default"].createElement(uikit.List, { ref: this.listRef, items: items, selectedItemIndex: getSelectedItemIndex(items), itemHeight: getItemHeight, itemClassName: b$2('root-menu-item'), itemsHeight: getItemsHeight, virtualized: false, filterable: false, sortable: false, onItemClick: onItemClick, renderItem: (item) => (React__default["default"].createElement(Item, { item: item, onMouseLeave: () => {
4011
+ return (React__default["default"].createElement(uikit.List, { ref: this.listRef, items: items, selectedItemIndex: getSelectedItemIndex(items), itemHeight: getItemHeight, itemClassName: b$5('root-menu-item'), itemsHeight: getItemsHeight, virtualized: false, filterable: false, sortable: false, renderItem: (item) => (React__default["default"].createElement(Item, { item: item, onMouseLeave: () => {
4002
4012
  var _a;
4003
4013
  if (compact) {
4004
4014
  (_a = this.listRef.current) === null || _a === void 0 ? void 0 : _a.activateItem(undefined);
4005
4015
  }
4006
- }, compact: compact })) }));
4016
+ }, compact: compact, onItemClick: onItemClick })) }));
4007
4017
  }
4008
4018
  getMoreButtonItem() {
4009
4019
  var _a;
4010
4020
  const { dict } = this.props;
4011
- const title = (_a = dict === null || dict === void 0 ? void 0 : dict[exports.Dict.MoreButton]) !== null && _a !== void 0 ? _a : defaultDict[exports.Dict.MoreButton];
4021
+ const title = (_a = dict === null || dict === void 0 ? void 0 : dict[exports.Dict.MoreButton]) !== null && _a !== void 0 ? _a : defaultDict$1[exports.Dict.MoreButton];
4012
4022
  return {
4013
4023
  id: COLLAPSE_ITEM_ID,
4014
4024
  title,
4015
- icon: SvgDots,
4025
+ icon: dotsIcon,
4016
4026
  iconSize: 16,
4017
4027
  };
4018
4028
  }
@@ -4068,70 +4078,64 @@ const Content = ({ size, className, renderContent }) => {
4068
4078
  };
4069
4079
 
4070
4080
  var _path$1;
4071
-
4072
4081
  function _extends$1() { _extends$1 = Object.assign ? Object.assign.bind() : 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; }; return _extends$1.apply(this, arguments); }
4073
-
4074
4082
  var SvgControlMenuButton = function SvgControlMenuButton(props) {
4075
4083
  return /*#__PURE__*/React__namespace.createElement("svg", _extends$1({
4076
4084
  width: 8,
4077
4085
  height: 8,
4078
4086
  fill: "currentColor",
4079
- xmlns: "http://www.w3.org/2000/svg",
4080
- role: "img"
4087
+ xmlns: "http://www.w3.org/2000/svg"
4081
4088
  }, props), _path$1 || (_path$1 = /*#__PURE__*/React__namespace.createElement("path", {
4082
4089
  d: "m.72 7.64 6.39-3.2a.5.5 0 0 0 0-.89L.72.36A.5.5 0 0 0 0 .81v6.38c0 .37.4.61.72.45Z"
4083
4090
  })));
4084
4091
  };
4092
+ var controlMenuButtonIcon = SvgControlMenuButton;
4085
4093
 
4086
4094
  var _path;
4087
-
4088
4095
  function _extends() { _extends = Object.assign ? Object.assign.bind() : 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; }; return _extends.apply(this, arguments); }
4089
-
4090
4096
  var SvgDividerCollapsed = function SvgDividerCollapsed(props) {
4091
4097
  return /*#__PURE__*/React__namespace.createElement("svg", _extends({
4092
4098
  width: 56,
4093
4099
  height: 29,
4094
4100
  fill: "currentColor",
4095
- xmlns: "http://www.w3.org/2000/svg",
4096
- role: "img"
4101
+ xmlns: "http://www.w3.org/2000/svg"
4097
4102
  }, props), _path || (_path = /*#__PURE__*/React__namespace.createElement("path", {
4098
4103
  d: "M56 0v29c-.8-1-7-6.1-17.7-8.4L13 15.7A16 16 0 0 1 0 0Z"
4099
4104
  })));
4100
4105
  };
4106
+ var headerDividerCollapsedIcon = SvgDividerCollapsed;
4101
4107
 
4102
- var css_248z$1 = ".yc-root {\n --aside-header-background-color: var(--yc-color-base-info);\n --aside-header-collapse-button-divider-line-color: var(\n --aside-header-header-divider-line-color\n );\n}\n\n.yc-root_theme_light {\n --aside-header-divider-line-color: transparent;\n --aside-header-header-divider-line-color: var(--yc-color-line-generic);\n}\n\n.yc-root_theme_dark {\n --aside-header-divider-line-color: var(--yc-color-base-light-simple-hover);\n --aside-header-header-divider-line-color: var(--yc-color-base-light-simple-hover);\n}\n\n.ycn-aside-header {\n --aside-header-min-width: 56px;\n height: 100%;\n width: 100%;\n position: relative;\n background-color: var(--yc-color-base-background);\n}\n.ycn-aside-header__aside {\n position: sticky;\n top: 0;\n left: 0;\n height: 100vh;\n width: inherit;\n display: flex;\n flex-direction: column;\n background-color: var(--yc-color-base-background);\n z-index: 100;\n box-sizing: border-box;\n}\n.ycn-aside-header__aside::after {\n position: absolute;\n top: 0;\n right: 0;\n z-index: 2;\n width: 1px;\n height: 100%;\n content: \"\";\n background-color: var(--aside-header-divider-line-color);\n}\n.ycn-aside-header__aside-popup-anchor {\n position: absolute;\n top: 0;\n right: 0;\n bottom: 0;\n left: 0;\n z-index: 1;\n}\n.ycn-aside-header__aside-content {\n --gradient-height: 334px;\n display: flex;\n flex-direction: column;\n overflow-x: hidden;\n width: inherit;\n height: inherit;\n position: relative;\n z-index: 2;\n user-select: none;\n background: linear-gradient(180deg, var(--aside-header-background-color) calc(var(--gradient-height) * 0.33), transparent calc(var(--gradient-height) * 0.88));\n}\n.ycn-aside-header__aside-content::after {\n position: absolute;\n top: 0;\n right: -100px;\n bottom: 0;\n width: 100px;\n content: \"\";\n box-shadow: 0px 0px 4px rgba(0, 0, 0, 0.1), 0px 0px 24px rgba(0, 0, 0, 0.08);\n}\n.ycn-aside-header__aside-content > .ycn-aside-header-logo {\n margin: 8px 0;\n}\n.ycn-aside-header_compact .ycn-aside-header__aside-content {\n background: transparent;\n}\n.ycn-aside-header__header {\n --aside-header-header-divider-height: 29px;\n position: relative;\n z-index: 1;\n flex: none;\n box-sizing: border-box;\n width: 100%;\n padding-top: 8px;\n padding-bottom: 22px;\n}\n.ycn-aside-header__header .ycn-aside-header__header-divider {\n position: absolute;\n bottom: 0;\n left: 0;\n z-index: -2;\n display: none;\n color: var(--aside-header-background-color);\n}\n.ycn-aside-header__header::before {\n position: absolute;\n top: 0;\n left: 0;\n z-index: -2;\n display: none;\n width: 100%;\n height: calc(100% - var(--aside-header-header-divider-height));\n content: \"\";\n background-color: var(--aside-header-background-color);\n}\n.ycn-aside-header__header::after {\n position: absolute;\n bottom: 12px;\n left: 0;\n z-index: -2;\n width: 100%;\n height: 1px;\n content: \"\";\n background-color: var(--aside-header-header-divider-line-color);\n}\n.ycn-aside-header_compact .ycn-aside-header__header::before {\n display: block;\n}\n.ycn-aside-header_compact .ycn-aside-header__header::after {\n display: none;\n}\n.ycn-aside-header_compact .ycn-aside-header__header .ycn-aside-header__header-divider {\n display: block;\n}\n.ycn-aside-header__footer {\n flex-shrink: 0;\n width: 100%;\n margin: 8px 0;\n display: flex;\n flex-direction: column;\n}\n.ycn-aside-header__panels {\n z-index: 98;\n position: fixed;\n left: 0;\n right: 0;\n bottom: 0;\n top: 0;\n overflow: auto;\n}\n.ycn-aside-header__panel {\n height: 100%;\n}\n.ycn-aside-header__pane-container {\n display: flex;\n outline: none;\n overflow: visible;\n user-select: text;\n flex-direction: row;\n}\n.ycn-aside-header__content {\n width: calc(100% - var(--aside-header-size));\n}\n.ycn-aside-header__collapse-button {\n --yc-button-background-color-hover: transparent;\n overflow: hidden;\n box-sizing: border-box;\n flex: none;\n width: 100%;\n height: 20px;\n border-top: 1px solid var(--aside-header-collapse-button-divider-line-color);\n margin-top: auto;\n}\n.ycn-aside-header__collapse-button:not(.ycn-aside-header__collapse-button_compact) .ycn-aside-header__collapse-icon {\n transform: rotate(180deg);\n}\n.ycn-aside-header__collapse-button .ycn-aside-header__collapse-icon {\n color: var(--yc-color-text-secondary);\n}\n.ycn-aside-header__collapse-button:hover .ycn-aside-header__collapse-icon {\n color: var(--yc-color-text-primary);\n}";
4103
- styleInject(css_248z$1);
4108
+ var css_248z$3 = ".yc-root {\n --aside-header-background-color: var(--yc-color-base-info);\n --aside-header-collapse-button-divider-line-color: var(\n --aside-header-header-divider-line-color\n );\n}\n\n.yc-root_theme_light {\n --aside-header-divider-line-color: transparent;\n --aside-header-header-divider-line-color: var(--yc-color-line-generic);\n}\n\n.yc-root_theme_dark {\n --aside-header-divider-line-color: var(--yc-color-base-light-simple-hover);\n --aside-header-header-divider-line-color: var(--yc-color-base-light-simple-hover);\n}\n\n.ycn-aside-header {\n --aside-header-min-width: 56px;\n height: 100%;\n width: 100%;\n position: relative;\n background-color: var(--yc-color-base-background);\n}\n.ycn-aside-header__aside {\n position: sticky;\n top: 0;\n left: 0;\n height: 100vh;\n width: inherit;\n display: flex;\n flex-direction: column;\n background-color: var(--yc-color-base-background);\n z-index: 100;\n box-sizing: border-box;\n}\n.ycn-aside-header__aside::after {\n position: absolute;\n top: 0;\n right: 0;\n z-index: 2;\n width: 1px;\n height: 100%;\n content: \"\";\n background-color: var(--aside-header-divider-line-color);\n}\n.ycn-aside-header__aside-popup-anchor {\n position: absolute;\n top: 0;\n right: 0;\n bottom: 0;\n left: 0;\n z-index: 1;\n}\n.ycn-aside-header__aside-content {\n --gradient-height: 334px;\n display: flex;\n flex-direction: column;\n overflow-x: hidden;\n width: inherit;\n height: inherit;\n position: relative;\n z-index: 2;\n user-select: none;\n background: linear-gradient(180deg, var(--aside-header-background-color) calc(var(--gradient-height) * 0.33), transparent calc(var(--gradient-height) * 0.88));\n}\n.ycn-aside-header__aside-content::after {\n position: absolute;\n top: 0;\n right: -100px;\n bottom: 0;\n width: 100px;\n content: \"\";\n box-shadow: 0px 0px 4px rgba(0, 0, 0, 0.1), 0px 0px 24px rgba(0, 0, 0, 0.08);\n}\n.ycn-aside-header__aside-content > .ycn-aside-header-logo {\n margin: 8px 0;\n}\n.ycn-aside-header_compact .ycn-aside-header__aside-content {\n background: transparent;\n}\n.ycn-aside-header__header {\n --aside-header-header-divider-height: 29px;\n position: relative;\n z-index: 1;\n flex: none;\n box-sizing: border-box;\n width: 100%;\n padding-top: 8px;\n padding-bottom: 22px;\n}\n.ycn-aside-header__header .ycn-aside-header__header-divider {\n position: absolute;\n bottom: 0;\n left: 0;\n z-index: -2;\n display: none;\n color: var(--aside-header-background-color);\n}\n.ycn-aside-header__header::before {\n position: absolute;\n top: 0;\n left: 0;\n z-index: -2;\n display: none;\n width: 100%;\n height: calc(100% - var(--aside-header-header-divider-height));\n content: \"\";\n background-color: var(--aside-header-background-color);\n}\n.ycn-aside-header__header::after {\n position: absolute;\n bottom: 12px;\n left: 0;\n z-index: -2;\n width: 100%;\n height: 1px;\n content: \"\";\n background-color: var(--aside-header-header-divider-line-color);\n}\n.ycn-aside-header_compact .ycn-aside-header__header::before {\n display: block;\n}\n.ycn-aside-header_compact .ycn-aside-header__header::after {\n display: none;\n}\n.ycn-aside-header_compact .ycn-aside-header__header .ycn-aside-header__header-divider {\n display: block;\n}\n.ycn-aside-header__footer {\n flex-shrink: 0;\n width: 100%;\n margin: 8px 0;\n display: flex;\n flex-direction: column;\n}\n.ycn-aside-header__panels {\n z-index: 98;\n position: fixed;\n left: 0;\n right: 0;\n bottom: 0;\n top: 0;\n overflow: auto;\n}\n.ycn-aside-header__panel {\n height: 100%;\n}\n.ycn-aside-header__pane-container {\n display: flex;\n outline: none;\n overflow: visible;\n user-select: text;\n flex-direction: row;\n}\n.ycn-aside-header__content {\n width: calc(100% - var(--aside-header-size));\n z-index: 95;\n}\n.ycn-aside-header__collapse-button {\n --yc-button-background-color-hover: transparent;\n overflow: hidden;\n box-sizing: border-box;\n flex: none;\n width: 100%;\n height: 20px;\n border-top: 1px solid var(--aside-header-collapse-button-divider-line-color);\n margin-top: auto;\n}\n.ycn-aside-header__collapse-button:not(.ycn-aside-header__collapse-button_compact) .ycn-aside-header__collapse-icon {\n transform: rotate(180deg);\n}\n.ycn-aside-header__collapse-button .ycn-aside-header__collapse-icon {\n color: var(--yc-color-text-secondary);\n}\n.ycn-aside-header__collapse-button:hover .ycn-aside-header__collapse-icon {\n color: var(--yc-color-text-primary);\n}";
4109
+ styleInject(css_248z$3);
4104
4110
 
4105
- const b$1 = block('aside-header');
4111
+ const b$4 = block('aside-header');
4106
4112
  class AsideHeader extends React__default["default"].Component {
4107
- constructor(props) {
4108
- super(props);
4113
+ constructor() {
4114
+ super(...arguments);
4109
4115
  this.asideRef = React__default["default"].createRef();
4110
4116
  this.renderFirstPane = (size) => {
4111
- const { dict, menuItems, panelItems } = this.props;
4112
- const { compact } = this.state;
4113
- return (React__default["default"].createElement("div", null,
4114
- React__default["default"].createElement("div", { className: b$1('aside'), style: { width: size } },
4115
- React__default["default"].createElement("div", { className: b$1('aside-popup-anchor'), ref: this.asideRef }),
4116
- React__default["default"].createElement("div", { className: b$1('aside-content') },
4117
+ const { dict, menuItems, panelItems, compact } = this.props;
4118
+ return (React__default["default"].createElement(React__default["default"].Fragment, null,
4119
+ React__default["default"].createElement("div", { className: b$4('aside'), style: { width: size } },
4120
+ React__default["default"].createElement("div", { className: b$4('aside-popup-anchor'), ref: this.asideRef }),
4121
+ React__default["default"].createElement("div", { className: b$4('aside-content') },
4117
4122
  this.renderHeader(),
4118
- React__default["default"].createElement(CompositeBar, { items: menuItems, compact: compact, enableCollapsing: true, dict: dict, onItemClick: this.onCompositeBarClick }),
4123
+ React__default["default"].createElement(CompositeBar, { items: menuItems, compact: compact, enableCollapsing: true, dict: dict, onItemClick: this.onItemClick }),
4119
4124
  this.renderFooter(size),
4120
4125
  this.renderCollapseButton())),
4121
4126
  panelItems && this.renderPanels(size)));
4122
4127
  };
4123
4128
  this.renderSecondPane = (size) => {
4124
- return (React__default["default"].createElement(Content, { size: size, renderContent: this.props.renderContent, className: b$1('content') }));
4129
+ return (React__default["default"].createElement(Content, { size: size, renderContent: this.props.renderContent, className: b$4('content') }));
4125
4130
  };
4126
4131
  this.renderLogo = () => React__default["default"].createElement(Logo, Object.assign({}, this.props.logo, { compact: this.props.compact }));
4127
- this.renderHeader = () => (React__default["default"].createElement("div", { className: b$1('header') },
4132
+ this.renderHeader = () => (React__default["default"].createElement("div", { className: b$4('header') },
4128
4133
  this.renderLogo(),
4129
- React__default["default"].createElement(CompositeBar, { items: this.props.subheaderItems, compact: this.props.compact, enableCollapsing: false }),
4130
- React__default["default"].createElement(uikit.Icon, { data: SvgDividerCollapsed, className: b$1('header-divider'), width: ASIDE_HEADER_COMPACT_WIDTH, height: "29" })));
4134
+ React__default["default"].createElement(CompositeBar, { items: this.props.subheaderItems, compact: this.props.compact, enableCollapsing: false, onItemClick: this.onItemClick }),
4135
+ React__default["default"].createElement(uikit.Icon, { data: headerDividerCollapsedIcon, className: b$4('header-divider'), width: ASIDE_HEADER_COMPACT_WIDTH, height: "29" })));
4131
4136
  this.renderFooter = (size) => {
4132
- var _a, _b;
4133
- const { compact } = this.state;
4134
- return (React__default["default"].createElement("div", { className: b$1('footer') }, (_b = (_a = this.props).renderFooter) === null || _b === void 0 ? void 0 : _b.call(_a, {
4137
+ const { compact, renderFooter } = this.props;
4138
+ return (React__default["default"].createElement("div", { className: b$4('footer') }, renderFooter === null || renderFooter === void 0 ? void 0 : renderFooter({
4135
4139
  size,
4136
4140
  compact,
4137
4141
  asideRef: this.asideRef,
@@ -4139,44 +4143,34 @@ class AsideHeader extends React__default["default"].Component {
4139
4143
  };
4140
4144
  this.renderPanels = (size) => {
4141
4145
  const { panelItems } = this.props;
4142
- return (React__default["default"].createElement(Drawer, { className: b$1('panels'), onVeilClick: this.onCloseDrawer, onEscape: this.onCloseDrawer, style: { left: size } }, panelItems.map((item) => (React__default["default"].createElement(DrawerItem, Object.assign({ key: item.id }, item))))));
4146
+ return (React__default["default"].createElement(Drawer, { className: b$4('panels'), onVeilClick: this.onCloseDrawer, onEscape: this.onCloseDrawer, style: { left: size } }, panelItems.map((item) => (React__default["default"].createElement(DrawerItem, Object.assign({ key: item.id }, item))))));
4143
4147
  };
4144
4148
  this.renderCollapseButton = () => {
4145
4149
  var _a;
4146
4150
  const { compact, dict } = this.props;
4147
4151
  const typeButton = compact ? exports.Dict.ExpandButton : exports.Dict.CollapseButton;
4148
- return (React__default["default"].createElement(uikit.Button, { className: b$1('collapse-button', { compact }), view: "flat", onClick: this.onCollapseButtonClick, title: (_a = dict === null || dict === void 0 ? void 0 : dict[typeButton]) !== null && _a !== void 0 ? _a : defaultDict[typeButton] },
4149
- React__default["default"].createElement(uikit.Icon, { data: SvgControlMenuButton, className: b$1('collapse-icon'), width: "16", height: "10" })));
4152
+ return (React__default["default"].createElement(uikit.Button, { className: b$4('collapse-button', { compact }), view: "flat", onClick: this.onCollapseButtonClick, title: (_a = dict === null || dict === void 0 ? void 0 : dict[typeButton]) !== null && _a !== void 0 ? _a : defaultDict$1[typeButton] },
4153
+ React__default["default"].createElement(uikit.Icon, { data: controlMenuButtonIcon, className: b$4('collapse-icon'), width: "16", height: "10" })));
4150
4154
  };
4151
4155
  this.onCollapseButtonClick = () => {
4152
4156
  var _a, _b;
4153
- const newCompact = !this.state.compact;
4154
- this.setState({ compact: newCompact });
4155
- (_b = (_a = this.props).onChangeCompact) === null || _b === void 0 ? void 0 : _b.call(_a, newCompact);
4157
+ (_b = (_a = this.props).onChangeCompact) === null || _b === void 0 ? void 0 : _b.call(_a, !this.props.compact);
4156
4158
  };
4157
4159
  this.onCloseDrawer = () => {
4158
4160
  var _a, _b;
4159
4161
  (_b = (_a = this.props).onClosePanel) === null || _b === void 0 ? void 0 : _b.call(_a);
4160
4162
  };
4161
- this.onCompositeBarClick = () => {
4162
- var _a, _b;
4163
+ this.onItemClick = (item, collapsed) => {
4164
+ var _a, _b, _c;
4163
4165
  (_b = (_a = this.props).onClosePanel) === null || _b === void 0 ? void 0 : _b.call(_a);
4164
- };
4165
- this.state = {
4166
- compact: Boolean(props.compact),
4166
+ (_c = item.onItemClick) === null || _c === void 0 ? void 0 : _c.call(item, item, collapsed);
4167
4167
  };
4168
4168
  }
4169
- componentDidUpdate(prevProps) {
4170
- if (prevProps.compact !== this.props.compact) {
4171
- this.setState({ compact: Boolean(this.props.compact) });
4172
- }
4173
- }
4174
4169
  render() {
4175
- const { className } = this.props;
4176
- const { compact } = this.state;
4170
+ const { className, compact } = this.props;
4177
4171
  const size = compact ? ASIDE_HEADER_COMPACT_WIDTH : ASIDE_HEADER_EXPANDED_WIDTH;
4178
- return (React__default["default"].createElement("div", { className: b$1({ compact }, className) },
4179
- React__default["default"].createElement("div", { className: b$1('pane-container') },
4172
+ return (React__default["default"].createElement("div", { className: b$4({ compact }, className) },
4173
+ React__default["default"].createElement("div", { className: b$4('pane-container') },
4180
4174
  this.renderFirstPane(size),
4181
4175
  this.renderSecondPane(size))));
4182
4176
  }
@@ -4214,18 +4208,936 @@ function __rest(s, e) {
4214
4208
  return t;
4215
4209
  }
4216
4210
 
4217
- var css_248z = ".ycn-footer-item {\n width: 100%;\n height: 40px;\n}";
4218
- styleInject(css_248z);
4211
+ var css_248z$2 = ".ycn-footer-item {\n width: 100%;\n height: 40px;\n}";
4212
+ styleInject(css_248z$2);
4219
4213
 
4220
- const b = block('footer-item');
4214
+ const b$3 = block('footer-item');
4221
4215
  const FooterItem = (_a) => {
4222
4216
  var { item } = _a, props = __rest(_a, ["item"]);
4223
- return (React__default["default"].createElement(Item, Object.assign({}, props, { item: Object.assign({ iconSize: ASIDE_HEADER_FOOTER_ICON_SIZE }, item), className: b({ compact: props.compact }) })));
4217
+ return (React__default["default"].createElement(Item, Object.assign({}, props, { item: Object.assign({ iconSize: ASIDE_HEADER_FOOTER_ICON_SIZE }, item), className: b$3({ compact: props.compact }), onItemClick: item.onItemClick })));
4218
+ };
4219
+
4220
+ /**
4221
+ * This method returns the first argument it receives.
4222
+ *
4223
+ * @static
4224
+ * @since 0.1.0
4225
+ * @memberOf _
4226
+ * @category Util
4227
+ * @param {*} value Any value.
4228
+ * @returns {*} Returns `value`.
4229
+ * @example
4230
+ *
4231
+ * var object = { 'a': 1 };
4232
+ *
4233
+ * console.log(_.identity(object) === object);
4234
+ * // => true
4235
+ */
4236
+
4237
+ function identity(value) {
4238
+ return value;
4239
+ }
4240
+
4241
+ var identity_1 = identity;
4242
+
4243
+ /**
4244
+ * Checks if `value` is the
4245
+ * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)
4246
+ * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)
4247
+ *
4248
+ * @static
4249
+ * @memberOf _
4250
+ * @since 0.1.0
4251
+ * @category Lang
4252
+ * @param {*} value The value to check.
4253
+ * @returns {boolean} Returns `true` if `value` is an object, else `false`.
4254
+ * @example
4255
+ *
4256
+ * _.isObject({});
4257
+ * // => true
4258
+ *
4259
+ * _.isObject([1, 2, 3]);
4260
+ * // => true
4261
+ *
4262
+ * _.isObject(_.noop);
4263
+ * // => true
4264
+ *
4265
+ * _.isObject(null);
4266
+ * // => false
4267
+ */
4268
+
4269
+ function isObject$2(value) {
4270
+ var type = typeof value;
4271
+ return value != null && (type == 'object' || type == 'function');
4272
+ }
4273
+
4274
+ var isObject_1 = isObject$2;
4275
+
4276
+ /** Detect free variable `global` from Node.js. */
4277
+
4278
+ var freeGlobal$1 = typeof commonjsGlobal == 'object' && commonjsGlobal && commonjsGlobal.Object === Object && commonjsGlobal;
4279
+
4280
+ var _freeGlobal = freeGlobal$1;
4281
+
4282
+ var freeGlobal = _freeGlobal;
4283
+
4284
+ /** Detect free variable `self`. */
4285
+ var freeSelf = typeof self == 'object' && self && self.Object === Object && self;
4286
+
4287
+ /** Used as a reference to the global object. */
4288
+ var root$2 = freeGlobal || freeSelf || Function('return this')();
4289
+
4290
+ var _root = root$2;
4291
+
4292
+ var root$1 = _root;
4293
+
4294
+ /**
4295
+ * Gets the timestamp of the number of milliseconds that have elapsed since
4296
+ * the Unix epoch (1 January 1970 00:00:00 UTC).
4297
+ *
4298
+ * @static
4299
+ * @memberOf _
4300
+ * @since 2.4.0
4301
+ * @category Date
4302
+ * @returns {number} Returns the timestamp.
4303
+ * @example
4304
+ *
4305
+ * _.defer(function(stamp) {
4306
+ * console.log(_.now() - stamp);
4307
+ * }, _.now());
4308
+ * // => Logs the number of milliseconds it took for the deferred invocation.
4309
+ */
4310
+ var now$1 = function() {
4311
+ return root$1.Date.now();
4312
+ };
4313
+
4314
+ var now_1 = now$1;
4315
+
4316
+ /** Used to match a single whitespace character. */
4317
+
4318
+ var reWhitespace = /\s/;
4319
+
4320
+ /**
4321
+ * Used by `_.trim` and `_.trimEnd` to get the index of the last non-whitespace
4322
+ * character of `string`.
4323
+ *
4324
+ * @private
4325
+ * @param {string} string The string to inspect.
4326
+ * @returns {number} Returns the index of the last non-whitespace character.
4327
+ */
4328
+ function trimmedEndIndex$1(string) {
4329
+ var index = string.length;
4330
+
4331
+ while (index-- && reWhitespace.test(string.charAt(index))) {}
4332
+ return index;
4333
+ }
4334
+
4335
+ var _trimmedEndIndex = trimmedEndIndex$1;
4336
+
4337
+ var trimmedEndIndex = _trimmedEndIndex;
4338
+
4339
+ /** Used to match leading whitespace. */
4340
+ var reTrimStart = /^\s+/;
4341
+
4342
+ /**
4343
+ * The base implementation of `_.trim`.
4344
+ *
4345
+ * @private
4346
+ * @param {string} string The string to trim.
4347
+ * @returns {string} Returns the trimmed string.
4348
+ */
4349
+ function baseTrim$1(string) {
4350
+ return string
4351
+ ? string.slice(0, trimmedEndIndex(string) + 1).replace(reTrimStart, '')
4352
+ : string;
4353
+ }
4354
+
4355
+ var _baseTrim = baseTrim$1;
4356
+
4357
+ var root = _root;
4358
+
4359
+ /** Built-in value references. */
4360
+ var Symbol$3 = root.Symbol;
4361
+
4362
+ var _Symbol = Symbol$3;
4363
+
4364
+ var Symbol$2 = _Symbol;
4365
+
4366
+ /** Used for built-in method references. */
4367
+ var objectProto$1 = Object.prototype;
4368
+
4369
+ /** Used to check objects for own properties. */
4370
+ var hasOwnProperty = objectProto$1.hasOwnProperty;
4371
+
4372
+ /**
4373
+ * Used to resolve the
4374
+ * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)
4375
+ * of values.
4376
+ */
4377
+ var nativeObjectToString$1 = objectProto$1.toString;
4378
+
4379
+ /** Built-in value references. */
4380
+ var symToStringTag$1 = Symbol$2 ? Symbol$2.toStringTag : undefined;
4381
+
4382
+ /**
4383
+ * A specialized version of `baseGetTag` which ignores `Symbol.toStringTag` values.
4384
+ *
4385
+ * @private
4386
+ * @param {*} value The value to query.
4387
+ * @returns {string} Returns the raw `toStringTag`.
4388
+ */
4389
+ function getRawTag$1(value) {
4390
+ var isOwn = hasOwnProperty.call(value, symToStringTag$1),
4391
+ tag = value[symToStringTag$1];
4392
+
4393
+ try {
4394
+ value[symToStringTag$1] = undefined;
4395
+ var unmasked = true;
4396
+ } catch (e) {}
4397
+
4398
+ var result = nativeObjectToString$1.call(value);
4399
+ if (unmasked) {
4400
+ if (isOwn) {
4401
+ value[symToStringTag$1] = tag;
4402
+ } else {
4403
+ delete value[symToStringTag$1];
4404
+ }
4405
+ }
4406
+ return result;
4407
+ }
4408
+
4409
+ var _getRawTag = getRawTag$1;
4410
+
4411
+ /** Used for built-in method references. */
4412
+
4413
+ var objectProto = Object.prototype;
4414
+
4415
+ /**
4416
+ * Used to resolve the
4417
+ * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)
4418
+ * of values.
4419
+ */
4420
+ var nativeObjectToString = objectProto.toString;
4421
+
4422
+ /**
4423
+ * Converts `value` to a string using `Object.prototype.toString`.
4424
+ *
4425
+ * @private
4426
+ * @param {*} value The value to convert.
4427
+ * @returns {string} Returns the converted string.
4428
+ */
4429
+ function objectToString$1(value) {
4430
+ return nativeObjectToString.call(value);
4431
+ }
4432
+
4433
+ var _objectToString = objectToString$1;
4434
+
4435
+ var Symbol$1 = _Symbol,
4436
+ getRawTag = _getRawTag,
4437
+ objectToString = _objectToString;
4438
+
4439
+ /** `Object#toString` result references. */
4440
+ var nullTag = '[object Null]',
4441
+ undefinedTag = '[object Undefined]';
4442
+
4443
+ /** Built-in value references. */
4444
+ var symToStringTag = Symbol$1 ? Symbol$1.toStringTag : undefined;
4445
+
4446
+ /**
4447
+ * The base implementation of `getTag` without fallbacks for buggy environments.
4448
+ *
4449
+ * @private
4450
+ * @param {*} value The value to query.
4451
+ * @returns {string} Returns the `toStringTag`.
4452
+ */
4453
+ function baseGetTag$1(value) {
4454
+ if (value == null) {
4455
+ return value === undefined ? undefinedTag : nullTag;
4456
+ }
4457
+ return (symToStringTag && symToStringTag in Object(value))
4458
+ ? getRawTag(value)
4459
+ : objectToString(value);
4460
+ }
4461
+
4462
+ var _baseGetTag = baseGetTag$1;
4463
+
4464
+ /**
4465
+ * Checks if `value` is object-like. A value is object-like if it's not `null`
4466
+ * and has a `typeof` result of "object".
4467
+ *
4468
+ * @static
4469
+ * @memberOf _
4470
+ * @since 4.0.0
4471
+ * @category Lang
4472
+ * @param {*} value The value to check.
4473
+ * @returns {boolean} Returns `true` if `value` is object-like, else `false`.
4474
+ * @example
4475
+ *
4476
+ * _.isObjectLike({});
4477
+ * // => true
4478
+ *
4479
+ * _.isObjectLike([1, 2, 3]);
4480
+ * // => true
4481
+ *
4482
+ * _.isObjectLike(_.noop);
4483
+ * // => false
4484
+ *
4485
+ * _.isObjectLike(null);
4486
+ * // => false
4487
+ */
4488
+
4489
+ function isObjectLike$1(value) {
4490
+ return value != null && typeof value == 'object';
4491
+ }
4492
+
4493
+ var isObjectLike_1 = isObjectLike$1;
4494
+
4495
+ var baseGetTag = _baseGetTag,
4496
+ isObjectLike = isObjectLike_1;
4497
+
4498
+ /** `Object#toString` result references. */
4499
+ var symbolTag = '[object Symbol]';
4500
+
4501
+ /**
4502
+ * Checks if `value` is classified as a `Symbol` primitive or object.
4503
+ *
4504
+ * @static
4505
+ * @memberOf _
4506
+ * @since 4.0.0
4507
+ * @category Lang
4508
+ * @param {*} value The value to check.
4509
+ * @returns {boolean} Returns `true` if `value` is a symbol, else `false`.
4510
+ * @example
4511
+ *
4512
+ * _.isSymbol(Symbol.iterator);
4513
+ * // => true
4514
+ *
4515
+ * _.isSymbol('abc');
4516
+ * // => false
4517
+ */
4518
+ function isSymbol$1(value) {
4519
+ return typeof value == 'symbol' ||
4520
+ (isObjectLike(value) && baseGetTag(value) == symbolTag);
4521
+ }
4522
+
4523
+ var isSymbol_1 = isSymbol$1;
4524
+
4525
+ var baseTrim = _baseTrim,
4526
+ isObject$1 = isObject_1,
4527
+ isSymbol = isSymbol_1;
4528
+
4529
+ /** Used as references for various `Number` constants. */
4530
+ var NAN = 0 / 0;
4531
+
4532
+ /** Used to detect bad signed hexadecimal string values. */
4533
+ var reIsBadHex = /^[-+]0x[0-9a-f]+$/i;
4534
+
4535
+ /** Used to detect binary string values. */
4536
+ var reIsBinary = /^0b[01]+$/i;
4537
+
4538
+ /** Used to detect octal string values. */
4539
+ var reIsOctal = /^0o[0-7]+$/i;
4540
+
4541
+ /** Built-in method references without a dependency on `root`. */
4542
+ var freeParseInt = parseInt;
4543
+
4544
+ /**
4545
+ * Converts `value` to a number.
4546
+ *
4547
+ * @static
4548
+ * @memberOf _
4549
+ * @since 4.0.0
4550
+ * @category Lang
4551
+ * @param {*} value The value to process.
4552
+ * @returns {number} Returns the number.
4553
+ * @example
4554
+ *
4555
+ * _.toNumber(3.2);
4556
+ * // => 3.2
4557
+ *
4558
+ * _.toNumber(Number.MIN_VALUE);
4559
+ * // => 5e-324
4560
+ *
4561
+ * _.toNumber(Infinity);
4562
+ * // => Infinity
4563
+ *
4564
+ * _.toNumber('3.2');
4565
+ * // => 3.2
4566
+ */
4567
+ function toNumber$1(value) {
4568
+ if (typeof value == 'number') {
4569
+ return value;
4570
+ }
4571
+ if (isSymbol(value)) {
4572
+ return NAN;
4573
+ }
4574
+ if (isObject$1(value)) {
4575
+ var other = typeof value.valueOf == 'function' ? value.valueOf() : value;
4576
+ value = isObject$1(other) ? (other + '') : other;
4577
+ }
4578
+ if (typeof value != 'string') {
4579
+ return value === 0 ? value : +value;
4580
+ }
4581
+ value = baseTrim(value);
4582
+ var isBinary = reIsBinary.test(value);
4583
+ return (isBinary || reIsOctal.test(value))
4584
+ ? freeParseInt(value.slice(2), isBinary ? 2 : 8)
4585
+ : (reIsBadHex.test(value) ? NAN : +value);
4586
+ }
4587
+
4588
+ var toNumber_1 = toNumber$1;
4589
+
4590
+ var isObject = isObject_1,
4591
+ now = now_1,
4592
+ toNumber = toNumber_1;
4593
+
4594
+ /** Error message constants. */
4595
+ var FUNC_ERROR_TEXT = 'Expected a function';
4596
+
4597
+ /* Built-in method references for those with the same name as other `lodash` methods. */
4598
+ var nativeMax = Math.max,
4599
+ nativeMin = Math.min;
4600
+
4601
+ /**
4602
+ * Creates a debounced function that delays invoking `func` until after `wait`
4603
+ * milliseconds have elapsed since the last time the debounced function was
4604
+ * invoked. The debounced function comes with a `cancel` method to cancel
4605
+ * delayed `func` invocations and a `flush` method to immediately invoke them.
4606
+ * Provide `options` to indicate whether `func` should be invoked on the
4607
+ * leading and/or trailing edge of the `wait` timeout. The `func` is invoked
4608
+ * with the last arguments provided to the debounced function. Subsequent
4609
+ * calls to the debounced function return the result of the last `func`
4610
+ * invocation.
4611
+ *
4612
+ * **Note:** If `leading` and `trailing` options are `true`, `func` is
4613
+ * invoked on the trailing edge of the timeout only if the debounced function
4614
+ * is invoked more than once during the `wait` timeout.
4615
+ *
4616
+ * If `wait` is `0` and `leading` is `false`, `func` invocation is deferred
4617
+ * until to the next tick, similar to `setTimeout` with a timeout of `0`.
4618
+ *
4619
+ * See [David Corbacho's article](https://css-tricks.com/debouncing-throttling-explained-examples/)
4620
+ * for details over the differences between `_.debounce` and `_.throttle`.
4621
+ *
4622
+ * @static
4623
+ * @memberOf _
4624
+ * @since 0.1.0
4625
+ * @category Function
4626
+ * @param {Function} func The function to debounce.
4627
+ * @param {number} [wait=0] The number of milliseconds to delay.
4628
+ * @param {Object} [options={}] The options object.
4629
+ * @param {boolean} [options.leading=false]
4630
+ * Specify invoking on the leading edge of the timeout.
4631
+ * @param {number} [options.maxWait]
4632
+ * The maximum time `func` is allowed to be delayed before it's invoked.
4633
+ * @param {boolean} [options.trailing=true]
4634
+ * Specify invoking on the trailing edge of the timeout.
4635
+ * @returns {Function} Returns the new debounced function.
4636
+ * @example
4637
+ *
4638
+ * // Avoid costly calculations while the window size is in flux.
4639
+ * jQuery(window).on('resize', _.debounce(calculateLayout, 150));
4640
+ *
4641
+ * // Invoke `sendMail` when clicked, debouncing subsequent calls.
4642
+ * jQuery(element).on('click', _.debounce(sendMail, 300, {
4643
+ * 'leading': true,
4644
+ * 'trailing': false
4645
+ * }));
4646
+ *
4647
+ * // Ensure `batchLog` is invoked once after 1 second of debounced calls.
4648
+ * var debounced = _.debounce(batchLog, 250, { 'maxWait': 1000 });
4649
+ * var source = new EventSource('/stream');
4650
+ * jQuery(source).on('message', debounced);
4651
+ *
4652
+ * // Cancel the trailing debounced invocation.
4653
+ * jQuery(window).on('popstate', debounced.cancel);
4654
+ */
4655
+ function debounce(func, wait, options) {
4656
+ var lastArgs,
4657
+ lastThis,
4658
+ maxWait,
4659
+ result,
4660
+ timerId,
4661
+ lastCallTime,
4662
+ lastInvokeTime = 0,
4663
+ leading = false,
4664
+ maxing = false,
4665
+ trailing = true;
4666
+
4667
+ if (typeof func != 'function') {
4668
+ throw new TypeError(FUNC_ERROR_TEXT);
4669
+ }
4670
+ wait = toNumber(wait) || 0;
4671
+ if (isObject(options)) {
4672
+ leading = !!options.leading;
4673
+ maxing = 'maxWait' in options;
4674
+ maxWait = maxing ? nativeMax(toNumber(options.maxWait) || 0, wait) : maxWait;
4675
+ trailing = 'trailing' in options ? !!options.trailing : trailing;
4676
+ }
4677
+
4678
+ function invokeFunc(time) {
4679
+ var args = lastArgs,
4680
+ thisArg = lastThis;
4681
+
4682
+ lastArgs = lastThis = undefined;
4683
+ lastInvokeTime = time;
4684
+ result = func.apply(thisArg, args);
4685
+ return result;
4686
+ }
4687
+
4688
+ function leadingEdge(time) {
4689
+ // Reset any `maxWait` timer.
4690
+ lastInvokeTime = time;
4691
+ // Start the timer for the trailing edge.
4692
+ timerId = setTimeout(timerExpired, wait);
4693
+ // Invoke the leading edge.
4694
+ return leading ? invokeFunc(time) : result;
4695
+ }
4696
+
4697
+ function remainingWait(time) {
4698
+ var timeSinceLastCall = time - lastCallTime,
4699
+ timeSinceLastInvoke = time - lastInvokeTime,
4700
+ timeWaiting = wait - timeSinceLastCall;
4701
+
4702
+ return maxing
4703
+ ? nativeMin(timeWaiting, maxWait - timeSinceLastInvoke)
4704
+ : timeWaiting;
4705
+ }
4706
+
4707
+ function shouldInvoke(time) {
4708
+ var timeSinceLastCall = time - lastCallTime,
4709
+ timeSinceLastInvoke = time - lastInvokeTime;
4710
+
4711
+ // Either this is the first call, activity has stopped and we're at the
4712
+ // trailing edge, the system time has gone backwards and we're treating
4713
+ // it as the trailing edge, or we've hit the `maxWait` limit.
4714
+ return (lastCallTime === undefined || (timeSinceLastCall >= wait) ||
4715
+ (timeSinceLastCall < 0) || (maxing && timeSinceLastInvoke >= maxWait));
4716
+ }
4717
+
4718
+ function timerExpired() {
4719
+ var time = now();
4720
+ if (shouldInvoke(time)) {
4721
+ return trailingEdge(time);
4722
+ }
4723
+ // Restart the timer.
4724
+ timerId = setTimeout(timerExpired, remainingWait(time));
4725
+ }
4726
+
4727
+ function trailingEdge(time) {
4728
+ timerId = undefined;
4729
+
4730
+ // Only invoke if we have `lastArgs` which means `func` has been
4731
+ // debounced at least once.
4732
+ if (trailing && lastArgs) {
4733
+ return invokeFunc(time);
4734
+ }
4735
+ lastArgs = lastThis = undefined;
4736
+ return result;
4737
+ }
4738
+
4739
+ function cancel() {
4740
+ if (timerId !== undefined) {
4741
+ clearTimeout(timerId);
4742
+ }
4743
+ lastInvokeTime = 0;
4744
+ lastArgs = lastCallTime = lastThis = timerId = undefined;
4745
+ }
4746
+
4747
+ function flush() {
4748
+ return timerId === undefined ? result : trailingEdge(now());
4749
+ }
4750
+
4751
+ function debounced() {
4752
+ var time = now(),
4753
+ isInvoking = shouldInvoke(time);
4754
+
4755
+ lastArgs = arguments;
4756
+ lastThis = this;
4757
+ lastCallTime = time;
4758
+
4759
+ if (isInvoking) {
4760
+ if (timerId === undefined) {
4761
+ return leadingEdge(lastCallTime);
4762
+ }
4763
+ if (maxing) {
4764
+ // Handle invocations in a tight loop.
4765
+ clearTimeout(timerId);
4766
+ timerId = setTimeout(timerExpired, wait);
4767
+ return invokeFunc(lastCallTime);
4768
+ }
4769
+ }
4770
+ if (timerId === undefined) {
4771
+ timerId = setTimeout(timerExpired, wait);
4772
+ }
4773
+ return result;
4774
+ }
4775
+ debounced.cancel = cancel;
4776
+ debounced.flush = flush;
4777
+ return debounced;
4778
+ }
4779
+
4780
+ var debounce_1 = debounce;
4781
+
4782
+ function useStableCallback(func) {
4783
+ const funcRef = React__namespace.useRef();
4784
+ React__namespace.useEffect(() => {
4785
+ funcRef.current = func;
4786
+ return () => {
4787
+ funcRef.current = undefined;
4788
+ };
4789
+ }, [func]);
4790
+ return React__namespace.useCallback((...args) => {
4791
+ if (typeof funcRef.current === 'function') {
4792
+ return funcRef.current(...args);
4793
+ }
4794
+ return undefined;
4795
+ }, []);
4796
+ }
4797
+ function useCurrent(value) {
4798
+ const ref = React__namespace.useRef(value);
4799
+ ref.current = value;
4800
+ return React__namespace.useCallback(() => ref.current, []);
4801
+ }
4802
+ function invariant(cond, message) {
4803
+ if (!cond) {
4804
+ throw new Error(message);
4805
+ }
4806
+ }
4807
+ function escapeStringForRegExp(input) {
4808
+ return input.replace(/[.*+?^${}()|[\]\\]/g, '\\$&');
4809
+ }
4810
+
4811
+ const b$2 = block('settings-search');
4812
+ function SettingsSearch({ className, onChange, debounce = 200, inputRef, placeholder, }) {
4813
+ const onChangeStable = useStableCallback(onChange);
4814
+ const handleUpdate = React__default["default"].useCallback(debounce_1(onChangeStable, debounce), [debounce]);
4815
+ return (React__default["default"].createElement("div", { className: b$2(null, className) },
4816
+ React__default["default"].createElement(uikit.TextInput, { controlRef: inputRef, hasClear: true, autoFocus: true, placeholder: placeholder, onUpdate: handleUpdate })));
4817
+ }
4818
+
4819
+ var css_248z$1 = ".ycn-settings-menu__group-heading {\n font-weight: var(--yc-text-accent-font-weight);\n display: inline-block;\n padding: 0 20px;\n margin-bottom: 12px;\n line-height: 18px;\n}\n.ycn-settings-menu__group + .ycn-settings-menu__group {\n margin-top: 24px;\n}\n.ycn-settings-menu__item {\n display: flex;\n align-items: center;\n height: 40px;\n padding: 0 20px;\n cursor: pointer;\n color: var(--yc-color-text-primary);\n}\n.ycn-settings-menu__item-icon {\n color: var(--yc-color-text-misc);\n margin-right: 5px;\n}\n.ycn-settings-menu__item:hover, .ycn-settings-menu__item_focused {\n background: var(--yc-color-base-simple-hover);\n}\n.ycn-settings-menu__item_selected {\n background: var(--yc-color-base-selection);\n}\n.ycn-settings-menu__item_selected:hover, .ycn-settings-menu__item_selected.ycn-settings-menu__item_focused {\n background: var(--yc-color-base-selection-hover);\n}\n.ycn-settings-menu__item_disabled {\n color: var(--yc-color-text-secondary);\n cursor: auto;\n}\n.ycn-settings-menu__item_disabled:hover {\n background: none;\n}\n.ycn-settings-menu__item_disabled .ycn-settings-menu__item-icon {\n color: var(--yc-color-base-misc-heavy);\n}\n.ycn-settings-menu__item_badge {\n position: relative;\n}\n.ycn-settings-menu__item_badge::after {\n content: \"\";\n display: block;\n width: 6px;\n height: 6px;\n border-radius: 50%;\n background-color: var(--yc-color-text-danger);\n position: absolute;\n right: 9px;\n top: calc(50% - 3px);\n}";
4820
+ styleInject(css_248z$1);
4821
+
4822
+ const b$1 = block('settings-menu');
4823
+ const SettingsMenu = React__default["default"].forwardRef(
4824
+ // eslint-disable-next-line prefer-arrow-callback
4825
+ function SettingsMenu({ items, onChange, activeItem }, ref) {
4826
+ const [focusItem, setFocus] = React__default["default"].useState();
4827
+ const containerRef = React__default["default"].useRef(null);
4828
+ const handleChange = useStableCallback(onChange);
4829
+ const getFocused = useCurrent(focusItem);
4830
+ React__default["default"].useImperativeHandle(ref, () => ({
4831
+ handleKeyDown(event) {
4832
+ if (!containerRef.current) {
4833
+ return false;
4834
+ }
4835
+ const focused = getFocused();
4836
+ if (focused && event.key === 'Enter') {
4837
+ handleChange(focused);
4838
+ return true;
4839
+ }
4840
+ else if (event.key === 'ArrowDown') {
4841
+ setFocus(focusNext(containerRef.current, focused, 1));
4842
+ return true;
4843
+ }
4844
+ else if (event.key === 'ArrowUp') {
4845
+ setFocus(focusNext(containerRef.current, focused, -1));
4846
+ return true;
4847
+ }
4848
+ return false;
4849
+ },
4850
+ clearFocus() {
4851
+ setFocus(undefined);
4852
+ },
4853
+ }), [getFocused, handleChange]);
4854
+ return (React__default["default"].createElement("div", { ref: containerRef, className: b$1() }, items.map((firstLevelItem) => {
4855
+ if ('groupTitle' in firstLevelItem) {
4856
+ return (React__default["default"].createElement("div", { key: firstLevelItem.groupTitle, className: b$1('group') },
4857
+ React__default["default"].createElement("span", { className: b$1('group-heading') }, firstLevelItem.groupTitle),
4858
+ firstLevelItem.items.map((item) => {
4859
+ return renderMenuItem(item, onChange, activeItem, focusItem);
4860
+ })));
4861
+ }
4862
+ return renderMenuItem(firstLevelItem, onChange, activeItem, focusItem);
4863
+ })));
4864
+ });
4865
+ function renderMenuItem(item, onChange, activeItem, focusItem) {
4866
+ return (React__default["default"].createElement("span", { key: item.title, className: b$1('item', {
4867
+ selected: activeItem === item.id,
4868
+ disabled: item.disabled,
4869
+ focused: focusItem === item.id,
4870
+ badge: item.withBadge,
4871
+ }), onClick: () => {
4872
+ if (!item.disabled) {
4873
+ onChange(item.id);
4874
+ }
4875
+ }, "data-id": item.id },
4876
+ item.icon ? React__default["default"].createElement(uikit.Icon, Object.assign({ size: 16 }, item.icon, { className: b$1('item-icon') })) : undefined,
4877
+ React__default["default"].createElement("span", null, item.title)));
4878
+ }
4879
+ function focusNext(container, focused, direction) {
4880
+ var _a;
4881
+ const elements = container.querySelectorAll(`.${b$1('item')}:not(.${b$1('item')}_disabled)`);
4882
+ if (elements.length === 0) {
4883
+ return undefined;
4884
+ }
4885
+ let currentIndex = direction > 0 ? -1 : 0;
4886
+ if (focused) {
4887
+ currentIndex = Array.prototype.findIndex.call(elements, (element) => element.getAttribute('data-id') === focused);
4888
+ }
4889
+ currentIndex = (elements.length + currentIndex + direction) % elements.length;
4890
+ return (_a = elements[currentIndex].getAttribute('data-id')) !== null && _a !== void 0 ? _a : undefined;
4891
+ }
4892
+
4893
+ function getSettingsFromChildren(children, searchText = '') {
4894
+ // 'abc def fg' -> abc.*?cde.*?fg
4895
+ const preparedFilter = escapeStringForRegExp(searchText).replace(/\s+/g, '.*?');
4896
+ const filterRe = new RegExp(preparedFilter, 'i');
4897
+ return getSettingsFromChildrenRecursive(children, '', filterRe);
4898
+ }
4899
+ function getSettingsFromChildrenRecursive(children, basepath = '', filterRe) {
4900
+ const menu = [];
4901
+ const pages = {};
4902
+ let hasGroup = false;
4903
+ let hasItems = false;
4904
+ React__default["default"].Children.forEach(children, (element) => {
4905
+ var _a, _b;
4906
+ if (!React__default["default"].isValidElement(element)) {
4907
+ // Ignore non-elements.
4908
+ return;
4909
+ }
4910
+ if (element.type === React__default["default"].Fragment) {
4911
+ // Transparently support React.Fragment and its children.
4912
+ const { menu: menuFragment, pages: pagesFragment } = getSettingsFromChildrenRecursive(element.props.children, basepath, filterRe);
4913
+ menu.push(...menuFragment);
4914
+ Object.assign(pages, pagesFragment);
4915
+ }
4916
+ else if (element.props.groupTitle) {
4917
+ if (process.env.NODE_ENV === 'development') {
4918
+ invariant(!hasItems, 'Setting menu must not mix groups and pages on one level');
4919
+ }
4920
+ const pageId = `${basepath}/${(_a = element.props.id) !== null && _a !== void 0 ? _a : element.props.groupTitle}`;
4921
+ hasGroup = true;
4922
+ const { menu: menuFragment, pages: pagesFragment } = getSettingsFromChildrenRecursive(element.props.children, pageId, filterRe);
4923
+ if (process.env.NODE_ENV === 'development') {
4924
+ const hasInnerGroup = menuFragment.some((item) => 'groupTitle' in item);
4925
+ invariant(!hasInnerGroup, `Group ${element.props.groupTitle} should not include groups`);
4926
+ }
4927
+ menu.push({
4928
+ groupTitle: element.props.groupTitle,
4929
+ // @ts-ignore
4930
+ items: menuFragment,
4931
+ });
4932
+ Object.assign(pages, pagesFragment);
4933
+ }
4934
+ else {
4935
+ hasItems = true;
4936
+ const pageId = `${basepath}/${(_b = element.props.id) !== null && _b !== void 0 ? _b : element.props.title}`;
4937
+ if (process.env.NODE_ENV === 'development') {
4938
+ invariant(Boolean(element.props.title), 'Component must include title prop');
4939
+ invariant(!hasGroup, 'Setting menu must not mix groups and pages on one level');
4940
+ invariant(!pages[pageId], `Setting menu page id must be uniq (${pageId})`);
4941
+ }
4942
+ pages[pageId] = getSettingsPageFromChildren(element.props.children, filterRe);
4943
+ pages[pageId].id = pageId;
4944
+ menu.push({
4945
+ id: pageId,
4946
+ title: element.props.title,
4947
+ icon: element.props.icon,
4948
+ withBadge: pages[pageId].withBadge,
4949
+ disabled: pages[pageId].hidden,
4950
+ });
4951
+ }
4952
+ });
4953
+ return { menu, pages };
4954
+ }
4955
+ function getSettingsPageFromChildren(children, filterRe) {
4956
+ const page = { id: '', sections: [], hidden: true };
4957
+ React__default["default"].Children.forEach(children, (element) => {
4958
+ if (!React__default["default"].isValidElement(element)) {
4959
+ // Ignore non-elements.
4960
+ return;
4961
+ }
4962
+ if (element.type === React__default["default"].Fragment) {
4963
+ // Transparently support React.Fragment and its children.
4964
+ const { sections, withBadge, hidden } = getSettingsPageFromChildren(element.props.children, filterRe);
4965
+ page.sections.push(...sections);
4966
+ page.withBadge = withBadge || page.withBadge;
4967
+ page.hidden = hidden && page.hidden;
4968
+ }
4969
+ else {
4970
+ const { title, header, withBadge } = element.props;
4971
+ const { items, hidden } = getSettingsItemsFromChildren(element.props.children, filterRe);
4972
+ page.withBadge = withBadge || page.withBadge;
4973
+ page.hidden = hidden && page.hidden;
4974
+ page.sections.push({
4975
+ title,
4976
+ header,
4977
+ withBadge,
4978
+ items,
4979
+ hidden,
4980
+ });
4981
+ }
4982
+ });
4983
+ return page;
4984
+ }
4985
+ function getSettingsItemsFromChildren(children, filterRe) {
4986
+ let hidden = true;
4987
+ const items = [];
4988
+ React__default["default"].Children.forEach(children, (element) => {
4989
+ if (!React__default["default"].isValidElement(element)) {
4990
+ // Ignore non-elements.
4991
+ return;
4992
+ }
4993
+ if (element.type === React__default["default"].Fragment) {
4994
+ // Transparently support React.Fragment and its children.
4995
+ const fragmentItems = getSettingsItemsFromChildren(element.props.children, filterRe);
4996
+ items.push(...fragmentItems.items);
4997
+ hidden = hidden && fragmentItems.hidden;
4998
+ }
4999
+ else {
5000
+ const item = {
5001
+ title: element.props.title,
5002
+ renderTitleComponent: element.props.renderTitleComponent,
5003
+ element,
5004
+ hidden: !filterRe.test(element.props.title),
5005
+ };
5006
+ items.push(item);
5007
+ hidden = hidden && item.hidden;
5008
+ }
5009
+ });
5010
+ return { items, hidden };
5011
+ }
5012
+
5013
+ var css_248z = ".ycn-settings {\n display: grid;\n grid-template-columns: 216px 1fr;\n width: 834px;\n height: 100%;\n}\n.ycn-settings_loading {\n grid-template-columns: auto;\n}\n.ycn-settings__loader {\n align-self: center;\n justify-self: center;\n}\n.ycn-settings__not-found {\n display: grid;\n align-items: center;\n justify-items: center;\n height: 100%;\n}\n.ycn-settings__menu {\n border-right: 1px solid var(--yc-color-line-generic);\n}\n.ycn-settings__heading {\n font-size: var(--yc-text-subheader-2-font-size);\n line-height: var(--yc-text-subheader-2-line-height);\n font-weight: var(--yc-text-subheader-font-weight);\n margin: 20px 20px 0;\n}\n.ycn-settings__search {\n margin: 12px 20px 16px;\n}\n.ycn-settings__page {\n padding: 20px;\n overflow-y: auto;\n}\n.ycn-settings__section-heading {\n font-size: var(--yc-text-subheader-2-font-size);\n line-height: var(--yc-text-subheader-2-line-height);\n font-weight: var(--yc-text-subheader-font-weight);\n margin: 0;\n}\n.ycn-settings__section-item {\n margin-top: 24px;\n}\n.ycn-settings__section + .ycn-settings__section {\n margin-top: 32px;\n}\n.ycn-settings__item {\n display: grid;\n grid-template-columns: 216px 1fr;\n justify-items: start;\n}\n.ycn-settings__item_align_top {\n align-items: start;\n}\n.ycn-settings__item_align_center {\n align-items: center;\n}\n.ycn-settings__item-heading_badge {\n position: relative;\n}\n.ycn-settings__item-heading_badge::after {\n content: \"\";\n display: block;\n width: 6px;\n height: 6px;\n border-radius: 50%;\n background-color: var(--yc-color-text-danger);\n position: absolute;\n right: -8px;\n top: 1px;\n}\n.ycn-settings__found {\n font-weight: var(--yc-text-accent-font-weight);\n background: var(--yc-color-base-selection);\n}";
5014
+ styleInject(css_248z);
5015
+
5016
+ const b = block('settings');
5017
+ const defaultDict = {
5018
+ heading_settings: 'Settings',
5019
+ placeholder_search: 'Search settings',
5020
+ not_found: 'No results found',
5021
+ };
5022
+ function Settings(_a) {
5023
+ var { loading, renderLoading, children } = _a, props = __rest(_a, ["loading", "renderLoading", "children"]);
5024
+ if (loading) {
5025
+ return (React__default["default"].createElement("div", { className: b({ loading: true }) }, typeof renderLoading === 'function' ? (renderLoading()) : (React__default["default"].createElement(uikit.Loader, { className: b('loader'), size: "m" }))));
5026
+ }
5027
+ return React__default["default"].createElement(SettingsContent, Object.assign({}, props), children);
5028
+ }
5029
+ Settings.defaultProps = {
5030
+ dict: defaultDict,
5031
+ };
5032
+ function SettingsContent({ initialPage, onPageChange, children, renderNotFound, dict, }) {
5033
+ var _a, _b;
5034
+ const [search, setSearch] = React__default["default"].useState('');
5035
+ const { menu, pages } = getSettingsFromChildren(children, search);
5036
+ const pageKeys = Object.keys(pages);
5037
+ const [selectedPage, setCurrentPage] = React__default["default"].useState(initialPage && pageKeys.includes(initialPage) ? initialPage : undefined);
5038
+ const searchInputRef = React__default["default"].useRef(null);
5039
+ const menuRef = React__default["default"].useRef(null);
5040
+ React__default["default"].useEffect(() => {
5041
+ var _a;
5042
+ (_a = menuRef.current) === null || _a === void 0 ? void 0 : _a.clearFocus();
5043
+ }, [search]);
5044
+ React__default["default"].useEffect(() => {
5045
+ const handler = () => {
5046
+ var _a;
5047
+ (_a = menuRef.current) === null || _a === void 0 ? void 0 : _a.clearFocus();
5048
+ };
5049
+ window.addEventListener('click', handler);
5050
+ return () => {
5051
+ window.removeEventListener('click', handler);
5052
+ };
5053
+ }, []);
5054
+ let activePage = selectedPage;
5055
+ if (!activePage || ((_a = pages[activePage]) === null || _a === void 0 ? void 0 : _a.hidden)) {
5056
+ activePage = (_b = Object.values(pages).find(({ hidden }) => !hidden)) === null || _b === void 0 ? void 0 : _b.id;
5057
+ }
5058
+ const handlePageChange = (newPage) => {
5059
+ setCurrentPage((prevPage) => {
5060
+ if (prevPage !== newPage) {
5061
+ onPageChange === null || onPageChange === void 0 ? void 0 : onPageChange(newPage);
5062
+ }
5063
+ return newPage;
5064
+ });
5065
+ };
5066
+ React__default["default"].useEffect(() => {
5067
+ if (activePage !== selectedPage) {
5068
+ handlePageChange(activePage);
5069
+ }
5070
+ });
5071
+ const renderPageContent = () => {
5072
+ if (!activePage) {
5073
+ return typeof renderNotFound === 'function' ? (renderNotFound()) : (React__default["default"].createElement("div", { className: b('not-found') }, dict === null || dict === void 0 ? void 0 : dict.not_found));
5074
+ }
5075
+ return pages[activePage].sections
5076
+ .filter((section) => !section.hidden)
5077
+ .map((section) => (React__default["default"].createElement("div", { key: section.title, className: b('section') },
5078
+ React__default["default"].createElement("h3", { className: b('section-heading') }, section.title),
5079
+ section.header ? section.header : null,
5080
+ section.items.map(({ hidden, title, element }) => hidden ? null : (React__default["default"].createElement("div", { key: title, className: b('section-item') }, React__default["default"].cloneElement(element, Object.assign(Object.assign({}, element.props), { title: search && title ? prepareTitle(title, search) : title }))))))));
5081
+ };
5082
+ return (React__default["default"].createElement("div", { className: b() },
5083
+ React__default["default"].createElement("div", { className: b('menu'), onClick: () => {
5084
+ if (searchInputRef.current) {
5085
+ searchInputRef.current.focus();
5086
+ }
5087
+ }, onKeyDown: (event) => {
5088
+ if (menuRef.current) {
5089
+ if (menuRef.current.handleKeyDown(event)) {
5090
+ event.preventDefault();
5091
+ }
5092
+ }
5093
+ } },
5094
+ React__default["default"].createElement("h2", { className: b('heading') }, dict === null || dict === void 0 ? void 0 : dict.heading_settings),
5095
+ React__default["default"].createElement(SettingsSearch, { inputRef: searchInputRef, className: b('search'), onChange: setSearch, placeholder: dict === null || dict === void 0 ? void 0 : dict.placeholder_search }),
5096
+ React__default["default"].createElement(SettingsMenu, { ref: menuRef, items: menu, onChange: handlePageChange, activeItem: activePage })),
5097
+ React__default["default"].createElement("div", { className: b('page') }, renderPageContent())));
5098
+ }
5099
+ Settings.Group = function SettingsGroup({ children }) {
5100
+ return React__default["default"].createElement(React__default["default"].Fragment, null, children);
5101
+ };
5102
+ Settings.Page = function SettingsPage({ children }) {
5103
+ return React__default["default"].createElement(React__default["default"].Fragment, null, children);
5104
+ };
5105
+ Settings.Section = function SettingsSection({ children }) {
5106
+ return React__default["default"].createElement(React__default["default"].Fragment, null, children);
5107
+ };
5108
+ Settings.Item = function SettingsItem({ title, children, align = 'center', withBadge, renderTitleComponent = identity_1, }) {
5109
+ return (React__default["default"].createElement("div", { className: b('item', { align }) },
5110
+ React__default["default"].createElement("label", { className: b('item-heading', { badge: withBadge }) }, renderTitleComponent(title)),
5111
+ React__default["default"].createElement("div", null, children)));
4224
5112
  };
5113
+ function prepareTitle(string, search) {
5114
+ let temp = string.slice(0);
5115
+ const title = [];
5116
+ const parts = escapeStringForRegExp(search).split(' ').filter(Boolean);
5117
+ let key = 0;
5118
+ for (const part of parts) {
5119
+ const regex = new RegExp(part, 'ig');
5120
+ const match = regex.exec(temp);
5121
+ if (match) {
5122
+ const m = match[0];
5123
+ const i = match.index;
5124
+ if (i > 0) {
5125
+ title.push(temp.slice(0, i));
5126
+ }
5127
+ title.push(React__default["default"].createElement("strong", { key: key++, className: b('found') }, m));
5128
+ temp = temp.slice(i + m.length);
5129
+ }
5130
+ }
5131
+ if (temp) {
5132
+ title.push(temp);
5133
+ }
5134
+ return title;
5135
+ }
4225
5136
 
4226
5137
  exports.ActionBar = PublicActionBar;
4227
5138
  exports.AsideHeader = AsideHeader;
4228
5139
  exports.Drawer = Drawer;
4229
5140
  exports.DrawerItem = DrawerItem;
4230
5141
  exports.FooterItem = FooterItem;
5142
+ exports.Settings = Settings;
4231
5143
  //# sourceMappingURL=index.js.map