@agnos-ui/angular-headless 0.0.1-alpha.1 → 0.0.1-alpha.11
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/components/accordion/accordion.d.ts +11 -0
- package/components/accordion/index.d.ts +1 -0
- package/components/alert/alert.d.ts +7 -0
- package/components/alert/index.d.ts +1 -0
- package/components/modal/index.d.ts +1 -0
- package/components/modal/modal.d.ts +7 -0
- package/components/pagination/index.d.ts +1 -0
- package/components/pagination/pagination.d.ts +8 -0
- package/components/progressbar/index.d.ts +1 -0
- package/components/progressbar/progressbar.d.ts +7 -0
- package/components/rating/index.d.ts +1 -0
- package/components/rating/rating.d.ts +6 -0
- package/components/select/index.d.ts +1 -0
- package/components/select/select.d.ts +8 -0
- package/components/slider/index.d.ts +1 -0
- package/components/slider/slider.d.ts +1 -0
- package/config.d.ts +53 -0
- package/esm2022/agnos-ui-angular-headless.mjs +2 -2
- package/esm2022/components/accordion/accordion.mjs +4 -0
- package/esm2022/components/accordion/index.mjs +2 -0
- package/esm2022/components/alert/alert.mjs +4 -0
- package/esm2022/components/alert/index.mjs +2 -0
- package/esm2022/components/modal/index.mjs +2 -0
- package/esm2022/components/modal/modal.mjs +4 -0
- package/esm2022/components/pagination/index.mjs +2 -0
- package/esm2022/components/pagination/pagination.mjs +4 -0
- package/esm2022/components/progressbar/index.mjs +2 -0
- package/esm2022/components/progressbar/progressbar.mjs +4 -0
- package/esm2022/components/rating/index.mjs +2 -0
- package/esm2022/components/rating/rating.mjs +4 -0
- package/esm2022/components/select/index.mjs +2 -0
- package/esm2022/components/select/select.mjs +4 -0
- package/esm2022/components/slider/index.mjs +2 -0
- package/esm2022/components/slider/slider.mjs +2 -0
- package/esm2022/config.mjs +119 -0
- package/esm2022/generated/config.mjs +2 -0
- package/esm2022/generated/index.mjs +23 -0
- package/esm2022/generated/services/extendWidget.mjs +2 -0
- package/esm2022/generated/services/floatingUI.mjs +2 -0
- package/esm2022/generated/services/focustrack.mjs +2 -0
- package/esm2022/generated/services/intersection.mjs +2 -0
- package/esm2022/generated/services/navManager.mjs +2 -0
- package/esm2022/generated/services/portal.mjs +2 -0
- package/esm2022/generated/services/siblingsInert.mjs +2 -0
- package/esm2022/generated/services/transitions/baseTransitions.mjs +2 -0
- package/esm2022/generated/services/transitions/bootstrap.mjs +2 -0
- package/esm2022/generated/services/transitions/collapse.mjs +2 -0
- package/esm2022/generated/services/transitions/cssTransitions.mjs +2 -0
- package/esm2022/generated/services/transitions/simpleClassTransition.mjs +2 -0
- package/esm2022/generated/slot.directive.mjs +2 -0
- package/esm2022/generated/slotDefault.directive.mjs +2 -0
- package/esm2022/generated/types.mjs +2 -0
- package/esm2022/generated/utils/coercion.mjs +2 -0
- package/esm2022/generated/utils/directive.mjs +2 -0
- package/esm2022/generated/utils/stores.mjs +2 -0
- package/esm2022/generated/utils/widget.mjs +2 -0
- package/esm2022/generated/utils/writables.mjs +2 -0
- package/esm2022/generated/utils/zone.mjs +2 -0
- package/esm2022/index.mjs +13 -0
- package/esm2022/slot.directive.mjs +201 -0
- package/esm2022/slotDefault.directive.mjs +21 -0
- package/esm2022/types.mjs +21 -0
- package/esm2022/utils/coercion.mjs +32 -0
- package/esm2022/utils/directive.mjs +72 -0
- package/esm2022/utils/stores.mjs +23 -0
- package/esm2022/utils/widget.mjs +131 -0
- package/esm2022/utils/zone.mjs +73 -0
- package/fesm2022/agnos-ui-angular-headless.mjs +493 -174
- package/fesm2022/agnos-ui-angular-headless.mjs.map +1 -1
- package/generated/config.d.ts +1 -0
- package/generated/index.d.ts +22 -0
- package/generated/services/extendWidget.d.ts +1 -0
- package/generated/services/floatingUI.d.ts +1 -0
- package/generated/services/focustrack.d.ts +1 -0
- package/generated/services/intersection.d.ts +1 -0
- package/generated/services/navManager.d.ts +1 -0
- package/generated/services/portal.d.ts +1 -0
- package/generated/services/siblingsInert.d.ts +1 -0
- package/generated/services/transitions/baseTransitions.d.ts +1 -0
- package/generated/services/transitions/bootstrap.d.ts +1 -0
- package/generated/services/transitions/collapse.d.ts +1 -0
- package/generated/services/transitions/cssTransitions.d.ts +1 -0
- package/generated/services/transitions/simpleClassTransition.d.ts +1 -0
- package/generated/slot.directive.d.ts +1 -0
- package/generated/slotDefault.directive.d.ts +1 -0
- package/generated/types.d.ts +1 -0
- package/generated/utils/coercion.d.ts +1 -0
- package/generated/utils/directive.d.ts +1 -0
- package/generated/utils/stores.d.ts +1 -0
- package/generated/utils/widget.d.ts +1 -0
- package/generated/utils/writables.d.ts +1 -0
- package/generated/utils/zone.d.ts +1 -0
- package/index.d.ts +9 -5
- package/package.json +14 -17
- package/{lib/slot.directive.d.ts → slot.directive.d.ts} +3 -1
- package/{lib/slotDefault.directive.d.ts → slotDefault.directive.d.ts} +2 -1
- package/types.d.ts +35 -0
- package/utils/coercion.d.ts +20 -0
- package/utils/directive.d.ts +23 -0
- package/utils/stores.d.ts +13 -0
- package/utils/widget.d.ts +44 -0
- package/utils/zone.d.ts +22 -0
- package/esm2022/lib/slot.directive.mjs +0 -199
- package/esm2022/lib/slotDefault.directive.mjs +0 -20
- package/esm2022/lib/use.directive.mjs +0 -57
- package/esm2022/lib/utils.mjs +0 -127
- package/esm2022/public-api.mjs +0 -9
- package/lib/use.directive.d.ts +0 -12
- package/lib/utils.d.ts +0 -95
- package/public-api.d.ts +0 -34
|
@@ -0,0 +1,73 @@
|
|
|
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
|
+
export class ZoneWrapper {
|
|
17
|
+
constructor() {
|
|
18
|
+
this.#zone = inject(NgZone);
|
|
19
|
+
this.#hasZone = this.#zone.run(() => NgZone.isInAngularZone()); // check if zone is enabled (can be NoopZone, cf https://angular.io/guide/zone#noopzone)
|
|
20
|
+
this.#runNeeded = false;
|
|
21
|
+
this.#runPlanned = false;
|
|
22
|
+
this.planNgZoneRun = this.#hasZone
|
|
23
|
+
? () => {
|
|
24
|
+
if (this.#zone.isStable) {
|
|
25
|
+
this.#runNeeded = true;
|
|
26
|
+
if (!this.#runPlanned) {
|
|
27
|
+
this.#runPlanned = true;
|
|
28
|
+
void (async () => {
|
|
29
|
+
await 0;
|
|
30
|
+
this.#runPlanned = false;
|
|
31
|
+
if (this.#runNeeded) {
|
|
32
|
+
this.ngZoneRun(noop);
|
|
33
|
+
}
|
|
34
|
+
})();
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
: noop;
|
|
39
|
+
this.insideNgZone = this.#hasZone
|
|
40
|
+
? (fn) => (typeof fn === 'function' ? ((...args) => this.ngZoneRun(() => fn(...args))) : fn)
|
|
41
|
+
: identity;
|
|
42
|
+
this.insideNgZoneWrapFunctionsObject = createObjectWrapper(this.insideNgZone);
|
|
43
|
+
this.outsideNgZone = this.#hasZone
|
|
44
|
+
? (fn) => (typeof fn === 'function' ? ((...args) => this.#zone.runOutsideAngular(() => fn(...args))) : fn)
|
|
45
|
+
: identity;
|
|
46
|
+
this.outsideNgZoneWrapFunctionsObject = createObjectWrapper(this.outsideNgZone);
|
|
47
|
+
this.outsideNgZoneWrapDirective = createReturnValueWrapper(this.outsideNgZoneWrapFunctionsObject, this.outsideNgZone);
|
|
48
|
+
this.outsideNgZoneWrapDirectivesObject = createObjectWrapper(this.outsideNgZoneWrapDirective);
|
|
49
|
+
}
|
|
50
|
+
#zone;
|
|
51
|
+
#hasZone; // check if zone is enabled (can be NoopZone, cf https://angular.io/guide/zone#noopzone)
|
|
52
|
+
#runNeeded;
|
|
53
|
+
#runPlanned;
|
|
54
|
+
/**
|
|
55
|
+
* Run the input function synchronously within the Angular zone
|
|
56
|
+
*
|
|
57
|
+
* @param fn - a function to run
|
|
58
|
+
* @returns the value returned by the function
|
|
59
|
+
*/
|
|
60
|
+
ngZoneRun(fn) {
|
|
61
|
+
this.#runNeeded = false;
|
|
62
|
+
return this.#zone.run(fn);
|
|
63
|
+
}
|
|
64
|
+
static { this.ɵfac = function ZoneWrapper_Factory(t) { return new (t || ZoneWrapper)(); }; }
|
|
65
|
+
static { this.ɵprov = /*@__PURE__*/ i0.ɵɵdefineInjectable({ token: ZoneWrapper, factory: ZoneWrapper.ɵfac, providedIn: 'root' }); }
|
|
66
|
+
}
|
|
67
|
+
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(ZoneWrapper, [{
|
|
68
|
+
type: Injectable,
|
|
69
|
+
args: [{
|
|
70
|
+
providedIn: 'root',
|
|
71
|
+
}]
|
|
72
|
+
}], null, null); })();
|
|
73
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiem9uZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy91dGlscy96b25lLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxVQUFVLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBQyxNQUFNLGVBQWUsQ0FBQzs7QUFFekQsTUFBTSxJQUFJLEdBQUcsR0FBRyxFQUFFLEdBQUUsQ0FBQyxDQUFDO0FBQ3RCLE1BQU0sUUFBUSxHQUFHLENBQUksQ0FBSSxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUM7QUFJaEMsTUFBTSxtQkFBbUIsR0FDeEIsQ0FBQyxJQUFhLEVBQVcsRUFBRSxDQUMzQixDQUFDLE1BQU0sRUFBRSxFQUFFO0lBQ1YsSUFBSSxDQUFDLE1BQU0sSUFBSSxPQUFPLE1BQU0sS0FBSyxRQUFRLEVBQUUsQ0FBQztRQUMzQyxPQUFPLE1BQU0sQ0FBQztJQUNmLENBQUM7SUFDRCxNQUFNLEdBQUcsR0FBRyxFQUFTLENBQUM7SUFDdEIsS0FBSyxNQUFNLEdBQUcsSUFBSSxNQUFNLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUM7UUFDdkMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLElBQUksQ0FBRSxNQUFjLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztJQUN2QyxDQUFDO0lBQ0QsT0FBTyxHQUFHLENBQUM7QUFDWixDQUFDLENBQUM7QUFFSCxNQUFNLHdCQUF3QixHQUM3QixDQUFDLGVBQXdCLEVBQUUsVUFBbUIsRUFBVyxFQUFFLENBQzNELENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FDTixVQUFVLENBQUMsT0FBTyxFQUFFLEtBQUssVUFBVSxDQUFDLENBQUMsQ0FBRSxDQUFDLENBQUMsR0FBRyxJQUFXLEVBQUUsRUFBRSxDQUFDLGVBQWUsQ0FBQyxFQUFFLENBQUMsR0FBRyxJQUFJLENBQUMsQ0FBQyxDQUFTLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDO0FBSzFHLE1BQU0sT0FBTyxX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bEIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0luamVjdGFibGUsIE5nWm9uZSwgaW5qZWN0fSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuY29uc3Qgbm9vcCA9ICgpID0+IHt9O1xuY29uc3QgaWRlbnRpdHkgPSA8VD4oYTogVCkgPT4gYTtcblxudHlwZSBXcmFwcGVyID0gPFQ+KGZuOiBUKSA9PiBUO1xuXG5jb25zdCBjcmVhdGVPYmplY3RXcmFwcGVyID1cblx0KHdyYXA6IFdyYXBwZXIpOiBXcmFwcGVyID0+XG5cdChvYmplY3QpID0+IHtcblx0XHRpZiAoIW9iamVjdCB8fCB0eXBlb2Ygb2JqZWN0ICE9PSAnb2JqZWN0Jykge1xuXHRcdFx0cmV0dXJuIG9iamVjdDtcblx0XHR9XG5cdFx0Y29uc3QgcmVzID0ge30gYXMgYW55O1xuXHRcdGZvciAoY29uc3Qga2V5IG9mIE9iamVjdC5rZXlzKG9iamVjdCkpIHtcblx0XHRcdHJlc1trZXldID0gd3JhcCgob2JqZWN0IGFzIGFueSlba2V5XSk7XG5cdFx0fVxuXHRcdHJldHVybiByZXM7XG5cdH07XG5cbmNvbnN0IGNyZWF0ZVJldHVyblZhbHVlV3JhcHBlciA9XG5cdCh3cmFwUmV0dXJuVmFsdWU6IFdyYXBwZXIsIHdyYXBSZXN1bHQ6IFdyYXBwZXIpOiBXcmFwcGVyID0+XG5cdChmbikgPT5cblx0XHR3cmFwUmVzdWx0KHR5cGVvZiBmbiA9PT0gJ2Z1bmN0aW9uJyA/ICgoKC4uLmFyZ3M6IGFueVtdKSA9PiB3cmFwUmV0dXJuVmFsdWUoZm4oLi4uYXJncykpKSBhcyBhbnkpIDogZm4pO1xuXG5ASW5qZWN0YWJsZSh7XG5cdHByb3ZpZGVkSW46ICdyb290Jyxcbn0pXG5leHBvcnQgY2xhc3MgWm9uZVdyYXBwZXIge1xuXHRyZWFkb25seSAjem9uZSA9IGluamVjdChOZ1pvbmUpO1xuXHRyZWFkb25seSAjaGFzWm9uZSA9IHRoaXMuI3pvbmUucnVuKCgpID0+IE5nWm9uZS5pc0luQW5ndWxhclpvbmUoKSk7IC8vIGNoZWNrIGlmIHpvbmUgaXMgZW5hYmxlZCAoY2FuIGJlIE5vb3Bab25lLCBjZiBodHRwczovL2FuZ3VsYXIuaW8vZ3VpZGUvem9uZSNub29wem9uZSlcblx0I3J1bk5lZWRlZCA9IGZhbHNlO1xuXHQjcnVuUGxhbm5lZCA9IGZhbHNlO1xuXG5cdHBsYW5OZ1pvbmVSdW4gPSB0aGlzLiNoYXNab25lXG5cdFx0PyAoKSA9PiB7XG5cdFx0XHRcdGlmICh0aGlzLiN6b25lLmlzU3RhYmxlKSB7XG5cdFx0XHRcdFx0dGhpcy4jcnVuTmVlZGVkID0gdHJ1ZTtcblx0XHRcdFx0XHRpZiAoIXRoaXMuI3J1blBsYW5uZWQpIHtcblx0XHRcdFx0XHRcdHRoaXMuI3J1blBsYW5uZWQgPSB0cnVlO1xuXHRcdFx0XHRcdFx0dm9pZCAoYXN5bmMgKCkgPT4ge1xuXHRcdFx0XHRcdFx0XHRhd2FpdCAwO1xuXHRcdFx0XHRcdFx0XHR0aGlzLiNydW5QbGFubmVkID0gZmFsc2U7XG5cdFx0XHRcdFx0XHRcdGlmICh0aGlzLiNydW5OZWVkZWQpIHtcblx0XHRcdFx0XHRcdFx0XHR0aGlzLm5nWm9uZVJ1bihub29wKTtcblx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0fSkoKTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHQ6IG5vb3A7XG5cblx0LyoqXG5cdCAqIFJ1biB0aGUgaW5wdXQgZnVuY3Rpb24gc3luY2hyb25vdXNseSB3aXRoaW4gdGhlIEFuZ3VsYXIgem9uZVxuXHQgKlxuXHQgKiBAcGFyYW0gZm4gLSBhIGZ1bmN0aW9uIHRvIHJ1blxuXHQgKiBAcmV0dXJucyB0aGUgdmFsdWUgcmV0dXJuZWQgYnkgdGhlIGZ1bmN0aW9uXG5cdCAqL1xuXHRuZ1pvbmVSdW48VD4oZm46ICgpID0+IFQpOiBUIHtcblx0XHR0aGlzLiNydW5OZWVkZWQgPSBmYWxzZTtcblx0XHRyZXR1cm4gdGhpcy4jem9uZS5ydW4oZm4pO1xuXHR9XG5cblx0aW5zaWRlTmdab25lOiBXcmFwcGVyID0gdGhpcy4jaGFzWm9uZVxuXHRcdD8gKGZuKSA9PiAodHlwZW9mIGZuID09PSAnZnVuY3Rpb24nID8gKCgoLi4uYXJnczogYW55W10pID0+IHRoaXMubmdab25lUnVuKCgpID0+IGZuKC4uLmFyZ3MpKSkgYXMgYW55KSA6IGZuKVxuXHRcdDogaWRlbnRpdHk7XG5cdGluc2lkZU5nWm9uZVdyYXBGdW5jdGlvbnNPYmplY3QgPSBjcmVhdGVPYmplY3RXcmFwcGVyKHRoaXMuaW5zaWRlTmdab25lKTtcblxuXHRvdXRzaWRlTmdab25lOiBXcmFwcGVyID0gdGhpcy4jaGFzWm9uZVxuXHRcdD8gKGZuKSA9PiAodHlwZW9mIGZuID09PSAnZnVuY3Rpb24nID8gKCgoLi4uYXJnczogYW55W10pID0+IHRoaXMuI3pvbmUucnVuT3V0c2lkZUFuZ3VsYXIoKCkgPT4gZm4oLi4uYXJncykpKSBhcyBhbnkpIDogZm4pXG5cdFx0OiBpZGVudGl0eTtcblxuXHRvdXRzaWRlTmdab25lV3JhcEZ1bmN0aW9uc09iamVjdCA9IGNyZWF0ZU9iamVjdFdyYXBwZXIodGhpcy5vdXRzaWRlTmdab25lKTtcblx0b3V0c2lkZU5nWm9uZVdyYXBEaXJlY3RpdmUgPSBjcmVhdGVSZXR1cm5WYWx1ZVdyYXBwZXIodGhpcy5vdXRzaWRlTmdab25lV3JhcEZ1bmN0aW9uc09iamVjdCwgdGhpcy5vdXRzaWRlTmdab25lKTtcblx0b3V0c2lkZU5nWm9uZVdyYXBEaXJlY3RpdmVzT2JqZWN0ID0gY3JlYXRlT2JqZWN0V3JhcHBlcih0aGlzLm91dHNpZGVOZ1pvbmVXcmFwRGlyZWN0aXZlKTtcbn1cbiJdfQ==
|