@ethlete/query 4.18.0 → 4.20.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.
@@ -1,7 +1,8 @@
1
- import { Injector, assertInInjectionContext, inject } from '@angular/core';
1
+ import { Injector, assertInInjectionContext, computed, inject } from '@angular/core';
2
2
  import { toObservable, toSignal } from '@angular/core/rxjs-interop';
3
3
  import { createDestroy } from '@ethlete/core';
4
- import { pairwise, startWith, takeUntil, tap } from 'rxjs';
4
+ import { of, pairwise, startWith, switchMap, takeUntil, tap } from 'rxjs';
5
+ import { extractQuery, isQueryStateFailure, isQueryStateLoading, isQueryStateSuccess, } from '../query';
5
6
  export const addQueryContainerHandling = (obs, valueFn, config) => {
6
7
  assertInInjectionContext(addQueryContainerHandling);
7
8
  const { abortPrevious, abortOnDestroy } = config ?? {};
@@ -34,9 +35,41 @@ export function toQuerySignal(source, options) {
34
35
  addQueryContainerHandling(source, () => s(), options);
35
36
  return s;
36
37
  }
38
+ export function queryComputed(computation, options) {
39
+ const c = computed(computation, options);
40
+ const obs = toObservable(c, options);
41
+ addQueryContainerHandling(obs, () => c(), options);
42
+ return c;
43
+ }
37
44
  export function toQuerySubject(source, options) {
38
45
  const obs = toObservable(source, options);
39
46
  addQueryContainerHandling(obs, () => source(), options);
40
47
  return obs;
41
48
  }
42
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0YS51dGlscy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvcXVlcnkvc3JjL2xpYi91dGlscy9kYXRhLnV0aWxzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxRQUFRLEVBQVUsd0JBQXdCLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ25GLE9BQU8sRUFBd0MsWUFBWSxFQUFFLFFBQVEsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQzFHLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDOUMsT0FBTyxFQUE0QixRQUFRLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxHQUFHLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFpQnJGLE1BQU0sQ0FBQyxNQUFNLHlCQUF5QixHQUFHLENBQ3ZDLEdBQWdDLEVBQ2hDLE9BQTBDLEVBQzFDLE1BQTZCLEVBQzdCLEVBQUU7SUFDRix3QkFBd0IsQ0FBQyx5QkFBeUIsQ0FBQyxDQUFDO0lBRXBELE1BQU0sRUFBRSxhQUFhLEVBQUUsY0FBYyxFQUFFLEdBQUcsTUFBTSxJQUFJLEVBQUUsQ0FBQztJQUV2RCxNQUFNLFFBQVEsR0FBRyxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUM7SUFDbEMsTUFBTSxRQUFRLEdBQUcsYUFBYSxFQUFFLENBQUM7SUFFakMsOERBQThEO0lBQzlELE1BQU0sS0FBSyxHQUFJLFFBQWdCLENBQUMsTUFBTSxDQUFDO0lBQ3ZDLE1BQU0sV0FBVyxHQUFHLEtBQUssRUFBRSxLQUFLLElBQUksQ0FBQyxDQUFDLENBQUM7SUFFdkMsR0FBRztTQUNBLElBQUksQ0FDSCxTQUFTLENBQUMsUUFBUSxDQUFDLEVBQ25CLFNBQVMsQ0FBQyxJQUFJLENBQUMsRUFDZixRQUFRLEVBQUUsRUFDVixHQUFHLENBQUMsQ0FBQyxDQUFDLFNBQVMsRUFBRSxTQUFTLENBQUMsRUFBRSxFQUFFO1FBQzdCLFNBQVMsRUFBRSxnQkFBZ0IsQ0FBQyxXQUFXLENBQUMsQ0FBQztRQUN6QyxTQUFTLEVBQUUsYUFBYSxDQUFDLFdBQVcsQ0FBQyxDQUFDO1FBRXRDLElBQ0UsQ0FBQyxTQUFTLEVBQUUsY0FBYyxFQUFFO1lBQzVCLENBQUMsQ0FBQyxhQUFhLEtBQUssU0FBUyxJQUFJLFNBQVMsRUFBRSxXQUFXLENBQUMsSUFBSSxhQUFhLENBQUMsRUFDMUU7WUFDQSxTQUFTLEVBQUUsS0FBSyxFQUFFLENBQUM7U0FDcEI7SUFDSCxDQUFDLENBQUMsQ0FDSDtTQUNBLFNBQVMsRUFBRSxDQUFDO0lBRWYsUUFBUSxDQUFDLFNBQVMsQ0FBQyxHQUFHLEVBQUU7UUFDdEIsTUFBTSxLQUFLLEdBQUcsT0FBTyxFQUFFLENBQUM7UUFFeEIsS0FBSyxFQUFFLGdCQUFnQixDQUFDLFdBQVcsQ0FBQyxDQUFDO1FBRXJDLElBQUksQ0FBQyxLQUFLLEVBQUUsY0FBYyxFQUFFLElBQUksQ0FBQyxDQUFDLEtBQUssRUFBRSxXQUFXLElBQUksY0FBYyxLQUFLLFNBQVMsQ0FBQyxJQUFJLGNBQWMsQ0FBQyxFQUFFO1lBQ3hHLEtBQUssRUFBRSxLQUFLLEVBQUUsQ0FBQztTQUNoQjtJQUNILENBQUMsQ0FBQyxDQUFDO0FBQ0wsQ0FBQyxDQUFDO0FBaUJGLE1BQU0sVUFBVSxhQUFhLENBQzNCLE1BQXVDLEVBQ3ZDLE9BQW1EO0lBRW5ELDhEQUE4RDtJQUM5RCxNQUFNLENBQUMsR0FBRyxRQUFRLENBQUMsTUFBTSxFQUFFLE9BQWMsQ0FBQyxDQUFDO0lBRTNDLHlCQUF5QixDQUFDLE1BQXVCLEVBQUUsR0FBRyxFQUFFLENBQUMsQ0FBQyxFQUFPLEVBQUUsT0FBTyxDQUFDLENBQUM7SUFFNUUsT0FBTyxDQUFrQixDQUFDO0FBQzVCLENBQUM7QUFFRCxNQUFNLFVBQVUsY0FBYyxDQUM1QixNQUFpQixFQUNqQixPQUFvRDtJQUVwRCxNQUFNLEdBQUcsR0FBRyxZQUFZLENBQUMsTUFBTSxFQUFFLE9BQU8sQ0FBQyxDQUFDO0lBRTFDLHlCQUF5QixDQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUUsQ0FBQyxNQUFNLEVBQUUsRUFBRSxPQUFPLENBQUMsQ0FBQztJQUV4RCxPQUFPLEdBQUcsQ0FBQztBQUNiLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RvciwgU2lnbmFsLCBhc3NlcnRJbkluamVjdGlvbkNvbnRleHQsIGluamVjdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgVG9PYnNlcnZhYmxlT3B0aW9ucywgVG9TaWduYWxPcHRpb25zLCB0b09ic2VydmFibGUsIHRvU2lnbmFsIH0gZnJvbSAnQGFuZ3VsYXIvY29yZS9yeGpzLWludGVyb3AnO1xuaW1wb3J0IHsgY3JlYXRlRGVzdHJveSB9IGZyb20gJ0BldGhsZXRlL2NvcmUnO1xuaW1wb3J0IHsgT2JzZXJ2YWJsZSwgU3Vic2NyaWJhYmxlLCBwYWlyd2lzZSwgc3RhcnRXaXRoLCB0YWtlVW50aWwsIHRhcCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgQW55UXVlcnkgfSBmcm9tICcuLi9xdWVyeSc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgUXVlcnlDb250YWluZXJDb25maWcge1xuICAvKipcbiAgICogSWYgYHRydWVgLCB0aGUgcHJldmlvdXMgcXVlcnkgd2lsbCBiZSBhYm9ydGVkIHdoZW4gYSBuZXcgcXVlcnkgaXMgcHVzaGVkIGludG8gdGhlIGNvbnRhaW5lci5cbiAgICogQGRlZmF1bHQgdHJ1ZSAvLyBPbmx5IGlmIHRoZSByZXF1ZXN0IGNhbiBiZSBjYWNoZWQgKEdFVCwgT1BUSU9OUywgSEVBRCBhbmQgR1FMX1FVRVJZKS4gT3RoZXJ3aXNlIGZhbHNlLlxuICAgKi9cbiAgYWJvcnRQcmV2aW91cz86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIElmIGB0cnVlYCwgdGhlIHF1ZXJ5IHdpbGwgYmUgYWJvcnRlZCB3aGVuIHRoZSBjb250YWluZXIgaXMgZGVzdHJveWVkLlxuICAgKiBAZGVmYXVsdCB0cnVlIC8vIE9ubHkgaWYgdGhlIHJlcXVlc3QgY2FuIGJlIGNhY2hlZCAoR0VULCBPUFRJT05TLCBIRUFEIGFuZCBHUUxfUVVFUlkpLiBPdGhlcndpc2UgZmFsc2UuXG4gICAqL1xuICBhYm9ydE9uRGVzdHJveT86IGJvb2xlYW47XG59XG5cbmV4cG9ydCBjb25zdCBhZGRRdWVyeUNvbnRhaW5lckhhbmRsaW5nID0gKFxuICBvYnM6IE9ic2VydmFibGU8QW55UXVlcnkgfCBudWxsPixcbiAgdmFsdWVGbjogKCkgPT4gQW55UXVlcnkgfCBudWxsIHwgdW5kZWZpbmVkLFxuICBjb25maWc/OiBRdWVyeUNvbnRhaW5lckNvbmZpZyxcbikgPT4ge1xuICBhc3NlcnRJbkluamVjdGlvbkNvbnRleHQoYWRkUXVlcnlDb250YWluZXJIYW5kbGluZyk7XG5cbiAgY29uc3QgeyBhYm9ydFByZXZpb3VzLCBhYm9ydE9uRGVzdHJveSB9ID0gY29uZmlnID8/IHt9O1xuXG4gIGNvbnN0IGluamVjdG9yID0gaW5qZWN0KEluamVjdG9yKTtcbiAgY29uc3QgZGVzdHJveSQgPSBjcmVhdGVEZXN0cm95KCk7XG5cbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnlcbiAgY29uc3QgdE5vZGUgPSAoaW5qZWN0b3IgYXMgYW55KS5fdE5vZGU7XG4gIGNvbnN0IGNvbXBvbmVudElkID0gdE5vZGU/LmluZGV4ID8/IC0xO1xuXG4gIG9ic1xuICAgIC5waXBlKFxuICAgICAgdGFrZVVudGlsKGRlc3Ryb3kkKSxcbiAgICAgIHN0YXJ0V2l0aChudWxsKSxcbiAgICAgIHBhaXJ3aXNlKCksXG4gICAgICB0YXAoKFtwcmV2UXVlcnksIGN1cnJRdWVyeV0pID0+IHtcbiAgICAgICAgcHJldlF1ZXJ5Py5fcmVtb3ZlRGVwZW5kZW50KGNvbXBvbmVudElkKTtcbiAgICAgICAgY3VyclF1ZXJ5Py5fYWRkRGVwZW5kZW50KGNvbXBvbmVudElkKTtcblxuICAgICAgICBpZiAoXG4gICAgICAgICAgIXByZXZRdWVyeT8uX2hhc0RlcGVuZGVudHMoKSAmJlxuICAgICAgICAgICgoYWJvcnRQcmV2aW91cyA9PT0gdW5kZWZpbmVkICYmIHByZXZRdWVyeT8uY2FuQmVDYWNoZWQpIHx8IGFib3J0UHJldmlvdXMpXG4gICAgICAgICkge1xuICAgICAgICAgIHByZXZRdWVyeT8uYWJvcnQoKTtcbiAgICAgICAgfVxuICAgICAgfSksXG4gICAgKVxuICAgIC5zdWJzY3JpYmUoKTtcblxuICBkZXN0cm95JC5zdWJzY3JpYmUoKCkgPT4ge1xuICAgIGNvbnN0IHF1ZXJ5ID0gdmFsdWVGbigpO1xuXG4gICAgcXVlcnk/Ll9yZW1vdmVEZXBlbmRlbnQoY29tcG9uZW50SWQpO1xuXG4gICAgaWYgKCFxdWVyeT8uX2hhc0RlcGVuZGVudHMoKSAmJiAoKHF1ZXJ5Py5jYW5CZUNhY2hlZCAmJiBhYm9ydE9uRGVzdHJveSA9PT0gdW5kZWZpbmVkKSB8fCBhYm9ydE9uRGVzdHJveSkpIHtcbiAgICAgIHF1ZXJ5Py5hYm9ydCgpO1xuICAgIH1cbiAgfSk7XG59O1xuXG5leHBvcnQgZnVuY3Rpb24gdG9RdWVyeVNpZ25hbDxUIGV4dGVuZHMgQW55UXVlcnkgfCBudWxsPihcbiAgc291cmNlOiBPYnNlcnZhYmxlPFQ+IHwgU3Vic2NyaWJhYmxlPFQ+LFxuKTogU2lnbmFsPFQgfCB1bmRlZmluZWQ+O1xuZXhwb3J0IGZ1bmN0aW9uIHRvUXVlcnlTaWduYWw8VCBleHRlbmRzIEFueVF1ZXJ5IHwgbnVsbD4oXG4gIHNvdXJjZTogT2JzZXJ2YWJsZTxUPiB8IFN1YnNjcmliYWJsZTxUPixcbiAgb3B0aW9ucz86IFRvU2lnbmFsT3B0aW9uczx1bmRlZmluZWQ+ICYgeyByZXF1aXJlU3luYz86IGZhbHNlIH0gJiBRdWVyeUNvbnRhaW5lckNvbmZpZyxcbik6IFNpZ25hbDxUIHwgdW5kZWZpbmVkPjtcbmV4cG9ydCBmdW5jdGlvbiB0b1F1ZXJ5U2lnbmFsPFQgZXh0ZW5kcyBBbnlRdWVyeSB8IG51bGwsIFUgZXh0ZW5kcyBUIHwgbnVsbCB8IHVuZGVmaW5lZD4oXG4gIHNvdXJjZTogT2JzZXJ2YWJsZTxUPiB8IFN1YnNjcmliYWJsZTxUPixcbiAgb3B0aW9uczogVG9TaWduYWxPcHRpb25zPFU+ICYgeyBpbml0aWFsVmFsdWU6IFU7IHJlcXVpcmVTeW5jPzogZmFsc2UgfSAmIFF1ZXJ5Q29udGFpbmVyQ29uZmlnLFxuKTogU2lnbmFsPFQgfCBVPjtcbmV4cG9ydCBmdW5jdGlvbiB0b1F1ZXJ5U2lnbmFsPFQgZXh0ZW5kcyBBbnlRdWVyeSB8IG51bGw+KFxuICBzb3VyY2U6IE9ic2VydmFibGU8VD4gfCBTdWJzY3JpYmFibGU8VD4sXG4gIG9wdGlvbnM6IFRvU2lnbmFsT3B0aW9uczx1bmRlZmluZWQ+ICYgeyByZXF1aXJlU3luYzogdHJ1ZSB9ICYgUXVlcnlDb250YWluZXJDb25maWcsXG4pOiBTaWduYWw8VD47XG5leHBvcnQgZnVuY3Rpb24gdG9RdWVyeVNpZ25hbDxUIGV4dGVuZHMgQW55UXVlcnkgfCBudWxsLCBVID0gdW5kZWZpbmVkPihcbiAgc291cmNlOiBPYnNlcnZhYmxlPFQ+IHwgU3Vic2NyaWJhYmxlPFQ+LFxuICBvcHRpb25zPzogVG9TaWduYWxPcHRpb25zPFU+ICYgUXVlcnlDb250YWluZXJDb25maWcsXG4pOiBTaWduYWw8VCB8IFU+IHtcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnlcbiAgY29uc3QgcyA9IHRvU2lnbmFsKHNvdXJjZSwgb3B0aW9ucyBhcyBhbnkpO1xuXG4gIGFkZFF1ZXJ5Q29udGFpbmVySGFuZGxpbmcoc291cmNlIGFzIE9ic2VydmFibGU8VD4sICgpID0+IHMoKSBhcyBULCBvcHRpb25zKTtcblxuICByZXR1cm4gcyBhcyBTaWduYWw8VCB8IFU+O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gdG9RdWVyeVN1YmplY3Q8VCBleHRlbmRzIEFueVF1ZXJ5IHwgbnVsbD4oXG4gIHNvdXJjZTogU2lnbmFsPFQ+LFxuICBvcHRpb25zPzogVG9PYnNlcnZhYmxlT3B0aW9ucyAmIFF1ZXJ5Q29udGFpbmVyQ29uZmlnLFxuKTogT2JzZXJ2YWJsZTxUPiB7XG4gIGNvbnN0IG9icyA9IHRvT2JzZXJ2YWJsZShzb3VyY2UsIG9wdGlvbnMpO1xuXG4gIGFkZFF1ZXJ5Q29udGFpbmVySGFuZGxpbmcob2JzLCAoKSA9PiBzb3VyY2UoKSwgb3B0aW9ucyk7XG5cbiAgcmV0dXJuIG9icztcbn1cbiJdfQ==
49
+ export function queryStateSignal(source) {
50
+ return toSignal(toObservable(source).pipe(switchMap((q) => extractQuery(q)?.state$ ?? of(null))), {
51
+ initialValue: null,
52
+ });
53
+ }
54
+ export function queryStateResponseSignal(source) {
55
+ const s = queryStateSignal(source);
56
+ return computed(() => {
57
+ const state = s();
58
+ return isQueryStateSuccess(state) ? state.response : null;
59
+ });
60
+ }
61
+ export function queryStateErrorSignal(source) {
62
+ const s = queryStateSignal(source);
63
+ return computed(() => {
64
+ const state = s();
65
+ return isQueryStateFailure(state) ? state.error : null;
66
+ });
67
+ }
68
+ export function queryStateLoadingSignal(source) {
69
+ const s = queryStateSignal(source);
70
+ return computed(() => {
71
+ const state = s();
72
+ return isQueryStateLoading(state) ? state : null;
73
+ });
74
+ }
75
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0YS51dGlscy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvcXVlcnkvc3JjL2xpYi91dGlscy9kYXRhLnV0aWxzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBeUIsUUFBUSxFQUFVLHdCQUF3QixFQUFFLFFBQVEsRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDcEgsT0FBTyxFQUF3QyxZQUFZLEVBQUUsUUFBUSxFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDMUcsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUM5QyxPQUFPLEVBQTRCLEVBQUUsRUFBRSxRQUFRLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsR0FBRyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ3BHLE9BQU8sRUFLTCxZQUFZLEVBQ1osbUJBQW1CLEVBQ25CLG1CQUFtQixFQUNuQixtQkFBbUIsR0FDcEIsTUFBTSxVQUFVLENBQUM7QUFpQmxCLE1BQU0sQ0FBQyxNQUFNLHlCQUF5QixHQUFHLENBQ3ZDLEdBQWdDLEVBQ2hDLE9BQTBDLEVBQzFDLE1BQTZCLEVBQzdCLEVBQUU7SUFDRix3QkFBd0IsQ0FBQyx5QkFBeUIsQ0FBQyxDQUFDO0lBRXBELE1BQU0sRUFBRSxhQUFhLEVBQUUsY0FBYyxFQUFFLEdBQUcsTUFBTSxJQUFJLEVBQUUsQ0FBQztJQUV2RCxNQUFNLFFBQVEsR0FBRyxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUM7SUFDbEMsTUFBTSxRQUFRLEdBQUcsYUFBYSxFQUFFLENBQUM7SUFFakMsOERBQThEO0lBQzlELE1BQU0sS0FBSyxHQUFJLFFBQWdCLENBQUMsTUFBTSxDQUFDO0lBQ3ZDLE1BQU0sV0FBVyxHQUFHLEtBQUssRUFBRSxLQUFLLElBQUksQ0FBQyxDQUFDLENBQUM7SUFFdkMsR0FBRztTQUNBLElBQUksQ0FDSCxTQUFTLENBQUMsUUFBUSxDQUFDLEVBQ25CLFNBQVMsQ0FBQyxJQUFJLENBQUMsRUFDZixRQUFRLEVBQUUsRUFDVixHQUFHLENBQUMsQ0FBQyxDQUFDLFNBQVMsRUFBRSxTQUFTLENBQUMsRUFBRSxFQUFFO1FBQzdCLFNBQVMsRUFBRSxnQkFBZ0IsQ0FBQyxXQUFXLENBQUMsQ0FBQztRQUN6QyxTQUFTLEVBQUUsYUFBYSxDQUFDLFdBQVcsQ0FBQyxDQUFDO1FBRXRDLElBQ0UsQ0FBQyxTQUFTLEVBQUUsY0FBYyxFQUFFO1lBQzVCLENBQUMsQ0FBQyxhQUFhLEtBQUssU0FBUyxJQUFJLFNBQVMsRUFBRSxXQUFXLENBQUMsSUFBSSxhQUFhLENBQUMsRUFDMUU7WUFDQSxTQUFTLEVBQUUsS0FBSyxFQUFFLENBQUM7U0FDcEI7SUFDSCxDQUFDLENBQUMsQ0FDSDtTQUNBLFNBQVMsRUFBRSxDQUFDO0lBRWYsUUFBUSxDQUFDLFNBQVMsQ0FBQyxHQUFHLEVBQUU7UUFDdEIsTUFBTSxLQUFLLEdBQUcsT0FBTyxFQUFFLENBQUM7UUFFeEIsS0FBSyxFQUFFLGdCQUFnQixDQUFDLFdBQVcsQ0FBQyxDQUFDO1FBRXJDLElBQUksQ0FBQyxLQUFLLEVBQUUsY0FBYyxFQUFFLElBQUksQ0FBQyxDQUFDLEtBQUssRUFBRSxXQUFXLElBQUksY0FBYyxLQUFLLFNBQVMsQ0FBQyxJQUFJLGNBQWMsQ0FBQyxFQUFFO1lBQ3hHLEtBQUssRUFBRSxLQUFLLEVBQUUsQ0FBQztTQUNoQjtJQUNILENBQUMsQ0FBQyxDQUFDO0FBQ0wsQ0FBQyxDQUFDO0FBaUJGLE1BQU0sVUFBVSxhQUFhLENBQzNCLE1BQXVDLEVBQ3ZDLE9BQW1EO0lBRW5ELDhEQUE4RDtJQUM5RCxNQUFNLENBQUMsR0FBRyxRQUFRLENBQUMsTUFBTSxFQUFFLE9BQWMsQ0FBQyxDQUFDO0lBRTNDLHlCQUF5QixDQUFDLE1BQXVCLEVBQUUsR0FBRyxFQUFFLENBQUMsQ0FBQyxFQUFPLEVBQUUsT0FBTyxDQUFDLENBQUM7SUFFNUUsT0FBTyxDQUFrQixDQUFDO0FBQzVCLENBQUM7QUFFRCxNQUFNLFVBQVUsYUFBYSxDQUMzQixXQUFvQixFQUNwQixPQUErRTtJQUUvRSxNQUFNLENBQUMsR0FBRyxRQUFRLENBQUMsV0FBVyxFQUFFLE9BQU8sQ0FBQyxDQUFDO0lBQ3pDLE1BQU0sR0FBRyxHQUFHLFlBQVksQ0FBQyxDQUFDLEVBQUUsT0FBTyxDQUFDLENBQUM7SUFFckMseUJBQXlCLENBQUMsR0FBRyxFQUFFLEdBQUcsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLE9BQU8sQ0FBQyxDQUFDO0lBRW5ELE9BQU8sQ0FBQyxDQUFDO0FBQ1gsQ0FBQztBQUVELE1BQU0sVUFBVSxjQUFjLENBQzVCLE1BQWlCLEVBQ2pCLE9BQW9EO0lBRXBELE1BQU0sR0FBRyxHQUFHLFlBQVksQ0FBQyxNQUFNLEVBQUUsT0FBTyxDQUFDLENBQUM7SUFFMUMseUJBQXlCLENBQUMsR0FBRyxFQUFFLEdBQUcsRUFBRSxDQUFDLE1BQU0sRUFBRSxFQUFFLE9BQU8sQ0FBQyxDQUFDO0lBRXhELE9BQU8sR0FBRyxDQUFDO0FBQ2IsQ0FBQztBQUVELE1BQU0sVUFBVSxnQkFBZ0IsQ0FBeUQsTUFBUztJQUNoRyxPQUFPLFFBQVEsQ0FBQyxZQUFZLENBQUMsTUFBTSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxFQUFFLE1BQU0sSUFBSSxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFO1FBQ2hHLFlBQVksRUFBRSxJQUFJO0tBQ25CLENBQW1FLENBQUM7QUFDdkUsQ0FBQztBQUVELE1BQU0sVUFBVSx3QkFBd0IsQ0FBeUQsTUFBUztJQUN4RyxNQUFNLENBQUMsR0FBRyxnQkFBZ0IsQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUVuQyxPQUFPLFFBQVEsQ0FBQyxHQUFHLEVBQUU7UUFDbkIsTUFBTSxLQUFLLEdBQUcsQ0FBQyxFQUFFLENBQUM7UUFFbEIsT0FBTyxtQkFBbUIsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDO0lBQzVELENBQUMsQ0FBQyxDQUFDO0FBQ0wsQ0FBQztBQUVELE1BQU0sVUFBVSxxQkFBcUIsQ0FBeUQsTUFBUztJQUNyRyxNQUFNLENBQUMsR0FBRyxnQkFBZ0IsQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUVuQyxPQUFPLFFBQVEsQ0FBQyxHQUFHLEVBQUU7UUFDbkIsTUFBTSxLQUFLLEdBQUcsQ0FBQyxFQUFFLENBQUM7UUFFbEIsT0FBTyxtQkFBbUIsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDO0lBQ3pELENBQUMsQ0FBQyxDQUFDO0FBQ0wsQ0FBQztBQUVELE1BQU0sVUFBVSx1QkFBdUIsQ0FBeUQsTUFBUztJQUN2RyxNQUFNLENBQUMsR0FBRyxnQkFBZ0IsQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUVuQyxPQUFPLFFBQVEsQ0FBQyxHQUFHLEVBQUU7UUFDbkIsTUFBTSxLQUFLLEdBQUcsQ0FBQyxFQUFFLENBQUM7UUFFbEIsT0FBTyxtQkFBbUIsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUM7SUFDbkQsQ0FBQyxDQUFDLENBQUM7QUFDTCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ3JlYXRlQ29tcHV0ZWRPcHRpb25zLCBJbmplY3RvciwgU2lnbmFsLCBhc3NlcnRJbkluamVjdGlvbkNvbnRleHQsIGNvbXB1dGVkLCBpbmplY3QgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFRvT2JzZXJ2YWJsZU9wdGlvbnMsIFRvU2lnbmFsT3B0aW9ucywgdG9PYnNlcnZhYmxlLCB0b1NpZ25hbCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUvcnhqcy1pbnRlcm9wJztcbmltcG9ydCB7IGNyZWF0ZURlc3Ryb3kgfSBmcm9tICdAZXRobGV0ZS9jb3JlJztcbmltcG9ydCB7IE9ic2VydmFibGUsIFN1YnNjcmliYWJsZSwgb2YsIHBhaXJ3aXNlLCBzdGFydFdpdGgsIHN3aXRjaE1hcCwgdGFrZVVudGlsLCB0YXAgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7XG4gIEFueVF1ZXJ5LFxuICBBbnlRdWVyeUNvbGxlY3Rpb24sXG4gIFF1ZXJ5T2YsXG4gIFF1ZXJ5U3RhdGUsXG4gIGV4dHJhY3RRdWVyeSxcbiAgaXNRdWVyeVN0YXRlRmFpbHVyZSxcbiAgaXNRdWVyeVN0YXRlTG9hZGluZyxcbiAgaXNRdWVyeVN0YXRlU3VjY2Vzcyxcbn0gZnJvbSAnLi4vcXVlcnknO1xuaW1wb3J0IHsgUXVlcnlEYXRhT2YgfSBmcm9tICcuLi9xdWVyeS1jcmVhdG9yJztcblxuZXhwb3J0IGludGVyZmFjZSBRdWVyeUNvbnRhaW5lckNvbmZpZyB7XG4gIC8qKlxuICAgKiBJZiBgdHJ1ZWAsIHRoZSBwcmV2aW91cyBxdWVyeSB3aWxsIGJlIGFib3J0ZWQgd2hlbiBhIG5ldyBxdWVyeSBpcyBwdXNoZWQgaW50byB0aGUgY29udGFpbmVyLlxuICAgKiBAZGVmYXVsdCB0cnVlIC8vIE9ubHkgaWYgdGhlIHJlcXVlc3QgY2FuIGJlIGNhY2hlZCAoR0VULCBPUFRJT05TLCBIRUFEIGFuZCBHUUxfUVVFUlkpLiBPdGhlcndpc2UgZmFsc2UuXG4gICAqL1xuICBhYm9ydFByZXZpb3VzPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogSWYgYHRydWVgLCB0aGUgcXVlcnkgd2lsbCBiZSBhYm9ydGVkIHdoZW4gdGhlIGNvbnRhaW5lciBpcyBkZXN0cm95ZWQuXG4gICAqIEBkZWZhdWx0IHRydWUgLy8gT25seSBpZiB0aGUgcmVxdWVzdCBjYW4gYmUgY2FjaGVkIChHRVQsIE9QVElPTlMsIEhFQUQgYW5kIEdRTF9RVUVSWSkuIE90aGVyd2lzZSBmYWxzZS5cbiAgICovXG4gIGFib3J0T25EZXN0cm95PzogYm9vbGVhbjtcbn1cblxuZXhwb3J0IGNvbnN0IGFkZFF1ZXJ5Q29udGFpbmVySGFuZGxpbmcgPSAoXG4gIG9iczogT2JzZXJ2YWJsZTxBbnlRdWVyeSB8IG51bGw+LFxuICB2YWx1ZUZuOiAoKSA9PiBBbnlRdWVyeSB8IG51bGwgfCB1bmRlZmluZWQsXG4gIGNvbmZpZz86IFF1ZXJ5Q29udGFpbmVyQ29uZmlnLFxuKSA9PiB7XG4gIGFzc2VydEluSW5qZWN0aW9uQ29udGV4dChhZGRRdWVyeUNvbnRhaW5lckhhbmRsaW5nKTtcblxuICBjb25zdCB7IGFib3J0UHJldmlvdXMsIGFib3J0T25EZXN0cm95IH0gPSBjb25maWcgPz8ge307XG5cbiAgY29uc3QgaW5qZWN0b3IgPSBpbmplY3QoSW5qZWN0b3IpO1xuICBjb25zdCBkZXN0cm95JCA9IGNyZWF0ZURlc3Ryb3koKTtcblxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueVxuICBjb25zdCB0Tm9kZSA9IChpbmplY3RvciBhcyBhbnkpLl90Tm9kZTtcbiAgY29uc3QgY29tcG9uZW50SWQgPSB0Tm9kZT8uaW5kZXggPz8gLTE7XG5cbiAgb2JzXG4gICAgLnBpcGUoXG4gICAgICB0YWtlVW50aWwoZGVzdHJveSQpLFxuICAgICAgc3RhcnRXaXRoKG51bGwpLFxuICAgICAgcGFpcndpc2UoKSxcbiAgICAgIHRhcCgoW3ByZXZRdWVyeSwgY3VyclF1ZXJ5XSkgPT4ge1xuICAgICAgICBwcmV2UXVlcnk/Ll9yZW1vdmVEZXBlbmRlbnQoY29tcG9uZW50SWQpO1xuICAgICAgICBjdXJyUXVlcnk/Ll9hZGREZXBlbmRlbnQoY29tcG9uZW50SWQpO1xuXG4gICAgICAgIGlmIChcbiAgICAgICAgICAhcHJldlF1ZXJ5Py5faGFzRGVwZW5kZW50cygpICYmXG4gICAgICAgICAgKChhYm9ydFByZXZpb3VzID09PSB1bmRlZmluZWQgJiYgcHJldlF1ZXJ5Py5jYW5CZUNhY2hlZCkgfHwgYWJvcnRQcmV2aW91cylcbiAgICAgICAgKSB7XG4gICAgICAgICAgcHJldlF1ZXJ5Py5hYm9ydCgpO1xuICAgICAgICB9XG4gICAgICB9KSxcbiAgICApXG4gICAgLnN1YnNjcmliZSgpO1xuXG4gIGRlc3Ryb3kkLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgY29uc3QgcXVlcnkgPSB2YWx1ZUZuKCk7XG5cbiAgICBxdWVyeT8uX3JlbW92ZURlcGVuZGVudChjb21wb25lbnRJZCk7XG5cbiAgICBpZiAoIXF1ZXJ5Py5faGFzRGVwZW5kZW50cygpICYmICgocXVlcnk/LmNhbkJlQ2FjaGVkICYmIGFib3J0T25EZXN0cm95ID09PSB1bmRlZmluZWQpIHx8IGFib3J0T25EZXN0cm95KSkge1xuICAgICAgcXVlcnk/LmFib3J0KCk7XG4gICAgfVxuICB9KTtcbn07XG5cbmV4cG9ydCBmdW5jdGlvbiB0b1F1ZXJ5U2lnbmFsPFQgZXh0ZW5kcyBBbnlRdWVyeSB8IG51bGw+KFxuICBzb3VyY2U6IE9ic2VydmFibGU8VD4gfCBTdWJzY3JpYmFibGU8VD4sXG4pOiBTaWduYWw8VCB8IHVuZGVmaW5lZD47XG5leHBvcnQgZnVuY3Rpb24gdG9RdWVyeVNpZ25hbDxUIGV4dGVuZHMgQW55UXVlcnkgfCBudWxsPihcbiAgc291cmNlOiBPYnNlcnZhYmxlPFQ+IHwgU3Vic2NyaWJhYmxlPFQ+LFxuICBvcHRpb25zPzogVG9TaWduYWxPcHRpb25zPHVuZGVmaW5lZD4gJiB7IHJlcXVpcmVTeW5jPzogZmFsc2UgfSAmIFF1ZXJ5Q29udGFpbmVyQ29uZmlnLFxuKTogU2lnbmFsPFQgfCB1bmRlZmluZWQ+O1xuZXhwb3J0IGZ1bmN0aW9uIHRvUXVlcnlTaWduYWw8VCBleHRlbmRzIEFueVF1ZXJ5IHwgbnVsbCwgVSBleHRlbmRzIFQgfCBudWxsIHwgdW5kZWZpbmVkPihcbiAgc291cmNlOiBPYnNlcnZhYmxlPFQ+IHwgU3Vic2NyaWJhYmxlPFQ+LFxuICBvcHRpb25zOiBUb1NpZ25hbE9wdGlvbnM8VT4gJiB7IGluaXRpYWxWYWx1ZTogVTsgcmVxdWlyZVN5bmM/OiBmYWxzZSB9ICYgUXVlcnlDb250YWluZXJDb25maWcsXG4pOiBTaWduYWw8VCB8IFU+O1xuZXhwb3J0IGZ1bmN0aW9uIHRvUXVlcnlTaWduYWw8VCBleHRlbmRzIEFueVF1ZXJ5IHwgbnVsbD4oXG4gIHNvdXJjZTogT2JzZXJ2YWJsZTxUPiB8IFN1YnNjcmliYWJsZTxUPixcbiAgb3B0aW9uczogVG9TaWduYWxPcHRpb25zPHVuZGVmaW5lZD4gJiB7IHJlcXVpcmVTeW5jOiB0cnVlIH0gJiBRdWVyeUNvbnRhaW5lckNvbmZpZyxcbik6IFNpZ25hbDxUPjtcbmV4cG9ydCBmdW5jdGlvbiB0b1F1ZXJ5U2lnbmFsPFQgZXh0ZW5kcyBBbnlRdWVyeSB8IG51bGwsIFUgPSB1bmRlZmluZWQ+KFxuICBzb3VyY2U6IE9ic2VydmFibGU8VD4gfCBTdWJzY3JpYmFibGU8VD4sXG4gIG9wdGlvbnM/OiBUb1NpZ25hbE9wdGlvbnM8VT4gJiBRdWVyeUNvbnRhaW5lckNvbmZpZyxcbik6IFNpZ25hbDxUIHwgVT4ge1xuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueVxuICBjb25zdCBzID0gdG9TaWduYWwoc291cmNlLCBvcHRpb25zIGFzIGFueSk7XG5cbiAgYWRkUXVlcnlDb250YWluZXJIYW5kbGluZyhzb3VyY2UgYXMgT2JzZXJ2YWJsZTxUPiwgKCkgPT4gcygpIGFzIFQsIG9wdGlvbnMpO1xuXG4gIHJldHVybiBzIGFzIFNpZ25hbDxUIHwgVT47XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBxdWVyeUNvbXB1dGVkPFQgZXh0ZW5kcyBBbnlRdWVyeSB8IG51bGw+KFxuICBjb21wdXRhdGlvbjogKCkgPT4gVCxcbiAgb3B0aW9ucz86IENyZWF0ZUNvbXB1dGVkT3B0aW9uczxUPiAmIFF1ZXJ5Q29udGFpbmVyQ29uZmlnICYgVG9PYnNlcnZhYmxlT3B0aW9ucyxcbik6IFNpZ25hbDxUPiB7XG4gIGNvbnN0IGMgPSBjb21wdXRlZChjb21wdXRhdGlvbiwgb3B0aW9ucyk7XG4gIGNvbnN0IG9icyA9IHRvT2JzZXJ2YWJsZShjLCBvcHRpb25zKTtcblxuICBhZGRRdWVyeUNvbnRhaW5lckhhbmRsaW5nKG9icywgKCkgPT4gYygpLCBvcHRpb25zKTtcblxuICByZXR1cm4gYztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHRvUXVlcnlTdWJqZWN0PFQgZXh0ZW5kcyBBbnlRdWVyeSB8IG51bGw+KFxuICBzb3VyY2U6IFNpZ25hbDxUPixcbiAgb3B0aW9ucz86IFRvT2JzZXJ2YWJsZU9wdGlvbnMgJiBRdWVyeUNvbnRhaW5lckNvbmZpZyxcbik6IE9ic2VydmFibGU8VD4ge1xuICBjb25zdCBvYnMgPSB0b09ic2VydmFibGUoc291cmNlLCBvcHRpb25zKTtcblxuICBhZGRRdWVyeUNvbnRhaW5lckhhbmRsaW5nKG9icywgKCkgPT4gc291cmNlKCksIG9wdGlvbnMpO1xuXG4gIHJldHVybiBvYnM7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBxdWVyeVN0YXRlU2lnbmFsPFQgZXh0ZW5kcyBTaWduYWw8QW55UXVlcnkgfCBBbnlRdWVyeUNvbGxlY3Rpb24gfCBudWxsPj4oc291cmNlOiBUKSB7XG4gIHJldHVybiB0b1NpZ25hbCh0b09ic2VydmFibGUoc291cmNlKS5waXBlKHN3aXRjaE1hcCgocSkgPT4gZXh0cmFjdFF1ZXJ5KHEpPy5zdGF0ZSQgPz8gb2YobnVsbCkpKSwge1xuICAgIGluaXRpYWxWYWx1ZTogbnVsbCxcbiAgfSkgYXMgU2lnbmFsPFF1ZXJ5U3RhdGU8UXVlcnlEYXRhT2Y8UXVlcnlPZjxSZXR1cm5UeXBlPFQ+Pj4+IHwgbnVsbD47XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBxdWVyeVN0YXRlUmVzcG9uc2VTaWduYWw8VCBleHRlbmRzIFNpZ25hbDxBbnlRdWVyeSB8IEFueVF1ZXJ5Q29sbGVjdGlvbiB8IG51bGw+Pihzb3VyY2U6IFQpIHtcbiAgY29uc3QgcyA9IHF1ZXJ5U3RhdGVTaWduYWwoc291cmNlKTtcblxuICByZXR1cm4gY29tcHV0ZWQoKCkgPT4ge1xuICAgIGNvbnN0IHN0YXRlID0gcygpO1xuXG4gICAgcmV0dXJuIGlzUXVlcnlTdGF0ZVN1Y2Nlc3Moc3RhdGUpID8gc3RhdGUucmVzcG9uc2UgOiBudWxsO1xuICB9KTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHF1ZXJ5U3RhdGVFcnJvclNpZ25hbDxUIGV4dGVuZHMgU2lnbmFsPEFueVF1ZXJ5IHwgQW55UXVlcnlDb2xsZWN0aW9uIHwgbnVsbD4+KHNvdXJjZTogVCkge1xuICBjb25zdCBzID0gcXVlcnlTdGF0ZVNpZ25hbChzb3VyY2UpO1xuXG4gIHJldHVybiBjb21wdXRlZCgoKSA9PiB7XG4gICAgY29uc3Qgc3RhdGUgPSBzKCk7XG5cbiAgICByZXR1cm4gaXNRdWVyeVN0YXRlRmFpbHVyZShzdGF0ZSkgPyBzdGF0ZS5lcnJvciA6IG51bGw7XG4gIH0pO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcXVlcnlTdGF0ZUxvYWRpbmdTaWduYWw8VCBleHRlbmRzIFNpZ25hbDxBbnlRdWVyeSB8IEFueVF1ZXJ5Q29sbGVjdGlvbiB8IG51bGw+Pihzb3VyY2U6IFQpIHtcbiAgY29uc3QgcyA9IHF1ZXJ5U3RhdGVTaWduYWwoc291cmNlKTtcblxuICByZXR1cm4gY29tcHV0ZWQoKCkgPT4ge1xuICAgIGNvbnN0IHN0YXRlID0gcygpO1xuXG4gICAgcmV0dXJuIGlzUXVlcnlTdGF0ZUxvYWRpbmcoc3RhdGUpID8gc3RhdGUgOiBudWxsO1xuICB9KTtcbn1cbiJdfQ==
@@ -1,8 +1,8 @@
1
1
  import * as i1$1 from '@ethlete/core';
2
2
  import { createDestroy, getCookie, setCookie, deleteCookie, nextFrame, DelayableDirective, RouterStateService, clone, equal, ET_PROPERTY_REMOVED } from '@ethlete/core';
3
- import { Observable, takeUntil, startWith, pairwise, tap, BehaviorSubject, Subject, fromEvent, timer, take, filter, takeWhile, switchMap, of, map, shareReplay, ReplaySubject, interval, skip, combineLatest, withLatestFrom, debounceTime, merge } from 'rxjs';
3
+ import { Observable, takeUntil, startWith, pairwise, tap, switchMap, of, BehaviorSubject, Subject, fromEvent, timer, take, filter, takeWhile, map, shareReplay, ReplaySubject, interval, skip, combineLatest, withLatestFrom, debounceTime, merge } from 'rxjs';
4
4
  import * as i0 from '@angular/core';
5
- import { assertInInjectionContext, inject, Injector, signal, isDevMode, Pipe, InjectionToken, ChangeDetectorRef, computed, effect, Component, ChangeDetectionStrategy, ViewEncapsulation, TemplateRef, ViewContainerRef, ErrorHandler, Directive, Input, ElementRef, NgZone } from '@angular/core';
5
+ import { assertInInjectionContext, inject, Injector, computed, signal, isDevMode, Pipe, InjectionToken, ChangeDetectorRef, effect, Component, ChangeDetectionStrategy, ViewEncapsulation, TemplateRef, ViewContainerRef, ErrorHandler, Directive, Input, ElementRef, NgZone } from '@angular/core';
6
6
  import { toSignal, toObservable, takeUntilDestroyed } from '@angular/core/rxjs-interop';
7
7
  import { NgIf, NgFor, AsyncPipe, JsonPipe, NgClass } from '@angular/common';
8
8
  import * as i1 from '@angular/forms';
@@ -550,11 +550,43 @@ function toQuerySignal(source, options) {
550
550
  addQueryContainerHandling(source, () => s(), options);
551
551
  return s;
552
552
  }
553
+ function queryComputed(computation, options) {
554
+ const c = computed(computation, options);
555
+ const obs = toObservable(c, options);
556
+ addQueryContainerHandling(obs, () => c(), options);
557
+ return c;
558
+ }
553
559
  function toQuerySubject(source, options) {
554
560
  const obs = toObservable(source, options);
555
561
  addQueryContainerHandling(obs, () => source(), options);
556
562
  return obs;
557
563
  }
564
+ function queryStateSignal(source) {
565
+ return toSignal(toObservable(source).pipe(switchMap((q) => extractQuery(q)?.state$ ?? of(null))), {
566
+ initialValue: null,
567
+ });
568
+ }
569
+ function queryStateResponseSignal(source) {
570
+ const s = queryStateSignal(source);
571
+ return computed(() => {
572
+ const state = s();
573
+ return isQueryStateSuccess(state) ? state.response : null;
574
+ });
575
+ }
576
+ function queryStateErrorSignal(source) {
577
+ const s = queryStateSignal(source);
578
+ return computed(() => {
579
+ const state = s();
580
+ return isQueryStateFailure(state) ? state.error : null;
581
+ });
582
+ }
583
+ function queryStateLoadingSignal(source) {
584
+ const s = queryStateSignal(source);
585
+ return computed(() => {
586
+ const state = s();
587
+ return isQueryStateLoading(state) ? state : null;
588
+ });
589
+ }
558
590
 
559
591
  const deepFreeze = (object) => {
560
592
  // check if object is actually an object or frozen
@@ -2959,5 +2991,5 @@ class QueryForm {
2959
2991
  * Generated bundle index. Do not edit.
2960
2992
  */
2961
2993
 
2962
- export { BasicAuthProvider, BearerAuthProvider, CustomHeaderAuthProvider, EntityStore, INFINITY_QUERY_TOKEN, InfinityQuery, InfinityQueryDirective, InfinityQueryTriggerDirective, QUERY_CLIENT_DEVTOOLS_TOKEN, Query, QueryClient, QueryCreator, QueryDevtoolsComponent, QueryDirective, QueryError, QueryField, QueryForm, QueryShortNamePipe, QueryStore, addQueryContainerHandling, buildErrorMessage, buildGqlCacheKey, buildQueryString, buildRoute, buildTimestampFromSeconds, castQueryCreatorTypes, computeQueryAuthHeader, computeQueryBody, computeQueryHeaders, computeQueryMethod, computeQueryQueryParams, createInfinityQueryConfig, createQueryCollection, createQueryCollectionSignal, createQueryCollectionSubject, decryptBearer, deepFreeze, def, detectContentTypeHeader, extractExpiresInSeconds, extractQuery, filterFailure, filterNull, filterQueryStates, filterSuccess, forEachHeader, getDefaultHeaders, getResponseUrl, gql, hasHeader, ignoreAutoRefresh, insertFrom, invalidBaseRouteError, invalidBodyError, invalidRouteError, isAutoRefresh, isBasicAuthProvider, isBearerAuthProvider, isClassValidatorError, isCustomHeaderAuthProvider, isEmptyString, isGqlQueryConfig, isNaN$1 as isNaN, isQuery, isQueryCollection, isQueryStateCancelled, isQueryStateFailure, isQueryStateLoading, isQueryStatePrepared, isQueryStateSuccess, isRequestError, isSymfonyError, isSymfonyFormViolationListError, isSymfonyPagerfantaOutOfRangeError, mapToPaginated, mergeHeaders, paginatedEntityValueUpdater, parseAllXhrResponseHeaders, pathParamsMissingInRouteFunctionError, provideQueryClientForDevtools, queryStateAlreadyHasKeyError, queryStateCannotTransformError, queryStateDoesNotContainKeyError, removeFrom, request, resetPageOnError, serializeBody, shouldCacheQuery, shouldRetryRequest, skipPaginationPageParamCalculator, switchQueryCollectionState, switchQueryState, takeUntilResponse, toQuerySignal, toQuerySubject, transformGql, transformMethod, transformToBoolean, transformToBooleanArray, transformToDate, transformToDateArray, transformToNumber, transformToNumberArray, transformToSort, transformToSortQueryParam, transformToString, transformToStringArray };
2994
+ export { BasicAuthProvider, BearerAuthProvider, CustomHeaderAuthProvider, EntityStore, INFINITY_QUERY_TOKEN, InfinityQuery, InfinityQueryDirective, InfinityQueryTriggerDirective, QUERY_CLIENT_DEVTOOLS_TOKEN, Query, QueryClient, QueryCreator, QueryDevtoolsComponent, QueryDirective, QueryError, QueryField, QueryForm, QueryShortNamePipe, QueryStore, addQueryContainerHandling, buildErrorMessage, buildGqlCacheKey, buildQueryString, buildRoute, buildTimestampFromSeconds, castQueryCreatorTypes, computeQueryAuthHeader, computeQueryBody, computeQueryHeaders, computeQueryMethod, computeQueryQueryParams, createInfinityQueryConfig, createQueryCollection, createQueryCollectionSignal, createQueryCollectionSubject, decryptBearer, deepFreeze, def, detectContentTypeHeader, extractExpiresInSeconds, extractQuery, filterFailure, filterNull, filterQueryStates, filterSuccess, forEachHeader, getDefaultHeaders, getResponseUrl, gql, hasHeader, ignoreAutoRefresh, insertFrom, invalidBaseRouteError, invalidBodyError, invalidRouteError, isAutoRefresh, isBasicAuthProvider, isBearerAuthProvider, isClassValidatorError, isCustomHeaderAuthProvider, isEmptyString, isGqlQueryConfig, isNaN$1 as isNaN, isQuery, isQueryCollection, isQueryStateCancelled, isQueryStateFailure, isQueryStateLoading, isQueryStatePrepared, isQueryStateSuccess, isRequestError, isSymfonyError, isSymfonyFormViolationListError, isSymfonyPagerfantaOutOfRangeError, mapToPaginated, mergeHeaders, paginatedEntityValueUpdater, parseAllXhrResponseHeaders, pathParamsMissingInRouteFunctionError, provideQueryClientForDevtools, queryComputed, queryStateAlreadyHasKeyError, queryStateCannotTransformError, queryStateDoesNotContainKeyError, queryStateErrorSignal, queryStateLoadingSignal, queryStateResponseSignal, queryStateSignal, removeFrom, request, resetPageOnError, serializeBody, shouldCacheQuery, shouldRetryRequest, skipPaginationPageParamCalculator, switchQueryCollectionState, switchQueryState, takeUntilResponse, toQuerySignal, toQuerySubject, transformGql, transformMethod, transformToBoolean, transformToBooleanArray, transformToDate, transformToDateArray, transformToNumber, transformToNumberArray, transformToSort, transformToSortQueryParam, transformToString, transformToStringArray };
2963
2995
  //# sourceMappingURL=ethlete-query.mjs.map