{"version":3,"file":"popover-edit.mjs","sources":["../../../../../darwin_arm64-fastbuild-ST-fdfa778d11ba/bin/src/cdk-experimental/popover-edit/constants.ts","../../../../../darwin_arm64-fastbuild-ST-fdfa778d11ba/bin/src/cdk-experimental/popover-edit/edit-event-dispatcher.ts","../../../../../darwin_arm64-fastbuild-ST-fdfa778d11ba/bin/src/cdk-experimental/popover-edit/edit-ref.ts","../../../../../darwin_arm64-fastbuild-ST-fdfa778d11ba/bin/src/cdk-experimental/popover-edit/focus-dispatcher.ts","../../../../../darwin_arm64-fastbuild-ST-fdfa778d11ba/bin/src/cdk-experimental/popover-edit/form-value-container.ts","../../../../../darwin_arm64-fastbuild-ST-fdfa778d11ba/bin/src/cdk-experimental/popover-edit/lens-directives.ts","../../../../../darwin_arm64-fastbuild-ST-fdfa778d11ba/bin/src/cdk-experimental/popover-edit/edit-services.ts","../../../../../darwin_arm64-fastbuild-ST-fdfa778d11ba/bin/src/cdk-experimental/popover-edit/focus-escape-notifier.ts","../../../../../darwin_arm64-fastbuild-ST-fdfa778d11ba/bin/src/cdk-experimental/popover-edit/table-directives.ts","../../../../../darwin_arm64-fastbuild-ST-fdfa778d11ba/bin/src/cdk-experimental/popover-edit/popover-edit-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\n/** Selector for finding table cells. */\nexport const CELL_SELECTOR = '.cdk-cell, .mat-cell, td';\n\n/** Selector for finding editable table cells. */\nexport const EDITABLE_CELL_SELECTOR = '.cdk-popover-edit-cell, .mat-popover-edit-cell';\n\n/** Selector for finding table rows. */\nexport const ROW_SELECTOR = '.cdk-row, .mat-row, tr';\n\n/** Selector for finding the table element. */\nexport const TABLE_SELECTOR = 'table, cdk-table, mat-table';\n\n/** CSS class added to the edit lens pane. */\nexport const EDIT_PANE_CLASS = 'cdk-edit-pane';\n\n/** Selector for finding the edit lens pane. */\nexport const EDIT_PANE_SELECTOR = `.${EDIT_PANE_CLASS}, .mat-edit-pane`;\n\n/** Selector for table rows that should be skipped when moving focus. */\nexport const SKIP_ROW_FOCUS_SELECTOR = '.cdk-popover-edit-skip-focus, .mat-popover-edit-skip-focus';\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 {Service, NgZone, inject} from '@angular/core';\nimport {combineLatest, MonoTypeOperatorFunction, Observable, pipe, Subject} from 'rxjs';\nimport {\n  audit,\n  auditTime,\n  debounceTime,\n  distinctUntilChanged,\n  filter,\n  map,\n  skip,\n  startWith,\n  shareReplay,\n} from 'rxjs/operators';\n\nimport {CELL_SELECTOR, ROW_SELECTOR} from './constants';\nimport {closest} from './polyfill';\n\n/** The delay applied to mouse events before hiding or showing hover content. */\nconst MOUSE_EVENT_DELAY_MS = 40;\n\n/** The delay for reacting to focus/blur changes. */\nconst FOCUS_DELAY = 0;\n\n/**\n * The possible states for hover content:\n * OFF - Not rendered.\n * FOCUSABLE - Rendered in the dom and styled for its contents to be focusable but invisible.\n * ON - Rendered and fully visible.\n */\nexport enum HoverContentState {\n  OFF = 0,\n  FOCUSABLE,\n  ON,\n}\n\n// Note: this class is generic, rather than referencing EditRef directly, in order to avoid\n// circular imports. If we were to reference it here, importing the registry into the\n// class that is registering itself will introduce a circular import.\n\n/**\n * Service for sharing delegated events and state for triggering table edits.\n */\n@Service({autoProvided: false})\nexport class EditEventDispatcher<R> {\n  private readonly _ngZone = inject(NgZone);\n\n  /** A subject that indicates which table cell is currently editing (unless it is disabled). */\n  readonly editing = new Subject<Element | null>();\n\n  /** A subject that indicates which table row is currently hovered. */\n  readonly hovering = new Subject<Element | null>();\n\n  /** A subject that indicates which table row currently contains focus. */\n  readonly focused = new Subject<Element | null>();\n\n  /** A subject that indicates all elements in the table matching ROW_SELECTOR. */\n  readonly allRows = new Subject<NodeList>();\n\n  /** A subject that emits mouse move events from the table indicating the targeted row. */\n  readonly mouseMove = new Subject<Element | null>();\n\n  // TODO: Use WeakSet once IE11 support is dropped.\n  /**\n   * Tracks the currently disabled editable cells - edit calls will be ignored\n   * for these cells.\n   */\n  readonly disabledCells = new WeakMap<Element, boolean>();\n\n  /** The EditRef for the currently active edit lens (if any). */\n  get editRef(): R | null {\n    return this._editRef;\n  }\n  private _editRef: R | null = null;\n\n  // Optimization: Precompute common pipeable operators used per row/cell.\n  private readonly _distinctUntilChanged = distinctUntilChanged<\n    Element | HoverContentState | boolean | null\n  >();\n  private readonly _startWithNull = startWith<Element | null>(null);\n  private readonly _distinctShare = pipe(\n    this._distinctUntilChanged as MonoTypeOperatorFunction<HoverContentState>,\n    shareReplay(1),\n  );\n  private readonly _startWithNullDistinct = pipe(\n    this._startWithNull,\n    this._distinctUntilChanged as MonoTypeOperatorFunction<Element | null>,\n  );\n\n  readonly editingAndEnabled = this.editing.pipe(\n    filter(cell => cell == null || !this.disabledCells.has(cell)),\n    shareReplay(1),\n  );\n\n  /** An observable that emits the row containing focus or an active edit. */\n  readonly editingOrFocused = combineLatest([\n    this.editingAndEnabled.pipe(\n      map(cell => closest(cell, ROW_SELECTOR)),\n      this._startWithNull,\n    ),\n    this.focused.pipe(this._startWithNull),\n  ]).pipe(\n    map(([editingRow, focusedRow]) => focusedRow || editingRow),\n    this._distinctUntilChanged as MonoTypeOperatorFunction<Element | null>,\n    auditTime(FOCUS_DELAY), // Use audit to skip over blur events to the next focused element.\n    this._distinctUntilChanged as MonoTypeOperatorFunction<Element | null>,\n    shareReplay(1),\n  );\n\n  /** Tracks rows that contain hover content with a reference count. */\n  private _rowsWithHoverContent = new WeakMap<Element, number>();\n\n  /** The table cell that has an active edit lens (or null). */\n  private _currentlyEditing: Element | null = null;\n\n  /** The combined set of row hover content states organized by row. */\n  private readonly _hoveredContentStateDistinct = combineLatest([\n    this._getFirstRowWithHoverContent(),\n    this._getLastRowWithHoverContent(),\n    this.editingOrFocused,\n    this.hovering.pipe(\n      distinctUntilChanged(),\n      audit(row =>\n        this.mouseMove.pipe(\n          filter(mouseMoveRow => row === mouseMoveRow),\n          this._startWithNull,\n          debounceTime(MOUSE_EVENT_DELAY_MS),\n        ),\n      ),\n      this._startWithNullDistinct,\n    ),\n  ]).pipe(\n    skip(1), // Skip the initial emission of [null, null, null, null].\n    map(computeHoverContentState),\n    distinctUntilChanged(areMapEntriesEqual),\n    // Optimization: Enter the zone before shareReplay so that we trigger a single\n    // ApplicationRef.tick for all row updates.\n    this._enterZone(),\n    shareReplay(1),\n  );\n\n  private readonly _editingAndEnabledDistinct = this.editingAndEnabled.pipe(\n    distinctUntilChanged(),\n    this._enterZone(),\n    shareReplay(1),\n  );\n\n  // Optimization: Share row events observable with subsequent callers.\n  // At startup, calls will be sequential by row.\n  private _lastSeenRow: Element | null = null;\n  private _lastSeenRowHoverOrFocus: Observable<HoverContentState> | null = null;\n\n  constructor() {\n    this._editingAndEnabledDistinct.subscribe(cell => {\n      this._currentlyEditing = cell;\n    });\n  }\n\n  /**\n   * Gets an Observable that emits true when the specified element's cell\n   * is editing and false when not.\n   */\n  editingCell(element: Element | EventTarget): Observable<boolean> {\n    let cell: Element | null = null;\n\n    return this._editingAndEnabledDistinct.pipe(\n      map(editCell => editCell === (cell || (cell = closest(element, CELL_SELECTOR)))),\n      this._distinctUntilChanged as MonoTypeOperatorFunction<boolean>,\n    );\n  }\n\n  /**\n   * Stops editing for the specified cell. If the specified cell is not the current\n   * edit cell, does nothing.\n   */\n  doneEditingCell(element: Element | EventTarget): void {\n    const cell = closest(element, CELL_SELECTOR);\n\n    if (this._currentlyEditing === cell) {\n      this.editing.next(null);\n    }\n  }\n\n  /** Sets the currently active EditRef. */\n  setActiveEditRef(ref: R) {\n    this._editRef = ref;\n  }\n\n  /** Unset the currently active EditRef, if the specified editRef is active. */\n  unsetActiveEditRef(ref: R) {\n    if (this._editRef !== ref) {\n      return;\n    }\n\n    this._editRef = null;\n  }\n\n  /** Adds the specified table row to be tracked for first/last row comparisons. */\n  registerRowWithHoverContent(row: Element): void {\n    this._rowsWithHoverContent.set(row, (this._rowsWithHoverContent.get(row) || 0) + 1);\n  }\n\n  /**\n   * Reference decrements and ultimately removes the specified table row from first/last row\n   * comparisons.\n   */\n  deregisterRowWithHoverContent(row: Element): void {\n    const refCount = this._rowsWithHoverContent.get(row) || 0;\n\n    if (refCount <= 1) {\n      this._rowsWithHoverContent.delete(row);\n    } else {\n      this._rowsWithHoverContent.set(row, refCount - 1);\n    }\n  }\n\n  /**\n   * Gets an Observable that emits true when the specified element's row\n   * contains the focused element or is being hovered over and false when not.\n   * Hovering is defined as when the mouse has momentarily stopped moving over the cell.\n   */\n  hoverOrFocusOnRow(row: Element): Observable<HoverContentState> {\n    if (row !== this._lastSeenRow) {\n      this._lastSeenRow = row;\n      this._lastSeenRowHoverOrFocus = this._hoveredContentStateDistinct.pipe(\n        map(state => state.get(row) || HoverContentState.OFF),\n        this._distinctShare,\n      );\n    }\n\n    return this._lastSeenRowHoverOrFocus!;\n  }\n\n  /**\n   * RxJS operator that enters the Angular zone, used to reduce boilerplate in\n   * re-entering the zone for stream pipelines.\n   */\n  private _enterZone<T>(): MonoTypeOperatorFunction<T> {\n    return (source: Observable<T>) =>\n      new Observable<T>(observer =>\n        source.subscribe({\n          next: value => this._ngZone.run(() => observer.next(value)),\n          error: err => observer.error(err),\n          complete: () => observer.complete(),\n        }),\n      );\n  }\n\n  private _getFirstRowWithHoverContent(): Observable<Element | null> {\n    return this._mapAllRowsToSingleRow(rows => {\n      for (let i = 0, row; (row = rows[i]); i++) {\n        if (this._rowsWithHoverContent.has(row as Element)) {\n          return row as Element;\n        }\n      }\n      return null;\n    });\n  }\n\n  private _getLastRowWithHoverContent(): Observable<Element | null> {\n    return this._mapAllRowsToSingleRow(rows => {\n      for (let i = rows.length - 1, row; (row = rows[i]); i--) {\n        if (this._rowsWithHoverContent.has(row as Element)) {\n          return row as Element;\n        }\n      }\n      return null;\n    });\n  }\n\n  private _mapAllRowsToSingleRow(\n    mapper: (rows: NodeList) => Element | null,\n  ): Observable<Element | null> {\n    return this.allRows.pipe(map(mapper), this._startWithNullDistinct);\n  }\n}\n\nfunction computeHoverContentState([\n  firstRow,\n  lastRow,\n  activeRow,\n  hoverRow,\n]: (Element | null)[]): Map<Element, HoverContentState> {\n  const hoverContentState = new Map<Element, HoverContentState>();\n\n  // Add focusable rows.\n  for (const focussableRow of [\n    firstRow,\n    lastRow,\n    activeRow && activeRow.previousElementSibling,\n    activeRow && activeRow.nextElementSibling,\n  ]) {\n    if (focussableRow) {\n      hoverContentState.set(focussableRow as Element, HoverContentState.FOCUSABLE);\n    }\n  }\n\n  // Add/overwrite with fully visible rows.\n  for (const onRow of [activeRow, hoverRow]) {\n    if (onRow) {\n      hoverContentState.set(onRow, HoverContentState.ON);\n    }\n  }\n\n  return hoverContentState;\n}\n\nfunction areMapEntriesEqual<K, V>(a: Map<K, V>, b: Map<K, V>): boolean {\n  if (a.size !== b.size) {\n    return false;\n  }\n\n  // TODO: use Map.prototype.entries once we're off IE11.\n  for (const aKey of Array.from(a.keys())) {\n    if (b.get(aKey) !== a.get(aKey)) {\n      return false;\n    }\n  }\n\n  return true;\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 {Service, OnDestroy, afterNextRender, inject, Injector} from '@angular/core';\nimport {ControlContainer} from '@angular/forms';\nimport {Observable, Subject} from 'rxjs';\n\nimport {EditEventDispatcher} from './edit-event-dispatcher';\n\n/**\n * Used for communication between the form within the edit lens and the\n * table that launched it. Provided by CdkEditControl within the lens.\n */\n@Service({autoProvided: false})\nexport class EditRef<FormValue> implements OnDestroy {\n  private readonly _form = inject(ControlContainer, {self: true});\n  private readonly _editEventDispatcher =\n    inject<EditEventDispatcher<EditRef<FormValue>>>(EditEventDispatcher);\n\n  /** Emits the final value of this edit instance before closing. */\n  private readonly _finalValueSubject = new Subject<FormValue>();\n  readonly finalValue: Observable<FormValue> = this._finalValueSubject;\n\n  /** Emits when the user tabs out of this edit lens before closing. */\n  private readonly _blurredSubject = new Subject<void>();\n  readonly blurred: Observable<void> = this._blurredSubject;\n\n  /** The value to set the form back to on revert. */\n  private _revertFormValue!: FormValue;\n\n  private _injector = inject(Injector);\n\n  constructor() {\n    this._editEventDispatcher.setActiveEditRef(this);\n  }\n\n  /**\n   * Called by the host directive's OnInit hook. Reads the initial state of the\n   * form and overrides it with persisted state from previous openings, if\n   * applicable.\n   */\n  init(previousFormValue: FormValue | undefined): void {\n    // Wait for the next render before caching the initial value.\n    // This ensures that all form controls have been initialized.\n    afterNextRender(\n      () => {\n        this.updateRevertValue();\n        if (previousFormValue) {\n          this.reset(previousFormValue);\n        }\n      },\n      {injector: this._injector},\n    );\n  }\n\n  ngOnDestroy(): void {\n    this._editEventDispatcher.unsetActiveEditRef(this);\n    this._finalValueSubject.next(this._form.value);\n    this._finalValueSubject.complete();\n  }\n\n  /** Whether the attached form is in a valid state. */\n  isValid(): boolean | null {\n    return this._form.valid;\n  }\n\n  /** Set the form's current value as what it will be set to on revert/reset. */\n  updateRevertValue(): void {\n    this._revertFormValue = this._form.value;\n  }\n\n  /** Tells the table to close the edit popup. */\n  close(): void {\n    this._editEventDispatcher.editing.next(null);\n  }\n\n  /** Notifies the active edit that the user has moved focus out of the lens. */\n  blur(): void {\n    this._blurredSubject.next();\n  }\n\n  /**\n   * Resets the form value to the specified value or the previously set\n   * revert value.\n   */\n  reset(value?: FormValue): void {\n    this._form.reset(value || this._revertFormValue);\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 {Directionality} from '@angular/cdk/bidi';\nimport {LEFT_ARROW, UP_ARROW, RIGHT_ARROW, DOWN_ARROW} from '@angular/cdk/keycodes';\nimport {Service, inject} from '@angular/core';\nimport {PartialObserver} from 'rxjs';\n\nimport {\n  EDITABLE_CELL_SELECTOR,\n  ROW_SELECTOR,\n  SKIP_ROW_FOCUS_SELECTOR,\n  TABLE_SELECTOR,\n} from './constants';\nimport {closest} from './polyfill';\n\n/**\n * Service responsible for moving cell focus around in response to keyboard events.\n * May be overridden to customize the keyboard behavior of popover edit.\n */\n@Service()\nexport class FocusDispatcher {\n  protected readonly directionality = inject(Directionality);\n\n  /** Observes keydown events triggered from the table. */\n  readonly keyObserver: PartialObserver<KeyboardEvent> = {\n    next: event => this.handleKeyboardEvent(event),\n  };\n\n  /**\n   * Moves focus to earlier or later cells (in dom order) by offset cells relative to\n   * currentCell.\n   */\n  moveFocusHorizontally(currentCell: HTMLElement, offset: number): void {\n    const cells = Array.from(\n      closest(currentCell, TABLE_SELECTOR)!.querySelectorAll(EDITABLE_CELL_SELECTOR),\n    ) as HTMLElement[];\n    const currentIndex = cells.indexOf(currentCell);\n    const newIndex = currentIndex + offset;\n\n    if (cells[newIndex]) {\n      cells[newIndex].focus();\n    }\n  }\n\n  /** Moves focus to up or down by row by offset cells relative to currentCell. */\n  moveFocusVertically(currentCell: HTMLElement, offset: number): void {\n    const currentRow = closest(currentCell, ROW_SELECTOR)!;\n    const rows = Array.from(closest(currentRow, TABLE_SELECTOR)!.querySelectorAll(ROW_SELECTOR));\n    const currentRowIndex = rows.indexOf(currentRow);\n    const currentIndexWithinRow = Array.from(\n      currentRow.querySelectorAll(EDITABLE_CELL_SELECTOR),\n    ).indexOf(currentCell);\n\n    let newRowIndex = currentRowIndex + offset;\n    while (rows[newRowIndex]?.matches(SKIP_ROW_FOCUS_SELECTOR)) {\n      newRowIndex = newRowIndex + (offset > 0 ? 1 : -1);\n    }\n\n    if (rows[newRowIndex]) {\n      const rowToFocus = Array.from(\n        rows[newRowIndex].querySelectorAll(EDITABLE_CELL_SELECTOR),\n      ) as HTMLElement[];\n\n      if (rowToFocus[currentIndexWithinRow]) {\n        rowToFocus[currentIndexWithinRow].focus();\n      }\n    }\n  }\n\n  /** Translates arrow keydown events into focus move operations. */\n  protected handleKeyboardEvent(event: KeyboardEvent): void {\n    const cell = closest(event.target, EDITABLE_CELL_SELECTOR) as HTMLElement | null;\n\n    if (!cell) {\n      return;\n    }\n\n    switch (event.keyCode) {\n      case UP_ARROW:\n        this.moveFocusVertically(cell, -1);\n        break;\n      case DOWN_ARROW:\n        this.moveFocusVertically(cell, 1);\n        break;\n      case LEFT_ARROW:\n        this.moveFocusHorizontally(cell, this.directionality.value === 'ltr' ? -1 : 1);\n        break;\n      case RIGHT_ARROW:\n        this.moveFocusHorizontally(cell, this.directionality.value === 'ltr' ? 1 : -1);\n        break;\n      default:\n        // If the keyboard event is not handled, return now so that we don't `preventDefault`.\n        return;\n    }\n\n    event.preventDefault();\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\nexport interface Entry<FormValue> {\n  value?: FormValue;\n}\n\n/**\n * A convenience class for preserving unsaved form state while an edit lens is closed.\n *\n * Example usage:\n * class MyComponent {\n *   readonly nameEditValues = new FormValueContainer&lt;Item, {name: string}&gt;();\n * }\n *\n * &lt;form cdkEditControl [(cdkEditControlPreservedFormValue)]=\"nameEditValues.for(item).value\"&gt;\n */\nexport class FormValueContainer<Key extends object, FormValue> {\n  private _formValues = new WeakMap<Key, Entry<FormValue>>();\n\n  for(key: Key): Entry<FormValue> {\n    const _formValues = this._formValues;\n\n    let entry = _formValues.get(key);\n    if (!entry) {\n      // Expose entry as an object so that we can [(two-way)] bind to its value member\n      entry = {};\n      _formValues.set(key, entry);\n    }\n\n    return entry;\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 {Subject} from 'rxjs';\nimport {Directive, ElementRef, EventEmitter, OnDestroy, OnInit, Input, inject} from '@angular/core';\nimport {hasModifierKey} from '@angular/cdk/keycodes';\nimport {EDIT_PANE_SELECTOR} from './constants';\nimport {closest} from './polyfill';\nimport {EditRef} from './edit-ref';\n\n/** Options for what do to when the user clicks outside of an edit lens. */\nexport type PopoverEditClickOutBehavior = 'close' | 'submit' | 'noop';\n\n/**\n * A directive that attaches to a form within the edit lens.\n * It coordinates the form state with the table-wide edit system and handles\n * closing the edit lens when the form is submitted or the user clicks\n * out.\n */\n@Directive({\n  selector: 'form[cdkEditControl]',\n  inputs: [\n    {name: 'clickOutBehavior', alias: 'cdkEditControlClickOutBehavior'},\n    {name: 'preservedFormValue', alias: 'cdkEditControlPreservedFormValue'},\n    {name: 'ignoreSubmitUnlessValid', alias: 'cdkEditControlIgnoreSubmitUnlessValid'},\n  ],\n  outputs: ['preservedFormValueChange: cdkEditControlPreservedFormValueChange'],\n  providers: [EditRef],\n  host: {\n    '(ngSubmit)': 'handleFormSubmit()',\n    '(document:click)': 'handlePossibleClickOut($event)',\n    '(keydown)': '_handleKeydown($event)',\n  },\n})\nexport class CdkEditControl<FormValue> implements OnDestroy, OnInit {\n  protected readonly elementRef = inject(ElementRef);\n  readonly editRef = inject<EditRef<FormValue>>(EditRef);\n\n  protected readonly destroyed = new Subject<void>();\n\n  /**\n   * Specifies what should happen when the user clicks outside of the edit lens.\n   * The default behavior is to close the lens without submitting the form.\n   */\n  clickOutBehavior: PopoverEditClickOutBehavior = 'close';\n\n  /**\n   * A two-way binding for storing unsubmitted form state. If not provided\n   * then form state will be discarded on close. The PeristBy directive is offered\n   * as a convenient shortcut for these bindings.\n   */\n  preservedFormValue?: FormValue;\n  readonly preservedFormValueChange = new EventEmitter<FormValue>();\n\n  /**\n   * Determines whether the lens will close on form submit if the form is not in a valid\n   * state. By default the lens will remain open.\n   */\n  ignoreSubmitUnlessValid = true;\n\n  ngOnInit(): void {\n    this.editRef.init(this.preservedFormValue);\n    this.editRef.finalValue.subscribe(this.preservedFormValueChange);\n    this.editRef.blurred.subscribe(() => this._handleBlur());\n  }\n\n  ngOnDestroy(): void {\n    this.destroyed.next();\n    this.destroyed.complete();\n  }\n\n  /**\n   * Called when the form submits. If ignoreSubmitUnlessValid is true, checks\n   * the form for validity before proceeding.\n   * Updates the revert state with the latest submitted value then closes the edit.\n   */\n  handleFormSubmit(): void {\n    if (this.ignoreSubmitUnlessValid && !this.editRef.isValid()) {\n      return;\n    }\n\n    this.editRef.updateRevertValue();\n    this.editRef.close();\n  }\n\n  /** Called on Escape keyup. Closes the edit. */\n  close(): void {\n    // todo - allow this behavior to be customized as well, such as calling\n    // reset before close\n    this.editRef.close();\n  }\n\n  /**\n   * Called on click anywhere in the document.\n   * If the click was outside of the lens, trigger the specified click out behavior.\n   */\n  handlePossibleClickOut(evt: Event): void {\n    if (closest(evt.target, EDIT_PANE_SELECTOR)) {\n      return;\n    }\n    switch (this.clickOutBehavior) {\n      case 'submit':\n        // Manually cause the form to submit before closing.\n        this._triggerFormSubmit();\n        this.editRef.close();\n        break;\n      case 'close':\n        this.editRef.close();\n        break;\n      default:\n        break;\n    }\n  }\n\n  _handleKeydown(event: KeyboardEvent) {\n    if (event.key === 'Escape' && !hasModifierKey(event)) {\n      this.close();\n      event.preventDefault();\n    }\n  }\n\n  /** Triggers submit on tab out if clickOutBehavior is 'submit'. */\n  private _handleBlur(): void {\n    if (this.clickOutBehavior === 'submit') {\n      // Manually cause the form to submit before closing.\n      this._triggerFormSubmit();\n    }\n  }\n\n  private _triggerFormSubmit() {\n    this.elementRef.nativeElement!.dispatchEvent(new Event('submit'));\n  }\n}\n\n/** Reverts the form to its initial or previously submitted state on click. */\n@Directive({\n  selector: 'button[cdkEditRevert]',\n  host: {\n    'type': 'button',\n    '(click)': 'revertEdit()',\n  },\n})\nexport class CdkEditRevert<FormValue> {\n  protected readonly editRef = inject<EditRef<FormValue>>(EditRef);\n\n  /** Type of the button. Defaults to `button` to avoid accident form submits. */\n  @Input() type: string = 'button';\n\n  revertEdit(): void {\n    this.editRef.reset();\n  }\n}\n\n/** Closes the lens on click. */\n@Directive({\n  selector: '[cdkEditClose]',\n  host: {\n    '(click)': 'closeEdit()',\n    '(keydown.enter)': 'closeEdit()',\n    '(keydown.space)': 'closeEdit()',\n  },\n})\nexport class CdkEditClose<FormValue> {\n  protected readonly elementRef = inject<ElementRef<HTMLElement>>(ElementRef);\n  protected readonly editRef = inject<EditRef<FormValue>>(EditRef);\n\n  constructor() {\n    const nativeElement = this.elementRef.nativeElement;\n\n    // Prevent accidental form submits.\n    if (nativeElement.nodeName === 'BUTTON' && !nativeElement.getAttribute('type')) {\n      nativeElement.setAttribute('type', 'button');\n    }\n  }\n\n  closeEdit(): void {\n    // Note that we use `click` here, rather than a keyboard event, because some screen readers\n    // will emit a fake click event instead of an enter keyboard event on buttons. For the keyboard\n    // events we use `keydown`, rather than `keyup`, because we use `keydown` to open the overlay\n    // as well. If we were to use `keyup`, the user could end up opening and closing within\n    // the same event sequence if focus was moved quickly.\n    this.editRef.close();\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 {Service, NgZone, inject} from '@angular/core';\nimport {FocusTrapFactory} from '@angular/cdk/a11y';\nimport {Directionality} from '@angular/cdk/bidi';\nimport {ScrollDispatcher, ViewportRuler} from '@angular/cdk/scrolling';\n\nimport {EditEventDispatcher} from './edit-event-dispatcher';\nimport {FocusDispatcher} from './focus-dispatcher';\nimport {EditRef} from './edit-ref';\n\n/**\n * Optimization\n * Collects multiple Injectables into a singleton shared across the table. By reducing the\n * number of services injected into each CdkPopoverEdit, this saves about 0.023ms of cpu time\n * and 56 bytes of memory per instance.\n */\n@Service({autoProvided: false})\nexport class EditServices {\n  readonly directionality = inject(Directionality);\n  readonly editEventDispatcher = inject<EditEventDispatcher<EditRef<unknown>>>(EditEventDispatcher);\n  readonly focusDispatcher = inject(FocusDispatcher);\n  readonly focusTrapFactory = inject(FocusTrapFactory);\n  readonly ngZone = inject(NgZone);\n  readonly scrollDispatcher = inject(ScrollDispatcher);\n  readonly viewportRuler = inject(ViewportRuler);\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 {Service, NgZone, inject, DOCUMENT, Injector} from '@angular/core';\n\nimport {FocusTrap, InteractivityChecker} from '@angular/cdk/a11y';\nimport {Observable, Subject} from 'rxjs';\n\n/** Value indicating whether focus left the target area before or after the enclosed elements. */\nexport enum FocusEscapeNotifierDirection {\n  START,\n  END,\n}\n\n/**\n * Like FocusTrap, but rather than trapping focus within a dom region, notifies subscribers when\n * focus leaves the region.\n */\nexport class FocusEscapeNotifier extends FocusTrap {\n  private readonly _escapeSubject = new Subject<FocusEscapeNotifierDirection>();\n\n  constructor(\n    element: HTMLElement,\n    checker: InteractivityChecker,\n    ngZone: NgZone,\n    document: Document,\n    injector: Injector,\n  ) {\n    super(element, checker, ngZone, document, true /* deferAnchors */, injector);\n\n    // The focus trap adds \"anchors\" at the beginning and end of a trapped region that redirect\n    // focus. We override that redirect behavior here with simply emitting on a stream.\n    this.startAnchorListener = () => {\n      this._escapeSubject.next(FocusEscapeNotifierDirection.START);\n      return true;\n    };\n    this.endAnchorListener = () => {\n      this._escapeSubject.next(FocusEscapeNotifierDirection.END);\n      return true;\n    };\n\n    this.attachAnchors();\n  }\n\n  escapes(): Observable<FocusEscapeNotifierDirection> {\n    return this._escapeSubject;\n  }\n}\n\n/** Factory that allows easy instantiation of focus escape notifiers. */\n@Service()\nexport class FocusEscapeNotifierFactory {\n  private _checker = inject(InteractivityChecker);\n  private _ngZone = inject(NgZone);\n  private _document = inject(DOCUMENT);\n  private _injector = inject(Injector);\n\n  /**\n   * Creates a focus escape notifier region around the given element.\n   * @param element The element around which focus will be monitored.\n   * @returns The created focus escape notifier instance.\n   */\n  create(element: HTMLElement): FocusEscapeNotifier {\n    return new FocusEscapeNotifier(\n      element,\n      this._checker,\n      this._ngZone,\n      this._document,\n      this._injector,\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 */\nimport {FocusTrap} from '@angular/cdk/a11y';\nimport {\n  createFlexibleConnectedPositionStrategy,\n  createOverlayRef,\n  createRepositionScrollStrategy,\n  OverlayRef,\n  OverlaySizeConfig,\n  PositionStrategy,\n} from '@angular/cdk/overlay';\nimport {TemplatePortal} from '@angular/cdk/portal';\nimport {\n  afterNextRender,\n  AfterViewInit,\n  Directive,\n  ElementRef,\n  EmbeddedViewRef,\n  inject,\n  Injector,\n  ListenerOptions,\n  NgZone,\n  OnDestroy,\n  Renderer2,\n  TemplateRef,\n  ViewContainerRef,\n} from '@angular/core';\nimport {merge, Observable, Subject} from 'rxjs';\nimport {\n  debounceTime,\n  filter,\n  map,\n  mapTo,\n  share,\n  startWith,\n  takeUntil,\n  throttleTime,\n  withLatestFrom,\n} from 'rxjs/operators';\n\nimport {CELL_SELECTOR, EDIT_PANE_CLASS, EDIT_PANE_SELECTOR, ROW_SELECTOR} from './constants';\nimport {EditEventDispatcher, HoverContentState} from './edit-event-dispatcher';\nimport {EditRef} from './edit-ref';\nimport {EditServices} from './edit-services';\nimport {FocusDispatcher} from './focus-dispatcher';\nimport {\n  FocusEscapeNotifier,\n  FocusEscapeNotifierDirection,\n  FocusEscapeNotifierFactory,\n} from './focus-escape-notifier';\nimport {closest} from './polyfill';\n\n/**\n * Describes the number of columns before and after the originating cell that the\n * edit popup should span. In left to right locales, before means left and after means\n * right. In right to left locales before means right and after means left.\n */\nexport interface CdkPopoverEditColspan {\n  before?: number;\n  after?: number;\n}\n\n/** Used for rate-limiting mousemove events. */\nconst MOUSE_MOVE_THROTTLE_TIME_MS = 10;\n\nfunction hasRowElement(nl: NodeList) {\n  for (let i = 0; i < nl.length; i++) {\n    const el = nl[i];\n    if (!(el instanceof HTMLElement)) {\n      continue;\n    }\n    if (el.matches(ROW_SELECTOR)) {\n      return true;\n    }\n  }\n  return false;\n}\n\nfunction isRowMutation(mutation: MutationRecord): boolean {\n  return hasRowElement(mutation.addedNodes) || hasRowElement(mutation.removedNodes);\n}\n\n/**\n * A directive that must be attached to enable editability on a table.\n * It is responsible for setting up delegated event handlers and providing the\n * EditEventDispatcher service for use by the other edit directives.\n */\n@Directive({\n  selector: 'table[editable], cdk-table[editable], mat-table[editable]',\n  providers: [EditEventDispatcher, EditServices],\n})\nexport class CdkEditable implements AfterViewInit, OnDestroy {\n  protected readonly elementRef = inject(ElementRef);\n  protected readonly editEventDispatcher =\n    inject<EditEventDispatcher<EditRef<unknown>>>(EditEventDispatcher);\n  protected readonly focusDispatcher = inject(FocusDispatcher);\n  protected readonly ngZone = inject(NgZone);\n  private readonly _renderer = inject(Renderer2);\n\n  protected readonly destroyed = new Subject<void>();\n\n  private _rowsRendered = new Subject();\n\n  private _rowMutationObserver = globalThis.MutationObserver\n    ? new globalThis.MutationObserver(mutations => {\n        if (mutations.some(isRowMutation)) {\n          this._rowsRendered.next();\n        }\n      })\n    : null;\n\n  constructor() {\n    // TODO: consider a design where instead of polling for row changes we just use\n    // afterRenderEffect + a signal of the rows.\n    afterNextRender(() => {\n      this._rowsRendered.next();\n      this._rowMutationObserver?.observe(this.elementRef.nativeElement, {\n        childList: true,\n        subtree: true,\n      });\n    });\n  }\n\n  ngAfterViewInit(): void {\n    this._listenForTableEvents();\n  }\n\n  ngOnDestroy(): void {\n    this.destroyed.next();\n    this.destroyed.complete();\n    this._rowMutationObserver?.disconnect();\n  }\n\n  private _observableFromEvent<T extends Event>(\n    element: Element,\n    name: string,\n    options?: ListenerOptions,\n  ) {\n    return new Observable<T>(subscriber => {\n      const handler = (event: T) => subscriber.next(event);\n      const cleanup = this._renderer.listen(element, name, handler, options);\n      return () => {\n        cleanup();\n        subscriber.complete();\n      };\n    });\n  }\n\n  private _listenForTableEvents(): void {\n    const element = this.elementRef.nativeElement;\n    const toClosest = (selector: string) =>\n      map((event: UIEvent) => closest(event.target, selector));\n\n    this.ngZone.runOutsideAngular(() => {\n      // Track mouse movement over the table to hide/show hover content.\n      this._observableFromEvent<MouseEvent>(element, 'mouseover')\n        .pipe(toClosest(ROW_SELECTOR), takeUntil(this.destroyed))\n        .subscribe(this.editEventDispatcher.hovering);\n      this._observableFromEvent<MouseEvent>(element, 'mouseleave')\n        .pipe(mapTo(null), takeUntil(this.destroyed))\n        .subscribe(this.editEventDispatcher.hovering);\n      this._observableFromEvent<MouseEvent>(element, 'mousemove')\n        .pipe(\n          throttleTime(MOUSE_MOVE_THROTTLE_TIME_MS),\n          toClosest(ROW_SELECTOR),\n          takeUntil(this.destroyed),\n        )\n        .subscribe(this.editEventDispatcher.mouseMove);\n\n      // Track focus within the table to hide/show/make focusable hover content.\n      this._observableFromEvent<FocusEvent>(element, 'focus', {capture: true})\n        .pipe(toClosest(ROW_SELECTOR), share(), takeUntil(this.destroyed))\n        .subscribe(this.editEventDispatcher.focused);\n\n      merge(\n        this._observableFromEvent(element, 'blur', {capture: true}),\n        this._observableFromEvent<KeyboardEvent>(element, 'keydown').pipe(\n          filter(event => event.key === 'Escape'),\n        ),\n      )\n        .pipe(mapTo(null), share(), takeUntil(this.destroyed))\n        .subscribe(this.editEventDispatcher.focused);\n\n      // Keep track of rows within the table. This is used to know which rows with hover content\n      // are first or last in the table. They are kept focusable in case focus enters from above\n      // or below the table.\n      this._rowsRendered\n        .pipe(\n          // Avoid some timing inconsistencies since Angular v19.\n          // TODO: see if we can remove this now that we're using MutationObserver.\n          debounceTime(0),\n          // Optimization: ignore dom changes while focus is within the table as we already\n          // ensure that rows above and below the focused/active row are tabbable.\n          withLatestFrom(this.editEventDispatcher.editingOrFocused),\n          filter(([_, activeRow]) => activeRow == null),\n          map(() => element.querySelectorAll(ROW_SELECTOR)),\n          share(),\n          takeUntil(this.destroyed),\n        )\n        .subscribe(this.editEventDispatcher.allRows);\n\n      this._observableFromEvent<KeyboardEvent>(element, 'keydown')\n        .pipe(\n          filter(event => event.key === 'Enter'),\n          toClosest(CELL_SELECTOR),\n          takeUntil(this.destroyed),\n        )\n        .subscribe(this.editEventDispatcher.editing);\n\n      // Keydown must be used here or else key auto-repeat does not work properly on some platforms.\n      this._observableFromEvent<KeyboardEvent>(element, 'keydown')\n        .pipe(takeUntil(this.destroyed))\n        .subscribe(this.focusDispatcher.keyObserver);\n    });\n  }\n}\n\nconst POPOVER_EDIT_HOST_BINDINGS = {\n  '[attr.tabindex]': 'disabled ? null : 0',\n  'class': 'cdk-popover-edit-cell',\n  '[attr.aria-haspopup]': '!disabled',\n};\n\nconst POPOVER_EDIT_INPUTS = [\n  {name: 'template', alias: 'cdkPopoverEdit'},\n  {name: 'context', alias: 'cdkPopoverEditContext'},\n  {name: 'colspan', alias: 'cdkPopoverEditColspan'},\n  {name: 'disabled', alias: 'cdkPopoverEditDisabled'},\n  {name: 'ariaLabel', alias: 'cdkPopoverEditAriaLabel'},\n];\n\n/**\n * Attaches an ng-template to a cell and shows it when instructed to by the\n * EditEventDispatcher service.\n * Makes the cell focusable.\n */\n@Directive({\n  selector: '[cdkPopoverEdit]:not([cdkPopoverEditTabOut])',\n  host: POPOVER_EDIT_HOST_BINDINGS,\n  inputs: POPOVER_EDIT_INPUTS,\n})\nexport class CdkPopoverEdit<C> implements AfterViewInit, OnDestroy {\n  protected readonly services = inject(EditServices);\n  protected readonly elementRef = inject(ElementRef);\n  protected readonly viewContainerRef = inject(ViewContainerRef);\n  private _injector = inject(Injector);\n\n  /** The edit lens template shown over the cell on edit. */\n  template: TemplateRef<any> | null = null;\n\n  /**\n   * Implicit context to pass along to the template. Can be omitted if the template\n   * is defined within the cell.\n   */\n  context?: C;\n\n  /** Aria label to set on the popover dialog element. */\n  ariaLabel?: string;\n\n  /**\n   * Specifies that the popup should cover additional table cells before and/or after\n   * this one.\n   */\n  get colspan(): CdkPopoverEditColspan {\n    return this._colspan;\n  }\n  set colspan(value: CdkPopoverEditColspan) {\n    this._colspan = value;\n\n    // Recompute positioning when the colspan changes.\n    if (this.overlayRef) {\n      this.overlayRef.updatePositionStrategy(this._getPositionStrategy());\n\n      if (this.overlayRef.hasAttached()) {\n        this._updateOverlaySize();\n      }\n    }\n  }\n  private _colspan: CdkPopoverEditColspan = {};\n\n  /** Whether popover edit is disabled for this cell. */\n  get disabled(): boolean {\n    return this._disabled;\n  }\n  set disabled(value: boolean) {\n    this._disabled = value;\n\n    if (value) {\n      this.services.editEventDispatcher.doneEditingCell(this.elementRef.nativeElement!);\n      this.services.editEventDispatcher.disabledCells.set(this.elementRef.nativeElement!, true);\n    } else {\n      this.services.editEventDispatcher.disabledCells.delete(this.elementRef.nativeElement!);\n    }\n  }\n  private _disabled = false;\n\n  protected focusTrap?: FocusTrap;\n  protected overlayRef?: OverlayRef;\n  protected readonly destroyed = new Subject<void>();\n\n  ngAfterViewInit(): void {\n    this._startListeningToEditEvents();\n  }\n\n  ngOnDestroy(): void {\n    this.destroyed.next();\n    this.destroyed.complete();\n\n    if (this.focusTrap) {\n      this.focusTrap.destroy();\n      this.focusTrap = undefined;\n    }\n\n    if (this.overlayRef) {\n      this.overlayRef.dispose();\n    }\n  }\n\n  protected initFocusTrap(): void {\n    this.focusTrap = this.services.focusTrapFactory.create(this.overlayRef!.overlayElement);\n  }\n\n  protected closeEditOverlay(): void {\n    this.services.editEventDispatcher.doneEditingCell(this.elementRef.nativeElement!);\n  }\n\n  protected panelClass(): string {\n    return EDIT_PANE_CLASS;\n  }\n\n  private _startListeningToEditEvents(): void {\n    this.services.editEventDispatcher\n      .editingCell(this.elementRef.nativeElement!)\n      .pipe(takeUntil(this.destroyed))\n      .subscribe(open => {\n        if (open && this.template) {\n          if (!this.overlayRef) {\n            this._createEditOverlay();\n          }\n\n          this._showEditOverlay();\n        } else if (this.overlayRef) {\n          this._maybeReturnFocusToCell();\n\n          this.overlayRef.detach();\n        }\n      });\n  }\n\n  private _createEditOverlay(): void {\n    this.overlayRef = createOverlayRef(this._injector, {\n      disposeOnNavigation: true,\n      panelClass: this.panelClass(),\n      positionStrategy: this._getPositionStrategy(),\n      scrollStrategy: createRepositionScrollStrategy(this._injector),\n      direction: this.services.directionality,\n    });\n\n    this.initFocusTrap();\n    this.overlayRef.overlayElement.setAttribute('role', 'dialog');\n    if (this.ariaLabel) {\n      this.overlayRef.overlayElement.setAttribute('aria-label', this.ariaLabel);\n    }\n\n    this.overlayRef.detachments().subscribe(() => this.closeEditOverlay());\n  }\n\n  private _showEditOverlay(): void {\n    this.overlayRef!.attach(\n      new TemplatePortal(this.template!, this.viewContainerRef, {$implicit: this.context}),\n    );\n\n    // We have to defer trapping focus, because doing so too early can cause the form inside\n    // the overlay to be submitted immediately if it was opened on an Enter keydown event.\n    this.services.ngZone.runOutsideAngular(() => {\n      setTimeout(() => {\n        this.focusTrap!.focusInitialElement();\n      });\n    });\n\n    // Update the size of the popup initially and on subsequent changes to\n    // scroll position and viewport size.\n    merge(this.services.scrollDispatcher.scrolled(), this.services.viewportRuler.change())\n      .pipe(startWith(null), takeUntil(merge(this.overlayRef!.detachments(), this.destroyed)))\n      .subscribe(() => {\n        this._updateOverlaySize();\n      });\n  }\n\n  private _getOverlayCells(): HTMLElement[] {\n    const cell = closest(this.elementRef.nativeElement!, CELL_SELECTOR) as HTMLElement;\n\n    if (!this._colspan.before && !this._colspan.after) {\n      return [cell];\n    }\n\n    const row = closest(this.elementRef.nativeElement!, ROW_SELECTOR)!;\n    const rowCells = Array.from(row.querySelectorAll(CELL_SELECTOR)) as HTMLElement[];\n    const ownIndex = rowCells.indexOf(cell);\n\n    return rowCells.slice(\n      ownIndex - (this._colspan.before || 0),\n      ownIndex + (this._colspan.after || 0) + 1,\n    );\n  }\n\n  private _getPositionStrategy(): PositionStrategy {\n    const cells = this._getOverlayCells();\n    return createFlexibleConnectedPositionStrategy(this._injector, cells[0])\n      .withGrowAfterOpen()\n      .withPush()\n      .withViewportMargin(16)\n      .withPositions([\n        {\n          originX: 'start',\n          originY: 'top',\n          overlayX: 'start',\n          overlayY: 'top',\n        },\n      ]);\n  }\n\n  private _updateOverlaySize(): void {\n    this.overlayRef!.updateSize(this._sizeConfigForCells(this._getOverlayCells()));\n  }\n\n  private _maybeReturnFocusToCell(): void {\n    if (closest(document.activeElement, EDIT_PANE_SELECTOR) === this.overlayRef!.overlayElement) {\n      this.elementRef.nativeElement!.focus();\n    }\n  }\n\n  private _sizeConfigForCells(cells: HTMLElement[]): OverlaySizeConfig {\n    if (cells.length === 0) {\n      return {};\n    }\n\n    if (cells.length === 1) {\n      return {width: cells[0].getBoundingClientRect().width};\n    }\n\n    let firstCell, lastCell;\n    if (this.services.directionality.value === 'ltr') {\n      firstCell = cells[0];\n      lastCell = cells[cells.length - 1];\n    } else {\n      lastCell = cells[0];\n      firstCell = cells[cells.length - 1];\n    }\n\n    return {width: lastCell.getBoundingClientRect().right - firstCell.getBoundingClientRect().left};\n  }\n}\n\n/**\n * Attaches an ng-template to a cell and shows it when instructed to by the\n * EditEventDispatcher service.\n * Makes the cell focusable.\n */\n@Directive({\n  selector: '[cdkPopoverEdit][cdkPopoverEditTabOut]',\n  host: POPOVER_EDIT_HOST_BINDINGS,\n  inputs: POPOVER_EDIT_INPUTS,\n})\nexport class CdkPopoverEditTabOut<C> extends CdkPopoverEdit<C> {\n  protected readonly focusEscapeNotifierFactory = inject(FocusEscapeNotifierFactory);\n\n  protected override focusTrap?: FocusEscapeNotifier = undefined;\n\n  protected override initFocusTrap(): void {\n    this.focusTrap = this.focusEscapeNotifierFactory.create(this.overlayRef!.overlayElement);\n\n    this.focusTrap\n      .escapes()\n      .pipe(takeUntil(this.destroyed))\n      .subscribe(direction => {\n        this.services.editEventDispatcher.editRef?.blur();\n        this.services.focusDispatcher.moveFocusHorizontally(\n          closest(this.elementRef.nativeElement!, CELL_SELECTOR) as HTMLElement,\n          direction === FocusEscapeNotifierDirection.START ? -1 : 1,\n        );\n\n        this.closeEditOverlay();\n      });\n  }\n}\n\n/**\n * A structural directive that shows its contents when the table row containing\n * it is hovered or when an element in the row has focus.\n */\n@Directive({\n  selector: '[cdkRowHoverContent]',\n})\nexport class CdkRowHoverContent implements AfterViewInit, OnDestroy {\n  protected readonly services = inject(EditServices);\n  protected readonly elementRef = inject(ElementRef);\n  protected readonly templateRef = inject<TemplateRef<any>>(TemplateRef);\n  protected readonly viewContainerRef = inject(ViewContainerRef);\n\n  protected readonly destroyed = new Subject<void>();\n  protected viewRef: EmbeddedViewRef<any> | null = null;\n\n  private _row?: Element;\n\n  ngAfterViewInit(): void {\n    this._row = closest(this.elementRef.nativeElement!, ROW_SELECTOR)!;\n\n    this.services.editEventDispatcher.registerRowWithHoverContent(this._row);\n    this._listenForHoverAndFocusEvents();\n  }\n\n  ngOnDestroy(): void {\n    this.destroyed.next();\n    this.destroyed.complete();\n\n    if (this.viewRef) {\n      this.viewRef.destroy();\n    }\n\n    if (this._row) {\n      this.services.editEventDispatcher.deregisterRowWithHoverContent(this._row);\n    }\n  }\n\n  /**\n   * Called immediately after the hover content is created and added to the dom.\n   * In the CDK version, this is a noop but subclasses such as MatRowHoverContent use this\n   * to prepare/style the inserted element.\n   */\n  protected initElement(_: HTMLElement): void {}\n\n  /**\n   * Called when the hover content needs to be focusable to preserve a reasonable tab ordering\n   * but should not yet be shown.\n   */\n  protected makeElementHiddenButFocusable(element: HTMLElement): void {\n    element.style.opacity = '0';\n  }\n\n  /**\n   * Called when the hover content needs to be focusable to preserve a reasonable tab ordering\n   * but should not yet be shown.\n   */\n  protected makeElementVisible(element: HTMLElement): void {\n    element.style.opacity = '';\n  }\n\n  private _listenForHoverAndFocusEvents(): void {\n    this.services.editEventDispatcher\n      .hoverOrFocusOnRow(this._row!)\n      .pipe(takeUntil(this.destroyed))\n      .subscribe(eventState => {\n        // When in FOCUSABLE state, add the hover content to the dom but make it transparent so\n        // that it is in the tab order relative to the currently focused row.\n\n        if (eventState === HoverContentState.ON || eventState === HoverContentState.FOCUSABLE) {\n          if (!this.viewRef) {\n            this.viewRef = this.viewContainerRef.createEmbeddedView(this.templateRef, {});\n            this.initElement(this.viewRef.rootNodes[0] as HTMLElement);\n            this.viewRef.markForCheck();\n          } else if (this.viewContainerRef.indexOf(this.viewRef) === -1) {\n            this.viewContainerRef.insert(this.viewRef!);\n            this.viewRef.markForCheck();\n          }\n\n          if (eventState === HoverContentState.ON) {\n            this.makeElementVisible(this.viewRef.rootNodes[0] as HTMLElement);\n          } else {\n            this.makeElementHiddenButFocusable(this.viewRef.rootNodes[0] as HTMLElement);\n          }\n        } else if (this.viewRef) {\n          this.viewContainerRef.detach(this.viewContainerRef.indexOf(this.viewRef));\n        }\n      });\n  }\n}\n\n/**\n * Opens the closest edit popover to this element, whether it's associated with this exact\n * element or an ancestor element.\n */\n@Directive({\n  selector: '[cdkEditOpen]',\n  host: {\n    '(click)': 'openEdit($event)',\n  },\n})\nexport class CdkEditOpen {\n  protected readonly elementRef = inject<ElementRef<HTMLElement>>(ElementRef);\n  protected readonly editEventDispatcher =\n    inject<EditEventDispatcher<EditRef<unknown>>>(EditEventDispatcher);\n\n  constructor() {\n    const elementRef = this.elementRef;\n\n    const nativeElement = elementRef.nativeElement;\n\n    // Prevent accidental form submits.\n    if (nativeElement.nodeName === 'BUTTON' && !nativeElement.getAttribute('type')) {\n      nativeElement.setAttribute('type', 'button');\n    }\n  }\n\n  openEdit(evt: Event): void {\n    this.editEventDispatcher.editing.next(closest(this.elementRef.nativeElement!, CELL_SELECTOR));\n    evt.stopPropagation();\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 {NgModule} from '@angular/core';\nimport {OverlayModule} from '@angular/cdk/overlay';\nimport {\n  CdkPopoverEdit,\n  CdkPopoverEditTabOut,\n  CdkRowHoverContent,\n  CdkEditable,\n  CdkEditOpen,\n} from './table-directives';\nimport {CdkEditControl, CdkEditRevert, CdkEditClose} from './lens-directives';\n\nconst EXPORTED_DECLARATIONS = [\n  CdkPopoverEdit,\n  CdkPopoverEditTabOut,\n  CdkRowHoverContent,\n  CdkEditControl,\n  CdkEditRevert,\n  CdkEditClose,\n  CdkEditable,\n  CdkEditOpen,\n];\n\n@NgModule({\n  imports: [OverlayModule, ...EXPORTED_DECLARATIONS],\n  exports: EXPORTED_DECLARATIONS,\n})\nexport class CdkPopoverEditModule {}\n"],"names":["CELL_SELECTOR","EDITABLE_CELL_SELECTOR","ROW_SELECTOR","TABLE_SELECTOR","EDIT_PANE_CLASS","EDIT_PANE_SELECTOR","SKIP_ROW_FOCUS_SELECTOR","MOUSE_EVENT_DELAY_MS","FOCUS_DELAY","HoverContentState","EditEventDispatcher","_ngZone","inject","NgZone","editing","Subject","hovering","focused","allRows","mouseMove","disabledCells","WeakMap","editRef","_editRef","_distinctUntilChanged","distinctUntilChanged","_startWithNull","startWith","_distinctShare","pipe","shareReplay","_startWithNullDistinct","editingAndEnabled","filter","cell","has","editingOrFocused","combineLatest","map","closest","editingRow","focusedRow","auditTime","_rowsWithHoverContent","_currentlyEditing","_hoveredContentStateDistinct","_getFirstRowWithHoverContent","_getLastRowWithHoverContent","audit","row","mouseMoveRow","debounceTime","skip","computeHoverContentState","areMapEntriesEqual","_enterZone","_editingAndEnabledDistinct","_lastSeenRow","_lastSeenRowHoverOrFocus","constructor","subscribe","editingCell","element","editCell","doneEditingCell","next","setActiveEditRef","ref","unsetActiveEditRef","registerRowWithHoverContent","set","get","deregisterRowWithHoverContent","refCount","delete","hoverOrFocusOnRow","state","OFF","source","Observable","observer","value","run","error","err","complete","_mapAllRowsToSingleRow","rows","i","length","mapper","deps","target","i0","ɵɵFactoryTarget","Service","autoProvided","decorators","firstRow","lastRow","activeRow","hoverRow","hoverContentState","Map","focussableRow","previousElementSibling","nextElementSibling","FOCUSABLE","onRow","ON","a","b","size","aKey","Array","from","keys","EditRef","_form","ControlContainer","self","_editEventDispatcher","_finalValueSubject","finalValue","_blurredSubject","blurred","_revertFormValue","_injector","Injector","init","previousFormValue","afterNextRender","updateRevertValue","reset","injector","ngOnDestroy","isValid","valid","close","blur","FocusDispatcher","directionality","Directionality","keyObserver","event","handleKeyboardEvent","moveFocusHorizontally","currentCell","offset","cells","querySelectorAll","currentIndex","indexOf","newIndex","focus","moveFocusVertically","currentRow","currentRowIndex","currentIndexWithinRow","newRowIndex","matches","rowToFocus","keyCode","UP_ARROW","DOWN_ARROW","LEFT_ARROW","RIGHT_ARROW","preventDefault","FormValueContainer","_formValues","for","key","entry","CdkEditControl","elementRef","ElementRef","destroyed","clickOutBehavior","preservedFormValue","preservedFormValueChange","EventEmitter","ignoreSubmitUnlessValid","ngOnInit","_handleBlur","handleFormSubmit","handlePossibleClickOut","evt","_triggerFormSubmit","_handleKeydown","hasModifierKey","nativeElement","dispatchEvent","Event","Directive","isStandalone","selector","inputs","outputs","host","listeners","providers","ngImport","args","name","alias","CdkEditRevert","type","revertEdit","attributes","Input","CdkEditClose","nodeName","getAttribute","setAttribute","closeEdit","EditServices","editEventDispatcher","focusDispatcher","focusTrapFactory","FocusTrapFactory","ngZone","scrollDispatcher","ScrollDispatcher","viewportRuler","ViewportRuler","FocusEscapeNotifierDirection","FocusEscapeNotifier","FocusTrap","_escapeSubject","checker","document","startAnchorListener","START","endAnchorListener","END","attachAnchors","escapes","FocusEscapeNotifierFactory","_checker","InteractivityChecker","_document","DOCUMENT","create","MOUSE_MOVE_THROTTLE_TIME_MS","hasRowElement","nl","el","HTMLElement","isRowMutation","mutation","addedNodes","removedNodes","CdkEditable","_renderer","Renderer2","_rowsRendered","_rowMutationObserver","globalThis","MutationObserver","mutations","some","observe","childList","subtree","ngAfterViewInit","_listenForTableEvents","disconnect","_observableFromEvent","options","subscriber","handler","cleanup","listen","toClosest","runOutsideAngular","takeUntil","mapTo","throttleTime","capture","share","merge","withLatestFrom","_","ɵdir","ɵɵngDeclareDirective","minVersion","version","POPOVER_EDIT_HOST_BINDINGS","POPOVER_EDIT_INPUTS","CdkPopoverEdit","services","viewContainerRef","ViewContainerRef","template","context","ariaLabel","colspan","_colspan","overlayRef","updatePositionStrategy","_getPositionStrategy","hasAttached","_updateOverlaySize","disabled","_disabled","focusTrap","_startListeningToEditEvents","destroy","undefined","dispose","initFocusTrap","overlayElement","closeEditOverlay","panelClass","open","_createEditOverlay","_showEditOverlay","_maybeReturnFocusToCell","detach","createOverlayRef","disposeOnNavigation","positionStrategy","scrollStrategy","createRepositionScrollStrategy","direction","detachments","attach","TemplatePortal","$implicit","setTimeout","focusInitialElement","scrolled","change","_getOverlayCells","before","after","rowCells","ownIndex","slice","createFlexibleConnectedPositionStrategy","withGrowAfterOpen","withPush","withViewportMargin","withPositions","originX","originY","overlayX","overlayY","updateSize","_sizeConfigForCells","activeElement","width","getBoundingClientRect","firstCell","lastCell","right","left","properties","classAttribute","CdkPopoverEditTabOut","focusEscapeNotifierFactory","usesInheritance","CdkRowHoverContent","templateRef","TemplateRef","viewRef","_row","_listenForHoverAndFocusEvents","initElement","makeElementHiddenButFocusable","style","opacity","makeElementVisible","eventState","createEmbeddedView","rootNodes","markForCheck","insert","CdkEditOpen","openEdit","stopPropagation","EXPORTED_DECLARATIONS","CdkPopoverEditModule","NgModule","imports","OverlayModule","ɵinj","ɵɵngDeclareInjector","exports"],"mappings":"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"}