@ngbase/adk 0.1.8 → 0.1.10
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/a11y/autofocus.d.ts +7 -1
- package/collections/SelectionModel.d.ts +8 -3
- package/fesm2022/ngbase-adk-a11y.mjs +43 -20
- package/fesm2022/ngbase-adk-a11y.mjs.map +1 -1
- package/fesm2022/ngbase-adk-chip.mjs +2 -2
- package/fesm2022/ngbase-adk-chip.mjs.map +1 -1
- package/fesm2022/ngbase-adk-collections.mjs +8 -1
- package/fesm2022/ngbase-adk-collections.mjs.map +1 -1
- package/fesm2022/ngbase-adk-popover.mjs +5 -5
- package/fesm2022/ngbase-adk-popover.mjs.map +1 -1
- package/fesm2022/ngbase-adk-slider.mjs +10 -3
- package/fesm2022/ngbase-adk-slider.mjs.map +1 -1
- package/fesm2022/ngbase-adk-table.mjs +195 -81
- package/fesm2022/ngbase-adk-table.mjs.map +1 -1
- package/package.json +11 -11
- package/schematics/components/files/avatar/avatar-llm.md.template +2 -0
- package/schematics/components/files/button/button-llm.md.template +5 -0
- package/schematics/components/files/chip/chip-llm.md.template +1 -1
- package/schematics/components/files/form-field/form-field-llm.md.template +5 -3
- package/schematics/components/files/form-field/input-style.directive.ts.template +5 -2
- package/schematics/components/files/icon/icon-llm.md.template +10 -2
- package/schematics/components/files/list/list.ts.template +1 -1
- package/schematics/components/files/select/select.ts.template +13 -4
- package/schematics/components/files/sidenav/sidenav-llm.md.template +23 -10
- package/schematics/components/files/table/table.ts.template +69 -11
- package/schematics/components/files/theme/theme-button.ts.template +1 -1
- package/slider/slider.d.ts +4 -2
- package/table/body-row.d.ts +7 -3
- package/table/head-row.d.ts +10 -7
- package/table/public-api.d.ts +5 -5
- package/table/sort.d.ts +40 -0
- package/table/table.d.ts +9 -3
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ngbase-adk-popover.mjs","sources":["../../../projects/adk/popover/base-popover.service.ts","../../../projects/adk/popover/utils.ts","../../../projects/adk/popover/popover-arrow.ng.ts","../../../projects/adk/popover/popover.ts","../../../projects/adk/popover/popover.service.ts","../../../projects/adk/popover/popover-trigger.ts","../../../projects/adk/popover/public-api.ts","../../../projects/adk/popover/ngbase-adk-popover.ts"],"sourcesContent":["import { Type } from '@angular/core';\nimport { basePortal, DialogInput } from '@ngbase/adk/portal';\nimport { NgbPopover } from './popover';\nimport { PopoverOptions } from './popover.service';\n\nexport function basePopoverPortal<T>(component: Type<T>) {\n const NAME = 'popover';\n const base = basePortal(NAME, component);\n\n function open<T>(component: DialogInput<T>, options: PopoverOptions) {\n const { diaRef, parent, replace, childSignal } = base.open(\n component,\n (comp, opt) => {\n const compInst = comp.instance as NgbPopover;\n compInst.setOptions(opt as PopoverOptions);\n },\n options,\n );\n\n return {\n diaRef,\n events: (parent.instance as NgbPopover).events,\n parent: parent.instance,\n replace,\n childSignal,\n };\n }\n\n function closeAll() {\n base.closeAll();\n }\n return { open, closeAll };\n}\n","export interface PopoverUtilConfig {\n offset?: number;\n sideOffset?: number;\n smoothScroll?: boolean;\n position?: Position | OverlayPosition;\n client?: { x: number; y: number; w: number; h: number } | null;\n target: HTMLElement;\n el?: HTMLElement;\n}\n\nexport interface Rect {\n top: number;\n left: number;\n width: number;\n height: number;\n}\n\nexport type OverlayPosition =\n | 'top'\n | 'bottom'\n | 'left'\n | 'right'\n | 'rs'\n | 're'\n | 'ls'\n | 'le'\n | 'tl'\n | 'tr'\n | 'bl'\n | 'br';\n\n// Main position enum with all supported positions\nexport enum Position {\n Top = 'top',\n Bottom = 'bottom',\n Left = 'left',\n Right = 'right',\n TopLeft = 'tl',\n TopRight = 'tr',\n BottomLeft = 'bl',\n BottomRight = 'br',\n RightStart = 'rs',\n RightEnd = 're',\n LeftStart = 'ls',\n LeftEnd = 'le',\n}\n\nexport interface PositionResult {\n top?: number;\n left?: number;\n bottom?: number;\n right?: number;\n position: Position;\n maxHeight?: number;\n maxWidth?: number;\n}\n\n// Position metadata - defines each position in terms of main axis, alignment, and coordinates calculation\ninterface PositionMeta {\n main: 'vertical' | 'horizontal';\n placement: 'before' | 'after';\n align: 'start' | 'center' | 'end';\n oppositePosition: Position;\n fallbacks: Position[];\n getCoords: (targetRect: Rect, elementRect: Rect, offset: number) => { top: number; left: number };\n}\n\n// Position metadata definitions\nconst POSITION_META: Record<Position, PositionMeta> = {\n [Position.Top]: {\n main: 'vertical',\n placement: 'before',\n align: 'center',\n oppositePosition: Position.Bottom,\n fallbacks: [Position.Bottom],\n getCoords: (target, element, offset) => ({\n top: target.top - element.height - offset,\n left: target.left + (target.width - element.width) / 2,\n }),\n },\n [Position.Bottom]: {\n main: 'vertical',\n placement: 'after',\n align: 'center',\n oppositePosition: Position.Top,\n fallbacks: [Position.Top, Position.Right, Position.Left],\n getCoords: (target, element, offset) => ({\n top: target.top + target.height + offset,\n left: target.left + (target.width - element.width) / 2,\n }),\n },\n [Position.Left]: {\n main: 'horizontal',\n placement: 'before',\n align: 'center',\n oppositePosition: Position.Right,\n fallbacks: [Position.Right, Position.Top, Position.Bottom],\n getCoords: (target, element, offset) => ({\n top: target.top + (target.height - element.height) / 2,\n left: target.left - element.width - offset,\n }),\n },\n [Position.Right]: {\n main: 'horizontal',\n placement: 'after',\n align: 'center',\n oppositePosition: Position.Left,\n fallbacks: [Position.Left, Position.Top, Position.Bottom],\n getCoords: (target, element, offset) => ({\n top: target.top + (target.height - element.height) / 2,\n left: target.left + target.width + offset,\n }),\n },\n [Position.TopLeft]: {\n main: 'vertical',\n placement: 'before',\n align: 'start',\n oppositePosition: Position.BottomLeft,\n fallbacks: [Position.BottomLeft, Position.TopRight, Position.BottomRight],\n getCoords: (target, element, offset) => ({\n top: target.top - element.height - offset,\n left: target.left,\n }),\n },\n [Position.TopRight]: {\n main: 'vertical',\n placement: 'before',\n align: 'end',\n oppositePosition: Position.BottomRight,\n fallbacks: [Position.BottomRight, Position.TopLeft, Position.BottomLeft],\n getCoords: (target, element, offset) => ({\n top: target.top - element.height - offset,\n left: target.left + target.width - element.width,\n }),\n },\n [Position.BottomLeft]: {\n main: 'vertical',\n placement: 'after',\n align: 'start',\n oppositePosition: Position.BottomRight,\n fallbacks: [Position.BottomRight, Position.TopLeft, Position.TopRight],\n getCoords: (target, element, offset) => ({\n top: target.top + target.height + offset,\n left: target.left,\n }),\n },\n [Position.BottomRight]: {\n main: 'vertical',\n placement: 'after',\n align: 'end',\n oppositePosition: Position.BottomLeft,\n fallbacks: [Position.BottomLeft, Position.TopRight, Position.TopLeft],\n getCoords: (target, element, offset) => ({\n top: target.top + target.height + offset,\n left: target.left + target.width - element.width,\n }),\n },\n [Position.RightStart]: {\n main: 'horizontal',\n placement: 'after',\n align: 'start',\n oppositePosition: Position.RightEnd,\n fallbacks: [Position.RightEnd, Position.LeftStart, Position.LeftEnd],\n getCoords: (target, element, offset) => ({\n top: target.top,\n left: target.left + target.width + offset,\n }),\n },\n [Position.RightEnd]: {\n main: 'horizontal',\n placement: 'after',\n align: 'end',\n oppositePosition: Position.LeftEnd,\n fallbacks: [Position.LeftEnd, Position.RightStart, Position.LeftStart],\n getCoords: (target, element, offset) => ({\n top: target.top + target.height - element.height,\n left: target.left + target.width + offset,\n }),\n },\n [Position.LeftStart]: {\n main: 'horizontal',\n placement: 'before',\n align: 'start',\n oppositePosition: Position.LeftEnd,\n fallbacks: [Position.LeftEnd, Position.RightStart, Position.RightEnd],\n getCoords: (target, element, offset) => ({\n top: target.top,\n left: target.left - element.width - offset,\n }),\n },\n [Position.LeftEnd]: {\n main: 'horizontal',\n placement: 'before',\n align: 'end',\n oppositePosition: Position.RightEnd,\n fallbacks: [Position.RightEnd, Position.LeftStart, Position.RightStart],\n getCoords: (target, element, offset) => ({\n top: target.top + target.height - element.height,\n left: target.left - element.width - offset,\n }),\n },\n};\n\nexport class PopoverPositioner {\n private offset: number;\n private sideOffset: number;\n private elementRect!: Rect;\n\n constructor(\n private config: PopoverUtilConfig,\n private windowDimensions: { width: number; height: number },\n private scrollWidth = 0,\n ) {\n this.offset = this.config.offset || 5;\n this.sideOffset = this.config.sideOffset || 0;\n }\n\n public calculatePosition(): PositionResult {\n const targetRect = this.getTargetRect();\n this.elementRect = this.getElementRect();\n\n // Get initial position or use bottom as default\n const initialPosition = (this.config.position as Position) || Position.Bottom;\n\n // Find best position\n const bestPosition = this.findBestPosition(initialPosition, targetRect);\n\n // Generate and finalize coordinates\n const coords = POSITION_META[bestPosition].getCoords(targetRect, this.elementRect, this.offset);\n return this.finalizePosition(coords, bestPosition, targetRect);\n }\n\n private getTargetRect(): Rect {\n if (this.config.client) {\n const { x, y, w, h } = this.config.client;\n return { top: y, left: x, width: w, height: h };\n }\n return this.config.target.getBoundingClientRect();\n }\n\n private getElementRect(): Rect {\n const el = this.config.el!;\n return {\n top: 0,\n left: 0,\n width: el.clientWidth,\n height: el.clientHeight,\n };\n }\n\n private findBestPosition(initialPosition: Position, targetRect: Rect): Position {\n // If the initial position works, use it\n if (!this.positionOverflows(initialPosition, targetRect)) {\n return initialPosition;\n }\n\n // Get available space in each direction\n const space = this.getAvailableSpace(targetRect);\n\n // Special handling for simple cases (e.g., choosing between top and bottom based on space)\n const meta = POSITION_META[initialPosition];\n\n // 1. Try the opposite position on the same axis (e.g., bottom for top)\n const opposite = meta.oppositePosition;\n if (!this.positionOverflows(opposite, targetRect)) {\n return opposite;\n }\n\n // 2. Try fallbacks in order\n for (const fallback of meta.fallbacks) {\n if (!this.positionOverflows(fallback, targetRect)) {\n return fallback;\n }\n }\n\n // 3. For vertical positions, prefer the side with more space\n if (meta.main === 'vertical') {\n const preferredVertical = space.top > space.bottom ? Position.Top : Position.Bottom;\n if (!this.positionOverflows(preferredVertical, targetRect)) {\n return preferredVertical;\n }\n }\n\n // 4. For horizontal positions, prefer the side with more space\n if (meta.main === 'horizontal') {\n const preferredHorizontal = space.left > space.right ? Position.Left : Position.Right;\n if (!this.positionOverflows(preferredHorizontal, targetRect)) {\n return preferredHorizontal;\n }\n }\n\n // 5. If all positions have issues, find the one with the best fit\n return this.getPositionWithLeastOverflow(initialPosition, targetRect);\n }\n\n private getAvailableSpace(targetRect: Rect): {\n top: number;\n right: number;\n bottom: number;\n left: number;\n } {\n return {\n top: targetRect.top,\n right: this.windowDimensions.width - (targetRect.left + targetRect.width),\n bottom: this.windowDimensions.height - (targetRect.top + targetRect.height),\n left: targetRect.left,\n };\n }\n\n private positionOverflows(position: Position, targetRect: Rect): boolean {\n const meta = POSITION_META[position];\n const element = this.elementRect;\n const coords = meta.getCoords(targetRect, element, this.offset);\n const { width: windowWidth, height: windowHeight } = this.windowDimensions;\n\n // Check boundaries and consider sideOffset\n return (\n coords.left < 0 ||\n coords.left + element.width + this.sideOffset > windowWidth ||\n coords.top < 0 ||\n coords.top + element.height + this.sideOffset > windowHeight\n );\n }\n\n private getOverflowAmount(position: Position, targetRect: Rect): number {\n const meta = POSITION_META[position];\n const element = this.elementRect;\n const coords = meta.getCoords(targetRect, element, this.offset);\n const { width: windowWidth, height: windowHeight } = this.windowDimensions;\n\n let amount = 0;\n\n // Calculate overflow for each edge\n if (coords.left < 0) amount += Math.abs(coords.left);\n if (coords.left + element.width > windowWidth)\n amount += coords.left + element.width - windowWidth;\n if (coords.top < 0) amount += Math.abs(coords.top);\n if (coords.top + element.height > windowHeight)\n amount += coords.top + element.height - windowHeight;\n\n return amount;\n }\n\n private getPositionWithLeastOverflow(initialPosition: Position, targetRect: Rect): Position {\n const positionsToCheck = [initialPosition, ...POSITION_META[initialPosition].fallbacks];\n\n let bestPosition = initialPosition;\n let leastOverflow = this.getOverflowAmount(initialPosition, targetRect);\n\n for (const position of positionsToCheck) {\n const overflow = this.getOverflowAmount(position, targetRect);\n if (overflow < leastOverflow) {\n leastOverflow = overflow;\n bestPosition = position;\n }\n }\n\n return bestPosition;\n }\n\n private finalizePosition(\n coords: { top: number; left: number },\n position: Position,\n targetRect: Rect,\n ): PositionResult {\n const { top, left } = coords;\n const element = this.elementRect;\n const { width: windowWidth, height: windowHeight } = this.windowDimensions;\n const meta = POSITION_META[position];\n\n // Calculate max dimensions\n let maxHeight: number | undefined;\n let maxWidth: number | undefined;\n\n // Set maxHeight if needed\n if (top - this.sideOffset < 0) {\n maxHeight = element.height + top - this.sideOffset;\n } else if (top + element.height + this.sideOffset > windowHeight) {\n maxHeight = element.height - (top + element.height + this.sideOffset - windowHeight);\n }\n\n // Set maxWidth if needed\n if (left + element.width + this.sideOffset > windowWidth) {\n maxWidth = windowWidth - left - this.sideOffset;\n }\n\n // Add sideOffset to maxHeight and maxWidth because the sideOffset is used for the maxHeight and maxWidth\n const h = maxHeight ? maxHeight + this.sideOffset : element.height;\n const w = maxWidth ? maxWidth + this.sideOffset : element.width;\n\n // Calculate adjusted coordinates\n let adjustedTop: number | undefined = Math.max(0, Math.min(top, windowHeight - h));\n let adjustedLeft = Math.max(0, Math.min(left, windowWidth - w));\n\n // Calculate bottom and right (for RTL support)\n let bottom: number | undefined;\n let right: number | undefined;\n\n // Set bottom if appropriate\n if (meta.main === 'vertical' && meta.placement === 'before') {\n bottom = windowHeight - (adjustedTop + h);\n adjustedTop = undefined;\n }\n\n // Set right if appropriate\n if (adjustedLeft + w > windowWidth) {\n adjustedLeft = 0;\n right = 0;\n } else if (\n meta.align === 'end' ||\n (meta.main === 'horizontal' && meta.placement === 'before')\n ) {\n right = windowWidth - (adjustedLeft + w) - this.scrollWidth;\n }\n\n return {\n top: adjustedTop,\n left: right !== undefined ? undefined : adjustedLeft,\n bottom,\n right,\n position,\n maxHeight: maxHeight && maxHeight > 0 ? maxHeight : undefined,\n maxWidth: maxWidth && maxWidth > 0 ? maxWidth : undefined,\n };\n }\n}\n\n// Main function to use the class\nexport function tooltipPosition(\n config: PopoverUtilConfig,\n windowDimensions = { width: window.innerWidth, height: window.innerHeight },\n scrollWidth = window.innerWidth - document.documentElement.clientWidth,\n): PositionResult {\n const positioner = new PopoverPositioner(config, windowDimensions, scrollWidth);\n return positioner.calculatePosition();\n}\n","import {\n Component,\n computed,\n ElementRef,\n inject,\n input,\n signal,\n WritableSignal,\n} from '@angular/core';\nimport { InjectionToken } from '@angular/core';\nimport { PopoverPosition } from './popover.service';\n\nexport class PopoverArrowTracker {\n top? = 0;\n left? = 0;\n right? = 0;\n bottom? = 0;\n target?: HTMLElement;\n position?: PopoverPosition;\n}\n\nexport const POPOVER_ARROW_TRACKER = new InjectionToken<{\n values: WritableSignal<PopoverArrowTracker>;\n}>('popoverArrowTracker');\n\nexport function providePopoverArrowTracker() {\n return {\n provide: POPOVER_ARROW_TRACKER,\n useFactory: () => ({ values: signal<PopoverArrowTracker>(new PopoverArrowTracker()) }),\n };\n}\n\n@Component({\n selector: '[ngbPopoverArrow]',\n template: `\n <ng-content />\n @if (anchor()) {\n <style>\n :host {\n --action-angle: 180deg;\n --action-left: 50%;\n --action-top: -1rem;\n }\n :host::before {\n content: '';\n position: absolute;\n width: 0;\n height: 0;\n border-style: solid;\n border-top: 0.5rem solid;\n @apply border-background;\n border-left: 0.45rem solid transparent;\n border-right: 0.45rem solid transparent;\n top: var(--action-top);\n left: var(--action-left);\n transform: translateX(-50%) rotate(var(--action-angle, 180deg));\n /* Add shadow to match the container shadow */\n /* filter: drop-shadow(0 4px 3px rgb(0 0 0 / 0.07)) drop-shadow(0 2px 2px rgb(0 0 0 / 0.06));\n z-index: -1; */\n }\n </style>\n }\n `,\n host: {\n '[style]': 'styles()',\n },\n})\nexport class NgbPopoverArrow {\n readonly arrowTracker = inject(POPOVER_ARROW_TRACKER);\n readonly anchor = input(false);\n readonly el = inject(ElementRef<HTMLElement>);\n readonly styles = computed(() => {\n const { target, position } = this.arrowTracker.values();\n if (target && position) {\n return this.updateAnchorPosition(position, target, this.el.nativeElement);\n }\n return {};\n });\n\n private updateAnchorPosition(position: PopoverPosition, target: HTMLElement, el: HTMLElement) {\n const { height, width, top } = el.getBoundingClientRect();\n const { height: tHeight, width: tWidth, top: tTop } = target.getBoundingClientRect();\n let deg = '0deg';\n let anchorTop = '50%';\n let anchorLeft = '50%';\n const anchorWidth = 8;\n\n const thHeight = tHeight / 2 - anchorWidth / 2;\n const thWidth = tWidth / 2;\n\n switch (position) {\n case 'top':\n case 'tl':\n case 'tr':\n anchorTop = '100%';\n break;\n case 'left':\n deg = '270deg';\n anchorLeft = `calc(100% + ${anchorWidth / 2}px)`;\n anchorTop =\n tHeight > height\n ? `calc(50% - ${anchorWidth / 2}px)`\n : `calc(${thHeight + (tTop - top)}px)`;\n break;\n case 'right':\n deg = '90deg';\n anchorLeft = `-${anchorWidth / 2}px`;\n anchorTop =\n tHeight > height\n ? `calc(50% - ${anchorWidth / 2}px)`\n : `calc(${thHeight + (tTop - top)}px)`;\n break;\n case 'bottom':\n case 'bl':\n case 'br':\n deg = '180deg';\n anchorTop = '-0.5rem';\n anchorLeft = thWidth > width ? '50%' : `calc(100% - ${thWidth}px)`;\n break;\n }\n\n return { '--action-angle': deg, '--action-left': anchorLeft, '--action-top': anchorTop };\n }\n}\n","import { animate, state, style, transition, trigger } from '@angular/animations';\nimport {\n Component,\n Directive,\n ElementRef,\n ViewContainerRef,\n effect,\n inject,\n input,\n linkedSignal,\n signal,\n viewChild,\n} from '@angular/core';\nimport { FocusTrap } from '@ngbase/adk/a11y';\nimport { BaseDialog, NgbPortalClose } from '@ngbase/adk/portal';\nimport { createHostAnimation, disposals } from '@ngbase/adk/utils';\nimport { EMPTY, Observable, fromEvent, map, startWith, switchMap } from 'rxjs';\nimport { PopoverOptions, PopoverPosition } from './popover.service';\nimport { tooltipPosition } from './utils';\nimport { POPOVER_ARROW_TRACKER, providePopoverArrowTracker } from './popover-arrow.ng';\n\n@Directive({\n selector: '[ngbPopoverBackdrop]',\n hostDirectives: [FocusTrap],\n host: {\n '[style.clipPath]': 'popover.options().clipPath?.()',\n '[class]': 'popover.options().backdropClassName',\n '(click)': '!popover.options().disableClose && popover.close()',\n },\n})\nexport class NgbPopoverBackdrop {\n readonly popover = inject(NgbPopover);\n readonly focusTrap = inject(FocusTrap);\n\n constructor() {\n this.focusTrap._focusTrap = linkedSignal(() => this.popover.options().focusTrap ?? true);\n }\n}\n\n@Directive({\n selector: '[ngbPopoverMain]',\n host: {\n '[class]': 'popover.options().className',\n },\n})\nexport class NgbPopoverMain {\n readonly popover = inject(NgbPopover);\n}\n\n@Component({\n selector: 'ngb-popover',\n template: '',\n host: {\n '[@parentAnimation]': '',\n '(@parentAnimation.done)': 'animationDone()',\n },\n animations: [\n createHostAnimation(['@slideInOutAnimation']),\n trigger('slideInOutAnimation', [\n state('1', style({ transform: 'none', opacity: 1 })),\n state('void', style({ transform: 'translateY(-10px) scale(0.95)', opacity: 0 })),\n state('0', style({ transform: 'translateY(-10px) scale(0.95)', opacity: 0 })),\n transition('* => *', animate('100ms ease-out')),\n ]),\n ],\n})\nexport class NgbPopover extends BaseDialog {\n readonly arrowTracker = inject(POPOVER_ARROW_TRACKER);\n private readonly disposals = disposals();\n\n readonly myDialog = viewChild.required('myDialog', { read: ViewContainerRef });\n readonly container = viewChild.required<NgbPopoverMain, ElementRef<HTMLElement>>(NgbPopoverMain, {\n read: ElementRef,\n });\n readonly backdropElement = viewChild<NgbPopoverBackdrop, ElementRef<HTMLElement>>(\n NgbPopoverBackdrop,\n { read: ElementRef },\n );\n\n readonly options = signal<PopoverOptions>({} as PopoverOptions);\n private lastPosition: PopoverPosition = 'top';\n readonly scrolled = signal(0);\n\n readonly events: Observable<{ type: string; value: any }> = this._afterViewSource.pipe(\n switchMap(e => {\n const el = this.container()!.nativeElement;\n const mouseenter = fromEvent(el, 'mouseenter');\n const mouseleave = fromEvent(el, 'mouseleave');\n const event = mouseenter.pipe(\n switchMap(e =>\n mouseleave.pipe(\n map(x => ({ type: 'mouseleave', value: x })),\n startWith({ type: 'mouseenter', value: e }),\n ),\n ),\n );\n return e ? event : EMPTY;\n }),\n );\n\n constructor() {\n super();\n\n const dialog = effect(() => {\n this._afterViewSource.next(this.myDialog()!);\n dialog.destroy();\n });\n\n effect(cleanup => {\n const el = this.container()!.nativeElement;\n const options = this.options();\n const target = this.getTarget();\n if (options.anchor) {\n options.offset = 16;\n }\n this.lastPosition = options.position || 'bottom';\n // this.schedulePopoverUpdate(target, el);\n if (options.smoothScroll) {\n // target.scrollIntoView({ behavior: 'smooth', block: 'nearest' });\n\n // fromEvent(window, 'scroll')\n // .pipe(\n // startWith(1),\n // tap((x) => console.count('scroll 50')),\n // debounceTime(50),\n // take(1),\n // )\n // .subscribe(() => {});\n // fromEvent(window, 'scroll')\n // .pipe(\n // startWith(1),\n // tap((x) => console.count('scroll 10')),\n // debounceTime(10),\n // take(1),\n // )\n // .subscribe(() => {\n // this.scrolled.update((x) => x + 1);\n // this.schedulePopoverUpdate(target, el);\n // });\n scrollToElement(target).then(() => {\n this.scrolled.update(x => x + 1);\n this.schedulePopoverUpdate(target, el, options);\n });\n } else {\n this.schedulePopoverUpdate(target, el, options);\n }\n\n // TODO: remove this once we have multi cleanup support\n if (!options.backdrop) {\n window.addEventListener('scroll', this.scheduleUpdateDimension);\n cleanup(() => window.removeEventListener('scroll', this.scheduleUpdateDimension));\n }\n\n // observe the target element position change\n const resizeObserver = new ResizeObserver(() => {\n // console.log('resizeObserver');\n this.schedulePopoverUpdate(target, el, options);\n });\n resizeObserver.observe(target);\n cleanup(() => resizeObserver.disconnect());\n });\n }\n\n override getTarget(): HTMLElement {\n return this.target() || this.options().target;\n }\n\n private scheduleUpdateDimension = () => {\n this.disposals.afterNextRender(() => this.updateDimension());\n };\n\n private schedulePopoverUpdate(target: HTMLElement, el: HTMLElement, options: PopoverOptions) {\n // this.options().target = target;\n // if (options.backdrop) {\n // this.onOpen();\n // }\n if (options.width === 'target') {\n // update the width of the container to be the same as the target\n el.style.width = `${target.offsetWidth}px`;\n } else if (options.width === 'free') {\n el.style.minWidth = `${target.offsetWidth}px`;\n } else if (options.width) {\n el.style.width = options.width;\n }\n if (options.height) {\n el.style.height = options.height;\n }\n if (options.maxHeight) {\n el.style.maxHeight = options.maxHeight;\n }\n\n this.scheduleUpdateDimension();\n }\n\n private updateDimension() {\n const el = this.container()!.nativeElement;\n const target = this.getTarget();\n if (!target) {\n return;\n }\n const { top, bottom, left, right, position, maxHeight, maxWidth } = tooltipPosition({\n target,\n el,\n position: this.lastPosition,\n client: this.options().client,\n offset: this.options().offset,\n sideOffset: this.options().sideOffset,\n });\n // change the anchor position\n // if (this.options().anchor) {\n // this.updateAnchorPosition(position, el, target);\n // }\n this.lastPosition = position;\n // we need to update the values directly instead of signal to avoid too many CD checks\n if (bottom !== undefined) {\n el.style.bottom = `${bottom}px`;\n el.style.top = '';\n } else {\n el.style.top = `${top}px`;\n el.style.bottom = '';\n }\n if (right != undefined) {\n el.style.right = `${right}px`;\n el.style.left = '';\n } else {\n el.style.left = `${left}px`;\n el.style.right = '';\n }\n\n if (maxHeight) {\n el.style.maxHeight = `${maxHeight}px`;\n }\n if (maxWidth) {\n el.style.maxWidth = `${maxWidth}px`;\n }\n this.arrowTracker.values.set({ top, bottom, left, right, target, position });\n }\n\n override setOptions(options: PopoverOptions): void {\n // console.log('setOptions', options);\n this.options.set(options);\n }\n}\n\nfunction scrollToElement(target: HTMLElement) {\n return new Promise(resolve => {\n let lastPos: number;\n let currentPos = null;\n let samePosCount = 0;\n\n const checkIfScrollComplete = () => {\n currentPos = window.pageYOffset || document.documentElement.scrollTop;\n\n if (lastPos !== null && currentPos === lastPos) {\n samePosCount++;\n if (samePosCount > 2) {\n resolve(true);\n return;\n }\n } else {\n samePosCount = 0;\n lastPos = currentPos;\n }\n\n requestAnimationFrame(checkIfScrollComplete);\n };\n // scroll only if the target is not in the view\n // window.scrollTo({\n // top: target.offsetTop - 50,\n // behavior: 'smooth',\n // });\n target.scrollIntoView({ behavior: 'smooth', block: 'nearest' });\n requestAnimationFrame(checkIfScrollComplete);\n });\n}\n\n@Directive({ selector: '[ngbPopoverClose]' })\nexport class NgbPopoverClose extends NgbPortalClose {\n readonly ngbPopoverClose = input();\n\n override close() {\n super.close(this.ngbPopoverClose());\n }\n}\n\nexport function aliasPopover(popover: typeof NgbPopover) {\n return [{ provide: NgbPopover, useExisting: popover }, providePopoverArrowTracker()];\n}\n","import { inject, InjectionToken, Signal, Type, WritableSignal } from '@angular/core';\nimport { DialogInput, DialogOptions, DialogRef } from '@ngbase/adk/portal';\nimport { Observable } from 'rxjs';\nimport { basePopoverPortal } from './base-popover.service';\nimport { NgbPopover } from './popover';\nimport { OverlayPosition, PopoverUtilConfig } from './utils';\n\nexport type PopoverPosition = OverlayPosition;\n\nexport class PopoverOptions extends DialogOptions implements PopoverUtilConfig {\n target!: HTMLElement;\n el?: HTMLElement;\n position?: PopoverPosition;\n offset?: number;\n sideOffset?: number;\n client?: { x: number; y: number; w: number; h: number } | null;\n className?: string;\n backdropClassName?: string;\n clipPath?: Signal<string>;\n anchor?: boolean;\n smoothScroll?: boolean;\n}\n\nexport interface PopoverOpen<T> {\n diaRef: DialogRef<any>;\n events: Observable<{ type: string; value: any }>;\n parent: NgbPopover;\n replace: ((component: DialogInput<T>) => void) | undefined;\n childSignal: WritableSignal<any>;\n}\n\nconst POPOVER_TOKEN = new InjectionToken<Type<NgbPopover>>('POPOVER_TOKEN');\n\nexport type PopoverType = ReturnType<typeof ngbPopoverPortal>;\n\nexport function ngbPopoverPortal() {\n const popover = inject(POPOVER_TOKEN, { optional: true }) ?? NgbPopover;\n const base = basePopoverPortal(popover);\n\n function open<T>(component: DialogInput<T>, options: PopoverOptions): PopoverOpen<T> {\n return base.open(component, options);\n }\n\n return { open, closeAll: base.closeAll };\n}\n\nexport const registerNgbPopover = (popover: typeof NgbPopover) => {\n return { provide: POPOVER_TOKEN, useValue: popover };\n};\n","import { Directive, ElementRef, TemplateRef, inject, input } from '@angular/core';\nimport { PopoverPosition, ngbPopoverPortal } from './popover.service';\n\n@Directive({\n selector: '[ngbPopoverTrigger]',\n exportAs: 'ngbPopoverTrigger',\n host: {\n '(click)': 'open()',\n },\n})\nexport class NgbPopoverTrigger {\n readonly popoverPortal = ngbPopoverPortal();\n readonly el = inject<ElementRef<HTMLElement>>(ElementRef);\n\n readonly ngbPopoverTrigger = input.required<TemplateRef<any>>();\n readonly ngbPopoverTriggerData = input();\n readonly options = input<{ position?: PopoverPosition; anchor?: boolean }>();\n\n private closeFn: VoidFunction = () => {};\n\n open() {\n const options = this.options();\n const { diaRef } = this.popoverPortal.open(this.ngbPopoverTrigger(), {\n target: this.el.nativeElement,\n anchor: options?.anchor,\n position: options?.position || 'top',\n data: this.ngbPopoverTriggerData(),\n });\n this.closeFn = diaRef.close;\n }\n\n close() {\n this.closeFn();\n }\n}\n","/*\n * Public API Surface of popover\n */\n\nexport * from './popover.service';\nexport * from './popover';\nexport * from './popover-trigger';\nexport * from './base-popover.service';\nexport * from './popover-arrow.ng';\nexport { tooltipPosition } from './utils';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":";;;;;;;;;AAKM,SAAU,iBAAiB,CAAI,SAAkB,EAAA;IACrD,MAAM,IAAI,GAAG,SAAS;IACtB,MAAM,IAAI,GAAG,UAAU,CAAC,IAAI,EAAE,SAAS,CAAC;AAExC,IAAA,SAAS,IAAI,CAAI,SAAyB,EAAE,OAAuB,EAAA;QACjE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,WAAW,EAAE,GAAG,IAAI,CAAC,IAAI,CACxD,SAAS,EACT,CAAC,IAAI,EAAE,GAAG,KAAI;AACZ,YAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAsB;AAC5C,YAAA,QAAQ,CAAC,UAAU,CAAC,GAAqB,CAAC;SAC3C,EACD,OAAO,CACR;QAED,OAAO;YACL,MAAM;AACN,YAAA,MAAM,EAAG,MAAM,CAAC,QAAuB,CAAC,MAAM;YAC9C,MAAM,EAAE,MAAM,CAAC,QAAQ;YACvB,OAAO;YACP,WAAW;SACZ;;AAGH,IAAA,SAAS,QAAQ,GAAA;QACf,IAAI,CAAC,QAAQ,EAAE;;AAEjB,IAAA,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE;AAC3B;;ACDA;AACA,IAAY,QAaX;AAbD,CAAA,UAAY,QAAQ,EAAA;AAClB,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,QAAA,CAAA,GAAA,QAAiB;AACjB,IAAA,QAAA,CAAA,MAAA,CAAA,GAAA,MAAa;AACb,IAAA,QAAA,CAAA,OAAA,CAAA,GAAA,OAAe;AACf,IAAA,QAAA,CAAA,SAAA,CAAA,GAAA,IAAc;AACd,IAAA,QAAA,CAAA,UAAA,CAAA,GAAA,IAAe;AACf,IAAA,QAAA,CAAA,YAAA,CAAA,GAAA,IAAiB;AACjB,IAAA,QAAA,CAAA,aAAA,CAAA,GAAA,IAAkB;AAClB,IAAA,QAAA,CAAA,YAAA,CAAA,GAAA,IAAiB;AACjB,IAAA,QAAA,CAAA,UAAA,CAAA,GAAA,IAAe;AACf,IAAA,QAAA,CAAA,WAAA,CAAA,GAAA,IAAgB;AAChB,IAAA,QAAA,CAAA,SAAA,CAAA,GAAA,IAAc;AAChB,CAAC,EAbW,QAAQ,KAAR,QAAQ,GAanB,EAAA,CAAA,CAAA;AAsBD;AACA,MAAM,aAAa,GAAmC;AACpD,IAAA,CAAC,QAAQ,CAAC,GAAG,GAAG;AACd,QAAA,IAAI,EAAE,UAAU;AAChB,QAAA,SAAS,EAAE,QAAQ;AACnB,QAAA,KAAK,EAAE,QAAQ;QACf,gBAAgB,EAAE,QAAQ,CAAC,MAAM;AACjC,QAAA,SAAS,EAAE,CAAC,QAAQ,CAAC,MAAM,CAAC;QAC5B,SAAS,EAAE,CAAC,MAAM,EAAE,OAAO,EAAE,MAAM,MAAM;YACvC,GAAG,EAAE,MAAM,CAAC,GAAG,GAAG,OAAO,CAAC,MAAM,GAAG,MAAM;AACzC,YAAA,IAAI,EAAE,MAAM,CAAC,IAAI,GAAG,CAAC,MAAM,CAAC,KAAK,GAAG,OAAO,CAAC,KAAK,IAAI,CAAC;SACvD,CAAC;AACH,KAAA;AACD,IAAA,CAAC,QAAQ,CAAC,MAAM,GAAG;AACjB,QAAA,IAAI,EAAE,UAAU;AAChB,QAAA,SAAS,EAAE,OAAO;AAClB,QAAA,KAAK,EAAE,QAAQ;QACf,gBAAgB,EAAE,QAAQ,CAAC,GAAG;AAC9B,QAAA,SAAS,EAAE,CAAC,QAAQ,CAAC,GAAG,EAAE,QAAQ,CAAC,KAAK,EAAE,QAAQ,CAAC,IAAI,CAAC;QACxD,SAAS,EAAE,CAAC,MAAM,EAAE,OAAO,EAAE,MAAM,MAAM;YACvC,GAAG,EAAE,MAAM,CAAC,GAAG,GAAG,MAAM,CAAC,MAAM,GAAG,MAAM;AACxC,YAAA,IAAI,EAAE,MAAM,CAAC,IAAI,GAAG,CAAC,MAAM,CAAC,KAAK,GAAG,OAAO,CAAC,KAAK,IAAI,CAAC;SACvD,CAAC;AACH,KAAA;AACD,IAAA,CAAC,QAAQ,CAAC,IAAI,GAAG;AACf,QAAA,IAAI,EAAE,YAAY;AAClB,QAAA,SAAS,EAAE,QAAQ;AACnB,QAAA,KAAK,EAAE,QAAQ;QACf,gBAAgB,EAAE,QAAQ,CAAC,KAAK;AAChC,QAAA,SAAS,EAAE,CAAC,QAAQ,CAAC,KAAK,EAAE,QAAQ,CAAC,GAAG,EAAE,QAAQ,CAAC,MAAM,CAAC;QAC1D,SAAS,EAAE,CAAC,MAAM,EAAE,OAAO,EAAE,MAAM,MAAM;AACvC,YAAA,GAAG,EAAE,MAAM,CAAC,GAAG,GAAG,CAAC,MAAM,CAAC,MAAM,GAAG,OAAO,CAAC,MAAM,IAAI,CAAC;YACtD,IAAI,EAAE,MAAM,CAAC,IAAI,GAAG,OAAO,CAAC,KAAK,GAAG,MAAM;SAC3C,CAAC;AACH,KAAA;AACD,IAAA,CAAC,QAAQ,CAAC,KAAK,GAAG;AAChB,QAAA,IAAI,EAAE,YAAY;AAClB,QAAA,SAAS,EAAE,OAAO;AAClB,QAAA,KAAK,EAAE,QAAQ;QACf,gBAAgB,EAAE,QAAQ,CAAC,IAAI;AAC/B,QAAA,SAAS,EAAE,CAAC,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAC,GAAG,EAAE,QAAQ,CAAC,MAAM,CAAC;QACzD,SAAS,EAAE,CAAC,MAAM,EAAE,OAAO,EAAE,MAAM,MAAM;AACvC,YAAA,GAAG,EAAE,MAAM,CAAC,GAAG,GAAG,CAAC,MAAM,CAAC,MAAM,GAAG,OAAO,CAAC,MAAM,IAAI,CAAC;YACtD,IAAI,EAAE,MAAM,CAAC,IAAI,GAAG,MAAM,CAAC,KAAK,GAAG,MAAM;SAC1C,CAAC;AACH,KAAA;AACD,IAAA,CAAC,QAAQ,CAAC,OAAO,GAAG;AAClB,QAAA,IAAI,EAAE,UAAU;AAChB,QAAA,SAAS,EAAE,QAAQ;AACnB,QAAA,KAAK,EAAE,OAAO;QACd,gBAAgB,EAAE,QAAQ,CAAC,UAAU;AACrC,QAAA,SAAS,EAAE,CAAC,QAAQ,CAAC,UAAU,EAAE,QAAQ,CAAC,QAAQ,EAAE,QAAQ,CAAC,WAAW,CAAC;QACzE,SAAS,EAAE,CAAC,MAAM,EAAE,OAAO,EAAE,MAAM,MAAM;YACvC,GAAG,EAAE,MAAM,CAAC,GAAG,GAAG,OAAO,CAAC,MAAM,GAAG,MAAM;YACzC,IAAI,EAAE,MAAM,CAAC,IAAI;SAClB,CAAC;AACH,KAAA;AACD,IAAA,CAAC,QAAQ,CAAC,QAAQ,GAAG;AACnB,QAAA,IAAI,EAAE,UAAU;AAChB,QAAA,SAAS,EAAE,QAAQ;AACnB,QAAA,KAAK,EAAE,KAAK;QACZ,gBAAgB,EAAE,QAAQ,CAAC,WAAW;AACtC,QAAA,SAAS,EAAE,CAAC,QAAQ,CAAC,WAAW,EAAE,QAAQ,CAAC,OAAO,EAAE,QAAQ,CAAC,UAAU,CAAC;QACxE,SAAS,EAAE,CAAC,MAAM,EAAE,OAAO,EAAE,MAAM,MAAM;YACvC,GAAG,EAAE,MAAM,CAAC,GAAG,GAAG,OAAO,CAAC,MAAM,GAAG,MAAM;YACzC,IAAI,EAAE,MAAM,CAAC,IAAI,GAAG,MAAM,CAAC,KAAK,GAAG,OAAO,CAAC,KAAK;SACjD,CAAC;AACH,KAAA;AACD,IAAA,CAAC,QAAQ,CAAC,UAAU,GAAG;AACrB,QAAA,IAAI,EAAE,UAAU;AAChB,QAAA,SAAS,EAAE,OAAO;AAClB,QAAA,KAAK,EAAE,OAAO;QACd,gBAAgB,EAAE,QAAQ,CAAC,WAAW;AACtC,QAAA,SAAS,EAAE,CAAC,QAAQ,CAAC,WAAW,EAAE,QAAQ,CAAC,OAAO,EAAE,QAAQ,CAAC,QAAQ,CAAC;QACtE,SAAS,EAAE,CAAC,MAAM,EAAE,OAAO,EAAE,MAAM,MAAM;YACvC,GAAG,EAAE,MAAM,CAAC,GAAG,GAAG,MAAM,CAAC,MAAM,GAAG,MAAM;YACxC,IAAI,EAAE,MAAM,CAAC,IAAI;SAClB,CAAC;AACH,KAAA;AACD,IAAA,CAAC,QAAQ,CAAC,WAAW,GAAG;AACtB,QAAA,IAAI,EAAE,UAAU;AAChB,QAAA,SAAS,EAAE,OAAO;AAClB,QAAA,KAAK,EAAE,KAAK;QACZ,gBAAgB,EAAE,QAAQ,CAAC,UAAU;AACrC,QAAA,SAAS,EAAE,CAAC,QAAQ,CAAC,UAAU,EAAE,QAAQ,CAAC,QAAQ,EAAE,QAAQ,CAAC,OAAO,CAAC;QACrE,SAAS,EAAE,CAAC,MAAM,EAAE,OAAO,EAAE,MAAM,MAAM;YACvC,GAAG,EAAE,MAAM,CAAC,GAAG,GAAG,MAAM,CAAC,MAAM,GAAG,MAAM;YACxC,IAAI,EAAE,MAAM,CAAC,IAAI,GAAG,MAAM,CAAC,KAAK,GAAG,OAAO,CAAC,KAAK;SACjD,CAAC;AACH,KAAA;AACD,IAAA,CAAC,QAAQ,CAAC,UAAU,GAAG;AACrB,QAAA,IAAI,EAAE,YAAY;AAClB,QAAA,SAAS,EAAE,OAAO;AAClB,QAAA,KAAK,EAAE,OAAO;QACd,gBAAgB,EAAE,QAAQ,CAAC,QAAQ;AACnC,QAAA,SAAS,EAAE,CAAC,QAAQ,CAAC,QAAQ,EAAE,QAAQ,CAAC,SAAS,EAAE,QAAQ,CAAC,OAAO,CAAC;QACpE,SAAS,EAAE,CAAC,MAAM,EAAE,OAAO,EAAE,MAAM,MAAM;YACvC,GAAG,EAAE,MAAM,CAAC,GAAG;YACf,IAAI,EAAE,MAAM,CAAC,IAAI,GAAG,MAAM,CAAC,KAAK,GAAG,MAAM;SAC1C,CAAC;AACH,KAAA;AACD,IAAA,CAAC,QAAQ,CAAC,QAAQ,GAAG;AACnB,QAAA,IAAI,EAAE,YAAY;AAClB,QAAA,SAAS,EAAE,OAAO;AAClB,QAAA,KAAK,EAAE,KAAK;QACZ,gBAAgB,EAAE,QAAQ,CAAC,OAAO;AAClC,QAAA,SAAS,EAAE,CAAC,QAAQ,CAAC,OAAO,EAAE,QAAQ,CAAC,UAAU,EAAE,QAAQ,CAAC,SAAS,CAAC;QACtE,SAAS,EAAE,CAAC,MAAM,EAAE,OAAO,EAAE,MAAM,MAAM;YACvC,GAAG,EAAE,MAAM,CAAC,GAAG,GAAG,MAAM,CAAC,MAAM,GAAG,OAAO,CAAC,MAAM;YAChD,IAAI,EAAE,MAAM,CAAC,IAAI,GAAG,MAAM,CAAC,KAAK,GAAG,MAAM;SAC1C,CAAC;AACH,KAAA;AACD,IAAA,CAAC,QAAQ,CAAC,SAAS,GAAG;AACpB,QAAA,IAAI,EAAE,YAAY;AAClB,QAAA,SAAS,EAAE,QAAQ;AACnB,QAAA,KAAK,EAAE,OAAO;QACd,gBAAgB,EAAE,QAAQ,CAAC,OAAO;AAClC,QAAA,SAAS,EAAE,CAAC,QAAQ,CAAC,OAAO,EAAE,QAAQ,CAAC,UAAU,EAAE,QAAQ,CAAC,QAAQ,CAAC;QACrE,SAAS,EAAE,CAAC,MAAM,EAAE,OAAO,EAAE,MAAM,MAAM;YACvC,GAAG,EAAE,MAAM,CAAC,GAAG;YACf,IAAI,EAAE,MAAM,CAAC,IAAI,GAAG,OAAO,CAAC,KAAK,GAAG,MAAM;SAC3C,CAAC;AACH,KAAA;AACD,IAAA,CAAC,QAAQ,CAAC,OAAO,GAAG;AAClB,QAAA,IAAI,EAAE,YAAY;AAClB,QAAA,SAAS,EAAE,QAAQ;AACnB,QAAA,KAAK,EAAE,KAAK;QACZ,gBAAgB,EAAE,QAAQ,CAAC,QAAQ;AACnC,QAAA,SAAS,EAAE,CAAC,QAAQ,CAAC,QAAQ,EAAE,QAAQ,CAAC,SAAS,EAAE,QAAQ,CAAC,UAAU,CAAC;QACvE,SAAS,EAAE,CAAC,MAAM,EAAE,OAAO,EAAE,MAAM,MAAM;YACvC,GAAG,EAAE,MAAM,CAAC,GAAG,GAAG,MAAM,CAAC,MAAM,GAAG,OAAO,CAAC,MAAM;YAChD,IAAI,EAAE,MAAM,CAAC,IAAI,GAAG,OAAO,CAAC,KAAK,GAAG,MAAM;SAC3C,CAAC;AACH,KAAA;CACF;MAEY,iBAAiB,CAAA;AAK5B,IAAA,WAAA,CACU,MAAyB,EACzB,gBAAmD,EACnD,cAAc,CAAC,EAAA;QAFf,IAAM,CAAA,MAAA,GAAN,MAAM;QACN,IAAgB,CAAA,gBAAA,GAAhB,gBAAgB;QAChB,IAAW,CAAA,WAAA,GAAX,WAAW;QAEnB,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,IAAI,CAAC;QACrC,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,MAAM,CAAC,UAAU,IAAI,CAAC;;IAGxC,iBAAiB,GAAA;AACtB,QAAA,MAAM,UAAU,GAAG,IAAI,CAAC,aAAa,EAAE;AACvC,QAAA,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,cAAc,EAAE;;QAGxC,MAAM,eAAe,GAAI,IAAI,CAAC,MAAM,CAAC,QAAqB,IAAI,QAAQ,CAAC,MAAM;;QAG7E,MAAM,YAAY,GAAG,IAAI,CAAC,gBAAgB,CAAC,eAAe,EAAE,UAAU,CAAC;;AAGvE,QAAA,MAAM,MAAM,GAAG,aAAa,CAAC,YAAY,CAAC,CAAC,SAAS,CAAC,UAAU,EAAE,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC,MAAM,CAAC;QAC/F,OAAO,IAAI,CAAC,gBAAgB,CAAC,MAAM,EAAE,YAAY,EAAE,UAAU,CAAC;;IAGxD,aAAa,GAAA;AACnB,QAAA,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE;AACtB,YAAA,MAAM,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM;AACzC,YAAA,OAAO,EAAE,GAAG,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE;;QAEjD,OAAO,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,qBAAqB,EAAE;;IAG3C,cAAc,GAAA;AACpB,QAAA,MAAM,EAAE,GAAG,IAAI,CAAC,MAAM,CAAC,EAAG;QAC1B,OAAO;AACL,YAAA,GAAG,EAAE,CAAC;AACN,YAAA,IAAI,EAAE,CAAC;YACP,KAAK,EAAE,EAAE,CAAC,WAAW;YACrB,MAAM,EAAE,EAAE,CAAC,YAAY;SACxB;;IAGK,gBAAgB,CAAC,eAAyB,EAAE,UAAgB,EAAA;;QAElE,IAAI,CAAC,IAAI,CAAC,iBAAiB,CAAC,eAAe,EAAE,UAAU,CAAC,EAAE;AACxD,YAAA,OAAO,eAAe;;;QAIxB,MAAM,KAAK,GAAG,IAAI,CAAC,iBAAiB,CAAC,UAAU,CAAC;;AAGhD,QAAA,MAAM,IAAI,GAAG,aAAa,CAAC,eAAe,CAAC;;AAG3C,QAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,gBAAgB;QACtC,IAAI,CAAC,IAAI,CAAC,iBAAiB,CAAC,QAAQ,EAAE,UAAU,CAAC,EAAE;AACjD,YAAA,OAAO,QAAQ;;;AAIjB,QAAA,KAAK,MAAM,QAAQ,IAAI,IAAI,CAAC,SAAS,EAAE;YACrC,IAAI,CAAC,IAAI,CAAC,iBAAiB,CAAC,QAAQ,EAAE,UAAU,CAAC,EAAE;AACjD,gBAAA,OAAO,QAAQ;;;;AAKnB,QAAA,IAAI,IAAI,CAAC,IAAI,KAAK,UAAU,EAAE;YAC5B,MAAM,iBAAiB,GAAG,KAAK,CAAC,GAAG,GAAG,KAAK,CAAC,MAAM,GAAG,QAAQ,CAAC,GAAG,GAAG,QAAQ,CAAC,MAAM;YACnF,IAAI,CAAC,IAAI,CAAC,iBAAiB,CAAC,iBAAiB,EAAE,UAAU,CAAC,EAAE;AAC1D,gBAAA,OAAO,iBAAiB;;;;AAK5B,QAAA,IAAI,IAAI,CAAC,IAAI,KAAK,YAAY,EAAE;YAC9B,MAAM,mBAAmB,GAAG,KAAK,CAAC,IAAI,GAAG,KAAK,CAAC,KAAK,GAAG,QAAQ,CAAC,IAAI,GAAG,QAAQ,CAAC,KAAK;YACrF,IAAI,CAAC,IAAI,CAAC,iBAAiB,CAAC,mBAAmB,EAAE,UAAU,CAAC,EAAE;AAC5D,gBAAA,OAAO,mBAAmB;;;;QAK9B,OAAO,IAAI,CAAC,4BAA4B,CAAC,eAAe,EAAE,UAAU,CAAC;;AAG/D,IAAA,iBAAiB,CAAC,UAAgB,EAAA;QAMxC,OAAO;YACL,GAAG,EAAE,UAAU,CAAC,GAAG;AACnB,YAAA,KAAK,EAAE,IAAI,CAAC,gBAAgB,CAAC,KAAK,IAAI,UAAU,CAAC,IAAI,GAAG,UAAU,CAAC,KAAK,CAAC;AACzE,YAAA,MAAM,EAAE,IAAI,CAAC,gBAAgB,CAAC,MAAM,IAAI,UAAU,CAAC,GAAG,GAAG,UAAU,CAAC,MAAM,CAAC;YAC3E,IAAI,EAAE,UAAU,CAAC,IAAI;SACtB;;IAGK,iBAAiB,CAAC,QAAkB,EAAE,UAAgB,EAAA;AAC5D,QAAA,MAAM,IAAI,GAAG,aAAa,CAAC,QAAQ,CAAC;AACpC,QAAA,MAAM,OAAO,GAAG,IAAI,CAAC,WAAW;AAChC,QAAA,MAAM,MAAM,GAAG,IAAI,CAAC,SAAS,CAAC,UAAU,EAAE,OAAO,EAAE,IAAI,CAAC,MAAM,CAAC;AAC/D,QAAA,MAAM,EAAE,KAAK,EAAE,WAAW,EAAE,MAAM,EAAE,YAAY,EAAE,GAAG,IAAI,CAAC,gBAAgB;;AAG1E,QAAA,QACE,MAAM,CAAC,IAAI,GAAG,CAAC;YACf,MAAM,CAAC,IAAI,GAAG,OAAO,CAAC,KAAK,GAAG,IAAI,CAAC,UAAU,GAAG,WAAW;YAC3D,MAAM,CAAC,GAAG,GAAG,CAAC;AACd,YAAA,MAAM,CAAC,GAAG,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,UAAU,GAAG,YAAY;;IAIxD,iBAAiB,CAAC,QAAkB,EAAE,UAAgB,EAAA;AAC5D,QAAA,MAAM,IAAI,GAAG,aAAa,CAAC,QAAQ,CAAC;AACpC,QAAA,MAAM,OAAO,GAAG,IAAI,CAAC,WAAW;AAChC,QAAA,MAAM,MAAM,GAAG,IAAI,CAAC,SAAS,CAAC,UAAU,EAAE,OAAO,EAAE,IAAI,CAAC,MAAM,CAAC;AAC/D,QAAA,MAAM,EAAE,KAAK,EAAE,WAAW,EAAE,MAAM,EAAE,YAAY,EAAE,GAAG,IAAI,CAAC,gBAAgB;QAE1E,IAAI,MAAM,GAAG,CAAC;;AAGd,QAAA,IAAI,MAAM,CAAC,IAAI,GAAG,CAAC;YAAE,MAAM,IAAI,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC;QACpD,IAAI,MAAM,CAAC,IAAI,GAAG,OAAO,CAAC,KAAK,GAAG,WAAW;YAC3C,MAAM,IAAI,MAAM,CAAC,IAAI,GAAG,OAAO,CAAC,KAAK,GAAG,WAAW;AACrD,QAAA,IAAI,MAAM,CAAC,GAAG,GAAG,CAAC;YAAE,MAAM,IAAI,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC;QAClD,IAAI,MAAM,CAAC,GAAG,GAAG,OAAO,CAAC,MAAM,GAAG,YAAY;YAC5C,MAAM,IAAI,MAAM,CAAC,GAAG,GAAG,OAAO,CAAC,MAAM,GAAG,YAAY;AAEtD,QAAA,OAAO,MAAM;;IAGP,4BAA4B,CAAC,eAAyB,EAAE,UAAgB,EAAA;AAC9E,QAAA,MAAM,gBAAgB,GAAG,CAAC,eAAe,EAAE,GAAG,aAAa,CAAC,eAAe,CAAC,CAAC,SAAS,CAAC;QAEvF,IAAI,YAAY,GAAG,eAAe;QAClC,IAAI,aAAa,GAAG,IAAI,CAAC,iBAAiB,CAAC,eAAe,EAAE,UAAU,CAAC;AAEvE,QAAA,KAAK,MAAM,QAAQ,IAAI,gBAAgB,EAAE;YACvC,MAAM,QAAQ,GAAG,IAAI,CAAC,iBAAiB,CAAC,QAAQ,EAAE,UAAU,CAAC;AAC7D,YAAA,IAAI,QAAQ,GAAG,aAAa,EAAE;gBAC5B,aAAa,GAAG,QAAQ;gBACxB,YAAY,GAAG,QAAQ;;;AAI3B,QAAA,OAAO,YAAY;;AAGb,IAAA,gBAAgB,CACtB,MAAqC,EACrC,QAAkB,EAClB,UAAgB,EAAA;AAEhB,QAAA,MAAM,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,MAAM;AAC5B,QAAA,MAAM,OAAO,GAAG,IAAI,CAAC,WAAW;AAChC,QAAA,MAAM,EAAE,KAAK,EAAE,WAAW,EAAE,MAAM,EAAE,YAAY,EAAE,GAAG,IAAI,CAAC,gBAAgB;AAC1E,QAAA,MAAM,IAAI,GAAG,aAAa,CAAC,QAAQ,CAAC;;AAGpC,QAAA,IAAI,SAA6B;AACjC,QAAA,IAAI,QAA4B;;QAGhC,IAAI,GAAG,GAAG,IAAI,CAAC,UAAU,GAAG,CAAC,EAAE;YAC7B,SAAS,GAAG,OAAO,CAAC,MAAM,GAAG,GAAG,GAAG,IAAI,CAAC,UAAU;;AAC7C,aAAA,IAAI,GAAG,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,UAAU,GAAG,YAAY,EAAE;AAChE,YAAA,SAAS,GAAG,OAAO,CAAC,MAAM,IAAI,GAAG,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,UAAU,GAAG,YAAY,CAAC;;;AAItF,QAAA,IAAI,IAAI,GAAG,OAAO,CAAC,KAAK,GAAG,IAAI,CAAC,UAAU,GAAG,WAAW,EAAE;YACxD,QAAQ,GAAG,WAAW,GAAG,IAAI,GAAG,IAAI,CAAC,UAAU;;;AAIjD,QAAA,MAAM,CAAC,GAAG,SAAS,GAAG,SAAS,GAAG,IAAI,CAAC,UAAU,GAAG,OAAO,CAAC,MAAM;AAClE,QAAA,MAAM,CAAC,GAAG,QAAQ,GAAG,QAAQ,GAAG,IAAI,CAAC,UAAU,GAAG,OAAO,CAAC,KAAK;;AAG/D,QAAA,IAAI,WAAW,GAAuB,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,YAAY,GAAG,CAAC,CAAC,CAAC;AAClF,QAAA,IAAI,YAAY,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,WAAW,GAAG,CAAC,CAAC,CAAC;;AAG/D,QAAA,IAAI,MAA0B;AAC9B,QAAA,IAAI,KAAyB;;AAG7B,QAAA,IAAI,IAAI,CAAC,IAAI,KAAK,UAAU,IAAI,IAAI,CAAC,SAAS,KAAK,QAAQ,EAAE;YAC3D,MAAM,GAAG,YAAY,IAAI,WAAW,GAAG,CAAC,CAAC;YACzC,WAAW,GAAG,SAAS;;;AAIzB,QAAA,IAAI,YAAY,GAAG,CAAC,GAAG,WAAW,EAAE;YAClC,YAAY,GAAG,CAAC;YAChB,KAAK,GAAG,CAAC;;AACJ,aAAA,IACL,IAAI,CAAC,KAAK,KAAK,KAAK;AACpB,aAAC,IAAI,CAAC,IAAI,KAAK,YAAY,IAAI,IAAI,CAAC,SAAS,KAAK,QAAQ,CAAC,EAC3D;AACA,YAAA,KAAK,GAAG,WAAW,IAAI,YAAY,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,WAAW;;QAG7D,OAAO;AACL,YAAA,GAAG,EAAE,WAAW;YAChB,IAAI,EAAE,KAAK,KAAK,SAAS,GAAG,SAAS,GAAG,YAAY;YACpD,MAAM;YACN,KAAK;YACL,QAAQ;AACR,YAAA,SAAS,EAAE,SAAS,IAAI,SAAS,GAAG,CAAC,GAAG,SAAS,GAAG,SAAS;AAC7D,YAAA,QAAQ,EAAE,QAAQ,IAAI,QAAQ,GAAG,CAAC,GAAG,QAAQ,GAAG,SAAS;SAC1D;;AAEJ;AAED;AACgB,SAAA,eAAe,CAC7B,MAAyB,EACzB,gBAAgB,GAAG,EAAE,KAAK,EAAE,MAAM,CAAC,UAAU,EAAE,MAAM,EAAE,MAAM,CAAC,WAAW,EAAE,EAC3E,WAAW,GAAG,MAAM,CAAC,UAAU,GAAG,QAAQ,CAAC,eAAe,CAAC,WAAW,EAAA;IAEtE,MAAM,UAAU,GAAG,IAAI,iBAAiB,CAAC,MAAM,EAAE,gBAAgB,EAAE,WAAW,CAAC;AAC/E,IAAA,OAAO,UAAU,CAAC,iBAAiB,EAAE;AACvC;;MCvaa,mBAAmB,CAAA;AAAhC,IAAA,WAAA,GAAA;QACE,IAAG,CAAA,GAAA,GAAI,CAAC;QACR,IAAI,CAAA,IAAA,GAAI,CAAC;QACT,IAAK,CAAA,KAAA,GAAI,CAAC;QACV,IAAM,CAAA,MAAA,GAAI,CAAC;;AAGZ;MAEY,qBAAqB,GAAG,IAAI,cAAc,CAEpD,qBAAqB;SAER,0BAA0B,GAAA;IACxC,OAAO;AACL,QAAA,OAAO,EAAE,qBAAqB;AAC9B,QAAA,UAAU,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,CAAsB,IAAI,mBAAmB,EAAE,CAAC,EAAE,CAAC;KACvF;AACH;MAqCa,eAAe,CAAA;AAnC5B,IAAA,WAAA,GAAA;AAoCW,QAAA,IAAA,CAAA,YAAY,GAAG,MAAM,CAAC,qBAAqB,CAAC;AAC5C,QAAA,IAAA,CAAA,MAAM,GAAG,KAAK,CAAC,KAAK,CAAC;AACrB,QAAA,IAAA,CAAA,EAAE,GAAG,MAAM,EAAC,UAAuB,EAAC;AACpC,QAAA,IAAA,CAAA,MAAM,GAAG,QAAQ,CAAC,MAAK;AAC9B,YAAA,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,GAAG,IAAI,CAAC,YAAY,CAAC,MAAM,EAAE;AACvD,YAAA,IAAI,MAAM,IAAI,QAAQ,EAAE;AACtB,gBAAA,OAAO,IAAI,CAAC,oBAAoB,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,CAAC,aAAa,CAAC;;AAE3E,YAAA,OAAO,EAAE;AACX,SAAC,CAAC;AA8CH;AA5CS,IAAA,oBAAoB,CAAC,QAAyB,EAAE,MAAmB,EAAE,EAAe,EAAA;AAC1F,QAAA,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC,qBAAqB,EAAE;AACzD,QAAA,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,MAAM,CAAC,qBAAqB,EAAE;QACpF,IAAI,GAAG,GAAG,MAAM;QAChB,IAAI,SAAS,GAAG,KAAK;QACrB,IAAI,UAAU,GAAG,KAAK;QACtB,MAAM,WAAW,GAAG,CAAC;QAErB,MAAM,QAAQ,GAAG,OAAO,GAAG,CAAC,GAAG,WAAW,GAAG,CAAC;AAC9C,QAAA,MAAM,OAAO,GAAG,MAAM,GAAG,CAAC;QAE1B,QAAQ,QAAQ;AACd,YAAA,KAAK,KAAK;AACV,YAAA,KAAK,IAAI;AACT,YAAA,KAAK,IAAI;gBACP,SAAS,GAAG,MAAM;gBAClB;AACF,YAAA,KAAK,MAAM;gBACT,GAAG,GAAG,QAAQ;AACd,gBAAA,UAAU,GAAG,CAAe,YAAA,EAAA,WAAW,GAAG,CAAC,KAAK;gBAChD,SAAS;AACP,oBAAA,OAAO,GAAG;AACR,0BAAE,CAAA,WAAA,EAAc,WAAW,GAAG,CAAC,CAAK,GAAA;0BAClC,CAAQ,KAAA,EAAA,QAAQ,IAAI,IAAI,GAAG,GAAG,CAAC,CAAA,GAAA,CAAK;gBAC1C;AACF,YAAA,KAAK,OAAO;gBACV,GAAG,GAAG,OAAO;AACb,gBAAA,UAAU,GAAG,CAAI,CAAA,EAAA,WAAW,GAAG,CAAC,IAAI;gBACpC,SAAS;AACP,oBAAA,OAAO,GAAG;AACR,0BAAE,CAAA,WAAA,EAAc,WAAW,GAAG,CAAC,CAAK,GAAA;0BAClC,CAAQ,KAAA,EAAA,QAAQ,IAAI,IAAI,GAAG,GAAG,CAAC,CAAA,GAAA,CAAK;gBAC1C;AACF,YAAA,KAAK,QAAQ;AACb,YAAA,KAAK,IAAI;AACT,YAAA,KAAK,IAAI;gBACP,GAAG,GAAG,QAAQ;gBACd,SAAS,GAAG,SAAS;AACrB,gBAAA,UAAU,GAAG,OAAO,GAAG,KAAK,GAAG,KAAK,GAAG,CAAe,YAAA,EAAA,OAAO,KAAK;gBAClE;;AAGJ,QAAA,OAAO,EAAE,gBAAgB,EAAE,GAAG,EAAE,eAAe,EAAE,UAAU,EAAE,cAAc,EAAE,SAAS,EAAE;;8GAtD/E,eAAe,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAf,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,eAAe,EAjChB,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,MAAA,EAAA,EAAA,MAAA,EAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,UAAA,EAAA,QAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,OAAA,EAAA,UAAA,EAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA4BT,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,+XAAA,CAAA,EAAA,CAAA,CAAA;;2FAKU,eAAe,EAAA,UAAA,EAAA,CAAA;kBAnC3B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,mBAAmB;AAC7B,oBAAA,QAAQ,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA4BT,EAAA,CAAA;AACD,oBAAA,IAAI,EAAE;AACJ,wBAAA,SAAS,EAAE,UAAU;AACtB,qBAAA;AACF,iBAAA;;;MCpCY,kBAAkB,CAAA;AAI7B,IAAA,WAAA,GAAA;AAHS,QAAA,IAAA,CAAA,OAAO,GAAG,MAAM,CAAC,UAAU,CAAC;AAC5B,QAAA,IAAA,CAAA,SAAS,GAAG,MAAM,CAAC,SAAS,CAAC;QAGpC,IAAI,CAAC,SAAS,CAAC,UAAU,GAAG,YAAY,CAAC,MAAM,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC,SAAS,IAAI,IAAI,CAAC;;8GAL/E,kBAAkB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;kGAAlB,kBAAkB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,sBAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,OAAA,EAAA,oDAAA,EAAA,EAAA,UAAA,EAAA,EAAA,gBAAA,EAAA,gCAAA,EAAA,OAAA,EAAA,qCAAA,EAAA,EAAA,EAAA,cAAA,EAAA,CAAA,EAAA,SAAA,EAAA,EAAA,CAAA,SAAA,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;2FAAlB,kBAAkB,EAAA,UAAA,EAAA,CAAA;kBAT9B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,sBAAsB;oBAChC,cAAc,EAAE,CAAC,SAAS,CAAC;AAC3B,oBAAA,IAAI,EAAE;AACJ,wBAAA,kBAAkB,EAAE,gCAAgC;AACpD,wBAAA,SAAS,EAAE,qCAAqC;AAChD,wBAAA,SAAS,EAAE,oDAAoD;AAChE,qBAAA;AACF,iBAAA;;MAgBY,cAAc,CAAA;AAN3B,IAAA,WAAA,GAAA;AAOW,QAAA,IAAA,CAAA,OAAO,GAAG,MAAM,CAAC,UAAU,CAAC;AACtC;8GAFY,cAAc,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;kGAAd,cAAc,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,OAAA,EAAA,6BAAA,EAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;2FAAd,cAAc,EAAA,UAAA,EAAA,CAAA;kBAN1B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,kBAAkB;AAC5B,oBAAA,IAAI,EAAE;AACJ,wBAAA,SAAS,EAAE,6BAA6B;AACzC,qBAAA;AACF,iBAAA;;AAsBK,MAAO,UAAW,SAAQ,UAAU,CAAA;AAkCxC,IAAA,WAAA,GAAA;AACE,QAAA,KAAK,EAAE;AAlCA,QAAA,IAAA,CAAA,YAAY,GAAG,MAAM,CAAC,qBAAqB,CAAC;QACpC,IAAS,CAAA,SAAA,GAAG,SAAS,EAAE;AAE/B,QAAA,IAAA,CAAA,QAAQ,GAAG,SAAS,CAAC,QAAQ,CAAC,UAAU,EAAE,EAAE,IAAI,EAAE,gBAAgB,EAAE,CAAC;AACrE,QAAA,IAAA,CAAA,SAAS,GAAG,SAAS,CAAC,QAAQ,CAA0C,cAAc,EAAE;AAC/F,YAAA,IAAI,EAAE,UAAU;AACjB,SAAA,CAAC;QACO,IAAe,CAAA,eAAA,GAAG,SAAS,CAClC,kBAAkB,EAClB,EAAE,IAAI,EAAE,UAAU,EAAE,CACrB;AAEQ,QAAA,IAAA,CAAA,OAAO,GAAG,MAAM,CAAiB,EAAoB,CAAC;QACvD,IAAY,CAAA,YAAA,GAAoB,KAAK;AACpC,QAAA,IAAA,CAAA,QAAQ,GAAG,MAAM,CAAC,CAAC,CAAC;QAEpB,IAAM,CAAA,MAAA,GAA6C,IAAI,CAAC,gBAAgB,CAAC,IAAI,CACpF,SAAS,CAAC,CAAC,IAAG;YACZ,MAAM,EAAE,GAAG,IAAI,CAAC,SAAS,EAAG,CAAC,aAAa;YAC1C,MAAM,UAAU,GAAG,SAAS,CAAC,EAAE,EAAE,YAAY,CAAC;YAC9C,MAAM,UAAU,GAAG,SAAS,CAAC,EAAE,EAAE,YAAY,CAAC;YAC9C,MAAM,KAAK,GAAG,UAAU,CAAC,IAAI,CAC3B,SAAS,CAAC,CAAC,IACT,UAAU,CAAC,IAAI,CACb,GAAG,CAAC,CAAC,KAAK,EAAE,IAAI,EAAE,YAAY,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC,CAAC,EAC5C,SAAS,CAAC,EAAE,IAAI,EAAE,YAAY,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC,CAC5C,CACF,CACF;YACD,OAAO,CAAC,GAAG,KAAK,GAAG,KAAK;SACzB,CAAC,CACH;QAqEO,IAAuB,CAAA,uBAAA,GAAG,MAAK;AACrC,YAAA,IAAI,CAAC,SAAS,CAAC,eAAe,CAAC,MAAM,IAAI,CAAC,eAAe,EAAE,CAAC;AAC9D,SAAC;AAlEC,QAAA,MAAM,MAAM,GAAG,MAAM,CAAC,MAAK;YACzB,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAG,CAAC;YAC5C,MAAM,CAAC,OAAO,EAAE;AAClB,SAAC,CAAC;QAEF,MAAM,CAAC,OAAO,IAAG;YACf,MAAM,EAAE,GAAG,IAAI,CAAC,SAAS,EAAG,CAAC,aAAa;AAC1C,YAAA,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,EAAE;AAC9B,YAAA,MAAM,MAAM,GAAG,IAAI,CAAC,SAAS,EAAE;AAC/B,YAAA,IAAI,OAAO,CAAC,MAAM,EAAE;AAClB,gBAAA,OAAO,CAAC,MAAM,GAAG,EAAE;;YAErB,IAAI,CAAC,YAAY,GAAG,OAAO,CAAC,QAAQ,IAAI,QAAQ;;AAEhD,YAAA,IAAI,OAAO,CAAC,YAAY,EAAE;;;;;;;;;;;;;;;;;;;;;AAsBxB,gBAAA,eAAe,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,MAAK;AAChC,oBAAA,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;oBAChC,IAAI,CAAC,qBAAqB,CAAC,MAAM,EAAE,EAAE,EAAE,OAAO,CAAC;AACjD,iBAAC,CAAC;;iBACG;gBACL,IAAI,CAAC,qBAAqB,CAAC,MAAM,EAAE,EAAE,EAAE,OAAO,CAAC;;;AAIjD,YAAA,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE;gBACrB,MAAM,CAAC,gBAAgB,CAAC,QAAQ,EAAE,IAAI,CAAC,uBAAuB,CAAC;AAC/D,gBAAA,OAAO,CAAC,MAAM,MAAM,CAAC,mBAAmB,CAAC,QAAQ,EAAE,IAAI,CAAC,uBAAuB,CAAC,CAAC;;;AAInF,YAAA,MAAM,cAAc,GAAG,IAAI,cAAc,CAAC,MAAK;;gBAE7C,IAAI,CAAC,qBAAqB,CAAC,MAAM,EAAE,EAAE,EAAE,OAAO,CAAC;AACjD,aAAC,CAAC;AACF,YAAA,cAAc,CAAC,OAAO,CAAC,MAAM,CAAC;YAC9B,OAAO,CAAC,MAAM,cAAc,CAAC,UAAU,EAAE,CAAC;AAC5C,SAAC,CAAC;;IAGK,SAAS,GAAA;QAChB,OAAO,IAAI,CAAC,MAAM,EAAE,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC,MAAM;;AAOvC,IAAA,qBAAqB,CAAC,MAAmB,EAAE,EAAe,EAAE,OAAuB,EAAA;;;;;AAKzF,QAAA,IAAI,OAAO,CAAC,KAAK,KAAK,QAAQ,EAAE;;YAE9B,EAAE,CAAC,KAAK,CAAC,KAAK,GAAG,GAAG,MAAM,CAAC,WAAW,CAAA,EAAA,CAAI;;AACrC,aAAA,IAAI,OAAO,CAAC,KAAK,KAAK,MAAM,EAAE;YACnC,EAAE,CAAC,KAAK,CAAC,QAAQ,GAAG,GAAG,MAAM,CAAC,WAAW,CAAA,EAAA,CAAI;;AACxC,aAAA,IAAI,OAAO,CAAC,KAAK,EAAE;YACxB,EAAE,CAAC,KAAK,CAAC,KAAK,GAAG,OAAO,CAAC,KAAK;;AAEhC,QAAA,IAAI,OAAO,CAAC,MAAM,EAAE;YAClB,EAAE,CAAC,KAAK,CAAC,MAAM,GAAG,OAAO,CAAC,MAAM;;AAElC,QAAA,IAAI,OAAO,CAAC,SAAS,EAAE;YACrB,EAAE,CAAC,KAAK,CAAC,SAAS,GAAG,OAAO,CAAC,SAAS;;QAGxC,IAAI,CAAC,uBAAuB,EAAE;;IAGxB,eAAe,GAAA;QACrB,MAAM,EAAE,GAAG,IAAI,CAAC,SAAS,EAAG,CAAC,aAAa;AAC1C,QAAA,MAAM,MAAM,GAAG,IAAI,CAAC,SAAS,EAAE;QAC/B,IAAI,CAAC,MAAM,EAAE;YACX;;AAEF,QAAA,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,QAAQ,EAAE,SAAS,EAAE,QAAQ,EAAE,GAAG,eAAe,CAAC;YAClF,MAAM;YACN,EAAE;YACF,QAAQ,EAAE,IAAI,CAAC,YAAY;AAC3B,YAAA,MAAM,EAAE,IAAI,CAAC,OAAO,EAAE,CAAC,MAAM;AAC7B,YAAA,MAAM,EAAE,IAAI,CAAC,OAAO,EAAE,CAAC,MAAM;AAC7B,YAAA,UAAU,EAAE,IAAI,CAAC,OAAO,EAAE,CAAC,UAAU;AACtC,SAAA,CAAC;;;;;AAKF,QAAA,IAAI,CAAC,YAAY,GAAG,QAAQ;;AAE5B,QAAA,IAAI,MAAM,KAAK,SAAS,EAAE;YACxB,EAAE,CAAC,KAAK,CAAC,MAAM,GAAG,CAAG,EAAA,MAAM,IAAI;AAC/B,YAAA,EAAE,CAAC,KAAK,CAAC,GAAG,GAAG,EAAE;;aACZ;YACL,EAAE,CAAC,KAAK,CAAC,GAAG,GAAG,CAAG,EAAA,GAAG,IAAI;AACzB,YAAA,EAAE,CAAC,KAAK,CAAC,MAAM,GAAG,EAAE;;AAEtB,QAAA,IAAI,KAAK,IAAI,SAAS,EAAE;YACtB,EAAE,CAAC,KAAK,CAAC,KAAK,GAAG,CAAG,EAAA,KAAK,IAAI;AAC7B,YAAA,EAAE,CAAC,KAAK,CAAC,IAAI,GAAG,EAAE;;aACb;YACL,EAAE,CAAC,KAAK,CAAC,IAAI,GAAG,CAAG,EAAA,IAAI,IAAI;AAC3B,YAAA,EAAE,CAAC,KAAK,CAAC,KAAK,GAAG,EAAE;;QAGrB,IAAI,SAAS,EAAE;YACb,EAAE,CAAC,KAAK,CAAC,SAAS,GAAG,CAAG,EAAA,SAAS,IAAI;;QAEvC,IAAI,QAAQ,EAAE;YACZ,EAAE,CAAC,KAAK,CAAC,QAAQ,GAAG,CAAG,EAAA,QAAQ,IAAI;;QAErC,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC;;AAGrE,IAAA,UAAU,CAAC,OAAuB,EAAA;;AAEzC,QAAA,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC;;8GA9KhB,UAAU,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAV,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAU,EAIsC,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,aAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,uBAAA,EAAA,iBAAA,EAAA,EAAA,UAAA,EAAA,EAAA,kBAAA,EAAA,EAAA,EAAA,EAAA,EAAA,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,UAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,UAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,IAAA,EAAA,gBAAgB,EACM,QAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,WAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,cAAc,EACvF,WAAA,EAAA,IAAA,EAAA,IAAA,EAAA,UAAU,EAGhB,QAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,iBAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,kBAAkB,EACV,WAAA,EAAA,IAAA,EAAA,IAAA,EAAA,UAAU,EAzBV,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAAA,EAAE,EAKA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA;AACV,YAAA,mBAAmB,CAAC,CAAC,sBAAsB,CAAC,CAAC;YAC7C,OAAO,CAAC,qBAAqB,EAAE;AAC7B,gBAAA,KAAK,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;AACpD,gBAAA,KAAK,CAAC,MAAM,EAAE,KAAK,CAAC,EAAE,SAAS,EAAE,+BAA+B,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;AAChF,gBAAA,KAAK,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE,SAAS,EAAE,+BAA+B,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;AAC7E,gBAAA,UAAU,CAAC,QAAQ,EAAE,OAAO,CAAC,gBAAgB,CAAC,CAAC;aAChD,CAAC;AACH,SAAA,EAAA,CAAA,CAAA;;2FAEU,UAAU,EAAA,UAAA,EAAA,CAAA;kBAjBtB,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,aAAa;AACvB,oBAAA,QAAQ,EAAE,EAAE;AACZ,oBAAA,IAAI,EAAE;AACJ,wBAAA,oBAAoB,EAAE,EAAE;AACxB,wBAAA,yBAAyB,EAAE,iBAAiB;AAC7C,qBAAA;AACD,oBAAA,UAAU,EAAE;AACV,wBAAA,mBAAmB,CAAC,CAAC,sBAAsB,CAAC,CAAC;wBAC7C,OAAO,CAAC,qBAAqB,EAAE;AAC7B,4BAAA,KAAK,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;AACpD,4BAAA,KAAK,CAAC,MAAM,EAAE,KAAK,CAAC,EAAE,SAAS,EAAE,+BAA+B,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;AAChF,4BAAA,KAAK,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE,SAAS,EAAE,+BAA+B,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;AAC7E,4BAAA,UAAU,CAAC,QAAQ,EAAE,OAAO,CAAC,gBAAgB,CAAC,CAAC;yBAChD,CAAC;AACH,qBAAA;AACF,iBAAA;;AAmLD,SAAS,eAAe,CAAC,MAAmB,EAAA;AAC1C,IAAA,OAAO,IAAI,OAAO,CAAC,OAAO,IAAG;AAC3B,QAAA,IAAI,OAAe;QACnB,IAAI,UAAU,GAAG,IAAI;QACrB,IAAI,YAAY,GAAG,CAAC;QAEpB,MAAM,qBAAqB,GAAG,MAAK;YACjC,UAAU,GAAG,MAAM,CAAC,WAAW,IAAI,QAAQ,CAAC,eAAe,CAAC,SAAS;YAErE,IAAI,OAAO,KAAK,IAAI,IAAI,UAAU,KAAK,OAAO,EAAE;AAC9C,gBAAA,YAAY,EAAE;AACd,gBAAA,IAAI,YAAY,GAAG,CAAC,EAAE;oBACpB,OAAO,CAAC,IAAI,CAAC;oBACb;;;iBAEG;gBACL,YAAY,GAAG,CAAC;gBAChB,OAAO,GAAG,UAAU;;YAGtB,qBAAqB,CAAC,qBAAqB,CAAC;AAC9C,SAAC;;;;;;AAMD,QAAA,MAAM,CAAC,cAAc,CAAC,EAAE,QAAQ,EAAE,QAAQ,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC;QAC/D,qBAAqB,CAAC,qBAAqB,CAAC;AAC9C,KAAC,CAAC;AACJ;AAGM,MAAO,eAAgB,SAAQ,cAAc,CAAA;AADnD,IAAA,WAAA,GAAA;;QAEW,IAAe,CAAA,eAAA,GAAG,KAAK,EAAE;AAKnC;IAHU,KAAK,GAAA;QACZ,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,eAAe,EAAE,CAAC;;8GAJ1B,eAAe,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;kGAAf,eAAe,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,mBAAA,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,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;2FAAf,eAAe,EAAA,UAAA,EAAA,CAAA;kBAD3B,SAAS;mBAAC,EAAE,QAAQ,EAAE,mBAAmB,EAAE;;AAStC,SAAU,YAAY,CAAC,OAA0B,EAAA;AACrD,IAAA,OAAO,CAAC,EAAE,OAAO,EAAE,UAAU,EAAE,WAAW,EAAE,OAAO,EAAE,EAAE,0BAA0B,EAAE,CAAC;AACtF;;ACtRM,MAAO,cAAe,SAAQ,aAAa,CAAA;AAYhD;AAUD,MAAM,aAAa,GAAG,IAAI,cAAc,CAAmB,eAAe,CAAC;SAI3D,gBAAgB,GAAA;AAC9B,IAAA,MAAM,OAAO,GAAG,MAAM,CAAC,aAAa,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,IAAI,UAAU;AACvE,IAAA,MAAM,IAAI,GAAG,iBAAiB,CAAC,OAAO,CAAC;AAEvC,IAAA,SAAS,IAAI,CAAI,SAAyB,EAAE,OAAuB,EAAA;QACjE,OAAO,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,OAAO,CAAC;;IAGtC,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,CAAC,QAAQ,EAAE;AAC1C;AAEa,MAAA,kBAAkB,GAAG,CAAC,OAA0B,KAAI;IAC/D,OAAO,EAAE,OAAO,EAAE,aAAa,EAAE,QAAQ,EAAE,OAAO,EAAE;AACtD;;MCtCa,iBAAiB,CAAA;AAP9B,IAAA,WAAA,GAAA;QAQW,IAAa,CAAA,aAAA,GAAG,gBAAgB,EAAE;AAClC,QAAA,IAAA,CAAA,EAAE,GAAG,MAAM,CAA0B,UAAU,CAAC;AAEhD,QAAA,IAAA,CAAA,iBAAiB,GAAG,KAAK,CAAC,QAAQ,EAAoB;QACtD,IAAqB,CAAA,qBAAA,GAAG,KAAK,EAAE;QAC/B,IAAO,CAAA,OAAA,GAAG,KAAK,EAAoD;AAEpE,QAAA,IAAA,CAAA,OAAO,GAAiB,MAAK,GAAG;AAgBzC;IAdC,IAAI,GAAA;AACF,QAAA,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,EAAE;AAC9B,QAAA,MAAM,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,iBAAiB,EAAE,EAAE;AACnE,YAAA,MAAM,EAAE,IAAI,CAAC,EAAE,CAAC,aAAa;YAC7B,MAAM,EAAE,OAAO,EAAE,MAAM;AACvB,YAAA,QAAQ,EAAE,OAAO,EAAE,QAAQ,IAAI,KAAK;AACpC,YAAA,IAAI,EAAE,IAAI,CAAC,qBAAqB,EAAE;AACnC,SAAA,CAAC;AACF,QAAA,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC,KAAK;;IAG7B,KAAK,GAAA;QACH,IAAI,CAAC,OAAO,EAAE;;8GAtBL,iBAAiB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;kGAAjB,iBAAiB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,qBAAA,EAAA,MAAA,EAAA,EAAA,iBAAA,EAAA,EAAA,iBAAA,EAAA,mBAAA,EAAA,UAAA,EAAA,mBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,qBAAA,EAAA,EAAA,iBAAA,EAAA,uBAAA,EAAA,UAAA,EAAA,uBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,OAAA,EAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,UAAA,EAAA,SAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,OAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;2FAAjB,iBAAiB,EAAA,UAAA,EAAA,CAAA;kBAP7B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,qBAAqB;AAC/B,oBAAA,QAAQ,EAAE,mBAAmB;AAC7B,oBAAA,IAAI,EAAE;AACJ,wBAAA,SAAS,EAAE,QAAQ;AACpB,qBAAA;AACF,iBAAA;;;ACTD;;AAEG;;ACFH;;AAEG;;;;"}
|
|
1
|
+
{"version":3,"file":"ngbase-adk-popover.mjs","sources":["../../../projects/adk/popover/base-popover.service.ts","../../../projects/adk/popover/utils.ts","../../../projects/adk/popover/popover-arrow.ng.ts","../../../projects/adk/popover/popover.ts","../../../projects/adk/popover/popover.service.ts","../../../projects/adk/popover/popover-trigger.ts","../../../projects/adk/popover/public-api.ts","../../../projects/adk/popover/ngbase-adk-popover.ts"],"sourcesContent":["import { Type } from '@angular/core';\nimport { basePortal, DialogInput } from '@ngbase/adk/portal';\nimport { NgbPopover } from './popover';\nimport { PopoverOptions } from './popover.service';\n\nexport function basePopoverPortal<T>(component: Type<T>) {\n const NAME = 'popover';\n const base = basePortal(NAME, component);\n\n function open<T>(component: DialogInput<T>, options: PopoverOptions) {\n const { diaRef, parent, replace, childSignal } = base.open(\n component,\n (comp, opt) => {\n const compInst = comp.instance as NgbPopover;\n compInst.setOptions(opt as PopoverOptions);\n },\n options,\n );\n\n return {\n diaRef,\n events: (parent.instance as NgbPopover).events,\n parent: parent.instance,\n replace,\n childSignal,\n };\n }\n\n function closeAll() {\n base.closeAll();\n }\n return { open, closeAll };\n}\n","export interface PopoverUtilConfig {\n offset?: number;\n sideOffset?: number;\n smoothScroll?: boolean;\n position?: Position | OverlayPosition;\n client?: { x: number; y: number; w: number; h: number } | null;\n target: HTMLElement;\n el?: HTMLElement;\n}\n\nexport interface Rect {\n top: number;\n left: number;\n width: number;\n height: number;\n}\n\nexport type OverlayPosition =\n | 'top'\n | 'bottom'\n | 'left'\n | 'right'\n | 'rs'\n | 're'\n | 'ls'\n | 'le'\n | 'tl'\n | 'tr'\n | 'bl'\n | 'br';\n\n// Main position enum with all supported positions\nexport enum Position {\n Top = 'top',\n Bottom = 'bottom',\n Left = 'left',\n Right = 'right',\n TopLeft = 'tl',\n TopRight = 'tr',\n BottomLeft = 'bl',\n BottomRight = 'br',\n RightStart = 'rs',\n RightEnd = 're',\n LeftStart = 'ls',\n LeftEnd = 'le',\n}\n\nexport interface PositionResult {\n top?: number;\n left?: number;\n bottom?: number;\n right?: number;\n position: Position;\n maxHeight?: number;\n maxWidth?: number;\n}\n\n// Position metadata - defines each position in terms of main axis, alignment, and coordinates calculation\ninterface PositionMeta {\n main: 'vertical' | 'horizontal';\n placement: 'before' | 'after';\n align: 'start' | 'center' | 'end';\n oppositePosition: Position;\n fallbacks: Position[];\n getCoords: (targetRect: Rect, elementRect: Rect, offset: number) => { top: number; left: number };\n}\n\n// Position metadata definitions\nconst POSITION_META: Record<Position, PositionMeta> = {\n [Position.Top]: {\n main: 'vertical',\n placement: 'before',\n align: 'center',\n oppositePosition: Position.Bottom,\n fallbacks: [Position.Bottom],\n getCoords: (target, element, offset) => ({\n top: target.top - element.height - offset,\n left: target.left + (target.width - element.width) / 2,\n }),\n },\n [Position.Bottom]: {\n main: 'vertical',\n placement: 'after',\n align: 'center',\n oppositePosition: Position.Top,\n fallbacks: [Position.Top, Position.Right, Position.Left],\n getCoords: (target, element, offset) => ({\n top: target.top + target.height + offset,\n left: target.left + (target.width - element.width) / 2,\n }),\n },\n [Position.Left]: {\n main: 'horizontal',\n placement: 'before',\n align: 'center',\n oppositePosition: Position.Right,\n fallbacks: [Position.Right, Position.Top, Position.Bottom],\n getCoords: (target, element, offset) => ({\n top: target.top + (target.height - element.height) / 2,\n left: target.left - element.width - offset,\n }),\n },\n [Position.Right]: {\n main: 'horizontal',\n placement: 'after',\n align: 'center',\n oppositePosition: Position.Left,\n fallbacks: [Position.Left, Position.Top, Position.Bottom],\n getCoords: (target, element, offset) => ({\n top: target.top + (target.height - element.height) / 2,\n left: target.left + target.width + offset,\n }),\n },\n [Position.TopLeft]: {\n main: 'vertical',\n placement: 'before',\n align: 'start',\n oppositePosition: Position.BottomLeft,\n fallbacks: [Position.BottomLeft, Position.TopRight, Position.BottomRight],\n getCoords: (target, element, offset) => ({\n top: target.top - element.height - offset,\n left: target.left,\n }),\n },\n [Position.TopRight]: {\n main: 'vertical',\n placement: 'before',\n align: 'end',\n oppositePosition: Position.BottomRight,\n fallbacks: [Position.BottomRight, Position.TopLeft, Position.BottomLeft],\n getCoords: (target, element, offset) => ({\n top: target.top - element.height - offset,\n left: target.left + target.width - element.width,\n }),\n },\n [Position.BottomLeft]: {\n main: 'vertical',\n placement: 'after',\n align: 'start',\n oppositePosition: Position.BottomRight,\n fallbacks: [Position.BottomRight, Position.TopLeft, Position.TopRight],\n getCoords: (target, element, offset) => ({\n top: target.top + target.height + offset,\n left: target.left,\n }),\n },\n [Position.BottomRight]: {\n main: 'vertical',\n placement: 'after',\n align: 'end',\n oppositePosition: Position.BottomLeft,\n fallbacks: [Position.BottomLeft, Position.TopRight, Position.TopLeft],\n getCoords: (target, element, offset) => ({\n top: target.top + target.height + offset,\n left: target.left + target.width - element.width,\n }),\n },\n [Position.RightStart]: {\n main: 'horizontal',\n placement: 'after',\n align: 'start',\n oppositePosition: Position.RightEnd,\n fallbacks: [Position.RightEnd, Position.LeftStart, Position.LeftEnd],\n getCoords: (target, element, offset) => ({\n top: target.top,\n left: target.left + target.width + offset,\n }),\n },\n [Position.RightEnd]: {\n main: 'horizontal',\n placement: 'after',\n align: 'end',\n oppositePosition: Position.LeftEnd,\n fallbacks: [Position.LeftEnd, Position.RightStart, Position.LeftStart],\n getCoords: (target, element, offset) => ({\n top: target.top + target.height - element.height,\n left: target.left + target.width + offset,\n }),\n },\n [Position.LeftStart]: {\n main: 'horizontal',\n placement: 'before',\n align: 'start',\n oppositePosition: Position.LeftEnd,\n fallbacks: [Position.LeftEnd, Position.RightStart, Position.RightEnd],\n getCoords: (target, element, offset) => ({\n top: target.top,\n left: target.left - element.width - offset,\n }),\n },\n [Position.LeftEnd]: {\n main: 'horizontal',\n placement: 'before',\n align: 'end',\n oppositePosition: Position.RightEnd,\n fallbacks: [Position.RightEnd, Position.LeftStart, Position.RightStart],\n getCoords: (target, element, offset) => ({\n top: target.top + target.height - element.height,\n left: target.left - element.width - offset,\n }),\n },\n};\n\nexport class PopoverPositioner {\n private offset: number;\n private sideOffset: number;\n private elementRect!: Rect;\n\n constructor(\n private config: PopoverUtilConfig,\n private windowDimensions: { width: number; height: number },\n private scrollWidth = 0,\n ) {\n this.offset = this.config.offset || 5;\n this.sideOffset = this.config.sideOffset || 0;\n }\n\n public calculatePosition(): PositionResult {\n const targetRect = this.getTargetRect();\n this.elementRect = this.getElementRect();\n\n // Get initial position or use bottom as default\n const initialPosition = (this.config.position as Position) || Position.Bottom;\n\n // Find best position\n const bestPosition = this.findBestPosition(initialPosition, targetRect);\n\n // Generate and finalize coordinates\n const coords = POSITION_META[bestPosition].getCoords(targetRect, this.elementRect, this.offset);\n return this.finalizePosition(coords, bestPosition, targetRect);\n }\n\n private getTargetRect(): Rect {\n if (this.config.client) {\n const { x, y, w, h } = this.config.client;\n return { top: y, left: x, width: w, height: h };\n }\n return this.config.target.getBoundingClientRect();\n }\n\n private getElementRect(): Rect {\n const el = this.config.el!;\n return {\n top: 0,\n left: 0,\n width: el.clientWidth,\n height: el.clientHeight,\n };\n }\n\n private findBestPosition(initialPosition: Position, targetRect: Rect): Position {\n // If the initial position works, use it\n if (!this.positionOverflows(initialPosition, targetRect)) {\n return initialPosition;\n }\n\n // Get available space in each direction\n const space = this.getAvailableSpace(targetRect);\n\n // Special handling for simple cases (e.g., choosing between top and bottom based on space)\n const meta = POSITION_META[initialPosition];\n\n // 1. Try the opposite position on the same axis (e.g., bottom for top)\n const opposite = meta.oppositePosition;\n if (!this.positionOverflows(opposite, targetRect)) {\n return opposite;\n }\n\n // 2. Try fallbacks in order\n for (const fallback of meta.fallbacks) {\n if (!this.positionOverflows(fallback, targetRect)) {\n return fallback;\n }\n }\n\n // 3. For vertical positions, prefer the side with more space\n if (meta.main === 'vertical') {\n const preferredVertical = space.top > space.bottom ? Position.Top : Position.Bottom;\n if (!this.positionOverflows(preferredVertical, targetRect)) {\n return preferredVertical;\n }\n }\n\n // 4. For horizontal positions, prefer the side with more space\n if (meta.main === 'horizontal') {\n const preferredHorizontal = space.left > space.right ? Position.Left : Position.Right;\n if (!this.positionOverflows(preferredHorizontal, targetRect)) {\n return preferredHorizontal;\n }\n }\n\n // 5. If all positions have issues, find the one with the best fit\n return this.getPositionWithLeastOverflow(initialPosition, targetRect);\n }\n\n private getAvailableSpace(targetRect: Rect): {\n top: number;\n right: number;\n bottom: number;\n left: number;\n } {\n return {\n top: targetRect.top,\n right: this.windowDimensions.width - (targetRect.left + targetRect.width),\n bottom: this.windowDimensions.height - (targetRect.top + targetRect.height),\n left: targetRect.left,\n };\n }\n\n private positionOverflows(position: Position, targetRect: Rect): boolean {\n const meta = POSITION_META[position];\n const element = this.elementRect;\n const coords = meta.getCoords(targetRect, element, this.offset);\n const { width: windowWidth, height: windowHeight } = this.windowDimensions;\n\n // Check boundaries and consider sideOffset\n return (\n coords.left < 0 ||\n coords.left + element.width + this.sideOffset > windowWidth ||\n coords.top < 0 ||\n coords.top + element.height + this.sideOffset > windowHeight\n );\n }\n\n private getOverflowAmount(position: Position, targetRect: Rect): number {\n const meta = POSITION_META[position];\n const element = this.elementRect;\n const coords = meta.getCoords(targetRect, element, this.offset);\n const { width: windowWidth, height: windowHeight } = this.windowDimensions;\n\n let amount = 0;\n\n // Calculate overflow for each edge\n if (coords.left < 0) amount += Math.abs(coords.left);\n if (coords.left + element.width > windowWidth)\n amount += coords.left + element.width - windowWidth;\n if (coords.top < 0) amount += Math.abs(coords.top);\n if (coords.top + element.height > windowHeight)\n amount += coords.top + element.height - windowHeight;\n\n return amount;\n }\n\n private getPositionWithLeastOverflow(initialPosition: Position, targetRect: Rect): Position {\n const positionsToCheck = [initialPosition, ...POSITION_META[initialPosition].fallbacks];\n\n let bestPosition = initialPosition;\n let leastOverflow = this.getOverflowAmount(initialPosition, targetRect);\n\n for (const position of positionsToCheck) {\n const overflow = this.getOverflowAmount(position, targetRect);\n if (overflow < leastOverflow) {\n leastOverflow = overflow;\n bestPosition = position;\n }\n }\n\n return bestPosition;\n }\n\n private finalizePosition(\n coords: { top: number; left: number },\n position: Position,\n targetRect: Rect,\n ): PositionResult {\n const { top, left } = coords;\n const element = this.elementRect;\n const { width: windowWidth, height: windowHeight } = this.windowDimensions;\n const meta = POSITION_META[position];\n\n // Calculate max dimensions\n let maxHeight: number | undefined;\n let maxWidth: number | undefined;\n\n // Set maxHeight if needed\n if (top - this.sideOffset < 0) {\n maxHeight = element.height + top - this.sideOffset;\n } else if (top + element.height + this.sideOffset > windowHeight) {\n maxHeight = element.height - (top + element.height + this.sideOffset - windowHeight);\n }\n\n // Set maxWidth if needed\n if (left + element.width + this.sideOffset > windowWidth) {\n maxWidth = windowWidth - left - this.sideOffset;\n }\n\n // Add sideOffset to maxHeight and maxWidth because the sideOffset is used for the maxHeight and maxWidth\n const h = maxHeight ? maxHeight + this.sideOffset : element.height;\n const w = maxWidth ? maxWidth + this.sideOffset : element.width;\n\n // Calculate adjusted coordinates\n let adjustedTop: number | undefined = Math.max(0, Math.min(top, windowHeight - h));\n let adjustedLeft = Math.max(0, Math.min(left, windowWidth - w));\n\n // Calculate bottom and right (for RTL support)\n let bottom: number | undefined;\n let right: number | undefined;\n\n // Set bottom if appropriate\n if (meta.main === 'vertical' && meta.placement === 'before') {\n bottom = windowHeight - (adjustedTop + h);\n adjustedTop = undefined;\n }\n\n // Set right if appropriate\n if (adjustedLeft + w > windowWidth) {\n adjustedLeft = 0;\n right = 0;\n } else if (\n meta.align === 'end' ||\n (meta.main === 'horizontal' && meta.placement === 'before')\n ) {\n right = windowWidth - (adjustedLeft + w) - this.scrollWidth;\n }\n\n return {\n top: adjustedTop,\n left: right !== undefined ? undefined : adjustedLeft,\n bottom,\n right,\n position,\n maxHeight: maxHeight && maxHeight > 0 ? maxHeight : undefined,\n maxWidth: maxWidth && maxWidth > 0 ? maxWidth : undefined,\n };\n }\n}\n\n// Main function to use the class\nexport function tooltipPosition(\n config: PopoverUtilConfig,\n windowDimensions = { width: window.innerWidth, height: window.innerHeight },\n scrollWidth = window.innerWidth - document.documentElement.clientWidth,\n): PositionResult {\n const positioner = new PopoverPositioner(config, windowDimensions, scrollWidth);\n return positioner.calculatePosition();\n}\n","import {\n Component,\n computed,\n ElementRef,\n inject,\n input,\n signal,\n WritableSignal,\n} from '@angular/core';\nimport { InjectionToken } from '@angular/core';\nimport { PopoverPosition } from './popover.service';\n\nexport class PopoverArrowTracker {\n top? = 0;\n left? = 0;\n right? = 0;\n bottom? = 0;\n target?: HTMLElement;\n position?: PopoverPosition;\n}\n\nexport const POPOVER_ARROW_TRACKER = new InjectionToken<{\n values: WritableSignal<PopoverArrowTracker>;\n}>('popoverArrowTracker');\n\nexport function providePopoverArrowTracker() {\n return {\n provide: POPOVER_ARROW_TRACKER,\n useFactory: () => ({ values: signal<PopoverArrowTracker>(new PopoverArrowTracker()) }),\n };\n}\n\n@Component({\n selector: '[ngbPopoverArrow]',\n template: `\n <ng-content />\n @if (anchor()) {\n <style>\n :host {\n --action-angle: 180deg;\n --action-left: 50%;\n --action-top: -1rem;\n --action-color: var(--color-background);\n }\n :host::before {\n content: '';\n position: absolute;\n width: 0;\n height: 0;\n border-style: solid;\n border-top: 0.5rem solid var(--action-color);\n border-left: 0.45rem solid transparent;\n border-right: 0.45rem solid transparent;\n top: var(--action-top);\n left: var(--action-left);\n transform: translateX(-50%) rotate(var(--action-angle, 180deg));\n /* Add shadow to match the container shadow */\n /* filter: drop-shadow(0 4px 3px rgb(0 0 0 / 0.07)) drop-shadow(0 2px 2px rgb(0 0 0 / 0.06));\n z-index: -1; */\n }\n </style>\n }\n `,\n host: {\n '[style]': 'styles()',\n },\n})\nexport class NgbPopoverArrow {\n readonly arrowTracker = inject(POPOVER_ARROW_TRACKER);\n readonly anchor = input(false);\n readonly el = inject(ElementRef<HTMLElement>);\n readonly styles = computed(() => {\n const { target, position } = this.arrowTracker.values();\n if (target && position) {\n return this.updateAnchorPosition(position, target, this.el.nativeElement);\n }\n return {};\n });\n\n private updateAnchorPosition(position: PopoverPosition, target: HTMLElement, el: HTMLElement) {\n const { height, width, top } = el.getBoundingClientRect();\n const { height: tHeight, width: tWidth, top: tTop } = target.getBoundingClientRect();\n let deg = '0deg';\n let anchorTop = '50%';\n let anchorLeft = '50%';\n const anchorWidth = 8;\n\n const thHeight = tHeight / 2 - anchorWidth / 2;\n const thWidth = tWidth / 2;\n\n switch (position) {\n case 'top':\n case 'tl':\n case 'tr':\n anchorTop = '100%';\n break;\n case 'left':\n deg = '270deg';\n anchorLeft = `calc(100% + ${anchorWidth / 2}px)`;\n anchorTop =\n tHeight > height\n ? `calc(50% - ${anchorWidth / 2}px)`\n : `calc(${thHeight + (tTop - top)}px)`;\n break;\n case 'right':\n deg = '90deg';\n anchorLeft = `-${anchorWidth / 2}px`;\n anchorTop =\n tHeight > height\n ? `calc(50% - ${anchorWidth / 2}px)`\n : `calc(${thHeight + (tTop - top)}px)`;\n break;\n case 'bottom':\n case 'bl':\n case 'br':\n deg = '180deg';\n anchorTop = '-0.5rem';\n anchorLeft = thWidth > width ? '50%' : `calc(100% - ${thWidth}px)`;\n break;\n }\n\n return { '--action-angle': deg, '--action-left': anchorLeft, '--action-top': anchorTop };\n }\n}\n","import { animate, state, style, transition, trigger } from '@angular/animations';\nimport {\n Component,\n Directive,\n ElementRef,\n ViewContainerRef,\n effect,\n inject,\n input,\n linkedSignal,\n signal,\n viewChild,\n} from '@angular/core';\nimport { FocusTrap } from '@ngbase/adk/a11y';\nimport { BaseDialog, NgbPortalClose } from '@ngbase/adk/portal';\nimport { createHostAnimation, disposals } from '@ngbase/adk/utils';\nimport { EMPTY, Observable, fromEvent, map, startWith, switchMap } from 'rxjs';\nimport { PopoverOptions, PopoverPosition } from './popover.service';\nimport { tooltipPosition } from './utils';\nimport { POPOVER_ARROW_TRACKER, providePopoverArrowTracker } from './popover-arrow.ng';\n\n@Directive({\n selector: '[ngbPopoverBackdrop]',\n hostDirectives: [FocusTrap],\n host: {\n '[style.clipPath]': 'popover.options().clipPath?.()',\n '[class]': 'popover.options().backdropClassName',\n '(click)': '!popover.options().disableClose && popover.close()',\n },\n})\nexport class NgbPopoverBackdrop {\n readonly popover = inject(NgbPopover);\n readonly focusTrap = inject(FocusTrap);\n\n constructor() {\n this.focusTrap._focusTrap = linkedSignal(() => this.popover.options().focusTrap ?? true);\n }\n}\n\n@Directive({\n selector: '[ngbPopoverMain]',\n host: {\n '[class]': 'popover.options().className',\n },\n})\nexport class NgbPopoverMain {\n readonly popover = inject(NgbPopover);\n}\n\n@Component({\n selector: 'ngb-popover',\n template: '',\n host: {\n '[@parentAnimation]': '',\n '(@parentAnimation.done)': 'animationDone()',\n },\n animations: [\n createHostAnimation(['@slideInOutAnimation']),\n trigger('slideInOutAnimation', [\n state('1', style({ transform: 'none', opacity: 1 })),\n state('void', style({ transform: 'translateY(-10px) scale(0.95)', opacity: 0 })),\n state('0', style({ transform: 'translateY(-10px) scale(0.95)', opacity: 0 })),\n transition('* => *', animate('100ms ease-out')),\n ]),\n ],\n})\nexport class NgbPopover extends BaseDialog {\n readonly arrowTracker = inject(POPOVER_ARROW_TRACKER);\n private readonly disposals = disposals();\n\n readonly myDialog = viewChild.required('myDialog', { read: ViewContainerRef });\n readonly container = viewChild.required<NgbPopoverMain, ElementRef<HTMLElement>>(NgbPopoverMain, {\n read: ElementRef,\n });\n readonly backdropElement = viewChild<NgbPopoverBackdrop, ElementRef<HTMLElement>>(\n NgbPopoverBackdrop,\n { read: ElementRef },\n );\n\n readonly options = signal<PopoverOptions>({} as PopoverOptions);\n private lastPosition: PopoverPosition = 'top';\n readonly scrolled = signal(0);\n\n readonly events: Observable<{ type: string; value: any }> = this._afterViewSource.pipe(\n switchMap(e => {\n const el = this.container()!.nativeElement;\n const mouseenter = fromEvent(el, 'mouseenter');\n const mouseleave = fromEvent(el, 'mouseleave');\n const event = mouseenter.pipe(\n switchMap(e =>\n mouseleave.pipe(\n map(x => ({ type: 'mouseleave', value: x })),\n startWith({ type: 'mouseenter', value: e }),\n ),\n ),\n );\n return e ? event : EMPTY;\n }),\n );\n\n constructor() {\n super();\n\n const dialog = effect(() => {\n this._afterViewSource.next(this.myDialog()!);\n dialog.destroy();\n });\n\n effect(cleanup => {\n const el = this.container()!.nativeElement;\n const options = this.options();\n const target = this.getTarget();\n if (options.anchor) {\n options.offset = 16;\n }\n this.lastPosition = options.position || 'bottom';\n // this.schedulePopoverUpdate(target, el);\n if (options.smoothScroll) {\n // target.scrollIntoView({ behavior: 'smooth', block: 'nearest' });\n\n // fromEvent(window, 'scroll')\n // .pipe(\n // startWith(1),\n // tap((x) => console.count('scroll 50')),\n // debounceTime(50),\n // take(1),\n // )\n // .subscribe(() => {});\n // fromEvent(window, 'scroll')\n // .pipe(\n // startWith(1),\n // tap((x) => console.count('scroll 10')),\n // debounceTime(10),\n // take(1),\n // )\n // .subscribe(() => {\n // this.scrolled.update((x) => x + 1);\n // this.schedulePopoverUpdate(target, el);\n // });\n scrollToElement(target).then(() => {\n this.scrolled.update(x => x + 1);\n this.schedulePopoverUpdate(target, el, options);\n });\n } else {\n this.schedulePopoverUpdate(target, el, options);\n }\n\n // TODO: remove this once we have multi cleanup support\n if (!options.backdrop) {\n window.addEventListener('scroll', this.scheduleUpdateDimension);\n cleanup(() => window.removeEventListener('scroll', this.scheduleUpdateDimension));\n }\n\n // observe the target element position change\n const resizeObserver = new ResizeObserver(() => {\n // console.log('resizeObserver');\n this.schedulePopoverUpdate(target, el, options);\n });\n resizeObserver.observe(target);\n cleanup(() => resizeObserver.disconnect());\n });\n }\n\n override getTarget(): HTMLElement {\n return this.target() || this.options().target;\n }\n\n private scheduleUpdateDimension = () => {\n this.disposals.afterNextRender(() => this.updateDimension());\n };\n\n private schedulePopoverUpdate(target: HTMLElement, el: HTMLElement, options: PopoverOptions) {\n // this.options().target = target;\n // if (options.backdrop) {\n // this.onOpen();\n // }\n if (options.width === 'target') {\n // update the width of the container to be the same as the target\n el.style.width = `${target.offsetWidth}px`;\n } else if (options.width === 'free') {\n el.style.minWidth = `${target.offsetWidth}px`;\n } else if (options.width) {\n el.style.width = options.width;\n }\n if (options.height) {\n el.style.height = options.height;\n }\n if (options.maxHeight) {\n el.style.maxHeight = options.maxHeight;\n }\n\n this.scheduleUpdateDimension();\n }\n\n private updateDimension() {\n const el = this.container()!.nativeElement;\n const target = this.getTarget();\n if (!target) {\n return;\n }\n const { top, bottom, left, right, position, maxHeight, maxWidth } = tooltipPosition({\n target,\n el,\n position: this.lastPosition,\n client: this.options().client,\n offset: this.options().offset,\n sideOffset: this.options().sideOffset,\n });\n // change the anchor position\n // if (this.options().anchor) {\n // this.updateAnchorPosition(position, el, target);\n // }\n this.lastPosition = position;\n // we need to update the values directly instead of signal to avoid too many CD checks\n if (bottom !== undefined) {\n el.style.bottom = `${bottom}px`;\n el.style.top = '';\n } else {\n el.style.top = `${top}px`;\n el.style.bottom = '';\n }\n if (right != undefined) {\n el.style.right = `${right}px`;\n el.style.left = '';\n } else {\n el.style.left = `${left}px`;\n el.style.right = '';\n }\n\n if (maxHeight) {\n el.style.maxHeight = `${maxHeight}px`;\n }\n if (maxWidth) {\n el.style.maxWidth = `${maxWidth}px`;\n }\n this.arrowTracker.values.set({ top, bottom, left, right, target, position });\n }\n\n override setOptions(options: PopoverOptions): void {\n // console.log('setOptions', options);\n this.options.set(options);\n }\n}\n\nfunction scrollToElement(target: HTMLElement) {\n return new Promise(resolve => {\n let lastPos: number;\n let currentPos = null;\n let samePosCount = 0;\n\n const checkIfScrollComplete = () => {\n currentPos = window.pageYOffset || document.documentElement.scrollTop;\n\n if (lastPos !== null && currentPos === lastPos) {\n samePosCount++;\n if (samePosCount > 2) {\n resolve(true);\n return;\n }\n } else {\n samePosCount = 0;\n lastPos = currentPos;\n }\n\n requestAnimationFrame(checkIfScrollComplete);\n };\n // scroll only if the target is not in the view\n // window.scrollTo({\n // top: target.offsetTop - 50,\n // behavior: 'smooth',\n // });\n target.scrollIntoView({ behavior: 'smooth', block: 'nearest' });\n requestAnimationFrame(checkIfScrollComplete);\n });\n}\n\n@Directive({ selector: '[ngbPopoverClose]' })\nexport class NgbPopoverClose extends NgbPortalClose {\n readonly ngbPopoverClose = input();\n\n override close() {\n super.close(this.ngbPopoverClose());\n }\n}\n\nexport function aliasPopover(popover: typeof NgbPopover) {\n return [{ provide: NgbPopover, useExisting: popover }, providePopoverArrowTracker()];\n}\n","import { inject, InjectionToken, Signal, Type, WritableSignal } from '@angular/core';\nimport { DialogInput, DialogOptions, DialogRef } from '@ngbase/adk/portal';\nimport { Observable } from 'rxjs';\nimport { basePopoverPortal } from './base-popover.service';\nimport { NgbPopover } from './popover';\nimport { OverlayPosition, PopoverUtilConfig } from './utils';\n\nexport type PopoverPosition = OverlayPosition;\n\nexport class PopoverOptions extends DialogOptions implements PopoverUtilConfig {\n target!: HTMLElement;\n el?: HTMLElement;\n position?: PopoverPosition;\n offset?: number;\n sideOffset?: number;\n client?: { x: number; y: number; w: number; h: number } | null;\n className?: string;\n backdropClassName?: string;\n clipPath?: Signal<string>;\n anchor?: boolean;\n smoothScroll?: boolean;\n}\n\nexport interface PopoverOpen<T> {\n diaRef: DialogRef<any>;\n events: Observable<{ type: string; value: any }>;\n parent: NgbPopover;\n replace: ((component: DialogInput<T>) => void) | undefined;\n childSignal: WritableSignal<any>;\n}\n\nconst POPOVER_TOKEN = new InjectionToken<Type<NgbPopover>>('POPOVER_TOKEN');\n\nexport type PopoverType = ReturnType<typeof ngbPopoverPortal>;\n\nexport function ngbPopoverPortal() {\n const popover = inject(POPOVER_TOKEN, { optional: true }) ?? NgbPopover;\n const base = basePopoverPortal(popover);\n\n function open<T>(component: DialogInput<T>, options: PopoverOptions): PopoverOpen<T> {\n return base.open(component, options);\n }\n\n return { open, closeAll: base.closeAll };\n}\n\nexport const registerNgbPopover = (popover: typeof NgbPopover) => {\n return { provide: POPOVER_TOKEN, useValue: popover };\n};\n","import { Directive, ElementRef, TemplateRef, inject, input } from '@angular/core';\nimport { PopoverPosition, ngbPopoverPortal } from './popover.service';\n\n@Directive({\n selector: '[ngbPopoverTrigger]',\n exportAs: 'ngbPopoverTrigger',\n host: {\n '(click)': 'open()',\n },\n})\nexport class NgbPopoverTrigger {\n readonly popoverPortal = ngbPopoverPortal();\n readonly el = inject<ElementRef<HTMLElement>>(ElementRef);\n\n readonly ngbPopoverTrigger = input.required<TemplateRef<any>>();\n readonly ngbPopoverTriggerData = input();\n readonly options = input<{ position?: PopoverPosition; anchor?: boolean }>();\n\n private closeFn: VoidFunction = () => {};\n\n open() {\n const options = this.options();\n const { diaRef } = this.popoverPortal.open(this.ngbPopoverTrigger(), {\n target: this.el.nativeElement,\n anchor: options?.anchor,\n position: options?.position || 'top',\n data: this.ngbPopoverTriggerData(),\n });\n this.closeFn = diaRef.close;\n }\n\n close() {\n this.closeFn();\n }\n}\n","/*\n * Public API Surface of popover\n */\n\nexport * from './popover.service';\nexport * from './popover';\nexport * from './popover-trigger';\nexport * from './base-popover.service';\nexport * from './popover-arrow.ng';\nexport { tooltipPosition } from './utils';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import * as i0 from '@angular/core';
|
|
2
|
-
import { inject, linkedSignal, Directive, ElementRef, computed, viewChild, viewChildren, model, input, numberAttribute, booleanAttribute,
|
|
2
|
+
import { inject, linkedSignal, Directive, ElementRef, computed, ChangeDetectorRef, viewChild, viewChildren, model, input, numberAttribute, booleanAttribute, output, effect, untracked, afterNextRender } from '@angular/core';
|
|
3
3
|
import { Directionality } from '@ngbase/adk/bidi';
|
|
4
4
|
import * as i1 from '@ngbase/adk/drag';
|
|
5
5
|
import { Drag } from '@ngbase/adk/drag';
|
|
@@ -79,6 +79,7 @@ class NgbSlider {
|
|
|
79
79
|
constructor() {
|
|
80
80
|
this.el = inject(ElementRef);
|
|
81
81
|
this.dir = inject(Directionality); // this.dir.isRtl();
|
|
82
|
+
this.cdr = inject(ChangeDetectorRef);
|
|
82
83
|
this.drag = viewChild.required(Drag);
|
|
83
84
|
this.track = viewChild.required(SliderRange, {
|
|
84
85
|
read: ElementRef,
|
|
@@ -93,13 +94,14 @@ class NgbSlider {
|
|
|
93
94
|
this.range = input(1, { transform: numberAttribute });
|
|
94
95
|
this.disabled = input(false, { transform: booleanAttribute });
|
|
95
96
|
this.orientation = input('horizontal');
|
|
97
|
+
this.afterChange = output();
|
|
96
98
|
this.noOfThumbs = computed(() => Array.from({ length: this.range() }, (_, i) => i));
|
|
97
99
|
this.totalSteps = computed(() => (this.max() - this.min()) / this.step());
|
|
98
100
|
this.values = [];
|
|
99
101
|
this.activeIndex = 0;
|
|
100
102
|
this.totalWidth = 0;
|
|
101
103
|
this.totalSliderWidth = 0;
|
|
102
|
-
this.
|
|
104
|
+
this.isChanged = false;
|
|
103
105
|
effect(() => {
|
|
104
106
|
const value = this.value() || 0;
|
|
105
107
|
// we need to update the value direction when direction changes
|
|
@@ -275,6 +277,10 @@ class NgbSlider {
|
|
|
275
277
|
else {
|
|
276
278
|
this.totalWidth = 0;
|
|
277
279
|
this.totalSliderWidth = 0;
|
|
280
|
+
if (this.isChanged) {
|
|
281
|
+
this.afterChange.emit(this.values);
|
|
282
|
+
this.isChanged = false;
|
|
283
|
+
}
|
|
278
284
|
}
|
|
279
285
|
}
|
|
280
286
|
updateValue(index, value) {
|
|
@@ -292,11 +298,12 @@ class NgbSlider {
|
|
|
292
298
|
this.value.set(percentage);
|
|
293
299
|
this.onChange?.(percentage);
|
|
294
300
|
this.onTouched?.();
|
|
301
|
+
this.isChanged = true;
|
|
295
302
|
// this is required for reactive forms to work
|
|
296
303
|
this.cdr.markForCheck();
|
|
297
304
|
}
|
|
298
305
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.0", ngImport: i0, type: NgbSlider, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
299
|
-
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.2.0", version: "19.0.0", type: NgbSlider, isStandalone: true, selector: "[ngbSlider]", inputs: { value: { classPropertyName: "value", publicName: "value", isSignal: true, isRequired: false, transformFunction: null }, step: { classPropertyName: "step", publicName: "step", isSignal: true, isRequired: false, transformFunction: null }, min: { classPropertyName: "min", publicName: "min", isSignal: true, isRequired: false, transformFunction: null }, max: { classPropertyName: "max", publicName: "max", isSignal: true, isRequired: false, transformFunction: null }, range: { classPropertyName: "range", publicName: "range", isSignal: true, isRequired: false, transformFunction: null }, disabled: { classPropertyName: "disabled", publicName: "disabled", isSignal: true, isRequired: false, transformFunction: null }, orientation: { classPropertyName: "orientation", publicName: "orientation", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { value: "valueChange" }, host: { properties: { "attr.aria-orientation": "orientation()" } }, providers: [provideValueAccessor(NgbSlider)], viewQueries: [{ propertyName: "drag", first: true, predicate: Drag, descendants: true, isSignal: true }, { propertyName: "track", first: true, predicate: SliderRange, descendants: true, read: ElementRef, isSignal: true }, { propertyName: "thumbs", predicate: SliderThumb, descendants: true, read: ElementRef, isSignal: true }], exportAs: ["ngbSlider"], ngImport: i0 }); }
|
|
306
|
+
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.2.0", version: "19.0.0", type: NgbSlider, isStandalone: true, selector: "[ngbSlider]", inputs: { value: { classPropertyName: "value", publicName: "value", isSignal: true, isRequired: false, transformFunction: null }, step: { classPropertyName: "step", publicName: "step", isSignal: true, isRequired: false, transformFunction: null }, min: { classPropertyName: "min", publicName: "min", isSignal: true, isRequired: false, transformFunction: null }, max: { classPropertyName: "max", publicName: "max", isSignal: true, isRequired: false, transformFunction: null }, range: { classPropertyName: "range", publicName: "range", isSignal: true, isRequired: false, transformFunction: null }, disabled: { classPropertyName: "disabled", publicName: "disabled", isSignal: true, isRequired: false, transformFunction: null }, orientation: { classPropertyName: "orientation", publicName: "orientation", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { value: "valueChange", afterChange: "afterChange" }, host: { properties: { "attr.aria-orientation": "orientation()" } }, providers: [provideValueAccessor(NgbSlider)], viewQueries: [{ propertyName: "drag", first: true, predicate: Drag, descendants: true, isSignal: true }, { propertyName: "track", first: true, predicate: SliderRange, descendants: true, read: ElementRef, isSignal: true }, { propertyName: "thumbs", predicate: SliderThumb, descendants: true, read: ElementRef, isSignal: true }], exportAs: ["ngbSlider"], ngImport: i0 }); }
|
|
300
307
|
}
|
|
301
308
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.0", ngImport: i0, type: NgbSlider, decorators: [{
|
|
302
309
|
type: Directive,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ngbase-adk-slider.mjs","sources":["../../../projects/adk/slider/slider.ts","../../../projects/adk/slider/public-api.ts","../../../projects/adk/slider/ngbase-adk-slider.ts"],"sourcesContent":["import {\n afterNextRender,\n booleanAttribute,\n ChangeDetectorRef,\n computed,\n Directive,\n effect,\n ElementRef,\n inject,\n input,\n linkedSignal,\n model,\n numberAttribute,\n untracked,\n viewChild,\n viewChildren,\n} from '@angular/core';\nimport { ControlValueAccessor } from '@angular/forms';\nimport { Directionality } from '@ngbase/adk/bidi';\nimport { Drag, DragData } from '@ngbase/adk/drag';\nimport { provideValueAccessor } from '@ngbase/adk/utils';\n\n@Directive({\n selector: '[ngbSliderTrack]',\n hostDirectives: [Drag],\n host: {\n style: 'overflow: hidden; position: relative;',\n '[attr.aria-disabled]': 'slider.disabled()',\n },\n})\nexport class SliderTrack {\n readonly slider = inject(NgbSlider);\n private readonly drag = inject(Drag);\n\n constructor() {\n this.drag._disabled = linkedSignal(this.slider.disabled);\n }\n}\n\n@Directive({\n selector: '[ngbSliderRange]',\n host: {\n '[attr.aria-disabled]': 'slider.disabled()',\n style: 'position: absolute;',\n },\n})\nexport class SliderRange {\n readonly slider = inject(NgbSlider);\n}\n\n@Directive({\n selector: '[ngbSliderThumb]',\n host: {\n type: 'button',\n role: 'slider',\n style: 'position: absolute; pointer-events: none;',\n '[attr.tabindex]': 'slider.disabled() ? -1 : 0',\n '[attr.aria-disabled]': 'slider.disabled()',\n '[attr.aria-valuemin]': 'slider.min()',\n '[attr.aria-valuemax]': 'slider.max()',\n '[attr.aria-valuenow]': 'value()',\n },\n})\nexport class SliderThumb {\n readonly slider = inject(NgbSlider);\n readonly el = inject(ElementRef);\n\n readonly index = computed(() => {\n return this.slider.thumbs().findIndex(t => t.nativeElement === this.el.nativeElement);\n });\n readonly value = computed(() => {\n const values = this.slider.value();\n if (!values) return values;\n return this.slider.range() > 1 ? (values as number[])[this.index()] : values;\n });\n}\n\n@Directive({\n selector: '[ngbSlider]',\n exportAs: 'ngbSlider',\n providers: [provideValueAccessor(NgbSlider)],\n host: {\n '[attr.aria-orientation]': 'orientation()',\n },\n})\nexport class NgbSlider implements ControlValueAccessor {\n private readonly el = inject<ElementRef<HTMLElement>>(ElementRef);\n private readonly dir = inject(Directionality); // this.dir.isRtl();\n private readonly drag = viewChild.required(Drag);\n private readonly track = viewChild.required<SliderRange, ElementRef<HTMLElement>>(SliderRange, {\n read: ElementRef,\n });\n readonly thumbs = viewChildren<SliderThumb, ElementRef<HTMLElement>>(SliderThumb, {\n read: ElementRef,\n });\n\n readonly value = model<number | number[]>();\n readonly step = input(1, { transform: numberAttribute });\n readonly min = input(0, { transform: numberAttribute });\n readonly max = input(100, { transform: numberAttribute });\n readonly range = input(1, { transform: numberAttribute });\n readonly disabled = input(false, { transform: booleanAttribute });\n readonly orientation = input<'horizontal' | 'vertical'>('horizontal');\n\n private onChange?: (value: number | number[]) => {};\n private onTouched?: () => {};\n\n readonly noOfThumbs = computed(() => Array.from({ length: this.range() }, (_, i) => i));\n private readonly totalSteps = computed(() => (this.max() - this.min()) / this.step());\n private values: number[] = [];\n private activeIndex = 0;\n private totalWidth = 0;\n private totalSliderWidth = 0;\n private cdr = inject(ChangeDetectorRef);\n\n constructor() {\n effect(() => {\n const value = this.value() || 0;\n // we need to update the value direction when direction changes\n const _ = this.dir.isRtl();\n if (this.thumbs().length) {\n untracked(() => this.handleValueUpdate(value));\n }\n });\n\n afterNextRender(() => {\n this.drag().events.subscribe(data => this.move(data));\n });\n }\n\n private handleValueUpdate(value: number | number[]) {\n const values = this.values;\n const range = this.range() > 1;\n if ((range && value !== values) || (!range && value !== values[0])) {\n const v = Array.isArray(value) ? value : [value];\n this.values = v.map(v => this.fixStep(v));\n }\n\n this.updateElement();\n }\n\n private updateElement() {\n const positions = this.values.map(x => this.toPercentage(x));\n const isVertical = this.orientation() === 'vertical';\n const isRtl = !isVertical && this.dir.isRtl();\n const track = this.track().nativeElement;\n\n // Update thumb positions\n this.thumbs().forEach((thumb, i) => {\n const value = this.values[i];\n let pos = isVertical ? 100 - positions[i] : positions[i];\n // Invert position for RTL\n if (isRtl) {\n pos = 100 - pos;\n }\n const prop = isVertical ? 'top' : 'left';\n const thumbSize = this.getThumbSize(value, thumb.nativeElement.offsetWidth);\n const offset = isVertical || isRtl ? -thumbSize : thumbSize;\n thumb.nativeElement.style[prop] = `calc(${pos}% + ${offset}px)`;\n });\n\n // Update track position\n const [min, max] =\n positions.length > 1 ? [Math.min(...positions), Math.max(...positions)] : [0, positions[0]];\n\n if (isVertical) {\n track.style.top = 100 - max + '%';\n track.style.bottom = min + '%';\n track.style.width = '100%';\n } else {\n track.style.left = (isRtl ? 100 - max : min) + '%';\n track.style.right = (isRtl ? min : 100 - max) + '%';\n track.style.height = '100%';\n }\n }\n\n private getThumbSize(value: number, thumbSize: number = 0) {\n const currentStep = (value - this.min()) / this.step();\n const halfSteps = this.totalSteps() / 2;\n const halfThumbSize = thumbSize / 2;\n\n // Return 0 for middle, positive offset for first half, negative for second half\n const offset = currentStep - halfSteps;\n return -(offset / halfSteps) * halfThumbSize;\n }\n\n writeValue(value: number | number[]): void {\n this.value.set(value);\n }\n\n registerOnChange(fn: any): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: any): void {\n this.onTouched = fn;\n }\n\n private get width() {\n return this.orientation() === 'vertical'\n ? this.el.nativeElement.clientHeight\n : this.el.nativeElement.clientWidth;\n }\n\n // We need to consider the min value also because the slider can be negative\n private toPercentage(value: number) {\n const min = this.min();\n const max = this.max();\n const range = max - min;\n const percentage = ((value - min) / range) * 100;\n return percentage;\n }\n\n private fromPercentage(percentage: number) {\n const min = this.min();\n const max = this.max();\n const range = max - min;\n const value = (percentage / 100) * range + min;\n return value;\n }\n\n private move(data: DragData) {\n requestAnimationFrame(() => this.moveSlider(data));\n }\n\n private clicked(clientX: number) {\n const slider = this.el.nativeElement;\n const rect = slider.getBoundingClientRect();\n const isVertical = this.orientation() === 'vertical';\n const isRtl = !isVertical && this.dir.isRtl();\n\n let position: number;\n if (isVertical) {\n position = rect.top;\n } else {\n position = isRtl ? rect.right : rect.left;\n clientX = isRtl ? -clientX : clientX; // Invert the click position for RTL\n }\n\n return this.perRound(clientX + (isRtl ? position : -position), this.width, isVertical);\n }\n\n private perRound(x: number, width: number, reverse = false) {\n // the new percentage of the slider\n let percentage = (x / width) * 100;\n if (reverse) {\n percentage = 100 - percentage;\n }\n // convert percentage to value\n return this.fromPercentage(percentage);\n }\n\n private fixStep(value = this.min()) {\n // make sure the value is within the min and max\n // we need to make the percentage to be a multiple of the step\n value = parseFloat((Math.round(value / this.step()) * this.step()).toFixed(10));\n return Math.max(this.min(), Math.min(this.max(), value));\n }\n\n private moveSlider(data: DragData) {\n data.event?.preventDefault();\n const isVertical = this.orientation() === 'vertical';\n const isRtl = !isVertical && this.dir.isRtl();\n\n let cx = data.clientX!;\n let x = data.x!;\n\n if (isVertical) {\n cx = data.clientY!;\n x = -data.y!;\n } else if (isRtl) {\n x = -x; // Invert the movement for RTL\n }\n // convert value to percentage based on the max value\n if (data.type === 'start') {\n const clickedValue = this.clicked(cx);\n const valuePercentage = this.toPercentage(clickedValue);\n // total width of the slider\n this.totalWidth = this.width;\n // the width of the slider using current percentage\n this.totalSliderWidth = this.totalWidth * (valuePercentage / 100);\n\n // make sure the values are equal length as the range\n if (this.values.length !== this.range()) {\n this.values = Array.from({ length: this.range() }, (_, i) => this.values[i] || this.min());\n }\n // sort the values\n this.values = this.values.sort((a, b) => a - b);\n\n // find the nearest value index based on the percentage\n this.activeIndex = this.values.reduce((closestIndex, value, index) => {\n const diff = Math.abs(this.toPercentage(value) - valuePercentage);\n return diff < Math.abs(this.toPercentage(this.values[closestIndex]) - valuePercentage)\n ? index\n : closestIndex;\n }, 0);\n this.updateValue(this.activeIndex, clickedValue);\n if (this.values[this.activeIndex] !== this.value()) {\n this.notifyChange();\n }\n } else if (data.type === 'move') {\n // the new percentage of the slider\n const newSize = this.totalSliderWidth + x;\n const percentage = this.perRound(newSize, this.totalWidth);\n // update the value only when the percentage is different and within the range\n const prevValue = this.values[this.activeIndex];\n const currentValue = this.updateValue(this.activeIndex, percentage);\n if (prevValue !== currentValue) {\n this.notifyChange();\n }\n } else {\n this.totalWidth = 0;\n this.totalSliderWidth = 0;\n }\n }\n\n private updateValue(index: number, value: number) {\n const values = this.values;\n let stepValue = this.fixStep(value);\n\n // Clamp the value between min and max\n stepValue = Math.max(this.min(), Math.min(this.max(), stepValue));\n values[index] = stepValue;\n\n this.values = values.sort((a, b) => a - b);\n this.activeIndex = this.values.findIndex(v => v === stepValue);\n return stepValue;\n }\n\n private notifyChange() {\n const percentage = this.range() > 1 ? [...this.values] : this.values[0];\n this.value.set(percentage);\n this.onChange?.(percentage);\n this.onTouched?.();\n // this is required for reactive forms to work\n this.cdr.markForCheck();\n }\n}\n\nexport const aliasSlider = (slider: typeof NgbSlider) => [\n { provide: NgbSlider, useExisting: slider },\n provideValueAccessor(slider),\n];\n","/*\n * Public API Surface of slider\n */\n\nexport { NgbSlider, SliderTrack, SliderRange, SliderThumb, aliasSlider } from './slider';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"ngbase-adk-slider.mjs","sources":["../../../projects/adk/slider/slider.ts","../../../projects/adk/slider/public-api.ts","../../../projects/adk/slider/ngbase-adk-slider.ts"],"sourcesContent":["import {\n afterNextRender,\n booleanAttribute,\n ChangeDetectorRef,\n computed,\n Directive,\n effect,\n ElementRef,\n inject,\n input,\n linkedSignal,\n model,\n numberAttribute,\n output,\n untracked,\n viewChild,\n viewChildren,\n} from '@angular/core';\nimport { ControlValueAccessor } from '@angular/forms';\nimport { Directionality } from '@ngbase/adk/bidi';\nimport { Drag, DragData } from '@ngbase/adk/drag';\nimport { provideValueAccessor } from '@ngbase/adk/utils';\n\n@Directive({\n selector: '[ngbSliderTrack]',\n hostDirectives: [Drag],\n host: {\n style: 'overflow: hidden; position: relative;',\n '[attr.aria-disabled]': 'slider.disabled()',\n },\n})\nexport class SliderTrack {\n readonly slider = inject(NgbSlider);\n private readonly drag = inject(Drag);\n\n constructor() {\n this.drag._disabled = linkedSignal(this.slider.disabled);\n }\n}\n\n@Directive({\n selector: '[ngbSliderRange]',\n host: {\n '[attr.aria-disabled]': 'slider.disabled()',\n style: 'position: absolute;',\n },\n})\nexport class SliderRange {\n readonly slider = inject(NgbSlider);\n}\n\n@Directive({\n selector: '[ngbSliderThumb]',\n host: {\n type: 'button',\n role: 'slider',\n style: 'position: absolute; pointer-events: none;',\n '[attr.tabindex]': 'slider.disabled() ? -1 : 0',\n '[attr.aria-disabled]': 'slider.disabled()',\n '[attr.aria-valuemin]': 'slider.min()',\n '[attr.aria-valuemax]': 'slider.max()',\n '[attr.aria-valuenow]': 'value()',\n },\n})\nexport class SliderThumb {\n readonly slider = inject(NgbSlider);\n readonly el = inject(ElementRef);\n\n readonly index = computed(() => {\n return this.slider.thumbs().findIndex(t => t.nativeElement === this.el.nativeElement);\n });\n readonly value = computed(() => {\n const values = this.slider.value();\n if (!values) return values;\n return this.slider.range() > 1 ? (values as number[])[this.index()] : values;\n });\n}\n\n@Directive({\n selector: '[ngbSlider]',\n exportAs: 'ngbSlider',\n providers: [provideValueAccessor(NgbSlider)],\n host: {\n '[attr.aria-orientation]': 'orientation()',\n },\n})\nexport class NgbSlider implements ControlValueAccessor {\n private readonly el = inject<ElementRef<HTMLElement>>(ElementRef);\n private readonly dir = inject(Directionality); // this.dir.isRtl();\n private cdr = inject(ChangeDetectorRef);\n\n private readonly drag = viewChild.required(Drag);\n private readonly track = viewChild.required<SliderRange, ElementRef<HTMLElement>>(SliderRange, {\n read: ElementRef,\n });\n readonly thumbs = viewChildren<SliderThumb, ElementRef<HTMLElement>>(SliderThumb, {\n read: ElementRef,\n });\n\n readonly value = model<number | number[]>();\n readonly step = input(1, { transform: numberAttribute });\n readonly min = input(0, { transform: numberAttribute });\n readonly max = input(100, { transform: numberAttribute });\n readonly range = input(1, { transform: numberAttribute });\n readonly disabled = input(false, { transform: booleanAttribute });\n readonly orientation = input<'horizontal' | 'vertical'>('horizontal');\n\n readonly afterChange = output<number | number[]>();\n\n private onChange?: (value: number | number[]) => {};\n private onTouched?: () => {};\n\n readonly noOfThumbs = computed(() => Array.from({ length: this.range() }, (_, i) => i));\n private readonly totalSteps = computed(() => (this.max() - this.min()) / this.step());\n private values: number[] = [];\n private activeIndex = 0;\n private totalWidth = 0;\n private totalSliderWidth = 0;\n private isChanged = false;\n\n constructor() {\n effect(() => {\n const value = this.value() || 0;\n // we need to update the value direction when direction changes\n const _ = this.dir.isRtl();\n if (this.thumbs().length) {\n untracked(() => this.handleValueUpdate(value));\n }\n });\n\n afterNextRender(() => {\n this.drag().events.subscribe(data => this.move(data));\n });\n }\n\n private handleValueUpdate(value: number | number[]) {\n const values = this.values;\n const range = this.range() > 1;\n if ((range && value !== values) || (!range && value !== values[0])) {\n const v = Array.isArray(value) ? value : [value];\n this.values = v.map(v => this.fixStep(v));\n }\n\n this.updateElement();\n }\n\n private updateElement() {\n const positions = this.values.map(x => this.toPercentage(x));\n const isVertical = this.orientation() === 'vertical';\n const isRtl = !isVertical && this.dir.isRtl();\n const track = this.track().nativeElement;\n\n // Update thumb positions\n this.thumbs().forEach((thumb, i) => {\n const value = this.values[i];\n let pos = isVertical ? 100 - positions[i] : positions[i];\n // Invert position for RTL\n if (isRtl) {\n pos = 100 - pos;\n }\n const prop = isVertical ? 'top' : 'left';\n const thumbSize = this.getThumbSize(value, thumb.nativeElement.offsetWidth);\n const offset = isVertical || isRtl ? -thumbSize : thumbSize;\n thumb.nativeElement.style[prop] = `calc(${pos}% + ${offset}px)`;\n });\n\n // Update track position\n const [min, max] =\n positions.length > 1 ? [Math.min(...positions), Math.max(...positions)] : [0, positions[0]];\n\n if (isVertical) {\n track.style.top = 100 - max + '%';\n track.style.bottom = min + '%';\n track.style.width = '100%';\n } else {\n track.style.left = (isRtl ? 100 - max : min) + '%';\n track.style.right = (isRtl ? min : 100 - max) + '%';\n track.style.height = '100%';\n }\n }\n\n private getThumbSize(value: number, thumbSize: number = 0) {\n const currentStep = (value - this.min()) / this.step();\n const halfSteps = this.totalSteps() / 2;\n const halfThumbSize = thumbSize / 2;\n\n // Return 0 for middle, positive offset for first half, negative for second half\n const offset = currentStep - halfSteps;\n return -(offset / halfSteps) * halfThumbSize;\n }\n\n writeValue(value: number | number[]): void {\n this.value.set(value);\n }\n\n registerOnChange(fn: any): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: any): void {\n this.onTouched = fn;\n }\n\n private get width() {\n return this.orientation() === 'vertical'\n ? this.el.nativeElement.clientHeight\n : this.el.nativeElement.clientWidth;\n }\n\n // We need to consider the min value also because the slider can be negative\n private toPercentage(value: number) {\n const min = this.min();\n const max = this.max();\n const range = max - min;\n const percentage = ((value - min) / range) * 100;\n return percentage;\n }\n\n private fromPercentage(percentage: number) {\n const min = this.min();\n const max = this.max();\n const range = max - min;\n const value = (percentage / 100) * range + min;\n return value;\n }\n\n private move(data: DragData) {\n requestAnimationFrame(() => this.moveSlider(data));\n }\n\n private clicked(clientX: number) {\n const slider = this.el.nativeElement;\n const rect = slider.getBoundingClientRect();\n const isVertical = this.orientation() === 'vertical';\n const isRtl = !isVertical && this.dir.isRtl();\n\n let position: number;\n if (isVertical) {\n position = rect.top;\n } else {\n position = isRtl ? rect.right : rect.left;\n clientX = isRtl ? -clientX : clientX; // Invert the click position for RTL\n }\n\n return this.perRound(clientX + (isRtl ? position : -position), this.width, isVertical);\n }\n\n private perRound(x: number, width: number, reverse = false) {\n // the new percentage of the slider\n let percentage = (x / width) * 100;\n if (reverse) {\n percentage = 100 - percentage;\n }\n // convert percentage to value\n return this.fromPercentage(percentage);\n }\n\n private fixStep(value = this.min()) {\n // make sure the value is within the min and max\n // we need to make the percentage to be a multiple of the step\n value = parseFloat((Math.round(value / this.step()) * this.step()).toFixed(10));\n return Math.max(this.min(), Math.min(this.max(), value));\n }\n\n private moveSlider(data: DragData) {\n data.event?.preventDefault();\n const isVertical = this.orientation() === 'vertical';\n const isRtl = !isVertical && this.dir.isRtl();\n\n let cx = data.clientX!;\n let x = data.x!;\n\n if (isVertical) {\n cx = data.clientY!;\n x = -data.y!;\n } else if (isRtl) {\n x = -x; // Invert the movement for RTL\n }\n // convert value to percentage based on the max value\n if (data.type === 'start') {\n const clickedValue = this.clicked(cx);\n const valuePercentage = this.toPercentage(clickedValue);\n // total width of the slider\n this.totalWidth = this.width;\n // the width of the slider using current percentage\n this.totalSliderWidth = this.totalWidth * (valuePercentage / 100);\n\n // make sure the values are equal length as the range\n if (this.values.length !== this.range()) {\n this.values = Array.from({ length: this.range() }, (_, i) => this.values[i] || this.min());\n }\n // sort the values\n this.values = this.values.sort((a, b) => a - b);\n\n // find the nearest value index based on the percentage\n this.activeIndex = this.values.reduce((closestIndex, value, index) => {\n const diff = Math.abs(this.toPercentage(value) - valuePercentage);\n return diff < Math.abs(this.toPercentage(this.values[closestIndex]) - valuePercentage)\n ? index\n : closestIndex;\n }, 0);\n this.updateValue(this.activeIndex, clickedValue);\n if (this.values[this.activeIndex] !== this.value()) {\n this.notifyChange();\n }\n } else if (data.type === 'move') {\n // the new percentage of the slider\n const newSize = this.totalSliderWidth + x;\n const percentage = this.perRound(newSize, this.totalWidth);\n // update the value only when the percentage is different and within the range\n const prevValue = this.values[this.activeIndex];\n const currentValue = this.updateValue(this.activeIndex, percentage);\n if (prevValue !== currentValue) {\n this.notifyChange();\n }\n } else {\n this.totalWidth = 0;\n this.totalSliderWidth = 0;\n if (this.isChanged) {\n this.afterChange.emit(this.values);\n this.isChanged = false;\n }\n }\n }\n\n private updateValue(index: number, value: number) {\n const values = this.values;\n let stepValue = this.fixStep(value);\n\n // Clamp the value between min and max\n stepValue = Math.max(this.min(), Math.min(this.max(), stepValue));\n values[index] = stepValue;\n\n this.values = values.sort((a, b) => a - b);\n this.activeIndex = this.values.findIndex(v => v === stepValue);\n return stepValue;\n }\n\n private notifyChange() {\n const percentage = this.range() > 1 ? [...this.values] : this.values[0];\n this.value.set(percentage);\n this.onChange?.(percentage);\n this.onTouched?.();\n this.isChanged = true;\n // this is required for reactive forms to work\n this.cdr.markForCheck();\n }\n}\n\nexport const aliasSlider = (slider: typeof NgbSlider) => [\n { provide: NgbSlider, useExisting: slider },\n provideValueAccessor(slider),\n];\n","/*\n * Public API Surface of slider\n */\n\nexport { NgbSlider, SliderTrack, SliderRange, SliderThumb, aliasSlider } from './slider';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
|