@gravity-ui/navigation 1.6.2 → 1.7.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (122) hide show
  1. package/README.md +20 -7
  2. package/build/cjs/{ActionBar-393db3ea.js → ActionBar-96a59723.js} +8 -7
  3. package/build/cjs/{ActionBar-393db3ea.js.map → ActionBar-96a59723.js.map} +1 -1
  4. package/build/cjs/AsideFallback.js +31 -0
  5. package/build/cjs/AsideFallback.js.map +1 -0
  6. package/build/cjs/AsideHeader.js +7 -19
  7. package/build/cjs/AsideHeader.js.map +1 -1
  8. package/build/cjs/Drawer.js +3 -2
  9. package/build/cjs/Drawer.js.map +1 -1
  10. package/build/cjs/{FooterItem-01b32eb7.js → FooterItem-eafaeac3.js} +9 -8
  11. package/build/cjs/{FooterItem-01b32eb7.js.map → FooterItem-eafaeac3.js.map} +1 -1
  12. package/build/cjs/FooterItem.js +6 -4
  13. package/build/cjs/FooterItem.js.map +1 -1
  14. package/build/cjs/{HotkeysPanel-7823f66a.js → HotkeysPanel-2e240e4d.js} +4 -3
  15. package/build/cjs/{HotkeysPanel-7823f66a.js.map → HotkeysPanel-2e240e4d.js.map} +1 -1
  16. package/build/cjs/{Item-15bdb320.js → Item-836015b7.js} +10 -16
  17. package/build/cjs/Item-836015b7.js.map +1 -0
  18. package/build/cjs/PageLayout.js +13 -83
  19. package/build/cjs/PageLayout.js.map +1 -1
  20. package/build/cjs/PageLayoutAside.js +879 -11
  21. package/build/cjs/PageLayoutAside.js.map +1 -1
  22. package/build/cjs/{Settings-6db7b88c.js → Settings-11b021e4.js} +8 -7
  23. package/build/cjs/{Settings-6db7b88c.js.map → Settings-11b021e4.js.map} +1 -1
  24. package/build/cjs/{Title-d58ff158.js → Title-c539667f.js} +4 -3
  25. package/build/cjs/{Title-d58ff158.js.map → Title-c539667f.js.map} +1 -1
  26. package/build/cjs/TopPanel-b531a2be.js +82 -0
  27. package/build/cjs/TopPanel-b531a2be.js.map +1 -0
  28. package/build/cjs/cn-1964a72a.js +10 -0
  29. package/build/cjs/cn-1964a72a.js.map +1 -0
  30. package/build/cjs/components/AsideHeader/AsideHeader.d.ts +0 -15
  31. package/build/cjs/components/AsideHeader/__stories__/AsideHeader.stories.d.ts +4 -0
  32. package/build/cjs/components/AsideHeader/components/PageLayout/AsideFallback.d.ts +6 -0
  33. package/build/cjs/components/AsideHeader/components/PageLayout/PageLayout.d.ts +1 -2
  34. package/build/cjs/components/AsideHeader/types.d.ts +0 -1
  35. package/build/cjs/components/CompositeBar/constants.d.ts +0 -1
  36. package/build/cjs/components/constants.d.ts +2 -0
  37. package/build/cjs/components/index.d.ts +1 -0
  38. package/build/cjs/constants-d81c3867.js +14 -0
  39. package/build/cjs/constants-d81c3867.js.map +1 -0
  40. package/build/cjs/divider-collapsed-153868e7.js +41 -0
  41. package/build/cjs/divider-collapsed-153868e7.js.map +1 -0
  42. package/build/cjs/index.js +13 -8
  43. package/build/cjs/index.js.map +1 -1
  44. package/build/cjs/index2.js +3 -2
  45. package/build/cjs/index2.js.map +1 -1
  46. package/build/cjs/index3.js +3 -2
  47. package/build/cjs/index3.js.map +1 -1
  48. package/build/cjs/index4.js +3 -2
  49. package/build/cjs/index4.js.map +1 -1
  50. package/build/cjs/index5.js +4 -3
  51. package/build/cjs/index5.js.map +1 -1
  52. package/build/cjs/index6.js +3 -2
  53. package/build/cjs/index6.js.map +1 -1
  54. package/build/cjs/{style-inject.es-935afc04.js → style-inject.es-dcee06b6.js} +1 -8
  55. package/build/cjs/style-inject.es-dcee06b6.js.map +1 -0
  56. package/build/cjs/utils-a93dd754.js +8 -0
  57. package/build/cjs/utils-a93dd754.js.map +1 -0
  58. package/build/esm/{ActionBar-f1c9a2d3.js → ActionBar-68f814a3.js} +3 -2
  59. package/build/esm/{ActionBar-f1c9a2d3.js.map → ActionBar-68f814a3.js.map} +1 -1
  60. package/build/esm/AsideFallback.js +23 -0
  61. package/build/esm/AsideFallback.js.map +1 -0
  62. package/build/esm/AsideHeader.js +7 -19
  63. package/build/esm/AsideHeader.js.map +1 -1
  64. package/build/esm/Drawer.js +2 -1
  65. package/build/esm/Drawer.js.map +1 -1
  66. package/build/esm/{FooterItem-d66ab545.js → FooterItem-39ac7c22.js} +3 -2
  67. package/build/esm/{FooterItem-d66ab545.js.map → FooterItem-39ac7c22.js.map} +1 -1
  68. package/build/esm/FooterItem.js +4 -2
  69. package/build/esm/FooterItem.js.map +1 -1
  70. package/build/esm/{HotkeysPanel-82fe991b.js → HotkeysPanel-bd0e997d.js} +3 -2
  71. package/build/esm/{HotkeysPanel-82fe991b.js.map → HotkeysPanel-bd0e997d.js.map} +1 -1
  72. package/build/esm/{Item-f02541c1.js → Item-ab589218.js} +5 -8
  73. package/build/esm/Item-ab589218.js.map +1 -0
  74. package/build/esm/PageLayout.js +11 -81
  75. package/build/esm/PageLayout.js.map +1 -1
  76. package/build/esm/PageLayoutAside.js +859 -9
  77. package/build/esm/PageLayoutAside.js.map +1 -1
  78. package/build/esm/{Settings-21bc1aba.js → Settings-31634d93.js} +4 -3
  79. package/build/esm/{Settings-21bc1aba.js.map → Settings-31634d93.js.map} +1 -1
  80. package/build/esm/{Title-3d579ca4.js → Title-b2f2c4e9.js} +3 -2
  81. package/build/esm/{Title-3d579ca4.js.map → Title-b2f2c4e9.js.map} +1 -1
  82. package/build/esm/TopPanel-36ffc4c7.js +76 -0
  83. package/build/esm/TopPanel-36ffc4c7.js.map +1 -0
  84. package/build/esm/cn-589cd9e2.js +8 -0
  85. package/build/esm/cn-589cd9e2.js.map +1 -0
  86. package/build/esm/components/AsideHeader/AsideHeader.d.ts +0 -15
  87. package/build/esm/components/AsideHeader/__stories__/AsideHeader.stories.d.ts +4 -0
  88. package/build/esm/components/AsideHeader/components/PageLayout/AsideFallback.d.ts +6 -0
  89. package/build/esm/components/AsideHeader/components/PageLayout/PageLayout.d.ts +1 -2
  90. package/build/esm/components/AsideHeader/types.d.ts +0 -1
  91. package/build/esm/components/CompositeBar/constants.d.ts +0 -1
  92. package/build/esm/components/constants.d.ts +2 -0
  93. package/build/esm/components/index.d.ts +1 -0
  94. package/build/esm/constants-b1604ff5.js +8 -0
  95. package/build/esm/constants-b1604ff5.js.map +1 -0
  96. package/build/esm/divider-collapsed-6468fa36.js +19 -0
  97. package/build/esm/divider-collapsed-6468fa36.js.map +1 -0
  98. package/build/esm/index.js +12 -8
  99. package/build/esm/index.js.map +1 -1
  100. package/build/esm/index2.js +3 -2
  101. package/build/esm/index2.js.map +1 -1
  102. package/build/esm/index3.js +3 -2
  103. package/build/esm/index3.js.map +1 -1
  104. package/build/esm/index4.js +3 -2
  105. package/build/esm/index4.js.map +1 -1
  106. package/build/esm/index5.js +4 -3
  107. package/build/esm/index5.js.map +1 -1
  108. package/build/esm/index6.js +3 -2
  109. package/build/esm/index6.js.map +1 -1
  110. package/build/esm/{style-inject.es-cfd97593.js → style-inject.es-1f59c1d0.js} +2 -8
  111. package/build/esm/style-inject.es-1f59c1d0.js.map +1 -0
  112. package/build/esm/utils-6d5146c7.js +6 -0
  113. package/build/esm/utils-6d5146c7.js.map +1 -0
  114. package/package.json +1 -1
  115. package/build/cjs/FirstPanel-2f78b962.js +0 -902
  116. package/build/cjs/FirstPanel-2f78b962.js.map +0 -1
  117. package/build/cjs/Item-15bdb320.js.map +0 -1
  118. package/build/cjs/style-inject.es-935afc04.js.map +0 -1
  119. package/build/esm/FirstPanel-bafddc24.js +0 -875
  120. package/build/esm/FirstPanel-bafddc24.js.map +0 -1
  121. package/build/esm/Item-f02541c1.js.map +0 -1
  122. package/build/esm/style-inject.es-cfd97593.js.map +0 -1
@@ -1,875 +0,0 @@
1
- import * as React from 'react';
2
- import React__default, { Component, createElement, useRef, useContext, useCallback, useMemo, useState, useEffect } from 'react';
3
- import { Popup, List, Icon, Button, Flex, Text, setRef } from '@gravity-ui/uikit';
4
- import { s as styleInject, b as block } from './style-inject.es-cfd97593.js';
5
- import { C as COLLAPSE_ITEM_ID, g as getItemsMinHeight, c as getAutosizeListItems, a as ASIDE_HEADER_COMPACT_WIDTH, d as getSelectedItemIndex, e as getItemHeight, f as getItemsHeight, i as isMenuItem, I as Item, h as getMoreButtonItem } from './Item-f02541c1.js';
6
- import { useAsideHeaderContext, useAsideHeaderInnerContext } from './AsideHeaderContext.js';
7
- import { Ellipsis, Pin, PinFill, Gear } from '@gravity-ui/icons';
8
- import { r as registerKeyset } from './registerKeyset-35f1ea08.js';
9
- import { Drawer, DrawerItem } from './Drawer.js';
10
-
11
- /**
12
- * Detect Element Resize.
13
- * https://github.com/sdecima/javascript-detect-element-resize
14
- * Sebastian Decima
15
- *
16
- * Forked from version 0.5.3; includes the following modifications:
17
- * 1) Guard against unsafe 'window' and 'document' references (to support SSR).
18
- * 2) Defer initialization code via a top-level function wrapper (to support SSR).
19
- * 3) Avoid unnecessary reflows by not measuring size for scroll events bubbling from children.
20
- * 4) Add nonce for style element.
21
- * 5) Use 'export' statement over 'module.exports' assignment
22
- **/
23
-
24
- // Check `document` and `window` in case of server-side rendering
25
- let windowObject;
26
- if (typeof window !== "undefined") {
27
- windowObject = window;
28
-
29
- // eslint-disable-next-line no-restricted-globals
30
- } else if (typeof self !== "undefined") {
31
- // eslint-disable-next-line no-restricted-globals
32
- windowObject = self;
33
- } else {
34
- windowObject = global;
35
- }
36
- let cancelFrame = null;
37
- let requestFrame = null;
38
- const TIMEOUT_DURATION = 20;
39
- const clearTimeoutFn = windowObject.clearTimeout;
40
- const setTimeoutFn = windowObject.setTimeout;
41
- const cancelAnimationFrameFn = windowObject.cancelAnimationFrame || windowObject.mozCancelAnimationFrame || windowObject.webkitCancelAnimationFrame;
42
- const requestAnimationFrameFn = windowObject.requestAnimationFrame || windowObject.mozRequestAnimationFrame || windowObject.webkitRequestAnimationFrame;
43
- if (cancelAnimationFrameFn == null || requestAnimationFrameFn == null) {
44
- // For environments that don't support animation frame,
45
- // fallback to a setTimeout based approach.
46
- cancelFrame = clearTimeoutFn;
47
- requestFrame = function requestAnimationFrameViaSetTimeout(callback) {
48
- return setTimeoutFn(callback, TIMEOUT_DURATION);
49
- };
50
- } else {
51
- // Counter intuitively, environments that support animation frames can be trickier.
52
- // Chrome's "Throttle non-visible cross-origin iframes" flag can prevent rAFs from being called.
53
- // In this case, we should fallback to a setTimeout() implementation.
54
- cancelFrame = function cancelFrame([animationFrameID, timeoutID]) {
55
- cancelAnimationFrameFn(animationFrameID);
56
- clearTimeoutFn(timeoutID);
57
- };
58
- requestFrame = function requestAnimationFrameWithSetTimeoutFallback(callback) {
59
- const animationFrameID = requestAnimationFrameFn(function animationFrameCallback() {
60
- clearTimeoutFn(timeoutID);
61
- callback();
62
- });
63
- const timeoutID = setTimeoutFn(function timeoutCallback() {
64
- cancelAnimationFrameFn(animationFrameID);
65
- callback();
66
- }, TIMEOUT_DURATION);
67
- return [animationFrameID, timeoutID];
68
- };
69
- }
70
- function createDetectElementResize(nonce) {
71
- let animationKeyframes;
72
- let animationName;
73
- let animationStartEvent;
74
- let animationStyle;
75
- let checkTriggers;
76
- let resetTriggers;
77
- let scrollListener;
78
- const attachEvent = typeof document !== "undefined" && document.attachEvent;
79
- if (!attachEvent) {
80
- resetTriggers = function (element) {
81
- const triggers = element.__resizeTriggers__,
82
- expand = triggers.firstElementChild,
83
- contract = triggers.lastElementChild,
84
- expandChild = expand.firstElementChild;
85
- contract.scrollLeft = contract.scrollWidth;
86
- contract.scrollTop = contract.scrollHeight;
87
- expandChild.style.width = expand.offsetWidth + 1 + "px";
88
- expandChild.style.height = expand.offsetHeight + 1 + "px";
89
- expand.scrollLeft = expand.scrollWidth;
90
- expand.scrollTop = expand.scrollHeight;
91
- };
92
- checkTriggers = function (element) {
93
- return element.offsetWidth !== element.__resizeLast__.width || element.offsetHeight !== element.__resizeLast__.height;
94
- };
95
- scrollListener = function (e) {
96
- // Don't measure (which forces) reflow for scrolls that happen inside of children!
97
- if (e.target.className && typeof e.target.className.indexOf === "function" && e.target.className.indexOf("contract-trigger") < 0 && e.target.className.indexOf("expand-trigger") < 0) {
98
- return;
99
- }
100
- const element = this;
101
- resetTriggers(this);
102
- if (this.__resizeRAF__) {
103
- cancelFrame(this.__resizeRAF__);
104
- }
105
- this.__resizeRAF__ = requestFrame(function animationFrame() {
106
- if (checkTriggers(element)) {
107
- element.__resizeLast__.width = element.offsetWidth;
108
- element.__resizeLast__.height = element.offsetHeight;
109
- element.__resizeListeners__.forEach(function forEachResizeListener(fn) {
110
- fn.call(element, e);
111
- });
112
- }
113
- });
114
- };
115
-
116
- /* Detect CSS Animations support to detect element display/re-attach */
117
- let animation = false;
118
- let keyframeprefix = "";
119
- animationStartEvent = "animationstart";
120
- const domPrefixes = "Webkit Moz O ms".split(" ");
121
- let startEvents = "webkitAnimationStart animationstart oAnimationStart MSAnimationStart".split(" ");
122
- let pfx = "";
123
- {
124
- const elm = document.createElement("fakeelement");
125
- if (elm.style.animationName !== undefined) {
126
- animation = true;
127
- }
128
- if (animation === false) {
129
- for (let i = 0; i < domPrefixes.length; i++) {
130
- if (elm.style[domPrefixes[i] + "AnimationName"] !== undefined) {
131
- pfx = domPrefixes[i];
132
- keyframeprefix = "-" + pfx.toLowerCase() + "-";
133
- animationStartEvent = startEvents[i];
134
- animation = true;
135
- break;
136
- }
137
- }
138
- }
139
- }
140
- animationName = "resizeanim";
141
- animationKeyframes = "@" + keyframeprefix + "keyframes " + animationName + " { from { opacity: 0; } to { opacity: 0; } } ";
142
- animationStyle = keyframeprefix + "animation: 1ms " + animationName + "; ";
143
- }
144
- const createStyles = function (doc) {
145
- if (!doc.getElementById("detectElementResize")) {
146
- //opacity:0 works around a chrome bug https://code.google.com/p/chromium/issues/detail?id=286360
147
- const css = (animationKeyframes ? animationKeyframes : "") + ".resize-triggers { " + (animationStyle ? animationStyle : "") + "visibility: hidden; opacity: 0; } " + '.resize-triggers, .resize-triggers > div, .contract-trigger:before { content: " "; display: block; position: absolute; top: 0; left: 0; height: 100%; width: 100%; overflow: hidden; z-index: -1; } .resize-triggers > div { background: #eee; overflow: auto; } .contract-trigger:before { width: 200%; height: 200%; }',
148
- head = doc.head || doc.getElementsByTagName("head")[0],
149
- style = doc.createElement("style");
150
- style.id = "detectElementResize";
151
- style.type = "text/css";
152
- if (nonce != null) {
153
- style.setAttribute("nonce", nonce);
154
- }
155
- if (style.styleSheet) {
156
- style.styleSheet.cssText = css;
157
- } else {
158
- style.appendChild(doc.createTextNode(css));
159
- }
160
- head.appendChild(style);
161
- }
162
- };
163
- const addResizeListener = function (element, fn) {
164
- if (attachEvent) {
165
- element.attachEvent("onresize", fn);
166
- } else {
167
- if (!element.__resizeTriggers__) {
168
- const doc = element.ownerDocument;
169
- const elementStyle = windowObject.getComputedStyle(element);
170
- if (elementStyle && elementStyle.position === "static") {
171
- element.style.position = "relative";
172
- }
173
- createStyles(doc);
174
- element.__resizeLast__ = {};
175
- element.__resizeListeners__ = [];
176
- (element.__resizeTriggers__ = doc.createElement("div")).className = "resize-triggers";
177
- const expandTrigger = doc.createElement("div");
178
- expandTrigger.className = "expand-trigger";
179
- expandTrigger.appendChild(doc.createElement("div"));
180
- const contractTrigger = doc.createElement("div");
181
- contractTrigger.className = "contract-trigger";
182
- element.__resizeTriggers__.appendChild(expandTrigger);
183
- element.__resizeTriggers__.appendChild(contractTrigger);
184
- element.appendChild(element.__resizeTriggers__);
185
- resetTriggers(element);
186
- element.addEventListener("scroll", scrollListener, true);
187
-
188
- /* Listen for a css animation to detect element display/re-attach */
189
- if (animationStartEvent) {
190
- element.__resizeTriggers__.__animationListener__ = function animationListener(e) {
191
- if (e.animationName === animationName) {
192
- resetTriggers(element);
193
- }
194
- };
195
- element.__resizeTriggers__.addEventListener(animationStartEvent, element.__resizeTriggers__.__animationListener__);
196
- }
197
- }
198
- element.__resizeListeners__.push(fn);
199
- }
200
- };
201
- const removeResizeListener = function (element, fn) {
202
- if (attachEvent) {
203
- element.detachEvent("onresize", fn);
204
- } else {
205
- element.__resizeListeners__.splice(element.__resizeListeners__.indexOf(fn), 1);
206
- if (!element.__resizeListeners__.length) {
207
- element.removeEventListener("scroll", scrollListener, true);
208
- if (element.__resizeTriggers__.__animationListener__) {
209
- element.__resizeTriggers__.removeEventListener(animationStartEvent, element.__resizeTriggers__.__animationListener__);
210
- element.__resizeTriggers__.__animationListener__ = null;
211
- }
212
- try {
213
- element.__resizeTriggers__ = !element.removeChild(element.__resizeTriggers__);
214
- } catch (e) {
215
- // Preact compat; see developit/preact-compat/issues/228
216
- }
217
- }
218
- }
219
- };
220
- return {
221
- addResizeListener,
222
- removeResizeListener
223
- };
224
- }
225
-
226
- class AutoSizer extends Component {
227
- constructor(...args) {
228
- super(...args);
229
- this.state = {
230
- height: this.props.defaultHeight || 0,
231
- scaledHeight: this.props.defaultHeight || 0,
232
- scaledWidth: this.props.defaultWidth || 0,
233
- width: this.props.defaultWidth || 0
234
- };
235
- this._autoSizer = null;
236
- this._detectElementResize = null;
237
- this._parentNode = null;
238
- this._resizeObserver = null;
239
- this._timeoutId = null;
240
- this._onResize = () => {
241
- this._timeoutId = null;
242
- const {
243
- disableHeight,
244
- disableWidth,
245
- onResize
246
- } = this.props;
247
- if (this._parentNode) {
248
- var _style$paddingLeft, _style$paddingRight, _style$paddingTop, _style$paddingBottom;
249
- // Guard against AutoSizer component being removed from the DOM immediately after being added.
250
- // This can result in invalid style values which can result in NaN values if we don't handle them.
251
- // See issue #150 for more context.
252
-
253
- const style = window.getComputedStyle(this._parentNode) || {};
254
- const paddingLeft = parseFloat((_style$paddingLeft = style.paddingLeft) !== null && _style$paddingLeft !== void 0 ? _style$paddingLeft : "0");
255
- const paddingRight = parseFloat((_style$paddingRight = style.paddingRight) !== null && _style$paddingRight !== void 0 ? _style$paddingRight : "0");
256
- const paddingTop = parseFloat((_style$paddingTop = style.paddingTop) !== null && _style$paddingTop !== void 0 ? _style$paddingTop : "0");
257
- const paddingBottom = parseFloat((_style$paddingBottom = style.paddingBottom) !== null && _style$paddingBottom !== void 0 ? _style$paddingBottom : "0");
258
- const rect = this._parentNode.getBoundingClientRect();
259
- const scaledHeight = rect.height - paddingTop - paddingBottom;
260
- const scaledWidth = rect.width - paddingLeft - paddingRight;
261
- const height = this._parentNode.offsetHeight - paddingTop - paddingBottom;
262
- const width = this._parentNode.offsetWidth - paddingLeft - paddingRight;
263
- if (!disableHeight && (this.state.height !== height || this.state.scaledHeight !== scaledHeight) || !disableWidth && (this.state.width !== width || this.state.scaledWidth !== scaledWidth)) {
264
- this.setState({
265
- height,
266
- width,
267
- scaledHeight,
268
- scaledWidth
269
- });
270
- if (typeof onResize === "function") {
271
- onResize({
272
- height,
273
- scaledHeight,
274
- scaledWidth,
275
- width
276
- });
277
- }
278
- }
279
- }
280
- };
281
- this._setRef = autoSizer => {
282
- this._autoSizer = autoSizer;
283
- };
284
- }
285
- componentDidMount() {
286
- const {
287
- nonce
288
- } = this.props;
289
- if (this._autoSizer && this._autoSizer.parentNode && this._autoSizer.parentNode.ownerDocument && this._autoSizer.parentNode.ownerDocument.defaultView && this._autoSizer.parentNode instanceof this._autoSizer.parentNode.ownerDocument.defaultView.HTMLElement) {
290
- // Delay access of parentNode until mount.
291
- // This handles edge-cases where the component has already been unmounted before its ref has been set,
292
- // As well as libraries like react-lite which have a slightly different lifecycle.
293
- this._parentNode = this._autoSizer.parentNode;
294
-
295
- // Defer requiring resize handler in order to support server-side rendering.
296
- // See issue #41
297
- if (this._parentNode != null) {
298
- if (typeof ResizeObserver !== "undefined") {
299
- this._resizeObserver = new ResizeObserver(() => {
300
- // Guard against "ResizeObserver loop limit exceeded" error;
301
- // could be triggered if the state update causes the ResizeObserver handler to run long.
302
- // See https://github.com/bvaughn/react-virtualized-auto-sizer/issues/55
303
- this._timeoutId = setTimeout(this._onResize, 0);
304
- });
305
- this._resizeObserver.observe(this._parentNode);
306
- } else {
307
- this._detectElementResize = createDetectElementResize(nonce);
308
- this._detectElementResize.addResizeListener(this._parentNode, this._onResize);
309
- }
310
- this._onResize();
311
- }
312
- }
313
- }
314
- componentWillUnmount() {
315
- if (this._parentNode) {
316
- if (this._detectElementResize) {
317
- this._detectElementResize.removeResizeListener(this._parentNode, this._onResize);
318
- }
319
- if (this._timeoutId !== null) {
320
- clearTimeout(this._timeoutId);
321
- }
322
- if (this._resizeObserver) {
323
- this._resizeObserver.observe(this._parentNode);
324
- this._resizeObserver.disconnect();
325
- }
326
- }
327
- }
328
- render() {
329
- const {
330
- children,
331
- defaultHeight,
332
- defaultWidth,
333
- disableHeight = false,
334
- disableWidth = false,
335
- nonce,
336
- onResize,
337
- style = {},
338
- tagName = "div",
339
- ...rest
340
- } = this.props;
341
- const {
342
- height,
343
- scaledHeight,
344
- scaledWidth,
345
- width
346
- } = this.state;
347
-
348
- // Outer div should not force width/height since that may prevent containers from shrinking.
349
- // Inner component should overflow and use calculated width/height.
350
- // See issue #68 for more information.
351
- const outerStyle = {
352
- overflow: "visible"
353
- };
354
- const childParams = {};
355
-
356
- // Avoid rendering children before the initial measurements have been collected.
357
- // At best this would just be wasting cycles.
358
- let bailoutOnChildren = false;
359
- if (!disableHeight) {
360
- if (height === 0) {
361
- bailoutOnChildren = true;
362
- }
363
- outerStyle.height = 0;
364
- childParams.height = height;
365
- childParams.scaledHeight = scaledHeight;
366
- }
367
- if (!disableWidth) {
368
- if (width === 0) {
369
- bailoutOnChildren = true;
370
- }
371
- outerStyle.width = 0;
372
- childParams.width = width;
373
- childParams.scaledWidth = scaledWidth;
374
- }
375
- return createElement(tagName, {
376
- ref: this._setRef,
377
- style: {
378
- ...outerStyle,
379
- ...style
380
- },
381
- ...rest
382
- }, !bailoutOnChildren && children(childParams));
383
- }
384
- }
385
-
386
- const multipleTooltipContextDefaults = {
387
- active: false,
388
- activeIndex: undefined,
389
- hideCollapseItemTooltip: false,
390
- lastClickedItemIndex: undefined,
391
- setValue: () => { },
392
- };
393
- const MultipleTooltipContext = React__default.createContext(multipleTooltipContextDefaults);
394
- class MultipleTooltipProvider extends React__default.PureComponent {
395
- constructor() {
396
- super(...arguments);
397
- this.state = Object.assign({}, multipleTooltipContextDefaults);
398
- this.setValue = (value) => {
399
- this.setState(Object.assign({}, value));
400
- };
401
- }
402
- render() {
403
- const { children } = this.props;
404
- return (React__default.createElement(MultipleTooltipContext.Provider, { value: Object.assign(Object.assign({}, this.state), { setValue: this.setValue }) }, children));
405
- }
406
- }
407
-
408
- var css_248z$4 = ".g-root_theme_dark .gn-multiple-tooltip,.g-root_theme_dark-hc .gn-multiple-tooltip{--multiple-tooltip-item-bg-color:#424147;--multiple-tooltip-item-active-bg-color:var(--g-color-base-float-heavy);--multiple-tooltip-backdrop-background:linear-gradient(90deg,#313036,rgba(49,48,54,.3));--multiple-tooltip-backdrop-filter:blur(16px)}.g-root_theme_light .gn-multiple-tooltip,.g-root_theme_light-hc .gn-multiple-tooltip{--multiple-tooltip-item-bg-color:#7a7a7a;--multiple-tooltip-item-active-bg-color:var(--g-color-base-float-heavy);--multiple-tooltip-backdrop-background:linear-gradient(90deg,#fff,hsla(0,0%,100%,.3));--multiple-tooltip-backdrop-filter:blur(12px)}.gn-multiple-tooltip{background-color:transparent;box-shadow:none}.gn-multiple-tooltip:before{background:var(--multiple-tooltip-backdrop-background);box-shadow:none;content:\"\";filter:var(--multiple-tooltip-backdrop-filter);height:100%;position:absolute;width:100%;z-index:-1}.gn-multiple-tooltip__items-container{align-items:flex-start;display:flex;flex-direction:column;padding:32px 40px 32px 12px}.gn-multiple-tooltip__item{align-items:center;background-color:var(--multiple-tooltip-item-bg-color);border-radius:5px;box-sizing:border-box;color:var(--g-color-text-light-primary);display:flex;height:30px;margin-bottom:5px;padding:8px 12px;position:relative;transition:transform .1s ease-in-out}.gn-multiple-tooltip__item:first-child,.gn-multiple-tooltip__item:not(.gn-multiple-tooltip__item_divider)+.gn-multiple-tooltip__item:not(.gn-multiple-tooltip__item_divider){margin-top:5px}.gn-multiple-tooltip__item_divider+.gn-multiple-tooltip__item:not(.gn-multiple-tooltip__item_divider){margin-top:4px}.gn-multiple-tooltip__item_active{background-color:var(--multiple-tooltip-item-active-bg-color);transform:translateX(-12px)}.gn-multiple-tooltip__item_divider{height:15px;margin:0;visibility:hidden}";
409
- styleInject(css_248z$4);
410
-
411
- const b$5 = block('multiple-tooltip');
412
- const POPUP_OFFSET = [-32, 4];
413
- const POPUP_MODIFIERS = [
414
- {
415
- name: 'preventOverflow',
416
- enabled: false,
417
- },
418
- ];
419
- const MultipleTooltip = ({ items, open, anchorRef, placement, }) => {
420
- const { activeIndex, hideCollapseItemTooltip } = React__default.useContext(MultipleTooltipContext);
421
- const activeItem = activeIndex === undefined ? null : items[activeIndex];
422
- return (React__default.createElement(Popup, { open: open, anchorRef: anchorRef, placement: placement, offset: POPUP_OFFSET, contentClassName: b$5(null), modifiers: POPUP_MODIFIERS, disableLayer: true },
423
- React__default.createElement("div", { className: b$5('items-container') }, items
424
- .filter(({ type = 'regular', id }) => !hideCollapseItemTooltip ||
425
- (id !== COLLAPSE_ITEM_ID && type !== 'action'))
426
- .map((item, idx) => {
427
- switch (item.type) {
428
- case 'divider':
429
- return (React__default.createElement("div", { className: b$5('item', { divider: true }), key: idx }, item.title));
430
- default:
431
- return (React__default.createElement("div", { className: b$5('item', {
432
- active: item === activeItem,
433
- }), key: idx }, item.title));
434
- }
435
- }))));
436
- };
437
-
438
- var css_248z$3 = ".gn-composite-bar{flex:1 0 auto;min-height:40px;width:100%}.gn-composite-bar .gn-composite-bar__root-menu-item[class]{background-color:transparent}";
439
- styleInject(css_248z$3);
440
-
441
- const b$4 = block('composite-bar');
442
- const CompositeBarView = ({ type, items, onItemClick, collapseItems, multipleTooltip = false, }) => {
443
- const ref = useRef(null);
444
- const tooltipRef = useRef(null);
445
- const { setValue: setMultipleTooltipContextValue, active: multipleTooltipActive, activeIndex, lastClickedItemIndex, } = useContext(MultipleTooltipContext);
446
- const { compact } = useAsideHeaderContext();
447
- React__default.useEffect(() => {
448
- function handleBlurWindow() {
449
- if (multipleTooltip && multipleTooltipActive) {
450
- setMultipleTooltipContextValue({ active: false });
451
- }
452
- }
453
- window.addEventListener('blur', handleBlurWindow);
454
- return () => {
455
- window.removeEventListener('blur', handleBlurWindow);
456
- };
457
- }, [multipleTooltip, multipleTooltipActive, setMultipleTooltipContextValue]);
458
- const onTooltipMouseEnter = useCallback((e) => {
459
- if (multipleTooltip &&
460
- compact &&
461
- !multipleTooltipActive &&
462
- document.hasFocus() &&
463
- activeIndex !== lastClickedItemIndex &&
464
- e.clientX <= ASIDE_HEADER_COMPACT_WIDTH) {
465
- setMultipleTooltipContextValue === null || setMultipleTooltipContextValue === void 0 ? void 0 : setMultipleTooltipContextValue({
466
- active: true,
467
- });
468
- }
469
- }, [
470
- multipleTooltip,
471
- compact,
472
- multipleTooltipActive,
473
- activeIndex,
474
- lastClickedItemIndex,
475
- setMultipleTooltipContextValue,
476
- ]);
477
- const onTooltipMouseLeave = useCallback(() => {
478
- if (multipleTooltip && multipleTooltipActive && document.hasFocus()) {
479
- setMultipleTooltipContextValue === null || setMultipleTooltipContextValue === void 0 ? void 0 : setMultipleTooltipContextValue({
480
- active: false,
481
- lastClickedItemIndex: undefined,
482
- });
483
- }
484
- }, [multipleTooltip, multipleTooltipActive, setMultipleTooltipContextValue]);
485
- const onMouseEnterByIndex = useCallback((itemIndex) => () => {
486
- if (multipleTooltip && document.hasFocus()) {
487
- let multipleTooltipActiveValue = multipleTooltipActive;
488
- if (!multipleTooltipActive && itemIndex !== lastClickedItemIndex) {
489
- multipleTooltipActiveValue = true;
490
- }
491
- if (activeIndex === itemIndex &&
492
- multipleTooltipActive === multipleTooltipActiveValue) {
493
- return;
494
- }
495
- setMultipleTooltipContextValue({
496
- activeIndex: itemIndex,
497
- active: multipleTooltipActiveValue,
498
- });
499
- }
500
- }, [
501
- multipleTooltip,
502
- multipleTooltipActive,
503
- lastClickedItemIndex,
504
- activeIndex,
505
- setMultipleTooltipContextValue,
506
- ]);
507
- const onMouseLeave = useCallback(() => {
508
- var _a;
509
- if (compact && document.hasFocus()) {
510
- (_a = ref.current) === null || _a === void 0 ? void 0 : _a.activateItem(undefined);
511
- if (multipleTooltip &&
512
- (activeIndex !== undefined || lastClickedItemIndex !== undefined)) {
513
- setMultipleTooltipContextValue({
514
- activeIndex: undefined,
515
- lastClickedItemIndex: undefined,
516
- });
517
- }
518
- }
519
- }, [
520
- activeIndex,
521
- compact,
522
- lastClickedItemIndex,
523
- multipleTooltip,
524
- setMultipleTooltipContextValue,
525
- ]);
526
- const onItemClickByIndex = useCallback((itemIndex) => (item, collapsed, event) => {
527
- if (compact &&
528
- multipleTooltip &&
529
- itemIndex !== lastClickedItemIndex &&
530
- item.id !== COLLAPSE_ITEM_ID) {
531
- setMultipleTooltipContextValue({
532
- lastClickedItemIndex: itemIndex,
533
- active: false,
534
- });
535
- }
536
- onItemClick === null || onItemClick === void 0 ? void 0 : onItemClick(item, collapsed, event);
537
- }, [
538
- compact,
539
- lastClickedItemIndex,
540
- multipleTooltip,
541
- onItemClick,
542
- setMultipleTooltipContextValue,
543
- ]);
544
- return (React__default.createElement(React__default.Fragment, null,
545
- React__default.createElement("div", { ref: tooltipRef, onMouseEnter: onTooltipMouseEnter, onMouseLeave: onTooltipMouseLeave },
546
- React__default.createElement(List, { ref: ref, items: items, selectedItemIndex: type === 'menu' ? getSelectedItemIndex(items) : undefined, itemHeight: getItemHeight, itemsHeight: getItemsHeight, itemClassName: b$4('root-menu-item'), virtualized: false, filterable: false, sortable: false, renderItem: (item, _isItemActive, itemIndex) => {
547
- const itemExtraProps = isMenuItem(item) ? { item } : item;
548
- const enableTooltip = isMenuItem(item)
549
- ? !multipleTooltip
550
- : item.enableTooltip;
551
- return (React__default.createElement(Item, Object.assign({}, itemExtraProps, { enableTooltip: enableTooltip, onMouseEnter: onMouseEnterByIndex(itemIndex), onMouseLeave: onMouseLeave, onItemClick: onItemClickByIndex(itemIndex), collapseItems: collapseItems })));
552
- } })),
553
- type === 'menu' && multipleTooltip && (React__default.createElement(MultipleTooltip, { open: compact && multipleTooltipActive, anchorRef: tooltipRef, placement: ['right-start'], items: items }))));
554
- };
555
- const CompositeBar = ({ type, items, menuMoreTitle, onItemClick, multipleTooltip = false, }) => {
556
- if (items.length === 0) {
557
- return null;
558
- }
559
- let node;
560
- if (type === 'menu') {
561
- const minHeight = getItemsMinHeight(items);
562
- const collapseItem = getMoreButtonItem(menuMoreTitle);
563
- node = (React__default.createElement("div", { className: b$4({ autosizer: true }), style: { minHeight } }, items.length !== 0 && (React__default.createElement(AutoSizer, null, ({ width, height }) => {
564
- const { listItems, collapseItems } = getAutosizeListItems(items, height, collapseItem);
565
- return (React__default.createElement("div", { style: { width, height } },
566
- React__default.createElement(CompositeBarView, { type: "menu", items: listItems, onItemClick: onItemClick, collapseItems: collapseItems, multipleTooltip: multipleTooltip })));
567
- }))));
568
- }
569
- else {
570
- node = (React__default.createElement("div", { className: b$4({ subheader: true }) },
571
- React__default.createElement(CompositeBarView, { type: "subheader", items: items, onItemClick: onItemClick })));
572
- }
573
- return React__default.createElement(MultipleTooltipProvider, null, node);
574
- };
575
-
576
- const b$3 = block('aside-header');
577
-
578
- var en$1 = {
579
- "menu-item.all-pages.title": "All pages",
580
- "all-panel.menu.category.allOther": "All other",
581
- "all-panel.resetToDefault": "Reset to default",
582
- "all-panel.title.editing": "Editing",
583
- "all-panel.title.main": "All pages"
584
- };
585
-
586
- var ru$1 = {
587
- "menu-item.all-pages.title": "Все страницы",
588
- "all-panel.menu.category.allOther": "Остальное",
589
- "all-panel.resetToDefault": "Сбросить по умолчанию",
590
- "all-panel.title.editing": "Редактирование",
591
- "all-panel.title.main": "Все страницы"
592
- };
593
-
594
- const COMPONENT$1 = 'AllPagesPanel';
595
- var i18n$1 = registerKeyset({ en: en$1, ru: ru$1 }, COMPONENT$1);
596
-
597
- const ALL_PAGES_ID = 'all-pages';
598
- function getAllPagesMenuItem() {
599
- return {
600
- id: ALL_PAGES_ID,
601
- title: i18n$1('menu-item.all-pages.title'),
602
- tooltipText: i18n$1('menu-item.all-pages.title'),
603
- icon: Ellipsis,
604
- };
605
- }
606
-
607
- const useGroupedMenuItems = (items) => {
608
- const allPagesMenuItems = useMemo(() => {
609
- const filteredItems = items.filter((item) => item.type !== 'divider' && item.id !== ALL_PAGES_ID);
610
- filteredItems.sort((a, b) => {
611
- if (a.type === 'action') {
612
- return 1;
613
- }
614
- if (b.type === 'action') {
615
- return -1;
616
- }
617
- return 0;
618
- });
619
- const groupedItems = filteredItems.reduce((acc, item) => {
620
- const category = item.category || i18n$1('all-panel.menu.category.allOther');
621
- if (!acc[category]) {
622
- acc[category] = [];
623
- }
624
- acc[category].push(item);
625
- return acc;
626
- }, {});
627
- return groupedItems;
628
- }, [items]);
629
- return allPagesMenuItems;
630
- };
631
-
632
- var css_248z$2 = ".gn-all-pages-list-item{align-items:center;column-gap:var(--g-spacing-4);display:flex;height:40px;padding:0 var(--g-spacing-6);width:100%}.gn-all-pages-list-item__text{flex:1}.gn-all-pages-list-item__icon{color:var(--g-color-text-misc)}";
633
- styleInject(css_248z$2);
634
-
635
- const b$2 = block('all-pages-list-item');
636
- const AllPagesListItem = (props) => {
637
- const { item, editMode, onToggle } = props;
638
- const onPinButtonClick = useCallback((e) => {
639
- e.stopPropagation();
640
- e.preventDefault();
641
- onToggle();
642
- }, [onToggle]);
643
- const onItemClick = (e) => {
644
- if (editMode) {
645
- e.stopPropagation();
646
- e.preventDefault();
647
- }
648
- };
649
- return (React__default.createElement("div", { className: b$2(), onClick: onItemClick },
650
- item.icon ? (React__default.createElement(Icon, { className: b$2('icon'), data: item.icon, size: item.iconSize })) : null,
651
- React__default.createElement("span", { className: b$2('text') }, item.title),
652
- editMode && (React__default.createElement(Button, { onClick: onPinButtonClick, view: item.hidden ? 'flat-secondary' : 'flat-action' },
653
- React__default.createElement(Button.Icon, null, item.hidden ? React__default.createElement(Pin, null) : React__default.createElement(PinFill, null))))));
654
- };
655
-
656
- var css_248z$1 = ".gn-all-pages-panel{box-sizing:border-box;height:100%;min-width:300px;padding:var(--g-spacing-4) var(--g-spacing-6)}.gn-all-pages-panel__content{flex:1;margin:0 calc(var(--g-spacing-6)*-1);overflow:auto}.gn-all-pages-panel__category{padding:0 var(--g-spacing-6)}.gn-all-pages-panel__discoverable-feature-wrapper{display:flex}";
657
- styleInject(css_248z$1);
658
-
659
- const b$1 = block('all-pages-panel');
660
- const AllPagesPanel = (props) => {
661
- const { startEditIcon, onEditModeChanged, className } = props;
662
- const { menuItems, onMenuItemsChanged } = useAsideHeaderInnerContext();
663
- const menuItemsRef = useRef(menuItems);
664
- menuItemsRef.current = menuItems;
665
- const [isEditMode, setIsEditMode] = useState(false);
666
- const toggleEditMode = useCallback(() => {
667
- setIsEditMode((prev) => !prev);
668
- }, []);
669
- const groupedItems = useGroupedMenuItems(menuItems);
670
- useEffect(() => {
671
- onEditModeChanged === null || onEditModeChanged === void 0 ? void 0 : onEditModeChanged(isEditMode);
672
- }, [isEditMode, onEditModeChanged]);
673
- const onItemClick = useCallback((item) => {
674
- var _a;
675
- //@ts-ignore TODO fix when @gravity-ui/uikit/List will provide event arg on item click
676
- (_a = item.onItemClick) === null || _a === void 0 ? void 0 : _a.call(item, item, false);
677
- }, []);
678
- const togglePageVisibility = useCallback((item) => {
679
- if (!onMenuItemsChanged) {
680
- return;
681
- }
682
- const changedItem = Object.assign(Object.assign({}, item), { hidden: !item.hidden });
683
- const originItems = menuItemsRef.current.filter((menuItem) => menuItem.id !== ALL_PAGES_ID);
684
- onMenuItemsChanged(originItems.map((menuItem) => {
685
- if (menuItem.id !== changedItem.id) {
686
- return menuItem;
687
- }
688
- return changedItem;
689
- }));
690
- }, [onMenuItemsChanged]);
691
- const itemRender = useCallback((item, _isActive, _itemIndex) => (React__default.createElement(AllPagesListItem, { item: item, editMode: isEditMode, onToggle: () => togglePageVisibility(item) })), [isEditMode, togglePageVisibility]);
692
- const onResetToDefaultClick = useCallback(() => {
693
- if (!onMenuItemsChanged) {
694
- return;
695
- }
696
- const originItems = menuItemsRef.current.filter((item) => item.id !== ALL_PAGES_ID);
697
- onMenuItemsChanged(originItems.map((item) => (Object.assign(Object.assign({}, item), { hidden: false }))));
698
- }, [onMenuItemsChanged]);
699
- return (React__default.createElement(Flex, { className: b$1(null, className), gap: "5", direction: "column" },
700
- React__default.createElement(Flex, { gap: "4", alignItems: "center", justifyContent: "space-between" },
701
- React__default.createElement(Text, { variant: "subheader-2" }, isEditMode ? i18n$1('all-panel.title.editing') : i18n$1('all-panel.title.main')),
702
- React__default.createElement(Button, { selected: isEditMode, view: "normal", onClick: toggleEditMode }, startEditIcon ? startEditIcon : React__default.createElement(Icon, { data: Gear }))),
703
- React__default.createElement(Flex, { className: b$1('content'), gap: "5", direction: "column" }, Object.keys(groupedItems).map((category) => {
704
- return (React__default.createElement(Flex, { key: category, direction: "column", gap: "3" },
705
- React__default.createElement(Text, { className: b$1('category'), variant: "body-1", color: "secondary" }, category),
706
- React__default.createElement(List, { virtualized: false, filterable: false, items: groupedItems[category], onItemClick: onItemClick, renderItem: itemRender })));
707
- })),
708
- isEditMode && (React__default.createElement(Button, { onClick: onResetToDefaultClick }, i18n$1('all-panel.resetToDefault')))));
709
- };
710
-
711
- const useVisibleMenuItems = () => {
712
- const { menuItems, allPagesIsAvailable } = useAsideHeaderInnerContext();
713
- return useMemo(() => {
714
- if (!allPagesIsAvailable) {
715
- return menuItems;
716
- }
717
- let lastVisibleIndex = 0;
718
- return menuItems.filter((item, index, items) => {
719
- if (item.hidden) {
720
- return false;
721
- }
722
- if (index > 0 &&
723
- item.type === 'divider' &&
724
- (items[lastVisibleIndex].type === 'divider' || items[lastVisibleIndex].hidden)) {
725
- return false;
726
- }
727
- lastVisibleIndex = index;
728
- return true;
729
- });
730
- }, [allPagesIsAvailable, menuItems]);
731
- };
732
-
733
- var button_collapse$1 = "Collapse";
734
- var button_expand$1 = "Expand";
735
- var label_more$1 = "More";
736
- var en = {
737
- button_collapse: button_collapse$1,
738
- button_expand: button_expand$1,
739
- label_more: label_more$1
740
- };
741
-
742
- var button_collapse = "Свернуть";
743
- var button_expand = "Развернуть";
744
- var label_more = "Ещё";
745
- var ru = {
746
- button_collapse: button_collapse,
747
- button_expand: button_expand,
748
- label_more: label_more
749
- };
750
-
751
- const COMPONENT = 'AsideHeader';
752
- var i18n = registerKeyset({ en, ru }, COMPONENT);
753
-
754
- var css_248z = ".gn-logo{height:40px}.gn-logo,.gn-logo__logo-btn-place{align-items:center;display:flex;flex-shrink:0}.gn-logo__logo-btn-place{cursor:pointer;justify-content:center;width:var(--gn-aside-header-min-width)}.gn-logo__logo-btn-place .yc-button:before{background-color:transparent}.gn-logo__btn-logo.yc-button_view_flat.yc-button_size_l{--yc-button-height:var(--gn-aside-header-item-icon-background-size)}.gn-logo__logo{cursor:pointer;font-size:var(--g-text-body-2-font-size);font-weight:var(--g-text-body-font-weight);line-height:var(--g-text-body-2-line-height);vertical-align:middle}.gn-logo__logo-link,.gn-logo__logo-link:active,.gn-logo__logo-link:focus,.gn-logo__logo-link:hover,.gn-logo__logo-link:visited{color:inherit;outline:none;text-decoration:none}.g-root .gn-logo__btn-logo.button2_theme_flat.button2_hovered_yes:before{background-color:transparent}";
755
- styleInject(css_248z);
756
-
757
- const b = block('logo');
758
- const Logo = ({ text, icon, iconSrc, iconClassName, iconSize = 24, textSize = 15, href, wrapper, onClick, }) => {
759
- const { compact } = useAsideHeaderContext();
760
- const hasWrapper = typeof wrapper === 'function';
761
- let buttonIcon;
762
- if (iconSrc) {
763
- buttonIcon = (React__default.createElement(Button.Icon, { className: iconClassName },
764
- React__default.createElement("img", { alt: "logo icon", src: iconSrc, width: iconSize, height: iconSize })));
765
- }
766
- else if (icon) {
767
- buttonIcon = React__default.createElement(Icon, { data: icon, size: iconSize, className: iconClassName });
768
- }
769
- const button = (React__default.createElement(Button, { view: "flat", size: "l", className: b('btn-logo'), component: hasWrapper ? 'span' : undefined, onClick: onClick, target: "_self", href: href }, buttonIcon));
770
- let logo;
771
- if (typeof text === 'function') {
772
- logo = text();
773
- }
774
- else {
775
- logo = (React__default.createElement("div", { className: b('logo'), style: { fontSize: textSize } }, text));
776
- }
777
- return (React__default.createElement("div", { className: b() },
778
- React__default.createElement("div", { className: b('logo-btn-place') }, hasWrapper ? wrapper(button, Boolean(compact)) : button),
779
- !compact &&
780
- (hasWrapper ? (React__default.createElement("div", { onClick: onClick }, wrapper(logo, Boolean(compact)))) : (React__default.createElement("a", { href: href !== null && href !== void 0 ? href : '/', target: "_self", className: b('logo-link'), onClick: onClick }, logo)))));
781
- };
782
-
783
- var _path$1;
784
- 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); }
785
- var SvgDividerCollapsed = function SvgDividerCollapsed(props) {
786
- return /*#__PURE__*/React.createElement("svg", _extends$1({
787
- width: 56,
788
- height: 29,
789
- viewBox: "0 0 56 29",
790
- fill: "currentColor",
791
- xmlns: "http://www.w3.org/2000/svg"
792
- }, props), _path$1 || (_path$1 = /*#__PURE__*/React.createElement("path", {
793
- d: "M56 0v29c-.8-1-7-6.1-17.7-8.4L13 15.7A16 16 0 0 1 0 0Z"
794
- })));
795
- };
796
- var headerDividerCollapsedIcon = SvgDividerCollapsed;
797
-
798
- const DEFAULT_SUBHEADER_ITEMS = [];
799
- const Header = () => {
800
- const { logo, onItemClick, onClosePanel, headerDecoration, subheaderItems } = useAsideHeaderInnerContext();
801
- const { onClick: onLogoClickProp } = logo;
802
- const onLogoClick = useCallback((event) => {
803
- onClosePanel === null || onClosePanel === void 0 ? void 0 : onClosePanel();
804
- onLogoClickProp === null || onLogoClickProp === void 0 ? void 0 : onLogoClickProp(event);
805
- }, [onClosePanel, onLogoClickProp]);
806
- return (React__default.createElement("div", { className: b$3('header', { ['with-decoration']: headerDecoration }) },
807
- React__default.createElement(Logo, Object.assign({}, logo, { onClick: onLogoClick })),
808
- React__default.createElement(CompositeBar, { type: "subheader", items: subheaderItems || DEFAULT_SUBHEADER_ITEMS, onItemClick: onItemClick }),
809
- React__default.createElement(Icon, { data: headerDividerCollapsedIcon, className: b$3('header-divider'), width: ASIDE_HEADER_COMPACT_WIDTH, height: "29" })));
810
- };
811
-
812
- function fakeDisplayName(newDisplayName, Component) {
813
- const Fake = (props) => React__default.createElement(Component, Object.assign({}, props));
814
- Fake.displayName = newDisplayName;
815
- return Fake;
816
- }
817
-
818
- var _path;
819
- 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); }
820
- var SvgControlMenuButton = function SvgControlMenuButton(props) {
821
- return /*#__PURE__*/React.createElement("svg", _extends({
822
- width: 8,
823
- height: 8,
824
- viewBox: "0 0 8 8",
825
- fill: "currentColor",
826
- xmlns: "http://www.w3.org/2000/svg"
827
- }, props), _path || (_path = /*#__PURE__*/React.createElement("path", {
828
- 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"
829
- })));
830
- };
831
- var controlMenuButtonIcon = SvgControlMenuButton;
832
-
833
- // TODO: remove temporary fix for expand button
834
- const NotIcon = fakeDisplayName('NotIcon', Icon);
835
- const CollapseButton = () => {
836
- const { onChangeCompact, compact, expandTitle, collapseTitle } = useAsideHeaderInnerContext();
837
- const onCollapseButtonClick = useCallback(() => {
838
- onChangeCompact === null || onChangeCompact === void 0 ? void 0 : onChangeCompact(!compact);
839
- }, [compact, onChangeCompact]);
840
- const buttonTitle = compact
841
- ? expandTitle || i18n('button_expand')
842
- : collapseTitle || i18n('button_collapse');
843
- return (React__default.createElement(Button, { className: b$3('collapse-button', { compact }), view: "flat", onClick: onCollapseButtonClick, title: buttonTitle },
844
- React__default.createElement(NotIcon, { data: controlMenuButtonIcon, className: b$3('collapse-icon'), width: "16", height: "10" })));
845
- };
846
-
847
- const Panels = () => {
848
- const { panelItems, onClosePanel, size } = useAsideHeaderInnerContext();
849
- return panelItems ? (React__default.createElement(Drawer, { className: b$3('panels'), onVeilClick: onClosePanel, onEscape: onClosePanel, style: { left: size } }, panelItems.map((item) => (React__default.createElement(DrawerItem, Object.assign({ key: item.id }, item)))))) : null;
850
- };
851
-
852
- const FirstPanel = React__default.forwardRef((_props, ref) => {
853
- const { size, onItemClick, headerDecoration, multipleTooltip, menuMoreTitle, renderFooter, compact, } = useAsideHeaderInnerContext();
854
- const visibleMenuItems = useVisibleMenuItems();
855
- const asideRef = useRef(null);
856
- React__default.useEffect(() => {
857
- setRef(ref, asideRef.current);
858
- }, [ref]);
859
- return (React__default.createElement(React__default.Fragment, null,
860
- React__default.createElement("div", { className: b$3('aside'), style: { width: size } },
861
- React__default.createElement("div", { className: b$3('aside-popup-anchor'), ref: asideRef }),
862
- React__default.createElement("div", { className: b$3('aside-content', { ['with-decoration']: headerDecoration }) },
863
- React__default.createElement(Header, null),
864
- (visibleMenuItems === null || visibleMenuItems === void 0 ? void 0 : visibleMenuItems.length) ? (React__default.createElement(CompositeBar, { type: "menu", items: visibleMenuItems, menuMoreTitle: menuMoreTitle !== null && menuMoreTitle !== void 0 ? menuMoreTitle : i18n('label_more'), onItemClick: onItemClick, multipleTooltip: multipleTooltip })) : (React__default.createElement("div", { className: b$3('menu-items') })),
865
- React__default.createElement("div", { className: b$3('footer') }, renderFooter === null || renderFooter === void 0 ? void 0 : renderFooter({
866
- size,
867
- compact: Boolean(compact),
868
- asideRef,
869
- })),
870
- React__default.createElement(CollapseButton, null))),
871
- React__default.createElement(Panels, null)));
872
- });
873
-
874
- export { AllPagesPanel as A, FirstPanel as F, b$3 as b, getAllPagesMenuItem as g };
875
- //# sourceMappingURL=FirstPanel-bafddc24.js.map