UNPKG

@difizen/mana-core

Version:

71 lines 2.81 kB
import type { MaybePromise, Event, Disposable, URI } from '@difizen/mana-common'; import type { Contribution } from '@difizen/mana-syringe'; import { Syringe } from '@difizen/mana-syringe'; export interface OpenerOptions { } export declare const OpenHandler: Syringe.DefinedToken; /** * `OpenHandler` should be implemented to provide a new opener. */ export interface OpenHandler { /** * A unique id of this handler. */ readonly id: string; /** * A human-readable name of this handler. */ readonly label?: string; /** * A css icon class of this handler. */ readonly iconClass?: string; /** * Test whether this handler can open the given resource for given options. * Return a nonzero number if this handler can open; otherwise it cannot. * Never reject. * * A returned value indicating a priority of this handler. */ canHandle: (resource: URI, options?: OpenerOptions) => MaybePromise<number>; /** * Open a widget for the given resource and options. * Resolve to an opened widget or undefined, e.g. if a page is opened. * Never reject if `canHandle` return a positive number; otherwise should reject. */ open: (resource: URI, options?: OpenerOptions) => MaybePromise<Record<any, any> | undefined>; } export declare const OpenerService: unique symbol; /** * `OpenerService` provide an access to existing openers. */ export interface OpenerService { /** * Return all registered openers. * Never reject. */ getOpeners: (() => Promise<OpenHandler[]>) & ((resource: URI, options?: OpenerOptions) => Promise<OpenHandler[]>); /** * Return an opener with the higher priority for the given resource. * Reject if such does not exist. */ getOpener: (resource: URI, options?: OpenerOptions) => Promise<OpenHandler>; /** * Add open handler i.e. for custom editors */ addHandler?: (openHandler: OpenHandler) => Disposable; /** * Event that fires when a new opener is added or removed. */ onDidChangeOpeners?: Event<void>; } export declare function open(openerService: OpenerService, resource: URI, options?: OpenerOptions): Promise<Record<string, any> | undefined>; export declare class DefaultOpenerService implements OpenerService { protected readonly handlersProvider: Contribution.Provider<OpenHandler>; constructor(handlersProvider: Contribution.Provider<OpenHandler>); getOpener(resource: URI, options?: OpenerOptions): Promise<OpenHandler>; getOpeners(resource?: URI, options?: OpenerOptions): Promise<OpenHandler[]>; protected prioritize(resource: URI, options?: OpenerOptions): Promise<OpenHandler[]>; protected getHandlers(): OpenHandler[]; } //# sourceMappingURL=open-handler.d.ts.map