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