@atlaskit/navigation-system 11.0.0 → 11.1.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.
- package/CHANGELOG.md +12 -0
- package/dist/cjs/entry-points/layout/chat-panel.js +12 -0
- package/dist/cjs/entry-points/layout/layout-sizing.js +44 -0
- package/dist/cjs/ui/page-layout/calculate-layout-area-states.js +179 -0
- package/dist/cjs/ui/page-layout/chat-panel.compiled.css +27 -0
- package/dist/cjs/ui/page-layout/chat-panel.js +216 -0
- package/dist/cjs/ui/page-layout/constants.js +6 -1
- package/dist/cjs/ui/page-layout/layout-area-sizing-context.js +13 -0
- package/dist/cjs/ui/page-layout/layout-area-sizing-provider.js +304 -0
- package/dist/cjs/ui/page-layout/layout-area-state-contexts.js +13 -0
- package/dist/cjs/ui/page-layout/main/main.js +11 -2
- package/dist/cjs/ui/page-layout/panel-splitter/panel-splitter.js +73 -7
- package/dist/cjs/ui/page-layout/panel-splitter/provider.js +7 -1
- package/dist/cjs/ui/page-layout/resolve-layout-width.js +13 -0
- package/dist/cjs/ui/page-layout/ribbon.js +1 -0
- package/dist/cjs/ui/page-layout/root.compiled.css +4 -2
- package/dist/cjs/ui/page-layout/root.js +10 -4
- package/dist/cjs/ui/page-layout/side-nav/side-nav.compiled.css +2 -1
- package/dist/cjs/ui/page-layout/side-nav/side-nav.js +152 -14
- package/dist/cjs/ui/page-layout/use-layout-area-sizing.js +73 -0
- package/dist/cjs/ui/page-layout/use-layout-main-sizing.js +15 -0
- package/dist/cjs/ui/page-layout/use-occupied-layout-width.js +111 -0
- package/dist/es2019/entry-points/layout/chat-panel.js +1 -0
- package/dist/es2019/entry-points/layout/layout-sizing.js +3 -0
- package/dist/es2019/ui/page-layout/calculate-layout-area-states.js +128 -0
- package/dist/es2019/ui/page-layout/chat-panel.compiled.css +27 -0
- package/dist/es2019/ui/page-layout/chat-panel.js +199 -0
- package/dist/es2019/ui/page-layout/constants.js +5 -0
- package/dist/es2019/ui/page-layout/layout-area-sizing-context.js +8 -0
- package/dist/es2019/ui/page-layout/layout-area-sizing-provider.js +279 -0
- package/dist/es2019/ui/page-layout/layout-area-state-contexts.js +7 -0
- package/dist/es2019/ui/page-layout/main/main.js +10 -2
- package/dist/es2019/ui/page-layout/panel-splitter/panel-splitter.js +68 -8
- package/dist/es2019/ui/page-layout/panel-splitter/provider.js +7 -1
- package/dist/es2019/ui/page-layout/resolve-layout-width.js +7 -0
- package/dist/es2019/ui/page-layout/ribbon.js +1 -0
- package/dist/es2019/ui/page-layout/root.compiled.css +4 -2
- package/dist/es2019/ui/page-layout/root.js +10 -4
- package/dist/es2019/ui/page-layout/side-nav/side-nav.compiled.css +2 -1
- package/dist/es2019/ui/page-layout/side-nav/side-nav.js +142 -14
- package/dist/es2019/ui/page-layout/use-layout-area-sizing.js +58 -0
- package/dist/es2019/ui/page-layout/use-layout-main-sizing.js +7 -0
- package/dist/es2019/ui/page-layout/use-occupied-layout-width.js +67 -0
- package/dist/esm/entry-points/layout/chat-panel.js +1 -0
- package/dist/esm/entry-points/layout/layout-sizing.js +3 -0
- package/dist/esm/ui/page-layout/calculate-layout-area-states.js +173 -0
- package/dist/esm/ui/page-layout/chat-panel.compiled.css +27 -0
- package/dist/esm/ui/page-layout/chat-panel.js +207 -0
- package/dist/esm/ui/page-layout/constants.js +5 -0
- package/dist/esm/ui/page-layout/layout-area-sizing-context.js +8 -0
- package/dist/esm/ui/page-layout/layout-area-sizing-provider.js +295 -0
- package/dist/esm/ui/page-layout/layout-area-state-contexts.js +7 -0
- package/dist/esm/ui/page-layout/main/main.js +11 -2
- package/dist/esm/ui/page-layout/panel-splitter/panel-splitter.js +74 -8
- package/dist/esm/ui/page-layout/panel-splitter/provider.js +7 -1
- package/dist/esm/ui/page-layout/resolve-layout-width.js +7 -0
- package/dist/esm/ui/page-layout/ribbon.js +1 -0
- package/dist/esm/ui/page-layout/root.compiled.css +4 -2
- package/dist/esm/ui/page-layout/root.js +10 -4
- package/dist/esm/ui/page-layout/side-nav/side-nav.compiled.css +2 -1
- package/dist/esm/ui/page-layout/side-nav/side-nav.js +153 -15
- package/dist/esm/ui/page-layout/use-layout-area-sizing.js +67 -0
- package/dist/esm/ui/page-layout/use-layout-main-sizing.js +9 -0
- package/dist/esm/ui/page-layout/use-occupied-layout-width.js +105 -0
- package/dist/types/entry-points/layout/chat-panel.d.ts +1 -0
- package/dist/types/entry-points/layout/layout-sizing.d.ts +4 -0
- package/dist/types/ui/page-layout/calculate-layout-area-states.d.ts +20 -0
- package/dist/types/ui/page-layout/chat-panel.d.ts +48 -0
- package/dist/types/ui/page-layout/constants.d.ts +4 -0
- package/dist/types/ui/page-layout/layout-area-sizing-context.d.ts +55 -0
- package/dist/types/ui/page-layout/layout-area-sizing-provider.d.ts +5 -0
- package/dist/types/ui/page-layout/layout-area-state-contexts.d.ts +3 -0
- package/dist/types/ui/page-layout/main/main.d.ts +5 -1
- package/dist/types/ui/page-layout/panel-splitter/panel-splitter-context.d.ts +15 -1
- package/dist/types/ui/page-layout/panel-splitter/provider.d.ts +1 -1
- package/dist/types/ui/page-layout/resolve-layout-width.d.ts +2 -0
- package/dist/types/ui/page-layout/side-nav/side-nav.d.ts +11 -2
- package/dist/types/ui/page-layout/use-layout-area-sizing.d.ts +12 -0
- package/dist/types/ui/page-layout/use-layout-main-sizing.d.ts +2 -0
- package/dist/types/ui/page-layout/use-occupied-layout-width.d.ts +8 -0
- package/layout/chat-panel/package.json +10 -0
- package/layout/layout-sizing/package.json +10 -0
- package/package.json +11 -3
|
@@ -0,0 +1,304 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
+
var _typeof = require("@babel/runtime/helpers/typeof");
|
|
5
|
+
Object.defineProperty(exports, "__esModule", {
|
|
6
|
+
value: true
|
|
7
|
+
});
|
|
8
|
+
exports.LayoutAreaSizingProvider = LayoutAreaSizingProvider;
|
|
9
|
+
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
|
|
10
|
+
var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
|
|
11
|
+
var _react = _interopRequireWildcard(require("react"));
|
|
12
|
+
var _bindEventListener = require("bind-event-listener");
|
|
13
|
+
var _calculateLayoutAreaStates = require("./calculate-layout-area-states");
|
|
14
|
+
var _layoutAreaSizingContext = require("./layout-area-sizing-context");
|
|
15
|
+
var _layoutAreaStateContexts = require("./layout-area-state-contexts");
|
|
16
|
+
var _useOccupiedLayoutWidth = require("./use-occupied-layout-width");
|
|
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); }
|
|
18
|
+
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
|
+
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
|
+
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 ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
|
|
22
|
+
function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { (0, _defineProperty2.default)(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
|
|
23
|
+
var defaultMainMinWidth = 320;
|
|
24
|
+
function useStableAreaState(state) {
|
|
25
|
+
var _ref = state !== null && state !== void 0 ? state : {},
|
|
26
|
+
mode = _ref.mode,
|
|
27
|
+
width = _ref.width,
|
|
28
|
+
minWidth = _ref.minWidth;
|
|
29
|
+
return (0, _react.useMemo)(function () {
|
|
30
|
+
return mode !== undefined && width !== undefined && minWidth !== undefined ? {
|
|
31
|
+
mode: mode,
|
|
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);
|
|
41
|
+
var _useState = (0, _react.useState)(null),
|
|
42
|
+
_useState2 = (0, _slicedToArray2.default)(_useState, 2),
|
|
43
|
+
dimensions = _useState2[0],
|
|
44
|
+
setDimensions = _useState2[1];
|
|
45
|
+
var _useState3 = (0, _react.useState)(defaultMainMinWidth),
|
|
46
|
+
_useState4 = (0, _slicedToArray2.default)(_useState3, 2),
|
|
47
|
+
mainMinWidth = _useState4[0],
|
|
48
|
+
setMainMinWidth = _useState4[1];
|
|
49
|
+
var _useState5 = (0, _react.useState)({}),
|
|
50
|
+
_useState6 = (0, _slicedToArray2.default)(_useState5, 2),
|
|
51
|
+
areas = _useState6[0],
|
|
52
|
+
setAreas = _useState6[1];
|
|
53
|
+
var _useState7 = (0, _react.useState)(null),
|
|
54
|
+
_useState8 = (0, _slicedToArray2.default)(_useState7, 2),
|
|
55
|
+
resizeSession = _useState8[0],
|
|
56
|
+
setResizeSession = _useState8[1];
|
|
57
|
+
var areaStatesRef = _react.default.useRef({});
|
|
58
|
+
var configsRef = _react.default.useRef({});
|
|
59
|
+
var openSequence = _react.default.useRef(0);
|
|
60
|
+
(0, _react.useEffect)(function () {
|
|
61
|
+
setResizeSession(null);
|
|
62
|
+
}, [mainMinWidth, occupiedWidth]);
|
|
63
|
+
(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
|
+
var inlineChatQuery = window.matchMedia('(min-width: 40rem)');
|
|
68
|
+
var inlineSideNavQuery = window.matchMedia('(min-width: 64rem)');
|
|
69
|
+
var updateDimensions = function updateDimensions(contentWidth) {
|
|
70
|
+
var _style$paddingLeft, _style$paddingRight, _previous;
|
|
71
|
+
var style = root && contentWidth === undefined ? getComputedStyle(root) : null;
|
|
72
|
+
var layoutWidth = contentWidth !== null && contentWidth !== void 0 ? contentWidth : root ? Math.max(0, root.clientWidth - (parseFloat((_style$paddingLeft = style === null || style === void 0 ? void 0 : style.paddingLeft) !== null && _style$paddingLeft !== void 0 ? _style$paddingLeft : '') || 0) - (parseFloat((_style$paddingRight = style === null || style === void 0 ? void 0 : style.paddingRight) !== null && _style$paddingRight !== void 0 ? _style$paddingRight : '') || 0)) : window.innerWidth;
|
|
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) {
|
|
80
|
+
return;
|
|
81
|
+
}
|
|
82
|
+
previous = next;
|
|
83
|
+
setDimensions(next);
|
|
84
|
+
setResizeSession(null);
|
|
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);
|
|
93
|
+
}
|
|
94
|
+
});
|
|
95
|
+
if (root) {
|
|
96
|
+
observer.observe(root);
|
|
97
|
+
}
|
|
98
|
+
var unbindResize = (0, _bindEventListener.bind)(window, {
|
|
99
|
+
type: 'resize',
|
|
100
|
+
listener: function listener() {
|
|
101
|
+
return updateDimensions();
|
|
102
|
+
}
|
|
103
|
+
});
|
|
104
|
+
var unbindQuery = (0, _bindEventListener.bind)(inlineChatQuery, {
|
|
105
|
+
type: 'change',
|
|
106
|
+
listener: function listener() {
|
|
107
|
+
return updateDimensions();
|
|
108
|
+
}
|
|
109
|
+
});
|
|
110
|
+
var unbindSideNavQuery = (0, _bindEventListener.bind)(inlineSideNavQuery, {
|
|
111
|
+
type: 'change',
|
|
112
|
+
listener: function listener() {
|
|
113
|
+
return updateDimensions();
|
|
114
|
+
}
|
|
115
|
+
});
|
|
116
|
+
return function () {
|
|
117
|
+
observer.disconnect();
|
|
118
|
+
unbindResize();
|
|
119
|
+
unbindQuery();
|
|
120
|
+
unbindSideNavQuery();
|
|
121
|
+
};
|
|
122
|
+
}, [layoutRef]);
|
|
123
|
+
var registerArea = (0, _react.useCallback)(function (area, config) {
|
|
124
|
+
var previous = configsRef.current[area];
|
|
125
|
+
configsRef.current[area] = config;
|
|
126
|
+
setResizeSession(function (current) {
|
|
127
|
+
// A changed layout/configuration needs a fresh allocation. A controlled
|
|
128
|
+
// acknowledgement for the resized area keeps its siblings fixed.
|
|
129
|
+
return (previous === null || previous === void 0 ? void 0 : previous.isOpen) === config.isOpen && previous.minWidth === config.minWidth && previous.maxWidth === config.maxWidth && previous.defaultWidth === config.defaultWidth && previous.compactDefaultWidth === config.compactDefaultWidth && (previous.requestedWidth === config.requestedWidth || (current === null || current === void 0 ? void 0 : current.area) === area) ? current : null;
|
|
130
|
+
});
|
|
131
|
+
// Allocate once per registration, outside the updater React may replay. Gaps are
|
|
132
|
+
// harmless: only relative ordering of closed-to-open transitions is significant.
|
|
133
|
+
var openedAt = ++openSequence.current;
|
|
134
|
+
setAreas(function (current) {
|
|
135
|
+
var existing = current[area];
|
|
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;
|
|
166
|
+
}
|
|
167
|
+
}
|
|
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
|
+
}
|
|
175
|
+
setResizeSession({
|
|
176
|
+
area: area,
|
|
177
|
+
baselineWidths: baselineWidths
|
|
178
|
+
});
|
|
179
|
+
}, []);
|
|
180
|
+
var startResize = (0, _react.useCallback)(function (area, mode) {
|
|
181
|
+
if (mode !== 'inline') {
|
|
182
|
+
return;
|
|
183
|
+
}
|
|
184
|
+
freezeSiblingWidths(area);
|
|
185
|
+
|
|
186
|
+
// Start from the effective width, which may already be compressed below the preferred width.
|
|
187
|
+
// Reapplying the preferred width here would move the splitter away from the pointer.
|
|
188
|
+
var renderedState = areaStatesRef.current[area];
|
|
189
|
+
if ((renderedState === null || renderedState === void 0 ? void 0 : renderedState.mode) === 'inline') {
|
|
190
|
+
setAreas(function (current) {
|
|
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
|
|
212
|
+
}
|
|
213
|
+
}))) : current;
|
|
214
|
+
});
|
|
215
|
+
}, []);
|
|
216
|
+
var completeResize = (0, _react.useCallback)(function (area, mode, width) {
|
|
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;
|
|
225
|
+
}
|
|
226
|
+
if (mode === 'overlay') {
|
|
227
|
+
return _objectSpread(_objectSpread({}, current), {}, (0, _defineProperty2.default)({}, area, _objectSpread(_objectSpread({}, existing), {}, {
|
|
228
|
+
liveResize: undefined,
|
|
229
|
+
preferredOverlayWidth: width
|
|
230
|
+
})));
|
|
231
|
+
}
|
|
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
|
+
}
|
|
254
|
+
var sideNav = areas['side-nav'];
|
|
255
|
+
var chatPanel = areas['chat-panel'];
|
|
256
|
+
if (!(sideNav !== null && sideNav !== void 0 && sideNav.isOpen) || !(chatPanel !== null && chatPanel !== void 0 && chatPanel.isOpen)) {
|
|
257
|
+
return;
|
|
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);
|
|
262
|
+
} else {
|
|
263
|
+
var _sideNav$onRequestClo;
|
|
264
|
+
(_sideNav$onRequestClo = sideNav.onRequestClose) === null || _sideNav$onRequestClo === void 0 || _sideNav$onRequestClo.call(sideNav);
|
|
265
|
+
}
|
|
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
|
+
}, []);
|
|
278
|
+
var value = (0, _react.useMemo)(function () {
|
|
279
|
+
return {
|
|
280
|
+
getResizeBounds: getResizeBounds,
|
|
281
|
+
registerArea: registerArea,
|
|
282
|
+
unregisterArea: unregisterArea,
|
|
283
|
+
startResize: startResize,
|
|
284
|
+
resize: resize,
|
|
285
|
+
completeResize: completeResize,
|
|
286
|
+
setMainMinWidth: setMainMinWidth
|
|
287
|
+
};
|
|
288
|
+
}, [completeResize, getResizeBounds, registerArea, resize, startResize, unregisterArea]);
|
|
289
|
+
var sideNavState = useStableAreaState(areaStates['side-nav']);
|
|
290
|
+
var panelState = useStableAreaState(areaStates.panel);
|
|
291
|
+
var chatPanelState = useStableAreaState(areaStates['chat-panel']);
|
|
292
|
+
var SideNavStateProvider = _layoutAreaStateContexts.layoutAreaStateContexts['side-nav'].Provider;
|
|
293
|
+
var PanelStateProvider = _layoutAreaStateContexts.layoutAreaStateContexts.panel.Provider;
|
|
294
|
+
var ChatPanelStateProvider = _layoutAreaStateContexts.layoutAreaStateContexts['chat-panel'].Provider;
|
|
295
|
+
return /*#__PURE__*/_react.default.createElement(_layoutAreaSizingContext.LayoutAreaSizingContext.Provider, {
|
|
296
|
+
value: value
|
|
297
|
+
}, /*#__PURE__*/_react.default.createElement(SideNavStateProvider, {
|
|
298
|
+
value: sideNavState
|
|
299
|
+
}, /*#__PURE__*/_react.default.createElement(PanelStateProvider, {
|
|
300
|
+
value: panelState
|
|
301
|
+
}, /*#__PURE__*/_react.default.createElement(ChatPanelStateProvider, {
|
|
302
|
+
value: chatPanelState
|
|
303
|
+
}, children))));
|
|
304
|
+
}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.layoutAreaStateContexts = void 0;
|
|
7
|
+
var _react = require("react");
|
|
8
|
+
// Width changes should notify only the affected region, not every sizing consumer.
|
|
9
|
+
var layoutAreaStateContexts = exports.layoutAreaStateContexts = {
|
|
10
|
+
'side-nav': /*#__PURE__*/(0, _react.createContext)(undefined),
|
|
11
|
+
panel: /*#__PURE__*/(0, _react.createContext)(undefined),
|
|
12
|
+
'chat-panel': /*#__PURE__*/(0, _react.createContext)(undefined)
|
|
13
|
+
};
|
|
@@ -12,7 +12,10 @@ var React = _react;
|
|
|
12
12
|
var _runtime = require("@compiled/react/runtime");
|
|
13
13
|
var _fg = require("@atlaskit/platform-feature-flags/fg");
|
|
14
14
|
var _useSkipLink = require("../../../context/skip-links/use-skip-link");
|
|
15
|
+
var _constants = require("../constants");
|
|
16
|
+
var _root = require("../root");
|
|
15
17
|
var _useLayoutId = require("../use-layout-id");
|
|
18
|
+
var _useLayoutMainSizing = require("../use-layout-main-sizing");
|
|
16
19
|
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); }
|
|
17
20
|
var contentInsetBlockStartStatic = "calc(var(--n_bnrM, 0px) + var(--n_tNvM, 0px))";
|
|
18
21
|
var contentHeightWhenFixedStatic = "calc(100vh - var(--n_bnrM, 0px) - var(--n_tNvM, 0px))";
|
|
@@ -29,12 +32,18 @@ function Main(_ref) {
|
|
|
29
32
|
_ref$skipLinkLabel = _ref.skipLinkLabel,
|
|
30
33
|
skipLinkLabel = _ref$skipLinkLabel === void 0 ? (0, _fg.fg)('platform_dst_nav4_skip_link_a11y_1') ? 'Main content' : 'Main Content' : _ref$skipLinkLabel,
|
|
31
34
|
testId = _ref.testId,
|
|
32
|
-
providedId = _ref.id
|
|
35
|
+
providedId = _ref.id,
|
|
36
|
+
_ref$minWidth = _ref.minWidth,
|
|
37
|
+
minWidth = _ref$minWidth === void 0 ? 320 : _ref$minWidth;
|
|
33
38
|
var id = (0, _useLayoutId.useLayoutId)({
|
|
34
39
|
providedId: providedId
|
|
35
40
|
});
|
|
41
|
+
(0, _useLayoutMainSizing.useLayoutMainSizing)(minWidth);
|
|
36
42
|
(0, _useSkipLink.useSkipLink)(id, skipLinkLabel);
|
|
37
|
-
return /*#__PURE__*/React.createElement(_react.Fragment, null,
|
|
43
|
+
return /*#__PURE__*/React.createElement(_react.Fragment, null, (0, _fg.fg)('platform-dst-chat-panel-layout') &&
|
|
44
|
+
/*#__PURE__*/
|
|
45
|
+
// eslint-disable-next-line @atlaskit/ui-styling-standard/no-global-styles
|
|
46
|
+
React.createElement("style", null, "#".concat(_root.gridRootId, " { ").concat(_constants.mainMinimumWidthVar, ": ").concat(minWidth, "px; }")), /*#__PURE__*/React.createElement("div", {
|
|
38
47
|
id: id,
|
|
39
48
|
"data-layout-slot": true,
|
|
40
49
|
className: (0, _runtime.ax)([mainElementStyles.root, xcss]),
|
|
@@ -146,10 +146,13 @@ var PortaledPanelSplitter = function PortaledPanelSplitter(_ref3) {
|
|
|
146
146
|
panelId = _ref3.panelId,
|
|
147
147
|
panelWidth = _ref3.panelWidth,
|
|
148
148
|
onCompleteResize = _ref3.onCompleteResize,
|
|
149
|
+
onResizeStartInternal = _ref3.onResizeStartInternal,
|
|
150
|
+
onResizeInternal = _ref3.onResizeInternal,
|
|
149
151
|
getResizeBounds = _ref3.getResizeBounds,
|
|
150
152
|
panel = _ref3.panel,
|
|
151
153
|
portal = _ref3.portal,
|
|
152
154
|
resizingCssVar = _ref3.resizingCssVar,
|
|
155
|
+
resizingElementRef = _ref3.resizingElementRef,
|
|
153
156
|
position = _ref3.position,
|
|
154
157
|
tooltipContent = _ref3.tooltipContent,
|
|
155
158
|
shortcut = _ref3.shortcut;
|
|
@@ -187,9 +190,13 @@ var PortaledPanelSplitter = function PortaledPanelSplitter(_ref3) {
|
|
|
187
190
|
// Storing the initial `clientX` on `mousedown` events, to workaround a bug caused by some browser extensions
|
|
188
191
|
// where the `dragstart` event incorrectly returns `0` for the `clientX` location.
|
|
189
192
|
var initialClientXRef = (0, _react.useRef)(null);
|
|
193
|
+
// Live allocation changes panelWidth on every frame. Only the legacy path should
|
|
194
|
+
// rebind the drag listeners when this value changes.
|
|
195
|
+
var legacyPanelWidth = (0, _fg.fg)('platform-dst-chat-panel-layout') ? undefined : panelWidth;
|
|
190
196
|
(0, _react.useEffect)(function () {
|
|
191
197
|
var splitter = splitterRef.current;
|
|
192
198
|
(0, _tinyInvariant.default)(splitter, 'Splitter ref must be set');
|
|
199
|
+
var lastManagedResizeWidth;
|
|
193
200
|
return (0, _combine.combine)((0, _blockDraggingToIframes.blockDraggingToIFrames)({
|
|
194
201
|
element: splitter
|
|
195
202
|
}),
|
|
@@ -248,9 +255,18 @@ var PortaledPanelSplitter = function PortaledPanelSplitter(_ref3) {
|
|
|
248
255
|
* because some browser extensions can cause the event properties to incorrectly return 0.
|
|
249
256
|
*/
|
|
250
257
|
(0, _tinyInvariant.default)((0, _isPanelSplitterDragData.isPanelSplitterDragData)(source.data));
|
|
251
|
-
|
|
258
|
+
var resizeStartData = {
|
|
252
259
|
initialWidth: source.data.initialWidth
|
|
253
|
-
}
|
|
260
|
+
};
|
|
261
|
+
// The layout allocation system needs to know which area is actively being
|
|
262
|
+
// resized before the first drag update. Committing this synchronously keeps
|
|
263
|
+
// the actively dragged area protected from automatic compression.
|
|
264
|
+
if (onResizeStartInternal) {
|
|
265
|
+
(0, _reactDom.flushSync)(function () {
|
|
266
|
+
return onResizeStartInternal(resizeStartData);
|
|
267
|
+
});
|
|
268
|
+
}
|
|
269
|
+
onResizeStart === null || onResizeStart === void 0 || onResizeStart(resizeStartData);
|
|
254
270
|
|
|
255
271
|
// Close any open layers when the user starts resizing
|
|
256
272
|
openLayerObserver === null || openLayerObserver === void 0 || openLayerObserver.closeLayers();
|
|
@@ -283,23 +299,54 @@ var PortaledPanelSplitter = function PortaledPanelSplitter(_ref3) {
|
|
|
283
299
|
position: position
|
|
284
300
|
});
|
|
285
301
|
var resizingWidth = "clamp(".concat(resizeBounds.min, ", ").concat(targetWidth, "px, ").concat(resizeBounds.max, ")");
|
|
286
|
-
|
|
302
|
+
if ((0, _fg.fg)('platform-dst-chat-panel-layout') && onResizeInternal) {
|
|
303
|
+
// Let the sizing provider constrain the width against Main's available space.
|
|
304
|
+
var width = Math.max((0, _convertResizeBoundToPixels.convertResizeBoundToPixels)(resizeBounds.min), Math.min(targetWidth, (0, _convertResizeBoundToPixels.convertResizeBoundToPixels)(resizeBounds.max)));
|
|
305
|
+
if (width !== lastManagedResizeWidth) {
|
|
306
|
+
lastManagedResizeWidth = width;
|
|
307
|
+
onResizeInternal(width);
|
|
308
|
+
}
|
|
309
|
+
} else {
|
|
310
|
+
var _resizingElementRef$c;
|
|
311
|
+
panel.style.setProperty(resizingCssVar, resizingWidth);
|
|
312
|
+
resizingElementRef === null || resizingElementRef === void 0 || (_resizingElementRef$c = resizingElementRef.current) === null || _resizingElementRef$c === void 0 || _resizingElementRef$c.style.setProperty(resizingCssVar, resizingWidth);
|
|
313
|
+
}
|
|
287
314
|
source.data.resizingWidth = resizingWidth;
|
|
288
315
|
},
|
|
289
316
|
onDrop: function onDrop(_ref7) {
|
|
317
|
+
var _resizingElementRef$c2;
|
|
290
318
|
var source = _ref7.source;
|
|
291
319
|
(0, _tinyInvariant.default)((0, _isPanelSplitterDragData.isPanelSplitterDragData)(source.data));
|
|
292
320
|
_preventUnhandled.preventUnhandled.stop();
|
|
321
|
+
|
|
322
|
+
// PDD may deliver its final throttled drag update immediately before drop.
|
|
323
|
+
// Commit that update once before measuring; do not persist a previous frame.
|
|
324
|
+
if (onResizeInternal && lastManagedResizeWidth !== undefined) {
|
|
325
|
+
var width = lastManagedResizeWidth;
|
|
326
|
+
(0, _reactDom.flushSync)(function () {
|
|
327
|
+
return onResizeInternal(width);
|
|
328
|
+
});
|
|
329
|
+
lastManagedResizeWidth = undefined;
|
|
330
|
+
}
|
|
293
331
|
var finalWidth = (0, _getPixelWidth.getPixelWidth)(panel);
|
|
294
|
-
|
|
332
|
+
// Persist the final preferred width before removing the imperative drag
|
|
333
|
+
// variable, so the rendered width is continuous across pointer release.
|
|
334
|
+
if ((0, _fg.fg)('platform-dst-chat-panel-layout')) {
|
|
335
|
+
(0, _reactDom.flushSync)(function () {
|
|
336
|
+
return onCompleteResize(finalWidth);
|
|
337
|
+
});
|
|
338
|
+
} else {
|
|
339
|
+
onCompleteResize(finalWidth);
|
|
340
|
+
}
|
|
295
341
|
onResizeEnd === null || onResizeEnd === void 0 || onResizeEnd({
|
|
296
342
|
initialWidth: source.data.initialWidth,
|
|
297
343
|
finalWidth: finalWidth
|
|
298
344
|
});
|
|
299
345
|
panel.style.removeProperty(resizingCssVar);
|
|
346
|
+
resizingElementRef === null || resizingElementRef === void 0 || (_resizingElementRef$c2 = resizingElementRef.current) === null || _resizingElementRef$c2 === void 0 || _resizingElementRef$c2.style.removeProperty(resizingCssVar);
|
|
300
347
|
}
|
|
301
348
|
}));
|
|
302
|
-
}, [onCompleteResize, onResizeStart, onResizeEnd, panel, resizingCssVar,
|
|
349
|
+
}, [onCompleteResize, onResizeStartInternal, onResizeInternal, onResizeStart, onResizeEnd, panel, resizingCssVar, resizingElementRef, legacyPanelWidth, position, openLayerObserver, panelId, getResizeBounds]);
|
|
303
350
|
var onResizeStartStableRef = (0, _useStableRef.default)(onResizeStart);
|
|
304
351
|
var onResizeEndStableRef = (0, _useStableRef.default)(onResizeEnd);
|
|
305
352
|
var _useState5 = (0, _react.useState)(function () {
|
|
@@ -325,7 +372,20 @@ var PortaledPanelSplitter = function PortaledPanelSplitter(_ref3) {
|
|
|
325
372
|
_useState6 = (0, _slicedToArray2.default)(_useState5, 1),
|
|
326
373
|
keyboardResizeManager = _useState6[0];
|
|
327
374
|
var handleSliderInputChange = (0, _react.useCallback)(function (event) {
|
|
328
|
-
var
|
|
375
|
+
var isManagedResize = (0, _fg.fg)('platform-dst-chat-panel-layout') && onResizeInternal;
|
|
376
|
+
var value = isManagedResize ? parseFloat(event.target.value) : parseInt(event.target.value);
|
|
377
|
+
if (isManagedResize) {
|
|
378
|
+
// The available region may have changed since focus, including without a
|
|
379
|
+
// window resize. Use the allocator's current bounds for the public payload.
|
|
380
|
+
var bounds = getResizeBounds();
|
|
381
|
+
var min = (0, _convertResizeBoundToPixels.convertResizeBoundToPixels)(bounds.min);
|
|
382
|
+
var max = (0, _convertResizeBoundToPixels.convertResizeBoundToPixels)(bounds.max);
|
|
383
|
+
value = Math.max(min, Math.min(value, max));
|
|
384
|
+
setRangeInputBounds({
|
|
385
|
+
min: min,
|
|
386
|
+
max: max
|
|
387
|
+
});
|
|
388
|
+
}
|
|
329
389
|
setRangeInputValue(value);
|
|
330
390
|
|
|
331
391
|
/**
|
|
@@ -337,7 +397,7 @@ var PortaledPanelSplitter = function PortaledPanelSplitter(_ref3) {
|
|
|
337
397
|
initialWidth: panelWidth,
|
|
338
398
|
finalWidth: value
|
|
339
399
|
});
|
|
340
|
-
}, [onCompleteResize, panelWidth, keyboardResizeManager]);
|
|
400
|
+
}, [getResizeBounds, onCompleteResize, onResizeInternal, panelWidth, keyboardResizeManager]);
|
|
341
401
|
var resizeEventListenerCleanupFn = (0, _react.useRef)(null);
|
|
342
402
|
var handleSliderFocus = (0, _react.useCallback)(function () {
|
|
343
403
|
var _resizeEventListenerC;
|
|
@@ -462,8 +522,11 @@ var PanelSplitter = exports.PanelSplitter = function PanelSplitter(_ref8) {
|
|
|
462
522
|
panelId = context.panelId,
|
|
463
523
|
panelWidth = context.panelWidth,
|
|
464
524
|
onCompleteResize = context.onCompleteResize,
|
|
525
|
+
onResizeStartInternal = context.onResizeStartInternal,
|
|
526
|
+
onResizeInternal = context.onResizeInternal,
|
|
465
527
|
getResizeBounds = context.getResizeBounds,
|
|
466
528
|
resizingCssVar = context.resizingCssVar,
|
|
529
|
+
resizingElementRef = context.resizingElementRef,
|
|
467
530
|
position = context.position,
|
|
468
531
|
shortcut = context.shortcut;
|
|
469
532
|
|
|
@@ -558,8 +621,11 @@ var PanelSplitter = exports.PanelSplitter = function PanelSplitter(_ref8) {
|
|
|
558
621
|
portal: portal,
|
|
559
622
|
panelWidth: panelWidth,
|
|
560
623
|
onCompleteResize: onCompleteResize,
|
|
624
|
+
onResizeStartInternal: onResizeStartInternal,
|
|
625
|
+
onResizeInternal: onResizeInternal,
|
|
561
626
|
getResizeBounds: getResizeBounds,
|
|
562
627
|
resizingCssVar: resizingCssVar,
|
|
628
|
+
resizingElementRef: resizingElementRef,
|
|
563
629
|
position: position,
|
|
564
630
|
tooltipContent: tooltipContent,
|
|
565
631
|
shortcut: shortcut
|
|
@@ -17,9 +17,12 @@ var PanelSplitterProvider = exports.PanelSplitterProvider = function PanelSplitt
|
|
|
17
17
|
var panelId = _ref.panelId,
|
|
18
18
|
panelWidth = _ref.panelWidth,
|
|
19
19
|
onCompleteResize = _ref.onCompleteResize,
|
|
20
|
+
onResizeStartInternal = _ref.onResizeStartInternal,
|
|
21
|
+
onResizeInternal = _ref.onResizeInternal,
|
|
20
22
|
getResizeBounds = _ref.getResizeBounds,
|
|
21
23
|
resizingCssVar = _ref.resizingCssVar,
|
|
22
24
|
panelRef = _ref.panelRef,
|
|
25
|
+
resizingElementRef = _ref.resizingElementRef,
|
|
23
26
|
providedPortalRef = _ref.portalRef,
|
|
24
27
|
_ref$position = _ref.position,
|
|
25
28
|
position = _ref$position === void 0 ? 'end' : _ref$position,
|
|
@@ -33,15 +36,18 @@ var PanelSplitterProvider = exports.PanelSplitterProvider = function PanelSplitt
|
|
|
33
36
|
panelId: panelId,
|
|
34
37
|
panelWidth: panelWidth,
|
|
35
38
|
onCompleteResize: onCompleteResize,
|
|
39
|
+
onResizeStartInternal: onResizeStartInternal,
|
|
40
|
+
onResizeInternal: onResizeInternal,
|
|
36
41
|
getResizeBounds: getResizeBounds,
|
|
37
42
|
resizingCssVar: resizingCssVar,
|
|
38
43
|
position: position,
|
|
39
44
|
panelRef: panelRef,
|
|
45
|
+
resizingElementRef: resizingElementRef,
|
|
40
46
|
isEnabled: isEnabled,
|
|
41
47
|
portalRef: typeof providedPortalRef !== 'undefined' ? providedPortalRef : portalRef,
|
|
42
48
|
shortcut: shortcut
|
|
43
49
|
};
|
|
44
|
-
}, [panelId, panelWidth, onCompleteResize, getResizeBounds, resizingCssVar, position, panelRef, isEnabled, providedPortalRef, shortcut]);
|
|
50
|
+
}, [panelId, panelWidth, onCompleteResize, onResizeStartInternal, onResizeInternal, getResizeBounds, resizingCssVar, position, panelRef, resizingElementRef, isEnabled, providedPortalRef, shortcut]);
|
|
45
51
|
return /*#__PURE__*/_react.default.createElement(_react.Fragment, null, /*#__PURE__*/_react.default.createElement(_panelSplitterContext.PanelSplitterContext.Provider, {
|
|
46
52
|
value: context
|
|
47
53
|
}, children), typeof providedPortalRef !== 'undefined' ? null : /*#__PURE__*/_react.default.createElement("div", {
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.resolveLayoutWidth = resolveLayoutWidth;
|
|
7
|
+
function resolveLayoutWidth(bound, viewportWidth) {
|
|
8
|
+
if (typeof bound === 'number') {
|
|
9
|
+
return bound;
|
|
10
|
+
}
|
|
11
|
+
var value = Number.parseFloat(bound);
|
|
12
|
+
return bound.endsWith('vw') ? viewportWidth * value / 100 : value;
|
|
13
|
+
}
|
|
@@ -16,6 +16,7 @@ var _hoistSlotSizesContext = require("./hoist-slot-sizes-context");
|
|
|
16
16
|
var _useLayoutId = require("./use-layout-id");
|
|
17
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); }
|
|
18
18
|
var localSlotLayersStatic = {
|
|
19
|
+
chatPanelOverlay: 5,
|
|
19
20
|
ribbon: 4,
|
|
20
21
|
// The side nav panel splitter is layered above the top nav when FHS is enabled.
|
|
21
22
|
// It has the same z-index value, but is rendered after the top nav in the DOM so is stacked above.
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
._18m9zryt{overflow-y:clip}
|
|
2
2
|
._1ciragmp >:not([data-layout-slot]){display:none!important}
|
|
3
|
+
._1cwmtye8{--n_mainMinW:20rem}
|
|
3
4
|
._1e0c11p5{display:grid}
|
|
4
5
|
._1lmcq9em{grid-template-areas:"banner" "top-bar" "main" "aside"}
|
|
5
6
|
._1reozryt{overflow-x:clip}
|
|
@@ -7,5 +8,6 @@
|
|
|
7
8
|
._1tvnagmp >:not([data-layout-slot]):not(dialog):not([popover]){display:none!important}
|
|
8
9
|
._2z0516ab{grid-template-rows:auto auto 1fr auto}
|
|
9
10
|
._yv0ei47z{grid-template-columns:minmax(0,1fr)}
|
|
10
|
-
@media (min-width:
|
|
11
|
-
@media (min-width:
|
|
11
|
+
@media (min-width:40rem){._12ag50j2{grid-template-areas:"banner banner" "top-bar chat-panel" "main chat-panel" "aside chat-panel"}._71dlqwpl{grid-template-columns:minmax(var(--n_mainMinW),1fr) minmax(0,max-content)}}
|
|
12
|
+
@media (min-width:64rem){._12fk1aio{grid-template-areas:"banner banner banner banner" "ribbon top-bar top-bar top-bar" "ribbon side-nav main aside"}._12qzrxre{grid-template-rows:auto auto 3fr}._1rqteala{grid-template-columns:auto auto minmax(0,1fr) auto}._12fkqmyk{grid-template-areas:"banner banner banner banner banner" "ribbon top-bar top-bar top-bar chat-panel" "ribbon side-nav main aside chat-panel"}._1rqt8mqp{grid-template-columns:auto auto minmax(var(--n_mainMinW),1fr) auto minmax(0,max-content)}}
|
|
13
|
+
@media (min-width:90rem){._xkmggc7l{grid-template-areas:"banner banner banner banner banner banner" "ribbon top-bar top-bar top-bar top-bar chat-panel" "ribbon side-nav main aside panel chat-panel"}._tyve1i18{grid-template-columns:auto auto minmax(var(--n_mainMinW),1fr) auto auto minmax(0,max-content)}._xkmgks3h{grid-template-areas:"banner banner banner banner banner" "ribbon top-bar top-bar top-bar top-bar" "ribbon side-nav main aside panel"}._jbc7rxre{grid-template-rows:auto auto 3fr}._tyve1nco{grid-template-columns:auto auto minmax(0,1fr) auto auto}}
|
|
@@ -15,6 +15,7 @@ var _fg = require("@atlaskit/platform-feature-flags/fg");
|
|
|
15
15
|
var _skipLinksProvider = require("../../context/skip-links/skip-links-provider");
|
|
16
16
|
var _topNavStartContextProvider = require("../../context/top-nav-start/top-nav-start-context-provider");
|
|
17
17
|
var _hoistSlotSizesContext = require("./hoist-slot-sizes-context");
|
|
18
|
+
var _layoutAreaSizingProvider = require("./layout-area-sizing-provider");
|
|
18
19
|
var _isSideNavShortcutEnabledProvider = require("./side-nav/is-side-nav-shortcut-enabled-provider");
|
|
19
20
|
var _sideNavElementProvider = require("./side-nav/side-nav-element-provider");
|
|
20
21
|
var _toggleButtonProvider = require("./side-nav/toggle-button-provider");
|
|
@@ -23,7 +24,8 @@ function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r
|
|
|
23
24
|
// ID of the root element that the banner and top bar slots hoist their sizes to. Only internally exported.
|
|
24
25
|
var gridRootId = exports.gridRootId = 'unsafe-design-system-page-layout-root';
|
|
25
26
|
var styles = {
|
|
26
|
-
|
|
27
|
+
legacyRoot: "_1e0c11p5 _1tke1kxc _1lmcq9em _yv0ei47z _2z0516ab _12fk1aio _12qzrxre _1rqteala _xkmgks3h _jbc7rxre _tyve1nco",
|
|
28
|
+
root: "_1cwmtye8 _1e0c11p5 _1tke1kxc _1lmcq9em _yv0ei47z _2z0516ab _12ag50j2 _71dlqwpl _12fkqmyk _12qzrxre _1rqt8mqp _xkmggc7l _tyve1i18",
|
|
27
29
|
safetyRail: "_1ciragmp",
|
|
28
30
|
safetyRailWithTopLayer: "_1tvnagmp",
|
|
29
31
|
panelUplift: "_1reozryt _18m9zryt"
|
|
@@ -47,6 +49,8 @@ function Root(_ref) {
|
|
|
47
49
|
_ref$isSideNavShortcu = _ref.isSideNavShortcutEnabled,
|
|
48
50
|
isSideNavShortcutEnabled = _ref$isSideNavShortcu === void 0 ? false : _ref$isSideNavShortcu;
|
|
49
51
|
var ref = (0, _react.useRef)(null);
|
|
52
|
+
var isChatPanelLayoutEnabled = (0, _fg.fg)('platform-dst-chat-panel-layout');
|
|
53
|
+
var LayoutProvider = isChatPanelLayoutEnabled ? _layoutAreaSizingProvider.LayoutAreaSizingProvider : _react.default.Fragment;
|
|
50
54
|
(0, _react.useEffect)(function () {
|
|
51
55
|
if (process.env.NODE_ENV !== 'production') {
|
|
52
56
|
var IGNORED_ELEMENTS = ['SCRIPT', 'STYLE'];
|
|
@@ -67,7 +71,9 @@ function Root(_ref) {
|
|
|
67
71
|
defaultCollapsed: defaultSideNavCollapsed
|
|
68
72
|
}, /*#__PURE__*/_react.default.createElement(_toggleButtonProvider.SideNavToggleButtonProvider, null, /*#__PURE__*/_react.default.createElement(_sideNavElementProvider.SideNavElementProvider, null, /*#__PURE__*/_react.default.createElement(_isSideNavShortcutEnabledProvider.IsSideNavShortcutEnabledProvider, {
|
|
69
73
|
isSideNavShortcutEnabled: isSideNavShortcutEnabled
|
|
70
|
-
}, /*#__PURE__*/_react.default.createElement(_topNavStartContextProvider.TopNavStartProvider, null, /*#__PURE__*/_react.default.createElement(
|
|
74
|
+
}, /*#__PURE__*/_react.default.createElement(_topNavStartContextProvider.TopNavStartProvider, null, /*#__PURE__*/_react.default.createElement(LayoutProvider, isChatPanelLayoutEnabled ? {
|
|
75
|
+
layoutRef: ref
|
|
76
|
+
} : {}, /*#__PURE__*/_react.default.createElement(_openLayerObserver.OpenLayerObserver, null, /*#__PURE__*/_react.default.createElement(_hoistSlotSizesContext.DangerouslyHoistSlotSizes.Provider, {
|
|
71
77
|
value: UNSAFE_dangerouslyHoistSlotSizes
|
|
72
78
|
}, /*#__PURE__*/_react.default.createElement(_skipLinksProvider.SkipLinksProvider, {
|
|
73
79
|
label: skipLinksLabel,
|
|
@@ -75,8 +81,8 @@ function Root(_ref) {
|
|
|
75
81
|
testId: testId
|
|
76
82
|
}, /*#__PURE__*/_react.default.createElement("div", {
|
|
77
83
|
ref: ref,
|
|
78
|
-
className: (0, _runtime.ax)([styles.root, (0, _fg.fg)('platform-dst-motion-uplift-panel') && styles.panelUplift, (0, _fg.fg)('platform-dst-top-layer') ? styles.safetyRailWithTopLayer : styles.safetyRail, xcss]),
|
|
84
|
+
className: (0, _runtime.ax)([isChatPanelLayoutEnabled ? styles.root : styles.legacyRoot, (0, _fg.fg)('platform-dst-motion-uplift-panel') && styles.panelUplift, (0, _fg.fg)('platform-dst-top-layer') ? styles.safetyRailWithTopLayer : styles.safetyRail, xcss]),
|
|
79
85
|
id: gridRootId,
|
|
80
86
|
"data-testid": testId
|
|
81
|
-
}, children)))))))));
|
|
87
|
+
}, children))))))))));
|
|
82
88
|
}
|