mirror of https://github.com/ghostfolio/ghostfolio
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
1 lines
77 KiB
1 lines
77 KiB
{"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, ScrollDispatcher, ViewportRuler} from '@angular/cdk/scrolling';\n\nimport {\n AfterContentInit,\n afterNextRender,\n AfterViewInit,\n ChangeDetectionStrategy,\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, 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('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 changeDetection: ChangeDetectionStrategy.OnPush,\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 _container = inject(MatDrawerContainer);\n\n constructor(...args: unknown[]);\n\n constructor() {\n const elementRef = inject<ElementRef<HTMLElement>>(ElementRef);\n const scrollDispatcher = inject(ScrollDispatcher);\n const ngZone = inject(NgZone);\n\n super(elementRef, scrollDispatcher, ngZone);\n }\n\n ngAfterContentInit() {\n this._container._contentMarginChanges.subscribe(() => {\n this._changeDetectorRef.markForCheck();\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 changeDetection: ChangeDetectionStrategy.OnPush,\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(...args: unknown[]);\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, 'transitionrun', this._handleTransitionEvent),\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 provided element. If the element is not focusable, it will add a tabIndex\n * attribute to forcefully focus it. The attribute is removed after focus is moved.\n * @param element The element to focus.\n */\n private _forceFocus(element: HTMLElement, options?: FocusOptions) {\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 element.focus(options);\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 let elementToFocus = this._elementRef.nativeElement.querySelector(\n selector,\n ) as HTMLElement | null;\n if (elementToFocus) {\n this._forceFocus(elementToFocus, options);\n }\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\n if (this._container?._transitionsEnabled) {\n // Note: it's importatnt to set this as early as possible,\n // otherwise the animation can look glitchy in some cases.\n this._setIsAnimating(true);\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._container?.hasBackdrop && this.opened;\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 if (event.type === 'transitionrun') {\n this._animationStarted.next(event);\n } else {\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/**\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 changeDetection: ChangeDetectionStrategy.OnPush,\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(...args: unknown[]);\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\"></ng-content>\n\n<ng-content select=\"mat-drawer-content\">\n</ng-content>\n\n@if (!_content) {\n <mat-drawer-content>\n <ng-content></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 ChangeDetectionStrategy,\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 changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n providers: [\n {\n provide: CdkScrollable,\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 changeDetection: ChangeDetectionStrategy.OnPush,\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 changeDetection: ChangeDetectionStrategy.OnPush,\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-sidenav\"></ng-content>\n\n<ng-content select=\"mat-sidenav-content\">\n</ng-content>\n\n@if (!_content) {\n <mat-sidenav-content>\n <ng-content></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","_container","MatDrawerContainer","constructor","elementRef","ElementRef","scrollDispatcher","ScrollDispatcher","ngZone","NgZone","ngAfterContentInit","_contentMarginChanges","subscribe","markForCheck","_shouldBeHidden","isBrowser","start","end","mode","opened","deps","target","i0","ɵɵFactoryTarget","Component","ɵcmp","ɵɵngDeclareComponent","minVersion","version","type","isStandalone","selector","host","properties","classAttribute","providers","provide","useExisting","usesInheritance","ngImport","template","isInline","changeDetection","ChangeDetectionStrategy","OnPush","encapsulation","ViewEncapsulation","None","decorators","args","MatDrawer","_elementRef","_focusTrapFactory","FocusTrapFactory","_focusMonitor","FocusMonitor","_ngZone","_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","_animationEnd","openedChange","EventEmitter","_openedStream","pipe","filter","o","map","openedStart","mapTo","undefined","_closedStream","closedStart","_destroyed","_content","_injector","Injector","takeUntil","activeElement","_takeFocus","_isFocusWithinDrawer","_restoreFocus","runOutsideAngular","renderer","element","nativeElement","listen","event","keyCode","ESCAPE","hasModifierKey","run","close","stopPropagation","preventDefault","_handleTransitionEvent","_forceFocus","options","isFocusable","tabIndex","callback","cleanupBlur","cleanupMousedown","removeAttribute","focus","_focusByCssSelector","elementToFocus","querySelector","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","_transitionsEnabled","_setIsAnimating","setTimeout","classList","take","isAnimating","_getWidth","offsetWidth","enabled","hasBackdrop","newPosition","parent","parentNode","createComment","insertBefore","appendChild","inputs","outputs","viewQueries","propertyName","first","predicate","descendants","exportAs","dependencies","kind","imports","Input","Output","ViewChild","_dir","Directionality","_element","_animationDisabled","_animationsDisabled","_allDrawers","_drawers","QueryList","_userContent","_start","_end","autosize","_autosize","_drawerHasBackdrop","_backdropOverride","backdropClick","_left","_right","_doCheckSubject","_contentMargins","left","right","scrollable","platform","viewportRuler","ViewportRuler","change","_validateDrawers","updateContentMargins","add","changes","startWith","drawer","reset","item","notifyOnChanges","_watchDrawerToggle","_watchDrawerPosition","_watchDrawerMode","length","_isDrawerOpen","debounceTime","width","ngDoCheck","_isPushed","_setContainerClass","read","merge","isAdd","className","ngDevMode","_onBackdropClicked","_closeModalDrawersViaBackdrop","_isShowingBackdrop","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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"}
|