UNPKG

flexlayout-react-v7-react-19

Version:

A multi-tab docking layout manager

83 lines 3.29 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.randomUUID = exports.adjustSelectedIndex = exports.adjustSelectedIndexAfterDock = exports.adjustSelectedIndexAfterFloat = void 0; const TabSetNode_1 = require("./TabSetNode"); const BorderNode_1 = require("./BorderNode"); /** @internal */ function adjustSelectedIndexAfterFloat(node) { const parent = node.getParent(); if (parent !== null) { if (parent instanceof TabSetNode_1.TabSetNode) { let found = false; let newSelected = 0; const children = parent.getChildren(); for (let i = 0; i < children.length; i++) { const child = children[i]; if (child === node) { found = true; } else { if (!child.isFloating()) { newSelected = i; if (found) break; } } } parent._setSelected(newSelected); } else if (parent instanceof BorderNode_1.BorderNode) { parent._setSelected(-1); } } } exports.adjustSelectedIndexAfterFloat = adjustSelectedIndexAfterFloat; /** @internal */ function adjustSelectedIndexAfterDock(node) { const parent = node.getParent(); if (parent !== null && (parent instanceof TabSetNode_1.TabSetNode || parent instanceof BorderNode_1.BorderNode)) { const children = parent.getChildren(); for (let i = 0; i < children.length; i++) { const child = children[i]; if (child === node) { parent._setSelected(i); return; } } } } exports.adjustSelectedIndexAfterDock = adjustSelectedIndexAfterDock; /** @internal */ function adjustSelectedIndex(parent, removedIndex) { // for the tabset/border being removed from set the selected index if (parent !== undefined && (parent.getType() === TabSetNode_1.TabSetNode.TYPE || parent.getType() === BorderNode_1.BorderNode.TYPE)) { const selectedIndex = parent.getSelected(); if (selectedIndex !== -1) { if (removedIndex === selectedIndex && parent.getChildren().length > 0) { if (removedIndex >= parent.getChildren().length) { // removed last tab; select new last tab parent._setSelected(parent.getChildren().length - 1); } else { // leave selected index as is, selecting next tab after this one } } else if (removedIndex < selectedIndex) { parent._setSelected(selectedIndex - 1); } else if (removedIndex > selectedIndex) { // leave selected index as is } else { parent._setSelected(-1); } } } } exports.adjustSelectedIndex = adjustSelectedIndex; function randomUUID() { // @ts-ignore return ([1e7] + -1e3 + -4e3 + -8e3 + -1e11).replace(/[018]/g, c => (c ^ crypto.getRandomValues(new Uint8Array(1))[0] & 15 >> c / 4).toString(16)); } exports.randomUUID = randomUUID; //# sourceMappingURL=Utils.js.map