import { Injector } from '@angular/core'; import { SettingsTabProvider } from 'tabby-settings'; /** @hidden */ export declare class SidebarPlusSettingsTabProvider extends SettingsTabProvider { id: string; icon: string; title: string; /** * Same weight as `tabby-better-vault`'s own tab, deliberately: the tabs are * sorted by `a.weight - b.weight + a.title.localeCompare(b.title)` and every * native tab leaves `weight` at 0, so a weight of 2 clears the ±1 that * `localeCompare` can return and puts both plugins after them. Equal weights * then sort the two alphabetically — "Better Sidebar" lands right before * "Better Vault", which is where the user asked for it. */ weight: number; private election; /** * The "Better Tabby" election happens here because provider instances are * built at startup (SettingsHotkeyProvider walks them all for hotkey * labels), and by then every plugin's contribution is already in the root * injector — registration is declarative, so load order does not matter. */ constructor(injector: Injector); /** * `null` when another plugin hosts the shared tab. That is the official * withdrawal mechanism: the constructor of SettingsTabComponent (bundle of * tabby-settings) filters providers with `!!x.getComponentType()`. Not done * with a conditional useFactory returning null instead — the multi-provider * list would then hold a null entry, and SettingsHotkeyProvider iterates ALL * providers without that filter, reading `provider.id`/`provider.title`, * which would crash on it. * * Hosting a family of more than one: the host panel (one tab per plugin). * Alone: the plain settings page, with no wrapper. */ getComponentType(): any; }