/* tslint:disable */ import { AbstractConfigurationChangeEvent } from './abastract-configuration-change-event'; import { IConfigurationChangeEvent} from '../../../interfaces'; import { ConfigurationTarget, IConfigurationModel } from '../../../interfaces'; import { URI } from '@vscode-alt/monaco-editor/esm/vs/base/common/uri'; import { ConfigurationModel } from '../models/configuration-model'; import { ResourceMap } from '@vscode-alt/monaco-editor/esm/vs/base/common/map'; import * as arrays from '@vscode-alt/monaco-editor/esm/vs/base/common/arrays'; // src/vs/platform/configuration/common/configurationModels.ts export class ConfigurationChangeEvent extends AbstractConfigurationChangeEvent implements IConfigurationChangeEvent { private _source: ConfigurationTarget; private _sourceConfig: any; constructor( private _changedConfiguration: ConfigurationModel = new ConfigurationModel(), private _changedConfigurationByResource: ResourceMap = new ResourceMap()) { super(); } get changedConfiguration(): IConfigurationModel { return this._changedConfiguration; } get changedConfigurationByResource(): ResourceMap { return this._changedConfigurationByResource; } change(event: ConfigurationChangeEvent): ConfigurationChangeEvent; change(keys: string[], resource?: URI): ConfigurationChangeEvent; change(arg1: any, arg2?: any): ConfigurationChangeEvent { if (arg1 instanceof ConfigurationChangeEvent) { this._changedConfiguration = this._changedConfiguration.merge(arg1._changedConfiguration); for (const resource of arg1._changedConfigurationByResource.keys()) { let changedConfigurationByResource = this.getOrSetChangedConfigurationForResource(resource); changedConfigurationByResource = changedConfigurationByResource.merge(arg1._changedConfigurationByResource.get(resource)!); this._changedConfigurationByResource.set(resource, changedConfigurationByResource); } } else { this.changeWithKeys(arg1, arg2); } return this; } telemetryData(source: ConfigurationTarget, sourceConfig: any): ConfigurationChangeEvent { this._source = source; this._sourceConfig = sourceConfig; return this; } get affectedKeys(): string[] { const keys = [...this._changedConfiguration.keys]; this._changedConfigurationByResource.forEach(model => keys.push(...model.keys)); return arrays.distinct(keys); } get source(): ConfigurationTarget { return this._source; } get sourceConfig(): any { return this._sourceConfig; } affectsConfiguration(config: string, resource?: URI): boolean { let configurationModelsToSearch: ConfigurationModel[] = [this._changedConfiguration]; if (resource) { let model = this._changedConfigurationByResource.get(resource); if (model) { configurationModelsToSearch.push(model); } } else { configurationModelsToSearch.push(...this._changedConfigurationByResource.values()); } for (const configuration of configurationModelsToSearch) { if (this.doesConfigurationContains(configuration, config)) { return true; } } return false; } private changeWithKeys(keys: string[], resource?: URI): void { let changedConfiguration = resource ? this.getOrSetChangedConfigurationForResource(resource) : this._changedConfiguration; this.updateKeys(changedConfiguration, keys); } private getOrSetChangedConfigurationForResource(resource: URI): ConfigurationModel { let changedConfigurationByResource = this._changedConfigurationByResource.get(resource); if (!changedConfigurationByResource) { changedConfigurationByResource = new ConfigurationModel(); this._changedConfigurationByResource.set(resource, changedConfigurationByResource); } return changedConfigurationByResource; } }