@spartan-ng/brain 0.0.1-alpha.719 → 1.0.0
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.
- package/README.md +3 -3
- package/fesm2022/spartan-ng-brain-accordion.mjs +7 -58
- package/fesm2022/spartan-ng-brain-accordion.mjs.map +1 -1
- package/fesm2022/spartan-ng-brain-alert-dialog.mjs +1 -2
- package/fesm2022/spartan-ng-brain-alert-dialog.mjs.map +1 -1
- package/fesm2022/spartan-ng-brain-autocomplete.mjs +3 -1
- package/fesm2022/spartan-ng-brain-autocomplete.mjs.map +1 -1
- package/fesm2022/spartan-ng-brain-collapsible.mjs +8 -56
- package/fesm2022/spartan-ng-brain-collapsible.mjs.map +1 -1
- package/fesm2022/spartan-ng-brain-combobox.mjs +22 -6
- package/fesm2022/spartan-ng-brain-combobox.mjs.map +1 -1
- package/fesm2022/spartan-ng-brain-core.mjs +89 -16
- package/fesm2022/spartan-ng-brain-core.mjs.map +1 -1
- package/fesm2022/spartan-ng-brain-dialog.mjs +8 -7
- package/fesm2022/spartan-ng-brain-dialog.mjs.map +1 -1
- package/fesm2022/spartan-ng-brain-drawer.mjs +8 -8
- package/fesm2022/spartan-ng-brain-drawer.mjs.map +1 -1
- package/fesm2022/spartan-ng-brain-field.mjs +7 -2
- package/fesm2022/spartan-ng-brain-field.mjs.map +1 -1
- package/fesm2022/spartan-ng-brain-navigation-menu.mjs +124 -34
- package/fesm2022/spartan-ng-brain-navigation-menu.mjs.map +1 -1
- package/fesm2022/spartan-ng-brain-overlay.mjs +27 -14
- package/fesm2022/spartan-ng-brain-overlay.mjs.map +1 -1
- package/fesm2022/spartan-ng-brain-select.mjs +3 -1
- package/fesm2022/spartan-ng-brain-select.mjs.map +1 -1
- package/fesm2022/spartan-ng-brain-tooltip.mjs +97 -14
- package/fesm2022/spartan-ng-brain-tooltip.mjs.map +1 -1
- package/package.json +6 -2
- package/types/spartan-ng-brain-accordion.d.ts +4 -22
- package/types/spartan-ng-brain-autocomplete.d.ts +1 -0
- package/types/spartan-ng-brain-collapsible.d.ts +5 -22
- package/types/spartan-ng-brain-combobox.d.ts +11 -2
- package/types/spartan-ng-brain-core.d.ts +40 -9
- package/types/spartan-ng-brain-dialog.d.ts +1 -3
- package/types/spartan-ng-brain-drawer.d.ts +3 -3
- package/types/spartan-ng-brain-navigation-menu.d.ts +9 -2
- package/types/spartan-ng-brain-overlay.d.ts +4 -5
- package/types/spartan-ng-brain-select.d.ts +1 -0
- package/types/spartan-ng-brain-tooltip.d.ts +38 -4
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"spartan-ng-brain-tooltip.mjs","sources":["../../../../libs/brain/tooltip/src/lib/brn-tooltip-string-template-outlet.ts","../../../../libs/brain/tooltip/src/lib/brn-tooltip-content.ts","../../../../libs/brain/tooltip/src/lib/brn-tooltip-position.ts","../../../../libs/brain/tooltip/src/lib/brn-tooltip.token.ts","../../../../libs/brain/tooltip/src/lib/brn-tooltip.ts","../../../../libs/brain/tooltip/src/index.ts","../../../../libs/brain/tooltip/src/spartan-ng-brain-tooltip.ts"],"sourcesContent":["import {\n\tDirective,\n\teffect,\n\ttype EffectRef,\n\ttype EmbeddedViewRef,\n\tinject,\n\tinput,\n\ttype OnDestroy,\n\tTemplateRef,\n\tViewContainerRef,\n} from '@angular/core';\n\nexport function isTemplateRef<C = unknown>(value: unknown): value is TemplateRef<C> {\n\treturn value instanceof TemplateRef;\n}\n\nexport interface BrnTemplateOutletContext {\n\t$implicit: unknown;\n\t[key: string]: unknown;\n}\n\n@Directive({\n\tselector: '[brnTooltipStringTemplateOutlet]',\n\texportAs: 'brnTooltipStringTemplateOutlet',\n})\nexport class BrnTooltipStringTemplateOutlet<T = unknown> implements OnDestroy {\n\tprivate readonly _viewContainer = inject(ViewContainerRef);\n\tprivate readonly _templateRef = inject(TemplateRef<void>);\n\n\tprivate _embeddedViewRef: EmbeddedViewRef<BrnTemplateOutletContext> | null = null;\n\tprivate readonly _context = {} as BrnTemplateOutletContext;\n\n\tprivate _isFirstChange = true;\n\tprivate _lastOutletWasTemplate = false;\n\tprivate _lastTemplateRef: TemplateRef<void> | null = null;\n\tprivate _lastContext?: BrnTemplateOutletContext;\n\n\tpublic readonly brnTooltipStringTemplateOutletContext = input<BrnTemplateOutletContext | undefined>(undefined);\n\tpublic readonly brnTooltipStringTemplateOutlet = input.required<T | TemplateRef<void>>();\n\n\t_hasContextShapeChanged(context: BrnTemplateOutletContext | undefined): boolean {\n\t\tif (!context) {\n\t\t\treturn false;\n\t\t}\n\t\tconst prevCtxKeys = Object.keys(this._lastContext || {});\n\t\tconst currCtxKeys = Object.keys(context || {});\n\n\t\tif (prevCtxKeys.length === currCtxKeys.length) {\n\t\t\tfor (const propName of currCtxKeys) {\n\t\t\t\tif (!prevCtxKeys.includes(propName)) {\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn false;\n\t\t} else {\n\t\t\treturn true;\n\t\t}\n\t}\n\n\t_shouldViewBeRecreated(\n\t\tstringTemplateOutlet: TemplateRef<void> | T,\n\t\tstringTemplateOutletContext: BrnTemplateOutletContext | undefined,\n\t): boolean {\n\t\tconst isTemplate = isTemplateRef(stringTemplateOutlet);\n\n\t\tconst shouldOutletRecreate =\n\t\t\tthis._isFirstChange ||\n\t\t\tisTemplate !== this._lastOutletWasTemplate ||\n\t\t\t(isTemplate && stringTemplateOutlet !== this._lastTemplateRef);\n\n\t\tconst shouldContextRecreate = this._hasContextShapeChanged(stringTemplateOutletContext);\n\t\treturn shouldContextRecreate || shouldOutletRecreate;\n\t}\n\n\t_updateTrackingState(\n\t\tstringTemplateOutlet: TemplateRef<void> | T,\n\t\tstringTemplateOutletContext: BrnTemplateOutletContext | undefined,\n\t): void {\n\t\tconst isTemplate = isTemplateRef(stringTemplateOutlet);\n\t\tif (this._isFirstChange && !isTemplate) {\n\t\t\tthis._isFirstChange = false;\n\t\t}\n\n\t\tif (stringTemplateOutletContext !== undefined) {\n\t\t\tthis._lastContext = stringTemplateOutletContext;\n\t\t}\n\n\t\tthis._lastOutletWasTemplate = isTemplate;\n\t\tthis._lastTemplateRef = isTemplate ? stringTemplateOutlet : null;\n\t}\n\n\tprivate readonly _viewEffect: EffectRef = effect(() => {\n\t\tconst stringTemplateOutlet = this.brnTooltipStringTemplateOutlet();\n\t\tconst stringTemplateOutletContext = this.brnTooltipStringTemplateOutletContext();\n\n\t\tif (!this._isFirstChange && isTemplateRef(stringTemplateOutlet)) {\n\t\t\tthis._isFirstChange = true;\n\t\t}\n\n\t\tif (!isTemplateRef(stringTemplateOutlet)) {\n\t\t\tthis._context['$implicit'] = stringTemplateOutlet as T;\n\t\t}\n\n\t\tconst recreateView = this._shouldViewBeRecreated(stringTemplateOutlet, stringTemplateOutletContext);\n\t\tthis._updateTrackingState(stringTemplateOutlet, stringTemplateOutletContext);\n\n\t\tif (recreateView) {\n\t\t\tthis._recreateView(stringTemplateOutlet as TemplateRef<BrnTemplateOutletContext>, stringTemplateOutletContext);\n\t\t} else {\n\t\t\tthis._updateContext(stringTemplateOutlet, stringTemplateOutletContext);\n\t\t}\n\t});\n\n\tprivate _recreateView(\n\t\toutlet: TemplateRef<BrnTemplateOutletContext>,\n\t\tcontext: BrnTemplateOutletContext | undefined,\n\t): void {\n\t\tthis._viewContainer.clear();\n\t\tif (isTemplateRef(outlet)) {\n\t\t\tthis._embeddedViewRef = this._viewContainer.createEmbeddedView(outlet, context);\n\t\t} else {\n\t\t\tthis._embeddedViewRef = this._viewContainer.createEmbeddedView(this._templateRef, this._context);\n\t\t}\n\t}\n\n\tprivate _updateContext(outlet: TemplateRef<void> | T, context: BrnTemplateOutletContext | undefined): void {\n\t\tconst newCtx = isTemplateRef(outlet) ? context : this._context;\n\t\tlet oldCtx = this._embeddedViewRef?.context;\n\n\t\tif (!oldCtx) {\n\t\t\toldCtx = newCtx;\n\t\t} else if (newCtx && typeof newCtx === 'object') {\n\t\t\tfor (const propName of Object.keys(newCtx)) {\n\t\t\t\toldCtx[propName] = newCtx[propName];\n\t\t\t}\n\t\t}\n\t\tthis._lastContext = oldCtx;\n\t}\n\n\tstatic ngTemplateContextGuard<T>(\n\t\t_dir: BrnTooltipStringTemplateOutlet<T>,\n\t\t_ctx: unknown,\n\t): _ctx is BrnTemplateOutletContext {\n\t\treturn true;\n\t}\n\n\tpublic ngOnDestroy(): void {\n\t\tthis._viewEffect.destroy();\n\t\tthis._viewContainer.clear();\n\t\tthis._embeddedViewRef = null;\n\t}\n}\n","import { ChangeDetectionStrategy, Component, input, signal } from '@angular/core';\nimport { ClassValue } from 'clsx';\nimport { BrnTooltipPosition } from './brn-tooltip-position';\nimport { BrnTooltipStringTemplateOutlet } from './brn-tooltip-string-template-outlet';\nimport { BrnTooltipType } from './brn-tooltip-type';\n\nlet uniqueId = 0;\n\n@Component({\n\timports: [BrnTooltipStringTemplateOutlet],\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n\thost: {\n\t\t'[class]': '_tooltipClass()',\n\t\t'[attr.id]': 'id()',\n\t\t'[attr.data-side]': '_position()',\n\t\t'[attr.data-state]': 'state()',\n\t\trole: 'tooltip',\n\t},\n\ttemplate: `\n\t\t<ng-container *brnTooltipStringTemplateOutlet=\"_tooltipText()\">{{ _tooltipText() }}</ng-container>\n\n\t\t<span [class]=\"_arrowClass()\">\n\t\t\t<svg [class]=\"_svgClass()\" width=\"10\" height=\"5\" viewBox=\"0 0 30 10\" preserveAspectRatio=\"none\">\n\t\t\t\t<polygon points=\"0,0 30,0 15,10\" />\n\t\t\t</svg>\n\t\t</span>\n\t`,\n})\nexport class BrnTooltipContent {\n\tpublic readonly id = input<string>(`brn-tooltip-${++uniqueId}`);\n\tpublic readonly state = signal<'closed' | 'opened'>('closed');\n\n\tprotected readonly _tooltipClass = signal<ClassValue>('');\n\tprotected readonly _arrowClass = signal<ClassValue>('');\n\tprotected readonly _svgClass = signal<ClassValue>('');\n\n\tprotected readonly _position = signal<BrnTooltipPosition>('top');\n\tprotected readonly _tooltipText = signal<BrnTooltipType>(null);\n\n\tpublic setProps(\n\t\ttooltipText: BrnTooltipType,\n\t\tposition: BrnTooltipPosition,\n\t\ttooltipClasses: ClassValue,\n\t\tarrowClasses: ClassValue,\n\t\tsvgClasses: ClassValue,\n\t): void {\n\t\tif (tooltipText) {\n\t\t\tthis._tooltipText.set(tooltipText);\n\t\t}\n\t\tthis._position.set(position);\n\n\t\tthis._tooltipClass.set(tooltipClasses);\n\t\tthis._arrowClass.set(arrowClasses);\n\t\tthis._svgClass.set(svgClasses);\n\t}\n}\n","import type { ConnectedPosition } from '@angular/cdk/overlay';\n\nexport type BrnTooltipPosition = 'top' | 'bottom' | 'left' | 'right';\n\nexport const BRN_TOOLTIP_POSITIONS_MAP: Record<BrnTooltipPosition, ConnectedPosition> = {\n\ttop: {\n\t\toriginX: 'center',\n\t\toriginY: 'top',\n\t\toverlayX: 'center',\n\t\toverlayY: 'bottom',\n\t\toffsetY: -8,\n\t},\n\tbottom: {\n\t\toriginX: 'center',\n\t\toriginY: 'bottom',\n\t\toverlayX: 'center',\n\t\toverlayY: 'top',\n\t\toffsetY: 8,\n\t},\n\tleft: {\n\t\toriginX: 'start',\n\t\toriginY: 'center',\n\t\toverlayX: 'end',\n\t\toverlayY: 'center',\n\t\toffsetX: -8,\n\t},\n\tright: {\n\t\toriginX: 'end',\n\t\toriginY: 'center',\n\t\toverlayX: 'start',\n\t\toverlayY: 'center',\n\t\toffsetX: 8,\n\t},\n};\n\n/** Fallback order for each preferred position when it doesn't fit in the viewport. */\nexport const BRN_TOOLTIP_FALLBACK_POSITIONS: Record<BrnTooltipPosition, BrnTooltipPosition[]> = {\n\ttop: ['bottom', 'right', 'left'],\n\tbottom: ['top', 'right', 'left'],\n\tleft: ['right', 'top', 'bottom'],\n\tright: ['left', 'top', 'bottom'],\n};\n\n/** Map a resolved CDK ConnectedPosition back to a BrnTooltipPosition, or null if no match. */\nexport function resolveTooltipPosition(pair: ConnectedPosition): BrnTooltipPosition | null {\n\tfor (const [pos, config] of Object.entries(BRN_TOOLTIP_POSITIONS_MAP)) {\n\t\tif (\n\t\t\tpair.originX === config.originX &&\n\t\t\tpair.originY === config.originY &&\n\t\t\tpair.overlayX === config.overlayX &&\n\t\t\tpair.overlayY === config.overlayY\n\t\t) {\n\t\t\treturn pos as BrnTooltipPosition;\n\t\t}\n\t}\n\treturn null;\n}\n","import { inject, InjectionToken, type ValueProvider } from '@angular/core';\nimport { type ClassValue } from 'clsx';\nimport { type BrnTooltipPosition } from './brn-tooltip-position';\n\nexport interface BrnTooltipOptions {\n\t/** Default delay when the tooltip is shown. */\n\tshowDelay: number;\n\t/** Default delay when the tooltip is hidden. */\n\thideDelay: number;\n\t/** Default position for tooltips. */\n\tposition?: BrnTooltipPosition;\n\t/** Additional classes for the SVG element in the tooltip arrow. */\n\tsvgClasses: ClassValue;\n\t/** Additional classes for the tooltip arrow element based on position. */\n\tarrowClasses: (position: BrnTooltipPosition) => ClassValue;\n\t/** Additional classes for the tooltip content element. */\n\ttooltipContentClasses: ClassValue;\n}\n\nexport const defaultOptions: BrnTooltipOptions = {\n\tshowDelay: 150,\n\thideDelay: 100,\n\tsvgClasses: '',\n\tarrowClasses: () => '',\n\ttooltipContentClasses: '',\n};\n\nconst BRN_TOOLTIP_DEFAULT_OPTIONS = new InjectionToken<BrnTooltipOptions>('brn-tooltip-default-options', {\n\tprovidedIn: 'root',\n\tfactory: () => defaultOptions,\n});\n\nexport function provideBrnTooltipDefaultOptions(options: Partial<BrnTooltipOptions>): ValueProvider {\n\treturn { provide: BRN_TOOLTIP_DEFAULT_OPTIONS, useValue: { ...defaultOptions, ...options } };\n}\n\nexport function injectBrnTooltipDefaultOptions(): BrnTooltipOptions {\n\treturn inject(BRN_TOOLTIP_DEFAULT_OPTIONS, { optional: true }) ?? defaultOptions;\n}\n","import {\n\tConnectedPosition,\n\tFlexibleConnectedPositionStrategy,\n\tOverlay,\n\tOverlayPositionBuilder,\n\ttype OverlayRef,\n} from '@angular/cdk/overlay';\nimport { ComponentPortal } from '@angular/cdk/portal';\nimport { DOCUMENT } from '@angular/common';\nimport {\n\tafterNextRender,\n\tbooleanAttribute,\n\ttype ComponentRef,\n\tcomputed,\n\tDestroyRef,\n\tDirective,\n\teffect,\n\tElementRef,\n\tinject,\n\tInjector,\n\tinput,\n\tlinkedSignal,\n\tnumberAttribute,\n\toutput,\n\tRenderer2,\n\trunInInjectionContext,\n\ttype TemplateRef,\n} from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\n\nimport { Directionality } from '@angular/cdk/bidi';\nimport { of, Subject, Subscription, timer } from 'rxjs';\nimport { map, switchMap } from 'rxjs/operators';\nimport { BrnTooltipContent } from './brn-tooltip-content';\nimport {\n\tBRN_TOOLTIP_FALLBACK_POSITIONS,\n\tBRN_TOOLTIP_POSITIONS_MAP,\n\tBrnTooltipPosition,\n\tresolveTooltipPosition,\n} from './brn-tooltip-position';\nimport { BrnTooltipType } from './brn-tooltip-type';\nimport { injectBrnTooltipDefaultOptions } from './brn-tooltip.token';\n\ninterface DelayConfig {\n\tisShow: boolean;\n\tdelay: number;\n}\n\n@Directive({ selector: '[brnTooltip]', exportAs: 'brnTooltip' })\nexport class BrnTooltip {\n\tprivate readonly _config = injectBrnTooltipDefaultOptions();\n\n\tprivate readonly _destroyRef = inject(DestroyRef);\n\tprivate readonly _document = inject(DOCUMENT);\n\tprivate readonly _elementRef = inject(ElementRef<HTMLElement>);\n\tprivate readonly _injector = inject(Injector);\n\tprivate readonly _overlay = inject(Overlay);\n\tprivate readonly _overlayPositionBuilder = inject(OverlayPositionBuilder);\n\tprivate readonly _renderer = inject(Renderer2);\n\tprivate readonly _dir = inject(Directionality);\n\n\tprivate _tooltipHovered = false;\n\tprivate _listenersRefs: (() => void)[] = [];\n\tprivate _delaySubject: Subject<DelayConfig> | undefined = undefined;\n\tprivate _componentRef: ComponentRef<BrnTooltipContent> | undefined = undefined;\n\tprivate _overlayRef: OverlayRef | undefined = undefined;\n\tprivate _ariaEffectRef: ReturnType<typeof effect> | undefined = undefined;\n\tprivate _positionChangeSub: Subscription | undefined = undefined;\n\n\tpublic readonly tooltipDisabled = input<boolean, boolean>(false, { transform: booleanAttribute });\n\tpublic readonly mutableTooltipDisabled = linkedSignal(this.tooltipDisabled);\n\n\tpublic readonly position = input<BrnTooltipPosition>(this._config.position ?? 'top');\n\tpublic readonly brnTooltip = input<BrnTooltipType>(null);\n\tpublic readonly showDelay = input<number, number>(this._config.showDelay, { transform: numberAttribute });\n\tpublic readonly hideDelay = input<number, number>(this._config.hideDelay, { transform: numberAttribute });\n\n\tpublic readonly show = output<void>();\n\tpublic readonly hide = output<void>();\n\n\tprivate readonly _tooltipText = computed<string | TemplateRef<void>>(() => {\n\t\tlet tooltipText = this.brnTooltip();\n\t\tif (!tooltipText) {\n\t\t\treturn '';\n\t\t} else if (typeof tooltipText === 'string') {\n\t\t\ttooltipText = tooltipText.trim();\n\t\t}\n\t\treturn tooltipText;\n\t});\n\n\tconstructor() {\n\t\tafterNextRender(() => {\n\t\t\tthis._overlayRef = this._overlay.create({\n\t\t\t\tdirection: this._dir,\n\t\t\t\tpositionStrategy: this._buildPositionStrategy(),\n\t\t\t});\n\n\t\t\tthis._dir.change.pipe(takeUntilDestroyed(this._destroyRef)).subscribe(() => {\n\t\t\t\tif (this._overlayRef) {\n\t\t\t\t\tthis._updatePosition();\n\t\t\t\t\tif (this._overlayRef.hasAttached()) {\n\t\t\t\t\t\tthis._overlayRef.updatePosition();\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t});\n\n\t\t\trunInInjectionContext(this._injector, () => {\n\t\t\t\tif (!this._overlayRef) return;\n\t\t\t\tthis._setupDelayMechanism();\n\t\t\t\tthis._cleanupTriggerEvents();\n\t\t\t\tthis._initTriggers();\n\t\t\t\tthis._listenersRefs = [\n\t\t\t\t\t...this._listenersRefs,\n\t\t\t\t\tthis._renderer.listen(this._overlayRef.hostElement, 'mouseenter', () => (this._tooltipHovered = true)),\n\t\t\t\t\tthis._renderer.listen(this._overlayRef.hostElement, 'mouseleave', () => {\n\t\t\t\t\t\tthis._tooltipHovered = false;\n\t\t\t\t\t\tthis.delay(false, this.hideDelay());\n\t\t\t\t\t}),\n\t\t\t\t];\n\t\t\t});\n\t\t});\n\n\t\tthis._destroyRef.onDestroy(() => {\n\t\t\tthis._clearAriaDescribedBy();\n\t\t\tthis._delaySubject?.complete();\n\t\t\tthis._cleanupTriggerEvents();\n\t\t\tthis._overlayRef?.dispose();\n\t\t});\n\t}\n\n\tprivate _updatePosition(): void {\n\t\tconst strategy = this._overlayRef?.getConfig().positionStrategy as FlexibleConnectedPositionStrategy;\n\n\t\tif (strategy) {\n\t\t\tstrategy.withPositions(this._getAllPositions());\n\t\t}\n\t}\n\n\tprivate _buildPositionStrategy() {\n\t\treturn this._overlayPositionBuilder\n\t\t\t.flexibleConnectedTo(this._elementRef)\n\t\t\t.withPositions(this._getAllPositions())\n\t\t\t.withViewportMargin(8);\n\t}\n\n\t/** Build [preferred, ...fallbacks] position array for viewport-aware auto-flip. */\n\tprivate _getAllPositions(): ConnectedPosition[] {\n\t\tconst preferred = this.position();\n\t\treturn [preferred, ...BRN_TOOLTIP_FALLBACK_POSITIONS[preferred]].map((pos) => this._getAdjustedPositionFor(pos));\n\t}\n\n\tprivate _getAdjustedPositionFor(pos: BrnTooltipPosition): ConnectedPosition {\n\t\tconst position = BRN_TOOLTIP_POSITIONS_MAP[pos];\n\t\tconst isLtr = this._dir.value !== 'rtl';\n\n\t\treturn {\n\t\t\t...position,\n\t\t\toffsetX: position.offsetX != null ? (isLtr ? position.offsetX : -position.offsetX) : undefined,\n\t\t};\n\t}\n\n\tprivate _initTriggers() {\n\t\tthis._initScrollListener();\n\t\tthis._initHoverListeners();\n\t}\n\n\tprivate _initHoverListeners(): void {\n\t\tthis._listenersRefs = [\n\t\t\t...this._listenersRefs,\n\t\t\tthis._renderer.listen(this._elementRef.nativeElement, 'mouseenter', () => this.delay(true, this.showDelay())),\n\t\t\tthis._renderer.listen(this._elementRef.nativeElement, 'mouseleave', () => this.delay(false, this.hideDelay())),\n\t\t\tthis._renderer.listen(this._elementRef.nativeElement, 'focus', () => this.delay(true, this.showDelay())),\n\t\t\tthis._renderer.listen(this._elementRef.nativeElement, 'blur', () => this.delay(false, this.hideDelay())),\n\t\t];\n\t}\n\n\tprivate _initScrollListener(): void {\n\t\tthis._listenersRefs = [\n\t\t\t...this._listenersRefs,\n\t\t\tthis._renderer.listen(this._document.defaultView, 'scroll', () => this._hide()),\n\t\t];\n\t}\n\n\tprivate _cleanupTriggerEvents(): void {\n\t\tfor (const eventRef of this._listenersRefs) {\n\t\t\teventRef();\n\t\t}\n\t\tthis._listenersRefs = [];\n\t}\n\n\tprivate delay(isShow: boolean, delay = -1): void {\n\t\tthis._delaySubject?.next({ isShow, delay });\n\t}\n\n\tprivate _setupDelayMechanism(): void {\n\t\tthis._delaySubject?.complete();\n\t\tthis._delaySubject = new Subject<DelayConfig>();\n\n\t\tthis._delaySubject\n\t\t\t.pipe(\n\t\t\t\tswitchMap((config) => (config.delay < 0 ? of(config) : timer(config.delay).pipe(map(() => config)))),\n\t\t\t\ttakeUntilDestroyed(this._destroyRef),\n\t\t\t)\n\t\t\t.subscribe((config) => {\n\t\t\t\tif (config.isShow) {\n\t\t\t\t\tthis._show();\n\t\t\t\t} else {\n\t\t\t\t\tthis._hide();\n\t\t\t\t}\n\t\t\t});\n\t}\n\n\tprivate _show(): void {\n\t\tif (this._componentRef || !this._tooltipText() || this.mutableTooltipDisabled()) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst tooltipPortal = new ComponentPortal(BrnTooltipContent);\n\t\tthis._componentRef = this._overlayRef?.attach(tooltipPortal);\n\t\tthis._componentRef?.onDestroy(() => {\n\t\t\tthis._componentRef = undefined;\n\t\t});\n\t\tthis._componentRef?.instance.state.set('opened');\n\t\tthis._componentRef?.instance.setProps(\n\t\t\tthis._tooltipText(),\n\t\t\tthis.position(),\n\t\t\tthis._config.tooltipContentClasses,\n\t\t\tthis._config.arrowClasses(this.position()),\n\t\t\tthis._config.svgClasses,\n\t\t);\n\n\t\t// Subscribe to position changes for the lifetime of the tooltip so that\n\t\t// arrow direction and CSS classes stay in sync when the CDK flips the\n\t\t// overlay (initial show, viewport resize, scroll, etc.).\n\t\tconst strategy = this._overlayRef?.getConfig().positionStrategy as FlexibleConnectedPositionStrategy | undefined;\n\t\tif (strategy && this._componentRef) {\n\t\t\tconst compRef = this._componentRef;\n\t\t\tthis._positionChangeSub = strategy.positionChanges\n\t\t\t\t.pipe(takeUntilDestroyed(this._destroyRef))\n\t\t\t\t.subscribe((change) => {\n\t\t\t\t\tconst resolved = resolveTooltipPosition(change.connectionPair);\n\t\t\t\t\tif (resolved) {\n\t\t\t\t\t\tcompRef.instance.setProps(\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tresolved,\n\t\t\t\t\t\t\tthis._config.tooltipContentClasses,\n\t\t\t\t\t\t\tthis._config.arrowClasses(resolved),\n\t\t\t\t\t\t\tthis._config.svgClasses,\n\t\t\t\t\t\t);\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t}\n\n\t\trunInInjectionContext(this._injector, () => {\n\t\t\tthis._ariaEffectRef = effect(() => {\n\t\t\t\tconst tooltipId = this._componentRef?.instance.id();\n\t\t\t\tif (tooltipId) {\n\t\t\t\t\tthis._renderer.setAttribute(this._elementRef.nativeElement, 'aria-describedby', tooltipId);\n\t\t\t\t\tthis._ariaEffectRef?.destroy();\n\t\t\t\t\tthis._ariaEffectRef = undefined;\n\t\t\t\t}\n\t\t\t});\n\t\t});\n\t\tthis.show.emit();\n\t}\n\n\tprivate _hide(): void {\n\t\tif (!this._componentRef || this._tooltipHovered) return;\n\t\tthis._clearAriaDescribedBy();\n\t\tthis._positionChangeSub?.unsubscribe();\n\t\tthis._positionChangeSub = undefined;\n\n\t\tthis._renderer.removeAttribute(this._elementRef.nativeElement, 'aria-describedby');\n\t\tthis._componentRef.instance.state.set('closed');\n\t\tthis.hide.emit();\n\t\tthis._overlayRef?.detach();\n\t}\n\n\tprivate _clearAriaDescribedBy(): void {\n\t\tif (this._ariaEffectRef) {\n\t\t\tthis._ariaEffectRef.destroy();\n\t\t\tthis._ariaEffectRef = undefined;\n\t\t}\n\t}\n}\n","import { BrnTooltip } from './lib/brn-tooltip';\nimport { BrnTooltipContent } from './lib/brn-tooltip-content';\n\nexport * from './lib/brn-tooltip';\nexport * from './lib/brn-tooltip-content';\nexport { BRN_TOOLTIP_FALLBACK_POSITIONS, BrnTooltipPosition, resolveTooltipPosition } from './lib/brn-tooltip-position';\nexport * from './lib/brn-tooltip-type';\nexport * from './lib/brn-tooltip.token';\n\nexport const BrnTooltipImports = [BrnTooltip, BrnTooltipContent] as const;\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;;;;;;;;;AAYM,SAAU,aAAa,CAAc,KAAc,EAAA;IACxD,OAAO,KAAK,YAAY,WAAW;AACpC;MAWa,8BAA8B,CAAA;AACzB,IAAA,cAAc,GAAG,MAAM,CAAC,gBAAgB,CAAC;AACzC,IAAA,YAAY,GAAG,MAAM,EAAC,WAAiB,EAAC;IAEjD,gBAAgB,GAAqD,IAAI;IAChE,QAAQ,GAAG,EAA8B;IAElD,cAAc,GAAG,IAAI;IACrB,sBAAsB,GAAG,KAAK;IAC9B,gBAAgB,GAA6B,IAAI;AACjD,IAAA,YAAY;AAEJ,IAAA,qCAAqC,GAAG,KAAK,CAAuC,SAAS,4GAAC;AAC9F,IAAA,8BAA8B,GAAG,KAAK,CAAC,QAAQ,oGAAyB;AAExF,IAAA,uBAAuB,CAAC,OAA6C,EAAA;QACpE,IAAI,CAAC,OAAO,EAAE;AACb,YAAA,OAAO,KAAK;QACb;AACA,QAAA,MAAM,WAAW,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,YAAY,IAAI,EAAE,CAAC;QACxD,MAAM,WAAW,GAAG,MAAM,CAAC,IAAI,CAAC,OAAO,IAAI,EAAE,CAAC;QAE9C,IAAI,WAAW,CAAC,MAAM,KAAK,WAAW,CAAC,MAAM,EAAE;AAC9C,YAAA,KAAK,MAAM,QAAQ,IAAI,WAAW,EAAE;gBACnC,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE;AACpC,oBAAA,OAAO,IAAI;gBACZ;YACD;AACA,YAAA,OAAO,KAAK;QACb;aAAO;AACN,YAAA,OAAO,IAAI;QACZ;IACD;IAEA,sBAAsB,CACrB,oBAA2C,EAC3C,2BAAiE,EAAA;AAEjE,QAAA,MAAM,UAAU,GAAG,aAAa,CAAC,oBAAoB,CAAC;AAEtD,QAAA,MAAM,oBAAoB,GACzB,IAAI,CAAC,cAAc;YACnB,UAAU,KAAK,IAAI,CAAC,sBAAsB;aACzC,UAAU,IAAI,oBAAoB,KAAK,IAAI,CAAC,gBAAgB,CAAC;QAE/D,MAAM,qBAAqB,GAAG,IAAI,CAAC,uBAAuB,CAAC,2BAA2B,CAAC;QACvF,OAAO,qBAAqB,IAAI,oBAAoB;IACrD;IAEA,oBAAoB,CACnB,oBAA2C,EAC3C,2BAAiE,EAAA;AAEjE,QAAA,MAAM,UAAU,GAAG,aAAa,CAAC,oBAAoB,CAAC;AACtD,QAAA,IAAI,IAAI,CAAC,cAAc,IAAI,CAAC,UAAU,EAAE;AACvC,YAAA,IAAI,CAAC,cAAc,GAAG,KAAK;QAC5B;AAEA,QAAA,IAAI,2BAA2B,KAAK,SAAS,EAAE;AAC9C,YAAA,IAAI,CAAC,YAAY,GAAG,2BAA2B;QAChD;AAEA,QAAA,IAAI,CAAC,sBAAsB,GAAG,UAAU;AACxC,QAAA,IAAI,CAAC,gBAAgB,GAAG,UAAU,GAAG,oBAAoB,GAAG,IAAI;IACjE;AAEiB,IAAA,WAAW,GAAc,MAAM,CAAC,MAAK;AACrD,QAAA,MAAM,oBAAoB,GAAG,IAAI,CAAC,8BAA8B,EAAE;AAClE,QAAA,MAAM,2BAA2B,GAAG,IAAI,CAAC,qCAAqC,EAAE;QAEhF,IAAI,CAAC,IAAI,CAAC,cAAc,IAAI,aAAa,CAAC,oBAAoB,CAAC,EAAE;AAChE,YAAA,IAAI,CAAC,cAAc,GAAG,IAAI;QAC3B;AAEA,QAAA,IAAI,CAAC,aAAa,CAAC,oBAAoB,CAAC,EAAE;AACzC,YAAA,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,GAAG,oBAAyB;QACvD;QAEA,MAAM,YAAY,GAAG,IAAI,CAAC,sBAAsB,CAAC,oBAAoB,EAAE,2BAA2B,CAAC;AACnG,QAAA,IAAI,CAAC,oBAAoB,CAAC,oBAAoB,EAAE,2BAA2B,CAAC;QAE5E,IAAI,YAAY,EAAE;AACjB,YAAA,IAAI,CAAC,aAAa,CAAC,oBAA6D,EAAE,2BAA2B,CAAC;QAC/G;aAAO;AACN,YAAA,IAAI,CAAC,cAAc,CAAC,oBAAoB,EAAE,2BAA2B,CAAC;QACvE;AACD,IAAA,CAAC,kFAAC;IAEM,aAAa,CACpB,MAA6C,EAC7C,OAA6C,EAAA;AAE7C,QAAA,IAAI,CAAC,cAAc,CAAC,KAAK,EAAE;AAC3B,QAAA,IAAI,aAAa,CAAC,MAAM,CAAC,EAAE;AAC1B,YAAA,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC,cAAc,CAAC,kBAAkB,CAAC,MAAM,EAAE,OAAO,CAAC;QAChF;aAAO;AACN,YAAA,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC,cAAc,CAAC,kBAAkB,CAAC,IAAI,CAAC,YAAY,EAAE,IAAI,CAAC,QAAQ,CAAC;QACjG;IACD;IAEQ,cAAc,CAAC,MAA6B,EAAE,OAA6C,EAAA;AAClG,QAAA,MAAM,MAAM,GAAG,aAAa,CAAC,MAAM,CAAC,GAAG,OAAO,GAAG,IAAI,CAAC,QAAQ;AAC9D,QAAA,IAAI,MAAM,GAAG,IAAI,CAAC,gBAAgB,EAAE,OAAO;QAE3C,IAAI,CAAC,MAAM,EAAE;YACZ,MAAM,GAAG,MAAM;QAChB;AAAO,aAAA,IAAI,MAAM,IAAI,OAAO,MAAM,KAAK,QAAQ,EAAE;YAChD,KAAK,MAAM,QAAQ,IAAI,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE;gBAC3C,MAAM,CAAC,QAAQ,CAAC,GAAG,MAAM,CAAC,QAAQ,CAAC;YACpC;QACD;AACA,QAAA,IAAI,CAAC,YAAY,GAAG,MAAM;IAC3B;AAEA,IAAA,OAAO,sBAAsB,CAC5B,IAAuC,EACvC,IAAa,EAAA;AAEb,QAAA,OAAO,IAAI;IACZ;IAEO,WAAW,GAAA;AACjB,QAAA,IAAI,CAAC,WAAW,CAAC,OAAO,EAAE;AAC1B,QAAA,IAAI,CAAC,cAAc,CAAC,KAAK,EAAE;AAC3B,QAAA,IAAI,CAAC,gBAAgB,GAAG,IAAI;IAC7B;2HA7HY,8BAA8B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;+GAA9B,8BAA8B,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,kCAAA,EAAA,MAAA,EAAA,EAAA,qCAAA,EAAA,EAAA,iBAAA,EAAA,uCAAA,EAAA,UAAA,EAAA,uCAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,8BAAA,EAAA,EAAA,iBAAA,EAAA,gCAAA,EAAA,UAAA,EAAA,gCAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,QAAA,EAAA,CAAA,gCAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA;;4FAA9B,8BAA8B,EAAA,UAAA,EAAA,CAAA;kBAJ1C,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,QAAQ,EAAE,kCAAkC;AAC5C,oBAAA,QAAQ,EAAE,gCAAgC;AAC1C,iBAAA;;;AClBD,IAAI,QAAQ,GAAG,CAAC;MAsBH,iBAAiB,CAAA;IACb,EAAE,GAAG,KAAK,CAAS,CAAA,YAAA,EAAe,EAAE,QAAQ,CAAA,CAAE,yEAAC;AAC/C,IAAA,KAAK,GAAG,MAAM,CAAsB,QAAQ,4EAAC;AAE1C,IAAA,aAAa,GAAG,MAAM,CAAa,EAAE,oFAAC;AACtC,IAAA,WAAW,GAAG,MAAM,CAAa,EAAE,kFAAC;AACpC,IAAA,SAAS,GAAG,MAAM,CAAa,EAAE,gFAAC;AAElC,IAAA,SAAS,GAAG,MAAM,CAAqB,KAAK,gFAAC;AAC7C,IAAA,YAAY,GAAG,MAAM,CAAiB,IAAI,mFAAC;IAEvD,QAAQ,CACd,WAA2B,EAC3B,QAA4B,EAC5B,cAA0B,EAC1B,YAAwB,EACxB,UAAsB,EAAA;QAEtB,IAAI,WAAW,EAAE;AAChB,YAAA,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,WAAW,CAAC;QACnC;AACA,QAAA,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC;AAE5B,QAAA,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,cAAc,CAAC;AACtC,QAAA,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,YAAY,CAAC;AAClC,QAAA,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,UAAU,CAAC;IAC/B;2HA1BY,iBAAiB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAjB,uBAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,iBAAiB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,EAAA,EAAA,EAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,MAAA,EAAA,SAAA,EAAA,EAAA,UAAA,EAAA,EAAA,OAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,MAAA,EAAA,gBAAA,EAAA,aAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAVnB;;;;;;;;AAQT,CAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAjBS,8BAA8B,EAAA,QAAA,EAAA,kCAAA,EAAA,MAAA,EAAA,CAAA,uCAAA,EAAA,gCAAA,CAAA,EAAA,QAAA,EAAA,CAAA,gCAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA;;4FAmB5B,iBAAiB,EAAA,UAAA,EAAA,CAAA;kBApB7B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;oBACV,OAAO,EAAE,CAAC,8BAA8B,CAAC;oBACzC,eAAe,EAAE,uBAAuB,CAAC,MAAM;AAC/C,oBAAA,IAAI,EAAE;AACL,wBAAA,SAAS,EAAE,iBAAiB;AAC5B,wBAAA,WAAW,EAAE,MAAM;AACnB,wBAAA,kBAAkB,EAAE,aAAa;AACjC,wBAAA,mBAAmB,EAAE,SAAS;AAC9B,wBAAA,IAAI,EAAE,SAAS;AACf,qBAAA;AACD,oBAAA,QAAQ,EAAE;;;;;;;;AAQT,CAAA,CAAA;AACD,iBAAA;;;ACvBM,MAAM,yBAAyB,GAAkD;AACvF,IAAA,GAAG,EAAE;AACJ,QAAA,OAAO,EAAE,QAAQ;AACjB,QAAA,OAAO,EAAE,KAAK;AACd,QAAA,QAAQ,EAAE,QAAQ;AAClB,QAAA,QAAQ,EAAE,QAAQ;QAClB,OAAO,EAAE,CAAC,CAAC;AACX,KAAA;AACD,IAAA,MAAM,EAAE;AACP,QAAA,OAAO,EAAE,QAAQ;AACjB,QAAA,OAAO,EAAE,QAAQ;AACjB,QAAA,QAAQ,EAAE,QAAQ;AAClB,QAAA,QAAQ,EAAE,KAAK;AACf,QAAA,OAAO,EAAE,CAAC;AACV,KAAA;AACD,IAAA,IAAI,EAAE;AACL,QAAA,OAAO,EAAE,OAAO;AAChB,QAAA,OAAO,EAAE,QAAQ;AACjB,QAAA,QAAQ,EAAE,KAAK;AACf,QAAA,QAAQ,EAAE,QAAQ;QAClB,OAAO,EAAE,CAAC,CAAC;AACX,KAAA;AACD,IAAA,KAAK,EAAE;AACN,QAAA,OAAO,EAAE,KAAK;AACd,QAAA,OAAO,EAAE,QAAQ;AACjB,QAAA,QAAQ,EAAE,OAAO;AACjB,QAAA,QAAQ,EAAE,QAAQ;AAClB,QAAA,OAAO,EAAE,CAAC;AACV,KAAA;CACD;AAED;AACO,MAAM,8BAA8B,GAAqD;AAC/F,IAAA,GAAG,EAAE,CAAC,QAAQ,EAAE,OAAO,EAAE,MAAM,CAAC;AAChC,IAAA,MAAM,EAAE,CAAC,KAAK,EAAE,OAAO,EAAE,MAAM,CAAC;AAChC,IAAA,IAAI,EAAE,CAAC,OAAO,EAAE,KAAK,EAAE,QAAQ,CAAC;AAChC,IAAA,KAAK,EAAE,CAAC,MAAM,EAAE,KAAK,EAAE,QAAQ,CAAC;;AAGjC;AACM,SAAU,sBAAsB,CAAC,IAAuB,EAAA;AAC7D,IAAA,KAAK,MAAM,CAAC,GAAG,EAAE,MAAM,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,yBAAyB,CAAC,EAAE;AACtE,QAAA,IACC,IAAI,CAAC,OAAO,KAAK,MAAM,CAAC,OAAO;AAC/B,YAAA,IAAI,CAAC,OAAO,KAAK,MAAM,CAAC,OAAO;AAC/B,YAAA,IAAI,CAAC,QAAQ,KAAK,MAAM,CAAC,QAAQ;AACjC,YAAA,IAAI,CAAC,QAAQ,KAAK,MAAM,CAAC,QAAQ,EAChC;AACD,YAAA,OAAO,GAAyB;QACjC;IACD;AACA,IAAA,OAAO,IAAI;AACZ;;ACrCO,MAAM,cAAc,GAAsB;AAChD,IAAA,SAAS,EAAE,GAAG;AACd,IAAA,SAAS,EAAE,GAAG;AACd,IAAA,UAAU,EAAE,EAAE;AACd,IAAA,YAAY,EAAE,MAAM,EAAE;AACtB,IAAA,qBAAqB,EAAE,EAAE;;AAG1B,MAAM,2BAA2B,GAAG,IAAI,cAAc,CAAoB,6BAA6B,EAAE;AACxG,IAAA,UAAU,EAAE,MAAM;AAClB,IAAA,OAAO,EAAE,MAAM,cAAc;AAC7B,CAAA,CAAC;AAEI,SAAU,+BAA+B,CAAC,OAAmC,EAAA;AAClF,IAAA,OAAO,EAAE,OAAO,EAAE,2BAA2B,EAAE,QAAQ,EAAE,EAAE,GAAG,cAAc,EAAE,GAAG,OAAO,EAAE,EAAE;AAC7F;SAEgB,8BAA8B,GAAA;AAC7C,IAAA,OAAO,MAAM,CAAC,2BAA2B,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,IAAI,cAAc;AACjF;;MCWa,UAAU,CAAA;IACL,OAAO,GAAG,8BAA8B,EAAE;AAE1C,IAAA,WAAW,GAAG,MAAM,CAAC,UAAU,CAAC;AAChC,IAAA,SAAS,GAAG,MAAM,CAAC,QAAQ,CAAC;AAC5B,IAAA,WAAW,GAAG,MAAM,EAAC,UAAuB,EAAC;AAC7C,IAAA,SAAS,GAAG,MAAM,CAAC,QAAQ,CAAC;AAC5B,IAAA,QAAQ,GAAG,MAAM,CAAC,OAAO,CAAC;AAC1B,IAAA,uBAAuB,GAAG,MAAM,CAAC,sBAAsB,CAAC;AACxD,IAAA,SAAS,GAAG,MAAM,CAAC,SAAS,CAAC;AAC7B,IAAA,IAAI,GAAG,MAAM,CAAC,cAAc,CAAC;IAEtC,eAAe,GAAG,KAAK;IACvB,cAAc,GAAmB,EAAE;IACnC,aAAa,GAAqC,SAAS;IAC3D,aAAa,GAAgD,SAAS;IACtE,WAAW,GAA2B,SAAS;IAC/C,cAAc,GAA0C,SAAS;IACjE,kBAAkB,GAA6B,SAAS;IAEhD,eAAe,GAAG,KAAK,CAAmB,KAAK,uFAAI,SAAS,EAAE,gBAAgB,EAAA,CAAG;AACjF,IAAA,sBAAsB,GAAG,YAAY,CAAC,IAAI,CAAC,eAAe,6FAAC;IAE3D,QAAQ,GAAG,KAAK,CAAqB,IAAI,CAAC,OAAO,CAAC,QAAQ,IAAI,KAAK,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,UAAA,EAAA,CAAA,8BAAA,EAAA,CAAA,CAAC;AACpE,IAAA,UAAU,GAAG,KAAK,CAAiB,IAAI,iFAAC;AACxC,IAAA,SAAS,GAAG,KAAK,CAAiB,IAAI,CAAC,OAAO,CAAC,SAAS,EAAA,EAAA,IAAA,SAAA,GAAA,EAAA,SAAA,EAAA,WAAA,EAAA,8BAAA,EAAA,CAAA,EAAI,SAAS,EAAE,eAAe,GAAG;AACzF,IAAA,SAAS,GAAG,KAAK,CAAiB,IAAI,CAAC,OAAO,CAAC,SAAS,EAAA,EAAA,IAAA,SAAA,GAAA,EAAA,SAAA,EAAA,WAAA,EAAA,8BAAA,EAAA,CAAA,EAAI,SAAS,EAAE,eAAe,GAAG;IAEzF,IAAI,GAAG,MAAM,EAAQ;IACrB,IAAI,GAAG,MAAM,EAAQ;AAEpB,IAAA,YAAY,GAAG,QAAQ,CAA6B,MAAK;AACzE,QAAA,IAAI,WAAW,GAAG,IAAI,CAAC,UAAU,EAAE;QACnC,IAAI,CAAC,WAAW,EAAE;AACjB,YAAA,OAAO,EAAE;QACV;AAAO,aAAA,IAAI,OAAO,WAAW,KAAK,QAAQ,EAAE;AAC3C,YAAA,WAAW,GAAG,WAAW,CAAC,IAAI,EAAE;QACjC;AACA,QAAA,OAAO,WAAW;AACnB,IAAA,CAAC,mFAAC;AAEF,IAAA,WAAA,GAAA;QACC,eAAe,CAAC,MAAK;YACpB,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC;gBACvC,SAAS,EAAE,IAAI,CAAC,IAAI;AACpB,gBAAA,gBAAgB,EAAE,IAAI,CAAC,sBAAsB,EAAE;AAC/C,aAAA,CAAC;AAEF,YAAA,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,SAAS,CAAC,MAAK;AAC1E,gBAAA,IAAI,IAAI,CAAC,WAAW,EAAE;oBACrB,IAAI,CAAC,eAAe,EAAE;AACtB,oBAAA,IAAI,IAAI,CAAC,WAAW,CAAC,WAAW,EAAE,EAAE;AACnC,wBAAA,IAAI,CAAC,WAAW,CAAC,cAAc,EAAE;oBAClC;gBACD;AACD,YAAA,CAAC,CAAC;AAEF,YAAA,qBAAqB,CAAC,IAAI,CAAC,SAAS,EAAE,MAAK;gBAC1C,IAAI,CAAC,IAAI,CAAC,WAAW;oBAAE;gBACvB,IAAI,CAAC,oBAAoB,EAAE;gBAC3B,IAAI,CAAC,qBAAqB,EAAE;gBAC5B,IAAI,CAAC,aAAa,EAAE;gBACpB,IAAI,CAAC,cAAc,GAAG;oBACrB,GAAG,IAAI,CAAC,cAAc;oBACtB,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,WAAW,EAAE,YAAY,EAAE,OAAO,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,CAAC;AACtG,oBAAA,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,WAAW,EAAE,YAAY,EAAE,MAAK;AACtE,wBAAA,IAAI,CAAC,eAAe,GAAG,KAAK;wBAC5B,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,IAAI,CAAC,SAAS,EAAE,CAAC;AACpC,oBAAA,CAAC,CAAC;iBACF;AACF,YAAA,CAAC,CAAC;AACH,QAAA,CAAC,CAAC;AAEF,QAAA,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC,MAAK;YAC/B,IAAI,CAAC,qBAAqB,EAAE;AAC5B,YAAA,IAAI,CAAC,aAAa,EAAE,QAAQ,EAAE;YAC9B,IAAI,CAAC,qBAAqB,EAAE;AAC5B,YAAA,IAAI,CAAC,WAAW,EAAE,OAAO,EAAE;AAC5B,QAAA,CAAC,CAAC;IACH;IAEQ,eAAe,GAAA;QACtB,MAAM,QAAQ,GAAG,IAAI,CAAC,WAAW,EAAE,SAAS,EAAE,CAAC,gBAAqD;QAEpG,IAAI,QAAQ,EAAE;YACb,QAAQ,CAAC,aAAa,CAAC,IAAI,CAAC,gBAAgB,EAAE,CAAC;QAChD;IACD;IAEQ,sBAAsB,GAAA;QAC7B,OAAO,IAAI,CAAC;AACV,aAAA,mBAAmB,CAAC,IAAI,CAAC,WAAW;AACpC,aAAA,aAAa,CAAC,IAAI,CAAC,gBAAgB,EAAE;aACrC,kBAAkB,CAAC,CAAC,CAAC;IACxB;;IAGQ,gBAAgB,GAAA;AACvB,QAAA,MAAM,SAAS,GAAG,IAAI,CAAC,QAAQ,EAAE;QACjC,OAAO,CAAC,SAAS,EAAE,GAAG,8BAA8B,CAAC,SAAS,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,KAAK,IAAI,CAAC,uBAAuB,CAAC,GAAG,CAAC,CAAC;IACjH;AAEQ,IAAA,uBAAuB,CAAC,GAAuB,EAAA;AACtD,QAAA,MAAM,QAAQ,GAAG,yBAAyB,CAAC,GAAG,CAAC;QAC/C,MAAM,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK,KAAK,KAAK;QAEvC,OAAO;AACN,YAAA,GAAG,QAAQ;AACX,YAAA,OAAO,EAAE,QAAQ,CAAC,OAAO,IAAI,IAAI,IAAI,KAAK,GAAG,QAAQ,CAAC,OAAO,GAAG,CAAC,QAAQ,CAAC,OAAO,IAAI,SAAS;SAC9F;IACF;IAEQ,aAAa,GAAA;QACpB,IAAI,CAAC,mBAAmB,EAAE;QAC1B,IAAI,CAAC,mBAAmB,EAAE;IAC3B;IAEQ,mBAAmB,GAAA;QAC1B,IAAI,CAAC,cAAc,GAAG;YACrB,GAAG,IAAI,CAAC,cAAc;YACtB,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,aAAa,EAAE,YAAY,EAAE,MAAM,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,IAAI,CAAC,SAAS,EAAE,CAAC,CAAC;YAC7G,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,aAAa,EAAE,YAAY,EAAE,MAAM,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,IAAI,CAAC,SAAS,EAAE,CAAC,CAAC;YAC9G,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,aAAa,EAAE,OAAO,EAAE,MAAM,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,IAAI,CAAC,SAAS,EAAE,CAAC,CAAC;YACxG,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,aAAa,EAAE,MAAM,EAAE,MAAM,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,IAAI,CAAC,SAAS,EAAE,CAAC,CAAC;SACxG;IACF;IAEQ,mBAAmB,GAAA;QAC1B,IAAI,CAAC,cAAc,GAAG;YACrB,GAAG,IAAI,CAAC,cAAc;YACtB,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,WAAW,EAAE,QAAQ,EAAE,MAAM,IAAI,CAAC,KAAK,EAAE,CAAC;SAC/E;IACF;IAEQ,qBAAqB,GAAA;AAC5B,QAAA,KAAK,MAAM,QAAQ,IAAI,IAAI,CAAC,cAAc,EAAE;AAC3C,YAAA,QAAQ,EAAE;QACX;AACA,QAAA,IAAI,CAAC,cAAc,GAAG,EAAE;IACzB;AAEQ,IAAA,KAAK,CAAC,MAAe,EAAE,KAAK,GAAG,CAAC,CAAC,EAAA;QACxC,IAAI,CAAC,aAAa,EAAE,IAAI,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC;IAC5C;IAEQ,oBAAoB,GAAA;AAC3B,QAAA,IAAI,CAAC,aAAa,EAAE,QAAQ,EAAE;AAC9B,QAAA,IAAI,CAAC,aAAa,GAAG,IAAI,OAAO,EAAe;AAE/C,QAAA,IAAI,CAAC;aACH,IAAI,CACJ,SAAS,CAAC,CAAC,MAAM,MAAM,MAAM,CAAC,KAAK,GAAG,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,GAAG,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,MAAM,CAAC,CAAC,CAAC,CAAC,EACpG,kBAAkB,CAAC,IAAI,CAAC,WAAW,CAAC;AAEpC,aAAA,SAAS,CAAC,CAAC,MAAM,KAAI;AACrB,YAAA,IAAI,MAAM,CAAC,MAAM,EAAE;gBAClB,IAAI,CAAC,KAAK,EAAE;YACb;iBAAO;gBACN,IAAI,CAAC,KAAK,EAAE;YACb;AACD,QAAA,CAAC,CAAC;IACJ;IAEQ,KAAK,GAAA;AACZ,QAAA,IAAI,IAAI,CAAC,aAAa,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,IAAI,IAAI,CAAC,sBAAsB,EAAE,EAAE;YAChF;QACD;AAEA,QAAA,MAAM,aAAa,GAAG,IAAI,eAAe,CAAC,iBAAiB,CAAC;QAC5D,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,WAAW,EAAE,MAAM,CAAC,aAAa,CAAC;AAC5D,QAAA,IAAI,CAAC,aAAa,EAAE,SAAS,CAAC,MAAK;AAClC,YAAA,IAAI,CAAC,aAAa,GAAG,SAAS;AAC/B,QAAA,CAAC,CAAC;QACF,IAAI,CAAC,aAAa,EAAE,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,QAAQ,CAAC;AAChD,QAAA,IAAI,CAAC,aAAa,EAAE,QAAQ,CAAC,QAAQ,CACpC,IAAI,CAAC,YAAY,EAAE,EACnB,IAAI,CAAC,QAAQ,EAAE,EACf,IAAI,CAAC,OAAO,CAAC,qBAAqB,EAClC,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,EAC1C,IAAI,CAAC,OAAO,CAAC,UAAU,CACvB;;;;QAKD,MAAM,QAAQ,GAAG,IAAI,CAAC,WAAW,EAAE,SAAS,EAAE,CAAC,gBAAiE;AAChH,QAAA,IAAI,QAAQ,IAAI,IAAI,CAAC,aAAa,EAAE;AACnC,YAAA,MAAM,OAAO,GAAG,IAAI,CAAC,aAAa;AAClC,YAAA,IAAI,CAAC,kBAAkB,GAAG,QAAQ,CAAC;AACjC,iBAAA,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,WAAW,CAAC;AACzC,iBAAA,SAAS,CAAC,CAAC,MAAM,KAAI;gBACrB,MAAM,QAAQ,GAAG,sBAAsB,CAAC,MAAM,CAAC,cAAc,CAAC;gBAC9D,IAAI,QAAQ,EAAE;AACb,oBAAA,OAAO,CAAC,QAAQ,CAAC,QAAQ,CACxB,IAAI,EACJ,QAAQ,EACR,IAAI,CAAC,OAAO,CAAC,qBAAqB,EAClC,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,QAAQ,CAAC,EACnC,IAAI,CAAC,OAAO,CAAC,UAAU,CACvB;gBACF;AACD,YAAA,CAAC,CAAC;QACJ;AAEA,QAAA,qBAAqB,CAAC,IAAI,CAAC,SAAS,EAAE,MAAK;AAC1C,YAAA,IAAI,CAAC,cAAc,GAAG,MAAM,CAAC,MAAK;gBACjC,MAAM,SAAS,GAAG,IAAI,CAAC,aAAa,EAAE,QAAQ,CAAC,EAAE,EAAE;gBACnD,IAAI,SAAS,EAAE;AACd,oBAAA,IAAI,CAAC,SAAS,CAAC,YAAY,CAAC,IAAI,CAAC,WAAW,CAAC,aAAa,EAAE,kBAAkB,EAAE,SAAS,CAAC;AAC1F,oBAAA,IAAI,CAAC,cAAc,EAAE,OAAO,EAAE;AAC9B,oBAAA,IAAI,CAAC,cAAc,GAAG,SAAS;gBAChC;AACD,YAAA,CAAC,qFAAC;AACH,QAAA,CAAC,CAAC;AACF,QAAA,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE;IACjB;IAEQ,KAAK,GAAA;AACZ,QAAA,IAAI,CAAC,IAAI,CAAC,aAAa,IAAI,IAAI,CAAC,eAAe;YAAE;QACjD,IAAI,CAAC,qBAAqB,EAAE;AAC5B,QAAA,IAAI,CAAC,kBAAkB,EAAE,WAAW,EAAE;AACtC,QAAA,IAAI,CAAC,kBAAkB,GAAG,SAAS;AAEnC,QAAA,IAAI,CAAC,SAAS,CAAC,eAAe,CAAC,IAAI,CAAC,WAAW,CAAC,aAAa,EAAE,kBAAkB,CAAC;QAClF,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,QAAQ,CAAC;AAC/C,QAAA,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE;AAChB,QAAA,IAAI,CAAC,WAAW,EAAE,MAAM,EAAE;IAC3B;IAEQ,qBAAqB,GAAA;AAC5B,QAAA,IAAI,IAAI,CAAC,cAAc,EAAE;AACxB,YAAA,IAAI,CAAC,cAAc,CAAC,OAAO,EAAE;AAC7B,YAAA,IAAI,CAAC,cAAc,GAAG,SAAS;QAChC;IACD;2HA1OY,UAAU,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;+GAAV,UAAU,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,EAAA,eAAA,EAAA,EAAA,iBAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,QAAA,EAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,iBAAA,EAAA,YAAA,EAAA,UAAA,EAAA,YAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,iBAAA,EAAA,WAAA,EAAA,UAAA,EAAA,WAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,iBAAA,EAAA,WAAA,EAAA,UAAA,EAAA,WAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,OAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,QAAA,EAAA,CAAA,YAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA;;4FAAV,UAAU,EAAA,UAAA,EAAA,CAAA;kBADtB,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA,EAAE,QAAQ,EAAE,cAAc,EAAE,QAAQ,EAAE,YAAY,EAAE;;;MCvClD,iBAAiB,GAAG,CAAC,UAAU,EAAE,iBAAiB;;ACT/D;;AAEG;;;;"}
|
|
1
|
+
{"version":3,"file":"spartan-ng-brain-tooltip.mjs","sources":["../../../../libs/brain/tooltip/src/lib/brn-tooltip-string-template-outlet.ts","../../../../libs/brain/tooltip/src/lib/brn-tooltip-content.ts","../../../../libs/brain/tooltip/src/lib/brn-tooltip-group.ts","../../../../libs/brain/tooltip/src/lib/brn-tooltip-position.ts","../../../../libs/brain/tooltip/src/lib/brn-tooltip.token.ts","../../../../libs/brain/tooltip/src/lib/brn-tooltip.ts","../../../../libs/brain/tooltip/src/index.ts","../../../../libs/brain/tooltip/src/spartan-ng-brain-tooltip.ts"],"sourcesContent":["import {\n\tDirective,\n\teffect,\n\ttype EffectRef,\n\ttype EmbeddedViewRef,\n\tinject,\n\tinput,\n\ttype OnDestroy,\n\tTemplateRef,\n\tViewContainerRef,\n} from '@angular/core';\n\nexport function isTemplateRef<C = unknown>(value: unknown): value is TemplateRef<C> {\n\treturn value instanceof TemplateRef;\n}\n\nexport interface BrnTemplateOutletContext {\n\t$implicit: unknown;\n\t[key: string]: unknown;\n}\n\n@Directive({\n\tselector: '[brnTooltipStringTemplateOutlet]',\n\texportAs: 'brnTooltipStringTemplateOutlet',\n})\nexport class BrnTooltipStringTemplateOutlet<T = unknown> implements OnDestroy {\n\tprivate readonly _viewContainer = inject(ViewContainerRef);\n\tprivate readonly _templateRef = inject(TemplateRef<void>);\n\n\tprivate _embeddedViewRef: EmbeddedViewRef<BrnTemplateOutletContext> | null = null;\n\tprivate readonly _context = {} as BrnTemplateOutletContext;\n\n\tprivate _isFirstChange = true;\n\tprivate _lastOutletWasTemplate = false;\n\tprivate _lastTemplateRef: TemplateRef<void> | null = null;\n\tprivate _lastContext?: BrnTemplateOutletContext;\n\n\tpublic readonly brnTooltipStringTemplateOutletContext = input<BrnTemplateOutletContext | undefined>(undefined);\n\tpublic readonly brnTooltipStringTemplateOutlet = input.required<T | TemplateRef<void>>();\n\n\t_hasContextShapeChanged(context: BrnTemplateOutletContext | undefined): boolean {\n\t\tif (!context) {\n\t\t\treturn false;\n\t\t}\n\t\tconst prevCtxKeys = Object.keys(this._lastContext || {});\n\t\tconst currCtxKeys = Object.keys(context || {});\n\n\t\tif (prevCtxKeys.length === currCtxKeys.length) {\n\t\t\tfor (const propName of currCtxKeys) {\n\t\t\t\tif (!prevCtxKeys.includes(propName)) {\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn false;\n\t\t} else {\n\t\t\treturn true;\n\t\t}\n\t}\n\n\t_shouldViewBeRecreated(\n\t\tstringTemplateOutlet: TemplateRef<void> | T,\n\t\tstringTemplateOutletContext: BrnTemplateOutletContext | undefined,\n\t): boolean {\n\t\tconst isTemplate = isTemplateRef(stringTemplateOutlet);\n\n\t\tconst shouldOutletRecreate =\n\t\t\tthis._isFirstChange ||\n\t\t\tisTemplate !== this._lastOutletWasTemplate ||\n\t\t\t(isTemplate && stringTemplateOutlet !== this._lastTemplateRef);\n\n\t\tconst shouldContextRecreate = this._hasContextShapeChanged(stringTemplateOutletContext);\n\t\treturn shouldContextRecreate || shouldOutletRecreate;\n\t}\n\n\t_updateTrackingState(\n\t\tstringTemplateOutlet: TemplateRef<void> | T,\n\t\tstringTemplateOutletContext: BrnTemplateOutletContext | undefined,\n\t): void {\n\t\tconst isTemplate = isTemplateRef(stringTemplateOutlet);\n\t\tif (this._isFirstChange && !isTemplate) {\n\t\t\tthis._isFirstChange = false;\n\t\t}\n\n\t\tif (stringTemplateOutletContext !== undefined) {\n\t\t\tthis._lastContext = stringTemplateOutletContext;\n\t\t}\n\n\t\tthis._lastOutletWasTemplate = isTemplate;\n\t\tthis._lastTemplateRef = isTemplate ? stringTemplateOutlet : null;\n\t}\n\n\tprivate readonly _viewEffect: EffectRef = effect(() => {\n\t\tconst stringTemplateOutlet = this.brnTooltipStringTemplateOutlet();\n\t\tconst stringTemplateOutletContext = this.brnTooltipStringTemplateOutletContext();\n\n\t\tif (!this._isFirstChange && isTemplateRef(stringTemplateOutlet)) {\n\t\t\tthis._isFirstChange = true;\n\t\t}\n\n\t\tif (!isTemplateRef(stringTemplateOutlet)) {\n\t\t\tthis._context['$implicit'] = stringTemplateOutlet as T;\n\t\t}\n\n\t\tconst recreateView = this._shouldViewBeRecreated(stringTemplateOutlet, stringTemplateOutletContext);\n\t\tthis._updateTrackingState(stringTemplateOutlet, stringTemplateOutletContext);\n\n\t\tif (recreateView) {\n\t\t\tthis._recreateView(stringTemplateOutlet as TemplateRef<BrnTemplateOutletContext>, stringTemplateOutletContext);\n\t\t} else {\n\t\t\tthis._updateContext(stringTemplateOutlet, stringTemplateOutletContext);\n\t\t}\n\t});\n\n\tprivate _recreateView(\n\t\toutlet: TemplateRef<BrnTemplateOutletContext>,\n\t\tcontext: BrnTemplateOutletContext | undefined,\n\t): void {\n\t\tthis._viewContainer.clear();\n\t\tif (isTemplateRef(outlet)) {\n\t\t\tthis._embeddedViewRef = this._viewContainer.createEmbeddedView(outlet, context);\n\t\t} else {\n\t\t\tthis._embeddedViewRef = this._viewContainer.createEmbeddedView(this._templateRef, this._context);\n\t\t}\n\t}\n\n\tprivate _updateContext(outlet: TemplateRef<void> | T, context: BrnTemplateOutletContext | undefined): void {\n\t\tconst newCtx = isTemplateRef(outlet) ? context : this._context;\n\t\tlet oldCtx = this._embeddedViewRef?.context;\n\n\t\tif (!oldCtx) {\n\t\t\toldCtx = newCtx;\n\t\t} else if (newCtx && typeof newCtx === 'object') {\n\t\t\tfor (const propName of Object.keys(newCtx)) {\n\t\t\t\toldCtx[propName] = newCtx[propName];\n\t\t\t}\n\t\t}\n\t\tthis._lastContext = oldCtx;\n\t}\n\n\tstatic ngTemplateContextGuard<T>(\n\t\t_dir: BrnTooltipStringTemplateOutlet<T>,\n\t\t_ctx: unknown,\n\t): _ctx is BrnTemplateOutletContext {\n\t\treturn true;\n\t}\n\n\tpublic ngOnDestroy(): void {\n\t\tthis._viewEffect.destroy();\n\t\tthis._viewContainer.clear();\n\t\tthis._embeddedViewRef = null;\n\t}\n}\n","import { ChangeDetectionStrategy, Component, input, signal } from '@angular/core';\nimport { ClassValue } from 'clsx';\nimport { BrnTooltipPosition } from './brn-tooltip-position';\nimport { BrnTooltipStringTemplateOutlet } from './brn-tooltip-string-template-outlet';\nimport { BrnTooltipType } from './brn-tooltip-type';\n\nlet uniqueId = 0;\n\n@Component({\n\timports: [BrnTooltipStringTemplateOutlet],\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n\thost: {\n\t\t'[class]': '_tooltipClass()',\n\t\t'[attr.id]': 'id()',\n\t\t'[attr.data-side]': '_position()',\n\t\t'[attr.data-state]': 'state()',\n\t\trole: 'tooltip',\n\t},\n\ttemplate: `\n\t\t<ng-container *brnTooltipStringTemplateOutlet=\"_tooltipText()\">{{ _tooltipText() }}</ng-container>\n\n\t\t<span [class]=\"_arrowClass()\">\n\t\t\t<svg [class]=\"_svgClass()\" width=\"10\" height=\"5\" viewBox=\"0 0 30 10\" preserveAspectRatio=\"none\">\n\t\t\t\t<polygon points=\"0,0 30,0 15,10\" />\n\t\t\t</svg>\n\t\t</span>\n\t`,\n})\nexport class BrnTooltipContent {\n\tpublic readonly id = input<string>(`brn-tooltip-${++uniqueId}`);\n\tpublic readonly state = signal<'closed' | 'open' | 'instant-open'>('closed');\n\n\tprotected readonly _tooltipClass = signal<ClassValue>('');\n\tprotected readonly _arrowClass = signal<ClassValue>('');\n\tprotected readonly _svgClass = signal<ClassValue>('');\n\n\tprotected readonly _position = signal<BrnTooltipPosition>('top');\n\tprotected readonly _tooltipText = signal<BrnTooltipType>(null);\n\n\tpublic setProps(\n\t\ttooltipText: BrnTooltipType,\n\t\tposition: BrnTooltipPosition,\n\t\ttooltipClasses: ClassValue,\n\t\tarrowClasses: ClassValue,\n\t\tsvgClasses: ClassValue,\n\t): void {\n\t\tif (tooltipText) {\n\t\t\tthis._tooltipText.set(tooltipText);\n\t\t}\n\t\tthis._position.set(position);\n\n\t\tthis._tooltipClass.set(tooltipClasses);\n\t\tthis._arrowClass.set(arrowClasses);\n\t\tthis._svgClass.set(svgClasses);\n\t}\n}\n","import { inject, Injectable, InjectionToken, type Provider } from '@angular/core';\nimport { injectSkipDelay } from '@spartan-ng/brain/core';\n\nexport interface BrnTooltipGroupOptions {\n\t/** Time (ms) after the last tooltip closes during which others open instantly. `0` disables it. */\n\tskipDelayDuration: number;\n}\n\nconst defaultGroupOptions: BrnTooltipGroupOptions = { skipDelayDuration: 300 };\n\nconst BRN_TOOLTIP_GROUP_OPTIONS = new InjectionToken<BrnTooltipGroupOptions>('BrnTooltipGroupOptions');\n\n/** Skip-delay coordinator for grouped tooltips; provide via `provideBrnTooltipGroup` on the wrapper. */\n@Injectable()\nexport class BrnTooltipGroup {\n\tprivate readonly _options = inject(BRN_TOOLTIP_GROUP_OPTIONS);\n\tprivate readonly _skipDelay = injectSkipDelay(() => this._options.skipDelayDuration);\n\n\t/** Whether the next tooltip waits for its show delay, or opens instantly within the skip window. */\n\tpublic readonly isOpenDelayed = this._skipDelay.isOpenDelayed;\n\n\tpublic onOpen(): void {\n\t\tthis._skipDelay.open();\n\t}\n\n\tpublic onClose(): void {\n\t\tthis._skipDelay.close();\n\t}\n}\n\nexport function provideBrnTooltipGroup(options?: Partial<BrnTooltipGroupOptions>): Provider[] {\n\treturn [{ provide: BRN_TOOLTIP_GROUP_OPTIONS, useValue: { ...defaultGroupOptions, ...options } }, BrnTooltipGroup];\n}\n","import type { ConnectedPosition } from '@angular/cdk/overlay';\n\nexport type BrnTooltipPosition = 'top' | 'bottom' | 'left' | 'right';\n\nexport const BRN_TOOLTIP_POSITIONS_MAP: Record<BrnTooltipPosition, ConnectedPosition> = {\n\ttop: {\n\t\toriginX: 'center',\n\t\toriginY: 'top',\n\t\toverlayX: 'center',\n\t\toverlayY: 'bottom',\n\t\toffsetY: -8,\n\t},\n\tbottom: {\n\t\toriginX: 'center',\n\t\toriginY: 'bottom',\n\t\toverlayX: 'center',\n\t\toverlayY: 'top',\n\t\toffsetY: 8,\n\t},\n\tleft: {\n\t\toriginX: 'start',\n\t\toriginY: 'center',\n\t\toverlayX: 'end',\n\t\toverlayY: 'center',\n\t\toffsetX: -8,\n\t},\n\tright: {\n\t\toriginX: 'end',\n\t\toriginY: 'center',\n\t\toverlayX: 'start',\n\t\toverlayY: 'center',\n\t\toffsetX: 8,\n\t},\n};\n\n/** Fallback order for each preferred position when it doesn't fit in the viewport. */\nexport const BRN_TOOLTIP_FALLBACK_POSITIONS: Record<BrnTooltipPosition, BrnTooltipPosition[]> = {\n\ttop: ['bottom', 'right', 'left'],\n\tbottom: ['top', 'right', 'left'],\n\tleft: ['right', 'top', 'bottom'],\n\tright: ['left', 'top', 'bottom'],\n};\n\n/** Map a resolved CDK ConnectedPosition back to a BrnTooltipPosition, or null if no match. */\nexport function resolveTooltipPosition(pair: ConnectedPosition): BrnTooltipPosition | null {\n\tfor (const [pos, config] of Object.entries(BRN_TOOLTIP_POSITIONS_MAP)) {\n\t\tif (\n\t\t\tpair.originX === config.originX &&\n\t\t\tpair.originY === config.originY &&\n\t\t\tpair.overlayX === config.overlayX &&\n\t\t\tpair.overlayY === config.overlayY\n\t\t) {\n\t\t\treturn pos as BrnTooltipPosition;\n\t\t}\n\t}\n\treturn null;\n}\n","import { inject, InjectionToken, type ValueProvider } from '@angular/core';\nimport { type ClassValue } from 'clsx';\nimport { type BrnTooltipPosition } from './brn-tooltip-position';\n\nexport interface BrnTooltipOptions {\n\t/** Default delay when the tooltip is shown. */\n\tshowDelay: number;\n\t/** Default delay when the tooltip is hidden. */\n\thideDelay: number;\n\t/** Default position for tooltips. */\n\tposition?: BrnTooltipPosition;\n\t/** Additional classes for the SVG element in the tooltip arrow. */\n\tsvgClasses: ClassValue;\n\t/** Additional classes for the tooltip arrow element based on position. */\n\tarrowClasses: (position: BrnTooltipPosition) => ClassValue;\n\t/** Additional classes for the tooltip content element. */\n\ttooltipContentClasses: ClassValue;\n}\n\nexport const defaultOptions: BrnTooltipOptions = {\n\tshowDelay: 150,\n\thideDelay: 100,\n\tsvgClasses: '',\n\tarrowClasses: () => '',\n\ttooltipContentClasses: '',\n};\n\nconst BRN_TOOLTIP_DEFAULT_OPTIONS = new InjectionToken<BrnTooltipOptions>('brn-tooltip-default-options', {\n\tprovidedIn: 'root',\n\tfactory: () => defaultOptions,\n});\n\nexport function provideBrnTooltipDefaultOptions(options: Partial<BrnTooltipOptions>): ValueProvider {\n\treturn { provide: BRN_TOOLTIP_DEFAULT_OPTIONS, useValue: { ...defaultOptions, ...options } };\n}\n\nexport function injectBrnTooltipDefaultOptions(): BrnTooltipOptions {\n\treturn inject(BRN_TOOLTIP_DEFAULT_OPTIONS, { optional: true }) ?? defaultOptions;\n}\n","import {\n\tConnectedPosition,\n\tFlexibleConnectedPositionStrategy,\n\tOverlay,\n\tOverlayPositionBuilder,\n\ttype OverlayRef,\n} from '@angular/cdk/overlay';\nimport { ComponentPortal } from '@angular/cdk/portal';\nimport { DOCUMENT } from '@angular/common';\nimport {\n\tafterNextRender,\n\tbooleanAttribute,\n\ttype ComponentRef,\n\tcomputed,\n\tDestroyRef,\n\tDirective,\n\teffect,\n\tElementRef,\n\tinject,\n\tInjector,\n\tinput,\n\tlinkedSignal,\n\tnumberAttribute,\n\toutput,\n\tRenderer2,\n\trunInInjectionContext,\n\ttype TemplateRef,\n} from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\n\nimport { Directionality } from '@angular/cdk/bidi';\nimport { waitForElementAnimations } from '@spartan-ng/brain/core';\nimport { of, Subject, Subscription, timer } from 'rxjs';\nimport { map, switchMap } from 'rxjs/operators';\nimport { BrnTooltipContent } from './brn-tooltip-content';\nimport { BrnTooltipGroup } from './brn-tooltip-group';\nimport {\n\tBRN_TOOLTIP_FALLBACK_POSITIONS,\n\tBRN_TOOLTIP_POSITIONS_MAP,\n\tBrnTooltipPosition,\n\tresolveTooltipPosition,\n} from './brn-tooltip-position';\nimport { BrnTooltipType } from './brn-tooltip-type';\nimport { injectBrnTooltipDefaultOptions } from './brn-tooltip.token';\n\ninterface DelayConfig {\n\tisShow: boolean;\n\tdelay: number;\n\t/** Snapshotted at request time: open instantly (no enter animation) because the group window was open. */\n\tinstant: boolean;\n}\n\n@Directive({ selector: '[brnTooltip]', exportAs: 'brnTooltip' })\nexport class BrnTooltip {\n\tprivate readonly _config = injectBrnTooltipDefaultOptions();\n\n\tprivate readonly _destroyRef = inject(DestroyRef);\n\tprivate readonly _document = inject(DOCUMENT);\n\tprivate readonly _elementRef = inject(ElementRef<HTMLElement>);\n\tprivate readonly _injector = inject(Injector);\n\tprivate readonly _overlay = inject(Overlay);\n\tprivate readonly _overlayPositionBuilder = inject(OverlayPositionBuilder);\n\tprivate readonly _renderer = inject(Renderer2);\n\tprivate readonly _dir = inject(Directionality);\n\tprivate readonly _group = inject(BrnTooltipGroup, { optional: true });\n\n\tprivate _tooltipHovered = false;\n\tprivate _listenersRefs: (() => void)[] = [];\n\tprivate _delaySubject: Subject<DelayConfig> | undefined = undefined;\n\tprivate _componentRef: ComponentRef<BrnTooltipContent> | undefined = undefined;\n\tprivate _overlayRef: OverlayRef | undefined = undefined;\n\tprivate _ariaEffectRef: ReturnType<typeof effect> | undefined = undefined;\n\tprivate _positionChangeSub: Subscription | undefined = undefined;\n\t/** Bumped on every close/show so a pending exit-animation teardown can detect it was superseded. */\n\tprivate _closeGeneration = 0;\n\t/** The position currently applied to the content - the CDK-resolved one after a flip, not the raw input. */\n\tprivate _activePosition: BrnTooltipPosition | undefined = undefined;\n\n\tpublic readonly tooltipDisabled = input<boolean, boolean>(false, { transform: booleanAttribute });\n\tpublic readonly mutableTooltipDisabled = linkedSignal(this.tooltipDisabled);\n\n\tpublic readonly position = input<BrnTooltipPosition>(this._config.position ?? 'top');\n\tpublic readonly brnTooltip = input<BrnTooltipType>(null);\n\tpublic readonly showDelay = input<number, number>(this._config.showDelay, { transform: numberAttribute });\n\tpublic readonly hideDelay = input<number, number>(this._config.hideDelay, { transform: numberAttribute });\n\n\tpublic readonly show = output<void>();\n\tpublic readonly hide = output<void>();\n\n\tprivate readonly _tooltipText = computed<string | TemplateRef<void>>(() => {\n\t\tlet tooltipText = this.brnTooltip();\n\t\tif (!tooltipText) {\n\t\t\treturn '';\n\t\t} else if (typeof tooltipText === 'string') {\n\t\t\ttooltipText = tooltipText.trim();\n\t\t}\n\t\treturn tooltipText;\n\t});\n\n\tconstructor() {\n\t\tafterNextRender(() => {\n\t\t\tthis._overlayRef = this._overlay.create({\n\t\t\t\tdirection: this._dir,\n\t\t\t\tpositionStrategy: this._buildPositionStrategy(),\n\t\t\t});\n\n\t\t\tthis._dir.change.pipe(takeUntilDestroyed(this._destroyRef)).subscribe(() => {\n\t\t\t\tif (this._overlayRef) {\n\t\t\t\t\tthis._updatePosition();\n\t\t\t\t\tif (this._overlayRef.hasAttached()) {\n\t\t\t\t\t\tthis._overlayRef.updatePosition();\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t});\n\n\t\t\trunInInjectionContext(this._injector, () => {\n\t\t\t\tif (!this._overlayRef) return;\n\t\t\t\tthis._setupDelayMechanism();\n\t\t\t\tthis._cleanupTriggerEvents();\n\t\t\t\tthis._initTriggers();\n\t\t\t\tthis._listenersRefs = [\n\t\t\t\t\t...this._listenersRefs,\n\t\t\t\t\tthis._renderer.listen(this._overlayRef.hostElement, 'mouseenter', () => (this._tooltipHovered = true)),\n\t\t\t\t\tthis._renderer.listen(this._overlayRef.hostElement, 'mouseleave', () => {\n\t\t\t\t\t\tthis._tooltipHovered = false;\n\t\t\t\t\t\tthis.delay(false, this.hideDelay());\n\t\t\t\t\t}),\n\t\t\t\t];\n\t\t\t});\n\t\t});\n\n\t\tthis._destroyRef.onDestroy(() => {\n\t\t\tthis._clearAriaDescribedBy();\n\t\t\tthis._delaySubject?.complete();\n\t\t\tthis._cleanupTriggerEvents();\n\t\t\tthis._overlayRef?.dispose();\n\t\t});\n\t}\n\n\tprivate _updatePosition(): void {\n\t\tconst strategy = this._overlayRef?.getConfig().positionStrategy as FlexibleConnectedPositionStrategy;\n\n\t\tif (strategy) {\n\t\t\tstrategy.withPositions(this._getAllPositions());\n\t\t}\n\t}\n\n\tprivate _buildPositionStrategy() {\n\t\treturn this._overlayPositionBuilder\n\t\t\t.flexibleConnectedTo(this._elementRef)\n\t\t\t.withPositions(this._getAllPositions())\n\t\t\t.withViewportMargin(8);\n\t}\n\n\t/** Build [preferred, ...fallbacks] position array for viewport-aware auto-flip. */\n\tprivate _getAllPositions(): ConnectedPosition[] {\n\t\tconst preferred = this.position();\n\t\treturn [preferred, ...BRN_TOOLTIP_FALLBACK_POSITIONS[preferred]].map((pos) => this._getAdjustedPositionFor(pos));\n\t}\n\n\tprivate _getAdjustedPositionFor(pos: BrnTooltipPosition): ConnectedPosition {\n\t\tconst position = BRN_TOOLTIP_POSITIONS_MAP[pos];\n\t\tconst isLtr = this._dir.value !== 'rtl';\n\n\t\treturn {\n\t\t\t...position,\n\t\t\toffsetX: position.offsetX != null ? (isLtr ? position.offsetX : -position.offsetX) : undefined,\n\t\t};\n\t}\n\n\tprivate _initTriggers() {\n\t\tthis._initScrollListener();\n\t\tthis._initHoverListeners();\n\t}\n\n\tprivate _initHoverListeners(): void {\n\t\tthis._listenersRefs = [\n\t\t\t...this._listenersRefs,\n\t\t\tthis._renderer.listen(this._elementRef.nativeElement, 'mouseenter', () => this._requestShow()),\n\t\t\tthis._renderer.listen(this._elementRef.nativeElement, 'mouseleave', () => this.delay(false, this.hideDelay())),\n\t\t\tthis._renderer.listen(this._elementRef.nativeElement, 'focus', () => this._requestShow()),\n\t\t\tthis._renderer.listen(this._elementRef.nativeElement, 'blur', () => this.delay(false, this.hideDelay())),\n\t\t];\n\t}\n\n\t/** Snapshot the group skip decision once, so the delay and the instant-open state agree even if a\n\t * sibling flips the window during the show delay. */\n\tprivate _requestShow(): void {\n\t\tconst skip = !!this._group && !this._group.isOpenDelayed();\n\t\tthis.delay(true, skip ? 0 : this.showDelay(), skip);\n\t}\n\n\tprivate _initScrollListener(): void {\n\t\tthis._listenersRefs = [\n\t\t\t...this._listenersRefs,\n\t\t\tthis._renderer.listen(this._document.defaultView, 'scroll', () => this._hide()),\n\t\t];\n\t}\n\n\tprivate _cleanupTriggerEvents(): void {\n\t\tfor (const eventRef of this._listenersRefs) {\n\t\t\teventRef();\n\t\t}\n\t\tthis._listenersRefs = [];\n\t}\n\n\tprivate delay(isShow: boolean, delay = -1, instant = false): void {\n\t\tthis._delaySubject?.next({ isShow, delay, instant });\n\t}\n\n\tprivate _setupDelayMechanism(): void {\n\t\tthis._delaySubject?.complete();\n\t\tthis._delaySubject = new Subject<DelayConfig>();\n\n\t\tthis._delaySubject\n\t\t\t.pipe(\n\t\t\t\tswitchMap((config) => (config.delay < 0 ? of(config) : timer(config.delay).pipe(map(() => config)))),\n\t\t\t\ttakeUntilDestroyed(this._destroyRef),\n\t\t\t)\n\t\t\t.subscribe((config) => {\n\t\t\t\tif (config.isShow) {\n\t\t\t\t\tthis._show(config.instant);\n\t\t\t\t} else {\n\t\t\t\t\tthis._hide();\n\t\t\t\t}\n\t\t\t});\n\t}\n\n\tprivate _show(instant = false): void {\n\t\tif (!this._tooltipText() || this.mutableTooltipDisabled()) {\n\t\t\treturn;\n\t\t}\n\n\t\t// 'instant-open' suppresses the enter animation. Decided with the delay at request time so a sibling\n\t\t// flipping the group window mid-delay can't desync the animation from the wait that actually happened.\n\t\tconst openState = instant ? 'instant-open' : 'open';\n\n\t\t// Already attached: revive only if it is mid-close (exit animation playing). Cancel the\n\t\t// pending teardown and flip it back open instead of letting it fade out and detach.\n\t\tif (this._componentRef) {\n\t\t\tif (this._componentRef.instance.state() === 'closed') {\n\t\t\t\tthis._closeGeneration++;\n\t\t\t\tthis._componentRef.instance.state.set(openState);\n\t\t\t\t// Re-apply props so a programmatic text change during the close is reflected on revive.\n\t\t\t\t// Keep the live (possibly flipped) position rather than resetting to the raw input.\n\t\t\t\tthis._applyContentProps(this._componentRef.instance, this._activePosition ?? this.position());\n\t\t\t\tthis._group?.onOpen();\n\t\t\t\tthis.show.emit();\n\t\t\t}\n\t\t\treturn;\n\t\t}\n\n\t\tconst tooltipPortal = new ComponentPortal(BrnTooltipContent);\n\t\tthis._componentRef = this._overlayRef?.attach(tooltipPortal);\n\t\tthis._componentRef?.onDestroy(() => {\n\t\t\tthis._componentRef = undefined;\n\t\t});\n\t\tthis._componentRef?.instance.state.set(openState);\n\t\tthis._group?.onOpen();\n\t\tif (this._componentRef) {\n\t\t\tthis._applyContentProps(this._componentRef.instance, this.position());\n\t\t}\n\n\t\t// Subscribe to position changes for the lifetime of the tooltip so that\n\t\t// arrow direction and CSS classes stay in sync when the CDK flips the\n\t\t// overlay (initial show, viewport resize, scroll, etc.).\n\t\tconst strategy = this._overlayRef?.getConfig().positionStrategy as FlexibleConnectedPositionStrategy | undefined;\n\t\tif (strategy && this._componentRef) {\n\t\t\tconst compRef = this._componentRef;\n\t\t\tthis._positionChangeSub = strategy.positionChanges\n\t\t\t\t.pipe(takeUntilDestroyed(this._destroyRef))\n\t\t\t\t.subscribe((change) => {\n\t\t\t\t\tconst resolved = resolveTooltipPosition(change.connectionPair);\n\t\t\t\t\tif (resolved) {\n\t\t\t\t\t\tthis._applyContentProps(compRef.instance, resolved, null);\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t}\n\n\t\trunInInjectionContext(this._injector, () => {\n\t\t\tthis._ariaEffectRef = effect(() => {\n\t\t\t\tconst tooltipId = this._componentRef?.instance.id();\n\t\t\t\tif (tooltipId) {\n\t\t\t\t\tthis._renderer.setAttribute(this._elementRef.nativeElement, 'aria-describedby', tooltipId);\n\t\t\t\t\tthis._ariaEffectRef?.destroy();\n\t\t\t\t\tthis._ariaEffectRef = undefined;\n\t\t\t\t}\n\t\t\t});\n\t\t});\n\t\tthis.show.emit();\n\t}\n\n\t/** Apply text + position (and the position-derived classes) to the content, recording the position as\n\t * active. Pass `text = null` for a position-only update that keeps the content's existing text. */\n\tprivate _applyContentProps(\n\t\tcontent: BrnTooltipContent,\n\t\tposition: BrnTooltipPosition,\n\t\ttext: BrnTooltipType = this._tooltipText(),\n\t): void {\n\t\tthis._activePosition = position;\n\t\tcontent.setProps(\n\t\t\ttext,\n\t\t\tposition,\n\t\t\tthis._config.tooltipContentClasses,\n\t\t\tthis._config.arrowClasses(position),\n\t\t\tthis._config.svgClasses,\n\t\t);\n\t}\n\n\tprivate _hide(): void {\n\t\tif (!this._componentRef || this._tooltipHovered) return;\n\t\t// Already closing (exit animation in flight): nothing to do.\n\t\tif (this._componentRef.instance.state() === 'closed') return;\n\t\tthis._componentRef.instance.state.set('closed');\n\t\tthis._group?.onClose();\n\t\tthis.hide.emit();\n\t\tthis._scheduleDetach(this._componentRef);\n\t}\n\n\t/**\n\t * Keep the content mounted until its `data-[state=closed]` exit animation finishes, then tear it\n\t * down. A re-show (revive) bumps `_closeGeneration`, which cancels the pending detach.\n\t */\n\tprivate _scheduleDetach(componentRef: ComponentRef<BrnTooltipContent>): void {\n\t\tconst generation = ++this._closeGeneration;\n\t\tconst content = componentRef.location.nativeElement as HTMLElement;\n\t\tafterNextRender(\n\t\t\t() => {\n\t\t\t\tvoid waitForElementAnimations(content).then(() => {\n\t\t\t\t\tif (generation === this._closeGeneration) this._detach();\n\t\t\t\t});\n\t\t\t},\n\t\t\t{ injector: this._injector },\n\t\t);\n\t}\n\n\tprivate _detach(): void {\n\t\tthis._clearAriaDescribedBy();\n\t\tthis._positionChangeSub?.unsubscribe();\n\t\tthis._positionChangeSub = undefined;\n\t\tthis._renderer.removeAttribute(this._elementRef.nativeElement, 'aria-describedby');\n\t\tthis._overlayRef?.detach();\n\t}\n\n\tprivate _clearAriaDescribedBy(): void {\n\t\tif (this._ariaEffectRef) {\n\t\t\tthis._ariaEffectRef.destroy();\n\t\t\tthis._ariaEffectRef = undefined;\n\t\t}\n\t}\n}\n","import { BrnTooltip } from './lib/brn-tooltip';\nimport { BrnTooltipContent } from './lib/brn-tooltip-content';\n\nexport * from './lib/brn-tooltip';\nexport * from './lib/brn-tooltip-content';\nexport * from './lib/brn-tooltip-group';\nexport { BRN_TOOLTIP_FALLBACK_POSITIONS, BrnTooltipPosition, resolveTooltipPosition } from './lib/brn-tooltip-position';\nexport * from './lib/brn-tooltip-type';\nexport * from './lib/brn-tooltip.token';\n\nexport const BrnTooltipImports = [BrnTooltip, BrnTooltipContent] as const;\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;;;;;;;;;;AAYM,SAAU,aAAa,CAAc,KAAc,EAAA;IACxD,OAAO,KAAK,YAAY,WAAW;AACpC;MAWa,8BAA8B,CAAA;AACzB,IAAA,cAAc,GAAG,MAAM,CAAC,gBAAgB,CAAC;AACzC,IAAA,YAAY,GAAG,MAAM,EAAC,WAAiB,EAAC;IAEjD,gBAAgB,GAAqD,IAAI;IAChE,QAAQ,GAAG,EAA8B;IAElD,cAAc,GAAG,IAAI;IACrB,sBAAsB,GAAG,KAAK;IAC9B,gBAAgB,GAA6B,IAAI;AACjD,IAAA,YAAY;AAEJ,IAAA,qCAAqC,GAAG,KAAK,CAAuC,SAAS,4GAAC;AAC9F,IAAA,8BAA8B,GAAG,KAAK,CAAC,QAAQ,oGAAyB;AAExF,IAAA,uBAAuB,CAAC,OAA6C,EAAA;QACpE,IAAI,CAAC,OAAO,EAAE;AACb,YAAA,OAAO,KAAK;QACb;AACA,QAAA,MAAM,WAAW,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,YAAY,IAAI,EAAE,CAAC;QACxD,MAAM,WAAW,GAAG,MAAM,CAAC,IAAI,CAAC,OAAO,IAAI,EAAE,CAAC;QAE9C,IAAI,WAAW,CAAC,MAAM,KAAK,WAAW,CAAC,MAAM,EAAE;AAC9C,YAAA,KAAK,MAAM,QAAQ,IAAI,WAAW,EAAE;gBACnC,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE;AACpC,oBAAA,OAAO,IAAI;gBACZ;YACD;AACA,YAAA,OAAO,KAAK;QACb;aAAO;AACN,YAAA,OAAO,IAAI;QACZ;IACD;IAEA,sBAAsB,CACrB,oBAA2C,EAC3C,2BAAiE,EAAA;AAEjE,QAAA,MAAM,UAAU,GAAG,aAAa,CAAC,oBAAoB,CAAC;AAEtD,QAAA,MAAM,oBAAoB,GACzB,IAAI,CAAC,cAAc;YACnB,UAAU,KAAK,IAAI,CAAC,sBAAsB;aACzC,UAAU,IAAI,oBAAoB,KAAK,IAAI,CAAC,gBAAgB,CAAC;QAE/D,MAAM,qBAAqB,GAAG,IAAI,CAAC,uBAAuB,CAAC,2BAA2B,CAAC;QACvF,OAAO,qBAAqB,IAAI,oBAAoB;IACrD;IAEA,oBAAoB,CACnB,oBAA2C,EAC3C,2BAAiE,EAAA;AAEjE,QAAA,MAAM,UAAU,GAAG,aAAa,CAAC,oBAAoB,CAAC;AACtD,QAAA,IAAI,IAAI,CAAC,cAAc,IAAI,CAAC,UAAU,EAAE;AACvC,YAAA,IAAI,CAAC,cAAc,GAAG,KAAK;QAC5B;AAEA,QAAA,IAAI,2BAA2B,KAAK,SAAS,EAAE;AAC9C,YAAA,IAAI,CAAC,YAAY,GAAG,2BAA2B;QAChD;AAEA,QAAA,IAAI,CAAC,sBAAsB,GAAG,UAAU;AACxC,QAAA,IAAI,CAAC,gBAAgB,GAAG,UAAU,GAAG,oBAAoB,GAAG,IAAI;IACjE;AAEiB,IAAA,WAAW,GAAc,MAAM,CAAC,MAAK;AACrD,QAAA,MAAM,oBAAoB,GAAG,IAAI,CAAC,8BAA8B,EAAE;AAClE,QAAA,MAAM,2BAA2B,GAAG,IAAI,CAAC,qCAAqC,EAAE;QAEhF,IAAI,CAAC,IAAI,CAAC,cAAc,IAAI,aAAa,CAAC,oBAAoB,CAAC,EAAE;AAChE,YAAA,IAAI,CAAC,cAAc,GAAG,IAAI;QAC3B;AAEA,QAAA,IAAI,CAAC,aAAa,CAAC,oBAAoB,CAAC,EAAE;AACzC,YAAA,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,GAAG,oBAAyB;QACvD;QAEA,MAAM,YAAY,GAAG,IAAI,CAAC,sBAAsB,CAAC,oBAAoB,EAAE,2BAA2B,CAAC;AACnG,QAAA,IAAI,CAAC,oBAAoB,CAAC,oBAAoB,EAAE,2BAA2B,CAAC;QAE5E,IAAI,YAAY,EAAE;AACjB,YAAA,IAAI,CAAC,aAAa,CAAC,oBAA6D,EAAE,2BAA2B,CAAC;QAC/G;aAAO;AACN,YAAA,IAAI,CAAC,cAAc,CAAC,oBAAoB,EAAE,2BAA2B,CAAC;QACvE;AACD,IAAA,CAAC,kFAAC;IAEM,aAAa,CACpB,MAA6C,EAC7C,OAA6C,EAAA;AAE7C,QAAA,IAAI,CAAC,cAAc,CAAC,KAAK,EAAE;AAC3B,QAAA,IAAI,aAAa,CAAC,MAAM,CAAC,EAAE;AAC1B,YAAA,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC,cAAc,CAAC,kBAAkB,CAAC,MAAM,EAAE,OAAO,CAAC;QAChF;aAAO;AACN,YAAA,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC,cAAc,CAAC,kBAAkB,CAAC,IAAI,CAAC,YAAY,EAAE,IAAI,CAAC,QAAQ,CAAC;QACjG;IACD;IAEQ,cAAc,CAAC,MAA6B,EAAE,OAA6C,EAAA;AAClG,QAAA,MAAM,MAAM,GAAG,aAAa,CAAC,MAAM,CAAC,GAAG,OAAO,GAAG,IAAI,CAAC,QAAQ;AAC9D,QAAA,IAAI,MAAM,GAAG,IAAI,CAAC,gBAAgB,EAAE,OAAO;QAE3C,IAAI,CAAC,MAAM,EAAE;YACZ,MAAM,GAAG,MAAM;QAChB;AAAO,aAAA,IAAI,MAAM,IAAI,OAAO,MAAM,KAAK,QAAQ,EAAE;YAChD,KAAK,MAAM,QAAQ,IAAI,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE;gBAC3C,MAAM,CAAC,QAAQ,CAAC,GAAG,MAAM,CAAC,QAAQ,CAAC;YACpC;QACD;AACA,QAAA,IAAI,CAAC,YAAY,GAAG,MAAM;IAC3B;AAEA,IAAA,OAAO,sBAAsB,CAC5B,IAAuC,EACvC,IAAa,EAAA;AAEb,QAAA,OAAO,IAAI;IACZ;IAEO,WAAW,GAAA;AACjB,QAAA,IAAI,CAAC,WAAW,CAAC,OAAO,EAAE;AAC1B,QAAA,IAAI,CAAC,cAAc,CAAC,KAAK,EAAE;AAC3B,QAAA,IAAI,CAAC,gBAAgB,GAAG,IAAI;IAC7B;2HA7HY,8BAA8B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;+GAA9B,8BAA8B,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,kCAAA,EAAA,MAAA,EAAA,EAAA,qCAAA,EAAA,EAAA,iBAAA,EAAA,uCAAA,EAAA,UAAA,EAAA,uCAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,8BAAA,EAAA,EAAA,iBAAA,EAAA,gCAAA,EAAA,UAAA,EAAA,gCAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,QAAA,EAAA,CAAA,gCAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA;;4FAA9B,8BAA8B,EAAA,UAAA,EAAA,CAAA;kBAJ1C,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,QAAQ,EAAE,kCAAkC;AAC5C,oBAAA,QAAQ,EAAE,gCAAgC;AAC1C,iBAAA;;;AClBD,IAAI,QAAQ,GAAG,CAAC;MAsBH,iBAAiB,CAAA;IACb,EAAE,GAAG,KAAK,CAAS,CAAA,YAAA,EAAe,EAAE,QAAQ,CAAA,CAAE,yEAAC;AAC/C,IAAA,KAAK,GAAG,MAAM,CAAqC,QAAQ,4EAAC;AAEzD,IAAA,aAAa,GAAG,MAAM,CAAa,EAAE,oFAAC;AACtC,IAAA,WAAW,GAAG,MAAM,CAAa,EAAE,kFAAC;AACpC,IAAA,SAAS,GAAG,MAAM,CAAa,EAAE,gFAAC;AAElC,IAAA,SAAS,GAAG,MAAM,CAAqB,KAAK,gFAAC;AAC7C,IAAA,YAAY,GAAG,MAAM,CAAiB,IAAI,mFAAC;IAEvD,QAAQ,CACd,WAA2B,EAC3B,QAA4B,EAC5B,cAA0B,EAC1B,YAAwB,EACxB,UAAsB,EAAA;QAEtB,IAAI,WAAW,EAAE;AAChB,YAAA,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,WAAW,CAAC;QACnC;AACA,QAAA,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC;AAE5B,QAAA,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,cAAc,CAAC;AACtC,QAAA,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,YAAY,CAAC;AAClC,QAAA,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,UAAU,CAAC;IAC/B;2HA1BY,iBAAiB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAjB,uBAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,iBAAiB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,EAAA,EAAA,EAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,MAAA,EAAA,SAAA,EAAA,EAAA,UAAA,EAAA,EAAA,OAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,MAAA,EAAA,gBAAA,EAAA,aAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAVnB;;;;;;;;AAQT,CAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAjBS,8BAA8B,EAAA,QAAA,EAAA,kCAAA,EAAA,MAAA,EAAA,CAAA,uCAAA,EAAA,gCAAA,CAAA,EAAA,QAAA,EAAA,CAAA,gCAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA;;4FAmB5B,iBAAiB,EAAA,UAAA,EAAA,CAAA;kBApB7B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;oBACV,OAAO,EAAE,CAAC,8BAA8B,CAAC;oBACzC,eAAe,EAAE,uBAAuB,CAAC,MAAM;AAC/C,oBAAA,IAAI,EAAE;AACL,wBAAA,SAAS,EAAE,iBAAiB;AAC5B,wBAAA,WAAW,EAAE,MAAM;AACnB,wBAAA,kBAAkB,EAAE,aAAa;AACjC,wBAAA,mBAAmB,EAAE,SAAS;AAC9B,wBAAA,IAAI,EAAE,SAAS;AACf,qBAAA;AACD,oBAAA,QAAQ,EAAE;;;;;;;;AAQT,CAAA,CAAA;AACD,iBAAA;;;ACnBD,MAAM,mBAAmB,GAA2B,EAAE,iBAAiB,EAAE,GAAG,EAAE;AAE9E,MAAM,yBAAyB,GAAG,IAAI,cAAc,CAAyB,wBAAwB,CAAC;AAEtG;MAEa,eAAe,CAAA;AACV,IAAA,QAAQ,GAAG,MAAM,CAAC,yBAAyB,CAAC;AAC5C,IAAA,UAAU,GAAG,eAAe,CAAC,MAAM,IAAI,CAAC,QAAQ,CAAC,iBAAiB,CAAC;;AAGpE,IAAA,aAAa,GAAG,IAAI,CAAC,UAAU,CAAC,aAAa;IAEtD,MAAM,GAAA;AACZ,QAAA,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE;IACvB;IAEO,OAAO,GAAA;AACb,QAAA,IAAI,CAAC,UAAU,CAAC,KAAK,EAAE;IACxB;2HAbY,eAAe,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA;+HAAf,eAAe,EAAA,CAAA;;4FAAf,eAAe,EAAA,UAAA,EAAA,CAAA;kBAD3B;;AAiBK,SAAU,sBAAsB,CAAC,OAAyC,EAAA;AAC/E,IAAA,OAAO,CAAC,EAAE,OAAO,EAAE,yBAAyB,EAAE,QAAQ,EAAE,EAAE,GAAG,mBAAmB,EAAE,GAAG,OAAO,EAAE,EAAE,EAAE,eAAe,CAAC;AACnH;;AC5BO,MAAM,yBAAyB,GAAkD;AACvF,IAAA,GAAG,EAAE;AACJ,QAAA,OAAO,EAAE,QAAQ;AACjB,QAAA,OAAO,EAAE,KAAK;AACd,QAAA,QAAQ,EAAE,QAAQ;AAClB,QAAA,QAAQ,EAAE,QAAQ;QAClB,OAAO,EAAE,CAAC,CAAC;AACX,KAAA;AACD,IAAA,MAAM,EAAE;AACP,QAAA,OAAO,EAAE,QAAQ;AACjB,QAAA,OAAO,EAAE,QAAQ;AACjB,QAAA,QAAQ,EAAE,QAAQ;AAClB,QAAA,QAAQ,EAAE,KAAK;AACf,QAAA,OAAO,EAAE,CAAC;AACV,KAAA;AACD,IAAA,IAAI,EAAE;AACL,QAAA,OAAO,EAAE,OAAO;AAChB,QAAA,OAAO,EAAE,QAAQ;AACjB,QAAA,QAAQ,EAAE,KAAK;AACf,QAAA,QAAQ,EAAE,QAAQ;QAClB,OAAO,EAAE,CAAC,CAAC;AACX,KAAA;AACD,IAAA,KAAK,EAAE;AACN,QAAA,OAAO,EAAE,KAAK;AACd,QAAA,OAAO,EAAE,QAAQ;AACjB,QAAA,QAAQ,EAAE,OAAO;AACjB,QAAA,QAAQ,EAAE,QAAQ;AAClB,QAAA,OAAO,EAAE,CAAC;AACV,KAAA;CACD;AAED;AACO,MAAM,8BAA8B,GAAqD;AAC/F,IAAA,GAAG,EAAE,CAAC,QAAQ,EAAE,OAAO,EAAE,MAAM,CAAC;AAChC,IAAA,MAAM,EAAE,CAAC,KAAK,EAAE,OAAO,EAAE,MAAM,CAAC;AAChC,IAAA,IAAI,EAAE,CAAC,OAAO,EAAE,KAAK,EAAE,QAAQ,CAAC;AAChC,IAAA,KAAK,EAAE,CAAC,MAAM,EAAE,KAAK,EAAE,QAAQ,CAAC;;AAGjC;AACM,SAAU,sBAAsB,CAAC,IAAuB,EAAA;AAC7D,IAAA,KAAK,MAAM,CAAC,GAAG,EAAE,MAAM,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,yBAAyB,CAAC,EAAE;AACtE,QAAA,IACC,IAAI,CAAC,OAAO,KAAK,MAAM,CAAC,OAAO;AAC/B,YAAA,IAAI,CAAC,OAAO,KAAK,MAAM,CAAC,OAAO;AAC/B,YAAA,IAAI,CAAC,QAAQ,KAAK,MAAM,CAAC,QAAQ;AACjC,YAAA,IAAI,CAAC,QAAQ,KAAK,MAAM,CAAC,QAAQ,EAChC;AACD,YAAA,OAAO,GAAyB;QACjC;IACD;AACA,IAAA,OAAO,IAAI;AACZ;;ACrCO,MAAM,cAAc,GAAsB;AAChD,IAAA,SAAS,EAAE,GAAG;AACd,IAAA,SAAS,EAAE,GAAG;AACd,IAAA,UAAU,EAAE,EAAE;AACd,IAAA,YAAY,EAAE,MAAM,EAAE;AACtB,IAAA,qBAAqB,EAAE,EAAE;;AAG1B,MAAM,2BAA2B,GAAG,IAAI,cAAc,CAAoB,6BAA6B,EAAE;AACxG,IAAA,UAAU,EAAE,MAAM;AAClB,IAAA,OAAO,EAAE,MAAM,cAAc;AAC7B,CAAA,CAAC;AAEI,SAAU,+BAA+B,CAAC,OAAmC,EAAA;AAClF,IAAA,OAAO,EAAE,OAAO,EAAE,2BAA2B,EAAE,QAAQ,EAAE,EAAE,GAAG,cAAc,EAAE,GAAG,OAAO,EAAE,EAAE;AAC7F;SAEgB,8BAA8B,GAAA;AAC7C,IAAA,OAAO,MAAM,CAAC,2BAA2B,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,IAAI,cAAc;AACjF;;MCea,UAAU,CAAA;IACL,OAAO,GAAG,8BAA8B,EAAE;AAE1C,IAAA,WAAW,GAAG,MAAM,CAAC,UAAU,CAAC;AAChC,IAAA,SAAS,GAAG,MAAM,CAAC,QAAQ,CAAC;AAC5B,IAAA,WAAW,GAAG,MAAM,EAAC,UAAuB,EAAC;AAC7C,IAAA,SAAS,GAAG,MAAM,CAAC,QAAQ,CAAC;AAC5B,IAAA,QAAQ,GAAG,MAAM,CAAC,OAAO,CAAC;AAC1B,IAAA,uBAAuB,GAAG,MAAM,CAAC,sBAAsB,CAAC;AACxD,IAAA,SAAS,GAAG,MAAM,CAAC,SAAS,CAAC;AAC7B,IAAA,IAAI,GAAG,MAAM,CAAC,cAAc,CAAC;IAC7B,MAAM,GAAG,MAAM,CAAC,eAAe,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;IAE7D,eAAe,GAAG,KAAK;IACvB,cAAc,GAAmB,EAAE;IACnC,aAAa,GAAqC,SAAS;IAC3D,aAAa,GAAgD,SAAS;IACtE,WAAW,GAA2B,SAAS;IAC/C,cAAc,GAA0C,SAAS;IACjE,kBAAkB,GAA6B,SAAS;;IAExD,gBAAgB,GAAG,CAAC;;IAEpB,eAAe,GAAmC,SAAS;IAEnD,eAAe,GAAG,KAAK,CAAmB,KAAK,uFAAI,SAAS,EAAE,gBAAgB,EAAA,CAAG;AACjF,IAAA,sBAAsB,GAAG,YAAY,CAAC,IAAI,CAAC,eAAe,6FAAC;IAE3D,QAAQ,GAAG,KAAK,CAAqB,IAAI,CAAC,OAAO,CAAC,QAAQ,IAAI,KAAK,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,UAAA,EAAA,CAAA,8BAAA,EAAA,CAAA,CAAC;AACpE,IAAA,UAAU,GAAG,KAAK,CAAiB,IAAI,iFAAC;AACxC,IAAA,SAAS,GAAG,KAAK,CAAiB,IAAI,CAAC,OAAO,CAAC,SAAS,EAAA,EAAA,IAAA,SAAA,GAAA,EAAA,SAAA,EAAA,WAAA,EAAA,8BAAA,EAAA,CAAA,EAAI,SAAS,EAAE,eAAe,GAAG;AACzF,IAAA,SAAS,GAAG,KAAK,CAAiB,IAAI,CAAC,OAAO,CAAC,SAAS,EAAA,EAAA,IAAA,SAAA,GAAA,EAAA,SAAA,EAAA,WAAA,EAAA,8BAAA,EAAA,CAAA,EAAI,SAAS,EAAE,eAAe,GAAG;IAEzF,IAAI,GAAG,MAAM,EAAQ;IACrB,IAAI,GAAG,MAAM,EAAQ;AAEpB,IAAA,YAAY,GAAG,QAAQ,CAA6B,MAAK;AACzE,QAAA,IAAI,WAAW,GAAG,IAAI,CAAC,UAAU,EAAE;QACnC,IAAI,CAAC,WAAW,EAAE;AACjB,YAAA,OAAO,EAAE;QACV;AAAO,aAAA,IAAI,OAAO,WAAW,KAAK,QAAQ,EAAE;AAC3C,YAAA,WAAW,GAAG,WAAW,CAAC,IAAI,EAAE;QACjC;AACA,QAAA,OAAO,WAAW;AACnB,IAAA,CAAC,mFAAC;AAEF,IAAA,WAAA,GAAA;QACC,eAAe,CAAC,MAAK;YACpB,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC;gBACvC,SAAS,EAAE,IAAI,CAAC,IAAI;AACpB,gBAAA,gBAAgB,EAAE,IAAI,CAAC,sBAAsB,EAAE;AAC/C,aAAA,CAAC;AAEF,YAAA,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,SAAS,CAAC,MAAK;AAC1E,gBAAA,IAAI,IAAI,CAAC,WAAW,EAAE;oBACrB,IAAI,CAAC,eAAe,EAAE;AACtB,oBAAA,IAAI,IAAI,CAAC,WAAW,CAAC,WAAW,EAAE,EAAE;AACnC,wBAAA,IAAI,CAAC,WAAW,CAAC,cAAc,EAAE;oBAClC;gBACD;AACD,YAAA,CAAC,CAAC;AAEF,YAAA,qBAAqB,CAAC,IAAI,CAAC,SAAS,EAAE,MAAK;gBAC1C,IAAI,CAAC,IAAI,CAAC,WAAW;oBAAE;gBACvB,IAAI,CAAC,oBAAoB,EAAE;gBAC3B,IAAI,CAAC,qBAAqB,EAAE;gBAC5B,IAAI,CAAC,aAAa,EAAE;gBACpB,IAAI,CAAC,cAAc,GAAG;oBACrB,GAAG,IAAI,CAAC,cAAc;oBACtB,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,WAAW,EAAE,YAAY,EAAE,OAAO,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,CAAC;AACtG,oBAAA,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,WAAW,EAAE,YAAY,EAAE,MAAK;AACtE,wBAAA,IAAI,CAAC,eAAe,GAAG,KAAK;wBAC5B,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,IAAI,CAAC,SAAS,EAAE,CAAC;AACpC,oBAAA,CAAC,CAAC;iBACF;AACF,YAAA,CAAC,CAAC;AACH,QAAA,CAAC,CAAC;AAEF,QAAA,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC,MAAK;YAC/B,IAAI,CAAC,qBAAqB,EAAE;AAC5B,YAAA,IAAI,CAAC,aAAa,EAAE,QAAQ,EAAE;YAC9B,IAAI,CAAC,qBAAqB,EAAE;AAC5B,YAAA,IAAI,CAAC,WAAW,EAAE,OAAO,EAAE;AAC5B,QAAA,CAAC,CAAC;IACH;IAEQ,eAAe,GAAA;QACtB,MAAM,QAAQ,GAAG,IAAI,CAAC,WAAW,EAAE,SAAS,EAAE,CAAC,gBAAqD;QAEpG,IAAI,QAAQ,EAAE;YACb,QAAQ,CAAC,aAAa,CAAC,IAAI,CAAC,gBAAgB,EAAE,CAAC;QAChD;IACD;IAEQ,sBAAsB,GAAA;QAC7B,OAAO,IAAI,CAAC;AACV,aAAA,mBAAmB,CAAC,IAAI,CAAC,WAAW;AACpC,aAAA,aAAa,CAAC,IAAI,CAAC,gBAAgB,EAAE;aACrC,kBAAkB,CAAC,CAAC,CAAC;IACxB;;IAGQ,gBAAgB,GAAA;AACvB,QAAA,MAAM,SAAS,GAAG,IAAI,CAAC,QAAQ,EAAE;QACjC,OAAO,CAAC,SAAS,EAAE,GAAG,8BAA8B,CAAC,SAAS,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,KAAK,IAAI,CAAC,uBAAuB,CAAC,GAAG,CAAC,CAAC;IACjH;AAEQ,IAAA,uBAAuB,CAAC,GAAuB,EAAA;AACtD,QAAA,MAAM,QAAQ,GAAG,yBAAyB,CAAC,GAAG,CAAC;QAC/C,MAAM,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK,KAAK,KAAK;QAEvC,OAAO;AACN,YAAA,GAAG,QAAQ;AACX,YAAA,OAAO,EAAE,QAAQ,CAAC,OAAO,IAAI,IAAI,IAAI,KAAK,GAAG,QAAQ,CAAC,OAAO,GAAG,CAAC,QAAQ,CAAC,OAAO,IAAI,SAAS;SAC9F;IACF;IAEQ,aAAa,GAAA;QACpB,IAAI,CAAC,mBAAmB,EAAE;QAC1B,IAAI,CAAC,mBAAmB,EAAE;IAC3B;IAEQ,mBAAmB,GAAA;QAC1B,IAAI,CAAC,cAAc,GAAG;YACrB,GAAG,IAAI,CAAC,cAAc;YACtB,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,aAAa,EAAE,YAAY,EAAE,MAAM,IAAI,CAAC,YAAY,EAAE,CAAC;YAC9F,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,aAAa,EAAE,YAAY,EAAE,MAAM,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,IAAI,CAAC,SAAS,EAAE,CAAC,CAAC;YAC9G,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,aAAa,EAAE,OAAO,EAAE,MAAM,IAAI,CAAC,YAAY,EAAE,CAAC;YACzF,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,aAAa,EAAE,MAAM,EAAE,MAAM,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,IAAI,CAAC,SAAS,EAAE,CAAC,CAAC;SACxG;IACF;AAEA;AACsD;IAC9C,YAAY,GAAA;AACnB,QAAA,MAAM,IAAI,GAAG,CAAC,CAAC,IAAI,CAAC,MAAM,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,aAAa,EAAE;QAC1D,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,IAAI,GAAG,CAAC,GAAG,IAAI,CAAC,SAAS,EAAE,EAAE,IAAI,CAAC;IACpD;IAEQ,mBAAmB,GAAA;QAC1B,IAAI,CAAC,cAAc,GAAG;YACrB,GAAG,IAAI,CAAC,cAAc;YACtB,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,WAAW,EAAE,QAAQ,EAAE,MAAM,IAAI,CAAC,KAAK,EAAE,CAAC;SAC/E;IACF;IAEQ,qBAAqB,GAAA;AAC5B,QAAA,KAAK,MAAM,QAAQ,IAAI,IAAI,CAAC,cAAc,EAAE;AAC3C,YAAA,QAAQ,EAAE;QACX;AACA,QAAA,IAAI,CAAC,cAAc,GAAG,EAAE;IACzB;IAEQ,KAAK,CAAC,MAAe,EAAE,KAAK,GAAG,CAAC,CAAC,EAAE,OAAO,GAAG,KAAK,EAAA;AACzD,QAAA,IAAI,CAAC,aAAa,EAAE,IAAI,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC;IACrD;IAEQ,oBAAoB,GAAA;AAC3B,QAAA,IAAI,CAAC,aAAa,EAAE,QAAQ,EAAE;AAC9B,QAAA,IAAI,CAAC,aAAa,GAAG,IAAI,OAAO,EAAe;AAE/C,QAAA,IAAI,CAAC;aACH,IAAI,CACJ,SAAS,CAAC,CAAC,MAAM,MAAM,MAAM,CAAC,KAAK,GAAG,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,GAAG,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,MAAM,CAAC,CAAC,CAAC,CAAC,EACpG,kBAAkB,CAAC,IAAI,CAAC,WAAW,CAAC;AAEpC,aAAA,SAAS,CAAC,CAAC,MAAM,KAAI;AACrB,YAAA,IAAI,MAAM,CAAC,MAAM,EAAE;AAClB,gBAAA,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,OAAO,CAAC;YAC3B;iBAAO;gBACN,IAAI,CAAC,KAAK,EAAE;YACb;AACD,QAAA,CAAC,CAAC;IACJ;IAEQ,KAAK,CAAC,OAAO,GAAG,KAAK,EAAA;QAC5B,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,IAAI,IAAI,CAAC,sBAAsB,EAAE,EAAE;YAC1D;QACD;;;QAIA,MAAM,SAAS,GAAG,OAAO,GAAG,cAAc,GAAG,MAAM;;;AAInD,QAAA,IAAI,IAAI,CAAC,aAAa,EAAE;YACvB,IAAI,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,KAAK,EAAE,KAAK,QAAQ,EAAE;gBACrD,IAAI,CAAC,gBAAgB,EAAE;gBACvB,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,SAAS,CAAC;;;AAGhD,gBAAA,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,aAAa,CAAC,QAAQ,EAAE,IAAI,CAAC,eAAe,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;AAC7F,gBAAA,IAAI,CAAC,MAAM,EAAE,MAAM,EAAE;AACrB,gBAAA,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE;YACjB;YACA;QACD;AAEA,QAAA,MAAM,aAAa,GAAG,IAAI,eAAe,CAAC,iBAAiB,CAAC;QAC5D,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,WAAW,EAAE,MAAM,CAAC,aAAa,CAAC;AAC5D,QAAA,IAAI,CAAC,aAAa,EAAE,SAAS,CAAC,MAAK;AAClC,YAAA,IAAI,CAAC,aAAa,GAAG,SAAS;AAC/B,QAAA,CAAC,CAAC;QACF,IAAI,CAAC,aAAa,EAAE,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,SAAS,CAAC;AACjD,QAAA,IAAI,CAAC,MAAM,EAAE,MAAM,EAAE;AACrB,QAAA,IAAI,IAAI,CAAC,aAAa,EAAE;AACvB,YAAA,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,aAAa,CAAC,QAAQ,EAAE,IAAI,CAAC,QAAQ,EAAE,CAAC;QACtE;;;;QAKA,MAAM,QAAQ,GAAG,IAAI,CAAC,WAAW,EAAE,SAAS,EAAE,CAAC,gBAAiE;AAChH,QAAA,IAAI,QAAQ,IAAI,IAAI,CAAC,aAAa,EAAE;AACnC,YAAA,MAAM,OAAO,GAAG,IAAI,CAAC,aAAa;AAClC,YAAA,IAAI,CAAC,kBAAkB,GAAG,QAAQ,CAAC;AACjC,iBAAA,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,WAAW,CAAC;AACzC,iBAAA,SAAS,CAAC,CAAC,MAAM,KAAI;gBACrB,MAAM,QAAQ,GAAG,sBAAsB,CAAC,MAAM,CAAC,cAAc,CAAC;gBAC9D,IAAI,QAAQ,EAAE;oBACb,IAAI,CAAC,kBAAkB,CAAC,OAAO,CAAC,QAAQ,EAAE,QAAQ,EAAE,IAAI,CAAC;gBAC1D;AACD,YAAA,CAAC,CAAC;QACJ;AAEA,QAAA,qBAAqB,CAAC,IAAI,CAAC,SAAS,EAAE,MAAK;AAC1C,YAAA,IAAI,CAAC,cAAc,GAAG,MAAM,CAAC,MAAK;gBACjC,MAAM,SAAS,GAAG,IAAI,CAAC,aAAa,EAAE,QAAQ,CAAC,EAAE,EAAE;gBACnD,IAAI,SAAS,EAAE;AACd,oBAAA,IAAI,CAAC,SAAS,CAAC,YAAY,CAAC,IAAI,CAAC,WAAW,CAAC,aAAa,EAAE,kBAAkB,EAAE,SAAS,CAAC;AAC1F,oBAAA,IAAI,CAAC,cAAc,EAAE,OAAO,EAAE;AAC9B,oBAAA,IAAI,CAAC,cAAc,GAAG,SAAS;gBAChC;AACD,YAAA,CAAC,qFAAC;AACH,QAAA,CAAC,CAAC;AACF,QAAA,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE;IACjB;AAEA;AACoG;IAC5F,kBAAkB,CACzB,OAA0B,EAC1B,QAA4B,EAC5B,IAAA,GAAuB,IAAI,CAAC,YAAY,EAAE,EAAA;AAE1C,QAAA,IAAI,CAAC,eAAe,GAAG,QAAQ;AAC/B,QAAA,OAAO,CAAC,QAAQ,CACf,IAAI,EACJ,QAAQ,EACR,IAAI,CAAC,OAAO,CAAC,qBAAqB,EAClC,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,QAAQ,CAAC,EACnC,IAAI,CAAC,OAAO,CAAC,UAAU,CACvB;IACF;IAEQ,KAAK,GAAA;AACZ,QAAA,IAAI,CAAC,IAAI,CAAC,aAAa,IAAI,IAAI,CAAC,eAAe;YAAE;;QAEjD,IAAI,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,KAAK,EAAE,KAAK,QAAQ;YAAE;QACtD,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,QAAQ,CAAC;AAC/C,QAAA,IAAI,CAAC,MAAM,EAAE,OAAO,EAAE;AACtB,QAAA,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE;AAChB,QAAA,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,aAAa,CAAC;IACzC;AAEA;;;AAGG;AACK,IAAA,eAAe,CAAC,YAA6C,EAAA;AACpE,QAAA,MAAM,UAAU,GAAG,EAAE,IAAI,CAAC,gBAAgB;AAC1C,QAAA,MAAM,OAAO,GAAG,YAAY,CAAC,QAAQ,CAAC,aAA4B;QAClE,eAAe,CACd,MAAK;YACJ,KAAK,wBAAwB,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,MAAK;AAChD,gBAAA,IAAI,UAAU,KAAK,IAAI,CAAC,gBAAgB;oBAAE,IAAI,CAAC,OAAO,EAAE;AACzD,YAAA,CAAC,CAAC;QACH,CAAC,EACD,EAAE,QAAQ,EAAE,IAAI,CAAC,SAAS,EAAE,CAC5B;IACF;IAEQ,OAAO,GAAA;QACd,IAAI,CAAC,qBAAqB,EAAE;AAC5B,QAAA,IAAI,CAAC,kBAAkB,EAAE,WAAW,EAAE;AACtC,QAAA,IAAI,CAAC,kBAAkB,GAAG,SAAS;AACnC,QAAA,IAAI,CAAC,SAAS,CAAC,eAAe,CAAC,IAAI,CAAC,WAAW,CAAC,aAAa,EAAE,kBAAkB,CAAC;AAClF,QAAA,IAAI,CAAC,WAAW,EAAE,MAAM,EAAE;IAC3B;IAEQ,qBAAqB,GAAA;AAC5B,QAAA,IAAI,IAAI,CAAC,cAAc,EAAE;AACxB,YAAA,IAAI,CAAC,cAAc,CAAC,OAAO,EAAE;AAC7B,YAAA,IAAI,CAAC,cAAc,GAAG,SAAS;QAChC;IACD;2HAxSY,UAAU,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;+GAAV,UAAU,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,EAAA,eAAA,EAAA,EAAA,iBAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,QAAA,EAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,iBAAA,EAAA,YAAA,EAAA,UAAA,EAAA,YAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,iBAAA,EAAA,WAAA,EAAA,UAAA,EAAA,WAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,iBAAA,EAAA,WAAA,EAAA,UAAA,EAAA,WAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,OAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,QAAA,EAAA,CAAA,YAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA;;4FAAV,UAAU,EAAA,UAAA,EAAA,CAAA;kBADtB,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA,EAAE,QAAQ,EAAE,cAAc,EAAE,QAAQ,EAAE,YAAY,EAAE;;;MC1ClD,iBAAiB,GAAG,CAAC,UAAU,EAAE,iBAAiB;;ACV/D;;AAEG;;;;"}
|
package/package.json
CHANGED
|
@@ -1,10 +1,11 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@spartan-ng/brain",
|
|
3
|
-
"version": "0.0
|
|
3
|
+
"version": "1.0.0",
|
|
4
4
|
"repository": {
|
|
5
5
|
"type": "git",
|
|
6
|
-
"url": "https://github.com/spartan-ng/spartan"
|
|
6
|
+
"url": "https://github.com/spartan-ng/spartan.git"
|
|
7
7
|
},
|
|
8
|
+
"license": "MIT",
|
|
8
9
|
"sideEffects": false,
|
|
9
10
|
"exports": {
|
|
10
11
|
"./hlm-tailwind-preset.css": "./hlm-tailwind-preset.css",
|
|
@@ -184,6 +185,9 @@
|
|
|
184
185
|
"optional": true
|
|
185
186
|
}
|
|
186
187
|
},
|
|
188
|
+
"publishConfig": {
|
|
189
|
+
"access": "public"
|
|
190
|
+
},
|
|
187
191
|
"module": "fesm2022/spartan-ng-brain.mjs",
|
|
188
192
|
"typings": "types/spartan-ng-brain.d.ts",
|
|
189
193
|
"type": "module",
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
import * as _angular_cdk_bidi from '@angular/cdk/bidi';
|
|
2
2
|
import * as _angular_core from '@angular/core';
|
|
3
|
-
import { AfterContentInit, OnDestroy, InjectionToken, Type, ExistingProvider
|
|
3
|
+
import { AfterContentInit, OnDestroy, InjectionToken, Type, ExistingProvider } from '@angular/core';
|
|
4
4
|
import * as _angular_cdk_coercion from '@angular/cdk/coercion';
|
|
5
5
|
import { BooleanInput } from '@angular/cdk/coercion';
|
|
6
6
|
import { FocusableOption } from '@angular/cdk/a11y';
|
|
7
|
-
import
|
|
7
|
+
import * as _spartan_ng_brain_core from '@spartan-ng/brain/core';
|
|
8
8
|
|
|
9
9
|
declare class BrnAccordionTrigger implements FocusableOption {
|
|
10
10
|
private readonly _destroyRef;
|
|
@@ -66,14 +66,8 @@ declare class BrnAccordion implements AfterContentInit, OnDestroy {
|
|
|
66
66
|
}
|
|
67
67
|
|
|
68
68
|
declare class BrnAccordionContent {
|
|
69
|
-
private readonly _config;
|
|
70
69
|
private readonly _item;
|
|
71
|
-
|
|
72
|
-
private readonly _destroyRef;
|
|
73
|
-
private readonly _ngZone;
|
|
74
|
-
private readonly _platformId;
|
|
75
|
-
protected readonly _width: _angular_core.WritableSignal<number | null>;
|
|
76
|
-
protected readonly _height: _angular_core.WritableSignal<number | null>;
|
|
70
|
+
protected readonly _dimensions: _spartan_ng_brain_core.ContentDimensions;
|
|
77
71
|
protected readonly _inert: _angular_core.Signal<true | undefined>;
|
|
78
72
|
readonly state: _angular_core.Signal<"open" | "closed">;
|
|
79
73
|
readonly id: string;
|
|
@@ -84,8 +78,6 @@ declare class BrnAccordionContent {
|
|
|
84
78
|
*/
|
|
85
79
|
readonly style: _angular_core.InputSignal<string>;
|
|
86
80
|
constructor();
|
|
87
|
-
private _measureAndSetDimensions;
|
|
88
|
-
private _setupVisibilityObserver;
|
|
89
81
|
static ɵfac: _angular_core.ɵɵFactoryDeclaration<BrnAccordionContent, never>;
|
|
90
82
|
static ɵdir: _angular_core.ɵɵDirectiveDeclaration<BrnAccordionContent, "brn-accordion-content,[brnAccordionContent]", never, { "style": { "alias": "style"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
|
|
91
83
|
}
|
|
@@ -139,17 +131,7 @@ declare function provideBrnAccordion(accordion: Type<BrnAccordion>): ExistingPro
|
|
|
139
131
|
declare const BrnAccordionItemToken: InjectionToken<BrnAccordionItem>;
|
|
140
132
|
declare function injectBrnAccordionItem(): BrnAccordionItem;
|
|
141
133
|
declare function provideBrnAccordionItem(item: Type<BrnAccordionItem>): ExistingProvider;
|
|
142
|
-
interface BrBrnAccordionConfig {
|
|
143
|
-
/**
|
|
144
|
-
* The display style to use when measuring element dimensions.
|
|
145
|
-
* @default 'block'
|
|
146
|
-
*/
|
|
147
|
-
measurementDisplay: MeasurementDisplay;
|
|
148
|
-
}
|
|
149
|
-
declare function provideBrnAccordionConfig(config: Partial<BrBrnAccordionConfig>): ValueProvider;
|
|
150
|
-
declare function injectBrnAccordionConfig(): BrBrnAccordionConfig;
|
|
151
134
|
|
|
152
135
|
declare const BrnAccordionImports: readonly [typeof BrnAccordion, typeof BrnAccordionContent, typeof BrnAccordionHeader, typeof BrnAccordionItem, typeof BrnAccordionTrigger];
|
|
153
136
|
|
|
154
|
-
export { BrnAccordion, BrnAccordionContent, BrnAccordionHeader, BrnAccordionImports, BrnAccordionItem, BrnAccordionItemToken, BrnAccordionToken, BrnAccordionTrigger, injectBrnAccordion,
|
|
155
|
-
export type { BrBrnAccordionConfig };
|
|
137
|
+
export { BrnAccordion, BrnAccordionContent, BrnAccordionHeader, BrnAccordionImports, BrnAccordionItem, BrnAccordionItemToken, BrnAccordionToken, BrnAccordionTrigger, injectBrnAccordion, injectBrnAccordionItem, provideBrnAccordion, provideBrnAccordionItem };
|
|
@@ -183,6 +183,7 @@ declare class BrnAutocompleteContent {
|
|
|
183
183
|
/** Determine if the autocomplete has any visible items */
|
|
184
184
|
protected readonly _visibleItems: _angular_core.Signal<boolean>;
|
|
185
185
|
protected readonly _autocompleteWidth: _angular_core.Signal<number | null>;
|
|
186
|
+
protected readonly _dataState: _angular_core.Signal<"closed" | "open">;
|
|
186
187
|
static ɵfac: _angular_core.ɵɵFactoryDeclaration<BrnAutocompleteContent, never>;
|
|
187
188
|
static ɵdir: _angular_core.ɵɵDirectiveDeclaration<BrnAutocompleteContent, "[brnAutocompleteContent]", never, {}, {}, never, never, true, never>;
|
|
188
189
|
}
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import * as _angular_core from '@angular/core';
|
|
2
|
-
import { InjectionToken, Type, ExistingProvider
|
|
2
|
+
import { InjectionToken, Type, ExistingProvider } from '@angular/core';
|
|
3
3
|
import { BooleanInput } from '@angular/cdk/coercion';
|
|
4
|
+
import * as _spartan_ng_brain_core from '@spartan-ng/brain/core';
|
|
4
5
|
import * as _spartan_ng_brain_collapsible from '@spartan-ng/brain/collapsible';
|
|
5
|
-
import { MeasurementDisplay } from '@spartan-ng/brain/core';
|
|
6
6
|
|
|
7
7
|
type BrnCollapsibleState = 'open' | 'closed';
|
|
8
8
|
declare class BrnCollapsible {
|
|
@@ -28,21 +28,13 @@ declare class BrnCollapsible {
|
|
|
28
28
|
}
|
|
29
29
|
|
|
30
30
|
declare class BrnCollapsibleContent {
|
|
31
|
-
private readonly _config;
|
|
32
|
-
private readonly _elementRef;
|
|
33
|
-
private readonly _destroyRef;
|
|
34
|
-
private readonly _ngZone;
|
|
35
|
-
private readonly _platformId;
|
|
36
31
|
protected readonly _collapsible: _spartan_ng_brain_collapsible.BrnCollapsible | null;
|
|
37
|
-
protected readonly
|
|
38
|
-
protected readonly _height: _angular_core.WritableSignal<number | null>;
|
|
32
|
+
protected readonly _dimensions: _spartan_ng_brain_core.ContentDimensions;
|
|
39
33
|
/**
|
|
40
34
|
* The id of the collapsible content element.
|
|
41
35
|
*/
|
|
42
36
|
readonly id: _angular_core.InputSignal<string | null | undefined>;
|
|
43
37
|
constructor();
|
|
44
|
-
private _measureAndSetDimensions;
|
|
45
|
-
private _setupVisibilityObserver;
|
|
46
38
|
static ɵfac: _angular_core.ɵɵFactoryDeclaration<BrnCollapsibleContent, never>;
|
|
47
39
|
static ɵdir: _angular_core.ɵɵDirectiveDeclaration<BrnCollapsibleContent, "[brnCollapsibleContent],brn-collapsible-content", never, { "id": { "alias": "id"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
|
|
48
40
|
}
|
|
@@ -59,17 +51,8 @@ declare class BrnCollapsibleTrigger {
|
|
|
59
51
|
declare const BrnCollapsibleToken: InjectionToken<BrnCollapsible>;
|
|
60
52
|
declare function injectBrnCollapsible(): BrnCollapsible | null;
|
|
61
53
|
declare function provideBrnCollapsible(collapsible: Type<BrnCollapsible>): ExistingProvider;
|
|
62
|
-
interface BrCollapsibleConfig {
|
|
63
|
-
/**
|
|
64
|
-
* The display style to use when measuring element dimensions.
|
|
65
|
-
* @default 'block'
|
|
66
|
-
*/
|
|
67
|
-
measurementDisplay: MeasurementDisplay;
|
|
68
|
-
}
|
|
69
|
-
declare function provideBrnCollapsibleConfig(config: Partial<BrCollapsibleConfig>): ValueProvider;
|
|
70
|
-
declare function injectBrnCollapsibleConfig(): BrCollapsibleConfig;
|
|
71
54
|
|
|
72
55
|
declare const BrnCollapsibleImports: readonly [typeof BrnCollapsible, typeof BrnCollapsibleTrigger, typeof BrnCollapsibleContent];
|
|
73
56
|
|
|
74
|
-
export { BrnCollapsible, BrnCollapsibleContent, BrnCollapsibleImports, BrnCollapsibleToken, BrnCollapsibleTrigger, injectBrnCollapsible,
|
|
75
|
-
export type {
|
|
57
|
+
export { BrnCollapsible, BrnCollapsibleContent, BrnCollapsibleImports, BrnCollapsibleToken, BrnCollapsibleTrigger, injectBrnCollapsible, provideBrnCollapsible };
|
|
58
|
+
export type { BrnCollapsibleState };
|
|
@@ -266,6 +266,7 @@ declare class BrnComboboxClear {
|
|
|
266
266
|
declare class BrnComboboxContent {
|
|
267
267
|
private readonly _combobox;
|
|
268
268
|
readonly el: ElementRef<HTMLElement>;
|
|
269
|
+
protected readonly _dataState: _angular_core.Signal<"open" | "closed">;
|
|
269
270
|
/** Determine if the combobox has no visible items */
|
|
270
271
|
protected readonly _isEmpty: _angular_core.Signal<boolean>;
|
|
271
272
|
protected readonly _comboboxWidth: _angular_core.Signal<number | null>;
|
|
@@ -395,9 +396,17 @@ declare class BrnComboboxPlaceholder {
|
|
|
395
396
|
declare class BrnComboboxPopoverTrigger<T> {
|
|
396
397
|
private readonly _combobox;
|
|
397
398
|
private readonly _brnOverlay;
|
|
398
|
-
|
|
399
|
+
/**
|
|
400
|
+
* Whether clicking the trigger may close an open popover. Button triggers toggle (click again to
|
|
401
|
+
* close); text-input triggers set this to `false` so clicking or typing in an open combobox only
|
|
402
|
+
* ever opens it and never closes it underneath the user.
|
|
403
|
+
*/
|
|
404
|
+
readonly closeOnTriggerClickInput: _angular_core.InputSignalWithTransform<boolean, BooleanInput>;
|
|
405
|
+
/** Writable, input-synced state so the behavior can also be set programmatically. */
|
|
406
|
+
readonly closeOnTriggerClick: _angular_core.WritableSignal<boolean>;
|
|
407
|
+
protected _onClick(): void;
|
|
399
408
|
static ɵfac: _angular_core.ɵɵFactoryDeclaration<BrnComboboxPopoverTrigger<any>, never>;
|
|
400
|
-
static ɵdir: _angular_core.ɵɵDirectiveDeclaration<BrnComboboxPopoverTrigger<any>, "[brnComboboxPopoverTrigger]", never, {}, {}, never, never, true, never>;
|
|
409
|
+
static ɵdir: _angular_core.ɵɵDirectiveDeclaration<BrnComboboxPopoverTrigger<any>, "[brnComboboxPopoverTrigger]", never, { "closeOnTriggerClickInput": { "alias": "closeOnTriggerClick"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
|
|
401
410
|
}
|
|
402
411
|
|
|
403
412
|
declare class BrnComboboxSeparator {
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import * as _angular_core from '@angular/core';
|
|
2
|
-
import { Signal, NgZone, ElementRef, Injector } from '@angular/core';
|
|
2
|
+
import { Signal, NgZone, ElementRef, Injector, InjectionToken } from '@angular/core';
|
|
3
3
|
import { Subject, Observable, MonoTypeOperatorFunction } from 'rxjs';
|
|
4
4
|
import { ConnectedPosition } from '@angular/cdk/overlay';
|
|
5
5
|
|
|
@@ -110,6 +110,21 @@ declare const provideExposesStateProvider: (value: ExposesState) => _angular_cor
|
|
|
110
110
|
declare const provideExposesStateProviderExisting: (valueFactory: () => _angular_core.Type<ExposesState>) => _angular_core.Provider;
|
|
111
111
|
declare const EXPOSES_STATE_TOKEN: _angular_core.InjectionToken<ExposesState>;
|
|
112
112
|
|
|
113
|
+
/** Reactive natural size of a collapsible host's projected content, or `null` before measurement. */
|
|
114
|
+
interface ContentDimensions {
|
|
115
|
+
width: Signal<number | null>;
|
|
116
|
+
height: Signal<number | null>;
|
|
117
|
+
}
|
|
118
|
+
/**
|
|
119
|
+
* Measures the natural size of a collapsible host's content via `scrollHeight` so it can animate
|
|
120
|
+
* between `height: 0` and a measured pixel height - the whole content is covered, regardless of how
|
|
121
|
+
* it is projected. A `ResizeObserver` on the content keeps the value live. SSR-safe; the host must
|
|
122
|
+
* be a block-level element for `scrollHeight` to reflect its content.
|
|
123
|
+
*
|
|
124
|
+
* @returns Signals with the content's width and height in px, or `null` before measurement.
|
|
125
|
+
*/
|
|
126
|
+
declare function injectContentDimensions(): ContentDimensions;
|
|
127
|
+
|
|
113
128
|
/**
|
|
114
129
|
* Returns a reactive signal that tracks the size of a DOM element.
|
|
115
130
|
*
|
|
@@ -138,19 +153,35 @@ interface ElementSizeOptions {
|
|
|
138
153
|
injector?: Injector;
|
|
139
154
|
}
|
|
140
155
|
|
|
141
|
-
type MeasurementDisplay = 'block' | 'inline-block' | 'flex' | 'grid' | 'table' | 'contents' | (string & {});
|
|
142
|
-
declare const measureDimensions: (elementToMeasure: HTMLElement, measurementDisplay: MeasurementDisplay) => {
|
|
143
|
-
width: number;
|
|
144
|
-
height: number;
|
|
145
|
-
};
|
|
146
|
-
|
|
147
156
|
type MenuAlign = 'start' | 'center' | 'end';
|
|
148
157
|
type MenuSide = 'top' | 'bottom' | 'left' | 'right';
|
|
158
|
+
/**
|
|
159
|
+
* Lets a menu trigger expose its configured `side` to the portaled content. CDK gives the content a
|
|
160
|
+
* child injector whose parent is the trigger's injector, so the content can resolve this token to
|
|
161
|
+
* learn which axis to read off the transform-origin.
|
|
162
|
+
*/
|
|
163
|
+
interface MenuSideProvider {
|
|
164
|
+
readonly side: () => MenuSide;
|
|
165
|
+
}
|
|
166
|
+
declare const MENU_SIDE: InjectionToken<MenuSideProvider>;
|
|
167
|
+
declare const deriveMenuSideFromTransformOrigin: (transformOrigin: string, side: MenuSide) => MenuSide;
|
|
149
168
|
declare const createMenuPosition: (align: MenuAlign, side: MenuSide) => ConnectedPosition[];
|
|
150
169
|
|
|
151
170
|
declare function stringifyAsLabel(item: any, itemToStringLabel?: (item: any) => string): string;
|
|
152
171
|
declare function serializeValue(value: unknown): string;
|
|
153
172
|
|
|
173
|
+
/** Skip-delay grouping: once one member opens, siblings skip their delay until the window elapses. */
|
|
174
|
+
interface SkipDelay {
|
|
175
|
+
/** Whether the next open should still wait for its delay (`true`) or open instantly (`false`). */
|
|
176
|
+
readonly isOpenDelayed: Signal<boolean>;
|
|
177
|
+
/** Report that a member opened: opens the skip window so siblings skip their delay. */
|
|
178
|
+
open(): void;
|
|
179
|
+
/** Report that a member closed: re-require the delay once the window elapses. */
|
|
180
|
+
close(): void;
|
|
181
|
+
}
|
|
182
|
+
/** Must be called in an injection context; cleans up its pending timer on destroy. */
|
|
183
|
+
declare function injectSkipDelay(skipDelayDuration: () => number): SkipDelay;
|
|
184
|
+
|
|
154
185
|
interface TableClassesSettable {
|
|
155
186
|
setTableClasses: (classes: Partial<{
|
|
156
187
|
table: string;
|
|
@@ -188,5 +219,5 @@ declare function brnZoneFull<T>(zone: NgZone): MonoTypeOperatorFunction<T>;
|
|
|
188
219
|
declare function brnZoneFree<T>(zone: NgZone): MonoTypeOperatorFunction<T>;
|
|
189
220
|
declare function brnZoneOptimized<T>(zone: NgZone): MonoTypeOperatorFunction<T>;
|
|
190
221
|
|
|
191
|
-
export { EXPOSES_SIDE_TOKEN, EXPOSES_STATE_TOKEN, SET_CLASS_TO_CUSTOM_ELEMENT_TOKEN, SET_TABLE_CLASSES_TOKEN, brnDevMode, brnZoneFree, brnZoneFull, brnZoneOptimized, computedPrevious, createHoverObservable, createMenuPosition, cssClassesToArray, debouncedSignal, getActiveElementAnimations, injectCustomClassSettable, injectElementSize, injectExposedSideProvider, injectExposesStateProvider, injectTableClassesSettable, isElement,
|
|
192
|
-
export type { CustomElementClassSettable, ExposesSide, ExposesState,
|
|
222
|
+
export { EXPOSES_SIDE_TOKEN, EXPOSES_STATE_TOKEN, MENU_SIDE, SET_CLASS_TO_CUSTOM_ELEMENT_TOKEN, SET_TABLE_CLASSES_TOKEN, brnDevMode, brnZoneFree, brnZoneFull, brnZoneOptimized, computedPrevious, createHoverObservable, createMenuPosition, cssClassesToArray, debouncedSignal, deriveMenuSideFromTransformOrigin, getActiveElementAnimations, injectContentDimensions, injectCustomClassSettable, injectElementSize, injectExposedSideProvider, injectExposesStateProvider, injectSkipDelay, injectTableClassesSettable, isElement, provideCustomClassSettable, provideCustomClassSettableExisting, provideExposedSideProvider, provideExposedSideProviderExisting, provideExposesStateProvider, provideExposesStateProviderExisting, provideTableClassesSettable, provideTableClassesSettableExisting, serializeValue, stringifyAsLabel, waitForAnimations, waitForElementAnimations };
|
|
223
|
+
export type { ContentDimensions, CustomElementClassSettable, ExposesSide, ExposesState, MenuAlign, MenuSide, MenuSideProvider, SkipDelay, TableClassesSettable };
|
|
@@ -20,7 +20,6 @@ type BrnDialogOptions = {
|
|
|
20
20
|
autoFocus: boolean | AutoFocusTarget | (Record<never, never> & string);
|
|
21
21
|
backdropClass: string | string[];
|
|
22
22
|
direction?: Direction;
|
|
23
|
-
closeOnBackdropClick: boolean;
|
|
24
23
|
closeOnOutsidePointerEvents: boolean;
|
|
25
24
|
disableClose: boolean;
|
|
26
25
|
hasBackdrop: boolean;
|
|
@@ -66,7 +65,6 @@ declare class BrnDialog<TResult = unknown, TContext extends Record<string, unkno
|
|
|
66
65
|
readonly scrollStrategy: _angular_core.InputSignal<ScrollStrategy | "close" | "reposition" | null | undefined>;
|
|
67
66
|
readonly restoreFocus: _angular_core.InputSignal<_angular_cdk_dialog.RestoreFocusValue>;
|
|
68
67
|
readonly closeOnOutsidePointerEvents: _angular_core.InputSignalWithTransform<boolean, BooleanInput>;
|
|
69
|
-
readonly closeOnBackdropClick: _angular_core.InputSignalWithTransform<boolean, BooleanInput>;
|
|
70
68
|
readonly attachTo: _angular_core.InputSignal<_angular_cdk_overlay.FlexibleConnectedPositionStrategyOrigin | null | undefined>;
|
|
71
69
|
readonly attachPositions: _angular_core.InputSignal<_angular_cdk_overlay.ConnectedPosition[]>;
|
|
72
70
|
readonly autoFocus: _angular_core.InputSignal<boolean | _angular_cdk_dialog.AutoFocusTarget | (Record<never, never> & string)>;
|
|
@@ -91,7 +89,7 @@ declare class BrnDialog<TResult = unknown, TContext extends Record<string, unkno
|
|
|
91
89
|
private _syncPanelClass;
|
|
92
90
|
private _syncOverlayClass;
|
|
93
91
|
static ɵfac: _angular_core.ɵɵFactoryDeclaration<BrnDialog<any, any>, never>;
|
|
94
|
-
static ɵdir: _angular_core.ɵɵDirectiveDeclaration<BrnDialog<any, any>, "[brnDialog],brn-dialog", ["brnDialog"], { "id": { "alias": "id"; "required": false; "isSignal": true; }; "state": { "alias": "state"; "required": false; "isSignal": true; }; "role": { "alias": "role"; "required": false; "isSignal": true; }; "hasBackdrop": { "alias": "hasBackdrop"; "required": false; "isSignal": true; }; "positionStrategy": { "alias": "positionStrategy"; "required": false; "isSignal": true; }; "scrollStrategy": { "alias": "scrollStrategy"; "required": false; "isSignal": true; }; "restoreFocus": { "alias": "restoreFocus"; "required": false; "isSignal": true; }; "closeOnOutsidePointerEvents": { "alias": "closeOnOutsidePointerEvents"; "required": false; "isSignal": true; }; "
|
|
92
|
+
static ɵdir: _angular_core.ɵɵDirectiveDeclaration<BrnDialog<any, any>, "[brnDialog],brn-dialog", ["brnDialog"], { "id": { "alias": "id"; "required": false; "isSignal": true; }; "state": { "alias": "state"; "required": false; "isSignal": true; }; "role": { "alias": "role"; "required": false; "isSignal": true; }; "hasBackdrop": { "alias": "hasBackdrop"; "required": false; "isSignal": true; }; "positionStrategy": { "alias": "positionStrategy"; "required": false; "isSignal": true; }; "scrollStrategy": { "alias": "scrollStrategy"; "required": false; "isSignal": true; }; "restoreFocus": { "alias": "restoreFocus"; "required": false; "isSignal": true; }; "closeOnOutsidePointerEvents": { "alias": "closeOnOutsidePointerEvents"; "required": false; "isSignal": true; }; "attachTo": { "alias": "attachTo"; "required": false; "isSignal": true; }; "attachPositions": { "alias": "attachPositions"; "required": false; "isSignal": true; }; "autoFocus": { "alias": "autoFocus"; "required": false; "isSignal": true; }; "disableClose": { "alias": "disableClose"; "required": false; "isSignal": true; }; "ariaDescribedBy": { "alias": "aria-describedby"; "required": false; "isSignal": true; }; "ariaLabelledBy": { "alias": "aria-labelledby"; "required": false; "isSignal": true; }; "ariaLabel": { "alias": "aria-label"; "required": false; "isSignal": true; }; "ariaModal": { "alias": "aria-modal"; "required": false; "isSignal": true; }; }, { "closed": "closed"; "stateChanged": "stateChanged"; }, never, never, true, never>;
|
|
95
93
|
}
|
|
96
94
|
|
|
97
95
|
declare class BrnDialogClose {
|
|
@@ -5,11 +5,11 @@ import { BrnDialog, BrnDialogClose, BrnDialogContent, BrnDialogOverlay, BrnDialo
|
|
|
5
5
|
import { ExposesSide } from '@spartan-ng/brain/core';
|
|
6
6
|
|
|
7
7
|
declare class BrnDrawer extends BrnDialog {
|
|
8
|
-
readonly
|
|
9
|
-
readonly
|
|
8
|
+
readonly directionInput: i0.InputSignal<"bottom" | "top" | "left" | "right">;
|
|
9
|
+
readonly direction: i0.WritableSignal<"bottom" | "top" | "left" | "right">;
|
|
10
10
|
protected getPositionStrategy(): _angular_cdk_overlay.GlobalPositionStrategy;
|
|
11
11
|
static ɵfac: i0.ɵɵFactoryDeclaration<BrnDrawer, never>;
|
|
12
|
-
static ɵdir: i0.ɵɵDirectiveDeclaration<BrnDrawer, "[brnDrawer],brn-drawer", ["brnDrawer"], { "
|
|
12
|
+
static ɵdir: i0.ɵɵDirectiveDeclaration<BrnDrawer, "[brnDrawer],brn-drawer", ["brnDrawer"], { "directionInput": { "alias": "direction"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
|
|
13
13
|
}
|
|
14
14
|
|
|
15
15
|
declare class BrnDrawerClose extends BrnDialogClose {
|
|
@@ -64,9 +64,8 @@ declare class BrnNavigationMenu implements OnDestroy {
|
|
|
64
64
|
* The orientation of the menu.
|
|
65
65
|
*/
|
|
66
66
|
readonly orientation: _angular_core.InputSignal<"horizontal" | "vertical">;
|
|
67
|
-
private readonly
|
|
67
|
+
private readonly _skipDelay;
|
|
68
68
|
readonly isOpenDelayed: _angular_core.Signal<boolean>;
|
|
69
|
-
private _skipDelayTimerRef;
|
|
70
69
|
private readonly _navAndSubnavMenuItems;
|
|
71
70
|
readonly menuItems: _angular_core.Signal<BrnNavigationMenuItem[]>;
|
|
72
71
|
readonly menuItemIds: _angular_core.Signal<string[]>;
|
|
@@ -89,6 +88,8 @@ declare class BrnNavigationMenu implements OnDestroy {
|
|
|
89
88
|
setTriggerHovered(hovered: boolean): void;
|
|
90
89
|
isLink(id?: string): boolean;
|
|
91
90
|
setActiveItem(item: FocusableOption): void;
|
|
91
|
+
/** Focuses the sibling trigger/link `delta` steps from `current`, skipping disabled ones. @internal */
|
|
92
|
+
focusSibling(current: FocusableOption, delta: 1 | -1): boolean;
|
|
92
93
|
protected handleKeydown(event: KeyboardEvent): void;
|
|
93
94
|
ngOnDestroy(): void;
|
|
94
95
|
static ɵfac: _angular_core.ɵɵFactoryDeclaration<BrnNavigationMenu, never>;
|
|
@@ -157,6 +158,7 @@ declare class BrnNavigationMenuTrigger implements OnInit, OnDestroy, FocusableOp
|
|
|
157
158
|
protected readonly _id: string;
|
|
158
159
|
private readonly _parentNavMenu;
|
|
159
160
|
protected readonly _isActive: _angular_core.Signal<boolean>;
|
|
161
|
+
protected readonly _ariaControls: _angular_core.Signal<string | null>;
|
|
160
162
|
protected readonly _contentId: string;
|
|
161
163
|
protected readonly _state: _angular_core.Signal<"open" | "closed">;
|
|
162
164
|
private readonly _dir;
|
|
@@ -176,7 +178,12 @@ declare class BrnNavigationMenuTrigger implements OnInit, OnDestroy, FocusableOp
|
|
|
176
178
|
focus(_origin?: FocusOrigin): void;
|
|
177
179
|
protected handleFocus(): void;
|
|
178
180
|
protected onTab(e: Event): void;
|
|
181
|
+
/** Arrow-key entry into the open content: ArrowDown (horizontal) or ArrowRight/Left (vertical, dir-aware). */
|
|
182
|
+
protected onEntryKey(e: Event, orientation: 'horizontal' | 'vertical', dir?: 'ltr' | 'rtl'): void;
|
|
179
183
|
protected onEscape(e: Event): void;
|
|
184
|
+
private _focusFirstContent;
|
|
185
|
+
/** Keeps keyboard focus inside the menu when tabbing across the content edges (issue #1484). */
|
|
186
|
+
private _handleContentTab;
|
|
180
187
|
private _activate;
|
|
181
188
|
private _deactivate;
|
|
182
189
|
private _isHoverOnSibling;
|
|
@@ -14,7 +14,6 @@ type BrnOverlayOptions = {
|
|
|
14
14
|
/** Move focus to the first tabbable element inside the overlay when it opens. */
|
|
15
15
|
autoFocus: boolean;
|
|
16
16
|
backdropClass: string | string[];
|
|
17
|
-
closeOnBackdropClick: boolean;
|
|
18
17
|
closeOnOutsidePointerEvents: boolean;
|
|
19
18
|
direction?: Direction;
|
|
20
19
|
disableClose: boolean;
|
|
@@ -67,7 +66,6 @@ declare class BrnOverlay<TResult = unknown, TContext extends Record<string, unkn
|
|
|
67
66
|
readonly positionStrategy: _angular_core.InputSignal<_angular_cdk_overlay.PositionStrategy | null | undefined>;
|
|
68
67
|
readonly scrollStrategy: _angular_core.InputSignal<ScrollStrategy | "close" | "reposition" | null | undefined>;
|
|
69
68
|
readonly closeOnOutsidePointerEvents: _angular_core.InputSignalWithTransform<boolean, BooleanInput>;
|
|
70
|
-
readonly closeOnBackdropClick: _angular_core.InputSignalWithTransform<boolean, BooleanInput>;
|
|
71
69
|
readonly attachTo: _angular_core.InputSignal<_angular_cdk_overlay.FlexibleConnectedPositionStrategyOrigin | null | undefined>;
|
|
72
70
|
readonly attachPositions: _angular_core.InputSignal<_angular_cdk_overlay.ConnectedPosition[]>;
|
|
73
71
|
readonly disableClose: _angular_core.InputSignalWithTransform<boolean, BooleanInput>;
|
|
@@ -86,13 +84,12 @@ declare class BrnOverlay<TResult = unknown, TContext extends Record<string, unkn
|
|
|
86
84
|
protected getAttachTo(): BrnOverlayOptions['attachTo'];
|
|
87
85
|
protected getAttachPositions(): BrnOverlayOptions['attachPositions'];
|
|
88
86
|
protected getPositionStrategy(): BrnOverlayOptions['positionStrategy'];
|
|
89
|
-
protected getCloseOnBackdropClick(): boolean;
|
|
90
87
|
private getScrollStrategy;
|
|
91
88
|
private _restoreFocus;
|
|
92
89
|
private _syncPanelClass;
|
|
93
90
|
private _syncBackdropClass;
|
|
94
91
|
static ɵfac: _angular_core.ɵɵFactoryDeclaration<BrnOverlay<any, any>, never>;
|
|
95
|
-
static ɵdir: _angular_core.ɵɵDirectiveDeclaration<BrnOverlay<any, any>, "[brnOverlay],brn-overlay", ["brnOverlay"], { "id": { "alias": "id"; "required": false; "isSignal": true; }; "state": { "alias": "state"; "required": false; "isSignal": true; }; "role": { "alias": "role"; "required": false; "isSignal": true; }; "hasBackdrop": { "alias": "hasBackdrop"; "required": false; "isSignal": true; }; "positionStrategy": { "alias": "positionStrategy"; "required": false; "isSignal": true; }; "scrollStrategy": { "alias": "scrollStrategy"; "required": false; "isSignal": true; }; "closeOnOutsidePointerEvents": { "alias": "closeOnOutsidePointerEvents"; "required": false; "isSignal": true; }; "
|
|
92
|
+
static ɵdir: _angular_core.ɵɵDirectiveDeclaration<BrnOverlay<any, any>, "[brnOverlay],brn-overlay", ["brnOverlay"], { "id": { "alias": "id"; "required": false; "isSignal": true; }; "state": { "alias": "state"; "required": false; "isSignal": true; }; "role": { "alias": "role"; "required": false; "isSignal": true; }; "hasBackdrop": { "alias": "hasBackdrop"; "required": false; "isSignal": true; }; "positionStrategy": { "alias": "positionStrategy"; "required": false; "isSignal": true; }; "scrollStrategy": { "alias": "scrollStrategy"; "required": false; "isSignal": true; }; "closeOnOutsidePointerEvents": { "alias": "closeOnOutsidePointerEvents"; "required": false; "isSignal": true; }; "attachTo": { "alias": "attachTo"; "required": false; "isSignal": true; }; "attachPositions": { "alias": "attachPositions"; "required": false; "isSignal": true; }; "disableClose": { "alias": "disableClose"; "required": false; "isSignal": true; }; "autoFocus": { "alias": "autoFocus"; "required": false; "isSignal": true; }; }, { "closed": "closed"; "stateChanged": "stateChanged"; }, never, never, true, never>;
|
|
96
93
|
}
|
|
97
94
|
|
|
98
95
|
declare class BrnOverlayClose {
|
|
@@ -151,7 +148,9 @@ declare class BrnOverlayRef<OverlayResult = unknown> {
|
|
|
151
148
|
get id(): string;
|
|
152
149
|
constructor(_overlayRef: OverlayRef, _injector: Injector, overlayId: number, initialOptions: BrnOverlayOptions, _onDisposed: () => void);
|
|
153
150
|
close(result?: OverlayResult): void;
|
|
154
|
-
dismiss(reason: BrnOverlayDismissReason): boolean;
|
|
151
|
+
dismiss(reason: BrnOverlayDismissReason, target?: EventTarget | null): boolean;
|
|
152
|
+
/** Whether the event target sits within the overlay's origin (its trigger/anchor element). */
|
|
153
|
+
private _isWithinOrigin;
|
|
155
154
|
reopen(): void;
|
|
156
155
|
forceClose(result?: OverlayResult): void;
|
|
157
156
|
setPanelClass(panelClass: string | string[] | null | undefined): void;
|
|
@@ -156,6 +156,7 @@ declare class BrnSelectContent {
|
|
|
156
156
|
readonly showScrollUp: _angular_core.Signal<boolean>;
|
|
157
157
|
private readonly _scrollDown;
|
|
158
158
|
readonly showScrollDown: _angular_core.Signal<boolean>;
|
|
159
|
+
protected readonly _dataState: _angular_core.Signal<"closed" | "open">;
|
|
159
160
|
constructor();
|
|
160
161
|
handleScroll(): void;
|
|
161
162
|
private _checkScroll;
|