{"version":3,"file":"sidenav.mjs","sources":["../../../../../darwin_arm64-fastbuild-ST-fdfa778d11ba/bin/src/material/sidenav/drawer.ts","../../../../../darwin_arm64-fastbuild-ST-fdfa778d11ba/bin/src/material/sidenav/drawer.html","../../../../../darwin_arm64-fastbuild-ST-fdfa778d11ba/bin/src/material/sidenav/drawer-container.html","../../../../../darwin_arm64-fastbuild-ST-fdfa778d11ba/bin/src/material/sidenav/sidenav.ts","../../../../../darwin_arm64-fastbuild-ST-fdfa778d11ba/bin/src/material/sidenav/sidenav-container.html","../../../../../darwin_arm64-fastbuild-ST-fdfa778d11ba/bin/src/material/sidenav/sidenav-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 */\nimport {\n  FocusMonitor,\n  FocusOrigin,\n  FocusTrap,\n  FocusTrapFactory,\n  InteractivityChecker,\n} from '@angular/cdk/a11y';\nimport {Directionality} from '@angular/cdk/bidi';\nimport {BooleanInput, coerceBooleanProperty} from '@angular/cdk/coercion';\nimport {ESCAPE, hasModifierKey} from '@angular/cdk/keycodes';\nimport {Platform} from '@angular/cdk/platform';\nimport {CdkScrollable, ViewportRuler} from '@angular/cdk/scrolling';\n\nimport {\n  AfterContentInit,\n  afterNextRender,\n  AfterViewInit,\n  ChangeDetectorRef,\n  Component,\n  ContentChild,\n  ContentChildren,\n  DoCheck,\n  ElementRef,\n  EventEmitter,\n  inject,\n  InjectionToken,\n  Injector,\n  Input,\n  NgZone,\n  OnDestroy,\n  Output,\n  QueryList,\n  Renderer2,\n  ViewChild,\n  ViewEncapsulation,\n  DOCUMENT,\n  signal,\n} from '@angular/core';\nimport {merge, Observable, Subject} from 'rxjs';\nimport {debounceTime, delay, filter, map, mapTo, startWith, take, takeUntil} from 'rxjs/operators';\nimport {_animationsDisabled} from '../core';\n\n/**\n * Throws an exception when two MatDrawer are matching the same position.\n * @docs-private\n */\nexport function throwMatDuplicatedDrawerError(position: string) {\n  throw Error(`A drawer was already declared for 'position=\"${position}\"'`);\n}\n\n/** Options for where to set focus to automatically on dialog open */\nexport type AutoFocusTarget = 'dialog' | 'first-tabbable' | 'first-heading';\n\n/** Result of the toggle promise that indicates the state of the drawer. */\nexport type MatDrawerToggleResult = 'open' | 'close';\n\n/** Drawer and SideNav display modes. */\nexport type MatDrawerMode = 'over' | 'push' | 'side';\n\n/** Configures whether drawers should use auto sizing by default. */\nexport const MAT_DRAWER_DEFAULT_AUTOSIZE = new InjectionToken<boolean>(\n  'MAT_DRAWER_DEFAULT_AUTOSIZE',\n  {\n    providedIn: 'root',\n    factory: () => false,\n  },\n);\n\n/**\n * Used to provide a drawer container to a drawer while avoiding circular references.\n * @docs-private\n */\nexport const MAT_DRAWER_CONTAINER = new InjectionToken<MatDrawerContainer>('MAT_DRAWER_CONTAINER');\n\n@Component({\n  selector: 'mat-drawer-content',\n  template: '<ng-content></ng-content>',\n  host: {\n    'class': 'mat-drawer-content',\n    '[style.margin-left.px]': '_container._contentMargins.left',\n    '[style.margin-right.px]': '_container._contentMargins.right',\n    '[class.mat-drawer-content-hidden]': '_shouldBeHidden()',\n  },\n  encapsulation: ViewEncapsulation.None,\n  providers: [\n    {\n      provide: CdkScrollable,\n      useExisting: MatDrawerContent,\n    },\n  ],\n})\nexport class MatDrawerContent extends CdkScrollable implements AfterContentInit {\n  private _platform = inject(Platform);\n  private _changeDetectorRef = inject(ChangeDetectorRef);\n  private _element = inject<ElementRef<HTMLElement>>(ElementRef);\n  private _ngZone = inject(NgZone);\n  private _isInert = false;\n  _container = inject(MatDrawerContainer);\n\n  ngAfterContentInit() {\n    this._container._contentMarginChanges.subscribe(() => this._changeDetectorRef.markForCheck());\n  }\n\n  _drawerToggled(drawer: MatDrawer) {\n    if (drawer.opened) {\n      // If the drawer is being opened, we need to wait until the animation is done before marking\n      // the content is inert, because the drawer moves focus during the animation. We add a delay\n      // to be safe.\n      this._ngZone.runOutsideAngular(() => {\n        drawer._animationEnd.pipe(delay(50), take(1)).subscribe(() => this._updateInert());\n      });\n    } else {\n      // When the drawer is closing, we need to remove `inert` immediately so\n      // the elements that focus is being restored to can become focusable.\n      this._updateInert();\n    }\n  }\n\n  private _updateInert() {\n    const newValue = this._container._isShowingBackdrop();\n\n    if (newValue !== this._isInert) {\n      const element = this._element.nativeElement;\n      this._isInert = newValue;\n\n      // This can be called right before we attempt to move focus. Set the value\n      // directly, instead of waiting on change detection, because the timing is tight.\n      if (newValue) {\n        element.setAttribute('inert', 'true');\n      } else {\n        element.removeAttribute('inert');\n      }\n    }\n  }\n\n  /** Determines whether the content element should be hidden from the user. */\n  protected _shouldBeHidden(): boolean {\n    // In some modes the content is pushed based on the width of the opened sidenavs, however on\n    // the server we can't measure the sidenav so the margin is always zero. This can cause the\n    // content to jump around when it's rendered on the server and hydrated on the client. We\n    // avoid it by hiding the content on the initial render and then showing it once the sidenav\n    // has been measured on the client.\n    if (this._platform.isBrowser) {\n      return false;\n    }\n\n    const {start, end} = this._container;\n    return (\n      (start != null && start.mode !== 'over' && start.opened) ||\n      (end != null && end.mode !== 'over' && end.opened)\n    );\n  }\n}\n\n/**\n * This component corresponds to a drawer that can be opened on the drawer container.\n */\n@Component({\n  selector: 'mat-drawer',\n  exportAs: 'matDrawer',\n  templateUrl: 'drawer.html',\n  host: {\n    'class': 'mat-drawer',\n    // must prevent the browser from aligning text based on value\n    '[attr.align]': 'null',\n    '[class.mat-drawer-end]': 'position === \"end\"',\n    '[class.mat-drawer-over]': 'mode === \"over\"',\n    '[class.mat-drawer-push]': 'mode === \"push\"',\n    '[class.mat-drawer-side]': 'mode === \"side\"',\n    // The styles that render the sidenav off-screen come from the drawer container. Prior to #30235\n    // this was also done by the animations module which some internal tests seem to depend on.\n    // Simulate it by toggling the `hidden` attribute instead.\n    '[style.visibility]': '(!_container && !opened) ? \"hidden\" : null',\n    // The sidenav container should not be focused on when used in side mode. See b/286459024 for\n    // reference. Updates tabIndex of drawer/container to default to null if in side mode.\n    '[attr.tabIndex]': '(mode !== \"side\") ? \"-1\" : null',\n  },\n  encapsulation: ViewEncapsulation.None,\n  imports: [CdkScrollable],\n})\nexport class MatDrawer implements AfterViewInit, OnDestroy {\n  private _elementRef = inject<ElementRef<HTMLElement>>(ElementRef);\n  private _focusTrapFactory = inject(FocusTrapFactory);\n  private _focusMonitor = inject(FocusMonitor);\n  private _platform = inject(Platform);\n  private _ngZone = inject(NgZone);\n  private _renderer = inject(Renderer2);\n  private readonly _interactivityChecker = inject(InteractivityChecker);\n  private _doc = inject(DOCUMENT);\n  _container? = inject<MatDrawerContainer>(MAT_DRAWER_CONTAINER, {optional: true});\n\n  private _focusTrap: FocusTrap | null = null;\n  private _elementFocusedBeforeDrawerWasOpened: HTMLElement | null = null;\n  private _eventCleanups!: (() => void)[];\n\n  /** Whether the view of the component has been attached. */\n  private _isAttached = false;\n\n  /** Anchor node used to restore the drawer to its initial position. */\n  private _anchor: Comment | null = null;\n\n  /** The side that the drawer is attached to. */\n  @Input()\n  get position(): 'start' | 'end' {\n    return this._position;\n  }\n  set position(value: 'start' | 'end') {\n    // Make sure we have a valid value.\n    value = value === 'end' ? 'end' : 'start';\n    if (value !== this._position) {\n      // Static inputs in Ivy are set before the element is in the DOM.\n      if (this._isAttached) {\n        this._updatePositionInParent(value);\n      }\n\n      this._position = value;\n      this.onPositionChanged.emit();\n    }\n  }\n  private _position: 'start' | 'end' = 'start';\n\n  /** Mode of the drawer; one of 'over', 'push' or 'side'. */\n  @Input()\n  get mode(): MatDrawerMode {\n    return this._mode;\n  }\n  set mode(value: MatDrawerMode) {\n    this._mode = value;\n    this._updateFocusTrapState();\n    this._modeChanged.next();\n  }\n  private _mode: MatDrawerMode = 'over';\n\n  /** Whether the drawer can be closed with the escape key or by clicking on the backdrop. */\n  @Input()\n  get disableClose(): boolean {\n    return this._disableClose;\n  }\n  set disableClose(value: BooleanInput) {\n    this._disableClose = coerceBooleanProperty(value);\n  }\n  private _disableClose: boolean = false;\n\n  /**\n   * Whether the drawer should focus the first focusable element automatically when opened.\n   * Defaults to false in when `mode` is set to `side`, otherwise defaults to `true`. If explicitly\n   * enabled, focus will be moved into the sidenav in `side` mode as well.\n   * @breaking-change 14.0.0 Remove boolean option from autoFocus. Use string or AutoFocusTarget\n   * instead.\n   */\n  @Input()\n  get autoFocus(): AutoFocusTarget | string | boolean {\n    const value = this._autoFocus;\n\n    // Note that usually we don't allow autoFocus to be set to `first-tabbable` in `side` mode,\n    // because we don't know how the sidenav is being used, but in some cases it still makes\n    // sense to do it. The consumer can explicitly set `autoFocus`.\n    if (value == null) {\n      if (this.mode === 'side') {\n        return 'dialog';\n      } else {\n        return 'first-tabbable';\n      }\n    }\n    return value;\n  }\n  set autoFocus(value: AutoFocusTarget | string | BooleanInput) {\n    if (value === 'true' || value === 'false' || value == null) {\n      value = coerceBooleanProperty(value);\n    }\n    this._autoFocus = value;\n  }\n  private _autoFocus: AutoFocusTarget | string | boolean | undefined;\n\n  /**\n   * Whether the drawer is opened. We overload this because we trigger an event when it\n   * starts or end.\n   */\n  @Input()\n  get opened(): boolean {\n    return this._opened();\n  }\n  set opened(value: BooleanInput) {\n    this.toggle(coerceBooleanProperty(value));\n  }\n  private _opened = signal(false);\n\n  /** How the sidenav was opened (keypress, mouse click etc.) */\n  private _openedVia: FocusOrigin | null = null;\n\n  /** Emits whenever the drawer has started animating. */\n  readonly _animationStarted = new Subject();\n\n  /** Emits whenever the drawer is done animating. */\n  readonly _animationEnd = new Subject();\n\n  /** Event emitted when the drawer open state is changed. */\n  @Output() readonly openedChange: EventEmitter<boolean> =\n    // Note this has to be async in order to avoid some issues with two-bindings (see #8872).\n    new EventEmitter<boolean>(/* isAsync */ true);\n\n  /** Event emitted when the drawer has been opened. */\n  @Output('opened')\n  readonly _openedStream = this.openedChange.pipe(\n    filter(o => o),\n    map(() => {}),\n  );\n\n  /** Event emitted when the drawer has started opening. */\n  @Output()\n  readonly openedStart: Observable<void> = this._animationStarted.pipe(\n    filter(() => this.opened),\n    mapTo(undefined),\n  );\n\n  /** Event emitted when the drawer has been closed. */\n  @Output('closed')\n  readonly _closedStream = this.openedChange.pipe(\n    filter(o => !o),\n    map(() => {}),\n  );\n\n  /** Event emitted when the drawer has started closing. */\n  @Output()\n  readonly closedStart: Observable<void> = this._animationStarted.pipe(\n    filter(() => !this.opened),\n    mapTo(undefined),\n  );\n\n  /** Emits when the component is destroyed. */\n  private readonly _destroyed = new Subject<void>();\n\n  /** Event emitted when the drawer's position changes. */\n  // tslint:disable-next-line:no-output-on-prefix\n  @Output('positionChanged') readonly onPositionChanged = new EventEmitter<void>();\n\n  /** Reference to the inner element that contains all the content. */\n  @ViewChild('content') _content!: ElementRef<HTMLElement>;\n\n  /**\n   * An observable that emits when the drawer mode changes. This is used by the drawer container to\n   * to know when to when the mode changes so it can adapt the margins on the content.\n   */\n  readonly _modeChanged = new Subject<void>();\n\n  private _injector = inject(Injector);\n  private _changeDetectorRef = inject(ChangeDetectorRef);\n\n  constructor() {\n    this.openedChange.pipe(takeUntil(this._destroyed)).subscribe((opened: boolean) => {\n      if (opened) {\n        this._elementFocusedBeforeDrawerWasOpened = this._doc.activeElement as HTMLElement;\n        this._takeFocus();\n      } else if (this._isFocusWithinDrawer()) {\n        this._restoreFocus(this._openedVia || 'program');\n      }\n    });\n\n    /**\n     * Listen to `keydown` events outside the zone so that change detection is not run every\n     * time a key is pressed. Instead we re-enter the zone only if the `ESC` key is pressed\n     * and we don't have close disabled.\n     */\n    this._eventCleanups = this._ngZone.runOutsideAngular(() => {\n      const renderer = this._renderer;\n      const element = this._elementRef.nativeElement;\n\n      return [\n        renderer.listen(element, 'keydown', (event: KeyboardEvent) => {\n          if (event.keyCode === ESCAPE && !this.disableClose && !hasModifierKey(event)) {\n            this._ngZone.run(() => {\n              this.close();\n              event.stopPropagation();\n              event.preventDefault();\n            });\n          }\n        }),\n        renderer.listen(element, 'transitionend', this._handleTransitionEvent),\n        renderer.listen(element, 'transitioncancel', this._handleTransitionEvent),\n      ];\n    });\n\n    this._animationEnd.subscribe(() => {\n      this.openedChange.emit(this.opened);\n    });\n  }\n\n  /**\n   * Focuses the first element that matches the given selector within the focus trap.\n   * @param selector The CSS selector for the element to set focus to.\n   */\n  private _focusByCssSelector(selector: string, options?: FocusOptions) {\n    const element = this._elementRef.nativeElement.querySelector(selector) as HTMLElement | null;\n\n    if (!element) {\n      return;\n    }\n\n    // If the element isn't focusable, force focus to it by\n    // setting a tabindex, focusing it and then clear it.\n    if (!this._interactivityChecker.isFocusable(element)) {\n      element.tabIndex = -1;\n      // The tabindex attribute should be removed to avoid navigating to that element again\n      this._ngZone.runOutsideAngular(() => {\n        const callback = () => {\n          cleanupBlur();\n          cleanupMousedown();\n          element.removeAttribute('tabindex');\n        };\n\n        const cleanupBlur = this._renderer.listen(element, 'blur', callback);\n        const cleanupMousedown = this._renderer.listen(element, 'mousedown', callback);\n      });\n    }\n\n    element.focus(options);\n  }\n\n  /**\n   * Moves focus into the drawer. Note that this works even if\n   * the focus trap is disabled in `side` mode.\n   */\n  private _takeFocus() {\n    if (!this._focusTrap) {\n      return;\n    }\n\n    const element = this._elementRef.nativeElement;\n\n    // When autoFocus is not on the sidenav, if the element cannot be focused or does\n    // not exist, focus the sidenav itself so the keyboard navigation still works.\n    // We need to check that `focus` is a function due to Universal.\n    switch (this.autoFocus) {\n      case false:\n      case 'dialog':\n        return;\n      case true:\n      case 'first-tabbable':\n        afterNextRender(\n          () => {\n            const hasMovedFocus = this._focusTrap!.focusInitialElement();\n            if (!hasMovedFocus && typeof element.focus === 'function') {\n              element.focus();\n            }\n          },\n          {injector: this._injector},\n        );\n        break;\n      case 'first-heading':\n        this._focusByCssSelector('h1, h2, h3, h4, h5, h6, [role=\"heading\"]');\n        break;\n      default:\n        this._focusByCssSelector(this.autoFocus!);\n        break;\n    }\n  }\n\n  /**\n   * Restores focus to the element that was originally focused when the drawer opened.\n   * If no element was focused at that time, the focus will be restored to the drawer.\n   */\n  private _restoreFocus(focusOrigin: Exclude<FocusOrigin, null>) {\n    if (this.autoFocus === 'dialog') {\n      return;\n    }\n\n    if (this._elementFocusedBeforeDrawerWasOpened) {\n      this._focusMonitor.focusVia(this._elementFocusedBeforeDrawerWasOpened, focusOrigin);\n    } else {\n      this._elementRef.nativeElement.blur();\n    }\n\n    this._elementFocusedBeforeDrawerWasOpened = null;\n  }\n\n  /** Whether focus is currently within the drawer. */\n  private _isFocusWithinDrawer(): boolean {\n    const activeEl = this._doc.activeElement;\n    return !!activeEl && this._elementRef.nativeElement.contains(activeEl);\n  }\n\n  ngAfterViewInit() {\n    this._isAttached = true;\n\n    // Only update the DOM position when the sidenav is positioned at\n    // the end since we project the sidenav before the content by default.\n    if (this._position === 'end') {\n      this._updatePositionInParent('end');\n    }\n\n    // Needs to happen after the position is updated\n    // so the focus trap anchors are in the right place.\n    if (this._platform.isBrowser) {\n      this._focusTrap = this._focusTrapFactory.create(this._elementRef.nativeElement);\n      this._updateFocusTrapState();\n    }\n  }\n\n  ngOnDestroy() {\n    this._eventCleanups.forEach(cleanup => cleanup());\n    this._focusTrap?.destroy();\n    this._anchor?.remove();\n    this._anchor = null;\n    this._animationStarted.complete();\n    this._animationEnd.complete();\n    this._modeChanged.complete();\n    this._destroyed.next();\n    this._destroyed.complete();\n  }\n\n  /**\n   * Open the drawer.\n   * @param openedVia Whether the drawer was opened by a key press, mouse click or programmatically.\n   * Used for focus management after the sidenav is closed.\n   */\n  open(openedVia?: FocusOrigin): Promise<MatDrawerToggleResult> {\n    return this.toggle(true, openedVia);\n  }\n\n  /** Close the drawer. */\n  close(): Promise<MatDrawerToggleResult> {\n    return this.toggle(false);\n  }\n\n  /** Closes the drawer with context that the backdrop was clicked. */\n  _closeViaBackdropClick(): Promise<MatDrawerToggleResult> {\n    // If the drawer is closed upon a backdrop click, we always want to restore focus. We\n    // don't need to check whether focus is currently in the drawer, as clicking on the\n    // backdrop causes blurs the active element.\n    return this._setOpen(/* isOpen */ false, /* restoreFocus */ true, 'mouse');\n  }\n\n  /**\n   * Toggle this drawer.\n   * @param isOpen Whether the drawer should be open.\n   * @param openedVia Whether the drawer was opened by a key press, mouse click or programmatically.\n   * Used for focus management after the sidenav is closed.\n   */\n  toggle(isOpen: boolean = !this.opened, openedVia?: FocusOrigin): Promise<MatDrawerToggleResult> {\n    // If the focus is currently inside the drawer content and we are closing the drawer,\n    // restore the focus to the initially focused element (when the drawer opened).\n    if (isOpen && openedVia) {\n      this._openedVia = openedVia;\n    }\n\n    const result = this._setOpen(\n      isOpen,\n      /* restoreFocus */ !isOpen && this._isFocusWithinDrawer(),\n      this._openedVia || 'program',\n    );\n\n    if (!isOpen) {\n      this._openedVia = null;\n    }\n\n    return result;\n  }\n\n  /**\n   * Toggles the opened state of the drawer.\n   * @param isOpen Whether the drawer should open or close.\n   * @param restoreFocus Whether focus should be restored on close.\n   * @param focusOrigin Origin to use when restoring focus.\n   */\n  private _setOpen(\n    isOpen: boolean,\n    restoreFocus: boolean,\n    focusOrigin: Exclude<FocusOrigin, null>,\n  ): Promise<MatDrawerToggleResult> {\n    if (isOpen === this.opened) {\n      return Promise.resolve(isOpen ? 'open' : 'close');\n    }\n\n    this._opened.set(isOpen);\n    (this._container?._content || this._container?._userContent)?._drawerToggled(this);\n\n    if (this._container?._transitionsEnabled) {\n      // Note: it's important to set this as early as possible,\n      // otherwise the animation can look glitchy in some cases.\n      this._setIsAnimating(true);\n\n      // Previously we dispatched this in a `transitionrun` event, but it might not fire\n      // if the element is hidden (see #32992). Since this event is load-bearing for the\n      // margin calculations, we need it to fire consistently.\n      setTimeout(() => this._animationStarted.next());\n    } else {\n      // Simulate the animation events if animations are disabled.\n      setTimeout(() => {\n        this._animationStarted.next();\n        this._animationEnd.next();\n      });\n    }\n\n    this._elementRef.nativeElement.classList.toggle('mat-drawer-opened', isOpen);\n\n    if (!isOpen && restoreFocus) {\n      this._restoreFocus(focusOrigin);\n    }\n\n    // Needed to ensure that the closing sequence fires off correctly.\n    this._changeDetectorRef.markForCheck();\n    this._updateFocusTrapState();\n\n    return new Promise<MatDrawerToggleResult>(resolve => {\n      this.openedChange.pipe(take(1)).subscribe(open => resolve(open ? 'open' : 'close'));\n    });\n  }\n\n  /** Toggles whether the drawer is currently animating. */\n  private _setIsAnimating(isAnimating: boolean) {\n    this._elementRef.nativeElement.classList.toggle('mat-drawer-animating', isAnimating);\n  }\n\n  _getWidth(): number {\n    return this._elementRef.nativeElement.offsetWidth || 0;\n  }\n\n  /** Updates the enabled state of the focus trap. */\n  private _updateFocusTrapState() {\n    if (this._focusTrap) {\n      // Trap focus only if the backdrop is enabled. Otherwise, allow end user to interact with the\n      // sidenav content.\n      this._focusTrap.enabled = this.opened && !!this._container?._isShowingBackdrop();\n    }\n  }\n\n  /**\n   * Updates the position of the drawer in the DOM. We need to move the element around ourselves\n   * when it's in the `end` position so that it comes after the content and the visual order\n   * matches the tab order. We also need to be able to move it back to `start` if the sidenav\n   * started off as `end` and was changed to `start`.\n   */\n  private _updatePositionInParent(newPosition: 'start' | 'end'): void {\n    // Don't move the DOM node around on the server, because it can throw off hydration.\n    if (!this._platform.isBrowser) {\n      return;\n    }\n\n    const element = this._elementRef.nativeElement;\n    const parent = element.parentNode!;\n\n    if (newPosition === 'end') {\n      if (!this._anchor) {\n        this._anchor = this._doc.createComment('mat-drawer-anchor')!;\n        parent.insertBefore(this._anchor!, element);\n      }\n\n      parent.appendChild(element);\n    } else if (this._anchor) {\n      this._anchor.parentNode!.insertBefore(element, this._anchor);\n    }\n  }\n\n  /** Event handler for animation events. */\n  private _handleTransitionEvent = (event: TransitionEvent) => {\n    const element = this._elementRef.nativeElement;\n\n    if (event.target === element) {\n      this._ngZone.run(() => {\n        // Don't toggle the animating state on `transitioncancel` since another animation should\n        // start afterwards. This prevents the drawer from blinking if an animation is interrupted.\n        if (event.type === 'transitionend') {\n          this._setIsAnimating(false);\n        }\n\n        this._animationEnd.next(event);\n      });\n    }\n  };\n}\n\n/**\n * `<mat-drawer-container>` component.\n *\n * This is the parent component to one or two `<mat-drawer>`s that validates the state internally\n * and coordinates the backdrop and content styling.\n */\n@Component({\n  selector: 'mat-drawer-container',\n  exportAs: 'matDrawerContainer',\n  templateUrl: 'drawer-container.html',\n  styleUrl: 'drawer.css',\n  host: {\n    'class': 'mat-drawer-container',\n    '[class.mat-drawer-container-explicit-backdrop]': '_backdropOverride',\n  },\n  encapsulation: ViewEncapsulation.None,\n  providers: [\n    {\n      provide: MAT_DRAWER_CONTAINER,\n      useExisting: MatDrawerContainer,\n    },\n  ],\n  imports: [MatDrawerContent],\n})\nexport class MatDrawerContainer implements AfterContentInit, DoCheck, OnDestroy {\n  private _dir = inject(Directionality, {optional: true});\n  private _element = inject<ElementRef<HTMLElement>>(ElementRef);\n  private _ngZone = inject(NgZone);\n  private _changeDetectorRef = inject(ChangeDetectorRef);\n  private _animationDisabled = _animationsDisabled();\n  _transitionsEnabled = false;\n\n  /** All drawers in the container. Includes drawers from inside nested containers. */\n  @ContentChildren(MatDrawer, {\n    // We need to use `descendants: true`, because Ivy will no longer match\n    // indirect descendants if it's left as false.\n    descendants: true,\n  })\n  _allDrawers!: QueryList<MatDrawer>;\n\n  /** Drawers that belong to this container. */\n  _drawers = new QueryList<MatDrawer>();\n\n  @ContentChild(MatDrawerContent) _content!: MatDrawerContent;\n  @ViewChild(MatDrawerContent) _userContent!: MatDrawerContent;\n\n  /** The drawer child with the `start` position. */\n  get start(): MatDrawer | null {\n    return this._start;\n  }\n\n  /** The drawer child with the `end` position. */\n  get end(): MatDrawer | null {\n    return this._end;\n  }\n\n  /**\n   * Whether to automatically resize the container whenever\n   * the size of any of its drawers changes.\n   *\n   * **Use at your own risk!** Enabling this option can cause layout thrashing by measuring\n   * the drawers on every change detection cycle. Can be configured globally via the\n   * `MAT_DRAWER_DEFAULT_AUTOSIZE` token.\n   */\n  @Input()\n  get autosize(): boolean {\n    return this._autosize;\n  }\n  set autosize(value: BooleanInput) {\n    this._autosize = coerceBooleanProperty(value);\n  }\n  private _autosize = inject(MAT_DRAWER_DEFAULT_AUTOSIZE);\n\n  /**\n   * Whether the drawer container should have a backdrop while one of the sidenavs is open.\n   * If explicitly set to `true`, the backdrop will be enabled for drawers in the `side`\n   * mode as well.\n   */\n  @Input()\n  get hasBackdrop(): boolean {\n    return this._drawerHasBackdrop(this._start) || this._drawerHasBackdrop(this._end);\n  }\n  set hasBackdrop(value: BooleanInput) {\n    this._backdropOverride = value == null ? null : coerceBooleanProperty(value);\n  }\n  _backdropOverride: boolean | null = null;\n\n  /** Event emitted when the drawer backdrop is clicked. */\n  @Output() readonly backdropClick: EventEmitter<void> = new EventEmitter<void>();\n\n  /** The drawer at the start/end position, independent of direction. */\n  private _start: MatDrawer | null = null;\n  private _end: MatDrawer | null = null;\n\n  /**\n   * The drawer at the left/right. When direction changes, these will change as well.\n   * They're used as aliases for the above to set the left/right style properly.\n   * In LTR, _left == _start and _right == _end.\n   * In RTL, _left == _end and _right == _start.\n   */\n  private _left: MatDrawer | null = null;\n  private _right: MatDrawer | null = null;\n\n  /** Emits when the component is destroyed. */\n  private readonly _destroyed = new Subject<void>();\n\n  /** Emits on every ngDoCheck. Used for debouncing reflows. */\n  private readonly _doCheckSubject = new Subject<void>();\n\n  /**\n   * Margins to be applied to the content. These are used to push / shrink the drawer content when a\n   * drawer is open. We use margin rather than transform even for push mode because transform breaks\n   * fixed position elements inside of the transformed element.\n   */\n  _contentMargins: {left: number | null; right: number | null} = {left: null, right: null};\n\n  readonly _contentMarginChanges = new Subject<{left: number | null; right: number | null}>();\n\n  /** Reference to the CdkScrollable instance that wraps the scrollable content. */\n  get scrollable(): CdkScrollable {\n    return this._userContent || this._content;\n  }\n\n  private _injector = inject(Injector);\n\n  constructor() {\n    const platform = inject(Platform);\n    const viewportRuler = inject(ViewportRuler);\n\n    // If a `Dir` directive exists up the tree, listen direction changes\n    // and update the left/right properties to point to the proper start/end.\n    this._dir?.change.pipe(takeUntil(this._destroyed)).subscribe(() => {\n      this._validateDrawers();\n      this.updateContentMargins();\n    });\n\n    // Since the minimum width of the sidenav depends on the viewport width,\n    // we need to recompute the margins if the viewport changes.\n    viewportRuler\n      .change()\n      .pipe(takeUntil(this._destroyed))\n      .subscribe(() => this.updateContentMargins());\n\n    if (!this._animationDisabled && platform.isBrowser) {\n      this._ngZone.runOutsideAngular(() => {\n        // Enable the animations after a delay in order to skip\n        // the initial transition if a drawer is open by default.\n        setTimeout(() => {\n          this._element.nativeElement.classList.add('mat-drawer-transition');\n          this._transitionsEnabled = true;\n        }, 200);\n      });\n    }\n  }\n\n  ngAfterContentInit() {\n    this._allDrawers.changes\n      .pipe(startWith(this._allDrawers), takeUntil(this._destroyed))\n      .subscribe((drawer: QueryList<MatDrawer>) => {\n        this._drawers.reset(drawer.filter(item => !item._container || item._container === this));\n        this._drawers.notifyOnChanges();\n      });\n\n    this._drawers.changes.pipe(startWith(null)).subscribe(() => {\n      this._validateDrawers();\n\n      this._drawers.forEach((drawer: MatDrawer) => {\n        this._watchDrawerToggle(drawer);\n        this._watchDrawerPosition(drawer);\n        this._watchDrawerMode(drawer);\n      });\n\n      if (\n        !this._drawers.length ||\n        this._isDrawerOpen(this._start) ||\n        this._isDrawerOpen(this._end)\n      ) {\n        this.updateContentMargins();\n      }\n\n      this._changeDetectorRef.markForCheck();\n    });\n\n    // Avoid hitting the NgZone through the debounce timeout.\n    this._ngZone.runOutsideAngular(() => {\n      this._doCheckSubject\n        .pipe(\n          debounceTime(10), // Arbitrary debounce time, less than a frame at 60fps\n          takeUntil(this._destroyed),\n        )\n        .subscribe(() => this.updateContentMargins());\n    });\n  }\n\n  ngOnDestroy() {\n    this._contentMarginChanges.complete();\n    this._doCheckSubject.complete();\n    this._drawers.destroy();\n    this._destroyed.next();\n    this._destroyed.complete();\n  }\n\n  /** Calls `open` of both start and end drawers */\n  open(): void {\n    this._drawers.forEach(drawer => drawer.open());\n  }\n\n  /** Calls `close` of both start and end drawers */\n  close(): void {\n    this._drawers.forEach(drawer => drawer.close());\n  }\n\n  /**\n   * Recalculates and updates the inline styles for the content. Note that this should be used\n   * sparingly, because it causes a reflow.\n   */\n  updateContentMargins() {\n    // 1. For drawers in `over` mode, they don't affect the content.\n    // 2. For drawers in `side` mode they should shrink the content. We do this by adding to the\n    //    left margin (for left drawer) or right margin (for right the drawer).\n    // 3. For drawers in `push` mode the should shift the content without resizing it. We do this by\n    //    adding to the left or right margin and simultaneously subtracting the same amount of\n    //    margin from the other side.\n    let left = 0;\n    let right = 0;\n\n    if (this._left && this._left.opened) {\n      if (this._left.mode == 'side') {\n        left += this._left._getWidth();\n      } else if (this._left.mode == 'push') {\n        const width = this._left._getWidth();\n        left += width;\n        right -= width;\n      }\n    }\n\n    if (this._right && this._right.opened) {\n      if (this._right.mode == 'side') {\n        right += this._right._getWidth();\n      } else if (this._right.mode == 'push') {\n        const width = this._right._getWidth();\n        right += width;\n        left -= width;\n      }\n    }\n\n    // If either `right` or `left` is zero, don't set a style to the element. This\n    // allows users to specify a custom size via CSS class in SSR scenarios where the\n    // measured widths will always be zero. Note that we reset to `null` here, rather\n    // than below, in order to ensure that the types in the `if` below are consistent.\n    left = left || null!;\n    right = right || null!;\n\n    if (left !== this._contentMargins.left || right !== this._contentMargins.right) {\n      this._contentMargins = {left, right};\n\n      // Pull back into the NgZone since in some cases we could be outside. We need to be careful\n      // to do it only when something changed, otherwise we can end up hitting the zone too often.\n      this._ngZone.run(() => this._contentMarginChanges.next(this._contentMargins));\n    }\n  }\n\n  ngDoCheck() {\n    // If users opted into autosizing, do a check every change detection cycle.\n    if (this._autosize && this._isPushed()) {\n      // Run outside the NgZone, otherwise the debouncer will throw us into an infinite loop.\n      this._ngZone.runOutsideAngular(() => this._doCheckSubject.next());\n    }\n  }\n\n  /**\n   * Subscribes to drawer events in order to set a class on the main container element when the\n   * drawer is open and the backdrop is visible. This ensures any overflow on the container element\n   * is properly hidden.\n   */\n  private _watchDrawerToggle(drawer: MatDrawer): void {\n    drawer._animationStarted.pipe(takeUntil(this._drawers.changes)).subscribe(() => {\n      this.updateContentMargins();\n      this._changeDetectorRef.markForCheck();\n    });\n\n    if (drawer.mode !== 'side') {\n      drawer.openedChange\n        .pipe(takeUntil(this._drawers.changes))\n        .subscribe(() => this._setContainerClass(drawer.opened));\n    }\n  }\n\n  /**\n   * Subscribes to drawer onPositionChanged event in order to\n   * re-validate drawers when the position changes.\n   */\n  private _watchDrawerPosition(drawer: MatDrawer): void {\n    // NOTE: We need to wait for the microtask queue to be empty before validating,\n    // since both drawers may be swapping positions at the same time.\n    drawer.onPositionChanged.pipe(takeUntil(this._drawers.changes)).subscribe(() => {\n      afterNextRender({read: () => this._validateDrawers()}, {injector: this._injector});\n    });\n  }\n\n  /** Subscribes to changes in drawer mode so we can run change detection. */\n  private _watchDrawerMode(drawer: MatDrawer): void {\n    drawer._modeChanged\n      .pipe(takeUntil(merge(this._drawers.changes, this._destroyed)))\n      .subscribe(() => {\n        this.updateContentMargins();\n        this._changeDetectorRef.markForCheck();\n      });\n  }\n\n  /** Toggles the 'mat-drawer-opened' class on the main 'mat-drawer-container' element. */\n  private _setContainerClass(isAdd: boolean): void {\n    const classList = this._element.nativeElement.classList;\n    const className = 'mat-drawer-container-has-open';\n\n    if (isAdd) {\n      classList.add(className);\n    } else {\n      classList.remove(className);\n    }\n  }\n\n  /** Validate the state of the drawer children components. */\n  private _validateDrawers() {\n    this._start = this._end = null;\n\n    // Ensure that we have at most one start and one end drawer.\n    this._drawers.forEach(drawer => {\n      if (drawer.position == 'end') {\n        if (this._end != null && (typeof ngDevMode === 'undefined' || ngDevMode)) {\n          throwMatDuplicatedDrawerError('end');\n        }\n        this._end = drawer;\n      } else {\n        if (this._start != null && (typeof ngDevMode === 'undefined' || ngDevMode)) {\n          throwMatDuplicatedDrawerError('start');\n        }\n        this._start = drawer;\n      }\n    });\n\n    this._right = this._left = null;\n\n    // Detect if we're LTR or RTL.\n    if (this._dir && this._dir.value === 'rtl') {\n      this._left = this._end;\n      this._right = this._start;\n    } else {\n      this._left = this._start;\n      this._right = this._end;\n    }\n  }\n\n  /** Whether the container is being pushed to the side by one of the drawers. */\n  private _isPushed() {\n    return (\n      (this._isDrawerOpen(this._start) && this._start.mode != 'over') ||\n      (this._isDrawerOpen(this._end) && this._end.mode != 'over')\n    );\n  }\n\n  _onBackdropClicked() {\n    this.backdropClick.emit();\n    this._closeModalDrawersViaBackdrop();\n  }\n\n  _closeModalDrawersViaBackdrop() {\n    // Close all open drawers where closing is not disabled and the mode is not `side`.\n    [this._start, this._end]\n      .filter(drawer => drawer && !drawer.disableClose && this._drawerHasBackdrop(drawer))\n      .forEach(drawer => drawer!._closeViaBackdropClick());\n  }\n\n  _isShowingBackdrop(): boolean {\n    return (\n      (this._isDrawerOpen(this._start) && this._drawerHasBackdrop(this._start)) ||\n      (this._isDrawerOpen(this._end) && this._drawerHasBackdrop(this._end))\n    );\n  }\n\n  private _isDrawerOpen(drawer: MatDrawer | null): drawer is MatDrawer {\n    return drawer != null && drawer.opened;\n  }\n\n  // Whether argument drawer should have a backdrop when it opens\n  private _drawerHasBackdrop(drawer: MatDrawer | null) {\n    if (this._backdropOverride == null) {\n      return !!drawer && drawer.mode !== 'side';\n    }\n\n    return this._backdropOverride;\n  }\n}\n","<div class=\"mat-drawer-inner-container\" cdkScrollable #content>\r\n  <ng-content></ng-content>\r\n</div>\r\n","@if (hasBackdrop) {\n  <div class=\"mat-drawer-backdrop\" (click)=\"_onBackdropClicked()\"\n       [class.mat-drawer-shown]=\"_isShowingBackdrop()\"></div>\n}\n\n<ng-content select=\"mat-drawer, mat-sidenav\"/>\n<ng-content select=\"mat-drawer-content, mat-sidenav-content\"/>\n\n@if (!_content) {\n  <mat-drawer-content>\n    <ng-content/>\n  </mat-drawer-content>\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  Component,\n  ContentChild,\n  ContentChildren,\n  Input,\n  ViewEncapsulation,\n  QueryList,\n} from '@angular/core';\nimport {MatDrawer, MatDrawerContainer, MatDrawerContent, MAT_DRAWER_CONTAINER} from './drawer';\nimport {\n  BooleanInput,\n  coerceBooleanProperty,\n  coerceNumberProperty,\n  NumberInput,\n} from '@angular/cdk/coercion';\nimport {CdkScrollable} from '@angular/cdk/scrolling';\n\n@Component({\n  selector: 'mat-sidenav-content',\n  template: '<ng-content></ng-content>',\n  host: {\n    'class': 'mat-drawer-content mat-sidenav-content',\n  },\n  encapsulation: ViewEncapsulation.None,\n  providers: [\n    {\n      provide: CdkScrollable,\n      useExisting: MatSidenavContent,\n    },\n    {\n      provide: MatDrawerContent,\n      useExisting: MatSidenavContent,\n    },\n  ],\n})\nexport class MatSidenavContent extends MatDrawerContent {}\n\n@Component({\n  selector: 'mat-sidenav',\n  exportAs: 'matSidenav',\n  templateUrl: 'drawer.html',\n  host: {\n    'class': 'mat-drawer mat-sidenav',\n    // The sidenav container should not be focused on when used in side mode. See b/286459024 for\n    // reference. Updates tabIndex of drawer/container to default to null if in side mode.\n    '[attr.tabIndex]': '(mode !== \"side\") ? \"-1\" : null',\n    // must prevent the browser from aligning text based on value\n    '[attr.align]': 'null',\n    '[class.mat-drawer-end]': 'position === \"end\"',\n    '[class.mat-drawer-over]': 'mode === \"over\"',\n    '[class.mat-drawer-push]': 'mode === \"push\"',\n    '[class.mat-drawer-side]': 'mode === \"side\"',\n    '[class.mat-sidenav-fixed]': 'fixedInViewport',\n    '[style.top.px]': 'fixedInViewport ? fixedTopGap : null',\n    '[style.bottom.px]': 'fixedInViewport ? fixedBottomGap : null',\n  },\n  encapsulation: ViewEncapsulation.None,\n  imports: [CdkScrollable],\n  providers: [{provide: MatDrawer, useExisting: MatSidenav}],\n})\nexport class MatSidenav extends MatDrawer {\n  /** Whether the sidenav is fixed in the viewport. */\n  @Input()\n  get fixedInViewport(): boolean {\n    return this._fixedInViewport;\n  }\n  set fixedInViewport(value: BooleanInput) {\n    this._fixedInViewport = coerceBooleanProperty(value);\n  }\n  private _fixedInViewport = false;\n\n  /**\n   * The gap between the top of the sidenav and the top of the viewport when the sidenav is in fixed\n   * mode.\n   */\n  @Input()\n  get fixedTopGap(): number {\n    return this._fixedTopGap;\n  }\n  set fixedTopGap(value: NumberInput) {\n    this._fixedTopGap = coerceNumberProperty(value);\n  }\n  private _fixedTopGap = 0;\n\n  /**\n   * The gap between the bottom of the sidenav and the bottom of the viewport when the sidenav is in\n   * fixed mode.\n   */\n  @Input()\n  get fixedBottomGap(): number {\n    return this._fixedBottomGap;\n  }\n  set fixedBottomGap(value: NumberInput) {\n    this._fixedBottomGap = coerceNumberProperty(value);\n  }\n  private _fixedBottomGap = 0;\n}\n\n@Component({\n  selector: 'mat-sidenav-container',\n  exportAs: 'matSidenavContainer',\n  templateUrl: 'sidenav-container.html',\n  styleUrl: 'drawer.css',\n  host: {\n    'class': 'mat-drawer-container mat-sidenav-container',\n    '[class.mat-drawer-container-explicit-backdrop]': '_backdropOverride',\n  },\n  encapsulation: ViewEncapsulation.None,\n  providers: [\n    {\n      provide: MAT_DRAWER_CONTAINER,\n      useExisting: MatSidenavContainer,\n    },\n    {\n      provide: MatDrawerContainer,\n      useExisting: MatSidenavContainer,\n    },\n  ],\n  imports: [MatSidenavContent],\n})\nexport class MatSidenavContainer extends MatDrawerContainer {\n  @ContentChildren(MatSidenav, {\n    // We need to use `descendants: true`, because Ivy will no longer match\n    // indirect descendants if it's left as false.\n    descendants: true,\n  })\n  // We need an initializer here to avoid a TS error.\n  override _allDrawers: QueryList<MatSidenav> = undefined!;\n\n  // We need an initializer here to avoid a TS error.\n  @ContentChild(MatSidenavContent) override _content: MatSidenavContent = undefined!;\n}\n","@if (hasBackdrop) {\n  <div class=\"mat-drawer-backdrop\" (click)=\"_onBackdropClicked()\"\n       [class.mat-drawer-shown]=\"_isShowingBackdrop()\"></div>\n}\n\n<ng-content select=\"mat-drawer, mat-sidenav\"/>\n<ng-content select=\"mat-drawer-content, mat-sidenav-content\"/>\n\n@if (!_content) {\n  <mat-sidenav-content>\n    <ng-content/>\n  </mat-sidenav-content>\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 {BidiModule} from '@angular/cdk/bidi';\nimport {CdkScrollableModule} from '@angular/cdk/scrolling';\nimport {NgModule} from '@angular/core';\nimport {MatDrawer, MatDrawerContainer, MatDrawerContent} from './drawer';\nimport {MatSidenav, MatSidenavContainer, MatSidenavContent} from './sidenav';\n\n@NgModule({\n  imports: [\n    CdkScrollableModule,\n    MatDrawer,\n    MatDrawerContainer,\n    MatDrawerContent,\n    MatSidenav,\n    MatSidenavContainer,\n    MatSidenavContent,\n  ],\n  exports: [\n    BidiModule,\n    CdkScrollableModule,\n    MatDrawer,\n    MatDrawerContainer,\n    MatDrawerContent,\n    MatSidenav,\n    MatSidenavContainer,\n    MatSidenavContent,\n  ],\n})\nexport class MatSidenavModule {}\n"],"names":["throwMatDuplicatedDrawerError","position","Error","MAT_DRAWER_DEFAULT_AUTOSIZE","InjectionToken","providedIn","factory","MAT_DRAWER_CONTAINER","MatDrawerContent","CdkScrollable","_platform","inject","Platform","_changeDetectorRef","ChangeDetectorRef","_element","ElementRef","_ngZone","NgZone","_isInert","_container","MatDrawerContainer","ngAfterContentInit","_contentMarginChanges","subscribe","markForCheck","_drawerToggled","drawer","opened","runOutsideAngular","_animationEnd","pipe","delay","take","_updateInert","newValue","_isShowingBackdrop","element","nativeElement","setAttribute","removeAttribute","_shouldBeHidden","isBrowser","start","end","mode","deps","target","i0","ɵɵFactoryTarget","Component","ɵcmp","ɵɵngDeclareComponent","minVersion","version","type","isStandalone","selector","host","properties","classAttribute","providers","provide","useExisting","usesInheritance","ngImport","template","isInline","encapsulation","ViewEncapsulation","None","decorators","args","MatDrawer","_elementRef","_focusTrapFactory","FocusTrapFactory","_focusMonitor","FocusMonitor","_renderer","Renderer2","_interactivityChecker","InteractivityChecker","_doc","DOCUMENT","optional","_focusTrap","_elementFocusedBeforeDrawerWasOpened","_eventCleanups","_isAttached","_anchor","_position","value","_updatePositionInParent","onPositionChanged","emit","_mode","_updateFocusTrapState","_modeChanged","next","disableClose","_disableClose","coerceBooleanProperty","autoFocus","_autoFocus","_opened","toggle","signal","_openedVia","_animationStarted","Subject","openedChange","EventEmitter","_openedStream","filter","o","map","openedStart","mapTo","undefined","_closedStream","closedStart","_destroyed","_content","_injector","Injector","constructor","takeUntil","activeElement","_takeFocus","_isFocusWithinDrawer","_restoreFocus","renderer","listen","event","keyCode","ESCAPE","hasModifierKey","run","close","stopPropagation","preventDefault","_handleTransitionEvent","_focusByCssSelector","options","querySelector","isFocusable","tabIndex","callback","cleanupBlur","cleanupMousedown","focus","afterNextRender","hasMovedFocus","focusInitialElement","injector","focusOrigin","focusVia","blur","activeEl","contains","ngAfterViewInit","create","ngOnDestroy","forEach","cleanup","destroy","remove","complete","open","openedVia","_closeViaBackdropClick","_setOpen","isOpen","result","restoreFocus","Promise","resolve","set","_userContent","_transitionsEnabled","_setIsAnimating","setTimeout","classList","isAnimating","_getWidth","offsetWidth","enabled","newPosition","parent","parentNode","createComment","insertBefore","appendChild","inputs","outputs","viewQueries","propertyName","first","predicate","descendants","exportAs","dependencies","kind","imports","Input","Output","ViewChild","_dir","Directionality","_animationDisabled","_animationsDisabled","_allDrawers","_drawers","QueryList","_start","_end","autosize","_autosize","hasBackdrop","_drawerHasBackdrop","_backdropOverride","backdropClick","_left","_right","_doCheckSubject","_contentMargins","left","right","scrollable","platform","viewportRuler","ViewportRuler","change","_validateDrawers","updateContentMargins","add","changes","startWith","reset","item","notifyOnChanges","_watchDrawerToggle","_watchDrawerPosition","_watchDrawerMode","length","_isDrawerOpen","debounceTime","width","ngDoCheck","_isPushed","_setContainerClass","read","merge","isAdd","className","ngDevMode","_onBackdropClicked","_closeModalDrawersViaBackdrop","queries","styles","ContentChildren","ContentChild","MatSidenavContent","MatSidenav","fixedInViewport","_fixedInViewport","fixedTopGap","_fixedTopGap","coerceNumberProperty","fixedBottomGap","_fixedBottomGap","MatSidenavContainer","MatSidenavModule","NgModule","ɵmod","ɵɵngDeclareNgModule","CdkScrollableModule","BidiModule","exports"],"mappings":"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"}