/** * @copyright Copyright (c) 2019 John Molakvoæ * * @author John Molakvoæ * * @license GNU AGPL version 3 or any later version * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU Affero General Public License as * published by the Free Software Foundation, either version 3 of the * License, or (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU Affero General Public License for more details. * * You should have received a copy of the GNU Affero General Public License * along with this program. If not, see . * */ export default class Tab { #component #legacy #id #enabled /** * Create a new tab instance * * @param {string} id the unique id of this tab * @param {Object} component the vue component * @param {Function} [enabled] function that returns if the tab should be shown or not * @param {boolean} [legacy] is this a legacy tab */ constructor(id, component, enabled = () => true, legacy) { if (typeof enabled !== 'function') { throw new Error('The enabled argument should be a function') } this.#id = id this.#component = component this.#enabled = enabled this.#legacy = legacy === true if (this.#legacy) { console.warn('Legacy tabs are deprecated! They will be removed in nextcloud 20.') } } get id() { return this.#id } get component() { return this.#component } get isEnabled() { return this.#enabled } get isLegacyTab() { return this.#legacy === true } }