@ethlete/query 5.4.0 → 5.5.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/esm2022/lib/devtools/components/query-devtools/query-devtools.component.mjs +3 -3
- package/esm2022/lib/devtools/pipes/query-short-name.pipe.mjs +3 -3
- package/esm2022/lib/directives/infinity-query-trigger.directive.mjs +3 -3
- package/esm2022/lib/directives/infinity-query.directive.mjs +3 -3
- package/esm2022/lib/directives/query.directive.mjs +3 -3
- package/esm2022/lib/query/query.types.mjs +1 -1
- package/esm2022/lib/query-creator/query-creator.types.mjs +1 -1
- package/esm2022/lib/query-form/query-form.mjs +12 -6
- package/esm2022/lib/utils/data.utils.mjs +16 -9
- package/fesm2022/ethlete-query.mjs +41 -28
- package/fesm2022/ethlete-query.mjs.map +1 -1
- package/lib/query-form/query-form.d.ts +9 -1
- package/package.json +5 -5
|
@@ -23,20 +23,27 @@ export const addQueryContainerHandling = (obs, valueFn, config) => {
|
|
|
23
23
|
q?.stopPolling();
|
|
24
24
|
}
|
|
25
25
|
};
|
|
26
|
-
if (isQuery(prevQuery) && isQuery(currQuery)) {
|
|
26
|
+
if ((isQuery(prevQuery) || prevQuery === null) && (isQuery(currQuery) || currQuery === null)) {
|
|
27
27
|
prevQuery?._removeDependent(componentId);
|
|
28
28
|
currQuery?._addDependent(componentId);
|
|
29
29
|
cleanQuery(prevQuery);
|
|
30
30
|
}
|
|
31
|
-
else if (Array.isArray(prevQuery)
|
|
32
|
-
|
|
33
|
-
|
|
31
|
+
else if ((Array.isArray(prevQuery) || prevQuery === null) &&
|
|
32
|
+
(Array.isArray(currQuery) || currQuery === null)) {
|
|
33
|
+
if (prevQuery) {
|
|
34
|
+
for (let i = 0; i < prevQuery.length; i++) {
|
|
35
|
+
prevQuery[i]?._removeDependent(componentId);
|
|
36
|
+
}
|
|
34
37
|
}
|
|
35
|
-
|
|
36
|
-
currQuery
|
|
38
|
+
if (currQuery) {
|
|
39
|
+
for (let i = 0; i < currQuery.length; i++) {
|
|
40
|
+
currQuery[i]?._addDependent(componentId);
|
|
41
|
+
}
|
|
37
42
|
}
|
|
38
|
-
|
|
39
|
-
|
|
43
|
+
if (prevQuery) {
|
|
44
|
+
for (let i = 0; i < prevQuery.length; i++) {
|
|
45
|
+
cleanQuery(prevQuery[i]);
|
|
46
|
+
}
|
|
40
47
|
}
|
|
41
48
|
}
|
|
42
49
|
else if ((isQuery(prevQuery) && Array.isArray(currQuery)) ||
|
|
@@ -118,4 +125,4 @@ export function queryStateLoadingSignal(source) {
|
|
|
118
125
|
return isQueryStateLoading(state) ? state : null;
|
|
119
126
|
});
|
|
120
127
|
}
|
|
121
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0YS51dGlscy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvcXVlcnkvc3JjL2xpYi91dGlscy9kYXRhLnV0aWxzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBeUIsUUFBUSxFQUFVLHdCQUF3QixFQUFFLFFBQVEsRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDcEgsT0FBTyxFQUF3QyxZQUFZLEVBQUUsUUFBUSxFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDMUcsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUM5QyxPQUFPLEVBQTRCLEVBQUUsRUFBRSxRQUFRLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsR0FBRyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ3BHLE9BQU8sRUFNTCxZQUFZLEVBQ1osaUJBQWlCLEVBQ2pCLE9BQU8sRUFDUCxtQkFBbUIsRUFDbkIsbUJBQW1CLEVBQ25CLG1CQUFtQixHQUNwQixNQUFNLFVBQVUsQ0FBQztBQStCbEIsTUFBTSxDQUFDLE1BQU0seUJBQXlCLEdBQUcsQ0FDdkMsR0FBNkMsRUFDN0MsT0FBdUQsRUFDdkQsTUFBNkIsRUFDN0IsRUFBRTtJQUNGLHdCQUF3QixDQUFDLHlCQUF5QixDQUFDLENBQUM7SUFFcEQsTUFBTSxFQUFFLGFBQWEsRUFBRSxjQUFjLEVBQUUsbUJBQW1CLEVBQUUsR0FBRyxNQUFNLElBQUksRUFBRSxDQUFDO0lBRTVFLE1BQU0sUUFBUSxHQUFHLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQztJQUNsQyxNQUFNLFFBQVEsR0FBRyxhQUFhLEVBQUUsQ0FBQztJQUVqQyw4REFBOEQ7SUFDOUQsTUFBTSxLQUFLLEdBQUksUUFBZ0IsQ0FBQyxNQUFNLENBQUM7SUFDdkMsTUFBTSxXQUFXLEdBQUcsS0FBSyxFQUFFLEtBQUssSUFBSSxDQUFDLENBQUMsQ0FBQztJQUV2QyxHQUFH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RUFDVCxPQUEyQjtJQUUzQixNQUFNLENBQUMsR0FBRyxnQkFBZ0IsQ0FBQyxNQUFNLEVBQUUsT0FBTyxDQUFDLENBQUM7SUFFNUMsT0FBTyxRQUFRLENBQUMsR0FBRyxFQUFFO1FBQ25CLE1BQU0sS0FBSyxHQUFHLENBQUMsRUFBRSxDQUFDO1FBRWxCLE9BQU8sbUJBQW1CLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQztJQUM1RCxDQUFDLENBQUMsQ0FBQztBQUNMLENBQUM7QUFFRCxNQUFNLFVBQVUscUJBQXFCLENBQXlELE1BQVM7SUFDckcsTUFBTSxDQUFDLEdBQUcsZ0JBQWdCLENBQUMsTUFBTSxDQUFDLENBQUM7SUFFbkMsT0FBTyxRQUFRLENBQUMsR0FBRyxFQUFFO1FBQ25CLE1BQU0sS0FBSyxHQUFHLENBQUMsRUFBRSxDQUFDO1FBRWxCLE9BQU8sbUJBQW1CLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQztJQUN6RCxDQUFDLENBQUMsQ0FBQztBQUNMLENBQUM7QUFFRCxNQUFNLFVBQVUsdUJBQXVCLENBQXlELE1BQVM7SUFDdkcsTUFBTSxDQUFDLEdBQUcsZ0JBQWdCLENBQUMsTUFBTSxDQUFDLENBQUM7SUFFbkMsT0FBTyxRQUFRLENBQUMsR0FBRyxFQUFFO1FBQ25CLE1BQU0sS0FBSyxHQUFHLENBQUMsRUFBRSxDQUFDO1FBRWxCLE9BQU8sbUJBQW1CLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDO0lBQ25ELENBQUMsQ0FBQyxDQUFDO0FBQ0wsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENyZWF0ZUNvbXB1dGVkT3B0aW9ucywgSW5qZWN0b3IsIFNpZ25hbCwgYXNzZXJ0SW5JbmplY3Rpb25Db250ZXh0LCBjb21wdXRlZCwgaW5qZWN0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBUb09ic2VydmFibGVPcHRpb25zLCBUb1NpZ25hbE9wdGlvbnMsIHRvT2JzZXJ2YWJsZSwgdG9TaWduYWwgfSBmcm9tICdAYW5ndWxhci9jb3JlL3J4anMtaW50ZXJvcCc7XG5pbXBvcnQgeyBjcmVhdGVEZXN0cm95IH0gZnJvbSAnQGV0aGxldGUvY29yZSc7XG5pbXBvcnQgeyBPYnNlcnZhYmxlLCBTdWJzY3JpYmFibGUsIG9mLCBwYWlyd2lzZSwgc3RhcnRXaXRoLCBzd2l0Y2hNYXAsIHRha2VVbnRpbCwgdGFwIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQge1xuICBBbnlRdWVyeSxcbiAgQW55UXVlcnlDb2xsZWN0aW9uLFxuICBRdWVyeU9mLFxuICBRdWVyeVN0YXRlLFxuICBRdWVyeVN0YXRlVHlwZSxcbiAgZXh0cmFjdFF1ZXJ5LFxuICBmaWx0ZXJRdWVyeVN0YXRlcyxcbiAgaXNRdWVyeSxcbiAgaXNRdWVyeVN0YXRlRmFpbHVyZSxcbiAgaXNRdWVyeVN0YXRlTG9hZGluZyxcbiAgaXNRdWVyeVN0YXRlU3VjY2Vzcyxcbn0gZnJvbSAnLi4vcXVlcnknO1xuaW1wb3J0IHsgUXVlcnlEYXRhT2YgfSBmcm9tICcuLi9xdWVyeS1jcmVhdG9yJztcblxuZXhwb3J0IGludGVyZmFjZSBRdWVyeUNvbnRhaW5lckNvbmZpZyB7XG4gIC8qKlxuICAgKiBJZiBgdHJ1ZWAsIHRoZSBwcmV2aW91cyBxdWVyeSB3aWxsIGJlIGFib3J0ZWQgd2hlbiBhIG5ldyBxdWVyeSBpcyBwdXNoZWQgaW50byB0aGUgY29udGFpbmVyLlxuICAgKiBAZGVmYXVsdCB0cnVlIC8vIE9ubHkgaWYgdGhlIHJlcXVlc3QgY2FuIGJlIGNhY2hlZCAoR0VULCBPUFRJT05TLCBIRUFEIGFuZCBHUUxfUVVFUlkpLiBPdGhlcndpc2UgZmFsc2UuXG4gICAqL1xuICBhYm9ydFByZXZpb3VzPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogSWYgYHRydWVgLCB0aGUgcXVlcnkgd2lsbCBiZSBhYm9ydGVkIHdoZW4gdGhlIGNvbnRhaW5lciBpcyBkZXN0cm95ZWQuXG4gICAqIEBkZWZhdWx0IHRydWUgLy8gT25seSBpZiB0aGUgcmVxdWVzdCBjYW4gYmUgY2FjaGVkIChHRVQsIE9QVElPTlMsIEhFQUQgYW5kIEdRTF9RVUVSWSkuIE90aGVyd2lzZSBmYWxzZS5cbiAgICovXG4gIGFib3J0T25EZXN0cm95PzogYm9vbGVhbjtcblxuICAvKipcbiAgICogSWYgYHRydWVgLCB0aGUgcHJldmlvdXMgcG9sbGluZyB3aWxsIGJlIHN0b3BwZWQgd2hlbiBhIG5ldyBxdWVyeSBpcyBwdXNoZWQgaW50byB0aGUgY29udGFpbmVyLlxuICAgKiBAZGVmYXVsdCB0cnVlIC8vIE9ubHkgaWYgdGhlIHF1ZXJ5IGhhcyBubyBvdGhlciBkZXBlbmRlbnRzIGFuZCB0aGUgcmVxdWVzdCBjYW4gYmUgY2FjaGVkIChHRVQsIE9QVElPTlMsIEhFQUQgYW5kIEdRTF9RVUVSWSkuIE90aGVyd2lzZSBmYWxzZS5cbiAgICovXG4gIHN0b3BQcmV2aW91c1BvbGxpbmc/OiBib29sZWFuO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFF1ZXJ5RmlsdGVyQ29uZmlnIHtcbiAgLyoqXG4gICAqIElmIGB0cnVlYCwgdGhlIHJlc3BvbnNlIHdpbGwgYmUgY2FjaGVkIHVudGlsIHRoZSBuZXh0IHJlc3BvbnNlIGlzIHJlY2VpdmVkIG9yIHRoZSBxdWVyeSBmYWlscy5cbiAgICogQGRlZmF1bHQgZmFsc2VcbiAgICovXG4gIGNhY2hlUmVzcG9uc2U/OiBib29sZWFuO1xufVxuXG5leHBvcnQgY29uc3QgYWRkUXVlcnlDb250YWluZXJIYW5kbGluZyA9IChcbiAgb2JzOiBPYnNlcnZhYmxlPEFueVF1ZXJ5IHwgQW55UXVlcnlbXSB8IG51bGw+LFxuICB2YWx1ZUZuOiAoKSA9PiBBbnlRdWVyeSB8IEFueVF1ZXJ5W10gfCBudWxsIHwgdW5kZWZpbmVkLFxuICBjb25maWc/OiBRdWVyeUNvbnRhaW5lckNvbmZpZyxcbikgPT4ge1xuICBhc3NlcnRJbkluamVjdGlvbkNvbnRleHQoYWRkUXVlcnlDb250YWluZXJIYW5kbGluZyk7XG5cbiAgY29uc3QgeyBhYm9ydFByZXZpb3VzLCBhYm9ydE9uRGVzdHJveSwgc3RvcFByZXZpb3VzUG9sbGluZyB9ID0gY29uZmlnID8/IHt9O1xuXG4gIGNvbnN0IGluamVjdG9yID0gaW5qZWN0KEluamVjdG9yKTtcbiAgY29uc3QgZGVzdHJveSQgPSBjcmVhdGVEZXN0cm95KCk7XG5cbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnlcbiAgY29uc3QgdE5vZGUgPSAoaW5qZWN0b3IgYXMgYW55KS5fdE5vZGU7XG4gIGNvbnN0IGNvbXBvbmVudElkID0gdE5vZGU/LmluZGV4ID8/IC0xO1xuXG4gIG9ic1xuICAgIC5waXBlKFxuICAgICAgdGFrZVVudGlsKGRlc3Ryb3kkKSxcbiAgICAgIHN0YXJ0V2l0aChudWxsKSxcbiAgICAgIHBhaXJ3aXNlKCksXG4gICAgICB0YXAoKFtwcmV2UXVlcnksIGN1cnJRdWVyeV0pID0+IHtcbiAgICAgICAgY29uc3QgY2xlYW5RdWVyeSA9IChxOiBBbnlRdWVyeSB8IG51bGwgfCB1bmRlZmluZWQpID0+IHtcbiAgICAgICAgICBpZiAoIXE/Ll9oYXNEZXBlbmRlbnRzKCkgJiYgKChhYm9ydFByZXZpb3VzID09PSB1bmRlZmluZWQgJiYgcT8uY2FuQmVDYWNoZWQpIHx8IGFib3J0UHJldmlvdXMpKSB7XG4gICAgICAgICAgICBxPy5hYm9ydCgpO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIGlmIChcbiAgICAgICAgICAgICFxPy5faGFzRGVwZW5kZW50cygpICYmXG4gICAgICAgICAgICAoKHN0b3BQcmV2aW91c1BvbGxpbmcgPT09IHVuZGVmaW5lZCAmJiBxPy5jYW5CZUNhY2hlZCkgfHwgc3RvcFByZXZpb3VzUG9sbGluZykgJiZcbiAgICAgICAgICAgIHE/LmlzUG9sbGluZ1xuICAgICAgICAgICkge1xuICAgICAgICAgICAgcT8uc3RvcFBvbGxpbmcoKTtcbiAgICAgICAgICB9XG4gICAgICAgIH07XG5cbiAgICAgICAgaWYgKGlzUXVlcnkocHJldlF1ZXJ5KSAmJiBpc1F1ZXJ5KGN1cnJRdWVyeSkpIHtcbiAgICAgICAgICBwcmV2UXVlcnk/Ll9yZW1vdmVEZXBlbmRlbnQoY29tcG9uZW50SWQpO1xuICAgICAgICAgIGN1cnJRdWVyeT8uX2FkZERlcGVuZGVudChjb21wb25lbnRJZCk7XG5cbiAgICAgICAgICBjbGVhblF1ZXJ5KHByZXZRdWVyeSk7XG4gICAgICAgIH0gZWxzZSBpZiAoQXJyYXkuaXNBcnJheShwcmV2UXVlcnkpICYmIEFycmF5LmlzQXJyYXkoY3VyclF1ZXJ5KSkge1xuICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgcHJldlF1ZXJ5Lmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICBwcmV2UXVlcnlbaV0/Ll9yZW1vdmVEZXBlbmRlbnQoY29tcG9uZW50SWQpO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgY3VyclF1ZXJ5Lmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICBjdXJyUXVlcnlbaV0/Ll9hZGREZXBlbmRlbnQoY29tcG9uZW50SWQpO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgcHJldlF1ZXJ5Lmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICBjbGVhblF1ZXJ5KHByZXZRdWVyeVtpXSk7XG4gICAgICAgICAgfVxuICAgICAgICB9IGVsc2UgaWYgKFxuICAgICAgICAgIChpc1F1ZXJ5KHByZXZRdWVyeSkgJiYgQXJyYXkuaXNBcnJheShjdXJyUXVlcnkpKSB8fFxuICAgICAgICAgIChBcnJheS5pc0FycmF5KHByZXZRdWVyeSkgJiYgaXNRdWVyeShjdXJyUXVlcnkpKVxuICAgICAgICApIHtcbiAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ0Nhbm5vdCBtaXggcXVlcmllcyBhbmQgYXJyYXlzIG9mIHF1ZXJpZXMgaW4gdGhlIHNhbWUgcXVlcnkgY29udGFpbmVyLicpO1xuICAgICAgICB9XG4gICAgICB9KSxcbiAgICApXG4gICAgLnN1YnNjcmliZSgpO1xuXG4gIGRlc3Ryb3kkLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgY29uc3QgcXVlcnkgPSB2YWx1ZUZuKCk7XG5cbiAgICBjb25zdCBoYW5kbGVRdWVyeSA9IChxOiBBbnlRdWVyeSB8IG51bGwgfCB1bmRlZmluZWQpID0+IHtcbiAgICAgIHE/Ll9yZW1vdmVEZXBlbmRlbnQoY29tcG9uZW50SWQpO1xuXG4gICAgICBpZiAoIXE/Ll9oYXNEZXBlbmRlbnRzKCkgJiYgKChxPy5jYW5CZUNhY2hlZCAmJiBhYm9ydE9uRGVzdHJveSA9PT0gdW5kZWZpbmVkKSB8fCBhYm9ydE9uRGVzdHJveSkpIHtcbiAgICAgICAgcT8uYWJvcnQoKTtcbiAgICAgIH1cbiAgICB9O1xuXG4gICAgaWYgKGlzUXVlcnkocXVlcnkpKSB7XG4gICAgICBoYW5kbGVRdWVyeShxdWVyeSk7XG4gICAgfSBlbHNlIGlmIChBcnJheS5pc0FycmF5KHF1ZXJ5KSkge1xuICAgICAgZm9yIChjb25zdCBxIG9mIHF1ZXJ5KSB7XG4gICAgICAgIGhhbmRsZVF1ZXJ5KHEpO1xuICAgICAgfVxuICAgIH1cbiAgfSk7XG59O1xuXG5leHBvcnQgZnVuY3Rpb24gdG9RdWVyeVNpZ25hbDxUIGV4dGVuZHMgQW55UXVlcnkgfCBudWxsPihcbiAgc291cmNlOiBPYnNlcnZhYmxlPFQ+IHwgU3Vic2NyaWJhYmxlPFQ+LFxuKTogU2lnbmFsPFQgfCB1bmRlZmluZWQ+O1xuZXhwb3J0IGZ1bmN0aW9uIHRvUXVlcnlTaWduYWw8VCBleHRlbmRzIEFueVF1ZXJ5IHwgbnVsbD4oXG4gIHNvdXJjZTogT2JzZXJ2YWJsZTxUPiB8IFN1YnNjcmliYWJsZTxUPixcbiAgb3B0aW9uczogVG9TaWduYWxPcHRpb25zICYgeyBpbml0aWFsVmFsdWU/OiB1bmRlZmluZWQ7IHJlcXVpcmVTeW5jPzogZmFsc2UgfSAmIFF1ZXJ5Q29udGFpbmVyQ29uZmlnLFxuKTogU2lnbmFsPFQgfCB1bmRlZmluZWQ+O1xuZXhwb3J0IGZ1bmN0aW9uIHRvUXVlcnlTaWduYWw8VCBleHRlbmRzIEFueVF1ZXJ5IHwgbnVsbD4oXG4gIHNvdXJjZTogT2JzZXJ2YWJsZTxUPiB8IFN1YnNjcmliYWJsZTxUPixcbiAgb3B0aW9uczogVG9TaWduYWxPcHRpb25zICYgeyBpbml0aWFsVmFsdWU/OiBudWxsOyByZXF1aXJlU3luYz86IGZhbHNlIH0gJiBRdWVyeUNvbnRhaW5lckNvbmZpZyxcbik6IFNpZ25hbDxUIHwgbnVsbD47XG5leHBvcnQgZnVuY3Rpb24gdG9RdWVyeVNpZ25hbDxUIGV4dGVuZHMgQW55UXVlcnkgfCBudWxsPihcbiAgc291cmNlOiBPYnNlcnZhYmxlPFQ+IHwgU3Vic2NyaWJhYmxlPFQ+LFxuICBvcHRpb25zOiBUb1NpZ25hbE9wdGlvbnMgJiB7IGluaXRpYWxWYWx1ZT86IHVuZGVmaW5lZDsgcmVxdWlyZVN5bmM6IHRydWUgfSAmIFF1ZXJ5Q29udGFpbmVyQ29uZmlnLFxuKTogU2lnbmFsPFQ+O1xuZXhwb3J0IGZ1bmN0aW9uIHRvUXVlcnlTaWduYWw8VCBleHRlbmRzIEFueVF1ZXJ5IHwgbnVsbCwgY29uc3QgVSBleHRlbmRzIFQ+KFxuICBzb3VyY2U6IE9ic2VydmFibGU8VD4gfCBTdWJzY3JpYmFibGU8VD4sXG4gIG9wdGlvbnM6IFRvU2lnbmFsT3B0aW9ucyAmIHsgaW5pdGlhbFZhbHVlOiBVOyByZXF1aXJlU3luYz86IGZhbHNlIH0gJiBRdWVyeUNvbnRhaW5lckNvbmZpZyxcbik6IFNpZ25hbDxUIHwgVT47XG5cbmV4cG9ydCBmdW5jdGlvbiB0b1F1ZXJ5U2lnbmFsPFQgZXh0ZW5kcyBBbnlRdWVyeSB8IG51bGwsIFUgPSB1bmRlZmluZWQ+KFxuICBzb3VyY2U6IE9ic2VydmFibGU8VD4gfCBTdWJzY3JpYmFibGU8VD4sXG4gIG9wdGlvbnM/OiBUb1NpZ25hbE9wdGlvbnMgJiB7IGluaXRpYWxWYWx1ZT86IFUgfSAmIFF1ZXJ5Q29udGFpbmVyQ29uZmlnLFxuKTogU2lnbmFsPFQgfCBVPiB7XG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55XG4gIGNvbnN0IHMgPSB0b1NpZ25hbChzb3VyY2UsIG9wdGlvbnMgYXMgYW55KTtcblxuICBhZGRRdWVyeUNvbnRhaW5lckhhbmRsaW5nKHNvdXJjZSBhcyBPYnNlcnZhYmxlPFQ+LCAoKSA9PiBzKCkgYXMgVCwgb3B0aW9ucyk7XG5cbiAgcmV0dXJuIHMgYXMgU2lnbmFsPFQgfCBVPjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHF1ZXJ5Q29tcHV0ZWQ8VCBleHRlbmRzIEFueVF1ZXJ5IHwgbnVsbD4oXG4gIGNvbXB1dGF0aW9uOiAoKSA9PiBULFxuICBvcHRpb25zPzogQ3JlYXRlQ29tcHV0ZWRPcHRpb25zPFQ+ICYgUXVlcnlDb250YWluZXJDb25maWcgJiBUb09ic2VydmFibGVPcHRpb25zLFxuKTogU2lnbmFsPFQ+IHtcbiAgY29uc3QgYyA9IGNvbXB1dGVkKGNvbXB1dGF0aW9uLCBvcHRpb25zKTtcbiAgY29uc3Qgb2JzID0gdG9PYnNlcnZhYmxlKGMsIG9wdGlvbnMpO1xuXG4gIGFkZFF1ZXJ5Q29udGFpbmVySGFuZGxpbmcob2JzLCAoKSA9PiBjKCksIG9wdGlvbnMpO1xuXG4gIHJldHVybiBjO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcXVlcnlBcnJheUNvbXB1dGVkPFQgZXh0ZW5kcyBBbnlRdWVyeVtdIHwgbnVsbD4oXG4gIGNvbXB1dGF0aW9uOiAoKSA9PiBULFxuICBvcHRpb25zPzogQ3JlYXRlQ29tcHV0ZWRPcHRpb25zPFQ+ICYgUXVlcnlDb250YWluZXJDb25maWcgJiBUb09ic2VydmFibGVPcHRpb25zLFxuKTogU2lnbmFsPFQ+IHtcbiAgY29uc3QgYyA9IGNvbXB1dGVkKGNvbXB1dGF0aW9uLCBvcHRpb25zKTtcbiAgY29uc3Qgb2JzID0gdG9PYnNlcnZhYmxlKGMsIG9wdGlvbnMpO1xuXG4gIGFkZFF1ZXJ5Q29udGFpbmVySGFuZGxpbmcob2JzLCAoKSA9PiBjKCksIG9wdGlvbnMpO1xuXG4gIHJldHVybiBjO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gdG9RdWVyeVN1YmplY3Q8VCBleHRlbmRzIEFueVF1ZXJ5IHwgbnVsbD4oXG4gIHNvdXJjZTogU2lnbmFsPFQ+LFxuICBvcHRpb25zPzogVG9PYnNlcnZhYmxlT3B0aW9ucyAmIFF1ZXJ5Q29udGFpbmVyQ29uZmlnLFxuKTogT2JzZXJ2YWJsZTxUPiB7XG4gIGNvbnN0IG9icyA9IHRvT2JzZXJ2YWJsZShzb3VyY2UsIG9wdGlvbnMpO1xuXG4gIGFkZFF1ZXJ5Q29udGFpbmVySGFuZGxpbmcob2JzLCAoKSA9PiBzb3VyY2UoKSwgb3B0aW9ucyk7XG5cbiAgcmV0dXJuIG9icztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHF1ZXJ5U3RhdGVTaWduYWw8VCBleHRlbmRzIFNpZ25hbDxBbnlRdWVyeSB8IEFueVF1ZXJ5Q29sbGVjdGlvbiB8IG51bGw+PihcbiAgc291cmNlOiBULFxuICBvcHRpb25zPzogUXVlcnlGaWx0ZXJDb25maWcsXG4pIHtcbiAgY29uc3QgeyBjYWNoZVJlc3BvbnNlIH0gPSBvcHRpb25zID8/IHt9O1xuXG4gIHJldHVybiB0b1NpZ25hbChcbiAgICB0b09ic2VydmFibGUoc291cmNlKS5waXBlKFxuICAgICAgc3dpdGNoTWFwKChxKSA9PiBleHRyYWN0UXVlcnkocSk/LnN0YXRlJCA/PyBvZihudWxsKSksXG4gICAgICBzd2l0Y2hNYXAoKHN0YXRlKSA9PiB7XG4gICAgICAgIGlmIChjYWNoZVJlc3BvbnNlKSB7XG4gICAgICAgICAgcmV0dXJuIG9mKHN0YXRlKS5waXBlKFxuICAgICAgICAgICAgZmlsdGVyUXVlcnlTdGF0ZXMoW1F1ZXJ5U3RhdGVUeXBlLlN1Y2Nlc3MsIFF1ZXJ5U3RhdGVUeXBlLkZhaWx1cmUsIFF1ZXJ5U3RhdGVUeXBlLkNhbmNlbGxlZF0pLFxuICAgICAgICAgICk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gb2Yoc3RhdGUpO1xuICAgICAgfSksXG4gICAgKSxcbiAgICB7XG4gICAgICBpbml0aWFsVmFsdWU6IG51bGwsXG4gICAgfSxcbiAgKSBhcyBTaWduYWw8UXVlcnlTdGF0ZTxRdWVyeURhdGFPZjxRdWVyeU9mPFJldHVyblR5cGU8VD4+Pj4gfCBudWxsPjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHF1ZXJ5U3RhdGVSZXNwb25zZVNpZ25hbDxUIGV4dGVuZHMgU2lnbmFsPEFueVF1ZXJ5IHwgQW55UXVlcnlDb2xsZWN0aW9uIHwgbnVsbD4+KFxuICBzb3VyY2U6IFQsXG4gIG9wdGlvbnM/OiBRdWVyeUZpbHRlckNvbmZpZyxcbikge1xuICBjb25zdCBzID0gcXVlcnlTdGF0ZVNpZ25hbChzb3VyY2UsIG9wdGlvbnMpO1xuXG4gIHJldHVybiBjb21wdXRlZCgoKSA9PiB7XG4gICAgY29uc3Qgc3RhdGUgPSBzKCk7XG5cbiAgICByZXR1cm4gaXNRdWVyeVN0YXRlU3VjY2VzcyhzdGF0ZSkgPyBzdGF0ZS5yZXNwb25zZSA6IG51bGw7XG4gIH0pO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcXVlcnlTdGF0ZUVycm9yU2lnbmFsPFQgZXh0ZW5kcyBTaWduYWw8QW55UXVlcnkgfCBBbnlRdWVyeUNvbGxlY3Rpb24gfCBudWxsPj4oc291cmNlOiBUKSB7XG4gIGNvbnN0IHMgPSBxdWVyeVN0YXRlU2lnbmFsKHNvdXJjZSk7XG5cbiAgcmV0dXJuIGNvbXB1dGVkKCgpID0+IHtcbiAgICBjb25zdCBzdGF0ZSA9IHMoKTtcblxuICAgIHJldHVybiBpc1F1ZXJ5U3RhdGVGYWlsdXJlKHN0YXRlKSA/IHN0YXRlLmVycm9yIDogbnVsbDtcbiAgfSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBxdWVyeVN0YXRlTG9hZGluZ1NpZ25hbDxUIGV4dGVuZHMgU2lnbmFsPEFueVF1ZXJ5IHwgQW55UXVlcnlDb2xsZWN0aW9uIHwgbnVsbD4+KHNvdXJjZTogVCkge1xuICBjb25zdCBzID0gcXVlcnlTdGF0ZVNpZ25hbChzb3VyY2UpO1xuXG4gIHJldHVybiBjb21wdXRlZCgoKSA9PiB7XG4gICAgY29uc3Qgc3RhdGUgPSBzKCk7XG5cbiAgICByZXR1cm4gaXNRdWVyeVN0YXRlTG9hZGluZyhzdGF0ZSkgPyBzdGF0ZSA6IG51bGw7XG4gIH0pO1xufVxuIl19
|
|
128
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0YS51dGlscy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvcXVlcnkvc3JjL2xpYi91dGlscy9kYXRhLnV0aWxzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBeUIsUUFBUSxFQUFVLHdCQUF3QixFQUFFLFFBQVEsRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDcEgsT0FBTyxFQUF3QyxZQUFZLEVBQUUsUUFBUSxFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDMUcsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUM5QyxPQUFPLEVBQTRCLEVBQUUsRUFBRSxRQUFRLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsR0FBRyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ3BHLE9BQU8sRUFNTCxZQUFZLEVBQ1osaUJBQWlCLEVBQ2pCLE9BQU8sRUFDUCxtQkFBbUIsRUFDbkIsbUJBQW1CLEVBQ25CLG1CQUFtQixHQUNwQixNQUFNLFVBQVUsQ0FBQztBQStCbEIsTUFBTSxDQUFDLE1BQU0seUJBQXlCLEdBQUcsQ0FDdkMsR0FBNkMsRUFDN0MsT0FBdUQsRUFDdkQsTUFBNkIsRUFDN0IsRUFBRTtJQUNGLHdCQUF3QixDQUFDLHlCQUF5QixDQUFDLENBQUM7SUFFcEQsTUFBTSxFQUFFLGFBQWEsRUFBRSxjQUFjLEVBQUUsbUJBQW1CLEVBQUUsR0FBRyxNQUFNLElBQUksRUFBRSxDQUFDO0lBRTVFLE1BQU0sUUFBUSxHQUFHLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQztJQUNsQyxNQUFNLFFBQVEsR0FBRyxhQUFhLEVBQUUsQ0FBQztJQUVqQyw4REFBOEQ7SUFDOUQsTUFBTSxLQUFLLEdBQUksUUFBZ0IsQ0FBQyxNQUFNLENBQUM7SUFDdkMsTUFBTSxXQUFXLEdBQUcsS0FBSyxFQUFFLEtBQUssSUFBSSxDQUFDLENBQUMsQ0FBQztJQUV2QyxHQUFH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QztRQUVsQixPQUFPLG1CQUFtQixDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQztJQUNuRCxDQUFDLENBQUMsQ0FBQztBQUNMLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDcmVhdGVDb21wdXRlZE9wdGlvbnMsIEluamVjdG9yLCBTaWduYWwsIGFzc2VydEluSW5qZWN0aW9uQ29udGV4dCwgY29tcHV0ZWQsIGluamVjdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgVG9PYnNlcnZhYmxlT3B0aW9ucywgVG9TaWduYWxPcHRpb25zLCB0b09ic2VydmFibGUsIHRvU2lnbmFsIH0gZnJvbSAnQGFuZ3VsYXIvY29yZS9yeGpzLWludGVyb3AnO1xuaW1wb3J0IHsgY3JlYXRlRGVzdHJveSB9IGZyb20gJ0BldGhsZXRlL2NvcmUnO1xuaW1wb3J0IHsgT2JzZXJ2YWJsZSwgU3Vic2NyaWJhYmxlLCBvZiwgcGFpcndpc2UsIHN0YXJ0V2l0aCwgc3dpdGNoTWFwLCB0YWtlVW50aWwsIHRhcCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHtcbiAgQW55UXVlcnksXG4gIEFueVF1ZXJ5Q29sbGVjdGlvbixcbiAgUXVlcnlPZixcbiAgUXVlcnlTdGF0ZSxcbiAgUXVlcnlTdGF0ZVR5cGUsXG4gIGV4dHJhY3RRdWVyeSxcbiAgZmlsdGVyUXVlcnlTdGF0ZXMsXG4gIGlzUXVlcnksXG4gIGlzUXVlcnlTdGF0ZUZhaWx1cmUsXG4gIGlzUXVlcnlTdGF0ZUxvYWRpbmcsXG4gIGlzUXVlcnlTdGF0ZVN1Y2Nlc3MsXG59IGZyb20gJy4uL3F1ZXJ5JztcbmltcG9ydCB7IFF1ZXJ5RGF0YU9mIH0gZnJvbSAnLi4vcXVlcnktY3JlYXRvcic7XG5cbmV4cG9ydCBpbnRlcmZhY2UgUXVlcnlDb250YWluZXJDb25maWcge1xuICAvKipcbiAgICogSWYgYHRydWVgLCB0aGUgcHJldmlvdXMgcXVlcnkgd2lsbCBiZSBhYm9ydGVkIHdoZW4gYSBuZXcgcXVlcnkgaXMgcHVzaGVkIGludG8gdGhlIGNvbnRhaW5lci5cbiAgICogQGRlZmF1bHQgdHJ1ZSAvLyBPbmx5IGlmIHRoZSByZXF1ZXN0IGNhbiBiZSBjYWNoZWQgKEdFVCwgT1BUSU9OUywgSEVBRCBhbmQgR1FMX1FVRVJZKS4gT3RoZXJ3aXNlIGZhbHNlLlxuICAgKi9cbiAgYWJvcnRQcmV2aW91cz86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIElmIGB0cnVlYCwgdGhlIHF1ZXJ5IHdpbGwgYmUgYWJvcnRlZCB3aGVuIHRoZSBjb250YWluZXIgaXMgZGVzdHJveWVkLlxuICAgKiBAZGVmYXVsdCB0cnVlIC8vIE9ubHkgaWYgdGhlIHJlcXVlc3QgY2FuIGJlIGNhY2hlZCAoR0VULCBPUFRJT05TLCBIRUFEIGFuZCBHUUxfUVVFUlkpLiBPdGhlcndpc2UgZmFsc2UuXG4gICAqL1xuICBhYm9ydE9uRGVzdHJveT86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIElmIGB0cnVlYCwgdGhlIHByZXZpb3VzIHBvbGxpbmcgd2lsbCBiZSBzdG9wcGVkIHdoZW4gYSBuZXcgcXVlcnkgaXMgcHVzaGVkIGludG8gdGhlIGNvbnRhaW5lci5cbiAgICogQGRlZmF1bHQgdHJ1ZSAvLyBPbmx5IGlmIHRoZSBxdWVyeSBoYXMgbm8gb3RoZXIgZGVwZW5kZW50cyBhbmQgdGhlIHJlcXVlc3QgY2FuIGJlIGNhY2hlZCAoR0VULCBPUFRJT05TLCBIRUFEIGFuZCBHUUxfUVVFUlkpLiBPdGhlcndpc2UgZmFsc2UuXG4gICAqL1xuICBzdG9wUHJldmlvdXNQb2xsaW5nPzogYm9vbGVhbjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBRdWVyeUZpbHRlckNvbmZpZyB7XG4gIC8qKlxuICAgKiBJZiBgdHJ1ZWAsIHRoZSByZXNwb25zZSB3aWxsIGJlIGNhY2hlZCB1bnRpbCB0aGUgbmV4dCByZXNwb25zZSBpcyByZWNlaXZlZCBvciB0aGUgcXVlcnkgZmFpbHMuXG4gICAqIEBkZWZhdWx0IGZhbHNlXG4gICAqL1xuICBjYWNoZVJlc3BvbnNlPzogYm9vbGVhbjtcbn1cblxuZXhwb3J0IGNvbnN0IGFkZFF1ZXJ5Q29udGFpbmVySGFuZGxpbmcgPSAoXG4gIG9iczogT2JzZXJ2YWJsZTxBbnlRdWVyeSB8IEFueVF1ZXJ5W10gfCBudWxsPixcbiAgdmFsdWVGbjogKCkgPT4gQW55UXVlcnkgfCBBbnlRdWVyeVtdIHwgbnVsbCB8IHVuZGVmaW5lZCxcbiAgY29uZmlnPzogUXVlcnlDb250YWluZXJDb25maWcsXG4pID0+IHtcbiAgYXNzZXJ0SW5JbmplY3Rpb25Db250ZXh0KGFkZFF1ZXJ5Q29udGFpbmVySGFuZGxpbmcpO1xuXG4gIGNvbnN0IHsgYWJvcnRQcmV2aW91cywgYWJvcnRPbkRlc3Ryb3ksIHN0b3BQcmV2aW91c1BvbGxpbmcgfSA9IGNvbmZpZyA/PyB7fTtcblxuICBjb25zdCBpbmplY3RvciA9IGluamVjdChJbmplY3Rvcik7XG4gIGNvbnN0IGRlc3Ryb3kkID0gY3JlYXRlRGVzdHJveSgpO1xuXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55XG4gIGNvbnN0IHROb2RlID0gKGluamVjdG9yIGFzIGFueSkuX3ROb2RlO1xuICBjb25zdCBjb21wb25lbnRJZCA9IHROb2RlPy5pbmRleCA/PyAtMTtcblxuICBvYnNcbiAgICAucGlwZShcbiAgICAgIHRha2VVbnRpbChkZXN0cm95JCksXG4gICAgICBzdGFydFdpdGgobnVsbCksXG4gICAgICBwYWlyd2lzZSgpLFxuICAgICAgdGFwKChbcHJldlF1ZXJ5LCBjdXJyUXVlcnldKSA9PiB7XG4gICAgICAgIGNvbnN0IGNsZWFuUXVlcnkgPSAocTogQW55UXVlcnkgfCBudWxsIHwgdW5kZWZpbmVkKSA9PiB7XG4gICAgICAgICAgaWYgKCFxPy5faGFzRGVwZW5kZW50cygpICYmICgoYWJvcnRQcmV2aW91cyA9PT0gdW5kZWZpbmVkICYmIHE/LmNhbkJlQ2FjaGVkKSB8fCBhYm9ydFByZXZpb3VzKSkge1xuICAgICAgICAgICAgcT8uYWJvcnQoKTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBpZiAoXG4gICAgICAgICAgICAhcT8uX2hhc0RlcGVuZGVudHMoKSAmJlxuICAgICAgICAgICAgKChzdG9wUHJldmlvdXNQb2xsaW5nID09PSB1bmRlZmluZWQgJiYgcT8uY2FuQmVDYWNoZWQpIHx8IHN0b3BQcmV2aW91c1BvbGxpbmcpICYmXG4gICAgICAgICAgICBxPy5pc1BvbGxpbmdcbiAgICAgICAgICApIHtcbiAgICAgICAgICAgIHE/LnN0b3BQb2xsaW5nKCk7XG4gICAgICAgICAgfVxuICAgICAgICB9O1xuXG4gICAgICAgIGlmICgoaXNRdWVyeShwcmV2UXVlcnkpIHx8IHByZXZRdWVyeSA9PT0gbnVsbCkgJiYgKGlzUXVlcnkoY3VyclF1ZXJ5KSB8fCBjdXJyUXVlcnkgPT09IG51bGwpKSB7XG4gICAgICAgICAgcHJldlF1ZXJ5Py5fcmVtb3ZlRGVwZW5kZW50KGNvbXBvbmVudElkKTtcbiAgICAgICAgICBjdXJyUXVlcnk/Ll9hZGREZXBlbmRlbnQoY29tcG9uZW50SWQpO1xuXG4gICAgICAgICAgY2xlYW5RdWVyeShwcmV2UXVlcnkpO1xuICAgICAgICB9IGVsc2UgaWYgKFxuICAgICAgICAgIChBcnJheS5pc0FycmF5KHByZXZRdWVyeSkgfHwgcHJldlF1ZXJ5ID09PSBudWxsKSAmJlxuICAgICAgICAgIChBcnJheS5pc0FycmF5KGN1cnJRdWVyeSkgfHwgY3VyclF1ZXJ5ID09PSBudWxsKVxuICAgICAgICApIHtcbiAgICAgICAgICBpZiAocHJldlF1ZXJ5KSB7XG4gICAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHByZXZRdWVyeS5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgICBwcmV2UXVlcnlbaV0/Ll9yZW1vdmVEZXBlbmRlbnQoY29tcG9uZW50SWQpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cblxuICAgICAgICAgIGlmIChjdXJyUXVlcnkpIHtcbiAgICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgY3VyclF1ZXJ5Lmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICAgIGN1cnJRdWVyeVtpXT8uX2FkZERlcGVuZGVudChjb21wb25lbnRJZCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgaWYgKHByZXZRdWVyeSkge1xuICAgICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBwcmV2UXVlcnkubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgICAgY2xlYW5RdWVyeShwcmV2UXVlcnlbaV0pO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIGlmIChcbiAgICAgICAgICAoaXNRdWVyeShwcmV2UXVlcnkpICYmIEFycmF5LmlzQXJyYXkoY3VyclF1ZXJ5KSkgfHxcbiAgICAgICAgICAoQXJyYXkuaXNBcnJheShwcmV2UXVlcnkpICYmIGlzUXVlcnkoY3VyclF1ZXJ5KSlcbiAgICAgICAgKSB7XG4gICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdDYW5ub3QgbWl4IHF1ZXJpZXMgYW5kIGFycmF5cyBvZiBxdWVyaWVzIGluIHRoZSBzYW1lIHF1ZXJ5IGNvbnRhaW5lci4nKTtcbiAgICAgICAgfVxuICAgICAgfSksXG4gICAgKVxuICAgIC5zdWJzY3JpYmUoKTtcblxuICBkZXN0cm95JC5zdWJzY3JpYmUoKCkgPT4ge1xuICAgIGNvbnN0IHF1ZXJ5ID0gdmFsdWVGbigpO1xuXG4gICAgY29uc3QgaGFuZGxlUXVlcnkgPSAocTogQW55UXVlcnkgfCBudWxsIHwgdW5kZWZpbmVkKSA9PiB7XG4gICAgICBxPy5fcmVtb3ZlRGVwZW5kZW50KGNvbXBvbmVudElkKTtcblxuICAgICAgaWYgKCFxPy5faGFzRGVwZW5kZW50cygpICYmICgocT8uY2FuQmVDYWNoZWQgJiYgYWJvcnRPbkRlc3Ryb3kgPT09IHVuZGVmaW5lZCkgfHwgYWJvcnRPbkRlc3Ryb3kpKSB7XG4gICAgICAgIHE/LmFib3J0KCk7XG4gICAgICB9XG4gICAgfTtcblxuICAgIGlmIChpc1F1ZXJ5KHF1ZXJ5KSkge1xuICAgICAgaGFuZGxlUXVlcnkocXVlcnkpO1xuICAgIH0gZWxzZSBpZiAoQXJyYXkuaXNBcnJheShxdWVyeSkpIHtcbiAgICAgIGZvciAoY29uc3QgcSBvZiBxdWVyeSkge1xuICAgICAgICBoYW5kbGVRdWVyeShxKTtcbiAgICAgIH1cbiAgICB9XG4gIH0pO1xufTtcblxuZXhwb3J0IGZ1bmN0aW9uIHRvUXVlcnlTaWduYWw8VCBleHRlbmRzIEFueVF1ZXJ5IHwgbnVsbD4oXG4gIHNvdXJjZTogT2JzZXJ2YWJsZTxUPiB8IFN1YnNjcmliYWJsZTxUPixcbik6IFNpZ25hbDxUIHwgdW5kZWZpbmVkPjtcbmV4cG9ydCBmdW5jdGlvbiB0b1F1ZXJ5U2lnbmFsPFQgZXh0ZW5kcyBBbnlRdWVyeSB8IG51bGw+KFxuICBzb3VyY2U6IE9ic2VydmFibGU8VD4gfCBTdWJzY3JpYmFibGU8VD4sXG4gIG9wdGlvbnM6IFRvU2lnbmFsT3B0aW9ucyAmIHsgaW5pdGlhbFZhbHVlPzogdW5kZWZpbmVkOyByZXF1aXJlU3luYz86IGZhbHNlIH0gJiBRdWVyeUNvbnRhaW5lckNvbmZpZyxcbik6IFNpZ25hbDxUIHwgdW5kZWZpbmVkPjtcbmV4cG9ydCBmdW5jdGlvbiB0b1F1ZXJ5U2lnbmFsPFQgZXh0ZW5kcyBBbnlRdWVyeSB8IG51bGw+KFxuICBzb3VyY2U6IE9ic2VydmFibGU8VD4gfCBTdWJzY3JpYmFibGU8VD4sXG4gIG9wdGlvbnM6IFRvU2lnbmFsT3B0aW9ucyAmIHsgaW5pdGlhbFZhbHVlPzogbnVsbDsgcmVxdWlyZVN5bmM/OiBmYWxzZSB9ICYgUXVlcnlDb250YWluZXJDb25maWcsXG4pOiBTaWduYWw8VCB8IG51bGw+O1xuZXhwb3J0IGZ1bmN0aW9uIHRvUXVlcnlTaWduYWw8VCBleHRlbmRzIEFueVF1ZXJ5IHwgbnVsbD4oXG4gIHNvdXJjZTogT2JzZXJ2YWJsZTxUPiB8IFN1YnNjcmliYWJsZTxUPixcbiAgb3B0aW9uczogVG9TaWduYWxPcHRpb25zICYgeyBpbml0aWFsVmFsdWU/OiB1bmRlZmluZWQ7IHJlcXVpcmVTeW5jOiB0cnVlIH0gJiBRdWVyeUNvbnRhaW5lckNvbmZpZyxcbik6IFNpZ25hbDxUPjtcbmV4cG9ydCBmdW5jdGlvbiB0b1F1ZXJ5U2lnbmFsPFQgZXh0ZW5kcyBBbnlRdWVyeSB8IG51bGwsIGNvbnN0IFUgZXh0ZW5kcyBUPihcbiAgc291cmNlOiBPYnNlcnZhYmxlPFQ+IHwgU3Vic2NyaWJhYmxlPFQ+LFxuICBvcHRpb25zOiBUb1NpZ25hbE9wdGlvbnMgJiB7IGluaXRpYWxWYWx1ZTogVTsgcmVxdWlyZVN5bmM/OiBmYWxzZSB9ICYgUXVlcnlDb250YWluZXJDb25maWcsXG4pOiBTaWduYWw8VCB8IFU+O1xuXG5leHBvcnQgZnVuY3Rpb24gdG9RdWVyeVNpZ25hbDxUIGV4dGVuZHMgQW55UXVlcnkgfCBudWxsLCBVID0gdW5kZWZpbmVkPihcbiAgc291cmNlOiBPYnNlcnZhYmxlPFQ+IHwgU3Vic2NyaWJhYmxlPFQ+LFxuICBvcHRpb25zPzogVG9TaWduYWxPcHRpb25zICYgeyBpbml0aWFsVmFsdWU/OiBVIH0gJiBRdWVyeUNvbnRhaW5lckNvbmZpZyxcbik6IFNpZ25hbDxUIHwgVT4ge1xuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueVxuICBjb25zdCBzID0gdG9TaWduYWwoc291cmNlLCBvcHRpb25zIGFzIGFueSk7XG5cbiAgYWRkUXVlcnlDb250YWluZXJIYW5kbGluZyhzb3VyY2UgYXMgT2JzZXJ2YWJsZTxUPiwgKCkgPT4gcygpIGFzIFQsIG9wdGlvbnMpO1xuXG4gIHJldHVybiBzIGFzIFNpZ25hbDxUIHwgVT47XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBxdWVyeUNvbXB1dGVkPFQgZXh0ZW5kcyBBbnlRdWVyeSB8IG51bGw+KFxuICBjb21wdXRhdGlvbjogKCkgPT4gVCxcbiAgb3B0aW9ucz86IENyZWF0ZUNvbXB1dGVkT3B0aW9uczxUPiAmIFF1ZXJ5Q29udGFpbmVyQ29uZmlnICYgVG9PYnNlcnZhYmxlT3B0aW9ucyxcbik6IFNpZ25hbDxUPiB7XG4gIGNvbnN0IGMgPSBjb21wdXRlZChjb21wdXRhdGlvbiwgb3B0aW9ucyk7XG4gIGNvbnN0IG9icyA9IHRvT2JzZXJ2YWJsZShjLCBvcHRpb25zKTtcblxuICBhZGRRdWVyeUNvbnRhaW5lckhhbmRsaW5nKG9icywgKCkgPT4gYygpLCBvcHRpb25zKTtcblxuICByZXR1cm4gYztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHF1ZXJ5QXJyYXlDb21wdXRlZDxUIGV4dGVuZHMgQW55UXVlcnlbXSB8IG51bGw+KFxuICBjb21wdXRhdGlvbjogKCkgPT4gVCxcbiAgb3B0aW9ucz86IENyZWF0ZUNvbXB1dGVkT3B0aW9uczxUPiAmIFF1ZXJ5Q29udGFpbmVyQ29uZmlnICYgVG9PYnNlcnZhYmxlT3B0aW9ucyxcbik6IFNpZ25hbDxUPiB7XG4gIGNvbnN0IGMgPSBjb21wdXRlZChjb21wdXRhdGlvbiwgb3B0aW9ucyk7XG4gIGNvbnN0IG9icyA9IHRvT2JzZXJ2YWJsZShjLCBvcHRpb25zKTtcblxuICBhZGRRdWVyeUNvbnRhaW5lckhhbmRsaW5nKG9icywgKCkgPT4gYygpLCBvcHRpb25zKTtcblxuICByZXR1cm4gYztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHRvUXVlcnlTdWJqZWN0PFQgZXh0ZW5kcyBBbnlRdWVyeSB8IG51bGw+KFxuICBzb3VyY2U6IFNpZ25hbDxUPixcbiAgb3B0aW9ucz86IFRvT2JzZXJ2YWJsZU9wdGlvbnMgJiBRdWVyeUNvbnRhaW5lckNvbmZpZyxcbik6IE9ic2VydmFibGU8VD4ge1xuICBjb25zdCBvYnMgPSB0b09ic2VydmFibGUoc291cmNlLCBvcHRpb25zKTtcblxuICBhZGRRdWVyeUNvbnRhaW5lckhhbmRsaW5nKG9icywgKCkgPT4gc291cmNlKCksIG9wdGlvbnMpO1xuXG4gIHJldHVybiBvYnM7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBxdWVyeVN0YXRlU2lnbmFsPFQgZXh0ZW5kcyBTaWduYWw8QW55UXVlcnkgfCBBbnlRdWVyeUNvbGxlY3Rpb24gfCBudWxsPj4oXG4gIHNvdXJjZTogVCxcbiAgb3B0aW9ucz86IFF1ZXJ5RmlsdGVyQ29uZmlnLFxuKSB7XG4gIGNvbnN0IHsgY2FjaGVSZXNwb25zZSB9ID0gb3B0aW9ucyA/PyB7fTtcblxuICByZXR1cm4gdG9TaWduYWwoXG4gICAgdG9PYnNlcnZhYmxlKHNvdXJjZSkucGlwZShcbiAgICAgIHN3aXRjaE1hcCgocSkgPT4gZXh0cmFjdFF1ZXJ5KHEpPy5zdGF0ZSQgPz8gb2YobnVsbCkpLFxuICAgICAgc3dpdGNoTWFwKChzdGF0ZSkgPT4ge1xuICAgICAgICBpZiAoY2FjaGVSZXNwb25zZSkge1xuICAgICAgICAgIHJldHVybiBvZihzdGF0ZSkucGlwZShcbiAgICAgICAgICAgIGZpbHRlclF1ZXJ5U3RhdGVzKFtRdWVyeVN0YXRlVHlwZS5TdWNjZXNzLCBRdWVyeVN0YXRlVHlwZS5GYWlsdXJlLCBRdWVyeVN0YXRlVHlwZS5DYW5jZWxsZWRdKSxcbiAgICAgICAgICApO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIG9mKHN0YXRlKTtcbiAgICAgIH0pLFxuICAgICksXG4gICAge1xuICAgICAgaW5pdGlhbFZhbHVlOiBudWxsLFxuICAgIH0sXG4gICkgYXMgU2lnbmFsPFF1ZXJ5U3RhdGU8UXVlcnlEYXRhT2Y8UXVlcnlPZjxSZXR1cm5UeXBlPFQ+Pj4+IHwgbnVsbD47XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBxdWVyeVN0YXRlUmVzcG9uc2VTaWduYWw8VCBleHRlbmRzIFNpZ25hbDxBbnlRdWVyeSB8IEFueVF1ZXJ5Q29sbGVjdGlvbiB8IG51bGw+PihcbiAgc291cmNlOiBULFxuICBvcHRpb25zPzogUXVlcnlGaWx0ZXJDb25maWcsXG4pIHtcbiAgY29uc3QgcyA9IHF1ZXJ5U3RhdGVTaWduYWwoc291cmNlLCBvcHRpb25zKTtcblxuICByZXR1cm4gY29tcHV0ZWQoKCkgPT4ge1xuICAgIGNvbnN0IHN0YXRlID0gcygpO1xuXG4gICAgcmV0dXJuIGlzUXVlcnlTdGF0ZVN1Y2Nlc3Moc3RhdGUpID8gc3RhdGUucmVzcG9uc2UgOiBudWxsO1xuICB9KTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHF1ZXJ5U3RhdGVFcnJvclNpZ25hbDxUIGV4dGVuZHMgU2lnbmFsPEFueVF1ZXJ5IHwgQW55UXVlcnlDb2xsZWN0aW9uIHwgbnVsbD4+KHNvdXJjZTogVCkge1xuICBjb25zdCBzID0gcXVlcnlTdGF0ZVNpZ25hbChzb3VyY2UpO1xuXG4gIHJldHVybiBjb21wdXRlZCgoKSA9PiB7XG4gICAgY29uc3Qgc3RhdGUgPSBzKCk7XG5cbiAgICByZXR1cm4gaXNRdWVyeVN0YXRlRmFpbHVyZShzdGF0ZSkgPyBzdGF0ZS5lcnJvciA6IG51bGw7XG4gIH0pO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcXVlcnlTdGF0ZUxvYWRpbmdTaWduYWw8VCBleHRlbmRzIFNpZ25hbDxBbnlRdWVyeSB8IEFueVF1ZXJ5Q29sbGVjdGlvbiB8IG51bGw+Pihzb3VyY2U6IFQpIHtcbiAgY29uc3QgcyA9IHF1ZXJ5U3RhdGVTaWduYWwoc291cmNlKTtcblxuICByZXR1cm4gY29tcHV0ZWQoKCkgPT4ge1xuICAgIGNvbnN0IHN0YXRlID0gcygpO1xuXG4gICAgcmV0dXJuIGlzUXVlcnlTdGF0ZUxvYWRpbmcoc3RhdGUpID8gc3RhdGUgOiBudWxsO1xuICB9KTtcbn1cbiJdfQ==
|
|
@@ -538,20 +538,27 @@ const addQueryContainerHandling = (obs, valueFn, config) => {
|
|
|
538
538
|
q?.stopPolling();
|
|
539
539
|
}
|
|
540
540
|
};
|
|
541
|
-
if (isQuery(prevQuery) && isQuery(currQuery)) {
|
|
541
|
+
if ((isQuery(prevQuery) || prevQuery === null) && (isQuery(currQuery) || currQuery === null)) {
|
|
542
542
|
prevQuery?._removeDependent(componentId);
|
|
543
543
|
currQuery?._addDependent(componentId);
|
|
544
544
|
cleanQuery(prevQuery);
|
|
545
545
|
}
|
|
546
|
-
else if (Array.isArray(prevQuery)
|
|
547
|
-
|
|
548
|
-
|
|
546
|
+
else if ((Array.isArray(prevQuery) || prevQuery === null) &&
|
|
547
|
+
(Array.isArray(currQuery) || currQuery === null)) {
|
|
548
|
+
if (prevQuery) {
|
|
549
|
+
for (let i = 0; i < prevQuery.length; i++) {
|
|
550
|
+
prevQuery[i]?._removeDependent(componentId);
|
|
551
|
+
}
|
|
549
552
|
}
|
|
550
|
-
|
|
551
|
-
currQuery
|
|
553
|
+
if (currQuery) {
|
|
554
|
+
for (let i = 0; i < currQuery.length; i++) {
|
|
555
|
+
currQuery[i]?._addDependent(componentId);
|
|
556
|
+
}
|
|
552
557
|
}
|
|
553
|
-
|
|
554
|
-
|
|
558
|
+
if (prevQuery) {
|
|
559
|
+
for (let i = 0; i < prevQuery.length; i++) {
|
|
560
|
+
cleanQuery(prevQuery[i]);
|
|
561
|
+
}
|
|
555
562
|
}
|
|
556
563
|
}
|
|
557
564
|
else if ((isQuery(prevQuery) && Array.isArray(currQuery)) ||
|
|
@@ -1747,10 +1754,10 @@ class QueryShortNamePipe {
|
|
|
1747
1754
|
console.log(route);
|
|
1748
1755
|
return route;
|
|
1749
1756
|
}
|
|
1750
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.
|
|
1751
|
-
static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "17.
|
|
1757
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.2.1", ngImport: i0, type: QueryShortNamePipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe }); }
|
|
1758
|
+
static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "17.2.1", ngImport: i0, type: QueryShortNamePipe, isStandalone: true, name: "queryShortName" }); }
|
|
1752
1759
|
}
|
|
1753
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.
|
|
1760
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.1", ngImport: i0, type: QueryShortNamePipe, decorators: [{
|
|
1754
1761
|
type: Pipe,
|
|
1755
1762
|
args: [{ name: 'queryShortName', standalone: true }]
|
|
1756
1763
|
}] });
|
|
@@ -1969,10 +1976,10 @@ class QueryDevtoolsComponent {
|
|
|
1969
1976
|
clearQueryHistory() {
|
|
1970
1977
|
this.queryHistory$.next([]);
|
|
1971
1978
|
}
|
|
1972
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.
|
|
1973
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.1.1", type: QueryDevtoolsComponent, isStandalone: true, selector: "et-query-devtools", host: { classAttribute: "et-query-devtools" }, ngImport: i0, template: "@if (!isOpen()) {\n <button (click)=\"toggleOpen()\" class=\"et-query-devtools-open-btn et-qd-chip\">Open Devtools</button>\n}\n\n@if (isOpen()) {\n <div\n [class.et-query-devtools-container--transparent]=\"isTranslucent()\"\n class=\"et-query-devtools-container et-query-devtools-container--snap-{{ snapLayout() }}\"\n >\n <header class=\"et-qd-header\">\n <h3 class=\"et-qd-header__title\">Query Devtools</h3>\n\n <div class=\"et-qd-header__select\">\n <label for=\"et-query-client-instance\">Client instance</label>\n <select [formControl]=\"selectedClientIdCtrl\" id=\"et-query-client-instance\">\n @for (clientConfig of queryClientConfigs; track trackByClient(i, clientConfig); let i = $index) {\n <option [value]=\"i\">\n {{ clientConfig.displayName ?? clientConfig.client.config.baseRoute }}\n </option>\n }\n </select>\n </div>\n\n <button (click)=\"toggleOpen()\" class=\"et-qd-btn et-qd-btn-secondary\">Close</button>\n </header>\n\n <div class=\"et-qd-sub-header\">\n <button\n [ngClass]=\"{ 'et-qd-chip-secondary': !isTranslucent() }\"\n (click)=\"toggleTranslucent()\"\n class=\"et-qd-chip et-qd-translucent-clickable\"\n >\n Translucent\n </button>\n <div class=\"et-qd-sub-header__divider\"></div>\n <button\n [ngClass]=\"{ 'et-qd-chip-secondary': snapLayout() !== 'full' }\"\n (click)=\"selectSnapLayout('full')\"\n class=\"et-qd-chip\"\n >\n Fullscreen\n </button>\n <button\n [ngClass]=\"{ 'et-qd-chip-secondary': snapLayout() !== 'top' }\"\n (click)=\"selectSnapLayout('top')\"\n class=\"et-qd-chip\"\n >\n Top\n </button>\n <button\n [ngClass]=\"{ 'et-qd-chip-secondary': snapLayout() !== 'bottom' }\"\n (click)=\"selectSnapLayout('bottom')\"\n class=\"et-qd-chip\"\n >\n Bottom\n </button>\n <button\n [ngClass]=\"{ 'et-qd-chip-secondary': snapLayout() !== 'left' }\"\n (click)=\"selectSnapLayout('left')\"\n class=\"et-qd-chip\"\n >\n Left\n </button>\n <button\n [ngClass]=\"{ 'et-qd-chip-secondary': snapLayout() !== 'right' }\"\n (click)=\"selectSnapLayout('right')\"\n class=\"et-qd-chip\"\n >\n Right\n </button>\n </div>\n\n @if (selectedClientConfig(); as cfg) {\n <div class=\"et-qd-client\">\n <p class=\"et-qd-client__title\">{{ cfg.displayName ?? cfg.client.config.baseRoute }}</p>\n\n <div class=\"et-qd-client__actions\">\n <button (click)=\"cfg.client._store.refreshQueriesInUse()\" class=\"et-qd-chip\">Refresh all</button>\n <button (click)=\"cfg.client._store.refreshQueriesInUse({ ignoreCacheValidity: true })\" class=\"et-qd-chip\">\n Refresh all (ignore caches)\n </button>\n <button\n (click)=\"cfg.client._store.refreshQueriesInUse({ ignoreCacheValidity: true, purgeUnused: true })\"\n class=\"et-qd-chip\"\n >\n Refresh all (ignore caches & purge unused)\n </button>\n </div>\n </div>\n }\n\n @if (selectedClientConfig(); as cfg) {\n <div class=\"et-qd-queries\">\n <p class=\"et-qd-queries__title\">Query browser</p>\n <div class=\"et-qd-queries__actions\">\n <button\n [ngClass]=\"{ 'et-qd-chip-secondary': queryListMode() !== 'live' }\"\n (click)=\"selectQueryListMode('live')\"\n class=\"et-qd-chip et-qd-chip-bordered\"\n >\n Live ({{ queries()?.length ?? 0 }})\n </button>\n <button\n [ngClass]=\"{ 'et-qd-chip-secondary': queryListMode() !== 'history' }\"\n (click)=\"selectQueryListMode('history')\"\n class=\"et-qd-chip et-qd-chip-bordered\"\n >\n History ({{ (queryHistory$ | async)?.length ?? 0 }}/50)\n </button>\n @if (queryListMode() === 'history') {\n <div class=\"et-qd-queries__divider\"></div>\n <button (click)=\"clearQueryHistory()\" class=\"et-qd-chip et-qd-chip-bordered\">Clear history</button>\n }\n </div>\n\n <div class=\"et-qd-queries__browser\">\n @if (queryListMode() === 'live') {\n <ul class=\"et-qd-queries__browser-list\">\n @for (query of queries(); track trackByQuery($index, query)) {\n <li>\n <button [class.et-qd-query--active]=\"selectedQuery()?._id === query._id\" (click)=\"selectQuery(query)\">\n <span> {{ query._queryConfig.method }}</span>\n <span> {{ query | queryShortName }}</span>\n </button>\n </li>\n }\n </ul>\n }\n @if (queryListMode() === 'history') {\n <ul class=\"et-qd-queries__browser-list\">\n @for (query of queryHistory$ | async; track trackByQuery($index, query)) {\n <li>\n <button [class.et-qd-query--active]=\"selectedQuery()?._id === query._id\" (click)=\"selectQuery(query)\">\n <span> {{ query._queryConfig.method }}</span>\n <span> {{ query | queryShortName }}</span>\n </button>\n </li>\n }\n </ul>\n }\n <div class=\"et-qd-queries__browser-detail\">\n @if (selectedQuery(); as query) {\n <p class=\"et-qd-queries__browser-detail__title\">\n {{ query._queryConfig.method }} {{ query._routeWithParams }}\n </p>\n\n <div class=\"et-qd-queries__actions\">\n <button (click)=\"query.execute()\" class=\"et-qd-chip et-qd-chip-bordered\">Execute</button>\n <button (click)=\"query.execute({ skipCache: true })\" class=\"et-qd-chip et-qd-chip-bordered\">\n Execute (ignore cache)\n </button>\n\n <button (click)=\"query.abort()\" class=\"et-qd-chip et-qd-chip-bordered\">Abort</button>\n <div class=\"et-qd-queries__divider\"></div>\n <button\n [ngClass]=\"{ 'et-qd-chip-secondary': !query.isPolling }\"\n (click)=\"query.poll({ interval: 5000, takeUntil: _destroy$ })\"\n class=\"et-qd-chip et-qd-chip-bordered\"\n >\n Poll\n </button>\n\n <button\n [ngClass]=\"{ 'et-qd-chip-secondary': query.isPolling }\"\n (click)=\"query.stopPolling()\"\n class=\"et-qd-chip et-qd-chip-bordered\"\n >\n Stop polling\n </button>\n @if (query.isPolling || query._isPollingPaused) {\n <button (click)=\"query.pausePolling()\" class=\"et-qd-chip et-qd-chip-secondary et-qd-chip-bordered\">\n Pause polling\n </button>\n <button (click)=\"query.resumePolling()\" class=\"et-qd-chip et-qd-chip-secondary et-qd-chip-bordered\">\n Resume polling\n </button>\n }\n </div>\n\n <div class=\"et-qd-list\">\n <div class=\"et-qd-list-item\">\n <p>State type</p>\n <pre>{{ query.rawState.type }}</pre>\n </div>\n\n <div class=\"et-qd-list-item\">\n <p>Dependents</p>\n <pre>{{ query._dependents | json }}</pre>\n </div>\n\n <div class=\"et-qd-list-item\">\n <p>Is expired</p>\n <pre>{{ query.isExpired }}</pre>\n </div>\n\n <div class=\"et-qd-list-item\">\n <p>Is in use</p>\n <pre>{{ query.isInUse }}</pre>\n </div>\n\n <div class=\"et-qd-list-item\">\n <p>Subscriber count</p>\n <pre>{{ query._subscriberCount }}</pre>\n </div>\n\n <div class=\"et-qd-list-item\">\n <p>Is polling</p>\n <pre>{{ query.isPolling }}</pre>\n </div>\n\n <div class=\"et-qd-list-item\">\n <p>Is polling paused</p>\n <pre>{{ query._isPollingPaused }}</pre>\n </div>\n\n <div class=\"et-qd-list-item\">\n <p>Enable smart polling</p>\n <pre>{{ query._enableSmartPolling }}</pre>\n </div>\n\n <div class=\"et-qd-list-item\">\n <p>Query store key</p>\n <pre>{{ query._queryStoreKey }}</pre>\n </div>\n\n <div class=\"et-qd-list-item\">\n <p>Arguments</p>\n\n <div>\n <button\n [ngClass]=\"{ 'et-qd-chip-secondary': !showArguments() }\"\n (click)=\"toggleShowArguments()\"\n class=\"et-qd-chip et-qd-chip-bordered\"\n >\n Toggle\n </button>\n </div>\n @if (showArguments()) {\n <pre>{{ query._arguments | json }}</pre>\n }\n </div>\n\n <div class=\"et-qd-list-item\">\n <p>State</p>\n <p><i> Warning, this will cause a subscription if shown!</i></p>\n <div>\n <button\n [ngClass]=\"{ 'et-qd-chip-secondary': !showResponse() }\"\n (click)=\"toggleShowResponse()\"\n class=\"et-qd-chip et-qd-chip-bordered\"\n >\n Toggle\n </button>\n </div>\n @if (showResponse()) {\n <pre>{{ query.state$ | async | json }}</pre>\n }\n </div>\n\n <div class=\"et-qd-list-item\">\n <p>Raw state</p>\n <p><i> The query state unaffected by entity stores</i></p>\n\n <div>\n <button\n [ngClass]=\"{ 'et-qd-chip-secondary': !showRawResponse() }\"\n (click)=\"toggleShowRawResponse()\"\n class=\"et-qd-chip et-qd-chip-bordered\"\n >\n Toggle\n </button>\n </div>\n @if (showRawResponse()) {\n <pre>{{ query.rawState | json }}</pre>\n }\n </div>\n\n <div class=\"et-qd-list-item\">\n <p>Query config</p>\n\n <div>\n <button\n [ngClass]=\"{ 'et-qd-chip-secondary': !showQueryConfig() }\"\n (click)=\"toggleShowQueryConfig()\"\n class=\"et-qd-chip et-qd-chip-bordered\"\n >\n Toggle\n </button>\n </div>\n @if (showQueryConfig()) {\n <pre>{{ stringifiedQueryConfig() | json }}</pre>\n }\n </div>\n\n @if (!!query._queryConfig.entity) {\n <div class=\"et-qd-list-item\">\n <p>Entity store value</p>\n\n <div>\n <button\n [ngClass]=\"{ 'et-qd-chip-secondary': !showEntityStoreValue() }\"\n (click)=\"toggleShowEntityStoreValue()\"\n class=\"et-qd-chip et-qd-chip-bordered\"\n >\n Toggle\n </button>\n </div>\n @if (showEntityStoreValue()) {\n <pre>{{ selectedQueryEntityStoreValue$ | async | json }}</pre>\n }\n </div>\n }\n </div>\n }\n </div>\n </div>\n </div>\n }\n </div>\n}\n", styles: [":host{position:fixed;top:0;z-index:1000000;font-size:14px;color:#fff}.et-query-devtools-container{position:fixed;inset:0;background-color:#25292e;z-index:10000;overflow:auto;font-family:monospace;display:grid;grid-template-rows:auto auto auto minmax(0,1fr)}.et-query-devtools-container.et-query-devtools-container--transparent{opacity:.25;pointer-events:none}.et-query-devtools-container.et-query-devtools-container--transparent .et-query-devtools-translucent-btn{pointer-events:all}.et-query-devtools-container.et-query-devtools-container--snap-left{inset-inline-start:0;inset-block-start:0;inset-block-end:0;width:50%;border-right:1px solid rgb(37,41,46)}.et-query-devtools-container.et-query-devtools-container--snap-right{inset-inline-start:unset;inset-inline-end:0;inset-block-start:0;inset-block-end:0;width:50%;border-left:1px solid rgb(37,41,46)}.et-query-devtools-container.et-query-devtools-container--snap-top{inset-inline-start:0;inset-block-start:0;inset-inline-end:0;height:50%;border-bottom:1px solid rgb(37,41,46)}.et-query-devtools-container.et-query-devtools-container--snap-bottom{inset-inline-start:0;inset-block-start:unset;inset-block-end:0;inset-inline-end:0;height:50%;border-top:1px solid rgb(37,41,46)}.et-query-devtools-open-btn{position:fixed;inset-inline-start:0;inset-block-start:0;z-index:9999;all:unset;font-family:monospace}.et-qd-header{background-color:#00ffa1;padding:12px;display:grid;grid-template-columns:1fr auto auto;gap:12px;align-items:center}.et-qd-header__title{color:#25292e;margin:0;font-size:22px}.et-qd-header__select{display:grid;background-color:#25292e;border-radius:10px;overflow:hidden}.et-qd-header__select select{width:250px;color:#fff;padding:3px 10px 2px;border:none;background-color:#25292e;font-family:monospace}.et-qd-header__select label{padding:3px 10px;color:#25292e;font-size:12px;font-weight:700;color:#fff;border-bottom:1px solid gray}.et-qd-sub-header{background-color:#00b371;padding:12px;display:flex;gap:12px;flex-wrap:wrap}.et-qd-sub-header__divider{width:1px;background-color:#25292e}.et-qd-btn{background-color:#00ffa1;color:#25292e;border:none;padding:12px;cursor:pointer;font-size:14px;font-weight:700;text-align:center;text-decoration:none;display:inline-block;width:100%;transition:all .3s ease-in-out;font-family:monospace;border-radius:10px}.et-qd-btn:hover{background-color:#00cc81}.et-qd-btn.et-qd-btn-secondary{background-color:#25292e;color:#00ffa1}.et-qd-btn.et-qd-btn-secondary:hover{background-color:#3c424a}.et-qd-chip{background-color:#00ffa1;color:#25292e;border:none;padding:4px 9px;cursor:pointer;font-size:12px;font-weight:700;text-align:center;text-decoration:none;display:inline-block;transition:all .3s ease-in-out;font-family:monospace;border-radius:10px}.et-qd-chip:hover{background-color:#00cc81}.et-qd-chip.et-qd-chip-secondary{background-color:#25292e;color:#00ffa1}.et-qd-chip.et-qd-chip-secondary:hover{background-color:#3c424a}.et-qd-chip.et-qd-chip-bordered{border:1px solid rgb(0,255,161)}.et-qd-translucent-clickable{pointer-events:all}.et-qd-client{border-bottom:1px solid #3c424a;padding:12px}.et-qd-client__title{margin:0;font-size:14px;color:#fff;font-weight:700}.et-qd-client__actions{display:flex;gap:12px;margin-top:12px}.et-qd-queries{padding:12px;display:grid;grid-template-rows:auto auto minmax(0,1fr)}.et-qd-queries__actions{display:flex;gap:12px;margin-top:12px;margin-bottom:16px}.et-qd-queries__title{margin:0;font-size:14px;color:#fff;font-weight:700}.et-qd-queries__divider{width:1px;background-color:#3c424a}.et-qd-queries__browser{display:grid;grid-template-columns:1fr minmax(0,3fr);margin-left:-12px;margin-right:-12px;border-top:1px solid #3c424a;margin-bottom:-12px}.et-qd-queries__browser-list{border-right:1px solid #3c424a;list-style:none;padding:0;margin:0;display:grid;grid-auto-flow:row;grid-auto-rows:55px;overflow-y:auto;overflow-x:hidden}.et-qd-queries__browser-list li{margin:0}.et-qd-queries__browser-list li button{all:unset;font-family:monospace;box-sizing:border-box;width:100%;border:none;border-bottom:1px solid #3c424a;background-color:#25292e;color:#fff;text-align:left;padding:12px;height:100%;transition:all .3s ease-in-out;cursor:pointer;display:grid;gap:2px}.et-qd-queries__browser-list li button span{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.et-qd-queries__browser-list li button span:first-of-type{font-weight:700}.et-qd-queries__browser-list li button:hover,.et-qd-queries__browser-list li button.et-qd-query--active{background-color:#30363c}.et-qd-queries__browser-detail{padding:12px;overflow-y:auto;overflow-x:hidden}.et-qd-queries__browser-detail__title{margin:0;font-size:14px;color:#fff;font-weight:700}.et-qd-list{display:grid;gap:12px}.et-qd-list-item{display:grid}.et-qd-list-item p{font-weight:700;margin:0;padding-bottom:8px}.et-qd-list-item p+p{margin-top:-8px}.et-qd-list-item div+pre{margin-top:8px}.et-qd-list-item pre{margin:0;padding:4px;background-color:#0e1012;border-radius:4px;max-height:450px;overflow:auto}\n"], dependencies: [{ kind: "pipe", type: AsyncPipe, name: "async" }, { kind: "pipe", type: JsonPipe, name: "json" }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i1.NgSelectOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i1.ɵNgSelectMultipleOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i1.SelectControlValueAccessor, selector: "select:not([multiple])[formControlName],select:not([multiple])[formControl],select:not([multiple])[ngModel]", inputs: ["compareWith"] }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "pipe", type: QueryShortNamePipe, name: "queryShortName" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.ShadowDom }); }
|
|
1979
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.2.1", ngImport: i0, type: QueryDevtoolsComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
1980
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.2.1", type: QueryDevtoolsComponent, isStandalone: true, selector: "et-query-devtools", host: { classAttribute: "et-query-devtools" }, ngImport: i0, template: "@if (!isOpen()) {\n <button (click)=\"toggleOpen()\" class=\"et-query-devtools-open-btn et-qd-chip\">Open Devtools</button>\n}\n\n@if (isOpen()) {\n <div\n [class.et-query-devtools-container--transparent]=\"isTranslucent()\"\n class=\"et-query-devtools-container et-query-devtools-container--snap-{{ snapLayout() }}\"\n >\n <header class=\"et-qd-header\">\n <h3 class=\"et-qd-header__title\">Query Devtools</h3>\n\n <div class=\"et-qd-header__select\">\n <label for=\"et-query-client-instance\">Client instance</label>\n <select [formControl]=\"selectedClientIdCtrl\" id=\"et-query-client-instance\">\n @for (clientConfig of queryClientConfigs; track trackByClient(i, clientConfig); let i = $index) {\n <option [value]=\"i\">\n {{ clientConfig.displayName ?? clientConfig.client.config.baseRoute }}\n </option>\n }\n </select>\n </div>\n\n <button (click)=\"toggleOpen()\" class=\"et-qd-btn et-qd-btn-secondary\">Close</button>\n </header>\n\n <div class=\"et-qd-sub-header\">\n <button\n [ngClass]=\"{ 'et-qd-chip-secondary': !isTranslucent() }\"\n (click)=\"toggleTranslucent()\"\n class=\"et-qd-chip et-qd-translucent-clickable\"\n >\n Translucent\n </button>\n <div class=\"et-qd-sub-header__divider\"></div>\n <button\n [ngClass]=\"{ 'et-qd-chip-secondary': snapLayout() !== 'full' }\"\n (click)=\"selectSnapLayout('full')\"\n class=\"et-qd-chip\"\n >\n Fullscreen\n </button>\n <button\n [ngClass]=\"{ 'et-qd-chip-secondary': snapLayout() !== 'top' }\"\n (click)=\"selectSnapLayout('top')\"\n class=\"et-qd-chip\"\n >\n Top\n </button>\n <button\n [ngClass]=\"{ 'et-qd-chip-secondary': snapLayout() !== 'bottom' }\"\n (click)=\"selectSnapLayout('bottom')\"\n class=\"et-qd-chip\"\n >\n Bottom\n </button>\n <button\n [ngClass]=\"{ 'et-qd-chip-secondary': snapLayout() !== 'left' }\"\n (click)=\"selectSnapLayout('left')\"\n class=\"et-qd-chip\"\n >\n Left\n </button>\n <button\n [ngClass]=\"{ 'et-qd-chip-secondary': snapLayout() !== 'right' }\"\n (click)=\"selectSnapLayout('right')\"\n class=\"et-qd-chip\"\n >\n Right\n </button>\n </div>\n\n @if (selectedClientConfig(); as cfg) {\n <div class=\"et-qd-client\">\n <p class=\"et-qd-client__title\">{{ cfg.displayName ?? cfg.client.config.baseRoute }}</p>\n\n <div class=\"et-qd-client__actions\">\n <button (click)=\"cfg.client._store.refreshQueriesInUse()\" class=\"et-qd-chip\">Refresh all</button>\n <button (click)=\"cfg.client._store.refreshQueriesInUse({ ignoreCacheValidity: true })\" class=\"et-qd-chip\">\n Refresh all (ignore caches)\n </button>\n <button\n (click)=\"cfg.client._store.refreshQueriesInUse({ ignoreCacheValidity: true, purgeUnused: true })\"\n class=\"et-qd-chip\"\n >\n Refresh all (ignore caches & purge unused)\n </button>\n </div>\n </div>\n }\n\n @if (selectedClientConfig(); as cfg) {\n <div class=\"et-qd-queries\">\n <p class=\"et-qd-queries__title\">Query browser</p>\n <div class=\"et-qd-queries__actions\">\n <button\n [ngClass]=\"{ 'et-qd-chip-secondary': queryListMode() !== 'live' }\"\n (click)=\"selectQueryListMode('live')\"\n class=\"et-qd-chip et-qd-chip-bordered\"\n >\n Live ({{ queries()?.length ?? 0 }})\n </button>\n <button\n [ngClass]=\"{ 'et-qd-chip-secondary': queryListMode() !== 'history' }\"\n (click)=\"selectQueryListMode('history')\"\n class=\"et-qd-chip et-qd-chip-bordered\"\n >\n History ({{ (queryHistory$ | async)?.length ?? 0 }}/50)\n </button>\n @if (queryListMode() === 'history') {\n <div class=\"et-qd-queries__divider\"></div>\n <button (click)=\"clearQueryHistory()\" class=\"et-qd-chip et-qd-chip-bordered\">Clear history</button>\n }\n </div>\n\n <div class=\"et-qd-queries__browser\">\n @if (queryListMode() === 'live') {\n <ul class=\"et-qd-queries__browser-list\">\n @for (query of queries(); track trackByQuery($index, query)) {\n <li>\n <button [class.et-qd-query--active]=\"selectedQuery()?._id === query._id\" (click)=\"selectQuery(query)\">\n <span> {{ query._queryConfig.method }}</span>\n <span> {{ query | queryShortName }}</span>\n </button>\n </li>\n }\n </ul>\n }\n @if (queryListMode() === 'history') {\n <ul class=\"et-qd-queries__browser-list\">\n @for (query of queryHistory$ | async; track trackByQuery($index, query)) {\n <li>\n <button [class.et-qd-query--active]=\"selectedQuery()?._id === query._id\" (click)=\"selectQuery(query)\">\n <span> {{ query._queryConfig.method }}</span>\n <span> {{ query | queryShortName }}</span>\n </button>\n </li>\n }\n </ul>\n }\n <div class=\"et-qd-queries__browser-detail\">\n @if (selectedQuery(); as query) {\n <p class=\"et-qd-queries__browser-detail__title\">\n {{ query._queryConfig.method }} {{ query._routeWithParams }}\n </p>\n\n <div class=\"et-qd-queries__actions\">\n <button (click)=\"query.execute()\" class=\"et-qd-chip et-qd-chip-bordered\">Execute</button>\n <button (click)=\"query.execute({ skipCache: true })\" class=\"et-qd-chip et-qd-chip-bordered\">\n Execute (ignore cache)\n </button>\n\n <button (click)=\"query.abort()\" class=\"et-qd-chip et-qd-chip-bordered\">Abort</button>\n <div class=\"et-qd-queries__divider\"></div>\n <button\n [ngClass]=\"{ 'et-qd-chip-secondary': !query.isPolling }\"\n (click)=\"query.poll({ interval: 5000, takeUntil: _destroy$ })\"\n class=\"et-qd-chip et-qd-chip-bordered\"\n >\n Poll\n </button>\n\n <button\n [ngClass]=\"{ 'et-qd-chip-secondary': query.isPolling }\"\n (click)=\"query.stopPolling()\"\n class=\"et-qd-chip et-qd-chip-bordered\"\n >\n Stop polling\n </button>\n @if (query.isPolling || query._isPollingPaused) {\n <button (click)=\"query.pausePolling()\" class=\"et-qd-chip et-qd-chip-secondary et-qd-chip-bordered\">\n Pause polling\n </button>\n <button (click)=\"query.resumePolling()\" class=\"et-qd-chip et-qd-chip-secondary et-qd-chip-bordered\">\n Resume polling\n </button>\n }\n </div>\n\n <div class=\"et-qd-list\">\n <div class=\"et-qd-list-item\">\n <p>State type</p>\n <pre>{{ query.rawState.type }}</pre>\n </div>\n\n <div class=\"et-qd-list-item\">\n <p>Dependents</p>\n <pre>{{ query._dependents | json }}</pre>\n </div>\n\n <div class=\"et-qd-list-item\">\n <p>Is expired</p>\n <pre>{{ query.isExpired }}</pre>\n </div>\n\n <div class=\"et-qd-list-item\">\n <p>Is in use</p>\n <pre>{{ query.isInUse }}</pre>\n </div>\n\n <div class=\"et-qd-list-item\">\n <p>Subscriber count</p>\n <pre>{{ query._subscriberCount }}</pre>\n </div>\n\n <div class=\"et-qd-list-item\">\n <p>Is polling</p>\n <pre>{{ query.isPolling }}</pre>\n </div>\n\n <div class=\"et-qd-list-item\">\n <p>Is polling paused</p>\n <pre>{{ query._isPollingPaused }}</pre>\n </div>\n\n <div class=\"et-qd-list-item\">\n <p>Enable smart polling</p>\n <pre>{{ query._enableSmartPolling }}</pre>\n </div>\n\n <div class=\"et-qd-list-item\">\n <p>Query store key</p>\n <pre>{{ query._queryStoreKey }}</pre>\n </div>\n\n <div class=\"et-qd-list-item\">\n <p>Arguments</p>\n\n <div>\n <button\n [ngClass]=\"{ 'et-qd-chip-secondary': !showArguments() }\"\n (click)=\"toggleShowArguments()\"\n class=\"et-qd-chip et-qd-chip-bordered\"\n >\n Toggle\n </button>\n </div>\n @if (showArguments()) {\n <pre>{{ query._arguments | json }}</pre>\n }\n </div>\n\n <div class=\"et-qd-list-item\">\n <p>State</p>\n <p><i> Warning, this will cause a subscription if shown!</i></p>\n <div>\n <button\n [ngClass]=\"{ 'et-qd-chip-secondary': !showResponse() }\"\n (click)=\"toggleShowResponse()\"\n class=\"et-qd-chip et-qd-chip-bordered\"\n >\n Toggle\n </button>\n </div>\n @if (showResponse()) {\n <pre>{{ query.state$ | async | json }}</pre>\n }\n </div>\n\n <div class=\"et-qd-list-item\">\n <p>Raw state</p>\n <p><i> The query state unaffected by entity stores</i></p>\n\n <div>\n <button\n [ngClass]=\"{ 'et-qd-chip-secondary': !showRawResponse() }\"\n (click)=\"toggleShowRawResponse()\"\n class=\"et-qd-chip et-qd-chip-bordered\"\n >\n Toggle\n </button>\n </div>\n @if (showRawResponse()) {\n <pre>{{ query.rawState | json }}</pre>\n }\n </div>\n\n <div class=\"et-qd-list-item\">\n <p>Query config</p>\n\n <div>\n <button\n [ngClass]=\"{ 'et-qd-chip-secondary': !showQueryConfig() }\"\n (click)=\"toggleShowQueryConfig()\"\n class=\"et-qd-chip et-qd-chip-bordered\"\n >\n Toggle\n </button>\n </div>\n @if (showQueryConfig()) {\n <pre>{{ stringifiedQueryConfig() | json }}</pre>\n }\n </div>\n\n @if (!!query._queryConfig.entity) {\n <div class=\"et-qd-list-item\">\n <p>Entity store value</p>\n\n <div>\n <button\n [ngClass]=\"{ 'et-qd-chip-secondary': !showEntityStoreValue() }\"\n (click)=\"toggleShowEntityStoreValue()\"\n class=\"et-qd-chip et-qd-chip-bordered\"\n >\n Toggle\n </button>\n </div>\n @if (showEntityStoreValue()) {\n <pre>{{ selectedQueryEntityStoreValue$ | async | json }}</pre>\n }\n </div>\n }\n </div>\n }\n </div>\n </div>\n </div>\n }\n </div>\n}\n", styles: [":host{position:fixed;top:0;z-index:1000000;font-size:14px;color:#fff}.et-query-devtools-container{position:fixed;inset:0;background-color:#25292e;z-index:10000;overflow:auto;font-family:monospace;display:grid;grid-template-rows:auto auto auto minmax(0,1fr)}.et-query-devtools-container.et-query-devtools-container--transparent{opacity:.25;pointer-events:none}.et-query-devtools-container.et-query-devtools-container--transparent .et-query-devtools-translucent-btn{pointer-events:all}.et-query-devtools-container.et-query-devtools-container--snap-left{inset-inline-start:0;inset-block-start:0;inset-block-end:0;width:50%;border-right:1px solid rgb(37,41,46)}.et-query-devtools-container.et-query-devtools-container--snap-right{inset-inline-start:unset;inset-inline-end:0;inset-block-start:0;inset-block-end:0;width:50%;border-left:1px solid rgb(37,41,46)}.et-query-devtools-container.et-query-devtools-container--snap-top{inset-inline-start:0;inset-block-start:0;inset-inline-end:0;height:50%;border-bottom:1px solid rgb(37,41,46)}.et-query-devtools-container.et-query-devtools-container--snap-bottom{inset-inline-start:0;inset-block-start:unset;inset-block-end:0;inset-inline-end:0;height:50%;border-top:1px solid rgb(37,41,46)}.et-query-devtools-open-btn{position:fixed;inset-inline-start:0;inset-block-start:0;z-index:9999;all:unset;font-family:monospace}.et-qd-header{background-color:#00ffa1;padding:12px;display:grid;grid-template-columns:1fr auto auto;gap:12px;align-items:center}.et-qd-header__title{color:#25292e;margin:0;font-size:22px}.et-qd-header__select{display:grid;background-color:#25292e;border-radius:10px;overflow:hidden}.et-qd-header__select select{width:250px;color:#fff;padding:3px 10px 2px;border:none;background-color:#25292e;font-family:monospace}.et-qd-header__select label{padding:3px 10px;color:#25292e;font-size:12px;font-weight:700;color:#fff;border-bottom:1px solid gray}.et-qd-sub-header{background-color:#00b371;padding:12px;display:flex;gap:12px;flex-wrap:wrap}.et-qd-sub-header__divider{width:1px;background-color:#25292e}.et-qd-btn{background-color:#00ffa1;color:#25292e;border:none;padding:12px;cursor:pointer;font-size:14px;font-weight:700;text-align:center;text-decoration:none;display:inline-block;width:100%;transition:all .3s ease-in-out;font-family:monospace;border-radius:10px}.et-qd-btn:hover{background-color:#00cc81}.et-qd-btn.et-qd-btn-secondary{background-color:#25292e;color:#00ffa1}.et-qd-btn.et-qd-btn-secondary:hover{background-color:#3c424a}.et-qd-chip{background-color:#00ffa1;color:#25292e;border:none;padding:4px 9px;cursor:pointer;font-size:12px;font-weight:700;text-align:center;text-decoration:none;display:inline-block;transition:all .3s ease-in-out;font-family:monospace;border-radius:10px}.et-qd-chip:hover{background-color:#00cc81}.et-qd-chip.et-qd-chip-secondary{background-color:#25292e;color:#00ffa1}.et-qd-chip.et-qd-chip-secondary:hover{background-color:#3c424a}.et-qd-chip.et-qd-chip-bordered{border:1px solid rgb(0,255,161)}.et-qd-translucent-clickable{pointer-events:all}.et-qd-client{border-bottom:1px solid #3c424a;padding:12px}.et-qd-client__title{margin:0;font-size:14px;color:#fff;font-weight:700}.et-qd-client__actions{display:flex;gap:12px;margin-top:12px}.et-qd-queries{padding:12px;display:grid;grid-template-rows:auto auto minmax(0,1fr)}.et-qd-queries__actions{display:flex;gap:12px;margin-top:12px;margin-bottom:16px}.et-qd-queries__title{margin:0;font-size:14px;color:#fff;font-weight:700}.et-qd-queries__divider{width:1px;background-color:#3c424a}.et-qd-queries__browser{display:grid;grid-template-columns:1fr minmax(0,3fr);margin-left:-12px;margin-right:-12px;border-top:1px solid #3c424a;margin-bottom:-12px}.et-qd-queries__browser-list{border-right:1px solid #3c424a;list-style:none;padding:0;margin:0;display:grid;grid-auto-flow:row;grid-auto-rows:55px;overflow-y:auto;overflow-x:hidden}.et-qd-queries__browser-list li{margin:0}.et-qd-queries__browser-list li button{all:unset;font-family:monospace;box-sizing:border-box;width:100%;border:none;border-bottom:1px solid #3c424a;background-color:#25292e;color:#fff;text-align:left;padding:12px;height:100%;transition:all .3s ease-in-out;cursor:pointer;display:grid;gap:2px}.et-qd-queries__browser-list li button span{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.et-qd-queries__browser-list li button span:first-of-type{font-weight:700}.et-qd-queries__browser-list li button:hover,.et-qd-queries__browser-list li button.et-qd-query--active{background-color:#30363c}.et-qd-queries__browser-detail{padding:12px;overflow-y:auto;overflow-x:hidden}.et-qd-queries__browser-detail__title{margin:0;font-size:14px;color:#fff;font-weight:700}.et-qd-list{display:grid;gap:12px}.et-qd-list-item{display:grid}.et-qd-list-item p{font-weight:700;margin:0;padding-bottom:8px}.et-qd-list-item p+p{margin-top:-8px}.et-qd-list-item div+pre{margin-top:8px}.et-qd-list-item pre{margin:0;padding:4px;background-color:#0e1012;border-radius:4px;max-height:450px;overflow:auto}\n"], dependencies: [{ kind: "pipe", type: AsyncPipe, name: "async" }, { kind: "pipe", type: JsonPipe, name: "json" }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i1.NgSelectOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i1.ɵNgSelectMultipleOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i1.SelectControlValueAccessor, selector: "select:not([multiple])[formControlName],select:not([multiple])[formControl],select:not([multiple])[ngModel]", inputs: ["compareWith"] }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "pipe", type: QueryShortNamePipe, name: "queryShortName" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.ShadowDom }); }
|
|
1974
1981
|
}
|
|
1975
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.
|
|
1982
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.1", ngImport: i0, type: QueryDevtoolsComponent, decorators: [{
|
|
1976
1983
|
type: Component,
|
|
1977
1984
|
args: [{ selector: 'et-query-devtools', standalone: true, changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.ShadowDom, host: {
|
|
1978
1985
|
class: 'et-query-devtools',
|
|
@@ -2080,10 +2087,10 @@ class QueryDirective {
|
|
|
2080
2087
|
this._viewContainerRef.createEmbeddedView(this._mainTemplateRef, this._viewContext);
|
|
2081
2088
|
}
|
|
2082
2089
|
}
|
|
2083
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.
|
|
2084
|
-
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "17.
|
|
2090
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.2.1", ngImport: i0, type: QueryDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
2091
|
+
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "17.2.1", type: QueryDirective, isStandalone: true, selector: "[etQuery]", inputs: { query: ["etQuery", "query"], cache: ["etQueryCache", "cache"] }, ngImport: i0 }); }
|
|
2085
2092
|
}
|
|
2086
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.
|
|
2093
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.1", ngImport: i0, type: QueryDirective, decorators: [{
|
|
2087
2094
|
type: Directive,
|
|
2088
2095
|
args: [{
|
|
2089
2096
|
// eslint-disable-next-line @angular-eslint/directive-selector
|
|
@@ -2415,10 +2422,10 @@ class InfinityQueryDirective {
|
|
|
2415
2422
|
this._viewContext.currentQuery = null;
|
|
2416
2423
|
this._data$.next([]);
|
|
2417
2424
|
}
|
|
2418
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.
|
|
2419
|
-
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "17.
|
|
2425
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.2.1", ngImport: i0, type: InfinityQueryDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
2426
|
+
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "17.2.1", type: InfinityQueryDirective, isStandalone: true, selector: "[etInfinityQuery]", inputs: { infinityQuery: ["etInfinityQuery", "infinityQuery"] }, providers: [{ provide: INFINITY_QUERY_TOKEN, useExisting: InfinityQueryDirective }], exportAs: ["etInfinityQuery"], hostDirectives: [{ directive: i1$1.DelayableDirective }], ngImport: i0 }); }
|
|
2420
2427
|
}
|
|
2421
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.
|
|
2428
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.1", ngImport: i0, type: InfinityQueryDirective, decorators: [{
|
|
2422
2429
|
type: Directive,
|
|
2423
2430
|
args: [{
|
|
2424
2431
|
// eslint-disable-next-line @angular-eslint/directive-selector
|
|
@@ -2471,10 +2478,10 @@ class InfinityQueryTriggerDirective {
|
|
|
2471
2478
|
});
|
|
2472
2479
|
this._observer.observe(this._elementRef.nativeElement);
|
|
2473
2480
|
}
|
|
2474
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.
|
|
2475
|
-
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "17.
|
|
2481
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.2.1", ngImport: i0, type: InfinityQueryTriggerDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
2482
|
+
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "17.2.1", type: InfinityQueryTriggerDirective, isStandalone: true, selector: "[etInfinityQueryTrigger], et-infinity-query-trigger", inputs: { scrollContainerSelector: "scrollContainerSelector" }, ngImport: i0 }); }
|
|
2476
2483
|
}
|
|
2477
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.
|
|
2484
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.1", ngImport: i0, type: InfinityQueryTriggerDirective, decorators: [{
|
|
2478
2485
|
type: Directive,
|
|
2479
2486
|
args: [{
|
|
2480
2487
|
// eslint-disable-next-line @angular-eslint/directive-selector
|
|
@@ -2763,8 +2770,10 @@ class QueryForm {
|
|
|
2763
2770
|
return acc;
|
|
2764
2771
|
}, {});
|
|
2765
2772
|
}
|
|
2766
|
-
|
|
2773
|
+
// with prefix eg. page should become ${prefix}-page
|
|
2774
|
+
constructor(_fields, _options) {
|
|
2767
2775
|
this._fields = _fields;
|
|
2776
|
+
this._options = _options;
|
|
2768
2777
|
this._destroy$ = createDestroy();
|
|
2769
2778
|
this._unobserveTrigger$ = new Subject();
|
|
2770
2779
|
this._router = inject(Router);
|
|
@@ -2946,7 +2955,7 @@ class QueryForm {
|
|
|
2946
2955
|
setFormValueFromUrlQueryParams(options) {
|
|
2947
2956
|
let didValueChanges = false;
|
|
2948
2957
|
for (const [key, field] of Object.entries(this._fields)) {
|
|
2949
|
-
const value = options.queryParams[key];
|
|
2958
|
+
const value = options.queryParams[this._transformKeyToQueryParam(key)];
|
|
2950
2959
|
const valueDoesNotExist = value === undefined;
|
|
2951
2960
|
if (valueDoesNotExist)
|
|
2952
2961
|
continue;
|
|
@@ -2993,6 +3002,9 @@ class QueryForm {
|
|
|
2993
3002
|
}
|
|
2994
3003
|
return val ?? null;
|
|
2995
3004
|
}
|
|
3005
|
+
_transformKeyToQueryParam(key) {
|
|
3006
|
+
return this._options?.queryParamPrefix ? `${this._options.queryParamPrefix}-${key}` : key;
|
|
3007
|
+
}
|
|
2996
3008
|
_isDefaultValue(key, value) {
|
|
2997
3009
|
const normalizedValue = Array.isArray(value) ? `${ET_ARR_PREFIX}${JSON.stringify(value)}` : value;
|
|
2998
3010
|
return this._getDefaultValue(key) === normalizedValue;
|
|
@@ -3020,16 +3032,16 @@ class QueryForm {
|
|
|
3020
3032
|
_syncViaUrlQueryParams(values, replaceUrl) {
|
|
3021
3033
|
const queryParams = { ...clone(this._activatedRoute.snapshot.queryParams) };
|
|
3022
3034
|
for (const [key, value] of Object.entries(values)) {
|
|
3035
|
+
const queryParamKey = this._transformKeyToQueryParam(key);
|
|
3023
3036
|
const field = this._fields[key];
|
|
3024
3037
|
if (!field) {
|
|
3025
|
-
console.warn(`The field "${key}" is not defined in the QueryForm. Is it a typo?`, this);
|
|
3026
3038
|
continue;
|
|
3027
3039
|
}
|
|
3028
3040
|
if (this._isDefaultValue(key, value) || field.data.appendToUrl === false) {
|
|
3029
|
-
|
|
3041
|
+
queryParams[queryParamKey] = undefined;
|
|
3030
3042
|
}
|
|
3031
3043
|
else {
|
|
3032
|
-
queryParams[
|
|
3044
|
+
queryParams[queryParamKey] = field.data.valueToQueryParamTransformFn
|
|
3033
3045
|
? field.data.valueToQueryParamTransformFn?.(value)
|
|
3034
3046
|
: value;
|
|
3035
3047
|
}
|
|
@@ -3038,6 +3050,7 @@ class QueryForm {
|
|
|
3038
3050
|
this._router.navigate([], {
|
|
3039
3051
|
queryParams,
|
|
3040
3052
|
replaceUrl,
|
|
3053
|
+
queryParamsHandling: 'merge',
|
|
3041
3054
|
});
|
|
3042
3055
|
});
|
|
3043
3056
|
}
|