{"version":3,"file":"mtxColorpicker.mjs","sources":["../../../projects/extensions/colorpicker/colorpicker-animations.ts","../../../projects/extensions/colorpicker/colorpicker.ts","../../../projects/extensions/colorpicker/colorpicker-content.html","../../../projects/extensions/colorpicker/colorpicker-input.ts","../../../projects/extensions/colorpicker/colorpicker-toggle.ts","../../../projects/extensions/colorpicker/colorpicker-toggle.html","../../../projects/extensions/colorpicker/colorpicker-module.ts","../../../projects/extensions/colorpicker/mtxColorpicker.ts"],"sourcesContent":["import {\n  animate,\n  style,\n  transition,\n  trigger,\n  keyframes,\n  AnimationTriggerMetadata,\n} from '@angular/animations';\n\n/**\n * Animations used by the colorpicker.\n * @docs-private\n */\nexport const mtxColorpickerAnimations: {\n  readonly transformPanel: AnimationTriggerMetadata;\n} = {\n  /** Transforms the height of the colorpicker's panel. */\n  transformPanel: trigger('transformPanel', [\n    transition(\n      'void => enter-dropdown',\n      animate(\n        '120ms cubic-bezier(0, 0, 0.2, 1)',\n        keyframes([\n          style({ opacity: 0, transform: 'scale(1, 0.8)' }),\n          style({ opacity: 1, transform: 'scale(1, 1)' }),\n        ])\n      )\n    ),\n    transition('* => void', animate('100ms linear', style({ opacity: 0 }))),\n  ]),\n};\n","import { Directionality } from '@angular/cdk/bidi';\nimport { ESCAPE, UP_ARROW, hasModifierKey } from '@angular/cdk/keycodes';\nimport {\n  FlexibleConnectedPositionStrategy,\n  Overlay,\n  OverlayConfig,\n  OverlayRef,\n  ScrollStrategy,\n} from '@angular/cdk/overlay';\nimport { ComponentPortal } from '@angular/cdk/portal';\nimport { DOCUMENT, NgTemplateOutlet } from '@angular/common';\nimport {\n  ChangeDetectionStrategy,\n  ChangeDetectorRef,\n  Component,\n  ComponentRef,\n  EventEmitter,\n  Inject,\n  InjectionToken,\n  Injector,\n  Input,\n  OnChanges,\n  OnDestroy,\n  Optional,\n  Output,\n  TemplateRef,\n  ViewContainerRef,\n  ViewEncapsulation,\n  afterNextRender,\n  booleanAttribute,\n  inject,\n} from '@angular/core';\nimport { ThemePalette } from '@angular/material/core';\nimport { Subject, Subscription, merge } from 'rxjs';\nimport { filter, take } from 'rxjs/operators';\n\nimport { TinyColor } from '@ctrl/tinycolor';\nimport { ColorEvent } from 'ngx-color';\nimport { ColorChromeModule } from 'ngx-color/chrome';\nimport { mtxColorpickerAnimations } from './colorpicker-animations';\nimport { ColorFormat, MtxColorpickerInput } from './colorpicker-input';\n\n/** Used to generate a unique ID for each colorpicker instance. */\nlet colorpickerUid = 0;\n\n/** Injection token that determines the scroll handling while the panel is open. */\nexport const MTX_COLORPICKER_SCROLL_STRATEGY = new InjectionToken<() => ScrollStrategy>(\n  'mtx-colorpicker-scroll-strategy',\n  {\n    providedIn: 'root',\n    factory: () => {\n      const overlay = inject(Overlay);\n      return () => overlay.scrollStrategies.reposition();\n    },\n  }\n);\n\nexport function MTX_COLORPICKER_SCROLL_STRATEGY_FACTORY(overlay: Overlay): () => ScrollStrategy {\n  return () => overlay.scrollStrategies.reposition();\n}\n\n/** Possible positions for the colorpicker dropdown along the X axis. */\nexport type ColorpickerDropdownPositionX = 'start' | 'end';\n\n/** Possible positions for the colorpicker dropdown along the Y axis. */\nexport type ColorpickerDropdownPositionY = 'above' | 'below';\n\nexport const MTX_COLORPICKER_SCROLL_STRATEGY_FACTORY_PROVIDER = {\n  provide: MTX_COLORPICKER_SCROLL_STRATEGY,\n  deps: [Overlay],\n  useFactory: MTX_COLORPICKER_SCROLL_STRATEGY_FACTORY,\n};\n\n@Component({\n  selector: 'mtx-colorpicker-content',\n  templateUrl: './colorpicker-content.html',\n  styleUrl: 'colorpicker-content.scss',\n  host: {\n    'class': 'mtx-colorpicker-content',\n    '[class]': 'color ? \"mat-\" + color : \"\"',\n    '[@transformPanel]': '_animationState',\n    '(@transformPanel.done)': '_animationDone.next()',\n  },\n  animations: [mtxColorpickerAnimations.transformPanel],\n  exportAs: 'mtxColorpickerContent',\n  encapsulation: ViewEncapsulation.None,\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  standalone: true,\n  imports: [ColorChromeModule, NgTemplateOutlet],\n})\nexport class MtxColorpickerContent implements OnDestroy {\n  @Input() color: ThemePalette;\n\n  picker!: MtxColorpicker;\n\n  /** Current state of the animation. */\n  _animationState: 'enter-dropdown' | 'void' = 'enter-dropdown';\n\n  /** Emits when an animation has finished. */\n  readonly _animationDone = new Subject<void>();\n\n  constructor(private _changeDetectorRef: ChangeDetectorRef) {}\n\n  _startExitAnimation() {\n    this._animationState = 'void';\n    this._changeDetectorRef.markForCheck();\n  }\n\n  ngOnDestroy() {\n    this._animationDone.complete();\n  }\n\n  getColorString(e: ColorEvent): string {\n    return {\n      hex: e.color.rgb.a === 1 ? e.color.hex : new TinyColor(e.color.rgb).toHex8String(),\n      rgb: new TinyColor(e.color.rgb).toRgbString(),\n      hsl: new TinyColor(e.color.hsl).toHslString(),\n      hsv: new TinyColor(e.color.hsv).toHsvString(),\n    }[this.picker.format];\n  }\n}\n\n@Component({\n  selector: 'mtx-colorpicker',\n  template: '',\n  exportAs: 'mtxColorpicker',\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  encapsulation: ViewEncapsulation.None,\n  standalone: true,\n})\nexport class MtxColorpicker implements OnChanges, OnDestroy {\n  private _scrollStrategy: () => ScrollStrategy;\n  private _inputStateChanges = Subscription.EMPTY;\n\n  /** Custom colorpicker content set by the consumer. */\n  @Input() content!: TemplateRef<any>;\n\n  /** Emits when the colorpicker has been opened. */\n  @Output('opened') openedStream: EventEmitter<void> = new EventEmitter<void>();\n\n  /** Emits when the colorpicker has been closed. */\n  @Output('closed') closedStream: EventEmitter<void> = new EventEmitter<void>();\n\n  @Input({ transform: booleanAttribute }) get disabled() {\n    return this._disabled === undefined && this.pickerInput\n      ? this.pickerInput.disabled\n      : !!this._disabled;\n  }\n  set disabled(value: boolean) {\n    if (value !== this._disabled) {\n      this._disabled = value;\n      this._disabledChange.next(value);\n    }\n  }\n  private _disabled!: boolean;\n\n  /** Preferred position of the colorpicker in the X axis. */\n  @Input()\n  xPosition: ColorpickerDropdownPositionX = 'start';\n\n  /** Preferred position of the colorpicker in the Y axis. */\n  @Input()\n  yPosition: ColorpickerDropdownPositionY = 'below';\n\n  /**\n   * Whether to restore focus to the previously-focused element when the panel is closed.\n   * Note that automatic focus restoration is an accessibility feature and it is recommended that\n   * you provide your own equivalent, if you decide to turn it off.\n   */\n  @Input({ transform: booleanAttribute }) restoreFocus = true;\n\n  /** Whether the panel is open. */\n  @Input({ transform: booleanAttribute })\n  get opened(): boolean {\n    return this._opened;\n  }\n  set opened(value: boolean) {\n    value ? this.open() : this.close();\n  }\n  private _opened = false;\n\n  /** The id for the colorpicker panel. */\n  id = `mtx-colorpicker-${colorpickerUid++}`;\n\n  /** Color palette to use on the colorpicker's panel. */\n  @Input()\n  get color(): ThemePalette {\n    return this._color || (this.pickerInput ? this.pickerInput.getThemePalette() : undefined);\n  }\n  set color(value: ThemePalette) {\n    this._color = value;\n  }\n  private _color: ThemePalette;\n\n  /** The input and output color format. */\n  @Input()\n  get format(): ColorFormat {\n    return this._format || this.pickerInput.format;\n  }\n  set format(value: ColorFormat) {\n    this._format = value;\n  }\n  _format!: ColorFormat;\n\n  /** The currently selected color. */\n  get selected(): string {\n    return this._validSelected;\n  }\n  set selected(value: string) {\n    this._validSelected = value;\n  }\n  private _validSelected: string = '';\n\n  /** A reference to the overlay when the picker is opened as a popup. */\n  private _overlayRef!: OverlayRef | null;\n\n  /** Reference to the component instance rendered in the overlay. */\n  private _componentRef!: ComponentRef<MtxColorpickerContent> | null;\n\n  /** The element that was focused before the colorpicker was opened. */\n  private _focusedElementBeforeOpen: HTMLElement | null = null;\n\n  /** Unique class that will be added to the backdrop so that the test harnesses can look it up. */\n  private _backdropHarnessClass = `${this.id}-backdrop`;\n\n  /** The input element this colorpicker is associated with. */\n  pickerInput!: MtxColorpickerInput;\n\n  /** Emits when the colorpicker is disabled. */\n  readonly _disabledChange = new Subject<boolean>();\n\n  /** Emits new selected color when selected color changes. */\n  readonly _selectedChanged = new Subject<string>();\n\n  private _injector = inject(Injector);\n\n  constructor(\n    private _overlay: Overlay,\n    private _viewContainerRef: ViewContainerRef,\n    @Inject(MTX_COLORPICKER_SCROLL_STRATEGY) scrollStrategy: any,\n    @Optional() private _dir: Directionality,\n    @Optional() @Inject(DOCUMENT) private _document: any\n  ) {\n    this._scrollStrategy = scrollStrategy;\n  }\n\n  ngOnChanges() {}\n\n  ngOnDestroy() {\n    this._destroyOverlay();\n    this.close();\n    this._inputStateChanges.unsubscribe();\n    this._disabledChange.complete();\n  }\n\n  /** Selects the given color. */\n  select(nextVal: string): void {\n    const oldValue = this.selected;\n    this.selected = nextVal;\n\n    // TODO: `nextVal` should compare with `oldValue`\n    this._selectedChanged.next(nextVal);\n  }\n\n  /**\n   * Register an input with this colorpicker.\n   * @param input The colorpicker input to register with this colorpicker.\n   */\n  registerInput(input: MtxColorpickerInput): void {\n    if (this.pickerInput) {\n      throw Error('A Colorpicker can only be associated with a single input.');\n    }\n    this.pickerInput = input;\n    this._inputStateChanges = input._valueChange.subscribe(\n      (value: string) => (this.selected = value)\n    );\n  }\n\n  /** Open the panel. */\n  open(): void {\n    if (this._opened || this.disabled) {\n      return;\n    }\n    if (!this.pickerInput) {\n      throw Error('Attempted to open an Colorpicker with no associated input.');\n    }\n\n    if (this._document) {\n      this._focusedElementBeforeOpen = this._document.activeElement;\n    }\n\n    this._openOverlay();\n    this._opened = true;\n    this.openedStream.emit();\n  }\n\n  /** Close the panel. */\n  close(): void {\n    if (!this._opened) {\n      return;\n    }\n\n    if (this._componentRef) {\n      const instance = this._componentRef.instance;\n      instance._startExitAnimation();\n      instance._animationDone.pipe(take(1)).subscribe(() => this._destroyOverlay());\n    }\n\n    const completeClose = () => {\n      // The `_opened` could've been reset already if\n      // we got two events in quick succession.\n      if (this._opened) {\n        this._opened = false;\n        this.closedStream.emit();\n        this._focusedElementBeforeOpen = null;\n      }\n    };\n\n    if (\n      this.restoreFocus &&\n      this._focusedElementBeforeOpen &&\n      typeof this._focusedElementBeforeOpen.focus === 'function'\n    ) {\n      // Because IE moves focus asynchronously, we can't count on it being restored before we've\n      // marked the colorpicker as closed. If the event fires out of sequence and the element that\n      // we're refocusing opens the colorpicker on focus, the user could be stuck with not being\n      // able to close the panel at all. We work around it by making the logic, that marks\n      // the colorpicker as closed, async as well.\n      this._focusedElementBeforeOpen.focus();\n      setTimeout(completeClose);\n    } else {\n      completeClose();\n    }\n  }\n\n  /** Forwards relevant values from the colorpicker to the colorpicker content inside the overlay. */\n  protected _forwardContentValues(instance: MtxColorpickerContent) {\n    instance.picker = this;\n    instance.color = this.color;\n  }\n\n  /** Open the colopicker as a popup. */\n  private _openOverlay(): void {\n    this._destroyOverlay();\n\n    const labelId = this.pickerInput.getOverlayLabelId();\n    const portal = new ComponentPortal<MtxColorpickerContent>(\n      MtxColorpickerContent,\n      this._viewContainerRef\n    );\n    const overlayRef = (this._overlayRef = this._overlay.create(\n      new OverlayConfig({\n        positionStrategy: this._getDropdownStrategy(),\n        hasBackdrop: true,\n        backdropClass: ['mat-overlay-transparent-backdrop', this._backdropHarnessClass],\n        direction: this._dir,\n        scrollStrategy: this._scrollStrategy(),\n        panelClass: `mtx-colorpicker-popup`,\n      })\n    ));\n    const overlayElement = overlayRef.overlayElement;\n    overlayElement.setAttribute('role', 'dialog');\n\n    if (labelId) {\n      overlayElement.setAttribute('aria-labelledby', labelId);\n    }\n\n    this._getCloseStream(overlayRef).subscribe(event => {\n      if (event) {\n        event.preventDefault();\n      }\n      this.close();\n    });\n\n    this._componentRef = overlayRef.attach(portal);\n    this._forwardContentValues(this._componentRef.instance);\n\n    // Update the position once the panel has rendered. Only relevant in dropdown mode.\n    afterNextRender(\n      () => {\n        overlayRef.updatePosition();\n      },\n      { injector: this._injector }\n    );\n  }\n\n  /** Destroys the current overlay. */\n  private _destroyOverlay() {\n    if (this._overlayRef) {\n      this._overlayRef.dispose();\n      this._overlayRef = this._componentRef = null;\n    }\n  }\n\n  /** Gets a position strategy that will open the panel as a dropdown. */\n  private _getDropdownStrategy() {\n    const strategy = this._overlay\n      .position()\n      .flexibleConnectedTo(this.pickerInput.getConnectedOverlayOrigin())\n      .withTransformOriginOn('.mtx-colorpicker-content')\n      .withFlexibleDimensions(false)\n      .withViewportMargin(8)\n      .withLockedPosition();\n\n    return this._setConnectedPositions(strategy);\n  }\n\n  /** Sets the positions of the colorpicker in dropdown mode based on the current configuration. */\n  private _setConnectedPositions(strategy: FlexibleConnectedPositionStrategy) {\n    const primaryX = this.xPosition === 'end' ? 'end' : 'start';\n    const secondaryX = primaryX === 'start' ? 'end' : 'start';\n    const primaryY = this.yPosition === 'above' ? 'bottom' : 'top';\n    const secondaryY = primaryY === 'top' ? 'bottom' : 'top';\n\n    return strategy.withPositions([\n      {\n        originX: primaryX,\n        originY: secondaryY,\n        overlayX: primaryX,\n        overlayY: primaryY,\n      },\n      {\n        originX: primaryX,\n        originY: primaryY,\n        overlayX: primaryX,\n        overlayY: secondaryY,\n      },\n      {\n        originX: secondaryX,\n        originY: secondaryY,\n        overlayX: secondaryX,\n        overlayY: primaryY,\n      },\n      {\n        originX: secondaryX,\n        originY: primaryY,\n        overlayX: secondaryX,\n        overlayY: secondaryY,\n      },\n    ]);\n  }\n\n  /** Gets an observable that will emit when the overlay is supposed to be closed. */\n  private _getCloseStream(overlayRef: OverlayRef) {\n    return merge(\n      overlayRef.backdropClick(),\n      overlayRef.detachments(),\n      overlayRef.keydownEvents().pipe(\n        filter(event => {\n          // Closing on alt + up is only valid when there's an input associated with the colorpicker.\n          return (\n            (event.keyCode === ESCAPE && !hasModifierKey(event)) ||\n            (this.pickerInput && hasModifierKey(event, 'altKey') && event.keyCode === UP_ARROW)\n          );\n        })\n      )\n    );\n  }\n}\n","@if (picker.content) {\n  <ng-template [ngTemplateOutlet]=\"picker.content\"></ng-template>\n} @else {\n  <color-chrome [color]=\"picker.selected\" (onChangeComplete)=\"picker.select(getColorString($event))\" />\n}\n","import { DOWN_ARROW } from '@angular/cdk/keycodes';\nimport {\n  AfterViewInit,\n  Directive,\n  ElementRef,\n  EventEmitter,\n  Input,\n  OnDestroy,\n  Optional,\n  Output,\n  booleanAttribute,\n  forwardRef,\n} from '@angular/core';\nimport {\n  AbstractControl,\n  ControlValueAccessor,\n  NG_VALIDATORS,\n  NG_VALUE_ACCESSOR,\n  ValidationErrors,\n  ValidatorFn,\n  Validators,\n} from '@angular/forms';\nimport { ThemePalette } from '@angular/material/core';\nimport { MatFormField } from '@angular/material/form-field';\nimport { MAT_INPUT_VALUE_ACCESSOR } from '@angular/material/input';\nimport { Subscription } from 'rxjs';\n\nimport { MtxColorpicker } from './colorpicker';\n\nexport class MtxColorPickerInputEvent {\n  /** The new value for the target colorpicker input. */\n  value: string | null;\n\n  constructor(\n    /** Reference to the colorpicker input component that emitted the event. */\n    public target: MtxColorpickerInput,\n    /** Reference to the native input element associated with the colorpicker input. */\n    public targetElement: HTMLElement\n  ) {\n    this.value = this.target.value;\n  }\n}\n\nexport const MTX_COLORPICKER_VALUE_ACCESSOR: any = {\n  provide: NG_VALUE_ACCESSOR,\n  useExisting: forwardRef(() => MtxColorpickerInput),\n  multi: true,\n};\n\nexport const MTX_COLORPICKER_VALIDATORS: any = {\n  provide: NG_VALIDATORS,\n  useExisting: forwardRef(() => MtxColorpickerInput),\n  multi: true,\n};\n\nexport type ColorFormat = 'hex' | 'rgb' | 'hsl' | 'hsv';\n\n@Directive({\n  selector: 'input[mtxColorpicker]',\n  providers: [\n    MTX_COLORPICKER_VALUE_ACCESSOR,\n    MTX_COLORPICKER_VALIDATORS,\n    { provide: MAT_INPUT_VALUE_ACCESSOR, useExisting: MtxColorpickerInput },\n  ],\n  host: {\n    'class': 'mtx-colorpicker-input',\n    '[attr.aria-haspopup]': '_picker ? \"dialog\" : null',\n    '[attr.aria-owns]': '(_picker?.opened && _picker.id) || null',\n    '[disabled]': 'disabled',\n    '(input)': '_onInput($event.target.value)',\n    '(change)': '_onChange()',\n    '(blur)': '_onBlur()',\n    '(keydown)': '_onKeydown($event)',\n  },\n  exportAs: 'mtxColorpickerInput',\n  standalone: true,\n})\nexport class MtxColorpickerInput implements ControlValueAccessor, AfterViewInit, OnDestroy {\n  /** Whether the component has been initialized. */\n  private _isInitialized!: boolean;\n\n  @Input()\n  set mtxColorpicker(value: MtxColorpicker) {\n    if (!value) {\n      return;\n    }\n\n    this._picker = value;\n    this._picker.registerInput(this);\n    this._pickerSubscription.unsubscribe();\n\n    this._pickerSubscription = this._picker._selectedChanged.subscribe((selected: string) => {\n      this.value = selected;\n      this._cvaOnChange(selected);\n      this._onTouched();\n      this.colorInput.emit(new MtxColorPickerInputEvent(this, this._elementRef.nativeElement));\n      this.colorChange.emit(new MtxColorPickerInputEvent(this, this._elementRef.nativeElement));\n    });\n  }\n  _picker!: MtxColorpicker;\n\n  /** Whether the colorpicker-input is disabled. */\n  @Input({ transform: booleanAttribute })\n  get disabled(): boolean {\n    return !!this._disabled;\n  }\n  set disabled(value: boolean) {\n    const element = this._elementRef.nativeElement;\n\n    if (this._disabled !== value) {\n      this._disabled = value;\n      this._disabledChange.emit(value);\n    }\n\n    // We need to null check the `blur` method, because it's undefined during SSR.\n    // In Ivy static bindings are invoked earlier, before the element is attached to the DOM.\n    // This can cause an error to be thrown in some browsers (IE/Edge) which assert that the\n    // element has been inserted.\n    if (value && this._isInitialized && element.blur) {\n      // Normally, native input elements automatically blur if they turn disabled. This behavior\n      // is problematic, because it would mean that it triggers another change detection cycle,\n      // which then causes a changed after checked error if the input element was focused before.\n      element.blur();\n    }\n  }\n  private _disabled!: boolean;\n\n  /** The value of the input. */\n  @Input()\n  get value(): string | null {\n    return this._value;\n  }\n  set value(value: string | null) {\n    const oldValue = this.value;\n    this._value = value;\n    this._formatValue(value);\n\n    this._valueChange.emit(value);\n  }\n  private _value!: string | null;\n\n  /** The input and output color format. */\n  @Input() format: ColorFormat = 'hex';\n\n  /** Emits when a `change` event is fired on this `<input>`. */\n  @Output() readonly colorChange: EventEmitter<MtxColorPickerInputEvent> =\n    new EventEmitter<MtxColorPickerInputEvent>();\n\n  /** Emits when an `input` event is fired on this `<input>`. */\n  @Output() readonly colorInput: EventEmitter<MtxColorPickerInputEvent> =\n    new EventEmitter<MtxColorPickerInputEvent>();\n\n  /** Emits when the disabled state has changed */\n  _disabledChange = new EventEmitter<boolean>();\n\n  /** Emits when the value changes (either due to user input or programmatic change). */\n  _valueChange = new EventEmitter<string | null>();\n\n  _onTouched = () => {};\n\n  _validatorOnChange = () => {};\n\n  private _cvaOnChange: (value: any) => void = () => {};\n\n  private _pickerSubscription = Subscription.EMPTY;\n\n  /** The combined form control validator for this input. */\n  private _validator: ValidatorFn | null = Validators.compose([]);\n\n  /** Whether the last value set on the input was valid. */\n  private _lastValueValid = false;\n\n  constructor(\n    private _elementRef: ElementRef<HTMLInputElement>,\n    @Optional() private _formField: MatFormField\n  ) {}\n\n  ngAfterViewInit() {\n    this._isInitialized = true;\n  }\n\n  ngOnDestroy() {\n    this._pickerSubscription.unsubscribe();\n    this._valueChange.complete();\n    this._disabledChange.complete();\n  }\n\n  registerOnValidatorChange(fn: () => void): void {\n    this._validatorOnChange = fn;\n  }\n\n  /** @docs-private */\n  validate(c: AbstractControl): ValidationErrors | null {\n    return this._validator ? this._validator(c) : null;\n  }\n\n  /**\n   * @deprecated\n   * @breaking-change 8.0.0 Use `getConnectedOverlayOrigin` instead\n   */\n  getPopupConnectionElementRef(): ElementRef {\n    return this.getConnectedOverlayOrigin();\n  }\n\n  /**\n   * Gets the element that the colorpicker popup should be connected to.\n   * @return The element to connect the popup to.\n   */\n  getConnectedOverlayOrigin(): ElementRef {\n    return this._formField ? this._formField.getConnectedOverlayOrigin() : this._elementRef;\n  }\n\n  /** Gets the ID of an element that should be used a description for the overlay. */\n  getOverlayLabelId(): string | null {\n    if (this._formField) {\n      return this._formField.getLabelId();\n    }\n\n    return this._elementRef.nativeElement.getAttribute('aria-labelledby');\n  }\n\n  // Implemented as part of ControlValueAccessor.\n  writeValue(value: string): void {\n    this.value = value;\n  }\n\n  // Implemented as part of ControlValueAccessor.\n  registerOnChange(fn: (value: any) => void): void {\n    this._cvaOnChange = fn;\n  }\n\n  // Implemented as part of ControlValueAccessor.\n  registerOnTouched(fn: () => void): void {\n    this._onTouched = fn;\n  }\n\n  // Implemented as part of ControlValueAccessor.\n  setDisabledState(isDisabled: boolean): void {\n    this.disabled = isDisabled;\n  }\n\n  _onKeydown(event: KeyboardEvent) {\n    const isAltDownArrow = event.altKey && event.keyCode === DOWN_ARROW;\n\n    if (this._picker && isAltDownArrow && !this._elementRef.nativeElement.readOnly) {\n      this._picker.open();\n      event.preventDefault();\n    }\n  }\n\n  /** Handles blur events on the input. */\n  _onBlur() {\n    // Reformat the input only if we have a valid value.\n    if (this.value) {\n      this._formatValue(this.value);\n    }\n\n    this._onTouched();\n  }\n\n  _onInput(value: string) {\n    const nextValue = value;\n\n    this._value = nextValue;\n    this._cvaOnChange(nextValue);\n    this._valueChange.emit(nextValue);\n    this.colorInput.emit(new MtxColorPickerInputEvent(this, this._elementRef.nativeElement));\n  }\n\n  _onChange() {\n    this.colorChange.emit(new MtxColorPickerInputEvent(this, this._elementRef.nativeElement));\n  }\n\n  /** Returns the palette used by the input's form field, if any. */\n  getThemePalette(): ThemePalette {\n    return this._formField ? this._formField.color : undefined;\n  }\n\n  /** TODO: Formats a value and sets it on the input element. */\n  private _formatValue(value: string | null) {\n    this._elementRef.nativeElement.value = value ? value : '';\n  }\n}\n","import {\n  AfterContentInit,\n  Attribute,\n  ChangeDetectionStrategy,\n  ChangeDetectorRef,\n  Component,\n  ContentChild,\n  Directive,\n  Input,\n  OnChanges,\n  OnDestroy,\n  SimpleChanges,\n  ViewChild,\n  ViewEncapsulation,\n  booleanAttribute,\n} from '@angular/core';\nimport { MatButton, MatIconButton } from '@angular/material/button';\nimport { Observable, Subscription, merge, of as observableOf } from 'rxjs';\n\nimport { MtxColorpicker } from './colorpicker';\n\n/** Can be used to override the icon of a `mtxColorpickerToggle`. */\n@Directive({\n  selector: '[mtxColorpickerToggleIcon]',\n  standalone: true,\n})\nexport class MtxColorpickerToggleIcon {}\n\n@Component({\n  selector: 'mtx-colorpicker-toggle',\n  templateUrl: './colorpicker-toggle.html',\n  styleUrl: './colorpicker-toggle.scss',\n  host: {\n    'class': 'mtx-colorpicker-toggle',\n    '[attr.tabindex]': 'null',\n    '[class.mtx-colorpicker-toggle-active]': 'picker && picker.opened',\n    '[class.mat-accent]': 'picker && picker.color === \"accent\"',\n    '[class.mat-warn]': 'picker && picker.color === \"warn\"',\n    // Bind the `click` on the host, rather than the inner `button`, so that we can call\n    // `stopPropagation` on it without affecting the user's `click` handlers. We need to stop\n    // it so that the input doesn't get focused automatically by the form field (See #21836).\n    '(click)': '_open($event)',\n  },\n  exportAs: 'mtxColorpickerToggle',\n  encapsulation: ViewEncapsulation.None,\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  standalone: true,\n  imports: [MatIconButton],\n})\nexport class MtxColorpickerToggle implements AfterContentInit, OnChanges, OnDestroy {\n  private _stateChanges = Subscription.EMPTY;\n\n  /** Colorpicker instance that the button will toggle. */\n  @Input('for') picker!: MtxColorpicker;\n\n  /** Tabindex for the toggle. */\n  @Input() tabIndex: number | null;\n\n  /** Screen-reader label for the button. */\n  @Input('aria-label') ariaLabel!: string;\n\n  /** Whether the toggle button is disabled. */\n  @Input({ transform: booleanAttribute })\n  get disabled(): boolean {\n    if (this._disabled == null && this.picker) {\n      return this.picker.disabled;\n    }\n\n    return !!this._disabled;\n  }\n  set disabled(value: boolean) {\n    this._disabled = value;\n  }\n  private _disabled!: boolean;\n\n  /** Whether ripples on the toggle should be disabled. */\n  @Input({ transform: booleanAttribute }) disableRipple!: boolean;\n\n  /** Custom icon set by the consumer. */\n  @ContentChild(MtxColorpickerToggleIcon) _customIcon!: MtxColorpickerToggleIcon;\n\n  /** Underlying button element. */\n  @ViewChild('button') _button!: MatButton;\n\n  constructor(\n    private _changeDetectorRef: ChangeDetectorRef,\n    @Attribute('tabindex') defaultTabIndex: string\n  ) {\n    const parsedTabIndex = Number(defaultTabIndex);\n    this.tabIndex = parsedTabIndex || parsedTabIndex === 0 ? parsedTabIndex : null;\n  }\n\n  ngOnChanges(changes: SimpleChanges): void {\n    if (changes.picker) {\n      this._watchStateChanges();\n    }\n  }\n\n  ngOnDestroy() {\n    this._stateChanges.unsubscribe();\n  }\n\n  ngAfterContentInit() {\n    this._watchStateChanges();\n  }\n\n  _open(event: Event): void {\n    if (this.picker && !this.disabled) {\n      this.picker.open();\n      event.stopPropagation();\n    }\n  }\n\n  private _watchStateChanges() {\n    const pickerDisabled = this.picker ? this.picker._disabledChange : observableOf();\n    const inputDisabled =\n      this.picker && this.picker.pickerInput\n        ? this.picker.pickerInput._disabledChange\n        : observableOf();\n    const pickerToggled = this.picker\n      ? merge(this.picker.openedStream, this.picker.closedStream)\n      : observableOf();\n\n    this._stateChanges.unsubscribe();\n    this._stateChanges = merge(\n      pickerDisabled as Observable<void>,\n      inputDisabled as Observable<void>,\n      pickerToggled\n    ).subscribe(() => this._changeDetectorRef.markForCheck());\n  }\n}\n","<button #button\n  mat-icon-button\n  type=\"button\"\n  [attr.aria-haspopup]=\"picker ? 'dialog' : null\"\n  [attr.aria-label]=\"ariaLabel\"\n  [attr.tabindex]=\"disabled ? -1 : tabIndex\"\n  [disabled]=\"disabled\"\n  [disableRipple]=\"disableRipple\">\n\n  @if (!_customIcon) {\n    <svg\n      class=\"mtx-colorpicker-toggle-default-icon\"\n      viewBox=\"0 0 24 24\"\n      width=\"24px\"\n      height=\"24px\"\n      fill=\"currentColor\"\n      focusable=\"false\">\n      <path d=\"M17.5,12A1.5,1.5 0 0,1 16,10.5A1.5,1.5 0 0,1 17.5,9A1.5,1.5 0 0,1 19,10.5A1.5,1.5 0 0,1 17.5,12M14.5,8A1.5,1.5 0 0,1 13,6.5A1.5,1.5 0 0,1 14.5,5A1.5,1.5 0 0,1 16,6.5A1.5,1.5 0 0,1 14.5,8M9.5,8A1.5,1.5 0 0,1 8,6.5A1.5,1.5 0 0,1 9.5,5A1.5,1.5 0 0,1 11,6.5A1.5,1.5 0 0,1 9.5,8M6.5,12A1.5,1.5 0 0,1 5,10.5A1.5,1.5 0 0,1 6.5,9A1.5,1.5 0 0,1 8,10.5A1.5,1.5 0 0,1 6.5,12M12,3A9,9 0 0,0 3,12A9,9 0 0,0 12,21A1.5,1.5 0 0,0 13.5,19.5C13.5,19.11 13.35,18.76 13.11,18.5C12.88,18.23 12.73,17.88 12.73,17.5A1.5,1.5 0 0,1 14.23,16H16A5,5 0 0,0 21,11C21,6.58 16.97,3 12,3Z\" />\n    </svg>\n  }\n\n  <ng-content select=\"[mtxColorpickerToggleIcon]\"></ng-content>\n</button>\n","import { A11yModule } from '@angular/cdk/a11y';\nimport { OverlayModule } from '@angular/cdk/overlay';\nimport { PortalModule } from '@angular/cdk/portal';\nimport { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { MatButtonModule } from '@angular/material/button';\n\nimport { ColorChromeModule } from 'ngx-color/chrome';\nimport {\n  MTX_COLORPICKER_SCROLL_STRATEGY_FACTORY_PROVIDER,\n  MtxColorpicker,\n  MtxColorpickerContent,\n} from './colorpicker';\nimport { MtxColorpickerInput } from './colorpicker-input';\nimport { MtxColorpickerToggle, MtxColorpickerToggleIcon } from './colorpicker-toggle';\n\n@NgModule({\n  imports: [\n    CommonModule,\n    OverlayModule,\n    A11yModule,\n    PortalModule,\n    MatButtonModule,\n    ColorChromeModule,\n    MtxColorpicker,\n    MtxColorpickerContent,\n    MtxColorpickerInput,\n    MtxColorpickerToggle,\n    MtxColorpickerToggleIcon,\n  ],\n  exports: [\n    MtxColorpicker,\n    MtxColorpickerContent,\n    MtxColorpickerInput,\n    MtxColorpickerToggle,\n    MtxColorpickerToggleIcon,\n  ],\n  providers: [MTX_COLORPICKER_SCROLL_STRATEGY_FACTORY_PROVIDER],\n})\nexport class MtxColorpickerModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1","observableOf"],"mappings":"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"}