@ethlete/query 4.9.2 → 4.10.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 +5 -5
- 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/entity/entity-store.mjs +1 -1
- package/esm2022/lib/entity/entity.utils.mjs +1 -1
- package/esm2022/lib/infinite-query/infinity-query.mjs +4 -3
- package/esm2022/lib/query-form/query-form.mjs +9 -4
- package/esm2022/lib/query-form/query-form.types.mjs +1 -1
- package/fesm2022/ethlete-query.mjs +27 -21
- package/fesm2022/ethlete-query.mjs.map +1 -1
- package/lib/query-form/query-form.types.d.ts +7 -0
- package/package.json +2 -2
|
@@ -73,8 +73,9 @@ export class InfinityQuery {
|
|
|
73
73
|
}
|
|
74
74
|
}
|
|
75
75
|
return acc;
|
|
76
|
-
|
|
77
|
-
|
|
76
|
+
},
|
|
77
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
78
|
+
[]);
|
|
78
79
|
return fullData;
|
|
79
80
|
}), shareReplay({ bufferSize: 1, refCount: true }));
|
|
80
81
|
this._lastQuery$ = this._queries$.pipe(map((queries) => queries[queries.length - 1] ?? null), shareReplay({ bufferSize: 1, refCount: true }));
|
|
@@ -159,4 +160,4 @@ export class InfinityQuery {
|
|
|
159
160
|
}
|
|
160
161
|
}
|
|
161
162
|
}
|
|
162
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5maW5pdHktcXVlcnkuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL3F1ZXJ5L3NyYy9saWIvaW5maW5pdGUtcXVlcnkvaW5maW5pdHktcXVlcnkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGVBQWUsRUFBRSxhQUFhLEVBQUUsR0FBRyxFQUFFLEVBQUUsRUFBRSxXQUFXLEVBQUUsU0FBUyxFQUFFLEdBQUcsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUM1RixPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxVQUFVLENBQUM7QUFJL0MsTUFBTSxPQUFPLGFBQWE7SUFzRXhCLElBQUksWUFBWTtRQUNkLE9BQU8sSUFBSSxDQUFDLGFBQWEsQ0FBQyxZQUFZLEVBQUUsQ0FBQztJQUMzQyxDQUFDO0lBRUQsSUFBSSxXQUFXO1FBQ2IsT0FBTyxJQUFJLENBQUMsYUFBYSxDQUFDLFFBQVEsRUFBRSxDQUFDO0lBQ3ZDLENBQUM7SUFFRCxJQUFJLHNCQUFzQjtRQUN4QixPQUFPLElBQUksQ0FBQyx1QkFBdUIsQ0FBQyxZQUFZLEVBQUUsQ0FBQztJQUNyRCxDQUFDO0lBRUQsSUFBSSxxQkFBcUI7UUFDdkIsT0FBTyxJQUFJLENBQUMsdUJBQXVCLENBQUMsUUFBUSxFQUFFLENBQUM7SUFDakQsQ0FBQztJQUVELElBQUksV0FBVztRQUNiLE9BQU8sSUFBSSxDQUFDLFlBQVksQ0FBQyxZQUFZLEVBQUUsQ0FBQztJQUMxQyxDQUFDO0lBRUQsSUFBSSxVQUFVO1FBQ1osT0FBTyxJQUFJLENBQUMsWUFBWSxDQUFDLFFBQVEsRUFBRSxDQUFDO0lBQ3RDLENBQUM7SUFFRCxJQUFJLGFBQWE7UUFDZixPQUFPLElBQUksQ0FBQyxjQUFjLENBQUMsWUFBWSxFQUFFLENBQUM7SUFDNUMsQ0FBQztJQUVELElBQUksWUFBWTtRQUNkLE9BQU8sSUFBSSxDQUFDLGNBQWMsQ0FBQyxRQUFRLEVBQUUsQ0FBQztJQUN4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Q0FBQyxrQkFBa0IsQ0FBQyxFQUFFO29CQUNwQixHQUFHLENBQUMsTUFBTSxFQUFFLFdBQVcsRUFBRSxDQUFDLGtCQUFrQixDQUFDLElBQUksRUFBRSxDQUFDO29CQUNwRCxHQUFHLFNBQVMsQ0FBQyxrQkFBa0IsQ0FBQztpQkFDakM7YUFDRixDQUFDO1FBRVIsT0FBTyxVQUFVLENBQUM7SUFDcEIsQ0FBQztJQUVPLHFCQUFxQixDQUFDLFFBQWdEO1FBQzVFLE1BQU0sR0FBRyxHQUFHLFFBQVEsSUFBSSxPQUFPLENBQUM7UUFFaEMsUUFBUSxHQUFHLEVBQUU7WUFDWCxLQUFLLE1BQU07Z0JBQ1QsT0FBTyxZQUFZLENBQUM7WUFDdEIsS0FBSyxPQUFPO2dCQUNWLE9BQU8sYUFBYSxDQUFDO1lBQ3ZCLEtBQUssTUFBTTtnQkFDVCxPQUFPLE1BQU0sQ0FBQztZQUNoQixLQUFLLFFBQVE7Z0JBQ1gsT0FBTyxTQUFTLENBQUM7WUFDbkIsS0FBSyxVQUFVO2dCQUNiLE9BQU8sV0FBVyxDQUFDO1lBQ3JCO2dCQUNFLE1BQU0sSUFBSSxLQUFLLENBQUMsOEJBQThCLEdBQUcsRUFBRSxDQUFDLENBQUM7U0FDeEQ7SUFDSCxDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBCZWhhdmlvclN1YmplY3QsIGNvbWJpbmVMYXRlc3QsIG1hcCwgb2YsIHNoYXJlUmVwbGF5LCBzd2l0Y2hNYXAsIHRhcCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgaXNRdWVyeVN0YXRlU3VjY2VzcyB9IGZyb20gJy4uL3F1ZXJ5JztcbmltcG9ydCB7IEFueVF1ZXJ5Q3JlYXRvciwgQ29uc3RydWN0UXVlcnksIFF1ZXJ5QXJnc09mLCBRdWVyeVJlc3BvbnNlT2YgfSBmcm9tICcuLi9xdWVyeS1jcmVhdG9yJztcbmltcG9ydCB7IEluZmluaXR5UXVlcnlDb25maWcsIEluZmluaXR5UXVlcnlQYXJhbUxvY2F0aW9uIH0gZnJvbSAnLi9pbmZpbml0eS1xdWVyeS50eXBlcyc7XG5cbmV4cG9ydCBjbGFzcyBJbmZpbml0eVF1ZXJ5PFxuICBRdWVyeUNyZWF0b3IgZXh0ZW5kcyBBbnlRdWVyeUNyZWF0b3IsXG4gIFF1ZXJ5IGV4dGVuZHMgQ29uc3RydWN0UXVlcnk8UXVlcnlDcmVhdG9yPixcbiAgQXJncyBleHRlbmRzIFF1ZXJ5QXJnc09mPFF1ZXJ5Q3JlYXRvcj4sXG4gIFF1ZXJ5UmVzcG9uc2UgZXh0ZW5kcyBRdWVyeVJlc3BvbnNlT2Y8UXVlcnlDcmVhdG9yPixcbiAgSW5maW5pdHlSZXNwb25zZSBleHRlbmRzIHVua25vd25bXSxcbj4ge1xuICBwcml2YXRlIHJlYWRvbmx5IF9xdWVyaWVzJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8UXVlcnlbXT4oW10pO1xuICBwcml2YXRlIHJlYWRvbmx5IF9jdXJyZW50UGFnZSQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PG51bWJlciB8IG51bGw+KG51bGwpO1xuICBwcml2YXRlIHJlYWRvbmx5IF9jdXJyZW50Q2FsY3VsYXRlZFBhZ2UkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxudW1iZXIgfCBudWxsPihudWxsKTtcbiAgcHJpdmF0ZSByZWFkb25seSBfdG90YWxQYWdlcyQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PG51bWJlciB8IG51bGw+KG51bGwpO1xuICBwcml2YXRlIHJlYWRvbmx5IF9pdGVtc1BlclBhZ2UkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxudW1iZXI+KHRoaXMuX2NvbmZpZy5saW1pdFBhcmFtPy52YWx1ZSA/PyAxMCk7XG5cbiAgcHJpdmF0ZSByZWFkb25seSBfZGF0YSQgPSB0aGlzLl9xdWVyaWVzJC5waXBlKFxuICAgIHN3aXRjaE1hcCgocXVlcmllcykgPT4ge1xuICAgICAgaWYgKCFxdWVyaWVzLmxlbmd0aCkge1xuICAgICAgICByZXR1cm4gb2YoW10pO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gY29tYmluZUxhdGVzdChxdWVyaWVzLm1hcCgocXVlcnkpID0+IHF1ZXJ5LnN0YXRlJC5waXBlKG1hcCgoc3RhdGUpID0+ICh7IHN0YXRlLCBxdWVyeSB9KSkpKSk7XG4gICAgfSksXG4gICAgdGFwKChzdGF0ZU1hcHMpID0+IHtcbiAgICAgIGNvbnN0IGxhc3RTdGF0ZSA9IHN0YXRlTWFwc1tzdGF0ZU1hcHMubGVuZ3RoIC0gMV0/LnN0YXRlO1xuICAgICAgY29uc3QgbGFzdFF1ZXJ5ID0gc3RhdGVNYXBzW3N0YXRlTWFwcy5sZW5ndGggLSAxXT8ucXVlcnk7XG5cbiAgICAgIGlmICghaXNRdWVyeVN0YXRlU3VjY2VzcyhsYXN0U3RhdGUpIHx8ICFsYXN0UXVlcnkpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICBjb25zdCB0b3RhbFBhZ2VzID1cbiAgICAgICAgdGhpcy5fY29uZmlnLnJlc3BvbnNlLnRvdGFsUGFnZXNFeHRyYWN0b3I/Lih7XG4gICAgICAgICAgcmVzcG9uc2U6IGxhc3RTdGF0ZS5yZXNwb25zZSBhcyBRdWVyeVJlc3BvbnNlLFxuICAgICAgICAgIGl0ZW1zUGVyUGFnZTogdGhpcy5pdGVtc1BlclBhZ2UsXG4gICAgICAgICAgYXJnczogbGFzdFF1ZXJ5Ll9hcmd1bWVudHMsXG4gICAgICAgIH0pID8/XG4gICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55XG4gICAgICAgIChsYXN0U3RhdGUucmVzcG9uc2UgYXMgYW55KT8udG90YWxQYWdlcyA/P1xuICAgICAgICBudWxsO1xuXG4gICAgICB0aGlzLl90b3RhbFBhZ2VzJC5uZXh0KHRvdGFsUGFnZXMpO1xuICAgIH0pLFxuICAgIG1hcCgoc3RhdGVNYXBzKSA9PiB7XG4gICAgICBjb25zdCBmdWxsRGF0YSA9IHN0YXRlTWFwcy5yZWR1Y2UoKGFjYywgc3RhdGVNYXApID0+IHtcbiAgICAgICAgaWYgKGlzUXVlcnlTdGF0ZVN1Y2Nlc3Moc3RhdGVNYXAuc3RhdGUpKSB7XG4gICAgICAgICAgbGV0IGRhdGEgPSB0aGlzLl9jb25maWc/LnJlc3BvbnNlLnZhbHVlRXh0cmFjdG9yKHN0YXRlTWFwLnN0YXRlLnJlc3BvbnNlIGFzIFF1ZXJ5UmVzcG9uc2UpO1xuXG4gICAgICAgICAgaWYgKHRoaXMuX2NvbmZpZy5yZXNwb25zZS5yZXZlcnNlKSB7XG4gICAgICAgICAgICBkYXRhID0gWy4uLmRhdGFdLnJldmVyc2UoKSBhcyBJbmZpbml0eVJlc3BvbnNlO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIGlmICh0aGlzLl9jb25maWcucmVzcG9uc2UuYXBwZW5kSXRlbXNUbyA9PT0gJ3N0YXJ0Jykge1xuICAgICAgICAgICAgYWNjLnVuc2hpZnQoLi4uZGF0YSk7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGFjYy5wdXNoKC4uLmRhdGEpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gYWNjO1xuICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueVxuICAgICAgfSwgW10gYXMgYW55IGFzIEluZmluaXR5UmVzcG9uc2UpO1xuXG4gICAgICByZXR1cm4gZnVsbERhdGE7XG4gICAgfSksXG4gICAgc2hhcmVSZXBsYXkoeyBidWZmZXJTaXplOiAxLCByZWZDb3VudDogdHJ1ZSB9KSxcbiAgKTtcblxuICBwcml2YXRlIHJlYWRvbmx5IF9sYXN0UXVlcnkkID0gdGhpcy5fcXVlcmllcyQucGlwZShcbiAgICBtYXAoKHF1ZXJpZXMpID0+IHF1ZXJpZXNbcXVlcmllcy5sZW5ndGggLSAxXSA/PyBudWxsKSxcbiAgICBzaGFyZVJlcGxheSh7IGJ1ZmZlclNpemU6IDEsIHJlZkNvdW50OiB0cnVlIH0pLFxuICApO1xuXG4gIGdldCBjdXJyZW50UGFnZSQoKSB7XG4gICAgcmV0dXJuIHRoaXMuX2N1cnJlbnRQYWdlJC5hc09ic2VydmFibGUoKTtcbiAgfVxuXG4gIGdldCBjdXJyZW50UGFnZSgpIHtcbiAgICByZXR1cm4gdGhpcy5fY3VycmVudFBhZ2UkLmdldFZhbHVlKCk7XG4gIH1cblxuICBnZXQgY3VycmVudENhbGN1bGF0ZWRQYWdlJCgpIHtcbiAgICByZXR1cm4gdGhpcy5fY3VycmVudENhbGN1bGF0ZWRQYWdlJC5hc09ic2VydmFibGUoKTtcbiAgfVxuXG4gIGdldCBjdXJyZW50Q2FsY3VsYXRlZFBhZ2UoKSB7XG4gICAgcmV0dXJuIHRoaXMuX2N1cnJlbnRDYWxjdWxhdGVkUGFnZSQuZ2V0VmFsdWUoKTtcbiAgfVxuXG4gIGdldCB0b3RhbFBhZ2VzJCgpIHtcbiAgICByZXR1cm4gdGhpcy5fdG90YWxQYWdlcyQuYXNPYnNlcnZhYmxlKCk7XG4gIH1cblxuICBnZXQgdG90YWxQYWdlcygpIHtcbiAgICByZXR1cm4gdGhpcy5fdG90YWxQYWdlcyQuZ2V0VmFsdWUoKTtcbiAgfVxuXG4gIGdldCBpdGVtc1BlclBhZ2UkKCkge1xuICAgIHJldHVybiB0aGlzLl9pdGVtc1BlclBhZ2UkLmFzT2JzZXJ2YWJsZSgpO1xuICB9XG5cbiAgZ2V0IGl0ZW1zUGVyUGFnZSgpIHtcbiAgICByZXR1cm4gdGhpcy5faXRlbXNQZXJQYWdlJC5nZXRWYWx1ZSgpO1xuICB9XG5cbiAgZ2V0IGRhdGEkKCkge1xuICAgIHJldHVybiB0aGlzLl9kYXRhJDtcbiAgfVxuXG4gIGdldCBjdXJyZW50UXVlcnkkKCkge1xuICAgIHJldHVybiB0aGlzLl9sYXN0UXVlcnkkO1xuICB9XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSBfY29uZmlnOiBJbmZpbml0eVF1ZXJ5Q29uZmlnPFF1ZXJ5Q3JlYXRvciwgQXJncywgUXVlcnlSZXNwb25zZSwgSW5maW5pdHlSZXNwb25zZT4pIHt9XG5cbiAgbmV4dFBhZ2UoKSB7XG4gICAgY29uc3QgbmV3UGFnZSA9ICh0aGlzLl9jdXJyZW50UGFnZSQudmFsdWUgPz8gMCkgKyAxO1xuICAgIGNvbnN0IGNhbGN1bGF0ZWRQYWdlID1cbiAgICAgIHRoaXMuX2NvbmZpZz8ucGFnZVBhcmFtPy52YWx1ZUNhbGN1bGF0b3I/Lih7XG4gICAgICAgIHBhZ2U6IG5ld1BhZ2UsXG4gICAgICAgIHRvdGFsUGFnZXM6IHRoaXMudG90YWxQYWdlcyxcbiAgICAgICAgaXRlbXNQZXJQYWdlOiB0aGlzLml0ZW1zUGVyUGFnZSxcbiAgICAgIH0pID8/IG5ld1BhZ2U7XG5cbiAgICBpZiAodGhpcy50b3RhbFBhZ2VzICE9PSBudWxsICYmIGNhbGN1bGF0ZWRQYWdlID4gdGhpcy50b3RhbFBhZ2VzKSB7XG4gICAgICBjb25zb2xlLmVycm9yKFxuICAgICAgICAnQ2Fubm90IGxvYWQgbW9yZSBwYWdlcywgYWxyZWFkeSBhdCB0aGUgZW5kLiBNYWtlIHN1cmUgdG8gbm90IHJlbmRlciB0aGUgaW5maW5pdHkgcXVlcnkgdHJpZ2dlciB1c2luZyAqbmdJZiBjYW5Mb2FkTW9yZScsXG4gICAgICApO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IGFyZ3MgPSB0aGlzLl9wcmVwYXJlQXJncyh0aGlzLl9jb25maWcsIGNhbGN1bGF0ZWRQYWdlKTtcblxuICAgIGNvbnN0IHF1ZXJ5ID0gdGhpcy5fY29uZmlnLnF1ZXJ5Q3JlYXRvci5wcmVwYXJlKGFyZ3MpLmV4ZWN1dGUoKSBhcyBRdWVyeTtcblxuICAgIHRoaXMuX3F1ZXJpZXMkLm5leHQoWy4uLnRoaXMuX3F1ZXJpZXMkLnZhbHVlLCBxdWVyeV0pO1xuXG4gICAgdGhpcy5fY3VycmVudFBhZ2UkLm5leHQobmV3UGFnZSk7XG4gICAgdGhpcy5fY3VycmVudENhbGN1bGF0ZWRQYWdlJC5uZXh0KGNhbGN1bGF0ZWRQYWdlKTtcbiAgfVxuXG4gIHJlc2V0KFxuICAgIG5ld0NvbmZpZz86IE9taXQ8XG4gICAgICBJbmZpbml0eVF1ZXJ5Q29uZmlnPFF1ZXJ5Q3JlYXRvciwgQXJncywgUXVlcnlSZXNwb25zZSwgSW5maW5pdHlSZXNwb25zZT4sXG4gICAgICAncXVlcnlDcmVhdG9yJyB8ICdyZXNwb25zZSdcbiAgICA+LFxuICApIHtcbiAgICB0aGlzLl9jb25maWcgPSB7IC4uLnRoaXMuX2NvbmZpZywgLi4uKG5ld0NvbmZpZyA/PyB7fSkgfTtcblxuICAgIHRoaXMuX2N1cnJlbnRQYWdlJC5uZXh0KG51bGwpO1xuICAgIHRoaXMuX2N1cnJlbnRDYWxjdWxhdGVkUGFnZSQubmV4dChudWxsKTtcbiAgICB0aGlzLl90b3RhbFBhZ2VzJC5uZXh0KG51bGwpO1xuICAgIHRoaXMuX2l0ZW1zUGVyUGFnZSQubmV4dCh0aGlzLl9jb25maWcubGltaXRQYXJhbT8udmFsdWUgPz8gMTApO1xuICAgIHRoaXMuX3F1ZXJpZXMkLm5leHQoW10pO1xuXG4gICAgdGhpcy5uZXh0UGFnZSgpO1xuICB9XG5cbiAgcHJpdmF0ZSBfcHJlcGFyZUFyZ3MoY29uZmlnOiBJbmZpbml0eVF1ZXJ5Q29uZmlnPFF1ZXJ5Q3JlYXRvciwgQXJncywgUXVlcnlSZXNwb25zZSwgSW5maW5pdHlSZXNwb25zZT4sIHBhZ2U6IG51bWJlcikge1xuICAgIGNvbnN0IHBhZ2VQYXJhbUxvY2F0aW9uID0gdGhpcy5fZ2V0UGFnZVBhcmFtTG9jYXRpb24oY29uZmlnPy5wYWdlUGFyYW0/LmxvY2F0aW9uKTtcblxuICAgIGNvbnN0IHBhZ2VBcmdzID0ge1xuICAgICAgW3BhZ2VQYXJhbUxvY2F0aW9uXToge1xuICAgICAgICBbY29uZmlnPy5wYWdlUGFyYW0/LmtleSA/PyAncGFnZSddOiBwYWdlLFxuICAgICAgfSxcbiAgICB9O1xuXG4gICAgY29uc3QgbGltaXRQYXJhbUxvY2F0aW9uID0gdGhpcy5fZ2V0UGFnZVBhcmFtTG9jYXRpb24oY29uZmlnPy5saW1pdFBhcmFtPy5sb2NhdGlvbik7XG5cbiAgICBjb25zdCBsaW1pdEFyZ3MgPSB7XG4gICAgICBbbGltaXRQYXJhbUxvY2F0aW9uXToge1xuICAgICAgICBbY29uZmlnPy5saW1pdFBhcmFtPy5rZXkgPz8gJ2xpbWl0J106IGNvbmZpZz8ubGltaXRQYXJhbT8udmFsdWUgPz8gMTAsXG4gICAgICB9LFxuICAgIH07XG5cbiAgICBjb25zdCBkZWZhdWx0Q29uZmlnID0gY29uZmlnPy5kZWZhdWx0QXJncyA/PyB7fTtcblxuICAgIGNvbnN0IG1lcmdlZEFyZ3MgPVxuICAgICAgcGFnZVBhcmFtTG9jYXRpb24gPT09IGxpbWl0UGFyYW1Mb2NhdGlvblxuICAgICAgICA/IHtcbiAgICAgICAgICAgIC4uLmRlZmF1bHRDb25maWcsXG4gICAgICAgICAgICBbcGFnZVBhcmFtTG9jYXRpb25dOiB7XG4gICAgICAgICAgICAgIC4uLihjb25maWc/LmRlZmF1bHRBcmdzPy5bcGFnZVBhcmFtTG9jYXRpb25dID8/IHt9KSxcbiAgICAgICAgICAgICAgLi4ucGFnZUFyZ3NbbGltaXRQYXJhbUxvY2F0aW9uXSxcbiAgICAgICAgICAgICAgLi4ubGltaXRBcmdzW2xpbWl0UGFyYW1Mb2NhdGlvbl0sXG4gICAgICAgICAgICB9LFxuICAgICAgICAgIH1cbiAgICAgICAgOiB7XG4gICAgICAgICAgICAuLi5kZWZhdWx0Q29uZmlnLFxuICAgICAgICAgICAgW3BhZ2VQYXJhbUxvY2F0aW9uXToge1xuICAgICAgICAgICAgICAuLi4oY29uZmlnPy5kZWZhdWx0QXJncz8uW3BhZ2VQYXJhbUxvY2F0aW9uXSA/PyB7fSksXG4gICAgICAgICAgICAgIC4uLnBhZ2VBcmdzW3BhZ2VQYXJhbUxvY2F0aW9uXSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBbbGltaXRQYXJhbUxvY2F0aW9uXToge1xuICAgICAgICAgICAgICAuLi4oY29uZmlnPy5kZWZhdWx0QXJncz8uW2xpbWl0UGFyYW1Mb2NhdGlvbl0gPz8ge30pLFxuICAgICAgICAgICAgICAuLi5saW1pdEFyZ3NbbGltaXRQYXJhbUxvY2F0aW9uXSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgfTtcblxuICAgIHJldHVybiBtZXJnZWRBcmdzO1xuICB9XG5cbiAgcHJpdmF0ZSBfZ2V0UGFnZVBhcmFtTG9jYXRpb24obG9jYXRpb246IEluZmluaXR5UXVlcnlQYXJhbUxvY2F0aW9uIHwgdW5kZWZpbmVkKSB7XG4gICAgY29uc3QgbG9jID0gbG9jYXRpb24gPz8gJ3F1ZXJ5JztcblxuICAgIHN3aXRjaCAobG9jKSB7XG4gICAgICBjYXNlICdwYXRoJzpcbiAgICAgICAgcmV0dXJuICdwYXRoUGFyYW1zJztcbiAgICAgIGNhc2UgJ3F1ZXJ5JzpcbiAgICAgICAgcmV0dXJuICdxdWVyeVBhcmFtcyc7XG4gICAgICBjYXNlICdib2R5JzpcbiAgICAgICAgcmV0dXJuICdib2R5JztcbiAgICAgIGNhc2UgJ2hlYWRlcic6XG4gICAgICAgIHJldHVybiAnaGVhZGVycyc7XG4gICAgICBjYXNlICd2YXJpYWJsZSc6XG4gICAgICAgIHJldHVybiAndmFyaWFibGVzJztcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihgSW52YWxpZCBwYWdlUGFyYW1Mb2NhdGlvbjogJHtsb2N9YCk7XG4gICAgfVxuICB9XG59XG4iXX0=
|
|
163
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5maW5pdHktcXVlcnkuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL3F1ZXJ5L3NyYy9saWIvaW5maW5pdGUtcXVlcnkvaW5maW5pdHktcXVlcnkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGVBQWUsRUFBRSxhQUFhLEVBQUUsR0FBRyxFQUFFLEVBQUUsRUFBRSxXQUFXLEVBQUUsU0FBUyxFQUFFLEdBQUcsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUM1RixPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxVQUFVLENBQUM7QUFJL0MsTUFBTSxPQUFPLGFBQWE7SUF5RXhCLElBQUksWUFBWTtRQUNkLE9BQU8sSUFBSSxDQUFDLGFBQWEsQ0FBQyxZQUFZLEVBQUUsQ0FBQztJQUMzQyxDQUFDO0lBRUQsSUFBSSxXQUFXO1FBQ2IsT0FBTyxJQUFJLENBQUMsYUFBYSxDQUFDLFFBQVEsRUFBRSxDQUFDO0lBQ3ZDLENBQUM7SUFFRCxJQUFJLHNCQUFzQjtRQUN4QixPQUFPLElBQUksQ0FBQyx1QkFBdUIsQ0FBQyxZQUFZLEVBQUUsQ0FBQztJQUNyRCxDQUFDO0lBRUQsSUFBSSxxQkFBcUI7UUFDdkIsT0FBTyxJQUFJLENBQUMsdUJBQXVCLENBQUMsUUFBUSxFQUFFLENBQUM7SUFDakQsQ0FBQztJQUVELElBQUksV0FBVztRQUNiLE9BQU8sSUFBSSxDQUFDLFlBQVksQ0FBQyxZQUFZLEVBQUUsQ0FBQztJQUMxQyxDQUFDO0lBRUQsSUFBSSxVQUFVO1FBQ1osT0FBTyxJQUFJLENBQUMsWUFBWSxDQUFDLFFBQVEsRUFBRSxDQUFDO0lBQ3RDLENBQUM7SUFFRCxJQUFJLGFBQWE7UUFDZixPQUFPLElBQUksQ0FBQyxjQUFjLENBQUMsWUFBWSxFQUFFLENBQUM7SUFDNUMsQ0FBQztJQUVELElBQUksWUFBWTtRQUNkLE9BQU8sSUFBSSxDQUFDLGNBQWMsQ0FBQyxRQUFRLEVBQUUsQ0FBQztJQUN4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Q0FBQyxrQkFBa0IsQ0FBQyxFQUFFO29CQUNwQixHQUFHLENBQUMsTUFBTSxFQUFFLFdBQVcsRUFBRSxDQUFDLGtCQUFrQixDQUFDLElBQUksRUFBRSxDQUFDO29CQUNwRCxHQUFHLFNBQVMsQ0FBQyxrQkFBa0IsQ0FBQztpQkFDakM7YUFDRixDQUFDO1FBRVIsT0FBTyxVQUFVLENBQUM7SUFDcEIsQ0FBQztJQUVPLHFCQUFxQixDQUFDLFFBQWdEO1FBQzVFLE1BQU0sR0FBRyxHQUFHLFFBQVEsSUFBSSxPQUFPLENBQUM7UUFFaEMsUUFBUSxHQUFHLEVBQUU7WUFDWCxLQUFLLE1BQU07Z0JBQ1QsT0FBTyxZQUFZLENBQUM7WUFDdEIsS0FBSyxPQUFPO2dCQUNWLE9BQU8sYUFBYSxDQUFDO1lBQ3ZCLEtBQUssTUFBTTtnQkFDVCxPQUFPLE1BQU0sQ0FBQztZQUNoQixLQUFLLFFBQVE7Z0JBQ1gsT0FBTyxTQUFTLENBQUM7WUFDbkIsS0FBSyxVQUFVO2dCQUNiLE9BQU8sV0FBVyxDQUFDO1lBQ3JCO2dCQUNFLE1BQU0sSUFBSSxLQUFLLENBQUMsOEJBQThCLEdBQUcsRUFBRSxDQUFDLENBQUM7U0FDeEQ7SUFDSCxDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBCZWhhdmlvclN1YmplY3QsIGNvbWJpbmVMYXRlc3QsIG1hcCwgb2YsIHNoYXJlUmVwbGF5LCBzd2l0Y2hNYXAsIHRhcCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgaXNRdWVyeVN0YXRlU3VjY2VzcyB9IGZyb20gJy4uL3F1ZXJ5JztcbmltcG9ydCB7IEFueVF1ZXJ5Q3JlYXRvciwgQ29uc3RydWN0UXVlcnksIFF1ZXJ5QXJnc09mLCBRdWVyeVJlc3BvbnNlT2YgfSBmcm9tICcuLi9xdWVyeS1jcmVhdG9yJztcbmltcG9ydCB7IEluZmluaXR5UXVlcnlDb25maWcsIEluZmluaXR5UXVlcnlQYXJhbUxvY2F0aW9uIH0gZnJvbSAnLi9pbmZpbml0eS1xdWVyeS50eXBlcyc7XG5cbmV4cG9ydCBjbGFzcyBJbmZpbml0eVF1ZXJ5PFxuICBRdWVyeUNyZWF0b3IgZXh0ZW5kcyBBbnlRdWVyeUNyZWF0b3IsXG4gIFF1ZXJ5IGV4dGVuZHMgQ29uc3RydWN0UXVlcnk8UXVlcnlDcmVhdG9yPixcbiAgQXJncyBleHRlbmRzIFF1ZXJ5QXJnc09mPFF1ZXJ5Q3JlYXRvcj4sXG4gIFF1ZXJ5UmVzcG9uc2UgZXh0ZW5kcyBRdWVyeVJlc3BvbnNlT2Y8UXVlcnlDcmVhdG9yPixcbiAgSW5maW5pdHlSZXNwb25zZSBleHRlbmRzIHVua25vd25bXSxcbj4ge1xuICBwcml2YXRlIHJlYWRvbmx5IF9xdWVyaWVzJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8UXVlcnlbXT4oW10pO1xuICBwcml2YXRlIHJlYWRvbmx5IF9jdXJyZW50UGFnZSQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PG51bWJlciB8IG51bGw+KG51bGwpO1xuICBwcml2YXRlIHJlYWRvbmx5IF9jdXJyZW50Q2FsY3VsYXRlZFBhZ2UkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxudW1iZXIgfCBudWxsPihudWxsKTtcbiAgcHJpdmF0ZSByZWFkb25seSBfdG90YWxQYWdlcyQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PG51bWJlciB8IG51bGw+KG51bGwpO1xuICBwcml2YXRlIHJlYWRvbmx5IF9pdGVtc1BlclBhZ2UkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxudW1iZXI+KHRoaXMuX2NvbmZpZy5saW1pdFBhcmFtPy52YWx1ZSA/PyAxMCk7XG5cbiAgcHJpdmF0ZSByZWFkb25seSBfZGF0YSQgPSB0aGlzLl9xdWVyaWVzJC5waXBlKFxuICAgIHN3aXRjaE1hcCgocXVlcmllcykgPT4ge1xuICAgICAgaWYgKCFxdWVyaWVzLmxlbmd0aCkge1xuICAgICAgICByZXR1cm4gb2YoW10pO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gY29tYmluZUxhdGVzdChxdWVyaWVzLm1hcCgocXVlcnkpID0+IHF1ZXJ5LnN0YXRlJC5waXBlKG1hcCgoc3RhdGUpID0+ICh7IHN0YXRlLCBxdWVyeSB9KSkpKSk7XG4gICAgfSksXG4gICAgdGFwKChzdGF0ZU1hcHMpID0+IHtcbiAgICAgIGNvbnN0IGxhc3RTdGF0ZSA9IHN0YXRlTWFwc1tzdGF0ZU1hcHMubGVuZ3RoIC0gMV0/LnN0YXRlO1xuICAgICAgY29uc3QgbGFzdFF1ZXJ5ID0gc3RhdGVNYXBzW3N0YXRlTWFwcy5sZW5ndGggLSAxXT8ucXVlcnk7XG5cbiAgICAgIGlmICghaXNRdWVyeVN0YXRlU3VjY2VzcyhsYXN0U3RhdGUpIHx8ICFsYXN0UXVlcnkpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICBjb25zdCB0b3RhbFBhZ2VzID1cbiAgICAgICAgdGhpcy5fY29uZmlnLnJlc3BvbnNlLnRvdGFsUGFnZXNFeHRyYWN0b3I/Lih7XG4gICAgICAgICAgcmVzcG9uc2U6IGxhc3RTdGF0ZS5yZXNwb25zZSBhcyBRdWVyeVJlc3BvbnNlLFxuICAgICAgICAgIGl0ZW1zUGVyUGFnZTogdGhpcy5pdGVtc1BlclBhZ2UsXG4gICAgICAgICAgYXJnczogbGFzdFF1ZXJ5Ll9hcmd1bWVudHMsXG4gICAgICAgIH0pID8/XG4gICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55XG4gICAgICAgIChsYXN0U3RhdGUucmVzcG9uc2UgYXMgYW55KT8udG90YWxQYWdlcyA/P1xuICAgICAgICBudWxsO1xuXG4gICAgICB0aGlzLl90b3RhbFBhZ2VzJC5uZXh0KHRvdGFsUGFnZXMpO1xuICAgIH0pLFxuICAgIG1hcCgoc3RhdGVNYXBzKSA9PiB7XG4gICAgICBjb25zdCBmdWxsRGF0YSA9IHN0YXRlTWFwcy5yZWR1Y2UoXG4gICAgICAgIChhY2MsIHN0YXRlTWFwKSA9PiB7XG4gICAgICAgICAgaWYgKGlzUXVlcnlTdGF0ZVN1Y2Nlc3Moc3RhdGVNYXAuc3RhdGUpKSB7XG4gICAgICAgICAgICBsZXQgZGF0YSA9IHRoaXMuX2NvbmZpZz8ucmVzcG9uc2UudmFsdWVFeHRyYWN0b3Ioc3RhdGVNYXAuc3RhdGUucmVzcG9uc2UgYXMgUXVlcnlSZXNwb25zZSk7XG5cbiAgICAgICAgICAgIGlmICh0aGlzLl9jb25maWcucmVzcG9uc2UucmV2ZXJzZSkge1xuICAgICAgICAgICAgICBkYXRhID0gWy4uLmRhdGFdLnJldmVyc2UoKSBhcyBJbmZpbml0eVJlc3BvbnNlO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAodGhpcy5fY29uZmlnLnJlc3BvbnNlLmFwcGVuZEl0ZW1zVG8gPT09ICdzdGFydCcpIHtcbiAgICAgICAgICAgICAgYWNjLnVuc2hpZnQoLi4uZGF0YSk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICBhY2MucHVzaCguLi5kYXRhKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgICAgcmV0dXJuIGFjYztcbiAgICAgICAgfSxcbiAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnlcbiAgICAgICAgW10gYXMgYW55IGFzIEluZmluaXR5UmVzcG9uc2UsXG4gICAgICApO1xuXG4gICAgICByZXR1cm4gZnVsbERhdGE7XG4gICAgfSksXG4gICAgc2hhcmVSZXBsYXkoeyBidWZmZXJTaXplOiAxLCByZWZDb3VudDogdHJ1ZSB9KSxcbiAgKTtcblxuICBwcml2YXRlIHJlYWRvbmx5IF9sYXN0UXVlcnkkID0gdGhpcy5fcXVlcmllcyQucGlwZShcbiAgICBtYXAoKHF1ZXJpZXMpID0+IHF1ZXJpZXNbcXVlcmllcy5sZW5ndGggLSAxXSA/PyBudWxsKSxcbiAgICBzaGFyZVJlcGxheSh7IGJ1ZmZlclNpemU6IDEsIHJlZkNvdW50OiB0cnVlIH0pLFxuICApO1xuXG4gIGdldCBjdXJyZW50UGFnZSQoKSB7XG4gICAgcmV0dXJuIHRoaXMuX2N1cnJlbnRQYWdlJC5hc09ic2VydmFibGUoKTtcbiAgfVxuXG4gIGdldCBjdXJyZW50UGFnZSgpIHtcbiAgICByZXR1cm4gdGhpcy5fY3VycmVudFBhZ2UkLmdldFZhbHVlKCk7XG4gIH1cblxuICBnZXQgY3VycmVudENhbGN1bGF0ZWRQYWdlJCgpIHtcbiAgICByZXR1cm4gdGhpcy5fY3VycmVudENhbGN1bGF0ZWRQYWdlJC5hc09ic2VydmFibGUoKTtcbiAgfVxuXG4gIGdldCBjdXJyZW50Q2FsY3VsYXRlZFBhZ2UoKSB7XG4gICAgcmV0dXJuIHRoaXMuX2N1cnJlbnRDYWxjdWxhdGVkUGFnZSQuZ2V0VmFsdWUoKTtcbiAgfVxuXG4gIGdldCB0b3RhbFBhZ2VzJCgpIHtcbiAgICByZXR1cm4gdGhpcy5fdG90YWxQYWdlcyQuYXNPYnNlcnZhYmxlKCk7XG4gIH1cblxuICBnZXQgdG90YWxQYWdlcygpIHtcbiAgICByZXR1cm4gdGhpcy5fdG90YWxQYWdlcyQuZ2V0VmFsdWUoKTtcbiAgfVxuXG4gIGdldCBpdGVtc1BlclBhZ2UkKCkge1xuICAgIHJldHVybiB0aGlzLl9pdGVtc1BlclBhZ2UkLmFzT2JzZXJ2YWJsZSgpO1xuICB9XG5cbiAgZ2V0IGl0ZW1zUGVyUGFnZSgpIHtcbiAgICByZXR1cm4gdGhpcy5faXRlbXNQZXJQYWdlJC5nZXRWYWx1ZSgpO1xuICB9XG5cbiAgZ2V0IGRhdGEkKCkge1xuICAgIHJldHVybiB0aGlzLl9kYXRhJDtcbiAgfVxuXG4gIGdldCBjdXJyZW50UXVlcnkkKCkge1xuICAgIHJldHVybiB0aGlzLl9sYXN0UXVlcnkkO1xuICB9XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSBfY29uZmlnOiBJbmZpbml0eVF1ZXJ5Q29uZmlnPFF1ZXJ5Q3JlYXRvciwgQXJncywgUXVlcnlSZXNwb25zZSwgSW5maW5pdHlSZXNwb25zZT4pIHt9XG5cbiAgbmV4dFBhZ2UoKSB7XG4gICAgY29uc3QgbmV3UGFnZSA9ICh0aGlzLl9jdXJyZW50UGFnZSQudmFsdWUgPz8gMCkgKyAxO1xuICAgIGNvbnN0IGNhbGN1bGF0ZWRQYWdlID1cbiAgICAgIHRoaXMuX2NvbmZpZz8ucGFnZVBhcmFtPy52YWx1ZUNhbGN1bGF0b3I/Lih7XG4gICAgICAgIHBhZ2U6IG5ld1BhZ2UsXG4gICAgICAgIHRvdGFsUGFnZXM6IHRoaXMudG90YWxQYWdlcyxcbiAgICAgICAgaXRlbXNQZXJQYWdlOiB0aGlzLml0ZW1zUGVyUGFnZSxcbiAgICAgIH0pID8/IG5ld1BhZ2U7XG5cbiAgICBpZiAodGhpcy50b3RhbFBhZ2VzICE9PSBudWxsICYmIGNhbGN1bGF0ZWRQYWdlID4gdGhpcy50b3RhbFBhZ2VzKSB7XG4gICAgICBjb25zb2xlLmVycm9yKFxuICAgICAgICAnQ2Fubm90IGxvYWQgbW9yZSBwYWdlcywgYWxyZWFkeSBhdCB0aGUgZW5kLiBNYWtlIHN1cmUgdG8gbm90IHJlbmRlciB0aGUgaW5maW5pdHkgcXVlcnkgdHJpZ2dlciB1c2luZyAqbmdJZiBjYW5Mb2FkTW9yZScsXG4gICAgICApO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IGFyZ3MgPSB0aGlzLl9wcmVwYXJlQXJncyh0aGlzLl9jb25maWcsIGNhbGN1bGF0ZWRQYWdlKTtcblxuICAgIGNvbnN0IHF1ZXJ5ID0gdGhpcy5fY29uZmlnLnF1ZXJ5Q3JlYXRvci5wcmVwYXJlKGFyZ3MpLmV4ZWN1dGUoKSBhcyBRdWVyeTtcblxuICAgIHRoaXMuX3F1ZXJpZXMkLm5leHQoWy4uLnRoaXMuX3F1ZXJpZXMkLnZhbHVlLCBxdWVyeV0pO1xuXG4gICAgdGhpcy5fY3VycmVudFBhZ2UkLm5leHQobmV3UGFnZSk7XG4gICAgdGhpcy5fY3VycmVudENhbGN1bGF0ZWRQYWdlJC5uZXh0KGNhbGN1bGF0ZWRQYWdlKTtcbiAgfVxuXG4gIHJlc2V0KFxuICAgIG5ld0NvbmZpZz86IE9taXQ8XG4gICAgICBJbmZpbml0eVF1ZXJ5Q29uZmlnPFF1ZXJ5Q3JlYXRvciwgQXJncywgUXVlcnlSZXNwb25zZSwgSW5maW5pdHlSZXNwb25zZT4sXG4gICAgICAncXVlcnlDcmVhdG9yJyB8ICdyZXNwb25zZSdcbiAgICA+LFxuICApIHtcbiAgICB0aGlzLl9jb25maWcgPSB7IC4uLnRoaXMuX2NvbmZpZywgLi4uKG5ld0NvbmZpZyA/PyB7fSkgfTtcblxuICAgIHRoaXMuX2N1cnJlbnRQYWdlJC5uZXh0KG51bGwpO1xuICAgIHRoaXMuX2N1cnJlbnRDYWxjdWxhdGVkUGFnZSQubmV4dChudWxsKTtcbiAgICB0aGlzLl90b3RhbFBhZ2VzJC5uZXh0KG51bGwpO1xuICAgIHRoaXMuX2l0ZW1zUGVyUGFnZSQubmV4dCh0aGlzLl9jb25maWcubGltaXRQYXJhbT8udmFsdWUgPz8gMTApO1xuICAgIHRoaXMuX3F1ZXJpZXMkLm5leHQoW10pO1xuXG4gICAgdGhpcy5uZXh0UGFnZSgpO1xuICB9XG5cbiAgcHJpdmF0ZSBfcHJlcGFyZUFyZ3MoY29uZmlnOiBJbmZpbml0eVF1ZXJ5Q29uZmlnPFF1ZXJ5Q3JlYXRvciwgQXJncywgUXVlcnlSZXNwb25zZSwgSW5maW5pdHlSZXNwb25zZT4sIHBhZ2U6IG51bWJlcikge1xuICAgIGNvbnN0IHBhZ2VQYXJhbUxvY2F0aW9uID0gdGhpcy5fZ2V0UGFnZVBhcmFtTG9jYXRpb24oY29uZmlnPy5wYWdlUGFyYW0/LmxvY2F0aW9uKTtcblxuICAgIGNvbnN0IHBhZ2VBcmdzID0ge1xuICAgICAgW3BhZ2VQYXJhbUxvY2F0aW9uXToge1xuICAgICAgICBbY29uZmlnPy5wYWdlUGFyYW0/LmtleSA/PyAncGFnZSddOiBwYWdlLFxuICAgICAgfSxcbiAgICB9O1xuXG4gICAgY29uc3QgbGltaXRQYXJhbUxvY2F0aW9uID0gdGhpcy5fZ2V0UGFnZVBhcmFtTG9jYXRpb24oY29uZmlnPy5saW1pdFBhcmFtPy5sb2NhdGlvbik7XG5cbiAgICBjb25zdCBsaW1pdEFyZ3MgPSB7XG4gICAgICBbbGltaXRQYXJhbUxvY2F0aW9uXToge1xuICAgICAgICBbY29uZmlnPy5saW1pdFBhcmFtPy5rZXkgPz8gJ2xpbWl0J106IGNvbmZpZz8ubGltaXRQYXJhbT8udmFsdWUgPz8gMTAsXG4gICAgICB9LFxuICAgIH07XG5cbiAgICBjb25zdCBkZWZhdWx0Q29uZmlnID0gY29uZmlnPy5kZWZhdWx0QXJncyA/PyB7fTtcblxuICAgIGNvbnN0IG1lcmdlZEFyZ3MgPVxuICAgICAgcGFnZVBhcmFtTG9jYXRpb24gPT09IGxpbWl0UGFyYW1Mb2NhdGlvblxuICAgICAgICA/IHtcbiAgICAgICAgICAgIC4uLmRlZmF1bHRDb25maWcsXG4gICAgICAgICAgICBbcGFnZVBhcmFtTG9jYXRpb25dOiB7XG4gICAgICAgICAgICAgIC4uLihjb25maWc/LmRlZmF1bHRBcmdzPy5bcGFnZVBhcmFtTG9jYXRpb25dID8/IHt9KSxcbiAgICAgICAgICAgICAgLi4ucGFnZUFyZ3NbbGltaXRQYXJhbUxvY2F0aW9uXSxcbiAgICAgICAgICAgICAgLi4ubGltaXRBcmdzW2xpbWl0UGFyYW1Mb2NhdGlvbl0sXG4gICAgICAgICAgICB9LFxuICAgICAgICAgIH1cbiAgICAgICAgOiB7XG4gICAgICAgICAgICAuLi5kZWZhdWx0Q29uZmlnLFxuICAgICAgICAgICAgW3BhZ2VQYXJhbUxvY2F0aW9uXToge1xuICAgICAgICAgICAgICAuLi4oY29uZmlnPy5kZWZhdWx0QXJncz8uW3BhZ2VQYXJhbUxvY2F0aW9uXSA/PyB7fSksXG4gICAgICAgICAgICAgIC4uLnBhZ2VBcmdzW3BhZ2VQYXJhbUxvY2F0aW9uXSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBbbGltaXRQYXJhbUxvY2F0aW9uXToge1xuICAgICAgICAgICAgICAuLi4oY29uZmlnPy5kZWZhdWx0QXJncz8uW2xpbWl0UGFyYW1Mb2NhdGlvbl0gPz8ge30pLFxuICAgICAgICAgICAgICAuLi5saW1pdEFyZ3NbbGltaXRQYXJhbUxvY2F0aW9uXSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgfTtcblxuICAgIHJldHVybiBtZXJnZWRBcmdzO1xuICB9XG5cbiAgcHJpdmF0ZSBfZ2V0UGFnZVBhcmFtTG9jYXRpb24obG9jYXRpb246IEluZmluaXR5UXVlcnlQYXJhbUxvY2F0aW9uIHwgdW5kZWZpbmVkKSB7XG4gICAgY29uc3QgbG9jID0gbG9jYXRpb24gPz8gJ3F1ZXJ5JztcblxuICAgIHN3aXRjaCAobG9jKSB7XG4gICAgICBjYXNlICdwYXRoJzpcbiAgICAgICAgcmV0dXJuICdwYXRoUGFyYW1zJztcbiAgICAgIGNhc2UgJ3F1ZXJ5JzpcbiAgICAgICAgcmV0dXJuICdxdWVyeVBhcmFtcyc7XG4gICAgICBjYXNlICdib2R5JzpcbiAgICAgICAgcmV0dXJuICdib2R5JztcbiAgICAgIGNhc2UgJ2hlYWRlcic6XG4gICAgICAgIHJldHVybiAnaGVhZGVycyc7XG4gICAgICBjYXNlICd2YXJpYWJsZSc6XG4gICAgICAgIHJldHVybiAndmFyaWFibGVzJztcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihgSW52YWxpZCBwYWdlUGFyYW1Mb2NhdGlvbjogJHtsb2N9YCk7XG4gICAgfVxuICB9XG59XG4iXX0=
|
|
@@ -2,7 +2,7 @@ import { NgZone, assertInInjectionContext, inject, isDevMode } from '@angular/co
|
|
|
2
2
|
import { FormGroup } from '@angular/forms';
|
|
3
3
|
import { ActivatedRoute, Router } from '@angular/router';
|
|
4
4
|
import { ET_PROPERTY_REMOVED, RouterStateService, clone, createDestroy, equal } from '@ethlete/core';
|
|
5
|
-
import { BehaviorSubject, Subject, concat,
|
|
5
|
+
import { BehaviorSubject, Subject, concat, debounce, map, merge, of, startWith, take, takeUntil, tap, timer, withLatestFrom, } from 'rxjs';
|
|
6
6
|
const ET_ARR_PREFIX = 'ET_ARR__';
|
|
7
7
|
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
8
8
|
export class QueryFormGroup extends FormGroup {
|
|
@@ -45,7 +45,12 @@ export class QueryField {
|
|
|
45
45
|
}
|
|
46
46
|
// The initial value should get emitted immediately
|
|
47
47
|
// concat switches to the debounced observable after the first observable is completed
|
|
48
|
-
return concat(obs.pipe(take(1)), this.control.valueChanges.pipe(
|
|
48
|
+
return concat(obs.pipe(take(1)), this.control.valueChanges.pipe(debounce((v) => {
|
|
49
|
+
if ((this.data.disableDebounceIfFalsy && !v) || !this.data.debounce) {
|
|
50
|
+
return of(0);
|
|
51
|
+
}
|
|
52
|
+
return timer(this.data.debounce);
|
|
53
|
+
})));
|
|
49
54
|
}
|
|
50
55
|
}
|
|
51
56
|
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
@@ -98,7 +103,7 @@ export class QueryForm {
|
|
|
98
103
|
this.setFormValueFromUrlQueryParams({
|
|
99
104
|
queryParams: this._routerStateService.queryParams,
|
|
100
105
|
});
|
|
101
|
-
this.
|
|
106
|
+
merge(...Object.values(this._fields).map((field) => field.changes$))
|
|
102
107
|
.pipe(startWith(null), tap(() => {
|
|
103
108
|
this._lastFormValue$.next(clone(this._currentFormValue$.value));
|
|
104
109
|
this._currentFormValue$.next({ id: this._currentFormValue$.value.id + 1, data: clone(this._formValue) });
|
|
@@ -239,4 +244,4 @@ export class QueryForm {
|
|
|
239
244
|
});
|
|
240
245
|
}
|
|
241
246
|
}
|
|
242
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicXVlcnktZm9ybS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvcXVlcnkvc3JjL2xpYi9xdWVyeS1mb3JtL3F1ZXJ5LWZvcm0udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLE1BQU0sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLEVBQUUsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3BGLE9BQU8sRUFBbUIsU0FBUyxFQUFVLE1BQU0sZ0JBQWdCLENBQUM7QUFDcEUsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUN6RCxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsa0JBQWtCLEVBQUUsS0FBSyxFQUFFLGFBQWEsRUFBRSxLQUFLLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDckcsT0FBTyxFQUNMLGVBQWUsRUFDZixPQUFPLEVBQ1AsTUFBTSxFQUNOLFlBQVksRUFDWixHQUFHLEVBQ0gsU0FBUyxFQUNULElBQUksRUFDSixTQUFTLEVBQ1QsR0FBRyxFQUNILGNBQWMsR0FDZixNQUFNLE1BQU0sQ0FBQztBQVNkLE1BQU0sYUFBYSxHQUFHLFVBQVUsQ0FBQztBQUVqQyw4REFBOEQ7QUFDOUQsTUFBTSxPQUFPLGNBQThFLFNBQVEsU0FBWTtJQUNwRyxVQUFVO0lBQ2pCLDhEQUE4RDtJQUM5RCxLQUEyRixFQUMzRixPQUF5RjtRQUV6RixLQUFLLENBQUMsVUFBVSxDQUFDLEtBQUssRUFBRSxPQUFPLENBQUMsQ0FBQztJQUNuQyxDQUFDO0NBQ0Y7QUFFRCxNQUFNLE9BQU8sVUFBVTtJQUdyQixJQUFJLE9BQU87UUFDVCxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDO0lBQzNCLENBQUM7SUFJRCxZQUFtQixJQUEwQjtRQUExQixTQUFJLEdBQUosSUFBSSxDQUFzQjtRQVI3QyxhQUFRLEdBQUcsSUFBSSxDQUFDLHVCQUF1QixFQUFFLENBQUM7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TSxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsRUFBRTtZQUNqRCxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsRUFBRTtnQkFDdEIsT0FBTyxDQUFDLElBQUksQ0FBQyxjQUFjLEdBQUcsa0RBQWtELEVBQUUsSUFBSSxDQUFDLENBQUM7Z0JBQ3hGLFNBQVM7YUFDVjtZQUVELElBQUksSUFBSSxDQUFDLGVBQWUsQ0FBQyxHQUFHLEVBQUUsS0FBSyxDQUFDLElBQUksSUFBSSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUMsV0FBVyxLQUFLLEtBQUssRUFBRTtnQkFDcEYsT0FBTyxXQUFXLENBQUMsR0FBRyxDQUFDLENBQUM7YUFDekI7aUJBQU07Z0JBQ0wsV0FBVyxDQUFDLEdBQUcsQ0FBQyxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDLDRCQUE0QjtvQkFDcEUsQ0FBQyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDLDRCQUE0QixFQUFFLENBQUMsS0FBSyxDQUFDO29CQUM5RCxDQUFDLENBQUMsS0FBSyxDQUFDO2FBQ1g7U0FDRjtRQUVELElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLEdBQUcsRUFBRTtZQUNsQixJQUFJLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxFQUFFLEVBQUU7Z0JBQ3hCLFdBQVc7Z0JBQ1gsVUFBVTthQUNYLENBQUMsQ0FBQztRQUNMLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTmdab25lLCBhc3NlcnRJbkluamVjdGlvbkNvbnRleHQsIGluamVjdCwgaXNEZXZNb2RlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBBYnN0cmFjdENvbnRyb2wsIEZvcm1Hcm91cCwgybVWYWx1ZSB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IEFjdGl2YXRlZFJvdXRlLCBSb3V0ZXIgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuaW1wb3J0IHsgRVRfUFJPUEVSVFlfUkVNT1ZFRCwgUm91dGVyU3RhdGVTZXJ2aWNlLCBjbG9uZSwgY3JlYXRlRGVzdHJveSwgZXF1YWwgfSBmcm9tICdAZXRobGV0ZS9jb3JlJztcbmltcG9ydCB7XG4gIEJlaGF2aW9yU3ViamVjdCxcbiAgU3ViamVjdCxcbiAgY29uY2F0LFxuICBkZWJvdW5jZVRpbWUsXG4gIG1hcCxcbiAgc3RhcnRXaXRoLFxuICB0YWtlLFxuICB0YWtlVW50aWwsXG4gIHRhcCxcbiAgd2l0aExhdGVzdEZyb20sXG59IGZyb20gJ3J4anMnO1xuaW1wb3J0IHtcbiAgUXVlcnlGaWVsZE9wdGlvbnMsXG4gIFF1ZXJ5Rm9ybUdyb3VwQ29udHJvbHMsXG4gIFF1ZXJ5Rm9ybU9ic2VydmVPcHRpb25zLFxuICBRdWVyeUZvcm1WYWx1ZSxcbiAgUXVlcnlGb3JtVmFsdWVFdmVudCxcbn0gZnJvbSAnLi9xdWVyeS1mb3JtLnR5cGVzJztcblxuY29uc3QgRVRfQVJSX1BSRUZJWCA9ICdFVF9BUlJfXyc7XG5cbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55XG5leHBvcnQgY2xhc3MgUXVlcnlGb3JtR3JvdXA8VCBleHRlbmRzIHsgW0sgaW4ga2V5b2YgVF06IEFic3RyYWN0Q29udHJvbDxhbnksIGFueT4gfSA9IGFueT4gZXh0ZW5kcyBGb3JtR3JvdXA8VD4ge1xuICBvdmVycmlkZSBwYXRjaFZhbHVlKFxuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55XG4gICAgdmFsdWU6IDAgZXh0ZW5kcyAxICYgVCA/IHsgW2tleTogc3RyaW5nXTogYW55IH0gOiBQYXJ0aWFsPHsgW0sgaW4ga2V5b2YgVF06IMm1VmFsdWU8VFtLXT4gfT4sXG4gICAgb3B0aW9ucz86IHsgb25seVNlbGY/OiBib29sZWFuIHwgdW5kZWZpbmVkOyBlbWl0RXZlbnQ/OiBib29sZWFuIHwgdW5kZWZpbmVkIH0gfCB1bmRlZmluZWQsXG4gICk6IHZvaWQge1xuICAgIHN1cGVyLnBhdGNoVmFsdWUodmFsdWUsIG9wdGlvbnMpO1xuICB9XG59XG5cbmV4cG9ydCBjbGFzcyBRdWVyeUZpZWxkPFQ+IHtcbiAgY2hhbmdlcyQgPSB0aGlzLl9zZXR1cENoYW5nZXNPYnNlcnZhYmxlKCk7XG5cbiAgZ2V0IGNvbnRyb2woKSB7XG4gICAgcmV0dXJuIHRoaXMuZGF0YS5jb250cm9sO1xuICB9XG5cbiAgcHJpdmF0ZSBfY3VycmVudERlYm91bmNlVGltZW91dDogbnVtYmVyIHwgbnVsbCA9IG51bGw7XG5cbiAgY29uc3RydWN0b3IocHVibGljIGRhdGE6IFF1ZXJ5RmllbGRPcHRpb25zPFQ+KSB7fVxuXG4gIHNldFZhbHVlKHZhbHVlOiBUIHwgbnVsbCwgb3B0aW9ucz86IHsgc2tpcERlYm91bmNlPzogYm9vbGVhbiB9KSB7XG4gICAgaWYgKHRoaXMuX2N1cnJlbnREZWJvdW5jZVRpbWVvdXQgIT09IG51bGwpIHtcbiAgICAgIGNsZWFyVGltZW91dCh0aGlzLl9jdXJyZW50RGVib3VuY2VUaW1lb3V0KTtcbiAgICAgIHRoaXMuX2N1cnJlbnREZWJvdW5jZVRpbWVvdXQgPSBudWxsO1xuICAgIH1cblxuICAgIGlmICh2YWx1ZSA9PT0gdGhpcy5jb250cm9sLnZhbHVlKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuZGF0YS5kZWJvdW5jZSAmJiAhb3B0aW9ucz8uc2tpcERlYm91bmNlKSB7XG4gICAgICB0aGlzLl9jdXJyZW50RGVib3VuY2VUaW1lb3V0ID0gd2luZG93LnNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICB0aGlzLmNvbnRyb2wuc2V0VmFsdWUodmFsdWUpO1xuICAgICAgfSwgdGhpcy5kYXRhLmRlYm91bmNlKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5jb250cm9sLnNldFZhbHVlKHZhbHVlKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIF9zZXR1cENoYW5nZXNPYnNlcnZhYmxlKCkge1xuICAgIGNvbnN0IG9icyA9IHRoaXMuY29udHJvbC52YWx1ZUNoYW5nZXMucGlwZShzdGFydFdpdGgodGhpcy5jb250cm9sLnZhbHVlKSk7XG5cbiAgICBpZiAoIXRoaXMuZGF0YS5kZWJvdW5jZSkge1xuICAgICAgcmV0dXJuIG9icztcbiAgICB9XG5cbiAgICAvLyBUaGUgaW5pdGlhbCB2YWx1ZSBzaG91bGQgZ2V0IGVtaXR0ZWQgaW1tZWRpYXRlbHlcbiAgICAvLyBjb25jYXQgc3dpdGNoZXMgdG8gdGhlIGRlYm91bmNlZCBvYnNlcnZhYmxlIGFmdGVyIHRoZSBmaXJzdCBvYnNlcnZhYmxlIGlzIGNvbXBsZXRlZFxuICAgIHJldHVybiBjb25jYXQob2JzLnBpcGUodGFrZSgxKSksIHRoaXMuY29udHJvbC52YWx1ZUNoYW5nZXMucGlwZShkZWJvdW5jZVRpbWUodGhpcy5kYXRhLmRlYm91bmNlKSkpO1xuICB9XG59XG5cbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55XG5leHBvcnQgY2xhc3MgUXVlcnlGb3JtPFQgZXh0ZW5kcyBSZWNvcmQ8c3RyaW5nLCBRdWVyeUZpZWxkPGFueT4+PiB7XG4gIHByaXZhdGUgcmVhZG9ubHkgX2Rlc3Ryb3kkID0gY3JlYXRlRGVzdHJveSgpO1xuICBwcml2YXRlIHJlYWRvbmx5IF91bm9ic2VydmVUcmlnZ2VyJCA9IG5ldyBTdWJqZWN0PGJvb2xlYW4+KCk7XG4gIHByaXZhdGUgcmVhZG9ubHkgX3JvdXRlciA9IGluamVjdChSb3V0ZXIpO1xuICBwcml2YXRlIHJlYWRvbmx5IF9hY3RpdmF0ZWRSb3V0ZSA9IGluamVjdChBY3RpdmF0ZWRSb3V0ZSk7XG4gIHByaXZhdGUgcmVhZG9ubHkgX2RlZmF1bHRWYWx1ZXMgPSB0aGlzLl9leHRyYWN0RGVmYXVsdFZhbHVlcygpO1xuICBwcml2YXRlIHJlYWRvbmx5IF9yb3V0ZXJTdGF0ZVNlcnZpY2UgPSBpbmplY3QoUm91dGVyU3RhdGVTZXJ2aWNlKTtcbiAgcHJpdmF0ZSByZWFkb25seSBfem9uZSA9IGluamVjdChOZ1pvbmUpO1xuXG4gIHByaXZhdGUgX2lzT2JzZXJ2aW5nID0gZmFsc2U7XG5cbiAgcmVhZG9ubHkgZm9ybSA9IHRoaXMuX3NldHVwRm9ybUdyb3VwKCk7XG5cbiAgcHJpdmF0ZSByZWFkb25seSBfbGFzdEZvcm1WYWx1ZSQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PHsgaWQ6IG51bWJlcjsgZGF0YTogUXVlcnlGb3JtVmFsdWU8VD4gfSB8IG51bGw+KG51bGwpO1xuICBwcml2YXRlIHJlYWRvbmx5IF9jdXJyZW50Rm9ybVZhbHVlJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8eyBpZDogbnVtYmVyOyBkYXRhOiBRdWVyeUZvcm1WYWx1ZTxUPiB9Pih7XG4gICAgaWQ6IDAsXG4gICAgZGF0YTogdGhpcy5fZm9ybVZhbHVlLFxuICB9KTtcblxuICBwcml2YXRlIGdldCBfZm9ybVZhbHVlKCkge1xuICAgIHJldHVybiB0aGlzLmZvcm0uZ2V0UmF3VmFsdWUoKSBhcyBRdWVyeUZvcm1WYWx1ZTxUPjtcbiAgfVxuXG4gIHByaXZhdGUgcmVhZG9ubHkgX2NoYW5nZXMkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxRdWVyeUZvcm1WYWx1ZUV2ZW50PFQ+Pih7XG4gICAgcHJldmlvdXNWYWx1ZTogbnVsbCxcbiAgICBjdXJyZW50VmFsdWU6IHRoaXMuZm9ybS5nZXRSYXdWYWx1ZSgpIGFzIFF1ZXJ5Rm9ybVZhbHVlPFQ+LFxuICB9KTtcblxuICByZWFkb25seSBjaGFuZ2VzJCA9IHRoaXMuX2N1cnJlbnRGb3JtVmFsdWUkLnBpcGUod2l0aExhdGVzdEZyb20odGhpcy5fbGFzdEZvcm1WYWx1ZSQpKS5waXBlKFxuICAgIG1hcCgoW2N1cnJlbnRWYWx1ZUV2ZW50LCBwcmV2aW91c1ZhbHVlRXZlbnRdKSA9PiB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICBwcmV2aW91c1ZhbHVlOiBwcmV2aW91c1ZhbHVlRXZlbnQ/LmRhdGEgPz8gbnVsbCxcbiAgICAgICAgY3VycmVudFZhbHVlOiBjdXJyZW50VmFsdWVFdmVudC5kYXRhLFxuICAgICAgfTtcbiAgICB9KSxcbiAgKTtcblxuICBnZXQgY29udHJvbHMoKSB7XG4gICAgcmV0dXJuIHRoaXMuZm9ybS5jb250cm9scztcbiAgfVxuXG4gIGdldCB2YWx1ZSgpIHtcbiAgICByZXR1cm4gdGhpcy5fY2hhbmdlcyQudmFsdWUuY3VycmVudFZhbHVlO1xuICB9XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSBfZmllbGRzOiBUKSB7XG4gICAgYXNzZXJ0SW5JbmplY3Rpb25Db250ZXh0KFF1ZXJ5Rm9ybSk7XG4gIH1cblxuICBvYnNlcnZlKG9wdGlvbnM/OiBRdWVyeUZvcm1PYnNlcnZlT3B0aW9ucykge1xuICAgIGlmICh0aGlzLl9pc09ic2VydmluZykge1xuICAgICAgaWYgKGlzRGV2TW9kZSgpKSB7XG4gICAgICAgIGNvbnNvbGUud2FybignUXVlcnlGb3JtLm9ic2VydmUoKSB3YXMgY2FsbGVkIG11bHRpcGxlIHRpbWVzLiBUaGlzIGlzIG5vdCBzdXBwb3J0ZWQuJyk7XG4gICAgICB9XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5faXNPYnNlcnZpbmcgPSB0cnVlO1xuXG4gICAgdGhpcy5zZXRGb3JtVmFsdWVGcm9tVXJsUXVlcnlQYXJhbXMoe1xuICAgICAgcXVlcnlQYXJhbXM6IHRoaXMuX3JvdXRlclN0YXRlU2VydmljZS5xdWVyeVBhcmFtcyxcbiAgICB9KTtcblxuICAgIHRoaXMuZm9ybS52YWx1ZUNoYW5nZXNcbiAgICAgIC5waXBlKFxuICAgICAgICBzdGFydFdpdGgobnVsbCksXG4gICAgICAgIHRhcCgoKSA9PiB7XG4gICAgICAgICAgdGhpcy5fbGFzdEZvcm1WYWx1ZSQubmV4dChjbG9uZSh0aGlzLl9jdXJyZW50Rm9ybVZhbHVlJC52YWx1ZSkpO1xuICAgICAgICAgIHRoaXMuX2N1cnJlbnRGb3JtVmFsdWUkLm5leHQoeyBpZDogdGhpcy5fY3VycmVudEZvcm1WYWx1ZSQudmFsdWUuaWQgKyAxLCBkYXRhOiBjbG9uZSh0aGlzLl9mb3JtVmFsdWUpIH0pO1xuICAgICAgICB9KSxcbiAgICAgICAgdGFrZVVudGlsKHRoaXMuX2Rlc3Ryb3kkKSxcbiAgICAgICAgdGFrZVVudGlsKHRoaXMuX3Vub2JzZXJ2ZVRyaWdnZXIkKSxcbiAgICAgIClcbiAgICAgIC5zdWJzY3JpYmUoKTtcblxuICAgIHRoaXMuX2N1cnJlbnRGb3JtVmFsdWUkXG4gICAgICAucGlwZShcbiAgICAgICAgdGFwKChjdXJyZW50VmFsdWVFdmVudCkgPT4ge1xuICAgICAgICAgIGNvbnN0IHByZXZpb3VzVmFsdWVFdmVudCA9IHRoaXMuX2xhc3RGb3JtVmFsdWUkLnZhbHVlO1xuICAgICAgICAgIGNvbnN0IGN1cnJlbnRWYWx1ZSA9IGN1cnJlbnRWYWx1ZUV2ZW50LmRhdGE7XG5cbiAgICAgICAgICBpZiAob3B0aW9ucz8ud3JpdGVUb1F1ZXJ5UGFyYW1zICE9PSBmYWxzZSkge1xuICAgICAgICAgICAgdGhpcy5fc3luY1ZpYVVybFF1ZXJ5UGFyYW1zKGN1cnJlbnRWYWx1ZUV2ZW50LmRhdGEsIG9wdGlvbnM/LnJlcGxhY2VVcmwpO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIGNvbnN0IGRpZFJlc2V0VmFsdWVzID0gdGhpcy5faGFuZGxlUXVlcnlGb3JtUmVzZXRzKHByZXZpb3VzVmFsdWVFdmVudD8uZGF0YSA/PyBudWxsLCBjdXJyZW50VmFsdWUpO1xuXG4gICAgICAgICAgaWYgKGRpZFJlc2V0VmFsdWVzKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgaWYgKHRoaXMuX2N1cnJlbnRGb3JtVmFsdWUkLnZhbHVlLmlkICE9PSBjdXJyZW50VmFsdWVFdmVudC5pZCkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIHRoaXMuX2NoYW5nZXMkLm5leHQoe1xuICAgICAgICAgICAgcHJldmlvdXNWYWx1ZTogcHJldmlvdXNWYWx1ZUV2ZW50Py5kYXRhID8/IG51bGwsXG4gICAgICAgICAgICBjdXJyZW50VmFsdWU6IGN1cnJlbnRWYWx1ZUV2ZW50LmRhdGEsXG4gICAgICAgICAgfSk7XG4gICAgICAgIH0pLFxuICAgICAgICB0YWtlVW50aWwodGhpcy5fZGVzdHJveSQpLFxuICAgICAgICB0YWtlVW50aWwodGhpcy5fdW5vYnNlcnZlVHJpZ2dlciQpLFxuICAgICAgKVxuICAgICAgLnN1YnNjcmliZSgpO1xuXG4gICAgaWYgKG9wdGlvbnM/LnN5bmNPbk5hdmlnYXRpb24gIT09IGZhbHNlKSB7XG4gICAgICB0aGlzLl9yb3V0ZXJTdGF0ZVNlcnZpY2UucXVlcnlQYXJhbUNoYW5nZXMkXG4gICAgICAgIC5waXBlKFxuICAgICAgICAgIHRha2VVbnRpbCh0aGlzLl9kZXN0cm95JCksXG4gICAgICAgICAgdGFrZVVudGlsKHRoaXMuX3Vub2JzZXJ2ZVRyaWdnZXIkKSxcbiAgICAgICAgICB0YXAoKGNoYW5nZXMpID0+IHRoaXMuc2V0Rm9ybVZhbHVlRnJvbVVybFF1ZXJ5UGFyYW1zKHsgcXVlcnlQYXJhbXM6IGNoYW5nZXMgfSkpLFxuICAgICAgICApXG4gICAgICAgIC5zdWJzY3JpYmUoKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIF9oYW5kbGVRdWVyeUZvcm1SZXNldHMocHJldmlvdXNWYWx1ZTogUXVlcnlGb3JtVmFsdWU8VD4gfCBudWxsLCBjdXJyZW50VmFsdWU6IFF1ZXJ5Rm9ybVZhbHVlPFQ+KSB7XG4gICAgbGV0IGRpZFJlc2V0VmFsdWVzID0gZmFsc2U7XG5cbiAgICBmb3IgKGNvbnN0IGZvcm1GaWVsZEtleSBpbiB0aGlzLl9maWVsZHMpIHtcbiAgICAgIGNvbnN0IHJlc2V0cyA9IHRoaXMuX2ZpZWxkc1tmb3JtRmllbGRLZXldLmRhdGEuaXNSZXNldEJ5O1xuXG4gICAgICBpZiAoIXJlc2V0cykgY29udGludWU7XG5cbiAgICAgIGNvbnN0IHJlc2V0Q29uZGl0aW9uS2V5cyA9IEFycmF5LmlzQXJyYXkocmVzZXRzKSA/IHJlc2V0cyA6IFtyZXNldHNdO1xuXG4gICAgICBmb3IgKGNvbnN0IHJlc2V0Q29uZGl0aW9uS2V5IG9mIHJlc2V0Q29uZGl0aW9uS2V5cykge1xuICAgICAgICBpZiAoIShyZXNldENvbmRpdGlvbktleSBpbiB0aGlzLl9maWVsZHMpKSB7XG4gICAgICAgICAgaWYgKGlzRGV2TW9kZSgpKSB7XG4gICAgICAgICAgICBjb25zb2xlLndhcm4oYFRoZSBmaWVsZCBcIiR7cmVzZXRDb25kaXRpb25LZXl9XCIgaXMgbm90IGRlZmluZWQgaW4gdGhlIFF1ZXJ5Rm9ybS4gSXMgaXQgYSB0eXBvP2AsIHRoaXMpO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKFxuICAgICAgICAgIHByZXZpb3VzVmFsdWUgJiZcbiAgICAgICAgICBjdXJyZW50VmFsdWUgJiZcbiAgICAgICAgICAhZXF1YWwocHJldmlvdXNWYWx1ZVtyZXNldENvbmRpdGlvbktleV0sIGN1cnJlbnRWYWx1ZVtyZXNldENvbmRpdGlvbktleV0pXG4gICAgICAgICkge1xuICAgICAgICAgIGNvbnN0IGRlZmF1bHRWYWx1ZUZvcktleVRvUmVzZXQgPSB0aGlzLl9nZXREZWZhdWx0VmFsdWUoZm9ybUZpZWxkS2V5KTtcbiAgICAgICAgICBjb25zdCBjdXJyZW50VmFsdWVGb3JLZXlUb1Jlc2V0ID0gY3VycmVudFZhbHVlW2Zvcm1GaWVsZEtleV07XG5cbiAgICAgICAgICBpZiAoZXF1YWwoZGVmYXVsdFZhbHVlRm9yS2V5VG9SZXNldCwgY3VycmVudFZhbHVlRm9yS2V5VG9SZXNldCkpIHtcbiAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIHRoaXMuZm9ybS5jb250cm9sc1tmb3JtRmllbGRLZXldLnNldFZhbHVlKGRlZmF1bHRWYWx1ZUZvcktleVRvUmVzZXQpO1xuXG4gICAgICAgICAgZGlkUmVzZXRWYWx1ZXMgPSB0cnVlO1xuXG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gZGlkUmVzZXRWYWx1ZXM7XG4gIH1cblxuICB1bm9ic2VydmUoKSB7XG4gICAgdGhpcy5fdW5vYnNlcnZlVHJpZ2dlciQubmV4dCh0cnVlKTtcbiAgfVxuXG4gIHNldEZvcm1WYWx1ZUZyb21VcmxRdWVyeVBhcmFtcyhvcHRpb25zOiB7IHF1ZXJ5UGFyYW1zOiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPjsgc2tpcERlYm91bmNlPzogYm9vbGVhbiB9KSB7XG4gICAgZm9yIChjb25zdCBba2V5LCBmaWVsZF0gb2YgT2JqZWN0LmVudHJpZXModGhpcy5fZmllbGRzKSkge1xuICAgICAgY29uc3QgdmFsdWUgPSBvcHRpb25zLnF1ZXJ5UGFyYW1zW2tleV07XG5cbiAgICAgIGNvbnN0IHZhbHVlRG9lc05vdEV4aXN0ID0gdmFsdWUgPT09IHVuZGVmaW5lZDtcblxuICAgICAgaWYgKHZhbHVlRG9lc05vdEV4aXN0KSBjb250aW51ZTtcblxuICAgICAgY29uc3QgdmFsdWVHb3RSZW1vdmVkID0gdmFsdWUgPT09IEVUX1BST1BFUlRZX1JFTU9WRUQ7XG5cbiAgICAgIGlmICh2YWx1ZUdvdFJlbW92ZWQpIHtcbiAgICAgICAgZmllbGQuc2V0VmFsdWUodGhpcy5fZ2V0RGVmYXVsdFZhbHVlKGtleSksIHsgc2tpcERlYm91bmNlOiBvcHRpb25zPy5za2lwRGVib3VuY2UgPz8gdHJ1ZSB9KTtcblxuICAgICAgICBjb250aW51ZTtcbiAgICAgIH1cblxuICAgICAgY29uc3QgZGVzZXJpYWxpemVkVmFsdWUgPSBmaWVsZC5kYXRhLnF1ZXJ5UGFyYW1Ub1ZhbHVlVHJhbnNmb3JtRm4/Lih2YWx1ZSkgPz8gdmFsdWU7XG4gICAgICBjb25zdCB2YWx1ZUlzRXF1YWxUb0N1cnJlbnQgPSBlcXVhbChkZXNlcmlhbGl6ZWRWYWx1ZSwgZmllbGQuY29udHJvbC52YWx1ZSk7XG5cbiAgICAgIGlmICh2YWx1ZUlzRXF1YWxUb0N1cnJlbnQpIGNvbnRpbnVlO1xuXG4gICAgICBmaWVsZC5zZXRWYWx1ZShkZXNlcmlhbGl6ZWRWYWx1ZSwgeyBza2lwRGVib3VuY2U6IG9wdGlvbnM/LnNraXBEZWJvdW5jZSA/PyB0cnVlIH0pO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgX2dldERlZmF1bHRWYWx1ZShrZXk6IHN0cmluZykge1xuICAgIGNvbnN0IHZhbCA9IHRoaXMuX2RlZmF1bHRWYWx1ZXNba2V5XTtcblxuICAgIGlmICh0eXBlb2YgdmFsID09PSAnc3RyaW5nJyAmJiB2YWwuc3RhcnRzV2l0aChFVF9BUlJfUFJFRklYKSkge1xuICAgICAgcmV0dXJuIEpTT04ucGFyc2UodmFsLnNsaWNlKEVUX0FSUl9QUkVGSVgubGVuZ3RoKSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHZhbCA/PyBudWxsO1xuICB9XG5cbiAgcHJpdmF0ZSBfaXNEZWZhdWx0VmFsdWUoa2V5OiBzdHJpbmcsIHZhbHVlOiB1bmtub3duKSB7XG4gICAgY29uc3Qgbm9ybWFsaXplZFZhbHVlID0gQXJyYXkuaXNBcnJheSh2YWx1ZSkgPyBgJHtFVF9BUlJfUFJFRklYfSR7SlNPTi5zdHJpbmdpZnkodmFsdWUpfWAgOiB2YWx1ZTtcblxuICAgIHJldHVybiB0aGlzLl9nZXREZWZhdWx0VmFsdWUoa2V5KSA9PT0gbm9ybWFsaXplZFZhbHVlO1xuICB9XG5cbiAgcHJpdmF0ZSBfc2V0dXBGb3JtR3JvdXAoKSB7XG4gICAgY29uc3QgZ3JvdXAgPSBuZXcgUXVlcnlGb3JtR3JvdXAoe30gYXMgUXVlcnlGb3JtR3JvdXBDb250cm9sczxUPik7XG5cbiAgICBmb3IgKGNvbnN0IFtrZXksIGZpZWxkXSBvZiBPYmplY3QuZW50cmllcyh0aGlzLl9maWVsZHMpKSB7XG4gICAgICBncm91cC5hZGRDb250cm9sKGtleSwgZmllbGQuY29udHJvbCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGdyb3VwO1xuICB9XG5cbiAgcHJpdmF0ZSBfZXh0cmFjdERlZmF1bHRWYWx1ZXMoKSB7XG4gICAgY29uc3QgZGVmYXVsdFZhbHVlczogUmVjb3JkPHN0cmluZywgdW5rbm93bj4gPSB7fTtcblxuICAgIGZvciAoY29uc3QgW2tleSwgZmllbGRdIG9mIE9iamVjdC5lbnRyaWVzKHRoaXMuX2ZpZWxkcykpIHtcbiAgICAgIGNvbnN0IHZhbHVlID0gZmllbGQuY29udHJvbC52YWx1ZTtcblxuICAgICAgaWYgKHZhbHVlID09PSBudWxsIHx8IHZhbHVlID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgY29udGludWU7XG4gICAgICB9XG5cbiAgICAgIGlmIChBcnJheS5pc0FycmF5KHZhbHVlKSkge1xuICAgICAgICBkZWZhdWx0VmFsdWVzW2tleV0gPSBgJHtFVF9BUlJfUFJFRklYfSR7SlNPTi5zdHJpbmdpZnkodmFsdWUpfWA7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBkZWZhdWx0VmFsdWVzW2tleV0gPSB2YWx1ZTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gZGVmYXVsdFZhbHVlcztcbiAgfVxuXG4gIHByaXZhdGUgX3N5bmNWaWFVcmxRdWVyeVBhcmFtcyh2YWx1ZXM6IFF1ZXJ5Rm9ybVZhbHVlPFQ+LCByZXBsYWNlVXJsPzogYm9vbGVhbikge1xuICAgIGNvbnN0IHF1ZXJ5UGFyYW1zID0geyAuLi5jbG9uZSh0aGlzLl9hY3RpdmF0ZWRSb3V0ZS5zbmFwc2hvdC5xdWVyeVBhcmFtcykgfTtcblxuICAgIGZvciAoY29uc3QgW2tleSwgdmFsdWVdIG9mIE9iamVjdC5lbnRyaWVzKHZhbHVlcykpIHtcbiAgICAgIGlmICghdGhpcy5fZmllbGRzW2tleV0pIHtcbiAgICAgICAgY29uc29sZS53YXJuKGBUaGUgZmllbGQgXCIke2tleX1cIiBpcyBub3QgZGVmaW5lZCBpbiB0aGUgUXVlcnlGb3JtLiBJcyBpdCBhIHR5cG8/YCwgdGhpcyk7XG4gICAgICAgIGNvbnRpbnVlO1xuICAgICAgfVxuXG4gICAgICBpZiAodGhpcy5faXNEZWZhdWx0VmFsdWUoa2V5LCB2YWx1ZSkgfHwgdGhpcy5fZmllbGRzW2tleV0uZGF0YS5hcHBlbmRUb1VybCA9PT0gZmFsc2UpIHtcbiAgICAgICAgZGVsZXRlIHF1ZXJ5UGFyYW1zW2tleV07XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBxdWVyeVBhcmFtc1trZXldID0gdGhpcy5fZmllbGRzW2tleV0uZGF0YS52YWx1ZVRvUXVlcnlQYXJhbVRyYW5zZm9ybUZuXG4gICAgICAgICAgPyB0aGlzLl9maWVsZHNba2V5XS5kYXRhLnZhbHVlVG9RdWVyeVBhcmFtVHJhbnNmb3JtRm4/Lih2YWx1ZSlcbiAgICAgICAgICA6IHZhbHVlO1xuICAgICAgfVxuICAgIH1cblxuICAgIHRoaXMuX3pvbmUucnVuKCgpID0+IHtcbiAgICAgIHRoaXMuX3JvdXRlci5uYXZpZ2F0ZShbXSwge1xuICAgICAgICBxdWVyeVBhcmFtcyxcbiAgICAgICAgcmVwbGFjZVVybCxcbiAgICAgIH0pO1xuICAgIH0pO1xuICB9XG59XG4iXX0=
|
|
247
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicXVlcnktZm9ybS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvcXVlcnkvc3JjL2xpYi9xdWVyeS1mb3JtL3F1ZXJ5LWZvcm0udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLE1BQU0sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLEVBQUUsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3BGLE9BQU8sRUFBbUIsU0FBUyxFQUFVLE1BQU0sZ0JBQWdCLENBQUM7QUFDcEUsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUN6RCxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsa0JBQWtCLEVBQUUsS0FBSyxFQUFFLGFBQWEsRUFBRSxLQUFLLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDckcsT0FBTyxFQUNMLGVBQWUsRUFDZixPQUFPLEVBQ1AsTUFBTSxFQUNOLFFBQVEsRUFDUixHQUFHLEVBQ0gsS0FBSyxFQUNMLEVBQUUsRUFDRixTQUFTLEVBQ1QsSUFBSSxFQUNKLFNBQVMsRUFDVCxHQUFHLEVBQ0gsS0FBSyxFQUNMLGNBQWMsR0FDZixNQUFNLE1BQU0sQ0FBQztBQVNkLE1BQU0sYUFBYSxHQUFHLFVBQVUsQ0FBQztBQUVqQyw4REFBOEQ7QUFDOUQsTUFBTSxPQUFPLGNBQThFLFNBQVEsU0FBWTtJQUNwRyxVQUFVO0lBQ2pCLDhEQUE4RDtJQUM5RCxLQUEyRixFQUMzRixPQUF5RjtRQUV6RixLQUFLLENBQUMsVUFBVSxDQUFDLEtBQUssRUFBRSxPQUFPLENBQUMsQ0FBQztJQUNuQyxDQUFDO0NBQ0Y7QUFFRCxNQUFNLE9BQU8sVUFBVTtJQUdyQixJQUFJLE9BQU87UUFDVCxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDO0lBQzNCLENBQUM7SUFJRCxZQUFtQixJQUEwQjtRQUExQixTQUFJLEdBQUosSUFBSSxDQUFzQjtRQVI3QyxhQUFRLEdB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QUcsQ0FBQyxHQUFHLEVBQUU7WUFDbEIsSUFBSSxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsRUFBRSxFQUFFO2dCQUN4QixXQUFXO2dCQUNYLFVBQVU7YUFDWCxDQUFDLENBQUM7UUFDTCxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE5nWm9uZSwgYXNzZXJ0SW5JbmplY3Rpb25Db250ZXh0LCBpbmplY3QsIGlzRGV2TW9kZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQWJzdHJhY3RDb250cm9sLCBGb3JtR3JvdXAsIMm1VmFsdWUgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBBY3RpdmF0ZWRSb3V0ZSwgUm91dGVyIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcbmltcG9ydCB7IEVUX1BST1BFUlRZX1JFTU9WRUQsIFJvdXRlclN0YXRlU2VydmljZSwgY2xvbmUsIGNyZWF0ZURlc3Ryb3ksIGVxdWFsIH0gZnJvbSAnQGV0aGxldGUvY29yZSc7XG5pbXBvcnQge1xuICBCZWhhdmlvclN1YmplY3QsXG4gIFN1YmplY3QsXG4gIGNvbmNhdCxcbiAgZGVib3VuY2UsXG4gIG1hcCxcbiAgbWVyZ2UsXG4gIG9mLFxuICBzdGFydFdpdGgsXG4gIHRha2UsXG4gIHRha2VVbnRpbCxcbiAgdGFwLFxuICB0aW1lcixcbiAgd2l0aExhdGVzdEZyb20sXG59IGZyb20gJ3J4anMnO1xuaW1wb3J0IHtcbiAgUXVlcnlGaWVsZE9wdGlvbnMsXG4gIFF1ZXJ5Rm9ybUdyb3VwQ29udHJvbHMsXG4gIFF1ZXJ5Rm9ybU9ic2VydmVPcHRpb25zLFxuICBRdWVyeUZvcm1WYWx1ZSxcbiAgUXVlcnlGb3JtVmFsdWVFdmVudCxcbn0gZnJvbSAnLi9xdWVyeS1mb3JtLnR5cGVzJztcblxuY29uc3QgRVRfQVJSX1BSRUZJWCA9ICdFVF9BUlJfXyc7XG5cbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55XG5leHBvcnQgY2xhc3MgUXVlcnlGb3JtR3JvdXA8VCBleHRlbmRzIHsgW0sgaW4ga2V5b2YgVF06IEFic3RyYWN0Q29udHJvbDxhbnksIGFueT4gfSA9IGFueT4gZXh0ZW5kcyBGb3JtR3JvdXA8VD4ge1xuICBvdmVycmlkZSBwYXRjaFZhbHVlKFxuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55XG4gICAgdmFsdWU6IDAgZXh0ZW5kcyAxICYgVCA/IHsgW2tleTogc3RyaW5nXTogYW55IH0gOiBQYXJ0aWFsPHsgW0sgaW4ga2V5b2YgVF06IMm1VmFsdWU8VFtLXT4gfT4sXG4gICAgb3B0aW9ucz86IHsgb25seVNlbGY/OiBib29sZWFuIHwgdW5kZWZpbmVkOyBlbWl0RXZlbnQ/OiBib29sZWFuIHwgdW5kZWZpbmVkIH0gfCB1bmRlZmluZWQsXG4gICk6IHZvaWQge1xuICAgIHN1cGVyLnBhdGNoVmFsdWUodmFsdWUsIG9wdGlvbnMpO1xuICB9XG59XG5cbmV4cG9ydCBjbGFzcyBRdWVyeUZpZWxkPFQ+IHtcbiAgY2hhbmdlcyQgPSB0aGlzLl9zZXR1cENoYW5nZXNPYnNlcnZhYmxlKCk7XG5cbiAgZ2V0IGNvbnRyb2woKSB7XG4gICAgcmV0dXJuIHRoaXMuZGF0YS5jb250cm9sO1xuICB9XG5cbiAgcHJpdmF0ZSBfY3VycmVudERlYm91bmNlVGltZW91dDogbnVtYmVyIHwgbnVsbCA9IG51bGw7XG5cbiAgY29uc3RydWN0b3IocHVibGljIGRhdGE6IFF1ZXJ5RmllbGRPcHRpb25zPFQ+KSB7fVxuXG4gIHNldFZhbHVlKHZhbHVlOiBUIHwgbnVsbCwgb3B0aW9ucz86IHsgc2tpcERlYm91bmNlPzogYm9vbGVhbiB9KSB7XG4gICAgaWYgKHRoaXMuX2N1cnJlbnREZWJvdW5jZVRpbWVvdXQgIT09IG51bGwpIHtcbiAgICAgIGNsZWFyVGltZW91dCh0aGlzLl9jdXJyZW50RGVib3VuY2VUaW1lb3V0KTtcbiAgICAgIHRoaXMuX2N1cnJlbnREZWJvdW5jZVRpbWVvdXQgPSBudWxsO1xuICAgIH1cblxuICAgIGlmICh2YWx1ZSA9PT0gdGhpcy5jb250cm9sLnZhbHVlKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuZGF0YS5kZWJvdW5jZSAmJiAhb3B0aW9ucz8uc2tpcERlYm91bmNlKSB7XG4gICAgICB0aGlzLl9jdXJyZW50RGVib3VuY2VUaW1lb3V0ID0gd2luZG93LnNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICB0aGlzLmNvbnRyb2wuc2V0VmFsdWUodmFsdWUpO1xuICAgICAgfSwgdGhpcy5kYXRhLmRlYm91bmNlKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5jb250cm9sLnNldFZhbHVlKHZhbHVlKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIF9zZXR1cENoYW5nZXNPYnNlcnZhYmxlKCkge1xuICAgIGNvbnN0IG9icyA9IHRoaXMuY29udHJvbC52YWx1ZUNoYW5nZXMucGlwZShzdGFydFdpdGgodGhpcy5jb250cm9sLnZhbHVlKSk7XG5cbiAgICBpZiAoIXRoaXMuZGF0YS5kZWJvdW5jZSkge1xuICAgICAgcmV0dXJuIG9icztcbiAgICB9XG5cbiAgICAvLyBUaGUgaW5pdGlhbCB2YWx1ZSBzaG91bGQgZ2V0IGVtaXR0ZWQgaW1tZWRpYXRlbHlcbiAgICAvLyBjb25jYXQgc3dpdGNoZXMgdG8gdGhlIGRlYm91bmNlZCBvYnNlcnZhYmxlIGFmdGVyIHRoZSBmaXJzdCBvYnNlcnZhYmxlIGlzIGNvbXBsZXRlZFxuICAgIHJldHVybiBjb25jYXQoXG4gICAgICBvYnMucGlwZSh0YWtlKDEpKSxcbiAgICAgIHRoaXMuY29udHJvbC52YWx1ZUNoYW5nZXMucGlwZShcbiAgICAgICAgZGVib3VuY2UoKHYpID0+IHtcbiAgICAgICAgICBpZiAoKHRoaXMuZGF0YS5kaXNhYmxlRGVib3VuY2VJZkZhbHN5ICYmICF2KSB8fCAhdGhpcy5kYXRhLmRlYm91bmNlKSB7XG4gICAgICAgICAgICByZXR1cm4gb2YoMCk7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgcmV0dXJuIHRpbWVyKHRoaXMuZGF0YS5kZWJvdW5jZSk7XG4gICAgICAgIH0pLFxuICAgICAgKSxcbiAgICApO1xuICB9XG59XG5cbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55XG5leHBvcnQgY2xhc3MgUXVlcnlGb3JtPFQgZXh0ZW5kcyBSZWNvcmQ8c3RyaW5nLCBRdWVyeUZpZWxkPGFueT4+PiB7XG4gIHByaXZhdGUgcmVhZG9ubHkgX2Rlc3Ryb3kkID0gY3JlYXRlRGVzdHJveSgpO1xuICBwcml2YXRlIHJlYWRvbmx5IF91bm9ic2VydmVUcmlnZ2VyJCA9IG5ldyBTdWJqZWN0PGJvb2xlYW4+KCk7XG4gIHByaXZhdGUgcmVhZG9ubHkgX3JvdXRlciA9IGluamVjdChSb3V0ZXIpO1xuICBwcml2YXRlIHJlYWRvbmx5IF9hY3RpdmF0ZWRSb3V0ZSA9IGluamVjdChBY3RpdmF0ZWRSb3V0ZSk7XG4gIHByaXZhdGUgcmVhZG9ubHkgX2RlZmF1bHRWYWx1ZXMgPSB0aGlzLl9leHRyYWN0RGVmYXVsdFZhbHVlcygpO1xuICBwcml2YXRlIHJlYWRvbmx5IF9yb3V0ZXJTdGF0ZVNlcnZpY2UgPSBpbmplY3QoUm91dGVyU3RhdGVTZXJ2aWNlKTtcbiAgcHJpdmF0ZSByZWFkb25seSBfem9uZSA9IGluamVjdChOZ1pvbmUpO1xuXG4gIHByaXZhdGUgX2lzT2JzZXJ2aW5nID0gZmFsc2U7XG5cbiAgcmVhZG9ubHkgZm9ybSA9IHRoaXMuX3NldHVwRm9ybUdyb3VwKCk7XG5cbiAgcHJpdmF0ZSByZWFkb25seSBfbGFzdEZvcm1WYWx1ZSQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PHsgaWQ6IG51bWJlcjsgZGF0YTogUXVlcnlGb3JtVmFsdWU8VD4gfSB8IG51bGw+KG51bGwpO1xuICBwcml2YXRlIHJlYWRvbmx5IF9jdXJyZW50Rm9ybVZhbHVlJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8eyBpZDogbnVtYmVyOyBkYXRhOiBRdWVyeUZvcm1WYWx1ZTxUPiB9Pih7XG4gICAgaWQ6IDAsXG4gICAgZGF0YTogdGhpcy5fZm9ybVZhbHVlLFxuICB9KTtcblxuICBwcml2YXRlIGdldCBfZm9ybVZhbHVlKCkge1xuICAgIHJldHVybiB0aGlzLmZvcm0uZ2V0UmF3VmFsdWUoKSBhcyBRdWVyeUZvcm1WYWx1ZTxUPjtcbiAgfVxuXG4gIHByaXZhdGUgcmVhZG9ubHkgX2NoYW5nZXMkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxRdWVyeUZvcm1WYWx1ZUV2ZW50PFQ+Pih7XG4gICAgcHJldmlvdXNWYWx1ZTogbnVsbCxcbiAgICBjdXJyZW50VmFsdWU6IHRoaXMuZm9ybS5nZXRSYXdWYWx1ZSgpIGFzIFF1ZXJ5Rm9ybVZhbHVlPFQ+LFxuICB9KTtcblxuICByZWFkb25seSBjaGFuZ2VzJCA9IHRoaXMuX2N1cnJlbnRGb3JtVmFsdWUkLnBpcGUod2l0aExhdGVzdEZyb20odGhpcy5fbGFzdEZvcm1WYWx1ZSQpKS5waXBlKFxuICAgIG1hcCgoW2N1cnJlbnRWYWx1ZUV2ZW50LCBwcmV2aW91c1ZhbHVlRXZlbnRdKSA9PiB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICBwcmV2aW91c1ZhbHVlOiBwcmV2aW91c1ZhbHVlRXZlbnQ/LmRhdGEgPz8gbnVsbCxcbiAgICAgICAgY3VycmVudFZhbHVlOiBjdXJyZW50VmFsdWVFdmVudC5kYXRhLFxuICAgICAgfTtcbiAgICB9KSxcbiAgKTtcblxuICBnZXQgY29udHJvbHMoKSB7XG4gICAgcmV0dXJuIHRoaXMuZm9ybS5jb250cm9scztcbiAgfVxuXG4gIGdldCB2YWx1ZSgpIHtcbiAgICByZXR1cm4gdGhpcy5fY2hhbmdlcyQudmFsdWUuY3VycmVudFZhbHVlO1xuICB9XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSBfZmllbGRzOiBUKSB7XG4gICAgYXNzZXJ0SW5JbmplY3Rpb25Db250ZXh0KFF1ZXJ5Rm9ybSk7XG4gIH1cblxuICBvYnNlcnZlKG9wdGlvbnM/OiBRdWVyeUZvcm1PYnNlcnZlT3B0aW9ucykge1xuICAgIGlmICh0aGlzLl9pc09ic2VydmluZykge1xuICAgICAgaWYgKGlzRGV2TW9kZSgpKSB7XG4gICAgICAgIGNvbnNvbGUud2FybignUXVlcnlGb3JtLm9ic2VydmUoKSB3YXMgY2FsbGVkIG11bHRpcGxlIHRpbWVzLiBUaGlzIGlzIG5vdCBzdXBwb3J0ZWQuJyk7XG4gICAgICB9XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5faXNPYnNlcnZpbmcgPSB0cnVlO1xuXG4gICAgdGhpcy5zZXRGb3JtVmFsdWVGcm9tVXJsUXVlcnlQYXJhbXMoe1xuICAgICAgcXVlcnlQYXJhbXM6IHRoaXMuX3JvdXRlclN0YXRlU2VydmljZS5xdWVyeVBhcmFtcyxcbiAgICB9KTtcblxuICAgIG1lcmdlKC4uLk9iamVjdC52YWx1ZXModGhpcy5fZmllbGRzKS5tYXAoKGZpZWxkKSA9PiBmaWVsZC5jaGFuZ2VzJCkpXG4gICAgICAucGlwZShcbiAgICAgICAgc3RhcnRXaXRoKG51bGwpLFxuICAgICAgICB0YXAoKCkgPT4ge1xuICAgICAgICAgIHRoaXMuX2xhc3RGb3JtVmFsdWUkLm5leHQoY2xvbmUodGhpcy5fY3VycmVudEZvcm1WYWx1ZSQudmFsdWUpKTtcbiAgICAgICAgICB0aGlzLl9jdXJyZW50Rm9ybVZhbHVlJC5uZXh0KHsgaWQ6IHRoaXMuX2N1cnJlbnRGb3JtVmFsdWUkLnZhbHVlLmlkICsgMSwgZGF0YTogY2xvbmUodGhpcy5fZm9ybVZhbHVlKSB9KTtcbiAgICAgICAgfSksXG4gICAgICAgIHRha2VVbnRpbCh0aGlzLl9kZXN0cm95JCksXG4gICAgICAgIHRha2VVbnRpbCh0aGlzLl91bm9ic2VydmVUcmlnZ2VyJCksXG4gICAgICApXG4gICAgICAuc3Vic2NyaWJlKCk7XG5cbiAgICB0aGlzLl9jdXJyZW50Rm9ybVZhbHVlJFxuICAgICAgLnBpcGUoXG4gICAgICAgIHRhcCgoY3VycmVudFZhbHVlRXZlbnQpID0+IHtcbiAgICAgICAgICBjb25zdCBwcmV2aW91c1ZhbHVlRXZlbnQgPSB0aGlzLl9sYXN0Rm9ybVZhbHVlJC52YWx1ZTtcbiAgICAgICAgICBjb25zdCBjdXJyZW50VmFsdWUgPSBjdXJyZW50VmFsdWVFdmVudC5kYXRhO1xuXG4gICAgICAgICAgaWYgKG9wdGlvbnM/LndyaXRlVG9RdWVyeVBhcmFtcyAhPT0gZmFsc2UpIHtcbiAgICAgICAgICAgIHRoaXMuX3N5bmNWaWFVcmxRdWVyeVBhcmFtcyhjdXJyZW50VmFsdWVFdmVudC5kYXRhLCBvcHRpb25zPy5yZXBsYWNlVXJsKTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBjb25zdCBkaWRSZXNldFZhbHVlcyA9IHRoaXMuX2hhbmRsZVF1ZXJ5Rm9ybVJlc2V0cyhwcmV2aW91c1ZhbHVlRXZlbnQ/LmRhdGEgPz8gbnVsbCwgY3VycmVudFZhbHVlKTtcblxuICAgICAgICAgIGlmIChkaWRSZXNldFZhbHVlcykge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIGlmICh0aGlzLl9jdXJyZW50Rm9ybVZhbHVlJC52YWx1ZS5pZCAhPT0gY3VycmVudFZhbHVlRXZlbnQuaWQpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICB0aGlzLl9jaGFuZ2VzJC5uZXh0KHtcbiAgICAgICAgICAgIHByZXZpb3VzVmFsdWU6IHByZXZpb3VzVmFsdWVFdmVudD8uZGF0YSA/PyBudWxsLFxuICAgICAgICAgICAgY3VycmVudFZhbHVlOiBjdXJyZW50VmFsdWVFdmVudC5kYXRhLFxuICAgICAgICAgIH0pO1xuICAgICAgICB9KSxcbiAgICAgICAgdGFrZVVudGlsKHRoaXMuX2Rlc3Ryb3kkKSxcbiAgICAgICAgdGFrZVVudGlsKHRoaXMuX3Vub2JzZXJ2ZVRyaWdnZXIkKSxcbiAgICAgIClcbiAgICAgIC5zdWJzY3JpYmUoKTtcblxuICAgIGlmIChvcHRpb25zPy5zeW5jT25OYXZpZ2F0aW9uICE9PSBmYWxzZSkge1xuICAgICAgdGhpcy5fcm91dGVyU3RhdGVTZXJ2aWNlLnF1ZXJ5UGFyYW1DaGFuZ2VzJFxuICAgICAgICAucGlwZShcbiAgICAgICAgICB0YWtlVW50aWwodGhpcy5fZGVzdHJveSQpLFxuICAgICAgICAgIHRha2VVbnRpbCh0aGlzLl91bm9ic2VydmVUcmlnZ2VyJCksXG4gICAgICAgICAgdGFwKChjaGFuZ2VzKSA9PiB0aGlzLnNldEZvcm1WYWx1ZUZyb21VcmxRdWVyeVBhcmFtcyh7IHF1ZXJ5UGFyYW1zOiBjaGFuZ2VzIH0pKSxcbiAgICAgICAgKVxuICAgICAgICAuc3Vic2NyaWJlKCk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBfaGFuZGxlUXVlcnlGb3JtUmVzZXRzKHByZXZpb3VzVmFsdWU6IFF1ZXJ5Rm9ybVZhbHVlPFQ+IHwgbnVsbCwgY3VycmVudFZhbHVlOiBRdWVyeUZvcm1WYWx1ZTxUPikge1xuICAgIGxldCBkaWRSZXNldFZhbHVlcyA9IGZhbHNlO1xuXG4gICAgZm9yIChjb25zdCBmb3JtRmllbGRLZXkgaW4gdGhpcy5fZmllbGRzKSB7XG4gICAgICBjb25zdCByZXNldHMgPSB0aGlzLl9maWVsZHNbZm9ybUZpZWxkS2V5XS5kYXRhLmlzUmVzZXRCeTtcblxuICAgICAgaWYgKCFyZXNldHMpIGNvbnRpbnVlO1xuXG4gICAgICBjb25zdCByZXNldENvbmRpdGlvbktleXMgPSBBcnJheS5pc0FycmF5KHJlc2V0cykgPyByZXNldHMgOiBbcmVzZXRzXTtcblxuICAgICAgZm9yIChjb25zdCByZXNldENvbmRpdGlvbktleSBvZiByZXNldENvbmRpdGlvbktleXMpIHtcbiAgICAgICAgaWYgKCEocmVzZXRDb25kaXRpb25LZXkgaW4gdGhpcy5fZmllbGRzKSkge1xuICAgICAgICAgIGlmIChpc0Rldk1vZGUoKSkge1xuICAgICAgICAgICAgY29uc29sZS53YXJuKGBUaGUgZmllbGQgXCIke3Jlc2V0Q29uZGl0aW9uS2V5fVwiIGlzIG5vdCBkZWZpbmVkIGluIHRoZSBRdWVyeUZvcm0uIElzIGl0IGEgdHlwbz9gLCB0aGlzKTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChcbiAgICAgICAgICBwcmV2aW91c1ZhbHVlICYmXG4gICAgICAgICAgY3VycmVudFZhbHVlICYmXG4gICAgICAgICAgIWVxdWFsKHByZXZpb3VzVmFsdWVbcmVzZXRDb25kaXRpb25LZXldLCBjdXJyZW50VmFsdWVbcmVzZXRDb25kaXRpb25LZXldKVxuICAgICAgICApIHtcbiAgICAgICAgICBjb25zdCBkZWZhdWx0VmFsdWVGb3JLZXlUb1Jlc2V0ID0gdGhpcy5fZ2V0RGVmYXVsdFZhbHVlKGZvcm1GaWVsZEtleSk7XG4gICAgICAgICAgY29uc3QgY3VycmVudFZhbHVlRm9yS2V5VG9SZXNldCA9IGN1cnJlbnRWYWx1ZVtmb3JtRmllbGRLZXldO1xuXG4gICAgICAgICAgaWYgKGVxdWFsKGRlZmF1bHRWYWx1ZUZvcktleVRvUmVzZXQsIGN1cnJlbnRWYWx1ZUZvcktleVRvUmVzZXQpKSB7XG4gICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICB0aGlzLmZvcm0uY29udHJvbHNbZm9ybUZpZWxkS2V5XS5zZXRWYWx1ZShkZWZhdWx0VmFsdWVGb3JLZXlUb1Jlc2V0KTtcblxuICAgICAgICAgIGRpZFJlc2V0VmFsdWVzID0gdHJ1ZTtcblxuICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIGRpZFJlc2V0VmFsdWVzO1xuICB9XG5cbiAgdW5vYnNlcnZlKCkge1xuICAgIHRoaXMuX3Vub2JzZXJ2ZVRyaWdnZXIkLm5leHQodHJ1ZSk7XG4gIH1cblxuICBzZXRGb3JtVmFsdWVGcm9tVXJsUXVlcnlQYXJhbXMob3B0aW9uczogeyBxdWVyeVBhcmFtczogUmVjb3JkPHN0cmluZywgdW5rbm93bj47IHNraXBEZWJvdW5jZT86IGJvb2xlYW4gfSkge1xuICAgIGZvciAoY29uc3QgW2tleSwgZmllbGRdIG9mIE9iamVjdC5lbnRyaWVzKHRoaXMuX2ZpZWxkcykpIHtcbiAgICAgIGNvbnN0IHZhbHVlID0gb3B0aW9ucy5xdWVyeVBhcmFtc1trZXldO1xuXG4gICAgICBjb25zdCB2YWx1ZURvZXNOb3RFeGlzdCA9IHZhbHVlID09PSB1bmRlZmluZWQ7XG5cbiAgICAgIGlmICh2YWx1ZURvZXNOb3RFeGlzdCkgY29udGludWU7XG5cbiAgICAgIGNvbnN0IHZhbHVlR290UmVtb3ZlZCA9IHZhbHVlID09PSBFVF9QUk9QRVJUWV9SRU1PVkVEO1xuXG4gICAgICBpZiAodmFsdWVHb3RSZW1vdmVkKSB7XG4gICAgICAgIGZpZWxkLnNldFZhbHVlKHRoaXMuX2dldERlZmF1bHRWYWx1ZShrZXkpLCB7IHNraXBEZWJvdW5jZTogb3B0aW9ucz8uc2tpcERlYm91bmNlID8/IHRydWUgfSk7XG5cbiAgICAgICAgY29udGludWU7XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IGRlc2VyaWFsaXplZFZhbHVlID0gZmllbGQuZGF0YS5xdWVyeVBhcmFtVG9WYWx1ZVRyYW5zZm9ybUZuPy4odmFsdWUpID8/IHZhbHVlO1xuICAgICAgY29uc3QgdmFsdWVJc0VxdWFsVG9DdXJyZW50ID0gZXF1YWwoZGVzZXJpYWxpemVkVmFsdWUsIGZpZWxkLmNvbnRyb2wudmFsdWUpO1xuXG4gICAgICBpZiAodmFsdWVJc0VxdWFsVG9DdXJyZW50KSBjb250aW51ZTtcblxuICAgICAgZmllbGQuc2V0VmFsdWUoZGVzZXJpYWxpemVkVmFsdWUsIHsgc2tpcERlYm91bmNlOiBvcHRpb25zPy5za2lwRGVib3VuY2UgPz8gdHJ1ZSB9KTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIF9nZXREZWZhdWx0VmFsdWUoa2V5OiBzdHJpbmcpIHtcbiAgICBjb25zdCB2YWwgPSB0aGlzLl9kZWZhdWx0VmFsdWVzW2tleV07XG5cbiAgICBpZiAodHlwZW9mIHZhbCA9PT0gJ3N0cmluZycgJiYgdmFsLnN0YXJ0c1dpdGgoRVRfQVJSX1BSRUZJWCkpIHtcbiAgICAgIHJldHVybiBKU09OLnBhcnNlKHZhbC5zbGljZShFVF9BUlJfUFJFRklYLmxlbmd0aCkpO1xuICAgIH1cblxuICAgIHJldHVybiB2YWwgPz8gbnVsbDtcbiAgfVxuXG4gIHByaXZhdGUgX2lzRGVmYXVsdFZhbHVlKGtleTogc3RyaW5nLCB2YWx1ZTogdW5rbm93bikge1xuICAgIGNvbnN0IG5vcm1hbGl6ZWRWYWx1ZSA9IEFycmF5LmlzQXJyYXkodmFsdWUpID8gYCR7RVRfQVJSX1BSRUZJWH0ke0pTT04uc3RyaW5naWZ5KHZhbHVlKX1gIDogdmFsdWU7XG5cbiAgICByZXR1cm4gdGhpcy5fZ2V0RGVmYXVsdFZhbHVlKGtleSkgPT09IG5vcm1hbGl6ZWRWYWx1ZTtcbiAgfVxuXG4gIHByaXZhdGUgX3NldHVwRm9ybUdyb3VwKCkge1xuICAgIGNvbnN0IGdyb3VwID0gbmV3IFF1ZXJ5Rm9ybUdyb3VwKHt9IGFzIFF1ZXJ5Rm9ybUdyb3VwQ29udHJvbHM8VD4pO1xuXG4gICAgZm9yIChjb25zdCBba2V5LCBmaWVsZF0gb2YgT2JqZWN0LmVudHJpZXModGhpcy5fZmllbGRzKSkge1xuICAgICAgZ3JvdXAuYWRkQ29udHJvbChrZXksIGZpZWxkLmNvbnRyb2wpO1xuICAgIH1cblxuICAgIHJldHVybiBncm91cDtcbiAgfVxuXG4gIHByaXZhdGUgX2V4dHJhY3REZWZhdWx0VmFsdWVzKCkge1xuICAgIGNvbnN0IGRlZmF1bHRWYWx1ZXM6IFJlY29yZDxzdHJpbmcsIHVua25vd24+ID0ge307XG5cbiAgICBmb3IgKGNvbnN0IFtrZXksIGZpZWxkXSBvZiBPYmplY3QuZW50cmllcyh0aGlzLl9maWVsZHMpKSB7XG4gICAgICBjb25zdCB2YWx1ZSA9IGZpZWxkLmNvbnRyb2wudmFsdWU7XG5cbiAgICAgIGlmICh2YWx1ZSA9PT0gbnVsbCB8fCB2YWx1ZSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIGNvbnRpbnVlO1xuICAgICAgfVxuXG4gICAgICBpZiAoQXJyYXkuaXNBcnJheSh2YWx1ZSkpIHtcbiAgICAgICAgZGVmYXVsdFZhbHVlc1trZXldID0gYCR7RVRfQVJSX1BSRUZJWH0ke0pTT04uc3RyaW5naWZ5KHZhbHVlKX1gO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgZGVmYXVsdFZhbHVlc1trZXldID0gdmFsdWU7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIGRlZmF1bHRWYWx1ZXM7XG4gIH1cblxuICBwcml2YXRlIF9zeW5jVmlhVXJsUXVlcnlQYXJhbXModmFsdWVzOiBRdWVyeUZvcm1WYWx1ZTxUPiwgcmVwbGFjZVVybD86IGJvb2xlYW4pIHtcbiAgICBjb25zdCBxdWVyeVBhcmFtcyA9IHsgLi4uY2xvbmUodGhpcy5fYWN0aXZhdGVkUm91dGUuc25hcHNob3QucXVlcnlQYXJhbXMpIH07XG5cbiAgICBmb3IgKGNvbnN0IFtrZXksIHZhbHVlXSBvZiBPYmplY3QuZW50cmllcyh2YWx1ZXMpKSB7XG4gICAgICBpZiAoIXRoaXMuX2ZpZWxkc1trZXldKSB7XG4gICAgICAgIGNvbnNvbGUud2FybihgVGhlIGZpZWxkIFwiJHtrZXl9XCIgaXMgbm90IGRlZmluZWQgaW4gdGhlIFF1ZXJ5Rm9ybS4gSXMgaXQgYSB0eXBvP2AsIHRoaXMpO1xuICAgICAgICBjb250aW51ZTtcbiAgICAgIH1cblxuICAgICAgaWYgKHRoaXMuX2lzRGVmYXVsdFZhbHVlKGtleSwgdmFsdWUpIHx8IHRoaXMuX2ZpZWxkc1trZXldLmRhdGEuYXBwZW5kVG9VcmwgPT09IGZhbHNlKSB7XG4gICAgICAgIGRlbGV0ZSBxdWVyeVBhcmFtc1trZXldO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcXVlcnlQYXJhbXNba2V5XSA9IHRoaXMuX2ZpZWxkc1trZXldLmRhdGEudmFsdWVUb1F1ZXJ5UGFyYW1UcmFuc2Zvcm1GblxuICAgICAgICAgID8gdGhpcy5fZmllbGRzW2tleV0uZGF0YS52YWx1ZVRvUXVlcnlQYXJhbVRyYW5zZm9ybUZuPy4odmFsdWUpXG4gICAgICAgICAgOiB2YWx1ZTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICB0aGlzLl96b25lLnJ1bigoKSA9PiB7XG4gICAgICB0aGlzLl9yb3V0ZXIubmF2aWdhdGUoW10sIHtcbiAgICAgICAgcXVlcnlQYXJhbXMsXG4gICAgICAgIHJlcGxhY2VVcmwsXG4gICAgICB9KTtcbiAgICB9KTtcbiAgfVxufVxuIl19
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
export {};
|
|
2
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicXVlcnktZm9ybS50eXBlcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvcXVlcnkvc3JjL2xpYi9xdWVyeS1mb3JtL3F1ZXJ5LWZvcm0udHlwZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEZvcm1Db250cm9sIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgUXVlcnlGaWVsZCB9IGZyb20gJy4vcXVlcnktZm9ybSc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgUXVlcnlGaWVsZE9wdGlvbnM8VCA9IHVua25vd24+IHtcbiAgLyoqXG4gICAqIERlYm91bmNlIHRpbWUgaW4gbWlsbGlzZWNvbmRzLlxuICAgKi9cbiAgZGVib3VuY2U/
|
|
2
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicXVlcnktZm9ybS50eXBlcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvcXVlcnkvc3JjL2xpYi9xdWVyeS1mb3JtL3F1ZXJ5LWZvcm0udHlwZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEZvcm1Db250cm9sIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgUXVlcnlGaWVsZCB9IGZyb20gJy4vcXVlcnktZm9ybSc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgUXVlcnlGaWVsZE9wdGlvbnM8VCA9IHVua25vd24+IHtcbiAgLyoqXG4gICAqIERlYm91bmNlIHRpbWUgaW4gbWlsbGlzZWNvbmRzLlxuICAgKi9cbiAgZGVib3VuY2U/OiBudW1iZXI7XG5cbiAgLyoqXG4gICAqICBXaGV0aGVyIHRoZSBkZWJvdW5jZSBzaG91bGQgbm90IGJlIGFwcGxpZWQgaWYgdGhlIHZhbHVlIGlzIGZhbHN5LlxuICAgKiAgVGhpcyBpcyB1c2VmdWwgZm9yIGZpZWxkcyB0aGF0IGNhbiBiZSBjbGVhcmVkIGxpa2UgYSBzZWFyY2ggZmllbGQuXG4gICAqXG4gICAqICBAZGVmYXVsdCBmYWxzZVxuICAgKi9cbiAgZGlzYWJsZURlYm91bmNlSWZGYWxzeT86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIFRoZSBmb3JtIGNvbnRyb2wgZm9yIHRoZSBmaWVsZC5cbiAgICovXG4gIGNvbnRyb2w6IEZvcm1Db250cm9sPFQgfCBudWxsPjtcblxuICAvKipcbiAgICogQXBwZW5kIHRoZSBmaWVsZCdzIHZhbHVlIHRvIHRoZSB1cmwuXG4gICAqXG4gICAqIFRoZSBmaWVsZCB3b250IGJlIGFwcGVuZGVkIHRvIHRoZSB1cmwgaWYgb25lIG9mIHRoZSBmb2xsb3dpbmcgaXMgdHJ1ZTpcbiAgICogLSBJdCBpcyB0aGUgZGVmYXVsdCB2YWx1ZVxuICAgKiAtIEl0IGlzIGFuIGVtcHR5IHN0cmluZ1xuICAgKiAtIEl0IGlzIGBudWxsYFxuICAgKiAtIEl0IGlzIGB1bmRlZmluZWRgXG4gICAqXG4gICAqIEBkZWZhdWx0IHRydWVcbiAgICovXG4gIGFwcGVuZFRvVXJsPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogUmVzZXQgdGhlIGZpZWxkJ3MgdmFsdWUgdG8gdGhlIGRlZmF1bHQgdmFsdWUgaWYgb25lIG9yIG1vcmUgb2YgdGhlIHNwZWNpZmllZCBmaWVsZHMgYXJlIGNoYW5nZWQuXG4gICAqXG4gICAqIEBleGFtcGxlXG4gICAqIC8vIEdpdmVuIHRoaXMgZmllbGQgaXMgYSBgcGFnZWAgZmllbGQsIHRoZSBmaWVsZCB3aWxsIGJlIHJlc2V0IGlmIHRoZSBgbGltaXRgLCBgcXVlcnlgIG9yIGBzZWFyY2hgIGZpZWxkcyBhcmUgY2hhbmdlZC5cbiAgICogWydsaW1pdCcsICdxdWVyeScsICdzZWFyY2gnXVxuICAgKi9cbiAgaXNSZXNldEJ5Pzogc3RyaW5nIHwgc3RyaW5nW107XG5cbiAgLyoqXG4gICAqIEEgZnVuY3Rpb24gdGhhdCB0cmFuc2Zvcm1zIHRoZSB0aGUgdmFsdWUgZ290dGVuIGZyb20gdGhlIHVybCBxdWVyeSBwYXJhbXMgdG8gYSB2YWx1ZSByZXF1aXJlZCBieSB0aGUgZmllbGQuXG4gICAqIEUuZy4gZm9yIGEgbnVtYmVyIGZpZWxkLCB0aGUgdmFsdWUgZnJvbSB0aGUgdXJsIHF1ZXJ5IHBhcmFtcyBpcyBhIHN0cmluZywgYnV0IHRoZSBmaWVsZCByZXF1aXJlcyBhIG51bWJlci5cbiAgICpcbiAgICogVGhlIGZvbGxvd2luZyBjb21tb24gdHJhbnNmb3JtYXRpb25zIGFyZSBhbHJlYWR5IGltcGxlbWVudGVkOlxuICAgKiAtIGB0cmFuc2Zvcm1Ub1N0cmluZ2BcbiAgICogLSBgdHJhbnNmb3JtVG9TdHJpbmdBcnJheWBcbiAgICogLSBgdHJhbnNmb3JtVG9OdW1iZXJgXG4gICAqIC0gYHRyYW5zZm9ybVRvTnVtYmVyQXJyYXlgXG4gICAqIC0gYHRyYW5zZm9ybVRvQm9vbGVhbmBcbiAgICogLSBgdHJhbnNmb3JtVG9Cb29sZWFuQXJyYXlgXG4gICAqIC0gYHRyYW5zZm9ybVRvRGF0ZWAgKGV4cGVjdHMgYSBzdHJpbmcgaW4gdGhlIGRlZmF1bHQganMgZm9ybWF0KVxuICAgKiAtIGB0cmFuc2Zvcm1Ub0RhdGVBcnJheWAgKGV4cGVjdHMgc3RyaW5ncyBpbiB0aGUgZGVmYXVsdCBqcyBmb3JtYXQpXG4gICAqIC0gYHRyYW5zZm9ybVRvU29ydGAgKGV4cGVjdHMgYSBzdHJpbmcgaW4gdGhlIGZvcm1hdCBgZmllbGQ6ZGlyZWN0aW9uYClcbiAgICovXG4gIHF1ZXJ5UGFyYW1Ub1ZhbHVlVHJhbnNmb3JtRm4/OiAodmFsOiB1bmtub3duKSA9PiBUIHwgbnVsbDtcblxuICAvKipcbiAgICogQSBmdW5jdGlvbiB0aGF0IHRyYW5zZm9ybXMgdGhlIHZhbHVlIG9mIHRoZSBmaWVsZCB0byBhIHZhbHVlIHRoYXQgY2FuIGJlIGFwcGVuZGVkIHRvIHRoZSB1cmwgcXVlcnkgcGFyYW1zLlxuICAgKlxuICAgKiBUaGUgZm9sbG93aW5nIGNvbW1vbiB0cmFuc2Zvcm1hdGlvbnMgYXJlIGFscmVhZHkgaW1wbGVtZW50ZWQ6XG4gICAqIC0gYHRyYW5zZm9ybVRvU29ydFF1ZXJ5UGFyYW1gIChyZXR1cm5zIGFuIG9iamVjdCBjb250YWluaW5nIGBmaWVsZGAgYW5kIGBkaXJlY3Rpb25gIHByb3BlcnRpZXMpXG4gICAqL1xuICB2YWx1ZVRvUXVlcnlQYXJhbVRyYW5zZm9ybUZuPzogKHZhbDogVCB8IG51bGwpID0+IHVua25vd247XG59XG5cbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55XG5leHBvcnQgdHlwZSBRdWVyeUZvcm1Hcm91cENvbnRyb2xzPFQgZXh0ZW5kcyBSZWNvcmQ8c3RyaW5nLCBRdWVyeUZpZWxkPGFueT4+PiA9IHtcbiAgW1Byb3BlcnR5IGluIGtleW9mIFRdOiBUW1Byb3BlcnR5XVsnY29udHJvbCddO1xufTtcblxuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnlcbmV4cG9ydCB0eXBlIFF1ZXJ5Rm9ybVZhbHVlPFQgZXh0ZW5kcyBSZWNvcmQ8c3RyaW5nLCBRdWVyeUZpZWxkPGFueT4+PiA9IHtcbiAgW1Byb3BlcnR5IGluIGtleW9mIFRdOiBUW1Byb3BlcnR5XVsnY29udHJvbCddWyd2YWx1ZSddO1xufTtcblxuZXhwb3J0IGludGVyZmFjZSBRdWVyeUZvcm1PYnNlcnZlT3B0aW9ucyB7XG4gIC8qKlxuICAgKiBXaGV0aGVyIHRoZSBmb3JtIHZhbHVlIHNob3VsZCBiZSBzeW5jZWQgdG8gdGhlIHVybCBxdWVyeSBwYXJhbXMuXG4gICAqIEBkZWZhdWx0IHRydWVcbiAgICovXG4gIHdyaXRlVG9RdWVyeVBhcmFtcz86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIFdoZXRoZXIgdGhlIGZvcm0gdmFsdWUgc2hvdWxkIGJlIHVwZGF0ZWQgd2hlbiB0aGUgdXJsIHF1ZXJ5IHBhcmFtcyBjaGFuZ2UuXG4gICAqIEBkZWZhdWx0IHRydWVcbiAgICovXG4gIHN5bmNPbk5hdmlnYXRpb24/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBJZiB0cnVlLCB0aGUgbmF2aWdhdGlvbiB3aWxsIG5vdCBjcmVhdGUgYSBuZXcgZW50cnkgaW4gdGhlIGJyb3dzZXIncyBoaXN0b3J5LlxuICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgKi9cbiAgcmVwbGFjZVVybD86IGJvb2xlYW47XG59XG5cbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55XG5leHBvcnQgaW50ZXJmYWNlIFF1ZXJ5Rm9ybVZhbHVlRXZlbnQ8VCBleHRlbmRzIFJlY29yZDxzdHJpbmcsIFF1ZXJ5RmllbGQ8YW55Pj4+IHtcbiAgcHJldmlvdXNWYWx1ZTogUXVlcnlGb3JtVmFsdWU8VD4gfCBudWxsO1xuICBjdXJyZW50VmFsdWU6IFF1ZXJ5Rm9ybVZhbHVlPFQ+O1xufVxuIl19
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import * as i1$1 from '@ethlete/core';
|
|
2
2
|
import { getCookie, setCookie, deleteCookie, createDestroy, nextFrame, DelayableDirective, RouterStateService, clone, equal, ET_PROPERTY_REMOVED } from '@ethlete/core';
|
|
3
|
-
import { Observable, BehaviorSubject, Subject, fromEvent, timer, takeUntil, take, filter, takeWhile, switchMap, of, tap, shareReplay, interval, skip, map, startWith, combineLatest, withLatestFrom, debounceTime, concat } from 'rxjs';
|
|
3
|
+
import { Observable, BehaviorSubject, Subject, fromEvent, timer, takeUntil, take, filter, takeWhile, switchMap, of, tap, shareReplay, interval, skip, map, startWith, combineLatest, withLatestFrom, debounceTime, concat, debounce, merge } from 'rxjs';
|
|
4
4
|
import * as i0 from '@angular/core';
|
|
5
5
|
import { isDevMode, Pipe, InjectionToken, inject, ChangeDetectorRef, signal, computed, effect, Component, ChangeDetectionStrategy, ViewEncapsulation, TemplateRef, ViewContainerRef, ErrorHandler, Directive, Input, ElementRef, NgZone, assertInInjectionContext } from '@angular/core';
|
|
6
6
|
import { NgIf, NgFor, AsyncPipe, JsonPipe, NgClass } from '@angular/common';
|
|
@@ -1478,10 +1478,10 @@ class QueryShortNamePipe {
|
|
|
1478
1478
|
console.log(route);
|
|
1479
1479
|
return route;
|
|
1480
1480
|
}
|
|
1481
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.
|
|
1482
|
-
static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "16.2.
|
|
1481
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.2", ngImport: i0, type: QueryShortNamePipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe }); }
|
|
1482
|
+
static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "16.2.2", ngImport: i0, type: QueryShortNamePipe, isStandalone: true, name: "queryShortName" }); }
|
|
1483
1483
|
}
|
|
1484
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.
|
|
1484
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.2", ngImport: i0, type: QueryShortNamePipe, decorators: [{
|
|
1485
1485
|
type: Pipe,
|
|
1486
1486
|
args: [{ name: 'queryShortName', standalone: true }]
|
|
1487
1487
|
}] });
|
|
@@ -1688,14 +1688,14 @@ class QueryDevtoolsComponent {
|
|
|
1688
1688
|
clearQueryHistory() {
|
|
1689
1689
|
this.queryHistory.set([]);
|
|
1690
1690
|
}
|
|
1691
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.
|
|
1692
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.0", type: QueryDevtoolsComponent, isStandalone: true, selector: "et-query-devtools", host: { classAttribute: "et-query-devtools" }, ngImport: i0, template: "<button *ngIf=\"!isOpen()\" (click)=\"toggleOpen()\" class=\"et-query-devtools-open-btn et-qd-chip\">Open Devtools</button>\n\n<div\n *ngIf=\"isOpen()\"\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 <option *ngFor=\"let clientConfig of queryClientConfigs; index as i; trackBy: trackByClient\" [value]=\"i\">\n {{ clientConfig.displayName ?? clientConfig.client.config.baseRoute }}\n </option>\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 <div *ngIf=\"selectedClientConfig() as cfg\" 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 <div *ngIf=\"selectedClientConfig() as cfg\" 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().length }}/50)\n </button>\n <ng-container *ngIf=\"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 </ng-container>\n </div>\n\n <div class=\"et-qd-queries__browser\">\n <ul *ngIf=\"queryListMode() === 'live'\" class=\"et-qd-queries__browser-list\">\n <li *ngFor=\"let query of queries(); trackBy: trackByQuery\">\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 </ul>\n <ul *ngIf=\"queryListMode() === 'history'\" class=\"et-qd-queries__browser-list\">\n <li *ngFor=\"let query of queryHistory(); trackBy: trackByQuery\">\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 </ul>\n <div class=\"et-qd-queries__browser-detail\">\n <ng-container *ngIf=\"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 <ng-container *ngIf=\"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 </ng-container>\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>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>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 <pre *ngIf=\"showArguments()\">{{ query._arguments | json }}</pre>\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 <pre *ngIf=\"showResponse()\">{{ query.state$ | async | json }}</pre>\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 <pre *ngIf=\"showRawResponse()\">{{ query.rawState | json }}</pre>\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 <pre *ngIf=\"showQueryConfig()\">{{ stringifiedQueryConfig() | json }}</pre>\n </div>\n\n <div *ngIf=\"!!query._queryConfig.entity\" 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 <pre *ngIf=\"showEntityStoreValue()\">{{ selectedQueryEntityStoreValue$ | async | json }}</pre>\n </div>\n </div>\n </ng-container>\n </div>\n </div>\n </div>\n</div>\n", styles: [".et-query-devtools{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: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: NgFor, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { 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 }); }
|
|
1691
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.2", ngImport: i0, type: QueryDevtoolsComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
1692
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.2", type: QueryDevtoolsComponent, isStandalone: true, selector: "et-query-devtools", host: { classAttribute: "et-query-devtools" }, ngImport: i0, template: "<button *ngIf=\"!isOpen()\" (click)=\"toggleOpen()\" class=\"et-query-devtools-open-btn et-qd-chip\">Open Devtools</button>\n\n<div\n *ngIf=\"isOpen()\"\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 <option *ngFor=\"let clientConfig of queryClientConfigs; index as i; trackBy: trackByClient\" [value]=\"i\">\n {{ clientConfig.displayName ?? clientConfig.client.config.baseRoute }}\n </option>\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 <div *ngIf=\"selectedClientConfig() as cfg\" 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 <div *ngIf=\"selectedClientConfig() as cfg\" 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().length }}/50)\n </button>\n <ng-container *ngIf=\"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 </ng-container>\n </div>\n\n <div class=\"et-qd-queries__browser\">\n <ul *ngIf=\"queryListMode() === 'live'\" class=\"et-qd-queries__browser-list\">\n <li *ngFor=\"let query of queries(); trackBy: trackByQuery\">\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 </ul>\n <ul *ngIf=\"queryListMode() === 'history'\" class=\"et-qd-queries__browser-list\">\n <li *ngFor=\"let query of queryHistory(); trackBy: trackByQuery\">\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 </ul>\n <div class=\"et-qd-queries__browser-detail\">\n <ng-container *ngIf=\"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 <ng-container *ngIf=\"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 </ng-container>\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>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>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 <pre *ngIf=\"showArguments()\">{{ query._arguments | json }}</pre>\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 <pre *ngIf=\"showResponse()\">{{ query.state$ | async | json }}</pre>\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 <pre *ngIf=\"showRawResponse()\">{{ query.rawState | json }}</pre>\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 <pre *ngIf=\"showQueryConfig()\">{{ stringifiedQueryConfig() | json }}</pre>\n </div>\n\n <div *ngIf=\"!!query._queryConfig.entity\" 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 <pre *ngIf=\"showEntityStoreValue()\">{{ selectedQueryEntityStoreValue$ | async | json }}</pre>\n </div>\n </div>\n </ng-container>\n </div>\n </div>\n </div>\n</div>\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: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: NgFor, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { 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 }); }
|
|
1693
1693
|
}
|
|
1694
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.
|
|
1694
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.2", ngImport: i0, type: QueryDevtoolsComponent, decorators: [{
|
|
1695
1695
|
type: Component,
|
|
1696
1696
|
args: [{ selector: 'et-query-devtools', standalone: true, changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.ShadowDom, host: {
|
|
1697
1697
|
class: 'et-query-devtools',
|
|
1698
|
-
}, imports: [NgIf, NgFor, AsyncPipe, JsonPipe, ReactiveFormsModule, NgClass, QueryShortNamePipe], hostDirectives: [], template: "<button *ngIf=\"!isOpen()\" (click)=\"toggleOpen()\" class=\"et-query-devtools-open-btn et-qd-chip\">Open Devtools</button>\n\n<div\n *ngIf=\"isOpen()\"\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 <option *ngFor=\"let clientConfig of queryClientConfigs; index as i; trackBy: trackByClient\" [value]=\"i\">\n {{ clientConfig.displayName ?? clientConfig.client.config.baseRoute }}\n </option>\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 <div *ngIf=\"selectedClientConfig() as cfg\" 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 <div *ngIf=\"selectedClientConfig() as cfg\" 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().length }}/50)\n </button>\n <ng-container *ngIf=\"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 </ng-container>\n </div>\n\n <div class=\"et-qd-queries__browser\">\n <ul *ngIf=\"queryListMode() === 'live'\" class=\"et-qd-queries__browser-list\">\n <li *ngFor=\"let query of queries(); trackBy: trackByQuery\">\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 </ul>\n <ul *ngIf=\"queryListMode() === 'history'\" class=\"et-qd-queries__browser-list\">\n <li *ngFor=\"let query of queryHistory(); trackBy: trackByQuery\">\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 </ul>\n <div class=\"et-qd-queries__browser-detail\">\n <ng-container *ngIf=\"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 <ng-container *ngIf=\"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 </ng-container>\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>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>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 <pre *ngIf=\"showArguments()\">{{ query._arguments | json }}</pre>\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 <pre *ngIf=\"showResponse()\">{{ query.state$ | async | json }}</pre>\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 <pre *ngIf=\"showRawResponse()\">{{ query.rawState | json }}</pre>\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 <pre *ngIf=\"showQueryConfig()\">{{ stringifiedQueryConfig() | json }}</pre>\n </div>\n\n <div *ngIf=\"!!query._queryConfig.entity\" 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 <pre *ngIf=\"showEntityStoreValue()\">{{ selectedQueryEntityStoreValue$ | async | json }}</pre>\n </div>\n </div>\n </ng-container>\n </div>\n </div>\n </div>\n</div>\n", styles: [".et-query-devtools{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"] }]
|
|
1698
|
+
}, imports: [NgIf, NgFor, AsyncPipe, JsonPipe, ReactiveFormsModule, NgClass, QueryShortNamePipe], hostDirectives: [], template: "<button *ngIf=\"!isOpen()\" (click)=\"toggleOpen()\" class=\"et-query-devtools-open-btn et-qd-chip\">Open Devtools</button>\n\n<div\n *ngIf=\"isOpen()\"\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 <option *ngFor=\"let clientConfig of queryClientConfigs; index as i; trackBy: trackByClient\" [value]=\"i\">\n {{ clientConfig.displayName ?? clientConfig.client.config.baseRoute }}\n </option>\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 <div *ngIf=\"selectedClientConfig() as cfg\" 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 <div *ngIf=\"selectedClientConfig() as cfg\" 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().length }}/50)\n </button>\n <ng-container *ngIf=\"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 </ng-container>\n </div>\n\n <div class=\"et-qd-queries__browser\">\n <ul *ngIf=\"queryListMode() === 'live'\" class=\"et-qd-queries__browser-list\">\n <li *ngFor=\"let query of queries(); trackBy: trackByQuery\">\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 </ul>\n <ul *ngIf=\"queryListMode() === 'history'\" class=\"et-qd-queries__browser-list\">\n <li *ngFor=\"let query of queryHistory(); trackBy: trackByQuery\">\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 </ul>\n <div class=\"et-qd-queries__browser-detail\">\n <ng-container *ngIf=\"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 <ng-container *ngIf=\"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 </ng-container>\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>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>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 <pre *ngIf=\"showArguments()\">{{ query._arguments | json }}</pre>\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 <pre *ngIf=\"showResponse()\">{{ query.state$ | async | json }}</pre>\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 <pre *ngIf=\"showRawResponse()\">{{ query.rawState | json }}</pre>\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 <pre *ngIf=\"showQueryConfig()\">{{ stringifiedQueryConfig() | json }}</pre>\n </div>\n\n <div *ngIf=\"!!query._queryConfig.entity\" 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 <pre *ngIf=\"showEntityStoreValue()\">{{ selectedQueryEntityStoreValue$ | async | json }}</pre>\n </div>\n </div>\n </ng-container>\n </div>\n </div>\n </div>\n</div>\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"] }]
|
|
1699
1699
|
}], ctorParameters: function () { return []; } });
|
|
1700
1700
|
|
|
1701
1701
|
class QueryDirective {
|
|
@@ -1796,10 +1796,10 @@ class QueryDirective {
|
|
|
1796
1796
|
this._viewContainerRef.createEmbeddedView(this._mainTemplateRef, this._viewContext);
|
|
1797
1797
|
}
|
|
1798
1798
|
}
|
|
1799
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.
|
|
1800
|
-
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.2.
|
|
1799
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.2", ngImport: i0, type: QueryDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
1800
|
+
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.2.2", type: QueryDirective, isStandalone: true, selector: "[etQuery]", inputs: { query: ["etQuery", "query"], cache: ["etQueryCache", "cache"] }, ngImport: i0 }); }
|
|
1801
1801
|
}
|
|
1802
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.
|
|
1802
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.2", ngImport: i0, type: QueryDirective, decorators: [{
|
|
1803
1803
|
type: Directive,
|
|
1804
1804
|
args: [{
|
|
1805
1805
|
// eslint-disable-next-line @angular-eslint/directive-selector
|
|
@@ -1887,8 +1887,9 @@ class InfinityQuery {
|
|
|
1887
1887
|
}
|
|
1888
1888
|
}
|
|
1889
1889
|
return acc;
|
|
1890
|
-
|
|
1891
|
-
|
|
1890
|
+
},
|
|
1891
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
1892
|
+
[]);
|
|
1892
1893
|
return fullData;
|
|
1893
1894
|
}), shareReplay({ bufferSize: 1, refCount: true }));
|
|
1894
1895
|
this._lastQuery$ = this._queries$.pipe(map((queries) => queries[queries.length - 1] ?? null), shareReplay({ bufferSize: 1, refCount: true }));
|
|
@@ -2127,10 +2128,10 @@ class InfinityQueryDirective {
|
|
|
2127
2128
|
this._viewContext.currentQuery = null;
|
|
2128
2129
|
this._data$.next([]);
|
|
2129
2130
|
}
|
|
2130
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.
|
|
2131
|
-
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.2.
|
|
2131
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.2", ngImport: i0, type: InfinityQueryDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
2132
|
+
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.2.2", 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 }); }
|
|
2132
2133
|
}
|
|
2133
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.
|
|
2134
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.2", ngImport: i0, type: InfinityQueryDirective, decorators: [{
|
|
2134
2135
|
type: Directive,
|
|
2135
2136
|
args: [{
|
|
2136
2137
|
// eslint-disable-next-line @angular-eslint/directive-selector
|
|
@@ -2181,10 +2182,10 @@ class InfinityQueryTriggerDirective {
|
|
|
2181
2182
|
});
|
|
2182
2183
|
this._observer.observe(this._elementRef.nativeElement);
|
|
2183
2184
|
}
|
|
2184
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.
|
|
2185
|
-
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.2.
|
|
2185
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.2", ngImport: i0, type: InfinityQueryTriggerDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
2186
|
+
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.2.2", type: InfinityQueryTriggerDirective, isStandalone: true, selector: "[etInfinityQueryTrigger], et-infinity-query-trigger", inputs: { scrollContainerSelector: "scrollContainerSelector" }, ngImport: i0 }); }
|
|
2186
2187
|
}
|
|
2187
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.
|
|
2188
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.2", ngImport: i0, type: InfinityQueryTriggerDirective, decorators: [{
|
|
2188
2189
|
type: Directive,
|
|
2189
2190
|
args: [{
|
|
2190
2191
|
// eslint-disable-next-line @angular-eslint/directive-selector
|
|
@@ -2387,7 +2388,12 @@ class QueryField {
|
|
|
2387
2388
|
}
|
|
2388
2389
|
// The initial value should get emitted immediately
|
|
2389
2390
|
// concat switches to the debounced observable after the first observable is completed
|
|
2390
|
-
return concat(obs.pipe(take(1)), this.control.valueChanges.pipe(
|
|
2391
|
+
return concat(obs.pipe(take(1)), this.control.valueChanges.pipe(debounce((v) => {
|
|
2392
|
+
if ((this.data.disableDebounceIfFalsy && !v) || !this.data.debounce) {
|
|
2393
|
+
return of(0);
|
|
2394
|
+
}
|
|
2395
|
+
return timer(this.data.debounce);
|
|
2396
|
+
})));
|
|
2391
2397
|
}
|
|
2392
2398
|
}
|
|
2393
2399
|
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
@@ -2440,7 +2446,7 @@ class QueryForm {
|
|
|
2440
2446
|
this.setFormValueFromUrlQueryParams({
|
|
2441
2447
|
queryParams: this._routerStateService.queryParams,
|
|
2442
2448
|
});
|
|
2443
|
-
this.
|
|
2449
|
+
merge(...Object.values(this._fields).map((field) => field.changes$))
|
|
2444
2450
|
.pipe(startWith(null), tap(() => {
|
|
2445
2451
|
this._lastFormValue$.next(clone(this._currentFormValue$.value));
|
|
2446
2452
|
this._currentFormValue$.next({ id: this._currentFormValue$.value.id + 1, data: clone(this._formValue) });
|