{"version":3,"sources":["browser/monaco-command-registry.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,YAAY,EAAC,MAAM,iBAAiB,CAAC;AAE7C,OAAO,EAAC,oBAAoB,EAAC,MAAM,0BAA0B,CAAC;AAC9D,OAAO,EAAC,OAAO,EAAE,cAAc,EAAE,eAAe,EAAE,gBAAgB,EAAC,MAAM,yBAAyB,CAAC;AAGnG,MAAM,WAAW,0BAA0B;IAEvC,OAAO,CAAC,MAAM,EAAE,YAAY,EAAE,GAAG,IAAI,EAAE,GAAG,EAAE,GAAG,GAAG,CAAC;IAGnD,SAAS,CAAC,CAAC,MAAM,EAAE,YAAY,EAAE,GAAG,IAAI,EAAE,GAAG,EAAE,GAAG,OAAO,CAAC;CAC7D;AAED,qBACa,qBAAqB;IAG9B,SAAS,CAAC,QAAQ,CAAC,aAAa,EAAE,oBAAoB,CAAC;IAE9B,SAAS,CAAC,QAAQ,CAAC,QAAQ,EAAE,eAAe,CAAC;IAE5C,SAAS,CAAC,QAAQ,CAAC,gBAAgB,EAAE,gBAAgB,CAAC;IAEhF,QAAQ,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS;IAI7C,eAAe,CAAC,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,0BAA0B,GAAG,IAAI;IAO5E,eAAe,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,0BAA0B,GAAG,IAAI;IAI3E,SAAS,CAAC,UAAU,CAAC,aAAa,EAAE,0BAA0B,GAAG,cAAc;IAS/E,SAAS,CAAC,OAAO,CAAC,aAAa,EAAE,0BAA0B,EAAE,GAAG,IAAI,EAAE,GAAG,EAAE,GAAG,GAAG;IASjF,SAAS,CAAC,SAAS,CAAC,aAAa,EAAE,0BAA0B,EAAE,GAAG,IAAI,EAAE,GAAG,EAAE,GAAG,OAAO;IAMvF,SAAS,CAAC,SAAS,CAAC,aAAa,EAAE,0BAA0B,EAAE,GAAG,IAAI,EAAE,GAAG,EAAE,GAAG,OAAO;CAI1F","file":"../../src/browser/monaco-command-registry.d.ts","sourcesContent":["import {MonacoEditor} from './monaco-editor';\r\nimport {inject, injectable} from 'inversify';\r\nimport {MonacoEditorProvider} from './monaco-editor-provider';\r\nimport {Command, CommandHandler, CommandRegistry, SelectionService} from '@tartjs/core/lib/common';\r\nimport {TextEditorSelection} from '@tartjs/editor';\r\n\r\nexport interface MonacoEditorCommandHandler {\r\n    // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n    execute(editor: MonacoEditor, ...args: any[]): any;\r\n\r\n    // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n    isEnabled?(editor: MonacoEditor, ...args: any[]): boolean;\r\n}\r\n\r\n@injectable()\r\nexport class MonacoCommandRegistry {\r\n\r\n    @inject(MonacoEditorProvider)\r\n    protected readonly monacoEditors: MonacoEditorProvider;\r\n\r\n    @inject(CommandRegistry) protected readonly commands: CommandRegistry;\r\n\r\n    @inject(SelectionService) protected readonly selectionService: SelectionService;\r\n\r\n    validate(command: string): string | undefined {\r\n        return this.commands.commandIds.indexOf(command) !== -1 ? command : undefined;\r\n    }\r\n\r\n    registerCommand(command: Command, handler: MonacoEditorCommandHandler): void {\r\n        this.commands.registerCommand({\r\n            ...command,\r\n            id: command.id\r\n        }, this.newHandler(handler));\r\n    }\r\n\r\n    registerHandler(command: string, handler: MonacoEditorCommandHandler): void {\r\n        this.commands.registerHandler(command, this.newHandler(handler));\r\n    }\r\n\r\n    protected newHandler(monacoHandler: MonacoEditorCommandHandler): CommandHandler {\r\n        return {\r\n            execute: (...args) => this.execute(monacoHandler, ...args),\r\n            isEnabled: (...args) => this.isEnabled(monacoHandler, ...args),\r\n            isVisible: (...args) => this.isVisible(monacoHandler, ...args)\r\n        };\r\n    }\r\n\r\n    // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n    protected execute(monacoHandler: MonacoEditorCommandHandler, ...args: any[]): any {\r\n        const editor = this.monacoEditors.current;\r\n        if (editor) {\r\n            return Promise.resolve(monacoHandler.execute(editor, ...args));\r\n        }\r\n        return Promise.resolve();\r\n    }\r\n\r\n    // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n    protected isEnabled(monacoHandler: MonacoEditorCommandHandler, ...args: any[]): boolean {\r\n        const editor = this.monacoEditors.current;\r\n        return !!editor && (!monacoHandler.isEnabled || monacoHandler.isEnabled(editor, ...args));\r\n    }\r\n\r\n    // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n    protected isVisible(monacoHandler: MonacoEditorCommandHandler, ...args: any[]): boolean {\r\n        return TextEditorSelection.is(this.selectionService.selection);\r\n    }\r\n\r\n}\r\n"]}