import { illegalArgument } from "../../../base/common/errors.mjs";
import { UILabelProvider, AriaLabelProvider, ElectronAcceleratorLabelProvider } from "../../../base/common/keybindingLabels.mjs";
import { ResolvedKeybinding, ResolvedKeybindingPart } from "../../../base/common/keybindings.mjs";
class BaseResolvedKeybinding extends ResolvedKeybinding {
  constructor(os, parts) {
    super();
    if (parts.length === 0) {
      throw illegalArgument(`parts`);
    }
    this._os = os;
    this._parts = parts;
  }
  getLabel() {
    return UILabelProvider.toLabel(this._os, this._parts, (keybinding) => this._getLabel(keybinding));
  }
  getAriaLabel() {
    return AriaLabelProvider.toLabel(this._os, this._parts, (keybinding) => this._getAriaLabel(keybinding));
  }
  getElectronAccelerator() {
    if (this._parts.length > 1) {
      return null;
    }
    if (this._parts[0].isDuplicateModifierCase()) {
      return null;
    }
    return ElectronAcceleratorLabelProvider.toLabel(this._os, this._parts, (keybinding) => this._getElectronAccelerator(keybinding));
  }
  isChord() {
    return this._parts.length > 1;
  }
  getParts() {
    return this._parts.map((keybinding) => this._getPart(keybinding));
  }
  _getPart(keybinding) {
    return new ResolvedKeybindingPart(keybinding.ctrlKey, keybinding.shiftKey, keybinding.altKey, keybinding.metaKey, this._getLabel(keybinding), this._getAriaLabel(keybinding));
  }
  getDispatchParts() {
    return this._parts.map((keybinding) => this._getDispatchPart(keybinding));
  }
  getSingleModifierDispatchParts() {
    return this._parts.map((keybinding) => this._getSingleModifierDispatchPart(keybinding));
  }
}
export {
  BaseResolvedKeybinding
};
