{"version":3,"sources":["browser/monaco-command-service.ts"],"names":[],"mappings":";AACA,OAAO,EAAC,eAAe,EAAC,MAAM,iCAAiC,CAAC;AAChE,OAAO,EAAC,UAAU,EAAE,oBAAoB,EAAE,OAAO,EAAC,MAAM,yBAAyB,CAAC;AAClF,OAAO,aAAa,GAAG,MAAM,CAAC,QAAQ,CAAC,aAAa,CAAC;AACrD,OAAO,eAAe,GAAG,MAAM,CAAC,QAAQ,CAAC,eAAe,CAAC;AAEzD,eAAO,MAAM,2BAA2B,eAAwC,CAAC;AAEjF,MAAM,WAAW,2BAA2B;IACxC,IAAI,oBAAoB,CAAC;CAC5B;AAED,qBACa,oBAAqB,YAAW,eAAe,EAAE,UAAU;IAavC,SAAS,CAAC,QAAQ,CAAC,eAAe,EAAE,eAAe;IAXhF,SAAS,CAAC,QAAQ,CAAC,2BAA2B,yBAAgC;IAC9E,SAAS,CAAC,QAAQ,CAAC,0BAA0B,yBAAgC;IAC7E,SAAS,CAAC,QAAQ,CAAC,SAAS,uBAG1B;IAEF,SAAS,CAAC,QAAQ,EAAE,MAAM,CAAC,QAAQ,CAAC,wBAAwB,GAAG,SAAS,CAAC;IACzE,SAAS,CAAC,QAAQ,CAAC,iBAAiB,uBAA8B;gBAGlB,eAAe,EAAE,eAAe;IAMhF,IAAI,oBAAoB,IAAI,MAAM,CAAC,MAAM,CAAC,aAAa,CAAC,CAEvD;IAED,IAAI,mBAAmB,IAAI,MAAM,CAAC,MAAM,CAAC,aAAa,CAAC,CAEtD;IAED,OAAO,IAAI,IAAI;IAIf,WAAW,CAAC,QAAQ,EAAE,MAAM,CAAC,QAAQ,CAAC,wBAAwB,GAAG,SAAS,GAAG,IAAI;IAkB3E,cAAc,CAAC,SAAS,EAAE,GAAG,EAAE,GAAG,IAAI,EAAE,GAAG,EAAE,GAAG,OAAO,CAAC,GAAG,CAAC;IAY5D,oBAAoB,CAAC,SAAS,EAAE,GAAG,EAAE,GAAG,IAAI,EAAE,GAAG,EAAE,GAAG,OAAO,CAAC,GAAG,CAAC;CAO3E","file":"../../src/browser/monaco-command-service.d.ts","sourcesContent":["import {inject, injectable} from 'inversify';\r\nimport {CommandRegistry} from '@tartjs/core/lib/common/command';\r\nimport {Disposable, DisposableCollection, Emitter} from '@tartjs/core/lib/common';\r\nimport ICommandEvent = monaco.commands.ICommandEvent;\r\nimport ICommandService = monaco.commands.ICommandService;\r\n\r\nexport const MonacoCommandServiceFactory = Symbol('MonacoCommandServiceFactory');\r\n\r\nexport interface MonacoCommandServiceFactory {\r\n    (): MonacoCommandService;\r\n}\r\n\r\n@injectable()\r\nexport class MonacoCommandService implements ICommandService, Disposable {\r\n\r\n    protected readonly onWillExecuteCommandEmitter = new Emitter<ICommandEvent>();\r\n    protected readonly onDidExecuteCommandEmitter = new Emitter<ICommandEvent>();\r\n    protected readonly toDispose = new DisposableCollection(\r\n        this.onWillExecuteCommandEmitter,\r\n        this.onDidExecuteCommandEmitter\r\n    );\r\n\r\n    protected delegate: monaco.services.StandaloneCommandService | undefined;\r\n    protected readonly delegateListeners = new DisposableCollection();\r\n\r\n    constructor(\r\n        @inject(CommandRegistry) protected readonly commandRegistry: CommandRegistry\r\n    ) {\r\n        this.toDispose.push(this.commandRegistry.onWillExecuteCommand(e => this.onWillExecuteCommandEmitter.fire(e)));\r\n        this.toDispose.push(this.commandRegistry.onDidExecuteCommand(e => this.onDidExecuteCommandEmitter.fire(e)));\r\n    }\r\n\r\n    get onWillExecuteCommand(): monaco.IEvent<ICommandEvent> {\r\n        return this.onWillExecuteCommandEmitter.event;\r\n    }\r\n\r\n    get onDidExecuteCommand(): monaco.IEvent<ICommandEvent> {\r\n        return this.onDidExecuteCommandEmitter.event;\r\n    }\r\n\r\n    dispose(): void {\r\n        this.toDispose.dispose();\r\n    }\r\n\r\n    setDelegate(delegate: monaco.services.StandaloneCommandService | undefined): void {\r\n        if (this.toDispose.disposed) {\r\n            return;\r\n        }\r\n        this.delegateListeners.dispose();\r\n        this.toDispose.push(this.delegateListeners);\r\n        this.delegate = delegate;\r\n        if (this.delegate) {\r\n            this.delegateListeners.push(this.delegate['_onWillExecuteCommand'].event(event =>\r\n                this.onWillExecuteCommandEmitter.fire(event)\r\n            ));\r\n            this.delegateListeners.push(this.delegate['_onDidExecuteCommand'].event(event =>\r\n                this.onDidExecuteCommandEmitter.fire(event)\r\n            ));\r\n        }\r\n    }\r\n\r\n    // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n    async executeCommand(commandId: any, ...args: any[]): Promise<any> {\r\n        try {\r\n            await this.commandRegistry.executeCommand(commandId, ...args);\r\n        } catch (e) {\r\n            if (e.code === 'NO_ACTIVE_HANDLER') {\r\n                return this.executeMonacoCommand(commandId, ...args);\r\n            }\r\n            throw e;\r\n        }\r\n    }\r\n\r\n    // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n    async executeMonacoCommand(commandId: any, ...args: any[]): Promise<any> {\r\n        if (this.delegate) {\r\n            return this.delegate.executeCommand(commandId, ...args);\r\n        }\r\n        throw new Error(`command '${commandId}' not found`);\r\n    }\r\n\r\n}\r\n"]}