@acorex/cdk 21.0.0-next52 → 21.0.1-next.1

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.
@@ -0,0 +1,176 @@
1
+ import * as i0 from '@angular/core';
2
+ import { inject, ElementRef, input, output, Directive } from '@angular/core';
3
+
4
+ /**
5
+ * Directive to detect single-click and double-click events on the host element.
6
+ * Supports both desktop (click-based detection) and mobile (touchend) events.
7
+ * Prevents native click event propagation and emits separate single-click and double-click events.
8
+ * Can be disabled to allow native DOM behavior (click and dblclick events).
9
+ *
10
+ * Usage:
11
+ * <button
12
+ * axDoubleClick
13
+ * [duration]="300"
14
+ * [disabled]="false"
15
+ * (onClick)="onSingleClick($event)"
16
+ * (onDblClick)="onDoubleClick($event)"
17
+ * >Click me</button>
18
+ */
19
+ class AXDoubleClickDirective {
20
+ constructor() {
21
+ this.elementRef = inject(ElementRef);
22
+ /**
23
+ * Input to configure the duration in milliseconds for detecting double-clicks.
24
+ * Defaults to 250ms.
25
+ * Two clicks/taps within this duration are considered a double-click.
26
+ */
27
+ this.duration = input(250, ...(ngDevMode ? [{ debugName: "duration" }] : []));
28
+ /**
29
+ * Input to disable the directive's custom click handling.
30
+ * When true, native click and dblclick events will fire normally (DOM default behavior).
31
+ * When false (default), the directive prevents default and emits custom single/double-click events.
32
+ * Defaults to false.
33
+ */
34
+ this.disabled = input(false, ...(ngDevMode ? [{ debugName: "disabled" }] : []));
35
+ /**
36
+ * Output event emitted when a single-click is detected.
37
+ * Emits after the configured duration milliseconds if no second click occurs.
38
+ * Emits the MouseEvent.
39
+ */
40
+ this.onClick = output();
41
+ /**
42
+ * Output event emitted when a double-click is detected.
43
+ * Emits when two clicks occur within the configured duration milliseconds.
44
+ * Emits the Event (MouseEvent for desktop, TouchEvent for mobile).
45
+ */
46
+ this.onDblClick = output();
47
+ this.lastClick = 0;
48
+ this.lastTap = 0;
49
+ this.clickTimeout = null;
50
+ this.pendingClickEvent = null;
51
+ }
52
+ /**
53
+ * Handles click events and detects both single-clicks and double-clicks.
54
+ * Prevents native click propagation and emits appropriate events.
55
+ * When disabled is true, emits click immediately, still detects double-clicks, and allows native DOM behavior (no preventDefault).
56
+ */
57
+ handleClick(event) {
58
+ const duration = this.duration();
59
+ const currentTime = new Date().getTime();
60
+ const clickGap = currentTime - this.lastClick;
61
+ // If disabled, emit click immediately and still track for double-click, but don't prevent default
62
+ if (this.disabled()) {
63
+ // Emit single click immediately
64
+ this.onClick.emit(event);
65
+ // Still track for double-click detection
66
+ if (clickGap > 0 && clickGap < duration) {
67
+ // Double-click detected - emit double-click
68
+ if (this.clickTimeout) {
69
+ clearTimeout(this.clickTimeout);
70
+ this.clickTimeout = null;
71
+ }
72
+ if (this.pendingClickEvent) {
73
+ this.pendingClickEvent = null;
74
+ }
75
+ this.onDblClick.emit(event);
76
+ this.lastClick = 0;
77
+ }
78
+ else {
79
+ // First click - store it and wait to see if a second click comes
80
+ this.lastClick = currentTime;
81
+ this.pendingClickEvent = event;
82
+ if (this.clickTimeout) {
83
+ clearTimeout(this.clickTimeout);
84
+ }
85
+ // Set timeout to emit double-click if second click occurs within duration
86
+ // Note: We already emitted single-click, so we just track for double-click here
87
+ this.clickTimeout = setTimeout(() => {
88
+ // No double-click detected within duration, reset state
89
+ this.pendingClickEvent = null;
90
+ this.lastClick = 0;
91
+ this.clickTimeout = null;
92
+ }, duration);
93
+ }
94
+ // Don't prevent default - allow native click and dblclick to fire
95
+ return;
96
+ }
97
+ // When enabled, prevent the native click event from propagating
98
+ event.preventDefault();
99
+ event.stopPropagation();
100
+ event.stopImmediatePropagation();
101
+ if (clickGap > 0 && clickGap < duration) {
102
+ // Double-click detected - clear pending single click and emit double-click
103
+ if (this.clickTimeout) {
104
+ clearTimeout(this.clickTimeout);
105
+ this.clickTimeout = null;
106
+ }
107
+ if (this.pendingClickEvent) {
108
+ this.pendingClickEvent = null;
109
+ }
110
+ this.onDblClick.emit(event);
111
+ this.lastClick = 0;
112
+ }
113
+ else {
114
+ // First click - store it and wait to see if a second click comes
115
+ this.lastClick = currentTime;
116
+ this.pendingClickEvent = event;
117
+ if (this.clickTimeout) {
118
+ clearTimeout(this.clickTimeout);
119
+ }
120
+ // Set timeout to emit single-click if no second click occurs
121
+ this.clickTimeout = setTimeout(() => {
122
+ // No double-click detected, emit single-click
123
+ if (this.pendingClickEvent) {
124
+ this.onClick.emit(this.pendingClickEvent);
125
+ this.pendingClickEvent = null;
126
+ }
127
+ this.lastClick = 0;
128
+ this.clickTimeout = null;
129
+ }, duration);
130
+ }
131
+ }
132
+ /**
133
+ * Handles touchend events (mobile) to detect double-tap.
134
+ * When disabled is true, allows native touch behavior.
135
+ */
136
+ onTouchEnd(event) {
137
+ // If disabled, let native events fire normally
138
+ if (this.disabled()) {
139
+ return;
140
+ }
141
+ const duration = this.duration();
142
+ const currentTime = new Date().getTime();
143
+ const tapGap = currentTime - this.lastTap;
144
+ if (tapGap > 0 && tapGap < duration) {
145
+ // Detected a double-tap
146
+ this.onDblClick.emit(event);
147
+ event.preventDefault(); // Prevent further default actions
148
+ }
149
+ this.lastTap = currentTime;
150
+ }
151
+ ngOnDestroy() {
152
+ if (this.clickTimeout) {
153
+ clearTimeout(this.clickTimeout);
154
+ this.clickTimeout = null;
155
+ }
156
+ }
157
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.9", ngImport: i0, type: AXDoubleClickDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
158
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "20.3.9", type: AXDoubleClickDirective, isStandalone: true, selector: "[axDoubleClick]", inputs: { duration: { classPropertyName: "duration", publicName: "duration", isSignal: true, isRequired: false, transformFunction: null }, disabled: { classPropertyName: "disabled", publicName: "disabled", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { onClick: "onClick", onDblClick: "onDblClick" }, host: { listeners: { "click": "handleClick($event)", "touchend": "onTouchEnd($event)" } }, ngImport: i0 }); }
159
+ }
160
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.9", ngImport: i0, type: AXDoubleClickDirective, decorators: [{
161
+ type: Directive,
162
+ args: [{
163
+ selector: '[axDoubleClick]',
164
+ host: {
165
+ '(click)': 'handleClick($event)',
166
+ '(touchend)': 'onTouchEnd($event)',
167
+ },
168
+ }]
169
+ }], propDecorators: { duration: [{ type: i0.Input, args: [{ isSignal: true, alias: "duration", required: false }] }], disabled: [{ type: i0.Input, args: [{ isSignal: true, alias: "disabled", required: false }] }], onClick: [{ type: i0.Output, args: ["onClick"] }], onDblClick: [{ type: i0.Output, args: ["onDblClick"] }] } });
170
+
171
+ /**
172
+ * Generated bundle index. Do not edit.
173
+ */
174
+
175
+ export { AXDoubleClickDirective };
176
+ //# sourceMappingURL=acorex-cdk-double-click.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"acorex-cdk-double-click.mjs","sources":["../tmp-esm2022/double-click/lib/double-click.directive.js","../tmp-esm2022/double-click/acorex-cdk-double-click.js"],"sourcesContent":["import { Directive, ElementRef, inject, input, output } from '@angular/core';\nimport * as i0 from \"@angular/core\";\n/**\n * Directive to detect single-click and double-click events on the host element.\n * Supports both desktop (click-based detection) and mobile (touchend) events.\n * Prevents native click event propagation and emits separate single-click and double-click events.\n * Can be disabled to allow native DOM behavior (click and dblclick events).\n *\n * Usage:\n * <button\n * axDoubleClick\n * [duration]=\"300\"\n * [disabled]=\"false\"\n * (onClick)=\"onSingleClick($event)\"\n * (onDblClick)=\"onDoubleClick($event)\"\n * >Click me</button>\n */\nexport class AXDoubleClickDirective {\n constructor() {\n this.elementRef = inject(ElementRef);\n /**\n * Input to configure the duration in milliseconds for detecting double-clicks.\n * Defaults to 250ms.\n * Two clicks/taps within this duration are considered a double-click.\n */\n this.duration = input(250, ...(ngDevMode ? [{ debugName: \"duration\" }] : []));\n /**\n * Input to disable the directive's custom click handling.\n * When true, native click and dblclick events will fire normally (DOM default behavior).\n * When false (default), the directive prevents default and emits custom single/double-click events.\n * Defaults to false.\n */\n this.disabled = input(false, ...(ngDevMode ? [{ debugName: \"disabled\" }] : []));\n /**\n * Output event emitted when a single-click is detected.\n * Emits after the configured duration milliseconds if no second click occurs.\n * Emits the MouseEvent.\n */\n this.onClick = output();\n /**\n * Output event emitted when a double-click is detected.\n * Emits when two clicks occur within the configured duration milliseconds.\n * Emits the Event (MouseEvent for desktop, TouchEvent for mobile).\n */\n this.onDblClick = output();\n this.lastClick = 0;\n this.lastTap = 0;\n this.clickTimeout = null;\n this.pendingClickEvent = null;\n }\n /**\n * Handles click events and detects both single-clicks and double-clicks.\n * Prevents native click propagation and emits appropriate events.\n * When disabled is true, emits click immediately, still detects double-clicks, and allows native DOM behavior (no preventDefault).\n */\n handleClick(event) {\n const duration = this.duration();\n const currentTime = new Date().getTime();\n const clickGap = currentTime - this.lastClick;\n // If disabled, emit click immediately and still track for double-click, but don't prevent default\n if (this.disabled()) {\n // Emit single click immediately\n this.onClick.emit(event);\n // Still track for double-click detection\n if (clickGap > 0 && clickGap < duration) {\n // Double-click detected - emit double-click\n if (this.clickTimeout) {\n clearTimeout(this.clickTimeout);\n this.clickTimeout = null;\n }\n if (this.pendingClickEvent) {\n this.pendingClickEvent = null;\n }\n this.onDblClick.emit(event);\n this.lastClick = 0;\n }\n else {\n // First click - store it and wait to see if a second click comes\n this.lastClick = currentTime;\n this.pendingClickEvent = event;\n if (this.clickTimeout) {\n clearTimeout(this.clickTimeout);\n }\n // Set timeout to emit double-click if second click occurs within duration\n // Note: We already emitted single-click, so we just track for double-click here\n this.clickTimeout = setTimeout(() => {\n // No double-click detected within duration, reset state\n this.pendingClickEvent = null;\n this.lastClick = 0;\n this.clickTimeout = null;\n }, duration);\n }\n // Don't prevent default - allow native click and dblclick to fire\n return;\n }\n // When enabled, prevent the native click event from propagating\n event.preventDefault();\n event.stopPropagation();\n event.stopImmediatePropagation();\n if (clickGap > 0 && clickGap < duration) {\n // Double-click detected - clear pending single click and emit double-click\n if (this.clickTimeout) {\n clearTimeout(this.clickTimeout);\n this.clickTimeout = null;\n }\n if (this.pendingClickEvent) {\n this.pendingClickEvent = null;\n }\n this.onDblClick.emit(event);\n this.lastClick = 0;\n }\n else {\n // First click - store it and wait to see if a second click comes\n this.lastClick = currentTime;\n this.pendingClickEvent = event;\n if (this.clickTimeout) {\n clearTimeout(this.clickTimeout);\n }\n // Set timeout to emit single-click if no second click occurs\n this.clickTimeout = setTimeout(() => {\n // No double-click detected, emit single-click\n if (this.pendingClickEvent) {\n this.onClick.emit(this.pendingClickEvent);\n this.pendingClickEvent = null;\n }\n this.lastClick = 0;\n this.clickTimeout = null;\n }, duration);\n }\n }\n /**\n * Handles touchend events (mobile) to detect double-tap.\n * When disabled is true, allows native touch behavior.\n */\n onTouchEnd(event) {\n // If disabled, let native events fire normally\n if (this.disabled()) {\n return;\n }\n const duration = this.duration();\n const currentTime = new Date().getTime();\n const tapGap = currentTime - this.lastTap;\n if (tapGap > 0 && tapGap < duration) {\n // Detected a double-tap\n this.onDblClick.emit(event);\n event.preventDefault(); // Prevent further default actions\n }\n this.lastTap = currentTime;\n }\n ngOnDestroy() {\n if (this.clickTimeout) {\n clearTimeout(this.clickTimeout);\n this.clickTimeout = null;\n }\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.9\", ngImport: i0, type: AXDoubleClickDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }\n static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"17.1.0\", version: \"20.3.9\", type: AXDoubleClickDirective, isStandalone: true, selector: \"[axDoubleClick]\", inputs: { duration: { classPropertyName: \"duration\", publicName: \"duration\", isSignal: true, isRequired: false, transformFunction: null }, disabled: { classPropertyName: \"disabled\", publicName: \"disabled\", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { onClick: \"onClick\", onDblClick: \"onDblClick\" }, host: { listeners: { \"click\": \"handleClick($event)\", \"touchend\": \"onTouchEnd($event)\" } }, ngImport: i0 }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.9\", ngImport: i0, type: AXDoubleClickDirective, decorators: [{\n type: Directive,\n args: [{\n selector: '[axDoubleClick]',\n host: {\n '(click)': 'handleClick($event)',\n '(touchend)': 'onTouchEnd($event)',\n },\n }]\n }], propDecorators: { duration: [{ type: i0.Input, args: [{ isSignal: true, alias: \"duration\", required: false }] }], disabled: [{ type: i0.Input, args: [{ isSignal: true, alias: \"disabled\", required: false }] }], onClick: [{ type: i0.Output, args: [\"onClick\"] }], onDblClick: [{ type: i0.Output, args: [\"onDblClick\"] }] } });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZG91YmxlLWNsaWNrLmRpcmVjdGl2ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2Nkay9kb3VibGUtY2xpY2svc3JjL2xpYi9kb3VibGUtY2xpY2suZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQWEsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDOztBQUV4Rjs7Ozs7Ozs7Ozs7Ozs7R0FjRztBQVFILE1BQU0sT0FBTyxzQkFBc0I7SUFQbkM7UUFRVSxlQUFVLEdBQUcsTUFBTSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBRXhDOzs7O1dBSUc7UUFDSSxhQUFRLEdBQUcsS0FBSyxDQUFTLEdBQUcsb0RBQUMsQ0FBQztRQUVyQzs7Ozs7V0FLRztRQUNJLGFBQVEsR0FBRyxLQUFLLENBQVUsS0FBSyxvREFBQyxDQUFDO1FBRXhDOzs7O1dBSUc7UUFDSSxZQUFPLEdBQUcsTUFBTSxFQUFjLENBQUM7UUFFdEM7Ozs7V0FJRztRQUNJLGVBQVUsR0FBRyxNQUFNLEVBQVMsQ0FBQztRQUU1QixjQUFTLEdBQUcsQ0FBQyxDQUFDO1FBQ2QsWUFBTyxHQUFHLENBQUMsQ0FBQztRQUNaLGlCQUFZLEdBQXlDLElBQUksQ0FBQztRQUMxRCxzQkFBaUIsR0FBc0IsSUFBSSxDQUFDO0tBc0hyRDtJQXBIQzs7OztPQUlHO0lBQ0gsV0FBVyxDQUFDLEtBQWlCO1FBQzNCLE1BQU0sUUFBUSxHQUFHLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQztRQUNqQyxNQUFNLFdBQVcsR0FBRyxJQUFJLElBQUksRUFBRSxDQUFDLE9BQU8sRUFBRSxDQUFDO1FBQ3pDLE1BQU0sUUFBUSxHQUFHLFdBQVcsR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDO1FBRTlDLGtHQUFrRztRQUNsRyxJQUFJLElBQUksQ0FBQyxRQUFRLEVBQUUsRUFB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QUFxQjt3QkFDaEMsWUFBWSxFQUFFLG9CQUFvQjtxQkFDbkM7aUJBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBEaXJlY3RpdmUsIEVsZW1lbnRSZWYsIGluamVjdCwgaW5wdXQsIE9uRGVzdHJveSwgb3V0cHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbi8qKlxuICogRGlyZWN0aXZlIHRvIGRldGVjdCBzaW5nbGUtY2xpY2sgYW5kIGRvdWJsZS1jbGljayBldmVudHMgb24gdGhlIGhvc3QgZWxlbWVudC5cbiAqIFN1cHBvcnRzIGJvdGggZGVza3RvcCAoY2xpY2stYmFzZWQgZGV0ZWN0aW9uKSBhbmQgbW9iaWxlICh0b3VjaGVuZCkgZXZlbnRzLlxuICogUHJldmVudHMgbmF0aXZlIGNsaWNrIGV2ZW50IHByb3BhZ2F0aW9uIGFuZCBlbWl0cyBzZXBhcmF0ZSBzaW5nbGUtY2xpY2sgYW5kIGRvdWJsZS1jbGljayBldmVudHMuXG4gKiBDYW4gYmUgZGlzYWJsZWQgdG8gYWxsb3cgbmF0aXZlIERPTSBiZWhhdmlvciAoY2xpY2sgYW5kIGRibGNsaWNrIGV2ZW50cykuXG4gKlxuICogVXNhZ2U6XG4gKiA8YnV0dG9uXG4gKiAgIGF4RG91YmxlQ2xpY2tcbiAqICAgW2R1cmF0aW9uXT1cIjMwMFwiXG4gKiAgIFtkaXNhYmxlZF09XCJmYWxzZVwiXG4gKiAgIChvbkNsaWNrKT1cIm9uU2luZ2xlQ2xpY2soJGV2ZW50KVwiXG4gKiAgIChvbkRibENsaWNrKT1cIm9uRG91YmxlQ2xpY2soJGV2ZW50KVwiXG4gKiA+Q2xpY2sgbWU8L2J1dHRvbj5cbiAqL1xuQERpcmVjdGl2ZSh7XG4gIHNlbGVjdG9yOiAnW2F4RG91YmxlQ2xpY2tdJyxcbiAgaG9zdDoge1xuICAgICcoY2xpY2spJzogJ2hhbmRsZUNsaWNrKCRldmVudCknLFxuICAgICcodG91Y2hlbmQpJzogJ29uVG91Y2hFbmQoJGV2ZW50KScsXG4gIH0sXG59KVxuZXhwb3J0IGNsYXNzIEFYRG91YmxlQ2xpY2tEaXJlY3RpdmUgaW1wbGVtZW50cyBPbkRlc3Ryb3kge1xuICBwcml2YXRlIGVsZW1lbnRSZWYgPSBpbmplY3QoRWxlbWVudFJlZik7XG5cbiAgLyoqXG4gICAqIElucHV0IHRvIGNvbmZpZ3VyZSB0aGUgZHVyYXRpb24gaW4gbWlsbGlzZWNvbmRzIGZvciBkZXRlY3RpbmcgZG91YmxlLWNsaWNrcy5cbiAgICogRGVmYXVsdHMgdG8gMjUwbXMuXG4gICAqIFR3byBjbGlja3MvdGFwcyB3aXRoaW4gdGhpcyBkdXJhdGlvbiBhcmUgY29uc2lkZXJlZCBhIGRvdWJsZS1jbGljay5cbiAgICovXG4gIHB1YmxpYyBkdXJhdGlvbiA9IGlucHV0PG51bWJlcj4oMjUwKTtcblxuICAvKipcbiAgICogSW5wdXQgdG8gZGlzYWJsZSB0aGUgZGlyZWN0aXZlJ3MgY3VzdG9tIGNsaWNrIGhhbmRsaW5nLlxuICAgKiBXaGVuIHRydWUsIG5hdGl2ZSBjbGljayBhbmQgZGJsY2xpY2sgZXZlbnRzIHdpbGwgZmlyZSBub3JtYWxseSAoRE9NIGRlZmF1bHQgYmVoYXZpb3IpLlxuICAgKiBXaGVuIGZhbHNlIChkZWZhdWx0KSwgdGhlIGRpcmVjdGl2ZSBwcmV2ZW50cyBkZWZhdWx0IGFuZCBlbWl0cyBjdXN0b20gc2luZ2xlL2RvdWJsZS1jbGljayBldmVudHMuXG4gICAqIERlZmF1bHRzIHRvIGZhbHNlLlxuICAgKi9cbiAgcHVibGljIGRpc2FibGVkID0gaW5wdXQ8Ym9vbGVhbj4oZmFsc2UpO1xuXG4gIC8qKlxuICAgKiBPdXRwdXQgZXZlbnQgZW1pdHRlZCB3aGVuIGEgc2luZ2xlLWNsaWNrIGlzIGRldGVjdGVkLlxuICAgKiBFbWl0cyBhZnRlciB0aGUgY29uZmlndXJlZCBkdXJhdGlvbiBtaWxsaXNlY29uZHMgaWYgbm8gc2Vjb25kIGNsaWNrIG9jY3Vycy5cbiAgICogRW1pdHMgdGhlIE1vdXNlRXZlbnQuXG4gICAqL1xuICBwdWJsaWMgb25DbGljayA9IG91dHB1dDxNb3VzZUV2ZW50PigpO1xuXG4gIC8qKlxuICAgKiBPdXRwdXQgZXZlbnQgZW1pdHRlZCB3aGVuIGEgZG91YmxlLWNsaWNrIGlzIGRldGVjdGVkLlxuICAgKiBFbWl0cyB3aGVuIHR3byBjbGlja3Mgb2NjdXIgd2l0aGluIHRoZSBjb25maWd1cmVkIGR1cmF0aW9uIG1pbGxpc2Vjb25kcy5cbiAgICogRW1pdHMgdGhlIEV2ZW50IChNb3VzZUV2ZW50IGZvciBkZXNrdG9wLCBUb3VjaEV2ZW50IGZvciBtb2JpbGUpLlxuICAgKi9cbiAgcHVibGljIG9uRGJsQ2xpY2sgPSBvdXRwdXQ8RXZlbnQ+KCk7XG5cbiAgcHJpdmF0ZSBsYXN0Q2xpY2sgPSAwO1xuICBwcml2YXRlIGxhc3RUYXAgPSAwO1xuICBwcml2YXRlIGNsaWNrVGltZW91dDogUmV0dXJuVHlwZTx0eXBlb2Ygc2V0VGltZW91dD4gfCBudWxsID0gbnVsbDtcbiAgcHJpdmF0ZSBwZW5kaW5nQ2xpY2tFdmVudDogTW91c2VFdmVudCB8IG51bGwgPSBudWxsO1xuXG4gIC8qKlxuICAgKiBIYW5kbGVzIGNsaWNrIGV2ZW50cyBhbmQgZGV0ZWN0cyBib3RoIHNpbmdsZS1jbGlja3MgYW5kIGRvdWJsZS1jbGlja3MuXG4gICAqIFByZXZlbnRzIG5hdGl2ZSBjbGljayBwcm9wYWdhdGlvbiBhbmQgZW1pdHMgYXBwcm9wcmlhdGUgZXZlbnRzLlxuICAgKiBXaGVuIGRpc2FibGVkIGlzIHRydWUsIGVtaXRzIGNsaWNrIGltbWVkaWF0ZWx5LCBzdGlsbCBkZXRlY3RzIGRvdWJsZS1jbGlja3MsIGFuZCBhbGxvd3MgbmF0aXZlIERPTSBiZWhhdmlvciAobm8gcHJldmVudERlZmF1bHQpLlxuICAgKi9cbiAgaGFuZGxlQ2xpY2soZXZlbnQ6IE1vdXNlRXZlbnQpOiB2b2lkIHtcbiAgICBjb25zdCBkdXJhdGlvbiA9IHRoaXMuZHVyYXRpb24oKTtcbiAgICBjb25zdCBjdXJyZW50VGltZSA9IG5ldyBEYXRlKCkuZ2V0VGltZSgpO1xuICAgIGNvbnN0IGNsaWNrR2FwID0gY3VycmVudFRpbWUgLSB0aGlzLmxhc3RDbGljaztcblxuICAgIC8vIElmIGRpc2FibGVkLCBlbWl0IGNsaWNrIGltbWVkaWF0ZWx5IGFuZCBzdGlsbCB0cmFjayBmb3IgZG91YmxlLWNsaWNrLCBidXQgZG9uJ3QgcHJldmVudCBkZWZhdWx0XG4gICAgaWYgKHRoaXMuZGlzYWJsZWQoKSkge1xuICAgICAgLy8gRW1pdCBzaW5nbGUgY2xpY2sgaW1tZWRpYXRlbHlcbiAgICAgIHRoaXMub25DbGljay5lbWl0KGV2ZW50KTtcblxuICAgICAgLy8gU3RpbGwgdHJhY2sgZm9yIGRvdWJsZS1jbGljayBkZXRlY3Rpb25cbiAgICAgIGlmIChjbGlja0dhcCA+IDAgJiYgY2xpY2tHYXAgPCBkdXJhdGlvbikge1xuICAgICAgICAvLyBEb3VibGUtY2xpY2sgZGV0ZWN0ZWQgLSBlbWl0IGRvdWJsZS1jbGlja1xuICAgICAgICBpZiAodGhpcy5jbGlja1RpbWVvdXQpIHtcbiAgICAgICAgICBjbGVhclRpbWVvdXQodGhpcy5jbGlja1RpbWVvdXQpO1xuICAgICAgICAgIHRoaXMuY2xpY2tUaW1lb3V0ID0gbnVsbDtcbiAgICAgICAgfVxuICAgICAgICBpZiAodGhpcy5wZW5kaW5nQ2xpY2tFdmVudCkge1xuICAgICAgICAgIHRoaXMucGVuZGluZ0NsaWNrRXZlbnQgPSBudWxsO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMub25EYmxDbGljay5lbWl0KGV2ZW50KTtcbiAgICAgICAgdGhpcy5sYXN0Q2xpY2sgPSAwO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgLy8gRmlyc3QgY2xpY2sgLSBzdG9yZSBpdCBhbmQgd2FpdCB0byBzZWUgaWYgYSBzZWNvbmQgY2xpY2sgY29tZXNcbiAgICAgICAgdGhpcy5sYXN0Q2xpY2sgPSBjdXJyZW50VGltZTtcbiAgICAgICAgdGhpcy5wZW5kaW5nQ2xpY2tFdmVudCA9IGV2ZW50O1xuXG4gICAgICAgIGlmICh0aGlzLmNsaWNrVGltZW91dCkge1xuICAgICAgICAgIGNsZWFyVGltZW91dCh0aGlzLmNsaWNrVGltZW91dCk7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBTZXQgdGltZW91dCB0byBlbWl0IGRvdWJsZS1jbGljayBpZiBzZWNvbmQgY2xpY2sgb2NjdXJzIHdpdGhpbiBkdXJhdGlvblxuICAgICAgICAvLyBOb3RlOiBXZSBhbHJlYWR5IGVtaXR0ZWQgc2luZ2xlLWNsaWNrLCBzbyB3ZSBqdXN0IHRyYWNrIGZvciBkb3VibGUtY2xpY2sgaGVyZVxuICAgICAgICB0aGlzLmNsaWNrVGltZW91dCA9IHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgIC8vIE5vIGRvdWJsZS1jbGljayBkZXRlY3RlZCB3aXRoaW4gZHVyYXRpb24sIHJlc2V0IHN0YXRlXG4gICAgICAgICAgdGhpcy5wZW5kaW5nQ2xpY2tFdmVudCA9IG51bGw7XG4gICAgICAgICAgdGhpcy5sYXN0Q2xpY2sgPSAwO1xuICAgICAgICAgIHRoaXMuY2xpY2tUaW1lb3V0ID0gbnVsbDtcbiAgICAgICAgfSwgZHVyYXRpb24pO1xuICAgICAgfVxuXG4gICAgICAvLyBEb24ndCBwcmV2ZW50IGRlZmF1bHQgLSBhbGxvdyBuYXRpdmUgY2xpY2sgYW5kIGRibGNsaWNrIHRvIGZpcmVcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICAvLyBXaGVuIGVuYWJsZWQsIHByZXZlbnQgdGhlIG5hdGl2ZSBjbGljayBldmVudCBmcm9tIHByb3BhZ2F0aW5nXG4gICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICBldmVudC5zdG9wSW1tZWRpYXRlUHJvcGFnYXRpb24oKTtcblxuICAgIGlmIChjbGlja0dhcCA+IDAgJiYgY2xpY2tHYXAgPCBkdXJhdGlvbikge1xuICAgICAgLy8gRG91YmxlLWNsaWNrIGRldGVjdGVkIC0gY2xlYXIgcGVuZGluZyBzaW5nbGUgY2xpY2sgYW5kIGVtaXQgZG91YmxlLWNsaWNrXG4gICAgICBpZiAodGhpcy5jbGlja1RpbWVvdXQpIHtcbiAgICAgICAgY2xlYXJUaW1lb3V0KHRoaXMuY2xpY2tUaW1lb3V0KTtcbiAgICAgICAgdGhpcy5jbGlja1RpbWVvdXQgPSBudWxsO1xuICAgICAgfVxuICAgICAgaWYgKHRoaXMucGVuZGluZ0NsaWNrRXZlbnQpIHtcbiAgICAgICAgdGhpcy5wZW5kaW5nQ2xpY2tFdmVudCA9IG51bGw7XG4gICAgICB9XG4gICAgICB0aGlzLm9uRGJsQ2xpY2suZW1pdChldmVudCk7XG4gICAgICB0aGlzLmxhc3RDbGljayA9IDA7XG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIEZpcnN0IGNsaWNrIC0gc3RvcmUgaXQgYW5kIHdhaXQgdG8gc2VlIGlmIGEgc2Vjb25kIGNsaWNrIGNvbWVzXG4gICAgICB0aGlzLmxhc3RDbGljayA9IGN1cnJlbnRUaW1lO1xuICAgICAgdGhpcy5wZW5kaW5nQ2xpY2tFdmVudCA9IGV2ZW50O1xuXG4gICAgICBpZiAodGhpcy5jbGlja1RpbWVvdXQpIHtcbiAgICAgICAgY2xlYXJUaW1lb3V0KHRoaXMuY2xpY2tUaW1lb3V0KTtcbiAgICAgIH1cblxuICAgICAgLy8gU2V0IHRpbWVvdXQgdG8gZW1pdCBzaW5nbGUtY2xpY2sgaWYgbm8gc2Vjb25kIGNsaWNrIG9jY3Vyc1xuICAgICAgdGhpcy5jbGlja1RpbWVvdXQgPSBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgLy8gTm8gZG91YmxlLWNsaWNrIGRldGVjdGVkLCBlbWl0IHNpbmdsZS1jbGlja1xuICAgICAgICBpZiAodGhpcy5wZW5kaW5nQ2xpY2tFdmVudCkge1xuICAgICAgICAgIHRoaXMub25DbGljay5lbWl0KHRoaXMucGVuZGluZ0NsaWNrRXZlbnQpO1xuICAgICAgICAgIHRoaXMucGVuZGluZ0NsaWNrRXZlbnQgPSBudWxsO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMubGFzdENsaWNrID0gMDtcbiAgICAgICAgdGhpcy5jbGlja1RpbWVvdXQgPSBudWxsO1xuICAgICAgfSwgZHVyYXRpb24pO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBIYW5kbGVzIHRvdWNoZW5kIGV2ZW50cyAobW9iaWxlKSB0byBkZXRlY3QgZG91YmxlLXRhcC5cbiAgICogV2hlbiBkaXNhYmxlZCBpcyB0cnVlLCBhbGxvd3MgbmF0aXZlIHRvdWNoIGJlaGF2aW9yLlxuICAgKi9cbiAgb25Ub3VjaEVuZChldmVudDogVG91Y2hFdmVudCk6IHZvaWQge1xuICAgIC8vIElmIGRpc2FibGVkLCBsZXQgbmF0aXZlIGV2ZW50cyBmaXJlIG5vcm1hbGx5XG4gICAgaWYgKHRoaXMuZGlzYWJsZWQoKSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IGR1cmF0aW9uID0gdGhpcy5kdXJhdGlvbigpO1xuICAgIGNvbnN0IGN1cnJlbnRUaW1lID0gbmV3IERhdGUoKS5nZXRUaW1lKCk7XG4gICAgY29uc3QgdGFwR2FwID0gY3VycmVudFRpbWUgLSB0aGlzLmxhc3RUYXA7XG5cbiAgICBpZiAodGFwR2FwID4gMCAmJiB0YXBHYXAgPCBkdXJhdGlvbikge1xuICAgICAgLy8gRGV0ZWN0ZWQgYSBkb3VibGUtdGFwXG4gICAgICB0aGlzLm9uRGJsQ2xpY2suZW1pdChldmVudCk7XG4gICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpOyAvLyBQcmV2ZW50IGZ1cnRoZXIgZGVmYXVsdCBhY3Rpb25zXG4gICAgfVxuICAgIHRoaXMubGFzdFRhcCA9IGN1cnJlbnRUaW1lO1xuICB9XG5cbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuY2xpY2tUaW1lb3V0KSB7XG4gICAgICBjbGVhclRpbWVvdXQodGhpcy5jbGlja1RpbWVvdXQpO1xuICAgICAgdGhpcy5jbGlja1RpbWVvdXQgPSBudWxsO1xuICAgIH1cbiAgfVxufVxuIl19","/**\n * Generated bundle index. Do not edit.\n */\nexport * from './index';\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWNvcmV4LWNkay1kb3VibGUtY2xpY2suanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9jZGsvZG91YmxlLWNsaWNrL3NyYy9hY29yZXgtY2RrLWRvdWJsZS1jbGljay50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7R0FFRztBQUVILGNBQWMsU0FBUyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBHZW5lcmF0ZWQgYnVuZGxlIGluZGV4LiBEbyBub3QgZWRpdC5cbiAqL1xuXG5leHBvcnQgKiBmcm9tICcuL2luZGV4JztcbiJdfQ=="],"names":[],"mappings":"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"}
@@ -0,0 +1,185 @@
1
+ import * as i0 from '@angular/core';
2
+ import { signal, output, inject, Renderer2, ElementRef, effect, untracked, Directive } from '@angular/core';
3
+
4
+ /**
5
+ * Fullscreen directive that provides CSS-based fullscreen functionality
6
+ * Usage: <element axFullscreen #fullscreen="axFullscreen"></element>
7
+ * Then: fullscreen.toggle() or fullscreen.enter() or fullscreen.exit()
8
+ */
9
+ class AXFullScreenDirective {
10
+ constructor() {
11
+ /**
12
+ * Current fullscreen state
13
+ */
14
+ this.isFullscreenState = signal(false, ...(ngDevMode ? [{ debugName: "isFullscreenState" }] : []));
15
+ /**
16
+ * Original element styles to restore
17
+ */
18
+ this.originalStyles = {};
19
+ /**
20
+ * Original parent element reference
21
+ */
22
+ this.originalParent = null;
23
+ /**
24
+ * Fullscreen container element
25
+ */
26
+ this.fullscreenContainer = null;
27
+ /**
28
+ * Fullscreen change event
29
+ */
30
+ this.fullscreenChange = output();
31
+ this.renderer = inject(Renderer2);
32
+ this.elementRef = inject(ElementRef);
33
+ // Sync state changes to output
34
+ effect(() => {
35
+ const isFullscreen = this.isFullscreenState();
36
+ untracked(() => {
37
+ this.fullscreenChange.emit(isFullscreen);
38
+ });
39
+ });
40
+ }
41
+ /**
42
+ * Toggle fullscreen state
43
+ */
44
+ toggle() {
45
+ if (this.isFullscreenState()) {
46
+ this.exit();
47
+ }
48
+ else {
49
+ this.enter();
50
+ }
51
+ }
52
+ /**
53
+ * Enter fullscreen mode using CSS
54
+ */
55
+ enter() {
56
+ if (this.isFullscreenState()) {
57
+ return;
58
+ }
59
+ const element = this.elementRef.nativeElement;
60
+ try {
61
+ // Store original styles and parent
62
+ this.storeOriginalStyles(element);
63
+ this.originalParent = element.parentElement;
64
+ // Create fullscreen container
65
+ this.fullscreenContainer = this.renderer.createElement('div');
66
+ this.renderer.setStyle(this.fullscreenContainer, 'position', 'fixed');
67
+ this.renderer.setStyle(this.fullscreenContainer, 'top', '0');
68
+ this.renderer.setStyle(this.fullscreenContainer, 'left', '0');
69
+ this.renderer.setStyle(this.fullscreenContainer, 'width', '100vw');
70
+ this.renderer.setStyle(this.fullscreenContainer, 'height', '100vh');
71
+ this.renderer.setStyle(this.fullscreenContainer, 'z-index', '100');
72
+ this.renderer.setStyle(this.fullscreenContainer, 'background-color', '#ffffff');
73
+ this.renderer.setStyle(this.fullscreenContainer, 'overflow', 'auto');
74
+ // Move element to container
75
+ this.renderer.appendChild(this.fullscreenContainer, element);
76
+ // Apply fullscreen styles to element
77
+ this.renderer.setStyle(element, 'position', 'relative');
78
+ this.renderer.setStyle(element, 'width', '100%');
79
+ this.renderer.setStyle(element, 'height', '100%');
80
+ this.renderer.setStyle(element, 'margin', '0');
81
+ this.renderer.setStyle(element, 'padding', '0');
82
+ // Append container to body
83
+ this.renderer.appendChild(document.body, this.fullscreenContainer);
84
+ // Prevent body scroll
85
+ this.renderer.setStyle(document.body, 'overflow', 'hidden');
86
+ this.isFullscreenState.set(true);
87
+ }
88
+ catch (error) {
89
+ console.error('Error entering fullscreen:', error);
90
+ this.restoreOriginalStyles(element);
91
+ }
92
+ }
93
+ /**
94
+ * Exit fullscreen mode
95
+ */
96
+ exit() {
97
+ if (!this.isFullscreenState()) {
98
+ return;
99
+ }
100
+ const element = this.elementRef.nativeElement;
101
+ try {
102
+ // Restore body scroll
103
+ this.renderer.removeStyle(document.body, 'overflow');
104
+ // Move element back to original parent
105
+ if (this.fullscreenContainer && this.originalParent) {
106
+ this.renderer.removeChild(this.fullscreenContainer, element);
107
+ this.renderer.appendChild(this.originalParent, element);
108
+ // Remove container
109
+ this.renderer.removeChild(document.body, this.fullscreenContainer);
110
+ this.fullscreenContainer = null;
111
+ }
112
+ // Restore original styles
113
+ this.restoreOriginalStyles(element);
114
+ this.isFullscreenState.set(false);
115
+ }
116
+ catch (error) {
117
+ console.error('Error exiting fullscreen:', error);
118
+ }
119
+ }
120
+ /**
121
+ * Check if currently in fullscreen mode
122
+ */
123
+ isFullscreen() {
124
+ return this.isFullscreenState();
125
+ }
126
+ /**
127
+ * Store original element styles
128
+ */
129
+ storeOriginalStyles(element) {
130
+ const computedStyle = window.getComputedStyle(element);
131
+ this.originalStyles = {
132
+ position: computedStyle.position,
133
+ top: computedStyle.top,
134
+ left: computedStyle.left,
135
+ width: computedStyle.width,
136
+ height: computedStyle.height,
137
+ zIndex: computedStyle.zIndex,
138
+ backgroundColor: computedStyle.backgroundColor,
139
+ margin: computedStyle.margin,
140
+ padding: computedStyle.padding,
141
+ };
142
+ }
143
+ /**
144
+ * Restore original element styles
145
+ */
146
+ restoreOriginalStyles(element) {
147
+ if (!this.originalStyles) {
148
+ return;
149
+ }
150
+ // Restore each style property
151
+ Object.entries(this.originalStyles).forEach(([key, value]) => {
152
+ const styleKey = this.camelToKebabCase(key);
153
+ if (value) {
154
+ this.renderer.setStyle(element, styleKey, value);
155
+ }
156
+ else {
157
+ this.renderer.removeStyle(element, styleKey);
158
+ }
159
+ });
160
+ this.originalStyles = {};
161
+ }
162
+ /**
163
+ * Convert camelCase to kebab-case for CSS properties
164
+ */
165
+ camelToKebabCase(str) {
166
+ return str.replace(/([a-z0-9]|(?=[A-Z]))([A-Z])/g, '$1-$2').toLowerCase();
167
+ }
168
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.9", ngImport: i0, type: AXFullScreenDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
169
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "20.3.9", type: AXFullScreenDirective, isStandalone: true, selector: "[axFullscreen]", outputs: { fullscreenChange: "fullscreenChange" }, exportAs: ["axFullscreen"], ngImport: i0 }); }
170
+ }
171
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.9", ngImport: i0, type: AXFullScreenDirective, decorators: [{
172
+ type: Directive,
173
+ args: [{
174
+ selector: '[axFullscreen]',
175
+ standalone: true,
176
+ exportAs: 'axFullscreen',
177
+ }]
178
+ }], ctorParameters: () => [], propDecorators: { fullscreenChange: [{ type: i0.Output, args: ["fullscreenChange"] }] } });
179
+
180
+ /**
181
+ * Generated bundle index. Do not edit.
182
+ */
183
+
184
+ export { AXFullScreenDirective };
185
+ //# sourceMappingURL=acorex-cdk-full-screen.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"acorex-cdk-full-screen.mjs","sources":["../tmp-esm2022/full-screen/lib/full-screen.directive.js","../tmp-esm2022/full-screen/acorex-cdk-full-screen.js"],"sourcesContent":["import { Directive, effect, ElementRef, inject, output, Renderer2, signal, untracked } from '@angular/core';\nimport * as i0 from \"@angular/core\";\n/**\n * Fullscreen directive that provides CSS-based fullscreen functionality\n * Usage: <element axFullscreen #fullscreen=\"axFullscreen\"></element>\n * Then: fullscreen.toggle() or fullscreen.enter() or fullscreen.exit()\n */\nexport class AXFullScreenDirective {\n constructor() {\n /**\n * Current fullscreen state\n */\n this.isFullscreenState = signal(false, ...(ngDevMode ? [{ debugName: \"isFullscreenState\" }] : []));\n /**\n * Original element styles to restore\n */\n this.originalStyles = {};\n /**\n * Original parent element reference\n */\n this.originalParent = null;\n /**\n * Fullscreen container element\n */\n this.fullscreenContainer = null;\n /**\n * Fullscreen change event\n */\n this.fullscreenChange = output();\n this.renderer = inject(Renderer2);\n this.elementRef = inject(ElementRef);\n // Sync state changes to output\n effect(() => {\n const isFullscreen = this.isFullscreenState();\n untracked(() => {\n this.fullscreenChange.emit(isFullscreen);\n });\n });\n }\n /**\n * Toggle fullscreen state\n */\n toggle() {\n if (this.isFullscreenState()) {\n this.exit();\n }\n else {\n this.enter();\n }\n }\n /**\n * Enter fullscreen mode using CSS\n */\n enter() {\n if (this.isFullscreenState()) {\n return;\n }\n const element = this.elementRef.nativeElement;\n try {\n // Store original styles and parent\n this.storeOriginalStyles(element);\n this.originalParent = element.parentElement;\n // Create fullscreen container\n this.fullscreenContainer = this.renderer.createElement('div');\n this.renderer.setStyle(this.fullscreenContainer, 'position', 'fixed');\n this.renderer.setStyle(this.fullscreenContainer, 'top', '0');\n this.renderer.setStyle(this.fullscreenContainer, 'left', '0');\n this.renderer.setStyle(this.fullscreenContainer, 'width', '100vw');\n this.renderer.setStyle(this.fullscreenContainer, 'height', '100vh');\n this.renderer.setStyle(this.fullscreenContainer, 'z-index', '100');\n this.renderer.setStyle(this.fullscreenContainer, 'background-color', '#ffffff');\n this.renderer.setStyle(this.fullscreenContainer, 'overflow', 'auto');\n // Move element to container\n this.renderer.appendChild(this.fullscreenContainer, element);\n // Apply fullscreen styles to element\n this.renderer.setStyle(element, 'position', 'relative');\n this.renderer.setStyle(element, 'width', '100%');\n this.renderer.setStyle(element, 'height', '100%');\n this.renderer.setStyle(element, 'margin', '0');\n this.renderer.setStyle(element, 'padding', '0');\n // Append container to body\n this.renderer.appendChild(document.body, this.fullscreenContainer);\n // Prevent body scroll\n this.renderer.setStyle(document.body, 'overflow', 'hidden');\n this.isFullscreenState.set(true);\n }\n catch (error) {\n console.error('Error entering fullscreen:', error);\n this.restoreOriginalStyles(element);\n }\n }\n /**\n * Exit fullscreen mode\n */\n exit() {\n if (!this.isFullscreenState()) {\n return;\n }\n const element = this.elementRef.nativeElement;\n try {\n // Restore body scroll\n this.renderer.removeStyle(document.body, 'overflow');\n // Move element back to original parent\n if (this.fullscreenContainer && this.originalParent) {\n this.renderer.removeChild(this.fullscreenContainer, element);\n this.renderer.appendChild(this.originalParent, element);\n // Remove container\n this.renderer.removeChild(document.body, this.fullscreenContainer);\n this.fullscreenContainer = null;\n }\n // Restore original styles\n this.restoreOriginalStyles(element);\n this.isFullscreenState.set(false);\n }\n catch (error) {\n console.error('Error exiting fullscreen:', error);\n }\n }\n /**\n * Check if currently in fullscreen mode\n */\n isFullscreen() {\n return this.isFullscreenState();\n }\n /**\n * Store original element styles\n */\n storeOriginalStyles(element) {\n const computedStyle = window.getComputedStyle(element);\n this.originalStyles = {\n position: computedStyle.position,\n top: computedStyle.top,\n left: computedStyle.left,\n width: computedStyle.width,\n height: computedStyle.height,\n zIndex: computedStyle.zIndex,\n backgroundColor: computedStyle.backgroundColor,\n margin: computedStyle.margin,\n padding: computedStyle.padding,\n };\n }\n /**\n * Restore original element styles\n */\n restoreOriginalStyles(element) {\n if (!this.originalStyles) {\n return;\n }\n // Restore each style property\n Object.entries(this.originalStyles).forEach(([key, value]) => {\n const styleKey = this.camelToKebabCase(key);\n if (value) {\n this.renderer.setStyle(element, styleKey, value);\n }\n else {\n this.renderer.removeStyle(element, styleKey);\n }\n });\n this.originalStyles = {};\n }\n /**\n * Convert camelCase to kebab-case for CSS properties\n */\n camelToKebabCase(str) {\n return str.replace(/([a-z0-9]|(?=[A-Z]))([A-Z])/g, '$1-$2').toLowerCase();\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.9\", ngImport: i0, type: AXFullScreenDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }\n static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"14.0.0\", version: \"20.3.9\", type: AXFullScreenDirective, isStandalone: true, selector: \"[axFullscreen]\", outputs: { fullscreenChange: \"fullscreenChange\" }, exportAs: [\"axFullscreen\"], ngImport: i0 }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.9\", ngImport: i0, type: AXFullScreenDirective, decorators: [{\n type: Directive,\n args: [{\n selector: '[axFullscreen]',\n standalone: true,\n exportAs: 'axFullscreen',\n }]\n }], ctorParameters: () => [], propDecorators: { fullscreenChange: [{ type: i0.Output, args: [\"fullscreenChange\"] }] } });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZnVsbC1zY3JlZW4uZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvY2RrL2Z1bGwtc2NyZWVuL3NyYy9saWIvZnVsbC1zY3JlZW4uZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFLFNBQVMsRUFBRSxNQUFNLEVBQUUsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDOztBQUU1Rzs7OztHQUlHO0FBTUgsTUFBTSxPQUFPLHFCQUFxQjtJQXVDaEM7UUF0Q0E7O1dBRUc7UUFDYyxzQkFBaUIsR0FBRyxNQUFNLENBQVUsS0FBSyw2REFBQyxDQUFDO1FBRTVEOztXQUVHO1FBQ0ssbUJBQWMsR0FVbEIsRUFBRSxDQUFDO1FBRVA7O1dBRUc7UUFDSyxtQkFBYyxHQUF1QixJQUFJLENBQUM7UUFFbEQ7O1dBRUc7UUFDSyx3QkFBbUIsR0FBdUIsSUFBSSxDQUFDO1FBRXZEOztXQUVHO1FBQ00scUJBQWdCLEdBQUcsTUFBTSxFQUFXLENBQUM7UUFFN0IsYUFBUSxHQUFHLE1BQU0sQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUM3QixlQUFVLEdBQUcsTUFBTSxDQUEwQixVQUFVLENBQUMsQ0FBQztRQUd4RSwrQkFBK0I7UUFDL0IsTUFBTSxDQUFDLEdBQUcsRUFBRTtZQUNWLE1BQU0sWUFBWSxHQUFHLElBQUksQ0FBQyxpQkFBaUIsRUFBRSxDQUFDO1lBQzlDLFNBQVMsQ0FBQyxHQUFHLEVBQUU7Z0JBQ2IsSUFBSSxDQUFDLGdCQUFnQixDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQztZQUMzQyxDQUFDLENBQUMsQ0FBQztRQUNMLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVEOztPQUVHO0lBQ0gsTUFBTTtRQUNKLElBQUksSUFBSSxDQUFDLGlCQUFpQixFQUFFLEVB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TyxFQUFFLFFBQVEsRUFBRSxLQUFLLENBQUMsQ0FBQztZQUNuRCxDQUFDO2lCQUFNLENBQUM7Z0JBQ04sSUFBSSxDQUFDLFFBQVEsQ0FBQyxXQUFXLENBQUMsT0FBTyxFQUFFLFFBQVEsQ0FBQyxDQUFDO1lBQy9DLENBQUM7UUFDSCxDQUFDLENBQUMsQ0FBQztRQUVILElBQUksQ0FBQyxjQUFjLEdBQUcsRUFBRSxDQUFDO0lBQzNCLENBQUM7SUFFRDs7T0FFRztJQUNLLGdCQUFnQixDQUFDLEdBQVc7UUFDbEMsT0FBTyxHQUFHLENBQUMsT0FBTyxDQUFDLDhCQUE4QixFQUFFLE9BQU8sQ0FBQyxDQUFDLFdBQVcsRUFBRSxDQUFDO0lBQzVFLENBQUM7OEdBak1VLHFCQUFxQjtrR0FBckIscUJBQXFCOzsyRkFBckIscUJBQXFCO2tCQUxqQyxTQUFTO21CQUFDO29CQUNULFFBQVEsRUFBRSxnQkFBZ0I7b0JBQzFCLFVBQVUsRUFBRSxJQUFJO29CQUNoQixRQUFRLEVBQUUsY0FBYztpQkFDekIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBEaXJlY3RpdmUsIGVmZmVjdCwgRWxlbWVudFJlZiwgaW5qZWN0LCBvdXRwdXQsIFJlbmRlcmVyMiwgc2lnbmFsLCB1bnRyYWNrZWQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuLyoqXG4gKiBGdWxsc2NyZWVuIGRpcmVjdGl2ZSB0aGF0IHByb3ZpZGVzIENTUy1iYXNlZCBmdWxsc2NyZWVuIGZ1bmN0aW9uYWxpdHlcbiAqIFVzYWdlOiA8ZWxlbWVudCBheEZ1bGxzY3JlZW4gI2Z1bGxzY3JlZW49XCJheEZ1bGxzY3JlZW5cIj48L2VsZW1lbnQ+XG4gKiBUaGVuOiBmdWxsc2NyZWVuLnRvZ2dsZSgpIG9yIGZ1bGxzY3JlZW4uZW50ZXIoKSBvciBmdWxsc2NyZWVuLmV4aXQoKVxuICovXG5ARGlyZWN0aXZlKHtcbiAgc2VsZWN0b3I6ICdbYXhGdWxsc2NyZWVuXScsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGV4cG9ydEFzOiAnYXhGdWxsc2NyZWVuJyxcbn0pXG5leHBvcnQgY2xhc3MgQVhGdWxsU2NyZWVuRGlyZWN0aXZlIHtcbiAgLyoqXG4gICAqIEN1cnJlbnQgZnVsbHNjcmVlbiBzdGF0ZVxuICAgKi9cbiAgcHJpdmF0ZSByZWFkb25seSBpc0Z1bGxzY3JlZW5TdGF0ZSA9IHNpZ25hbDxib29sZWFuPihmYWxzZSk7XG5cbiAgLyoqXG4gICAqIE9yaWdpbmFsIGVsZW1lbnQgc3R5bGVzIHRvIHJlc3RvcmVcbiAgICovXG4gIHByaXZhdGUgb3JpZ2luYWxTdHlsZXM6IHtcbiAgICBwb3NpdGlvbj86IHN0cmluZztcbiAgICB0b3A/OiBzdHJpbmc7XG4gICAgbGVmdD86IHN0cmluZztcbiAgICB3aWR0aD86IHN0cmluZztcbiAgICBoZWlnaHQ/OiBzdHJpbmc7XG4gICAgekluZGV4Pzogc3RyaW5nO1xuICAgIGJhY2tncm91bmRDb2xvcj86IHN0cmluZztcbiAgICBtYXJnaW4/OiBzdHJpbmc7XG4gICAgcGFkZGluZz86IHN0cmluZztcbiAgfSA9IHt9O1xuXG4gIC8qKlxuICAgKiBPcmlnaW5hbCBwYXJlbnQgZWxlbWVudCByZWZlcmVuY2VcbiAgICovXG4gIHByaXZhdGUgb3JpZ2luYWxQYXJlbnQ6IEhUTUxFbGVtZW50IHwgbnVsbCA9IG51bGw7XG5cbiAgLyoqXG4gICAqIEZ1bGxzY3JlZW4gY29udGFpbmVyIGVsZW1lbnRcbiAgICovXG4gIHByaXZhdGUgZnVsbHNjcmVlbkNvbnRhaW5lcjogSFRNTEVsZW1lbnQgfCBudWxsID0gbnVsbDtcblxuICAvKipcbiAgICogRnVsbHNjcmVlbiBjaGFuZ2UgZXZlbnRcbiAgICovXG4gIHJlYWRvbmx5IGZ1bGxzY3JlZW5DaGFuZ2UgPSBvdXRwdXQ8Ym9vbGVhbj4oKTtcblxuICBwcml2YXRlIHJlYWRvbmx5IHJlbmRlcmVyID0gaW5qZWN0KFJlbmRlcmVyMik7XG4gIHByaXZhdGUgcmVhZG9ubHkgZWxlbWVudFJlZiA9IGluamVjdDxFbGVtZW50UmVmPEhUTUxFbGVtZW50Pj4oRWxlbWVudFJlZik7XG5cbiAgY29uc3RydWN0b3IoKSB7XG4gICAgLy8gU3luYyBzdGF0ZSBjaGFuZ2VzIHRvIG91dHB1dFxuICAgIGVmZmVjdCgoKSA9PiB7XG4gICAgICBjb25zdCBpc0Z1bGxzY3JlZW4gPSB0aGlzLmlzRnVsbHNjcmVlblN0YXRlKCk7XG4gICAgICB1bnRyYWNrZWQoKCkgPT4ge1xuICAgICAgICB0aGlzLmZ1bGxzY3JlZW5DaGFuZ2UuZW1pdChpc0Z1bGxzY3JlZW4pO1xuICAgICAgfSk7XG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogVG9nZ2xlIGZ1bGxzY3JlZW4gc3RhdGVcbiAgICovXG4gIHRvZ2dsZSgpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5pc0Z1bGxzY3JlZW5TdGF0ZSgpKSB7XG4gICAgICB0aGlzLmV4aXQoKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5lbnRlcigpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBFbnRlciBmdWxsc2NyZWVuIG1vZGUgdXNpbmcgQ1NTXG4gICAqL1xuICBlbnRlcigpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5pc0Z1bGxzY3JlZW5TdGF0ZSgpKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3QgZWxlbWVudCA9IHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50O1xuXG4gICAgdHJ5IHtcbiAgICAgIC8vIFN0b3JlIG9yaWdpbmFsIHN0eWxlcyBhbmQgcGFyZW50XG4gICAgICB0aGlzLnN0b3JlT3JpZ2luYWxTdHlsZXMoZWxlbWVudCk7XG4gICAgICB0aGlzLm9yaWdpbmFsUGFyZW50ID0gZWxlbWVudC5wYXJlbnRFbGVtZW50O1xuXG4gICAgICAvLyBDcmVhdGUgZnVsbHNjcmVlbiBjb250YWluZXJcbiAgICAgIHRoaXMuZnVsbHNjcmVlbkNvbnRhaW5lciA9IHRoaXMucmVuZGVyZXIuY3JlYXRlRWxlbWVudCgnZGl2Jyk7XG4gICAgICB0aGlzLnJlbmRlcmVyLnNldFN0eWxlKHRoaXMuZnVsbHNjcmVlbkNvbnRhaW5lciwgJ3Bvc2l0aW9uJywgJ2ZpeGVkJyk7XG4gICAgICB0aGlzLnJlbmRlcmVyLnNldFN0eWxlKHRoaXMuZnVsbHNjcmVlbkNvbnRhaW5lciwgJ3RvcCcsICcwJyk7XG4gICAgICB0aGlzLnJlbmRlcmVyLnNldFN0eWxlKHRoaXMuZnVsbHNjcmVlbkNvbnRhaW5lciwgJ2xlZnQnLCAnMCcpO1xuICAgICAgdGhpcy5yZW5kZXJlci5zZXRTdHlsZSh0aGlzLmZ1bGxzY3JlZW5Db250YWluZXIsICd3aWR0aCcsICcxMDB2dycpO1xuICAgICAgdGhpcy5yZW5kZXJlci5zZXRTdHlsZSh0aGlzLmZ1bGxzY3JlZW5Db250YWluZXIsICdoZWlnaHQnLCAnMTAwdmgnKTtcbiAgICAgIHRoaXMucmVuZGVyZXIuc2V0U3R5bGUodGhpcy5mdWxsc2NyZWVuQ29udGFpbmVyLCAnei1pbmRleCcsICcxMDAnKTtcbiAgICAgIHRoaXMucmVuZGVyZXIuc2V0U3R5bGUodGhpcy5mdWxsc2NyZWVuQ29udGFpbmVyLCAnYmFja2dyb3VuZC1jb2xvcicsICcjZmZmZmZmJyk7XG4gICAgICB0aGlzLnJlbmRlcmVyLnNldFN0eWxlKHRoaXMuZnVsbHNjcmVlbkNvbnRhaW5lciwgJ292ZXJmbG93JywgJ2F1dG8nKTtcblxuICAgICAgLy8gTW92ZSBlbGVtZW50IHRvIGNvbnRhaW5lclxuICAgICAgdGhpcy5yZW5kZXJlci5hcHBlbmRDaGlsZCh0aGlzLmZ1bGxzY3JlZW5Db250YWluZXIsIGVsZW1lbnQpO1xuXG4gICAgICAvLyBBcHBseSBmdWxsc2NyZWVuIHN0eWxlcyB0byBlbGVtZW50XG4gICAgICB0aGlzLnJlbmRlcmVyLnNldFN0eWxlKGVsZW1lbnQsICdwb3NpdGlvbicsICdyZWxhdGl2ZScpO1xuICAgICAgdGhpcy5yZW5kZXJlci5zZXRTdHlsZShlbGVtZW50LCAnd2lkdGgnLCAnMTAwJScpO1xuICAgICAgdGhpcy5yZW5kZXJlci5zZXRTdHlsZShlbGVtZW50LCAnaGVpZ2h0JywgJzEwMCUnKTtcbiAgICAgIHRoaXMucmVuZGVyZXIuc2V0U3R5bGUoZWxlbWVudCwgJ21hcmdpbicsICcwJyk7XG4gICAgICB0aGlzLnJlbmRlcmVyLnNldFN0eWxlKGVsZW1lbnQsICdwYWRkaW5nJywgJzAnKTtcblxuICAgICAgLy8gQXBwZW5kIGNvbnRhaW5lciB0byBib2R5XG4gICAgICB0aGlzLnJlbmRlcmVyLmFwcGVuZENoaWxkKGRvY3VtZW50LmJvZHksIHRoaXMuZnVsbHNjcmVlbkNvbnRhaW5lcik7XG5cbiAgICAgIC8vIFByZXZlbnQgYm9keSBzY3JvbGxcbiAgICAgIHRoaXMucmVuZGVyZXIuc2V0U3R5bGUoZG9jdW1lbnQuYm9keSwgJ292ZXJmbG93JywgJ2hpZGRlbicpO1xuXG4gICAgICB0aGlzLmlzRnVsbHNjcmVlblN0YXRlLnNldCh0cnVlKTtcbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgY29uc29sZS5lcnJvcignRXJyb3IgZW50ZXJpbmcgZnVsbHNjcmVlbjonLCBlcnJvcik7XG4gICAgICB0aGlzLnJlc3RvcmVPcmlnaW5hbFN0eWxlcyhlbGVtZW50KTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogRXhpdCBmdWxsc2NyZWVuIG1vZGVcbiAgICovXG4gIGV4aXQoKTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLmlzRnVsbHNjcmVlblN0YXRlKCkpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCBlbGVtZW50ID0gdGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQ7XG5cbiAgICB0cnkge1xuICAgICAgLy8gUmVzdG9yZSBib2R5IHNjcm9sbFxuICAgICAgdGhpcy5yZW5kZXJlci5yZW1vdmVTdHlsZShkb2N1bWVudC5ib2R5LCAnb3ZlcmZsb3cnKTtcblxuICAgICAgLy8gTW92ZSBlbGVtZW50IGJhY2sgdG8gb3JpZ2luYWwgcGFyZW50XG4gICAgICBpZiAodGhpcy5mdWxsc2NyZWVuQ29udGFpbmVyICYmIHRoaXMub3JpZ2luYWxQYXJlbnQpIHtcbiAgICAgICAgdGhpcy5yZW5kZXJlci5yZW1vdmVDaGlsZCh0aGlzLmZ1bGxzY3JlZW5Db250YWluZXIsIGVsZW1lbnQpO1xuICAgICAgICB0aGlzLnJlbmRlcmVyLmFwcGVuZENoaWxkKHRoaXMub3JpZ2luYWxQYXJlbnQsIGVsZW1lbnQpO1xuXG4gICAgICAgIC8vIFJlbW92ZSBjb250YWluZXJcbiAgICAgICAgdGhpcy5yZW5kZXJlci5yZW1vdmVDaGlsZChkb2N1bWVudC5ib2R5LCB0aGlzLmZ1bGxzY3JlZW5Db250YWluZXIpO1xuICAgICAgICB0aGlzLmZ1bGxzY3JlZW5Db250YWluZXIgPSBudWxsO1xuICAgICAgfVxuXG4gICAgICAvLyBSZXN0b3JlIG9yaWdpbmFsIHN0eWxlc1xuICAgICAgdGhpcy5yZXN0b3JlT3JpZ2luYWxTdHlsZXMoZWxlbWVudCk7XG5cbiAgICAgIHRoaXMuaXNGdWxsc2NyZWVuU3RhdGUuc2V0KGZhbHNlKTtcbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgY29uc29sZS5lcnJvcignRXJyb3IgZXhpdGluZyBmdWxsc2NyZWVuOicsIGVycm9yKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogQ2hlY2sgaWYgY3VycmVudGx5IGluIGZ1bGxzY3JlZW4gbW9kZVxuICAgKi9cbiAgaXNGdWxsc2NyZWVuKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLmlzRnVsbHNjcmVlblN0YXRlKCk7XG4gIH1cblxuICAvKipcbiAgICogU3RvcmUgb3JpZ2luYWwgZWxlbWVudCBzdHlsZXNcbiAgICovXG4gIHByaXZhdGUgc3RvcmVPcmlnaW5hbFN0eWxlcyhlbGVtZW50OiBIVE1MRWxlbWVudCk6IHZvaWQge1xuICAgIGNvbnN0IGNvbXB1dGVkU3R5bGUgPSB3aW5kb3cuZ2V0Q29tcHV0ZWRTdHlsZShlbGVtZW50KTtcbiAgICB0aGlzLm9yaWdpbmFsU3R5bGVzID0ge1xuICAgICAgcG9zaXRpb246IGNvbXB1dGVkU3R5bGUucG9zaXRpb24sXG4gICAgICB0b3A6IGNvbXB1dGVkU3R5bGUudG9wLFxuICAgICAgbGVmdDogY29tcHV0ZWRTdHlsZS5sZWZ0LFxuICAgICAgd2lkdGg6IGNvbXB1dGVkU3R5bGUud2lkdGgsXG4gICAgICBoZWlnaHQ6IGNvbXB1dGVkU3R5bGUuaGVpZ2h0LFxuICAgICAgekluZGV4OiBjb21wdXRlZFN0eWxlLnpJbmRleCxcbiAgICAgIGJhY2tncm91bmRDb2xvcjogY29tcHV0ZWRTdHlsZS5iYWNrZ3JvdW5kQ29sb3IsXG4gICAgICBtYXJnaW46IGNvbXB1dGVkU3R5bGUubWFyZ2luLFxuICAgICAgcGFkZGluZzogY29tcHV0ZWRTdHlsZS5wYWRkaW5nLFxuICAgIH07XG4gIH1cblxuICAvKipcbiAgICogUmVzdG9yZSBvcmlnaW5hbCBlbGVtZW50IHN0eWxlc1xuICAgKi9cbiAgcHJpdmF0ZSByZXN0b3JlT3JpZ2luYWxTdHlsZXMoZWxlbWVudDogSFRNTEVsZW1lbnQpOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMub3JpZ2luYWxTdHlsZXMpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICAvLyBSZXN0b3JlIGVhY2ggc3R5bGUgcHJvcGVydHlcbiAgICBPYmplY3QuZW50cmllcyh0aGlzLm9yaWdpbmFsU3R5bGVzKS5mb3JFYWNoKChba2V5LCB2YWx1ZV0pID0+IHtcbiAgICAgIGNvbnN0IHN0eWxlS2V5ID0gdGhpcy5jYW1lbFRvS2ViYWJDYXNlKGtleSk7XG4gICAgICBpZiAodmFsdWUpIHtcbiAgICAgICAgdGhpcy5yZW5kZXJlci5zZXRTdHlsZShlbGVtZW50LCBzdHlsZUtleSwgdmFsdWUpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5yZW5kZXJlci5yZW1vdmVTdHlsZShlbGVtZW50LCBzdHlsZUtleSk7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICB0aGlzLm9yaWdpbmFsU3R5bGVzID0ge307XG4gIH1cblxuICAvKipcbiAgICogQ29udmVydCBjYW1lbENhc2UgdG8ga2ViYWItY2FzZSBmb3IgQ1NTIHByb3BlcnRpZXNcbiAgICovXG4gIHByaXZhdGUgY2FtZWxUb0tlYmFiQ2FzZShzdHI6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHN0ci5yZXBsYWNlKC8oW2EtejAtOV18KD89W0EtWl0pKShbQS1aXSkvZywgJyQxLSQyJykudG9Mb3dlckNhc2UoKTtcbiAgfVxufVxuIl19","/**\n * Generated bundle index. Do not edit.\n */\nexport * from './index';\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWNvcmV4LWNkay1mdWxsLXNjcmVlbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2Nkay9mdWxsLXNjcmVlbi9zcmMvYWNvcmV4LWNkay1mdWxsLXNjcmVlbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7R0FFRztBQUVILGNBQWMsU0FBUyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBHZW5lcmF0ZWQgYnVuZGxlIGluZGV4LiBEbyBub3QgZWRpdC5cbiAqL1xuXG5leHBvcnQgKiBmcm9tICcuL2luZGV4JztcbiJdfQ=="],"names":[],"mappings":"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"}