UNPKG

@atlaskit/navigation-system

Version:

The latest navigation system for Atlassian apps.

75 lines (74 loc) • 3.79 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.useLayoutAreaSizing = useLayoutAreaSizing; var _react = require("react"); var _layoutAreaSizingContext = require("./layout-area-sizing-context"); var _layoutAreaStateContexts = require("./layout-area-state-contexts"); function useLayoutAreaSizing(_ref) { var area = _ref.area, config = _ref.config; var context = (0, _react.useContext)(_layoutAreaSizingContext.LayoutAreaSizingContext); var requestedWidth = config.requestedWidth, defaultWidth = config.defaultWidth, compactDefaultWidth = config.compactDefaultWidth, minWidth = config.minWidth, maxWidth = config.maxWidth, isOpen = config.isOpen, onRequestClose = config.onRequestClose; var registerArea = context === null || context === void 0 ? void 0 : context.registerArea; var unregisterArea = context === null || context === void 0 ? void 0 : context.unregisterArea; var startAreaResize = context === null || context === void 0 ? void 0 : context.startResize; var resizeArea = context === null || context === void 0 ? void 0 : context.resize; var completeAreaResize = context === null || context === void 0 ? void 0 : context.completeResize; var getAreaResizeBounds = context === null || context === void 0 ? void 0 : context.getResizeBounds; var state = (0, _react.useContext)(_layoutAreaStateContexts.layoutAreaStateContexts[area]); // Dismissal is not a sizing input. Register a stable delegate while keeping // the consumer's latest committed callback outside allocation state. var onRequestCloseRef = (0, _react.useRef)(onRequestClose); (0, _react.useEffect)(function () { onRequestCloseRef.current = onRequestClose; }, [onRequestClose]); var requestClose = (0, _react.useCallback)(function () { var _onRequestCloseRef$cu; return (_onRequestCloseRef$cu = onRequestCloseRef.current) === null || _onRequestCloseRef$cu === void 0 ? void 0 : _onRequestCloseRef$cu.call(onRequestCloseRef); }, []); (0, _react.useEffect)(function () { registerArea === null || registerArea === void 0 || registerArea(area, { requestedWidth: requestedWidth, defaultWidth: defaultWidth, compactDefaultWidth: compactDefaultWidth, minWidth: minWidth, maxWidth: maxWidth, isOpen: isOpen, onRequestClose: requestClose }); }, [area, compactDefaultWidth, defaultWidth, isOpen, maxWidth, minWidth, registerArea, requestClose, requestedWidth]); (0, _react.useEffect)(function () { return function () { return unregisterArea === null || unregisterArea === void 0 ? void 0 : unregisterArea(area); }; }, [area, unregisterArea]); var startResize = (0, _react.useCallback)(function (mode) { return startAreaResize === null || startAreaResize === void 0 ? void 0 : startAreaResize(area, mode); }, [area, startAreaResize]); var resize = (0, _react.useCallback)(function (mode, width) { return resizeArea === null || resizeArea === void 0 ? void 0 : resizeArea(area, mode, width); }, [area, resizeArea]); var completeResize = (0, _react.useCallback)(function (mode, width) { return completeAreaResize === null || completeAreaResize === void 0 ? void 0 : completeAreaResize(area, mode, width); }, [area, completeAreaResize]); var getResizeBounds = (0, _react.useCallback)(function () { return getAreaResizeBounds === null || getAreaResizeBounds === void 0 ? void 0 : getAreaResizeBounds(area); }, [area, getAreaResizeBounds]); return { state: state, startResize: startResize, resize: resize, completeResize: completeResize, getResizeBounds: getResizeBounds, isManaged: context !== null, prepareResize: context === null || context === void 0 ? void 0 : context.prepareResize }; }