UNPKG

golden-layout

Version:

A multi-screen javascript Layout manager

475 lines 19.6 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.ResolvedPopoutLayoutConfig = exports.ResolvedLayoutConfig = exports.ResolvedGroundItemConfig = exports.ResolvedRootItemConfig = exports.ResolvedRowOrColumnItemConfig = exports.ResolvedComponentItemConfig = exports.ResolvedStackItemConfig = exports.ResolvedHeaderedItemConfig = exports.ResolvedItemConfig = void 0; const internal_error_1 = require("../errors/internal-error"); const config_minifier_1 = require("../utils/config-minifier"); const types_1 = require("../utils/types"); const utils_1 = require("../utils/utils"); /** @public */ var ResolvedItemConfig; (function (ResolvedItemConfig) { ResolvedItemConfig.defaults = { type: types_1.ItemType.ground, content: [], width: 50, minWidth: 0, height: 50, minHeight: 0, id: '', isClosable: true, }; /** Creates a copy of the original ResolvedItemConfig using an alternative content if specified */ function createCopy(original, content) { switch (original.type) { case types_1.ItemType.ground: case types_1.ItemType.row: case types_1.ItemType.column: return ResolvedRowOrColumnItemConfig.createCopy(original, content); case types_1.ItemType.stack: return ResolvedStackItemConfig.createCopy(original, content); case types_1.ItemType.component: return ResolvedComponentItemConfig.createCopy(original); default: throw new internal_error_1.UnreachableCaseError('CICC91354', original.type, 'Invalid Config Item type specified'); } } ResolvedItemConfig.createCopy = createCopy; function createDefault(type) { switch (type) { case types_1.ItemType.ground: throw new internal_error_1.AssertError('CICCDR91562'); // Get default root from LayoutConfig case types_1.ItemType.row: case types_1.ItemType.column: return ResolvedRowOrColumnItemConfig.createDefault(type); case types_1.ItemType.stack: return ResolvedStackItemConfig.createDefault(); case types_1.ItemType.component: return ResolvedComponentItemConfig.createDefault(); default: throw new internal_error_1.UnreachableCaseError('CICCDD91563', type, 'Invalid Config Item type specified'); } } ResolvedItemConfig.createDefault = createDefault; function isComponentItem(itemConfig) { return itemConfig.type === types_1.ItemType.component; } ResolvedItemConfig.isComponentItem = isComponentItem; function isStackItem(itemConfig) { return itemConfig.type === types_1.ItemType.stack; } ResolvedItemConfig.isStackItem = isStackItem; /** @internal */ function isGroundItem(itemConfig) { return itemConfig.type === types_1.ItemType.ground; } ResolvedItemConfig.isGroundItem = isGroundItem; })(ResolvedItemConfig = exports.ResolvedItemConfig || (exports.ResolvedItemConfig = {})); /** @public */ var ResolvedHeaderedItemConfig; (function (ResolvedHeaderedItemConfig) { ResolvedHeaderedItemConfig.defaultMaximised = false; let Header; (function (Header) { function createCopy(original, show) { if (original === undefined) { return undefined; } else { return { show: show !== null && show !== void 0 ? show : original.show, popout: original.popout, dock: original.dock, close: original.close, maximise: original.maximise, minimise: original.minimise, tabDropdown: original.tabDropdown, }; } } Header.createCopy = createCopy; })(Header = ResolvedHeaderedItemConfig.Header || (ResolvedHeaderedItemConfig.Header = {})); })(ResolvedHeaderedItemConfig = exports.ResolvedHeaderedItemConfig || (exports.ResolvedHeaderedItemConfig = {})); /** @public */ var ResolvedStackItemConfig; (function (ResolvedStackItemConfig) { ResolvedStackItemConfig.defaultActiveItemIndex = 0; function createCopy(original, content) { const result = { type: original.type, content: content !== undefined ? copyContent(content) : copyContent(original.content), width: original.width, minWidth: original.minWidth, height: original.height, minHeight: original.minHeight, id: original.id, maximised: original.maximised, isClosable: original.isClosable, activeItemIndex: original.activeItemIndex, header: ResolvedHeaderedItemConfig.Header.createCopy(original.header), }; return result; } ResolvedStackItemConfig.createCopy = createCopy; function copyContent(original) { const count = original.length; const result = new Array(count); for (let i = 0; i < count; i++) { result[i] = ResolvedItemConfig.createCopy(original[i]); } return result; } ResolvedStackItemConfig.copyContent = copyContent; function createDefault() { const result = { type: types_1.ItemType.stack, content: [], width: ResolvedItemConfig.defaults.width, minWidth: ResolvedItemConfig.defaults.minWidth, height: ResolvedItemConfig.defaults.height, minHeight: ResolvedItemConfig.defaults.minHeight, id: ResolvedItemConfig.defaults.id, maximised: ResolvedHeaderedItemConfig.defaultMaximised, isClosable: ResolvedItemConfig.defaults.isClosable, activeItemIndex: ResolvedStackItemConfig.defaultActiveItemIndex, header: undefined, }; return result; } ResolvedStackItemConfig.createDefault = createDefault; })(ResolvedStackItemConfig = exports.ResolvedStackItemConfig || (exports.ResolvedStackItemConfig = {})); /** @public */ var ResolvedComponentItemConfig; (function (ResolvedComponentItemConfig) { ResolvedComponentItemConfig.defaultReorderEnabled = true; /** @internal */ function resolveComponentTypeName(itemConfig) { const componentType = itemConfig.componentType; if (typeof componentType === 'string') { return componentType; } else { return undefined; } } ResolvedComponentItemConfig.resolveComponentTypeName = resolveComponentTypeName; function createCopy(original) { const result = { type: original.type, content: [], width: original.width, minWidth: original.minWidth, height: original.height, minHeight: original.minHeight, id: original.id, maximised: original.maximised, isClosable: original.isClosable, reorderEnabled: original.reorderEnabled, title: original.title, header: ResolvedHeaderedItemConfig.Header.createCopy(original.header), componentType: original.componentType, componentState: utils_1.deepExtendValue(undefined, original.componentState), }; return result; } ResolvedComponentItemConfig.createCopy = createCopy; function createDefault(componentType = '', componentState, title = '') { const result = { type: types_1.ItemType.component, content: [], width: ResolvedItemConfig.defaults.width, minWidth: ResolvedItemConfig.defaults.minWidth, height: ResolvedItemConfig.defaults.height, minHeight: ResolvedItemConfig.defaults.minHeight, id: ResolvedItemConfig.defaults.id, maximised: ResolvedHeaderedItemConfig.defaultMaximised, isClosable: ResolvedItemConfig.defaults.isClosable, reorderEnabled: ResolvedComponentItemConfig.defaultReorderEnabled, title, header: undefined, componentType, componentState, }; return result; } ResolvedComponentItemConfig.createDefault = createDefault; function copyComponentType(componentType) { return utils_1.deepExtendValue({}, componentType); } ResolvedComponentItemConfig.copyComponentType = copyComponentType; })(ResolvedComponentItemConfig = exports.ResolvedComponentItemConfig || (exports.ResolvedComponentItemConfig = {})); /** @public */ var ResolvedRowOrColumnItemConfig; (function (ResolvedRowOrColumnItemConfig) { function isChildItemConfig(itemConfig) { switch (itemConfig.type) { case types_1.ItemType.row: case types_1.ItemType.column: case types_1.ItemType.stack: case types_1.ItemType.component: return true; case types_1.ItemType.ground: return false; default: throw new internal_error_1.UnreachableCaseError('CROCOSPCICIC13687', itemConfig.type); } } ResolvedRowOrColumnItemConfig.isChildItemConfig = isChildItemConfig; function createCopy(original, content) { const result = { type: original.type, content: content !== undefined ? copyContent(content) : copyContent(original.content), width: original.width, minWidth: original.minWidth, height: original.height, minHeight: original.minHeight, id: original.id, isClosable: original.isClosable, }; return result; } ResolvedRowOrColumnItemConfig.createCopy = createCopy; function copyContent(original) { const count = original.length; const result = new Array(count); for (let i = 0; i < count; i++) { result[i] = ResolvedItemConfig.createCopy(original[i]); } return result; } ResolvedRowOrColumnItemConfig.copyContent = copyContent; function createDefault(type) { const result = { type, content: [], width: ResolvedItemConfig.defaults.width, minWidth: ResolvedItemConfig.defaults.minWidth, height: ResolvedItemConfig.defaults.height, minHeight: ResolvedItemConfig.defaults.minHeight, id: ResolvedItemConfig.defaults.id, isClosable: ResolvedItemConfig.defaults.isClosable, }; return result; } ResolvedRowOrColumnItemConfig.createDefault = createDefault; })(ResolvedRowOrColumnItemConfig = exports.ResolvedRowOrColumnItemConfig || (exports.ResolvedRowOrColumnItemConfig = {})); /** @public */ var ResolvedRootItemConfig; (function (ResolvedRootItemConfig) { function createCopy(config) { return ResolvedItemConfig.createCopy(config); } ResolvedRootItemConfig.createCopy = createCopy; function isRootItemConfig(itemConfig) { switch (itemConfig.type) { case types_1.ItemType.row: case types_1.ItemType.column: case types_1.ItemType.stack: case types_1.ItemType.component: return true; case types_1.ItemType.ground: return false; default: throw new internal_error_1.UnreachableCaseError('CROCOSPCICIC13687', itemConfig.type); } } ResolvedRootItemConfig.isRootItemConfig = isRootItemConfig; })(ResolvedRootItemConfig = exports.ResolvedRootItemConfig || (exports.ResolvedRootItemConfig = {})); /** @internal */ var ResolvedGroundItemConfig; (function (ResolvedGroundItemConfig) { function create(rootItemConfig) { const content = rootItemConfig === undefined ? [] : [rootItemConfig]; return { type: types_1.ItemType.ground, content, width: 100, minWidth: 0, height: 100, minHeight: 0, id: '', isClosable: false, title: '', reorderEnabled: false, }; } ResolvedGroundItemConfig.create = create; })(ResolvedGroundItemConfig = exports.ResolvedGroundItemConfig || (exports.ResolvedGroundItemConfig = {})); /** @public */ var ResolvedLayoutConfig; (function (ResolvedLayoutConfig) { let Settings; (function (Settings) { Settings.defaults = { constrainDragToContainer: true, reorderEnabled: true, popoutWholeStack: false, blockedPopoutsThrowError: true, closePopoutsOnUnload: true, responsiveMode: types_1.ResponsiveMode.none, tabOverlapAllowance: 0, reorderOnTabMenuClick: true, tabControlOffset: 10, popInOnClose: false, }; function createCopy(original) { return { constrainDragToContainer: original.constrainDragToContainer, reorderEnabled: original.reorderEnabled, popoutWholeStack: original.popoutWholeStack, blockedPopoutsThrowError: original.blockedPopoutsThrowError, closePopoutsOnUnload: original.closePopoutsOnUnload, responsiveMode: original.responsiveMode, tabOverlapAllowance: original.tabOverlapAllowance, reorderOnTabMenuClick: original.reorderOnTabMenuClick, tabControlOffset: original.tabControlOffset, popInOnClose: original.popInOnClose, }; } Settings.createCopy = createCopy; })(Settings = ResolvedLayoutConfig.Settings || (ResolvedLayoutConfig.Settings = {})); let Dimensions; (function (Dimensions) { function createCopy(original) { return { borderWidth: original.borderWidth, borderGrabWidth: original.borderGrabWidth, minItemHeight: original.minItemHeight, minItemWidth: original.minItemWidth, headerHeight: original.headerHeight, dragProxyWidth: original.dragProxyWidth, dragProxyHeight: original.dragProxyHeight, }; } Dimensions.createCopy = createCopy; Dimensions.defaults = { borderWidth: 5, borderGrabWidth: 5, minItemHeight: 10, minItemWidth: 10, headerHeight: 20, dragProxyWidth: 300, dragProxyHeight: 200 }; })(Dimensions = ResolvedLayoutConfig.Dimensions || (ResolvedLayoutConfig.Dimensions = {})); let Header; (function (Header) { function createCopy(original) { return { show: original.show, popout: original.popout, dock: original.dock, close: original.close, maximise: original.maximise, minimise: original.minimise, tabDropdown: original.tabDropdown, }; } Header.createCopy = createCopy; Header.defaults = { show: types_1.Side.top, popout: 'open in new window', dock: 'dock', maximise: 'maximise', minimise: 'minimise', close: 'close', tabDropdown: 'additional tabs' }; })(Header = ResolvedLayoutConfig.Header || (ResolvedLayoutConfig.Header = {})); function isPopout(config) { return 'parentId' in config; } ResolvedLayoutConfig.isPopout = isPopout; function createDefault() { const result = { root: undefined, openPopouts: [], dimensions: ResolvedLayoutConfig.Dimensions.defaults, settings: ResolvedLayoutConfig.Settings.defaults, header: ResolvedLayoutConfig.Header.defaults, resolved: true, }; return result; } ResolvedLayoutConfig.createDefault = createDefault; function createCopy(config) { if (isPopout(config)) { return ResolvedPopoutLayoutConfig.createCopy(config); } else { const result = { root: config.root === undefined ? undefined : ResolvedRootItemConfig.createCopy(config.root), openPopouts: ResolvedLayoutConfig.copyOpenPopouts(config.openPopouts), settings: ResolvedLayoutConfig.Settings.createCopy(config.settings), dimensions: ResolvedLayoutConfig.Dimensions.createCopy(config.dimensions), header: ResolvedLayoutConfig.Header.createCopy(config.header), resolved: config.resolved, }; return result; } } ResolvedLayoutConfig.createCopy = createCopy; function copyOpenPopouts(original) { const count = original.length; const result = new Array(count); for (let i = 0; i < count; i++) { result[i] = ResolvedPopoutLayoutConfig.createCopy(original[i]); } return result; } ResolvedLayoutConfig.copyOpenPopouts = copyOpenPopouts; /** * Takes a GoldenLayout configuration object and * replaces its keys and values recursively with * one letter counterparts */ function minifyConfig(layoutConfig) { return config_minifier_1.ConfigMinifier.translateObject(layoutConfig, true); } ResolvedLayoutConfig.minifyConfig = minifyConfig; /** * Takes a configuration Object that was previously minified * using minifyConfig and returns its original version */ function unminifyConfig(minifiedConfig) { return config_minifier_1.ConfigMinifier.translateObject(minifiedConfig, false); } ResolvedLayoutConfig.unminifyConfig = unminifyConfig; })(ResolvedLayoutConfig = exports.ResolvedLayoutConfig || (exports.ResolvedLayoutConfig = {})); /** @public */ var ResolvedPopoutLayoutConfig; (function (ResolvedPopoutLayoutConfig) { let Window; (function (Window) { function createCopy(original) { return { width: original.width, height: original.height, left: original.left, top: original.top, }; } Window.createCopy = createCopy; Window.defaults = { width: null, height: null, left: null, top: null, }; })(Window = ResolvedPopoutLayoutConfig.Window || (ResolvedPopoutLayoutConfig.Window = {})); function createCopy(original) { const result = { root: original.root === undefined ? undefined : ResolvedRootItemConfig.createCopy(original.root), openPopouts: ResolvedLayoutConfig.copyOpenPopouts(original.openPopouts), settings: ResolvedLayoutConfig.Settings.createCopy(original.settings), dimensions: ResolvedLayoutConfig.Dimensions.createCopy(original.dimensions), header: ResolvedLayoutConfig.Header.createCopy(original.header), parentId: original.parentId, indexInParent: original.indexInParent, window: ResolvedPopoutLayoutConfig.Window.createCopy(original.window), resolved: original.resolved, }; return result; } ResolvedPopoutLayoutConfig.createCopy = createCopy; })(ResolvedPopoutLayoutConfig = exports.ResolvedPopoutLayoutConfig || (exports.ResolvedPopoutLayoutConfig = {})); //# sourceMappingURL=resolved-config.js.map