@acorex/cdk 21.0.1-next.6 → 21.0.1-next.60
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/fesm2022/acorex-cdk-accordion.mjs +23 -23
- package/fesm2022/acorex-cdk-accordion.mjs.map +1 -1
- package/fesm2022/acorex-cdk-carousel.mjs +22 -31
- package/fesm2022/acorex-cdk-carousel.mjs.map +1 -1
- package/fesm2022/acorex-cdk-clipboard.mjs +7 -7
- package/fesm2022/acorex-cdk-clipboard.mjs.map +1 -1
- package/fesm2022/acorex-cdk-common.mjs +175 -111
- package/fesm2022/acorex-cdk-common.mjs.map +1 -1
- package/fesm2022/acorex-cdk-dom.mjs +3 -3
- package/fesm2022/acorex-cdk-dom.mjs.map +1 -1
- package/fesm2022/acorex-cdk-double-click.mjs +3 -3
- package/fesm2022/acorex-cdk-double-click.mjs.map +1 -1
- package/fesm2022/acorex-cdk-drag-drop.mjs +21 -23
- package/fesm2022/acorex-cdk-drag-drop.mjs.map +1 -1
- package/fesm2022/acorex-cdk-drawer.mjs +40 -16
- package/fesm2022/acorex-cdk-drawer.mjs.map +1 -1
- package/fesm2022/acorex-cdk-focus-trap.mjs +3 -3
- package/fesm2022/acorex-cdk-focus-trap.mjs.map +1 -1
- package/fesm2022/acorex-cdk-full-screen.mjs +15 -4
- package/fesm2022/acorex-cdk-full-screen.mjs.map +1 -1
- package/fesm2022/acorex-cdk-input-mask.mjs +67 -14
- package/fesm2022/acorex-cdk-input-mask.mjs.map +1 -1
- package/fesm2022/acorex-cdk-list-navigation.mjs +11 -11
- package/fesm2022/acorex-cdk-list-navigation.mjs.map +1 -1
- package/fesm2022/acorex-cdk-outline.mjs +6 -6
- package/fesm2022/acorex-cdk-outline.mjs.map +1 -1
- package/fesm2022/acorex-cdk-overlay.mjs +370 -14
- package/fesm2022/acorex-cdk-overlay.mjs.map +1 -1
- package/fesm2022/acorex-cdk-pan-view.mjs +3 -3
- package/fesm2022/acorex-cdk-pan-view.mjs.map +1 -1
- package/fesm2022/acorex-cdk-qrcode.mjs.map +1 -1
- package/fesm2022/acorex-cdk-resizable.mjs +3 -3
- package/fesm2022/acorex-cdk-resizable.mjs.map +1 -1
- package/fesm2022/acorex-cdk-selection.mjs +11 -11
- package/fesm2022/acorex-cdk-selection.mjs.map +1 -1
- package/fesm2022/acorex-cdk-sliding-item.mjs +3 -3
- package/fesm2022/acorex-cdk-sliding-item.mjs.map +1 -1
- package/fesm2022/acorex-cdk-sticky.mjs +50 -29
- package/fesm2022/acorex-cdk-sticky.mjs.map +1 -1
- package/fesm2022/acorex-cdk-uploader.mjs +9 -9
- package/fesm2022/acorex-cdk-uploader.mjs.map +1 -1
- package/fesm2022/acorex-cdk-virtual-scroll.mjs +10 -10
- package/fesm2022/acorex-cdk-virtual-scroll.mjs.map +1 -1
- package/fesm2022/acorex-cdk-wysiwyg.mjs.map +1 -1
- package/fesm2022/acorex-cdk-z-index.mjs +35 -0
- package/fesm2022/acorex-cdk-z-index.mjs.map +1 -0
- package/fesm2022/acorex-cdk.mjs.map +1 -1
- package/package.json +31 -29
- package/types/acorex-cdk-carousel.d.ts +16 -0
- package/{common/index.d.ts → types/acorex-cdk-common.d.ts} +10 -7
- package/{drawer/index.d.ts → types/acorex-cdk-drawer.d.ts} +2 -0
- package/{focus-trap/index.d.ts → types/acorex-cdk-focus-trap.d.ts} +1 -1
- package/{full-screen/index.d.ts → types/acorex-cdk-full-screen.d.ts} +5 -0
- package/{input-mask/index.d.ts → types/acorex-cdk-input-mask.d.ts} +39 -3
- package/types/acorex-cdk-overlay.d.ts +128 -0
- package/{sticky/index.d.ts → types/acorex-cdk-sticky.d.ts} +18 -11
- package/types/acorex-cdk-z-index.d.ts +14 -0
- package/z-index/README.md +3 -0
- package/carousel/index.d.ts +0 -18
- package/overlay/index.d.ts +0 -27
- /package/{accordion/index.d.ts → types/acorex-cdk-accordion.d.ts} +0 -0
- /package/{clipboard/index.d.ts → types/acorex-cdk-clipboard.d.ts} +0 -0
- /package/{dom/index.d.ts → types/acorex-cdk-dom.d.ts} +0 -0
- /package/{double-click/index.d.ts → types/acorex-cdk-double-click.d.ts} +0 -0
- /package/{drag-drop/index.d.ts → types/acorex-cdk-drag-drop.d.ts} +0 -0
- /package/{list-navigation/index.d.ts → types/acorex-cdk-list-navigation.d.ts} +0 -0
- /package/{outline/index.d.ts → types/acorex-cdk-outline.d.ts} +0 -0
- /package/{pan-view/index.d.ts → types/acorex-cdk-pan-view.d.ts} +0 -0
- /package/{qrcode/index.d.ts → types/acorex-cdk-qrcode.d.ts} +0 -0
- /package/{resizable/index.d.ts → types/acorex-cdk-resizable.d.ts} +0 -0
- /package/{selection/index.d.ts → types/acorex-cdk-selection.d.ts} +0 -0
- /package/{sliding-item/index.d.ts → types/acorex-cdk-sliding-item.d.ts} +0 -0
- /package/{uploader/index.d.ts → types/acorex-cdk-uploader.d.ts} +0 -0
- /package/{virtual-scroll/index.d.ts → types/acorex-cdk-virtual-scroll.d.ts} +0 -0
- /package/{wysiwyg/index.d.ts → types/acorex-cdk-wysiwyg.d.ts} +0 -0
- /package/{index.d.ts → types/acorex-cdk.d.ts} +0 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"acorex-cdk-outline.mjs","sources":["../tmp-esm2022/outline/lib/outline-container.directive.js","../tmp-esm2022/outline/lib/outline-item.directive.js","../tmp-esm2022/outline/acorex-cdk-outline.js"],"sourcesContent":["import { AXClipBoardService } from '@acorex/cdk/clipboard';\nimport { AXUnsubscriber } from '@acorex/core/utils';\nimport { isPlatformBrowser } from '@angular/common';\nimport { afterNextRender, computed, Directive, ElementRef, inject, input, NgZone, PLATFORM_ID, signal, } from '@angular/core';\nimport { BehaviorSubject, debounceTime, fromEvent, map, Subject } from 'rxjs';\nimport * as i0 from \"@angular/core\";\nexport class AXOutlineContainerDirective {\n constructor() {\n this.zone = inject(NgZone);\n this.platformId = inject(PLATFORM_ID);\n this.el = inject((ElementRef));\n this.unsubscriber = inject(AXUnsubscriber);\n this.clipboardService = inject(AXClipBoardService);\n this.target = input(...(ngDevMode ? [undefined, { debugName: \"target\" }] : []));\n this.smoothScroll = input(true, ...(ngDevMode ? [{ debugName: \"smoothScroll\" }] : []));\n this.showHashItem = input(false, ...(ngDevMode ? [{ debugName: \"showHashItem\" }] : []));\n this.activationOffset = input(16, ...(ngDevMode ? [{ debugName: \"activationOffset\" }] : []));\n this.copyUrlOnClick = input(false, ...(ngDevMode ? [{ debugName: \"copyUrlOnClick\" }] : []));\n this.activateLastAtBottom = input(true, ...(ngDevMode ? [{ debugName: \"activateLastAtBottom\" }] : []));\n this.scrollableElementId = input(null, ...(ngDevMode ? [{ debugName: \"scrollableElementId\" }] : []));\n this.scrollTop = signal(0, ...(ngDevMode ? [{ debugName: \"scrollTop\" }] : []));\n this.outlineItems = signal([], ...(ngDevMode ? [{ debugName: \"outlineItems\" }] : []));\n this.scrollableElement = computed(() => this.scrollableElementId()\n ? document.getElementById(this.scrollableElementId())\n : this.el.nativeElement, ...(ngDevMode ? [{ debugName: \"scrollableElement\" }] : []));\n this.mutationSubject = new Subject();\n this.MUTATION_DEBOUNCE_TIME = 150;\n this.outlineItems$ = new BehaviorSubject([]);\n this.#anr = afterNextRender(() => {\n if (this.smoothScroll()) {\n this.scrollableElement().style.overflow = 'auto';\n this.scrollableElement().style.scrollBehavior = 'smooth';\n }\n if (isPlatformBrowser(this.platformId)) {\n this.zone.runOutsideAngular(() => {\n const scrollable = this.scrollableElement().tagName === 'HTML' ? window : this.scrollableElement();\n fromEvent(scrollable, 'scroll')\n .pipe(this.unsubscriber.takeUntilDestroy, map(() => this.scrollableElement().scrollTop))\n .subscribe((scrollTop) => {\n this.scrollTop.set(scrollTop);\n this.scrollChanged(scrollTop);\n });\n this.mutationObserver = new MutationObserver((mutationsList) => {\n const relevantMutation = mutationsList.some((mutation) => mutation.type === 'childList' && (mutation.addedNodes.length > 0 || mutation.removedNodes.length > 0));\n if (relevantMutation) {\n this.mutationSubject.next();\n }\n });\n this.mutationObserver.observe(this.el.nativeElement, {\n childList: true,\n subtree: true,\n });\n });\n this.mutationSubject\n .pipe(debounceTime(this.MUTATION_DEBOUNCE_TIME), this.unsubscriber.takeUntilDestroy)\n .subscribe(() => {\n this.refreshOutlineItems();\n });\n }\n });\n }\n #anr;\n ngOnDestroy() {\n if (this.mutationObserver) {\n this.mutationObserver.disconnect();\n }\n }\n ngAfterViewInit() {\n this.refreshOutlineItems();\n }\n scrollChanged(scrollTop) {\n this.outlineItems.update((prevItems) => {\n if (prevItems.length === 0)\n return prevItems;\n const scrollHeight = this.scrollableElement().scrollHeight;\n const clientHeight = this.scrollableElement().clientHeight;\n const isAtBottom = scrollTop + clientHeight >= scrollHeight - 1;\n if (isAtBottom && this.activateLastAtBottom()) {\n return prevItems.map((item, index) => ({\n ...item,\n active: index === prevItems.length - 1,\n }));\n }\n let activeIndex = -1;\n for (let i = 0; i < prevItems.length; i++) {\n const item = prevItems[i];\n if (scrollTop >= item.scrollY - this.activationOffset()) {\n activeIndex = i;\n }\n }\n return prevItems.map((item, index) => ({\n ...item,\n active: index === activeIndex,\n }));\n });\n this.outlineItems$.next(this.outlineItems());\n }\n setOutlineItems() {\n if (this.mutationObserver) {\n this.mutationObserver.disconnect();\n }\n setTimeout(() => {\n const targets = this.target() ? [...this.el.nativeElement.querySelectorAll(this.target())] : [];\n targets.push(...this.el.nativeElement.querySelectorAll('[data-ax-outline-item=\"true\"]'));\n const uniqueTargets = new Set(targets);\n const outlineItems = Array.from(uniqueTargets)\n .filter((el) => {\n return el.dataset['axOutlineItem'] !== 'false';\n })\n .map((el) => {\n let fragment = el.id;\n if (!fragment) {\n const textContentForId = el.textContent?.trim() ?? ''; // Read text BEFORE adding/modifying for hash\n if (textContentForId) {\n fragment = `${textContentForId.toLowerCase().replace(/\\s+/g, '-')}`;\n let counter = 1;\n const originalFragment = fragment;\n while (document.getElementById(fragment)) {\n fragment = `${originalFragment}-${counter}`;\n counter++;\n }\n }\n else {\n fragment = `ax-outline-${Math.random().toString(36).slice(2, 7)}`;\n }\n el.id = fragment; // Set the ID on the element\n }\n el.style.scrollMargin = `${this.activationOffset()}px`;\n const existingLink = el.querySelector('a.ax-outline-hash-link');\n if (existingLink) {\n existingLink.remove();\n }\n if (this.showHashItem()) {\n const anchor = document.createElement('a');\n anchor.textContent = '#';\n anchor.href = `${window.location.pathname}${window.location.search}#${fragment}`;\n anchor.classList.add('ax-outline-hash-link');\n // Styling for the hash link\n anchor.style.paddingInlineStart = '0.5rem'; // Adjust as needed\n anchor.style.opacity = '0';\n anchor.style.transition = 'opacity 0.2s ease-in-out';\n anchor.style.cursor = 'pointer';\n anchor.setAttribute('aria-hidden', 'true');\n anchor.setAttribute('fragment', fragment);\n const enterListener = () => (anchor.style.opacity = '1');\n const leaveListener = () => (anchor.style.opacity = '0');\n el.addEventListener('mouseenter', enterListener);\n el.addEventListener('mouseleave', leaveListener);\n el.appendChild(anchor);\n if (this.copyUrlOnClick()) {\n anchor.addEventListener('click', async () => {\n try {\n await this.clipboardService.copy(anchor.href);\n }\n catch (err) {\n console.error('Failed to copy outline URL:', err);\n }\n });\n }\n }\n const parentId = el.dataset['parent'];\n // Calculate position relative to the scrollable element\n const scrollableElement = this.scrollableElement();\n const scrollableRect = scrollableElement.getBoundingClientRect();\n const elementRect = el.getBoundingClientRect();\n const relativeScrollY = elementRect.top - scrollableRect.top + scrollableElement.scrollTop;\n return {\n el,\n id: fragment,\n active: false,\n parentId: parentId,\n scrollY: relativeScrollY,\n hasAnchor: this.showHashItem(),\n };\n })\n .sort((a, b) => a.scrollY - b.scrollY);\n this.outlineItems.set(outlineItems);\n this.scrollChanged(this.scrollTop());\n if (this.mutationObserver) {\n this.mutationObserver.observe(this.el.nativeElement, {\n childList: true,\n subtree: true,\n });\n }\n });\n }\n refreshOutlineItems() {\n this.setOutlineItems();\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.15\", ngImport: i0, type: AXOutlineContainerDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }\n static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"17.1.0\", version: \"20.3.15\", type: AXOutlineContainerDirective, isStandalone: true, selector: \"[axOutlineContainer]\", inputs: { target: { classPropertyName: \"target\", publicName: \"target\", isSignal: true, isRequired: false, transformFunction: null }, smoothScroll: { classPropertyName: \"smoothScroll\", publicName: \"smoothScroll\", isSignal: true, isRequired: false, transformFunction: null }, showHashItem: { classPropertyName: \"showHashItem\", publicName: \"showHashItem\", isSignal: true, isRequired: false, transformFunction: null }, activationOffset: { classPropertyName: \"activationOffset\", publicName: \"activationOffset\", isSignal: true, isRequired: false, transformFunction: null }, copyUrlOnClick: { classPropertyName: \"copyUrlOnClick\", publicName: \"copyUrlOnClick\", isSignal: true, isRequired: false, transformFunction: null }, activateLastAtBottom: { classPropertyName: \"activateLastAtBottom\", publicName: \"activateLastAtBottom\", isSignal: true, isRequired: false, transformFunction: null }, scrollableElementId: { classPropertyName: \"scrollableElementId\", publicName: \"scrollableElementId\", isSignal: true, isRequired: false, transformFunction: null } }, providers: [AXUnsubscriber, AXClipBoardService], exportAs: [\"axOutlineContainer\"], ngImport: i0 }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.15\", ngImport: i0, type: AXOutlineContainerDirective, decorators: [{\n type: Directive,\n args: [{\n selector: '[axOutlineContainer]',\n exportAs: 'axOutlineContainer',\n providers: [AXUnsubscriber, AXClipBoardService],\n }]\n }], propDecorators: { target: [{ type: i0.Input, args: [{ isSignal: true, alias: \"target\", required: false }] }], smoothScroll: [{ type: i0.Input, args: [{ isSignal: true, alias: \"smoothScroll\", required: false }] }], showHashItem: [{ type: i0.Input, args: [{ isSignal: true, alias: \"showHashItem\", required: false }] }], activationOffset: [{ type: i0.Input, args: [{ isSignal: true, alias: \"activationOffset\", required: false }] }], copyUrlOnClick: [{ type: i0.Input, args: [{ isSignal: true, alias: \"copyUrlOnClick\", required: false }] }], activateLastAtBottom: [{ type: i0.Input, args: [{ isSignal: true, alias: \"activateLastAtBottom\", required: false }] }], scrollableElementId: [{ type: i0.Input, args: [{ isSignal: true, alias: \"scrollableElementId\", required: false }] }] } });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib3V0bGluZS1jb250YWluZXIuZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvY2RrL291dGxpbmUvc3JjL2xpYi9vdXRsaW5lLWNvbnRhaW5lci5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDM0QsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQ3BELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ3BELE9BQU8sRUFDTCxlQUFlLEVBRWYsUUFBUSxFQUNSLFNBQVMsRUFDVCxVQUFVLEVBQ1YsTUFBTSxFQUNOLEtBQUssRUFDTCxNQUFNLEVBRU4sV0FBVyxFQUNYLE1BQU0sR0FDUCxNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsZUFBZSxFQUFFLFlBQVksRUFBRSxTQUFTLEVBQUUsR0FBRyxFQUFFLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQzs7QUFnQjlFLE1BQU0sT0FBTywyQkFBMkI7SUFMeEM7UUFNVSxTQUFJLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQ3RCLGVBQVUsR0FBRyxNQUFNLENBQUMsV0FBVyxDQUFDLENBQUM7UUFDakMsT0FBRSxHQUFHLE1BQU0sQ0FBQyxDQUFBLFVBQXVCLENBQUEsQ0FBQyxDQUFDO1FBQ3JDLGlCQUFZLEdBQUcsTUFBTSxDQUFDLGNBQWMsQ0FBQyxDQUFDO1FBQ3RDLHFCQUFnQixHQUFHLE1BQU0sQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDO1FBRXRELFdBQU0sR0FBRyxLQUFLLDREQUFVLENBQUM7UUFDekIsaUJBQVksR0FBRyxLQUFLLENBQUMsSUFBSSx3REFBQyxDQUFDO1FBQzNCLGlCQUFZLEdBQUcsS0FBSyxDQUFDLEtBQUssd0RBQUMsQ0FBQztRQUM1QixxQkFBZ0Is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dGVudCI6WyJpbXBvcnQgeyBBWENsaXBCb2FyZFNlcnZpY2UgfSBmcm9tICdAYWNvcmV4L2Nkay9jbGlwYm9hcmQnO1xuaW1wb3J0IHsgQVhVbnN1YnNjcmliZXIgfSBmcm9tICdAYWNvcmV4L2NvcmUvdXRpbHMnO1xuaW1wb3J0IHsgaXNQbGF0Zm9ybUJyb3dzZXIgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHtcbiAgYWZ0ZXJOZXh0UmVuZGVyLFxuICBBZnRlclZpZXdJbml0LFxuICBjb21wdXRlZCxcbiAgRGlyZWN0aXZlLFxuICBFbGVtZW50UmVmLFxuICBpbmplY3QsXG4gIGlucHV0LFxuICBOZ1pvbmUsXG4gIE9uRGVzdHJveSxcbiAgUExBVEZPUk1fSUQsXG4gIHNpZ25hbCxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QsIGRlYm91bmNlVGltZSwgZnJvbUV2ZW50LCBtYXAsIFN1YmplY3QgfSBmcm9tICdyeGpzJztcblxuZXhwb3J0IHR5cGUgb3V0bGluZUl0ZW1UeXBlID0ge1xuICBpZDogc3RyaW5nO1xuICBlbDogSFRNTEVsZW1lbnQ7XG4gIGFjdGl2ZTogYm9vbGVhbjtcbiAgc2Nyb2xsWTogbnVtYmVyO1xuICBwYXJlbnRJZD86IHN0cmluZztcbiAgaGFzQW5jaG9yOiBib29sZWFuO1xufTtcblxuQERpcmVjdGl2ZSh7XG4gIHNlbGVjdG9yOiAnW2F4T3V0bGluZUNvbnRhaW5lcl0nLFxuICBleHBvcnRBczogJ2F4T3V0bGluZUNvbnRhaW5lcicsXG4gIHByb3ZpZGVyczogW0FYVW5zdWJzY3JpYmVyLCBBWENsaXBCb2FyZFNlcnZpY2VdLFxufSlcbmV4cG9ydCBjbGFzcyBBWE91dGxpbmVDb250YWluZXJEaXJlY3RpdmUgaW1wbGVtZW50cyBPbkRlc3Ryb3ksIEFmdGVyVmlld0luaXQge1xuICBwcml2YXRlIHpvbmUgPSBpbmplY3QoTmdab25lKTtcbiAgcHJpdmF0ZSBwbGF0Zm9ybUlkID0gaW5qZWN0KFBMQVRGT1JNX0lEKTtcbiAgcHJpdmF0ZSBlbCA9IGluamVjdChFbGVtZW50UmVmPEhUTUxFbGVtZW50Pik7XG4gIHByaXZhdGUgdW5zdWJzY3JpYmVyID0gaW5qZWN0KEFYVW5zdWJzY3JpYmVyKTtcbiAgcHJpdmF0ZSBjbGlwYm9hcmRTZXJ2aWNlID0gaW5qZWN0KEFYQ2xpcEJvYXJkU2VydmljZSk7XG5cbiAgdGFyZ2V0ID0gaW5wdXQ8c3RyaW5nPigpO1xuICBzbW9vdGhTY3JvbGwgPSBpbnB1dCh0cnVlKTtcbiAgc2hvd0hhc2hJdGVtID0gaW5wdXQoZmFsc2UpO1xuICBhY3RpdmF0aW9uT2Zmc2V0ID0gaW5wdXQoMTYpO1xuICBjb3B5VXJsT25DbGljayA9IGlucHV0KGZhbHNlKTtcbiAgYWN0aXZhdGVMYXN0QXRCb3R0b20gPSBpbnB1dCh0cnVlKTtcbiAgc2Nyb2xsYWJsZUVsZW1lbnRJZCA9IGlucHV0PHN0cmluZyB8IG51bGw+KG51bGwpO1xuXG4gIHByaXZhdGUgc2Nyb2xsVG9wID0gc2lnbmFsKDApO1xuICBwcml2YXRlIG91dGxpbmVJdGVtcyA9IHNpZ25hbDxvdXRsaW5lSXRlbVR5cGVbXT4oW10pO1xuXG4gIHByaXZhdGUgc2Nyb2xsYWJsZUVsZW1lbnQgPSBjb21wdXRlZCgoKSA9PlxuICAgIHRoaXMuc2Nyb2xsYWJsZUVsZW1lbnRJZCgpXG4gICAgICA/IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRoaXMuc2Nyb2xsYWJsZUVsZW1lbnRJZCgpKVxuICAgICAgOiAodGhpcy5lbC5uYXRpdmVFbGVtZW50IGFzIEhUTUxFbGVtZW50KSxcbiAgKTtcblxuICBwcml2YXRlIG11dGF0aW9uU3ViamVjdCA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XG4gIHByaXZhdGUgcmVhZG9ubHkgTVVUQVRJT05fREVCT1VOQ0VfVElNRSA9IDE1MDtcbiAgcHJpdmF0ZSBtdXRhdGlvbk9ic2VydmVyOiBNdXRhdGlvbk9ic2VydmVyIHwgdW5kZWZpbmVkO1xuICBvdXRsaW5lSXRlbXMkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxvdXRsaW5lSXRlbVR5cGVbXT4oW10pO1xuXG4gICNhbnIgPSBhZnRlck5leHRSZW5kZXIoKCkgPT4ge1xuICAgIGlmICh0aGlzLnNtb290aFNjcm9sbCgpKSB7XG4gICAgICB0aGlzLnNjcm9sbGFibGVFbGVtZW50KCkuc3R5bGUub3ZlcmZsb3cgPSAnYXV0byc7XG4gICAgICB0aGlzLnNjcm9sbGFibGVFbGVtZW50KCkuc3R5bGUuc2Nyb2xsQmVoYXZpb3IgPSAnc21vb3RoJztcbiAgICB9XG5cbiAgICBpZiAoaXNQbGF0Zm9ybUJyb3dzZXIodGhpcy5wbGF0Zm9ybUlkKSkge1xuICAgICAgdGhpcy56b25lLnJ1bk91dHNpZGVBbmd1bGFyKCgpID0+IHtcbiAgICAgICAgY29uc3Qgc2Nyb2xsYWJsZSA9IHRoaXMuc2Nyb2xsYWJsZUVsZW1lbnQoKS50YWdOYW1lID09PSAnSFRNTCcgPyB3aW5kb3cgOiB0aGlzLnNjcm9sbGFibGVFbGVtZW50KCk7XG4gICAgICAgIGZyb21FdmVudChzY3JvbGxhYmxlLCAnc2Nyb2xsJylcbiAgICAgICAgICAucGlwZShcbiAgICAgICAgICAgIHRoaXMudW5zdWJzY3JpYmVyLnRha2VVbnRpbERlc3Ryb3ksXG4gICAgICAgICAgICBtYXAoKCkgPT4gdGhpcy5zY3JvbGxhYmxlRWxlbWVudCgpLnNjcm9sbFRvcCksXG4gICAgICAgICAgKVxuICAgICAgICAgIC5zdWJzY3JpYmUoKHNjcm9sbFRvcCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5zY3JvbGxUb3Auc2V0KHNjcm9sbFRvcCk7XG4gICAgICAgICAgICB0aGlzLnNjcm9sbENoYW5nZWQoc2Nyb2xsVG9wKTtcbiAgICAgICAgICB9KTtcblxuICAgICAgICB0aGlzLm11dGF0aW9uT2JzZXJ2ZXIgPSBuZXcgTXV0YXRpb25PYnNlcnZlcigobXV0YXRpb25zTGlzdCkgPT4ge1xuICAgICAgICAgIGNvbnN0IHJlbGV2YW50TXV0YXRpb24gPSBtdXRhdGlvbnNMaXN0LnNvbWUoXG4gICAgICAgICAgICAobXV0YXRpb24pID0+XG4gICAgICAgICAgICAgIG11dGF0aW9uLnR5cGUgPT09ICdjaGlsZExpc3QnICYmIChtdXRhdGlvbi5hZGRlZE5vZGVzLmxlbmd0aCA+IDAgfHwgbXV0YXRpb24ucmVtb3ZlZE5vZGVzLmxlbmd0aCA+IDApLFxuICAgICAgICAgICk7XG4gICAgICAgICAgaWYgKHJlbGV2YW50TXV0YXRpb24pIHtcbiAgICAgICAgICAgIHRoaXMubXV0YXRpb25TdWJqZWN0Lm5leHQoKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuXG4gICAgICAgIHRoaXMubXV0YXRpb25PYnNlcnZlci5vYnNlcnZlKHRoaXMuZWwubmF0aXZlRWxlbWVudCwge1xuICAgICAgICAgIGNoaWxkTGlzdDogdHJ1ZSxcbiAgICAgICAgICBzdWJ0cmVlOiB0cnVlLFxuICAgICAgICB9KTtcbiAgICAgIH0pO1xuXG4gICAgICB0aGlzLm11dGF0aW9uU3ViamVjdFxuICAgICAgICAucGlwZShkZWJvdW5jZVRpbWUodGhpcy5NVVRBVElPTl9ERUJPVU5DRV9USU1FKSwgdGhpcy51bnN1YnNjcmliZXIudGFrZVVudGlsRGVzdHJveSlcbiAgICAgICAgLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgICAgdGhpcy5yZWZyZXNoT3V0bGluZUl0ZW1zKCk7XG4gICAgICAgIH0pO1xuICAgIH1cbiAgfSk7XG5cbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgaWYgKHRoaXMubXV0YXRpb25PYnNlcnZlcikge1xuICAgICAgdGhpcy5tdXRhdGlvbk9ic2VydmVyLmRpc2Nvbm5lY3QoKTtcbiAgICB9XG4gIH1cblxuICBuZ0FmdGVyVmlld0luaXQoKSB7XG4gICAgdGhpcy5yZWZyZXNoT3V0bGluZUl0ZW1zKCk7XG4gIH1cblxuICBwcml2YXRlIHNjcm9sbENoYW5nZWQoc2Nyb2xsVG9wOiBudW1iZXIpIHtcbiAgICB0aGlzLm91dGxpbmVJdGVtcy51cGRhdGUoKHByZXZJdGVtcykgPT4ge1xuICAgICAgaWYgKHByZXZJdGVtcy5sZW5ndGggPT09IDApIHJldHVybiBwcmV2SXRlbXM7XG5cbiAgICAgIGNvbnN0IHNjcm9sbEhlaWdodCA9IHRoaXMuc2Nyb2xsYWJsZUVsZW1lbnQoKS5zY3JvbGxIZWlnaHQ7XG4gICAgICBjb25zdCBjbGllbnRIZWlnaHQgPSB0aGlzLnNjcm9sbGFibGVFbGVtZW50KCkuY2xpZW50SGVpZ2h0O1xuICAgICAgY29uc3QgaXNBdEJvdHRvbSA9IHNjcm9sbFRvcCArIGNsaWVudEhlaWdodCA+PSBzY3JvbGxIZWlnaHQgLSAxO1xuXG4gICAgICBpZiAoaXNBdEJvdHRvbSAmJiB0aGlzLmFjdGl2YXRlTGFzdEF0Qm90dG9tKCkpIHtcbiAgICAgICAgcmV0dXJuIHByZXZJdGVtcy5tYXAoKGl0ZW0sIGluZGV4KSA9PiAoe1xuICAgICAgICAgIC4uLml0ZW0sXG4gICAgICAgICAgYWN0aXZlOiBpbmRleCA9PT0gcHJldkl0ZW1zLmxlbmd0aCAtIDEsXG4gICAgICAgIH0pKTtcbiAgICAgIH1cblxuICAgICAgbGV0IGFjdGl2ZUluZGV4ID0gLTE7XG4gICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHByZXZJdGVtcy5sZW5ndGg7IGkrKykge1xuICAgICAgICBjb25zdCBpdGVtID0gcHJldkl0ZW1zW2ldO1xuICAgICAgICBpZiAoc2Nyb2xsVG9wID49IGl0ZW0uc2Nyb2xsWSAtIHRoaXMuYWN0aXZhdGlvbk9mZnNldCgpKSB7XG4gICAgICAgICAgYWN0aXZlSW5kZXggPSBpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICByZXR1cm4gcHJldkl0ZW1zLm1hcCgoaXRlbSwgaW5kZXgpID0+ICh7XG4gICAgICAgIC4uLml0ZW0sXG4gICAgICAgIGFjdGl2ZTogaW5kZXggPT09IGFjdGl2ZUluZGV4LFxuICAgICAgfSkpO1xuICAgIH0pO1xuICAgIHRoaXMub3V0bGluZUl0ZW1zJC5uZXh0KHRoaXMub3V0bGluZUl0ZW1zKCkpO1xuICB9XG5cbiAgcHJpdmF0ZSBzZXRPdXRsaW5lSXRlbXMoKSB7XG4gICAgaWYgKHRoaXMubXV0YXRpb25PYnNlcnZlcikge1xuICAgICAgdGhpcy5tdXRhdGlvbk9ic2VydmVyLmRpc2Nvbm5lY3QoKTtcbiAgICB9XG5cbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgIGNvbnN0IHRhcmdldHMgPSB0aGlzLnRhcmdldCgpID8gWy4uLnRoaXMuZWwubmF0aXZlRWxlbWVudC5xdWVyeVNlbGVjdG9yQWxsKHRoaXMudGFyZ2V0KCkpXSA6IFtdO1xuICAgICAgdGFyZ2V0cy5wdXNoKC4uLnRoaXMuZWwubmF0aXZlRWxlbWVudC5xdWVyeVNlbGVjdG9yQWxsKCdbZGF0YS1heC1vdXRsaW5lLWl0ZW09XCJ0cnVlXCJdJykpO1xuICAgICAgY29uc3QgdW5pcXVlVGFyZ2V0cyA9IG5ldyBTZXQodGFyZ2V0cyk7XG5cbiAgICAgIGNvbnN0IG91dGxpbmVJdGVtcyA9IEFycmF5LmZyb20odW5pcXVlVGFyZ2V0cylcbiAgICAgICAgLmZpbHRlcigoZWwpID0+IHtcbiAgICAgICAgICByZXR1cm4gZWwuZGF0YXNldFsnYXhPdXRsaW5lSXRlbSddICE9PSAnZmFsc2UnO1xuICAgICAgICB9KVxuICAgICAgICAubWFwKChlbDogSFRNTEVsZW1lbnQpID0+IHtcbiAgICAgICAgICBsZXQgZnJhZ21lbnQgPSBlbC5pZDtcbiAgICAgICAgICBpZiAoIWZyYWdtZW50KSB7XG4gICAgICAgICAgICBjb25zdCB0ZXh0Q29udGVudEZvcklkID0gZWwudGV4dENvbnRlbnQ/LnRyaW0oKSA/PyAnJzsgLy8gUmVhZCB0ZXh0IEJFRk9SRSBhZGRpbmcvbW9kaWZ5aW5nIGZvciBoYXNoXG4gICAgICAgICAgICBpZiAodGV4dENvbnRlbnRGb3JJZCkge1xuICAgICAgICAgICAgICBmcmFnbWVudCA9IGAke3RleHRDb250ZW50Rm9ySWQudG9Mb3dlckNhc2UoKS5yZXBsYWNlKC9cXHMrL2csICctJyl9YDtcbiAgICAgICAgICAgICAgbGV0IGNvdW50ZXIgPSAxO1xuICAgICAgICAgICAgICBjb25zdCBvcmlnaW5hbEZyYWdtZW50ID0gZnJhZ21lbnQ7XG4gICAgICAgICAgICAgIHdoaWxlIChkb2N1bWVudC5nZXRFbGVtZW50QnlJZChmcmFnbWVudCkpIHtcbiAgICAgICAgICAgICAgICBmcmFnbWVudCA9IGAke29yaWdpbmFsRnJhZ21lbnR9LSR7Y291bnRlcn1gO1xuICAgICAgICAgICAgICAgIGNvdW50ZXIrKztcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgZnJhZ21lbnQgPSBgYXgtb3V0bGluZS0ke01hdGgucmFuZG9tKCkudG9TdHJpbmcoMzYpLnNsaWNlKDIsIDcpfWA7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbC5pZCA9IGZyYWdtZW50OyAvLyBTZXQgdGhlIElEIG9uIHRoZSBlbGVtZW50XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgZWwuc3R5bGUuc2Nyb2xsTWFyZ2luID0gYCR7dGhpcy5hY3RpdmF0aW9uT2Zmc2V0KCl9cHhgO1xuXG4gICAgICAgICAgY29uc3QgZXhpc3RpbmdMaW5rID0gZWwucXVlcnlTZWxlY3RvcignYS5heC1vdXRsaW5lLWhhc2gtbGluaycpO1xuICAgICAgICAgIGlmIChleGlzdGluZ0xpbmspIHtcbiAgICAgICAgICAgIGV4aXN0aW5nTGluay5yZW1vdmUoKTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBpZiAodGhpcy5zaG93SGFzaEl0ZW0oKSkge1xuICAgICAgICAgICAgY29uc3QgYW5jaG9yID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnYScpO1xuICAgICAgICAgICAgYW5jaG9yLnRleHRDb250ZW50ID0gJyMnO1xuICAgICAgICAgICAgYW5jaG9yLmhyZWYgPSBgJHt3aW5kb3cubG9jYXRpb24ucGF0aG5hbWV9JHt3aW5kb3cubG9jYXRpb24uc2VhcmNofSMke2ZyYWdtZW50fWA7XG4gICAgICAgICAgICBhbmNob3IuY2xhc3NMaXN0LmFkZCgnYXgtb3V0bGluZS1oYXNoLWxpbmsnKTtcblxuICAgICAgICAgICAgLy8gU3R5bGluZyBmb3IgdGhlIGhhc2ggbGlua1xuICAgICAgICAgICAgYW5jaG9yLnN0eWxlLnBhZGRpbmdJbmxpbmVTdGFydCA9ICcwLjVyZW0nOyAvLyBBZGp1c3QgYXMgbmVlZGVkXG4gICAgICAgICAgICBhbmNob3Iuc3R5bGUub3BhY2l0eSA9ICcwJztcbiAgICAgICAgICAgIGFuY2hvci5zdHlsZS50cmFuc2l0aW9uID0gJ29wYWNpdHkgMC4ycyBlYXNlLWluLW91dCc7XG4gICAgICAgICAgICBhbmNob3Iuc3R5bGUuY3Vyc29yID0gJ3BvaW50ZXInO1xuICAgICAgICAgICAgYW5jaG9yLnNldEF0dHJpYnV0ZSgnYXJpYS1oaWRkZW4nLCAndHJ1ZScpO1xuICAgICAgICAgICAgYW5jaG9yLnNldEF0dHJpYnV0ZSgnZnJhZ21lbnQnLCBmcmFnbWVudCk7XG5cbiAgICAgICAgICAgIGNvbnN0IGVudGVyTGlzdGVuZXIgPSAoKSA9PiAoYW5jaG9yLnN0eWxlLm9wYWNpdHkgPSAnMScpO1xuICAgICAgICAgICAgY29uc3QgbGVhdmVMaXN0ZW5lciA9ICgpID0+IChhbmNob3Iuc3R5bGUub3BhY2l0eSA9ICcwJyk7XG5cbiAgICAgICAgICAgIGVsLmFkZEV2ZW50TGlzdGVuZXIoJ21vdXNlZW50ZXInLCBlbnRlckxpc3RlbmVyKTtcbiAgICAgICAgICAgIGVsLmFkZEV2ZW50TGlzdGVuZXIoJ21vdXNlbGVhdmUnLCBsZWF2ZUxpc3RlbmVyKTtcblxuICAgICAgICAgICAgZWwuYXBwZW5kQ2hpbGQoYW5jaG9yKTtcblxuICAgICAgICAgICAgaWYgKHRoaXMuY29weVVybE9uQ2xpY2soKSkge1xuICAgICAgICAgICAgICBhbmNob3IuYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCBhc3luYyAoKSA9PiB7XG4gICAgICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICAgIGF3YWl0IHRoaXMuY2xpcGJvYXJkU2VydmljZS5jb3B5KGFuY2hvci5ocmVmKTtcbiAgICAgICAgICAgICAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgICAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoJ0ZhaWxlZCB0byBjb3B5IG91dGxpbmUgVVJMOicsIGVycik7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG5cbiAgICAgICAgICBjb25zdCBwYXJlbnRJZCA9IGVsLmRhdGFzZXRbJ3BhcmVudCddO1xuXG4gICAgICAgICAgLy8gQ2FsY3VsYXRlIHBvc2l0aW9uIHJlbGF0aXZlIHRvIHRoZSBzY3JvbGxhYmxlIGVsZW1lbnRcbiAgICAgICAgICBjb25zdCBzY3JvbGxhYmxlRWxlbWVudCA9IHRoaXMuc2Nyb2xsYWJsZUVsZW1lbnQoKTtcbiAgICAgICAgICBjb25zdCBzY3JvbGxhYmxlUmVjdCA9IHNjcm9sbGFibGVFbGVtZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xuICAgICAgICAgIGNvbnN0IGVsZW1lbnRSZWN0ID0gZWwuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XG4gICAgICAgICAgY29uc3QgcmVsYXRpdmVTY3JvbGxZID0gZWxlbWVudFJlY3QudG9wIC0gc2Nyb2xsYWJsZVJlY3QudG9wICsgc2Nyb2xsYWJsZUVsZW1lbnQuc2Nyb2xsVG9wO1xuXG4gICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIGVsLFxuICAgICAgICAgICAgaWQ6IGZyYWdtZW50LFxuICAgICAgICAgICAgYWN0aXZlOiBmYWxzZSxcbiAgICAgICAgICAgIHBhcmVudElkOiBwYXJlbnRJZCxcbiAgICAgICAgICAgIHNjcm9sbFk6IHJlbGF0aXZlU2Nyb2xsWSxcbiAgICAgICAgICAgIGhhc0FuY2hvcjogdGhpcy5zaG93SGFzaEl0ZW0oKSxcbiAgICAgICAgICB9O1xuICAgICAgICB9KVxuICAgICAgICAuc29ydCgoYSwgYikgPT4gYS5zY3JvbGxZIC0gYi5zY3JvbGxZKTtcblxuICAgICAgdGhpcy5vdXRsaW5lSXRlbXMuc2V0KG91dGxpbmVJdGVtcyk7XG4gICAgICB0aGlzLnNjcm9sbENoYW5nZWQodGhpcy5zY3JvbGxUb3AoKSk7XG5cbiAgICAgIGlmICh0aGlzLm11dGF0aW9uT2JzZXJ2ZXIpIHtcbiAgICAgICAgdGhpcy5tdXRhdGlvbk9ic2VydmVyLm9ic2VydmUodGhpcy5lbC5uYXRpdmVFbGVtZW50LCB7XG4gICAgICAgICAgY2hpbGRMaXN0OiB0cnVlLFxuICAgICAgICAgIHN1YnRyZWU6IHRydWUsXG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgcHVibGljIHJlZnJlc2hPdXRsaW5lSXRlbXMoKSB7XG4gICAgdGhpcy5zZXRPdXRsaW5lSXRlbXMoKTtcbiAgfVxufVxuIl19","import { afterNextRender, Directive, ElementRef, inject, input } from '@angular/core';\nimport * as i0 from \"@angular/core\";\nexport class AXOutlineItemDirective {\n constructor() {\n this.el = inject(ElementRef);\n this.id = input(...(ngDevMode ? [undefined, { debugName: \"id\" }] : []));\n this.disabled = input(false, ...(ngDevMode ? [{ debugName: \"disabled\" }] : []));\n this.#anr = afterNextRender(() => {\n this.el.nativeElement.dataset['axOutlineItem'] = this.disabled() ? 'false' : 'true';\n let newId;\n if (!this.id()) {\n const textContent = this.el.nativeElement.textContent.trim();\n if (textContent) {\n newId = `${textContent.replace(/\\s+/g, '-')}`;\n }\n else {\n newId = `${Math.random().toString(36).slice(2, 7)}`;\n }\n this.el.nativeElement.id = newId;\n }\n });\n }\n #anr;\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.15\", ngImport: i0, type: AXOutlineItemDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }\n static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"17.1.0\", version: \"20.3.15\", type: AXOutlineItemDirective, isStandalone: true, selector: \"[axOutlineItem]\", inputs: { id: { classPropertyName: \"id\", publicName: \"id\", isSignal: true, isRequired: false, transformFunction: null }, disabled: { classPropertyName: \"disabled\", publicName: \"disabled\", isSignal: true, isRequired: false, transformFunction: null } }, exportAs: [\"axOutlineItem\"], ngImport: i0 }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.15\", ngImport: i0, type: AXOutlineItemDirective, decorators: [{\n type: Directive,\n args: [{\n selector: '[axOutlineItem]',\n exportAs: 'axOutlineItem',\n }]\n }], propDecorators: { id: [{ type: i0.Input, args: [{ isSignal: true, alias: \"id\", required: false }] }], disabled: [{ type: i0.Input, args: [{ isSignal: true, alias: \"disabled\", required: false }] }] } });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib3V0bGluZS1pdGVtLmRpcmVjdGl2ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2Nkay9vdXRsaW5lL3NyYy9saWIvb3V0bGluZS1pdGVtLmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsZUFBZSxFQUFFLFNBQVMsRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxNQUFNLGVBQWUsQ0FBQzs7QUFNdEYsTUFBTSxPQUFPLHNCQUFzQjtJQUpuQztRQUtVLE9BQUUsR0FBRyxNQUFNLENBQUMsVUFBVSxDQUFDLENBQUM7UUFFaEMsT0FBRSxHQUFHLEtBQUssd0RBQVUsQ0FBQztRQUNyQixhQUFRLEdBQUcsS0FBSyxDQUFDLEtBQUssb0RBQUMsQ0FBQztRQUV4QixTQUFJLEdBQUcsZUFBZSxDQUFDLEdBQUcsRUFBRTtZQUN6QixJQUFJLENBQUMsRUFBRSxDQUFDLGFBQTZCLENBQUMsT0FBTyxDQUFDLGVBQWUsQ0FBQyxHQUFHLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUM7WUFFckcsSUFBSSxLQUFLLENBQUM7WUFDVixJQUFJLENBQUMsSUFBSSxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUM7Z0JBQ2YsTUFBTSxXQUFXLEdBQUcsSUFBSSxDQUFDLEVBQUUsQ0FBQyxhQUFhLENBQUMsV0FBVyxDQUFDLElBQUksRUFBRSxDQUFDO2dCQUM3RCxJQUFJLFdBQVcsRUFBRSxDQUFDO29CQUNoQixLQUFLLEdBQUcsR0FBRyxXQUFXLENBQUMsT0FBTyxDQUFDLE1BQU0sRUFBRSxHQUFHLENBQUMsRUFBRSxDQUFDO2dCQUNoRCxDQUFDO3FCQUFNLENBQUM7b0JBQ04sS0FBSyxHQUFHLEdBQUcsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUM7Z0JBQ3RELENBQUM7Z0JBQ0QsSUFBSSxDQUFDLEVBQUUsQ0FBQyxhQUFhLENBQUMsRUFBRSxHQUFHLEtBQUssQ0FBQztZQUNuQyxDQUFDO1FBQ0gsQ0FBQyxDQUFDLENBQUM7S0FDSjtJQWRDLElBQUksQ0FhRDsrR0FuQlEsc0JBQXNCO21HQUF0QixzQkFBc0I7OzRGQUF0QixzQkFBc0I7a0JBSmxDLFNBQVM7bUJBQUM7b0JBQ1QsUUFBUSxFQUFFLGlCQUFpQjtvQkFDM0IsUUFBUSxFQUFFLGVBQWU7aUJBQzFCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgYWZ0ZXJOZXh0UmVuZGVyLCBEaXJlY3RpdmUsIEVsZW1lbnRSZWYsIGluamVjdCwgaW5wdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuQERpcmVjdGl2ZSh7XG4gIHNlbGVjdG9yOiAnW2F4T3V0bGluZUl0ZW1dJyxcbiAgZXhwb3J0QXM6ICdheE91dGxpbmVJdGVtJyxcbn0pXG5leHBvcnQgY2xhc3MgQVhPdXRsaW5lSXRlbURpcmVjdGl2ZSB7XG4gIHByaXZhdGUgZWwgPSBpbmplY3QoRWxlbWVudFJlZik7XG5cbiAgaWQgPSBpbnB1dDxzdHJpbmc+KCk7XG4gIGRpc2FibGVkID0gaW5wdXQoZmFsc2UpO1xuXG4gICNhbnIgPSBhZnRlck5leHRSZW5kZXIoKCkgPT4ge1xuICAgICh0aGlzLmVsLm5hdGl2ZUVsZW1lbnQgYXMgSFRNTEVsZW1lbnQpLmRhdGFzZXRbJ2F4T3V0bGluZUl0ZW0nXSA9IHRoaXMuZGlzYWJsZWQoKSA/ICdmYWxzZScgOiAndHJ1ZSc7XG5cbiAgICBsZXQgbmV3SWQ7XG4gICAgaWYgKCF0aGlzLmlkKCkpIHtcbiAgICAgIGNvbnN0IHRleHRDb250ZW50ID0gdGhpcy5lbC5uYXRpdmVFbGVtZW50LnRleHRDb250ZW50LnRyaW0oKTtcbiAgICAgIGlmICh0ZXh0Q29udGVudCkge1xuICAgICAgICBuZXdJZCA9IGAke3RleHRDb250ZW50LnJlcGxhY2UoL1xccysvZywgJy0nKX1gO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgbmV3SWQgPSBgJHtNYXRoLnJhbmRvbSgpLnRvU3RyaW5nKDM2KS5zbGljZSgyLCA3KX1gO1xuICAgICAgfVxuICAgICAgdGhpcy5lbC5uYXRpdmVFbGVtZW50LmlkID0gbmV3SWQ7XG4gICAgfVxuICB9KTtcbn1cbiJdfQ==","/**\n * Generated bundle index. Do not edit.\n */\nexport * from './index';\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWNvcmV4LWNkay1vdXRsaW5lLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvY2RrL291dGxpbmUvc3JjL2Fjb3JleC1jZGstb3V0bGluZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7R0FFRztBQUVILGNBQWMsU0FBUyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBHZW5lcmF0ZWQgYnVuZGxlIGluZGV4LiBEbyBub3QgZWRpdC5cbiAqL1xuXG5leHBvcnQgKiBmcm9tICcuL2luZGV4JztcbiJdfQ=="],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"acorex-cdk-outline.mjs","sources":["../../../../packages/cdk/outline/src/lib/outline-container.directive.ts","../../../../packages/cdk/outline/src/lib/outline-item.directive.ts","../../../../packages/cdk/outline/src/acorex-cdk-outline.ts"],"sourcesContent":["import { AXClipBoardService } from '@acorex/cdk/clipboard';\nimport { AXUnsubscriber } from '@acorex/core/utils';\nimport { isPlatformBrowser } from '@angular/common';\nimport {\n afterNextRender,\n AfterViewInit,\n computed,\n Directive,\n ElementRef,\n inject,\n input,\n NgZone,\n OnDestroy,\n PLATFORM_ID,\n signal,\n} from '@angular/core';\nimport { BehaviorSubject, debounceTime, fromEvent, map, Subject } from 'rxjs';\n\nexport type outlineItemType = {\n id: string;\n el: HTMLElement;\n active: boolean;\n scrollY: number;\n parentId?: string;\n hasAnchor: boolean;\n};\n\n@Directive({\n selector: '[axOutlineContainer]',\n exportAs: 'axOutlineContainer',\n providers: [AXUnsubscriber, AXClipBoardService],\n})\nexport class AXOutlineContainerDirective implements OnDestroy, AfterViewInit {\n private zone = inject(NgZone);\n private platformId = inject(PLATFORM_ID);\n private el = inject(ElementRef<HTMLElement>);\n private unsubscriber = inject(AXUnsubscriber);\n private clipboardService = inject(AXClipBoardService);\n\n target = input<string>();\n smoothScroll = input(true);\n showHashItem = input(false);\n activationOffset = input(16);\n copyUrlOnClick = input(false);\n activateLastAtBottom = input(true);\n scrollableElementId = input<string | null>(null);\n\n private scrollTop = signal(0);\n private outlineItems = signal<outlineItemType[]>([]);\n\n private scrollableElement = computed(() =>\n this.scrollableElementId()\n ? document.getElementById(this.scrollableElementId())\n : (this.el.nativeElement as HTMLElement),\n );\n\n private mutationSubject = new Subject<void>();\n private readonly MUTATION_DEBOUNCE_TIME = 150;\n private mutationObserver: MutationObserver | undefined;\n outlineItems$ = new BehaviorSubject<outlineItemType[]>([]);\n\n #anr = afterNextRender(() => {\n if (this.smoothScroll()) {\n this.scrollableElement().style.overflow = 'auto';\n this.scrollableElement().style.scrollBehavior = 'smooth';\n }\n\n if (isPlatformBrowser(this.platformId)) {\n this.zone.runOutsideAngular(() => {\n const scrollable = this.scrollableElement().tagName === 'HTML' ? window : this.scrollableElement();\n fromEvent(scrollable, 'scroll')\n .pipe(\n this.unsubscriber.takeUntilDestroy,\n map(() => this.scrollableElement().scrollTop),\n )\n .subscribe((scrollTop) => {\n this.scrollTop.set(scrollTop);\n this.scrollChanged(scrollTop);\n });\n\n this.mutationObserver = new MutationObserver((mutationsList) => {\n const relevantMutation = mutationsList.some(\n (mutation) =>\n mutation.type === 'childList' && (mutation.addedNodes.length > 0 || mutation.removedNodes.length > 0),\n );\n if (relevantMutation) {\n this.mutationSubject.next();\n }\n });\n\n this.mutationObserver.observe(this.el.nativeElement, {\n childList: true,\n subtree: true,\n });\n });\n\n this.mutationSubject\n .pipe(debounceTime(this.MUTATION_DEBOUNCE_TIME), this.unsubscriber.takeUntilDestroy)\n .subscribe(() => {\n this.refreshOutlineItems();\n });\n }\n });\n\n ngOnDestroy(): void {\n if (this.mutationObserver) {\n this.mutationObserver.disconnect();\n }\n }\n\n ngAfterViewInit() {\n this.refreshOutlineItems();\n }\n\n private scrollChanged(scrollTop: number) {\n this.outlineItems.update((prevItems) => {\n if (prevItems.length === 0) return prevItems;\n\n const scrollHeight = this.scrollableElement().scrollHeight;\n const clientHeight = this.scrollableElement().clientHeight;\n const isAtBottom = scrollTop + clientHeight >= scrollHeight - 1;\n\n if (isAtBottom && this.activateLastAtBottom()) {\n return prevItems.map((item, index) => ({\n ...item,\n active: index === prevItems.length - 1,\n }));\n }\n\n let activeIndex = -1;\n for (let i = 0; i < prevItems.length; i++) {\n const item = prevItems[i];\n if (scrollTop >= item.scrollY - this.activationOffset()) {\n activeIndex = i;\n }\n }\n return prevItems.map((item, index) => ({\n ...item,\n active: index === activeIndex,\n }));\n });\n this.outlineItems$.next(this.outlineItems());\n }\n\n private setOutlineItems() {\n if (this.mutationObserver) {\n this.mutationObserver.disconnect();\n }\n\n setTimeout(() => {\n const targets = this.target() ? [...this.el.nativeElement.querySelectorAll(this.target())] : [];\n targets.push(...this.el.nativeElement.querySelectorAll('[data-ax-outline-item=\"true\"]'));\n const uniqueTargets = new Set(targets);\n\n const outlineItems = Array.from(uniqueTargets)\n .filter((el) => {\n return el.dataset['axOutlineItem'] !== 'false';\n })\n .map((el: HTMLElement) => {\n let fragment = el.id;\n if (!fragment) {\n const textContentForId = el.textContent?.trim() ?? ''; // Read text BEFORE adding/modifying for hash\n if (textContentForId) {\n fragment = `${textContentForId.toLowerCase().replace(/\\s+/g, '-')}`;\n let counter = 1;\n const originalFragment = fragment;\n while (document.getElementById(fragment)) {\n fragment = `${originalFragment}-${counter}`;\n counter++;\n }\n } else {\n fragment = `ax-outline-${Math.random().toString(36).slice(2, 7)}`;\n }\n el.id = fragment; // Set the ID on the element\n }\n\n el.style.scrollMargin = `${this.activationOffset()}px`;\n\n const existingLink = el.querySelector('a.ax-outline-hash-link');\n if (existingLink) {\n existingLink.remove();\n }\n\n if (this.showHashItem()) {\n const anchor = document.createElement('a');\n anchor.textContent = '#';\n anchor.href = `${window.location.pathname}${window.location.search}#${fragment}`;\n anchor.classList.add('ax-outline-hash-link');\n\n // Styling for the hash link\n anchor.style.paddingInlineStart = '0.5rem'; // Adjust as needed\n anchor.style.opacity = '0';\n anchor.style.transition = 'opacity 0.2s ease-in-out';\n anchor.style.cursor = 'pointer';\n anchor.setAttribute('aria-hidden', 'true');\n anchor.setAttribute('fragment', fragment);\n\n const enterListener = () => (anchor.style.opacity = '1');\n const leaveListener = () => (anchor.style.opacity = '0');\n\n el.addEventListener('mouseenter', enterListener);\n el.addEventListener('mouseleave', leaveListener);\n\n el.appendChild(anchor);\n\n if (this.copyUrlOnClick()) {\n anchor.addEventListener('click', async () => {\n try {\n await this.clipboardService.copy(anchor.href);\n } catch (err) {\n console.error('Failed to copy outline URL:', err);\n }\n });\n }\n }\n\n const parentId = el.dataset['parent'];\n\n // Calculate position relative to the scrollable element\n const scrollableElement = this.scrollableElement();\n const scrollableRect = scrollableElement.getBoundingClientRect();\n const elementRect = el.getBoundingClientRect();\n const relativeScrollY = elementRect.top - scrollableRect.top + scrollableElement.scrollTop;\n\n return {\n el,\n id: fragment,\n active: false,\n parentId: parentId,\n scrollY: relativeScrollY,\n hasAnchor: this.showHashItem(),\n };\n })\n .sort((a, b) => a.scrollY - b.scrollY);\n\n this.outlineItems.set(outlineItems);\n this.scrollChanged(this.scrollTop());\n\n if (this.mutationObserver) {\n this.mutationObserver.observe(this.el.nativeElement, {\n childList: true,\n subtree: true,\n });\n }\n });\n }\n\n public refreshOutlineItems() {\n this.setOutlineItems();\n }\n}\n","import { afterNextRender, Directive, ElementRef, inject, input } from '@angular/core';\n\n@Directive({\n selector: '[axOutlineItem]',\n exportAs: 'axOutlineItem',\n})\nexport class AXOutlineItemDirective {\n private el = inject(ElementRef);\n\n id = input<string>();\n disabled = input(false);\n\n #anr = afterNextRender(() => {\n (this.el.nativeElement as HTMLElement).dataset['axOutlineItem'] = this.disabled() ? 'false' : 'true';\n\n let newId;\n if (!this.id()) {\n const textContent = this.el.nativeElement.textContent.trim();\n if (textContent) {\n newId = `${textContent.replace(/\\s+/g, '-')}`;\n } else {\n newId = `${Math.random().toString(36).slice(2, 7)}`;\n }\n this.el.nativeElement.id = newId;\n }\n });\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
|
|
@@ -1,34 +1,390 @@
|
|
|
1
|
+
import { convertToPlacement } from '@acorex/cdk/common';
|
|
1
2
|
import { AXComponentService } from '@acorex/core/components';
|
|
3
|
+
import { AXPlatform } from '@acorex/core/platform';
|
|
4
|
+
import { AXZIndexService } from '@acorex/core/z-index';
|
|
5
|
+
import { DOCUMENT } from '@angular/common';
|
|
2
6
|
import * as i0 from '@angular/core';
|
|
3
|
-
import { inject, TemplateRef, Injectable } from '@angular/core';
|
|
7
|
+
import { inject, TemplateRef, ComponentRef, ElementRef, Injectable } from '@angular/core';
|
|
8
|
+
|
|
9
|
+
/**
|
|
10
|
+
* Calculates the position of an overlay element relative to an anchor element.
|
|
11
|
+
*/
|
|
12
|
+
function calculateAnchorPosition(anchorRect, overlayRect, position) {
|
|
13
|
+
let left = 0;
|
|
14
|
+
let top = 0;
|
|
15
|
+
// Calculate origin point on anchor
|
|
16
|
+
switch (position.originX) {
|
|
17
|
+
case 'start':
|
|
18
|
+
left = anchorRect.left;
|
|
19
|
+
break;
|
|
20
|
+
case 'center':
|
|
21
|
+
left = anchorRect.left + anchorRect.width / 2;
|
|
22
|
+
break;
|
|
23
|
+
case 'end':
|
|
24
|
+
left = anchorRect.right;
|
|
25
|
+
break;
|
|
26
|
+
}
|
|
27
|
+
switch (position.originY) {
|
|
28
|
+
case 'top':
|
|
29
|
+
top = anchorRect.top;
|
|
30
|
+
break;
|
|
31
|
+
case 'center':
|
|
32
|
+
top = anchorRect.top + anchorRect.height / 2;
|
|
33
|
+
break;
|
|
34
|
+
case 'bottom':
|
|
35
|
+
top = anchorRect.bottom;
|
|
36
|
+
break;
|
|
37
|
+
}
|
|
38
|
+
// Adjust for overlay alignment
|
|
39
|
+
switch (position.overlayX) {
|
|
40
|
+
case 'start':
|
|
41
|
+
// left stays the same
|
|
42
|
+
break;
|
|
43
|
+
case 'center':
|
|
44
|
+
left -= overlayRect.width / 2;
|
|
45
|
+
break;
|
|
46
|
+
case 'end':
|
|
47
|
+
left -= overlayRect.width;
|
|
48
|
+
break;
|
|
49
|
+
}
|
|
50
|
+
switch (position.overlayY) {
|
|
51
|
+
case 'top':
|
|
52
|
+
// top stays the same
|
|
53
|
+
break;
|
|
54
|
+
case 'center':
|
|
55
|
+
top -= overlayRect.height / 2;
|
|
56
|
+
break;
|
|
57
|
+
case 'bottom':
|
|
58
|
+
top -= overlayRect.height;
|
|
59
|
+
break;
|
|
60
|
+
}
|
|
61
|
+
// Apply offsets
|
|
62
|
+
if (position.offsetX) {
|
|
63
|
+
left += position.offsetX;
|
|
64
|
+
}
|
|
65
|
+
if (position.offsetY) {
|
|
66
|
+
top += position.offsetY;
|
|
67
|
+
}
|
|
68
|
+
return { top, left };
|
|
69
|
+
}
|
|
70
|
+
/**
|
|
71
|
+
* Checks if the overlay position fits within the viewport.
|
|
72
|
+
*/
|
|
73
|
+
function fitsInViewport(position, overlayRect, viewportWidth, viewportHeight) {
|
|
74
|
+
return (position.left >= 0 &&
|
|
75
|
+
position.top >= 0 &&
|
|
76
|
+
position.left + overlayRect.width <= viewportWidth &&
|
|
77
|
+
position.top + overlayRect.height <= viewportHeight);
|
|
78
|
+
}
|
|
79
|
+
/**
|
|
80
|
+
* Clamps a position to ensure the overlay stays within viewport bounds.
|
|
81
|
+
*/
|
|
82
|
+
function clampToViewport(coords, overlayRect, viewportWidth, viewportHeight, margin = 4) {
|
|
83
|
+
const clampedLeft = Math.max(margin, Math.min(coords.left, viewportWidth - overlayRect.width - margin));
|
|
84
|
+
const clampedTop = Math.max(margin, Math.min(coords.top, viewportHeight - overlayRect.height - margin));
|
|
85
|
+
return { top: clampedTop, left: clampedLeft };
|
|
86
|
+
}
|
|
87
|
+
/**
|
|
88
|
+
* Finds the best position for an overlay that fits in the viewport.
|
|
89
|
+
*/
|
|
90
|
+
function findBestPosition(anchorRect, overlayRect, positions, viewportWidth, viewportHeight) {
|
|
91
|
+
for (const position of positions) {
|
|
92
|
+
const coords = calculateAnchorPosition(anchorRect, overlayRect, position);
|
|
93
|
+
if (fitsInViewport(coords, overlayRect, viewportWidth, viewportHeight)) {
|
|
94
|
+
return { position, coords };
|
|
95
|
+
}
|
|
96
|
+
}
|
|
97
|
+
// Fallback to first position if none fit, but clamp to viewport bounds
|
|
98
|
+
const fallbackCoords = calculateAnchorPosition(anchorRect, overlayRect, positions[0]);
|
|
99
|
+
const clampedCoords = clampToViewport(fallbackCoords, overlayRect, viewportWidth, viewportHeight);
|
|
100
|
+
return { position: positions[0], coords: clampedCoords };
|
|
101
|
+
}
|
|
4
102
|
|
|
5
103
|
class AXOverlayService {
|
|
6
104
|
constructor() {
|
|
7
105
|
this.componentService = inject(AXComponentService);
|
|
106
|
+
this.document = inject(DOCUMENT);
|
|
107
|
+
this.zIndexService = inject(AXZIndexService);
|
|
108
|
+
this._platform = inject(AXPlatform);
|
|
8
109
|
}
|
|
110
|
+
/**
|
|
111
|
+
* Creates an overlay with optional anchor-based positioning.
|
|
112
|
+
* @param content - Component or template to display
|
|
113
|
+
* @param options - Configuration options for the overlay
|
|
114
|
+
* @returns Promise<AXOverlayRef> - Reference to the created overlay
|
|
115
|
+
*/
|
|
9
116
|
async create(content, options) {
|
|
117
|
+
let instance;
|
|
118
|
+
let overlayContainer = null;
|
|
119
|
+
let backdropElement = null;
|
|
120
|
+
let isDisposed = false;
|
|
121
|
+
// Acquire a z-index token for this overlay
|
|
122
|
+
let zToken = this.zIndexService.acquire();
|
|
10
123
|
if (content instanceof TemplateRef) {
|
|
11
|
-
|
|
12
|
-
return {
|
|
13
|
-
instance: ref,
|
|
14
|
-
};
|
|
124
|
+
instance = this.componentService.createFromTemplate(content);
|
|
15
125
|
}
|
|
16
126
|
else {
|
|
17
|
-
|
|
127
|
+
instance = this.componentService.createFromComponent(content);
|
|
18
128
|
if (options?.inputs) {
|
|
19
129
|
Object.entries(options.inputs).forEach((c) => {
|
|
20
|
-
|
|
130
|
+
instance.setInput(c[0], c[1]);
|
|
21
131
|
});
|
|
22
132
|
}
|
|
23
|
-
return {
|
|
24
|
-
instance: ref,
|
|
25
|
-
};
|
|
26
133
|
}
|
|
134
|
+
// Get the host element
|
|
135
|
+
const hostElement = this.getHostElement(instance);
|
|
136
|
+
// Create backdrop if enabled
|
|
137
|
+
if (options?.backdrop?.enabled) {
|
|
138
|
+
backdropElement = this.createBackdrop(options, zToken.zIndex);
|
|
139
|
+
}
|
|
140
|
+
// If anchor options are provided, set up positioned overlay (for tooltips, popovers)
|
|
141
|
+
if (options?.anchorOptions?.anchor) {
|
|
142
|
+
overlayContainer = this.createOverlayContainer(hostElement, options, zToken.zIndex);
|
|
143
|
+
this.positionOverlay(overlayContainer, options);
|
|
144
|
+
}
|
|
145
|
+
else if (options?.centered === false) {
|
|
146
|
+
// Non-centered positioned overlay (for toasts, notifications)
|
|
147
|
+
overlayContainer = this.createOverlayContainer(hostElement, options, zToken.zIndex);
|
|
148
|
+
}
|
|
149
|
+
else {
|
|
150
|
+
// No anchor - create centered overlay (for modals, popups)
|
|
151
|
+
overlayContainer = this.createCenteredOverlayContainer(hostElement, options, zToken.zIndex);
|
|
152
|
+
}
|
|
153
|
+
const updatePosition = () => {
|
|
154
|
+
if (overlayContainer && options?.anchorOptions?.anchor) {
|
|
155
|
+
this.positionOverlay(overlayContainer, options);
|
|
156
|
+
}
|
|
157
|
+
};
|
|
158
|
+
const dispose = () => {
|
|
159
|
+
if (isDisposed)
|
|
160
|
+
return;
|
|
161
|
+
isDisposed = true;
|
|
162
|
+
// Remove backdrop
|
|
163
|
+
if (backdropElement) {
|
|
164
|
+
backdropElement.remove();
|
|
165
|
+
}
|
|
166
|
+
if (overlayContainer) {
|
|
167
|
+
overlayContainer.remove();
|
|
168
|
+
}
|
|
169
|
+
if (instance instanceof ComponentRef) {
|
|
170
|
+
instance.destroy();
|
|
171
|
+
}
|
|
172
|
+
else {
|
|
173
|
+
instance.destroy();
|
|
174
|
+
}
|
|
175
|
+
// Release the z-index token
|
|
176
|
+
this.zIndexService.release(zToken);
|
|
177
|
+
zToken = null;
|
|
178
|
+
// Notify callback
|
|
179
|
+
options?.onDispose?.();
|
|
180
|
+
};
|
|
181
|
+
const bringToFront = () => {
|
|
182
|
+
if (!zToken || isDisposed)
|
|
183
|
+
return;
|
|
184
|
+
zToken = this.zIndexService.bringToFront(zToken);
|
|
185
|
+
if (backdropElement) {
|
|
186
|
+
backdropElement.style.zIndex = String(zToken.zIndex);
|
|
187
|
+
}
|
|
188
|
+
if (overlayContainer) {
|
|
189
|
+
overlayContainer.style.zIndex = String(zToken.zIndex);
|
|
190
|
+
}
|
|
191
|
+
};
|
|
192
|
+
// Set up backdrop click handler
|
|
193
|
+
if (backdropElement && options?.backdrop?.closeOnClick) {
|
|
194
|
+
backdropElement.addEventListener('click', () => {
|
|
195
|
+
dispose();
|
|
196
|
+
});
|
|
197
|
+
}
|
|
198
|
+
return {
|
|
199
|
+
instance,
|
|
200
|
+
updatePosition,
|
|
201
|
+
dispose,
|
|
202
|
+
overlayElement: overlayContainer,
|
|
203
|
+
zToken,
|
|
204
|
+
bringToFront,
|
|
205
|
+
};
|
|
206
|
+
}
|
|
207
|
+
/**
|
|
208
|
+
* Creates a backdrop element.
|
|
209
|
+
*/
|
|
210
|
+
createBackdrop(options, zIndex) {
|
|
211
|
+
const backdrop = this.document.createElement('div');
|
|
212
|
+
backdrop.classList.add('ax-overlay-backdrop');
|
|
213
|
+
if (options?.backdrop?.backdropClass) {
|
|
214
|
+
backdrop.classList.add(options.backdrop.backdropClass);
|
|
215
|
+
}
|
|
216
|
+
// Style the backdrop
|
|
217
|
+
backdrop.style.position = 'fixed';
|
|
218
|
+
backdrop.style.top = '0';
|
|
219
|
+
backdrop.style.left = '0';
|
|
220
|
+
backdrop.style.width = '100%';
|
|
221
|
+
backdrop.style.height = '100%';
|
|
222
|
+
backdrop.style.zIndex = String(zIndex);
|
|
223
|
+
if (options?.backdrop?.background) {
|
|
224
|
+
backdrop.style.backgroundColor = 'rgba(0, 0, 0, 0.5)';
|
|
225
|
+
}
|
|
226
|
+
this.document.body.appendChild(backdrop);
|
|
227
|
+
return backdrop;
|
|
228
|
+
}
|
|
229
|
+
/**
|
|
230
|
+
* Creates a centered overlay container (for modals/popups).
|
|
231
|
+
*/
|
|
232
|
+
createCenteredOverlayContainer(content, options, zIndex) {
|
|
233
|
+
const container = this.document.createElement('div');
|
|
234
|
+
container.classList.add('ax-overlay-container', 'ax-overlay-centered');
|
|
235
|
+
// Add custom panel classes
|
|
236
|
+
if (options?.panelClass) {
|
|
237
|
+
const classes = Array.isArray(options.panelClass) ? options.panelClass : [options.panelClass];
|
|
238
|
+
classes.forEach((cls) => {
|
|
239
|
+
if (cls) {
|
|
240
|
+
container.classList.add(cls);
|
|
241
|
+
}
|
|
242
|
+
});
|
|
243
|
+
}
|
|
244
|
+
// Set styles for centered positioning
|
|
245
|
+
container.style.position = 'fixed';
|
|
246
|
+
container.style.top = '0';
|
|
247
|
+
container.style.left = '0';
|
|
248
|
+
container.style.width = '100%';
|
|
249
|
+
container.style.height = '100%';
|
|
250
|
+
container.style.display = 'flex';
|
|
251
|
+
container.style.alignItems = 'center';
|
|
252
|
+
container.style.justifyContent = 'center';
|
|
253
|
+
container.style.zIndex = String(zIndex);
|
|
254
|
+
// Create inner wrapper for the content
|
|
255
|
+
const contentWrapper = this.document.createElement('div');
|
|
256
|
+
contentWrapper.classList.add('ax-overlay-content');
|
|
257
|
+
// Apply width if provided
|
|
258
|
+
if (options?.width) {
|
|
259
|
+
contentWrapper.style.width = options.width;
|
|
260
|
+
}
|
|
261
|
+
// Move content into wrapper
|
|
262
|
+
contentWrapper.appendChild(content);
|
|
263
|
+
container.appendChild(contentWrapper);
|
|
264
|
+
// Append to body
|
|
265
|
+
this.document.body.appendChild(container);
|
|
266
|
+
return container;
|
|
267
|
+
}
|
|
268
|
+
/**
|
|
269
|
+
* Gets the host element from a ComponentRef or EmbeddedViewRef.
|
|
270
|
+
*/
|
|
271
|
+
getHostElement(instance) {
|
|
272
|
+
if (instance instanceof ComponentRef) {
|
|
273
|
+
return instance.location.nativeElement;
|
|
274
|
+
}
|
|
275
|
+
else {
|
|
276
|
+
// EmbeddedViewRef - get the first root node
|
|
277
|
+
return instance.rootNodes[0];
|
|
278
|
+
}
|
|
279
|
+
}
|
|
280
|
+
/**
|
|
281
|
+
* Creates an overlay container element and appends the content to it.
|
|
282
|
+
*/
|
|
283
|
+
createOverlayContainer(content, options, zIndex) {
|
|
284
|
+
const container = this.document.createElement('div');
|
|
285
|
+
const pane = this.document.createElement('div');
|
|
286
|
+
container.classList.add('ax-overlay-container');
|
|
287
|
+
if (Array.isArray(options.panelClass)) {
|
|
288
|
+
const check = options.panelClass.some((element) => {
|
|
289
|
+
return element === 'ax-action-sheet-panel';
|
|
290
|
+
});
|
|
291
|
+
if (!check)
|
|
292
|
+
pane.classList.add('ax-overlay-pane');
|
|
293
|
+
}
|
|
294
|
+
if (options.actionSheetStyle && this._platform.is('SM'))
|
|
295
|
+
pane.classList.add('ax-overlay-actionsheet');
|
|
296
|
+
// Add custom panel classes
|
|
297
|
+
if (options?.panelClass) {
|
|
298
|
+
const classes = Array.isArray(options.panelClass) ? options.panelClass : [options.panelClass];
|
|
299
|
+
classes.forEach((cls) => {
|
|
300
|
+
if (cls) {
|
|
301
|
+
container.classList.add(cls);
|
|
302
|
+
}
|
|
303
|
+
});
|
|
304
|
+
}
|
|
305
|
+
// Set initial styles for positioning
|
|
306
|
+
container.style.position = 'fixed';
|
|
307
|
+
container.style.zIndex = String(zIndex);
|
|
308
|
+
container.style.maxWidth = '100vw';
|
|
309
|
+
container.style.maxHeight = '100vh';
|
|
310
|
+
if (options?.actionSheetStyle) {
|
|
311
|
+
container.style.width = this._platform.is('SM') ? '100%' : 'fit-content';
|
|
312
|
+
}
|
|
313
|
+
else {
|
|
314
|
+
container.style.width = options?.width || 'fit-content';
|
|
315
|
+
}
|
|
316
|
+
// Move content into container
|
|
317
|
+
pane.appendChild(content);
|
|
318
|
+
container.appendChild(pane);
|
|
319
|
+
// Append to body
|
|
320
|
+
this.document.body.appendChild(container);
|
|
321
|
+
return container;
|
|
322
|
+
}
|
|
323
|
+
/**
|
|
324
|
+
* Positions the overlay container relative to the anchor element.
|
|
325
|
+
*/
|
|
326
|
+
positionOverlay(container, options) {
|
|
327
|
+
if (options.actionSheetStyle && this._platform.is('SM')) {
|
|
328
|
+
container.style.bottom = `0px`;
|
|
329
|
+
container.style.left = `0px`;
|
|
330
|
+
return;
|
|
331
|
+
}
|
|
332
|
+
const anchorOptions = options.anchorOptions;
|
|
333
|
+
if (!anchorOptions?.anchor)
|
|
334
|
+
return;
|
|
335
|
+
const anchorElement = anchorOptions.anchor instanceof ElementRef ? anchorOptions.anchor.nativeElement : anchorOptions.anchor;
|
|
336
|
+
const anchorRect = anchorElement.getBoundingClientRect();
|
|
337
|
+
const containerRect = container.getBoundingClientRect();
|
|
338
|
+
const viewportWidth = window.innerWidth;
|
|
339
|
+
const viewportHeight = window.innerHeight;
|
|
340
|
+
// Get positions from placement
|
|
341
|
+
let positions = convertToPlacement(anchorOptions.placement ?? 'bottom');
|
|
342
|
+
if (positions.length === 0) {
|
|
343
|
+
positions = convertToPlacement('bottom');
|
|
344
|
+
}
|
|
345
|
+
// Apply custom offsets to positions with direction-aware inversion
|
|
346
|
+
// When position flips, the offset should also be inverted to maintain the intended gap
|
|
347
|
+
if (anchorOptions.offsetX || anchorOptions.offsetY) {
|
|
348
|
+
const primaryPosition = positions[0];
|
|
349
|
+
positions = positions.map((p) => {
|
|
350
|
+
let adjustedOffsetX = anchorOptions.offsetX ?? 0;
|
|
351
|
+
let adjustedOffsetY = anchorOptions.offsetY ?? 0;
|
|
352
|
+
// Invert offsetY when vertical direction flips
|
|
353
|
+
// (from bottom to top or vice versa)
|
|
354
|
+
if (primaryPosition.originY !== p.originY) {
|
|
355
|
+
adjustedOffsetY = -adjustedOffsetY;
|
|
356
|
+
}
|
|
357
|
+
// Invert offsetX when horizontal direction flips
|
|
358
|
+
// (from end to start or vice versa)
|
|
359
|
+
if (primaryPosition.originX !== p.originX) {
|
|
360
|
+
adjustedOffsetX = -adjustedOffsetX;
|
|
361
|
+
}
|
|
362
|
+
return {
|
|
363
|
+
...p,
|
|
364
|
+
offsetX: (p.offsetX ?? 0) + adjustedOffsetX,
|
|
365
|
+
offsetY: (p.offsetY ?? 0) + adjustedOffsetY,
|
|
366
|
+
};
|
|
367
|
+
});
|
|
368
|
+
}
|
|
369
|
+
// Find the best position that fits in viewport
|
|
370
|
+
const { coords } = anchorOptions.autoFlip
|
|
371
|
+
? findBestPosition(anchorRect, containerRect, positions, viewportWidth, viewportHeight)
|
|
372
|
+
: {
|
|
373
|
+
coords: {
|
|
374
|
+
top: positions[0].originY === 'bottom'
|
|
375
|
+
? anchorRect.bottom + (positions[0].offsetY ?? 0)
|
|
376
|
+
: anchorRect.top - containerRect.height + (positions[0].offsetY ?? 0),
|
|
377
|
+
left: anchorRect.left + (positions[0].offsetX ?? 0),
|
|
378
|
+
},
|
|
379
|
+
};
|
|
380
|
+
// Apply position
|
|
381
|
+
container.style.top = `${coords.top}px`;
|
|
382
|
+
container.style.left = `${coords.left}px`;
|
|
27
383
|
}
|
|
28
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
29
|
-
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "
|
|
384
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.3", ngImport: i0, type: AXOverlayService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
385
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.1.3", ngImport: i0, type: AXOverlayService, providedIn: 'root' }); }
|
|
30
386
|
}
|
|
31
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
387
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.3", ngImport: i0, type: AXOverlayService, decorators: [{
|
|
32
388
|
type: Injectable,
|
|
33
389
|
args: [{
|
|
34
390
|
providedIn: 'root',
|
|
@@ -39,5 +395,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.15", ngImpo
|
|
|
39
395
|
* Generated bundle index. Do not edit.
|
|
40
396
|
*/
|
|
41
397
|
|
|
42
|
-
export { AXOverlayService };
|
|
398
|
+
export { AXOverlayService, calculateAnchorPosition, clampToViewport, findBestPosition, fitsInViewport };
|
|
43
399
|
//# sourceMappingURL=acorex-cdk-overlay.mjs.map
|