@ngxsmk/cdk 1.0.0 → 1.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (76) hide show
  1. package/{types/ngxsmk-cdk-click-outside.d.ts → click-outside/click-outside.d.ts} +4 -6
  2. package/click-outside/click-outside.d.ts.map +1 -0
  3. package/click-outside/index.d.ts +2 -0
  4. package/click-outside/index.d.ts.map +1 -0
  5. package/click-outside/ngxsmk-cdk-click-outside.d.ts.map +1 -0
  6. package/esm2022/click-outside/click-outside.mjs +38 -0
  7. package/esm2022/click-outside/index.mjs +2 -0
  8. package/esm2022/click-outside/ngxsmk-cdk-click-outside.mjs +5 -0
  9. package/esm2022/focus-trap/focus-trap.mjs +69 -0
  10. package/esm2022/focus-trap/index.mjs +2 -0
  11. package/esm2022/focus-trap/ngxsmk-cdk-focus-trap.mjs +5 -0
  12. package/esm2022/focusable/focusable.mjs +15 -0
  13. package/esm2022/focusable/index.mjs +2 -0
  14. package/esm2022/focusable/ngxsmk-cdk-focusable.mjs +5 -0
  15. package/esm2022/live-announcer/index.mjs +2 -0
  16. package/esm2022/live-announcer/live-announcer.mjs +57 -0
  17. package/esm2022/live-announcer/ngxsmk-cdk-live-announcer.mjs +5 -0
  18. package/esm2022/media-query/index.mjs +2 -0
  19. package/esm2022/media-query/media-query.mjs +22 -0
  20. package/esm2022/media-query/ngxsmk-cdk-media-query.mjs +5 -0
  21. package/esm2022/ngxsmk-cdk.mjs +5 -0
  22. package/esm2022/public-api.mjs +11 -0
  23. package/esm2022/scroll-lock/index.mjs +2 -0
  24. package/esm2022/scroll-lock/ngxsmk-cdk-scroll-lock.mjs +5 -0
  25. package/esm2022/scroll-lock/scroll-lock.mjs +45 -0
  26. package/esm2022/visually-hidden/index.mjs +2 -0
  27. package/esm2022/visually-hidden/ngxsmk-cdk-visually-hidden.mjs +5 -0
  28. package/esm2022/visually-hidden/visually-hidden.mjs +34 -0
  29. package/fesm2022/ngxsmk-cdk-click-outside.mjs +4 -4
  30. package/fesm2022/ngxsmk-cdk-focus-trap.mjs +10 -6
  31. package/fesm2022/ngxsmk-cdk-focus-trap.mjs.map +1 -1
  32. package/fesm2022/ngxsmk-cdk-live-announcer.mjs +3 -3
  33. package/fesm2022/ngxsmk-cdk-media-query.mjs +1 -2
  34. package/fesm2022/ngxsmk-cdk-media-query.mjs.map +1 -1
  35. package/fesm2022/ngxsmk-cdk-scroll-lock.mjs +3 -3
  36. package/fesm2022/ngxsmk-cdk-visually-hidden.mjs +3 -3
  37. package/fesm2022/ngxsmk-cdk.mjs +7 -266
  38. package/fesm2022/ngxsmk-cdk.mjs.map +1 -1
  39. package/focus-trap/focus-trap.d.ts +19 -0
  40. package/focus-trap/focus-trap.d.ts.map +1 -0
  41. package/focus-trap/index.d.ts +2 -0
  42. package/focus-trap/index.d.ts.map +1 -0
  43. package/focus-trap/ngxsmk-cdk-focus-trap.d.ts.map +1 -0
  44. package/focusable/focusable.d.ts +5 -0
  45. package/focusable/focusable.d.ts.map +1 -0
  46. package/focusable/index.d.ts +2 -0
  47. package/focusable/index.d.ts.map +1 -0
  48. package/focusable/ngxsmk-cdk-focusable.d.ts.map +1 -0
  49. package/index.d.ts +6 -0
  50. package/live-announcer/index.d.ts +2 -0
  51. package/live-announcer/index.d.ts.map +1 -0
  52. package/{types/ngxsmk-cdk-live-announcer.d.ts → live-announcer/live-announcer.d.ts} +4 -7
  53. package/live-announcer/live-announcer.d.ts.map +1 -0
  54. package/live-announcer/ngxsmk-cdk-live-announcer.d.ts.map +1 -0
  55. package/media-query/index.d.ts +2 -0
  56. package/media-query/index.d.ts.map +1 -0
  57. package/{types/ngxsmk-cdk-media-query.d.ts → media-query/media-query.d.ts} +2 -4
  58. package/media-query/media-query.d.ts.map +1 -0
  59. package/media-query/ngxsmk-cdk-media-query.d.ts.map +1 -0
  60. package/ngxsmk-cdk.d.ts.map +1 -0
  61. package/package.json +30 -15
  62. package/public-api.d.ts +8 -0
  63. package/public-api.d.ts.map +1 -0
  64. package/scroll-lock/index.d.ts +2 -0
  65. package/scroll-lock/index.d.ts.map +1 -0
  66. package/scroll-lock/ngxsmk-cdk-scroll-lock.d.ts.map +1 -0
  67. package/{types/ngxsmk-cdk-scroll-lock.d.ts → scroll-lock/scroll-lock.d.ts} +3 -5
  68. package/scroll-lock/scroll-lock.d.ts.map +1 -0
  69. package/visually-hidden/index.d.ts +2 -0
  70. package/visually-hidden/index.d.ts.map +1 -0
  71. package/visually-hidden/ngxsmk-cdk-visually-hidden.d.ts.map +1 -0
  72. package/{types/ngxsmk-cdk-visually-hidden.d.ts → visually-hidden/visually-hidden.d.ts} +3 -5
  73. package/visually-hidden/visually-hidden.d.ts.map +1 -0
  74. package/types/ngxsmk-cdk-focus-trap.d.ts +0 -21
  75. package/types/ngxsmk-cdk-focusable.d.ts +0 -6
  76. package/types/ngxsmk-cdk.d.ts +0 -96
@@ -1,5 +1,4 @@
1
- import * as i0 from '@angular/core';
2
-
1
+ import * as i0 from "@angular/core";
3
2
  /**
4
3
  * Emits when a pointer press lands outside the host element.
5
4
  *
@@ -7,12 +6,11 @@ import * as i0 from '@angular/core';
7
6
  * <div class="menu" (ngxsmkClickOutside)="close()">…</div>
8
7
  * ```
9
8
  */
10
- declare class NgxsmkClickOutside {
9
+ export declare class NgxsmkClickOutside {
11
10
  private readonly host;
12
- readonly ngxsmkClickOutside: i0.OutputEmitterRef<Event>;
11
+ readonly ngxsmkClickOutside: import("@angular/core").OutputEmitterRef<Event>;
13
12
  constructor();
14
13
  static ɵfac: i0.ɵɵFactoryDeclaration<NgxsmkClickOutside, never>;
15
14
  static ɵdir: i0.ɵɵDirectiveDeclaration<NgxsmkClickOutside, "[ngxsmkClickOutside]", never, {}, { "ngxsmkClickOutside": "ngxsmkClickOutside"; }, never, never, true, never>;
16
15
  }
17
-
18
- export { NgxsmkClickOutside };
16
+ //# sourceMappingURL=click-outside.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"click-outside.d.ts","sourceRoot":"","sources":["../../../../packages/cdk/click-outside/click-outside.ts"],"names":[],"mappings":";AASA;;;;;;GAMG;AACH,qBAIa,kBAAkB;IAC7B,OAAO,CAAC,QAAQ,CAAC,IAAI,CAA+C;IAEpE,QAAQ,CAAC,kBAAkB,kDAAmB;;yCAHnC,kBAAkB;2CAAlB,kBAAkB;CAuB9B"}
@@ -0,0 +1,2 @@
1
+ export * from './click-outside';
2
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../packages/cdk/click-outside/index.ts"],"names":[],"mappings":"AAAA,cAAc,iBAAiB,CAAC"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ngxsmk-cdk-click-outside.d.ts","sourceRoot":"","sources":["../../../../packages/cdk/click-outside/ngxsmk-cdk-click-outside.ts"],"names":[],"mappings":"AAAA;;GAEG;;AAEH,cAAc,SAAS,CAAC"}
@@ -0,0 +1,38 @@
1
+ import { DOCUMENT } from '@angular/common';
2
+ import { DestroyRef, Directive, ElementRef, inject, output, } from '@angular/core';
3
+ import * as i0 from "@angular/core";
4
+ /**
5
+ * Emits when a pointer press lands outside the host element.
6
+ *
7
+ * ```html
8
+ * <div class="menu" (ngxsmkClickOutside)="close()">…</div>
9
+ * ```
10
+ */
11
+ export class NgxsmkClickOutside {
12
+ host = inject(ElementRef);
13
+ ngxsmkClickOutside = output();
14
+ constructor() {
15
+ const document = inject(DOCUMENT);
16
+ const destroyRef = inject(DestroyRef);
17
+ const onPointerDown = (event) => {
18
+ const target = event.target;
19
+ if (target && !this.host.nativeElement.contains(target)) {
20
+ this.ngxsmkClickOutside.emit(event);
21
+ }
22
+ };
23
+ // Capture phase so stopped propagation inside other widgets can't
24
+ // swallow the outside press.
25
+ document.addEventListener('pointerdown', onPointerDown, true);
26
+ destroyRef.onDestroy(() => document.removeEventListener('pointerdown', onPointerDown, true));
27
+ }
28
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.0", ngImport: i0, type: NgxsmkClickOutside, deps: [], target: i0.ɵɵFactoryTarget.Directive });
29
+ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "17.3.0", type: NgxsmkClickOutside, isStandalone: true, selector: "[ngxsmkClickOutside]", outputs: { ngxsmkClickOutside: "ngxsmkClickOutside" }, ngImport: i0 });
30
+ }
31
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.0", ngImport: i0, type: NgxsmkClickOutside, decorators: [{
32
+ type: Directive,
33
+ args: [{
34
+ standalone: true,
35
+ selector: '[ngxsmkClickOutside]',
36
+ }]
37
+ }], ctorParameters: () => [] });
38
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2xpY2stb3V0c2lkZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2Nkay9jbGljay1vdXRzaWRlL2NsaWNrLW91dHNpZGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQzNDLE9BQU8sRUFDTCxVQUFVLEVBQ1YsU0FBUyxFQUNULFVBQVUsRUFDVixNQUFNLEVBQ04sTUFBTSxHQUNQLE1BQU0sZUFBZSxDQUFDOztBQUV2Qjs7Ozs7O0dBTUc7QUFLSCxNQUFNLE9BQU8sa0JBQWtCO0lBQ1osSUFBSSxHQUFHLE1BQU0sQ0FBMEIsVUFBVSxDQUFDLENBQUM7SUFFM0Qsa0JBQWtCLEdBQUcsTUFBTSxFQUFTLENBQUM7SUFFOUM7UUFDRSxNQUFNLFFBQVEsR0FBRyxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDbEMsTUFBTSxVQUFVLEdBQUcsTUFBTSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBRXRDLE1BQU0sYUFBYSxHQUFHLENBQUMsS0FBWSxFQUFFLEVBQUU7WUFDckMsTUFBTSxNQUFNLEdBQUcsS0FBSyxDQUFDLE1BQXFCLENBQUM7WUFDM0MsSUFBSSxNQUFNLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQztnQkFDeEQsSUFBSSxDQUFDLGtCQUFrQixDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUN0QyxDQUFDO1FBQ0gsQ0FBQyxDQUFDO1FBRUYsa0VBQWtFO1FBQ2xFLDZCQUE2QjtRQUM3QixRQUFRLENBQUMsZ0JBQWdCLENBQUMsYUFBYSxFQUFFLGFBQWEsRUFBRSxJQUFJLENBQUMsQ0FBQztRQUM5RCxVQUFVLENBQUMsU0FBUyxDQUFDLEdBQUcsRUFBRSxDQUN4QixRQUFRLENBQUMsbUJBQW1CLENBQUMsYUFBYSxFQUFFLGFBQWEsRUFBRSxJQUFJLENBQUMsQ0FDakUsQ0FBQztJQUNKLENBQUM7dUdBdEJVLGtCQUFrQjsyRkFBbEIsa0JBQWtCOzsyRkFBbEIsa0JBQWtCO2tCQUo5QixTQUFTO21CQUFDO29CQUNULFVBQVUsRUFBRSxJQUFJO29CQUNoQixRQUFRLEVBQUUsc0JBQXNCO2lCQUNqQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IERPQ1VNRU5UIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7XG4gIERlc3Ryb3lSZWYsXG4gIERpcmVjdGl2ZSxcbiAgRWxlbWVudFJlZixcbiAgaW5qZWN0LFxuICBvdXRwdXQsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG4vKipcbiAqIEVtaXRzIHdoZW4gYSBwb2ludGVyIHByZXNzIGxhbmRzIG91dHNpZGUgdGhlIGhvc3QgZWxlbWVudC5cbiAqXG4gKiBgYGBodG1sXG4gKiA8ZGl2IGNsYXNzPVwibWVudVwiIChuZ3hzbWtDbGlja091dHNpZGUpPVwiY2xvc2UoKVwiPuKApjwvZGl2PlxuICogYGBgXG4gKi9cbkBEaXJlY3RpdmUoe1xuICBzdGFuZGFsb25lOiB0cnVlLFxuICBzZWxlY3RvcjogJ1tuZ3hzbWtDbGlja091dHNpZGVdJyxcbn0pXG5leHBvcnQgY2xhc3MgTmd4c21rQ2xpY2tPdXRzaWRlIHtcbiAgcHJpdmF0ZSByZWFkb25seSBob3N0ID0gaW5qZWN0PEVsZW1lbnRSZWY8SFRNTEVsZW1lbnQ+PihFbGVtZW50UmVmKTtcblxuICByZWFkb25seSBuZ3hzbWtDbGlja091dHNpZGUgPSBvdXRwdXQ8RXZlbnQ+KCk7XG5cbiAgY29uc3RydWN0b3IoKSB7XG4gICAgY29uc3QgZG9jdW1lbnQgPSBpbmplY3QoRE9DVU1FTlQpO1xuICAgIGNvbnN0IGRlc3Ryb3lSZWYgPSBpbmplY3QoRGVzdHJveVJlZik7XG5cbiAgICBjb25zdCBvblBvaW50ZXJEb3duID0gKGV2ZW50OiBFdmVudCkgPT4ge1xuICAgICAgY29uc3QgdGFyZ2V0ID0gZXZlbnQudGFyZ2V0IGFzIE5vZGUgfCBudWxsO1xuICAgICAgaWYgKHRhcmdldCAmJiAhdGhpcy5ob3N0Lm5hdGl2ZUVsZW1lbnQuY29udGFpbnModGFyZ2V0KSkge1xuICAgICAgICB0aGlzLm5neHNta0NsaWNrT3V0c2lkZS5lbWl0KGV2ZW50KTtcbiAgICAgIH1cbiAgICB9O1xuXG4gICAgLy8gQ2FwdHVyZSBwaGFzZSBzbyBzdG9wcGVkIHByb3BhZ2F0aW9uIGluc2lkZSBvdGhlciB3aWRnZXRzIGNhbid0XG4gICAgLy8gc3dhbGxvdyB0aGUgb3V0c2lkZSBwcmVzcy5cbiAgICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCdwb2ludGVyZG93bicsIG9uUG9pbnRlckRvd24sIHRydWUpO1xuICAgIGRlc3Ryb3lSZWYub25EZXN0cm95KCgpID0+XG4gICAgICBkb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCdwb2ludGVyZG93bicsIG9uUG9pbnRlckRvd24sIHRydWUpLFxuICAgICk7XG4gIH1cbn1cbiJdfQ==
@@ -0,0 +1,2 @@
1
+ export * from './click-outside';
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9jZGsvY2xpY2stb3V0c2lkZS9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLGlCQUFpQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSAnLi9jbGljay1vdXRzaWRlJztcbiJdfQ==
@@ -0,0 +1,5 @@
1
+ /**
2
+ * Generated bundle index. Do not edit.
3
+ */
4
+ export * from './index';
5
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmd4c21rLWNkay1jbGljay1vdXRzaWRlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvY2RrL2NsaWNrLW91dHNpZGUvbmd4c21rLWNkay1jbGljay1vdXRzaWRlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztHQUVHO0FBRUgsY0FBYyxTQUFTLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEdlbmVyYXRlZCBidW5kbGUgaW5kZXguIERvIG5vdCBlZGl0LlxuICovXG5cbmV4cG9ydCAqIGZyb20gJy4vaW5kZXgnO1xuIl19
@@ -0,0 +1,69 @@
1
+ import { DOCUMENT } from '@angular/common';
2
+ import { DestroyRef, Directive, ElementRef, afterNextRender, booleanAttribute, inject, input, } from '@angular/core';
3
+ import { getFocusable } from '@ngxsmk/cdk/focusable';
4
+ import * as i0 from "@angular/core";
5
+ /**
6
+ * Traps Tab/Shift+Tab focus cycling inside the host element while active.
7
+ * With `ngxsmkFocusTrapAutoCapture`, moves focus into the trap on init and
8
+ * restores the previously focused element on destroy.
9
+ */
10
+ export class NgxsmkFocusTrap {
11
+ host = inject(ElementRef);
12
+ document = inject(DOCUMENT);
13
+ /** Set to `false` to disable the trap without removing the directive. */
14
+ ngxsmkFocusTrap = input(true, {
15
+ transform: (v) => v === '' || v === true || v === 'true',
16
+ });
17
+ /** Focus the first focusable child on init; restore focus on destroy. */
18
+ ngxsmkFocusTrapAutoCapture = input(false, {
19
+ transform: booleanAttribute,
20
+ });
21
+ constructor() {
22
+ const previouslyFocused = this.document.activeElement;
23
+ afterNextRender(() => {
24
+ if (this.ngxsmkFocusTrapAutoCapture()) {
25
+ const focusable = getFocusable(this.host.nativeElement);
26
+ (focusable[0] ?? this.host.nativeElement).focus();
27
+ }
28
+ });
29
+ inject(DestroyRef).onDestroy(() => {
30
+ if (this.ngxsmkFocusTrapAutoCapture()) {
31
+ previouslyFocused?.focus?.();
32
+ }
33
+ });
34
+ }
35
+ onKeydown(event) {
36
+ if (event.key !== 'Tab' || !this.ngxsmkFocusTrap()) {
37
+ return;
38
+ }
39
+ const focusable = getFocusable(this.host.nativeElement);
40
+ if (focusable.length === 0) {
41
+ event.preventDefault();
42
+ return;
43
+ }
44
+ const first = focusable[0];
45
+ const last = focusable[focusable.length - 1];
46
+ const active = this.document.activeElement;
47
+ if (event.shiftKey && (active === first || active === this.host.nativeElement)) {
48
+ event.preventDefault();
49
+ last.focus();
50
+ }
51
+ else if (!event.shiftKey && active === last) {
52
+ event.preventDefault();
53
+ first.focus();
54
+ }
55
+ }
56
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.0", ngImport: i0, type: NgxsmkFocusTrap, deps: [], target: i0.ɵɵFactoryTarget.Directive });
57
+ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "17.3.0", type: NgxsmkFocusTrap, isStandalone: true, selector: "[ngxsmkFocusTrap]", inputs: { ngxsmkFocusTrap: { classPropertyName: "ngxsmkFocusTrap", publicName: "ngxsmkFocusTrap", isSignal: true, isRequired: false, transformFunction: null }, ngxsmkFocusTrapAutoCapture: { classPropertyName: "ngxsmkFocusTrapAutoCapture", publicName: "ngxsmkFocusTrapAutoCapture", isSignal: true, isRequired: false, transformFunction: null } }, host: { listeners: { "keydown": "onKeydown($event)" } }, ngImport: i0 });
58
+ }
59
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.0", ngImport: i0, type: NgxsmkFocusTrap, decorators: [{
60
+ type: Directive,
61
+ args: [{
62
+ standalone: true,
63
+ selector: '[ngxsmkFocusTrap]',
64
+ host: {
65
+ '(keydown)': 'onKeydown($event)',
66
+ },
67
+ }]
68
+ }], ctorParameters: () => [] });
69
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9jdXMtdHJhcC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2Nkay9mb2N1cy10cmFwL2ZvY3VzLXRyYXAudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQzNDLE9BQU8sRUFDTCxVQUFVLEVBQ1YsU0FBUyxFQUNULFVBQVUsRUFDVixlQUFlLEVBQ2YsZ0JBQWdCLEVBQ2hCLE1BQU0sRUFDTixLQUFLLEdBQ04sTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLHVCQUF1QixDQUFDOztBQUVyRDs7OztHQUlHO0FBUUgsTUFBTSxPQUFPLGVBQWU7SUFDVCxJQUFJLEdBQUcsTUFBTSxDQUEwQixVQUFVLENBQUMsQ0FBQztJQUNuRCxRQUFRLEdBQUcsTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBRTdDLHlFQUF5RTtJQUNoRSxlQUFlLEdBQUcsS0FBSyxDQUFDLElBQUksRUFBRTtRQUNyQyxTQUFTLEVBQUUsQ0FBQyxDQUFVLEVBQUUsRUFBRSxDQUFDLENBQUMsS0FBSyxFQUFFLElBQUksQ0FBQyxLQUFLLElBQUksSUFBSSxDQUFDLEtBQUssTUFBTTtLQUNsRSxDQUFDLENBQUM7SUFFSCx5RUFBeUU7SUFDaEUsMEJBQTBCLEdBQUcsS0FBSyxDQUFDLEtBQUssRUFBRTtRQUNqRCxTQUFTLEVBQUUsZ0JBQWdCO0tBQzVCLENBQUMsQ0FBQztJQUVIO1FBQ0UsTUFBTSxpQkFBaUIsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLGFBQW1DLENBQUM7UUFFNUUsZUFBZSxDQUFDLEdBQUcsRUFBRTtZQUNuQixJQUFJLElBQUksQ0FBQywwQkFBMEIsRUFBRSxFQUFFLENBQUM7Z0JBQ3RDLE1BQU0sU0FBUyxHQUFHLFlBQVksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFDO2dCQUN4RCxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFDLEtBQUssRUFBRSxDQUFDO1lBQ3BELENBQUM7UUFDSCxDQUFDLENBQUMsQ0FBQztRQUVILE1BQU0sQ0FBQyxVQUFVLENBQUMsQ0FBQyxTQUFTLENBQUMsR0FBRyxFQUFFO1lBQ2hDLElBQUksSUFBSSxDQUFDLDBCQUEwQixFQUFFLEVBQUUsQ0FBQztnQkFDdEMsaUJBQWlCLEVBQUUsS0FBSyxFQUFFLEVBQUUsQ0FBQztZQUMvQixDQUFDO1FBQ0gsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRVMsU0FBUyxDQUFDLEtBQW9CO1FBQ3RDLElBQUksS0FBSyxDQUFDLEdBQUcsS0FBSyxLQUFLLElBQUksQ0FBQyxJQUFJLENBQUMsZUFBZSxFQUFFLEVBQUUsQ0FBQztZQUNuRCxPQUFPO1FBQ1QsQ0FBQztRQUNELE1BQU0sU0FBUyxHQUFHLFlBQVksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFDO1FBQ3hELElBQUksU0FBUyxDQUFDLE1BQU0sS0FBSyxDQUFDLEVBQUUsQ0FBQztZQUMzQixLQUFLLENBQUMsY0FBYyxFQUFFLENBQUM7WUFDdkIsT0FBTztRQUNULENBQUM7UUFFRCxNQUFNLEtBQUssR0FBRyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDM0IsTUFBTSxJQUFJLEdBQUcsU0FBUyxDQUFDLFNBQVMsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUM7UUFDN0MsTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxhQUFhLENBQUM7UUFFM0MsSUFBSSxLQUFLLENBQUMsUUFBUSxJQUFJLENBQUMsTUFBTSxLQUFLLEtBQUssSUFBSSxNQUFNLEtBQUssSUFBSSxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsRUFBRSxDQUFDO1lBQy9FLEtBQUssQ0FBQyxjQUFjLEVBQUUsQ0FBQztZQUN2QixJQUFJLENBQUMsS0FBSyxFQUFFLENBQUM7UUFDZixDQUFDO2FBQU0sSUFBSSxDQUFDLEtBQUssQ0FBQyxRQUFRLElBQUksTUFBTSxLQUFLLElBQUksRUFBRSxDQUFDO1lBQzlDLEtBQUssQ0FBQyxjQUFjLEVBQUUsQ0FBQztZQUN2QixLQUFLLENBQUMsS0FBSyxFQUFFLENBQUM7UUFDaEIsQ0FBQztJQUNILENBQUM7dUdBcERVLGVBQWU7MkZBQWYsZUFBZTs7MkZBQWYsZUFBZTtrQkFQM0IsU0FBUzttQkFBQztvQkFDVCxVQUFVLEVBQUUsSUFBSTtvQkFDaEIsUUFBUSxFQUFFLG1CQUFtQjtvQkFDN0IsSUFBSSxFQUFFO3dCQUNKLFdBQVcsRUFBRSxtQkFBbUI7cUJBQ2pDO2lCQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRE9DVU1FTlQgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHtcbiAgRGVzdHJveVJlZixcbiAgRGlyZWN0aXZlLFxuICBFbGVtZW50UmVmLFxuICBhZnRlck5leHRSZW5kZXIsXG4gIGJvb2xlYW5BdHRyaWJ1dGUsXG4gIGluamVjdCxcbiAgaW5wdXQsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgZ2V0Rm9jdXNhYmxlIH0gZnJvbSAnQG5neHNtay9jZGsvZm9jdXNhYmxlJztcblxuLyoqXG4gKiBUcmFwcyBUYWIvU2hpZnQrVGFiIGZvY3VzIGN5Y2xpbmcgaW5zaWRlIHRoZSBob3N0IGVsZW1lbnQgd2hpbGUgYWN0aXZlLlxuICogV2l0aCBgbmd4c21rRm9jdXNUcmFwQXV0b0NhcHR1cmVgLCBtb3ZlcyBmb2N1cyBpbnRvIHRoZSB0cmFwIG9uIGluaXQgYW5kXG4gKiByZXN0b3JlcyB0aGUgcHJldmlvdXNseSBmb2N1c2VkIGVsZW1lbnQgb24gZGVzdHJveS5cbiAqL1xuQERpcmVjdGl2ZSh7XG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIHNlbGVjdG9yOiAnW25neHNta0ZvY3VzVHJhcF0nLFxuICBob3N0OiB7XG4gICAgJyhrZXlkb3duKSc6ICdvbktleWRvd24oJGV2ZW50KScsXG4gIH0sXG59KVxuZXhwb3J0IGNsYXNzIE5neHNta0ZvY3VzVHJhcCB7XG4gIHByaXZhdGUgcmVhZG9ubHkgaG9zdCA9IGluamVjdDxFbGVtZW50UmVmPEhUTUxFbGVtZW50Pj4oRWxlbWVudFJlZik7XG4gIHByaXZhdGUgcmVhZG9ubHkgZG9jdW1lbnQgPSBpbmplY3QoRE9DVU1FTlQpO1xuXG4gIC8qKiBTZXQgdG8gYGZhbHNlYCB0byBkaXNhYmxlIHRoZSB0cmFwIHdpdGhvdXQgcmVtb3ZpbmcgdGhlIGRpcmVjdGl2ZS4gKi9cbiAgcmVhZG9ubHkgbmd4c21rRm9jdXNUcmFwID0gaW5wdXQodHJ1ZSwge1xuICAgIHRyYW5zZm9ybTogKHY6IHVua25vd24pID0+IHYgPT09ICcnIHx8IHYgPT09IHRydWUgfHwgdiA9PT0gJ3RydWUnLFxuICB9KTtcblxuICAvKiogRm9jdXMgdGhlIGZpcnN0IGZvY3VzYWJsZSBjaGlsZCBvbiBpbml0OyByZXN0b3JlIGZvY3VzIG9uIGRlc3Ryb3kuICovXG4gIHJlYWRvbmx5IG5neHNta0ZvY3VzVHJhcEF1dG9DYXB0dXJlID0gaW5wdXQoZmFsc2UsIHtcbiAgICB0cmFuc2Zvcm06IGJvb2xlYW5BdHRyaWJ1dGUsXG4gIH0pO1xuXG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIGNvbnN0IHByZXZpb3VzbHlGb2N1c2VkID0gdGhpcy5kb2N1bWVudC5hY3RpdmVFbGVtZW50IGFzIEhUTUxFbGVtZW50IHwgbnVsbDtcblxuICAgIGFmdGVyTmV4dFJlbmRlcigoKSA9PiB7XG4gICAgICBpZiAodGhpcy5uZ3hzbWtGb2N1c1RyYXBBdXRvQ2FwdHVyZSgpKSB7XG4gICAgICAgIGNvbnN0IGZvY3VzYWJsZSA9IGdldEZvY3VzYWJsZSh0aGlzLmhvc3QubmF0aXZlRWxlbWVudCk7XG4gICAgICAgIChmb2N1c2FibGVbMF0gPz8gdGhpcy5ob3N0Lm5hdGl2ZUVsZW1lbnQpLmZvY3VzKCk7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICBpbmplY3QoRGVzdHJveVJlZikub25EZXN0cm95KCgpID0+IHtcbiAgICAgIGlmICh0aGlzLm5neHNta0ZvY3VzVHJhcEF1dG9DYXB0dXJlKCkpIHtcbiAgICAgICAgcHJldmlvdXNseUZvY3VzZWQ/LmZvY3VzPy4oKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIHByb3RlY3RlZCBvbktleWRvd24oZXZlbnQ6IEtleWJvYXJkRXZlbnQpOiB2b2lkIHtcbiAgICBpZiAoZXZlbnQua2V5ICE9PSAnVGFiJyB8fCAhdGhpcy5uZ3hzbWtGb2N1c1RyYXAoKSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBjb25zdCBmb2N1c2FibGUgPSBnZXRGb2N1c2FibGUodGhpcy5ob3N0Lm5hdGl2ZUVsZW1lbnQpO1xuICAgIGlmIChmb2N1c2FibGUubGVuZ3RoID09PSAwKSB7XG4gICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IGZpcnN0ID0gZm9jdXNhYmxlWzBdO1xuICAgIGNvbnN0IGxhc3QgPSBmb2N1c2FibGVbZm9jdXNhYmxlLmxlbmd0aCAtIDFdO1xuICAgIGNvbnN0IGFjdGl2ZSA9IHRoaXMuZG9jdW1lbnQuYWN0aXZlRWxlbWVudDtcblxuICAgIGlmIChldmVudC5zaGlmdEtleSAmJiAoYWN0aXZlID09PSBmaXJzdCB8fCBhY3RpdmUgPT09IHRoaXMuaG9zdC5uYXRpdmVFbGVtZW50KSkge1xuICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgIGxhc3QuZm9jdXMoKTtcbiAgICB9IGVsc2UgaWYgKCFldmVudC5zaGlmdEtleSAmJiBhY3RpdmUgPT09IGxhc3QpIHtcbiAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICBmaXJzdC5mb2N1cygpO1xuICAgIH1cbiAgfVxufVxuIl19
@@ -0,0 +1,2 @@
1
+ export * from './focus-trap';
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9jZGsvZm9jdXMtdHJhcC9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLGNBQWMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gJy4vZm9jdXMtdHJhcCc7XG4iXX0=
@@ -0,0 +1,5 @@
1
+ /**
2
+ * Generated bundle index. Do not edit.
3
+ */
4
+ export * from './index';
5
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmd4c21rLWNkay1mb2N1cy10cmFwLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvY2RrL2ZvY3VzLXRyYXAvbmd4c21rLWNkay1mb2N1cy10cmFwLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztHQUVHO0FBRUgsY0FBYyxTQUFTLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEdlbmVyYXRlZCBidW5kbGUgaW5kZXguIERvIG5vdCBlZGl0LlxuICovXG5cbmV4cG9ydCAqIGZyb20gJy4vaW5kZXgnO1xuIl19
@@ -0,0 +1,15 @@
1
+ /** Selector matching elements that can receive keyboard focus. */
2
+ export const FOCUSABLE_SELECTOR = [
3
+ 'a[href]',
4
+ 'button:not([disabled])',
5
+ 'input:not([disabled]):not([type="hidden"])',
6
+ 'select:not([disabled])',
7
+ 'textarea:not([disabled])',
8
+ '[tabindex]:not([tabindex="-1"])',
9
+ '[contenteditable="true"]',
10
+ ].join(', ');
11
+ /** All keyboard-focusable elements inside `container`, in DOM order. */
12
+ export function getFocusable(container) {
13
+ return Array.from(container.querySelectorAll(FOCUSABLE_SELECTOR)).filter((el) => el.offsetParent !== null || el === el.ownerDocument.activeElement);
14
+ }
15
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9jdXNhYmxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvY2RrL2ZvY3VzYWJsZS9mb2N1c2FibGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsa0VBQWtFO0FBQ2xFLE1BQU0sQ0FBQyxNQUFNLGtCQUFrQixHQUFHO0lBQ2hDLFNBQVM7SUFDVCx3QkFBd0I7SUFDeEIsNENBQTRDO0lBQzVDLHdCQUF3QjtJQUN4QiwwQkFBMEI7SUFDMUIsaUNBQWlDO0lBQ2pDLDBCQUEwQjtDQUMzQixDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztBQUViLHdFQUF3RTtBQUN4RSxNQUFNLFVBQVUsWUFBWSxDQUFDLFNBQXNCO0lBQ2pELE9BQU8sS0FBSyxDQUFDLElBQUksQ0FDZixTQUFTLENBQUMsZ0JBQWdCLENBQWMsa0JBQWtCLENBQUMsQ0FDNUQsQ0FBQyxNQUFNLENBQ04sQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLEVBQUUsQ0FBQyxZQUFZLEtBQUssSUFBSSxJQUFJLEVBQUUsS0FBSyxFQUFFLENBQUMsYUFBYSxDQUFDLGFBQWEsQ0FDMUUsQ0FBQztBQUNKLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKiogU2VsZWN0b3IgbWF0Y2hpbmcgZWxlbWVudHMgdGhhdCBjYW4gcmVjZWl2ZSBrZXlib2FyZCBmb2N1cy4gKi9cbmV4cG9ydCBjb25zdCBGT0NVU0FCTEVfU0VMRUNUT1IgPSBbXG4gICdhW2hyZWZdJyxcbiAgJ2J1dHRvbjpub3QoW2Rpc2FibGVkXSknLFxuICAnaW5wdXQ6bm90KFtkaXNhYmxlZF0pOm5vdChbdHlwZT1cImhpZGRlblwiXSknLFxuICAnc2VsZWN0Om5vdChbZGlzYWJsZWRdKScsXG4gICd0ZXh0YXJlYTpub3QoW2Rpc2FibGVkXSknLFxuICAnW3RhYmluZGV4XTpub3QoW3RhYmluZGV4PVwiLTFcIl0pJyxcbiAgJ1tjb250ZW50ZWRpdGFibGU9XCJ0cnVlXCJdJyxcbl0uam9pbignLCAnKTtcblxuLyoqIEFsbCBrZXlib2FyZC1mb2N1c2FibGUgZWxlbWVudHMgaW5zaWRlIGBjb250YWluZXJgLCBpbiBET00gb3JkZXIuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0Rm9jdXNhYmxlKGNvbnRhaW5lcjogSFRNTEVsZW1lbnQpOiBIVE1MRWxlbWVudFtdIHtcbiAgcmV0dXJuIEFycmF5LmZyb20oXG4gICAgY29udGFpbmVyLnF1ZXJ5U2VsZWN0b3JBbGw8SFRNTEVsZW1lbnQ+KEZPQ1VTQUJMRV9TRUxFQ1RPUiksXG4gICkuZmlsdGVyKFxuICAgIChlbCkgPT4gZWwub2Zmc2V0UGFyZW50ICE9PSBudWxsIHx8IGVsID09PSBlbC5vd25lckRvY3VtZW50LmFjdGl2ZUVsZW1lbnQsXG4gICk7XG59XG4iXX0=
@@ -0,0 +1,2 @@
1
+ export * from './focusable';
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9jZGsvZm9jdXNhYmxlL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMsYUFBYSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSAnLi9mb2N1c2FibGUnO1xuIl19
@@ -0,0 +1,5 @@
1
+ /**
2
+ * Generated bundle index. Do not edit.
3
+ */
4
+ export * from './index';
5
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmd4c21rLWNkay1mb2N1c2FibGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9jZGsvZm9jdXNhYmxlL25neHNtay1jZGstZm9jdXNhYmxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztHQUVHO0FBRUgsY0FBYyxTQUFTLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEdlbmVyYXRlZCBidW5kbGUgaW5kZXguIERvIG5vdCBlZGl0LlxuICovXG5cbmV4cG9ydCAqIGZyb20gJy4vaW5kZXgnO1xuIl19
@@ -0,0 +1,2 @@
1
+ export * from './live-announcer';
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9jZGsvbGl2ZS1hbm5vdW5jZXIvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYyxrQkFBa0IsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gJy4vbGl2ZS1hbm5vdW5jZXInO1xuIl19
@@ -0,0 +1,57 @@
1
+ import { Injectable, inject } from '@angular/core';
2
+ import { DOCUMENT } from '@angular/common';
3
+ import * as i0 from "@angular/core";
4
+ /**
5
+ * Announces messages to screen readers through a visually hidden
6
+ * `aria-live` region appended to the document body.
7
+ */
8
+ export class NgxsmkLiveAnnouncer {
9
+ document = inject(DOCUMENT);
10
+ region = null;
11
+ clearTimer = null;
12
+ announce(message, politeness = 'polite') {
13
+ const region = this.ensureRegion();
14
+ region.setAttribute('aria-live', politeness);
15
+ // Clear first so repeating the same message is re-announced.
16
+ region.textContent = '';
17
+ setTimeout(() => (region.textContent = message));
18
+ if (this.clearTimer) {
19
+ clearTimeout(this.clearTimer);
20
+ }
21
+ this.clearTimer = setTimeout(() => (region.textContent = ''), 10_000);
22
+ }
23
+ ngOnDestroy() {
24
+ if (this.clearTimer) {
25
+ clearTimeout(this.clearTimer);
26
+ }
27
+ this.region?.remove();
28
+ }
29
+ ensureRegion() {
30
+ if (!this.region) {
31
+ const region = this.document.createElement('div');
32
+ region.setAttribute('aria-atomic', 'true');
33
+ region.className = 'ngxsmk-live-announcer';
34
+ Object.assign(region.style, {
35
+ position: 'absolute',
36
+ width: '1px',
37
+ height: '1px',
38
+ margin: '-1px',
39
+ padding: '0',
40
+ border: '0',
41
+ overflow: 'hidden',
42
+ clipPath: 'inset(100%)',
43
+ whiteSpace: 'nowrap',
44
+ });
45
+ this.document.body.appendChild(region);
46
+ this.region = region;
47
+ }
48
+ return this.region;
49
+ }
50
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.0", ngImport: i0, type: NgxsmkLiveAnnouncer, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
51
+ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.3.0", ngImport: i0, type: NgxsmkLiveAnnouncer, providedIn: 'root' });
52
+ }
53
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.0", ngImport: i0, type: NgxsmkLiveAnnouncer, decorators: [{
54
+ type: Injectable,
55
+ args: [{ providedIn: 'root' }]
56
+ }] });
57
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGl2ZS1hbm5vdW5jZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9jZGsvbGl2ZS1hbm5vdW5jZXIvbGl2ZS1hbm5vdW5jZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBYSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDOUQsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGlCQUFpQixDQUFDOztBQUkzQzs7O0dBR0c7QUFFSCxNQUFNLE9BQU8sbUJBQW1CO0lBQ2IsUUFBUSxHQUFHLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQztJQUNyQyxNQUFNLEdBQXVCLElBQUksQ0FBQztJQUNsQyxVQUFVLEdBQXlDLElBQUksQ0FBQztJQUVoRSxRQUFRLENBQUMsT0FBZSxFQUFFLGFBQWtDLFFBQVE7UUFDbEUsTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDO1FBQ25DLE1BQU0sQ0FBQyxZQUFZLENBQUMsV0FBVyxFQUFFLFVBQVUsQ0FBQyxDQUFDO1FBRTdDLDZEQUE2RDtRQUM3RCxNQUFNLENBQUMsV0FBVyxHQUFHLEVBQUUsQ0FBQztRQUN4QixVQUFVLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxNQUFNLENBQUMsV0FBVyxHQUFHLE9BQU8sQ0FBQyxDQUFDLENBQUM7UUFFakQsSUFBSSxJQUFJLENBQUMsVUFBVSxFQUFFLENBQUM7WUFDcEIsWUFBWSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUNoQyxDQUFDO1FBQ0QsSUFBSSxDQUFDLFVBQVUsR0FBRyxVQUFVLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxNQUFNLENBQUMsV0FBVyxHQUFHLEVBQUUsQ0FBQyxFQUFFLE1BQU0sQ0FBQyxDQUFDO0lBQ3hFLENBQUM7SUFFRCxXQUFXO1FBQ1QsSUFBSSxJQUFJLENBQUMsVUFBVSxFQUFFLENBQUM7WUFDcEIsWUFBWSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUNoQyxDQUFDO1FBQ0QsSUFBSSxDQUFDLE1BQU0sRUFBRSxNQUFNLEVBQUUsQ0FBQztJQUN4QixDQUFDO0lBRU8sWUFBWTtRQUNsQixJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDO1lBQ2pCLE1BQU0sTUFBTSxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsYUFBYSxDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQ2xELE1BQU0sQ0FBQyxZQUFZLENBQUMsYUFBYSxFQUFFLE1BQU0sQ0FBQyxDQUFDO1lBQzNDLE1BQU0sQ0FBQyxTQUFTLEdBQUcsdUJBQXVCLENBQUM7WUFDM0MsTUFBTSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsS0FBSyxFQUFFO2dCQUMxQixRQUFRLEVBQUUsVUFBVTtnQkFDcEIsS0FBSyxFQUFFLEtBQUs7Z0JBQ1osTUFBTSxFQUFFLEtBQUs7Z0JBQ2IsTUFBTSxFQUFFLE1BQU07Z0JBQ2QsT0FBTyxFQUFFLEdBQUc7Z0JBQ1osTUFBTSxFQUFFLEdBQUc7Z0JBQ1gsUUFBUSxFQUFFLFFBQVE7Z0JBQ2xCLFFBQVEsRUFBRSxhQUFhO2dCQUN2QixVQUFVLEVBQUUsUUFBUTthQUNyQixDQUFDLENBQUM7WUFDSCxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsTUFBTSxDQUFDLENBQUM7WUFDdkMsSUFBSSxDQUFDLE1BQU0sR0FBRyxNQUFNLENBQUM7UUFDdkIsQ0FBQztRQUNELE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQztJQUNyQixDQUFDO3VHQTlDVSxtQkFBbUI7MkdBQW5CLG1CQUFtQixjQUROLE1BQU07OzJGQUNuQixtQkFBbUI7a0JBRC9CLFVBQVU7bUJBQUMsRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSwgT25EZXN0cm95LCBpbmplY3QgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IERPQ1VNRU5UIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcblxuZXhwb3J0IHR5cGUgQW5ub3VuY2VyUG9saXRlbmVzcyA9ICdwb2xpdGUnIHwgJ2Fzc2VydGl2ZSc7XG5cbi8qKlxuICogQW5ub3VuY2VzIG1lc3NhZ2VzIHRvIHNjcmVlbiByZWFkZXJzIHRocm91Z2ggYSB2aXN1YWxseSBoaWRkZW5cbiAqIGBhcmlhLWxpdmVgIHJlZ2lvbiBhcHBlbmRlZCB0byB0aGUgZG9jdW1lbnQgYm9keS5cbiAqL1xuQEluamVjdGFibGUoeyBwcm92aWRlZEluOiAncm9vdCcgfSlcbmV4cG9ydCBjbGFzcyBOZ3hzbWtMaXZlQW5ub3VuY2VyIGltcGxlbWVudHMgT25EZXN0cm95IHtcbiAgcHJpdmF0ZSByZWFkb25seSBkb2N1bWVudCA9IGluamVjdChET0NVTUVOVCk7XG4gIHByaXZhdGUgcmVnaW9uOiBIVE1MRWxlbWVudCB8IG51bGwgPSBudWxsO1xuICBwcml2YXRlIGNsZWFyVGltZXI6IFJldHVyblR5cGU8dHlwZW9mIHNldFRpbWVvdXQ+IHwgbnVsbCA9IG51bGw7XG5cbiAgYW5ub3VuY2UobWVzc2FnZTogc3RyaW5nLCBwb2xpdGVuZXNzOiBBbm5vdW5jZXJQb2xpdGVuZXNzID0gJ3BvbGl0ZScpOiB2b2lkIHtcbiAgICBjb25zdCByZWdpb24gPSB0aGlzLmVuc3VyZVJlZ2lvbigpO1xuICAgIHJlZ2lvbi5zZXRBdHRyaWJ1dGUoJ2FyaWEtbGl2ZScsIHBvbGl0ZW5lc3MpO1xuXG4gICAgLy8gQ2xlYXIgZmlyc3Qgc28gcmVwZWF0aW5nIHRoZSBzYW1lIG1lc3NhZ2UgaXMgcmUtYW5ub3VuY2VkLlxuICAgIHJlZ2lvbi50ZXh0Q29udGVudCA9ICcnO1xuICAgIHNldFRpbWVvdXQoKCkgPT4gKHJlZ2lvbi50ZXh0Q29udGVudCA9IG1lc3NhZ2UpKTtcblxuICAgIGlmICh0aGlzLmNsZWFyVGltZXIpIHtcbiAgICAgIGNsZWFyVGltZW91dCh0aGlzLmNsZWFyVGltZXIpO1xuICAgIH1cbiAgICB0aGlzLmNsZWFyVGltZXIgPSBzZXRUaW1lb3V0KCgpID0+IChyZWdpb24udGV4dENvbnRlbnQgPSAnJyksIDEwXzAwMCk7XG4gIH1cblxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5jbGVhclRpbWVyKSB7XG4gICAgICBjbGVhclRpbWVvdXQodGhpcy5jbGVhclRpbWVyKTtcbiAgICB9XG4gICAgdGhpcy5yZWdpb24/LnJlbW92ZSgpO1xuICB9XG5cbiAgcHJpdmF0ZSBlbnN1cmVSZWdpb24oKTogSFRNTEVsZW1lbnQge1xuICAgIGlmICghdGhpcy5yZWdpb24pIHtcbiAgICAgIGNvbnN0IHJlZ2lvbiA9IHRoaXMuZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7XG4gICAgICByZWdpb24uc2V0QXR0cmlidXRlKCdhcmlhLWF0b21pYycsICd0cnVlJyk7XG4gICAgICByZWdpb24uY2xhc3NOYW1lID0gJ25neHNtay1saXZlLWFubm91bmNlcic7XG4gICAgICBPYmplY3QuYXNzaWduKHJlZ2lvbi5zdHlsZSwge1xuICAgICAgICBwb3NpdGlvbjogJ2Fic29sdXRlJyxcbiAgICAgICAgd2lkdGg6ICcxcHgnLFxuICAgICAgICBoZWlnaHQ6ICcxcHgnLFxuICAgICAgICBtYXJnaW46ICctMXB4JyxcbiAgICAgICAgcGFkZGluZzogJzAnLFxuICAgICAgICBib3JkZXI6ICcwJyxcbiAgICAgICAgb3ZlcmZsb3c6ICdoaWRkZW4nLFxuICAgICAgICBjbGlwUGF0aDogJ2luc2V0KDEwMCUpJyxcbiAgICAgICAgd2hpdGVTcGFjZTogJ25vd3JhcCcsXG4gICAgICB9KTtcbiAgICAgIHRoaXMuZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChyZWdpb24pO1xuICAgICAgdGhpcy5yZWdpb24gPSByZWdpb247XG4gICAgfVxuICAgIHJldHVybiB0aGlzLnJlZ2lvbjtcbiAgfVxufVxuIl19
@@ -0,0 +1,5 @@
1
+ /**
2
+ * Generated bundle index. Do not edit.
3
+ */
4
+ export * from './index';
5
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmd4c21rLWNkay1saXZlLWFubm91bmNlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2Nkay9saXZlLWFubm91bmNlci9uZ3hzbWstY2RrLWxpdmUtYW5ub3VuY2VyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztHQUVHO0FBRUgsY0FBYyxTQUFTLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEdlbmVyYXRlZCBidW5kbGUgaW5kZXguIERvIG5vdCBlZGl0LlxuICovXG5cbmV4cG9ydCAqIGZyb20gJy4vaW5kZXgnO1xuIl19
@@ -0,0 +1,2 @@
1
+ export * from './media-query';
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9jZGsvbWVkaWEtcXVlcnkvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYyxlQUFlLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tICcuL21lZGlhLXF1ZXJ5JztcbiJdfQ==
@@ -0,0 +1,22 @@
1
+ import { DOCUMENT } from '@angular/common';
2
+ import { DestroyRef, inject, signal, } from '@angular/core';
3
+ /**
4
+ * Reactive media query. Must be called in an injection context.
5
+ *
6
+ * ```ts
7
+ * private readonly isMobile = injectMediaQuery('(max-width: 767px)');
8
+ * ```
9
+ */
10
+ export function injectMediaQuery(query) {
11
+ const window = inject(DOCUMENT).defaultView;
12
+ const matches = signal(false);
13
+ const media = window?.matchMedia?.(query);
14
+ if (media) {
15
+ matches.set(media.matches);
16
+ const listener = (event) => matches.set(event.matches);
17
+ media.addEventListener('change', listener);
18
+ inject(DestroyRef).onDestroy(() => media.removeEventListener('change', listener));
19
+ }
20
+ return matches.asReadonly();
21
+ }
22
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVkaWEtcXVlcnkuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9jZGsvbWVkaWEtcXVlcnkvbWVkaWEtcXVlcnkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQzNDLE9BQU8sRUFDTCxVQUFVLEVBRVYsTUFBTSxFQUNOLE1BQU0sR0FDUCxNQUFNLGVBQWUsQ0FBQztBQUV2Qjs7Ozs7O0dBTUc7QUFDSCxNQUFNLFVBQVUsZ0JBQWdCLENBQUMsS0FBYTtJQUM1QyxNQUFNLE1BQU0sR0FBRyxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUMsV0FBVyxDQUFDO0lBQzVDLE1BQU0sT0FBTyxHQUFHLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUU5QixNQUFNLEtBQUssR0FBRyxNQUFNLEVBQUUsVUFBVSxFQUFFLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDMUMsSUFBSSxLQUFLLEVBQUUsQ0FBQztRQUNWLE9BQU8sQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQzNCLE1BQU0sUUFBUSxHQUFHLENBQUMsS0FBMEIsRUFBRSxFQUFFLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDNUUsS0FBSyxDQUFDLGdCQUFnQixDQUFDLFFBQVEsRUFBRSxRQUFRLENBQUMsQ0FBQztRQUMzQyxNQUFNLENBQUMsVUFBVSxDQUFDLENBQUMsU0FBUyxDQUFDLEdBQUcsRUFBRSxDQUNoQyxLQUFLLENBQUMsbUJBQW1CLENBQUMsUUFBUSxFQUFFLFFBQVEsQ0FBQyxDQUM5QyxDQUFDO0lBQ0osQ0FBQztJQUVELE9BQU8sT0FBTyxDQUFDLFVBQVUsRUFBRSxDQUFDO0FBQzlCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBET0NVTUVOVCB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQge1xuICBEZXN0cm95UmVmLFxuICBTaWduYWwsXG4gIGluamVjdCxcbiAgc2lnbmFsLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuLyoqXG4gKiBSZWFjdGl2ZSBtZWRpYSBxdWVyeS4gTXVzdCBiZSBjYWxsZWQgaW4gYW4gaW5qZWN0aW9uIGNvbnRleHQuXG4gKlxuICogYGBgdHNcbiAqIHByaXZhdGUgcmVhZG9ubHkgaXNNb2JpbGUgPSBpbmplY3RNZWRpYVF1ZXJ5KCcobWF4LXdpZHRoOiA3NjdweCknKTtcbiAqIGBgYFxuICovXG5leHBvcnQgZnVuY3Rpb24gaW5qZWN0TWVkaWFRdWVyeShxdWVyeTogc3RyaW5nKTogU2lnbmFsPGJvb2xlYW4+IHtcbiAgY29uc3Qgd2luZG93ID0gaW5qZWN0KERPQ1VNRU5UKS5kZWZhdWx0VmlldztcbiAgY29uc3QgbWF0Y2hlcyA9IHNpZ25hbChmYWxzZSk7XG5cbiAgY29uc3QgbWVkaWEgPSB3aW5kb3c/Lm1hdGNoTWVkaWE/LihxdWVyeSk7XG4gIGlmIChtZWRpYSkge1xuICAgIG1hdGNoZXMuc2V0KG1lZGlhLm1hdGNoZXMpO1xuICAgIGNvbnN0IGxpc3RlbmVyID0gKGV2ZW50OiBNZWRpYVF1ZXJ5TGlzdEV2ZW50KSA9PiBtYXRjaGVzLnNldChldmVudC5tYXRjaGVzKTtcbiAgICBtZWRpYS5hZGRFdmVudExpc3RlbmVyKCdjaGFuZ2UnLCBsaXN0ZW5lcik7XG4gICAgaW5qZWN0KERlc3Ryb3lSZWYpLm9uRGVzdHJveSgoKSA9PlxuICAgICAgbWVkaWEucmVtb3ZlRXZlbnRMaXN0ZW5lcignY2hhbmdlJywgbGlzdGVuZXIpLFxuICAgICk7XG4gIH1cblxuICByZXR1cm4gbWF0Y2hlcy5hc1JlYWRvbmx5KCk7XG59XG4iXX0=
@@ -0,0 +1,5 @@
1
+ /**
2
+ * Generated bundle index. Do not edit.
3
+ */
4
+ export * from './index';
5
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmd4c21rLWNkay1tZWRpYS1xdWVyeS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2Nkay9tZWRpYS1xdWVyeS9uZ3hzbWstY2RrLW1lZGlhLXF1ZXJ5LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztHQUVHO0FBRUgsY0FBYyxTQUFTLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEdlbmVyYXRlZCBidW5kbGUgaW5kZXguIERvIG5vdCBlZGl0LlxuICovXG5cbmV4cG9ydCAqIGZyb20gJy4vaW5kZXgnO1xuIl19
@@ -0,0 +1,5 @@
1
+ /**
2
+ * Generated bundle index. Do not edit.
3
+ */
4
+ export * from './public-api';
5
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmd4c21rLWNkay5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3BhY2thZ2VzL2Nkay9uZ3hzbWstY2RrLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztHQUVHO0FBRUgsY0FBYyxjQUFjLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEdlbmVyYXRlZCBidW5kbGUgaW5kZXguIERvIG5vdCBlZGl0LlxuICovXG5cbmV4cG9ydCAqIGZyb20gJy4vcHVibGljLWFwaSc7XG4iXX0=
@@ -0,0 +1,11 @@
1
+ /*
2
+ * Public API Surface of @ngxsmk/cdk
3
+ */
4
+ export * from '@ngxsmk/cdk/click-outside';
5
+ export * from '@ngxsmk/cdk/focusable';
6
+ export * from '@ngxsmk/cdk/focus-trap';
7
+ export * from '@ngxsmk/cdk/live-announcer';
8
+ export * from '@ngxsmk/cdk/media-query';
9
+ export * from '@ngxsmk/cdk/scroll-lock';
10
+ export * from '@ngxsmk/cdk/visually-hidden';
11
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljLWFwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3BhY2thZ2VzL2Nkay9wdWJsaWMtYXBpLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztHQUVHO0FBRUgsY0FBYywyQkFBMkIsQ0FBQztBQUMxQyxjQUFjLHVCQUF1QixDQUFDO0FBQ3RDLGNBQWMsd0JBQXdCLENBQUM7QUFDdkMsY0FBYyw0QkFBNEIsQ0FBQztBQUMzQyxjQUFjLHlCQUF5QixDQUFDO0FBQ3hDLGNBQWMseUJBQXlCLENBQUM7QUFDeEMsY0FBYyw2QkFBNkIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qXG4gKiBQdWJsaWMgQVBJIFN1cmZhY2Ugb2YgQG5neHNtay9jZGtcbiAqL1xuXG5leHBvcnQgKiBmcm9tICdAbmd4c21rL2Nkay9jbGljay1vdXRzaWRlJztcbmV4cG9ydCAqIGZyb20gJ0BuZ3hzbWsvY2RrL2ZvY3VzYWJsZSc7XG5leHBvcnQgKiBmcm9tICdAbmd4c21rL2Nkay9mb2N1cy10cmFwJztcbmV4cG9ydCAqIGZyb20gJ0BuZ3hzbWsvY2RrL2xpdmUtYW5ub3VuY2VyJztcbmV4cG9ydCAqIGZyb20gJ0BuZ3hzbWsvY2RrL21lZGlhLXF1ZXJ5JztcbmV4cG9ydCAqIGZyb20gJ0BuZ3hzbWsvY2RrL3Njcm9sbC1sb2NrJztcbmV4cG9ydCAqIGZyb20gJ0BuZ3hzbWsvY2RrL3Zpc3VhbGx5LWhpZGRlbic7XG4iXX0=
@@ -0,0 +1,2 @@
1
+ export * from './scroll-lock';
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9jZGsvc2Nyb2xsLWxvY2svaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYyxlQUFlLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tICcuL3Njcm9sbC1sb2NrJztcbiJdfQ==
@@ -0,0 +1,5 @@
1
+ /**
2
+ * Generated bundle index. Do not edit.
3
+ */
4
+ export * from './index';
5
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmd4c21rLWNkay1zY3JvbGwtbG9jay5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2Nkay9zY3JvbGwtbG9jay9uZ3hzbWstY2RrLXNjcm9sbC1sb2NrLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztHQUVHO0FBRUgsY0FBYyxTQUFTLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEdlbmVyYXRlZCBidW5kbGUgaW5kZXguIERvIG5vdCBlZGl0LlxuICovXG5cbmV4cG9ydCAqIGZyb20gJy4vaW5kZXgnO1xuIl19
@@ -0,0 +1,45 @@
1
+ import { Injectable, inject } from '@angular/core';
2
+ import { DOCUMENT } from '@angular/common';
3
+ import * as i0 from "@angular/core";
4
+ /**
5
+ * Locks body scrolling (for dialogs, drawers, sheets). Reference-counted so
6
+ * nested overlays can lock independently; compensates for scrollbar width to
7
+ * prevent layout shift.
8
+ */
9
+ export class NgxsmkScrollLock {
10
+ document = inject(DOCUMENT);
11
+ locks = 0;
12
+ previousOverflow = '';
13
+ previousPaddingRight = '';
14
+ lock() {
15
+ if (this.locks++ > 0) {
16
+ return;
17
+ }
18
+ const body = this.document.body;
19
+ const window = this.document.defaultView;
20
+ const scrollbar = window
21
+ ? window.innerWidth - this.document.documentElement.clientWidth
22
+ : 0;
23
+ this.previousOverflow = body.style.overflow;
24
+ this.previousPaddingRight = body.style.paddingRight;
25
+ body.style.overflow = 'hidden';
26
+ if (scrollbar > 0) {
27
+ body.style.paddingRight = `${scrollbar}px`;
28
+ }
29
+ }
30
+ unlock() {
31
+ if (this.locks === 0 || --this.locks > 0) {
32
+ return;
33
+ }
34
+ const body = this.document.body;
35
+ body.style.overflow = this.previousOverflow;
36
+ body.style.paddingRight = this.previousPaddingRight;
37
+ }
38
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.0", ngImport: i0, type: NgxsmkScrollLock, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
39
+ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.3.0", ngImport: i0, type: NgxsmkScrollLock, providedIn: 'root' });
40
+ }
41
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.0", ngImport: i0, type: NgxsmkScrollLock, decorators: [{
42
+ type: Injectable,
43
+ args: [{ providedIn: 'root' }]
44
+ }] });
45
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2Nyb2xsLWxvY2suanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9jZGsvc2Nyb2xsLWxvY2svc2Nyb2xsLWxvY2sudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDbkQsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGlCQUFpQixDQUFDOztBQUUzQzs7OztHQUlHO0FBRUgsTUFBTSxPQUFPLGdCQUFnQjtJQUNWLFFBQVEsR0FBRyxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUM7SUFDckMsS0FBSyxHQUFHLENBQUMsQ0FBQztJQUNWLGdCQUFnQixHQUFHLEVBQUUsQ0FBQztJQUN0QixvQkFBb0IsR0FBRyxFQUFFLENBQUM7SUFFbEMsSUFBSTtRQUNGLElBQUksSUFBSSxDQUFDLEtBQUssRUFBRSxHQUFHLENBQUMsRUFBRSxDQUFDO1lBQ3JCLE9BQU87UUFDVCxDQUFDO1FBQ0QsTUFBTSxJQUFJLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUM7UUFDaEMsTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxXQUFXLENBQUM7UUFDekMsTUFBTSxTQUFTLEdBQUcsTUFBTTtZQUN0QixDQUFDLENBQUMsTUFBTSxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLGVBQWUsQ0FBQyxXQUFXO1lBQy9ELENBQUMsQ0FBQyxDQUFDLENBQUM7UUFFTixJQUFJLENBQUMsZ0JBQWdCLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUM7UUFDNUMsSUFBSSxDQUFDLG9CQUFvQixHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsWUFBWSxDQUFDO1FBQ3BELElBQUksQ0FBQyxLQUFLLENBQUMsUUFBUSxHQUFHLFFBQVEsQ0FBQztRQUMvQixJQUFJLFNBQVMsR0FBRyxDQUFDLEVBQUUsQ0FBQztZQUNsQixJQUFJLENBQUMsS0FBSyxDQUFDLFlBQVksR0FBRyxHQUFHLFNBQVMsSUFBSSxDQUFDO1FBQzdDLENBQUM7SUFDSCxDQUFDO0lBRUQsTUFBTTtRQUNKLElBQUksSUFBSSxDQUFDLEtBQUssS0FBSyxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsS0FBSyxHQUFHLENBQUMsRUFBRSxDQUFDO1lBQ3pDLE9BQU87UUFDVCxDQUFDO1FBQ0QsTUFBTSxJQUFJLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUM7UUFDaEMsSUFBSSxDQUFDLEtBQUssQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDLGdCQUFnQixDQUFDO1FBQzVDLElBQUksQ0FBQyxLQUFLLENBQUMsWUFBWSxHQUFHLElBQUksQ0FBQyxvQkFBb0IsQ0FBQztJQUN0RCxDQUFDO3VHQS9CVSxnQkFBZ0I7MkdBQWhCLGdCQUFnQixjQURILE1BQU07OzJGQUNuQixnQkFBZ0I7a0JBRDVCLFVBQVU7bUJBQUMsRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSwgaW5qZWN0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBET0NVTUVOVCB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5cbi8qKlxuICogTG9ja3MgYm9keSBzY3JvbGxpbmcgKGZvciBkaWFsb2dzLCBkcmF3ZXJzLCBzaGVldHMpLiBSZWZlcmVuY2UtY291bnRlZCBzb1xuICogbmVzdGVkIG92ZXJsYXlzIGNhbiBsb2NrIGluZGVwZW5kZW50bHk7IGNvbXBlbnNhdGVzIGZvciBzY3JvbGxiYXIgd2lkdGggdG9cbiAqIHByZXZlbnQgbGF5b3V0IHNoaWZ0LlxuICovXG5ASW5qZWN0YWJsZSh7IHByb3ZpZGVkSW46ICdyb290JyB9KVxuZXhwb3J0IGNsYXNzIE5neHNta1Njcm9sbExvY2sge1xuICBwcml2YXRlIHJlYWRvbmx5IGRvY3VtZW50ID0gaW5qZWN0KERPQ1VNRU5UKTtcbiAgcHJpdmF0ZSBsb2NrcyA9IDA7XG4gIHByaXZhdGUgcHJldmlvdXNPdmVyZmxvdyA9ICcnO1xuICBwcml2YXRlIHByZXZpb3VzUGFkZGluZ1JpZ2h0ID0gJyc7XG5cbiAgbG9jaygpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5sb2NrcysrID4gMCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBjb25zdCBib2R5ID0gdGhpcy5kb2N1bWVudC5ib2R5O1xuICAgIGNvbnN0IHdpbmRvdyA9IHRoaXMuZG9jdW1lbnQuZGVmYXVsdFZpZXc7XG4gICAgY29uc3Qgc2Nyb2xsYmFyID0gd2luZG93XG4gICAgICA/IHdpbmRvdy5pbm5lcldpZHRoIC0gdGhpcy5kb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuY2xpZW50V2lkdGhcbiAgICAgIDogMDtcblxuICAgIHRoaXMucHJldmlvdXNPdmVyZmxvdyA9IGJvZHkuc3R5bGUub3ZlcmZsb3c7XG4gICAgdGhpcy5wcmV2aW91c1BhZGRpbmdSaWdodCA9IGJvZHkuc3R5bGUucGFkZGluZ1JpZ2h0O1xuICAgIGJvZHkuc3R5bGUub3ZlcmZsb3cgPSAnaGlkZGVuJztcbiAgICBpZiAoc2Nyb2xsYmFyID4gMCkge1xuICAgICAgYm9keS5zdHlsZS5wYWRkaW5nUmlnaHQgPSBgJHtzY3JvbGxiYXJ9cHhgO1xuICAgIH1cbiAgfVxuXG4gIHVubG9jaygpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5sb2NrcyA9PT0gMCB8fCAtLXRoaXMubG9ja3MgPiAwKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGNvbnN0IGJvZHkgPSB0aGlzLmRvY3VtZW50LmJvZHk7XG4gICAgYm9keS5zdHlsZS5vdmVyZmxvdyA9IHRoaXMucHJldmlvdXNPdmVyZmxvdztcbiAgICBib2R5LnN0eWxlLnBhZGRpbmdSaWdodCA9IHRoaXMucHJldmlvdXNQYWRkaW5nUmlnaHQ7XG4gIH1cbn1cbiJdfQ==
@@ -0,0 +1,2 @@
1
+ export * from './visually-hidden';
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9jZGsvdmlzdWFsbHktaGlkZGVuL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMsbUJBQW1CLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tICcuL3Zpc3VhbGx5LWhpZGRlbic7XG4iXX0=
@@ -0,0 +1,5 @@
1
+ /**
2
+ * Generated bundle index. Do not edit.
3
+ */
4
+ export * from './index';
5
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmd4c21rLWNkay12aXN1YWxseS1oaWRkZW4uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9jZGsvdmlzdWFsbHktaGlkZGVuL25neHNtay1jZGstdmlzdWFsbHktaGlkZGVuLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztHQUVHO0FBRUgsY0FBYyxTQUFTLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEdlbmVyYXRlZCBidW5kbGUgaW5kZXguIERvIG5vdCBlZGl0LlxuICovXG5cbmV4cG9ydCAqIGZyb20gJy4vaW5kZXgnO1xuIl19
@@ -0,0 +1,34 @@
1
+ import { Directive } from '@angular/core';
2
+ import * as i0 from "@angular/core";
3
+ /**
4
+ * Hides the host visually while keeping it available to screen readers.
5
+ *
6
+ * ```html
7
+ * <span ngxsmkVisuallyHidden>Opens in a new window</span>
8
+ * ```
9
+ */
10
+ export class NgxsmkVisuallyHidden {
11
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.0", ngImport: i0, type: NgxsmkVisuallyHidden, deps: [], target: i0.ɵɵFactoryTarget.Directive });
12
+ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "17.3.0", type: NgxsmkVisuallyHidden, isStandalone: true, selector: "[ngxsmkVisuallyHidden]", host: { styleAttribute: "\n position: absolute;\n width: 1px;\n height: 1px;\n margin: -1px;\n padding: 0;\n border: 0;\n overflow: hidden;\n clip-path: inset(100%);\n white-space: nowrap;\n " }, ngImport: i0 });
13
+ }
14
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.0", ngImport: i0, type: NgxsmkVisuallyHidden, decorators: [{
15
+ type: Directive,
16
+ args: [{
17
+ standalone: true,
18
+ selector: '[ngxsmkVisuallyHidden]',
19
+ host: {
20
+ style: `
21
+ position: absolute;
22
+ width: 1px;
23
+ height: 1px;
24
+ margin: -1px;
25
+ padding: 0;
26
+ border: 0;
27
+ overflow: hidden;
28
+ clip-path: inset(100%);
29
+ white-space: nowrap;
30
+ `,
31
+ },
32
+ }]
33
+ }] });
34
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmlzdWFsbHktaGlkZGVuLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvY2RrL3Zpc3VhbGx5LWhpZGRlbi92aXN1YWxseS1oaWRkZW4udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQzs7QUFFMUM7Ozs7OztHQU1HO0FBa0JILE1BQU0sT0FBTyxvQkFBb0I7dUdBQXBCLG9CQUFvQjsyRkFBcEIsb0JBQW9COzsyRkFBcEIsb0JBQW9CO2tCQWpCaEMsU0FBUzttQkFBQztvQkFDVCxVQUFVLEVBQUUsSUFBSTtvQkFDaEIsUUFBUSxFQUFFLHdCQUF3QjtvQkFDbEMsSUFBSSxFQUFFO3dCQUNKLEtBQUssRUFBRTs7Ozs7Ozs7OztLQVVOO3FCQUNGO2lCQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRGlyZWN0aXZlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbi8qKlxuICogSGlkZXMgdGhlIGhvc3QgdmlzdWFsbHkgd2hpbGUga2VlcGluZyBpdCBhdmFpbGFibGUgdG8gc2NyZWVuIHJlYWRlcnMuXG4gKlxuICogYGBgaHRtbFxuICogPHNwYW4gbmd4c21rVmlzdWFsbHlIaWRkZW4+T3BlbnMgaW4gYSBuZXcgd2luZG93PC9zcGFuPlxuICogYGBgXG4gKi9cbkBEaXJlY3RpdmUoe1xuICBzdGFuZGFsb25lOiB0cnVlLFxuICBzZWxlY3RvcjogJ1tuZ3hzbWtWaXN1YWxseUhpZGRlbl0nLFxuICBob3N0OiB7XG4gICAgc3R5bGU6IGBcbiAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgIHdpZHRoOiAxcHg7XG4gICAgICBoZWlnaHQ6IDFweDtcbiAgICAgIG1hcmdpbjogLTFweDtcbiAgICAgIHBhZGRpbmc6IDA7XG4gICAgICBib3JkZXI6IDA7XG4gICAgICBvdmVyZmxvdzogaGlkZGVuO1xuICAgICAgY2xpcC1wYXRoOiBpbnNldCgxMDAlKTtcbiAgICAgIHdoaXRlLXNwYWNlOiBub3dyYXA7XG4gICAgYCxcbiAgfSxcbn0pXG5leHBvcnQgY2xhc3MgTmd4c21rVmlzdWFsbHlIaWRkZW4ge31cbiJdfQ==
@@ -26,16 +26,16 @@ class NgxsmkClickOutside {
26
26
  document.addEventListener('pointerdown', onPointerDown, true);
27
27
  destroyRef.onDestroy(() => document.removeEventListener('pointerdown', onPointerDown, true));
28
28
  }
29
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.6", ngImport: i0, type: NgxsmkClickOutside, deps: [], target: i0.ɵɵFactoryTarget.Directive });
30
- static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "22.0.6", type: NgxsmkClickOutside, isStandalone: true, selector: "[ngxsmkClickOutside]", outputs: { ngxsmkClickOutside: "ngxsmkClickOutside" }, ngImport: i0 });
29
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.0", ngImport: i0, type: NgxsmkClickOutside, deps: [], target: i0.ɵɵFactoryTarget.Directive });
30
+ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "17.3.0", type: NgxsmkClickOutside, isStandalone: true, selector: "[ngxsmkClickOutside]", outputs: { ngxsmkClickOutside: "ngxsmkClickOutside" }, ngImport: i0 });
31
31
  }
32
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.6", ngImport: i0, type: NgxsmkClickOutside, decorators: [{
32
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.0", ngImport: i0, type: NgxsmkClickOutside, decorators: [{
33
33
  type: Directive,
34
34
  args: [{
35
35
  standalone: true,
36
36
  selector: '[ngxsmkClickOutside]',
37
37
  }]
38
- }], ctorParameters: () => [], propDecorators: { ngxsmkClickOutside: [{ type: i0.Output, args: ["ngxsmkClickOutside"] }] } });
38
+ }], ctorParameters: () => [] });
39
39
 
40
40
  /**
41
41
  * Generated bundle index. Do not edit.
@@ -12,9 +12,13 @@ class NgxsmkFocusTrap {
12
12
  host = inject(ElementRef);
13
13
  document = inject(DOCUMENT);
14
14
  /** Set to `false` to disable the trap without removing the directive. */
15
- ngxsmkFocusTrap = input(true, { ...(ngDevMode ? { debugName: "ngxsmkFocusTrap" } : /* istanbul ignore next */ {}), transform: (v) => v === '' || v === true || v === 'true' });
15
+ ngxsmkFocusTrap = input(true, {
16
+ transform: (v) => v === '' || v === true || v === 'true',
17
+ });
16
18
  /** Focus the first focusable child on init; restore focus on destroy. */
17
- ngxsmkFocusTrapAutoCapture = input(false, { ...(ngDevMode ? { debugName: "ngxsmkFocusTrapAutoCapture" } : /* istanbul ignore next */ {}), transform: booleanAttribute });
19
+ ngxsmkFocusTrapAutoCapture = input(false, {
20
+ transform: booleanAttribute,
21
+ });
18
22
  constructor() {
19
23
  const previouslyFocused = this.document.activeElement;
20
24
  afterNextRender(() => {
@@ -50,10 +54,10 @@ class NgxsmkFocusTrap {
50
54
  first.focus();
51
55
  }
52
56
  }
53
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.6", ngImport: i0, type: NgxsmkFocusTrap, deps: [], target: i0.ɵɵFactoryTarget.Directive });
54
- static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "22.0.6", type: NgxsmkFocusTrap, isStandalone: true, selector: "[ngxsmkFocusTrap]", inputs: { ngxsmkFocusTrap: { classPropertyName: "ngxsmkFocusTrap", publicName: "ngxsmkFocusTrap", isSignal: true, isRequired: false, transformFunction: null }, ngxsmkFocusTrapAutoCapture: { classPropertyName: "ngxsmkFocusTrapAutoCapture", publicName: "ngxsmkFocusTrapAutoCapture", isSignal: true, isRequired: false, transformFunction: null } }, host: { listeners: { "keydown": "onKeydown($event)" } }, ngImport: i0 });
57
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.0", ngImport: i0, type: NgxsmkFocusTrap, deps: [], target: i0.ɵɵFactoryTarget.Directive });
58
+ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "17.3.0", type: NgxsmkFocusTrap, isStandalone: true, selector: "[ngxsmkFocusTrap]", inputs: { ngxsmkFocusTrap: { classPropertyName: "ngxsmkFocusTrap", publicName: "ngxsmkFocusTrap", isSignal: true, isRequired: false, transformFunction: null }, ngxsmkFocusTrapAutoCapture: { classPropertyName: "ngxsmkFocusTrapAutoCapture", publicName: "ngxsmkFocusTrapAutoCapture", isSignal: true, isRequired: false, transformFunction: null } }, host: { listeners: { "keydown": "onKeydown($event)" } }, ngImport: i0 });
55
59
  }
56
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.6", ngImport: i0, type: NgxsmkFocusTrap, decorators: [{
60
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.0", ngImport: i0, type: NgxsmkFocusTrap, decorators: [{
57
61
  type: Directive,
58
62
  args: [{
59
63
  standalone: true,
@@ -62,7 +66,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.6", ngImpor
62
66
  '(keydown)': 'onKeydown($event)',
63
67
  },
64
68
  }]
65
- }], ctorParameters: () => [], propDecorators: { ngxsmkFocusTrap: [{ type: i0.Input, args: [{ isSignal: true, alias: "ngxsmkFocusTrap", required: false }] }], ngxsmkFocusTrapAutoCapture: [{ type: i0.Input, args: [{ isSignal: true, alias: "ngxsmkFocusTrapAutoCapture", required: false }] }] } });
69
+ }], ctorParameters: () => [] });
66
70
 
67
71
  /**
68
72
  * Generated bundle index. Do not edit.
@@ -1 +1 @@
1
- {"version":3,"file":"ngxsmk-cdk-focus-trap.mjs","sources":["../../../../packages/cdk/focus-trap/focus-trap.ts","../../../../packages/cdk/focus-trap/ngxsmk-cdk-focus-trap.ts"],"sourcesContent":["import { DOCUMENT } from '@angular/common';\nimport {\n DestroyRef,\n Directive,\n ElementRef,\n afterNextRender,\n booleanAttribute,\n inject,\n input,\n} from '@angular/core';\nimport { getFocusable } from '@ngxsmk/cdk/focusable';\n\n/**\n * Traps Tab/Shift+Tab focus cycling inside the host element while active.\n * With `ngxsmkFocusTrapAutoCapture`, moves focus into the trap on init and\n * restores the previously focused element on destroy.\n */\n@Directive({\n standalone: true,\n selector: '[ngxsmkFocusTrap]',\n host: {\n '(keydown)': 'onKeydown($event)',\n },\n})\nexport class NgxsmkFocusTrap {\n private readonly host = inject<ElementRef<HTMLElement>>(ElementRef);\n private readonly document = inject(DOCUMENT);\n\n /** Set to `false` to disable the trap without removing the directive. */\n readonly ngxsmkFocusTrap = input(true, {\n transform: (v: unknown) => v === '' || v === true || v === 'true',\n });\n\n /** Focus the first focusable child on init; restore focus on destroy. */\n readonly ngxsmkFocusTrapAutoCapture = input(false, {\n transform: booleanAttribute,\n });\n\n constructor() {\n const previouslyFocused = this.document.activeElement as HTMLElement | null;\n\n afterNextRender(() => {\n if (this.ngxsmkFocusTrapAutoCapture()) {\n const focusable = getFocusable(this.host.nativeElement);\n (focusable[0] ?? this.host.nativeElement).focus();\n }\n });\n\n inject(DestroyRef).onDestroy(() => {\n if (this.ngxsmkFocusTrapAutoCapture()) {\n previouslyFocused?.focus?.();\n }\n });\n }\n\n protected onKeydown(event: KeyboardEvent): void {\n if (event.key !== 'Tab' || !this.ngxsmkFocusTrap()) {\n return;\n }\n const focusable = getFocusable(this.host.nativeElement);\n if (focusable.length === 0) {\n event.preventDefault();\n return;\n }\n\n const first = focusable[0];\n const last = focusable[focusable.length - 1];\n const active = this.document.activeElement;\n\n if (event.shiftKey && (active === first || active === this.host.nativeElement)) {\n event.preventDefault();\n last.focus();\n } else if (!event.shiftKey && active === last) {\n event.preventDefault();\n first.focus();\n }\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":"ngxsmk-cdk-focus-trap.mjs","sources":["../../../../packages/cdk/focus-trap/focus-trap.ts","../../../../packages/cdk/focus-trap/ngxsmk-cdk-focus-trap.ts"],"sourcesContent":["import { DOCUMENT } from '@angular/common';\nimport {\n DestroyRef,\n Directive,\n ElementRef,\n afterNextRender,\n booleanAttribute,\n inject,\n input,\n} from '@angular/core';\nimport { getFocusable } from '@ngxsmk/cdk/focusable';\n\n/**\n * Traps Tab/Shift+Tab focus cycling inside the host element while active.\n * With `ngxsmkFocusTrapAutoCapture`, moves focus into the trap on init and\n * restores the previously focused element on destroy.\n */\n@Directive({\n standalone: true,\n selector: '[ngxsmkFocusTrap]',\n host: {\n '(keydown)': 'onKeydown($event)',\n },\n})\nexport class NgxsmkFocusTrap {\n private readonly host = inject<ElementRef<HTMLElement>>(ElementRef);\n private readonly document = inject(DOCUMENT);\n\n /** Set to `false` to disable the trap without removing the directive. */\n readonly ngxsmkFocusTrap = input(true, {\n transform: (v: unknown) => v === '' || v === true || v === 'true',\n });\n\n /** Focus the first focusable child on init; restore focus on destroy. */\n readonly ngxsmkFocusTrapAutoCapture = input(false, {\n transform: booleanAttribute,\n });\n\n constructor() {\n const previouslyFocused = this.document.activeElement as HTMLElement | null;\n\n afterNextRender(() => {\n if (this.ngxsmkFocusTrapAutoCapture()) {\n const focusable = getFocusable(this.host.nativeElement);\n (focusable[0] ?? this.host.nativeElement).focus();\n }\n });\n\n inject(DestroyRef).onDestroy(() => {\n if (this.ngxsmkFocusTrapAutoCapture()) {\n previouslyFocused?.focus?.();\n }\n });\n }\n\n protected onKeydown(event: KeyboardEvent): void {\n if (event.key !== 'Tab' || !this.ngxsmkFocusTrap()) {\n return;\n }\n const focusable = getFocusable(this.host.nativeElement);\n if (focusable.length === 0) {\n event.preventDefault();\n return;\n }\n\n const first = focusable[0];\n const last = focusable[focusable.length - 1];\n const active = this.document.activeElement;\n\n if (event.shiftKey && (active === first || active === this.host.nativeElement)) {\n event.preventDefault();\n last.focus();\n } else if (!event.shiftKey && active === last) {\n event.preventDefault();\n first.focus();\n }\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;;;;AAYA;;;;AAIG;MAQU,eAAe,CAAA;AACT,IAAA,IAAI,GAAG,MAAM,CAA0B,UAAU,CAAC;AAClD,IAAA,QAAQ,GAAG,MAAM,CAAC,QAAQ,CAAC;;AAGnC,IAAA,eAAe,GAAG,KAAK,CAAC,IAAI,EAAE;AACrC,QAAA,SAAS,EAAE,CAAC,CAAU,KAAK,CAAC,KAAK,EAAE,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,KAAK,MAAM;AAClE,KAAA,CAAC;;AAGO,IAAA,0BAA0B,GAAG,KAAK,CAAC,KAAK,EAAE;AACjD,QAAA,SAAS,EAAE,gBAAgB;AAC5B,KAAA,CAAC;AAEF,IAAA,WAAA,GAAA;AACE,QAAA,MAAM,iBAAiB,GAAG,IAAI,CAAC,QAAQ,CAAC,aAAmC;QAE3E,eAAe,CAAC,MAAK;AACnB,YAAA,IAAI,IAAI,CAAC,0BAA0B,EAAE,EAAE;gBACrC,MAAM,SAAS,GAAG,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC;AACvD,gBAAA,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,KAAK,EAAE;YACnD;AACF,QAAA,CAAC,CAAC;AAEF,QAAA,MAAM,CAAC,UAAU,CAAC,CAAC,SAAS,CAAC,MAAK;AAChC,YAAA,IAAI,IAAI,CAAC,0BAA0B,EAAE,EAAE;AACrC,gBAAA,iBAAiB,EAAE,KAAK,IAAI;YAC9B;AACF,QAAA,CAAC,CAAC;IACJ;AAEU,IAAA,SAAS,CAAC,KAAoB,EAAA;AACtC,QAAA,IAAI,KAAK,CAAC,GAAG,KAAK,KAAK,IAAI,CAAC,IAAI,CAAC,eAAe,EAAE,EAAE;YAClD;QACF;QACA,MAAM,SAAS,GAAG,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC;AACvD,QAAA,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC,EAAE;YAC1B,KAAK,CAAC,cAAc,EAAE;YACtB;QACF;AAEA,QAAA,MAAM,KAAK,GAAG,SAAS,CAAC,CAAC,CAAC;QAC1B,MAAM,IAAI,GAAG,SAAS,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC,CAAC;AAC5C,QAAA,MAAM,MAAM,GAAG,IAAI,CAAC,QAAQ,CAAC,aAAa;AAE1C,QAAA,IAAI,KAAK,CAAC,QAAQ,KAAK,MAAM,KAAK,KAAK,IAAI,MAAM,KAAK,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,EAAE;YAC9E,KAAK,CAAC,cAAc,EAAE;YACtB,IAAI,CAAC,KAAK,EAAE;QACd;aAAO,IAAI,CAAC,KAAK,CAAC,QAAQ,IAAI,MAAM,KAAK,IAAI,EAAE;YAC7C,KAAK,CAAC,cAAc,EAAE;YACtB,KAAK,CAAC,KAAK,EAAE;QACf;IACF;uGApDW,eAAe,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;2FAAf,eAAe,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,MAAA,EAAA,EAAA,eAAA,EAAA,EAAA,iBAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,0BAAA,EAAA,EAAA,iBAAA,EAAA,4BAAA,EAAA,UAAA,EAAA,4BAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,SAAA,EAAA,mBAAA,EAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA;;2FAAf,eAAe,EAAA,UAAA,EAAA,CAAA;kBAP3B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,UAAU,EAAE,IAAI;AAChB,oBAAA,QAAQ,EAAE,mBAAmB;AAC7B,oBAAA,IAAI,EAAE;AACJ,wBAAA,WAAW,EAAE,mBAAmB;AACjC,qBAAA;AACF,iBAAA;;;ACvBD;;AAEG;;;;"}
@@ -48,10 +48,10 @@ class NgxsmkLiveAnnouncer {
48
48
  }
49
49
  return this.region;
50
50
  }
51
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.6", ngImport: i0, type: NgxsmkLiveAnnouncer, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
52
- static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "22.0.6", ngImport: i0, type: NgxsmkLiveAnnouncer, providedIn: 'root' });
51
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.0", ngImport: i0, type: NgxsmkLiveAnnouncer, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
52
+ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.3.0", ngImport: i0, type: NgxsmkLiveAnnouncer, providedIn: 'root' });
53
53
  }
54
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.6", ngImport: i0, type: NgxsmkLiveAnnouncer, decorators: [{
54
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.0", ngImport: i0, type: NgxsmkLiveAnnouncer, decorators: [{
55
55
  type: Injectable,
56
56
  args: [{ providedIn: 'root' }]
57
57
  }] });
@@ -10,8 +10,7 @@ import { inject, signal, DestroyRef } from '@angular/core';
10
10
  */
11
11
  function injectMediaQuery(query) {
12
12
  const window = inject(DOCUMENT).defaultView;
13
- const matches = signal(false, /* @ts-ignore */
14
- ...(ngDevMode ? [{ debugName: "matches" }] : /* istanbul ignore next */ []));
13
+ const matches = signal(false);
15
14
  const media = window?.matchMedia?.(query);
16
15
  if (media) {
17
16
  matches.set(media.matches);
@@ -1 +1 @@
1
- {"version":3,"file":"ngxsmk-cdk-media-query.mjs","sources":["../../../../packages/cdk/media-query/media-query.ts","../../../../packages/cdk/media-query/ngxsmk-cdk-media-query.ts"],"sourcesContent":["import { DOCUMENT } from '@angular/common';\nimport {\n DestroyRef,\n Signal,\n inject,\n signal,\n} from '@angular/core';\n\n/**\n * Reactive media query. Must be called in an injection context.\n *\n * ```ts\n * private readonly isMobile = injectMediaQuery('(max-width: 767px)');\n * ```\n */\nexport function injectMediaQuery(query: string): Signal<boolean> {\n const window = inject(DOCUMENT).defaultView;\n const matches = signal(false);\n\n const media = window?.matchMedia?.(query);\n if (media) {\n matches.set(media.matches);\n const listener = (event: MediaQueryListEvent) => matches.set(event.matches);\n media.addEventListener('change', listener);\n inject(DestroyRef).onDestroy(() =>\n media.removeEventListener('change', listener),\n );\n }\n\n return matches.asReadonly();\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;;AAQA;;;;;;AAMG;AACG,SAAU,gBAAgB,CAAC,KAAa,EAAA;IAC5C,MAAM,MAAM,GAAG,MAAM,CAAC,QAAQ,CAAC,CAAC,WAAW;AAC3C,IAAA,MAAM,OAAO,GAAG,MAAM,CAAC,KAAK;gFAAC;IAE7B,MAAM,KAAK,GAAG,MAAM,EAAE,UAAU,GAAG,KAAK,CAAC;IACzC,IAAI,KAAK,EAAE;AACT,QAAA,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC;AAC1B,QAAA,MAAM,QAAQ,GAAG,CAAC,KAA0B,KAAK,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC;AAC3E,QAAA,KAAK,CAAC,gBAAgB,CAAC,QAAQ,EAAE,QAAQ,CAAC;AAC1C,QAAA,MAAM,CAAC,UAAU,CAAC,CAAC,SAAS,CAAC,MAC3B,KAAK,CAAC,mBAAmB,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAC9C;IACH;AAEA,IAAA,OAAO,OAAO,CAAC,UAAU,EAAE;AAC7B;;AC9BA;;AAEG;;;;"}
1
+ {"version":3,"file":"ngxsmk-cdk-media-query.mjs","sources":["../../../../packages/cdk/media-query/media-query.ts","../../../../packages/cdk/media-query/ngxsmk-cdk-media-query.ts"],"sourcesContent":["import { DOCUMENT } from '@angular/common';\nimport {\n DestroyRef,\n Signal,\n inject,\n signal,\n} from '@angular/core';\n\n/**\n * Reactive media query. Must be called in an injection context.\n *\n * ```ts\n * private readonly isMobile = injectMediaQuery('(max-width: 767px)');\n * ```\n */\nexport function injectMediaQuery(query: string): Signal<boolean> {\n const window = inject(DOCUMENT).defaultView;\n const matches = signal(false);\n\n const media = window?.matchMedia?.(query);\n if (media) {\n matches.set(media.matches);\n const listener = (event: MediaQueryListEvent) => matches.set(event.matches);\n media.addEventListener('change', listener);\n inject(DestroyRef).onDestroy(() =>\n media.removeEventListener('change', listener),\n );\n }\n\n return matches.asReadonly();\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;;AAQA;;;;;;AAMG;AACG,SAAU,gBAAgB,CAAC,KAAa,EAAA;IAC5C,MAAM,MAAM,GAAG,MAAM,CAAC,QAAQ,CAAC,CAAC,WAAW;AAC3C,IAAA,MAAM,OAAO,GAAG,MAAM,CAAC,KAAK,CAAC;IAE7B,MAAM,KAAK,GAAG,MAAM,EAAE,UAAU,GAAG,KAAK,CAAC;IACzC,IAAI,KAAK,EAAE;AACT,QAAA,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC;AAC1B,QAAA,MAAM,QAAQ,GAAG,CAAC,KAA0B,KAAK,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC;AAC3E,QAAA,KAAK,CAAC,gBAAgB,CAAC,QAAQ,EAAE,QAAQ,CAAC;AAC1C,QAAA,MAAM,CAAC,UAAU,CAAC,CAAC,SAAS,CAAC,MAC3B,KAAK,CAAC,mBAAmB,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAC9C;IACH;AAEA,IAAA,OAAO,OAAO,CAAC,UAAU,EAAE;AAC7B;;AC9BA;;AAEG;;;;"}