@agnos-ui/angular-headless 0.6.0 → 0.7.0-next.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.
- package/fesm2022/agnos-ui-angular-headless.mjs +66 -48
- package/fesm2022/agnos-ui-angular-headless.mjs.map +1 -1
- package/package.json +5 -5
- package/slot.directive.d.ts +3 -3
- package/types.d.ts +13 -5
- package/utils/coercion.d.ts +2 -2
- package/utils/directive.d.ts +4 -4
- package/utils/widget.d.ts +1 -1
- package/esm2022/agnos-ui-angular-headless.mjs +0 -5
- package/esm2022/config.mjs +0 -143
- package/esm2022/generated/components/accordion/index.mjs +0 -2
- package/esm2022/generated/components/alert/index.mjs +0 -2
- package/esm2022/generated/components/modal/index.mjs +0 -2
- package/esm2022/generated/components/pagination/index.mjs +0 -2
- package/esm2022/generated/components/progressbar/index.mjs +0 -2
- package/esm2022/generated/components/rating/index.mjs +0 -2
- package/esm2022/generated/components/select/index.mjs +0 -2
- package/esm2022/generated/components/slider/index.mjs +0 -2
- package/esm2022/generated/components/toast/index.mjs +0 -2
- package/esm2022/generated/components/tree/index.mjs +0 -2
- package/esm2022/generated/config.mjs +0 -2
- package/esm2022/generated/index.mjs +0 -34
- package/esm2022/generated/services/extendWidget.mjs +0 -2
- package/esm2022/generated/services/floatingUI.mjs +0 -2
- package/esm2022/generated/services/focustrack.mjs +0 -2
- package/esm2022/generated/services/hash.mjs +0 -2
- package/esm2022/generated/services/intersection.mjs +0 -2
- package/esm2022/generated/services/matchMedia.mjs +0 -2
- package/esm2022/generated/services/navManager.mjs +0 -2
- package/esm2022/generated/services/portal.mjs +0 -2
- package/esm2022/generated/services/resizeObserver.mjs +0 -2
- package/esm2022/generated/services/siblingsInert.mjs +0 -2
- package/esm2022/generated/services/transitions/baseTransitions.mjs +0 -2
- package/esm2022/generated/services/transitions/collapse.mjs +0 -2
- package/esm2022/generated/services/transitions/cssTransitions.mjs +0 -2
- package/esm2022/generated/services/transitions/simpleClassTransition.mjs +0 -2
- package/esm2022/generated/slot.directive.mjs +0 -2
- package/esm2022/generated/types.mjs +0 -2
- package/esm2022/generated/utils/coercion.mjs +0 -2
- package/esm2022/generated/utils/directive.mjs +0 -2
- package/esm2022/generated/utils/stores.mjs +0 -2
- package/esm2022/generated/utils/widget.mjs +0 -2
- package/esm2022/generated/utils/writables.mjs +0 -2
- package/esm2022/generated/utils/zone.mjs +0 -2
- package/esm2022/index.mjs +0 -5
- package/esm2022/slot.directive.mjs +0 -233
- package/esm2022/types.mjs +0 -38
- package/esm2022/utils/coercion.mjs +0 -32
- package/esm2022/utils/directive.mjs +0 -118
- package/esm2022/utils/stores.mjs +0 -29
- package/esm2022/utils/widget.mjs +0 -149
- package/esm2022/utils/zone.mjs +0 -77
package/esm2022/utils/widget.mjs
DELETED
|
@@ -1,149 +0,0 @@
|
|
|
1
|
-
import { computed, writable } from '@amadeus-it-group/tansu';
|
|
2
|
-
import { Directive, Injector, inject, runInInjectionContext } from '@angular/core';
|
|
3
|
-
import { toAngularSignal, toReadableStore } from './stores';
|
|
4
|
-
import { ZoneWrapper } from './zone';
|
|
5
|
-
import * as i0 from "@angular/core";
|
|
6
|
-
const createPatchSlots = (set) => {
|
|
7
|
-
let lastValue = {};
|
|
8
|
-
return (object) => {
|
|
9
|
-
const newValue = {};
|
|
10
|
-
let hasChange = false;
|
|
11
|
-
for (const key of Object.keys(object)) {
|
|
12
|
-
const objectKey = object[key];
|
|
13
|
-
if (objectKey != null) {
|
|
14
|
-
// only use defined slots
|
|
15
|
-
newValue[key] = objectKey;
|
|
16
|
-
}
|
|
17
|
-
if (objectKey != lastValue[key]) {
|
|
18
|
-
hasChange = true;
|
|
19
|
-
}
|
|
20
|
-
}
|
|
21
|
-
if (hasChange) {
|
|
22
|
-
lastValue = newValue;
|
|
23
|
-
set(newValue);
|
|
24
|
-
}
|
|
25
|
-
};
|
|
26
|
-
};
|
|
27
|
-
/**
|
|
28
|
-
* Call a widget factory using provided configs.
|
|
29
|
-
*
|
|
30
|
-
* @param parameter - the parameter
|
|
31
|
-
* @param parameter.factory - the widget factory to call
|
|
32
|
-
* @param parameter.defaultConfig - the default config of the widget
|
|
33
|
-
* @param parameter.widgetConfig - the config of the widget, overriding the defaultConfig
|
|
34
|
-
* @param parameter.events - the events of the widget
|
|
35
|
-
* @param parameter.afterInit - a callback to call after successful setup of the widget
|
|
36
|
-
* @param parameter.slotTemplates - a function to provide all slot templates using child queries
|
|
37
|
-
* @param parameter.slotChildren - a function to provide the default children slot using a view query
|
|
38
|
-
* @returns the widget
|
|
39
|
-
*/
|
|
40
|
-
export const callWidgetFactoryWithConfig = ({ factory, defaultConfig, widgetConfig, events, afterInit, slotTemplates, slotChildren, }) => {
|
|
41
|
-
const injector = inject(Injector);
|
|
42
|
-
const slots$ = writable({});
|
|
43
|
-
const props = {};
|
|
44
|
-
let initDone;
|
|
45
|
-
const patchSlots = createPatchSlots(slots$.set);
|
|
46
|
-
const res = {
|
|
47
|
-
initialized: new Promise((resolve) => {
|
|
48
|
-
initDone = resolve;
|
|
49
|
-
}),
|
|
50
|
-
updateSlots: () => {
|
|
51
|
-
if (slotTemplates) {
|
|
52
|
-
patchSlots(slotTemplates());
|
|
53
|
-
}
|
|
54
|
-
},
|
|
55
|
-
patch(newProps) {
|
|
56
|
-
// temporary function replaced in ngInit
|
|
57
|
-
Object.assign(props, newProps);
|
|
58
|
-
},
|
|
59
|
-
ngInit() {
|
|
60
|
-
runInInjectionContext(injector, () => {
|
|
61
|
-
const zoneWrapper = inject(ZoneWrapper);
|
|
62
|
-
factory = zoneWrapper.outsideNgZone(factory);
|
|
63
|
-
const defaultConfig$ = toReadableStore(defaultConfig);
|
|
64
|
-
events = zoneWrapper.insideNgZoneWrapFunctionsObject(events);
|
|
65
|
-
const widget = factory({
|
|
66
|
-
config: computed(() => ({
|
|
67
|
-
...defaultConfig$(),
|
|
68
|
-
children: slotChildren?.(),
|
|
69
|
-
...widgetConfig?.(),
|
|
70
|
-
...slots$(),
|
|
71
|
-
...events,
|
|
72
|
-
})),
|
|
73
|
-
props,
|
|
74
|
-
});
|
|
75
|
-
Object.assign(res, {
|
|
76
|
-
patch: zoneWrapper.outsideNgZone(widget.patch),
|
|
77
|
-
directives: zoneWrapper.outsideNgZoneWrapDirectivesObject(widget.directives),
|
|
78
|
-
api: zoneWrapper.outsideNgZoneWrapFunctionsObject(widget.api),
|
|
79
|
-
state: Object.fromEntries(Object.entries(widget.stores).map(([key, val]) => [key.slice(0, -1), toAngularSignal(val)])),
|
|
80
|
-
});
|
|
81
|
-
afterInit?.(res);
|
|
82
|
-
initDone();
|
|
83
|
-
});
|
|
84
|
-
},
|
|
85
|
-
};
|
|
86
|
-
return res;
|
|
87
|
-
};
|
|
88
|
-
function patchSimpleChanges(patchFn, changes) {
|
|
89
|
-
const obj = {};
|
|
90
|
-
for (const [key, simpleChange] of Object.entries(changes)) {
|
|
91
|
-
if (simpleChange !== undefined) {
|
|
92
|
-
obj[key] = simpleChange.currentValue;
|
|
93
|
-
}
|
|
94
|
-
}
|
|
95
|
-
patchFn(obj);
|
|
96
|
-
}
|
|
97
|
-
/**
|
|
98
|
-
* An abstract base class for widget directives, providing common functionality
|
|
99
|
-
* for Angular components that interact with widgets.
|
|
100
|
-
*
|
|
101
|
-
* @template W - The type of the widget.
|
|
102
|
-
*/
|
|
103
|
-
export class BaseWidgetDirective {
|
|
104
|
-
constructor(_widget) {
|
|
105
|
-
this._widget = _widget;
|
|
106
|
-
}
|
|
107
|
-
/**
|
|
108
|
-
* Retrieves the widget api
|
|
109
|
-
* @returns the widget api
|
|
110
|
-
*/
|
|
111
|
-
get api() {
|
|
112
|
-
return this._widget.api;
|
|
113
|
-
}
|
|
114
|
-
/**
|
|
115
|
-
* Retrieves the widget state. Each property of the state is exposed through an Angular {@link https://angular.dev/api/core/Signal | Signal}
|
|
116
|
-
* @returns the widget state
|
|
117
|
-
*/
|
|
118
|
-
get state() {
|
|
119
|
-
return this._widget.state;
|
|
120
|
-
}
|
|
121
|
-
/**
|
|
122
|
-
* Retrieves the widget directives
|
|
123
|
-
* @returns the widget directives
|
|
124
|
-
*/
|
|
125
|
-
get directives() {
|
|
126
|
-
return this._widget.directives;
|
|
127
|
-
}
|
|
128
|
-
/**
|
|
129
|
-
* @inheritdoc
|
|
130
|
-
* @internal
|
|
131
|
-
*/
|
|
132
|
-
ngOnChanges(changes) {
|
|
133
|
-
patchSimpleChanges(this._widget.patch, changes);
|
|
134
|
-
}
|
|
135
|
-
/** @internal */
|
|
136
|
-
ngOnInit() {
|
|
137
|
-
this._widget.ngInit();
|
|
138
|
-
}
|
|
139
|
-
/** @internal */
|
|
140
|
-
ngAfterContentChecked() {
|
|
141
|
-
this._widget.updateSlots();
|
|
142
|
-
}
|
|
143
|
-
static { this.ɵfac = function BaseWidgetDirective_Factory(__ngFactoryType__) { i0.ɵɵinvalidFactory(); }; }
|
|
144
|
-
static { this.ɵdir = /*@__PURE__*/ i0.ɵɵdefineDirective({ type: BaseWidgetDirective, features: [i0.ɵɵNgOnChangesFeature] }); }
|
|
145
|
-
}
|
|
146
|
-
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(BaseWidgetDirective, [{
|
|
147
|
-
type: Directive
|
|
148
|
-
}], () => [{ type: undefined }], null); })();
|
|
149
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2lkZ2V0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL3V0aWxzL3dpZGdldC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUMsUUFBUSxFQUF1QixRQUFRLEVBQUMsTUFBTSx5QkFBeUIsQ0FBQztBQUVoRixPQUFPLEVBQUMsU0FBUyxFQUFFLFFBQVEsRUFBRSxNQUFNLEVBQUUscUJBQXFCLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFFakYsT0FBTyxFQUFDLGVBQWUsRUFBRSxlQUFlLEVBQUMsTUFBTSxVQUFVLENBQUM7QUFDMUQsT0FBTyxFQUFDLFdBQVcsRUFBQyxNQUFNLFFBQVEsQ0FBQzs7QUFFbkMsTUFBTSxnQkFBZ0IsR0FBRyxDQUFtQixHQUFpQyxFQUFFLEVBQUU7SUFDaEYsSUFBSSxTQUFTLEdBQWUsRUFBRSxDQUFDO0lBQy9CLE9BQU8sQ0FBQyxNQUFTLEVBQUUsRUFBRTtRQUNwQixNQUFNLFFBQVEsR0FBZSxFQUFFLENBQUM7UUFDaEMsSUFBSSxTQUFTLEdBQUcsS0FBSyxDQUFDO1FBQ3RCLEtBQUssTUFBTSxHQUFHLElBQUksTUFBTSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQXlCLEVBQUUsQ0FBQztZQUMvRCxNQUFNLFNBQVMsR0FBSSxNQUFjLENBQUMsR0FBRyxDQUFDLENBQUM7WUFDdkMsSUFBSSxTQUFTLElBQUksSUFBSSxFQUFFLENBQUM7Z0JBQ3ZCLHlCQUF5QjtnQkFDekIsUUFBUSxDQUFDLEdBQUcsQ0FBQyxHQUFHLFNBQVMsQ0FBQztZQUMzQixDQUFDO1lBQ0QsSUFBSSxTQUFTLElBQUksU0FBUyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUM7Z0JBQ2pDLFNBQVMsR0FBRyxJQUFJLENBQUM7WUFDbEIsQ0FBQztRQUNGLENBQUM7UUFDRCxJQUFJLFNBQVMsRUFBRSxDQUFDO1lBQ2YsU0FBUyxHQUFHLFFBQVEsQ0FBQztZQUNyQixHQUFHLENBQUMsUUFBUSxDQUFDLENBQUM7UUFD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bUJBQW1CO2NBRHhDLFNBQVMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge2NvbXB1dGVkLCB0eXBlIFJlYWRhYmxlU2lnbmFsLCB3cml0YWJsZX0gZnJvbSAnQGFtYWRldXMtaXQtZ3JvdXAvdGFuc3UnO1xuaW1wb3J0IHR5cGUge0FmdGVyQ29udGVudENoZWNrZWQsIE9uQ2hhbmdlcywgT25Jbml0LCBTaW1wbGVDaGFuZ2VzLCBUZW1wbGF0ZVJlZn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge0RpcmVjdGl2ZSwgSW5qZWN0b3IsIGluamVjdCwgcnVuSW5JbmplY3Rpb25Db250ZXh0fSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB0eXBlIHtBbmd1bGFyU3RhdGUsIEFuZ3VsYXJXaWRnZXQsIElzU2xvdENvbnRlbnQsIFNsb3RDb250ZW50LCBXaWRnZXQsIFdpZGdldEZhY3RvcnksIFdpZGdldFByb3BzfSBmcm9tICcuLi90eXBlcyc7XG5pbXBvcnQge3RvQW5ndWxhclNpZ25hbCwgdG9SZWFkYWJsZVN0b3JlfSBmcm9tICcuL3N0b3Jlcyc7XG5pbXBvcnQge1pvbmVXcmFwcGVyfSBmcm9tICcuL3pvbmUnO1xuXG5jb25zdCBjcmVhdGVQYXRjaFNsb3RzID0gPFQgZXh0ZW5kcyBvYmplY3Q+KHNldDogKG9iamVjdDogUGFydGlhbDxUPikgPT4gdm9pZCkgPT4ge1xuXHRsZXQgbGFzdFZhbHVlOiBQYXJ0aWFsPFQ+ID0ge307XG5cdHJldHVybiAob2JqZWN0OiBUKSA9PiB7XG5cdFx0Y29uc3QgbmV3VmFsdWU6IFBhcnRpYWw8VD4gPSB7fTtcblx0XHRsZXQgaGFzQ2hhbmdlID0gZmFsc2U7XG5cdFx0Zm9yIChjb25zdCBrZXkgb2YgT2JqZWN0LmtleXMob2JqZWN0KSBhcyAoc3RyaW5nICYga2V5b2YgVClbXSkge1xuXHRcdFx0Y29uc3Qgb2JqZWN0S2V5ID0gKG9iamVjdCBhcyBhbnkpW2tleV07XG5cdFx0XHRpZiAob2JqZWN0S2V5ICE9IG51bGwpIHtcblx0XHRcdFx0Ly8gb25seSB1c2UgZGVmaW5lZCBzbG90c1xuXHRcdFx0XHRuZXdWYWx1ZVtrZXldID0gb2JqZWN0S2V5O1xuXHRcdFx0fVxuXHRcdFx0aWYgKG9iamVjdEtleSAhPSBsYXN0VmFsdWVba2V5XSkge1xuXHRcdFx0XHRoYXNDaGFuZ2UgPSB0cnVlO1xuXHRcdFx0fVxuXHRcdH1cblx0XHRpZiAoaGFzQ2hhbmdlKSB7XG5cdFx0XHRsYXN0VmFsdWUgPSBuZXdWYWx1ZTtcblx0XHRcdHNldChuZXdWYWx1ZSk7XG5cdFx0fVxuXHR9O1xufTtcblxuLyoqXG4gKiBDYWxsIGEgd2lkZ2V0IGZhY3RvcnkgdXNpbmcgcHJvdmlkZWQgY29uZmlncy5cbiAqXG4gKiBAcGFyYW0gcGFyYW1ldGVyIC0gdGhlIHBhcmFtZXRlclxuICogQHBhcmFtIHBhcmFtZXRlci5mYWN0b3J5IC0gdGhlIHdpZGdldCBmYWN0b3J5IHRvIGNhbGxcbiAqIEBwYXJhbSBwYXJhbWV0ZXIuZGVmYXVsdENvbmZpZyAtIHRoZSBkZWZhdWx0IGNvbmZpZyBvZiB0aGUgd2lkZ2V0XG4gKiBAcGFyYW0gcGFyYW1ldGVyLndpZGdldENvbmZpZyAtIHRoZSBjb25maWcgb2YgdGhlIHdpZGdldCwgb3ZlcnJpZGluZyB0aGUgZGVmYXVsdENvbmZpZ1xuICogQHBhcmFtIHBhcmFtZXRlci5ldmVudHMgLSB0aGUgZXZlbnRzIG9mIHRoZSB3aWRnZXRcbiAqIEBwYXJhbSBwYXJhbWV0ZXIuYWZ0ZXJJbml0IC0gYSBjYWxsYmFjayB0byBjYWxsIGFmdGVyIHN1Y2Nlc3NmdWwgc2V0dXAgb2YgdGhlIHdpZGdldFxuICogQHBhcmFtIHBhcmFtZXRlci5zbG90VGVtcGxhdGVzIC0gYSBmdW5jdGlvbiB0byBwcm92aWRlIGFsbCBzbG90IHRlbXBsYXRlcyB1c2luZyBjaGlsZCBxdWVyaWVzXG4gKiBAcGFyYW0gcGFyYW1ldGVyLnNsb3RDaGlsZHJlbiAtIGEgZnVuY3Rpb24gdG8gcHJvdmlkZSB0aGUgZGVmYXVsdCBjaGlsZHJlbiBzbG90IHVzaW5nIGEgdmlldyBxdWVyeVxuICogQHJldHVybnMgdGhlIHdpZGdldFxuICovXG5leHBvcnQgY29uc3QgY2FsbFdpZGdldEZhY3RvcnlXaXRoQ29uZmlnID0gPFcgZXh0ZW5kcyBXaWRnZXQ+KHtcblx0ZmFjdG9yeSxcblx0ZGVmYXVsdENvbmZpZyxcblx0d2lkZ2V0Q29uZmlnLFxuXHRldmVudHMsXG5cdGFmdGVySW5pdCxcblx0c2xvdFRlbXBsYXRlcyxcblx0c2xvdENoaWxkcmVuLFxufToge1xuXHRmYWN0b3J5OiBXaWRnZXRGYWN0b3J5PFc+O1xuXHRkZWZhdWx0Q29uZmlnPzogUGFydGlhbDxXaWRnZXRQcm9wczxXPj4gfCBSZWFkYWJsZVNpZ25hbDxQYXJ0aWFsPFdpZGdldFByb3BzPFc+PiB8IHVuZGVmaW5lZD47XG5cdHdpZGdldENvbmZpZz86IG51bGwgfCB1bmRlZmluZWQgfCBSZWFkYWJsZVNpZ25hbDxQYXJ0aWFsPFdpZGdldFByb3BzPFc+PiB8IHVuZGVmaW5lZD47XG5cdGV2ZW50cz86IFBhcnRpYWw8UGljazxXaWRnZXRQcm9wczxXPiwga2V5b2YgV2lkZ2V0UHJvcHM8Vz4gJiBgb24ke3N0cmluZ31gPj47XG5cdGFmdGVySW5pdD86ICh3aWRnZXQ6IEFuZ3VsYXJXaWRnZXQ8Vz4pID0+IHZvaWQ7XG5cdHNsb3RUZW1wbGF0ZXM/OiAoKSA9PiB7XG5cdFx0W0sgaW4ga2V5b2YgV2lkZ2V0UHJvcHM8Vz4gYXMgSXNTbG90Q29udGVudDxXaWRnZXRQcm9wczxXPltLXT4gZXh0ZW5kcyAwID8gbmV2ZXIgOiBLXTogV2lkZ2V0UHJvcHM8Vz5bS10gZXh0ZW5kcyBTbG90Q29udGVudDxpbmZlciBVPlxuXHRcdFx0PyBUZW1wbGF0ZVJlZjxVPiB8IHVuZGVmaW5lZFxuXHRcdFx0OiBuZXZlcjtcblx0fTtcblx0c2xvdENoaWxkcmVuPzogKCkgPT4gVGVtcGxhdGVSZWY8dm9pZD4gfCB1bmRlZmluZWQ7XG59KTogQW5ndWxhcldpZGdldDxXPiA9PiB7XG5cdGNvbnN0IGluamVjdG9yID0gaW5qZWN0KEluamVjdG9yKTtcblx0Y29uc3Qgc2xvdHMkID0gd3JpdGFibGUoe30pO1xuXHRjb25zdCBwcm9wcyA9IHt9O1xuXHRsZXQgaW5pdERvbmU6ICgpID0+IHZvaWQ7XG5cdGNvbnN0IHBhdGNoU2xvdHMgPSBjcmVhdGVQYXRjaFNsb3RzKHNsb3RzJC5zZXQpO1xuXG5cdGNvbnN0IHJlcyA9IHtcblx0XHRpbml0aWFsaXplZDogbmV3IFByb21pc2U8dm9pZD4oKHJlc29sdmUpID0+IHtcblx0XHRcdGluaXREb25lID0gcmVzb2x2ZTtcblx0XHR9KSxcblx0XHR1cGRhdGVTbG90czogKCkgPT4ge1xuXHRcdFx0aWYgKHNsb3RUZW1wbGF0ZXMpIHtcblx0XHRcdFx0cGF0Y2hTbG90cyhzbG90VGVtcGxhdGVzKCkpO1xuXHRcdFx0fVxuXHRcdH0sXG5cdFx0cGF0Y2gobmV3UHJvcHM6IFBhcnRpYWw8V2lkZ2V0UHJvcHM8Vz4+KSB7XG5cdFx0XHQvLyB0ZW1wb3JhcnkgZnVuY3Rpb24gcmVwbGFjZWQgaW4gbmdJbml0XG5cdFx0XHRPYmplY3QuYXNzaWduKHByb3BzLCBuZXdQcm9wcyk7XG5cdFx0fSxcblx0XHRuZ0luaXQoKSB7XG5cdFx0XHRydW5JbkluamVjdGlvbkNvbnRleHQoaW5qZWN0b3IsICgpID0+IHtcblx0XHRcdFx0Y29uc3Qgem9uZVdyYXBwZXIgPSBpbmplY3QoWm9uZVdyYXBwZXIpO1xuXHRcdFx0XHRmYWN0b3J5ID0gem9uZVdyYXBwZXIub3V0c2lkZU5nWm9uZShmYWN0b3J5KTtcblx0XHRcdFx0Y29uc3QgZGVmYXVsdENvbmZpZyQgPSB0b1JlYWRhYmxlU3RvcmUoZGVmYXVsdENvbmZpZyk7XG5cdFx0XHRcdGV2ZW50cyA9IHpvbmVXcmFwcGVyLmluc2lkZU5nWm9uZVdyYXBGdW5jdGlvbnNPYmplY3QoZXZlbnRzKTtcblx0XHRcdFx0Y29uc3Qgd2lkZ2V0ID0gZmFjdG9yeSh7XG5cdFx0XHRcdFx0Y29uZmlnOiBjb21wdXRlZCgoKSA9PiAoe1xuXHRcdFx0XHRcdFx0Li4uZGVmYXVsdENvbmZpZyQoKSxcblx0XHRcdFx0XHRcdGNoaWxkcmVuOiBzbG90Q2hpbGRyZW4/LigpLFxuXHRcdFx0XHRcdFx0Li4ud2lkZ2V0Q29uZmlnPy4oKSxcblx0XHRcdFx0XHRcdC4uLnNsb3RzJCgpLFxuXHRcdFx0XHRcdFx0Li4uKGV2ZW50cyBhcyBQYXJ0aWFsPFdpZGdldFByb3BzPFc+PiksXG5cdFx0XHRcdFx0fSkpLFxuXHRcdFx0XHRcdHByb3BzLFxuXHRcdFx0XHR9KTtcblx0XHRcdFx0T2JqZWN0LmFzc2lnbihyZXMsIHtcblx0XHRcdFx0XHRwYXRjaDogem9uZVdyYXBwZXIub3V0c2lkZU5nWm9uZSh3aWRnZXQucGF0Y2gpLFxuXHRcdFx0XHRcdGRpcmVjdGl2ZXM6IHpvbmVXcmFwcGVyLm91dHNpZGVOZ1pvbmVXcmFwRGlyZWN0aXZlc09iamVjdCh3aWRnZXQuZGlyZWN0aXZlcyksXG5cdFx0XHRcdFx0YXBpOiB6b25lV3JhcHBlci5vdXRzaWRlTmdab25lV3JhcEZ1bmN0aW9uc09iamVjdCh3aWRnZXQuYXBpKSxcblx0XHRcdFx0XHRzdGF0ZTogT2JqZWN0LmZyb21FbnRyaWVzKFxuXHRcdFx0XHRcdFx0T2JqZWN0LmVudHJpZXM8UmVhZGFibGVTaWduYWw8dW5rbm93bj4+KHdpZGdldC5zdG9yZXMgYXMgYW55KS5tYXAoKFtrZXksIHZhbF0pID0+IFtrZXkuc2xpY2UoMCwgLTEpLCB0b0FuZ3VsYXJTaWduYWwodmFsKV0pLFxuXHRcdFx0XHRcdCksXG5cdFx0XHRcdH0pO1xuXHRcdFx0XHRhZnRlckluaXQ/LihyZXMgYXMgQW5ndWxhcldpZGdldDxXPik7XG5cdFx0XHRcdGluaXREb25lKCk7XG5cdFx0XHR9KTtcblx0XHR9LFxuXHR9O1xuXG5cdHJldHVybiByZXMgYXMgQW5ndWxhcldpZGdldDxXPjtcbn07XG5cbmZ1bmN0aW9uIHBhdGNoU2ltcGxlQ2hhbmdlcyhwYXRjaEZuOiAob2JqOiBhbnkpID0+IHZvaWQsIGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpIHtcblx0Y29uc3Qgb2JqOiBhbnkgPSB7fTtcblx0Zm9yIChjb25zdCBba2V5LCBzaW1wbGVDaGFuZ2VdIG9mIE9iamVjdC5lbnRyaWVzKGNoYW5nZXMpKSB7XG5cdFx0aWYgKHNpbXBsZUNoYW5nZSAhPT0gdW5kZWZpbmVkKSB7XG5cdFx0XHRvYmpba2V5XSA9IHNpbXBsZUNoYW5nZS5jdXJyZW50VmFsdWU7XG5cdFx0fVxuXHR9XG5cdHBhdGNoRm4ob2JqKTtcbn1cblxuLyoqXG4gKiBBbiBhYnN0cmFjdCBiYXNlIGNsYXNzIGZvciB3aWRnZXQgZGlyZWN0aXZlcywgcHJvdmlkaW5nIGNvbW1vbiBmdW5jdGlvbmFsaXR5XG4gKiBmb3IgQW5ndWxhciBjb21wb25lbnRzIHRoYXQgaW50ZXJhY3Qgd2l0aCB3aWRnZXRzLlxuICpcbiAqIEB0ZW1wbGF0ZSBXIC0gVGhlIHR5cGUgb2YgdGhlIHdpZGdldC5cbiAqL1xuQERpcmVjdGl2ZSgpXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgQmFzZVdpZGdldERpcmVjdGl2ZTxXIGV4dGVuZHMgV2lkZ2V0PiBpbXBsZW1lbnRzIE9uQ2hhbmdlcywgT25Jbml0LCBBZnRlckNvbnRlbnRDaGVja2VkIHtcblx0Y29uc3RydWN0b3IocHJpdmF0ZSByZWFkb25seSBfd2lkZ2V0OiBBbmd1bGFyV2lkZ2V0PFc+KSB7fVxuXG5cdC8qKlxuXHQgKiBSZXRyaWV2ZXMgdGhlIHdpZGdldCBhcGlcblx0ICogQHJldHVybnMgdGhlIHdpZGdldCBhcGlcblx0ICovXG5cdGdldCBhcGkoKTogV1snYXBpJ10ge1xuXHRcdHJldHVybiB0aGlzLl93aWRnZXQuYXBpO1xuXHR9XG5cblx0LyoqXG5cdCAqIFJldHJpZXZlcyB0aGUgd2lkZ2V0IHN0YXRlLiBFYWNoIHByb3BlcnR5IG9mIHRoZSBzdGF0ZSBpcyBleHBvc2VkIHRocm91Z2ggYW4gQW5ndWxhciB7QGxpbmsgaHR0cHM6Ly9hbmd1bGFyLmRldi9hcGkvY29yZS9TaWduYWwgfCBTaWduYWx9XG5cdCAqIEByZXR1cm5zIHRoZSB3aWRnZXQgc3RhdGVcblx0ICovXG5cdGdldCBzdGF0ZSgpOiBBbmd1bGFyU3RhdGU8Vz4ge1xuXHRcdHJldHVybiB0aGlzLl93aWRnZXQuc3RhdGU7XG5cdH1cblxuXHQvKipcblx0ICogUmV0cmlldmVzIHRoZSB3aWRnZXQgZGlyZWN0aXZlc1xuXHQgKiBAcmV0dXJucyB0aGUgd2lkZ2V0IGRpcmVjdGl2ZXNcblx0ICovXG5cdGdldCBkaXJlY3RpdmVzKCk6IFdbJ2RpcmVjdGl2ZXMnXSB7XG5cdFx0cmV0dXJuIHRoaXMuX3dpZGdldC5kaXJlY3RpdmVzO1xuXHR9XG5cblx0LyoqXG5cdCAqIEBpbmhlcml0ZG9jXG5cdCAqIEBpbnRlcm5hbFxuXHQgKi9cblx0bmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcyk6IHZvaWQge1xuXHRcdHBhdGNoU2ltcGxlQ2hhbmdlcyh0aGlzLl93aWRnZXQucGF0Y2gsIGNoYW5nZXMpO1xuXHR9XG5cblx0LyoqIEBpbnRlcm5hbCAqL1xuXHRuZ09uSW5pdCgpOiB2b2lkIHtcblx0XHR0aGlzLl93aWRnZXQubmdJbml0KCk7XG5cdH1cblxuXHQvKiogQGludGVybmFsICovXG5cdG5nQWZ0ZXJDb250ZW50Q2hlY2tlZCgpOiB2b2lkIHtcblx0XHR0aGlzLl93aWRnZXQudXBkYXRlU2xvdHMoKTtcblx0fVxufVxuIl19
|
package/esm2022/utils/zone.mjs
DELETED
|
@@ -1,77 +0,0 @@
|
|
|
1
|
-
import { Injectable, NgZone, inject } from '@angular/core';
|
|
2
|
-
import * as i0 from "@angular/core";
|
|
3
|
-
const noop = () => { };
|
|
4
|
-
const identity = (a) => a;
|
|
5
|
-
const createObjectWrapper = (wrap) => (object) => {
|
|
6
|
-
if (!object || typeof object !== 'object') {
|
|
7
|
-
return object;
|
|
8
|
-
}
|
|
9
|
-
const res = {};
|
|
10
|
-
for (const key of Object.keys(object)) {
|
|
11
|
-
res[key] = wrap(object[key]);
|
|
12
|
-
}
|
|
13
|
-
return res;
|
|
14
|
-
};
|
|
15
|
-
const createReturnValueWrapper = (wrapReturnValue, wrapResult) => (fn) => wrapResult(typeof fn === 'function' ? ((...args) => wrapReturnValue(fn(...args))) : fn);
|
|
16
|
-
/**
|
|
17
|
-
* A utility class that provides methods to run functions inside or outside of Angular's NgZone.
|
|
18
|
-
* This can be useful for optimizing performance by avoiding unnecessary change detection cycles.
|
|
19
|
-
*/
|
|
20
|
-
export class ZoneWrapper {
|
|
21
|
-
constructor() {
|
|
22
|
-
this.#zone = inject(NgZone);
|
|
23
|
-
this.#hasZone = this.#zone.run(() => NgZone.isInAngularZone()); // check if zone is enabled (can be NoopZone, cf https://angular.io/guide/zone#noopzone)
|
|
24
|
-
this.#runNeeded = false;
|
|
25
|
-
this.#runPlanned = false;
|
|
26
|
-
this.planNgZoneRun = this.#hasZone
|
|
27
|
-
? () => {
|
|
28
|
-
if (this.#zone.isStable) {
|
|
29
|
-
this.#runNeeded = true;
|
|
30
|
-
if (!this.#runPlanned) {
|
|
31
|
-
this.#runPlanned = true;
|
|
32
|
-
void (async () => {
|
|
33
|
-
await Promise.resolve();
|
|
34
|
-
this.#runPlanned = false;
|
|
35
|
-
if (this.#runNeeded) {
|
|
36
|
-
this.ngZoneRun(noop);
|
|
37
|
-
}
|
|
38
|
-
})();
|
|
39
|
-
}
|
|
40
|
-
}
|
|
41
|
-
}
|
|
42
|
-
: noop;
|
|
43
|
-
this.insideNgZone = this.#hasZone
|
|
44
|
-
? (fn) => (typeof fn === 'function' ? ((...args) => this.ngZoneRun(() => fn(...args))) : fn)
|
|
45
|
-
: identity;
|
|
46
|
-
this.insideNgZoneWrapFunctionsObject = createObjectWrapper(this.insideNgZone);
|
|
47
|
-
this.outsideNgZone = this.#hasZone
|
|
48
|
-
? (fn) => (typeof fn === 'function' ? ((...args) => this.#zone.runOutsideAngular(() => fn(...args))) : fn)
|
|
49
|
-
: identity;
|
|
50
|
-
this.outsideNgZoneWrapFunctionsObject = createObjectWrapper(this.outsideNgZone);
|
|
51
|
-
this.outsideNgZoneWrapDirective = createReturnValueWrapper(this.outsideNgZoneWrapFunctionsObject, this.outsideNgZone);
|
|
52
|
-
this.outsideNgZoneWrapDirectivesObject = createObjectWrapper(this.outsideNgZoneWrapDirective);
|
|
53
|
-
}
|
|
54
|
-
#zone;
|
|
55
|
-
#hasZone; // check if zone is enabled (can be NoopZone, cf https://angular.io/guide/zone#noopzone)
|
|
56
|
-
#runNeeded;
|
|
57
|
-
#runPlanned;
|
|
58
|
-
/**
|
|
59
|
-
* Run the input function synchronously within the Angular zone
|
|
60
|
-
*
|
|
61
|
-
* @param fn - a function to run
|
|
62
|
-
* @returns the value returned by the function
|
|
63
|
-
*/
|
|
64
|
-
ngZoneRun(fn) {
|
|
65
|
-
this.#runNeeded = false;
|
|
66
|
-
return this.#zone.run(fn);
|
|
67
|
-
}
|
|
68
|
-
static { this.ɵfac = function ZoneWrapper_Factory(__ngFactoryType__) { return new (__ngFactoryType__ || ZoneWrapper)(); }; }
|
|
69
|
-
static { this.ɵprov = /*@__PURE__*/ i0.ɵɵdefineInjectable({ token: ZoneWrapper, factory: ZoneWrapper.ɵfac, providedIn: 'root' }); }
|
|
70
|
-
}
|
|
71
|
-
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(ZoneWrapper, [{
|
|
72
|
-
type: Injectable,
|
|
73
|
-
args: [{
|
|
74
|
-
providedIn: 'root',
|
|
75
|
-
}]
|
|
76
|
-
}], null, null); })();
|
|
77
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiem9uZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy91dGlscy96b25lLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxVQUFVLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBQyxNQUFNLGVBQWUsQ0FBQzs7QUFFekQsTUFBTSxJQUFJLEdBQUcsR0FBRyxFQUFFLEdBQUUsQ0FBQyxDQUFDO0FBQ3RCLE1BQU0sUUFBUSxHQUFHLENBQUksQ0FBSSxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUM7QUFJaEMsTUFBTSxtQkFBbUIsR0FDeEIsQ0FBQyxJQUFhLEVBQVcsRUFBRSxDQUMzQixDQUFDLE1BQU0sRUFBRSxFQUFFO0lBQ1YsSUFBSSxDQUFDLE1BQU0sSUFBSSxPQUFPLE1BQU0sS0FBSyxRQUFRLEVBQUUsQ0FBQztRQUMzQyxPQUFPLE1BQU0sQ0FBQztJQUNmLENBQUM7SUFDRCxNQUFNLEdBQUcsR0FBRyxFQUFTLENBQUM7SUFDdEIsS0FBSyxNQUFNLEdBQUcsSUFBSSxNQUFNLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUM7UUFDdkMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLElBQUksQ0FBRSxNQUFjLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztJQUN2QyxDQUFDO0lBQ0QsT0FBTyxHQUFHLENBQUM7QUFDWixDQUFDLENBQUM7QUFFSCxNQUFNLHdCQUF3QixHQUM3QixDQUFDLGVBQXdCLEVBQUUsVUFBbUIsRUFBVyxFQUFFLENBQzNELENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FDTixVQUFVLENBQUMsT0FBTyxFQUFFLEtBQUssVUFBVSxDQUFDLENBQUMsQ0FBRSxDQUFDLENBQUMsR0FBRyxJQUFXLEVBQUUsRUFBRSxDQUFDLGVBQWUsQ0FBQyxFQUFFLENBQUMsR0FBRyxJQUFJLENBQUMsQ0FBQyxDQUFTLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDO0FBRTFHOzs7R0FHRztBQUlI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QUFDO2dCQUNYLFVBQVUsRUFBRSxNQUFNO2FBQ2xCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtJbmplY3RhYmxlLCBOZ1pvbmUsIGluamVjdH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmNvbnN0IG5vb3AgPSAoKSA9PiB7fTtcbmNvbnN0IGlkZW50aXR5ID0gPFQ+KGE6IFQpID0+IGE7XG5cbnR5cGUgV3JhcHBlciA9IDxUPihmbjogVCkgPT4gVDtcblxuY29uc3QgY3JlYXRlT2JqZWN0V3JhcHBlciA9XG5cdCh3cmFwOiBXcmFwcGVyKTogV3JhcHBlciA9PlxuXHQob2JqZWN0KSA9PiB7XG5cdFx0aWYgKCFvYmplY3QgfHwgdHlwZW9mIG9iamVjdCAhPT0gJ29iamVjdCcpIHtcblx0XHRcdHJldHVybiBvYmplY3Q7XG5cdFx0fVxuXHRcdGNvbnN0IHJlcyA9IHt9IGFzIGFueTtcblx0XHRmb3IgKGNvbnN0IGtleSBvZiBPYmplY3Qua2V5cyhvYmplY3QpKSB7XG5cdFx0XHRyZXNba2V5XSA9IHdyYXAoKG9iamVjdCBhcyBhbnkpW2tleV0pO1xuXHRcdH1cblx0XHRyZXR1cm4gcmVzO1xuXHR9O1xuXG5jb25zdCBjcmVhdGVSZXR1cm5WYWx1ZVdyYXBwZXIgPVxuXHQod3JhcFJldHVyblZhbHVlOiBXcmFwcGVyLCB3cmFwUmVzdWx0OiBXcmFwcGVyKTogV3JhcHBlciA9PlxuXHQoZm4pID0+XG5cdFx0d3JhcFJlc3VsdCh0eXBlb2YgZm4gPT09ICdmdW5jdGlvbicgPyAoKCguLi5hcmdzOiBhbnlbXSkgPT4gd3JhcFJldHVyblZhbHVlKGZuKC4uLmFyZ3MpKSkgYXMgYW55KSA6IGZuKTtcblxuLyoqXG4gKiBBIHV0aWxpdHkgY2xhc3MgdGhhdCBwcm92aWRlcyBtZXRob2RzIHRvIHJ1biBmdW5jdGlvbnMgaW5zaWRlIG9yIG91dHNpZGUgb2YgQW5ndWxhcidzIE5nWm9uZS5cbiAqIFRoaXMgY2FuIGJlIHVzZWZ1bCBmb3Igb3B0aW1pemluZyBwZXJmb3JtYW5jZSBieSBhdm9pZGluZyB1bm5lY2Vzc2FyeSBjaGFuZ2UgZGV0ZWN0aW9uIGN5Y2xlcy5cbiAqL1xuQEluamVjdGFibGUoe1xuXHRwcm92aWRlZEluOiAncm9vdCcsXG59KVxuZXhwb3J0IGNsYXNzIFpvbmVXcmFwcGVyIHtcblx0cmVhZG9ubHkgI3pvbmUgPSBpbmplY3QoTmdab25lKTtcblx0cmVhZG9ubHkgI2hhc1pvbmUgPSB0aGlzLiN6b25lLnJ1bigoKSA9PiBOZ1pvbmUuaXNJbkFuZ3VsYXJab25lKCkpOyAvLyBjaGVjayBpZiB6b25lIGlzIGVuYWJsZWQgKGNhbiBiZSBOb29wWm9uZSwgY2YgaHR0cHM6Ly9hbmd1bGFyLmlvL2d1aWRlL3pvbmUjbm9vcHpvbmUpXG5cdCNydW5OZWVkZWQgPSBmYWxzZTtcblx0I3J1blBsYW5uZWQgPSBmYWxzZTtcblxuXHRwbGFuTmdab25lUnVuID0gdGhpcy4jaGFzWm9uZVxuXHRcdD8gKCkgPT4ge1xuXHRcdFx0XHRpZiAodGhpcy4jem9uZS5pc1N0YWJsZSkge1xuXHRcdFx0XHRcdHRoaXMuI3J1bk5lZWRlZCA9IHRydWU7XG5cdFx0XHRcdFx0aWYgKCF0aGlzLiNydW5QbGFubmVkKSB7XG5cdFx0XHRcdFx0XHR0aGlzLiNydW5QbGFubmVkID0gdHJ1ZTtcblx0XHRcdFx0XHRcdHZvaWQgKGFzeW5jICgpID0+IHtcblx0XHRcdFx0XHRcdFx0YXdhaXQgUHJvbWlzZS5yZXNvbHZlKCk7XG5cdFx0XHRcdFx0XHRcdHRoaXMuI3J1blBsYW5uZWQgPSBmYWxzZTtcblx0XHRcdFx0XHRcdFx0aWYgKHRoaXMuI3J1bk5lZWRlZCkge1xuXHRcdFx0XHRcdFx0XHRcdHRoaXMubmdab25lUnVuKG5vb3ApO1xuXHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHR9KSgpO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdDogbm9vcDtcblxuXHQvKipcblx0ICogUnVuIHRoZSBpbnB1dCBmdW5jdGlvbiBzeW5jaHJvbm91c2x5IHdpdGhpbiB0aGUgQW5ndWxhciB6b25lXG5cdCAqXG5cdCAqIEBwYXJhbSBmbiAtIGEgZnVuY3Rpb24gdG8gcnVuXG5cdCAqIEByZXR1cm5zIHRoZSB2YWx1ZSByZXR1cm5lZCBieSB0aGUgZnVuY3Rpb25cblx0ICovXG5cdG5nWm9uZVJ1bjxUPihmbjogKCkgPT4gVCk6IFQge1xuXHRcdHRoaXMuI3J1bk5lZWRlZCA9IGZhbHNlO1xuXHRcdHJldHVybiB0aGlzLiN6b25lLnJ1bihmbik7XG5cdH1cblxuXHRpbnNpZGVOZ1pvbmU6IFdyYXBwZXIgPSB0aGlzLiNoYXNab25lXG5cdFx0PyAoZm4pID0+ICh0eXBlb2YgZm4gPT09ICdmdW5jdGlvbicgPyAoKCguLi5hcmdzOiBhbnlbXSkgPT4gdGhpcy5uZ1pvbmVSdW4oKCkgPT4gZm4oLi4uYXJncykpKSBhcyBhbnkpIDogZm4pXG5cdFx0OiBpZGVudGl0eTtcblx0aW5zaWRlTmdab25lV3JhcEZ1bmN0aW9uc09iamVjdCA9IGNyZWF0ZU9iamVjdFdyYXBwZXIodGhpcy5pbnNpZGVOZ1pvbmUpO1xuXG5cdG91dHNpZGVOZ1pvbmU6IFdyYXBwZXIgPSB0aGlzLiNoYXNab25lXG5cdFx0PyAoZm4pID0+ICh0eXBlb2YgZm4gPT09ICdmdW5jdGlvbicgPyAoKCguLi5hcmdzOiBhbnlbXSkgPT4gdGhpcy4jem9uZS5ydW5PdXRzaWRlQW5ndWxhcigoKSA9PiBmbiguLi5hcmdzKSkpIGFzIGFueSkgOiBmbilcblx0XHQ6IGlkZW50aXR5O1xuXG5cdG91dHNpZGVOZ1pvbmVXcmFwRnVuY3Rpb25zT2JqZWN0ID0gY3JlYXRlT2JqZWN0V3JhcHBlcih0aGlzLm91dHNpZGVOZ1pvbmUpO1xuXHRvdXRzaWRlTmdab25lV3JhcERpcmVjdGl2ZSA9IGNyZWF0ZVJldHVyblZhbHVlV3JhcHBlcih0aGlzLm91dHNpZGVOZ1pvbmVXcmFwRnVuY3Rpb25zT2JqZWN0LCB0aGlzLm91dHNpZGVOZ1pvbmUpO1xuXHRvdXRzaWRlTmdab25lV3JhcERpcmVjdGl2ZXNPYmplY3QgPSBjcmVhdGVPYmplY3RXcmFwcGVyKHRoaXMub3V0c2lkZU5nWm9uZVdyYXBEaXJlY3RpdmUpO1xufVxuIl19
|