UNPKG

kui-shell

Version:

This is the monorepo for Kui, the hybrid command-line/GUI electron-based Kubernetes tool

129 lines 4.76 kB
"use strict"; 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 debug_1 = require("debug"); const core_1 = require("@kui-shell/core"); const strings = core_1.i18n('plugin-core-support'); const debug = debug_1.default('plugins/core-support/theme'); const usage = { theme: { command: 'theme', strict: 'theme', docs: strings('theme.usageDocs') }, themes: { command: 'themes', strict: 'themes', docs: strings('theme.usageDocs') }, list: { command: 'list', strict: 'list', docs: strings('theme.usageDocs') }, reset: { command: 'reset', strict: 'reset', docs: strings('theme.resetUsageDocs') }, set: { command: 'set', strict: 'set', docs: 'Set the current theme', required: [{ name: 'string', docs: strings('theme.setUsageRequiredDocs') }] } }; const list = () => __awaiter(void 0, void 0, void 0, function* () { const header = { type: 'theme', name: '', outerCSS: 'not-a-name', attributes: [{ value: strings('Theme') }, { value: strings('Style') }] }; const chosenTheme = (yield core_1.UI.Themes.Persistence.getPersistedThemeChoice()) || core_1.UI.Themes.getDefault(); const currentTheme = core_1.UI.Themes.findByName(chosenTheme) ? chosenTheme : core_1.UI.Themes.getDefault(); debug('currentTheme', currentTheme); debug('theme list', core_1.Settings.theme.themes); const body = (core_1.Settings.theme.themes || []).map((theme) => { const row = { type: 'theme', name: theme.name, fontawesome: 'fas fa-check', outerCSS: 'not-a-name', css: 'selected-entity', rowCSS: theme.name === currentTheme && 'selected-row', attributes: [ { value: strings(theme.description) || strings(theme.name), css: 'not-too-wide', onclick: undefined }, { value: strings(theme.style), css: 'pretty-narrow' } ], onclick: undefined, setSelected: undefined }; const onclick = () => __awaiter(void 0, void 0, void 0, function* () { const { REPL: { encodeComponent, qexec } } = yield Promise.resolve().then(() => require('@kui-shell/core')); yield qexec(`theme set ${encodeComponent(theme.name)}`); row.setSelected(); }); row.onclick = onclick; row.attributes[0].onclick = onclick; return row; }); return new core_1.Tables.Table({ type: 'theme', noSort: true, header, body }); }); const set = ({ argvNoOptions }) => __awaiter(void 0, void 0, void 0, function* () { const theme = argvNoOptions[argvNoOptions.indexOf('set') + 1]; debug('set', theme); yield core_1.UI.Themes.Persistence.switchTo(theme); return true; }); exports.plugin = (commandTree) => { debug('plugin'); commandTree.listen('/theme/list', list, { usage: usage.list, noAuthOk: true, inBrowserOk: true }); commandTree.listen('/themes', list, { usage: usage.themes, noAuthOk: true, inBrowserOk: true }); commandTree.listen('/theme', list, { usage: usage.theme, noAuthOk: true, inBrowserOk: true }); commandTree.listen('/theme/set', set, { usage: usage.set, noAuthOk: true, inBrowserOk: true }); commandTree.listen('/theme/current', () => __awaiter(void 0, void 0, void 0, function* () { return (yield core_1.UI.Themes.Persistence.getPersistedThemeChoice()) || strings('theme.currentTheme'); }), { noAuthOk: true, inBrowserOk: true, hidden: true }); commandTree.listen('/theme/reset', core_1.UI.Themes.Persistence.resetToDefault, { usage: usage.reset, noAuthOk: true, inBrowserOk: true }); }; //# sourceMappingURL=theme.js.map