{"version":3,"file":"timepicker.mjs","sources":["../../../../../darwin_arm64-fastbuild-ST-fdfa778d11ba/bin/src/material/timepicker/util.ts","../../../../../darwin_arm64-fastbuild-ST-fdfa778d11ba/bin/src/material/timepicker/timepicker.ts","../../../../../darwin_arm64-fastbuild-ST-fdfa778d11ba/bin/src/material/timepicker/timepicker.html","../../../../../darwin_arm64-fastbuild-ST-fdfa778d11ba/bin/src/material/timepicker/timepicker-input.ts","../../../../../darwin_arm64-fastbuild-ST-fdfa778d11ba/bin/src/material/timepicker/timepicker-toggle.ts","../../../../../darwin_arm64-fastbuild-ST-fdfa778d11ba/bin/src/material/timepicker/timepicker-toggle.html","../../../../../darwin_arm64-fastbuild-ST-fdfa778d11ba/bin/src/material/timepicker/timepicker-module.ts"],"sourcesContent":["/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.dev/license\n */\n\nimport {InjectionToken} from '@angular/core';\nimport {DateAdapter, MatDateFormats} from '../core';\n\n/** Pattern that interval strings have to match. */\nconst INTERVAL_PATTERN = /^(\\d*\\.?\\d+)\\s*(h|hour|hours|m|min|minute|minutes|s|second|seconds)?$/i;\n\n/**\n * Object that can be used to configure the default options for the timepicker component.\n */\nexport interface MatTimepickerConfig {\n  /** Default interval for all time pickers. */\n  interval?: string | number;\n\n  /** Whether ripples inside the timepicker should be disabled by default. */\n  disableRipple?: boolean;\n}\n\n/**\n * Injection token that can be used to configure the default options for the timepicker component.\n */\nexport const MAT_TIMEPICKER_CONFIG = new InjectionToken<MatTimepickerConfig>(\n  'MAT_TIMEPICKER_CONFIG',\n);\n\n/**\n * Time selection option that can be displayed within a `mat-timepicker`.\n */\nexport interface MatTimepickerOption<D = unknown> {\n  /** Date value of the option. */\n  value: D;\n\n  /** Label to show to the user. */\n  label: string;\n}\n\n/** Parses an interval value into seconds. */\nexport function parseInterval(value: number | string | null): number | null {\n  let result: number;\n\n  if (value === null) {\n    return null;\n  } else if (typeof value === 'number') {\n    result = value;\n  } else {\n    if (value.trim().length === 0) {\n      return null;\n    }\n\n    const parsed = value.match(INTERVAL_PATTERN);\n    const amount = parsed ? parseFloat(parsed[1]) : null;\n    const unit = parsed?.[2]?.toLowerCase() || null;\n\n    if (!parsed || amount === null || isNaN(amount)) {\n      return null;\n    }\n\n    if (unit === 'h' || unit === 'hour' || unit === 'hours') {\n      result = amount * 3600;\n    } else if (unit === 'm' || unit === 'min' || unit === 'minute' || unit === 'minutes') {\n      result = amount * 60;\n    } else {\n      result = amount;\n    }\n  }\n\n  return result;\n}\n\n/**\n * Generates the options to show in a timepicker.\n * @param adapter Date adapter to be used to generate the options.\n * @param formats Formatting config to use when displaying the options.\n * @param min Time from which to start generating the options.\n * @param max Time at which to stop generating the options.\n * @param interval Amount of seconds between each option.\n */\nexport function generateOptions<D>(\n  adapter: DateAdapter<D>,\n  formats: MatDateFormats,\n  min: D,\n  max: D,\n  interval: number,\n): MatTimepickerOption<D>[] {\n  const options: MatTimepickerOption<D>[] = [];\n  let current = adapter.compareTime(min, max) < 1 ? min : max;\n\n  while (\n    adapter.sameDate(current, min) &&\n    adapter.compareTime(current, max) < 1 &&\n    adapter.isValid(current)\n  ) {\n    options.push({value: current, label: adapter.format(current, formats.display.timeOptionLabel)});\n    current = adapter.addSeconds(current, interval);\n  }\n\n  return options;\n}\n\n/** Checks whether a date adapter is set up correctly for use with the timepicker. */\nexport function validateAdapter(\n  adapter: DateAdapter<unknown> | null,\n  formats: MatDateFormats | null,\n) {\n  function missingAdapterError(provider: string) {\n    return Error(\n      `MatTimepicker: No provider found for ${provider}. You must add one of the following ` +\n        `to your app config: provideNativeDateAdapter, provideDateFnsAdapter, ` +\n        `provideLuxonDateAdapter, provideMomentDateAdapter, or provide a custom implementation.`,\n    );\n  }\n\n  if (!adapter) {\n    throw missingAdapterError('DateAdapter');\n  }\n\n  if (!formats) {\n    throw missingAdapterError('MAT_DATE_FORMATS');\n  }\n\n  if (\n    formats.display.timeInput === undefined ||\n    formats.display.timeOptionLabel === undefined ||\n    formats.parse.timeInput === undefined\n  ) {\n    throw new Error(\n      'MatTimepicker: Incomplete `MAT_DATE_FORMATS` has been provided. ' +\n        '`MAT_DATE_FORMATS` must provide `display.timeInput`, `display.timeOptionLabel` ' +\n        'and `parse.timeInput` formats in order to be compatible with MatTimepicker.',\n    );\n  }\n}\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.dev/license\n */\n\nimport {\n  afterNextRender,\n  AfterRenderRef,\n  booleanAttribute,\n  ChangeDetectionStrategy,\n  Component,\n  computed,\n  effect,\n  ElementRef,\n  inject,\n  InjectionToken,\n  Injector,\n  input,\n  InputSignal,\n  InputSignalWithTransform,\n  OnDestroy,\n  output,\n  OutputEmitterRef,\n  Signal,\n  signal,\n  TemplateRef,\n  untracked,\n  viewChild,\n  viewChildren,\n  ViewContainerRef,\n  ViewEncapsulation,\n} from '@angular/core';\nimport {\n  _animationsDisabled,\n  DateAdapter,\n  MAT_DATE_FORMATS,\n  MAT_OPTION_PARENT_COMPONENT,\n  MatOption,\n  MatOptionParentComponent,\n} from '../core';\nimport {Directionality} from '@angular/cdk/bidi';\nimport {\n  createFlexibleConnectedPositionStrategy,\n  createOverlayRef,\n  createRepositionScrollStrategy,\n  OverlayRef,\n  ScrollStrategy,\n} from '@angular/cdk/overlay';\nimport {TemplatePortal} from '@angular/cdk/portal';\nimport {_getEventTarget} from '@angular/cdk/platform';\nimport {ENTER, ESCAPE, hasModifierKey, TAB} from '@angular/cdk/keycodes';\nimport {_IdGenerator, ActiveDescendantKeyManager} from '@angular/cdk/a11y';\nimport {\n  generateOptions,\n  MAT_TIMEPICKER_CONFIG,\n  MatTimepickerOption,\n  parseInterval,\n  validateAdapter,\n} from './util';\nimport {Subscription} from 'rxjs';\n\n/** Event emitted when a value is selected in the timepicker. */\nexport interface MatTimepickerSelected<D> {\n  value: D;\n  source: MatTimepicker<D>;\n}\n\n/** Injection token used to configure the behavior of the timepicker dropdown while scrolling. */\nexport const MAT_TIMEPICKER_SCROLL_STRATEGY = new InjectionToken<() => ScrollStrategy>(\n  'MAT_TIMEPICKER_SCROLL_STRATEGY',\n  {\n    providedIn: 'root',\n    factory: () => {\n      const injector = inject(Injector);\n      return () => createRepositionScrollStrategy(injector);\n    },\n  },\n);\n\n/** Represents an input that is connected to a `mat-timepicker`. */\nexport interface MatTimepickerConnectedInput<D> {\n  /** Current value of the input. */\n  value: Signal<D | null>;\n\n  /** Minimum allowed time. */\n  min: Signal<D | null>;\n\n  /** Maximum allowed time. */\n  max: Signal<D | null>;\n\n  /** Whether the input is disabled. */\n  disabled: Signal<boolean>;\n\n  /** Focuses the input. */\n  focus(): void;\n\n  /** Gets the element to which to connect the timepicker overlay. */\n  getOverlayOrigin(): ElementRef<HTMLElement>;\n\n  /** Gets the ID of the input's label. */\n  getLabelId(): string | null;\n\n  /** Callback invoked when the timepicker assigns a value. */\n  timepickerValueAssigned(value: D | null): void;\n}\n\n/**\n * Renders out a listbox that can be used to select a time of day.\n * Intended to be used together with `MatTimepickerInput`.\n */\n@Component({\n  selector: 'mat-timepicker',\n  exportAs: 'matTimepicker',\n  templateUrl: 'timepicker.html',\n  styleUrl: 'timepicker.css',\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  encapsulation: ViewEncapsulation.None,\n  imports: [MatOption],\n  providers: [\n    {\n      provide: MAT_OPTION_PARENT_COMPONENT,\n      useExisting: MatTimepicker,\n    },\n  ],\n})\nexport class MatTimepicker<D> implements OnDestroy, MatOptionParentComponent {\n  private _dir = inject(Directionality, {optional: true});\n  private _viewContainerRef = inject(ViewContainerRef);\n  private _injector = inject(Injector);\n  private _defaultConfig = inject(MAT_TIMEPICKER_CONFIG, {optional: true});\n  private _dateAdapter = inject<DateAdapter<D>>(DateAdapter, {optional: true})!;\n  private _dateFormats = inject(MAT_DATE_FORMATS, {optional: true})!;\n  private _scrollStrategyFactory = inject(MAT_TIMEPICKER_SCROLL_STRATEGY);\n  protected _animationsDisabled = _animationsDisabled();\n\n  private _isOpen = signal(false);\n  private _activeDescendant = signal<string | null>(null);\n\n  private _input = signal<MatTimepickerConnectedInput<D> | null>(null);\n  private _overlayRef: OverlayRef | null = null;\n  private _portal: TemplatePortal<unknown> | null = null;\n  private _optionsCacheKey: string | null = null;\n  private _localeChanges: Subscription | undefined;\n  private _onOpenRender: AfterRenderRef | null = null;\n\n  protected _panelTemplate = viewChild.required<TemplateRef<unknown>>('panelTemplate');\n  protected _timeOptions: readonly MatTimepickerOption<D>[] = [];\n  protected _options = viewChildren(MatOption);\n\n  private _keyManager = new ActiveDescendantKeyManager(this._options, this._injector)\n    .withHomeAndEnd(true)\n    .withPageUpDown(true)\n    .withVerticalOrientation(true);\n\n  /**\n   * Interval between each option in the timepicker. The value can either be an amount of\n   * seconds (e.g. 90) or a number with a unit (e.g. 45m). Supported units are `s` for seconds,\n   * `m` for minutes or `h` for hours.\n   */\n  readonly interval: InputSignalWithTransform<number | null, number | string | null> = input(\n    parseInterval(this._defaultConfig?.interval || null),\n    {transform: parseInterval},\n  );\n\n  /**\n   * Array of pre-defined options that the user can select from, as an alternative to using the\n   * `interval` input. An error will be thrown if both `options` and `interval` are specified.\n   */\n  readonly options: InputSignal<readonly MatTimepickerOption<D>[] | null> = input<\n    readonly MatTimepickerOption<D>[] | null\n  >(null);\n\n  /** Whether the timepicker is open. */\n  readonly isOpen: Signal<boolean> = this._isOpen.asReadonly();\n\n  /** Emits when the user selects a time. */\n  readonly selected: OutputEmitterRef<MatTimepickerSelected<D>> = output();\n\n  /** Emits when the timepicker is opened. */\n  readonly opened: OutputEmitterRef<void> = output();\n\n  /** Emits when the timepicker is closed. */\n  readonly closed: OutputEmitterRef<void> = output();\n\n  /** ID of the active descendant option. */\n  readonly activeDescendant: Signal<string | null> = this._activeDescendant.asReadonly();\n\n  /** Unique ID of the timepicker's panel */\n  readonly panelId: string = inject(_IdGenerator).getId('mat-timepicker-panel-');\n\n  /** Whether ripples within the timepicker should be disabled. */\n  readonly disableRipple: InputSignalWithTransform<boolean, unknown> = input(\n    this._defaultConfig?.disableRipple ?? false,\n    {\n      transform: booleanAttribute,\n    },\n  );\n\n  /** ARIA label for the timepicker panel. */\n  readonly ariaLabel: InputSignal<string | null> = input<string | null>(null, {\n    alias: 'aria-label',\n  });\n\n  /** ID of the label element for the timepicker panel. */\n  readonly ariaLabelledby: InputSignal<string | null> = input<string | null>(null, {\n    alias: 'aria-labelledby',\n  });\n\n  /** Whether the timepicker is currently disabled. */\n  readonly disabled: Signal<boolean> = computed(() => !!this._input()?.disabled());\n\n  /** Classes to be passed to the timepicker panel. */\n  readonly panelClass = input<string | string[]>();\n\n  constructor() {\n    if (typeof ngDevMode === 'undefined' || ngDevMode) {\n      validateAdapter(this._dateAdapter, this._dateFormats);\n\n      effect(() => {\n        const options = this.options();\n        const interval = this.interval();\n\n        if (options !== null && interval !== null) {\n          throw new Error(\n            'Cannot specify both the `options` and `interval` inputs at the same time',\n          );\n        } else if (options?.length === 0) {\n          throw new Error('Value of `options` input cannot be an empty array');\n        }\n      });\n    }\n\n    // Since the panel ID is static, we can set it once without having to maintain a host binding.\n    const element = inject<ElementRef<HTMLElement>>(ElementRef);\n    element.nativeElement.setAttribute('mat-timepicker-panel-id', this.panelId);\n    this._handleLocaleChanges();\n    this._handleInputStateChanges();\n    this._keyManager.change.subscribe(() =>\n      this._activeDescendant.set(this._keyManager.activeItem?.id || null),\n    );\n  }\n\n  /** Opens the timepicker. */\n  open(): void {\n    const input = this._input();\n\n    if (!input) {\n      return;\n    }\n\n    // Focus should already be on the input, but this call is in case the timepicker is opened\n    // programmatically. We need to call this even if the timepicker is already open, because\n    // the user might be clicking the toggle.\n    input.focus();\n\n    if (this._isOpen()) {\n      return;\n    }\n\n    this._isOpen.set(true);\n    this._generateOptions();\n    const overlayRef = this._getOverlayRef();\n    overlayRef.updateSize({width: input.getOverlayOrigin().nativeElement.offsetWidth});\n    this._portal ??= new TemplatePortal(this._panelTemplate(), this._viewContainerRef);\n\n    // We need to check this in case `isOpen` was flipped, but change detection hasn't\n    // had a chance to run yet. See https://github.com/angular/components/issues/30637\n    if (!overlayRef.hasAttached()) {\n      overlayRef.attach(this._portal);\n    }\n\n    this._onOpenRender?.destroy();\n    this._onOpenRender = afterNextRender(\n      () => {\n        const options = this._options();\n        this._syncSelectedState(input.value(), options, options[0]);\n        this._onOpenRender = null;\n      },\n      {injector: this._injector},\n    );\n\n    this.opened.emit();\n  }\n\n  /** Closes the timepicker. */\n  close(): void {\n    if (this._isOpen()) {\n      this._isOpen.set(false);\n      this.closed.emit();\n\n      if (this._animationsDisabled) {\n        this._overlayRef?.detach();\n      }\n    }\n  }\n\n  /** Registers an input with the timepicker. */\n  registerInput(input: MatTimepickerConnectedInput<D>): void {\n    const currentInput = this._input();\n\n    if (currentInput && input !== currentInput && (typeof ngDevMode === 'undefined' || ngDevMode)) {\n      throw new Error('MatTimepicker can only be registered with one input at a time');\n    }\n\n    this._input.set(input);\n  }\n\n  ngOnDestroy(): void {\n    this._keyManager.destroy();\n    this._localeChanges?.unsubscribe();\n    this._onOpenRender?.destroy();\n    this._overlayRef?.dispose();\n  }\n\n  _getOverlayHost() {\n    return this._overlayRef?.hostElement;\n  }\n\n  /** Selects a specific time value. */\n  protected _selectValue(option: MatOption<D>) {\n    this.close();\n    this._keyManager.setActiveItem(option);\n    this._options().forEach(current => {\n      // This is primarily here so we don't show two selected options while animating away.\n      if (current !== option) {\n        current.deselect(false);\n      }\n    });\n    // Notify the input first so it can sync up the form control before emitting to `selected`.\n    this._input()?.timepickerValueAssigned(option.value);\n    this.selected.emit({value: option.value, source: this});\n    this._input()?.focus();\n  }\n\n  /** Gets the value of the `aria-labelledby` attribute. */\n  protected _getAriaLabelledby(): string | null {\n    if (this.ariaLabel()) {\n      return null;\n    }\n    return this.ariaLabelledby() || this._input()?.getLabelId() || null;\n  }\n\n  /** Handles animation events coming from the panel. */\n  protected _handleAnimationEnd(event: AnimationEvent) {\n    if (event.animationName === '_mat-timepicker-exit') {\n      this._overlayRef?.detach();\n    }\n  }\n\n  /** Creates an overlay reference for the timepicker panel. */\n  private _getOverlayRef(): OverlayRef {\n    if (this._overlayRef) {\n      return this._overlayRef;\n    }\n\n    const positionStrategy = createFlexibleConnectedPositionStrategy(\n      this._injector,\n      this._input()!.getOverlayOrigin(),\n    )\n      .withFlexibleDimensions(false)\n      .withPush(false)\n      .withTransformOriginOn('.mat-timepicker-panel')\n      .withPopoverLocation('inline')\n      .withPositions([\n        {\n          originX: 'start',\n          originY: 'bottom',\n          overlayX: 'start',\n          overlayY: 'top',\n        },\n        {\n          originX: 'start',\n          originY: 'top',\n          overlayX: 'start',\n          overlayY: 'bottom',\n          panelClass: 'mat-timepicker-above',\n        },\n      ]);\n\n    this._overlayRef = createOverlayRef(this._injector, {\n      positionStrategy,\n      scrollStrategy: this._scrollStrategyFactory(),\n      direction: this._dir || 'ltr',\n      hasBackdrop: false,\n      disableAnimations: this._animationsDisabled,\n      panelClass: this.panelClass(),\n    });\n\n    this._overlayRef.detachments().subscribe(() => this.close());\n    this._overlayRef.keydownEvents().subscribe(event => this._handleKeydown(event));\n    this._overlayRef.outsidePointerEvents().subscribe(event => {\n      const target = _getEventTarget(event) as HTMLElement;\n      const origin = this._input()?.getOverlayOrigin().nativeElement;\n\n      if (target && origin && target !== origin && !origin.contains(target)) {\n        this.close();\n      }\n    });\n\n    return this._overlayRef;\n  }\n\n  /** Generates the list of options from which the user can select.. */\n  private _generateOptions(): void {\n    // Default the interval to 30 minutes.\n    const interval = this.interval() ?? 30 * 60;\n    const options = this.options();\n\n    if (options !== null) {\n      this._timeOptions = options;\n    } else {\n      const input = this._input();\n      const adapter = this._dateAdapter;\n      const timeFormat = this._dateFormats.display.timeInput;\n      const min = input?.min() || adapter.setTime(adapter.today(), 0, 0, 0);\n      const max = input?.max() || adapter.setTime(adapter.today(), 23, 59, 0);\n      const cacheKey =\n        interval + '/' + adapter.format(min, timeFormat) + '/' + adapter.format(max, timeFormat);\n\n      // Don't re-generate the options if the inputs haven't changed.\n      if (cacheKey !== this._optionsCacheKey) {\n        this._optionsCacheKey = cacheKey;\n        this._timeOptions = generateOptions(adapter, this._dateFormats, min, max, interval);\n      }\n    }\n  }\n\n  /**\n   * Synchronizes the internal state of the component based on a specific selected date.\n   * @param value Currently selected date.\n   * @param options Options rendered out in the timepicker.\n   * @param fallback Option to set as active if no option is selected.\n   */\n  private _syncSelectedState(\n    value: D | null,\n    options: readonly MatOption[],\n    fallback: MatOption | null,\n  ): void {\n    let hasSelected = false;\n\n    for (const option of options) {\n      if (value && this._dateAdapter.sameTime(option.value, value)) {\n        option.select(false);\n        scrollOptionIntoView(option, 'center');\n        untracked(() => this._keyManager.setActiveItem(option));\n        hasSelected = true;\n      } else {\n        option.deselect(false);\n      }\n    }\n\n    // If no option was selected, we need to reset the key manager since\n    // it might be holding onto an option that no longer exists.\n    if (!hasSelected) {\n      if (fallback) {\n        untracked(() => this._keyManager.setActiveItem(fallback));\n        scrollOptionIntoView(fallback, 'center');\n      } else {\n        untracked(() => this._keyManager.setActiveItem(-1));\n      }\n    }\n  }\n\n  /** Handles keyboard events while the overlay is open. */\n  private _handleKeydown(event: KeyboardEvent): void {\n    const keyCode = event.keyCode;\n\n    if (keyCode === TAB) {\n      this.close();\n    } else if (keyCode === ESCAPE && !hasModifierKey(event)) {\n      event.preventDefault();\n      this.close();\n    } else if (keyCode === ENTER) {\n      event.preventDefault();\n\n      if (this._keyManager.activeItem) {\n        this._selectValue(this._keyManager.activeItem);\n      } else {\n        this.close();\n      }\n    } else {\n      const previousActive = this._keyManager.activeItem;\n      this._keyManager.onKeydown(event);\n      const currentActive = this._keyManager.activeItem;\n\n      if (currentActive && currentActive !== previousActive) {\n        scrollOptionIntoView(currentActive, 'nearest');\n      }\n    }\n  }\n\n  /** Sets up the logic that updates the timepicker when the locale changes. */\n  private _handleLocaleChanges(): void {\n    // Re-generate the options list if the locale changes.\n    this._localeChanges = this._dateAdapter.localeChanges.subscribe(() => {\n      this._optionsCacheKey = null;\n\n      if (this.isOpen()) {\n        this._generateOptions();\n      }\n    });\n  }\n\n  /**\n   * Sets up the logic that updates the timepicker when the state of the connected input changes.\n   */\n  private _handleInputStateChanges(): void {\n    effect(() => {\n      const input = this._input();\n      const options = this._options();\n\n      if (this._isOpen() && input) {\n        this._syncSelectedState(input.value(), options, null);\n      }\n    });\n  }\n}\n\n/**\n * Scrolls an option into view.\n * @param option Option to be scrolled into view.\n * @param position Position to which to align the option relative to the scrollable container.\n */\nfunction scrollOptionIntoView(option: MatOption, position: ScrollLogicalPosition) {\n  option._getHostElement().scrollIntoView({block: position, inline: position});\n}\n","<ng-template #panelTemplate>\n  <div\n    role=\"listbox\"\n    class=\"mat-timepicker-panel\"\n    [class.mat-timepicker-panel-animations-enabled]=\"!_animationsDisabled\"\n    [class.mat-timepicker-panel-exit]=\"!isOpen()\"\n    [attr.aria-label]=\"ariaLabel() || null\"\n    [attr.aria-labelledby]=\"_getAriaLabelledby()\"\n    [id]=\"panelId\"\n    (animationend)=\"_handleAnimationEnd($event)\">\n    @for (option of _timeOptions; track option.value) {\n      <mat-option\n        [value]=\"option.value\"\n        (onSelectionChange)=\"_selectValue($event.source)\">{{option.label}}</mat-option>\n    }\n  </div>\n</ng-template>\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.dev/license\n */\n\nimport {\n  booleanAttribute,\n  computed,\n  Directive,\n  effect,\n  ElementRef,\n  inject,\n  input,\n  InputSignal,\n  InputSignalWithTransform,\n  model,\n  ModelSignal,\n  OnDestroy,\n  OutputRefSubscription,\n  Renderer2,\n  Signal,\n  signal,\n} from '@angular/core';\nimport {DateAdapter, MAT_DATE_FORMATS} from '../core';\nimport {\n  AbstractControl,\n  ControlValueAccessor,\n  NG_VALIDATORS,\n  NG_VALUE_ACCESSOR,\n  ValidationErrors,\n  Validator,\n  ValidatorFn,\n  Validators,\n} from '@angular/forms';\nimport {MAT_FORM_FIELD} from '../form-field';\nimport {MatTimepicker, MatTimepickerConnectedInput} from './timepicker';\nimport {MAT_INPUT_VALUE_ACCESSOR} from '../input';\nimport {Subscription} from 'rxjs';\nimport {DOWN_ARROW, ESCAPE, hasModifierKey, UP_ARROW} from '@angular/cdk/keycodes';\nimport {validateAdapter} from './util';\nimport {_getEventTarget, _getFocusedElementPierceShadowDom} from '@angular/cdk/platform';\n\n/**\n * Input that can be used to enter time and connect to a `mat-timepicker`.\n */\n@Directive({\n  selector: 'input[matTimepicker]',\n  exportAs: 'matTimepickerInput',\n  host: {\n    'class': 'mat-timepicker-input',\n    'role': 'combobox',\n    'type': 'text',\n    'aria-haspopup': 'listbox',\n    '[attr.aria-activedescendant]': '_ariaActiveDescendant()',\n    '[attr.aria-expanded]': '_ariaExpanded()',\n    '[attr.aria-controls]': '_ariaControls()',\n    '[attr.mat-timepicker-id]': 'timepicker()?.panelId',\n    '[disabled]': 'disabled()',\n    '(blur)': '_handleBlur()',\n    '(input)': '_handleInput($event)',\n    '(keydown)': '_handleKeydown($event)',\n  },\n  providers: [\n    {\n      provide: NG_VALUE_ACCESSOR,\n      useExisting: MatTimepickerInput,\n      multi: true,\n    },\n    {\n      provide: NG_VALIDATORS,\n      useExisting: MatTimepickerInput,\n      multi: true,\n    },\n    {\n      provide: MAT_INPUT_VALUE_ACCESSOR,\n      useExisting: MatTimepickerInput,\n    },\n  ],\n})\nexport class MatTimepickerInput<D>\n  implements MatTimepickerConnectedInput<D>, ControlValueAccessor, Validator, OnDestroy\n{\n  private _elementRef = inject<ElementRef<HTMLInputElement>>(ElementRef);\n  private _dateAdapter = inject<DateAdapter<D>>(DateAdapter, {optional: true})!;\n  private _dateFormats = inject(MAT_DATE_FORMATS, {optional: true})!;\n  private _formField = inject(MAT_FORM_FIELD, {optional: true});\n\n  private _onChange: ((value: unknown) => void) | undefined;\n  private _onTouched: (() => void) | undefined;\n  private _validatorOnChange: (() => void) | undefined;\n  private _cleanupClick: () => void;\n  private _accessorDisabled = signal(false);\n  private _localeSubscription: Subscription;\n  private _timepickerSubscription: OutputRefSubscription | undefined;\n  private _validator: ValidatorFn;\n  private _lastValueValid = true;\n  private _minValid = true;\n  private _maxValid = true;\n  private _lastValidDate: D | null = null;\n\n  /** Value of the `aria-activedescendant` attribute. */\n  protected readonly _ariaActiveDescendant = computed(() => {\n    const timepicker = this.timepicker();\n    const isOpen = timepicker.isOpen();\n    const activeDescendant = timepicker.activeDescendant();\n    return isOpen && activeDescendant ? activeDescendant : null;\n  });\n\n  /** Value of the `aria-expanded` attribute. */\n  protected readonly _ariaExpanded = computed(() => this.timepicker().isOpen() + '');\n\n  /** Value of the `aria-controls` attribute. */\n  protected readonly _ariaControls = computed(() => {\n    const timepicker = this.timepicker();\n    return timepicker.isOpen() ? timepicker.panelId : null;\n  });\n\n  /** Current value of the input. */\n  readonly value: ModelSignal<D | null> = model<D | null>(null);\n\n  /** Timepicker that the input is associated with. */\n  readonly timepicker: InputSignal<MatTimepicker<D>> = input.required<MatTimepicker<D>>({\n    alias: 'matTimepicker',\n  });\n\n  /**\n   * Minimum time that can be selected or typed in. Can be either\n   * a date object (only time will be used) or a valid time string.\n   */\n  readonly min: InputSignalWithTransform<D | null, unknown> = input(null, {\n    alias: 'matTimepickerMin',\n    transform: (value: unknown) => this._transformDateInput<D>(value),\n  });\n\n  /**\n   * Maximum time that can be selected or typed in. Can be either\n   * a date object (only time will be used) or a valid time string.\n   */\n  readonly max: InputSignalWithTransform<D | null, unknown> = input(null, {\n    alias: 'matTimepickerMax',\n    transform: (value: unknown) => this._transformDateInput<D>(value),\n  });\n\n  /**\n   * Whether to open the timepicker overlay when clicking on the input. Enabled by default.\n   * Note that when disabling this option, you'll have to provide your own logic for opening\n   * the overlay.\n   */\n  readonly openOnClick: InputSignalWithTransform<boolean, unknown> = input(true, {\n    alias: 'matTimepickerOpenOnClick',\n    transform: booleanAttribute,\n  });\n\n  /** Whether the input is disabled. */\n  readonly disabled: Signal<boolean> = computed(\n    () => this.disabledInput() || this._accessorDisabled(),\n  );\n\n  /**\n   * Whether the input should be disabled through the template.\n   * @docs-private\n   */\n  readonly disabledInput: InputSignalWithTransform<boolean, unknown> = input(false, {\n    transform: booleanAttribute,\n    alias: 'disabled',\n  });\n\n  constructor() {\n    if (typeof ngDevMode === 'undefined' || ngDevMode) {\n      validateAdapter(this._dateAdapter, this._dateFormats);\n    }\n\n    const renderer = inject(Renderer2);\n    this._validator = this._getValidator();\n    this._updateFormsState();\n    this._registerTimepicker();\n    this._localeSubscription = this._dateAdapter.localeChanges.subscribe(() => {\n      if (!this._hasFocus()) {\n        this._formatValue(this.value());\n      }\n    });\n\n    // Bind the click listener manually to the overlay origin, because we want the entire\n    // form field to be clickable, if the timepicker is used in `mat-form-field`.\n    this._cleanupClick = renderer.listen(\n      this.getOverlayOrigin().nativeElement,\n      'click',\n      this._handleClick,\n    );\n  }\n\n  /**\n   * Implemented as a part of `ControlValueAccessor`.\n   * @docs-private\n   */\n  writeValue(value: unknown): void {\n    // Note that we need to deserialize here, rather than depend on the value change effect,\n    // because `getValidDateOrNull` will clobber the value if it's parseable, but not created by\n    // the current adapter (see #30140).\n    const deserialized = this._dateAdapter.deserialize(value);\n    this.value.set(this._dateAdapter.getValidDateOrNull(deserialized));\n  }\n\n  /**\n   * Implemented as a part of `ControlValueAccessor`.\n   * @docs-private\n   */\n  registerOnChange(fn: (value: unknown) => void): void {\n    this._onChange = fn;\n  }\n\n  /**\n   * Implemented as a part of `ControlValueAccessor`.\n   * @docs-private\n   */\n  registerOnTouched(fn: () => void): void {\n    this._onTouched = fn;\n  }\n\n  /**\n   * Implemented as a part of `ControlValueAccessor`.\n   * @docs-private\n   */\n  setDisabledState(isDisabled: boolean): void {\n    this._accessorDisabled.set(isDisabled);\n  }\n\n  /**\n   * Implemented as a part of `Validator`.\n   * @docs-private\n   */\n  validate(control: AbstractControl): ValidationErrors | null {\n    return this._validator(control);\n  }\n\n  /**\n   * Implemented as a part of `Validator`.\n   * @docs-private\n   */\n  registerOnValidatorChange(fn: () => void): void {\n    this._validatorOnChange = fn;\n  }\n\n  /** Gets the element to which the timepicker popup should be attached. */\n  getOverlayOrigin(): ElementRef<HTMLElement> {\n    return this._formField?.getConnectedOverlayOrigin() || this._elementRef;\n  }\n\n  /** Focuses the input. */\n  focus(): void {\n    this._elementRef.nativeElement.focus();\n  }\n\n  ngOnDestroy(): void {\n    this._cleanupClick();\n    this._timepickerSubscription?.unsubscribe();\n    this._localeSubscription.unsubscribe();\n  }\n\n  /** Gets the ID of the input's label. */\n  getLabelId(): string | null {\n    return this._formField?.getLabelId() || null;\n  }\n\n  /** Handles clicks on the input or the containing form field. */\n  private _handleClick = (event: MouseEvent): void => {\n    if (this.disabled() || !this.openOnClick()) {\n      return;\n    }\n\n    const target = _getEventTarget(event) as Node | null;\n    const overlayHost = this.timepicker()._getOverlayHost();\n\n    if (!target || !overlayHost || !overlayHost.contains(target)) {\n      this.timepicker().open();\n    }\n  };\n\n  /** Handles the `input` event. */\n  protected _handleInput(event: Event) {\n    const value = (event.target as HTMLInputElement).value;\n    const currentValue = this.value();\n    const date = this._dateAdapter.parseTime(value, this._dateFormats.parse.timeInput);\n    const hasChanged = !this._dateAdapter.sameTime(date, currentValue);\n\n    if (!date || hasChanged || !!(value && !currentValue)) {\n      // We need to fire the CVA change event for all nulls, otherwise the validators won't run.\n      this._assignUserSelection(date, true);\n    } else {\n      // Call the validator even if the value hasn't changed since\n      // some fields change depending on what the user has entered.\n      this._validatorOnChange?.();\n    }\n  }\n\n  /** Handles the `blur` event. */\n  protected _handleBlur() {\n    const value = this.value();\n\n    // Only reformat on blur so the value doesn't change while the user is interacting.\n    if (value && this._isValid(value)) {\n      this._formatValue(value);\n    }\n\n    if (!this.timepicker().isOpen()) {\n      this._onTouched?.();\n    }\n  }\n\n  /** Handles the `keydown` event. */\n  protected _handleKeydown(event: KeyboardEvent) {\n    // All keyboard events while open are handled through the timepicker.\n    if (this.timepicker().isOpen() || this.disabled()) {\n      return;\n    }\n\n    if (event.keyCode === ESCAPE && !hasModifierKey(event) && this.value() !== null) {\n      event.preventDefault();\n      this.value.set(null);\n      this._formatValue(null);\n    } else if (event.keyCode === DOWN_ARROW || event.keyCode === UP_ARROW) {\n      event.preventDefault();\n      this.timepicker().open();\n    }\n  }\n\n  /** Called by the timepicker to sync up the user-selected value. */\n  timepickerValueAssigned(value: D | null) {\n    if (!this._dateAdapter.sameTime(value, this.value())) {\n      this._assignUserSelection(value, true);\n      this._formatValue(value);\n    }\n  }\n\n  /** Sets up the code that keeps the input state in sync with the forms module. */\n  private _updateFormsState(): void {\n    effect(() => {\n      const {\n        _dateAdapter: adapter,\n        _lastValueValid: prevValueValid,\n        _minValid: prevMinValid,\n        _maxValid: prevMaxValid,\n      } = this;\n      const value = adapter.deserialize(this.value());\n      const min = this.min();\n      const max = this.max();\n      const valueValid = (this._lastValueValid = this._isValid(value));\n      this._minValid = !min || !value || !valueValid || adapter.compareTime(min, value) <= 0;\n      this._maxValid = !max || !value || !valueValid || adapter.compareTime(max, value) >= 0;\n      const stateChanged =\n        prevValueValid !== valueValid ||\n        prevMinValid !== this._minValid ||\n        prevMaxValid !== this._maxValid;\n\n      // Reformat the value if it changes while the user isn't interacting.\n      if (!this._hasFocus()) {\n        this._formatValue(value);\n      }\n\n      if (value && valueValid) {\n        this._lastValidDate = value;\n      }\n\n      // Trigger the validator if the state changed.\n      if (stateChanged) {\n        this._validatorOnChange?.();\n      }\n    });\n  }\n\n  /** Sets up the logic that registers the input with the timepicker. */\n  private _registerTimepicker(): void {\n    effect(() => {\n      const timepicker = this.timepicker();\n      timepicker.registerInput(this);\n      timepicker.closed.subscribe(() => this._onTouched?.());\n    });\n  }\n\n  /**\n   * Assigns a value set by the user to the input's model.\n   * @param selection Time selected by the user that should be assigned.\n   * @param propagateToAccessor Whether the value should be propagated to the ControlValueAccessor.\n   */\n  private _assignUserSelection(selection: D | null, propagateToAccessor: boolean) {\n    let toAssign: D | null;\n\n    if (selection == null || !this._isValid(selection)) {\n      toAssign = selection;\n    } else {\n      // If a datepicker and timepicker are writing to the same object and the user enters an\n      // invalid time into the timepicker, we may end up clearing their selection from the\n      // datepicker. If the user enters a valid time afterwards, the datepicker's selection will\n      // have been lost. This logic restores the previously-valid date and sets its time to\n      // the newly-selected time.\n      const adapter = this._dateAdapter;\n      const target = adapter.getValidDateOrNull(this._lastValidDate || this.value());\n      const hours = adapter.getHours(selection);\n      const minutes = adapter.getMinutes(selection);\n      const seconds = adapter.getSeconds(selection);\n      toAssign = target ? adapter.setTime(target, hours, minutes, seconds) : selection;\n    }\n\n    // Propagate to the form control before emitting to `valueChange`.\n    if (propagateToAccessor) {\n      this._onChange?.(toAssign);\n    }\n\n    this.value.set(toAssign);\n  }\n\n  /** Formats the current value and assigns it to the input. */\n  private _formatValue(value: D | null): void {\n    value = this._dateAdapter.getValidDateOrNull(value);\n    this._elementRef.nativeElement.value =\n      value == null ? '' : this._dateAdapter.format(value, this._dateFormats.display.timeInput);\n  }\n\n  /** Checks whether a value is valid. */\n  private _isValid(value: D | null): boolean {\n    return !value || this._dateAdapter.isValid(value);\n  }\n\n  /** Transforms an arbitrary value into a value that can be assigned to a date-based input. */\n  private _transformDateInput<D>(value: unknown): D | null {\n    const date =\n      typeof value === 'string'\n        ? this._dateAdapter.parseTime(value, this._dateFormats.parse.timeInput)\n        : this._dateAdapter.deserialize(value);\n    return date && this._dateAdapter.isValid(date) ? (date as D) : null;\n  }\n\n  /** Whether the input is currently focused. */\n  private _hasFocus(): boolean {\n    return _getFocusedElementPierceShadowDom() === this._elementRef.nativeElement;\n  }\n\n  /** Gets a function that can be used to validate the input. */\n  private _getValidator(): ValidatorFn {\n    return Validators.compose([\n      () =>\n        this._lastValueValid\n          ? null\n          : {'matTimepickerParse': {'text': this._elementRef.nativeElement.value}},\n      control =>\n        this._minValid\n          ? null\n          : {\n              'matTimepickerMin': {\n                'min': this.min(),\n                'actual': this._dateAdapter.getValidDateOrNull(\n                  this._dateAdapter.deserialize(control.value),\n                ),\n              },\n            },\n      control =>\n        this._maxValid\n          ? null\n          : {\n              'matTimepickerMax': {\n                'max': this.max(),\n                'actual': this._dateAdapter.getValidDateOrNull(\n                  this._dateAdapter.deserialize(control.value),\n                ),\n              },\n            },\n    ])!;\n  }\n}\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.dev/license\n */\n\nimport {\n  booleanAttribute,\n  ChangeDetectionStrategy,\n  Component,\n  computed,\n  HostAttributeToken,\n  inject,\n  input,\n  InputSignal,\n  InputSignalWithTransform,\n  ViewEncapsulation,\n} from '@angular/core';\nimport {MatIconButton} from '../button';\nimport {MAT_TIMEPICKER_CONFIG} from './util';\nimport type {MatTimepicker} from './timepicker';\n\n/** Button that can be used to open a `mat-timepicker`. */\n@Component({\n  selector: 'mat-timepicker-toggle',\n  templateUrl: 'timepicker-toggle.html',\n  host: {\n    'class': 'mat-timepicker-toggle',\n    '[attr.tabindex]': 'null',\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: 'matTimepickerToggle',\n  encapsulation: ViewEncapsulation.None,\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  imports: [MatIconButton],\n})\nexport class MatTimepickerToggle<D> {\n  private _defaultConfig = inject(MAT_TIMEPICKER_CONFIG, {optional: true});\n  private _defaultTabIndex = (() => {\n    const value = inject(new HostAttributeToken('tabindex'), {optional: true});\n    const parsed = Number(value);\n    return isNaN(parsed) ? null : parsed;\n  })();\n\n  protected _isDisabled = computed(() => {\n    const timepicker = this.timepicker();\n    return this.disabled() || timepicker.disabled();\n  });\n\n  /** Timepicker instance that the button will toggle. */\n  readonly timepicker: InputSignal<MatTimepicker<D>> = input.required<MatTimepicker<D>>({\n    alias: 'for',\n  });\n\n  /** Screen-reader label for the button. */\n  readonly ariaLabel = input<string | undefined>(undefined, {\n    alias: 'aria-label',\n  });\n\n  /** Screen-reader labelled by id for the button. */\n  readonly ariaLabelledby = input<string | undefined>(undefined, {\n    alias: 'aria-labelledby',\n  });\n\n  /** Default aria-label for the toggle if none is provided. */\n  private readonly _defaultAriaLabel = 'Open timepicker options';\n\n  /** Whether the toggle button is disabled. */\n  readonly disabled: InputSignalWithTransform<boolean, unknown> = input(false, {\n    transform: booleanAttribute,\n    alias: 'disabled',\n  });\n\n  /** Tabindex for the toggle. */\n  readonly tabIndex: InputSignal<number | null> = input(this._defaultTabIndex);\n\n  /** Whether ripples on the toggle should be disabled. */\n  readonly disableRipple: InputSignalWithTransform<boolean, unknown> = input(\n    this._defaultConfig?.disableRipple ?? false,\n    {transform: booleanAttribute},\n  );\n\n  /** Opens the connected timepicker. */\n  protected _open(event: Event): void {\n    if (this.timepicker() && !this._isDisabled()) {\n      this.timepicker().open();\n      event.stopPropagation();\n    }\n  }\n\n  /**\n   * Checks for ariaLabelledby and if empty uses custom\n   * aria-label or defaultAriaLabel if neither is provided.\n   */\n  getAriaLabel(): string | null {\n    return this.ariaLabelledby() ? null : this.ariaLabel() || this._defaultAriaLabel;\n  }\n}\n","<button\n  matIconButton\n  type=\"button\"\n  aria-haspopup=\"listbox\"\n  [attr.aria-label]=\"getAriaLabel()\"\n  [attr.aria-labelledby]=\"ariaLabelledby()\"\n  [attr.aria-expanded]=\"timepicker().isOpen()\"\n  [tabIndex]=\"_isDisabled() ? -1 : tabIndex()\"\n  [disabled]=\"_isDisabled()\"\n  [disableRipple]=\"disableRipple()\">\n\n  <ng-content select=\"[matTimepickerToggleIcon]\">\n    <svg\n      class=\"mat-timepicker-toggle-default-icon\"\n      height=\"24px\"\n      width=\"24px\"\n      viewBox=\"0 -960 960 960\"\n      fill=\"currentColor\"\n      focusable=\"false\"\n      aria-hidden=\"true\">\n      <path d=\"m612-292 56-56-148-148v-184h-80v216l172 172ZM480-80q-83 0-156-31.5T197-197q-54-54-85.5-127T80-480q0-83 31.5-156T197-763q54-54 127-85.5T480-880q83 0 156 31.5T763-763q54 54 85.5 127T880-480q0 83-31.5 156T763-197q-54 54-127 85.5T480-80Zm0-400Zm0 320q133 0 226.5-93.5T800-480q0-133-93.5-226.5T480-800q-133 0-226.5 93.5T160-480q0 133 93.5 226.5T480-160Z\"/>\n    </svg>\n  </ng-content>\n</button>\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.dev/license\n */\n\nimport {NgModule} from '@angular/core';\nimport {CdkScrollableModule} from '@angular/cdk/scrolling';\nimport {MatTimepicker} from './timepicker';\nimport {MatTimepickerInput} from './timepicker-input';\nimport {MatTimepickerToggle} from './timepicker-toggle';\n\n@NgModule({\n  imports: [MatTimepicker, MatTimepickerInput, MatTimepickerToggle],\n  exports: [CdkScrollableModule, MatTimepicker, MatTimepickerInput, MatTimepickerToggle],\n})\nexport class MatTimepickerModule {}\n"],"names":["INTERVAL_PATTERN","MAT_TIMEPICKER_CONFIG","InjectionToken","parseInterval","value","result","trim","length","parsed","match","amount","parseFloat","unit","toLowerCase","isNaN","generateOptions","adapter","formats","min","max","interval","options","current","compareTime","sameDate","isValid","push","label","format","display","timeOptionLabel","addSeconds","validateAdapter","missingAdapterError","provider","Error","timeInput","undefined","parse","MAT_TIMEPICKER_SCROLL_STRATEGY","providedIn","factory","injector","inject","Injector","createRepositionScrollStrategy","MatTimepicker","_dir","Directionality","optional","_viewContainerRef","ViewContainerRef","_injector","_defaultConfig","_dateAdapter","DateAdapter","_dateFormats","MAT_DATE_FORMATS","_scrollStrategyFactory","_animationsDisabled","_isOpen","signal","_activeDescendant","_input","_overlayRef","_portal","_optionsCacheKey","_localeChanges","_onOpenRender","_panelTemplate","viewChild","required","_timeOptions","_options","viewChildren","MatOption","_keyManager","ActiveDescendantKeyManager","withHomeAndEnd","withPageUpDown","withVerticalOrientation","input","ngDevMode","debugName","transform","isOpen","asReadonly","selected","output","opened","closed","activeDescendant","panelId","_IdGenerator","getId","disableRipple","booleanAttribute","ariaLabel","alias","ariaLabelledby","disabled","computed","panelClass","constructor","effect","element","ElementRef","nativeElement","setAttribute","_handleLocaleChanges","_handleInputStateChanges","change","subscribe","set","activeItem","id","open","focus","_generateOptions","overlayRef","_getOverlayRef","updateSize","width","getOverlayOrigin","offsetWidth","TemplatePortal","hasAttached","attach","destroy","afterNextRender","_syncSelectedState","emit","close","detach","registerInput","currentInput","ngOnDestroy","unsubscribe","dispose","_getOverlayHost","hostElement","_selectValue","option","setActiveItem","forEach","deselect","timepickerValueAssigned","source","_getAriaLabelledby","getLabelId","_handleAnimationEnd","event","animationName","positionStrategy","createFlexibleConnectedPositionStrategy","withFlexibleDimensions","withPush","withTransformOriginOn","withPopoverLocation","withPositions","originX","originY","overlayX","overlayY","createOverlayRef","scrollStrategy","direction","hasBackdrop","disableAnimations","detachments","keydownEvents","_handleKeydown","outsidePointerEvents","target","_getEventTarget","origin","contains","timeFormat","setTime","today","cacheKey","fallback","hasSelected","sameTime","select","scrollOptionIntoView","untracked","keyCode","TAB","ESCAPE","hasModifierKey","preventDefault","ENTER","previousActive","onKeydown","currentActive","localeChanges","deps","i0","ɵɵFactoryTarget","Component","ɵcmp","ɵɵngDeclareComponent","minVersion","version","type","isStandalone","selector","inputs","classPropertyName","publicName","isSignal","isRequired","transformFunction","outputs","providers","provide","MAT_OPTION_PARENT_COMPONENT","useExisting","viewQueries","propertyName","first","predicate","descendants","exportAs","ngImport","template","styles","dependencies","kind","changeDetection","ChangeDetectionStrategy","OnPush","encapsulation","ViewEncapsulation","None","decorators","args","imports","ctorParameters","propDecorators","ViewChild","Input","Output","position","_getHostElement","scrollIntoView","block","inline","MatTimepickerInput","_elementRef","_formField","MAT_FORM_FIELD","_onChange","_onTouched","_validatorOnChange","_cleanupClick","_accessorDisabled","_localeSubscription","_timepickerSubscription","_validator","_lastValueValid","_minValid","_maxValid","_lastValidDate","_ariaActiveDescendant","timepicker","_ariaExpanded","_ariaControls","model","_transformDateInput","openOnClick","disabledInput","renderer","Renderer2","_getValidator","_updateFormsState","_registerTimepicker","_hasFocus","_formatValue","listen","_handleClick","writeValue","deserialized","deserialize","getValidDateOrNull","registerOnChange","fn","registerOnTouched","setDisabledState","isDisabled","validate","control","registerOnValidatorChange","getConnectedOverlayOrigin","overlayHost","_handleInput","currentValue","date","parseTime","hasChanged","_assignUserSelection","_handleBlur","_isValid","DOWN_ARROW","UP_ARROW","prevValueValid","prevMinValid","prevMaxValid","valueValid","stateChanged","selection","propagateToAccessor","toAssign","hours","getHours","minutes","getMinutes","seconds","getSeconds","_getFocusedElementPierceShadowDom","Validators","compose","Directive","ɵdir","ɵɵngDeclareDirective","host","attributes","listeners","properties","classAttribute","NG_VALUE_ACCESSOR","multi","NG_VALIDATORS","MAT_INPUT_VALUE_ACCESSOR","MatTimepickerToggle","_defaultTabIndex","HostAttributeToken","Number","_isDisabled","_defaultAriaLabel","tabIndex","_open","stopPropagation","getAriaLabel","MatIconButton","MatTimepickerModule","NgModule","ɵmod","ɵɵngDeclareNgModule","exports","CdkScrollableModule","ɵinj","ɵɵngDeclareInjector"],"mappings":"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"}