{"version":3,"sources":["browser/monaco-quick-access-registry.ts"],"names":[],"mappings":"AACA,OAAO,EAAC,kBAAkB,EAAE,6BAA6B,EAAE,mBAAmB,EAAC,MAAM,cAAc,CAAC;AACpG,OAAO,EAAoB,UAAU,EAAC,MAAM,yBAAyB,CAAC;AAuBtE,qBACa,yBAA0B,YAAW,mBAAmB;IAEnE,SAAS,CAAC,QAAQ,CAAC,kBAAkB,EAAE,kBAAkB,CAAC;IAE1D,OAAO,KAAK,cAAc,GAEzB;IAED,2BAA2B,CAAC,UAAU,EAAE,6BAA6B,GAAG,UAAU;IAuClF,uBAAuB,IAAI,6BAA6B,EAAE;IAM1D,sBAAsB,CAAC,MAAM,EAAE,MAAM,GAAG,6BAA6B,GAAG,SAAS;IAKjF,KAAK,IAAI,IAAI;CAGd","file":"../../src/browser/monaco-quick-access-registry.d.ts","sourcesContent":["import {inject, injectable} from 'inversify';\r\nimport {KeybindingRegistry, QuickAccessProviderDescriptor, QuickAccessRegistry} from '@tartjs/core';\r\nimport {CancellationToken, Disposable} from '@tartjs/core/lib/common';\r\nimport {QuickPickItem, QuickPickSeparator} from '@tartjs/core/lib/common/quick-pick-service';\r\nimport {MonacoQuickPickItem} from './monaco-quick-input-service';\r\n\r\nabstract class MonacoPickerAccessProvider extends monaco.quickInput.PickerQuickAccessProvider<QuickPickItem> {\r\n    constructor(prefix: string, options?: monaco.quickInput.IPickerQuickAccessProviderOptions<QuickPickItem>) {\r\n        super(prefix, options);\r\n    }\r\n\r\n    abstract getDescriptor(): QuickAccessProviderDescriptor;\r\n}\r\n\r\nclass WmQuickAccessDescriptor implements monaco.quickInput.IQuickAccessProviderDescriptor {\r\n    constructor(\r\n        public readonly wmDescriptor: QuickAccessProviderDescriptor,\r\n        // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n        readonly ctor: { new(...services: any /* TS BrandedService but no clue how to type this properly */[]): monaco.quickInput.IQuickAccessProvider },\r\n        readonly prefix: string,\r\n        readonly helpEntries: monaco.quickInput.IQuickAccessProviderHelp[],\r\n        readonly placeholder?: string) {\r\n    }\r\n}\r\n\r\n@injectable()\r\nexport class MonacoQuickAccessRegistry implements QuickAccessRegistry {\r\n  @inject(KeybindingRegistry)\r\n  protected readonly keybindingRegistry: KeybindingRegistry;\r\n\r\n  private get monacoRegistry(): monaco.quickInput.IQuickAccessRegistry {\r\n    return monaco.platform.Registry.as<monaco.quickInput.IQuickAccessRegistry>('workbench.contributions.quickaccess');\r\n  }\r\n\r\n  registerQuickAccessProvider(descriptor: QuickAccessProviderDescriptor): Disposable {\r\n    const toMonacoPick = (item: QuickPickItem): monaco.quickInput.Pick<monaco.quickInput.IAnythingQuickPickItem> => {\r\n      if (QuickPickSeparator.is(item)) {\r\n        return item;\r\n      } else {\r\n        return new MonacoQuickPickItem(item, this.keybindingRegistry);\r\n      }\r\n    };\r\n\r\n    const inner =\r\n        class extends MonacoPickerAccessProvider {\r\n          constructor() {\r\n            super(descriptor.prefix);\r\n          }\r\n\r\n          getDescriptor(): QuickAccessProviderDescriptor {\r\n            return descriptor;\r\n          }\r\n\r\n          // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n          getPicks(filter: string, disposables: any, token: CancellationToken): monaco.quickInput.Picks<QuickPickItem> | Promise<monaco.quickInput.Picks<QuickPickItem>> {\r\n            const result = descriptor.getInstance().getPicks(filter, token);\r\n            if (result instanceof Promise) {\r\n              return result.then(picks => picks.map(toMonacoPick));\r\n            } else {\r\n              return result.map(toMonacoPick);\r\n            }\r\n          }\r\n        };\r\n\r\n    return this.monacoRegistry.registerQuickAccessProvider(new WmQuickAccessDescriptor(\r\n        descriptor,\r\n        inner,\r\n        descriptor.prefix,\r\n        descriptor.helpEntries,\r\n        descriptor.placeholder\r\n    ));\r\n  }\r\n\r\n  getQuickAccessProviders(): QuickAccessProviderDescriptor[] {\r\n    return this.monacoRegistry.getQuickAccessProviders()\r\n        .filter(provider => provider instanceof WmQuickAccessDescriptor)\r\n        .map(provider => (provider as WmQuickAccessDescriptor).wmDescriptor);\r\n  }\r\n\r\n  getQuickAccessProvider(prefix: string): QuickAccessProviderDescriptor | undefined {\r\n    const monacoDescriptor = this.monacoRegistry.getQuickAccessProvider(prefix);\r\n    return monacoDescriptor ? (monacoDescriptor as WmQuickAccessDescriptor).wmDescriptor : undefined;\r\n  }\r\n\r\n  clear(): void {\r\n    this.monacoRegistry.clear();\r\n  }\r\n}\r\n"]}