kui-shell
Version:
This is the monorepo for Kui, the hybrid command-line/GUI electron-based Kubernetes tool
120 lines • 4.95 kB
JavaScript
;
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
return new (P || (P = Promise))(function (resolve, reject) {
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
step((generator = generator.apply(thisArg, _arguments || [])).next());
});
};
Object.defineProperty(exports, "__esModule", { value: true });
const sidecar_core_1 = require("./sidecar-core");
const tab_1 = require("../tab");
const presentation_1 = require("./presentation");
const scroll_1 = require("../scroll");
const events_1 = require("../../core/events");
exports.enableTabIndex = (sidecar, tabbable = true) => {
const notabElements = document.querySelectorAll('.kui--notab-when-sidecar-hidden');
notabElements.forEach(element => {
if (tabbable) {
element.removeAttribute('tabindex');
}
else {
element.setAttribute('tabindex', '-1');
}
});
};
exports.isVisible = (tab) => {
const sidecar = sidecar_core_1.getSidecar(tab);
return !!(sidecar.classList.contains('visible') && sidecar);
};
exports.setVisibleClass = (sidecar) => {
sidecar.classList.remove('minimized');
sidecar.classList.add('visible');
};
const setVisible = (sidecar) => {
const tab = tab_1.getTabFromTarget(sidecar);
exports.setVisibleClass(sidecar);
exports.enableTabIndex(sidecar);
tab.classList.remove('sidecar-is-minimized');
sidecar.classList.remove('minimized');
document.body.classList.add('sidecar-visible');
const replView = tab.querySelector('.repl');
replView.classList.add('sidecar-visible');
scroll_1.scrollIntoView();
setTimeout(() => events_1.default.emit('/sidecar/toggle', { sidecar, tab }), 0);
};
exports.currentSelection = (tab) => {
const sidecar = sidecar_core_1.getSidecar(tab);
return sidecar && sidecar.entity;
};
exports.show = (tab, block, nextBlock) => __awaiter(void 0, void 0, void 0, function* () {
const sidecar = sidecar_core_1.getSidecar(tab);
if (exports.currentSelection(tab) || sidecar.className.indexOf('custom-content') >= 0) {
setVisible(sidecar);
exports.enableTabIndex(sidecar);
return true;
}
else if (block && nextBlock) {
const { oops } = yield Promise.resolve().then(() => require('../oops'));
oops(undefined, block, nextBlock)(new Error('You have no entity to show'));
}
});
exports.hide = (tab, clearSelectionToo = false) => {
const sidecar = sidecar_core_1.getSidecar(tab);
sidecar.classList.remove('visible');
exports.enableTabIndex(sidecar, false);
if (!clearSelectionToo) {
sidecar.classList.add('minimized');
tab.classList.add('sidecar-is-minimized');
}
else {
document.body.classList.remove('sidecar-visible');
}
const replView = tab.querySelector('.repl');
replView.classList.remove('sidecar-visible');
if (clearSelectionToo && sidecar.entity) {
delete sidecar.entity;
}
setTimeout(() => events_1.default.emit('/sidecar/toggle', { sidecar, tab }), 0);
return true;
};
exports.clearSelection = (tab) => {
return exports.hide(tab, true);
};
exports.toggle = (tab) => {
if (!exports.isVisible(tab)) {
return exports.show(tab);
}
else {
const presentationString = document.body.getAttribute('data-presentation');
const presentation = presentationString && presentation_1.default[presentationString];
return presentation === presentation_1.default.SidecarThin ? exports.clearSelection(tab) : exports.hide(tab);
}
};
exports.remove = (elt, cls) => elt.classList.remove(cls);
const add = (elt, cls) => elt.classList.add(cls);
const toggleClass = (elt, cls) => elt.classList.toggle(cls);
exports.setMaximization = (tab, op = add, cause = 'default') => {
if (document.body.classList.contains('subwindow')) {
op(document.body, 'sidecar-full-screen');
op(document.body, 'sidecar-visible');
}
const before = tab.classList.contains('sidecar-full-screen');
op(tab, 'sidecar-full-screen');
const after = tab.classList.contains('sidecar-full-screen');
if (before !== after) {
setTimeout(() => events_1.default.emit('/sidecar/maximize'), 0);
}
if (after) {
tab.setAttribute('maximization-cause', cause);
}
else {
tab.removeAttribute('maximization-cause');
}
};
exports.toggleMaximization = (tab, cause) => {
exports.setMaximization(tab, toggleClass, cause);
};
//# sourceMappingURL=sidecar-visibility.js.map