import { mixin } from "../../../base/common/objects.mjs";
import { ICodeEditorService } from "../services/codeEditorService.mjs";
import { CodeEditorWidget } from "./codeEditorWidget.mjs";
import { ICommandService } from "../../../platform/commands/common/commands.mjs";
import { IContextKeyService } from "../../../platform/contextkey/common/contextkey.mjs";
import { IInstantiationService } from "../../../platform/instantiation/common/instantiation.mjs";
import { INotificationService } from "../../../platform/notification/common/notification.mjs";
import { IThemeService } from "../../../platform/theme/common/themeService.mjs";
import { IAccessibilityService } from "../../../platform/accessibility/common/accessibility.mjs";
import { ILanguageConfigurationService } from "../../common/languages/languageConfigurationRegistry.mjs";
import { ILanguageFeaturesService } from "../../common/services/languageFeatures.mjs";
var __decorate = globalThis && globalThis.__decorate || function(decorators, target, key, desc) {
  var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
  if (typeof Reflect === "object" && typeof Reflect.decorate === "function")
    r = Reflect.decorate(decorators, target, key, desc);
  else
    for (var i = decorators.length - 1; i >= 0; i--)
      if (d = decorators[i])
        r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
  return c > 3 && r && Object.defineProperty(target, key, r), r;
};
var __param = globalThis && globalThis.__param || function(paramIndex, decorator) {
  return function(target, key) {
    decorator(target, key, paramIndex);
  };
};
let EmbeddedCodeEditorWidget = class EmbeddedCodeEditorWidget2 extends CodeEditorWidget {
  constructor(domElement, options, parentEditor, instantiationService, codeEditorService, commandService, contextKeyService, themeService, notificationService, accessibilityService, languageConfigurationService, languageFeaturesService) {
    super(domElement, Object.assign(Object.assign({}, parentEditor.getRawOptions()), { overflowWidgetsDomNode: parentEditor.getOverflowWidgetsDomNode() }), {}, instantiationService, codeEditorService, commandService, contextKeyService, themeService, notificationService, accessibilityService, languageConfigurationService, languageFeaturesService);
    this._parentEditor = parentEditor;
    this._overwriteOptions = options;
    super.updateOptions(this._overwriteOptions);
    this._register(parentEditor.onDidChangeConfiguration((e) => this._onParentConfigurationChanged(e)));
  }
  getParentEditor() {
    return this._parentEditor;
  }
  _onParentConfigurationChanged(e) {
    super.updateOptions(this._parentEditor.getRawOptions());
    super.updateOptions(this._overwriteOptions);
  }
  updateOptions(newOptions) {
    mixin(this._overwriteOptions, newOptions, true);
    super.updateOptions(this._overwriteOptions);
  }
};
EmbeddedCodeEditorWidget = __decorate([
  __param(3, IInstantiationService),
  __param(4, ICodeEditorService),
  __param(5, ICommandService),
  __param(6, IContextKeyService),
  __param(7, IThemeService),
  __param(8, INotificationService),
  __param(9, IAccessibilityService),
  __param(10, ILanguageConfigurationService),
  __param(11, ILanguageFeaturesService)
], EmbeddedCodeEditorWidget);
export {
  EmbeddedCodeEditorWidget
};
