@acorex/cdk 21.0.2-next.35 → 21.0.2-next.37

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.
Files changed (74) hide show
  1. package/fesm2022/acorex-cdk-accordion.mjs +38 -38
  2. package/fesm2022/acorex-cdk-accordion.mjs.map +1 -1
  3. package/fesm2022/acorex-cdk-carousel.mjs +4 -4
  4. package/fesm2022/acorex-cdk-carousel.mjs.map +1 -1
  5. package/fesm2022/acorex-cdk-clipboard.mjs +8 -8
  6. package/fesm2022/acorex-cdk-clipboard.mjs.map +1 -1
  7. package/fesm2022/acorex-cdk-common.mjs +171 -116
  8. package/fesm2022/acorex-cdk-common.mjs.map +1 -1
  9. package/fesm2022/acorex-cdk-dom.mjs +4 -4
  10. package/fesm2022/acorex-cdk-dom.mjs.map +1 -1
  11. package/fesm2022/acorex-cdk-double-click.mjs +6 -6
  12. package/fesm2022/acorex-cdk-double-click.mjs.map +1 -1
  13. package/fesm2022/acorex-cdk-drag-drop.mjs +71 -71
  14. package/fesm2022/acorex-cdk-drag-drop.mjs.map +1 -1
  15. package/fesm2022/acorex-cdk-drawer.mjs +26 -26
  16. package/fesm2022/acorex-cdk-drawer.mjs.map +1 -1
  17. package/fesm2022/acorex-cdk-focus-trap.mjs +6 -6
  18. package/fesm2022/acorex-cdk-focus-trap.mjs.map +1 -1
  19. package/fesm2022/acorex-cdk-full-screen.mjs +5 -5
  20. package/fesm2022/acorex-cdk-full-screen.mjs.map +1 -1
  21. package/fesm2022/acorex-cdk-input-mask.mjs +20 -14
  22. package/fesm2022/acorex-cdk-input-mask.mjs.map +1 -1
  23. package/fesm2022/acorex-cdk-list-navigation.mjs +19 -19
  24. package/fesm2022/acorex-cdk-list-navigation.mjs.map +1 -1
  25. package/fesm2022/acorex-cdk-outline.mjs +79 -68
  26. package/fesm2022/acorex-cdk-outline.mjs.map +1 -1
  27. package/fesm2022/acorex-cdk-overlay.mjs +16 -3
  28. package/fesm2022/acorex-cdk-overlay.mjs.map +1 -1
  29. package/fesm2022/acorex-cdk-pan-view.mjs +22 -22
  30. package/fesm2022/acorex-cdk-pan-view.mjs.map +1 -1
  31. package/fesm2022/acorex-cdk-qrcode.mjs.map +1 -1
  32. package/fesm2022/acorex-cdk-resizable.mjs +12 -12
  33. package/fesm2022/acorex-cdk-resizable.mjs.map +1 -1
  34. package/fesm2022/acorex-cdk-selection.mjs +23 -23
  35. package/fesm2022/acorex-cdk-selection.mjs.map +1 -1
  36. package/fesm2022/acorex-cdk-sliding-item.mjs +11 -11
  37. package/fesm2022/acorex-cdk-sliding-item.mjs.map +1 -1
  38. package/fesm2022/acorex-cdk-sticky.mjs +3 -3
  39. package/fesm2022/acorex-cdk-sticky.mjs.map +1 -1
  40. package/fesm2022/acorex-cdk-uploader.mjs +28 -28
  41. package/fesm2022/acorex-cdk-uploader.mjs.map +1 -1
  42. package/fesm2022/acorex-cdk-virtual-scroll.mjs +18 -18
  43. package/fesm2022/acorex-cdk-virtual-scroll.mjs.map +1 -1
  44. package/fesm2022/acorex-cdk-wysiwyg.mjs +1 -1
  45. package/fesm2022/acorex-cdk-wysiwyg.mjs.map +1 -1
  46. package/fesm2022/acorex-cdk-z-index.mjs +4 -4
  47. package/fesm2022/acorex-cdk-z-index.mjs.map +1 -1
  48. package/fesm2022/acorex-cdk.mjs.map +1 -1
  49. package/package.json +32 -31
  50. package/{common/index.d.ts → types/acorex-cdk-common.d.ts} +9 -7
  51. package/{focus-trap/index.d.ts → types/acorex-cdk-focus-trap.d.ts} +1 -1
  52. package/{input-mask/index.d.ts → types/acorex-cdk-input-mask.d.ts} +1 -0
  53. package/{outline/index.d.ts → types/acorex-cdk-outline.d.ts} +1 -0
  54. package/{overlay/index.d.ts → types/acorex-cdk-overlay.d.ts} +1 -0
  55. /package/{accordion/index.d.ts → types/acorex-cdk-accordion.d.ts} +0 -0
  56. /package/{carousel/index.d.ts → types/acorex-cdk-carousel.d.ts} +0 -0
  57. /package/{clipboard/index.d.ts → types/acorex-cdk-clipboard.d.ts} +0 -0
  58. /package/{dom/index.d.ts → types/acorex-cdk-dom.d.ts} +0 -0
  59. /package/{double-click/index.d.ts → types/acorex-cdk-double-click.d.ts} +0 -0
  60. /package/{drag-drop/index.d.ts → types/acorex-cdk-drag-drop.d.ts} +0 -0
  61. /package/{drawer/index.d.ts → types/acorex-cdk-drawer.d.ts} +0 -0
  62. /package/{full-screen/index.d.ts → types/acorex-cdk-full-screen.d.ts} +0 -0
  63. /package/{list-navigation/index.d.ts → types/acorex-cdk-list-navigation.d.ts} +0 -0
  64. /package/{pan-view/index.d.ts → types/acorex-cdk-pan-view.d.ts} +0 -0
  65. /package/{qrcode/index.d.ts → types/acorex-cdk-qrcode.d.ts} +0 -0
  66. /package/{resizable/index.d.ts → types/acorex-cdk-resizable.d.ts} +0 -0
  67. /package/{selection/index.d.ts → types/acorex-cdk-selection.d.ts} +0 -0
  68. /package/{sliding-item/index.d.ts → types/acorex-cdk-sliding-item.d.ts} +0 -0
  69. /package/{sticky/index.d.ts → types/acorex-cdk-sticky.d.ts} +0 -0
  70. /package/{uploader/index.d.ts → types/acorex-cdk-uploader.d.ts} +0 -0
  71. /package/{virtual-scroll/index.d.ts → types/acorex-cdk-virtual-scroll.d.ts} +0 -0
  72. /package/{wysiwyg/index.d.ts → types/acorex-cdk-wysiwyg.d.ts} +0 -0
  73. /package/{z-index/index.d.ts → types/acorex-cdk-z-index.d.ts} +0 -0
  74. /package/{index.d.ts → types/acorex-cdk.d.ts} +0 -0
@@ -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,55 +9,61 @@ 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);
15
- this.target = input(...(ngDevMode ? [undefined, { debugName: "target" }] : []));
16
- this.smoothScroll = input(true, ...(ngDevMode ? [{ debugName: "smoothScroll" }] : []));
17
- this.showHashItem = input(false, ...(ngDevMode ? [{ debugName: "showHashItem" }] : []));
18
- this.activationOffset = input(16, ...(ngDevMode ? [{ debugName: "activationOffset" }] : []));
19
- this.copyUrlOnClick = input(false, ...(ngDevMode ? [{ debugName: "copyUrlOnClick" }] : []));
20
- this.activateLastAtBottom = input(true, ...(ngDevMode ? [{ debugName: "activateLastAtBottom" }] : []));
21
- this.scrollableElementId = input(null, ...(ngDevMode ? [{ debugName: "scrollableElementId" }] : []));
22
- this.scrollTop = signal(0, ...(ngDevMode ? [{ debugName: "scrollTop" }] : []));
23
- this.outlineItems = signal([], ...(ngDevMode ? [{ debugName: "outlineItems" }] : []));
24
- this.scrollableElement = computed(() => this.scrollableElementId()
25
- ? document.getElementById(this.scrollableElementId())
26
- : this.el.nativeElement, ...(ngDevMode ? [{ debugName: "scrollableElement" }] : []));
16
+ this.target = input(...(ngDevMode ? [undefined, { debugName: "target" }] : /* istanbul ignore next */ []));
17
+ this.smoothScroll = input(true, ...(ngDevMode ? [{ debugName: "smoothScroll" }] : /* istanbul ignore next */ []));
18
+ this.showHashItem = input(false, ...(ngDevMode ? [{ debugName: "showHashItem" }] : /* istanbul ignore next */ []));
19
+ this.activationOffset = input(16, ...(ngDevMode ? [{ debugName: "activationOffset" }] : /* istanbul ignore next */ []));
20
+ this.copyUrlOnClick = input(false, ...(ngDevMode ? [{ debugName: "copyUrlOnClick" }] : /* istanbul ignore next */ []));
21
+ this.activateLastAtBottom = input(true, ...(ngDevMode ? [{ debugName: "activateLastAtBottom" }] : /* istanbul ignore next */ []));
22
+ this.scrollableElementId = input(null, ...(ngDevMode ? [{ debugName: "scrollableElementId" }] : /* istanbul ignore next */ []));
23
+ this.scrollTop = signal(0, ...(ngDevMode ? [{ debugName: "scrollTop" }] : /* istanbul ignore next */ []));
24
+ this.outlineItems = signal([], ...(ngDevMode ? [{ debugName: "outlineItems" }] : /* istanbul ignore next */ []));
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" }] : /* istanbul ignore next */ []));
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,
@@ -188,25 +198,26 @@ class AXOutlineContainerDirective {
188
198
  refreshOutlineItems() {
189
199
  this.setOutlineItems();
190
200
  }
191
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.3", ngImport: i0, type: AXOutlineContainerDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
192
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "20.3.3", 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 }); }
201
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXOutlineContainerDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
202
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "21.2.9", 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 }); }
193
203
  }
194
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.3", ngImport: i0, type: AXOutlineContainerDirective, decorators: [{
204
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXOutlineContainerDirective, decorators: [{
195
205
  type: Directive,
196
206
  args: [{
197
207
  selector: '[axOutlineContainer]',
198
208
  exportAs: 'axOutlineContainer',
199
209
  providers: [AXUnsubscriber, AXClipBoardService],
200
210
  }]
201
- }] });
211
+ }], 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 }] }] } });
202
212
 
203
213
  class AXOutlineItemDirective {
204
214
  constructor() {
205
215
  this.el = inject(ElementRef);
206
- this.id = input(...(ngDevMode ? [undefined, { debugName: "id" }] : []));
207
- this.disabled = input(false, ...(ngDevMode ? [{ debugName: "disabled" }] : []));
216
+ this.id = input(...(ngDevMode ? [undefined, { debugName: "id" }] : /* istanbul ignore next */ []));
217
+ this.disabled = input(false, ...(ngDevMode ? [{ debugName: "disabled" }] : /* istanbul ignore next */ []));
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();
@@ -221,16 +232,16 @@ class AXOutlineItemDirective {
221
232
  });
222
233
  }
223
234
  #anr;
224
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.3", ngImport: i0, type: AXOutlineItemDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
225
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "20.3.3", 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 }); }
235
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXOutlineItemDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
236
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "21.2.9", 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 }); }
226
237
  }
227
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.3", ngImport: i0, type: AXOutlineItemDirective, decorators: [{
238
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXOutlineItemDirective, decorators: [{
228
239
  type: Directive,
229
240
  args: [{
230
241
  selector: '[axOutlineItem]',
231
242
  exportAs: 'axOutlineItem',
232
243
  }]
233
- }] });
244
+ }], propDecorators: { id: [{ type: i0.Input, args: [{ isSignal: true, alias: "id", required: false }] }], disabled: [{ type: i0.Input, args: [{ isSignal: true, alias: "disabled", required: false }] }] } });
234
245
 
235
246
  /**
236
247
  * Generated bundle index. Do not edit.
@@ -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.3\", ngImport: i0, type: AXOutlineContainerDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }\n static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"17.1.0\", version: \"20.3.3\", 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.3\", ngImport: i0, type: AXOutlineContainerDirective, decorators: [{\n type: Directive,\n args: [{\n selector: '[axOutlineContainer]',\n exportAs: 'axOutlineContainer',\n providers: [AXUnsubscriber, AXClipBoardService],\n }]\n }] });\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.3\", ngImport: i0, type: AXOutlineItemDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }\n static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"17.1.0\", version: \"20.3.3\", 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.3\", ngImport: i0, type: AXOutlineItemDirective, decorators: [{\n type: Directive,\n args: [{\n selector: '[axOutlineItem]',\n exportAs: 'axOutlineItem',\n }]\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib3V0bGluZS1pdGVtLmRpcmVjdGl2ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2Nkay9vdXRsaW5lL3NyYy9saWIvb3V0bGluZS1pdGVtLmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsZUFBZSxFQUFFLFNBQVMsRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxNQUFNLGVBQWUsQ0FBQzs7QUFNdEYsTUFBTSxPQUFPLHNCQUFzQjtJQUpuQztRQUtVLE9BQUUsR0FBRyxNQUFNLENBQUMsVUFBVSxDQUFDLENBQUM7UUFFaEMsT0FBRSxHQUFHLEtBQUssd0RBQVUsQ0FBQztRQUNyQixhQUFRLEdBQUcsS0FBSyxDQUFDLEtBQUssb0RBQUMsQ0FBQztRQUV4QixTQUFJLEdBQUcsZUFBZSxDQUFDLEdBQUcsRUFBRTtZQUN6QixJQUFJLENBQUMsRUFBRSxDQUFDLGFBQTZCLENBQUMsT0FBTyxDQUFDLGVBQWUsQ0FBQyxHQUFHLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUM7WUFFckcsSUFBSSxLQUFLLENBQUM7WUFDVixJQUFJLENBQUMsSUFBSSxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUM7Z0JBQ2YsTUFBTSxXQUFXLEdBQUcsSUFBSSxDQUFDLEVBQUUsQ0FBQyxhQUFhLENBQUMsV0FBVyxDQUFDLElBQUksRUFBRSxDQUFDO2dCQUM3RCxJQUFJLFdBQVcsRUFBRSxDQUFDO29CQUNoQixLQUFLLEdBQUcsR0FBRyxXQUFXLENBQUMsT0FBTyxDQUFDLE1BQU0sRUFBRSxHQUFHLENBQUMsRUFBRSxDQUFDO2dCQUNoRCxDQUFDO3FCQUFNLENBQUM7b0JBQ04sS0FBSyxHQUFHLEdBQUcsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUM7Z0JBQ3RELENBQUM7Z0JBQ0QsSUFBSSxDQUFDLEVBQUUsQ0FBQyxhQUFhLENBQUMsRUFBRSxHQUFHLEtBQUssQ0FBQztZQUNuQyxDQUFDO1FBQ0gsQ0FBQyxDQUFDLENBQUM7S0FDSjtJQWRDLElBQUksQ0FhRDs4R0FuQlEsc0JBQXNCO2tHQUF0QixzQkFBc0I7OzJGQUF0QixzQkFBc0I7a0JBSmxDLFNBQVM7bUJBQUM7b0JBQ1QsUUFBUSxFQUFFLGlCQUFpQjtvQkFDM0IsUUFBUSxFQUFFLGVBQWU7aUJBQzFCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgYWZ0ZXJOZXh0UmVuZGVyLCBEaXJlY3RpdmUsIEVsZW1lbnRSZWYsIGluamVjdCwgaW5wdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuQERpcmVjdGl2ZSh7XG4gIHNlbGVjdG9yOiAnW2F4T3V0bGluZUl0ZW1dJyxcbiAgZXhwb3J0QXM6ICdheE91dGxpbmVJdGVtJyxcbn0pXG5leHBvcnQgY2xhc3MgQVhPdXRsaW5lSXRlbURpcmVjdGl2ZSB7XG4gIHByaXZhdGUgZWwgPSBpbmplY3QoRWxlbWVudFJlZik7XG5cbiAgaWQgPSBpbnB1dDxzdHJpbmc+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, 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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"}
@@ -195,6 +195,7 @@ class AXOverlayService {
195
195
  dispose();
196
196
  });
197
197
  }
198
+ this.addHostClass(options?.anchorOptions?.anchor, overlayContainer);
198
199
  return {
199
200
  instance,
200
201
  updatePosition,
@@ -381,10 +382,22 @@ class AXOverlayService {
381
382
  container.style.top = `${coords.top}px`;
382
383
  container.style.left = `${coords.left}px`;
383
384
  }
384
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.3", ngImport: i0, type: AXOverlayService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
385
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.3.3", ngImport: i0, type: AXOverlayService, providedIn: 'root' }); }
385
+ addHostClass(refElement, targetElement) {
386
+ if (!refElement || !targetElement)
387
+ return;
388
+ const el = refElement instanceof ElementRef ? refElement.nativeElement : refElement;
389
+ const computedStyle = getComputedStyle(el);
390
+ const classSize = computedStyle.getPropertyValue('--ax-sys-size');
391
+ const themeColor = +computedStyle.getPropertyValue('--ax-sys-theme-isDark');
392
+ if (themeColor === 1)
393
+ targetElement.classList.add('ax-dark');
394
+ if (classSize)
395
+ targetElement.classList.add(classSize);
396
+ }
397
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXOverlayService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
398
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXOverlayService, providedIn: 'root' }); }
386
399
  }
387
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.3", ngImport: i0, type: AXOverlayService, decorators: [{
400
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXOverlayService, decorators: [{
388
401
  type: Injectable,
389
402
  args: [{
390
403
  providedIn: 'root',