@atlaskit/navigation-system 11.3.0 → 11.3.2
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.
- package/CHANGELOG.md +14 -0
- package/dist/cjs/ui/page-layout/calculate-layout-area-states.js +76 -37
- package/dist/cjs/ui/page-layout/chat-panel.js +6 -3
- package/dist/cjs/ui/page-layout/layout-area-sizing-context.js +2 -2
- package/dist/cjs/ui/page-layout/layout-area-sizing-provider.js +243 -247
- package/dist/cjs/ui/page-layout/layout-area-sizing-runtime.js +468 -0
- package/dist/cjs/ui/page-layout/main/main.js +1 -1
- package/dist/cjs/ui/page-layout/panel-splitter/panel-splitter.js +239 -99
- package/dist/cjs/ui/page-layout/panel-splitter/provider.js +3 -1
- package/dist/cjs/ui/page-layout/root.compiled.css +14 -3
- package/dist/cjs/ui/page-layout/root.js +43 -17
- package/dist/cjs/ui/page-layout/side-nav/side-nav.js +14 -3
- package/dist/cjs/ui/page-layout/use-css-layout-area-states.js +117 -0
- package/dist/cjs/ui/page-layout/use-layout-area-sizing.js +3 -1
- package/dist/es2019/ui/page-layout/calculate-layout-area-states.js +51 -17
- package/dist/es2019/ui/page-layout/chat-panel.js +29 -5
- package/dist/es2019/ui/page-layout/layout-area-sizing-context.js +2 -2
- package/dist/es2019/ui/page-layout/layout-area-sizing-provider.js +171 -241
- package/dist/es2019/ui/page-layout/layout-area-sizing-runtime.js +419 -0
- package/dist/es2019/ui/page-layout/main/main.js +2 -2
- package/dist/es2019/ui/page-layout/panel-splitter/panel-splitter.js +60 -10
- package/dist/es2019/ui/page-layout/panel-splitter/provider.js +3 -1
- package/dist/es2019/ui/page-layout/root.compiled.css +14 -3
- package/dist/es2019/ui/page-layout/root.js +30 -3
- package/dist/es2019/ui/page-layout/side-nav/side-nav.js +23 -3
- package/dist/es2019/ui/page-layout/use-css-layout-area-states.js +73 -0
- package/dist/es2019/ui/page-layout/use-layout-area-sizing.js +3 -1
- package/dist/esm/ui/page-layout/calculate-layout-area-states.js +75 -37
- package/dist/esm/ui/page-layout/chat-panel.js +7 -4
- package/dist/esm/ui/page-layout/layout-area-sizing-context.js +2 -2
- package/dist/esm/ui/page-layout/layout-area-sizing-provider.js +243 -248
- package/dist/esm/ui/page-layout/layout-area-sizing-runtime.js +459 -0
- package/dist/esm/ui/page-layout/main/main.js +2 -2
- package/dist/esm/ui/page-layout/panel-splitter/panel-splitter.js +238 -98
- package/dist/esm/ui/page-layout/panel-splitter/provider.js +3 -1
- package/dist/esm/ui/page-layout/root.compiled.css +14 -3
- package/dist/esm/ui/page-layout/root.js +42 -16
- package/dist/esm/ui/page-layout/side-nav/side-nav.js +14 -3
- package/dist/esm/ui/page-layout/use-css-layout-area-states.js +110 -0
- package/dist/esm/ui/page-layout/use-layout-area-sizing.js +3 -1
- package/dist/types/ui/page-layout/calculate-layout-area-states.d.ts +7 -2
- package/dist/types/ui/page-layout/layout-area-sizing-context.d.ts +10 -3
- package/dist/types/ui/page-layout/layout-area-sizing-provider.d.ts +6 -0
- package/dist/types/ui/page-layout/layout-area-sizing-runtime.d.ts +8 -0
- package/dist/types/ui/page-layout/panel-splitter/panel-splitter-context.d.ts +4 -0
- package/dist/types/ui/page-layout/panel-splitter/provider.d.ts +1 -1
- package/dist/types/ui/page-layout/root.d.ts +2 -0
- package/dist/types/ui/page-layout/use-css-layout-area-states.d.ts +8 -0
- package/dist/types/ui/page-layout/use-layout-area-sizing.d.ts +2 -0
- package/package.json +12 -6
|
@@ -1,295 +1,290 @@
|
|
|
1
|
-
import _defineProperty from "@babel/runtime/helpers/defineProperty";
|
|
2
1
|
import _slicedToArray from "@babel/runtime/helpers/slicedToArray";
|
|
3
2
|
function _createForOfIteratorHelper(r, e) { var t = "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (!t) { if (Array.isArray(r) || (t = _unsupportedIterableToArray(r)) || e && r && "number" == typeof r.length) { t && (r = t); var _n = 0, F = function F() {}; return { s: F, n: function n() { return _n >= r.length ? { done: !0 } : { done: !1, value: r[_n++] }; }, e: function e(r) { throw r; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var o, a = !0, u = !1; return { s: function s() { t = t.call(r); }, n: function n() { var r = t.next(); return a = r.done, r; }, e: function e(r) { u = !0, o = r; }, f: function f() { try { a || null == t.return || t.return(); } finally { if (u) throw o; } } }; }
|
|
4
3
|
function _unsupportedIterableToArray(r, a) { if (r) { if ("string" == typeof r) return _arrayLikeToArray(r, a); var t = {}.toString.call(r).slice(8, -1); return "Object" === t && r.constructor && (t = r.constructor.name), "Map" === t || "Set" === t ? Array.from(r) : "Arguments" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray(r, a) : void 0; } }
|
|
5
4
|
function _arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
import React, { useCallback, useEffect, useMemo, useState } from 'react';
|
|
9
|
-
import { bind } from 'bind-event-listener';
|
|
10
|
-
import { calculateLayoutAreaStates } from './calculate-layout-area-states';
|
|
5
|
+
import React, { useCallback, useEffect, useMemo, useRef, useState } from 'react';
|
|
6
|
+
import { bind, bindAll } from 'bind-event-listener';
|
|
11
7
|
import { LayoutAreaSizingContext } from './layout-area-sizing-context';
|
|
12
8
|
import { layoutAreaStateContexts } from './layout-area-state-contexts';
|
|
13
|
-
import {
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
} : undefined;
|
|
26
|
-
}, [mode, width, minWidth]);
|
|
27
|
-
}
|
|
28
|
-
export function LayoutAreaSizingProvider(_ref2) {
|
|
29
|
-
var children = _ref2.children,
|
|
30
|
-
layoutRef = _ref2.layoutRef;
|
|
31
|
-
var occupiedWidth = useOccupiedLayoutWidth(layoutRef);
|
|
9
|
+
import { useCssLayoutAreaStates } from './use-css-layout-area-states';
|
|
10
|
+
|
|
11
|
+
/**
|
|
12
|
+
* Stable, synchronous boundary for SSR content. The drag/cascade implementation
|
|
13
|
+
* is a sibling, not a replacement wrapper, so loading it cannot remount the app.
|
|
14
|
+
* CSS handles initial and responsive geometry; only splitter interaction requests
|
|
15
|
+
* the asynchronous chunk. The eager observer reads modes without changing widths.
|
|
16
|
+
*/
|
|
17
|
+
export function LayoutAreaSizingProvider(_ref) {
|
|
18
|
+
var _states$sideNav$mode, _states$sideNav, _states$chatPanel$mo, _states$chatPanel;
|
|
19
|
+
var children = _ref.children,
|
|
20
|
+
layoutRef = _ref.layoutRef;
|
|
32
21
|
var _useState = useState(null),
|
|
33
22
|
_useState2 = _slicedToArray(_useState, 2),
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
var _useState3 = useState(
|
|
23
|
+
Runtime = _useState2[0],
|
|
24
|
+
setRuntime = _useState2[1];
|
|
25
|
+
var _useState3 = useState({}),
|
|
37
26
|
_useState4 = _slicedToArray(_useState3, 2),
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
var
|
|
27
|
+
states = _useState4[0],
|
|
28
|
+
setStates = _useState4[1];
|
|
29
|
+
var actions = useRef(null);
|
|
30
|
+
var configs = useRef({});
|
|
31
|
+
var _useState5 = useState(null),
|
|
41
32
|
_useState6 = _slicedToArray(_useState5, 2),
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
var _useState7 = useState(
|
|
33
|
+
lastOpenedOverlay = _useState6[0],
|
|
34
|
+
setLastOpenedOverlay = _useState6[1];
|
|
35
|
+
var _useState7 = useState(0),
|
|
45
36
|
_useState8 = _slicedToArray(_useState7, 2),
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
var
|
|
49
|
-
var
|
|
50
|
-
var
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
37
|
+
configRevision = _useState8[0],
|
|
38
|
+
setConfigRevision = _useState8[1];
|
|
39
|
+
var cssModes = useCssLayoutAreaStates(layoutRef, configRevision, Runtime === null);
|
|
40
|
+
var sideNavMode = (_states$sideNav$mode = (_states$sideNav = states['side-nav']) === null || _states$sideNav === void 0 ? void 0 : _states$sideNav.mode) !== null && _states$sideNav$mode !== void 0 ? _states$sideNav$mode : cssModes['side-nav'];
|
|
41
|
+
var chatPanelMode = (_states$chatPanel$mo = (_states$chatPanel = states['chat-panel']) === null || _states$chatPanel === void 0 ? void 0 : _states$chatPanel.mode) !== null && _states$chatPanel$mo !== void 0 ? _states$chatPanel$mo : cssModes['chat-panel'];
|
|
42
|
+
|
|
43
|
+
// Overlay dismissal is available before the sizing chunk loads. Keep the open
|
|
44
|
+
// order here too: replaying registrations into the runtime loses that order.
|
|
54
45
|
useEffect(function () {
|
|
55
|
-
var root = layoutRef === null || layoutRef === void 0 ? void 0 : layoutRef.current;
|
|
56
|
-
var previous = null;
|
|
57
|
-
// Match the actual rem-based grid breakpoint, including browser font settings.
|
|
58
46
|
var inlineChatQuery = window.matchMedia('(min-width: 40rem)');
|
|
59
|
-
var
|
|
60
|
-
|
|
61
|
-
var
|
|
62
|
-
var
|
|
63
|
-
|
|
64
|
-
var next = {
|
|
65
|
-
viewportWidth: window.innerWidth,
|
|
66
|
-
layoutWidth: layoutWidth,
|
|
67
|
-
isChatPanelOverlay: !inlineChatQuery.matches,
|
|
68
|
-
isSideNavOverlay: !inlineSideNavQuery.matches
|
|
69
|
-
};
|
|
70
|
-
if (((_previous = previous) === null || _previous === void 0 ? void 0 : _previous.viewportWidth) === next.viewportWidth && previous.layoutWidth === next.layoutWidth && previous.isChatPanelOverlay === next.isChatPanelOverlay && previous.isSideNavOverlay === next.isSideNavOverlay) {
|
|
47
|
+
var dismissOlderOverlay = function dismissOlderOverlay() {
|
|
48
|
+
var _olderOverlay$onReque;
|
|
49
|
+
var sideNav = configs.current['side-nav'];
|
|
50
|
+
var chatPanel = configs.current['chat-panel'];
|
|
51
|
+
if (!(sideNav !== null && sideNav !== void 0 && sideNav.isOpen) || !(chatPanel !== null && chatPanel !== void 0 && chatPanel.isOpen) || !lastOpenedOverlay) {
|
|
71
52
|
return;
|
|
72
53
|
}
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
updateDimensions();
|
|
78
|
-
var observer = new ResizeObserver(function (entries) {
|
|
79
|
-
var entry = entries.find(function (entry) {
|
|
80
|
-
return entry.target === root;
|
|
81
|
-
});
|
|
82
|
-
if (entry) {
|
|
83
|
-
updateDimensions(entry.contentRect.width);
|
|
54
|
+
// Before allocation, CSS puts both areas in overlay below 40rem. Once
|
|
55
|
+
// sizing is active, also honour overlays caused by custom widths/slots.
|
|
56
|
+
if (inlineChatQuery.matches && (sideNavMode !== 'overlay' || chatPanelMode !== 'overlay')) {
|
|
57
|
+
return;
|
|
84
58
|
}
|
|
59
|
+
var olderOverlay = lastOpenedOverlay === 'side-nav' ? chatPanel : sideNav;
|
|
60
|
+
(_olderOverlay$onReque = olderOverlay.onRequestClose) === null || _olderOverlay$onReque === void 0 || _olderOverlay$onReque.call(olderOverlay);
|
|
61
|
+
};
|
|
62
|
+
dismissOlderOverlay();
|
|
63
|
+
return bind(inlineChatQuery, {
|
|
64
|
+
type: 'change',
|
|
65
|
+
listener: dismissOlderOverlay
|
|
85
66
|
});
|
|
86
|
-
|
|
87
|
-
|
|
67
|
+
}, [chatPanelMode, lastOpenedOverlay, sideNavMode]);
|
|
68
|
+
var mainMinWidth = useRef(320);
|
|
69
|
+
var loadRef = useRef(function () {});
|
|
70
|
+
var ready = useRef(false);
|
|
71
|
+
var waiting = useRef([]);
|
|
72
|
+
var pending = useRef([]);
|
|
73
|
+
var prepareResize = useCallback(function () {
|
|
74
|
+
if (ready.current) {
|
|
75
|
+
return Promise.resolve(true);
|
|
88
76
|
}
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
return updateDimensions();
|
|
93
|
-
}
|
|
77
|
+
return new Promise(function (resolve) {
|
|
78
|
+
waiting.current.push(resolve);
|
|
79
|
+
loadRef.current();
|
|
94
80
|
});
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
81
|
+
}, []);
|
|
82
|
+
useEffect(function () {
|
|
83
|
+
var root = layoutRef === null || layoutRef === void 0 ? void 0 : layoutRef.current;
|
|
84
|
+
if (!root) {
|
|
85
|
+
return;
|
|
86
|
+
}
|
|
87
|
+
var cancelled = false;
|
|
88
|
+
var loading = false;
|
|
89
|
+
var waitingForRuntime = waiting.current;
|
|
90
|
+
var load = function load() {
|
|
91
|
+
if (loading) {
|
|
92
|
+
return;
|
|
99
93
|
}
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
94
|
+
loading = true;
|
|
95
|
+
void import( /* webpackChunkName: "@atlaskit-internal_navigation-layout-sizing" */'./layout-area-sizing-runtime').then(function (_ref2) {
|
|
96
|
+
var LayoutAreaSizingRuntime = _ref2.LayoutAreaSizingRuntime;
|
|
97
|
+
if (!cancelled) {
|
|
98
|
+
setRuntime(function () {
|
|
99
|
+
return LayoutAreaSizingRuntime;
|
|
100
|
+
});
|
|
101
|
+
}
|
|
102
|
+
}, function () {
|
|
103
|
+
loading = false;
|
|
104
|
+
pending.current = [];
|
|
105
|
+
var _iterator = _createForOfIteratorHelper(waitingForRuntime.splice(0)),
|
|
106
|
+
_step;
|
|
107
|
+
try {
|
|
108
|
+
for (_iterator.s(); !(_step = _iterator.n()).done;) {
|
|
109
|
+
var resolve = _step.value;
|
|
110
|
+
resolve(false);
|
|
111
|
+
}
|
|
112
|
+
} catch (err) {
|
|
113
|
+
_iterator.e(err);
|
|
114
|
+
} finally {
|
|
115
|
+
_iterator.f();
|
|
116
|
+
}
|
|
117
|
+
});
|
|
118
|
+
};
|
|
119
|
+
loadRef.current = load;
|
|
120
|
+
var loadForSplitter = function loadForSplitter(event) {
|
|
121
|
+
if (event.target instanceof Element && event.target.closest('[data-panel-splitter]')) {
|
|
122
|
+
load();
|
|
105
123
|
}
|
|
106
|
-
}
|
|
124
|
+
};
|
|
125
|
+
var unbindRoot = bindAll(root, [{
|
|
126
|
+
type: 'pointerover',
|
|
127
|
+
listener: loadForSplitter,
|
|
128
|
+
options: {
|
|
129
|
+
passive: true
|
|
130
|
+
}
|
|
131
|
+
}, {
|
|
132
|
+
type: 'focusin',
|
|
133
|
+
listener: loadForSplitter
|
|
134
|
+
}, {
|
|
135
|
+
type: 'pointerdown',
|
|
136
|
+
listener: loadForSplitter,
|
|
137
|
+
options: {
|
|
138
|
+
passive: true
|
|
139
|
+
}
|
|
140
|
+
}]);
|
|
107
141
|
return function () {
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
142
|
+
cancelled = true;
|
|
143
|
+
ready.current = false;
|
|
144
|
+
pending.current = [];
|
|
145
|
+
var _iterator2 = _createForOfIteratorHelper(waitingForRuntime.splice(0)),
|
|
146
|
+
_step2;
|
|
147
|
+
try {
|
|
148
|
+
for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) {
|
|
149
|
+
var resolve = _step2.value;
|
|
150
|
+
resolve(false);
|
|
151
|
+
}
|
|
152
|
+
} catch (err) {
|
|
153
|
+
_iterator2.e(err);
|
|
154
|
+
} finally {
|
|
155
|
+
_iterator2.f();
|
|
156
|
+
}
|
|
157
|
+
loadRef.current = function () {};
|
|
158
|
+
unbindRoot();
|
|
112
159
|
};
|
|
113
160
|
}, [layoutRef]);
|
|
114
|
-
var
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
return _objectSpread(_objectSpread({}, current), {}, _defineProperty({}, area, _objectSpread(_objectSpread(_objectSpread({}, existing), config), {}, {
|
|
128
|
-
liveResize: config.isOpen ? existing === null || existing === void 0 ? void 0 : existing.liveResize : undefined,
|
|
129
|
-
openedAt: config.isOpen && !(existing !== null && existing !== void 0 && existing.isOpen) ? openedAt : existing === null || existing === void 0 ? void 0 : existing.openedAt
|
|
130
|
-
})));
|
|
131
|
-
});
|
|
132
|
-
}, []);
|
|
133
|
-
var unregisterArea = useCallback(function (area) {
|
|
134
|
-
delete configsRef.current[area];
|
|
135
|
-
setResizeSession(null);
|
|
136
|
-
setAreas(function (current) {
|
|
137
|
-
if (!current[area]) {
|
|
138
|
-
return current;
|
|
139
|
-
}
|
|
140
|
-
// Closing uses isOpen: false and retains preferences. Unregistering means
|
|
141
|
-
// the owning component unmounted; a replacement must start with its own defaults.
|
|
142
|
-
var next = _objectSpread({}, current);
|
|
143
|
-
delete next[area];
|
|
144
|
-
return next;
|
|
145
|
-
});
|
|
146
|
-
}, []);
|
|
147
|
-
var freezeSiblingWidths = useCallback(function (area) {
|
|
148
|
-
var baselineWidths = {};
|
|
149
|
-
var _iterator = _createForOfIteratorHelper(['side-nav', 'panel', 'chat-panel']),
|
|
150
|
-
_step;
|
|
151
|
-
try {
|
|
152
|
-
for (_iterator.s(); !(_step = _iterator.n()).done;) {
|
|
153
|
-
var areaName = _step.value;
|
|
154
|
-
var state = areaStatesRef.current[areaName];
|
|
155
|
-
if ((state === null || state === void 0 ? void 0 : state.mode) === 'inline') {
|
|
156
|
-
baselineWidths[areaName] = state.width;
|
|
161
|
+
var onReady = useCallback(function (runtime) {
|
|
162
|
+
actions.current = runtime;
|
|
163
|
+
if (runtime) {
|
|
164
|
+
runtime.setMainMinWidth(mainMinWidth.current);
|
|
165
|
+
var _iterator3 = _createForOfIteratorHelper(['side-nav', 'panel', 'chat-panel']),
|
|
166
|
+
_step3;
|
|
167
|
+
try {
|
|
168
|
+
for (_iterator3.s(); !(_step3 = _iterator3.n()).done;) {
|
|
169
|
+
var area = _step3.value;
|
|
170
|
+
var config = configs.current[area];
|
|
171
|
+
if (config) {
|
|
172
|
+
runtime.registerArea(area, config);
|
|
173
|
+
}
|
|
157
174
|
}
|
|
175
|
+
} catch (err) {
|
|
176
|
+
_iterator3.e(err);
|
|
177
|
+
} finally {
|
|
178
|
+
_iterator3.f();
|
|
158
179
|
}
|
|
159
|
-
// Keep the same siblings fixed after completion, including while a controlled
|
|
160
|
-
// consumer rejects or asynchronously accepts the requested width.
|
|
161
|
-
} catch (err) {
|
|
162
|
-
_iterator.e(err);
|
|
163
|
-
} finally {
|
|
164
|
-
_iterator.f();
|
|
165
180
|
}
|
|
166
|
-
setResizeSession({
|
|
167
|
-
area: area,
|
|
168
|
-
baselineWidths: baselineWidths
|
|
169
|
-
});
|
|
170
181
|
}, []);
|
|
171
|
-
var
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
var existing = current[area];
|
|
183
|
-
return existing ? _objectSpread(_objectSpread({}, current), {}, _defineProperty({}, area, _objectSpread(_objectSpread({}, existing), {}, {
|
|
184
|
-
liveResize: {
|
|
185
|
-
mode: mode,
|
|
186
|
-
width: renderedState.width
|
|
187
|
-
}
|
|
188
|
-
}))) : current;
|
|
189
|
-
});
|
|
190
|
-
}
|
|
191
|
-
}, [freezeSiblingWidths]);
|
|
192
|
-
var resize = useCallback(function (area, mode, width) {
|
|
193
|
-
setAreas(function (current) {
|
|
194
|
-
var _existing$liveResize;
|
|
195
|
-
var existing = current[area];
|
|
196
|
-
if ((existing === null || existing === void 0 || (_existing$liveResize = existing.liveResize) === null || _existing$liveResize === void 0 ? void 0 : _existing$liveResize.mode) === mode && existing.liveResize.width === width) {
|
|
197
|
-
return current;
|
|
198
|
-
}
|
|
199
|
-
return existing ? _objectSpread(_objectSpread({}, current), {}, _defineProperty({}, area, _objectSpread(_objectSpread({}, existing), {}, {
|
|
200
|
-
liveResize: {
|
|
201
|
-
mode: mode,
|
|
202
|
-
width: width
|
|
182
|
+
var onUpdate = useCallback(function (next) {
|
|
183
|
+
setStates(next);
|
|
184
|
+
var runtime = actions.current;
|
|
185
|
+
if (runtime && Object.values(next).some(Boolean)) {
|
|
186
|
+
ready.current = true;
|
|
187
|
+
var _iterator4 = _createForOfIteratorHelper(pending.current.splice(0)),
|
|
188
|
+
_step4;
|
|
189
|
+
try {
|
|
190
|
+
for (_iterator4.s(); !(_step4 = _iterator4.n()).done;) {
|
|
191
|
+
var action = _step4.value;
|
|
192
|
+
action(runtime);
|
|
203
193
|
}
|
|
204
|
-
})
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
if (mode === 'inline') {
|
|
209
|
-
// Keyboard resizing completes without a preceding pointer-drag session.
|
|
210
|
-
freezeSiblingWidths(area);
|
|
211
|
-
}
|
|
212
|
-
setAreas(function (current) {
|
|
213
|
-
var existing = current[area];
|
|
214
|
-
if (!existing) {
|
|
215
|
-
return current;
|
|
194
|
+
} catch (err) {
|
|
195
|
+
_iterator4.e(err);
|
|
196
|
+
} finally {
|
|
197
|
+
_iterator4.f();
|
|
216
198
|
}
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
199
|
+
var _iterator5 = _createForOfIteratorHelper(waiting.current.splice(0)),
|
|
200
|
+
_step5;
|
|
201
|
+
try {
|
|
202
|
+
for (_iterator5.s(); !(_step5 = _iterator5.n()).done;) {
|
|
203
|
+
var resolve = _step5.value;
|
|
204
|
+
resolve(true);
|
|
205
|
+
}
|
|
206
|
+
} catch (err) {
|
|
207
|
+
_iterator5.e(err);
|
|
208
|
+
} finally {
|
|
209
|
+
_iterator5.f();
|
|
222
210
|
}
|
|
223
|
-
return _objectSpread(_objectSpread({}, current), {}, _defineProperty({}, area, _objectSpread(_objectSpread({}, existing), {}, {
|
|
224
|
-
liveResize: undefined,
|
|
225
|
-
preferredInlineWidth: width
|
|
226
|
-
})));
|
|
227
|
-
});
|
|
228
|
-
}, [freezeSiblingWidths]);
|
|
229
|
-
var areaStates = useMemo(function () {
|
|
230
|
-
return dimensions === null ? {} : calculateLayoutAreaStates(_objectSpread(_objectSpread({}, dimensions), {}, {
|
|
231
|
-
occupiedWidth: occupiedWidth,
|
|
232
|
-
mainMinWidth: mainMinWidth,
|
|
233
|
-
areas: areas,
|
|
234
|
-
resizeSession: resizeSession
|
|
235
|
-
}));
|
|
236
|
-
}, [areas, mainMinWidth, resizeSession, dimensions, occupiedWidth]);
|
|
237
|
-
useEffect(function () {
|
|
238
|
-
areaStatesRef.current = areaStates;
|
|
239
|
-
}, [areaStates]);
|
|
240
|
-
useEffect(function () {
|
|
241
|
-
var _areaStates$sideNav, _areaStates$chatPane, _sideNav$openedAt, _chatPanel$openedAt;
|
|
242
|
-
if (((_areaStates$sideNav = areaStates['side-nav']) === null || _areaStates$sideNav === void 0 ? void 0 : _areaStates$sideNav.mode) !== 'overlay' || ((_areaStates$chatPane = areaStates['chat-panel']) === null || _areaStates$chatPane === void 0 ? void 0 : _areaStates$chatPane.mode) !== 'overlay') {
|
|
243
|
-
return;
|
|
244
211
|
}
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
if (
|
|
248
|
-
|
|
249
|
-
}
|
|
250
|
-
if (((_sideNav$openedAt = sideNav.openedAt) !== null && _sideNav$openedAt !== void 0 ? _sideNav$openedAt : 0) > ((_chatPanel$openedAt = chatPanel.openedAt) !== null && _chatPanel$openedAt !== void 0 ? _chatPanel$openedAt : 0)) {
|
|
251
|
-
var _chatPanel$onRequestC;
|
|
252
|
-
(_chatPanel$onRequestC = chatPanel.onRequestClose) === null || _chatPanel$onRequestC === void 0 || _chatPanel$onRequestC.call(chatPanel);
|
|
212
|
+
}, []);
|
|
213
|
+
var dispatch = useCallback(function (action) {
|
|
214
|
+
if (ready.current && actions.current) {
|
|
215
|
+
action(actions.current);
|
|
253
216
|
} else {
|
|
254
|
-
|
|
255
|
-
|
|
217
|
+
pending.current.push(action);
|
|
218
|
+
loadRef.current();
|
|
256
219
|
}
|
|
257
|
-
}, [areas, areaStates]);
|
|
258
|
-
|
|
259
|
-
// Read bounds lazily: changing a sibling's capacity must not publish new render
|
|
260
|
-
// state or recreate drag listeners for a region whose own width did not change.
|
|
261
|
-
var getResizeBounds = useCallback(function (area) {
|
|
262
|
-
var _areaStatesRef$curren;
|
|
263
|
-
var bounds = (_areaStatesRef$curren = areaStatesRef.current[area]) === null || _areaStatesRef$curren === void 0 ? void 0 : _areaStatesRef$curren.resizeBounds;
|
|
264
|
-
return bounds ? {
|
|
265
|
-
min: "".concat(bounds.min, "px"),
|
|
266
|
-
max: "".concat(bounds.max, "px")
|
|
267
|
-
} : undefined;
|
|
268
220
|
}, []);
|
|
269
221
|
var value = useMemo(function () {
|
|
270
222
|
return {
|
|
271
|
-
|
|
272
|
-
registerArea: registerArea,
|
|
273
|
-
|
|
274
|
-
|
|
275
|
-
|
|
276
|
-
|
|
277
|
-
|
|
223
|
+
prepareResize: prepareResize,
|
|
224
|
+
registerArea: function registerArea(area, config) {
|
|
225
|
+
var _configs$current$area, _actions$current;
|
|
226
|
+
if (area !== 'panel' && config.isOpen && !((_configs$current$area = configs.current[area]) !== null && _configs$current$area !== void 0 && _configs$current$area.isOpen)) {
|
|
227
|
+
setLastOpenedOverlay(area);
|
|
228
|
+
}
|
|
229
|
+
configs.current[area] = config;
|
|
230
|
+
setConfigRevision(function (revision) {
|
|
231
|
+
return revision + 1;
|
|
232
|
+
});
|
|
233
|
+
(_actions$current = actions.current) === null || _actions$current === void 0 || _actions$current.registerArea(area, config);
|
|
234
|
+
},
|
|
235
|
+
unregisterArea: function unregisterArea(area) {
|
|
236
|
+
var _actions$current2;
|
|
237
|
+
delete configs.current[area];
|
|
238
|
+
setConfigRevision(function (revision) {
|
|
239
|
+
return revision + 1;
|
|
240
|
+
});
|
|
241
|
+
(_actions$current2 = actions.current) === null || _actions$current2 === void 0 || _actions$current2.unregisterArea(area);
|
|
242
|
+
},
|
|
243
|
+
setMainMinWidth: function setMainMinWidth(width) {
|
|
244
|
+
var _actions$current3;
|
|
245
|
+
if (mainMinWidth.current !== width) {
|
|
246
|
+
setConfigRevision(function (revision) {
|
|
247
|
+
return revision + 1;
|
|
248
|
+
});
|
|
249
|
+
}
|
|
250
|
+
mainMinWidth.current = width;
|
|
251
|
+
(_actions$current3 = actions.current) === null || _actions$current3 === void 0 || _actions$current3.setMainMinWidth(width);
|
|
252
|
+
},
|
|
253
|
+
getResizeBounds: function getResizeBounds(area) {
|
|
254
|
+
var _actions$current4;
|
|
255
|
+
return (_actions$current4 = actions.current) === null || _actions$current4 === void 0 ? void 0 : _actions$current4.getResizeBounds(area);
|
|
256
|
+
},
|
|
257
|
+
startResize: function startResize(area, mode) {
|
|
258
|
+
return dispatch(function (runtime) {
|
|
259
|
+
return runtime.startResize(area, mode);
|
|
260
|
+
});
|
|
261
|
+
},
|
|
262
|
+
resize: function resize(area, mode, width) {
|
|
263
|
+
return dispatch(function (runtime) {
|
|
264
|
+
return runtime.resize(area, mode, width);
|
|
265
|
+
});
|
|
266
|
+
},
|
|
267
|
+
completeResize: function completeResize(area, mode, width) {
|
|
268
|
+
return dispatch(function (runtime) {
|
|
269
|
+
return runtime.completeResize(area, mode, width);
|
|
270
|
+
});
|
|
271
|
+
}
|
|
278
272
|
};
|
|
279
|
-
}, [
|
|
280
|
-
var sideNavState = useStableAreaState(areaStates['side-nav']);
|
|
281
|
-
var panelState = useStableAreaState(areaStates.panel);
|
|
282
|
-
var chatPanelState = useStableAreaState(areaStates['chat-panel']);
|
|
273
|
+
}, [dispatch, prepareResize]);
|
|
283
274
|
var SideNavStateProvider = layoutAreaStateContexts['side-nav'].Provider;
|
|
284
275
|
var PanelStateProvider = layoutAreaStateContexts.panel.Provider;
|
|
285
276
|
var ChatPanelStateProvider = layoutAreaStateContexts['chat-panel'].Provider;
|
|
286
277
|
return /*#__PURE__*/React.createElement(LayoutAreaSizingContext.Provider, {
|
|
287
278
|
value: value
|
|
288
279
|
}, /*#__PURE__*/React.createElement(SideNavStateProvider, {
|
|
289
|
-
value:
|
|
280
|
+
value: states['side-nav']
|
|
290
281
|
}, /*#__PURE__*/React.createElement(PanelStateProvider, {
|
|
291
|
-
value:
|
|
282
|
+
value: states.panel
|
|
292
283
|
}, /*#__PURE__*/React.createElement(ChatPanelStateProvider, {
|
|
293
|
-
value:
|
|
294
|
-
}, children)))
|
|
284
|
+
value: states['chat-panel']
|
|
285
|
+
}, children))), Runtime && /*#__PURE__*/React.createElement(Runtime, {
|
|
286
|
+
layoutRef: layoutRef,
|
|
287
|
+
onReady: onReady,
|
|
288
|
+
onUpdate: onUpdate
|
|
289
|
+
}));
|
|
295
290
|
}
|