@acorex/cdk 21.0.2-next.11 → 21.0.2-next.14

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.
@@ -1,6 +1,6 @@
1
1
  import * as i0 from '@angular/core';
2
- import { inject, ElementRef, signal, PLATFORM_ID, output, model, afterNextRender, effect, Directive, contentChildren, NgModule } from '@angular/core';
3
- import { AXHtmlUtil } from '@acorex/core/utils';
2
+ import { inject, ElementRef, signal, PLATFORM_ID, computed, output, model, afterNextRender, effect, Directive, contentChildren, NgModule } from '@angular/core';
3
+ import { AXLocaleService } from '@acorex/core/locale';
4
4
  import { AXZIndexService } from '@acorex/core/z-index';
5
5
  import { isPlatformBrowser } from '@angular/common';
6
6
 
@@ -11,8 +11,12 @@ class AXDrawerItemDirective {
11
11
  this.parent = inject(AXDrawerContainerDirective);
12
12
  this.platformID = inject(PLATFORM_ID);
13
13
  this.zIndexService = inject(AXZIndexService);
14
+ this.localeService = inject(AXLocaleService);
14
15
  this.zToken = null;
15
16
  this.collapseState = signal(false, ...(ngDevMode ? [{ debugName: "collapseState" }] : []));
17
+ // Reactive RTL flag derived from the active locale profile so the drawer
18
+ // re-positions itself whenever the user switches language at runtime.
19
+ this.isRtl = computed(() => !!this.localeService.activeProfile()?.i18nMeta?.rtl, ...(ngDevMode ? [{ debugName: "isRtl" }] : []));
16
20
  this.collapseStateChanged = output();
17
21
  this.location = model('start', ...(ngDevMode ? [{ debugName: "location" }] : []));
18
22
  this.collapsed = model(true, ...(ngDevMode ? [{ debugName: "collapsed" }] : []));
@@ -131,14 +135,10 @@ class AXDrawerItemDirective {
131
135
  this.htmlElem().style.display = 'block';
132
136
  if (this.mode() === 'overlay') {
133
137
  if (this.location() === 'start') {
134
- AXHtmlUtil.isRtl(this.htmlElem())
135
- ? (this.htmlElem().style.right = `0px`)
136
- : (this.htmlElem().style.left = `0px`);
138
+ this.isRtl() ? (this.htmlElem().style.right = `0px`) : (this.htmlElem().style.left = `0px`);
137
139
  }
138
140
  if (this.location() === 'end') {
139
- AXHtmlUtil.isRtl(this.htmlElem())
140
- ? (this.htmlElem().style.left = `0px`)
141
- : (this.htmlElem().style.right = `0px`);
141
+ this.isRtl() ? (this.htmlElem().style.left = `0px`) : (this.htmlElem().style.right = `0px`);
142
142
  }
143
143
  if (this.location() === 'top' || this.location() === 'bottom') {
144
144
  this.htmlElem().style.top = `0px`;
@@ -193,22 +193,22 @@ class AXDrawerItemDirective {
193
193
  }
194
194
  if (this.mode() === 'overlay') {
195
195
  if (this.location() === 'start') {
196
- AXHtmlUtil.isRtl(this.htmlElem())
196
+ this.isRtl()
197
197
  ? (this.htmlElem().style.right = `-${rect.width}px`)
198
198
  : (this.htmlElem().style.left = `-${rect.width}px`);
199
199
  }
200
200
  if (this.location() === 'end') {
201
- AXHtmlUtil.isRtl(this.htmlElem())
201
+ this.isRtl()
202
202
  ? (this.htmlElem().style.left = `-${rect.width}px`)
203
203
  : (this.htmlElem().style.right = `-${rect.width}px`);
204
204
  }
205
205
  if (this.location() === 'top') {
206
- AXHtmlUtil.isRtl(this.htmlElem())
206
+ this.isRtl()
207
207
  ? (this.htmlElem().style.bottom = `-${rect.height}px`)
208
208
  : (this.htmlElem().style.top = `-${rect.height}px`);
209
209
  }
210
210
  if (this.location() === 'bottom') {
211
- AXHtmlUtil.isRtl(this.htmlElem())
211
+ this.isRtl()
212
212
  ? (this.htmlElem().style.top = `${rect.height}px`)
213
213
  : (this.htmlElem().style.bottom = `${rect.height}px`);
214
214
  }
@@ -1 +1 @@
1
- {"version":3,"file":"acorex-cdk-drawer.mjs","sources":["../../../../packages/cdk/drawer/src/lib/drawer-item.directive.ts","../../../../packages/cdk/drawer/src/lib/drawer-container.directive.ts","../../../../packages/cdk/drawer/src/lib/drawer.module.ts","../../../../packages/cdk/drawer/src/acorex-cdk-drawer.ts"],"sourcesContent":["import { AXClickEvent } from '@acorex/cdk/common';\nimport { AXHtmlUtil } from '@acorex/core/utils';\nimport { AXZIndexService, AXZToken } from '@acorex/core/z-index';\nimport { isPlatformBrowser } from '@angular/common';\nimport {\n afterNextRender,\n Directive,\n effect,\n ElementRef,\n inject,\n model,\n OnDestroy,\n output,\n PLATFORM_ID,\n signal,\n} from '@angular/core';\nimport { AXDrawerContainerDirective } from './drawer-container.directive';\nexport type AXDrawerMode = 'push' | 'overlay';\nexport type AXDrawerLocation = 'start' | 'end' | 'top' | 'bottom';\n\n@Directive({\n selector: '[axDrawerItem]',\n exportAs: 'axDrawerItem',\n})\nexport class AXDrawerItemDirective implements OnDestroy {\n private el = inject(ElementRef);\n private htmlElem = signal<HTMLElement>(null);\n private parent = inject(AXDrawerContainerDirective);\n private platformID = inject(PLATFORM_ID);\n private zIndexService = inject(AXZIndexService);\n private zToken: AXZToken | null = null;\n private collapseState = signal(false);\n private resizeObserver: ResizeObserver;\n collapseStateChanged = output<boolean>();\n\n location = model<AXDrawerLocation>('start');\n collapsed = model(true);\n backDrop = model(true);\n mode = model<AXDrawerMode>('overlay');\n transition = model<number>(100);\n closeOnBackdropClick = model(false);\n backdropClass = model('ax-bg-black/45');\n onBackdropClick = output<AXClickEvent>();\n singleOpenMode = model(true);\n id = Math.random();\n\n #init = afterNextRender(() => {\n this.htmlElem.set(this.el.nativeElement as HTMLElement);\n\n if (this.collapsed()) {\n this.htmlElem().style.display = 'none';\n }\n\n this.htmlElem().style.height = '100%';\n\n window.addEventListener('resize', this.removeBackDropOnResize);\n\n this.resizeObserver = new ResizeObserver(() => {\n if (this.collapsed()) {\n this.hide();\n }\n });\n this.resizeObserver.observe(this.htmlElem());\n });\n\n #eff2 = effect(() => {\n if (this.collapsed()) {\n this.hide();\n } else {\n this.show();\n }\n });\n\n #eff3 = effect(() => {\n if (!this.htmlElem()) return;\n\n if (this.mode() === 'overlay') {\n this.htmlElem().style.position = 'absolute';\n this.htmlElem().style.marginInlineEnd = 'auto';\n this.htmlElem().style.marginInlineStart = 'auto';\n this.htmlElem().style.marginBlockStart = 'auto';\n this.htmlElem().style.marginBlockEnd = 'auto';\n }\n });\n\n #eff4 = effect(() => {\n if (!this.htmlElem()) return;\n\n if (this.mode() === 'push') {\n this.htmlElem().style.position = 'relative';\n this.htmlElem().style.top = 'auto';\n this.htmlElem().style.left = 'auto';\n this.htmlElem().style.right = 'auto';\n this.htmlElem().style.bottom = 'auto';\n\n switch (this.location()) {\n case 'end':\n this.htmlElem().style.order = '999';\n this.parent.el.nativeElement.style.justifyContent = 'space-between';\n break;\n case 'start':\n this.htmlElem().style.order = '-999';\n break;\n case 'bottom':\n this.htmlElem().style.order = '999';\n this.parent.el.nativeElement.style.flexDirection = 'column';\n break;\n case 'top':\n this.htmlElem().style.order = '-999';\n this.parent.el.nativeElement.style.flexDirection = 'column';\n break;\n }\n }\n });\n\n /**\n * Shows the drawer by animating it into view.\n *\n * @returns void - No return value. The drawer becomes visible.\n */\n public show() {\n if (!this.htmlElem()) return;\n\n // Idempotency guard: if the drawer is already shown, do not re-acquire a\n // new z-index. Without this guard, repeated show() calls (e.g. from effects\n // re-evaluating on window resize or input changes) would keep incrementing\n // the z-index via AXZIndexService, causing the drawer to jump above other\n // overlays like popup/modal that were opened later.\n if (this.collapseState() && this.zToken) {\n return;\n }\n\n if (this.singleOpenMode()) {\n this.parent.drawerItem().forEach((item) => {\n if (item.location() === this.location() && item.id !== this.id) item.hide();\n });\n }\n\n this.resizeObserver.unobserve(this.htmlElem());\n\n // Release any stale token before acquiring a new one so we never leak\n // tokens inside AXZIndexService.\n if (this.zToken) {\n this.zIndexService.release(this.zToken);\n this.zToken = null;\n }\n\n // Acquire z-index from service\n this.zToken = this.zIndexService.acquire();\n this.htmlElem().style.zIndex = String(this.zToken.zIndex);\n\n this.htmlElem().style.transition = `${this.transition()}ms all ease`;\n this.htmlElem().style.display = 'block';\n\n if (this.mode() === 'overlay') {\n if (this.location() === 'start') {\n AXHtmlUtil.isRtl(this.htmlElem())\n ? (this.htmlElem().style.right = `0px`)\n : (this.htmlElem().style.left = `0px`);\n }\n\n if (this.location() === 'end') {\n AXHtmlUtil.isRtl(this.htmlElem())\n ? (this.htmlElem().style.left = `0px`)\n : (this.htmlElem().style.right = `0px`);\n }\n\n if (this.location() === 'top' || this.location() === 'bottom') {\n this.htmlElem().style.top = `0px`;\n }\n }\n\n if (this.mode() === 'push') {\n if (this.location() === 'start') {\n this.htmlElem().style.marginInlineStart = '0px';\n }\n\n if (this.location() === 'end') {\n this.htmlElem().style.marginInlineEnd = '0px';\n }\n\n if (this.location() === 'bottom') {\n this.htmlElem().style.marginBlockStart = '0px';\n }\n\n if (this.location() === 'top') {\n this.htmlElem().style.marginBlockStart = '0px';\n }\n }\n\n if (this.backDrop() && this.mode() === 'overlay') {\n this.addBackdrop();\n }\n\n this.collapseState.set(true);\n this.collapseStateChanged.emit(true);\n }\n\n /**\n * Hides the drawer by animating it out of view.\n *\n * @returns void - No return value. The drawer becomes hidden.\n */\n public hide() {\n if (!this.htmlElem()) return;\n\n // Release z-index token\n this.zIndexService.release(this.zToken);\n this.zToken = null;\n this.htmlElem().style.zIndex = '';\n\n const rect = this.htmlElem().getBoundingClientRect();\n\n if (this.mode() === 'push') {\n if (this.location() === 'end') {\n this.htmlElem().style.marginInlineEnd = `-${rect.width}px`;\n }\n\n if (this.location() === 'start') {\n this.htmlElem().style.marginInlineStart = `-${rect.width}px`;\n }\n\n if (this.location() === 'bottom') {\n this.htmlElem().style.marginBlockStart = `${rect.height}px`;\n }\n\n if (this.location() === 'top') {\n this.htmlElem().style.marginBlockStart = `-${rect.height}px`;\n }\n }\n\n if (this.mode() === 'overlay') {\n if (this.location() === 'start') {\n AXHtmlUtil.isRtl(this.htmlElem())\n ? (this.htmlElem().style.right = `-${rect.width}px`)\n : (this.htmlElem().style.left = `-${rect.width}px`);\n }\n\n if (this.location() === 'end') {\n AXHtmlUtil.isRtl(this.htmlElem())\n ? (this.htmlElem().style.left = `-${rect.width}px`)\n : (this.htmlElem().style.right = `-${rect.width}px`);\n }\n\n if (this.location() === 'top') {\n AXHtmlUtil.isRtl(this.htmlElem())\n ? (this.htmlElem().style.bottom = `-${rect.height}px`)\n : (this.htmlElem().style.top = `-${rect.height}px`);\n }\n\n if (this.location() === 'bottom') {\n AXHtmlUtil.isRtl(this.htmlElem())\n ? (this.htmlElem().style.top = `${rect.height}px`)\n : (this.htmlElem().style.bottom = `${rect.height}px`);\n }\n }\n\n if (this.backDrop() && this.mode() === 'overlay') {\n this.removeBackdrop();\n }\n\n this.collapseState.set(false);\n this.collapseStateChanged.emit(false);\n }\n\n /**\n * Toggles the drawer state between visible and hidden.\n *\n * @returns void - No return value. The drawer state is toggled.\n */\n public toggle() {\n if (this.collapseState()) {\n this.hide();\n } else {\n this.show();\n }\n }\n\n private addBackdrop() {\n const backdropElem = document.createElement('div');\n backdropElem.classList.add('ax-cdk-drawer-backdrop');\n backdropElem.style.position = 'absolute';\n backdropElem.style.top = '0';\n backdropElem.style.width = '100vw';\n backdropElem.style.height = '100vh';\n // Set backdrop z-index just below the drawer's z-index\n backdropElem.style.zIndex = String((this.zToken?.zIndex ?? 1001) - 1);\n backdropElem.style.opacity = '0';\n backdropElem.style.transition = `opacity ${this.transition()}ms ease`;\n backdropElem.classList.add(...this.backdropClass().split(' '));\n\n this.parent.el.nativeElement.appendChild(backdropElem);\n\n // Trigger animation after element is added to DOM\n requestAnimationFrame(() => {\n backdropElem.style.opacity = '1';\n });\n backdropElem.addEventListener('pointerdown', (event: MouseEvent) => {\n event.stopPropagation();\n if (!this.htmlElem().contains(event.target as Node) && this.collapseState()) {\n this.onBackdropClick.emit({ nativeEvent: event, component: this });\n if (this.closeOnBackdropClick()) {\n this.hide();\n }\n }\n });\n }\n\n private removeBackdrop() {\n const backdropElem = this.parent.el.nativeElement.querySelector('.ax-cdk-drawer-backdrop');\n if (backdropElem) {\n backdropElem.style.opacity = '0';\n\n // Remove element after animation completes\n setTimeout(\n () => {\n if (backdropElem.parentNode) {\n backdropElem.remove();\n }\n },\n parseFloat(String(this.transition())),\n );\n }\n }\n\n private removeBackDropOnResize = () => {\n if (this.collapseState() && this.mode() === 'overlay') {\n this.removeBackdrop();\n }\n };\n\n ngOnDestroy(): void {\n // Release z-index token on destroy\n this.zIndexService.release(this.zToken);\n this.zToken = null;\n\n if (this.resizeObserver && this.htmlElem()) {\n this.resizeObserver.unobserve(this.htmlElem());\n }\n\n if (isPlatformBrowser(this.platformID)) {\n window.removeEventListener('resize', this.removeBackDropOnResize);\n }\n }\n}\n","import { afterNextRender, contentChildren, Directive, ElementRef, inject } from '@angular/core';\nimport { AXDrawerItemDirective } from './drawer-item.directive';\n\n@Directive({\n selector: '[axDrawerContainer]',\n exportAs: 'axDrawerContainer',\n})\nexport class AXDrawerContainerDirective {\n el = inject(ElementRef);\n drawerItem = contentChildren(AXDrawerItemDirective, { descendants: true });\n\n #init = afterNextRender(() => {\n const htmlElem = this.el.nativeElement as HTMLElement;\n htmlElem.style.position = 'relative';\n htmlElem.style.overflow = 'hidden';\n htmlElem.style.display = 'flex';\n htmlElem.style.touchAction = 'none';\n htmlElem.style.width = '100%';\n });\n}\n","import { NgModule } from '@angular/core';\nimport { AXDrawerContainerDirective } from './drawer-container.directive';\nimport { AXDrawerItemDirective } from './drawer-item.directive';\n\nconst COMPONENT = [AXDrawerContainerDirective, AXDrawerItemDirective];\n\nconst MODULES = [];\n\n@NgModule({\n imports: [...MODULES, ...COMPONENT],\n exports: [...COMPONENT],\n providers: [],\n})\nexport class AXDrawerDirectiveModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"acorex-cdk-drawer.mjs","sources":["../../../../packages/cdk/drawer/src/lib/drawer-item.directive.ts","../../../../packages/cdk/drawer/src/lib/drawer-container.directive.ts","../../../../packages/cdk/drawer/src/lib/drawer.module.ts","../../../../packages/cdk/drawer/src/acorex-cdk-drawer.ts"],"sourcesContent":["import { AXClickEvent } from '@acorex/cdk/common';\nimport { AXLocaleService } from '@acorex/core/locale';\nimport { AXZIndexService, AXZToken } from '@acorex/core/z-index';\nimport { isPlatformBrowser } from '@angular/common';\nimport {\n afterNextRender,\n computed,\n Directive,\n effect,\n ElementRef,\n inject,\n model,\n OnDestroy,\n output,\n PLATFORM_ID,\n signal,\n} from '@angular/core';\nimport { AXDrawerContainerDirective } from './drawer-container.directive';\nexport type AXDrawerMode = 'push' | 'overlay';\nexport type AXDrawerLocation = 'start' | 'end' | 'top' | 'bottom';\n\n@Directive({\n selector: '[axDrawerItem]',\n exportAs: 'axDrawerItem',\n})\nexport class AXDrawerItemDirective implements OnDestroy {\n private el = inject(ElementRef);\n private htmlElem = signal<HTMLElement>(null);\n private parent = inject(AXDrawerContainerDirective);\n private platformID = inject(PLATFORM_ID);\n private zIndexService = inject(AXZIndexService);\n private localeService = inject(AXLocaleService);\n private zToken: AXZToken | null = null;\n private collapseState = signal(false);\n private resizeObserver: ResizeObserver;\n // Reactive RTL flag derived from the active locale profile so the drawer\n // re-positions itself whenever the user switches language at runtime.\n private isRtl = computed(() => !!this.localeService.activeProfile()?.i18nMeta?.rtl);\n collapseStateChanged = output<boolean>();\n\n location = model<AXDrawerLocation>('start');\n collapsed = model(true);\n backDrop = model(true);\n mode = model<AXDrawerMode>('overlay');\n transition = model<number>(100);\n closeOnBackdropClick = model(false);\n backdropClass = model('ax-bg-black/45');\n onBackdropClick = output<AXClickEvent>();\n singleOpenMode = model(true);\n id = Math.random();\n\n #init = afterNextRender(() => {\n this.htmlElem.set(this.el.nativeElement as HTMLElement);\n\n if (this.collapsed()) {\n this.htmlElem().style.display = 'none';\n }\n\n this.htmlElem().style.height = '100%';\n\n window.addEventListener('resize', this.removeBackDropOnResize);\n\n this.resizeObserver = new ResizeObserver(() => {\n if (this.collapsed()) {\n this.hide();\n }\n });\n this.resizeObserver.observe(this.htmlElem());\n });\n\n #eff2 = effect(() => {\n if (this.collapsed()) {\n this.hide();\n } else {\n this.show();\n }\n });\n\n #eff3 = effect(() => {\n if (!this.htmlElem()) return;\n\n if (this.mode() === 'overlay') {\n this.htmlElem().style.position = 'absolute';\n this.htmlElem().style.marginInlineEnd = 'auto';\n this.htmlElem().style.marginInlineStart = 'auto';\n this.htmlElem().style.marginBlockStart = 'auto';\n this.htmlElem().style.marginBlockEnd = 'auto';\n }\n });\n\n #eff4 = effect(() => {\n if (!this.htmlElem()) return;\n\n if (this.mode() === 'push') {\n this.htmlElem().style.position = 'relative';\n this.htmlElem().style.top = 'auto';\n this.htmlElem().style.left = 'auto';\n this.htmlElem().style.right = 'auto';\n this.htmlElem().style.bottom = 'auto';\n\n switch (this.location()) {\n case 'end':\n this.htmlElem().style.order = '999';\n this.parent.el.nativeElement.style.justifyContent = 'space-between';\n break;\n case 'start':\n this.htmlElem().style.order = '-999';\n break;\n case 'bottom':\n this.htmlElem().style.order = '999';\n this.parent.el.nativeElement.style.flexDirection = 'column';\n break;\n case 'top':\n this.htmlElem().style.order = '-999';\n this.parent.el.nativeElement.style.flexDirection = 'column';\n break;\n }\n }\n });\n\n /**\n * Shows the drawer by animating it into view.\n *\n * @returns void - No return value. The drawer becomes visible.\n */\n public show() {\n if (!this.htmlElem()) return;\n\n // Idempotency guard: if the drawer is already shown, do not re-acquire a\n // new z-index. Without this guard, repeated show() calls (e.g. from effects\n // re-evaluating on window resize or input changes) would keep incrementing\n // the z-index via AXZIndexService, causing the drawer to jump above other\n // overlays like popup/modal that were opened later.\n if (this.collapseState() && this.zToken) {\n return;\n }\n\n if (this.singleOpenMode()) {\n this.parent.drawerItem().forEach((item) => {\n if (item.location() === this.location() && item.id !== this.id) item.hide();\n });\n }\n\n this.resizeObserver.unobserve(this.htmlElem());\n\n // Release any stale token before acquiring a new one so we never leak\n // tokens inside AXZIndexService.\n if (this.zToken) {\n this.zIndexService.release(this.zToken);\n this.zToken = null;\n }\n\n // Acquire z-index from service\n this.zToken = this.zIndexService.acquire();\n this.htmlElem().style.zIndex = String(this.zToken.zIndex);\n\n this.htmlElem().style.transition = `${this.transition()}ms all ease`;\n this.htmlElem().style.display = 'block';\n\n if (this.mode() === 'overlay') {\n if (this.location() === 'start') {\n this.isRtl() ? (this.htmlElem().style.right = `0px`) : (this.htmlElem().style.left = `0px`);\n }\n\n if (this.location() === 'end') {\n this.isRtl() ? (this.htmlElem().style.left = `0px`) : (this.htmlElem().style.right = `0px`);\n }\n\n if (this.location() === 'top' || this.location() === 'bottom') {\n this.htmlElem().style.top = `0px`;\n }\n }\n\n if (this.mode() === 'push') {\n if (this.location() === 'start') {\n this.htmlElem().style.marginInlineStart = '0px';\n }\n\n if (this.location() === 'end') {\n this.htmlElem().style.marginInlineEnd = '0px';\n }\n\n if (this.location() === 'bottom') {\n this.htmlElem().style.marginBlockStart = '0px';\n }\n\n if (this.location() === 'top') {\n this.htmlElem().style.marginBlockStart = '0px';\n }\n }\n\n if (this.backDrop() && this.mode() === 'overlay') {\n this.addBackdrop();\n }\n\n this.collapseState.set(true);\n this.collapseStateChanged.emit(true);\n }\n\n /**\n * Hides the drawer by animating it out of view.\n *\n * @returns void - No return value. The drawer becomes hidden.\n */\n public hide() {\n if (!this.htmlElem()) return;\n\n // Release z-index token\n this.zIndexService.release(this.zToken);\n this.zToken = null;\n this.htmlElem().style.zIndex = '';\n\n const rect = this.htmlElem().getBoundingClientRect();\n\n if (this.mode() === 'push') {\n if (this.location() === 'end') {\n this.htmlElem().style.marginInlineEnd = `-${rect.width}px`;\n }\n\n if (this.location() === 'start') {\n this.htmlElem().style.marginInlineStart = `-${rect.width}px`;\n }\n\n if (this.location() === 'bottom') {\n this.htmlElem().style.marginBlockStart = `${rect.height}px`;\n }\n\n if (this.location() === 'top') {\n this.htmlElem().style.marginBlockStart = `-${rect.height}px`;\n }\n }\n\n if (this.mode() === 'overlay') {\n if (this.location() === 'start') {\n this.isRtl()\n ? (this.htmlElem().style.right = `-${rect.width}px`)\n : (this.htmlElem().style.left = `-${rect.width}px`);\n }\n\n if (this.location() === 'end') {\n this.isRtl()\n ? (this.htmlElem().style.left = `-${rect.width}px`)\n : (this.htmlElem().style.right = `-${rect.width}px`);\n }\n\n if (this.location() === 'top') {\n this.isRtl()\n ? (this.htmlElem().style.bottom = `-${rect.height}px`)\n : (this.htmlElem().style.top = `-${rect.height}px`);\n }\n\n if (this.location() === 'bottom') {\n this.isRtl()\n ? (this.htmlElem().style.top = `${rect.height}px`)\n : (this.htmlElem().style.bottom = `${rect.height}px`);\n }\n }\n\n if (this.backDrop() && this.mode() === 'overlay') {\n this.removeBackdrop();\n }\n\n this.collapseState.set(false);\n this.collapseStateChanged.emit(false);\n }\n\n /**\n * Toggles the drawer state between visible and hidden.\n *\n * @returns void - No return value. The drawer state is toggled.\n */\n public toggle() {\n if (this.collapseState()) {\n this.hide();\n } else {\n this.show();\n }\n }\n\n private addBackdrop() {\n const backdropElem = document.createElement('div');\n backdropElem.classList.add('ax-cdk-drawer-backdrop');\n backdropElem.style.position = 'absolute';\n backdropElem.style.top = '0';\n backdropElem.style.width = '100vw';\n backdropElem.style.height = '100vh';\n // Set backdrop z-index just below the drawer's z-index\n backdropElem.style.zIndex = String((this.zToken?.zIndex ?? 1001) - 1);\n backdropElem.style.opacity = '0';\n backdropElem.style.transition = `opacity ${this.transition()}ms ease`;\n backdropElem.classList.add(...this.backdropClass().split(' '));\n\n this.parent.el.nativeElement.appendChild(backdropElem);\n\n // Trigger animation after element is added to DOM\n requestAnimationFrame(() => {\n backdropElem.style.opacity = '1';\n });\n backdropElem.addEventListener('pointerdown', (event: MouseEvent) => {\n event.stopPropagation();\n if (!this.htmlElem().contains(event.target as Node) && this.collapseState()) {\n this.onBackdropClick.emit({ nativeEvent: event, component: this });\n if (this.closeOnBackdropClick()) {\n this.hide();\n }\n }\n });\n }\n\n private removeBackdrop() {\n const backdropElem = this.parent.el.nativeElement.querySelector('.ax-cdk-drawer-backdrop');\n if (backdropElem) {\n backdropElem.style.opacity = '0';\n\n // Remove element after animation completes\n setTimeout(\n () => {\n if (backdropElem.parentNode) {\n backdropElem.remove();\n }\n },\n parseFloat(String(this.transition())),\n );\n }\n }\n\n private removeBackDropOnResize = () => {\n if (this.collapseState() && this.mode() === 'overlay') {\n this.removeBackdrop();\n }\n };\n\n ngOnDestroy(): void {\n // Release z-index token on destroy\n this.zIndexService.release(this.zToken);\n this.zToken = null;\n\n if (this.resizeObserver && this.htmlElem()) {\n this.resizeObserver.unobserve(this.htmlElem());\n }\n\n if (isPlatformBrowser(this.platformID)) {\n window.removeEventListener('resize', this.removeBackDropOnResize);\n }\n }\n}\n","import { afterNextRender, contentChildren, Directive, ElementRef, inject } from '@angular/core';\nimport { AXDrawerItemDirective } from './drawer-item.directive';\n\n@Directive({\n selector: '[axDrawerContainer]',\n exportAs: 'axDrawerContainer',\n})\nexport class AXDrawerContainerDirective {\n el = inject(ElementRef);\n drawerItem = contentChildren(AXDrawerItemDirective, { descendants: true });\n\n #init = afterNextRender(() => {\n const htmlElem = this.el.nativeElement as HTMLElement;\n htmlElem.style.position = 'relative';\n htmlElem.style.overflow = 'hidden';\n htmlElem.style.display = 'flex';\n htmlElem.style.touchAction = 'none';\n htmlElem.style.width = '100%';\n });\n}\n","import { NgModule } from '@angular/core';\nimport { AXDrawerContainerDirective } from './drawer-container.directive';\nimport { AXDrawerItemDirective } from './drawer-item.directive';\n\nconst COMPONENT = [AXDrawerContainerDirective, AXDrawerItemDirective];\n\nconst MODULES = [];\n\n@NgModule({\n imports: [...MODULES, ...COMPONENT],\n exports: [...COMPONENT],\n providers: [],\n})\nexport class AXDrawerDirectiveModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
@@ -1,5 +1,6 @@
1
+ import { isPlatformBrowser } from '@angular/common';
1
2
  import * as i0 from '@angular/core';
2
- import { inject, ElementRef, input, output, effect, Directive } from '@angular/core';
3
+ import { inject, ElementRef, PLATFORM_ID, input, output, effect, Directive } from '@angular/core';
3
4
 
4
5
  /**
5
6
  * Directive that provides input masking functionality for various data types including
@@ -9,6 +10,7 @@ import { inject, ElementRef, input, output, effect, Directive } from '@angular/c
9
10
  class AXInputMaskDirective {
10
11
  constructor() {
11
12
  this.elm = inject(ElementRef);
13
+ this.platformId = inject(PLATFORM_ID);
12
14
  /**
13
15
  * The mode of input masking to apply.
14
16
  * @default 'digits'
@@ -64,6 +66,8 @@ class AXInputMaskDirective {
64
66
  */
65
67
  this.customTokens = input({}, ...(ngDevMode ? [{ debugName: "customTokens" }] : []));
66
68
  this.#eff = effect(() => {
69
+ if (!isPlatformBrowser(this.platformId))
70
+ return;
67
71
  if (this.maskMode() === null)
68
72
  return;
69
73
  if (this.maskMode() === 'mask' && !this.maskPattern())
@@ -73,6 +77,8 @@ class AXInputMaskDirective {
73
77
  }
74
78
  #eff;
75
79
  async initializeMask() {
80
+ if (!isPlatformBrowser(this.platformId))
81
+ return;
76
82
  if (this.maskaJs)
77
83
  this.maskaJs.destroy();
78
84
  let mask;
@@ -1 +1 @@
1
- {"version":3,"file":"acorex-cdk-input-mask.mjs","sources":["../../../../packages/cdk/input-mask/src/lib/input-mask.directive.ts","../../../../packages/cdk/input-mask/src/acorex-cdk-input-mask.ts"],"sourcesContent":["import { Directive, effect, ElementRef, inject, input, output } from '@angular/core';\nimport type { MaskInput } from 'maska';\n\n/**\n * Event payload for input mask value changes.\n */\nexport type AXInputMaskEvent = {\n masked: string;\n unmasked: string;\n completed: boolean;\n};\n\n/**\n * Available input mask modes for different data types.\n */\nexport type AXInputMaskModes = 'hijriDate' | 'digits' | 'thousandsSeparator' | 'decimal' | 'mask';\n\n/**\n * Token definitions for custom mask patterns.\n * - `#`: Digit (0-9)\n * - `^`: Letter (a-z, A-Z)\n * - `@`: Alphanumeric (0-9, a-z, A-Z)\n */\nexport type AXMaskTokens = {\n [key: string]: {\n pattern: RegExp;\n optional?: boolean;\n transform?: (char: string) => string;\n repeated?: boolean;\n multiple?: boolean;\n };\n};\n\n/**\n * Directive that provides input masking functionality for various data types including\n * Hijri dates, digits, decimal numbers, and thousands-separated numbers.\n * Built on top of the Maska.js library for robust input validation and formatting.\n */\n@Directive({\n selector: '[axInputMask]',\n exportAs: 'axInputMask',\n})\nexport class AXInputMaskDirective {\n private elm = inject(ElementRef);\n private maskaJs: MaskInput;\n\n /**\n * The mode of input masking to apply.\n * @default 'digits'\n */\n maskMode = input<AXInputMaskModes>('digits');\n\n /**\n * The separator character used in the mask (e.g., '/' for dates, ',' for thousands).\n * @default '/'\n */\n separator = input<string>('/');\n\n /**\n * Whether to apply the mask eagerly (as user types) or on blur.\n * @default false\n */\n eager = input(false);\n\n /**\n * Event emitted when the masked value changes.\n */\n onMaskChanged = output<AXInputMaskEvent>();\n\n /**\n * Minimum allowed value for numeric inputs.\n * @default null\n */\n minValue = input<number>(null);\n\n /**\n * Maximum allowed value for numeric inputs.\n * @default null\n */\n maxValue = input<number>(null);\n\n /**\n * Number of decimal places allowed for decimal inputs.\n * @default 0\n */\n decimal = input(0);\n\n /**\n * Custom mask pattern for 'mask' mode.\n * Use the following tokens:\n * - `#`: Required digit (0-9)\n * - `^`: Required letter (a-z, A-Z)\n * - `@`: Required alphanumeric (0-9, a-z, A-Z)\n *\n * Use ! before token to escape symbol. For example !# will render # instead of a digit.\n * Any other character is treated as a literal separator.\n * @example '(###) ###-####' for phone numbers\n * @example 'AA-####' for license plates\n * @example '##/##/####' for dates\n */\n maskPattern = input<string>(null);\n\n /**\n * Custom token definitions to extend or override default mask tokens.\n * Each token maps to a pattern regex and optional transformation.\n * @example { 'P': { pattern: /[1-9]/, transform: (c) => c.toUpperCase() } }\n */\n customTokens = input<AXMaskTokens>({});\n\n #eff = effect(() => {\n if (this.maskMode() === null) return;\n if (this.maskMode() === 'mask' && !this.maskPattern()) return;\n this.initializeMask();\n });\n\n private async initializeMask() {\n if (this.maskaJs) this.maskaJs.destroy();\n\n let mask: string[];\n let tokens: Record<\n string,\n { pattern: RegExp; optional?: boolean; repeated?: boolean; transform?: (char: string) => string }\n >;\n\n // Default tokens for built-in modes\n const defaultTokens: AXMaskTokens = {\n D: { pattern: /-/, optional: true },\n F: { pattern: /[0-9\\u06F0-\\u06F9\\u0660-\\u0669]/, repeated: true },\n X: { pattern: /[0-9\\u06F0-\\u06F9\\u0660-\\u0669.]/, repeated: true },\n U: { pattern: /[-0-9\\u06F0-\\u06F9\\u0660-\\u0669.]/, repeated: true },\n };\n\n // Tokens for custom mask mode\n const maskModeTokens: AXMaskTokens = {\n '#': { pattern: /[0-9]/ },\n '^': { pattern: /[a-zA-Z]/ },\n '@': { pattern: /[a-zA-Z0-9]/ },\n ...this.customTokens(),\n };\n\n switch (this.maskMode()) {\n case 'hijriDate':\n mask = [`1###${this.separator()}##${this.separator()}##`];\n tokens = defaultTokens;\n break;\n case 'digits':\n mask = ['DF'];\n tokens = defaultTokens;\n break;\n case 'decimal':\n mask = [`DX`];\n tokens = defaultTokens;\n break;\n case 'thousandsSeparator':\n mask = [`U`];\n tokens = defaultTokens;\n break;\n case 'mask':\n mask = [this.maskPattern()];\n tokens = maskModeTokens;\n break;\n }\n\n const { MaskInput } = await import('maska');\n\n this.maskaJs = new MaskInput(this.elm.nativeElement, {\n mask,\n reversed: this.maskMode() === 'thousandsSeparator' ? true : false,\n tokens,\n postProcess: (value) => {\n switch (this.maskMode()) {\n case 'hijriDate':\n return this.hijriMaskHandler(value);\n case 'digits':\n return this.rangeValueLimit(value);\n case 'decimal':\n return this.decimalMaskHandler(value);\n case 'thousandsSeparator':\n return this.thousandsSeparatorHandler(value);\n case 'mask':\n return value;\n default:\n return value;\n }\n },\n preProcess: (value) => {\n const normalized = this.convertToEnglishDigits(value);\n switch (this.maskMode()) {\n case 'hijriDate':\n return this.hijriMaskHandler(value);\n case 'digits':\n return this.rangeValueLimit(normalized);\n case 'decimal':\n return this.decimalMaskHandler(normalized);\n case 'thousandsSeparator':\n return this.thousandsSeparatorHandler(normalized);\n case 'mask':\n return value;\n default:\n return value;\n }\n },\n onMaska: (details) => {\n this.onMaskChanged.emit(details);\n },\n eager: this.eager(),\n });\n }\n\n private thousandsSeparatorHandler(value: string) {\n let thousandsSeparator = this.separator();\n\n switch (this.separator()) {\n case '-':\n thousandsSeparator = '_';\n break;\n case '.':\n thousandsSeparator = ',';\n break;\n }\n\n let clearValue: string;\n\n const firstChar = value.charAt(0);\n const restOfString = value.slice(1);\n\n if (firstChar === '-') {\n clearValue = '-' + restOfString.replace(/-/g, '');\n } else {\n clearValue = value.replace(/-/g, '');\n }\n\n // Ensure only one decimal point\n const decimalParts = clearValue.split('.');\n if (decimalParts.length > 2) {\n clearValue = decimalParts[0] + '.' + decimalParts.slice(1).join('');\n }\n\n // Apply range limits to the cleaned value\n clearValue = this.rangeValueLimit(clearValue);\n\n const addSeparator = clearValue.replace(/\\B(?=(\\d{3})+(?!\\d))/g, thousandsSeparator);\n\n return addSeparator;\n }\n\n private hijriMaskHandler(value: string) {\n const [yearStr, monthStr, dayStr] = value.split(this.separator());\n\n const year = +yearStr;\n const month = +monthStr;\n const day = +dayStr;\n\n //Month Logics\n if (!month || !year) return value;\n if (month > 12) {\n return `${yearStr}${this.separator()}12`;\n }\n if (month < 1) {\n return `${yearStr}${this.separator()}01`;\n }\n\n //Day Logics\n if (!day) return value;\n\n if (day < 1) {\n return `${yearStr}-${monthStr}${this.separator()}01`;\n }\n\n let maxDay = 30;\n if (month <= 6) {\n maxDay = 31;\n } else if (month === 12) {\n // Hijri leap year rule: (11 * year + 14) % 30 < 11\n const isKabise = (11 * year + 14) % 30 < 11;\n maxDay = isKabise ? 30 : 29;\n }\n\n if (day > maxDay) {\n return `${yearStr}${this.separator()}${monthStr}${this.separator()}${maxDay}`;\n }\n\n return value;\n }\n\n private rangeValueLimit(value: string) {\n let convertedValue: number;\n\n if (this.separator()) {\n convertedValue = +value.split(this.separator()).join('');\n } else {\n convertedValue = +value;\n }\n\n if (this.minValue() && convertedValue < this.minValue()) {\n return this.minValue().toString();\n }\n\n if (this.maxValue() && convertedValue > this.maxValue()) {\n return this.maxValue().toString();\n }\n\n return value;\n }\n\n private convertToEnglishDigits(value: string): string {\n return value\n .replace(/[۰-۹]/g, (c) => String(c.charCodeAt(0) - 0x06f0))\n .replace(/[٠-٩]/g, (c) => String(c.charCodeAt(0) - 0x0660));\n }\n\n private decimalMaskHandler(value: string) {\n // Remove any non-digit and non-decimal characters except the first decimal point\n let cleanValue = value;\n let finalValue: string;\n\n // Ensure only one decimal point\n const decimalParts = cleanValue.split('.');\n if (decimalParts.length > 2) {\n cleanValue = decimalParts[0] + '.' + decimalParts.slice(1).join('');\n }\n\n // Split into integer and decimal parts\n const parts = cleanValue.split('.');\n const integerPart = parts[0] || '';\n const decimalPart = parts[1] || '';\n\n // Limit decimal part to the specified number of digits\n const limitedDecimalPart = decimalPart.slice(0, this.decimal());\n\n // Reconstruct the value\n if (limitedDecimalPart.length > 0) {\n finalValue = integerPart + '.' + limitedDecimalPart;\n } else if (cleanValue.includes('.')) {\n // If there's a decimal point but no decimal part, keep the decimal point\n finalValue = integerPart + '.';\n } else {\n finalValue = integerPart;\n }\n\n return this.rangeValueLimit(finalValue);\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"acorex-cdk-input-mask.mjs","sources":["../../../../packages/cdk/input-mask/src/lib/input-mask.directive.ts","../../../../packages/cdk/input-mask/src/acorex-cdk-input-mask.ts"],"sourcesContent":["import { isPlatformBrowser } from '@angular/common';\nimport { Directive, effect, ElementRef, inject, input, output, PLATFORM_ID } from '@angular/core';\nimport type { MaskInput } from 'maska';\n\n/**\n * Event payload for input mask value changes.\n */\nexport type AXInputMaskEvent = {\n masked: string;\n unmasked: string;\n completed: boolean;\n};\n\n/**\n * Available input mask modes for different data types.\n */\nexport type AXInputMaskModes = 'hijriDate' | 'digits' | 'thousandsSeparator' | 'decimal' | 'mask';\n\n/**\n * Token definitions for custom mask patterns.\n * - `#`: Digit (0-9)\n * - `^`: Letter (a-z, A-Z)\n * - `@`: Alphanumeric (0-9, a-z, A-Z)\n */\nexport type AXMaskTokens = {\n [key: string]: {\n pattern: RegExp;\n optional?: boolean;\n transform?: (char: string) => string;\n repeated?: boolean;\n multiple?: boolean;\n };\n};\n\n/**\n * Directive that provides input masking functionality for various data types including\n * Hijri dates, digits, decimal numbers, and thousands-separated numbers.\n * Built on top of the Maska.js library for robust input validation and formatting.\n */\n@Directive({\n selector: '[axInputMask]',\n exportAs: 'axInputMask',\n})\nexport class AXInputMaskDirective {\n private elm = inject(ElementRef);\n private platformId = inject(PLATFORM_ID);\n private maskaJs: MaskInput;\n\n /**\n * The mode of input masking to apply.\n * @default 'digits'\n */\n maskMode = input<AXInputMaskModes>('digits');\n\n /**\n * The separator character used in the mask (e.g., '/' for dates, ',' for thousands).\n * @default '/'\n */\n separator = input<string>('/');\n\n /**\n * Whether to apply the mask eagerly (as user types) or on blur.\n * @default false\n */\n eager = input(false);\n\n /**\n * Event emitted when the masked value changes.\n */\n onMaskChanged = output<AXInputMaskEvent>();\n\n /**\n * Minimum allowed value for numeric inputs.\n * @default null\n */\n minValue = input<number>(null);\n\n /**\n * Maximum allowed value for numeric inputs.\n * @default null\n */\n maxValue = input<number>(null);\n\n /**\n * Number of decimal places allowed for decimal inputs.\n * @default 0\n */\n decimal = input(0);\n\n /**\n * Custom mask pattern for 'mask' mode.\n * Use the following tokens:\n * - `#`: Required digit (0-9)\n * - `^`: Required letter (a-z, A-Z)\n * - `@`: Required alphanumeric (0-9, a-z, A-Z)\n *\n * Use ! before token to escape symbol. For example !# will render # instead of a digit.\n * Any other character is treated as a literal separator.\n * @example '(###) ###-####' for phone numbers\n * @example 'AA-####' for license plates\n * @example '##/##/####' for dates\n */\n maskPattern = input<string>(null);\n\n /**\n * Custom token definitions to extend or override default mask tokens.\n * Each token maps to a pattern regex and optional transformation.\n * @example { 'P': { pattern: /[1-9]/, transform: (c) => c.toUpperCase() } }\n */\n customTokens = input<AXMaskTokens>({});\n\n #eff = effect(() => {\n if (!isPlatformBrowser(this.platformId)) return;\n if (this.maskMode() === null) return;\n if (this.maskMode() === 'mask' && !this.maskPattern()) return;\n this.initializeMask();\n });\n\n private async initializeMask() {\n if (!isPlatformBrowser(this.platformId)) return;\n\n if (this.maskaJs) this.maskaJs.destroy();\n\n let mask: string[];\n let tokens: Record<\n string,\n { pattern: RegExp; optional?: boolean; repeated?: boolean; transform?: (char: string) => string }\n >;\n\n // Default tokens for built-in modes\n const defaultTokens: AXMaskTokens = {\n D: { pattern: /-/, optional: true },\n F: { pattern: /[0-9\\u06F0-\\u06F9\\u0660-\\u0669]/, repeated: true },\n X: { pattern: /[0-9\\u06F0-\\u06F9\\u0660-\\u0669.]/, repeated: true },\n U: { pattern: /[-0-9\\u06F0-\\u06F9\\u0660-\\u0669.]/, repeated: true },\n };\n\n // Tokens for custom mask mode\n const maskModeTokens: AXMaskTokens = {\n '#': { pattern: /[0-9]/ },\n '^': { pattern: /[a-zA-Z]/ },\n '@': { pattern: /[a-zA-Z0-9]/ },\n ...this.customTokens(),\n };\n\n switch (this.maskMode()) {\n case 'hijriDate':\n mask = [`1###${this.separator()}##${this.separator()}##`];\n tokens = defaultTokens;\n break;\n case 'digits':\n mask = ['DF'];\n tokens = defaultTokens;\n break;\n case 'decimal':\n mask = [`DX`];\n tokens = defaultTokens;\n break;\n case 'thousandsSeparator':\n mask = [`U`];\n tokens = defaultTokens;\n break;\n case 'mask':\n mask = [this.maskPattern()];\n tokens = maskModeTokens;\n break;\n }\n\n const { MaskInput } = await import('maska');\n\n this.maskaJs = new MaskInput(this.elm.nativeElement, {\n mask,\n reversed: this.maskMode() === 'thousandsSeparator' ? true : false,\n tokens,\n postProcess: (value) => {\n switch (this.maskMode()) {\n case 'hijriDate':\n return this.hijriMaskHandler(value);\n case 'digits':\n return this.rangeValueLimit(value);\n case 'decimal':\n return this.decimalMaskHandler(value);\n case 'thousandsSeparator':\n return this.thousandsSeparatorHandler(value);\n case 'mask':\n return value;\n default:\n return value;\n }\n },\n preProcess: (value) => {\n const normalized = this.convertToEnglishDigits(value);\n switch (this.maskMode()) {\n case 'hijriDate':\n return this.hijriMaskHandler(value);\n case 'digits':\n return this.rangeValueLimit(normalized);\n case 'decimal':\n return this.decimalMaskHandler(normalized);\n case 'thousandsSeparator':\n return this.thousandsSeparatorHandler(normalized);\n case 'mask':\n return value;\n default:\n return value;\n }\n },\n onMaska: (details) => {\n this.onMaskChanged.emit(details);\n },\n eager: this.eager(),\n });\n }\n\n private thousandsSeparatorHandler(value: string) {\n let thousandsSeparator = this.separator();\n\n switch (this.separator()) {\n case '-':\n thousandsSeparator = '_';\n break;\n case '.':\n thousandsSeparator = ',';\n break;\n }\n\n let clearValue: string;\n\n const firstChar = value.charAt(0);\n const restOfString = value.slice(1);\n\n if (firstChar === '-') {\n clearValue = '-' + restOfString.replace(/-/g, '');\n } else {\n clearValue = value.replace(/-/g, '');\n }\n\n // Ensure only one decimal point\n const decimalParts = clearValue.split('.');\n if (decimalParts.length > 2) {\n clearValue = decimalParts[0] + '.' + decimalParts.slice(1).join('');\n }\n\n // Apply range limits to the cleaned value\n clearValue = this.rangeValueLimit(clearValue);\n\n const addSeparator = clearValue.replace(/\\B(?=(\\d{3})+(?!\\d))/g, thousandsSeparator);\n\n return addSeparator;\n }\n\n private hijriMaskHandler(value: string) {\n const [yearStr, monthStr, dayStr] = value.split(this.separator());\n\n const year = +yearStr;\n const month = +monthStr;\n const day = +dayStr;\n\n //Month Logics\n if (!month || !year) return value;\n if (month > 12) {\n return `${yearStr}${this.separator()}12`;\n }\n if (month < 1) {\n return `${yearStr}${this.separator()}01`;\n }\n\n //Day Logics\n if (!day) return value;\n\n if (day < 1) {\n return `${yearStr}-${monthStr}${this.separator()}01`;\n }\n\n let maxDay = 30;\n if (month <= 6) {\n maxDay = 31;\n } else if (month === 12) {\n // Hijri leap year rule: (11 * year + 14) % 30 < 11\n const isKabise = (11 * year + 14) % 30 < 11;\n maxDay = isKabise ? 30 : 29;\n }\n\n if (day > maxDay) {\n return `${yearStr}${this.separator()}${monthStr}${this.separator()}${maxDay}`;\n }\n\n return value;\n }\n\n private rangeValueLimit(value: string) {\n let convertedValue: number;\n\n if (this.separator()) {\n convertedValue = +value.split(this.separator()).join('');\n } else {\n convertedValue = +value;\n }\n\n if (this.minValue() && convertedValue < this.minValue()) {\n return this.minValue().toString();\n }\n\n if (this.maxValue() && convertedValue > this.maxValue()) {\n return this.maxValue().toString();\n }\n\n return value;\n }\n\n private convertToEnglishDigits(value: string): string {\n return value\n .replace(/[۰-۹]/g, (c) => String(c.charCodeAt(0) - 0x06f0))\n .replace(/[٠-٩]/g, (c) => String(c.charCodeAt(0) - 0x0660));\n }\n\n private decimalMaskHandler(value: string) {\n // Remove any non-digit and non-decimal characters except the first decimal point\n let cleanValue = value;\n let finalValue: string;\n\n // Ensure only one decimal point\n const decimalParts = cleanValue.split('.');\n if (decimalParts.length > 2) {\n cleanValue = decimalParts[0] + '.' + decimalParts.slice(1).join('');\n }\n\n // Split into integer and decimal parts\n const parts = cleanValue.split('.');\n const integerPart = parts[0] || '';\n const decimalPart = parts[1] || '';\n\n // Limit decimal part to the specified number of digits\n const limitedDecimalPart = decimalPart.slice(0, this.decimal());\n\n // Reconstruct the value\n if (limitedDecimalPart.length > 0) {\n finalValue = integerPart + '.' + limitedDecimalPart;\n } else if (cleanValue.includes('.')) {\n // If there's a decimal point but no decimal part, keep the decimal point\n finalValue = integerPart + '.';\n } else {\n finalValue = integerPart;\n }\n\n return this.rangeValueLimit(finalValue);\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
@@ -1,6 +1,6 @@
1
1
  import { AXClipBoardService } from '@acorex/cdk/clipboard';
2
2
  import { AXUnsubscriber } from '@acorex/core/utils';
3
- import { isPlatformBrowser } from '@angular/common';
3
+ import { DOCUMENT, isPlatformBrowser } from '@angular/common';
4
4
  import * as i0 from '@angular/core';
5
5
  import { inject, NgZone, PLATFORM_ID, ElementRef, input, signal, computed, afterNextRender, Directive } from '@angular/core';
6
6
  import { Subject, BehaviorSubject, fromEvent, map, debounceTime } from 'rxjs';
@@ -9,6 +9,7 @@ class AXOutlineContainerDirective {
9
9
  constructor() {
10
10
  this.zone = inject(NgZone);
11
11
  this.platformId = inject(PLATFORM_ID);
12
+ this.document = inject(DOCUMENT);
12
13
  this.el = inject((ElementRef));
13
14
  this.unsubscriber = inject(AXUnsubscriber);
14
15
  this.clipboardService = inject(AXClipBoardService);
@@ -21,43 +22,48 @@ class AXOutlineContainerDirective {
21
22
  this.scrollableElementId = input(null, ...(ngDevMode ? [{ debugName: "scrollableElementId" }] : []));
22
23
  this.scrollTop = signal(0, ...(ngDevMode ? [{ debugName: "scrollTop" }] : []));
23
24
  this.outlineItems = signal([], ...(ngDevMode ? [{ debugName: "outlineItems" }] : []));
24
- this.scrollableElement = computed(() => this.scrollableElementId()
25
- ? document.getElementById(this.scrollableElementId())
26
- : this.el.nativeElement, ...(ngDevMode ? [{ debugName: "scrollableElement" }] : []));
25
+ this.scrollableElement = computed(() => {
26
+ const scrollableElementId = this.scrollableElementId();
27
+ if (scrollableElementId) {
28
+ return this.document.getElementById(scrollableElementId) ?? this.el.nativeElement;
29
+ }
30
+ return this.el.nativeElement;
31
+ }, ...(ngDevMode ? [{ debugName: "scrollableElement" }] : []));
27
32
  this.mutationSubject = new Subject();
28
33
  this.MUTATION_DEBOUNCE_TIME = 150;
29
34
  this.outlineItems$ = new BehaviorSubject([]);
30
35
  this.#anr = afterNextRender(() => {
36
+ if (!isPlatformBrowser(this.platformId)) {
37
+ return;
38
+ }
31
39
  if (this.smoothScroll()) {
32
40
  this.scrollableElement().style.overflow = 'auto';
33
41
  this.scrollableElement().style.scrollBehavior = 'smooth';
34
42
  }
35
- if (isPlatformBrowser(this.platformId)) {
36
- this.zone.runOutsideAngular(() => {
37
- const scrollable = this.scrollableElement().tagName === 'HTML' ? window : this.scrollableElement();
38
- fromEvent(scrollable, 'scroll')
39
- .pipe(this.unsubscriber.takeUntilDestroy, map(() => this.scrollableElement().scrollTop))
40
- .subscribe((scrollTop) => {
41
- this.scrollTop.set(scrollTop);
42
- this.scrollChanged(scrollTop);
43
- });
44
- this.mutationObserver = new MutationObserver((mutationsList) => {
45
- const relevantMutation = mutationsList.some((mutation) => mutation.type === 'childList' && (mutation.addedNodes.length > 0 || mutation.removedNodes.length > 0));
46
- if (relevantMutation) {
47
- this.mutationSubject.next();
48
- }
49
- });
50
- this.mutationObserver.observe(this.el.nativeElement, {
51
- childList: true,
52
- subtree: true,
53
- });
43
+ this.zone.runOutsideAngular(() => {
44
+ const scrollable = this.scrollableElement().tagName === 'HTML' ? window : this.scrollableElement();
45
+ fromEvent(scrollable, 'scroll')
46
+ .pipe(this.unsubscriber.takeUntilDestroy, map(() => this.scrollableElement().scrollTop))
47
+ .subscribe((scrollTop) => {
48
+ this.scrollTop.set(scrollTop);
49
+ this.scrollChanged(scrollTop);
54
50
  });
55
- this.mutationSubject
56
- .pipe(debounceTime(this.MUTATION_DEBOUNCE_TIME), this.unsubscriber.takeUntilDestroy)
57
- .subscribe(() => {
58
- this.refreshOutlineItems();
51
+ this.mutationObserver = new MutationObserver((mutationsList) => {
52
+ const relevantMutation = mutationsList.some((mutation) => mutation.type === 'childList' && (mutation.addedNodes.length > 0 || mutation.removedNodes.length > 0));
53
+ if (relevantMutation) {
54
+ this.mutationSubject.next();
55
+ }
59
56
  });
60
- }
57
+ this.mutationObserver.observe(this.el.nativeElement, {
58
+ childList: true,
59
+ subtree: true,
60
+ });
61
+ });
62
+ this.mutationSubject
63
+ .pipe(debounceTime(this.MUTATION_DEBOUNCE_TIME), this.unsubscriber.takeUntilDestroy)
64
+ .subscribe(() => {
65
+ this.refreshOutlineItems();
66
+ });
61
67
  });
62
68
  }
63
69
  #anr;
@@ -67,7 +73,9 @@ class AXOutlineContainerDirective {
67
73
  }
68
74
  }
69
75
  ngAfterViewInit() {
70
- this.refreshOutlineItems();
76
+ if (isPlatformBrowser(this.platformId)) {
77
+ this.refreshOutlineItems();
78
+ }
71
79
  }
72
80
  scrollChanged(scrollTop) {
73
81
  this.outlineItems.update((prevItems) => {
@@ -97,6 +105,9 @@ class AXOutlineContainerDirective {
97
105
  this.outlineItems$.next(this.outlineItems());
98
106
  }
99
107
  setOutlineItems() {
108
+ if (!isPlatformBrowser(this.platformId)) {
109
+ return;
110
+ }
100
111
  if (this.mutationObserver) {
101
112
  this.mutationObserver.disconnect();
102
113
  }
@@ -105,18 +116,17 @@ class AXOutlineContainerDirective {
105
116
  targets.push(...this.el.nativeElement.querySelectorAll('[data-ax-outline-item="true"]'));
106
117
  const uniqueTargets = new Set(targets);
107
118
  const outlineItems = Array.from(uniqueTargets)
108
- .filter((el) => {
109
- return el.dataset['axOutlineItem'] !== 'false';
110
- })
119
+ .filter((el) => el.getAttribute('data-ax-outline-item') !== 'false')
111
120
  .map((el) => {
112
- let fragment = el.id;
121
+ const htmlEl = el;
122
+ let fragment = htmlEl.id;
113
123
  if (!fragment) {
114
- const textContentForId = el.textContent?.trim() ?? ''; // Read text BEFORE adding/modifying for hash
124
+ const textContentForId = htmlEl.textContent?.trim() ?? ''; // Read text BEFORE adding/modifying for hash
115
125
  if (textContentForId) {
116
126
  fragment = `${textContentForId.toLowerCase().replace(/\s+/g, '-')}`;
117
127
  let counter = 1;
118
128
  const originalFragment = fragment;
119
- while (document.getElementById(fragment)) {
129
+ while (this.document.getElementById(fragment)) {
120
130
  fragment = `${originalFragment}-${counter}`;
121
131
  counter++;
122
132
  }
@@ -124,15 +134,15 @@ class AXOutlineContainerDirective {
124
134
  else {
125
135
  fragment = `ax-outline-${Math.random().toString(36).slice(2, 7)}`;
126
136
  }
127
- el.id = fragment; // Set the ID on the element
137
+ htmlEl.id = fragment; // Set the ID on the element
128
138
  }
129
- el.style.scrollMargin = `${this.activationOffset()}px`;
130
- const existingLink = el.querySelector('a.ax-outline-hash-link');
139
+ htmlEl.style.scrollMargin = `${this.activationOffset()}px`;
140
+ const existingLink = htmlEl.querySelector('a.ax-outline-hash-link');
131
141
  if (existingLink) {
132
142
  existingLink.remove();
133
143
  }
134
- if (this.showHashItem()) {
135
- const anchor = document.createElement('a');
144
+ if (this.showHashItem() && isPlatformBrowser(this.platformId)) {
145
+ const anchor = this.document.createElement('a');
136
146
  anchor.textContent = '#';
137
147
  anchor.href = `${window.location.pathname}${window.location.search}#${fragment}`;
138
148
  anchor.classList.add('ax-outline-hash-link');
@@ -145,9 +155,9 @@ class AXOutlineContainerDirective {
145
155
  anchor.setAttribute('fragment', fragment);
146
156
  const enterListener = () => (anchor.style.opacity = '1');
147
157
  const leaveListener = () => (anchor.style.opacity = '0');
148
- el.addEventListener('mouseenter', enterListener);
149
- el.addEventListener('mouseleave', leaveListener);
150
- el.appendChild(anchor);
158
+ htmlEl.addEventListener('mouseenter', enterListener);
159
+ htmlEl.addEventListener('mouseleave', leaveListener);
160
+ htmlEl.appendChild(anchor);
151
161
  if (this.copyUrlOnClick()) {
152
162
  anchor.addEventListener('click', async () => {
153
163
  try {
@@ -159,14 +169,14 @@ class AXOutlineContainerDirective {
159
169
  });
160
170
  }
161
171
  }
162
- const parentId = el.dataset['parent'];
172
+ const parentId = htmlEl.getAttribute('data-parent') ?? undefined;
163
173
  // Calculate position relative to the scrollable element
164
174
  const scrollableElement = this.scrollableElement();
165
- const scrollableRect = scrollableElement.getBoundingClientRect();
166
- const elementRect = el.getBoundingClientRect();
167
- const relativeScrollY = elementRect.top - scrollableRect.top + scrollableElement.scrollTop;
175
+ const scrollableRect = scrollableElement?.getBoundingClientRect() ?? { top: 0 };
176
+ const elementRect = htmlEl.getBoundingClientRect();
177
+ const relativeScrollY = elementRect.top - scrollableRect.top + (scrollableElement?.scrollTop ?? 0);
168
178
  return {
169
- el,
179
+ el: htmlEl,
170
180
  id: fragment,
171
181
  active: false,
172
182
  parentId: parentId,
@@ -206,7 +216,8 @@ class AXOutlineItemDirective {
206
216
  this.id = input(...(ngDevMode ? [undefined, { debugName: "id" }] : []));
207
217
  this.disabled = input(false, ...(ngDevMode ? [{ debugName: "disabled" }] : []));
208
218
  this.#anr = afterNextRender(() => {
209
- this.el.nativeElement.dataset['axOutlineItem'] = this.disabled() ? 'false' : 'true';
219
+ const element = this.el.nativeElement;
220
+ element.setAttribute('data-ax-outline-item', this.disabled() ? 'false' : 'true');
210
221
  let newId;
211
222
  if (!this.id()) {
212
223
  const textContent = this.el.nativeElement.textContent.trim();
@@ -1 +1 @@
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":";;;;;;;MAgCa,2BAA2B,CAAA;AALxC,IAAA,WAAA,GAAA;AAMU,QAAA,IAAA,CAAA,IAAI,GAAG,MAAM,CAAC,MAAM,CAAC;AACrB,QAAA,IAAA,CAAA,UAAU,GAAG,MAAM,CAAC,WAAW,CAAC;AAChC,QAAA,IAAA,CAAA,EAAE,GAAG,MAAM,EAAC,UAAuB,EAAC;AACpC,QAAA,IAAA,CAAA,YAAY,GAAG,MAAM,CAAC,cAAc,CAAC;AACrC,QAAA,IAAA,CAAA,gBAAgB,GAAG,MAAM,CAAC,kBAAkB,CAAC;QAErD,IAAA,CAAA,MAAM,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,QAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAU;AACxB,QAAA,IAAA,CAAA,YAAY,GAAG,KAAK,CAAC,IAAI,wDAAC;AAC1B,QAAA,IAAA,CAAA,YAAY,GAAG,KAAK,CAAC,KAAK,wDAAC;AAC3B,QAAA,IAAA,CAAA,gBAAgB,GAAG,KAAK,CAAC,EAAE,4DAAC;AAC5B,QAAA,IAAA,CAAA,cAAc,GAAG,KAAK,CAAC,KAAK,0DAAC;AAC7B,QAAA,IAAA,CAAA,oBAAoB,GAAG,KAAK,CAAC,IAAI,gEAAC;AAClC,QAAA,IAAA,CAAA,mBAAmB,GAAG,KAAK,CAAgB,IAAI,+DAAC;AAExC,QAAA,IAAA,CAAA,SAAS,GAAG,MAAM,CAAC,CAAC,qDAAC;AACrB,QAAA,IAAA,CAAA,YAAY,GAAG,MAAM,CAAoB,EAAE,wDAAC;QAE5C,IAAA,CAAA,iBAAiB,GAAG,QAAQ,CAAC,MACnC,IAAI,CAAC,mBAAmB;cACpB,QAAQ,CAAC,cAAc,CAAC,IAAI,CAAC,mBAAmB,EAAE;AACpD,cAAG,IAAI,CAAC,EAAE,CAAC,aAA6B,6DAC3C;AAEO,QAAA,IAAA,CAAA,eAAe,GAAG,IAAI,OAAO,EAAQ;QAC5B,IAAA,CAAA,sBAAsB,GAAG,GAAG;AAE7C,QAAA,IAAA,CAAA,aAAa,GAAG,IAAI,eAAe,CAAoB,EAAE,CAAC;AAE1D,QAAA,IAAA,CAAA,IAAI,GAAG,eAAe,CAAC,MAAK;AAC1B,YAAA,IAAI,IAAI,CAAC,YAAY,EAAE,EAAE;gBACvB,IAAI,CAAC,iBAAiB,EAAE,CAAC,KAAK,CAAC,QAAQ,GAAG,MAAM;gBAChD,IAAI,CAAC,iBAAiB,EAAE,CAAC,KAAK,CAAC,cAAc,GAAG,QAAQ;YAC1D;AAEA,YAAA,IAAI,iBAAiB,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE;AACtC,gBAAA,IAAI,CAAC,IAAI,CAAC,iBAAiB,CAAC,MAAK;oBAC/B,MAAM,UAAU,GAAG,IAAI,CAAC,iBAAiB,EAAE,CAAC,OAAO,KAAK,MAAM,GAAG,MAAM,GAAG,IAAI,CAAC,iBAAiB,EAAE;AAClG,oBAAA,SAAS,CAAC,UAAU,EAAE,QAAQ;AAC3B,yBAAA,IAAI,CACH,IAAI,CAAC,YAAY,CAAC,gBAAgB,EAClC,GAAG,CAAC,MAAM,IAAI,CAAC,iBAAiB,EAAE,CAAC,SAAS,CAAC;AAE9C,yBAAA,SAAS,CAAC,CAAC,SAAS,KAAI;AACvB,wBAAA,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,SAAS,CAAC;AAC7B,wBAAA,IAAI,CAAC,aAAa,CAAC,SAAS,CAAC;AAC/B,oBAAA,CAAC,CAAC;oBAEJ,IAAI,CAAC,gBAAgB,GAAG,IAAI,gBAAgB,CAAC,CAAC,aAAa,KAAI;AAC7D,wBAAA,MAAM,gBAAgB,GAAG,aAAa,CAAC,IAAI,CACzC,CAAC,QAAQ,KACP,QAAQ,CAAC,IAAI,KAAK,WAAW,KAAK,QAAQ,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC,IAAI,QAAQ,CAAC,YAAY,CAAC,MAAM,GAAG,CAAC,CAAC,CACxG;wBACD,IAAI,gBAAgB,EAAE;AACpB,4BAAA,IAAI,CAAC,eAAe,CAAC,IAAI,EAAE;wBAC7B;AACF,oBAAA,CAAC,CAAC;oBAEF,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,aAAa,EAAE;AACnD,wBAAA,SAAS,EAAE,IAAI;AACf,wBAAA,OAAO,EAAE,IAAI;AACd,qBAAA,CAAC;AACJ,gBAAA,CAAC,CAAC;AAEF,gBAAA,IAAI,CAAC;AACF,qBAAA,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,sBAAsB,CAAC,EAAE,IAAI,CAAC,YAAY,CAAC,gBAAgB;qBAClF,SAAS,CAAC,MAAK;oBACd,IAAI,CAAC,mBAAmB,EAAE;AAC5B,gBAAA,CAAC,CAAC;YACN;AACF,QAAA,CAAC,CAAC;AAoJH,IAAA;AA7LC,IAAA,IAAI;IA2CJ,WAAW,GAAA;AACT,QAAA,IAAI,IAAI,CAAC,gBAAgB,EAAE;AACzB,YAAA,IAAI,CAAC,gBAAgB,CAAC,UAAU,EAAE;QACpC;IACF;IAEA,eAAe,GAAA;QACb,IAAI,CAAC,mBAAmB,EAAE;IAC5B;AAEQ,IAAA,aAAa,CAAC,SAAiB,EAAA;QACrC,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC,SAAS,KAAI;AACrC,YAAA,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC;AAAE,gBAAA,OAAO,SAAS;YAE5C,MAAM,YAAY,GAAG,IAAI,CAAC,iBAAiB,EAAE,CAAC,YAAY;YAC1D,MAAM,YAAY,GAAG,IAAI,CAAC,iBAAiB,EAAE,CAAC,YAAY;YAC1D,MAAM,UAAU,GAAG,SAAS,GAAG,YAAY,IAAI,YAAY,GAAG,CAAC;AAE/D,YAAA,IAAI,UAAU,IAAI,IAAI,CAAC,oBAAoB,EAAE,EAAE;gBAC7C,OAAO,SAAS,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,KAAK,MAAM;AACrC,oBAAA,GAAG,IAAI;AACP,oBAAA,MAAM,EAAE,KAAK,KAAK,SAAS,CAAC,MAAM,GAAG,CAAC;AACvC,iBAAA,CAAC,CAAC;YACL;AAEA,YAAA,IAAI,WAAW,GAAG,CAAC,CAAC;AACpB,YAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,SAAS,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;AACzC,gBAAA,MAAM,IAAI,GAAG,SAAS,CAAC,CAAC,CAAC;gBACzB,IAAI,SAAS,IAAI,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,gBAAgB,EAAE,EAAE;oBACvD,WAAW,GAAG,CAAC;gBACjB;YACF;YACA,OAAO,SAAS,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,KAAK,MAAM;AACrC,gBAAA,GAAG,IAAI;gBACP,MAAM,EAAE,KAAK,KAAK,WAAW;AAC9B,aAAA,CAAC,CAAC;AACL,QAAA,CAAC,CAAC;QACF,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,CAAC;IAC9C;IAEQ,eAAe,GAAA;AACrB,QAAA,IAAI,IAAI,CAAC,gBAAgB,EAAE;AACzB,YAAA,IAAI,CAAC,gBAAgB,CAAC,UAAU,EAAE;QACpC;QAEA,UAAU,CAAC,MAAK;AACd,YAAA,MAAM,OAAO,GAAG,IAAI,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,IAAI,CAAC,EAAE,CAAC,aAAa,CAAC,gBAAgB,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC,GAAG,EAAE;AAC/F,YAAA,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,EAAE,CAAC,aAAa,CAAC,gBAAgB,CAAC,+BAA+B,CAAC,CAAC;AACxF,YAAA,MAAM,aAAa,GAAG,IAAI,GAAG,CAAC,OAAO,CAAC;AAEtC,YAAA,MAAM,YAAY,GAAG,KAAK,CAAC,IAAI,CAAC,aAAa;AAC1C,iBAAA,MAAM,CAAC,CAAC,EAAE,KAAI;gBACb,OAAO,EAAE,CAAC,OAAO,CAAC,eAAe,CAAC,KAAK,OAAO;AAChD,YAAA,CAAC;AACA,iBAAA,GAAG,CAAC,CAAC,EAAe,KAAI;AACvB,gBAAA,IAAI,QAAQ,GAAG,EAAE,CAAC,EAAE;gBACpB,IAAI,CAAC,QAAQ,EAAE;AACb,oBAAA,MAAM,gBAAgB,GAAG,EAAE,CAAC,WAAW,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;oBACtD,IAAI,gBAAgB,EAAE;AACpB,wBAAA,QAAQ,GAAG,CAAA,EAAG,gBAAgB,CAAC,WAAW,EAAE,CAAC,OAAO,CAAC,MAAM,EAAE,GAAG,CAAC,EAAE;wBACnE,IAAI,OAAO,GAAG,CAAC;wBACf,MAAM,gBAAgB,GAAG,QAAQ;AACjC,wBAAA,OAAO,QAAQ,CAAC,cAAc,CAAC,QAAQ,CAAC,EAAE;AACxC,4BAAA,QAAQ,GAAG,CAAA,EAAG,gBAAgB,CAAA,CAAA,EAAI,OAAO,EAAE;AAC3C,4BAAA,OAAO,EAAE;wBACX;oBACF;yBAAO;AACL,wBAAA,QAAQ,GAAG,CAAA,WAAA,EAAc,IAAI,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE;oBACnE;AACA,oBAAA,EAAE,CAAC,EAAE,GAAG,QAAQ,CAAC;gBACnB;gBAEA,EAAE,CAAC,KAAK,CAAC,YAAY,GAAG,CAAA,EAAG,IAAI,CAAC,gBAAgB,EAAE,CAAA,EAAA,CAAI;gBAEtD,MAAM,YAAY,GAAG,EAAE,CAAC,aAAa,CAAC,wBAAwB,CAAC;gBAC/D,IAAI,YAAY,EAAE;oBAChB,YAAY,CAAC,MAAM,EAAE;gBACvB;AAEA,gBAAA,IAAI,IAAI,CAAC,YAAY,EAAE,EAAE;oBACvB,MAAM,MAAM,GAAG,QAAQ,CAAC,aAAa,CAAC,GAAG,CAAC;AAC1C,oBAAA,MAAM,CAAC,WAAW,GAAG,GAAG;AACxB,oBAAA,MAAM,CAAC,IAAI,GAAG,GAAG,MAAM,CAAC,QAAQ,CAAC,QAAQ,CAAA,EAAG,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAA,CAAA,EAAI,QAAQ,EAAE;AAChF,oBAAA,MAAM,CAAC,SAAS,CAAC,GAAG,CAAC,sBAAsB,CAAC;;oBAG5C,MAAM,CAAC,KAAK,CAAC,kBAAkB,GAAG,QAAQ,CAAC;AAC3C,oBAAA,MAAM,CAAC,KAAK,CAAC,OAAO,GAAG,GAAG;AAC1B,oBAAA,MAAM,CAAC,KAAK,CAAC,UAAU,GAAG,0BAA0B;AACpD,oBAAA,MAAM,CAAC,KAAK,CAAC,MAAM,GAAG,SAAS;AAC/B,oBAAA,MAAM,CAAC,YAAY,CAAC,aAAa,EAAE,MAAM,CAAC;AAC1C,oBAAA,MAAM,CAAC,YAAY,CAAC,UAAU,EAAE,QAAQ,CAAC;AAEzC,oBAAA,MAAM,aAAa,GAAG,OAAO,MAAM,CAAC,KAAK,CAAC,OAAO,GAAG,GAAG,CAAC;AACxD,oBAAA,MAAM,aAAa,GAAG,OAAO,MAAM,CAAC,KAAK,CAAC,OAAO,GAAG,GAAG,CAAC;AAExD,oBAAA,EAAE,CAAC,gBAAgB,CAAC,YAAY,EAAE,aAAa,CAAC;AAChD,oBAAA,EAAE,CAAC,gBAAgB,CAAC,YAAY,EAAE,aAAa,CAAC;AAEhD,oBAAA,EAAE,CAAC,WAAW,CAAC,MAAM,CAAC;AAEtB,oBAAA,IAAI,IAAI,CAAC,cAAc,EAAE,EAAE;AACzB,wBAAA,MAAM,CAAC,gBAAgB,CAAC,OAAO,EAAE,YAAW;AAC1C,4BAAA,IAAI;gCACF,MAAM,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC;4BAC/C;4BAAE,OAAO,GAAG,EAAE;AACZ,gCAAA,OAAO,CAAC,KAAK,CAAC,6BAA6B,EAAE,GAAG,CAAC;4BACnD;AACF,wBAAA,CAAC,CAAC;oBACJ;gBACF;gBAEA,MAAM,QAAQ,GAAG,EAAE,CAAC,OAAO,CAAC,QAAQ,CAAC;;AAGrC,gBAAA,MAAM,iBAAiB,GAAG,IAAI,CAAC,iBAAiB,EAAE;AAClD,gBAAA,MAAM,cAAc,GAAG,iBAAiB,CAAC,qBAAqB,EAAE;AAChE,gBAAA,MAAM,WAAW,GAAG,EAAE,CAAC,qBAAqB,EAAE;AAC9C,gBAAA,MAAM,eAAe,GAAG,WAAW,CAAC,GAAG,GAAG,cAAc,CAAC,GAAG,GAAG,iBAAiB,CAAC,SAAS;gBAE1F,OAAO;oBACL,EAAE;AACF,oBAAA,EAAE,EAAE,QAAQ;AACZ,oBAAA,MAAM,EAAE,KAAK;AACb,oBAAA,QAAQ,EAAE,QAAQ;AAClB,oBAAA,OAAO,EAAE,eAAe;AACxB,oBAAA,SAAS,EAAE,IAAI,CAAC,YAAY,EAAE;iBAC/B;AACH,YAAA,CAAC;AACA,iBAAA,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,OAAO,GAAG,CAAC,CAAC,OAAO,CAAC;AAExC,YAAA,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,YAAY,CAAC;YACnC,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC;AAEpC,YAAA,IAAI,IAAI,CAAC,gBAAgB,EAAE;gBACzB,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,aAAa,EAAE;AACnD,oBAAA,SAAS,EAAE,IAAI;AACf,oBAAA,OAAO,EAAE,IAAI;AACd,iBAAA,CAAC;YACJ;AACF,QAAA,CAAC,CAAC;IACJ;IAEO,mBAAmB,GAAA;QACxB,IAAI,CAAC,eAAe,EAAE;IACxB;8GAzNW,2BAA2B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAA3B,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,2BAA2B,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,sBAAA,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,YAAA,EAAA,EAAA,iBAAA,EAAA,cAAA,EAAA,UAAA,EAAA,cAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,YAAA,EAAA,EAAA,iBAAA,EAAA,cAAA,EAAA,UAAA,EAAA,cAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,gBAAA,EAAA,EAAA,iBAAA,EAAA,kBAAA,EAAA,UAAA,EAAA,kBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,cAAA,EAAA,EAAA,iBAAA,EAAA,gBAAA,EAAA,UAAA,EAAA,gBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,oBAAA,EAAA,EAAA,iBAAA,EAAA,sBAAA,EAAA,UAAA,EAAA,sBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,mBAAA,EAAA,EAAA,iBAAA,EAAA,qBAAA,EAAA,UAAA,EAAA,qBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,SAAA,EAF3B,CAAC,cAAc,EAAE,kBAAkB,CAAC,EAAA,QAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;2FAEpC,2BAA2B,EAAA,UAAA,EAAA,CAAA;kBALvC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,sBAAsB;AAChC,oBAAA,QAAQ,EAAE,oBAAoB;AAC9B,oBAAA,SAAS,EAAE,CAAC,cAAc,EAAE,kBAAkB,CAAC;AAChD,iBAAA;;;MCzBY,sBAAsB,CAAA;AAJnC,IAAA,WAAA,GAAA;AAKU,QAAA,IAAA,CAAA,EAAE,GAAG,MAAM,CAAC,UAAU,CAAC;QAE/B,IAAA,CAAA,EAAE,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,IAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAU;AACpB,QAAA,IAAA,CAAA,QAAQ,GAAG,KAAK,CAAC,KAAK,oDAAC;AAEvB,QAAA,IAAA,CAAA,IAAI,GAAG,eAAe,CAAC,MAAK;YACzB,IAAI,CAAC,EAAE,CAAC,aAA6B,CAAC,OAAO,CAAC,eAAe,CAAC,GAAG,IAAI,CAAC,QAAQ,EAAE,GAAG,OAAO,GAAG,MAAM;AAEpG,YAAA,IAAI,KAAK;AACT,YAAA,IAAI,CAAC,IAAI,CAAC,EAAE,EAAE,EAAE;AACd,gBAAA,MAAM,WAAW,GAAG,IAAI,CAAC,EAAE,CAAC,aAAa,CAAC,WAAW,CAAC,IAAI,EAAE;gBAC5D,IAAI,WAAW,EAAE;oBACf,KAAK,GAAG,CAAA,EAAG,WAAW,CAAC,OAAO,CAAC,MAAM,EAAE,GAAG,CAAC,CAAA,CAAE;gBAC/C;qBAAO;AACL,oBAAA,KAAK,GAAG,CAAA,EAAG,IAAI,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE;gBACrD;gBACA,IAAI,CAAC,EAAE,CAAC,aAAa,CAAC,EAAE,GAAG,KAAK;YAClC;AACF,QAAA,CAAC,CAAC;AACH,IAAA;AAdC,IAAA,IAAI;8GANO,sBAAsB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;kGAAtB,sBAAsB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,EAAA,EAAA,EAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,QAAA,EAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,QAAA,EAAA,CAAA,eAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;2FAAtB,sBAAsB,EAAA,UAAA,EAAA,CAAA;kBAJlC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,iBAAiB;AAC3B,oBAAA,QAAQ,EAAE,eAAe;AAC1B,iBAAA;;;ACLD;;AAEG;;;;"}
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, DOCUMENT } 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 document = inject(DOCUMENT);\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 const scrollableElementId = this.scrollableElementId();\n if (scrollableElementId) {\n return this.document.getElementById(scrollableElementId) ?? this.el.nativeElement;\n }\n return this.el.nativeElement;\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 (!isPlatformBrowser(this.platformId)) {\n return;\n }\n\n if (this.smoothScroll()) {\n this.scrollableElement().style.overflow = 'auto';\n this.scrollableElement().style.scrollBehavior = 'smooth';\n }\n\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 ngOnDestroy(): void {\n if (this.mutationObserver) {\n this.mutationObserver.disconnect();\n }\n }\n\n ngAfterViewInit() {\n if (isPlatformBrowser(this.platformId)) {\n this.refreshOutlineItems();\n }\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 (!isPlatformBrowser(this.platformId)) {\n return;\n }\n\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) => el.getAttribute('data-ax-outline-item') !== 'false')\n .map((el) => {\n const htmlEl = el as HTMLElement;\n let fragment = htmlEl.id;\n if (!fragment) {\n const textContentForId = htmlEl.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 (this.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 htmlEl.id = fragment; // Set the ID on the element\n }\n\n htmlEl.style.scrollMargin = `${this.activationOffset()}px`;\n\n const existingLink = htmlEl.querySelector('a.ax-outline-hash-link');\n if (existingLink) {\n existingLink.remove();\n }\n\n if (this.showHashItem() && isPlatformBrowser(this.platformId)) {\n const anchor = this.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 htmlEl.addEventListener('mouseenter', enterListener);\n htmlEl.addEventListener('mouseleave', leaveListener);\n\n htmlEl.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 = htmlEl.getAttribute('data-parent') ?? undefined;\n\n // Calculate position relative to the scrollable element\n const scrollableElement = this.scrollableElement();\n const scrollableRect = scrollableElement?.getBoundingClientRect() ?? { top: 0 };\n const elementRect = htmlEl.getBoundingClientRect();\n const relativeScrollY = elementRect.top - scrollableRect.top + (scrollableElement?.scrollTop ?? 0);\n\n return {\n el: htmlEl,\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 const element = this.el.nativeElement as HTMLElement;\n element.setAttribute('data-ax-outline-item', 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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"}
package/package.json CHANGED
@@ -1,8 +1,8 @@
1
1
  {
2
2
  "name": "@acorex/cdk",
3
- "version": "21.0.2-next.11",
3
+ "version": "21.0.2-next.14",
4
4
  "peerDependencies": {
5
- "@acorex/core": "21.0.2-next.11",
5
+ "@acorex/core": "21.0.2-next.14",
6
6
  "quill": ">=2.0.2",
7
7
  "qrcode": ">=1.5.4",
8
8
  "swiper": ">=11.1.15",
@@ -11,9 +11,11 @@ declare class AXDrawerItemDirective implements OnDestroy {
11
11
  private parent;
12
12
  private platformID;
13
13
  private zIndexService;
14
+ private localeService;
14
15
  private zToken;
15
16
  private collapseState;
16
17
  private resizeObserver;
18
+ private isRtl;
17
19
  collapseStateChanged: _angular_core.OutputEmitterRef<boolean>;
18
20
  location: _angular_core.ModelSignal<AXDrawerLocation>;
19
21
  collapsed: _angular_core.ModelSignal<boolean>;
@@ -35,6 +35,7 @@ type AXMaskTokens = {
35
35
  declare class AXInputMaskDirective {
36
36
  #private;
37
37
  private elm;
38
+ private platformId;
38
39
  private maskaJs;
39
40
  /**
40
41
  * The mode of input masking to apply.
@@ -14,6 +14,7 @@ declare class AXOutlineContainerDirective implements OnDestroy, AfterViewInit {
14
14
  #private;
15
15
  private zone;
16
16
  private platformId;
17
+ private document;
17
18
  private el;
18
19
  private unsubscriber;
19
20
  private clipboardService;