@angular/material 21.2.0-next.3 → 21.2.0-next.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -261,17 +261,16 @@ class MatTooltip {
261
261
  positionStrategy: strategy,
262
262
  panelClass: this._overlayPanelClass ? [...this._overlayPanelClass, panelClass] : panelClass,
263
263
  scrollStrategy: this._injector.get(MAT_TOOLTIP_SCROLL_STRATEGY)(),
264
- disableAnimations: this._animationsDisabled
264
+ disableAnimations: this._animationsDisabled,
265
+ eventPredicate: this._overlayEventPredicate
265
266
  });
266
267
  this._updatePosition(this._overlayRef);
267
268
  this._overlayRef.detachments().pipe(takeUntil(this._destroyed)).subscribe(() => this._detach());
268
269
  this._overlayRef.outsidePointerEvents().pipe(takeUntil(this._destroyed)).subscribe(() => this._tooltipInstance?._handleBodyInteraction());
269
270
  this._overlayRef.keydownEvents().pipe(takeUntil(this._destroyed)).subscribe(event => {
270
- if (this._isTooltipVisible() && event.keyCode === ESCAPE && !hasModifierKey(event)) {
271
- event.preventDefault();
272
- event.stopPropagation();
273
- this._ngZone.run(() => this.hide(0));
274
- }
271
+ event.preventDefault();
272
+ event.stopPropagation();
273
+ this._ngZone.run(() => this.hide(0));
275
274
  });
276
275
  if (this._defaultOptions?.disableTooltipInteractivity) {
277
276
  this._overlayRef.addPanelClass(`${this._cssClassPrefix}-tooltip-panel-non-interactive`);
@@ -566,6 +565,12 @@ class MatTooltip {
566
565
  });
567
566
  }
568
567
  }
568
+ _overlayEventPredicate = event => {
569
+ if (event.type === 'keydown') {
570
+ return this._isTooltipVisible() && event.keyCode === ESCAPE && !hasModifierKey(event);
571
+ }
572
+ return true;
573
+ };
569
574
  static ɵfac = i0.ɵɵngDeclareFactory({
570
575
  minVersion: "12.0.0",
571
576
  version: "21.0.3",
@@ -1 +1 @@
1
- {"version":3,"file":"_tooltip-chunk.mjs","sources":["../../../../../darwin_arm64-fastbuild-ST-fdfa778d11ba/bin/src/material/tooltip/tooltip.ts","../../../../../darwin_arm64-fastbuild-ST-fdfa778d11ba/bin/src/material/tooltip/tooltip.html"],"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 {takeUntil} from 'rxjs/operators';\nimport {\n BooleanInput,\n coerceBooleanProperty,\n coerceNumberProperty,\n NumberInput,\n} from '@angular/cdk/coercion';\nimport {ESCAPE, hasModifierKey} from '@angular/cdk/keycodes';\nimport {\n AfterViewInit,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n Directive,\n ElementRef,\n InjectionToken,\n Input,\n NgZone,\n OnDestroy,\n ViewChild,\n ViewContainerRef,\n ViewEncapsulation,\n inject,\n afterNextRender,\n Injector,\n DOCUMENT,\n Renderer2,\n} from '@angular/core';\nimport {Platform} from '@angular/cdk/platform';\nimport {AriaDescriber, FocusMonitor} from '@angular/cdk/a11y';\nimport {Directionality} from '@angular/cdk/bidi';\nimport {\n ConnectedPosition,\n ConnectionPositionPair,\n createFlexibleConnectedPositionStrategy,\n createOverlayRef,\n createRepositionScrollStrategy,\n FlexibleConnectedPositionStrategy,\n HorizontalConnectionPos,\n OriginConnectionPosition,\n OverlayConnectionPosition,\n OverlayRef,\n ScrollDispatcher,\n ScrollStrategy,\n VerticalConnectionPos,\n} from '@angular/cdk/overlay';\nimport {ComponentPortal} from '@angular/cdk/portal';\nimport {MediaMatcher} from '@angular/cdk/layout';\nimport {Observable, Subject} from 'rxjs';\nimport {_animationsDisabled} from '../core';\n\ndeclare global {\n interface CSSStyleDeclaration {\n msUserSelect: string;\n MozUserSelect: string;\n webkitUserDrag: string;\n webkitTapHighlightColor: string;\n }\n}\n\n/** Possible positions for a tooltip. */\nexport type TooltipPosition = 'left' | 'right' | 'above' | 'below' | 'before' | 'after';\n\n/**\n * Options for how the tooltip trigger should handle touch gestures.\n * See `MatTooltip.touchGestures` for more information.\n */\nexport type TooltipTouchGestures = 'auto' | 'on' | 'off';\n\n/** Possible visibility states of a tooltip. */\nexport type TooltipVisibility = 'initial' | 'visible' | 'hidden';\n\n/** Time in ms to throttle repositioning after scroll events. */\nexport const SCROLL_THROTTLE_MS = 20;\n\n/**\n * Creates an error to be thrown if the user supplied an invalid tooltip position.\n * @docs-private\n */\nexport function getMatTooltipInvalidPositionError(position: string) {\n return Error(`Tooltip position \"${position}\" is invalid.`);\n}\n\n/** Injection token that determines the scroll handling while a tooltip is visible. */\nexport const MAT_TOOLTIP_SCROLL_STRATEGY = new InjectionToken<() => ScrollStrategy>(\n 'mat-tooltip-scroll-strategy',\n {\n providedIn: 'root',\n factory: () => {\n const injector = inject(Injector);\n return () => createRepositionScrollStrategy(injector, {scrollThrottle: SCROLL_THROTTLE_MS});\n },\n },\n);\n\n/** Injection token to be used to override the default options for `matTooltip`. */\nexport const MAT_TOOLTIP_DEFAULT_OPTIONS = new InjectionToken<MatTooltipDefaultOptions>(\n 'mat-tooltip-default-options',\n {\n providedIn: 'root',\n factory: () => ({\n showDelay: 0,\n hideDelay: 0,\n touchendHideDelay: 1500,\n }),\n },\n);\n\n/** Default `matTooltip` options that can be overridden. */\nexport interface MatTooltipDefaultOptions {\n /** Default delay when the tooltip is shown. */\n showDelay: number;\n\n /** Default delay when the tooltip is hidden. */\n hideDelay: number;\n\n /** Default delay when hiding the tooltip on a touch device. */\n touchendHideDelay: number;\n\n /** Time between the user putting the pointer on a tooltip trigger and the long press event being fired on a touch device. */\n touchLongPressShowDelay?: number;\n\n /** Default touch gesture handling for tooltips. */\n touchGestures?: TooltipTouchGestures;\n\n /** Default position for tooltips. */\n position?: TooltipPosition;\n\n /**\n * Default value for whether tooltips should be positioned near the click or touch origin\n * instead of outside the element bounding box.\n */\n positionAtOrigin?: boolean;\n\n /** Disables the ability for the user to interact with the tooltip element. */\n disableTooltipInteractivity?: boolean;\n\n /**\n * Default classes to be applied to the tooltip. These default classes will not be applied if\n * `tooltipClass` is defined directly on the tooltip element, as it will override the default.\n */\n tooltipClass?: string | string[];\n\n /**\n * Whether the tooltip should use a media query to detect if the device is able to hover.\n * Note that this may affect tests that run in a headless browser which reports that it's\n * unable to hover. In such cases you may need to include an additional timeout, because\n * the tooltip will fall back to treating the device as a touch screen.\n */\n detectHoverCapability?: boolean;\n}\n\n/**\n * CSS class that will be attached to the overlay panel.\n * @deprecated\n * @breaking-change 13.0.0 remove this variable\n */\nexport const TOOLTIP_PANEL_CLASS = 'mat-mdc-tooltip-panel';\n\nconst PANEL_CLASS = 'tooltip-panel';\n\n/** Options used to bind passive event listeners. */\nconst passiveListenerOptions = {passive: true};\n\n// These constants were taken from MDC's `numbers` object. We can't import them from MDC,\n// because they have some top-level references to `window` which break during SSR.\nconst MIN_VIEWPORT_TOOLTIP_THRESHOLD = 8;\nconst UNBOUNDED_ANCHOR_GAP = 8;\nconst MIN_HEIGHT = 24;\nconst MAX_WIDTH = 200;\n\n/**\n * Directive that attaches a material design tooltip to the host element. Animates the showing and\n * hiding of a tooltip provided position (defaults to below the element).\n *\n * https://material.io/design/components/tooltips.html\n */\n@Directive({\n selector: '[matTooltip]',\n exportAs: 'matTooltip',\n host: {\n 'class': 'mat-mdc-tooltip-trigger',\n '[class.mat-mdc-tooltip-disabled]': 'disabled',\n },\n})\nexport class MatTooltip implements OnDestroy, AfterViewInit {\n private _elementRef = inject<ElementRef<HTMLElement>>(ElementRef);\n private _ngZone = inject(NgZone);\n private _platform = inject(Platform);\n private _ariaDescriber = inject(AriaDescriber);\n private _focusMonitor = inject(FocusMonitor);\n protected _dir = inject(Directionality);\n private _injector = inject(Injector);\n private _viewContainerRef = inject(ViewContainerRef);\n private _mediaMatcher = inject(MediaMatcher);\n private _document = inject(DOCUMENT);\n private _renderer = inject(Renderer2);\n private _animationsDisabled = _animationsDisabled();\n private _defaultOptions = inject<MatTooltipDefaultOptions>(MAT_TOOLTIP_DEFAULT_OPTIONS, {\n optional: true,\n });\n\n _overlayRef: OverlayRef | null = null;\n _tooltipInstance: TooltipComponent | null = null;\n _overlayPanelClass: string[] | undefined; // Used for styling internally.\n\n private _portal!: ComponentPortal<TooltipComponent>;\n private _position: TooltipPosition = 'below';\n private _positionAtOrigin: boolean = false;\n private _disabled: boolean = false;\n private _tooltipClass!: string | string[] | Set<string> | {[key: string]: unknown};\n private _viewInitialized = false;\n private _pointerExitEventsInitialized = false;\n private readonly _tooltipComponent = TooltipComponent;\n private _viewportMargin = 8;\n private _currentPosition!: TooltipPosition;\n private readonly _cssClassPrefix: string = 'mat-mdc';\n private _ariaDescriptionPending = false;\n private _dirSubscribed = false;\n\n /** Allows the user to define the position of the tooltip relative to the parent element */\n @Input('matTooltipPosition')\n get position(): TooltipPosition {\n return this._position;\n }\n\n set position(value: TooltipPosition) {\n if (value !== this._position) {\n this._position = value;\n\n if (this._overlayRef) {\n this._updatePosition(this._overlayRef);\n this._tooltipInstance?.show(0);\n this._overlayRef.updatePosition();\n }\n }\n }\n\n /**\n * Whether tooltip should be relative to the click or touch origin\n * instead of outside the element bounding box.\n */\n @Input('matTooltipPositionAtOrigin')\n get positionAtOrigin(): boolean {\n return this._positionAtOrigin;\n }\n\n set positionAtOrigin(value: BooleanInput) {\n this._positionAtOrigin = coerceBooleanProperty(value);\n this._detach();\n this._overlayRef = null;\n }\n\n /** Disables the display of the tooltip. */\n @Input('matTooltipDisabled')\n get disabled(): boolean {\n return this._disabled;\n }\n\n set disabled(value: BooleanInput) {\n const isDisabled = coerceBooleanProperty(value);\n\n if (this._disabled !== isDisabled) {\n this._disabled = isDisabled;\n\n // If tooltip is disabled, hide immediately.\n if (isDisabled) {\n this.hide(0);\n } else {\n this._setupPointerEnterEventsIfNeeded();\n }\n\n this._syncAriaDescription(this.message);\n }\n }\n\n /** The default delay in ms before showing the tooltip after show is called */\n @Input('matTooltipShowDelay')\n get showDelay(): number {\n return this._showDelay;\n }\n\n set showDelay(value: NumberInput) {\n this._showDelay = coerceNumberProperty(value);\n }\n\n private _showDelay!: number;\n\n /** The default delay in ms before hiding the tooltip after hide is called */\n @Input('matTooltipHideDelay')\n get hideDelay(): number {\n return this._hideDelay;\n }\n\n set hideDelay(value: NumberInput) {\n this._hideDelay = coerceNumberProperty(value);\n\n if (this._tooltipInstance) {\n this._tooltipInstance._mouseLeaveHideDelay = this._hideDelay;\n }\n }\n\n private _hideDelay!: number;\n\n /**\n * How touch gestures should be handled by the tooltip. On touch devices the tooltip directive\n * uses a long press gesture to show and hide, however it can conflict with the native browser\n * gestures. To work around the conflict, Angular Material disables native gestures on the\n * trigger, but that might not be desirable on particular elements (e.g. inputs and draggable\n * elements). The different values for this option configure the touch event handling as follows:\n * - `auto` - Enables touch gestures for all elements, but tries to avoid conflicts with native\n * browser gestures on particular elements. In particular, it allows text selection on inputs\n * and textareas, and preserves the native browser dragging on elements marked as `draggable`.\n * - `on` - Enables touch gestures for all elements and disables native\n * browser gestures with no exceptions.\n * - `off` - Disables touch gestures. Note that this will prevent the tooltip from\n * showing on touch devices.\n */\n @Input('matTooltipTouchGestures') touchGestures: TooltipTouchGestures = 'auto';\n\n /** The message to be displayed in the tooltip */\n @Input('matTooltip')\n get message(): string {\n return this._message;\n }\n\n set message(value: string | number | null | undefined) {\n const oldMessage = this._message;\n\n // If the message is not a string (e.g. number), convert it to a string and trim it.\n // Must convert with `String(value)`, not `${value}`, otherwise Closure Compiler optimises\n // away the string-conversion: https://github.com/angular/components/issues/20684\n this._message = value != null ? String(value).trim() : '';\n\n if (!this._message && this._isTooltipVisible()) {\n this.hide(0);\n } else {\n this._setupPointerEnterEventsIfNeeded();\n this._updateTooltipMessage();\n }\n\n this._syncAriaDescription(oldMessage);\n }\n\n private _message = '';\n\n /** Classes to be passed to the tooltip. Supports the same syntax as `ngClass`. */\n @Input('matTooltipClass')\n get tooltipClass() {\n return this._tooltipClass;\n }\n\n set tooltipClass(value: string | string[] | Set<string> | {[key: string]: unknown}) {\n this._tooltipClass = value;\n if (this._tooltipInstance) {\n this._setTooltipClass(this._tooltipClass);\n }\n }\n\n /** Manually-bound passive event listeners. */\n private readonly _eventCleanups: (() => void)[] = [];\n\n /** Timer started at the last `touchstart` event. */\n private _touchstartTimeout: null | ReturnType<typeof setTimeout> = null;\n\n /** Emits when the component is destroyed. */\n private readonly _destroyed = new Subject<void>();\n\n /** Whether ngOnDestroyed has been called. */\n private _isDestroyed = false;\n\n constructor(...args: unknown[]);\n\n constructor() {\n const defaultOptions = this._defaultOptions;\n\n if (defaultOptions) {\n this._showDelay = defaultOptions.showDelay;\n this._hideDelay = defaultOptions.hideDelay;\n\n if (defaultOptions.position) {\n this.position = defaultOptions.position;\n }\n\n if (defaultOptions.positionAtOrigin) {\n this.positionAtOrigin = defaultOptions.positionAtOrigin;\n }\n\n if (defaultOptions.touchGestures) {\n this.touchGestures = defaultOptions.touchGestures;\n }\n\n if (defaultOptions.tooltipClass) {\n this.tooltipClass = defaultOptions.tooltipClass;\n }\n }\n\n this._viewportMargin = MIN_VIEWPORT_TOOLTIP_THRESHOLD;\n }\n\n ngAfterViewInit() {\n // This needs to happen after view init so the initial values for all inputs have been set.\n this._viewInitialized = true;\n this._setupPointerEnterEventsIfNeeded();\n\n this._focusMonitor\n .monitor(this._elementRef)\n .pipe(takeUntil(this._destroyed))\n .subscribe(origin => {\n // Note that the focus monitor runs outside the Angular zone.\n if (!origin) {\n this._ngZone.run(() => this.hide(0));\n } else if (origin === 'keyboard') {\n this._ngZone.run(() => this.show());\n }\n });\n }\n\n /**\n * Dispose the tooltip when destroyed.\n */\n ngOnDestroy() {\n const nativeElement = this._elementRef.nativeElement;\n\n // Optimization: Do not call clearTimeout unless there is an active timer.\n if (this._touchstartTimeout) {\n clearTimeout(this._touchstartTimeout);\n }\n\n if (this._overlayRef) {\n this._overlayRef.dispose();\n this._tooltipInstance = null;\n }\n\n this._eventCleanups.forEach(cleanup => cleanup());\n this._eventCleanups.length = 0;\n this._destroyed.next();\n this._destroyed.complete();\n this._isDestroyed = true;\n this._ariaDescriber.removeDescription(nativeElement, this.message, 'tooltip');\n this._focusMonitor.stopMonitoring(nativeElement);\n }\n\n /** Shows the tooltip after the delay in ms, defaults to tooltip-delay-show or 0ms if no input */\n show(delay: number = this.showDelay, origin?: {x: number; y: number}): void {\n if (this.disabled || !this.message || this._isTooltipVisible()) {\n this._tooltipInstance?._cancelPendingAnimations();\n return;\n }\n\n const overlayRef = this._createOverlay(origin);\n this._detach();\n this._portal =\n this._portal || new ComponentPortal(this._tooltipComponent, this._viewContainerRef);\n const instance = (this._tooltipInstance = overlayRef.attach(this._portal).instance);\n instance._triggerElement = this._elementRef.nativeElement;\n instance._mouseLeaveHideDelay = this._hideDelay;\n instance\n .afterHidden()\n .pipe(takeUntil(this._destroyed))\n .subscribe(() => this._detach());\n this._setTooltipClass(this._tooltipClass);\n this._updateTooltipMessage();\n instance.show(delay);\n }\n\n /** Hides the tooltip after the delay in ms, defaults to tooltip-delay-hide or 0ms if no input */\n hide(delay: number = this.hideDelay): void {\n const instance = this._tooltipInstance;\n\n if (instance) {\n if (instance.isVisible()) {\n instance.hide(delay);\n } else {\n instance._cancelPendingAnimations();\n this._detach();\n }\n }\n }\n\n /** Shows/hides the tooltip */\n toggle(origin?: {x: number; y: number}): void {\n this._isTooltipVisible() ? this.hide() : this.show(undefined, origin);\n }\n\n /** Returns true if the tooltip is currently visible to the user */\n _isTooltipVisible(): boolean {\n return !!this._tooltipInstance && this._tooltipInstance.isVisible();\n }\n\n /** Create the overlay config and position strategy */\n private _createOverlay(origin?: {x: number; y: number}): OverlayRef {\n if (this._overlayRef) {\n const existingStrategy = this._overlayRef.getConfig()\n .positionStrategy as FlexibleConnectedPositionStrategy;\n\n if ((!this.positionAtOrigin || !origin) && existingStrategy._origin instanceof ElementRef) {\n return this._overlayRef;\n }\n\n this._detach();\n }\n\n const scrollableAncestors = this._injector\n .get(ScrollDispatcher)\n .getAncestorScrollContainers(this._elementRef);\n\n const panelClass = `${this._cssClassPrefix}-${PANEL_CLASS}`;\n\n // Create connected position strategy that listens for scroll events to reposition.\n const strategy = createFlexibleConnectedPositionStrategy(\n this._injector,\n this.positionAtOrigin ? origin || this._elementRef : this._elementRef,\n )\n .withTransformOriginOn(`.${this._cssClassPrefix}-tooltip`)\n .withFlexibleDimensions(false)\n .withViewportMargin(this._viewportMargin)\n .withScrollableContainers(scrollableAncestors)\n .withPopoverLocation('global');\n\n strategy.positionChanges.pipe(takeUntil(this._destroyed)).subscribe(change => {\n this._updateCurrentPositionClass(change.connectionPair);\n\n if (this._tooltipInstance) {\n if (change.scrollableViewProperties.isOverlayClipped && this._tooltipInstance.isVisible()) {\n // After position changes occur and the overlay is clipped by\n // a parent scrollable then close the tooltip.\n this._ngZone.run(() => this.hide(0));\n }\n }\n });\n\n this._overlayRef = createOverlayRef(this._injector, {\n direction: this._dir,\n positionStrategy: strategy,\n panelClass: this._overlayPanelClass ? [...this._overlayPanelClass, panelClass] : panelClass,\n scrollStrategy: this._injector.get(MAT_TOOLTIP_SCROLL_STRATEGY)(),\n disableAnimations: this._animationsDisabled,\n });\n\n this._updatePosition(this._overlayRef);\n\n this._overlayRef\n .detachments()\n .pipe(takeUntil(this._destroyed))\n .subscribe(() => this._detach());\n\n this._overlayRef\n .outsidePointerEvents()\n .pipe(takeUntil(this._destroyed))\n .subscribe(() => this._tooltipInstance?._handleBodyInteraction());\n\n this._overlayRef\n .keydownEvents()\n .pipe(takeUntil(this._destroyed))\n .subscribe(event => {\n if (this._isTooltipVisible() && event.keyCode === ESCAPE && !hasModifierKey(event)) {\n event.preventDefault();\n event.stopPropagation();\n this._ngZone.run(() => this.hide(0));\n }\n });\n\n if (this._defaultOptions?.disableTooltipInteractivity) {\n this._overlayRef.addPanelClass(`${this._cssClassPrefix}-tooltip-panel-non-interactive`);\n }\n\n if (!this._dirSubscribed) {\n this._dirSubscribed = true;\n this._dir.change.pipe(takeUntil(this._destroyed)).subscribe(() => {\n if (this._overlayRef) {\n this._updatePosition(this._overlayRef);\n }\n });\n }\n\n return this._overlayRef;\n }\n\n /** Detaches the currently-attached tooltip. */\n private _detach() {\n if (this._overlayRef && this._overlayRef.hasAttached()) {\n this._overlayRef.detach();\n }\n\n this._tooltipInstance = null;\n }\n\n /** Updates the position of the current tooltip. */\n private _updatePosition(overlayRef: OverlayRef) {\n const position = overlayRef.getConfig().positionStrategy as FlexibleConnectedPositionStrategy;\n const origin = this._getOrigin();\n const overlay = this._getOverlayPosition();\n\n position.withPositions([\n this._addOffset({...origin.main, ...overlay.main}),\n this._addOffset({...origin.fallback, ...overlay.fallback}),\n ]);\n }\n\n /** Adds the configured offset to a position. Used as a hook for child classes. */\n protected _addOffset(position: ConnectedPosition): ConnectedPosition {\n const offset = UNBOUNDED_ANCHOR_GAP;\n const isLtr = !this._dir || this._dir.value == 'ltr';\n\n if (position.originY === 'top') {\n position.offsetY = -offset;\n } else if (position.originY === 'bottom') {\n position.offsetY = offset;\n } else if (position.originX === 'start') {\n position.offsetX = isLtr ? -offset : offset;\n } else if (position.originX === 'end') {\n position.offsetX = isLtr ? offset : -offset;\n }\n\n return position;\n }\n\n /**\n * Returns the origin position and a fallback position based on the user's position preference.\n * The fallback position is the inverse of the origin (e.g. `'below' -> 'above'`).\n */\n _getOrigin(): {main: OriginConnectionPosition; fallback: OriginConnectionPosition} {\n const isLtr = !this._dir || this._dir.value == 'ltr';\n const position = this.position;\n let originPosition: OriginConnectionPosition;\n\n if (position == 'above' || position == 'below') {\n originPosition = {originX: 'center', originY: position == 'above' ? 'top' : 'bottom'};\n } else if (\n position == 'before' ||\n (position == 'left' && isLtr) ||\n (position == 'right' && !isLtr)\n ) {\n originPosition = {originX: 'start', originY: 'center'};\n } else if (\n position == 'after' ||\n (position == 'right' && isLtr) ||\n (position == 'left' && !isLtr)\n ) {\n originPosition = {originX: 'end', originY: 'center'};\n } else if (typeof ngDevMode === 'undefined' || ngDevMode) {\n throw getMatTooltipInvalidPositionError(position);\n }\n\n const {x, y} = this._invertPosition(originPosition!.originX, originPosition!.originY);\n\n return {\n main: originPosition!,\n fallback: {originX: x, originY: y},\n };\n }\n\n /** Returns the overlay position and a fallback position based on the user's preference */\n _getOverlayPosition(): {main: OverlayConnectionPosition; fallback: OverlayConnectionPosition} {\n const isLtr = !this._dir || this._dir.value == 'ltr';\n const position = this.position;\n let overlayPosition: OverlayConnectionPosition;\n\n if (position == 'above') {\n overlayPosition = {overlayX: 'center', overlayY: 'bottom'};\n } else if (position == 'below') {\n overlayPosition = {overlayX: 'center', overlayY: 'top'};\n } else if (\n position == 'before' ||\n (position == 'left' && isLtr) ||\n (position == 'right' && !isLtr)\n ) {\n overlayPosition = {overlayX: 'end', overlayY: 'center'};\n } else if (\n position == 'after' ||\n (position == 'right' && isLtr) ||\n (position == 'left' && !isLtr)\n ) {\n overlayPosition = {overlayX: 'start', overlayY: 'center'};\n } else if (typeof ngDevMode === 'undefined' || ngDevMode) {\n throw getMatTooltipInvalidPositionError(position);\n }\n\n const {x, y} = this._invertPosition(overlayPosition!.overlayX, overlayPosition!.overlayY);\n\n return {\n main: overlayPosition!,\n fallback: {overlayX: x, overlayY: y},\n };\n }\n\n /** Updates the tooltip message and repositions the overlay according to the new message length */\n private _updateTooltipMessage() {\n // Must wait for the message to be painted to the tooltip so that the overlay can properly\n // calculate the correct positioning based on the size of the text.\n if (this._tooltipInstance) {\n this._tooltipInstance.message = this.message;\n this._tooltipInstance._markForCheck();\n\n afterNextRender(\n () => {\n if (this._tooltipInstance) {\n this._overlayRef!.updatePosition();\n }\n },\n {\n injector: this._injector,\n },\n );\n }\n }\n\n /** Updates the tooltip class */\n private _setTooltipClass(\n tooltipClass: string | string[] | Set<string> | {[key: string]: unknown},\n ) {\n if (this._tooltipInstance) {\n this._tooltipInstance.tooltipClass =\n tooltipClass instanceof Set ? Array.from(tooltipClass) : tooltipClass;\n this._tooltipInstance._markForCheck();\n }\n }\n\n /** Inverts an overlay position. */\n private _invertPosition(x: HorizontalConnectionPos, y: VerticalConnectionPos) {\n if (this.position === 'above' || this.position === 'below') {\n if (y === 'top') {\n y = 'bottom';\n } else if (y === 'bottom') {\n y = 'top';\n }\n } else {\n if (x === 'end') {\n x = 'start';\n } else if (x === 'start') {\n x = 'end';\n }\n }\n\n return {x, y};\n }\n\n /** Updates the class on the overlay panel based on the current position of the tooltip. */\n private _updateCurrentPositionClass(connectionPair: ConnectionPositionPair): void {\n const {overlayY, originX, originY} = connectionPair;\n let newPosition: TooltipPosition;\n\n // If the overlay is in the middle along the Y axis,\n // it means that it's either before or after.\n if (overlayY === 'center') {\n // Note that since this information is used for styling, we want to\n // resolve `start` and `end` to their real values, otherwise consumers\n // would have to remember to do it themselves on each consumption.\n if (this._dir && this._dir.value === 'rtl') {\n newPosition = originX === 'end' ? 'left' : 'right';\n } else {\n newPosition = originX === 'start' ? 'left' : 'right';\n }\n } else {\n newPosition = overlayY === 'bottom' && originY === 'top' ? 'above' : 'below';\n }\n\n if (newPosition !== this._currentPosition) {\n const overlayRef = this._overlayRef;\n\n if (overlayRef) {\n const classPrefix = `${this._cssClassPrefix}-${PANEL_CLASS}-`;\n overlayRef.removePanelClass(classPrefix + this._currentPosition);\n overlayRef.addPanelClass(classPrefix + newPosition);\n }\n\n this._currentPosition = newPosition;\n }\n }\n\n /** Binds the pointer events to the tooltip trigger. */\n private _setupPointerEnterEventsIfNeeded() {\n // Optimization: Defer hooking up events if there's no message or the tooltip is disabled.\n if (this._disabled || !this.message || !this._viewInitialized || this._eventCleanups.length) {\n return;\n }\n\n // The mouse events shouldn't be bound on mobile devices, because they can prevent the\n // first tap from firing its click event or can cause the tooltip to open for clicks.\n if (!this._isTouchPlatform()) {\n this._addListener('mouseenter', (event: MouseEvent) => {\n this._setupPointerExitEventsIfNeeded();\n let point = undefined;\n if (event.x !== undefined && event.y !== undefined) {\n point = event;\n }\n this.show(undefined, point);\n });\n } else if (this.touchGestures !== 'off') {\n this._disableNativeGesturesIfNecessary();\n this._addListener('touchstart', (event: TouchEvent) => {\n const touch = event.targetTouches?.[0];\n const origin = touch ? {x: touch.clientX, y: touch.clientY} : undefined;\n // Note that it's important that we don't `preventDefault` here,\n // because it can prevent click events from firing on the element.\n this._setupPointerExitEventsIfNeeded();\n if (this._touchstartTimeout) {\n clearTimeout(this._touchstartTimeout);\n }\n\n const DEFAULT_LONGPRESS_DELAY = 500;\n this._touchstartTimeout = setTimeout(() => {\n this._touchstartTimeout = null;\n this.show(undefined, origin);\n }, this._defaultOptions?.touchLongPressShowDelay ?? DEFAULT_LONGPRESS_DELAY);\n });\n }\n }\n\n private _setupPointerExitEventsIfNeeded() {\n if (this._pointerExitEventsInitialized) {\n return;\n }\n this._pointerExitEventsInitialized = true;\n\n if (!this._isTouchPlatform()) {\n this._addListener('mouseleave', (event: MouseEvent) => {\n const newTarget = event.relatedTarget as Node | null;\n if (!newTarget || !this._overlayRef?.overlayElement.contains(newTarget)) {\n this.hide();\n }\n });\n\n this._addListener('wheel', (event: WheelEvent) => {\n if (this._isTooltipVisible()) {\n const elementUnderPointer = this._document.elementFromPoint(event.clientX, event.clientY);\n const element = this._elementRef.nativeElement;\n\n // On non-touch devices we depend on the `mouseleave` event to close the tooltip, but it\n // won't fire if the user scrolls away using the wheel without moving their cursor. We\n // work around it by finding the element under the user's cursor and closing the tooltip\n // if it's not the trigger.\n if (elementUnderPointer !== element && !element.contains(elementUnderPointer)) {\n this.hide();\n }\n }\n });\n } else if (this.touchGestures !== 'off') {\n this._disableNativeGesturesIfNecessary();\n const touchendListener = () => {\n if (this._touchstartTimeout) {\n clearTimeout(this._touchstartTimeout);\n }\n this.hide(this._defaultOptions?.touchendHideDelay);\n };\n\n this._addListener('touchend', touchendListener);\n this._addListener('touchcancel', touchendListener);\n }\n }\n\n private _addListener<T extends Event>(name: string, listener: (event: T) => void) {\n this._eventCleanups.push(\n this._renderer.listen(this._elementRef.nativeElement, name, listener, passiveListenerOptions),\n );\n }\n\n private _isTouchPlatform(): boolean {\n if (this._platform.IOS || this._platform.ANDROID) {\n // If we detected iOS or Android, it's definitely supported.\n return true;\n } else if (!this._platform.isBrowser) {\n // If it's not a browser, it's definitely not supported.\n return false;\n }\n\n return (\n !!this._defaultOptions?.detectHoverCapability &&\n this._mediaMatcher.matchMedia('(any-hover: none)').matches\n );\n }\n\n /** Disables the native browser gestures, based on how the tooltip has been configured. */\n private _disableNativeGesturesIfNecessary() {\n const gestures = this.touchGestures;\n\n if (gestures !== 'off') {\n const element = this._elementRef.nativeElement;\n const style = element.style;\n\n // If gestures are set to `auto`, we don't disable text selection on inputs and\n // textareas, because it prevents the user from typing into them on iOS Safari.\n if (gestures === 'on' || (element.nodeName !== 'INPUT' && element.nodeName !== 'TEXTAREA')) {\n style.userSelect =\n style.msUserSelect =\n style.webkitUserSelect =\n style.MozUserSelect =\n 'none';\n }\n\n // If we have `auto` gestures and the element uses native HTML dragging,\n // we don't set `-webkit-user-drag` because it prevents the native behavior.\n if (gestures === 'on' || !element.draggable) {\n style.webkitUserDrag = 'none';\n }\n\n style.touchAction = 'none';\n style.webkitTapHighlightColor = 'transparent';\n }\n }\n\n /** Updates the tooltip's ARIA description based on it current state. */\n private _syncAriaDescription(oldMessage: string): void {\n if (this._ariaDescriptionPending) {\n return;\n }\n\n this._ariaDescriptionPending = true;\n this._ariaDescriber.removeDescription(this._elementRef.nativeElement, oldMessage, 'tooltip');\n\n // The `AriaDescriber` has some functionality that avoids adding a description if it's the\n // same as the `aria-label` of an element, however we can't know whether the tooltip trigger\n // has a data-bound `aria-label` or when it'll be set for the first time. We can avoid the\n // issue by deferring the description by a tick so Angular has time to set the `aria-label`.\n if (!this._isDestroyed) {\n afterNextRender(\n {\n write: () => {\n this._ariaDescriptionPending = false;\n\n if (this.message && !this.disabled) {\n this._ariaDescriber.describe(this._elementRef.nativeElement, this.message, 'tooltip');\n }\n },\n },\n {injector: this._injector},\n );\n }\n }\n}\n\n/**\n * Internal component that wraps the tooltip's content.\n * @docs-private\n */\n@Component({\n selector: 'mat-tooltip-component',\n templateUrl: 'tooltip.html',\n styleUrl: 'tooltip.css',\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n '(mouseleave)': '_handleMouseLeave($event)',\n 'aria-hidden': 'true',\n },\n})\nexport class TooltipComponent implements OnDestroy {\n private _changeDetectorRef = inject(ChangeDetectorRef);\n protected _elementRef = inject<ElementRef<HTMLElement>>(ElementRef);\n\n /* Whether the tooltip text overflows to multiple lines */\n _isMultiline = false;\n\n /** Message to display in the tooltip */\n message!: string;\n\n /** Classes to be added to the tooltip. */\n tooltipClass!: string | string[] | {[key: string]: unknown};\n\n /** The timeout ID of any current timer set to show the tooltip */\n private _showTimeoutId: ReturnType<typeof setTimeout> | undefined;\n\n /** The timeout ID of any current timer set to hide the tooltip */\n private _hideTimeoutId: ReturnType<typeof setTimeout> | undefined;\n\n /** Element that caused the tooltip to open. */\n _triggerElement!: HTMLElement;\n\n /** Amount of milliseconds to delay the closing sequence. */\n _mouseLeaveHideDelay!: number;\n\n /** Whether animations are currently disabled. */\n private _animationsDisabled = _animationsDisabled();\n\n /** Reference to the internal tooltip element. */\n @ViewChild('tooltip', {\n // Use a static query here since we interact directly with\n // the DOM which can happen before `ngAfterViewInit`.\n static: true,\n })\n _tooltip!: ElementRef<HTMLElement>;\n\n /** Whether interactions on the page should close the tooltip */\n private _closeOnInteraction = false;\n\n /** Whether the tooltip is currently visible. */\n private _isVisible = false;\n\n /** Subject for notifying that the tooltip has been hidden from the view */\n private readonly _onHide: Subject<void> = new Subject();\n\n /** Name of the show animation and the class that toggles it. */\n private readonly _showAnimation = 'mat-mdc-tooltip-show';\n\n /** Name of the hide animation and the class that toggles it. */\n private readonly _hideAnimation = 'mat-mdc-tooltip-hide';\n\n constructor(...args: unknown[]);\n\n constructor() {}\n\n /**\n * Shows the tooltip with an animation originating from the provided origin\n * @param delay Amount of milliseconds to the delay showing the tooltip.\n */\n show(delay: number): void {\n // Cancel the delayed hide if it is scheduled\n if (this._hideTimeoutId != null) {\n clearTimeout(this._hideTimeoutId);\n }\n\n this._showTimeoutId = setTimeout(() => {\n this._toggleVisibility(true);\n this._showTimeoutId = undefined;\n }, delay);\n }\n\n /**\n * Begins the animation to hide the tooltip after the provided delay in ms.\n * @param delay Amount of milliseconds to delay showing the tooltip.\n */\n hide(delay: number): void {\n // Cancel the delayed show if it is scheduled\n if (this._showTimeoutId != null) {\n clearTimeout(this._showTimeoutId);\n }\n\n this._hideTimeoutId = setTimeout(() => {\n this._toggleVisibility(false);\n this._hideTimeoutId = undefined;\n }, delay);\n }\n\n /** Returns an observable that notifies when the tooltip has been hidden from view. */\n afterHidden(): Observable<void> {\n return this._onHide;\n }\n\n /** Whether the tooltip is being displayed. */\n isVisible(): boolean {\n return this._isVisible;\n }\n\n ngOnDestroy() {\n this._cancelPendingAnimations();\n this._onHide.complete();\n this._triggerElement = null!;\n }\n\n /**\n * Interactions on the HTML body should close the tooltip immediately as defined in the\n * material design spec.\n * https://material.io/design/components/tooltips.html#behavior\n */\n _handleBodyInteraction(): void {\n if (this._closeOnInteraction) {\n this.hide(0);\n }\n }\n\n /**\n * Marks that the tooltip needs to be checked in the next change detection run.\n * Mainly used for rendering the initial text before positioning a tooltip, which\n * can be problematic in components with OnPush change detection.\n */\n _markForCheck(): void {\n this._changeDetectorRef.markForCheck();\n }\n\n _handleMouseLeave({relatedTarget}: MouseEvent) {\n if (!relatedTarget || !this._triggerElement.contains(relatedTarget as Node)) {\n if (this.isVisible()) {\n this.hide(this._mouseLeaveHideDelay);\n } else {\n this._finalizeAnimation(false);\n }\n }\n }\n\n /**\n * Callback for when the timeout in this.show() gets completed.\n * This method is only needed by the mdc-tooltip, and so it is only implemented\n * in the mdc-tooltip, not here.\n */\n protected _onShow(): void {\n this._isMultiline = this._isTooltipMultiline();\n this._markForCheck();\n }\n\n /** Whether the tooltip text has overflown to the next line */\n private _isTooltipMultiline() {\n const rect = this._elementRef.nativeElement.getBoundingClientRect();\n return rect.height > MIN_HEIGHT && rect.width >= MAX_WIDTH;\n }\n\n /** Event listener dispatched when an animation on the tooltip finishes. */\n _handleAnimationEnd({animationName}: AnimationEvent) {\n if (animationName === this._showAnimation || animationName === this._hideAnimation) {\n this._finalizeAnimation(animationName === this._showAnimation);\n }\n }\n\n /** Cancels any pending animation sequences. */\n _cancelPendingAnimations() {\n if (this._showTimeoutId != null) {\n clearTimeout(this._showTimeoutId);\n }\n\n if (this._hideTimeoutId != null) {\n clearTimeout(this._hideTimeoutId);\n }\n\n this._showTimeoutId = this._hideTimeoutId = undefined;\n }\n\n /** Handles the cleanup after an animation has finished. */\n private _finalizeAnimation(toVisible: boolean) {\n if (toVisible) {\n this._closeOnInteraction = true;\n } else if (!this.isVisible()) {\n this._onHide.next();\n }\n }\n\n /** Toggles the visibility of the tooltip element. */\n private _toggleVisibility(isVisible: boolean) {\n // We set the classes directly here ourselves so that toggling the tooltip state\n // isn't bound by change detection. This allows us to hide it even if the\n // view ref has been detached from the CD tree.\n const tooltip = this._tooltip.nativeElement;\n const showClass = this._showAnimation;\n const hideClass = this._hideAnimation;\n tooltip.classList.remove(isVisible ? hideClass : showClass);\n tooltip.classList.add(isVisible ? showClass : hideClass);\n if (this._isVisible !== isVisible) {\n this._isVisible = isVisible;\n this._changeDetectorRef.markForCheck();\n }\n\n // It's common for internal apps to disable animations using `* { animation: none !important }`\n // which can break the opening sequence. Try to detect such cases and work around them.\n if (isVisible && !this._animationsDisabled && typeof getComputedStyle === 'function') {\n const styles = getComputedStyle(tooltip);\n\n // Use `getPropertyValue` to avoid issues with property renaming.\n if (\n styles.getPropertyValue('animation-duration') === '0s' ||\n styles.getPropertyValue('animation-name') === 'none'\n ) {\n this._animationsDisabled = true;\n }\n }\n\n if (isVisible) {\n this._onShow();\n }\n\n if (this._animationsDisabled) {\n tooltip.classList.add('_mat-animation-noopable');\n this._finalizeAnimation(isVisible);\n }\n }\n}\n","<div\n #tooltip\n class=\"mdc-tooltip mat-mdc-tooltip\"\n [class]=\"tooltipClass\"\n (animationend)=\"_handleAnimationEnd($event)\"\n [class.mdc-tooltip--multiline]=\"_isMultiline\">\n <div class=\"mat-mdc-tooltip-surface mdc-tooltip__surface\">{{message}}</div>\n</div>\n"],"names":["SCROLL_THROTTLE_MS","getMatTooltipInvalidPositionError","position","Error","MAT_TOOLTIP_SCROLL_STRATEGY","InjectionToken","providedIn","factory","injector","inject","Injector","createRepositionScrollStrategy","scrollThrottle","MAT_TOOLTIP_DEFAULT_OPTIONS","showDelay","hideDelay","touchendHideDelay","TOOLTIP_PANEL_CLASS","PANEL_CLASS","passiveListenerOptions","passive","MIN_VIEWPORT_TOOLTIP_THRESHOLD","UNBOUNDED_ANCHOR_GAP","MIN_HEIGHT","MAX_WIDTH","MatTooltip","_elementRef","ElementRef","_ngZone","NgZone","_platform","Platform","_ariaDescriber","AriaDescriber","_focusMonitor","FocusMonitor","_dir","Directionality","_injector","_viewContainerRef","ViewContainerRef","_mediaMatcher","MediaMatcher","_document","DOCUMENT","_renderer","Renderer2","_animationsDisabled","_defaultOptions","optional","_overlayRef","_tooltipInstance","_overlayPanelClass","_portal","_position","_positionAtOrigin","_disabled","_tooltipClass","_viewInitialized","_pointerExitEventsInitialized","_tooltipComponent","TooltipComponent","_viewportMargin","_currentPosition","_cssClassPrefix","_ariaDescriptionPending","_dirSubscribed","value","_updatePosition","show","updatePosition","positionAtOrigin","coerceBooleanProperty","_detach","disabled","isDisabled","hide","_setupPointerEnterEventsIfNeeded","_syncAriaDescription","message","_showDelay","coerceNumberProperty","_hideDelay","_mouseLeaveHideDelay","touchGestures","_message","oldMessage","String","trim","_isTooltipVisible","_updateTooltipMessage","tooltipClass","_setTooltipClass","_eventCleanups","_touchstartTimeout","_destroyed","Subject","_isDestroyed","constructor","defaultOptions","ngAfterViewInit","monitor","pipe","takeUntil","subscribe","origin","run","ngOnDestroy","nativeElement","clearTimeout","dispose","forEach","cleanup","length","next","complete","removeDescription","stopMonitoring","delay","_cancelPendingAnimations","overlayRef","_createOverlay","ComponentPortal","instance","attach","_triggerElement","afterHidden","isVisible","toggle","undefined","existingStrategy","getConfig","positionStrategy","_origin","scrollableAncestors","get","ScrollDispatcher","getAncestorScrollContainers","panelClass","strategy","createFlexibleConnectedPositionStrategy","withTransformOriginOn","withFlexibleDimensions","withViewportMargin","withScrollableContainers","withPopoverLocation","positionChanges","change","_updateCurrentPositionClass","connectionPair","scrollableViewProperties","isOverlayClipped","createOverlayRef","direction","scrollStrategy","disableAnimations","detachments","outsidePointerEvents","_handleBodyInteraction","keydownEvents","event","keyCode","ESCAPE","hasModifierKey","preventDefault","stopPropagation","disableTooltipInteractivity","addPanelClass","hasAttached","detach","_getOrigin","overlay","_getOverlayPosition","withPositions","_addOffset","main","fallback","offset","isLtr","originY","offsetY","originX","offsetX","originPosition","ngDevMode","x","y","_invertPosition","overlayPosition","overlayX","overlayY","_markForCheck","afterNextRender","Set","Array","from","newPosition","classPrefix","removePanelClass","_isTouchPlatform","_addListener","_setupPointerExitEventsIfNeeded","point","_disableNativeGesturesIfNecessary","touch","targetTouches","clientX","clientY","DEFAULT_LONGPRESS_DELAY","setTimeout","touchLongPressShowDelay","newTarget","relatedTarget","overlayElement","contains","elementUnderPointer","elementFromPoint","element","touchendListener","name","listener","push","listen","IOS","ANDROID","isBrowser","detectHoverCapability","matchMedia","matches","gestures","style","nodeName","userSelect","msUserSelect","webkitUserSelect","MozUserSelect","draggable","webkitUserDrag","touchAction","webkitTapHighlightColor","write","describe","deps","target","i0","ɵɵFactoryTarget","Directive","isStandalone","selector","inputs","host","properties","classAttribute","exportAs","ngImport","decorators","args","Input","_changeDetectorRef","ChangeDetectorRef","_isMultiline","_showTimeoutId","_hideTimeoutId","_tooltip","_closeOnInteraction","_isVisible","_onHide","_showAnimation","_hideAnimation","_toggleVisibility","markForCheck","_handleMouseLeave","_finalizeAnimation","_onShow","_isTooltipMultiline","rect","getBoundingClientRect","height","width","_handleAnimationEnd","animationName","toVisible","tooltip","showClass","hideClass","classList","remove","add","getComputedStyle","styles","getPropertyValue","Component","ɵcmp","ɵɵngDeclareComponent","minVersion","version","type","changeDetection","ChangeDetectionStrategy","OnPush","encapsulation","ViewEncapsulation","None","template","ViewChild","static"],"mappings":";;;;;;;;;;;;;;AAgFO,MAAMA,kBAAkB,GAAG;AAM5B,SAAUC,iCAAiCA,CAACC,QAAgB,EAAA;AAChE,EAAA,OAAOC,KAAK,CAAC,CAAqBD,kBAAAA,EAAAA,QAAQ,eAAe,CAAC;AAC5D;MAGaE,2BAA2B,GAAG,IAAIC,cAAc,CAC3D,6BAA6B,EAC7B;AACEC,EAAAA,UAAU,EAAE,MAAM;EAClBC,OAAO,EAAEA,MAAK;AACZ,IAAA,MAAMC,QAAQ,GAAGC,MAAM,CAACC,QAAQ,CAAC;AACjC,IAAA,OAAO,MAAMC,8BAA8B,CAACH,QAAQ,EAAE;AAACI,MAAAA,cAAc,EAAEZ;AAAkB,KAAC,CAAC;AAC7F;AACD,CAAA;MAIUa,2BAA2B,GAAG,IAAIR,cAAc,CAC3D,6BAA6B,EAC7B;AACEC,EAAAA,UAAU,EAAE,MAAM;EAClBC,OAAO,EAAEA,OAAO;AACdO,IAAAA,SAAS,EAAE,CAAC;AACZC,IAAAA,SAAS,EAAE,CAAC;AACZC,IAAAA,iBAAiB,EAAE;GACpB;AACF,CAAA;AAoDI,MAAMC,mBAAmB,GAAG;AAEnC,MAAMC,WAAW,GAAG,eAAe;AAGnC,MAAMC,sBAAsB,GAAG;AAACC,EAAAA,OAAO,EAAE;CAAK;AAI9C,MAAMC,8BAA8B,GAAG,CAAC;AACxC,MAAMC,oBAAoB,GAAG,CAAC;AAC9B,MAAMC,UAAU,GAAG,EAAE;AACrB,MAAMC,SAAS,GAAG,GAAG;MAgBRC,UAAU,CAAA;AACbC,EAAAA,WAAW,GAAGjB,MAAM,CAA0BkB,UAAU,CAAC;AACzDC,EAAAA,OAAO,GAAGnB,MAAM,CAACoB,MAAM,CAAC;AACxBC,EAAAA,SAAS,GAAGrB,MAAM,CAACsB,QAAQ,CAAC;AAC5BC,EAAAA,cAAc,GAAGvB,MAAM,CAACwB,aAAa,CAAC;AACtCC,EAAAA,aAAa,GAAGzB,MAAM,CAAC0B,YAAY,CAAC;AAClCC,EAAAA,IAAI,GAAG3B,MAAM,CAAC4B,cAAc,CAAC;AAC/BC,EAAAA,SAAS,GAAG7B,MAAM,CAACC,QAAQ,CAAC;AAC5B6B,EAAAA,iBAAiB,GAAG9B,MAAM,CAAC+B,gBAAgB,CAAC;AAC5CC,EAAAA,aAAa,GAAGhC,MAAM,CAACiC,YAAY,CAAC;AACpCC,EAAAA,SAAS,GAAGlC,MAAM,CAACmC,QAAQ,CAAC;AAC5BC,EAAAA,SAAS,GAAGpC,MAAM,CAACqC,SAAS,CAAC;EAC7BC,mBAAmB,GAAGA,mBAAmB,EAAE;AAC3CC,EAAAA,eAAe,GAAGvC,MAAM,CAA2BI,2BAA2B,EAAE;AACtFoC,IAAAA,QAAQ,EAAE;AACX,GAAA,CAAC;AAEFC,EAAAA,WAAW,GAAsB,IAAI;AACrCC,EAAAA,gBAAgB,GAA4B,IAAI;EAChDC,kBAAkB;EAEVC,OAAO;AACPC,EAAAA,SAAS,GAAoB,OAAO;AACpCC,EAAAA,iBAAiB,GAAY,KAAK;AAClCC,EAAAA,SAAS,GAAY,KAAK;EAC1BC,aAAa;AACbC,EAAAA,gBAAgB,GAAG,KAAK;AACxBC,EAAAA,6BAA6B,GAAG,KAAK;AAC5BC,EAAAA,iBAAiB,GAAGC,gBAAgB;AAC7CC,EAAAA,eAAe,GAAG,CAAC;EACnBC,gBAAgB;AACPC,EAAAA,eAAe,GAAW,SAAS;AAC5CC,EAAAA,uBAAuB,GAAG,KAAK;AAC/BC,EAAAA,cAAc,GAAG,KAAK;EAG9B,IACIhE,QAAQA,GAAA;IACV,OAAO,IAAI,CAACoD,SAAS;AACvB;EAEA,IAAIpD,QAAQA,CAACiE,KAAsB,EAAA;AACjC,IAAA,IAAIA,KAAK,KAAK,IAAI,CAACb,SAAS,EAAE;MAC5B,IAAI,CAACA,SAAS,GAAGa,KAAK;MAEtB,IAAI,IAAI,CAACjB,WAAW,EAAE;AACpB,QAAA,IAAI,CAACkB,eAAe,CAAC,IAAI,CAAClB,WAAW,CAAC;AACtC,QAAA,IAAI,CAACC,gBAAgB,EAAEkB,IAAI,CAAC,CAAC,CAAC;AAC9B,QAAA,IAAI,CAACnB,WAAW,CAACoB,cAAc,EAAE;AACnC;AACF;AACF;EAMA,IACIC,gBAAgBA,GAAA;IAClB,OAAO,IAAI,CAAChB,iBAAiB;AAC/B;EAEA,IAAIgB,gBAAgBA,CAACJ,KAAmB,EAAA;AACtC,IAAA,IAAI,CAACZ,iBAAiB,GAAGiB,qBAAqB,CAACL,KAAK,CAAC;IACrD,IAAI,CAACM,OAAO,EAAE;IACd,IAAI,CAACvB,WAAW,GAAG,IAAI;AACzB;EAGA,IACIwB,QAAQA,GAAA;IACV,OAAO,IAAI,CAAClB,SAAS;AACvB;EAEA,IAAIkB,QAAQA,CAACP,KAAmB,EAAA;AAC9B,IAAA,MAAMQ,UAAU,GAAGH,qBAAqB,CAACL,KAAK,CAAC;AAE/C,IAAA,IAAI,IAAI,CAACX,SAAS,KAAKmB,UAAU,EAAE;MACjC,IAAI,CAACnB,SAAS,GAAGmB,UAAU;AAG3B,MAAA,IAAIA,UAAU,EAAE;AACd,QAAA,IAAI,CAACC,IAAI,CAAC,CAAC,CAAC;AACd,OAAA,MAAO;QACL,IAAI,CAACC,gCAAgC,EAAE;AACzC;AAEA,MAAA,IAAI,CAACC,oBAAoB,CAAC,IAAI,CAACC,OAAO,CAAC;AACzC;AACF;EAGA,IACIjE,SAASA,GAAA;IACX,OAAO,IAAI,CAACkE,UAAU;AACxB;EAEA,IAAIlE,SAASA,CAACqD,KAAkB,EAAA;AAC9B,IAAA,IAAI,CAACa,UAAU,GAAGC,oBAAoB,CAACd,KAAK,CAAC;AAC/C;EAEQa,UAAU;EAGlB,IACIjE,SAASA,GAAA;IACX,OAAO,IAAI,CAACmE,UAAU;AACxB;EAEA,IAAInE,SAASA,CAACoD,KAAkB,EAAA;AAC9B,IAAA,IAAI,CAACe,UAAU,GAAGD,oBAAoB,CAACd,KAAK,CAAC;IAE7C,IAAI,IAAI,CAAChB,gBAAgB,EAAE;AACzB,MAAA,IAAI,CAACA,gBAAgB,CAACgC,oBAAoB,GAAG,IAAI,CAACD,UAAU;AAC9D;AACF;EAEQA,UAAU;AAgBgBE,EAAAA,aAAa,GAAyB,MAAM;EAG9E,IACIL,OAAOA,GAAA;IACT,OAAO,IAAI,CAACM,QAAQ;AACtB;EAEA,IAAIN,OAAOA,CAACZ,KAAyC,EAAA;AACnD,IAAA,MAAMmB,UAAU,GAAG,IAAI,CAACD,QAAQ;AAKhC,IAAA,IAAI,CAACA,QAAQ,GAAGlB,KAAK,IAAI,IAAI,GAAGoB,MAAM,CAACpB,KAAK,CAAC,CAACqB,IAAI,EAAE,GAAG,EAAE;IAEzD,IAAI,CAAC,IAAI,CAACH,QAAQ,IAAI,IAAI,CAACI,iBAAiB,EAAE,EAAE;AAC9C,MAAA,IAAI,CAACb,IAAI,CAAC,CAAC,CAAC;AACd,KAAA,MAAO;MACL,IAAI,CAACC,gCAAgC,EAAE;MACvC,IAAI,CAACa,qBAAqB,EAAE;AAC9B;AAEA,IAAA,IAAI,CAACZ,oBAAoB,CAACQ,UAAU,CAAC;AACvC;AAEQD,EAAAA,QAAQ,GAAG,EAAE;EAGrB,IACIM,YAAYA,GAAA;IACd,OAAO,IAAI,CAAClC,aAAa;AAC3B;EAEA,IAAIkC,YAAYA,CAACxB,KAAiE,EAAA;IAChF,IAAI,CAACV,aAAa,GAAGU,KAAK;IAC1B,IAAI,IAAI,CAAChB,gBAAgB,EAAE;AACzB,MAAA,IAAI,CAACyC,gBAAgB,CAAC,IAAI,CAACnC,aAAa,CAAC;AAC3C;AACF;AAGiBoC,EAAAA,cAAc,GAAmB,EAAE;AAG5CC,EAAAA,kBAAkB,GAAyC,IAAI;AAGtDC,EAAAA,UAAU,GAAG,IAAIC,OAAO,EAAQ;AAGzCC,EAAAA,YAAY,GAAG,KAAK;AAI5BC,EAAAA,WAAAA,GAAA;AACE,IAAA,MAAMC,cAAc,GAAG,IAAI,CAACnD,eAAe;AAE3C,IAAA,IAAImD,cAAc,EAAE;AAClB,MAAA,IAAI,CAACnB,UAAU,GAAGmB,cAAc,CAACrF,SAAS;AAC1C,MAAA,IAAI,CAACoE,UAAU,GAAGiB,cAAc,CAACpF,SAAS;MAE1C,IAAIoF,cAAc,CAACjG,QAAQ,EAAE;AAC3B,QAAA,IAAI,CAACA,QAAQ,GAAGiG,cAAc,CAACjG,QAAQ;AACzC;MAEA,IAAIiG,cAAc,CAAC5B,gBAAgB,EAAE;AACnC,QAAA,IAAI,CAACA,gBAAgB,GAAG4B,cAAc,CAAC5B,gBAAgB;AACzD;MAEA,IAAI4B,cAAc,CAACf,aAAa,EAAE;AAChC,QAAA,IAAI,CAACA,aAAa,GAAGe,cAAc,CAACf,aAAa;AACnD;MAEA,IAAIe,cAAc,CAACR,YAAY,EAAE;AAC/B,QAAA,IAAI,CAACA,YAAY,GAAGQ,cAAc,CAACR,YAAY;AACjD;AACF;IAEA,IAAI,CAAC7B,eAAe,GAAGzC,8BAA8B;AACvD;AAEA+E,EAAAA,eAAeA,GAAA;IAEb,IAAI,CAAC1C,gBAAgB,GAAG,IAAI;IAC5B,IAAI,CAACmB,gCAAgC,EAAE;IAEvC,IAAI,CAAC3C,aAAa,CACfmE,OAAO,CAAC,IAAI,CAAC3E,WAAW,CAAA,CACxB4E,IAAI,CAACC,SAAS,CAAC,IAAI,CAACR,UAAU,CAAC,CAAA,CAC/BS,SAAS,CAACC,MAAM,IAAG;MAElB,IAAI,CAACA,MAAM,EAAE;AACX,QAAA,IAAI,CAAC7E,OAAO,CAAC8E,GAAG,CAAC,MAAM,IAAI,CAAC9B,IAAI,CAAC,CAAC,CAAC,CAAC;AACtC,OAAA,MAAO,IAAI6B,MAAM,KAAK,UAAU,EAAE;QAChC,IAAI,CAAC7E,OAAO,CAAC8E,GAAG,CAAC,MAAM,IAAI,CAACrC,IAAI,EAAE,CAAC;AACrC;AACF,KAAC,CAAC;AACN;AAKAsC,EAAAA,WAAWA,GAAA;AACT,IAAA,MAAMC,aAAa,GAAG,IAAI,CAAClF,WAAW,CAACkF,aAAa;IAGpD,IAAI,IAAI,CAACd,kBAAkB,EAAE;AAC3Be,MAAAA,YAAY,CAAC,IAAI,CAACf,kBAAkB,CAAC;AACvC;IAEA,IAAI,IAAI,CAAC5C,WAAW,EAAE;AACpB,MAAA,IAAI,CAACA,WAAW,CAAC4D,OAAO,EAAE;MAC1B,IAAI,CAAC3D,gBAAgB,GAAG,IAAI;AAC9B;IAEA,IAAI,CAAC0C,cAAc,CAACkB,OAAO,CAACC,OAAO,IAAIA,OAAO,EAAE,CAAC;AACjD,IAAA,IAAI,CAACnB,cAAc,CAACoB,MAAM,GAAG,CAAC;AAC9B,IAAA,IAAI,CAAClB,UAAU,CAACmB,IAAI,EAAE;AACtB,IAAA,IAAI,CAACnB,UAAU,CAACoB,QAAQ,EAAE;IAC1B,IAAI,CAAClB,YAAY,GAAG,IAAI;AACxB,IAAA,IAAI,CAACjE,cAAc,CAACoF,iBAAiB,CAACR,aAAa,EAAE,IAAI,CAAC7B,OAAO,EAAE,SAAS,CAAC;AAC7E,IAAA,IAAI,CAAC7C,aAAa,CAACmF,cAAc,CAACT,aAAa,CAAC;AAClD;EAGAvC,IAAIA,CAACiD,KAAgB,GAAA,IAAI,CAACxG,SAAS,EAAE2F,MAA+B,EAAA;AAClE,IAAA,IAAI,IAAI,CAAC/B,QAAQ,IAAI,CAAC,IAAI,CAACK,OAAO,IAAI,IAAI,CAACU,iBAAiB,EAAE,EAAE;AAC9D,MAAA,IAAI,CAACtC,gBAAgB,EAAEoE,wBAAwB,EAAE;AACjD,MAAA;AACF;AAEA,IAAA,MAAMC,UAAU,GAAG,IAAI,CAACC,cAAc,CAAChB,MAAM,CAAC;IAC9C,IAAI,CAAChC,OAAO,EAAE;AACd,IAAA,IAAI,CAACpB,OAAO,GACV,IAAI,CAACA,OAAO,IAAI,IAAIqE,eAAe,CAAC,IAAI,CAAC9D,iBAAiB,EAAE,IAAI,CAACrB,iBAAiB,CAAC;AACrF,IAAA,MAAMoF,QAAQ,GAAI,IAAI,CAACxE,gBAAgB,GAAGqE,UAAU,CAACI,MAAM,CAAC,IAAI,CAACvE,OAAO,CAAC,CAACsE,QAAS;AACnFA,IAAAA,QAAQ,CAACE,eAAe,GAAG,IAAI,CAACnG,WAAW,CAACkF,aAAa;AACzDe,IAAAA,QAAQ,CAACxC,oBAAoB,GAAG,IAAI,CAACD,UAAU;IAC/CyC,QAAQ,CACLG,WAAW,EAAE,CACbxB,IAAI,CAACC,SAAS,CAAC,IAAI,CAACR,UAAU,CAAC,CAAA,CAC/BS,SAAS,CAAC,MAAM,IAAI,CAAC/B,OAAO,EAAE,CAAC;AAClC,IAAA,IAAI,CAACmB,gBAAgB,CAAC,IAAI,CAACnC,aAAa,CAAC;IACzC,IAAI,CAACiC,qBAAqB,EAAE;AAC5BiC,IAAAA,QAAQ,CAACtD,IAAI,CAACiD,KAAK,CAAC;AACtB;AAGA1C,EAAAA,IAAIA,CAAC0C,KAAA,GAAgB,IAAI,CAACvG,SAAS,EAAA;AACjC,IAAA,MAAM4G,QAAQ,GAAG,IAAI,CAACxE,gBAAgB;AAEtC,IAAA,IAAIwE,QAAQ,EAAE;AACZ,MAAA,IAAIA,QAAQ,CAACI,SAAS,EAAE,EAAE;AACxBJ,QAAAA,QAAQ,CAAC/C,IAAI,CAAC0C,KAAK,CAAC;AACtB,OAAA,MAAO;QACLK,QAAQ,CAACJ,wBAAwB,EAAE;QACnC,IAAI,CAAC9C,OAAO,EAAE;AAChB;AACF;AACF;EAGAuD,MAAMA,CAACvB,MAA+B,EAAA;AACpC,IAAA,IAAI,CAAChB,iBAAiB,EAAE,GAAG,IAAI,CAACb,IAAI,EAAE,GAAG,IAAI,CAACP,IAAI,CAAC4D,SAAS,EAAExB,MAAM,CAAC;AACvE;AAGAhB,EAAAA,iBAAiBA,GAAA;AACf,IAAA,OAAO,CAAC,CAAC,IAAI,CAACtC,gBAAgB,IAAI,IAAI,CAACA,gBAAgB,CAAC4E,SAAS,EAAE;AACrE;EAGQN,cAAcA,CAAChB,MAA+B,EAAA;IACpD,IAAI,IAAI,CAACvD,WAAW,EAAE;MACpB,MAAMgF,gBAAgB,GAAG,IAAI,CAAChF,WAAW,CAACiF,SAAS,EAAE,CAClDC,gBAAqD;AAExD,MAAA,IAAI,CAAC,CAAC,IAAI,CAAC7D,gBAAgB,IAAI,CAACkC,MAAM,KAAKyB,gBAAgB,CAACG,OAAO,YAAY1G,UAAU,EAAE;QACzF,OAAO,IAAI,CAACuB,WAAW;AACzB;MAEA,IAAI,CAACuB,OAAO,EAAE;AAChB;AAEA,IAAA,MAAM6D,mBAAmB,GAAG,IAAI,CAAChG,SAAS,CACvCiG,GAAG,CAACC,gBAAgB,CAAA,CACpBC,2BAA2B,CAAC,IAAI,CAAC/G,WAAW,CAAC;IAEhD,MAAMgH,UAAU,GAAG,CAAG,EAAA,IAAI,CAAC1E,eAAe,CAAA,CAAA,EAAI9C,WAAW,CAAE,CAAA;IAG3D,MAAMyH,QAAQ,GAAGC,uCAAuC,CACtD,IAAI,CAACtG,SAAS,EACd,IAAI,CAACiC,gBAAgB,GAAGkC,MAAM,IAAI,IAAI,CAAC/E,WAAW,GAAG,IAAI,CAACA,WAAW,CAAA,CAEpEmH,qBAAqB,CAAC,CAAA,CAAA,EAAI,IAAI,CAAC7E,eAAe,CAAU,QAAA,CAAA,CAAA,CACxD8E,sBAAsB,CAAC,KAAK,CAAA,CAC5BC,kBAAkB,CAAC,IAAI,CAACjF,eAAe,CAAA,CACvCkF,wBAAwB,CAACV,mBAAmB,CAAA,CAC5CW,mBAAmB,CAAC,QAAQ,CAAC;AAEhCN,IAAAA,QAAQ,CAACO,eAAe,CAAC5C,IAAI,CAACC,SAAS,CAAC,IAAI,CAACR,UAAU,CAAC,CAAC,CAACS,SAAS,CAAC2C,MAAM,IAAG;AAC3E,MAAA,IAAI,CAACC,2BAA2B,CAACD,MAAM,CAACE,cAAc,CAAC;MAEvD,IAAI,IAAI,CAAClG,gBAAgB,EAAE;AACzB,QAAA,IAAIgG,MAAM,CAACG,wBAAwB,CAACC,gBAAgB,IAAI,IAAI,CAACpG,gBAAgB,CAAC4E,SAAS,EAAE,EAAE;AAGzF,UAAA,IAAI,CAACnG,OAAO,CAAC8E,GAAG,CAAC,MAAM,IAAI,CAAC9B,IAAI,CAAC,CAAC,CAAC,CAAC;AACtC;AACF;AACF,KAAC,CAAC;IAEF,IAAI,CAAC1B,WAAW,GAAGsG,gBAAgB,CAAC,IAAI,CAAClH,SAAS,EAAE;MAClDmH,SAAS,EAAE,IAAI,CAACrH,IAAI;AACpBgG,MAAAA,gBAAgB,EAAEO,QAAQ;AAC1BD,MAAAA,UAAU,EAAE,IAAI,CAACtF,kBAAkB,GAAG,CAAC,GAAG,IAAI,CAACA,kBAAkB,EAAEsF,UAAU,CAAC,GAAGA,UAAU;MAC3FgB,cAAc,EAAE,IAAI,CAACpH,SAAS,CAACiG,GAAG,CAACnI,2BAA2B,CAAC,EAAE;MACjEuJ,iBAAiB,EAAE,IAAI,CAAC5G;AACzB,KAAA,CAAC;AAEF,IAAA,IAAI,CAACqB,eAAe,CAAC,IAAI,CAAClB,WAAW,CAAC;IAEtC,IAAI,CAACA,WAAW,CACb0G,WAAW,EAAE,CACbtD,IAAI,CAACC,SAAS,CAAC,IAAI,CAACR,UAAU,CAAC,CAAA,CAC/BS,SAAS,CAAC,MAAM,IAAI,CAAC/B,OAAO,EAAE,CAAC;IAElC,IAAI,CAACvB,WAAW,CACb2G,oBAAoB,EAAE,CACtBvD,IAAI,CAACC,SAAS,CAAC,IAAI,CAACR,UAAU,CAAC,CAAA,CAC/BS,SAAS,CAAC,MAAM,IAAI,CAACrD,gBAAgB,EAAE2G,sBAAsB,EAAE,CAAC;IAEnE,IAAI,CAAC5G,WAAW,CACb6G,aAAa,EAAE,CACfzD,IAAI,CAACC,SAAS,CAAC,IAAI,CAACR,UAAU,CAAC,CAAA,CAC/BS,SAAS,CAACwD,KAAK,IAAG;AACjB,MAAA,IAAI,IAAI,CAACvE,iBAAiB,EAAE,IAAIuE,KAAK,CAACC,OAAO,KAAKC,MAAM,IAAI,CAACC,cAAc,CAACH,KAAK,CAAC,EAAE;QAClFA,KAAK,CAACI,cAAc,EAAE;QACtBJ,KAAK,CAACK,eAAe,EAAE;AACvB,QAAA,IAAI,CAACzI,OAAO,CAAC8E,GAAG,CAAC,MAAM,IAAI,CAAC9B,IAAI,CAAC,CAAC,CAAC,CAAC;AACtC;AACF,KAAC,CAAC;AAEJ,IAAA,IAAI,IAAI,CAAC5B,eAAe,EAAEsH,2BAA2B,EAAE;MACrD,IAAI,CAACpH,WAAW,CAACqH,aAAa,CAAC,GAAG,IAAI,CAACvG,eAAe,CAAA,8BAAA,CAAgC,CAAC;AACzF;AAEA,IAAA,IAAI,CAAC,IAAI,CAACE,cAAc,EAAE;MACxB,IAAI,CAACA,cAAc,GAAG,IAAI;AAC1B,MAAA,IAAI,CAAC9B,IAAI,CAAC+G,MAAM,CAAC7C,IAAI,CAACC,SAAS,CAAC,IAAI,CAACR,UAAU,CAAC,CAAC,CAACS,SAAS,CAAC,MAAK;QAC/D,IAAI,IAAI,CAACtD,WAAW,EAAE;AACpB,UAAA,IAAI,CAACkB,eAAe,CAAC,IAAI,CAAClB,WAAW,CAAC;AACxC;AACF,OAAC,CAAC;AACJ;IAEA,OAAO,IAAI,CAACA,WAAW;AACzB;AAGQuB,EAAAA,OAAOA,GAAA;IACb,IAAI,IAAI,CAACvB,WAAW,IAAI,IAAI,CAACA,WAAW,CAACsH,WAAW,EAAE,EAAE;AACtD,MAAA,IAAI,CAACtH,WAAW,CAACuH,MAAM,EAAE;AAC3B;IAEA,IAAI,CAACtH,gBAAgB,GAAG,IAAI;AAC9B;EAGQiB,eAAeA,CAACoD,UAAsB,EAAA;IAC5C,MAAMtH,QAAQ,GAAGsH,UAAU,CAACW,SAAS,EAAE,CAACC,gBAAqD;AAC7F,IAAA,MAAM3B,MAAM,GAAG,IAAI,CAACiE,UAAU,EAAE;AAChC,IAAA,MAAMC,OAAO,GAAG,IAAI,CAACC,mBAAmB,EAAE;AAE1C1K,IAAAA,QAAQ,CAAC2K,aAAa,CAAC,CACrB,IAAI,CAACC,UAAU,CAAC;MAAC,GAAGrE,MAAM,CAACsE,IAAI;AAAE,MAAA,GAAGJ,OAAO,CAACI;KAAK,CAAC,EAClD,IAAI,CAACD,UAAU,CAAC;MAAC,GAAGrE,MAAM,CAACuE,QAAQ;AAAE,MAAA,GAAGL,OAAO,CAACK;KAAS,CAAC,CAC3D,CAAC;AACJ;EAGUF,UAAUA,CAAC5K,QAA2B,EAAA;IAC9C,MAAM+K,MAAM,GAAG3J,oBAAoB;AACnC,IAAA,MAAM4J,KAAK,GAAG,CAAC,IAAI,CAAC9I,IAAI,IAAI,IAAI,CAACA,IAAI,CAAC+B,KAAK,IAAI,KAAK;AAEpD,IAAA,IAAIjE,QAAQ,CAACiL,OAAO,KAAK,KAAK,EAAE;AAC9BjL,MAAAA,QAAQ,CAACkL,OAAO,GAAG,CAACH,MAAM;AAC5B,KAAA,MAAO,IAAI/K,QAAQ,CAACiL,OAAO,KAAK,QAAQ,EAAE;MACxCjL,QAAQ,CAACkL,OAAO,GAAGH,MAAM;AAC3B,KAAA,MAAO,IAAI/K,QAAQ,CAACmL,OAAO,KAAK,OAAO,EAAE;MACvCnL,QAAQ,CAACoL,OAAO,GAAGJ,KAAK,GAAG,CAACD,MAAM,GAAGA,MAAM;AAC7C,KAAA,MAAO,IAAI/K,QAAQ,CAACmL,OAAO,KAAK,KAAK,EAAE;MACrCnL,QAAQ,CAACoL,OAAO,GAAGJ,KAAK,GAAGD,MAAM,GAAG,CAACA,MAAM;AAC7C;AAEA,IAAA,OAAO/K,QAAQ;AACjB;AAMAwK,EAAAA,UAAUA,GAAA;AACR,IAAA,MAAMQ,KAAK,GAAG,CAAC,IAAI,CAAC9I,IAAI,IAAI,IAAI,CAACA,IAAI,CAAC+B,KAAK,IAAI,KAAK;AACpD,IAAA,MAAMjE,QAAQ,GAAG,IAAI,CAACA,QAAQ;AAC9B,IAAA,IAAIqL,cAAwC;AAE5C,IAAA,IAAIrL,QAAQ,IAAI,OAAO,IAAIA,QAAQ,IAAI,OAAO,EAAE;AAC9CqL,MAAAA,cAAc,GAAG;AAACF,QAAAA,OAAO,EAAE,QAAQ;AAAEF,QAAAA,OAAO,EAAEjL,QAAQ,IAAI,OAAO,GAAG,KAAK,GAAG;OAAS;AACvF,KAAA,MAAO,IACLA,QAAQ,IAAI,QAAQ,IACnBA,QAAQ,IAAI,MAAM,IAAIgL,KAAM,IAC5BhL,QAAQ,IAAI,OAAO,IAAI,CAACgL,KAAM,EAC/B;AACAK,MAAAA,cAAc,GAAG;AAACF,QAAAA,OAAO,EAAE,OAAO;AAAEF,QAAAA,OAAO,EAAE;OAAS;AACxD,KAAA,MAAO,IACLjL,QAAQ,IAAI,OAAO,IAClBA,QAAQ,IAAI,OAAO,IAAIgL,KAAM,IAC7BhL,QAAQ,IAAI,MAAM,IAAI,CAACgL,KAAM,EAC9B;AACAK,MAAAA,cAAc,GAAG;AAACF,QAAAA,OAAO,EAAE,KAAK;AAAEF,QAAAA,OAAO,EAAE;OAAS;KACtD,MAAO,IAAI,OAAOK,SAAS,KAAK,WAAW,IAAIA,SAAS,EAAE;MACxD,MAAMvL,iCAAiC,CAACC,QAAQ,CAAC;AACnD;IAEA,MAAM;MAACuL,CAAC;AAAEC,MAAAA;AAAE,KAAA,GAAG,IAAI,CAACC,eAAe,CAACJ,cAAe,CAACF,OAAO,EAAEE,cAAe,CAACJ,OAAO,CAAC;IAErF,OAAO;AACLJ,MAAAA,IAAI,EAAEQ,cAAe;AACrBP,MAAAA,QAAQ,EAAE;AAACK,QAAAA,OAAO,EAAEI,CAAC;AAAEN,QAAAA,OAAO,EAAEO;AAAE;KACnC;AACH;AAGAd,EAAAA,mBAAmBA,GAAA;AACjB,IAAA,MAAMM,KAAK,GAAG,CAAC,IAAI,CAAC9I,IAAI,IAAI,IAAI,CAACA,IAAI,CAAC+B,KAAK,IAAI,KAAK;AACpD,IAAA,MAAMjE,QAAQ,GAAG,IAAI,CAACA,QAAQ;AAC9B,IAAA,IAAI0L,eAA0C;IAE9C,IAAI1L,QAAQ,IAAI,OAAO,EAAE;AACvB0L,MAAAA,eAAe,GAAG;AAACC,QAAAA,QAAQ,EAAE,QAAQ;AAAEC,QAAAA,QAAQ,EAAE;OAAS;AAC5D,KAAA,MAAO,IAAI5L,QAAQ,IAAI,OAAO,EAAE;AAC9B0L,MAAAA,eAAe,GAAG;AAACC,QAAAA,QAAQ,EAAE,QAAQ;AAAEC,QAAAA,QAAQ,EAAE;OAAM;AACzD,KAAA,MAAO,IACL5L,QAAQ,IAAI,QAAQ,IACnBA,QAAQ,IAAI,MAAM,IAAIgL,KAAM,IAC5BhL,QAAQ,IAAI,OAAO,IAAI,CAACgL,KAAM,EAC/B;AACAU,MAAAA,eAAe,GAAG;AAACC,QAAAA,QAAQ,EAAE,KAAK;AAAEC,QAAAA,QAAQ,EAAE;OAAS;AACzD,KAAA,MAAO,IACL5L,QAAQ,IAAI,OAAO,IAClBA,QAAQ,IAAI,OAAO,IAAIgL,KAAM,IAC7BhL,QAAQ,IAAI,MAAM,IAAI,CAACgL,KAAM,EAC9B;AACAU,MAAAA,eAAe,GAAG;AAACC,QAAAA,QAAQ,EAAE,OAAO;AAAEC,QAAAA,QAAQ,EAAE;OAAS;KAC3D,MAAO,IAAI,OAAON,SAAS,KAAK,WAAW,IAAIA,SAAS,EAAE;MACxD,MAAMvL,iCAAiC,CAACC,QAAQ,CAAC;AACnD;IAEA,MAAM;MAACuL,CAAC;AAAEC,MAAAA;AAAE,KAAA,GAAG,IAAI,CAACC,eAAe,CAACC,eAAgB,CAACC,QAAQ,EAAED,eAAgB,CAACE,QAAQ,CAAC;IAEzF,OAAO;AACLf,MAAAA,IAAI,EAAEa,eAAgB;AACtBZ,MAAAA,QAAQ,EAAE;AAACa,QAAAA,QAAQ,EAAEJ,CAAC;AAAEK,QAAAA,QAAQ,EAAEJ;AAAE;KACrC;AACH;AAGQhG,EAAAA,qBAAqBA,GAAA;IAG3B,IAAI,IAAI,CAACvC,gBAAgB,EAAE;AACzB,MAAA,IAAI,CAACA,gBAAgB,CAAC4B,OAAO,GAAG,IAAI,CAACA,OAAO;AAC5C,MAAA,IAAI,CAAC5B,gBAAgB,CAAC4I,aAAa,EAAE;AAErCC,MAAAA,eAAe,CACb,MAAK;QACH,IAAI,IAAI,CAAC7I,gBAAgB,EAAE;AACzB,UAAA,IAAI,CAACD,WAAY,CAACoB,cAAc,EAAE;AACpC;AACF,OAAC,EACD;QACE9D,QAAQ,EAAE,IAAI,CAAC8B;AAChB,OAAA,CACF;AACH;AACF;EAGQsD,gBAAgBA,CACtBD,YAAwE,EAAA;IAExE,IAAI,IAAI,CAACxC,gBAAgB,EAAE;AACzB,MAAA,IAAI,CAACA,gBAAgB,CAACwC,YAAY,GAChCA,YAAY,YAAYsG,GAAG,GAAGC,KAAK,CAACC,IAAI,CAACxG,YAAY,CAAC,GAAGA,YAAY;AACvE,MAAA,IAAI,CAACxC,gBAAgB,CAAC4I,aAAa,EAAE;AACvC;AACF;AAGQJ,EAAAA,eAAeA,CAACF,CAA0B,EAAEC,CAAwB,EAAA;IAC1E,IAAI,IAAI,CAACxL,QAAQ,KAAK,OAAO,IAAI,IAAI,CAACA,QAAQ,KAAK,OAAO,EAAE;MAC1D,IAAIwL,CAAC,KAAK,KAAK,EAAE;AACfA,QAAAA,CAAC,GAAG,QAAQ;AACd,OAAA,MAAO,IAAIA,CAAC,KAAK,QAAQ,EAAE;AACzBA,QAAAA,CAAC,GAAG,KAAK;AACX;AACF,KAAA,MAAO;MACL,IAAID,CAAC,KAAK,KAAK,EAAE;AACfA,QAAAA,CAAC,GAAG,OAAO;AACb,OAAA,MAAO,IAAIA,CAAC,KAAK,OAAO,EAAE;AACxBA,QAAAA,CAAC,GAAG,KAAK;AACX;AACF;IAEA,OAAO;MAACA,CAAC;AAAEC,MAAAA;KAAE;AACf;EAGQtC,2BAA2BA,CAACC,cAAsC,EAAA;IACxE,MAAM;MAACyC,QAAQ;MAAET,OAAO;AAAEF,MAAAA;AAAO,KAAC,GAAG9B,cAAc;AACnD,IAAA,IAAI+C,WAA4B;IAIhC,IAAIN,QAAQ,KAAK,QAAQ,EAAE;MAIzB,IAAI,IAAI,CAAC1J,IAAI,IAAI,IAAI,CAACA,IAAI,CAAC+B,KAAK,KAAK,KAAK,EAAE;AAC1CiI,QAAAA,WAAW,GAAGf,OAAO,KAAK,KAAK,GAAG,MAAM,GAAG,OAAO;AACpD,OAAA,MAAO;AACLe,QAAAA,WAAW,GAAGf,OAAO,KAAK,OAAO,GAAG,MAAM,GAAG,OAAO;AACtD;AACF,KAAA,MAAO;MACLe,WAAW,GAAGN,QAAQ,KAAK,QAAQ,IAAIX,OAAO,KAAK,KAAK,GAAG,OAAO,GAAG,OAAO;AAC9E;AAEA,IAAA,IAAIiB,WAAW,KAAK,IAAI,CAACrI,gBAAgB,EAAE;AACzC,MAAA,MAAMyD,UAAU,GAAG,IAAI,CAACtE,WAAW;AAEnC,MAAA,IAAIsE,UAAU,EAAE;QACd,MAAM6E,WAAW,GAAG,CAAG,EAAA,IAAI,CAACrI,eAAe,CAAA,CAAA,EAAI9C,WAAW,CAAG,CAAA,CAAA;QAC7DsG,UAAU,CAAC8E,gBAAgB,CAACD,WAAW,GAAG,IAAI,CAACtI,gBAAgB,CAAC;AAChEyD,QAAAA,UAAU,CAAC+C,aAAa,CAAC8B,WAAW,GAAGD,WAAW,CAAC;AACrD;MAEA,IAAI,CAACrI,gBAAgB,GAAGqI,WAAW;AACrC;AACF;AAGQvH,EAAAA,gCAAgCA,GAAA;AAEtC,IAAA,IAAI,IAAI,CAACrB,SAAS,IAAI,CAAC,IAAI,CAACuB,OAAO,IAAI,CAAC,IAAI,CAACrB,gBAAgB,IAAI,IAAI,CAACmC,cAAc,CAACoB,MAAM,EAAE;AAC3F,MAAA;AACF;AAIA,IAAA,IAAI,CAAC,IAAI,CAACsF,gBAAgB,EAAE,EAAE;AAC5B,MAAA,IAAI,CAACC,YAAY,CAAC,YAAY,EAAGxC,KAAiB,IAAI;QACpD,IAAI,CAACyC,+BAA+B,EAAE;QACtC,IAAIC,KAAK,GAAGzE,SAAS;QACrB,IAAI+B,KAAK,CAACyB,CAAC,KAAKxD,SAAS,IAAI+B,KAAK,CAAC0B,CAAC,KAAKzD,SAAS,EAAE;AAClDyE,UAAAA,KAAK,GAAG1C,KAAK;AACf;AACA,QAAA,IAAI,CAAC3F,IAAI,CAAC4D,SAAS,EAAEyE,KAAK,CAAC;AAC7B,OAAC,CAAC;AACJ,KAAA,MAAO,IAAI,IAAI,CAACtH,aAAa,KAAK,KAAK,EAAE;MACvC,IAAI,CAACuH,iCAAiC,EAAE;AACxC,MAAA,IAAI,CAACH,YAAY,CAAC,YAAY,EAAGxC,KAAiB,IAAI;AACpD,QAAA,MAAM4C,KAAK,GAAG5C,KAAK,CAAC6C,aAAa,GAAG,CAAC,CAAC;QACtC,MAAMpG,MAAM,GAAGmG,KAAK,GAAG;UAACnB,CAAC,EAAEmB,KAAK,CAACE,OAAO;UAAEpB,CAAC,EAAEkB,KAAK,CAACG;SAAQ,GAAG9E,SAAS;QAGvE,IAAI,CAACwE,+BAA+B,EAAE;QACtC,IAAI,IAAI,CAAC3G,kBAAkB,EAAE;AAC3Be,UAAAA,YAAY,CAAC,IAAI,CAACf,kBAAkB,CAAC;AACvC;QAEA,MAAMkH,uBAAuB,GAAG,GAAG;AACnC,QAAA,IAAI,CAAClH,kBAAkB,GAAGmH,UAAU,CAAC,MAAK;UACxC,IAAI,CAACnH,kBAAkB,GAAG,IAAI;AAC9B,UAAA,IAAI,CAACzB,IAAI,CAAC4D,SAAS,EAAExB,MAAM,CAAC;SAC7B,EAAE,IAAI,CAACzD,eAAe,EAAEkK,uBAAuB,IAAIF,uBAAuB,CAAC;AAC9E,OAAC,CAAC;AACJ;AACF;AAEQP,EAAAA,+BAA+BA,GAAA;IACrC,IAAI,IAAI,CAAC9I,6BAA6B,EAAE;AACtC,MAAA;AACF;IACA,IAAI,CAACA,6BAA6B,GAAG,IAAI;AAEzC,IAAA,IAAI,CAAC,IAAI,CAAC4I,gBAAgB,EAAE,EAAE;AAC5B,MAAA,IAAI,CAACC,YAAY,CAAC,YAAY,EAAGxC,KAAiB,IAAI;AACpD,QAAA,MAAMmD,SAAS,GAAGnD,KAAK,CAACoD,aAA4B;AACpD,QAAA,IAAI,CAACD,SAAS,IAAI,CAAC,IAAI,CAACjK,WAAW,EAAEmK,cAAc,CAACC,QAAQ,CAACH,SAAS,CAAC,EAAE;UACvE,IAAI,CAACvI,IAAI,EAAE;AACb;AACF,OAAC,CAAC;AAEF,MAAA,IAAI,CAAC4H,YAAY,CAAC,OAAO,EAAGxC,KAAiB,IAAI;AAC/C,QAAA,IAAI,IAAI,CAACvE,iBAAiB,EAAE,EAAE;AAC5B,UAAA,MAAM8H,mBAAmB,GAAG,IAAI,CAAC5K,SAAS,CAAC6K,gBAAgB,CAACxD,KAAK,CAAC8C,OAAO,EAAE9C,KAAK,CAAC+C,OAAO,CAAC;AACzF,UAAA,MAAMU,OAAO,GAAG,IAAI,CAAC/L,WAAW,CAACkF,aAAa;UAM9C,IAAI2G,mBAAmB,KAAKE,OAAO,IAAI,CAACA,OAAO,CAACH,QAAQ,CAACC,mBAAmB,CAAC,EAAE;YAC7E,IAAI,CAAC3I,IAAI,EAAE;AACb;AACF;AACF,OAAC,CAAC;AACJ,KAAA,MAAO,IAAI,IAAI,CAACQ,aAAa,KAAK,KAAK,EAAE;MACvC,IAAI,CAACuH,iCAAiC,EAAE;MACxC,MAAMe,gBAAgB,GAAGA,MAAK;QAC5B,IAAI,IAAI,CAAC5H,kBAAkB,EAAE;AAC3Be,UAAAA,YAAY,CAAC,IAAI,CAACf,kBAAkB,CAAC;AACvC;QACA,IAAI,CAAClB,IAAI,CAAC,IAAI,CAAC5B,eAAe,EAAEhC,iBAAiB,CAAC;OACnD;AAED,MAAA,IAAI,CAACwL,YAAY,CAAC,UAAU,EAAEkB,gBAAgB,CAAC;AAC/C,MAAA,IAAI,CAAClB,YAAY,CAAC,aAAa,EAAEkB,gBAAgB,CAAC;AACpD;AACF;AAEQlB,EAAAA,YAAYA,CAAkBmB,IAAY,EAAEC,QAA4B,EAAA;IAC9E,IAAI,CAAC/H,cAAc,CAACgI,IAAI,CACtB,IAAI,CAAChL,SAAS,CAACiL,MAAM,CAAC,IAAI,CAACpM,WAAW,CAACkF,aAAa,EAAE+G,IAAI,EAAEC,QAAQ,EAAEzM,sBAAsB,CAAC,CAC9F;AACH;AAEQoL,EAAAA,gBAAgBA,GAAA;IACtB,IAAI,IAAI,CAACzK,SAAS,CAACiM,GAAG,IAAI,IAAI,CAACjM,SAAS,CAACkM,OAAO,EAAE;AAEhD,MAAA,OAAO,IAAI;KACb,MAAO,IAAI,CAAC,IAAI,CAAClM,SAAS,CAACmM,SAAS,EAAE;AAEpC,MAAA,OAAO,KAAK;AACd;AAEA,IAAA,OACE,CAAC,CAAC,IAAI,CAACjL,eAAe,EAAEkL,qBAAqB,IAC7C,IAAI,CAACzL,aAAa,CAAC0L,UAAU,CAAC,mBAAmB,CAAC,CAACC,OAAO;AAE9D;AAGQzB,EAAAA,iCAAiCA,GAAA;AACvC,IAAA,MAAM0B,QAAQ,GAAG,IAAI,CAACjJ,aAAa;IAEnC,IAAIiJ,QAAQ,KAAK,KAAK,EAAE;AACtB,MAAA,MAAMZ,OAAO,GAAG,IAAI,CAAC/L,WAAW,CAACkF,aAAa;AAC9C,MAAA,MAAM0H,KAAK,GAAGb,OAAO,CAACa,KAAK;AAI3B,MAAA,IAAID,QAAQ,KAAK,IAAI,IAAKZ,OAAO,CAACc,QAAQ,KAAK,OAAO,IAAId,OAAO,CAACc,QAAQ,KAAK,UAAW,EAAE;AAC1FD,QAAAA,KAAK,CAACE,UAAU,GACdF,KAAK,CAACG,YAAY,GAClBH,KAAK,CAACI,gBAAgB,GACtBJ,KAAK,CAACK,aAAa,GACjB,MAAM;AACZ;MAIA,IAAIN,QAAQ,KAAK,IAAI,IAAI,CAACZ,OAAO,CAACmB,SAAS,EAAE;QAC3CN,KAAK,CAACO,cAAc,GAAG,MAAM;AAC/B;MAEAP,KAAK,CAACQ,WAAW,GAAG,MAAM;MAC1BR,KAAK,CAACS,uBAAuB,GAAG,aAAa;AAC/C;AACF;EAGQjK,oBAAoBA,CAACQ,UAAkB,EAAA;IAC7C,IAAI,IAAI,CAACrB,uBAAuB,EAAE;AAChC,MAAA;AACF;IAEA,IAAI,CAACA,uBAAuB,GAAG,IAAI;AACnC,IAAA,IAAI,CAACjC,cAAc,CAACoF,iBAAiB,CAAC,IAAI,CAAC1F,WAAW,CAACkF,aAAa,EAAEtB,UAAU,EAAE,SAAS,CAAC;AAM5F,IAAA,IAAI,CAAC,IAAI,CAACW,YAAY,EAAE;AACtB+F,MAAAA,eAAe,CACb;QACEgD,KAAK,EAAEA,MAAK;UACV,IAAI,CAAC/K,uBAAuB,GAAG,KAAK;UAEpC,IAAI,IAAI,CAACc,OAAO,IAAI,CAAC,IAAI,CAACL,QAAQ,EAAE;AAClC,YAAA,IAAI,CAAC1C,cAAc,CAACiN,QAAQ,CAAC,IAAI,CAACvN,WAAW,CAACkF,aAAa,EAAE,IAAI,CAAC7B,OAAO,EAAE,SAAS,CAAC;AACvF;AACF;OACD,EACD;QAACvE,QAAQ,EAAE,IAAI,CAAC8B;AAAS,OAAC,CAC3B;AACH;AACF;;;;;UAxuBWb,UAAU;AAAAyN,IAAAA,IAAA,EAAA,EAAA;AAAAC,IAAAA,MAAA,EAAAC,EAAA,CAAAC,eAAA,CAAAC;AAAA,GAAA,CAAA;;;;UAAV7N,UAAU;AAAA8N,IAAAA,YAAA,EAAA,IAAA;AAAAC,IAAAA,QAAA,EAAA,cAAA;AAAAC,IAAAA,MAAA,EAAA;AAAAvP,MAAAA,QAAA,EAAA,CAAA,oBAAA,EAAA,UAAA,CAAA;AAAAqE,MAAAA,gBAAA,EAAA,CAAA,4BAAA,EAAA,kBAAA,CAAA;AAAAG,MAAAA,QAAA,EAAA,CAAA,oBAAA,EAAA,UAAA,CAAA;AAAA5D,MAAAA,SAAA,EAAA,CAAA,qBAAA,EAAA,WAAA,CAAA;AAAAC,MAAAA,SAAA,EAAA,CAAA,qBAAA,EAAA,WAAA,CAAA;AAAAqE,MAAAA,aAAA,EAAA,CAAA,yBAAA,EAAA,eAAA,CAAA;AAAAL,MAAAA,OAAA,EAAA,CAAA,YAAA,EAAA,SAAA,CAAA;AAAAY,MAAAA,YAAA,EAAA,CAAA,iBAAA,EAAA,cAAA;KAAA;AAAA+J,IAAAA,IAAA,EAAA;AAAAC,MAAAA,UAAA,EAAA;AAAA,QAAA,gCAAA,EAAA;OAAA;AAAAC,MAAAA,cAAA,EAAA;KAAA;IAAAC,QAAA,EAAA,CAAA,YAAA,CAAA;AAAAC,IAAAA,QAAA,EAAAV;AAAA,GAAA,CAAA;;;;;;QAAV3N,UAAU;AAAAsO,EAAAA,UAAA,EAAA,CAAA;UARtBT,SAAS;AAACU,IAAAA,IAAA,EAAA,CAAA;AACTR,MAAAA,QAAQ,EAAE,cAAc;AACxBK,MAAAA,QAAQ,EAAE,YAAY;AACtBH,MAAAA,IAAI,EAAE;AACJ,QAAA,OAAO,EAAE,yBAAyB;AAClC,QAAA,kCAAkC,EAAE;AACrC;KACF;;;;;YAqCEO,KAAK;aAAC,oBAAoB;;;YAqB1BA,KAAK;aAAC,4BAA4B;;;YAYlCA,KAAK;aAAC,oBAAoB;;;YAuB1BA,KAAK;aAAC,qBAAqB;;;YAY3BA,KAAK;aAAC,qBAAqB;;;YA6B3BA,KAAK;aAAC,yBAAyB;;;YAG/BA,KAAK;aAAC,YAAY;;;YA0BlBA,KAAK;aAAC,iBAAiB;;;;MAwlBbpM,gBAAgB,CAAA;AACnBqM,EAAAA,kBAAkB,GAAGzP,MAAM,CAAC0P,iBAAiB,CAAC;AAC5CzO,EAAAA,WAAW,GAAGjB,MAAM,CAA0BkB,UAAU,CAAC;AAGnEyO,EAAAA,YAAY,GAAG,KAAK;EAGpBrL,OAAO;EAGPY,YAAY;EAGJ0K,cAAc;EAGdC,cAAc;EAGtBzI,eAAe;EAGf1C,oBAAoB;EAGZpC,mBAAmB,GAAGA,mBAAmB,EAAE;EAQnDwN,QAAQ;AAGAC,EAAAA,mBAAmB,GAAG,KAAK;AAG3BC,EAAAA,UAAU,GAAG,KAAK;AAGTC,EAAAA,OAAO,GAAkB,IAAI1K,OAAO,EAAE;AAGtC2K,EAAAA,cAAc,GAAG,sBAAsB;AAGvCC,EAAAA,cAAc,GAAG,sBAAsB;EAIxD1K,WAAAA,GAAA;EAMA7B,IAAIA,CAACiD,KAAa,EAAA;AAEhB,IAAA,IAAI,IAAI,CAACgJ,cAAc,IAAI,IAAI,EAAE;AAC/BzJ,MAAAA,YAAY,CAAC,IAAI,CAACyJ,cAAc,CAAC;AACnC;AAEA,IAAA,IAAI,CAACD,cAAc,GAAGpD,UAAU,CAAC,MAAK;AACpC,MAAA,IAAI,CAAC4D,iBAAiB,CAAC,IAAI,CAAC;MAC5B,IAAI,CAACR,cAAc,GAAGpI,SAAS;KAChC,EAAEX,KAAK,CAAC;AACX;EAMA1C,IAAIA,CAAC0C,KAAa,EAAA;AAEhB,IAAA,IAAI,IAAI,CAAC+I,cAAc,IAAI,IAAI,EAAE;AAC/BxJ,MAAAA,YAAY,CAAC,IAAI,CAACwJ,cAAc,CAAC;AACnC;AAEA,IAAA,IAAI,CAACC,cAAc,GAAGrD,UAAU,CAAC,MAAK;AACpC,MAAA,IAAI,CAAC4D,iBAAiB,CAAC,KAAK,CAAC;MAC7B,IAAI,CAACP,cAAc,GAAGrI,SAAS;KAChC,EAAEX,KAAK,CAAC;AACX;AAGAQ,EAAAA,WAAWA,GAAA;IACT,OAAO,IAAI,CAAC4I,OAAO;AACrB;AAGA3I,EAAAA,SAASA,GAAA;IACP,OAAO,IAAI,CAAC0I,UAAU;AACxB;AAEA9J,EAAAA,WAAWA,GAAA;IACT,IAAI,CAACY,wBAAwB,EAAE;AAC/B,IAAA,IAAI,CAACmJ,OAAO,CAACvJ,QAAQ,EAAE;IACvB,IAAI,CAACU,eAAe,GAAG,IAAK;AAC9B;AAOAiC,EAAAA,sBAAsBA,GAAA;IACpB,IAAI,IAAI,CAAC0G,mBAAmB,EAAE;AAC5B,MAAA,IAAI,CAAC5L,IAAI,CAAC,CAAC,CAAC;AACd;AACF;AAOAmH,EAAAA,aAAaA,GAAA;AACX,IAAA,IAAI,CAACmE,kBAAkB,CAACY,YAAY,EAAE;AACxC;AAEAC,EAAAA,iBAAiBA,CAAC;AAAC3D,IAAAA;AAA0B,GAAA,EAAA;AAC3C,IAAA,IAAI,CAACA,aAAa,IAAI,CAAC,IAAI,CAACvF,eAAe,CAACyF,QAAQ,CAACF,aAAqB,CAAC,EAAE;AAC3E,MAAA,IAAI,IAAI,CAACrF,SAAS,EAAE,EAAE;AACpB,QAAA,IAAI,CAACnD,IAAI,CAAC,IAAI,CAACO,oBAAoB,CAAC;AACtC,OAAA,MAAO;AACL,QAAA,IAAI,CAAC6L,kBAAkB,CAAC,KAAK,CAAC;AAChC;AACF;AACF;AAOUC,EAAAA,OAAOA,GAAA;AACf,IAAA,IAAI,CAACb,YAAY,GAAG,IAAI,CAACc,mBAAmB,EAAE;IAC9C,IAAI,CAACnF,aAAa,EAAE;AACtB;AAGQmF,EAAAA,mBAAmBA,GAAA;IACzB,MAAMC,IAAI,GAAG,IAAI,CAACzP,WAAW,CAACkF,aAAa,CAACwK,qBAAqB,EAAE;IACnE,OAAOD,IAAI,CAACE,MAAM,GAAG9P,UAAU,IAAI4P,IAAI,CAACG,KAAK,IAAI9P,SAAS;AAC5D;AAGA+P,EAAAA,mBAAmBA,CAAC;AAACC,IAAAA;AAA8B,GAAA,EAAA;IACjD,IAAIA,aAAa,KAAK,IAAI,CAACb,cAAc,IAAIa,aAAa,KAAK,IAAI,CAACZ,cAAc,EAAE;MAClF,IAAI,CAACI,kBAAkB,CAACQ,aAAa,KAAK,IAAI,CAACb,cAAc,CAAC;AAChE;AACF;AAGApJ,EAAAA,wBAAwBA,GAAA;AACtB,IAAA,IAAI,IAAI,CAAC8I,cAAc,IAAI,IAAI,EAAE;AAC/BxJ,MAAAA,YAAY,CAAC,IAAI,CAACwJ,cAAc,CAAC;AACnC;AAEA,IAAA,IAAI,IAAI,CAACC,cAAc,IAAI,IAAI,EAAE;AAC/BzJ,MAAAA,YAAY,CAAC,IAAI,CAACyJ,cAAc,CAAC;AACnC;AAEA,IAAA,IAAI,CAACD,cAAc,GAAG,IAAI,CAACC,cAAc,GAAGrI,SAAS;AACvD;EAGQ+I,kBAAkBA,CAACS,SAAkB,EAAA;AAC3C,IAAA,IAAIA,SAAS,EAAE;MACb,IAAI,CAACjB,mBAAmB,GAAG,IAAI;KACjC,MAAO,IAAI,CAAC,IAAI,CAACzI,SAAS,EAAE,EAAE;AAC5B,MAAA,IAAI,CAAC2I,OAAO,CAACxJ,IAAI,EAAE;AACrB;AACF;EAGQ2J,iBAAiBA,CAAC9I,SAAkB,EAAA;AAI1C,IAAA,MAAM2J,OAAO,GAAG,IAAI,CAACnB,QAAQ,CAAC3J,aAAa;AAC3C,IAAA,MAAM+K,SAAS,GAAG,IAAI,CAAChB,cAAc;AACrC,IAAA,MAAMiB,SAAS,GAAG,IAAI,CAAChB,cAAc;IACrCc,OAAO,CAACG,SAAS,CAACC,MAAM,CAAC/J,SAAS,GAAG6J,SAAS,GAAGD,SAAS,CAAC;IAC3DD,OAAO,CAACG,SAAS,CAACE,GAAG,CAAChK,SAAS,GAAG4J,SAAS,GAAGC,SAAS,CAAC;AACxD,IAAA,IAAI,IAAI,CAACnB,UAAU,KAAK1I,SAAS,EAAE;MACjC,IAAI,CAAC0I,UAAU,GAAG1I,SAAS;AAC3B,MAAA,IAAI,CAACmI,kBAAkB,CAACY,YAAY,EAAE;AACxC;IAIA,IAAI/I,SAAS,IAAI,CAAC,IAAI,CAAChF,mBAAmB,IAAI,OAAOiP,gBAAgB,KAAK,UAAU,EAAE;AACpF,MAAA,MAAMC,MAAM,GAAGD,gBAAgB,CAACN,OAAO,CAAC;AAGxC,MAAA,IACEO,MAAM,CAACC,gBAAgB,CAAC,oBAAoB,CAAC,KAAK,IAAI,IACtDD,MAAM,CAACC,gBAAgB,CAAC,gBAAgB,CAAC,KAAK,MAAM,EACpD;QACA,IAAI,CAACnP,mBAAmB,GAAG,IAAI;AACjC;AACF;AAEA,IAAA,IAAIgF,SAAS,EAAE;MACb,IAAI,CAACkJ,OAAO,EAAE;AAChB;IAEA,IAAI,IAAI,CAAClO,mBAAmB,EAAE;AAC5B2O,MAAAA,OAAO,CAACG,SAAS,CAACE,GAAG,CAAC,yBAAyB,CAAC;AAChD,MAAA,IAAI,CAACf,kBAAkB,CAACjJ,SAAS,CAAC;AACpC;AACF;;;;;UAvNWlE,gBAAgB;AAAAqL,IAAAA,IAAA,EAAA,EAAA;AAAAC,IAAAA,MAAA,EAAAC,EAAA,CAAAC,eAAA,CAAA8C;AAAA,GAAA,CAAA;AAAhB,EAAA,OAAAC,IAAA,GAAAhD,EAAA,CAAAiD,oBAAA,CAAA;AAAAC,IAAAA,UAAA,EAAA,QAAA;AAAAC,IAAAA,OAAA,EAAA,QAAA;AAAAC,IAAAA,IAAA,EAAA3O,gBAAgB;;;;;;;;;;;;;;;;;;;cC17B7B,wRAQA;IAAAoO,MAAA,EAAA,CAAA,6uEAAA,CAAA;AAAAQ,IAAAA,eAAA,EAAArD,EAAA,CAAAsD,uBAAA,CAAAC,MAAA;AAAAC,IAAAA,aAAA,EAAAxD,EAAA,CAAAyD,iBAAA,CAAAC;AAAA,GAAA,CAAA;;;;;;QDk7BajP,gBAAgB;AAAAkM,EAAAA,UAAA,EAAA,CAAA;UAX5BoC,SAAS;;gBACE,uBAAuB;MAAAS,aAAA,EAGlBC,iBAAiB,CAACC,IAAI;uBACpBJ,uBAAuB,CAACC,MAAM;AACzCjD,MAAAA,IAAA,EAAA;AACJ,QAAA,cAAc,EAAE,2BAA2B;AAC3C,QAAA,aAAa,EAAE;OAChB;AAAAqD,MAAAA,QAAA,EAAA,wRAAA;MAAAd,MAAA,EAAA,CAAA,6uEAAA;KAAA;;;;;YA+BAe,SAAS;MAAChD,IAAA,EAAA,CAAA,SAAS,EAAE;AAGpBiD,QAAAA,MAAM,EAAE;OACT;;;;;;;"}
1
+ {"version":3,"file":"_tooltip-chunk.mjs","sources":["../../../../../darwin_arm64-fastbuild-ST-fdfa778d11ba/bin/src/material/tooltip/tooltip.ts","../../../../../darwin_arm64-fastbuild-ST-fdfa778d11ba/bin/src/material/tooltip/tooltip.html"],"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 {takeUntil} from 'rxjs/operators';\nimport {\n BooleanInput,\n coerceBooleanProperty,\n coerceNumberProperty,\n NumberInput,\n} from '@angular/cdk/coercion';\nimport {ESCAPE, hasModifierKey} from '@angular/cdk/keycodes';\nimport {\n AfterViewInit,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n Directive,\n ElementRef,\n InjectionToken,\n Input,\n NgZone,\n OnDestroy,\n ViewChild,\n ViewContainerRef,\n ViewEncapsulation,\n inject,\n afterNextRender,\n Injector,\n DOCUMENT,\n Renderer2,\n} from '@angular/core';\nimport {Platform} from '@angular/cdk/platform';\nimport {AriaDescriber, FocusMonitor} from '@angular/cdk/a11y';\nimport {Directionality} from '@angular/cdk/bidi';\nimport {\n ConnectedPosition,\n ConnectionPositionPair,\n createFlexibleConnectedPositionStrategy,\n createOverlayRef,\n createRepositionScrollStrategy,\n FlexibleConnectedPositionStrategy,\n HorizontalConnectionPos,\n OriginConnectionPosition,\n OverlayConnectionPosition,\n OverlayRef,\n ScrollDispatcher,\n ScrollStrategy,\n VerticalConnectionPos,\n} from '@angular/cdk/overlay';\nimport {ComponentPortal} from '@angular/cdk/portal';\nimport {MediaMatcher} from '@angular/cdk/layout';\nimport {Observable, Subject} from 'rxjs';\nimport {_animationsDisabled} from '../core';\n\ndeclare global {\n interface CSSStyleDeclaration {\n msUserSelect: string;\n MozUserSelect: string;\n webkitUserDrag: string;\n webkitTapHighlightColor: string;\n }\n}\n\n/** Possible positions for a tooltip. */\nexport type TooltipPosition = 'left' | 'right' | 'above' | 'below' | 'before' | 'after';\n\n/**\n * Options for how the tooltip trigger should handle touch gestures.\n * See `MatTooltip.touchGestures` for more information.\n */\nexport type TooltipTouchGestures = 'auto' | 'on' | 'off';\n\n/** Possible visibility states of a tooltip. */\nexport type TooltipVisibility = 'initial' | 'visible' | 'hidden';\n\n/** Time in ms to throttle repositioning after scroll events. */\nexport const SCROLL_THROTTLE_MS = 20;\n\n/**\n * Creates an error to be thrown if the user supplied an invalid tooltip position.\n * @docs-private\n */\nexport function getMatTooltipInvalidPositionError(position: string) {\n return Error(`Tooltip position \"${position}\" is invalid.`);\n}\n\n/** Injection token that determines the scroll handling while a tooltip is visible. */\nexport const MAT_TOOLTIP_SCROLL_STRATEGY = new InjectionToken<() => ScrollStrategy>(\n 'mat-tooltip-scroll-strategy',\n {\n providedIn: 'root',\n factory: () => {\n const injector = inject(Injector);\n return () => createRepositionScrollStrategy(injector, {scrollThrottle: SCROLL_THROTTLE_MS});\n },\n },\n);\n\n/** Injection token to be used to override the default options for `matTooltip`. */\nexport const MAT_TOOLTIP_DEFAULT_OPTIONS = new InjectionToken<MatTooltipDefaultOptions>(\n 'mat-tooltip-default-options',\n {\n providedIn: 'root',\n factory: () => ({\n showDelay: 0,\n hideDelay: 0,\n touchendHideDelay: 1500,\n }),\n },\n);\n\n/** Default `matTooltip` options that can be overridden. */\nexport interface MatTooltipDefaultOptions {\n /** Default delay when the tooltip is shown. */\n showDelay: number;\n\n /** Default delay when the tooltip is hidden. */\n hideDelay: number;\n\n /** Default delay when hiding the tooltip on a touch device. */\n touchendHideDelay: number;\n\n /** Time between the user putting the pointer on a tooltip trigger and the long press event being fired on a touch device. */\n touchLongPressShowDelay?: number;\n\n /** Default touch gesture handling for tooltips. */\n touchGestures?: TooltipTouchGestures;\n\n /** Default position for tooltips. */\n position?: TooltipPosition;\n\n /**\n * Default value for whether tooltips should be positioned near the click or touch origin\n * instead of outside the element bounding box.\n */\n positionAtOrigin?: boolean;\n\n /** Disables the ability for the user to interact with the tooltip element. */\n disableTooltipInteractivity?: boolean;\n\n /**\n * Default classes to be applied to the tooltip. These default classes will not be applied if\n * `tooltipClass` is defined directly on the tooltip element, as it will override the default.\n */\n tooltipClass?: string | string[];\n\n /**\n * Whether the tooltip should use a media query to detect if the device is able to hover.\n * Note that this may affect tests that run in a headless browser which reports that it's\n * unable to hover. In such cases you may need to include an additional timeout, because\n * the tooltip will fall back to treating the device as a touch screen.\n */\n detectHoverCapability?: boolean;\n}\n\n/**\n * CSS class that will be attached to the overlay panel.\n * @deprecated\n * @breaking-change 13.0.0 remove this variable\n */\nexport const TOOLTIP_PANEL_CLASS = 'mat-mdc-tooltip-panel';\n\nconst PANEL_CLASS = 'tooltip-panel';\n\n/** Options used to bind passive event listeners. */\nconst passiveListenerOptions = {passive: true};\n\n// These constants were taken from MDC's `numbers` object. We can't import them from MDC,\n// because they have some top-level references to `window` which break during SSR.\nconst MIN_VIEWPORT_TOOLTIP_THRESHOLD = 8;\nconst UNBOUNDED_ANCHOR_GAP = 8;\nconst MIN_HEIGHT = 24;\nconst MAX_WIDTH = 200;\n\n/**\n * Directive that attaches a material design tooltip to the host element. Animates the showing and\n * hiding of a tooltip provided position (defaults to below the element).\n *\n * https://material.io/design/components/tooltips.html\n */\n@Directive({\n selector: '[matTooltip]',\n exportAs: 'matTooltip',\n host: {\n 'class': 'mat-mdc-tooltip-trigger',\n '[class.mat-mdc-tooltip-disabled]': 'disabled',\n },\n})\nexport class MatTooltip implements OnDestroy, AfterViewInit {\n private _elementRef = inject<ElementRef<HTMLElement>>(ElementRef);\n private _ngZone = inject(NgZone);\n private _platform = inject(Platform);\n private _ariaDescriber = inject(AriaDescriber);\n private _focusMonitor = inject(FocusMonitor);\n protected _dir = inject(Directionality);\n private _injector = inject(Injector);\n private _viewContainerRef = inject(ViewContainerRef);\n private _mediaMatcher = inject(MediaMatcher);\n private _document = inject(DOCUMENT);\n private _renderer = inject(Renderer2);\n private _animationsDisabled = _animationsDisabled();\n private _defaultOptions = inject<MatTooltipDefaultOptions>(MAT_TOOLTIP_DEFAULT_OPTIONS, {\n optional: true,\n });\n\n _overlayRef: OverlayRef | null = null;\n _tooltipInstance: TooltipComponent | null = null;\n _overlayPanelClass: string[] | undefined; // Used for styling internally.\n\n private _portal!: ComponentPortal<TooltipComponent>;\n private _position: TooltipPosition = 'below';\n private _positionAtOrigin: boolean = false;\n private _disabled: boolean = false;\n private _tooltipClass!: string | string[] | Set<string> | {[key: string]: unknown};\n private _viewInitialized = false;\n private _pointerExitEventsInitialized = false;\n private readonly _tooltipComponent = TooltipComponent;\n private _viewportMargin = 8;\n private _currentPosition!: TooltipPosition;\n private readonly _cssClassPrefix: string = 'mat-mdc';\n private _ariaDescriptionPending = false;\n private _dirSubscribed = false;\n\n /** Allows the user to define the position of the tooltip relative to the parent element */\n @Input('matTooltipPosition')\n get position(): TooltipPosition {\n return this._position;\n }\n\n set position(value: TooltipPosition) {\n if (value !== this._position) {\n this._position = value;\n\n if (this._overlayRef) {\n this._updatePosition(this._overlayRef);\n this._tooltipInstance?.show(0);\n this._overlayRef.updatePosition();\n }\n }\n }\n\n /**\n * Whether tooltip should be relative to the click or touch origin\n * instead of outside the element bounding box.\n */\n @Input('matTooltipPositionAtOrigin')\n get positionAtOrigin(): boolean {\n return this._positionAtOrigin;\n }\n\n set positionAtOrigin(value: BooleanInput) {\n this._positionAtOrigin = coerceBooleanProperty(value);\n this._detach();\n this._overlayRef = null;\n }\n\n /** Disables the display of the tooltip. */\n @Input('matTooltipDisabled')\n get disabled(): boolean {\n return this._disabled;\n }\n\n set disabled(value: BooleanInput) {\n const isDisabled = coerceBooleanProperty(value);\n\n if (this._disabled !== isDisabled) {\n this._disabled = isDisabled;\n\n // If tooltip is disabled, hide immediately.\n if (isDisabled) {\n this.hide(0);\n } else {\n this._setupPointerEnterEventsIfNeeded();\n }\n\n this._syncAriaDescription(this.message);\n }\n }\n\n /** The default delay in ms before showing the tooltip after show is called */\n @Input('matTooltipShowDelay')\n get showDelay(): number {\n return this._showDelay;\n }\n\n set showDelay(value: NumberInput) {\n this._showDelay = coerceNumberProperty(value);\n }\n\n private _showDelay!: number;\n\n /** The default delay in ms before hiding the tooltip after hide is called */\n @Input('matTooltipHideDelay')\n get hideDelay(): number {\n return this._hideDelay;\n }\n\n set hideDelay(value: NumberInput) {\n this._hideDelay = coerceNumberProperty(value);\n\n if (this._tooltipInstance) {\n this._tooltipInstance._mouseLeaveHideDelay = this._hideDelay;\n }\n }\n\n private _hideDelay!: number;\n\n /**\n * How touch gestures should be handled by the tooltip. On touch devices the tooltip directive\n * uses a long press gesture to show and hide, however it can conflict with the native browser\n * gestures. To work around the conflict, Angular Material disables native gestures on the\n * trigger, but that might not be desirable on particular elements (e.g. inputs and draggable\n * elements). The different values for this option configure the touch event handling as follows:\n * - `auto` - Enables touch gestures for all elements, but tries to avoid conflicts with native\n * browser gestures on particular elements. In particular, it allows text selection on inputs\n * and textareas, and preserves the native browser dragging on elements marked as `draggable`.\n * - `on` - Enables touch gestures for all elements and disables native\n * browser gestures with no exceptions.\n * - `off` - Disables touch gestures. Note that this will prevent the tooltip from\n * showing on touch devices.\n */\n @Input('matTooltipTouchGestures') touchGestures: TooltipTouchGestures = 'auto';\n\n /** The message to be displayed in the tooltip */\n @Input('matTooltip')\n get message(): string {\n return this._message;\n }\n\n set message(value: string | number | null | undefined) {\n const oldMessage = this._message;\n\n // If the message is not a string (e.g. number), convert it to a string and trim it.\n // Must convert with `String(value)`, not `${value}`, otherwise Closure Compiler optimises\n // away the string-conversion: https://github.com/angular/components/issues/20684\n this._message = value != null ? String(value).trim() : '';\n\n if (!this._message && this._isTooltipVisible()) {\n this.hide(0);\n } else {\n this._setupPointerEnterEventsIfNeeded();\n this._updateTooltipMessage();\n }\n\n this._syncAriaDescription(oldMessage);\n }\n\n private _message = '';\n\n /** Classes to be passed to the tooltip. Supports the same syntax as `ngClass`. */\n @Input('matTooltipClass')\n get tooltipClass() {\n return this._tooltipClass;\n }\n\n set tooltipClass(value: string | string[] | Set<string> | {[key: string]: unknown}) {\n this._tooltipClass = value;\n if (this._tooltipInstance) {\n this._setTooltipClass(this._tooltipClass);\n }\n }\n\n /** Manually-bound passive event listeners. */\n private readonly _eventCleanups: (() => void)[] = [];\n\n /** Timer started at the last `touchstart` event. */\n private _touchstartTimeout: null | ReturnType<typeof setTimeout> = null;\n\n /** Emits when the component is destroyed. */\n private readonly _destroyed = new Subject<void>();\n\n /** Whether ngOnDestroyed has been called. */\n private _isDestroyed = false;\n\n constructor(...args: unknown[]);\n\n constructor() {\n const defaultOptions = this._defaultOptions;\n\n if (defaultOptions) {\n this._showDelay = defaultOptions.showDelay;\n this._hideDelay = defaultOptions.hideDelay;\n\n if (defaultOptions.position) {\n this.position = defaultOptions.position;\n }\n\n if (defaultOptions.positionAtOrigin) {\n this.positionAtOrigin = defaultOptions.positionAtOrigin;\n }\n\n if (defaultOptions.touchGestures) {\n this.touchGestures = defaultOptions.touchGestures;\n }\n\n if (defaultOptions.tooltipClass) {\n this.tooltipClass = defaultOptions.tooltipClass;\n }\n }\n\n this._viewportMargin = MIN_VIEWPORT_TOOLTIP_THRESHOLD;\n }\n\n ngAfterViewInit() {\n // This needs to happen after view init so the initial values for all inputs have been set.\n this._viewInitialized = true;\n this._setupPointerEnterEventsIfNeeded();\n\n this._focusMonitor\n .monitor(this._elementRef)\n .pipe(takeUntil(this._destroyed))\n .subscribe(origin => {\n // Note that the focus monitor runs outside the Angular zone.\n if (!origin) {\n this._ngZone.run(() => this.hide(0));\n } else if (origin === 'keyboard') {\n this._ngZone.run(() => this.show());\n }\n });\n }\n\n /**\n * Dispose the tooltip when destroyed.\n */\n ngOnDestroy() {\n const nativeElement = this._elementRef.nativeElement;\n\n // Optimization: Do not call clearTimeout unless there is an active timer.\n if (this._touchstartTimeout) {\n clearTimeout(this._touchstartTimeout);\n }\n\n if (this._overlayRef) {\n this._overlayRef.dispose();\n this._tooltipInstance = null;\n }\n\n this._eventCleanups.forEach(cleanup => cleanup());\n this._eventCleanups.length = 0;\n this._destroyed.next();\n this._destroyed.complete();\n this._isDestroyed = true;\n this._ariaDescriber.removeDescription(nativeElement, this.message, 'tooltip');\n this._focusMonitor.stopMonitoring(nativeElement);\n }\n\n /** Shows the tooltip after the delay in ms, defaults to tooltip-delay-show or 0ms if no input */\n show(delay: number = this.showDelay, origin?: {x: number; y: number}): void {\n if (this.disabled || !this.message || this._isTooltipVisible()) {\n this._tooltipInstance?._cancelPendingAnimations();\n return;\n }\n\n const overlayRef = this._createOverlay(origin);\n this._detach();\n this._portal =\n this._portal || new ComponentPortal(this._tooltipComponent, this._viewContainerRef);\n const instance = (this._tooltipInstance = overlayRef.attach(this._portal).instance);\n instance._triggerElement = this._elementRef.nativeElement;\n instance._mouseLeaveHideDelay = this._hideDelay;\n instance\n .afterHidden()\n .pipe(takeUntil(this._destroyed))\n .subscribe(() => this._detach());\n this._setTooltipClass(this._tooltipClass);\n this._updateTooltipMessage();\n instance.show(delay);\n }\n\n /** Hides the tooltip after the delay in ms, defaults to tooltip-delay-hide or 0ms if no input */\n hide(delay: number = this.hideDelay): void {\n const instance = this._tooltipInstance;\n\n if (instance) {\n if (instance.isVisible()) {\n instance.hide(delay);\n } else {\n instance._cancelPendingAnimations();\n this._detach();\n }\n }\n }\n\n /** Shows/hides the tooltip */\n toggle(origin?: {x: number; y: number}): void {\n this._isTooltipVisible() ? this.hide() : this.show(undefined, origin);\n }\n\n /** Returns true if the tooltip is currently visible to the user */\n _isTooltipVisible(): boolean {\n return !!this._tooltipInstance && this._tooltipInstance.isVisible();\n }\n\n /** Create the overlay config and position strategy */\n private _createOverlay(origin?: {x: number; y: number}): OverlayRef {\n if (this._overlayRef) {\n const existingStrategy = this._overlayRef.getConfig()\n .positionStrategy as FlexibleConnectedPositionStrategy;\n\n if ((!this.positionAtOrigin || !origin) && existingStrategy._origin instanceof ElementRef) {\n return this._overlayRef;\n }\n\n this._detach();\n }\n\n const scrollableAncestors = this._injector\n .get(ScrollDispatcher)\n .getAncestorScrollContainers(this._elementRef);\n\n const panelClass = `${this._cssClassPrefix}-${PANEL_CLASS}`;\n\n // Create connected position strategy that listens for scroll events to reposition.\n const strategy = createFlexibleConnectedPositionStrategy(\n this._injector,\n this.positionAtOrigin ? origin || this._elementRef : this._elementRef,\n )\n .withTransformOriginOn(`.${this._cssClassPrefix}-tooltip`)\n .withFlexibleDimensions(false)\n .withViewportMargin(this._viewportMargin)\n .withScrollableContainers(scrollableAncestors)\n .withPopoverLocation('global');\n\n strategy.positionChanges.pipe(takeUntil(this._destroyed)).subscribe(change => {\n this._updateCurrentPositionClass(change.connectionPair);\n\n if (this._tooltipInstance) {\n if (change.scrollableViewProperties.isOverlayClipped && this._tooltipInstance.isVisible()) {\n // After position changes occur and the overlay is clipped by\n // a parent scrollable then close the tooltip.\n this._ngZone.run(() => this.hide(0));\n }\n }\n });\n\n this._overlayRef = createOverlayRef(this._injector, {\n direction: this._dir,\n positionStrategy: strategy,\n panelClass: this._overlayPanelClass ? [...this._overlayPanelClass, panelClass] : panelClass,\n scrollStrategy: this._injector.get(MAT_TOOLTIP_SCROLL_STRATEGY)(),\n disableAnimations: this._animationsDisabled,\n eventPredicate: this._overlayEventPredicate,\n });\n\n this._updatePosition(this._overlayRef);\n\n this._overlayRef\n .detachments()\n .pipe(takeUntil(this._destroyed))\n .subscribe(() => this._detach());\n\n this._overlayRef\n .outsidePointerEvents()\n .pipe(takeUntil(this._destroyed))\n .subscribe(() => this._tooltipInstance?._handleBodyInteraction());\n\n this._overlayRef\n .keydownEvents()\n .pipe(takeUntil(this._destroyed))\n .subscribe(event => {\n // Note: we don't check the `keyCode` since it's covered by the `eventPredicate` above.\n event.preventDefault();\n event.stopPropagation();\n this._ngZone.run(() => this.hide(0));\n });\n\n if (this._defaultOptions?.disableTooltipInteractivity) {\n this._overlayRef.addPanelClass(`${this._cssClassPrefix}-tooltip-panel-non-interactive`);\n }\n\n if (!this._dirSubscribed) {\n this._dirSubscribed = true;\n this._dir.change.pipe(takeUntil(this._destroyed)).subscribe(() => {\n if (this._overlayRef) {\n this._updatePosition(this._overlayRef);\n }\n });\n }\n\n return this._overlayRef;\n }\n\n /** Detaches the currently-attached tooltip. */\n private _detach() {\n if (this._overlayRef && this._overlayRef.hasAttached()) {\n this._overlayRef.detach();\n }\n\n this._tooltipInstance = null;\n }\n\n /** Updates the position of the current tooltip. */\n private _updatePosition(overlayRef: OverlayRef) {\n const position = overlayRef.getConfig().positionStrategy as FlexibleConnectedPositionStrategy;\n const origin = this._getOrigin();\n const overlay = this._getOverlayPosition();\n\n position.withPositions([\n this._addOffset({...origin.main, ...overlay.main}),\n this._addOffset({...origin.fallback, ...overlay.fallback}),\n ]);\n }\n\n /** Adds the configured offset to a position. Used as a hook for child classes. */\n protected _addOffset(position: ConnectedPosition): ConnectedPosition {\n const offset = UNBOUNDED_ANCHOR_GAP;\n const isLtr = !this._dir || this._dir.value == 'ltr';\n\n if (position.originY === 'top') {\n position.offsetY = -offset;\n } else if (position.originY === 'bottom') {\n position.offsetY = offset;\n } else if (position.originX === 'start') {\n position.offsetX = isLtr ? -offset : offset;\n } else if (position.originX === 'end') {\n position.offsetX = isLtr ? offset : -offset;\n }\n\n return position;\n }\n\n /**\n * Returns the origin position and a fallback position based on the user's position preference.\n * The fallback position is the inverse of the origin (e.g. `'below' -> 'above'`).\n */\n _getOrigin(): {main: OriginConnectionPosition; fallback: OriginConnectionPosition} {\n const isLtr = !this._dir || this._dir.value == 'ltr';\n const position = this.position;\n let originPosition: OriginConnectionPosition;\n\n if (position == 'above' || position == 'below') {\n originPosition = {originX: 'center', originY: position == 'above' ? 'top' : 'bottom'};\n } else if (\n position == 'before' ||\n (position == 'left' && isLtr) ||\n (position == 'right' && !isLtr)\n ) {\n originPosition = {originX: 'start', originY: 'center'};\n } else if (\n position == 'after' ||\n (position == 'right' && isLtr) ||\n (position == 'left' && !isLtr)\n ) {\n originPosition = {originX: 'end', originY: 'center'};\n } else if (typeof ngDevMode === 'undefined' || ngDevMode) {\n throw getMatTooltipInvalidPositionError(position);\n }\n\n const {x, y} = this._invertPosition(originPosition!.originX, originPosition!.originY);\n\n return {\n main: originPosition!,\n fallback: {originX: x, originY: y},\n };\n }\n\n /** Returns the overlay position and a fallback position based on the user's preference */\n _getOverlayPosition(): {main: OverlayConnectionPosition; fallback: OverlayConnectionPosition} {\n const isLtr = !this._dir || this._dir.value == 'ltr';\n const position = this.position;\n let overlayPosition: OverlayConnectionPosition;\n\n if (position == 'above') {\n overlayPosition = {overlayX: 'center', overlayY: 'bottom'};\n } else if (position == 'below') {\n overlayPosition = {overlayX: 'center', overlayY: 'top'};\n } else if (\n position == 'before' ||\n (position == 'left' && isLtr) ||\n (position == 'right' && !isLtr)\n ) {\n overlayPosition = {overlayX: 'end', overlayY: 'center'};\n } else if (\n position == 'after' ||\n (position == 'right' && isLtr) ||\n (position == 'left' && !isLtr)\n ) {\n overlayPosition = {overlayX: 'start', overlayY: 'center'};\n } else if (typeof ngDevMode === 'undefined' || ngDevMode) {\n throw getMatTooltipInvalidPositionError(position);\n }\n\n const {x, y} = this._invertPosition(overlayPosition!.overlayX, overlayPosition!.overlayY);\n\n return {\n main: overlayPosition!,\n fallback: {overlayX: x, overlayY: y},\n };\n }\n\n /** Updates the tooltip message and repositions the overlay according to the new message length */\n private _updateTooltipMessage() {\n // Must wait for the message to be painted to the tooltip so that the overlay can properly\n // calculate the correct positioning based on the size of the text.\n if (this._tooltipInstance) {\n this._tooltipInstance.message = this.message;\n this._tooltipInstance._markForCheck();\n\n afterNextRender(\n () => {\n if (this._tooltipInstance) {\n this._overlayRef!.updatePosition();\n }\n },\n {\n injector: this._injector,\n },\n );\n }\n }\n\n /** Updates the tooltip class */\n private _setTooltipClass(\n tooltipClass: string | string[] | Set<string> | {[key: string]: unknown},\n ) {\n if (this._tooltipInstance) {\n this._tooltipInstance.tooltipClass =\n tooltipClass instanceof Set ? Array.from(tooltipClass) : tooltipClass;\n this._tooltipInstance._markForCheck();\n }\n }\n\n /** Inverts an overlay position. */\n private _invertPosition(x: HorizontalConnectionPos, y: VerticalConnectionPos) {\n if (this.position === 'above' || this.position === 'below') {\n if (y === 'top') {\n y = 'bottom';\n } else if (y === 'bottom') {\n y = 'top';\n }\n } else {\n if (x === 'end') {\n x = 'start';\n } else if (x === 'start') {\n x = 'end';\n }\n }\n\n return {x, y};\n }\n\n /** Updates the class on the overlay panel based on the current position of the tooltip. */\n private _updateCurrentPositionClass(connectionPair: ConnectionPositionPair): void {\n const {overlayY, originX, originY} = connectionPair;\n let newPosition: TooltipPosition;\n\n // If the overlay is in the middle along the Y axis,\n // it means that it's either before or after.\n if (overlayY === 'center') {\n // Note that since this information is used for styling, we want to\n // resolve `start` and `end` to their real values, otherwise consumers\n // would have to remember to do it themselves on each consumption.\n if (this._dir && this._dir.value === 'rtl') {\n newPosition = originX === 'end' ? 'left' : 'right';\n } else {\n newPosition = originX === 'start' ? 'left' : 'right';\n }\n } else {\n newPosition = overlayY === 'bottom' && originY === 'top' ? 'above' : 'below';\n }\n\n if (newPosition !== this._currentPosition) {\n const overlayRef = this._overlayRef;\n\n if (overlayRef) {\n const classPrefix = `${this._cssClassPrefix}-${PANEL_CLASS}-`;\n overlayRef.removePanelClass(classPrefix + this._currentPosition);\n overlayRef.addPanelClass(classPrefix + newPosition);\n }\n\n this._currentPosition = newPosition;\n }\n }\n\n /** Binds the pointer events to the tooltip trigger. */\n private _setupPointerEnterEventsIfNeeded() {\n // Optimization: Defer hooking up events if there's no message or the tooltip is disabled.\n if (this._disabled || !this.message || !this._viewInitialized || this._eventCleanups.length) {\n return;\n }\n\n // The mouse events shouldn't be bound on mobile devices, because they can prevent the\n // first tap from firing its click event or can cause the tooltip to open for clicks.\n if (!this._isTouchPlatform()) {\n this._addListener('mouseenter', (event: MouseEvent) => {\n this._setupPointerExitEventsIfNeeded();\n let point = undefined;\n if (event.x !== undefined && event.y !== undefined) {\n point = event;\n }\n this.show(undefined, point);\n });\n } else if (this.touchGestures !== 'off') {\n this._disableNativeGesturesIfNecessary();\n this._addListener('touchstart', (event: TouchEvent) => {\n const touch = event.targetTouches?.[0];\n const origin = touch ? {x: touch.clientX, y: touch.clientY} : undefined;\n // Note that it's important that we don't `preventDefault` here,\n // because it can prevent click events from firing on the element.\n this._setupPointerExitEventsIfNeeded();\n if (this._touchstartTimeout) {\n clearTimeout(this._touchstartTimeout);\n }\n\n const DEFAULT_LONGPRESS_DELAY = 500;\n this._touchstartTimeout = setTimeout(() => {\n this._touchstartTimeout = null;\n this.show(undefined, origin);\n }, this._defaultOptions?.touchLongPressShowDelay ?? DEFAULT_LONGPRESS_DELAY);\n });\n }\n }\n\n private _setupPointerExitEventsIfNeeded() {\n if (this._pointerExitEventsInitialized) {\n return;\n }\n this._pointerExitEventsInitialized = true;\n\n if (!this._isTouchPlatform()) {\n this._addListener('mouseleave', (event: MouseEvent) => {\n const newTarget = event.relatedTarget as Node | null;\n if (!newTarget || !this._overlayRef?.overlayElement.contains(newTarget)) {\n this.hide();\n }\n });\n\n this._addListener('wheel', (event: WheelEvent) => {\n if (this._isTooltipVisible()) {\n const elementUnderPointer = this._document.elementFromPoint(event.clientX, event.clientY);\n const element = this._elementRef.nativeElement;\n\n // On non-touch devices we depend on the `mouseleave` event to close the tooltip, but it\n // won't fire if the user scrolls away using the wheel without moving their cursor. We\n // work around it by finding the element under the user's cursor and closing the tooltip\n // if it's not the trigger.\n if (elementUnderPointer !== element && !element.contains(elementUnderPointer)) {\n this.hide();\n }\n }\n });\n } else if (this.touchGestures !== 'off') {\n this._disableNativeGesturesIfNecessary();\n const touchendListener = () => {\n if (this._touchstartTimeout) {\n clearTimeout(this._touchstartTimeout);\n }\n this.hide(this._defaultOptions?.touchendHideDelay);\n };\n\n this._addListener('touchend', touchendListener);\n this._addListener('touchcancel', touchendListener);\n }\n }\n\n private _addListener<T extends Event>(name: string, listener: (event: T) => void) {\n this._eventCleanups.push(\n this._renderer.listen(this._elementRef.nativeElement, name, listener, passiveListenerOptions),\n );\n }\n\n private _isTouchPlatform(): boolean {\n if (this._platform.IOS || this._platform.ANDROID) {\n // If we detected iOS or Android, it's definitely supported.\n return true;\n } else if (!this._platform.isBrowser) {\n // If it's not a browser, it's definitely not supported.\n return false;\n }\n\n return (\n !!this._defaultOptions?.detectHoverCapability &&\n this._mediaMatcher.matchMedia('(any-hover: none)').matches\n );\n }\n\n /** Disables the native browser gestures, based on how the tooltip has been configured. */\n private _disableNativeGesturesIfNecessary() {\n const gestures = this.touchGestures;\n\n if (gestures !== 'off') {\n const element = this._elementRef.nativeElement;\n const style = element.style;\n\n // If gestures are set to `auto`, we don't disable text selection on inputs and\n // textareas, because it prevents the user from typing into them on iOS Safari.\n if (gestures === 'on' || (element.nodeName !== 'INPUT' && element.nodeName !== 'TEXTAREA')) {\n style.userSelect =\n style.msUserSelect =\n style.webkitUserSelect =\n style.MozUserSelect =\n 'none';\n }\n\n // If we have `auto` gestures and the element uses native HTML dragging,\n // we don't set `-webkit-user-drag` because it prevents the native behavior.\n if (gestures === 'on' || !element.draggable) {\n style.webkitUserDrag = 'none';\n }\n\n style.touchAction = 'none';\n style.webkitTapHighlightColor = 'transparent';\n }\n }\n\n /** Updates the tooltip's ARIA description based on it current state. */\n private _syncAriaDescription(oldMessage: string): void {\n if (this._ariaDescriptionPending) {\n return;\n }\n\n this._ariaDescriptionPending = true;\n this._ariaDescriber.removeDescription(this._elementRef.nativeElement, oldMessage, 'tooltip');\n\n // The `AriaDescriber` has some functionality that avoids adding a description if it's the\n // same as the `aria-label` of an element, however we can't know whether the tooltip trigger\n // has a data-bound `aria-label` or when it'll be set for the first time. We can avoid the\n // issue by deferring the description by a tick so Angular has time to set the `aria-label`.\n if (!this._isDestroyed) {\n afterNextRender(\n {\n write: () => {\n this._ariaDescriptionPending = false;\n\n if (this.message && !this.disabled) {\n this._ariaDescriber.describe(this._elementRef.nativeElement, this.message, 'tooltip');\n }\n },\n },\n {injector: this._injector},\n );\n }\n }\n\n /** Determines which events should be routed to the tooltip overlay. */\n private _overlayEventPredicate = (event: Event) => {\n if (event.type === 'keydown') {\n return (\n this._isTooltipVisible() &&\n (event as KeyboardEvent).keyCode === ESCAPE &&\n !hasModifierKey(event as KeyboardEvent)\n );\n }\n return true;\n };\n}\n\n/**\n * Internal component that wraps the tooltip's content.\n * @docs-private\n */\n@Component({\n selector: 'mat-tooltip-component',\n templateUrl: 'tooltip.html',\n styleUrl: 'tooltip.css',\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n '(mouseleave)': '_handleMouseLeave($event)',\n 'aria-hidden': 'true',\n },\n})\nexport class TooltipComponent implements OnDestroy {\n private _changeDetectorRef = inject(ChangeDetectorRef);\n protected _elementRef = inject<ElementRef<HTMLElement>>(ElementRef);\n\n /* Whether the tooltip text overflows to multiple lines */\n _isMultiline = false;\n\n /** Message to display in the tooltip */\n message!: string;\n\n /** Classes to be added to the tooltip. */\n tooltipClass!: string | string[] | {[key: string]: unknown};\n\n /** The timeout ID of any current timer set to show the tooltip */\n private _showTimeoutId: ReturnType<typeof setTimeout> | undefined;\n\n /** The timeout ID of any current timer set to hide the tooltip */\n private _hideTimeoutId: ReturnType<typeof setTimeout> | undefined;\n\n /** Element that caused the tooltip to open. */\n _triggerElement!: HTMLElement;\n\n /** Amount of milliseconds to delay the closing sequence. */\n _mouseLeaveHideDelay!: number;\n\n /** Whether animations are currently disabled. */\n private _animationsDisabled = _animationsDisabled();\n\n /** Reference to the internal tooltip element. */\n @ViewChild('tooltip', {\n // Use a static query here since we interact directly with\n // the DOM which can happen before `ngAfterViewInit`.\n static: true,\n })\n _tooltip!: ElementRef<HTMLElement>;\n\n /** Whether interactions on the page should close the tooltip */\n private _closeOnInteraction = false;\n\n /** Whether the tooltip is currently visible. */\n private _isVisible = false;\n\n /** Subject for notifying that the tooltip has been hidden from the view */\n private readonly _onHide: Subject<void> = new Subject();\n\n /** Name of the show animation and the class that toggles it. */\n private readonly _showAnimation = 'mat-mdc-tooltip-show';\n\n /** Name of the hide animation and the class that toggles it. */\n private readonly _hideAnimation = 'mat-mdc-tooltip-hide';\n\n constructor(...args: unknown[]);\n\n constructor() {}\n\n /**\n * Shows the tooltip with an animation originating from the provided origin\n * @param delay Amount of milliseconds to the delay showing the tooltip.\n */\n show(delay: number): void {\n // Cancel the delayed hide if it is scheduled\n if (this._hideTimeoutId != null) {\n clearTimeout(this._hideTimeoutId);\n }\n\n this._showTimeoutId = setTimeout(() => {\n this._toggleVisibility(true);\n this._showTimeoutId = undefined;\n }, delay);\n }\n\n /**\n * Begins the animation to hide the tooltip after the provided delay in ms.\n * @param delay Amount of milliseconds to delay showing the tooltip.\n */\n hide(delay: number): void {\n // Cancel the delayed show if it is scheduled\n if (this._showTimeoutId != null) {\n clearTimeout(this._showTimeoutId);\n }\n\n this._hideTimeoutId = setTimeout(() => {\n this._toggleVisibility(false);\n this._hideTimeoutId = undefined;\n }, delay);\n }\n\n /** Returns an observable that notifies when the tooltip has been hidden from view. */\n afterHidden(): Observable<void> {\n return this._onHide;\n }\n\n /** Whether the tooltip is being displayed. */\n isVisible(): boolean {\n return this._isVisible;\n }\n\n ngOnDestroy() {\n this._cancelPendingAnimations();\n this._onHide.complete();\n this._triggerElement = null!;\n }\n\n /**\n * Interactions on the HTML body should close the tooltip immediately as defined in the\n * material design spec.\n * https://material.io/design/components/tooltips.html#behavior\n */\n _handleBodyInteraction(): void {\n if (this._closeOnInteraction) {\n this.hide(0);\n }\n }\n\n /**\n * Marks that the tooltip needs to be checked in the next change detection run.\n * Mainly used for rendering the initial text before positioning a tooltip, which\n * can be problematic in components with OnPush change detection.\n */\n _markForCheck(): void {\n this._changeDetectorRef.markForCheck();\n }\n\n _handleMouseLeave({relatedTarget}: MouseEvent) {\n if (!relatedTarget || !this._triggerElement.contains(relatedTarget as Node)) {\n if (this.isVisible()) {\n this.hide(this._mouseLeaveHideDelay);\n } else {\n this._finalizeAnimation(false);\n }\n }\n }\n\n /**\n * Callback for when the timeout in this.show() gets completed.\n * This method is only needed by the mdc-tooltip, and so it is only implemented\n * in the mdc-tooltip, not here.\n */\n protected _onShow(): void {\n this._isMultiline = this._isTooltipMultiline();\n this._markForCheck();\n }\n\n /** Whether the tooltip text has overflown to the next line */\n private _isTooltipMultiline() {\n const rect = this._elementRef.nativeElement.getBoundingClientRect();\n return rect.height > MIN_HEIGHT && rect.width >= MAX_WIDTH;\n }\n\n /** Event listener dispatched when an animation on the tooltip finishes. */\n _handleAnimationEnd({animationName}: AnimationEvent) {\n if (animationName === this._showAnimation || animationName === this._hideAnimation) {\n this._finalizeAnimation(animationName === this._showAnimation);\n }\n }\n\n /** Cancels any pending animation sequences. */\n _cancelPendingAnimations() {\n if (this._showTimeoutId != null) {\n clearTimeout(this._showTimeoutId);\n }\n\n if (this._hideTimeoutId != null) {\n clearTimeout(this._hideTimeoutId);\n }\n\n this._showTimeoutId = this._hideTimeoutId = undefined;\n }\n\n /** Handles the cleanup after an animation has finished. */\n private _finalizeAnimation(toVisible: boolean) {\n if (toVisible) {\n this._closeOnInteraction = true;\n } else if (!this.isVisible()) {\n this._onHide.next();\n }\n }\n\n /** Toggles the visibility of the tooltip element. */\n private _toggleVisibility(isVisible: boolean) {\n // We set the classes directly here ourselves so that toggling the tooltip state\n // isn't bound by change detection. This allows us to hide it even if the\n // view ref has been detached from the CD tree.\n const tooltip = this._tooltip.nativeElement;\n const showClass = this._showAnimation;\n const hideClass = this._hideAnimation;\n tooltip.classList.remove(isVisible ? hideClass : showClass);\n tooltip.classList.add(isVisible ? showClass : hideClass);\n if (this._isVisible !== isVisible) {\n this._isVisible = isVisible;\n this._changeDetectorRef.markForCheck();\n }\n\n // It's common for internal apps to disable animations using `* { animation: none !important }`\n // which can break the opening sequence. Try to detect such cases and work around them.\n if (isVisible && !this._animationsDisabled && typeof getComputedStyle === 'function') {\n const styles = getComputedStyle(tooltip);\n\n // Use `getPropertyValue` to avoid issues with property renaming.\n if (\n styles.getPropertyValue('animation-duration') === '0s' ||\n styles.getPropertyValue('animation-name') === 'none'\n ) {\n this._animationsDisabled = true;\n }\n }\n\n if (isVisible) {\n this._onShow();\n }\n\n if (this._animationsDisabled) {\n tooltip.classList.add('_mat-animation-noopable');\n this._finalizeAnimation(isVisible);\n }\n }\n}\n","<div\n #tooltip\n class=\"mdc-tooltip mat-mdc-tooltip\"\n [class]=\"tooltipClass\"\n (animationend)=\"_handleAnimationEnd($event)\"\n [class.mdc-tooltip--multiline]=\"_isMultiline\">\n <div class=\"mat-mdc-tooltip-surface mdc-tooltip__surface\">{{message}}</div>\n</div>\n"],"names":["SCROLL_THROTTLE_MS","getMatTooltipInvalidPositionError","position","Error","MAT_TOOLTIP_SCROLL_STRATEGY","InjectionToken","providedIn","factory","injector","inject","Injector","createRepositionScrollStrategy","scrollThrottle","MAT_TOOLTIP_DEFAULT_OPTIONS","showDelay","hideDelay","touchendHideDelay","TOOLTIP_PANEL_CLASS","PANEL_CLASS","passiveListenerOptions","passive","MIN_VIEWPORT_TOOLTIP_THRESHOLD","UNBOUNDED_ANCHOR_GAP","MIN_HEIGHT","MAX_WIDTH","MatTooltip","_elementRef","ElementRef","_ngZone","NgZone","_platform","Platform","_ariaDescriber","AriaDescriber","_focusMonitor","FocusMonitor","_dir","Directionality","_injector","_viewContainerRef","ViewContainerRef","_mediaMatcher","MediaMatcher","_document","DOCUMENT","_renderer","Renderer2","_animationsDisabled","_defaultOptions","optional","_overlayRef","_tooltipInstance","_overlayPanelClass","_portal","_position","_positionAtOrigin","_disabled","_tooltipClass","_viewInitialized","_pointerExitEventsInitialized","_tooltipComponent","TooltipComponent","_viewportMargin","_currentPosition","_cssClassPrefix","_ariaDescriptionPending","_dirSubscribed","value","_updatePosition","show","updatePosition","positionAtOrigin","coerceBooleanProperty","_detach","disabled","isDisabled","hide","_setupPointerEnterEventsIfNeeded","_syncAriaDescription","message","_showDelay","coerceNumberProperty","_hideDelay","_mouseLeaveHideDelay","touchGestures","_message","oldMessage","String","trim","_isTooltipVisible","_updateTooltipMessage","tooltipClass","_setTooltipClass","_eventCleanups","_touchstartTimeout","_destroyed","Subject","_isDestroyed","constructor","defaultOptions","ngAfterViewInit","monitor","pipe","takeUntil","subscribe","origin","run","ngOnDestroy","nativeElement","clearTimeout","dispose","forEach","cleanup","length","next","complete","removeDescription","stopMonitoring","delay","_cancelPendingAnimations","overlayRef","_createOverlay","ComponentPortal","instance","attach","_triggerElement","afterHidden","isVisible","toggle","undefined","existingStrategy","getConfig","positionStrategy","_origin","scrollableAncestors","get","ScrollDispatcher","getAncestorScrollContainers","panelClass","strategy","createFlexibleConnectedPositionStrategy","withTransformOriginOn","withFlexibleDimensions","withViewportMargin","withScrollableContainers","withPopoverLocation","positionChanges","change","_updateCurrentPositionClass","connectionPair","scrollableViewProperties","isOverlayClipped","createOverlayRef","direction","scrollStrategy","disableAnimations","eventPredicate","_overlayEventPredicate","detachments","outsidePointerEvents","_handleBodyInteraction","keydownEvents","event","preventDefault","stopPropagation","disableTooltipInteractivity","addPanelClass","hasAttached","detach","_getOrigin","overlay","_getOverlayPosition","withPositions","_addOffset","main","fallback","offset","isLtr","originY","offsetY","originX","offsetX","originPosition","ngDevMode","x","y","_invertPosition","overlayPosition","overlayX","overlayY","_markForCheck","afterNextRender","Set","Array","from","newPosition","classPrefix","removePanelClass","_isTouchPlatform","_addListener","_setupPointerExitEventsIfNeeded","point","_disableNativeGesturesIfNecessary","touch","targetTouches","clientX","clientY","DEFAULT_LONGPRESS_DELAY","setTimeout","touchLongPressShowDelay","newTarget","relatedTarget","overlayElement","contains","elementUnderPointer","elementFromPoint","element","touchendListener","name","listener","push","listen","IOS","ANDROID","isBrowser","detectHoverCapability","matchMedia","matches","gestures","style","nodeName","userSelect","msUserSelect","webkitUserSelect","MozUserSelect","draggable","webkitUserDrag","touchAction","webkitTapHighlightColor","write","describe","type","keyCode","ESCAPE","hasModifierKey","deps","target","i0","ɵɵFactoryTarget","Directive","isStandalone","selector","inputs","host","properties","classAttribute","exportAs","ngImport","decorators","args","Input","_changeDetectorRef","ChangeDetectorRef","_isMultiline","_showTimeoutId","_hideTimeoutId","_tooltip","_closeOnInteraction","_isVisible","_onHide","_showAnimation","_hideAnimation","_toggleVisibility","markForCheck","_handleMouseLeave","_finalizeAnimation","_onShow","_isTooltipMultiline","rect","getBoundingClientRect","height","width","_handleAnimationEnd","animationName","toVisible","tooltip","showClass","hideClass","classList","remove","add","getComputedStyle","styles","getPropertyValue","Component","ɵcmp","ɵɵngDeclareComponent","minVersion","version","changeDetection","ChangeDetectionStrategy","OnPush","encapsulation","ViewEncapsulation","None","template","ViewChild","static"],"mappings":";;;;;;;;;;;;;;AAgFO,MAAMA,kBAAkB,GAAG;AAM5B,SAAUC,iCAAiCA,CAACC,QAAgB,EAAA;AAChE,EAAA,OAAOC,KAAK,CAAC,CAAqBD,kBAAAA,EAAAA,QAAQ,eAAe,CAAC;AAC5D;MAGaE,2BAA2B,GAAG,IAAIC,cAAc,CAC3D,6BAA6B,EAC7B;AACEC,EAAAA,UAAU,EAAE,MAAM;EAClBC,OAAO,EAAEA,MAAK;AACZ,IAAA,MAAMC,QAAQ,GAAGC,MAAM,CAACC,QAAQ,CAAC;AACjC,IAAA,OAAO,MAAMC,8BAA8B,CAACH,QAAQ,EAAE;AAACI,MAAAA,cAAc,EAAEZ;AAAkB,KAAC,CAAC;AAC7F;AACD,CAAA;MAIUa,2BAA2B,GAAG,IAAIR,cAAc,CAC3D,6BAA6B,EAC7B;AACEC,EAAAA,UAAU,EAAE,MAAM;EAClBC,OAAO,EAAEA,OAAO;AACdO,IAAAA,SAAS,EAAE,CAAC;AACZC,IAAAA,SAAS,EAAE,CAAC;AACZC,IAAAA,iBAAiB,EAAE;GACpB;AACF,CAAA;AAoDI,MAAMC,mBAAmB,GAAG;AAEnC,MAAMC,WAAW,GAAG,eAAe;AAGnC,MAAMC,sBAAsB,GAAG;AAACC,EAAAA,OAAO,EAAE;CAAK;AAI9C,MAAMC,8BAA8B,GAAG,CAAC;AACxC,MAAMC,oBAAoB,GAAG,CAAC;AAC9B,MAAMC,UAAU,GAAG,EAAE;AACrB,MAAMC,SAAS,GAAG,GAAG;MAgBRC,UAAU,CAAA;AACbC,EAAAA,WAAW,GAAGjB,MAAM,CAA0BkB,UAAU,CAAC;AACzDC,EAAAA,OAAO,GAAGnB,MAAM,CAACoB,MAAM,CAAC;AACxBC,EAAAA,SAAS,GAAGrB,MAAM,CAACsB,QAAQ,CAAC;AAC5BC,EAAAA,cAAc,GAAGvB,MAAM,CAACwB,aAAa,CAAC;AACtCC,EAAAA,aAAa,GAAGzB,MAAM,CAAC0B,YAAY,CAAC;AAClCC,EAAAA,IAAI,GAAG3B,MAAM,CAAC4B,cAAc,CAAC;AAC/BC,EAAAA,SAAS,GAAG7B,MAAM,CAACC,QAAQ,CAAC;AAC5B6B,EAAAA,iBAAiB,GAAG9B,MAAM,CAAC+B,gBAAgB,CAAC;AAC5CC,EAAAA,aAAa,GAAGhC,MAAM,CAACiC,YAAY,CAAC;AACpCC,EAAAA,SAAS,GAAGlC,MAAM,CAACmC,QAAQ,CAAC;AAC5BC,EAAAA,SAAS,GAAGpC,MAAM,CAACqC,SAAS,CAAC;EAC7BC,mBAAmB,GAAGA,mBAAmB,EAAE;AAC3CC,EAAAA,eAAe,GAAGvC,MAAM,CAA2BI,2BAA2B,EAAE;AACtFoC,IAAAA,QAAQ,EAAE;AACX,GAAA,CAAC;AAEFC,EAAAA,WAAW,GAAsB,IAAI;AACrCC,EAAAA,gBAAgB,GAA4B,IAAI;EAChDC,kBAAkB;EAEVC,OAAO;AACPC,EAAAA,SAAS,GAAoB,OAAO;AACpCC,EAAAA,iBAAiB,GAAY,KAAK;AAClCC,EAAAA,SAAS,GAAY,KAAK;EAC1BC,aAAa;AACbC,EAAAA,gBAAgB,GAAG,KAAK;AACxBC,EAAAA,6BAA6B,GAAG,KAAK;AAC5BC,EAAAA,iBAAiB,GAAGC,gBAAgB;AAC7CC,EAAAA,eAAe,GAAG,CAAC;EACnBC,gBAAgB;AACPC,EAAAA,eAAe,GAAW,SAAS;AAC5CC,EAAAA,uBAAuB,GAAG,KAAK;AAC/BC,EAAAA,cAAc,GAAG,KAAK;EAG9B,IACIhE,QAAQA,GAAA;IACV,OAAO,IAAI,CAACoD,SAAS;AACvB;EAEA,IAAIpD,QAAQA,CAACiE,KAAsB,EAAA;AACjC,IAAA,IAAIA,KAAK,KAAK,IAAI,CAACb,SAAS,EAAE;MAC5B,IAAI,CAACA,SAAS,GAAGa,KAAK;MAEtB,IAAI,IAAI,CAACjB,WAAW,EAAE;AACpB,QAAA,IAAI,CAACkB,eAAe,CAAC,IAAI,CAAClB,WAAW,CAAC;AACtC,QAAA,IAAI,CAACC,gBAAgB,EAAEkB,IAAI,CAAC,CAAC,CAAC;AAC9B,QAAA,IAAI,CAACnB,WAAW,CAACoB,cAAc,EAAE;AACnC;AACF;AACF;EAMA,IACIC,gBAAgBA,GAAA;IAClB,OAAO,IAAI,CAAChB,iBAAiB;AAC/B;EAEA,IAAIgB,gBAAgBA,CAACJ,KAAmB,EAAA;AACtC,IAAA,IAAI,CAACZ,iBAAiB,GAAGiB,qBAAqB,CAACL,KAAK,CAAC;IACrD,IAAI,CAACM,OAAO,EAAE;IACd,IAAI,CAACvB,WAAW,GAAG,IAAI;AACzB;EAGA,IACIwB,QAAQA,GAAA;IACV,OAAO,IAAI,CAAClB,SAAS;AACvB;EAEA,IAAIkB,QAAQA,CAACP,KAAmB,EAAA;AAC9B,IAAA,MAAMQ,UAAU,GAAGH,qBAAqB,CAACL,KAAK,CAAC;AAE/C,IAAA,IAAI,IAAI,CAACX,SAAS,KAAKmB,UAAU,EAAE;MACjC,IAAI,CAACnB,SAAS,GAAGmB,UAAU;AAG3B,MAAA,IAAIA,UAAU,EAAE;AACd,QAAA,IAAI,CAACC,IAAI,CAAC,CAAC,CAAC;AACd,OAAA,MAAO;QACL,IAAI,CAACC,gCAAgC,EAAE;AACzC;AAEA,MAAA,IAAI,CAACC,oBAAoB,CAAC,IAAI,CAACC,OAAO,CAAC;AACzC;AACF;EAGA,IACIjE,SAASA,GAAA;IACX,OAAO,IAAI,CAACkE,UAAU;AACxB;EAEA,IAAIlE,SAASA,CAACqD,KAAkB,EAAA;AAC9B,IAAA,IAAI,CAACa,UAAU,GAAGC,oBAAoB,CAACd,KAAK,CAAC;AAC/C;EAEQa,UAAU;EAGlB,IACIjE,SAASA,GAAA;IACX,OAAO,IAAI,CAACmE,UAAU;AACxB;EAEA,IAAInE,SAASA,CAACoD,KAAkB,EAAA;AAC9B,IAAA,IAAI,CAACe,UAAU,GAAGD,oBAAoB,CAACd,KAAK,CAAC;IAE7C,IAAI,IAAI,CAAChB,gBAAgB,EAAE;AACzB,MAAA,IAAI,CAACA,gBAAgB,CAACgC,oBAAoB,GAAG,IAAI,CAACD,UAAU;AAC9D;AACF;EAEQA,UAAU;AAgBgBE,EAAAA,aAAa,GAAyB,MAAM;EAG9E,IACIL,OAAOA,GAAA;IACT,OAAO,IAAI,CAACM,QAAQ;AACtB;EAEA,IAAIN,OAAOA,CAACZ,KAAyC,EAAA;AACnD,IAAA,MAAMmB,UAAU,GAAG,IAAI,CAACD,QAAQ;AAKhC,IAAA,IAAI,CAACA,QAAQ,GAAGlB,KAAK,IAAI,IAAI,GAAGoB,MAAM,CAACpB,KAAK,CAAC,CAACqB,IAAI,EAAE,GAAG,EAAE;IAEzD,IAAI,CAAC,IAAI,CAACH,QAAQ,IAAI,IAAI,CAACI,iBAAiB,EAAE,EAAE;AAC9C,MAAA,IAAI,CAACb,IAAI,CAAC,CAAC,CAAC;AACd,KAAA,MAAO;MACL,IAAI,CAACC,gCAAgC,EAAE;MACvC,IAAI,CAACa,qBAAqB,EAAE;AAC9B;AAEA,IAAA,IAAI,CAACZ,oBAAoB,CAACQ,UAAU,CAAC;AACvC;AAEQD,EAAAA,QAAQ,GAAG,EAAE;EAGrB,IACIM,YAAYA,GAAA;IACd,OAAO,IAAI,CAAClC,aAAa;AAC3B;EAEA,IAAIkC,YAAYA,CAACxB,KAAiE,EAAA;IAChF,IAAI,CAACV,aAAa,GAAGU,KAAK;IAC1B,IAAI,IAAI,CAAChB,gBAAgB,EAAE;AACzB,MAAA,IAAI,CAACyC,gBAAgB,CAAC,IAAI,CAACnC,aAAa,CAAC;AAC3C;AACF;AAGiBoC,EAAAA,cAAc,GAAmB,EAAE;AAG5CC,EAAAA,kBAAkB,GAAyC,IAAI;AAGtDC,EAAAA,UAAU,GAAG,IAAIC,OAAO,EAAQ;AAGzCC,EAAAA,YAAY,GAAG,KAAK;AAI5BC,EAAAA,WAAAA,GAAA;AACE,IAAA,MAAMC,cAAc,GAAG,IAAI,CAACnD,eAAe;AAE3C,IAAA,IAAImD,cAAc,EAAE;AAClB,MAAA,IAAI,CAACnB,UAAU,GAAGmB,cAAc,CAACrF,SAAS;AAC1C,MAAA,IAAI,CAACoE,UAAU,GAAGiB,cAAc,CAACpF,SAAS;MAE1C,IAAIoF,cAAc,CAACjG,QAAQ,EAAE;AAC3B,QAAA,IAAI,CAACA,QAAQ,GAAGiG,cAAc,CAACjG,QAAQ;AACzC;MAEA,IAAIiG,cAAc,CAAC5B,gBAAgB,EAAE;AACnC,QAAA,IAAI,CAACA,gBAAgB,GAAG4B,cAAc,CAAC5B,gBAAgB;AACzD;MAEA,IAAI4B,cAAc,CAACf,aAAa,EAAE;AAChC,QAAA,IAAI,CAACA,aAAa,GAAGe,cAAc,CAACf,aAAa;AACnD;MAEA,IAAIe,cAAc,CAACR,YAAY,EAAE;AAC/B,QAAA,IAAI,CAACA,YAAY,GAAGQ,cAAc,CAACR,YAAY;AACjD;AACF;IAEA,IAAI,CAAC7B,eAAe,GAAGzC,8BAA8B;AACvD;AAEA+E,EAAAA,eAAeA,GAAA;IAEb,IAAI,CAAC1C,gBAAgB,GAAG,IAAI;IAC5B,IAAI,CAACmB,gCAAgC,EAAE;IAEvC,IAAI,CAAC3C,aAAa,CACfmE,OAAO,CAAC,IAAI,CAAC3E,WAAW,CAAA,CACxB4E,IAAI,CAACC,SAAS,CAAC,IAAI,CAACR,UAAU,CAAC,CAAA,CAC/BS,SAAS,CAACC,MAAM,IAAG;MAElB,IAAI,CAACA,MAAM,EAAE;AACX,QAAA,IAAI,CAAC7E,OAAO,CAAC8E,GAAG,CAAC,MAAM,IAAI,CAAC9B,IAAI,CAAC,CAAC,CAAC,CAAC;AACtC,OAAA,MAAO,IAAI6B,MAAM,KAAK,UAAU,EAAE;QAChC,IAAI,CAAC7E,OAAO,CAAC8E,GAAG,CAAC,MAAM,IAAI,CAACrC,IAAI,EAAE,CAAC;AACrC;AACF,KAAC,CAAC;AACN;AAKAsC,EAAAA,WAAWA,GAAA;AACT,IAAA,MAAMC,aAAa,GAAG,IAAI,CAAClF,WAAW,CAACkF,aAAa;IAGpD,IAAI,IAAI,CAACd,kBAAkB,EAAE;AAC3Be,MAAAA,YAAY,CAAC,IAAI,CAACf,kBAAkB,CAAC;AACvC;IAEA,IAAI,IAAI,CAAC5C,WAAW,EAAE;AACpB,MAAA,IAAI,CAACA,WAAW,CAAC4D,OAAO,EAAE;MAC1B,IAAI,CAAC3D,gBAAgB,GAAG,IAAI;AAC9B;IAEA,IAAI,CAAC0C,cAAc,CAACkB,OAAO,CAACC,OAAO,IAAIA,OAAO,EAAE,CAAC;AACjD,IAAA,IAAI,CAACnB,cAAc,CAACoB,MAAM,GAAG,CAAC;AAC9B,IAAA,IAAI,CAAClB,UAAU,CAACmB,IAAI,EAAE;AACtB,IAAA,IAAI,CAACnB,UAAU,CAACoB,QAAQ,EAAE;IAC1B,IAAI,CAAClB,YAAY,GAAG,IAAI;AACxB,IAAA,IAAI,CAACjE,cAAc,CAACoF,iBAAiB,CAACR,aAAa,EAAE,IAAI,CAAC7B,OAAO,EAAE,SAAS,CAAC;AAC7E,IAAA,IAAI,CAAC7C,aAAa,CAACmF,cAAc,CAACT,aAAa,CAAC;AAClD;EAGAvC,IAAIA,CAACiD,KAAgB,GAAA,IAAI,CAACxG,SAAS,EAAE2F,MAA+B,EAAA;AAClE,IAAA,IAAI,IAAI,CAAC/B,QAAQ,IAAI,CAAC,IAAI,CAACK,OAAO,IAAI,IAAI,CAACU,iBAAiB,EAAE,EAAE;AAC9D,MAAA,IAAI,CAACtC,gBAAgB,EAAEoE,wBAAwB,EAAE;AACjD,MAAA;AACF;AAEA,IAAA,MAAMC,UAAU,GAAG,IAAI,CAACC,cAAc,CAAChB,MAAM,CAAC;IAC9C,IAAI,CAAChC,OAAO,EAAE;AACd,IAAA,IAAI,CAACpB,OAAO,GACV,IAAI,CAACA,OAAO,IAAI,IAAIqE,eAAe,CAAC,IAAI,CAAC9D,iBAAiB,EAAE,IAAI,CAACrB,iBAAiB,CAAC;AACrF,IAAA,MAAMoF,QAAQ,GAAI,IAAI,CAACxE,gBAAgB,GAAGqE,UAAU,CAACI,MAAM,CAAC,IAAI,CAACvE,OAAO,CAAC,CAACsE,QAAS;AACnFA,IAAAA,QAAQ,CAACE,eAAe,GAAG,IAAI,CAACnG,WAAW,CAACkF,aAAa;AACzDe,IAAAA,QAAQ,CAACxC,oBAAoB,GAAG,IAAI,CAACD,UAAU;IAC/CyC,QAAQ,CACLG,WAAW,EAAE,CACbxB,IAAI,CAACC,SAAS,CAAC,IAAI,CAACR,UAAU,CAAC,CAAA,CAC/BS,SAAS,CAAC,MAAM,IAAI,CAAC/B,OAAO,EAAE,CAAC;AAClC,IAAA,IAAI,CAACmB,gBAAgB,CAAC,IAAI,CAACnC,aAAa,CAAC;IACzC,IAAI,CAACiC,qBAAqB,EAAE;AAC5BiC,IAAAA,QAAQ,CAACtD,IAAI,CAACiD,KAAK,CAAC;AACtB;AAGA1C,EAAAA,IAAIA,CAAC0C,KAAA,GAAgB,IAAI,CAACvG,SAAS,EAAA;AACjC,IAAA,MAAM4G,QAAQ,GAAG,IAAI,CAACxE,gBAAgB;AAEtC,IAAA,IAAIwE,QAAQ,EAAE;AACZ,MAAA,IAAIA,QAAQ,CAACI,SAAS,EAAE,EAAE;AACxBJ,QAAAA,QAAQ,CAAC/C,IAAI,CAAC0C,KAAK,CAAC;AACtB,OAAA,MAAO;QACLK,QAAQ,CAACJ,wBAAwB,EAAE;QACnC,IAAI,CAAC9C,OAAO,EAAE;AAChB;AACF;AACF;EAGAuD,MAAMA,CAACvB,MAA+B,EAAA;AACpC,IAAA,IAAI,CAAChB,iBAAiB,EAAE,GAAG,IAAI,CAACb,IAAI,EAAE,GAAG,IAAI,CAACP,IAAI,CAAC4D,SAAS,EAAExB,MAAM,CAAC;AACvE;AAGAhB,EAAAA,iBAAiBA,GAAA;AACf,IAAA,OAAO,CAAC,CAAC,IAAI,CAACtC,gBAAgB,IAAI,IAAI,CAACA,gBAAgB,CAAC4E,SAAS,EAAE;AACrE;EAGQN,cAAcA,CAAChB,MAA+B,EAAA;IACpD,IAAI,IAAI,CAACvD,WAAW,EAAE;MACpB,MAAMgF,gBAAgB,GAAG,IAAI,CAAChF,WAAW,CAACiF,SAAS,EAAE,CAClDC,gBAAqD;AAExD,MAAA,IAAI,CAAC,CAAC,IAAI,CAAC7D,gBAAgB,IAAI,CAACkC,MAAM,KAAKyB,gBAAgB,CAACG,OAAO,YAAY1G,UAAU,EAAE;QACzF,OAAO,IAAI,CAACuB,WAAW;AACzB;MAEA,IAAI,CAACuB,OAAO,EAAE;AAChB;AAEA,IAAA,MAAM6D,mBAAmB,GAAG,IAAI,CAAChG,SAAS,CACvCiG,GAAG,CAACC,gBAAgB,CAAA,CACpBC,2BAA2B,CAAC,IAAI,CAAC/G,WAAW,CAAC;IAEhD,MAAMgH,UAAU,GAAG,CAAG,EAAA,IAAI,CAAC1E,eAAe,CAAA,CAAA,EAAI9C,WAAW,CAAE,CAAA;IAG3D,MAAMyH,QAAQ,GAAGC,uCAAuC,CACtD,IAAI,CAACtG,SAAS,EACd,IAAI,CAACiC,gBAAgB,GAAGkC,MAAM,IAAI,IAAI,CAAC/E,WAAW,GAAG,IAAI,CAACA,WAAW,CAAA,CAEpEmH,qBAAqB,CAAC,CAAA,CAAA,EAAI,IAAI,CAAC7E,eAAe,CAAU,QAAA,CAAA,CAAA,CACxD8E,sBAAsB,CAAC,KAAK,CAAA,CAC5BC,kBAAkB,CAAC,IAAI,CAACjF,eAAe,CAAA,CACvCkF,wBAAwB,CAACV,mBAAmB,CAAA,CAC5CW,mBAAmB,CAAC,QAAQ,CAAC;AAEhCN,IAAAA,QAAQ,CAACO,eAAe,CAAC5C,IAAI,CAACC,SAAS,CAAC,IAAI,CAACR,UAAU,CAAC,CAAC,CAACS,SAAS,CAAC2C,MAAM,IAAG;AAC3E,MAAA,IAAI,CAACC,2BAA2B,CAACD,MAAM,CAACE,cAAc,CAAC;MAEvD,IAAI,IAAI,CAAClG,gBAAgB,EAAE;AACzB,QAAA,IAAIgG,MAAM,CAACG,wBAAwB,CAACC,gBAAgB,IAAI,IAAI,CAACpG,gBAAgB,CAAC4E,SAAS,EAAE,EAAE;AAGzF,UAAA,IAAI,CAACnG,OAAO,CAAC8E,GAAG,CAAC,MAAM,IAAI,CAAC9B,IAAI,CAAC,CAAC,CAAC,CAAC;AACtC;AACF;AACF,KAAC,CAAC;IAEF,IAAI,CAAC1B,WAAW,GAAGsG,gBAAgB,CAAC,IAAI,CAAClH,SAAS,EAAE;MAClDmH,SAAS,EAAE,IAAI,CAACrH,IAAI;AACpBgG,MAAAA,gBAAgB,EAAEO,QAAQ;AAC1BD,MAAAA,UAAU,EAAE,IAAI,CAACtF,kBAAkB,GAAG,CAAC,GAAG,IAAI,CAACA,kBAAkB,EAAEsF,UAAU,CAAC,GAAGA,UAAU;MAC3FgB,cAAc,EAAE,IAAI,CAACpH,SAAS,CAACiG,GAAG,CAACnI,2BAA2B,CAAC,EAAE;MACjEuJ,iBAAiB,EAAE,IAAI,CAAC5G,mBAAmB;MAC3C6G,cAAc,EAAE,IAAI,CAACC;AACtB,KAAA,CAAC;AAEF,IAAA,IAAI,CAACzF,eAAe,CAAC,IAAI,CAAClB,WAAW,CAAC;IAEtC,IAAI,CAACA,WAAW,CACb4G,WAAW,EAAE,CACbxD,IAAI,CAACC,SAAS,CAAC,IAAI,CAACR,UAAU,CAAC,CAAA,CAC/BS,SAAS,CAAC,MAAM,IAAI,CAAC/B,OAAO,EAAE,CAAC;IAElC,IAAI,CAACvB,WAAW,CACb6G,oBAAoB,EAAE,CACtBzD,IAAI,CAACC,SAAS,CAAC,IAAI,CAACR,UAAU,CAAC,CAAA,CAC/BS,SAAS,CAAC,MAAM,IAAI,CAACrD,gBAAgB,EAAE6G,sBAAsB,EAAE,CAAC;IAEnE,IAAI,CAAC9G,WAAW,CACb+G,aAAa,EAAE,CACf3D,IAAI,CAACC,SAAS,CAAC,IAAI,CAACR,UAAU,CAAC,CAAA,CAC/BS,SAAS,CAAC0D,KAAK,IAAG;MAEjBA,KAAK,CAACC,cAAc,EAAE;MACtBD,KAAK,CAACE,eAAe,EAAE;AACvB,MAAA,IAAI,CAACxI,OAAO,CAAC8E,GAAG,CAAC,MAAM,IAAI,CAAC9B,IAAI,CAAC,CAAC,CAAC,CAAC;AACtC,KAAC,CAAC;AAEJ,IAAA,IAAI,IAAI,CAAC5B,eAAe,EAAEqH,2BAA2B,EAAE;MACrD,IAAI,CAACnH,WAAW,CAACoH,aAAa,CAAC,GAAG,IAAI,CAACtG,eAAe,CAAA,8BAAA,CAAgC,CAAC;AACzF;AAEA,IAAA,IAAI,CAAC,IAAI,CAACE,cAAc,EAAE;MACxB,IAAI,CAACA,cAAc,GAAG,IAAI;AAC1B,MAAA,IAAI,CAAC9B,IAAI,CAAC+G,MAAM,CAAC7C,IAAI,CAACC,SAAS,CAAC,IAAI,CAACR,UAAU,CAAC,CAAC,CAACS,SAAS,CAAC,MAAK;QAC/D,IAAI,IAAI,CAACtD,WAAW,EAAE;AACpB,UAAA,IAAI,CAACkB,eAAe,CAAC,IAAI,CAAClB,WAAW,CAAC;AACxC;AACF,OAAC,CAAC;AACJ;IAEA,OAAO,IAAI,CAACA,WAAW;AACzB;AAGQuB,EAAAA,OAAOA,GAAA;IACb,IAAI,IAAI,CAACvB,WAAW,IAAI,IAAI,CAACA,WAAW,CAACqH,WAAW,EAAE,EAAE;AACtD,MAAA,IAAI,CAACrH,WAAW,CAACsH,MAAM,EAAE;AAC3B;IAEA,IAAI,CAACrH,gBAAgB,GAAG,IAAI;AAC9B;EAGQiB,eAAeA,CAACoD,UAAsB,EAAA;IAC5C,MAAMtH,QAAQ,GAAGsH,UAAU,CAACW,SAAS,EAAE,CAACC,gBAAqD;AAC7F,IAAA,MAAM3B,MAAM,GAAG,IAAI,CAACgE,UAAU,EAAE;AAChC,IAAA,MAAMC,OAAO,GAAG,IAAI,CAACC,mBAAmB,EAAE;AAE1CzK,IAAAA,QAAQ,CAAC0K,aAAa,CAAC,CACrB,IAAI,CAACC,UAAU,CAAC;MAAC,GAAGpE,MAAM,CAACqE,IAAI;AAAE,MAAA,GAAGJ,OAAO,CAACI;KAAK,CAAC,EAClD,IAAI,CAACD,UAAU,CAAC;MAAC,GAAGpE,MAAM,CAACsE,QAAQ;AAAE,MAAA,GAAGL,OAAO,CAACK;KAAS,CAAC,CAC3D,CAAC;AACJ;EAGUF,UAAUA,CAAC3K,QAA2B,EAAA;IAC9C,MAAM8K,MAAM,GAAG1J,oBAAoB;AACnC,IAAA,MAAM2J,KAAK,GAAG,CAAC,IAAI,CAAC7I,IAAI,IAAI,IAAI,CAACA,IAAI,CAAC+B,KAAK,IAAI,KAAK;AAEpD,IAAA,IAAIjE,QAAQ,CAACgL,OAAO,KAAK,KAAK,EAAE;AAC9BhL,MAAAA,QAAQ,CAACiL,OAAO,GAAG,CAACH,MAAM;AAC5B,KAAA,MAAO,IAAI9K,QAAQ,CAACgL,OAAO,KAAK,QAAQ,EAAE;MACxChL,QAAQ,CAACiL,OAAO,GAAGH,MAAM;AAC3B,KAAA,MAAO,IAAI9K,QAAQ,CAACkL,OAAO,KAAK,OAAO,EAAE;MACvClL,QAAQ,CAACmL,OAAO,GAAGJ,KAAK,GAAG,CAACD,MAAM,GAAGA,MAAM;AAC7C,KAAA,MAAO,IAAI9K,QAAQ,CAACkL,OAAO,KAAK,KAAK,EAAE;MACrClL,QAAQ,CAACmL,OAAO,GAAGJ,KAAK,GAAGD,MAAM,GAAG,CAACA,MAAM;AAC7C;AAEA,IAAA,OAAO9K,QAAQ;AACjB;AAMAuK,EAAAA,UAAUA,GAAA;AACR,IAAA,MAAMQ,KAAK,GAAG,CAAC,IAAI,CAAC7I,IAAI,IAAI,IAAI,CAACA,IAAI,CAAC+B,KAAK,IAAI,KAAK;AACpD,IAAA,MAAMjE,QAAQ,GAAG,IAAI,CAACA,QAAQ;AAC9B,IAAA,IAAIoL,cAAwC;AAE5C,IAAA,IAAIpL,QAAQ,IAAI,OAAO,IAAIA,QAAQ,IAAI,OAAO,EAAE;AAC9CoL,MAAAA,cAAc,GAAG;AAACF,QAAAA,OAAO,EAAE,QAAQ;AAAEF,QAAAA,OAAO,EAAEhL,QAAQ,IAAI,OAAO,GAAG,KAAK,GAAG;OAAS;AACvF,KAAA,MAAO,IACLA,QAAQ,IAAI,QAAQ,IACnBA,QAAQ,IAAI,MAAM,IAAI+K,KAAM,IAC5B/K,QAAQ,IAAI,OAAO,IAAI,CAAC+K,KAAM,EAC/B;AACAK,MAAAA,cAAc,GAAG;AAACF,QAAAA,OAAO,EAAE,OAAO;AAAEF,QAAAA,OAAO,EAAE;OAAS;AACxD,KAAA,MAAO,IACLhL,QAAQ,IAAI,OAAO,IAClBA,QAAQ,IAAI,OAAO,IAAI+K,KAAM,IAC7B/K,QAAQ,IAAI,MAAM,IAAI,CAAC+K,KAAM,EAC9B;AACAK,MAAAA,cAAc,GAAG;AAACF,QAAAA,OAAO,EAAE,KAAK;AAAEF,QAAAA,OAAO,EAAE;OAAS;KACtD,MAAO,IAAI,OAAOK,SAAS,KAAK,WAAW,IAAIA,SAAS,EAAE;MACxD,MAAMtL,iCAAiC,CAACC,QAAQ,CAAC;AACnD;IAEA,MAAM;MAACsL,CAAC;AAAEC,MAAAA;AAAE,KAAA,GAAG,IAAI,CAACC,eAAe,CAACJ,cAAe,CAACF,OAAO,EAAEE,cAAe,CAACJ,OAAO,CAAC;IAErF,OAAO;AACLJ,MAAAA,IAAI,EAAEQ,cAAe;AACrBP,MAAAA,QAAQ,EAAE;AAACK,QAAAA,OAAO,EAAEI,CAAC;AAAEN,QAAAA,OAAO,EAAEO;AAAE;KACnC;AACH;AAGAd,EAAAA,mBAAmBA,GAAA;AACjB,IAAA,MAAMM,KAAK,GAAG,CAAC,IAAI,CAAC7I,IAAI,IAAI,IAAI,CAACA,IAAI,CAAC+B,KAAK,IAAI,KAAK;AACpD,IAAA,MAAMjE,QAAQ,GAAG,IAAI,CAACA,QAAQ;AAC9B,IAAA,IAAIyL,eAA0C;IAE9C,IAAIzL,QAAQ,IAAI,OAAO,EAAE;AACvByL,MAAAA,eAAe,GAAG;AAACC,QAAAA,QAAQ,EAAE,QAAQ;AAAEC,QAAAA,QAAQ,EAAE;OAAS;AAC5D,KAAA,MAAO,IAAI3L,QAAQ,IAAI,OAAO,EAAE;AAC9ByL,MAAAA,eAAe,GAAG;AAACC,QAAAA,QAAQ,EAAE,QAAQ;AAAEC,QAAAA,QAAQ,EAAE;OAAM;AACzD,KAAA,MAAO,IACL3L,QAAQ,IAAI,QAAQ,IACnBA,QAAQ,IAAI,MAAM,IAAI+K,KAAM,IAC5B/K,QAAQ,IAAI,OAAO,IAAI,CAAC+K,KAAM,EAC/B;AACAU,MAAAA,eAAe,GAAG;AAACC,QAAAA,QAAQ,EAAE,KAAK;AAAEC,QAAAA,QAAQ,EAAE;OAAS;AACzD,KAAA,MAAO,IACL3L,QAAQ,IAAI,OAAO,IAClBA,QAAQ,IAAI,OAAO,IAAI+K,KAAM,IAC7B/K,QAAQ,IAAI,MAAM,IAAI,CAAC+K,KAAM,EAC9B;AACAU,MAAAA,eAAe,GAAG;AAACC,QAAAA,QAAQ,EAAE,OAAO;AAAEC,QAAAA,QAAQ,EAAE;OAAS;KAC3D,MAAO,IAAI,OAAON,SAAS,KAAK,WAAW,IAAIA,SAAS,EAAE;MACxD,MAAMtL,iCAAiC,CAACC,QAAQ,CAAC;AACnD;IAEA,MAAM;MAACsL,CAAC;AAAEC,MAAAA;AAAE,KAAA,GAAG,IAAI,CAACC,eAAe,CAACC,eAAgB,CAACC,QAAQ,EAAED,eAAgB,CAACE,QAAQ,CAAC;IAEzF,OAAO;AACLf,MAAAA,IAAI,EAAEa,eAAgB;AACtBZ,MAAAA,QAAQ,EAAE;AAACa,QAAAA,QAAQ,EAAEJ,CAAC;AAAEK,QAAAA,QAAQ,EAAEJ;AAAE;KACrC;AACH;AAGQ/F,EAAAA,qBAAqBA,GAAA;IAG3B,IAAI,IAAI,CAACvC,gBAAgB,EAAE;AACzB,MAAA,IAAI,CAACA,gBAAgB,CAAC4B,OAAO,GAAG,IAAI,CAACA,OAAO;AAC5C,MAAA,IAAI,CAAC5B,gBAAgB,CAAC2I,aAAa,EAAE;AAErCC,MAAAA,eAAe,CACb,MAAK;QACH,IAAI,IAAI,CAAC5I,gBAAgB,EAAE;AACzB,UAAA,IAAI,CAACD,WAAY,CAACoB,cAAc,EAAE;AACpC;AACF,OAAC,EACD;QACE9D,QAAQ,EAAE,IAAI,CAAC8B;AAChB,OAAA,CACF;AACH;AACF;EAGQsD,gBAAgBA,CACtBD,YAAwE,EAAA;IAExE,IAAI,IAAI,CAACxC,gBAAgB,EAAE;AACzB,MAAA,IAAI,CAACA,gBAAgB,CAACwC,YAAY,GAChCA,YAAY,YAAYqG,GAAG,GAAGC,KAAK,CAACC,IAAI,CAACvG,YAAY,CAAC,GAAGA,YAAY;AACvE,MAAA,IAAI,CAACxC,gBAAgB,CAAC2I,aAAa,EAAE;AACvC;AACF;AAGQJ,EAAAA,eAAeA,CAACF,CAA0B,EAAEC,CAAwB,EAAA;IAC1E,IAAI,IAAI,CAACvL,QAAQ,KAAK,OAAO,IAAI,IAAI,CAACA,QAAQ,KAAK,OAAO,EAAE;MAC1D,IAAIuL,CAAC,KAAK,KAAK,EAAE;AACfA,QAAAA,CAAC,GAAG,QAAQ;AACd,OAAA,MAAO,IAAIA,CAAC,KAAK,QAAQ,EAAE;AACzBA,QAAAA,CAAC,GAAG,KAAK;AACX;AACF,KAAA,MAAO;MACL,IAAID,CAAC,KAAK,KAAK,EAAE;AACfA,QAAAA,CAAC,GAAG,OAAO;AACb,OAAA,MAAO,IAAIA,CAAC,KAAK,OAAO,EAAE;AACxBA,QAAAA,CAAC,GAAG,KAAK;AACX;AACF;IAEA,OAAO;MAACA,CAAC;AAAEC,MAAAA;KAAE;AACf;EAGQrC,2BAA2BA,CAACC,cAAsC,EAAA;IACxE,MAAM;MAACwC,QAAQ;MAAET,OAAO;AAAEF,MAAAA;AAAO,KAAC,GAAG7B,cAAc;AACnD,IAAA,IAAI8C,WAA4B;IAIhC,IAAIN,QAAQ,KAAK,QAAQ,EAAE;MAIzB,IAAI,IAAI,CAACzJ,IAAI,IAAI,IAAI,CAACA,IAAI,CAAC+B,KAAK,KAAK,KAAK,EAAE;AAC1CgI,QAAAA,WAAW,GAAGf,OAAO,KAAK,KAAK,GAAG,MAAM,GAAG,OAAO;AACpD,OAAA,MAAO;AACLe,QAAAA,WAAW,GAAGf,OAAO,KAAK,OAAO,GAAG,MAAM,GAAG,OAAO;AACtD;AACF,KAAA,MAAO;MACLe,WAAW,GAAGN,QAAQ,KAAK,QAAQ,IAAIX,OAAO,KAAK,KAAK,GAAG,OAAO,GAAG,OAAO;AAC9E;AAEA,IAAA,IAAIiB,WAAW,KAAK,IAAI,CAACpI,gBAAgB,EAAE;AACzC,MAAA,MAAMyD,UAAU,GAAG,IAAI,CAACtE,WAAW;AAEnC,MAAA,IAAIsE,UAAU,EAAE;QACd,MAAM4E,WAAW,GAAG,CAAG,EAAA,IAAI,CAACpI,eAAe,CAAA,CAAA,EAAI9C,WAAW,CAAG,CAAA,CAAA;QAC7DsG,UAAU,CAAC6E,gBAAgB,CAACD,WAAW,GAAG,IAAI,CAACrI,gBAAgB,CAAC;AAChEyD,QAAAA,UAAU,CAAC8C,aAAa,CAAC8B,WAAW,GAAGD,WAAW,CAAC;AACrD;MAEA,IAAI,CAACpI,gBAAgB,GAAGoI,WAAW;AACrC;AACF;AAGQtH,EAAAA,gCAAgCA,GAAA;AAEtC,IAAA,IAAI,IAAI,CAACrB,SAAS,IAAI,CAAC,IAAI,CAACuB,OAAO,IAAI,CAAC,IAAI,CAACrB,gBAAgB,IAAI,IAAI,CAACmC,cAAc,CAACoB,MAAM,EAAE;AAC3F,MAAA;AACF;AAIA,IAAA,IAAI,CAAC,IAAI,CAACqF,gBAAgB,EAAE,EAAE;AAC5B,MAAA,IAAI,CAACC,YAAY,CAAC,YAAY,EAAGrC,KAAiB,IAAI;QACpD,IAAI,CAACsC,+BAA+B,EAAE;QACtC,IAAIC,KAAK,GAAGxE,SAAS;QACrB,IAAIiC,KAAK,CAACsB,CAAC,KAAKvD,SAAS,IAAIiC,KAAK,CAACuB,CAAC,KAAKxD,SAAS,EAAE;AAClDwE,UAAAA,KAAK,GAAGvC,KAAK;AACf;AACA,QAAA,IAAI,CAAC7F,IAAI,CAAC4D,SAAS,EAAEwE,KAAK,CAAC;AAC7B,OAAC,CAAC;AACJ,KAAA,MAAO,IAAI,IAAI,CAACrH,aAAa,KAAK,KAAK,EAAE;MACvC,IAAI,CAACsH,iCAAiC,EAAE;AACxC,MAAA,IAAI,CAACH,YAAY,CAAC,YAAY,EAAGrC,KAAiB,IAAI;AACpD,QAAA,MAAMyC,KAAK,GAAGzC,KAAK,CAAC0C,aAAa,GAAG,CAAC,CAAC;QACtC,MAAMnG,MAAM,GAAGkG,KAAK,GAAG;UAACnB,CAAC,EAAEmB,KAAK,CAACE,OAAO;UAAEpB,CAAC,EAAEkB,KAAK,CAACG;SAAQ,GAAG7E,SAAS;QAGvE,IAAI,CAACuE,+BAA+B,EAAE;QACtC,IAAI,IAAI,CAAC1G,kBAAkB,EAAE;AAC3Be,UAAAA,YAAY,CAAC,IAAI,CAACf,kBAAkB,CAAC;AACvC;QAEA,MAAMiH,uBAAuB,GAAG,GAAG;AACnC,QAAA,IAAI,CAACjH,kBAAkB,GAAGkH,UAAU,CAAC,MAAK;UACxC,IAAI,CAAClH,kBAAkB,GAAG,IAAI;AAC9B,UAAA,IAAI,CAACzB,IAAI,CAAC4D,SAAS,EAAExB,MAAM,CAAC;SAC7B,EAAE,IAAI,CAACzD,eAAe,EAAEiK,uBAAuB,IAAIF,uBAAuB,CAAC;AAC9E,OAAC,CAAC;AACJ;AACF;AAEQP,EAAAA,+BAA+BA,GAAA;IACrC,IAAI,IAAI,CAAC7I,6BAA6B,EAAE;AACtC,MAAA;AACF;IACA,IAAI,CAACA,6BAA6B,GAAG,IAAI;AAEzC,IAAA,IAAI,CAAC,IAAI,CAAC2I,gBAAgB,EAAE,EAAE;AAC5B,MAAA,IAAI,CAACC,YAAY,CAAC,YAAY,EAAGrC,KAAiB,IAAI;AACpD,QAAA,MAAMgD,SAAS,GAAGhD,KAAK,CAACiD,aAA4B;AACpD,QAAA,IAAI,CAACD,SAAS,IAAI,CAAC,IAAI,CAAChK,WAAW,EAAEkK,cAAc,CAACC,QAAQ,CAACH,SAAS,CAAC,EAAE;UACvE,IAAI,CAACtI,IAAI,EAAE;AACb;AACF,OAAC,CAAC;AAEF,MAAA,IAAI,CAAC2H,YAAY,CAAC,OAAO,EAAGrC,KAAiB,IAAI;AAC/C,QAAA,IAAI,IAAI,CAACzE,iBAAiB,EAAE,EAAE;AAC5B,UAAA,MAAM6H,mBAAmB,GAAG,IAAI,CAAC3K,SAAS,CAAC4K,gBAAgB,CAACrD,KAAK,CAAC2C,OAAO,EAAE3C,KAAK,CAAC4C,OAAO,CAAC;AACzF,UAAA,MAAMU,OAAO,GAAG,IAAI,CAAC9L,WAAW,CAACkF,aAAa;UAM9C,IAAI0G,mBAAmB,KAAKE,OAAO,IAAI,CAACA,OAAO,CAACH,QAAQ,CAACC,mBAAmB,CAAC,EAAE;YAC7E,IAAI,CAAC1I,IAAI,EAAE;AACb;AACF;AACF,OAAC,CAAC;AACJ,KAAA,MAAO,IAAI,IAAI,CAACQ,aAAa,KAAK,KAAK,EAAE;MACvC,IAAI,CAACsH,iCAAiC,EAAE;MACxC,MAAMe,gBAAgB,GAAGA,MAAK;QAC5B,IAAI,IAAI,CAAC3H,kBAAkB,EAAE;AAC3Be,UAAAA,YAAY,CAAC,IAAI,CAACf,kBAAkB,CAAC;AACvC;QACA,IAAI,CAAClB,IAAI,CAAC,IAAI,CAAC5B,eAAe,EAAEhC,iBAAiB,CAAC;OACnD;AAED,MAAA,IAAI,CAACuL,YAAY,CAAC,UAAU,EAAEkB,gBAAgB,CAAC;AAC/C,MAAA,IAAI,CAAClB,YAAY,CAAC,aAAa,EAAEkB,gBAAgB,CAAC;AACpD;AACF;AAEQlB,EAAAA,YAAYA,CAAkBmB,IAAY,EAAEC,QAA4B,EAAA;IAC9E,IAAI,CAAC9H,cAAc,CAAC+H,IAAI,CACtB,IAAI,CAAC/K,SAAS,CAACgL,MAAM,CAAC,IAAI,CAACnM,WAAW,CAACkF,aAAa,EAAE8G,IAAI,EAAEC,QAAQ,EAAExM,sBAAsB,CAAC,CAC9F;AACH;AAEQmL,EAAAA,gBAAgBA,GAAA;IACtB,IAAI,IAAI,CAACxK,SAAS,CAACgM,GAAG,IAAI,IAAI,CAAChM,SAAS,CAACiM,OAAO,EAAE;AAEhD,MAAA,OAAO,IAAI;KACb,MAAO,IAAI,CAAC,IAAI,CAACjM,SAAS,CAACkM,SAAS,EAAE;AAEpC,MAAA,OAAO,KAAK;AACd;AAEA,IAAA,OACE,CAAC,CAAC,IAAI,CAAChL,eAAe,EAAEiL,qBAAqB,IAC7C,IAAI,CAACxL,aAAa,CAACyL,UAAU,CAAC,mBAAmB,CAAC,CAACC,OAAO;AAE9D;AAGQzB,EAAAA,iCAAiCA,GAAA;AACvC,IAAA,MAAM0B,QAAQ,GAAG,IAAI,CAAChJ,aAAa;IAEnC,IAAIgJ,QAAQ,KAAK,KAAK,EAAE;AACtB,MAAA,MAAMZ,OAAO,GAAG,IAAI,CAAC9L,WAAW,CAACkF,aAAa;AAC9C,MAAA,MAAMyH,KAAK,GAAGb,OAAO,CAACa,KAAK;AAI3B,MAAA,IAAID,QAAQ,KAAK,IAAI,IAAKZ,OAAO,CAACc,QAAQ,KAAK,OAAO,IAAId,OAAO,CAACc,QAAQ,KAAK,UAAW,EAAE;AAC1FD,QAAAA,KAAK,CAACE,UAAU,GACdF,KAAK,CAACG,YAAY,GAClBH,KAAK,CAACI,gBAAgB,GACtBJ,KAAK,CAACK,aAAa,GACjB,MAAM;AACZ;MAIA,IAAIN,QAAQ,KAAK,IAAI,IAAI,CAACZ,OAAO,CAACmB,SAAS,EAAE;QAC3CN,KAAK,CAACO,cAAc,GAAG,MAAM;AAC/B;MAEAP,KAAK,CAACQ,WAAW,GAAG,MAAM;MAC1BR,KAAK,CAACS,uBAAuB,GAAG,aAAa;AAC/C;AACF;EAGQhK,oBAAoBA,CAACQ,UAAkB,EAAA;IAC7C,IAAI,IAAI,CAACrB,uBAAuB,EAAE;AAChC,MAAA;AACF;IAEA,IAAI,CAACA,uBAAuB,GAAG,IAAI;AACnC,IAAA,IAAI,CAACjC,cAAc,CAACoF,iBAAiB,CAAC,IAAI,CAAC1F,WAAW,CAACkF,aAAa,EAAEtB,UAAU,EAAE,SAAS,CAAC;AAM5F,IAAA,IAAI,CAAC,IAAI,CAACW,YAAY,EAAE;AACtB8F,MAAAA,eAAe,CACb;QACEgD,KAAK,EAAEA,MAAK;UACV,IAAI,CAAC9K,uBAAuB,GAAG,KAAK;UAEpC,IAAI,IAAI,CAACc,OAAO,IAAI,CAAC,IAAI,CAACL,QAAQ,EAAE;AAClC,YAAA,IAAI,CAAC1C,cAAc,CAACgN,QAAQ,CAAC,IAAI,CAACtN,WAAW,CAACkF,aAAa,EAAE,IAAI,CAAC7B,OAAO,EAAE,SAAS,CAAC;AACvF;AACF;OACD,EACD;QAACvE,QAAQ,EAAE,IAAI,CAAC8B;AAAS,OAAC,CAC3B;AACH;AACF;EAGQuH,sBAAsB,GAAIK,KAAY,IAAI;AAChD,IAAA,IAAIA,KAAK,CAAC+E,IAAI,KAAK,SAAS,EAAE;AAC5B,MAAA,OACE,IAAI,CAACxJ,iBAAiB,EAAE,IACvByE,KAAuB,CAACgF,OAAO,KAAKC,MAAM,IAC3C,CAACC,cAAc,CAAClF,KAAsB,CAAC;AAE3C;AACA,IAAA,OAAO,IAAI;GACZ;;;;;UApvBUzI,UAAU;AAAA4N,IAAAA,IAAA,EAAA,EAAA;AAAAC,IAAAA,MAAA,EAAAC,EAAA,CAAAC,eAAA,CAAAC;AAAA,GAAA,CAAA;;;;UAAVhO,UAAU;AAAAiO,IAAAA,YAAA,EAAA,IAAA;AAAAC,IAAAA,QAAA,EAAA,cAAA;AAAAC,IAAAA,MAAA,EAAA;AAAA1P,MAAAA,QAAA,EAAA,CAAA,oBAAA,EAAA,UAAA,CAAA;AAAAqE,MAAAA,gBAAA,EAAA,CAAA,4BAAA,EAAA,kBAAA,CAAA;AAAAG,MAAAA,QAAA,EAAA,CAAA,oBAAA,EAAA,UAAA,CAAA;AAAA5D,MAAAA,SAAA,EAAA,CAAA,qBAAA,EAAA,WAAA,CAAA;AAAAC,MAAAA,SAAA,EAAA,CAAA,qBAAA,EAAA,WAAA,CAAA;AAAAqE,MAAAA,aAAA,EAAA,CAAA,yBAAA,EAAA,eAAA,CAAA;AAAAL,MAAAA,OAAA,EAAA,CAAA,YAAA,EAAA,SAAA,CAAA;AAAAY,MAAAA,YAAA,EAAA,CAAA,iBAAA,EAAA,cAAA;KAAA;AAAAkK,IAAAA,IAAA,EAAA;AAAAC,MAAAA,UAAA,EAAA;AAAA,QAAA,gCAAA,EAAA;OAAA;AAAAC,MAAAA,cAAA,EAAA;KAAA;IAAAC,QAAA,EAAA,CAAA,YAAA,CAAA;AAAAC,IAAAA,QAAA,EAAAV;AAAA,GAAA,CAAA;;;;;;QAAV9N,UAAU;AAAAyO,EAAAA,UAAA,EAAA,CAAA;UARtBT,SAAS;AAACU,IAAAA,IAAA,EAAA,CAAA;AACTR,MAAAA,QAAQ,EAAE,cAAc;AACxBK,MAAAA,QAAQ,EAAE,YAAY;AACtBH,MAAAA,IAAI,EAAE;AACJ,QAAA,OAAO,EAAE,yBAAyB;AAClC,QAAA,kCAAkC,EAAE;AACrC;KACF;;;;;YAqCEO,KAAK;aAAC,oBAAoB;;;YAqB1BA,KAAK;aAAC,4BAA4B;;;YAYlCA,KAAK;aAAC,oBAAoB;;;YAuB1BA,KAAK;aAAC,qBAAqB;;;YAY3BA,KAAK;aAAC,qBAAqB;;;YA6B3BA,KAAK;aAAC,yBAAyB;;;YAG/BA,KAAK;aAAC,YAAY;;;YA0BlBA,KAAK;aAAC,iBAAiB;;;;MAomBbvM,gBAAgB,CAAA;AACnBwM,EAAAA,kBAAkB,GAAG5P,MAAM,CAAC6P,iBAAiB,CAAC;AAC5C5O,EAAAA,WAAW,GAAGjB,MAAM,CAA0BkB,UAAU,CAAC;AAGnE4O,EAAAA,YAAY,GAAG,KAAK;EAGpBxL,OAAO;EAGPY,YAAY;EAGJ6K,cAAc;EAGdC,cAAc;EAGtB5I,eAAe;EAGf1C,oBAAoB;EAGZpC,mBAAmB,GAAGA,mBAAmB,EAAE;EAQnD2N,QAAQ;AAGAC,EAAAA,mBAAmB,GAAG,KAAK;AAG3BC,EAAAA,UAAU,GAAG,KAAK;AAGTC,EAAAA,OAAO,GAAkB,IAAI7K,OAAO,EAAE;AAGtC8K,EAAAA,cAAc,GAAG,sBAAsB;AAGvCC,EAAAA,cAAc,GAAG,sBAAsB;EAIxD7K,WAAAA,GAAA;EAMA7B,IAAIA,CAACiD,KAAa,EAAA;AAEhB,IAAA,IAAI,IAAI,CAACmJ,cAAc,IAAI,IAAI,EAAE;AAC/B5J,MAAAA,YAAY,CAAC,IAAI,CAAC4J,cAAc,CAAC;AACnC;AAEA,IAAA,IAAI,CAACD,cAAc,GAAGxD,UAAU,CAAC,MAAK;AACpC,MAAA,IAAI,CAACgE,iBAAiB,CAAC,IAAI,CAAC;MAC5B,IAAI,CAACR,cAAc,GAAGvI,SAAS;KAChC,EAAEX,KAAK,CAAC;AACX;EAMA1C,IAAIA,CAAC0C,KAAa,EAAA;AAEhB,IAAA,IAAI,IAAI,CAACkJ,cAAc,IAAI,IAAI,EAAE;AAC/B3J,MAAAA,YAAY,CAAC,IAAI,CAAC2J,cAAc,CAAC;AACnC;AAEA,IAAA,IAAI,CAACC,cAAc,GAAGzD,UAAU,CAAC,MAAK;AACpC,MAAA,IAAI,CAACgE,iBAAiB,CAAC,KAAK,CAAC;MAC7B,IAAI,CAACP,cAAc,GAAGxI,SAAS;KAChC,EAAEX,KAAK,CAAC;AACX;AAGAQ,EAAAA,WAAWA,GAAA;IACT,OAAO,IAAI,CAAC+I,OAAO;AACrB;AAGA9I,EAAAA,SAASA,GAAA;IACP,OAAO,IAAI,CAAC6I,UAAU;AACxB;AAEAjK,EAAAA,WAAWA,GAAA;IACT,IAAI,CAACY,wBAAwB,EAAE;AAC/B,IAAA,IAAI,CAACsJ,OAAO,CAAC1J,QAAQ,EAAE;IACvB,IAAI,CAACU,eAAe,GAAG,IAAK;AAC9B;AAOAmC,EAAAA,sBAAsBA,GAAA;IACpB,IAAI,IAAI,CAAC2G,mBAAmB,EAAE;AAC5B,MAAA,IAAI,CAAC/L,IAAI,CAAC,CAAC,CAAC;AACd;AACF;AAOAkH,EAAAA,aAAaA,GAAA;AACX,IAAA,IAAI,CAACuE,kBAAkB,CAACY,YAAY,EAAE;AACxC;AAEAC,EAAAA,iBAAiBA,CAAC;AAAC/D,IAAAA;AAA0B,GAAA,EAAA;AAC3C,IAAA,IAAI,CAACA,aAAa,IAAI,CAAC,IAAI,CAACtF,eAAe,CAACwF,QAAQ,CAACF,aAAqB,CAAC,EAAE;AAC3E,MAAA,IAAI,IAAI,CAACpF,SAAS,EAAE,EAAE;AACpB,QAAA,IAAI,CAACnD,IAAI,CAAC,IAAI,CAACO,oBAAoB,CAAC;AACtC,OAAA,MAAO;AACL,QAAA,IAAI,CAACgM,kBAAkB,CAAC,KAAK,CAAC;AAChC;AACF;AACF;AAOUC,EAAAA,OAAOA,GAAA;AACf,IAAA,IAAI,CAACb,YAAY,GAAG,IAAI,CAACc,mBAAmB,EAAE;IAC9C,IAAI,CAACvF,aAAa,EAAE;AACtB;AAGQuF,EAAAA,mBAAmBA,GAAA;IACzB,MAAMC,IAAI,GAAG,IAAI,CAAC5P,WAAW,CAACkF,aAAa,CAAC2K,qBAAqB,EAAE;IACnE,OAAOD,IAAI,CAACE,MAAM,GAAGjQ,UAAU,IAAI+P,IAAI,CAACG,KAAK,IAAIjQ,SAAS;AAC5D;AAGAkQ,EAAAA,mBAAmBA,CAAC;AAACC,IAAAA;AAA8B,GAAA,EAAA;IACjD,IAAIA,aAAa,KAAK,IAAI,CAACb,cAAc,IAAIa,aAAa,KAAK,IAAI,CAACZ,cAAc,EAAE;MAClF,IAAI,CAACI,kBAAkB,CAACQ,aAAa,KAAK,IAAI,CAACb,cAAc,CAAC;AAChE;AACF;AAGAvJ,EAAAA,wBAAwBA,GAAA;AACtB,IAAA,IAAI,IAAI,CAACiJ,cAAc,IAAI,IAAI,EAAE;AAC/B3J,MAAAA,YAAY,CAAC,IAAI,CAAC2J,cAAc,CAAC;AACnC;AAEA,IAAA,IAAI,IAAI,CAACC,cAAc,IAAI,IAAI,EAAE;AAC/B5J,MAAAA,YAAY,CAAC,IAAI,CAAC4J,cAAc,CAAC;AACnC;AAEA,IAAA,IAAI,CAACD,cAAc,GAAG,IAAI,CAACC,cAAc,GAAGxI,SAAS;AACvD;EAGQkJ,kBAAkBA,CAACS,SAAkB,EAAA;AAC3C,IAAA,IAAIA,SAAS,EAAE;MACb,IAAI,CAACjB,mBAAmB,GAAG,IAAI;KACjC,MAAO,IAAI,CAAC,IAAI,CAAC5I,SAAS,EAAE,EAAE;AAC5B,MAAA,IAAI,CAAC8I,OAAO,CAAC3J,IAAI,EAAE;AACrB;AACF;EAGQ8J,iBAAiBA,CAACjJ,SAAkB,EAAA;AAI1C,IAAA,MAAM8J,OAAO,GAAG,IAAI,CAACnB,QAAQ,CAAC9J,aAAa;AAC3C,IAAA,MAAMkL,SAAS,GAAG,IAAI,CAAChB,cAAc;AACrC,IAAA,MAAMiB,SAAS,GAAG,IAAI,CAAChB,cAAc;IACrCc,OAAO,CAACG,SAAS,CAACC,MAAM,CAAClK,SAAS,GAAGgK,SAAS,GAAGD,SAAS,CAAC;IAC3DD,OAAO,CAACG,SAAS,CAACE,GAAG,CAACnK,SAAS,GAAG+J,SAAS,GAAGC,SAAS,CAAC;AACxD,IAAA,IAAI,IAAI,CAACnB,UAAU,KAAK7I,SAAS,EAAE;MACjC,IAAI,CAAC6I,UAAU,GAAG7I,SAAS;AAC3B,MAAA,IAAI,CAACsI,kBAAkB,CAACY,YAAY,EAAE;AACxC;IAIA,IAAIlJ,SAAS,IAAI,CAAC,IAAI,CAAChF,mBAAmB,IAAI,OAAOoP,gBAAgB,KAAK,UAAU,EAAE;AACpF,MAAA,MAAMC,MAAM,GAAGD,gBAAgB,CAACN,OAAO,CAAC;AAGxC,MAAA,IACEO,MAAM,CAACC,gBAAgB,CAAC,oBAAoB,CAAC,KAAK,IAAI,IACtDD,MAAM,CAACC,gBAAgB,CAAC,gBAAgB,CAAC,KAAK,MAAM,EACpD;QACA,IAAI,CAACtP,mBAAmB,GAAG,IAAI;AACjC;AACF;AAEA,IAAA,IAAIgF,SAAS,EAAE;MACb,IAAI,CAACqJ,OAAO,EAAE;AAChB;IAEA,IAAI,IAAI,CAACrO,mBAAmB,EAAE;AAC5B8O,MAAAA,OAAO,CAACG,SAAS,CAACE,GAAG,CAAC,yBAAyB,CAAC;AAChD,MAAA,IAAI,CAACf,kBAAkB,CAACpJ,SAAS,CAAC;AACpC;AACF;;;;;UAvNWlE,gBAAgB;AAAAwL,IAAAA,IAAA,EAAA,EAAA;AAAAC,IAAAA,MAAA,EAAAC,EAAA,CAAAC,eAAA,CAAA8C;AAAA,GAAA,CAAA;AAAhB,EAAA,OAAAC,IAAA,GAAAhD,EAAA,CAAAiD,oBAAA,CAAA;AAAAC,IAAAA,UAAA,EAAA,QAAA;AAAAC,IAAAA,OAAA,EAAA,QAAA;AAAAzD,IAAAA,IAAA,EAAApL,gBAAgB;;;;;;;;;;;;;;;;;;;cCt8B7B,wRAQA;IAAAuO,MAAA,EAAA,CAAA,6uEAAA,CAAA;AAAAO,IAAAA,eAAA,EAAApD,EAAA,CAAAqD,uBAAA,CAAAC,MAAA;AAAAC,IAAAA,aAAA,EAAAvD,EAAA,CAAAwD,iBAAA,CAAAC;AAAA,GAAA,CAAA;;;;;;QD87BanP,gBAAgB;AAAAqM,EAAAA,UAAA,EAAA,CAAA;UAX5BoC,SAAS;;gBACE,uBAAuB;MAAAQ,aAAA,EAGlBC,iBAAiB,CAACC,IAAI;uBACpBJ,uBAAuB,CAACC,MAAM;AACzChD,MAAAA,IAAA,EAAA;AACJ,QAAA,cAAc,EAAE,2BAA2B;AAC3C,QAAA,aAAa,EAAE;OAChB;AAAAoD,MAAAA,QAAA,EAAA,wRAAA;MAAAb,MAAA,EAAA,CAAA,6uEAAA;KAAA;;;;;YA+BAc,SAAS;MAAC/C,IAAA,EAAA,CAAA,SAAS,EAAE;AAGpBgD,QAAAA,MAAM,EAAE;OACT;;;;;;;"}
package/fesm2022/core.mjs CHANGED
@@ -24,7 +24,7 @@ import '@angular/cdk/private';
24
24
  import '@angular/cdk/platform';
25
25
  import '@angular/cdk/coercion';
26
26
 
27
- const VERSION = new Version('21.2.0-next.3');
27
+ const VERSION = new Version('21.2.0-next.5');
28
28
 
29
29
  const ISO_8601_REGEX = /^\d{4}-\d{2}-\d{2}(?:T\d{2}:\d{2}:\d{2}(?:\.\d+)?(?:Z|(?:(?:\+|-)\d{2}:\d{2}))?)?$/;
30
30
  const TIME_REGEX = /^(\d?\d)[:.](\d?\d)(?:[:.](\d?\d))?\s*(AM|PM)?$/i;
@@ -1 +1 @@
1
- {"version":3,"file":"core.mjs","sources":["../../../../../darwin_arm64-fastbuild-ST-fdfa778d11ba/bin/src/material/core/version.ts","../../../../../darwin_arm64-fastbuild-ST-fdfa778d11ba/bin/src/material/core/datetime/native-date-adapter.ts","../../../../../darwin_arm64-fastbuild-ST-fdfa778d11ba/bin/src/material/core/datetime/native-date-formats.ts","../../../../../darwin_arm64-fastbuild-ST-fdfa778d11ba/bin/src/material/core/datetime/index.ts"],"sourcesContent":["/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.dev/license\n */\n\nimport {Version} from '@angular/core';\n\n/** Current version of Angular Material. */\nexport const VERSION = new Version('21.2.0-next.3');\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 {inject, Injectable} from '@angular/core';\nimport {DateAdapter, MAT_DATE_LOCALE} from './date-adapter';\n\n/**\n * Matches strings that have the form of a valid RFC 3339 string\n * (https://tools.ietf.org/html/rfc3339). Note that the string may not actually be a valid date\n * because the regex will match strings with an out of bounds month, date, etc.\n */\nconst ISO_8601_REGEX =\n /^\\d{4}-\\d{2}-\\d{2}(?:T\\d{2}:\\d{2}:\\d{2}(?:\\.\\d+)?(?:Z|(?:(?:\\+|-)\\d{2}:\\d{2}))?)?$/;\n\n/**\n * Matches a time string. Supported formats:\n * - {{hours}}:{{minutes}}\n * - {{hours}}:{{minutes}}:{{seconds}}\n * - {{hours}}:{{minutes}} AM/PM\n * - {{hours}}:{{minutes}}:{{seconds}} AM/PM\n * - {{hours}}.{{minutes}}\n * - {{hours}}.{{minutes}}.{{seconds}}\n * - {{hours}}.{{minutes}} AM/PM\n * - {{hours}}.{{minutes}}.{{seconds}} AM/PM\n */\nconst TIME_REGEX = /^(\\d?\\d)[:.](\\d?\\d)(?:[:.](\\d?\\d))?\\s*(AM|PM)?$/i;\n\n/** Creates an array and fills it with values. */\nfunction range<T>(length: number, valueFunction: (index: number) => T): T[] {\n const valuesArray = Array(length);\n for (let i = 0; i < length; i++) {\n valuesArray[i] = valueFunction(i);\n }\n return valuesArray;\n}\n\n/** Adapts the native JS Date for use with cdk-based components that work with dates. */\n@Injectable()\nexport class NativeDateAdapter extends DateAdapter<Date> {\n /** The injected locale. */\n private readonly _matDateLocale = inject(MAT_DATE_LOCALE, {optional: true});\n\n constructor(...args: unknown[]);\n\n constructor() {\n super();\n\n const matDateLocale = inject(MAT_DATE_LOCALE, {optional: true});\n\n if (matDateLocale !== undefined) {\n this._matDateLocale = matDateLocale;\n }\n\n super.setLocale(this._matDateLocale);\n }\n\n getYear(date: Date): number {\n return date.getFullYear();\n }\n\n getMonth(date: Date): number {\n return date.getMonth();\n }\n\n getDate(date: Date): number {\n return date.getDate();\n }\n\n getDayOfWeek(date: Date): number {\n return date.getDay();\n }\n\n getMonthNames(style: 'long' | 'short' | 'narrow'): string[] {\n const dtf = new Intl.DateTimeFormat(this.locale, {month: style, timeZone: 'utc'});\n return range(12, i => this._format(dtf, new Date(2017, i, 1)));\n }\n\n getDateNames(): string[] {\n const dtf = new Intl.DateTimeFormat(this.locale, {day: 'numeric', timeZone: 'utc'});\n return range(31, i => this._format(dtf, new Date(2017, 0, i + 1)));\n }\n\n getDayOfWeekNames(style: 'long' | 'short' | 'narrow'): string[] {\n const dtf = new Intl.DateTimeFormat(this.locale, {weekday: style, timeZone: 'utc'});\n return range(7, i => this._format(dtf, new Date(2017, 0, i + 1)));\n }\n\n getYearName(date: Date): string {\n const dtf = new Intl.DateTimeFormat(this.locale, {year: 'numeric', timeZone: 'utc'});\n return this._format(dtf, date);\n }\n\n getFirstDayOfWeek(): number {\n // At the time of writing `Intl.Locale` isn't available\n // in the internal types so we need to cast to `any`.\n if (typeof Intl !== 'undefined' && (Intl as any).Locale) {\n const locale = new (Intl as any).Locale(this.locale) as {\n getWeekInfo?: () => {firstDay: number};\n weekInfo?: {firstDay: number};\n };\n\n // Some browsers implement a `getWeekInfo` method while others have a `weekInfo` getter.\n // Note that this isn't supported in all browsers so we need to null check it.\n const firstDay = (locale.getWeekInfo?.() || locale.weekInfo)?.firstDay ?? 0;\n\n // `weekInfo.firstDay` is a number between 1 and 7 where, starting from Monday,\n // whereas our representation is 0 to 6 where 0 is Sunday so we need to normalize it.\n return firstDay === 7 ? 0 : firstDay;\n }\n\n // Default to Sunday if the browser doesn't provide the week information.\n return 0;\n }\n\n getNumDaysInMonth(date: Date): number {\n return this.getDate(\n this._createDateWithOverflow(this.getYear(date), this.getMonth(date) + 1, 0),\n );\n }\n\n clone(date: Date): Date {\n return new Date(date.getTime());\n }\n\n createDate(year: number, month: number, date: number): Date {\n if (typeof ngDevMode === 'undefined' || ngDevMode) {\n // Check for invalid month and date (except upper bound on date which we have to check after\n // creating the Date).\n if (month < 0 || month > 11) {\n throw Error(`Invalid month index \"${month}\". Month index has to be between 0 and 11.`);\n }\n\n if (date < 1) {\n throw Error(`Invalid date \"${date}\". Date has to be greater than 0.`);\n }\n }\n\n let result = this._createDateWithOverflow(year, month, date);\n // Check that the date wasn't above the upper bound for the month, causing the month to overflow\n if (result.getMonth() != month && (typeof ngDevMode === 'undefined' || ngDevMode)) {\n throw Error(`Invalid date \"${date}\" for month with index \"${month}\".`);\n }\n\n return result;\n }\n\n today(): Date {\n return new Date();\n }\n\n parse(value: any, parseFormat?: any): Date | null {\n // We have no way using the native JS Date to set the parse format or locale, so we ignore these\n // parameters.\n if (typeof value == 'number') {\n return new Date(value);\n }\n return value ? new Date(Date.parse(value)) : null;\n }\n\n format(date: Date, displayFormat: Object): string {\n if (!this.isValid(date)) {\n throw Error('NativeDateAdapter: Cannot format invalid date.');\n }\n\n const dtf = new Intl.DateTimeFormat(this.locale, {...displayFormat, timeZone: 'utc'});\n return this._format(dtf, date);\n }\n\n addCalendarYears(date: Date, years: number): Date {\n return this.addCalendarMonths(date, years * 12);\n }\n\n addCalendarMonths(date: Date, months: number): Date {\n let newDate = this._createDateWithOverflow(\n this.getYear(date),\n this.getMonth(date) + months,\n this.getDate(date),\n );\n\n // It's possible to wind up in the wrong month if the original month has more days than the new\n // month. In this case we want to go to the last day of the desired month.\n // Note: the additional + 12 % 12 ensures we end up with a positive number, since JS % doesn't\n // guarantee this.\n if (this.getMonth(newDate) != (((this.getMonth(date) + months) % 12) + 12) % 12) {\n newDate = this._createDateWithOverflow(this.getYear(newDate), this.getMonth(newDate), 0);\n }\n\n return newDate;\n }\n\n addCalendarDays(date: Date, days: number): Date {\n return this._createDateWithOverflow(\n this.getYear(date),\n this.getMonth(date),\n this.getDate(date) + days,\n );\n }\n\n toIso8601(date: Date): string {\n return [\n date.getUTCFullYear(),\n this._2digit(date.getUTCMonth() + 1),\n this._2digit(date.getUTCDate()),\n ].join('-');\n }\n\n /**\n * Returns the given value if given a valid Date or null. Deserializes valid ISO 8601 strings\n * (https://www.ietf.org/rfc/rfc3339.txt) into valid Dates and empty string into null. Returns an\n * invalid date for all other values.\n */\n override deserialize(value: any): Date | null {\n if (typeof value === 'string') {\n if (!value) {\n return null;\n }\n // The `Date` constructor accepts formats other than ISO 8601, so we need to make sure the\n // string is the right format first.\n if (ISO_8601_REGEX.test(value)) {\n let date = new Date(value);\n if (this.isValid(date)) {\n return date;\n }\n }\n }\n return super.deserialize(value);\n }\n\n isDateInstance(obj: any) {\n return obj instanceof Date;\n }\n\n isValid(date: Date) {\n return !isNaN(date.getTime());\n }\n\n invalid(): Date {\n return new Date(NaN);\n }\n\n override setTime(target: Date, hours: number, minutes: number, seconds: number): Date {\n if (typeof ngDevMode === 'undefined' || ngDevMode) {\n if (!inRange(hours, 0, 23)) {\n throw Error(`Invalid hours \"${hours}\". Hours value must be between 0 and 23.`);\n }\n\n if (!inRange(minutes, 0, 59)) {\n throw Error(`Invalid minutes \"${minutes}\". Minutes value must be between 0 and 59.`);\n }\n\n if (!inRange(seconds, 0, 59)) {\n throw Error(`Invalid seconds \"${seconds}\". Seconds value must be between 0 and 59.`);\n }\n }\n\n const clone = this.clone(target);\n clone.setHours(hours, minutes, seconds, 0);\n return clone;\n }\n\n override getHours(date: Date): number {\n return date.getHours();\n }\n\n override getMinutes(date: Date): number {\n return date.getMinutes();\n }\n\n override getSeconds(date: Date): number {\n return date.getSeconds();\n }\n\n override parseTime(userValue: any, parseFormat?: any): Date | null {\n if (typeof userValue !== 'string') {\n return userValue instanceof Date ? new Date(userValue.getTime()) : null;\n }\n\n const value = userValue.trim();\n\n if (value.length === 0) {\n return null;\n }\n\n // Attempt to parse the value directly.\n let result = this._parseTimeString(value);\n\n // Some locales add extra characters around the time, but are otherwise parseable\n // (e.g. `00:05 ч.` in bg-BG). Try replacing all non-number and non-colon characters.\n if (result === null) {\n const withoutExtras = value.replace(/[^0-9:(AM|PM)]/gi, '').trim();\n\n if (withoutExtras.length > 0) {\n result = this._parseTimeString(withoutExtras);\n }\n }\n\n return result || this.invalid();\n }\n\n override addSeconds(date: Date, amount: number): Date {\n return new Date(date.getTime() + amount * 1000);\n }\n\n /** Creates a date but allows the month and date to overflow. */\n private _createDateWithOverflow(year: number, month: number, date: number) {\n // Passing the year to the constructor causes year numbers <100 to be converted to 19xx.\n // To work around this we use `setFullYear` and `setHours` instead.\n const d = new Date();\n d.setFullYear(year, month, date);\n d.setHours(0, 0, 0, 0);\n return d;\n }\n\n /**\n * Pads a number to make it two digits.\n * @param n The number to pad.\n * @returns The padded number.\n */\n private _2digit(n: number) {\n return ('00' + n).slice(-2);\n }\n\n /**\n * When converting Date object to string, javascript built-in functions may return wrong\n * results because it applies its internal DST rules. The DST rules around the world change\n * very frequently, and the current valid rule is not always valid in previous years though.\n * We work around this problem building a new Date object which has its internal UTC\n * representation with the local date and time.\n * @param dtf Intl.DateTimeFormat object, containing the desired string format. It must have\n * timeZone set to 'utc' to work fine.\n * @param date Date from which we want to get the string representation according to dtf\n * @returns A Date object with its UTC representation based on the passed in date info\n */\n private _format(dtf: Intl.DateTimeFormat, date: Date) {\n // Passing the year to the constructor causes year numbers <100 to be converted to 19xx.\n // To work around this we use `setUTCFullYear` and `setUTCHours` instead.\n const d = new Date();\n d.setUTCFullYear(date.getFullYear(), date.getMonth(), date.getDate());\n d.setUTCHours(date.getHours(), date.getMinutes(), date.getSeconds(), date.getMilliseconds());\n return dtf.format(d);\n }\n\n /**\n * Attempts to parse a time string into a date object. Returns null if it cannot be parsed.\n * @param value Time string to parse.\n */\n private _parseTimeString(value: string): Date | null {\n // Note: we can technically rely on the browser for the time parsing by generating\n // an ISO string and appending the string to the end of it. We don't do it, because\n // browsers aren't consistent in what they support. Some examples:\n // - Safari doesn't support AM/PM.\n // - Firefox produces a valid date object if the time string has overflows (e.g. 12:75) while\n // other browsers produce an invalid date.\n // - Safari doesn't allow padded numbers.\n const parsed = value.toUpperCase().match(TIME_REGEX);\n\n if (parsed) {\n let hours = parseInt(parsed[1]);\n const minutes = parseInt(parsed[2]);\n let seconds: number | undefined = parsed[3] == null ? undefined : parseInt(parsed[3]);\n const amPm = parsed[4] as 'AM' | 'PM' | undefined;\n\n if (hours === 12) {\n hours = amPm === 'AM' ? 0 : hours;\n } else if (amPm === 'PM') {\n hours += 12;\n }\n\n if (\n inRange(hours, 0, 23) &&\n inRange(minutes, 0, 59) &&\n (seconds == null || inRange(seconds, 0, 59))\n ) {\n return this.setTime(this.today(), hours, minutes, seconds || 0);\n }\n }\n\n return null;\n }\n}\n\n/** Checks whether a number is within a certain range. */\nfunction inRange(value: number, min: number, max: number): boolean {\n return !isNaN(value) && value >= min && value <= max;\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 {MatDateFormats} from './date-formats';\n\nexport const MAT_NATIVE_DATE_FORMATS: MatDateFormats = {\n parse: {\n dateInput: null,\n timeInput: null,\n },\n display: {\n dateInput: {year: 'numeric', month: 'numeric', day: 'numeric'},\n timeInput: {hour: 'numeric', minute: 'numeric'},\n monthYearLabel: {year: 'numeric', month: 'short'},\n dateA11yLabel: {year: 'numeric', month: 'long', day: 'numeric'},\n monthYearA11yLabel: {year: 'numeric', month: 'long'},\n timeOptionLabel: {hour: 'numeric', minute: 'numeric'},\n },\n};\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.dev/license\n */\n\nimport {NgModule, Provider} from '@angular/core';\nimport {DateAdapter} from './date-adapter';\nimport {MAT_DATE_FORMATS, MatDateFormats} from './date-formats';\nimport {NativeDateAdapter} from './native-date-adapter';\nimport {MAT_NATIVE_DATE_FORMATS} from './native-date-formats';\n\nexport * from './date-adapter';\nexport * from './date-formats';\nexport * from './native-date-adapter';\nexport * from './native-date-formats';\n\n@NgModule({\n providers: [{provide: DateAdapter, useClass: NativeDateAdapter}],\n})\nexport class NativeDateModule {}\n\n@NgModule({\n providers: [provideNativeDateAdapter()],\n})\nexport class MatNativeDateModule {}\n\nexport function provideNativeDateAdapter(\n formats: MatDateFormats = MAT_NATIVE_DATE_FORMATS,\n): Provider[] {\n return [\n {provide: DateAdapter, useClass: NativeDateAdapter},\n {provide: MAT_DATE_FORMATS, useValue: formats},\n ];\n}\n"],"names":["VERSION","Version","ISO_8601_REGEX","TIME_REGEX","range","length","valueFunction","valuesArray","Array","i","NativeDateAdapter","DateAdapter","_matDateLocale","inject","MAT_DATE_LOCALE","optional","constructor","matDateLocale","undefined","setLocale","getYear","date","getFullYear","getMonth","getDate","getDayOfWeek","getDay","getMonthNames","style","dtf","Intl","DateTimeFormat","locale","month","timeZone","_format","Date","getDateNames","day","getDayOfWeekNames","weekday","getYearName","year","getFirstDayOfWeek","Locale","firstDay","getWeekInfo","weekInfo","getNumDaysInMonth","_createDateWithOverflow","clone","getTime","createDate","ngDevMode","Error","result","today","parse","value","parseFormat","format","displayFormat","isValid","addCalendarYears","years","addCalendarMonths","months","newDate","addCalendarDays","days","toIso8601","getUTCFullYear","_2digit","getUTCMonth","getUTCDate","join","deserialize","test","isDateInstance","obj","isNaN","invalid","NaN","setTime","target","hours","minutes","seconds","inRange","setHours","getHours","getMinutes","getSeconds","parseTime","userValue","trim","_parseTimeString","withoutExtras","replace","addSeconds","amount","d","setFullYear","n","slice","setUTCFullYear","setUTCHours","getMilliseconds","parsed","toUpperCase","match","parseInt","amPm","deps","i0","ɵɵFactoryTarget","Injectable","decorators","min","max","MAT_NATIVE_DATE_FORMATS","dateInput","timeInput","display","hour","minute","monthYearLabel","dateA11yLabel","monthYearA11yLabel","timeOptionLabel","NativeDateModule","NgModule","providers","provide","useClass","args","MatNativeDateModule","ɵinj","ɵɵngDeclareInjector","minVersion","version","ngImport","type","provideNativeDateAdapter","formats","MAT_DATE_FORMATS","useValue"],"mappings":"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"}
1
+ {"version":3,"file":"core.mjs","sources":["../../../../../darwin_arm64-fastbuild-ST-fdfa778d11ba/bin/src/material/core/version.ts","../../../../../darwin_arm64-fastbuild-ST-fdfa778d11ba/bin/src/material/core/datetime/native-date-adapter.ts","../../../../../darwin_arm64-fastbuild-ST-fdfa778d11ba/bin/src/material/core/datetime/native-date-formats.ts","../../../../../darwin_arm64-fastbuild-ST-fdfa778d11ba/bin/src/material/core/datetime/index.ts"],"sourcesContent":["/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.dev/license\n */\n\nimport {Version} from '@angular/core';\n\n/** Current version of Angular Material. */\nexport const VERSION = new Version('21.2.0-next.5');\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 {inject, Injectable} from '@angular/core';\nimport {DateAdapter, MAT_DATE_LOCALE} from './date-adapter';\n\n/**\n * Matches strings that have the form of a valid RFC 3339 string\n * (https://tools.ietf.org/html/rfc3339). Note that the string may not actually be a valid date\n * because the regex will match strings with an out of bounds month, date, etc.\n */\nconst ISO_8601_REGEX =\n /^\\d{4}-\\d{2}-\\d{2}(?:T\\d{2}:\\d{2}:\\d{2}(?:\\.\\d+)?(?:Z|(?:(?:\\+|-)\\d{2}:\\d{2}))?)?$/;\n\n/**\n * Matches a time string. Supported formats:\n * - {{hours}}:{{minutes}}\n * - {{hours}}:{{minutes}}:{{seconds}}\n * - {{hours}}:{{minutes}} AM/PM\n * - {{hours}}:{{minutes}}:{{seconds}} AM/PM\n * - {{hours}}.{{minutes}}\n * - {{hours}}.{{minutes}}.{{seconds}}\n * - {{hours}}.{{minutes}} AM/PM\n * - {{hours}}.{{minutes}}.{{seconds}} AM/PM\n */\nconst TIME_REGEX = /^(\\d?\\d)[:.](\\d?\\d)(?:[:.](\\d?\\d))?\\s*(AM|PM)?$/i;\n\n/** Creates an array and fills it with values. */\nfunction range<T>(length: number, valueFunction: (index: number) => T): T[] {\n const valuesArray = Array(length);\n for (let i = 0; i < length; i++) {\n valuesArray[i] = valueFunction(i);\n }\n return valuesArray;\n}\n\n/** Adapts the native JS Date for use with cdk-based components that work with dates. */\n@Injectable()\nexport class NativeDateAdapter extends DateAdapter<Date> {\n /** The injected locale. */\n private readonly _matDateLocale = inject(MAT_DATE_LOCALE, {optional: true});\n\n constructor(...args: unknown[]);\n\n constructor() {\n super();\n\n const matDateLocale = inject(MAT_DATE_LOCALE, {optional: true});\n\n if (matDateLocale !== undefined) {\n this._matDateLocale = matDateLocale;\n }\n\n super.setLocale(this._matDateLocale);\n }\n\n getYear(date: Date): number {\n return date.getFullYear();\n }\n\n getMonth(date: Date): number {\n return date.getMonth();\n }\n\n getDate(date: Date): number {\n return date.getDate();\n }\n\n getDayOfWeek(date: Date): number {\n return date.getDay();\n }\n\n getMonthNames(style: 'long' | 'short' | 'narrow'): string[] {\n const dtf = new Intl.DateTimeFormat(this.locale, {month: style, timeZone: 'utc'});\n return range(12, i => this._format(dtf, new Date(2017, i, 1)));\n }\n\n getDateNames(): string[] {\n const dtf = new Intl.DateTimeFormat(this.locale, {day: 'numeric', timeZone: 'utc'});\n return range(31, i => this._format(dtf, new Date(2017, 0, i + 1)));\n }\n\n getDayOfWeekNames(style: 'long' | 'short' | 'narrow'): string[] {\n const dtf = new Intl.DateTimeFormat(this.locale, {weekday: style, timeZone: 'utc'});\n return range(7, i => this._format(dtf, new Date(2017, 0, i + 1)));\n }\n\n getYearName(date: Date): string {\n const dtf = new Intl.DateTimeFormat(this.locale, {year: 'numeric', timeZone: 'utc'});\n return this._format(dtf, date);\n }\n\n getFirstDayOfWeek(): number {\n // At the time of writing `Intl.Locale` isn't available\n // in the internal types so we need to cast to `any`.\n if (typeof Intl !== 'undefined' && (Intl as any).Locale) {\n const locale = new (Intl as any).Locale(this.locale) as {\n getWeekInfo?: () => {firstDay: number};\n weekInfo?: {firstDay: number};\n };\n\n // Some browsers implement a `getWeekInfo` method while others have a `weekInfo` getter.\n // Note that this isn't supported in all browsers so we need to null check it.\n const firstDay = (locale.getWeekInfo?.() || locale.weekInfo)?.firstDay ?? 0;\n\n // `weekInfo.firstDay` is a number between 1 and 7 where, starting from Monday,\n // whereas our representation is 0 to 6 where 0 is Sunday so we need to normalize it.\n return firstDay === 7 ? 0 : firstDay;\n }\n\n // Default to Sunday if the browser doesn't provide the week information.\n return 0;\n }\n\n getNumDaysInMonth(date: Date): number {\n return this.getDate(\n this._createDateWithOverflow(this.getYear(date), this.getMonth(date) + 1, 0),\n );\n }\n\n clone(date: Date): Date {\n return new Date(date.getTime());\n }\n\n createDate(year: number, month: number, date: number): Date {\n if (typeof ngDevMode === 'undefined' || ngDevMode) {\n // Check for invalid month and date (except upper bound on date which we have to check after\n // creating the Date).\n if (month < 0 || month > 11) {\n throw Error(`Invalid month index \"${month}\". Month index has to be between 0 and 11.`);\n }\n\n if (date < 1) {\n throw Error(`Invalid date \"${date}\". Date has to be greater than 0.`);\n }\n }\n\n let result = this._createDateWithOverflow(year, month, date);\n // Check that the date wasn't above the upper bound for the month, causing the month to overflow\n if (result.getMonth() != month && (typeof ngDevMode === 'undefined' || ngDevMode)) {\n throw Error(`Invalid date \"${date}\" for month with index \"${month}\".`);\n }\n\n return result;\n }\n\n today(): Date {\n return new Date();\n }\n\n parse(value: any, parseFormat?: any): Date | null {\n // We have no way using the native JS Date to set the parse format or locale, so we ignore these\n // parameters.\n if (typeof value == 'number') {\n return new Date(value);\n }\n return value ? new Date(Date.parse(value)) : null;\n }\n\n format(date: Date, displayFormat: Object): string {\n if (!this.isValid(date)) {\n throw Error('NativeDateAdapter: Cannot format invalid date.');\n }\n\n const dtf = new Intl.DateTimeFormat(this.locale, {...displayFormat, timeZone: 'utc'});\n return this._format(dtf, date);\n }\n\n addCalendarYears(date: Date, years: number): Date {\n return this.addCalendarMonths(date, years * 12);\n }\n\n addCalendarMonths(date: Date, months: number): Date {\n let newDate = this._createDateWithOverflow(\n this.getYear(date),\n this.getMonth(date) + months,\n this.getDate(date),\n );\n\n // It's possible to wind up in the wrong month if the original month has more days than the new\n // month. In this case we want to go to the last day of the desired month.\n // Note: the additional + 12 % 12 ensures we end up with a positive number, since JS % doesn't\n // guarantee this.\n if (this.getMonth(newDate) != (((this.getMonth(date) + months) % 12) + 12) % 12) {\n newDate = this._createDateWithOverflow(this.getYear(newDate), this.getMonth(newDate), 0);\n }\n\n return newDate;\n }\n\n addCalendarDays(date: Date, days: number): Date {\n return this._createDateWithOverflow(\n this.getYear(date),\n this.getMonth(date),\n this.getDate(date) + days,\n );\n }\n\n toIso8601(date: Date): string {\n return [\n date.getUTCFullYear(),\n this._2digit(date.getUTCMonth() + 1),\n this._2digit(date.getUTCDate()),\n ].join('-');\n }\n\n /**\n * Returns the given value if given a valid Date or null. Deserializes valid ISO 8601 strings\n * (https://www.ietf.org/rfc/rfc3339.txt) into valid Dates and empty string into null. Returns an\n * invalid date for all other values.\n */\n override deserialize(value: any): Date | null {\n if (typeof value === 'string') {\n if (!value) {\n return null;\n }\n // The `Date` constructor accepts formats other than ISO 8601, so we need to make sure the\n // string is the right format first.\n if (ISO_8601_REGEX.test(value)) {\n let date = new Date(value);\n if (this.isValid(date)) {\n return date;\n }\n }\n }\n return super.deserialize(value);\n }\n\n isDateInstance(obj: any) {\n return obj instanceof Date;\n }\n\n isValid(date: Date) {\n return !isNaN(date.getTime());\n }\n\n invalid(): Date {\n return new Date(NaN);\n }\n\n override setTime(target: Date, hours: number, minutes: number, seconds: number): Date {\n if (typeof ngDevMode === 'undefined' || ngDevMode) {\n if (!inRange(hours, 0, 23)) {\n throw Error(`Invalid hours \"${hours}\". Hours value must be between 0 and 23.`);\n }\n\n if (!inRange(minutes, 0, 59)) {\n throw Error(`Invalid minutes \"${minutes}\". Minutes value must be between 0 and 59.`);\n }\n\n if (!inRange(seconds, 0, 59)) {\n throw Error(`Invalid seconds \"${seconds}\". Seconds value must be between 0 and 59.`);\n }\n }\n\n const clone = this.clone(target);\n clone.setHours(hours, minutes, seconds, 0);\n return clone;\n }\n\n override getHours(date: Date): number {\n return date.getHours();\n }\n\n override getMinutes(date: Date): number {\n return date.getMinutes();\n }\n\n override getSeconds(date: Date): number {\n return date.getSeconds();\n }\n\n override parseTime(userValue: any, parseFormat?: any): Date | null {\n if (typeof userValue !== 'string') {\n return userValue instanceof Date ? new Date(userValue.getTime()) : null;\n }\n\n const value = userValue.trim();\n\n if (value.length === 0) {\n return null;\n }\n\n // Attempt to parse the value directly.\n let result = this._parseTimeString(value);\n\n // Some locales add extra characters around the time, but are otherwise parseable\n // (e.g. `00:05 ч.` in bg-BG). Try replacing all non-number and non-colon characters.\n if (result === null) {\n const withoutExtras = value.replace(/[^0-9:(AM|PM)]/gi, '').trim();\n\n if (withoutExtras.length > 0) {\n result = this._parseTimeString(withoutExtras);\n }\n }\n\n return result || this.invalid();\n }\n\n override addSeconds(date: Date, amount: number): Date {\n return new Date(date.getTime() + amount * 1000);\n }\n\n /** Creates a date but allows the month and date to overflow. */\n private _createDateWithOverflow(year: number, month: number, date: number) {\n // Passing the year to the constructor causes year numbers <100 to be converted to 19xx.\n // To work around this we use `setFullYear` and `setHours` instead.\n const d = new Date();\n d.setFullYear(year, month, date);\n d.setHours(0, 0, 0, 0);\n return d;\n }\n\n /**\n * Pads a number to make it two digits.\n * @param n The number to pad.\n * @returns The padded number.\n */\n private _2digit(n: number) {\n return ('00' + n).slice(-2);\n }\n\n /**\n * When converting Date object to string, javascript built-in functions may return wrong\n * results because it applies its internal DST rules. The DST rules around the world change\n * very frequently, and the current valid rule is not always valid in previous years though.\n * We work around this problem building a new Date object which has its internal UTC\n * representation with the local date and time.\n * @param dtf Intl.DateTimeFormat object, containing the desired string format. It must have\n * timeZone set to 'utc' to work fine.\n * @param date Date from which we want to get the string representation according to dtf\n * @returns A Date object with its UTC representation based on the passed in date info\n */\n private _format(dtf: Intl.DateTimeFormat, date: Date) {\n // Passing the year to the constructor causes year numbers <100 to be converted to 19xx.\n // To work around this we use `setUTCFullYear` and `setUTCHours` instead.\n const d = new Date();\n d.setUTCFullYear(date.getFullYear(), date.getMonth(), date.getDate());\n d.setUTCHours(date.getHours(), date.getMinutes(), date.getSeconds(), date.getMilliseconds());\n return dtf.format(d);\n }\n\n /**\n * Attempts to parse a time string into a date object. Returns null if it cannot be parsed.\n * @param value Time string to parse.\n */\n private _parseTimeString(value: string): Date | null {\n // Note: we can technically rely on the browser for the time parsing by generating\n // an ISO string and appending the string to the end of it. We don't do it, because\n // browsers aren't consistent in what they support. Some examples:\n // - Safari doesn't support AM/PM.\n // - Firefox produces a valid date object if the time string has overflows (e.g. 12:75) while\n // other browsers produce an invalid date.\n // - Safari doesn't allow padded numbers.\n const parsed = value.toUpperCase().match(TIME_REGEX);\n\n if (parsed) {\n let hours = parseInt(parsed[1]);\n const minutes = parseInt(parsed[2]);\n let seconds: number | undefined = parsed[3] == null ? undefined : parseInt(parsed[3]);\n const amPm = parsed[4] as 'AM' | 'PM' | undefined;\n\n if (hours === 12) {\n hours = amPm === 'AM' ? 0 : hours;\n } else if (amPm === 'PM') {\n hours += 12;\n }\n\n if (\n inRange(hours, 0, 23) &&\n inRange(minutes, 0, 59) &&\n (seconds == null || inRange(seconds, 0, 59))\n ) {\n return this.setTime(this.today(), hours, minutes, seconds || 0);\n }\n }\n\n return null;\n }\n}\n\n/** Checks whether a number is within a certain range. */\nfunction inRange(value: number, min: number, max: number): boolean {\n return !isNaN(value) && value >= min && value <= max;\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 {MatDateFormats} from './date-formats';\n\nexport const MAT_NATIVE_DATE_FORMATS: MatDateFormats = {\n parse: {\n dateInput: null,\n timeInput: null,\n },\n display: {\n dateInput: {year: 'numeric', month: 'numeric', day: 'numeric'},\n timeInput: {hour: 'numeric', minute: 'numeric'},\n monthYearLabel: {year: 'numeric', month: 'short'},\n dateA11yLabel: {year: 'numeric', month: 'long', day: 'numeric'},\n monthYearA11yLabel: {year: 'numeric', month: 'long'},\n timeOptionLabel: {hour: 'numeric', minute: 'numeric'},\n },\n};\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.dev/license\n */\n\nimport {NgModule, Provider} from '@angular/core';\nimport {DateAdapter} from './date-adapter';\nimport {MAT_DATE_FORMATS, MatDateFormats} from './date-formats';\nimport {NativeDateAdapter} from './native-date-adapter';\nimport {MAT_NATIVE_DATE_FORMATS} from './native-date-formats';\n\nexport * from './date-adapter';\nexport * from './date-formats';\nexport * from './native-date-adapter';\nexport * from './native-date-formats';\n\n@NgModule({\n providers: [{provide: DateAdapter, useClass: NativeDateAdapter}],\n})\nexport class NativeDateModule {}\n\n@NgModule({\n providers: [provideNativeDateAdapter()],\n})\nexport class MatNativeDateModule {}\n\nexport function provideNativeDateAdapter(\n formats: MatDateFormats = MAT_NATIVE_DATE_FORMATS,\n): Provider[] {\n return [\n {provide: DateAdapter, useClass: NativeDateAdapter},\n {provide: MAT_DATE_FORMATS, useValue: formats},\n ];\n}\n"],"names":["VERSION","Version","ISO_8601_REGEX","TIME_REGEX","range","length","valueFunction","valuesArray","Array","i","NativeDateAdapter","DateAdapter","_matDateLocale","inject","MAT_DATE_LOCALE","optional","constructor","matDateLocale","undefined","setLocale","getYear","date","getFullYear","getMonth","getDate","getDayOfWeek","getDay","getMonthNames","style","dtf","Intl","DateTimeFormat","locale","month","timeZone","_format","Date","getDateNames","day","getDayOfWeekNames","weekday","getYearName","year","getFirstDayOfWeek","Locale","firstDay","getWeekInfo","weekInfo","getNumDaysInMonth","_createDateWithOverflow","clone","getTime","createDate","ngDevMode","Error","result","today","parse","value","parseFormat","format","displayFormat","isValid","addCalendarYears","years","addCalendarMonths","months","newDate","addCalendarDays","days","toIso8601","getUTCFullYear","_2digit","getUTCMonth","getUTCDate","join","deserialize","test","isDateInstance","obj","isNaN","invalid","NaN","setTime","target","hours","minutes","seconds","inRange","setHours","getHours","getMinutes","getSeconds","parseTime","userValue","trim","_parseTimeString","withoutExtras","replace","addSeconds","amount","d","setFullYear","n","slice","setUTCFullYear","setUTCHours","getMilliseconds","parsed","toUpperCase","match","parseInt","amPm","deps","i0","ɵɵFactoryTarget","Injectable","decorators","min","max","MAT_NATIVE_DATE_FORMATS","dateInput","timeInput","display","hour","minute","monthYearLabel","dateA11yLabel","monthYearA11yLabel","timeOptionLabel","NativeDateModule","NgModule","providers","provide","useClass","args","MatNativeDateModule","ɵinj","ɵɵngDeclareInjector","minVersion","version","ngImport","type","provideNativeDateAdapter","formats","MAT_DATE_FORMATS","useValue"],"mappings":"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"}