@ngutil/data 0.0.21 → 0.0.24

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/index.mjs CHANGED
@@ -1,6 +1,45 @@
1
+ import { NgModule } from "@angular/core";
2
+ import { DataSourceProxy, DataSourceProxyBusy, DataSourceProxyFilter, DataSourceProxyGrouper, DataSourceProxySlimer, DataSourceProxySorter } from "./source/proxy.directive";
3
+ import * as i0 from "@angular/core";
1
4
  export * from "./model";
2
5
  export * from "./provider";
3
6
  export * from "./query";
4
7
  export * from "./source";
5
8
  export * from "./store";
6
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wYWNrYWdlcy9kYXRhL3NyYy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLFNBQVMsQ0FBQTtBQUN2QixjQUFjLFlBQVksQ0FBQTtBQUMxQixjQUFjLFNBQVMsQ0FBQTtBQUN2QixjQUFjLFVBQVUsQ0FBQTtBQUN4QixjQUFjLFNBQVMsQ0FBQSIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gXCIuL21vZGVsXCJcbmV4cG9ydCAqIGZyb20gXCIuL3Byb3ZpZGVyXCJcbmV4cG9ydCAqIGZyb20gXCIuL3F1ZXJ5XCJcbmV4cG9ydCAqIGZyb20gXCIuL3NvdXJjZVwiXG5leHBvcnQgKiBmcm9tIFwiLi9zdG9yZVwiXG4iXX0=
9
+ export class DataSourceModule {
10
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.6", ngImport: i0, type: DataSourceModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
11
+ static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "17.3.6", ngImport: i0, type: DataSourceModule, imports: [DataSourceProxy,
12
+ DataSourceProxyBusy,
13
+ DataSourceProxyFilter,
14
+ DataSourceProxyGrouper,
15
+ DataSourceProxySlimer,
16
+ DataSourceProxySorter], exports: [DataSourceProxy,
17
+ DataSourceProxyBusy,
18
+ DataSourceProxyFilter,
19
+ DataSourceProxyGrouper,
20
+ DataSourceProxySlimer,
21
+ DataSourceProxySorter] }); }
22
+ static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "17.3.6", ngImport: i0, type: DataSourceModule }); }
23
+ }
24
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.6", ngImport: i0, type: DataSourceModule, decorators: [{
25
+ type: NgModule,
26
+ args: [{
27
+ imports: [
28
+ DataSourceProxy,
29
+ DataSourceProxyBusy,
30
+ DataSourceProxyFilter,
31
+ DataSourceProxyGrouper,
32
+ DataSourceProxySlimer,
33
+ DataSourceProxySorter
34
+ ],
35
+ exports: [
36
+ DataSourceProxy,
37
+ DataSourceProxyBusy,
38
+ DataSourceProxyFilter,
39
+ DataSourceProxyGrouper,
40
+ DataSourceProxySlimer,
41
+ DataSourceProxySorter
42
+ ]
43
+ }]
44
+ }] });
45
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wYWNrYWdlcy9kYXRhL3NyYy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFBO0FBRXhDLE9BQU8sRUFDSCxlQUFlLEVBQ2YsbUJBQW1CLEVBQ25CLHFCQUFxQixFQUNyQixzQkFBc0IsRUFDdEIscUJBQXFCLEVBQ3JCLHFCQUFxQixFQUN4QixNQUFNLDBCQUEwQixDQUFBOztBQUVqQyxjQUFjLFNBQVMsQ0FBQTtBQUN2QixjQUFjLFlBQVksQ0FBQTtBQUMxQixjQUFjLFNBQVMsQ0FBQTtBQUN2QixjQUFjLFVBQVUsQ0FBQTtBQUN4QixjQUFjLFNBQVMsQ0FBQTtBQW9CdkIsTUFBTSxPQUFPLGdCQUFnQjs4R0FBaEIsZ0JBQWdCOytHQUFoQixnQkFBZ0IsWUFoQnJCLGVBQWU7WUFDZixtQkFBbUI7WUFDbkIscUJBQXFCO1lBQ3JCLHNCQUFzQjtZQUN0QixxQkFBcUI7WUFDckIscUJBQXFCLGFBR3JCLGVBQWU7WUFDZixtQkFBbUI7WUFDbkIscUJBQXFCO1lBQ3JCLHNCQUFzQjtZQUN0QixxQkFBcUI7WUFDckIscUJBQXFCOytHQUdoQixnQkFBZ0I7OzJGQUFoQixnQkFBZ0I7a0JBbEI1QixRQUFRO21CQUFDO29CQUNOLE9BQU8sRUFBRTt3QkFDTCxlQUFlO3dCQUNmLG1CQUFtQjt3QkFDbkIscUJBQXFCO3dCQUNyQixzQkFBc0I7d0JBQ3RCLHFCQUFxQjt3QkFDckIscUJBQXFCO3FCQUN4QjtvQkFDRCxPQUFPLEVBQUU7d0JBQ0wsZUFBZTt3QkFDZixtQkFBbUI7d0JBQ25CLHFCQUFxQjt3QkFDckIsc0JBQXNCO3dCQUN0QixxQkFBcUI7d0JBQ3JCLHFCQUFxQjtxQkFDeEI7aUJBQ0oiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBOZ01vZHVsZSB9IGZyb20gXCJAYW5ndWxhci9jb3JlXCJcblxuaW1wb3J0IHtcbiAgICBEYXRhU291cmNlUHJveHksXG4gICAgRGF0YVNvdXJjZVByb3h5QnVzeSxcbiAgICBEYXRhU291cmNlUHJveHlGaWx0ZXIsXG4gICAgRGF0YVNvdXJjZVByb3h5R3JvdXBlcixcbiAgICBEYXRhU291cmNlUHJveHlTbGltZXIsXG4gICAgRGF0YVNvdXJjZVByb3h5U29ydGVyXG59IGZyb20gXCIuL3NvdXJjZS9wcm94eS5kaXJlY3RpdmVcIlxuXG5leHBvcnQgKiBmcm9tIFwiLi9tb2RlbFwiXG5leHBvcnQgKiBmcm9tIFwiLi9wcm92aWRlclwiXG5leHBvcnQgKiBmcm9tIFwiLi9xdWVyeVwiXG5leHBvcnQgKiBmcm9tIFwiLi9zb3VyY2VcIlxuZXhwb3J0ICogZnJvbSBcIi4vc3RvcmVcIlxuXG5ATmdNb2R1bGUoe1xuICAgIGltcG9ydHM6IFtcbiAgICAgICAgRGF0YVNvdXJjZVByb3h5LFxuICAgICAgICBEYXRhU291cmNlUHJveHlCdXN5LFxuICAgICAgICBEYXRhU291cmNlUHJveHlGaWx0ZXIsXG4gICAgICAgIERhdGFTb3VyY2VQcm94eUdyb3VwZXIsXG4gICAgICAgIERhdGFTb3VyY2VQcm94eVNsaW1lcixcbiAgICAgICAgRGF0YVNvdXJjZVByb3h5U29ydGVyXG4gICAgXSxcbiAgICBleHBvcnRzOiBbXG4gICAgICAgIERhdGFTb3VyY2VQcm94eSxcbiAgICAgICAgRGF0YVNvdXJjZVByb3h5QnVzeSxcbiAgICAgICAgRGF0YVNvdXJjZVByb3h5RmlsdGVyLFxuICAgICAgICBEYXRhU291cmNlUHJveHlHcm91cGVyLFxuICAgICAgICBEYXRhU291cmNlUHJveHlTbGltZXIsXG4gICAgICAgIERhdGFTb3VyY2VQcm94eVNvcnRlclxuICAgIF1cbn0pXG5leHBvcnQgY2xhc3MgRGF0YVNvdXJjZU1vZHVsZSB7fVxuIl19
@@ -41,8 +41,11 @@ export function sliceInsert(slice, array, newItems) {
41
41
  let result = array.slice(0, slice.start);
42
42
  result.length = slice.start;
43
43
  result = result.concat(newItems);
44
- result.length = slice.end;
45
- return result.concat(array.slice(slice.end));
44
+ if (!isNaN(slice.end) && isFinite(slice.end)) {
45
+ result.length = slice.end;
46
+ result = result.concat(array.slice(slice.end));
47
+ }
48
+ return result;
46
49
  }
47
50
  export function sliceClamp(slice, constraint) {
48
51
  return {
@@ -58,4 +61,4 @@ export function sliceEq(a, b) {
58
61
  // TODO: sliceIncludes(other: Slice): boolean
59
62
  // TODO: sliceConcat(...slices: Slice[]): Slice[]
60
63
  // TODO: sliceDiff(slice: Slice): Slice[]
61
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2xpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9kYXRhL3NyYy9xdWVyeS9zbGljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFFQSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUE7QUF1QjFDLE1BQU0sVUFBVSxVQUFVLENBQUMsR0FBRyxNQUFlO0lBQ3pDLElBQUksTUFBTSxHQUFzQixTQUFTLENBQUE7SUFFekMsS0FBSyxNQUFNLEtBQUssSUFBSSxNQUFNLEVBQUUsQ0FBQztRQUN6QixJQUFJLEtBQUssSUFBSSxJQUFJLEVBQUUsQ0FBQztZQUNoQixTQUFRO1FBQ1osQ0FBQztRQUNELElBQUksTUFBTSxJQUFJLElBQUksRUFBRSxDQUFDO1lBQ2pCLE1BQU0sR0FBRyxTQUFTLENBQUMsS0FBSyxDQUFDLENBQUE7UUFDN0IsQ0FBQzthQUFNLENBQUM7WUFDSixNQUFNLEdBQUcsRUFBRSxHQUFJLE1BQWMsRUFBRSxHQUFHLEtBQUssRUFBRSxDQUFBO1FBQzdDLENBQUM7SUFDTCxDQUFDO0lBRUQsT0FBTyxNQUFNLENBQUE7QUFDakIsQ0FBQztBQUVEOzs7R0FHRztBQUNILE1BQU0sVUFBVSxVQUFVLENBQUMsS0FBWSxFQUFFLEtBQXFCO0lBQzFELE1BQU0sTUFBTSxHQUFHLEtBQUssQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLEtBQUssRUFBRSxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUE7SUFDbEQsTUFBTSxDQUFDLE1BQU0sR0FBRyxLQUFLLENBQUMsR0FBRyxHQUFHLEtBQUssQ0FBQyxLQUFLLENBQUE7SUFDdkMsT0FBTyxNQUFNLENBQUE7QUFDakIsQ0FBQztBQUVEOztHQUVHO0FBQ0gsTUFBTSxVQUFVLFlBQVksQ0FBQyxLQUFZO0lBQ3JDLElBQUksS0FBSyxDQUFDLFFBQVEsSUFBSSxJQUFJLEVBQUUsQ0FBQztRQUN6QixNQUFNLElBQUksS0FBSyxDQUFDLDJCQUEyQixDQUFDLENBQUE7SUFDaEQsQ0FBQztJQUVELE1BQU0sS0FBSyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLEtBQUssR0FBRyxLQUFLLENBQUMsUUFBUSxDQUFDLENBQUE7SUFDdEQsTUFBTSxHQUFHLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxHQUFHLEtBQUssQ0FBQyxRQUFRLENBQUMsQ0FBQTtJQUNqRCxPQUFPLEtBQUssQ0FBQyxJQUFJLENBQUMsRUFBRSxNQUFNLEVBQUUsR0FBRyxHQUFHLEtBQUssRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsS0FBSyxHQUFHLENBQUMsQ0FBQyxDQUFBO0FBQ25FLENBQUM7QUFFRCxNQUFNLFVBQVUsV0FBVyxDQUFDLEtBQVksRUFBRSxLQUFxQixFQUFFLFFBQXdCO0lBQ3JGLElBQUksS0FBSyxDQUFDLEtBQUssS0FBSyxLQUFLLENBQUMsR0FBRyxFQUFFLENBQUM7UUFDNUIsT0FBTyxLQUFZLENBQUE7SUFDdkIsQ0FBQztJQUVELElBQUksTUFBTSxHQUFHLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQTtJQUN4QyxNQUFNLENBQUMsTUFBTSxHQUFHLEtBQUssQ0FBQyxLQUFLLENBQUE7SUFFM0IsTUFBTSxHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUE7SUFDaEMsTUFBTSxDQUFDLE1BQU0sR0FBRyxLQUFLLENBQUMsR0FBRyxDQUFBO0lBRXpCLE9BQU8sTUFBTSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFBO0FBQ2hELENBQUM7QUFFRCxNQUFNLFVBQVUsVUFBVSxDQUFDLEtBQVksRUFBRSxVQUFpQjtJQUN0RCxPQUFPO1FBQ0gsS0FBSyxFQUFFLElBQUksQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEtBQUssRUFBRSxVQUFVLENBQUMsS0FBSyxDQUFDO1FBQzlDLEdBQUcsRUFBRSxJQUFJLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxHQUFHLEVBQUUsVUFBVSxDQUFDLEdBQUcsQ0FBQztRQUN4QyxRQUFRLEVBQUUsS0FBSyxDQUFDLFFBQVE7S0FDM0IsQ0FBQTtBQUNMLENBQUM7QUFFRCxNQUFNLFVBQVUsT0FBTyxDQUFDLENBQVEsRUFBRSxDQUFRO0lBQ3RDLE9BQU8sQ0FBQyxDQUFDLEtBQUssS0FBSyxDQUFDLENBQUMsS0FBSyxJQUFJLENBQUMsQ0FBQyxHQUFHLEtBQUssQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLENBQUMsUUFBUSxLQUFLLENBQUMsQ0FBQyxRQUFRLENBQUE7QUFDOUUsQ0FBQztBQUVELDBDQUEwQztBQUMxQyw2Q0FBNkM7QUFDN0MsaURBQWlEO0FBQ2pELHlDQUF5QyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IExpc3RSYW5nZSB9IGZyb20gXCJAYW5ndWxhci9jZGsvY29sbGVjdGlvbnNcIlxuXG5pbXBvcnQgeyBkZWVwQ2xvbmUgfSBmcm9tIFwiQG5ndXRpbC9jb21tb25cIlxuXG4vLyBodHRwczovL3d3dy5ucG1qcy5jb20vcGFja2FnZS9hcnJheS12aWV3XG5cbi8qKlxuICogQGV4YW1wbGVcbiAqIGBgYHRzXG4gKiB7c3RhcnQ6IDAsIGVuZDogMH0gLy8gZW1wdHkgcmFuZ2VcbiAqIHtzdGFydDogMCwgZW5kOiAxfSAvLyByYW5nZSB3aXRoIG9uZSBpdGVtLmVnIHNsaWNlQXBwbHkoWzEsIDIsIDNdLCB7c3RhcnQ6MCwgZW5kOjF9KSAtPiBbMV1cbiAqIGBgYFxuICovXG5leHBvcnQgaW50ZXJmYWNlIFNsaWNlIGV4dGVuZHMgTGlzdFJhbmdlIHtcbiAgICAvKipcbiAgICAgKiBTdGFydCBvZiBzbGljZSwgZXhhY3QgaW5kZXggb2YgaXRlbSBpbiBsaXN0XG4gICAgICovXG4gICAgcmVhZG9ubHkgc3RhcnQ6IG51bWJlclxuICAgIC8qKlxuICAgICAqIEVuZCBvZiBzbGljZSwgbm90IGluY2x1ZGUgZW5kIGluZGV4IG9mIGl0ZW0gaW4gbGlzdFxuICAgICAqL1xuICAgIHJlYWRvbmx5IGVuZDogbnVtYmVyXG4gICAgcmVhZG9ubHkgcGFnZVNpemU/OiBudW1iZXJcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHNsaWNlTWVyZ2UoLi4uc2xpY2VzOiBTbGljZVtdKSB7XG4gICAgbGV0IHJlc3VsdDogU2xpY2UgfCB1bmRlZmluZWQgPSB1bmRlZmluZWRcblxuICAgIGZvciAoY29uc3Qgc2xpY2Ugb2Ygc2xpY2VzKSB7XG4gICAgICAgIGlmIChzbGljZSA9PSBudWxsKSB7XG4gICAgICAgICAgICBjb250aW51ZVxuICAgICAgICB9XG4gICAgICAgIGlmIChyZXN1bHQgPT0gbnVsbCkge1xuICAgICAgICAgICAgcmVzdWx0ID0gZGVlcENsb25lKHNsaWNlKVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmVzdWx0ID0geyAuLi4ocmVzdWx0IGFzIGFueSksIC4uLnNsaWNlIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiByZXN1bHRcbn1cblxuLyoqXG4gKiBBcHBseSBzbGljZSB0byBhcnJheSwgYW5kIGZvcmNlIHRoZSByZXN1bHQgbGVuZ3RoIHRvIGVxdWFsIHdpdGggU2xpY2UgbGVuZ3RoLFxuICogc28gZmlsbCBhcnJheSB3aXRoIHVuZGVmaW5lZCBpZiBub3QgZW5vdWdodCBlbGVtZW50c1xuICovXG5leHBvcnQgZnVuY3Rpb24gc2xpY2VBcHBseShzbGljZTogU2xpY2UsIGFycmF5OiByZWFkb25seSBhbnlbXSk6IGFueVtdIHtcbiAgICBjb25zdCByZXN1bHQgPSBhcnJheS5zbGljZShzbGljZS5zdGFydCwgc2xpY2UuZW5kKVxuICAgIHJlc3VsdC5sZW5ndGggPSBzbGljZS5lbmQgLSBzbGljZS5zdGFydFxuICAgIHJldHVybiByZXN1bHRcbn1cblxuLyoqXG4gKiBAcmV0dXJucyBQYWdlIG51bWJlcnMsIGVnLjogYFsxMCwgMTEsIDEyLCAxMywgLi4uXWBcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHNsaWNlVG9QYWdlcyhzbGljZTogU2xpY2UpOiBudW1iZXJbXSB7XG4gICAgaWYgKHNsaWNlLnBhZ2VTaXplID09IG51bGwpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiTWlzc2luZyBgc3RlcGAgZnJvbSBzbGljZVwiKVxuICAgIH1cblxuICAgIGNvbnN0IHN0YXJ0ID0gTWF0aC5mbG9vcihzbGljZS5zdGFydCAvIHNsaWNlLnBhZ2VTaXplKVxuICAgIGNvbnN0IGVuZCA9IE1hdGguY2VpbChzbGljZS5lbmQgLyBzbGljZS5wYWdlU2l6ZSlcbiAgICByZXR1cm4gQXJyYXkuZnJvbSh7IGxlbmd0aDogZW5kIC0gc3RhcnQgfSwgKF8sIGkpID0+IHN0YXJ0ICsgaSlcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHNsaWNlSW5zZXJ0KHNsaWNlOiBTbGljZSwgYXJyYXk6IHJlYWRvbmx5IGFueVtdLCBuZXdJdGVtczogcmVhZG9ubHkgYW55W10pOiBhbnlbXSB7XG4gICAgaWYgKHNsaWNlLnN0YXJ0ID09PSBzbGljZS5lbmQpIHtcbiAgICAgICAgcmV0dXJuIGFycmF5IGFzIGFueVxuICAgIH1cblxuICAgIGxldCByZXN1bHQgPSBhcnJheS5zbGljZSgwLCBzbGljZS5zdGFydClcbiAgICByZXN1bHQubGVuZ3RoID0gc2xpY2Uuc3RhcnRcblxuICAgIHJlc3VsdCA9IHJlc3VsdC5jb25jYXQobmV3SXRlbXMpXG4gICAgcmVzdWx0Lmxlbmd0aCA9IHNsaWNlLmVuZFxuXG4gICAgcmV0dXJuIHJlc3VsdC5jb25jYXQoYXJyYXkuc2xpY2Uoc2xpY2UuZW5kKSlcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHNsaWNlQ2xhbXAoc2xpY2U6IFNsaWNlLCBjb25zdHJhaW50OiBTbGljZSk6IFNsaWNlIHtcbiAgICByZXR1cm4ge1xuICAgICAgICBzdGFydDogTWF0aC5tYXgoc2xpY2Uuc3RhcnQsIGNvbnN0cmFpbnQuc3RhcnQpLFxuICAgICAgICBlbmQ6IE1hdGgubWluKHNsaWNlLmVuZCwgY29uc3RyYWludC5lbmQpLFxuICAgICAgICBwYWdlU2l6ZTogc2xpY2UucGFnZVNpemVcbiAgICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBzbGljZUVxKGE6IFNsaWNlLCBiOiBTbGljZSk6IGJvb2xlYW4ge1xuICAgIHJldHVybiBhLnN0YXJ0ID09PSBiLnN0YXJ0ICYmIGEuZW5kID09PSBiLmVuZCAmJiBhLnBhZ2VTaXplID09PSBiLnBhZ2VTaXplXG59XG5cbi8vIFRPRE86IHNsaWNlT3ZlcmxhcChvdGhlcjogU2xpY2UpOiBTbGljZVxuLy8gVE9ETzogc2xpY2VJbmNsdWRlcyhvdGhlcjogU2xpY2UpOiBib29sZWFuXG4vLyBUT0RPOiBzbGljZUNvbmNhdCguLi5zbGljZXM6IFNsaWNlW10pOiBTbGljZVtdXG4vLyBUT0RPOiBzbGljZURpZmYoc2xpY2U6IFNsaWNlKTogU2xpY2VbXVxuIl19
64
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2xpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9kYXRhL3NyYy9xdWVyeS9zbGljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFFQSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUE7QUF1QjFDLE1BQU0sVUFBVSxVQUFVLENBQUMsR0FBRyxNQUFlO0lBQ3pDLElBQUksTUFBTSxHQUFzQixTQUFTLENBQUE7SUFFekMsS0FBSyxNQUFNLEtBQUssSUFBSSxNQUFNLEVBQUUsQ0FBQztRQUN6QixJQUFJLEtBQUssSUFBSSxJQUFJLEVBQUUsQ0FBQztZQUNoQixTQUFRO1FBQ1osQ0FBQztRQUNELElBQUksTUFBTSxJQUFJLElBQUksRUFBRSxDQUFDO1lBQ2pCLE1BQU0sR0FBRyxTQUFTLENBQUMsS0FBSyxDQUFDLENBQUE7UUFDN0IsQ0FBQzthQUFNLENBQUM7WUFDSixNQUFNLEdBQUcsRUFBRSxHQUFJLE1BQWMsRUFBRSxHQUFHLEtBQUssRUFBRSxDQUFBO1FBQzdDLENBQUM7SUFDTCxDQUFDO0lBRUQsT0FBTyxNQUFNLENBQUE7QUFDakIsQ0FBQztBQUVEOzs7R0FHRztBQUNILE1BQU0sVUFBVSxVQUFVLENBQUMsS0FBWSxFQUFFLEtBQXFCO0lBQzFELE1BQU0sTUFBTSxHQUFHLEtBQUssQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLEtBQUssRUFBRSxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUE7SUFDbEQsTUFBTSxDQUFDLE1BQU0sR0FBRyxLQUFLLENBQUMsR0FBRyxHQUFHLEtBQUssQ0FBQyxLQUFLLENBQUE7SUFDdkMsT0FBTyxNQUFNLENBQUE7QUFDakIsQ0FBQztBQUVEOztHQUVHO0FBQ0gsTUFBTSxVQUFVLFlBQVksQ0FBQyxLQUFZO0lBQ3JDLElBQUksS0FBSyxDQUFDLFFBQVEsSUFBSSxJQUFJLEVBQUUsQ0FBQztRQUN6QixNQUFNLElBQUksS0FBSyxDQUFDLDJCQUEyQixDQUFDLENBQUE7SUFDaEQsQ0FBQztJQUVELE1BQU0sS0FBSyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLEtBQUssR0FBRyxLQUFLLENBQUMsUUFBUSxDQUFDLENBQUE7SUFDdEQsTUFBTSxHQUFHLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxHQUFHLEtBQUssQ0FBQyxRQUFRLENBQUMsQ0FBQTtJQUNqRCxPQUFPLEtBQUssQ0FBQyxJQUFJLENBQUMsRUFBRSxNQUFNLEVBQUUsR0FBRyxHQUFHLEtBQUssRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsS0FBSyxHQUFHLENBQUMsQ0FBQyxDQUFBO0FBQ25FLENBQUM7QUFFRCxNQUFNLFVBQVUsV0FBVyxDQUFDLEtBQVksRUFBRSxLQUFxQixFQUFFLFFBQXdCO0lBQ3JGLElBQUksS0FBSyxDQUFDLEtBQUssS0FBSyxLQUFLLENBQUMsR0FBRyxFQUFFLENBQUM7UUFDNUIsT0FBTyxLQUFZLENBQUE7SUFDdkIsQ0FBQztJQUVELElBQUksTUFBTSxHQUFHLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQTtJQUN4QyxNQUFNLENBQUMsTUFBTSxHQUFHLEtBQUssQ0FBQyxLQUFLLENBQUE7SUFFM0IsTUFBTSxHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUE7SUFFaEMsSUFBSSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLElBQUksUUFBUSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDO1FBQzNDLE1BQU0sQ0FBQyxNQUFNLEdBQUcsS0FBSyxDQUFDLEdBQUcsQ0FBQTtRQUN6QixNQUFNLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFBO0lBQ2xELENBQUM7SUFFRCxPQUFPLE1BQU0sQ0FBQTtBQUNqQixDQUFDO0FBRUQsTUFBTSxVQUFVLFVBQVUsQ0FBQyxLQUFZLEVBQUUsVUFBaUI7SUFDdEQsT0FBTztRQUNILEtBQUssRUFBRSxJQUFJLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxLQUFLLEVBQUUsVUFBVSxDQUFDLEtBQUssQ0FBQztRQUM5QyxHQUFHLEVBQUUsSUFBSSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLFVBQVUsQ0FBQyxHQUFHLENBQUM7UUFDeEMsUUFBUSxFQUFFLEtBQUssQ0FBQyxRQUFRO0tBQzNCLENBQUE7QUFDTCxDQUFDO0FBRUQsTUFBTSxVQUFVLE9BQU8sQ0FBQyxDQUFRLEVBQUUsQ0FBUTtJQUN0QyxPQUFPLENBQUMsQ0FBQyxLQUFLLEtBQUssQ0FBQyxDQUFDLEtBQUssSUFBSSxDQUFDLENBQUMsR0FBRyxLQUFLLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxDQUFDLFFBQVEsS0FBSyxDQUFDLENBQUMsUUFBUSxDQUFBO0FBQzlFLENBQUM7QUFFRCwwQ0FBMEM7QUFDMUMsNkNBQTZDO0FBQzdDLGlEQUFpRDtBQUNqRCx5Q0FBeUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBMaXN0UmFuZ2UgfSBmcm9tIFwiQGFuZ3VsYXIvY2RrL2NvbGxlY3Rpb25zXCJcblxuaW1wb3J0IHsgZGVlcENsb25lIH0gZnJvbSBcIkBuZ3V0aWwvY29tbW9uXCJcblxuLy8gaHR0cHM6Ly93d3cubnBtanMuY29tL3BhY2thZ2UvYXJyYXktdmlld1xuXG4vKipcbiAqIEBleGFtcGxlXG4gKiBgYGB0c1xuICoge3N0YXJ0OiAwLCBlbmQ6IDB9IC8vIGVtcHR5IHJhbmdlXG4gKiB7c3RhcnQ6IDAsIGVuZDogMX0gLy8gcmFuZ2Ugd2l0aCBvbmUgaXRlbS5lZyBzbGljZUFwcGx5KFsxLCAyLCAzXSwge3N0YXJ0OjAsIGVuZDoxfSkgLT4gWzFdXG4gKiBgYGBcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBTbGljZSBleHRlbmRzIExpc3RSYW5nZSB7XG4gICAgLyoqXG4gICAgICogU3RhcnQgb2Ygc2xpY2UsIGV4YWN0IGluZGV4IG9mIGl0ZW0gaW4gbGlzdFxuICAgICAqL1xuICAgIHJlYWRvbmx5IHN0YXJ0OiBudW1iZXJcbiAgICAvKipcbiAgICAgKiBFbmQgb2Ygc2xpY2UsIG5vdCBpbmNsdWRlIGVuZCBpbmRleCBvZiBpdGVtIGluIGxpc3RcbiAgICAgKi9cbiAgICByZWFkb25seSBlbmQ6IG51bWJlclxuICAgIHJlYWRvbmx5IHBhZ2VTaXplPzogbnVtYmVyXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBzbGljZU1lcmdlKC4uLnNsaWNlczogU2xpY2VbXSkge1xuICAgIGxldCByZXN1bHQ6IFNsaWNlIHwgdW5kZWZpbmVkID0gdW5kZWZpbmVkXG5cbiAgICBmb3IgKGNvbnN0IHNsaWNlIG9mIHNsaWNlcykge1xuICAgICAgICBpZiAoc2xpY2UgPT0gbnVsbCkge1xuICAgICAgICAgICAgY29udGludWVcbiAgICAgICAgfVxuICAgICAgICBpZiAocmVzdWx0ID09IG51bGwpIHtcbiAgICAgICAgICAgIHJlc3VsdCA9IGRlZXBDbG9uZShzbGljZSlcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJlc3VsdCA9IHsgLi4uKHJlc3VsdCBhcyBhbnkpLCAuLi5zbGljZSB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gcmVzdWx0XG59XG5cbi8qKlxuICogQXBwbHkgc2xpY2UgdG8gYXJyYXksIGFuZCBmb3JjZSB0aGUgcmVzdWx0IGxlbmd0aCB0byBlcXVhbCB3aXRoIFNsaWNlIGxlbmd0aCxcbiAqIHNvIGZpbGwgYXJyYXkgd2l0aCB1bmRlZmluZWQgaWYgbm90IGVub3VnaHQgZWxlbWVudHNcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHNsaWNlQXBwbHkoc2xpY2U6IFNsaWNlLCBhcnJheTogcmVhZG9ubHkgYW55W10pOiBhbnlbXSB7XG4gICAgY29uc3QgcmVzdWx0ID0gYXJyYXkuc2xpY2Uoc2xpY2Uuc3RhcnQsIHNsaWNlLmVuZClcbiAgICByZXN1bHQubGVuZ3RoID0gc2xpY2UuZW5kIC0gc2xpY2Uuc3RhcnRcbiAgICByZXR1cm4gcmVzdWx0XG59XG5cbi8qKlxuICogQHJldHVybnMgUGFnZSBudW1iZXJzLCBlZy46IGBbMTAsIDExLCAxMiwgMTMsIC4uLl1gXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBzbGljZVRvUGFnZXMoc2xpY2U6IFNsaWNlKTogbnVtYmVyW10ge1xuICAgIGlmIChzbGljZS5wYWdlU2l6ZSA9PSBudWxsKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihcIk1pc3NpbmcgYHN0ZXBgIGZyb20gc2xpY2VcIilcbiAgICB9XG5cbiAgICBjb25zdCBzdGFydCA9IE1hdGguZmxvb3Ioc2xpY2Uuc3RhcnQgLyBzbGljZS5wYWdlU2l6ZSlcbiAgICBjb25zdCBlbmQgPSBNYXRoLmNlaWwoc2xpY2UuZW5kIC8gc2xpY2UucGFnZVNpemUpXG4gICAgcmV0dXJuIEFycmF5LmZyb20oeyBsZW5ndGg6IGVuZCAtIHN0YXJ0IH0sIChfLCBpKSA9PiBzdGFydCArIGkpXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBzbGljZUluc2VydChzbGljZTogU2xpY2UsIGFycmF5OiByZWFkb25seSBhbnlbXSwgbmV3SXRlbXM6IHJlYWRvbmx5IGFueVtdKTogYW55W10ge1xuICAgIGlmIChzbGljZS5zdGFydCA9PT0gc2xpY2UuZW5kKSB7XG4gICAgICAgIHJldHVybiBhcnJheSBhcyBhbnlcbiAgICB9XG5cbiAgICBsZXQgcmVzdWx0ID0gYXJyYXkuc2xpY2UoMCwgc2xpY2Uuc3RhcnQpXG4gICAgcmVzdWx0Lmxlbmd0aCA9IHNsaWNlLnN0YXJ0XG5cbiAgICByZXN1bHQgPSByZXN1bHQuY29uY2F0KG5ld0l0ZW1zKVxuXG4gICAgaWYgKCFpc05hTihzbGljZS5lbmQpICYmIGlzRmluaXRlKHNsaWNlLmVuZCkpIHtcbiAgICAgICAgcmVzdWx0Lmxlbmd0aCA9IHNsaWNlLmVuZFxuICAgICAgICByZXN1bHQgPSByZXN1bHQuY29uY2F0KGFycmF5LnNsaWNlKHNsaWNlLmVuZCkpXG4gICAgfVxuXG4gICAgcmV0dXJuIHJlc3VsdFxufVxuXG5leHBvcnQgZnVuY3Rpb24gc2xpY2VDbGFtcChzbGljZTogU2xpY2UsIGNvbnN0cmFpbnQ6IFNsaWNlKTogU2xpY2Uge1xuICAgIHJldHVybiB7XG4gICAgICAgIHN0YXJ0OiBNYXRoLm1heChzbGljZS5zdGFydCwgY29uc3RyYWludC5zdGFydCksXG4gICAgICAgIGVuZDogTWF0aC5taW4oc2xpY2UuZW5kLCBjb25zdHJhaW50LmVuZCksXG4gICAgICAgIHBhZ2VTaXplOiBzbGljZS5wYWdlU2l6ZVxuICAgIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHNsaWNlRXEoYTogU2xpY2UsIGI6IFNsaWNlKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIGEuc3RhcnQgPT09IGIuc3RhcnQgJiYgYS5lbmQgPT09IGIuZW5kICYmIGEucGFnZVNpemUgPT09IGIucGFnZVNpemVcbn1cblxuLy8gVE9ETzogc2xpY2VPdmVybGFwKG90aGVyOiBTbGljZSk6IFNsaWNlXG4vLyBUT0RPOiBzbGljZUluY2x1ZGVzKG90aGVyOiBTbGljZSk6IGJvb2xlYW5cbi8vIFRPRE86IHNsaWNlQ29uY2F0KC4uLnNsaWNlczogU2xpY2VbXSk6IFNsaWNlW11cbi8vIFRPRE86IHNsaWNlRGlmZihzbGljZTogU2xpY2UpOiBTbGljZVtdXG4iXX0=
@@ -1,3 +1,3 @@
1
1
  export { DataSource } from "./source";
2
- export { DataSourceProxy } from "./proxy.directive";
3
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9kYXRhL3NyYy9zb3VyY2UvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLFVBQVUsQ0FBQTtBQUNyQyxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sbUJBQW1CLENBQUEiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgeyBEYXRhU291cmNlIH0gZnJvbSBcIi4vc291cmNlXCJcbmV4cG9ydCB7IERhdGFTb3VyY2VQcm94eSB9IGZyb20gXCIuL3Byb3h5LmRpcmVjdGl2ZVwiXG4iXX0=
2
+ export { DataSourceProxy, DataSourceProxyBusy, DataSourceProxyFilter, DataSourceProxyGrouper, DataSourceProxySlimer, DataSourceProxySorter } from "./proxy.directive";
3
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9kYXRhL3NyYy9zb3VyY2UvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLFVBQVUsQ0FBQTtBQUNyQyxPQUFPLEVBQ0gsZUFBZSxFQUNmLG1CQUFtQixFQUNuQixxQkFBcUIsRUFDckIsc0JBQXNCLEVBQ3RCLHFCQUFxQixFQUNyQixxQkFBcUIsRUFFeEIsTUFBTSxtQkFBbUIsQ0FBQSIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCB7IERhdGFTb3VyY2UgfSBmcm9tIFwiLi9zb3VyY2VcIlxuZXhwb3J0IHtcbiAgICBEYXRhU291cmNlUHJveHksXG4gICAgRGF0YVNvdXJjZVByb3h5QnVzeSxcbiAgICBEYXRhU291cmNlUHJveHlGaWx0ZXIsXG4gICAgRGF0YVNvdXJjZVByb3h5R3JvdXBlcixcbiAgICBEYXRhU291cmNlUHJveHlTbGltZXIsXG4gICAgRGF0YVNvdXJjZVByb3h5U29ydGVyLFxuICAgIERhdGFTb3VyY2VQcm94eUlucHV0XG59IGZyb20gXCIuL3Byb3h5LmRpcmVjdGl2ZVwiXG4iXX0=
@@ -1,12 +1,11 @@
1
1
  import { DataSource as CdkDataSource } from "@angular/cdk/collections";
2
- import { Directive, Input, Optional } from "@angular/core";
3
- import { takeUntilDestroyed, toSignal } from "@angular/core/rxjs-interop";
4
- import { combineLatest, finalize, map, of, ReplaySubject, share, shareReplay, Subject, Subscription, switchMap, takeUntil, tap, throwError } from "rxjs";
2
+ import { Directive, inject, input, Input } from "@angular/core";
3
+ import { takeUntilDestroyed, toObservable } from "@angular/core/rxjs-interop";
4
+ import { combineLatest, finalize, map, of, ReplaySubject, shareReplay, Subject, switchMap, takeUntil, throwError } from "rxjs";
5
5
  import { Busy } from "@ngutil/common";
6
6
  import { DataProvider } from "../provider/provider";
7
7
  import { DataSource } from "./source";
8
8
  import * as i0 from "@angular/core";
9
- import * as i1 from "@ngutil/common";
10
9
  /**
11
10
  * @example
12
11
  * ```html
@@ -38,66 +37,20 @@ import * as i1 from "@ngutil/common";
38
37
  * ```
39
38
  */
40
39
  export class DataSourceProxy extends CdkDataSource {
41
- set value(value) {
42
- this.#valueSub?.unsubscribe();
43
- this.#valueSub = coerceDataSource(value)
44
- .pipe(tap(v => {
45
- if (v == null) {
46
- throw new Error("Missing DataSource");
47
- }
48
- }))
49
- .subscribe(this.#value);
50
- }
51
- #valueSub;
52
- #value;
53
- set forcedFilterInput(value) {
54
- // this.query.filter.forced.update(value)
55
- this.#filter.next(value);
56
- }
57
- #filter;
58
- set forcedSorterInput(value) {
59
- this.#sorter.next(value);
60
- }
61
- #sorter;
62
- set forcedGrouperInput(value) {
63
- this.#grouper.next(value);
64
- }
65
- #grouper;
66
- set forcedSlimerInput(value) {
67
- this.#slimer.next(value);
68
- }
69
- #slimer;
70
- #subs;
71
- constructor(busy) {
72
- super();
40
+ constructor() {
41
+ super(...arguments);
73
42
  this.#value = new ReplaySubject(1);
74
43
  this.value$ = this.#value.pipe(takeUntilDestroyed());
75
44
  this.query$ = this.value$.pipe(map(value => value.query$), shareReplay(1));
76
- this.items$ = this.value$.pipe(switchMap(value => value.items$), share());
77
- this.busy$ = this.value$.pipe(switchMap(value => value.busy$), share());
78
- this.isBusy = toSignal(this.busy$, { rejectErrors: true, initialValue: false });
79
- this.#filter = new ReplaySubject(1);
80
- this.#sorter = new ReplaySubject(1);
81
- this.#grouper = new ReplaySubject(1);
82
- this.#slimer = new ReplaySubject(1);
83
- this.#subs = new Subscription();
45
+ this.items$ = this.value$.pipe(switchMap(value => value.items$), shareReplay(1));
84
46
  this.#cvSubs = new Map();
85
- if (busy != null) {
86
- this.#subs.add(busy.connect(this.busy$).subscribe());
87
- }
88
- this.#subs.add(combineLatest({ query: this.query$, filter: this.#filter }).subscribe(({ query, filter }) => {
89
- query.filter.forced.set(filter);
90
- }));
91
- this.#subs.add(combineLatest({ query: this.query$, sorter: this.#sorter }).subscribe(({ query, sorter }) => {
92
- query.sorter.forced.set(sorter);
93
- }));
94
- this.#subs.add(combineLatest({ query: this.query$, grouper: this.#grouper }).subscribe(({ query, grouper }) => {
95
- query.grouper.forced.set(grouper);
96
- }));
97
- this.#subs.add(combineLatest({ query: this.query$, slimer: this.#slimer }).subscribe(({ query, slimer }) => {
98
- query.slimer.forced.set(slimer);
99
- }));
100
47
  }
48
+ set value(value) {
49
+ this.#valueSub?.unsubscribe();
50
+ this.#valueSub = coerceDataSource(value).subscribe(this.#value);
51
+ }
52
+ #valueSub;
53
+ #value;
101
54
  #cvSubs;
102
55
  connect(collectionViewer) {
103
56
  const until = new Subject();
@@ -112,10 +65,9 @@ export class DataSourceProxy extends CdkDataSource {
112
65
  ngOnDestroy() {
113
66
  this.#valueSub?.unsubscribe();
114
67
  this.#valueSub = undefined;
115
- this.#subs.unsubscribe();
116
68
  }
117
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.6", ngImport: i0, type: DataSourceProxy, deps: [{ token: i1.Busy, optional: true }], target: i0.ɵɵFactoryTarget.Directive }); }
118
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "17.3.6", type: DataSourceProxy, isStandalone: true, selector: "[nuDataSource]", inputs: { value: ["nuDataSource", "value"], forcedFilterInput: "forcedFilterInput", forcedSorterInput: "forcedSorterInput", forcedGrouperInput: "forcedGrouperInput", forcedSlimerInput: "forcedSlimerInput" }, exportAs: ["nuDataSource"], usesInheritance: true, ngImport: i0 }); }
69
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.6", ngImport: i0, type: DataSourceProxy, deps: null, target: i0.ɵɵFactoryTarget.Directive }); }
70
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "17.3.6", type: DataSourceProxy, isStandalone: true, selector: "[nuDataSource]", inputs: { value: ["nuDataSource", "value"] }, exportAs: ["nuDataSource"], usesInheritance: true, ngImport: i0 }); }
119
71
  }
120
72
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.6", ngImport: i0, type: DataSourceProxy, decorators: [{
121
73
  type: Directive,
@@ -124,20 +76,109 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.6", ngImpor
124
76
  selector: "[nuDataSource]",
125
77
  exportAs: "nuDataSource"
126
78
  }]
127
- }], ctorParameters: () => [{ type: i1.Busy, decorators: [{
128
- type: Optional
129
- }] }], propDecorators: { value: [{
79
+ }], propDecorators: { value: [{
130
80
  type: Input,
131
81
  args: [{ required: true, alias: "nuDataSource" }]
132
- }], forcedFilterInput: [{
133
- type: Input
134
- }], forcedSorterInput: [{
135
- type: Input
136
- }], forcedGrouperInput: [{
137
- type: Input
138
- }], forcedSlimerInput: [{
139
- type: Input
140
82
  }] } });
83
+ export class DataSourceProxyFilter {
84
+ #proxy;
85
+ constructor() {
86
+ this.#proxy = inject(DataSourceProxy);
87
+ this.filter = input.required();
88
+ this.filter$ = toObservable(this.filter);
89
+ combineLatest({ query: this.#proxy.query$, filter: this.filter$ })
90
+ .pipe(takeUntilDestroyed())
91
+ .subscribe(({ query, filter }) => query.filter.forced.set(filter));
92
+ }
93
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.6", ngImport: i0, type: DataSourceProxyFilter, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
94
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "17.3.6", type: DataSourceProxyFilter, isStandalone: true, selector: "[nuDataSource][filter]", inputs: { filter: { classPropertyName: "filter", publicName: "filter", isSignal: true, isRequired: true, transformFunction: null } }, ngImport: i0 }); }
95
+ }
96
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.6", ngImport: i0, type: DataSourceProxyFilter, decorators: [{
97
+ type: Directive,
98
+ args: [{
99
+ standalone: true,
100
+ selector: "[nuDataSource][filter]"
101
+ }]
102
+ }], ctorParameters: () => [] });
103
+ export class DataSourceProxySorter {
104
+ #proxy;
105
+ constructor() {
106
+ this.#proxy = inject(DataSourceProxy);
107
+ this.sorter = input.required();
108
+ this.sorter$ = toObservable(this.sorter);
109
+ combineLatest({ query: this.#proxy.query$, sorter: this.sorter$ })
110
+ .pipe(takeUntilDestroyed())
111
+ .subscribe(({ query, sorter }) => query.sorter.forced.set(sorter));
112
+ }
113
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.6", ngImport: i0, type: DataSourceProxySorter, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
114
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "17.3.6", type: DataSourceProxySorter, isStandalone: true, selector: "[nuDataSource][sorter]", inputs: { sorter: { classPropertyName: "sorter", publicName: "sorter", isSignal: true, isRequired: true, transformFunction: null } }, ngImport: i0 }); }
115
+ }
116
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.6", ngImport: i0, type: DataSourceProxySorter, decorators: [{
117
+ type: Directive,
118
+ args: [{
119
+ standalone: true,
120
+ selector: "[nuDataSource][sorter]"
121
+ }]
122
+ }], ctorParameters: () => [] });
123
+ export class DataSourceProxySlimer {
124
+ #proxy;
125
+ constructor() {
126
+ this.#proxy = inject(DataSourceProxy);
127
+ this.slimer = input.required();
128
+ this.slimer$ = toObservable(this.slimer);
129
+ combineLatest({ query: this.#proxy.query$, slimer: this.slimer$ })
130
+ .pipe(takeUntilDestroyed())
131
+ .subscribe(({ query, slimer }) => query.slimer.forced.set(slimer));
132
+ }
133
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.6", ngImport: i0, type: DataSourceProxySlimer, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
134
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "17.3.6", type: DataSourceProxySlimer, isStandalone: true, selector: "[nuDataSource][slimer]", inputs: { slimer: { classPropertyName: "slimer", publicName: "slimer", isSignal: true, isRequired: true, transformFunction: null } }, ngImport: i0 }); }
135
+ }
136
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.6", ngImport: i0, type: DataSourceProxySlimer, decorators: [{
137
+ type: Directive,
138
+ args: [{
139
+ standalone: true,
140
+ selector: "[nuDataSource][slimer]"
141
+ }]
142
+ }], ctorParameters: () => [] });
143
+ export class DataSourceProxyGrouper {
144
+ #proxy;
145
+ constructor() {
146
+ this.#proxy = inject(DataSourceProxy);
147
+ this.grouper = input.required();
148
+ this.grouper$ = toObservable(this.grouper);
149
+ combineLatest({ query: this.#proxy.query$, grouper: this.grouper$ })
150
+ .pipe(takeUntilDestroyed())
151
+ .subscribe(({ query, grouper }) => query.grouper.forced.set(grouper));
152
+ }
153
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.6", ngImport: i0, type: DataSourceProxyGrouper, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
154
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "17.3.6", type: DataSourceProxyGrouper, isStandalone: true, selector: "[nuDataSource][grouper]", inputs: { grouper: { classPropertyName: "grouper", publicName: "grouper", isSignal: true, isRequired: true, transformFunction: null } }, ngImport: i0 }); }
155
+ }
156
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.6", ngImport: i0, type: DataSourceProxyGrouper, decorators: [{
157
+ type: Directive,
158
+ args: [{
159
+ standalone: true,
160
+ selector: "[nuDataSource][grouper]"
161
+ }]
162
+ }], ctorParameters: () => [] });
163
+ export class DataSourceProxyBusy {
164
+ #proxy;
165
+ #busy;
166
+ constructor() {
167
+ this.#proxy = inject(DataSourceProxy);
168
+ this.#busy = inject(Busy);
169
+ this.busy$ = this.#proxy.value$.pipe(switchMap(value => value.busy$), shareReplay(1));
170
+ this.#busy.connect(this.busy$).pipe(takeUntilDestroyed()).subscribe();
171
+ }
172
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.6", ngImport: i0, type: DataSourceProxyBusy, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
173
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "17.3.6", type: DataSourceProxyBusy, isStandalone: true, selector: "[nuDataSource][nuBusy]", ngImport: i0 }); }
174
+ }
175
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.6", ngImport: i0, type: DataSourceProxyBusy, decorators: [{
176
+ type: Directive,
177
+ args: [{
178
+ standalone: true,
179
+ selector: "[nuDataSource][nuBusy]"
180
+ }]
181
+ }], ctorParameters: () => [] });
141
182
  function coerceDataSource(value) {
142
183
  if (value instanceof DataSourceProxy) {
143
184
  return value.value$;
@@ -152,4 +193,4 @@ function coerceDataSource(value) {
152
193
  return throwError(() => new Error("Invalid DataSource value"));
153
194
  }
154
195
  }
155
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJveHkuZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvZGF0YS9zcmMvc291cmNlL3Byb3h5LmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxJQUFJLGFBQWEsRUFBb0IsTUFBTSwwQkFBMEIsQ0FBQTtBQUN4RixPQUFPLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBYSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUE7QUFDckUsT0FBTyxFQUFFLGtCQUFrQixFQUFFLFFBQVEsRUFBRSxNQUFNLDRCQUE0QixDQUFBO0FBRXpFLE9BQU8sRUFDSCxhQUFhLEVBQ2IsUUFBUSxFQUNSLEdBQUcsRUFFSCxFQUFFLEVBQ0YsYUFBYSxFQUNiLEtBQUssRUFDTCxXQUFXLEVBQ1gsT0FBTyxFQUNQLFlBQVksRUFDWixTQUFTLEVBQ1QsU0FBUyxFQUNULEdBQUcsRUFDSCxVQUFVLEVBQ2IsTUFBTSxNQUFNLENBQUE7QUFFYixPQUFPLEVBQUUsSUFBSSxFQUFtQixNQUFNLGdCQUFnQixDQUFBO0FBR3RELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQTtBQUVuRCxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sVUFBVSxDQUFBOzs7QUFJckM7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBNkJHO0FBTUgsTUFBTSxPQUFPLGVBQ1QsU0FBUSxhQUE0QjtJQUdwQyxJQUNJLEtBQUssQ0FBQyxLQUF5QjtRQUMvQixJQUFJLENBQUMsU0FBUyxFQUFFLFdBQVcsRUFBRSxDQUFBO1FBQzdCLElBQUksQ0FBQyxTQUFTLEdBQUcsZ0JBQWdCLENBQUksS0FBSyxDQUFDO2FBQ3RDLElBQUksQ0FDRCxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUU7WUFDSixJQUFJLENBQUMsSUFBSSxJQUFJLEVBQUUsQ0FBQztnQkFDWixNQUFNLElBQUksS0FBSyxDQUFD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QUFLLEVBQUUsY0FBYyxFQUFFO2dCQWtDNUMsaUJBQWlCO3NCQURwQixLQUFLO2dCQVFGLGlCQUFpQjtzQkFEcEIsS0FBSztnQkFPRixrQkFBa0I7c0JBRHJCLEtBQUs7Z0JBT0YsaUJBQWlCO3NCQURwQixLQUFLOztBQW1FVixTQUFTLGdCQUFnQixDQUFrQixLQUF5QjtJQUNoRSxJQUFJLEtBQUssWUFBWSxlQUFlLEVBQUUsQ0FBQztRQUNuQyxPQUFPLEtBQUssQ0FBQyxNQUFNLENBQUE7SUFDdkIsQ0FBQztTQUFNLElBQUksS0FBSyxZQUFZLFVBQVUsRUFBRSxDQUFDO1FBQ3JDLE9BQU8sRUFBRSxDQUFDLEtBQUssQ0FBQyxDQUFBO0lBQ3BCLENBQUM7U0FBTSxJQUFJLEtBQUssWUFBWSxZQUFZLEVBQUUsQ0FBQztRQUN2QyxPQUFPLEVBQUUsQ0FBQyxLQUFLLENBQUMsWUFBWSxFQUFFLENBQUMsQ0FBQTtJQUNuQyxDQUFDO1NBQU0sQ0FBQztRQUNKLE9BQU8sVUFBVSxDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksS0FBSyxDQUFDLDBCQUEwQixDQUFDLENBQUMsQ0FBQTtJQUNsRSxDQUFDO0FBQ0wsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IERhdGFTb3VyY2UgYXMgQ2RrRGF0YVNvdXJjZSwgQ29sbGVjdGlvblZpZXdlciB9IGZyb20gXCJAYW5ndWxhci9jZGsvY29sbGVjdGlvbnNcIlxuaW1wb3J0IHsgRGlyZWN0aXZlLCBJbnB1dCwgT25EZXN0cm95LCBPcHRpb25hbCB9IGZyb20gXCJAYW5ndWxhci9jb3JlXCJcbmltcG9ydCB7IHRha2VVbnRpbERlc3Ryb3llZCwgdG9TaWduYWwgfSBmcm9tIFwiQGFuZ3VsYXIvY29yZS9yeGpzLWludGVyb3BcIlxuXG5pbXBvcnQge1xuICAgIGNvbWJpbmVMYXRlc3QsXG4gICAgZmluYWxpemUsXG4gICAgbWFwLFxuICAgIE9ic2VydmFibGUsXG4gICAgb2YsXG4gICAgUmVwbGF5U3ViamVjdCxcbiAgICBzaGFyZSxcbiAgICBzaGFyZVJlcGxheSxcbiAgICBTdWJqZWN0LFxuICAgIFN1YnNjcmlwdGlvbixcbiAgICBzd2l0Y2hNYXAsXG4gICAgdGFrZVVudGlsLFxuICAgIHRhcCxcbiAgICB0aHJvd0Vycm9yXG59IGZyb20gXCJyeGpzXCJcblxuaW1wb3J0IHsgQnVzeSwgQ29ubmVjdFByb3RvY29sIH0gZnJvbSBcIkBuZ3V0aWwvY29tbW9uXCJcblxuaW1wb3J0IHsgTW9kZWwgfSBmcm9tIFwiLi4vbW9kZWxcIlxuaW1wb3J0IHsgRGF0YVByb3ZpZGVyIH0gZnJvbSBcIi4uL3Byb3ZpZGVyL3Byb3ZpZGVyXCJcbmltcG9ydCB7IEZpbHRlciwgR3JvdXBlciwgU2xpbWVyLCBTb3J0ZXIgfSBmcm9tIFwiLi4vcXVlcnlcIlxuaW1wb3J0IHsgRGF0YVNvdXJjZSB9IGZyb20gXCIuL3NvdXJjZVwiXG5cbmV4cG9ydCB0eXBlIERhdGFTb3VyY2VJbnB1dDxUIGV4dGVuZHMgTW9kZWw+ID0gYW55XG5cbi8qKlxuICogQGV4YW1wbGVcbiAqIGBgYGh0bWxcbiAqIDx0YWJsZSBbbnVEYXRhU291cmNlXT1cIi4uLlwiIFtmaWx0ZXJdPVwie2lzQWN0aXZlOiB0cnVlfVwiIFtzb3J0ZXJdPVwiW3tuYW1lOiAnYXNjJ31dXCI+PC90YWJsZT5cbiAqIGBgYFxuICpcbiAqIGBgYHRzXG4gKiBAQ29tcG9uZW50KHtcbiAqICAgdGVtcGxhdGU6IGA8dGFibGUgW251RGF0YVNvdXJjZV09XCJ1c2VycyRcIj48L3RhYmxlPmBcbiAqIH0pXG4gKiBjbGFzcyBVc2VyVGFibGUge1xuICogICByZWFkb25seSB1c2VyU2VydmljZSA9IGluamVjdChVc2VyU2VydmljZSlcbiAqICAgcmVhZG9ubHkgdXNlcnMkID0gVXNlclNlcnZpY2UuYWxsKClcbiAqIH1cbiAqIGBgYFxuICpcbiAqIGBgYHRzXG4gKiBAQ29tcG9uZW50KHtcbiAqICAgc2VsZWN0b3I6IFwidGFibGUubXktdGFibGVcIixcbiAqICAgdGVtcGxhdGU6IGBcbiAqICAgPGNkay12aXJ0dWFsLXNjcm9sbC12aWV3cG9ydCBpdGVtU2l6ZT1cIjUwXCIgY2xhc3M9XCJleGFtcGxlLXZpZXdwb3J0XCI+XG4gKiAgICAgICA8ZGl2ICpjZGtWaXJ0dWFsRm9yPVwibGV0IGl0ZW0gb2YgZGF0YVNvdXJjZVwiIGNsYXNzPVwiZXhhbXBsZS1pdGVtXCI+e3tpdGVtfX08L2Rpdj5cbiAqICAgPC9jZGstdmlydHVhbC1zY3JvbGwtdmlld3BvcnQ+XG4gKiAgIGBcbiAqIH0pXG4gKiBjbGFzcyBUYWJsZUNvbXBvbmVudCB7XG4gKiAgIHJlYWRvbmx5IGRhdGFTb3VyY2UgPSBpbmplY3QoRGF0YVNvdXJjZVByb3h5KVxuICogfVxuICogYGBgXG4gKi9cbkBEaXJlY3RpdmUoe1xuICAgIHN0YW5kYWxvbmU6IHRydWUsXG4gICAgc2VsZWN0b3I6IFwiW251RGF0YVNvdXJjZV1cIixcbiAgICBleHBvcnRBczogXCJudURhdGFTb3VyY2VcIlxufSlcbmV4cG9ydCBjbGFzcyBEYXRhU291cmNlUHJveHk8VCBleHRlbmRzIE1vZGVsID0gTW9kZWw+XG4gICAgZXh0ZW5kcyBDZGtEYXRhU291cmNlPFQgfCB1bmRlZmluZWQ+XG4gICAgaW1wbGVtZW50cyBPbkRlc3Ryb3ksIENvbm5lY3RQcm90b2NvbFxue1xuICAgIEBJbnB1dCh7IHJlcXVpcmVkOiB0cnVlLCBhbGlhczogXCJudURhdGFTb3VyY2VcIiB9KVxuICAgIHNldCB2YWx1ZSh2YWx1ZTogRGF0YVNvdXJjZUlucHV0PFQ+KSB7XG4gICAgICAgIHRoaXMuI3ZhbHVlU3ViPy51bnN1YnNjcmliZSgpXG4gICAgICAgIHRoaXMuI3ZhbHVlU3ViID0gY29lcmNlRGF0YVNvdXJjZTxUPih2YWx1ZSlcbiAgICAgICAgICAgIC5waXBlKFxuICAgICAgICAgICAgICAgIHRhcCh2ID0+IHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHYgPT0gbnVsbCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiTWlzc2luZyBEYXRhU291cmNlXCIpXG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgKVxuICAgICAgICAgICAgLnN1YnNjcmliZSh0aGlzLiN2YWx1ZSlcbiAgICB9XG5cbiAgICAjdmFsdWVTdWI/OiBTdWJzY3JpcHRpb25cbiAgICByZWFkb25seSAjdmFsdWUgPSBuZXcgUmVwbGF5U3ViamVjdDxEYXRhU291cmNlPFQ+PigxKVxuICAgIHJlYWRvbmx5IHZhbHVlJCA9IHRoaXMuI3ZhbHVlLnBpcGUodGFrZVVudGlsRGVzdHJveWVkKCkpXG4gICAgcmVhZG9ubHkgcXVlcnkkID0gdGhpcy52YWx1ZSQucGlwZShcbiAgICAgICAgbWFwKHZhbHVlID0+IHZhbHVlLnF1ZXJ5JCksXG4gICAgICAgIHNoYXJlUmVwbGF5KDEpXG4gICAgKVxuXG4gICAgcmVhZG9ubHkgaXRlbXMkID0gdGhpcy52YWx1ZSQucGlwZShcbiAgICAgICAgc3dpdGNoTWFwKHZhbHVlID0+IHZhbHVlLml0ZW1zJCksXG4gICAgICAgIHNoYXJlKClcbiAgICApXG5cbiAgICByZWFkb25seSBidXN5JCA9IHRoaXMudmFsdWUkLnBpcGUoXG4gICAgICAgIHN3aXRjaE1hcCh2YWx1ZSA9PiB2YWx1ZS5idXN5JCksXG4gICAgICAgIHNoYXJlKClcbiAgICApXG4gICAgcmVhZG9ubHkgaXNCdXN5ID0gdG9TaWduYWwodGhpcy5idXN5JCwgeyByZWplY3RFcnJvcnM6IHRydWUsIGluaXRpYWxWYWx1ZTogZmFsc2UgfSlcblxuICAgIEBJbnB1dCgpXG4gICAgc2V0IGZvcmNlZEZpbHRlcklucHV0KHZhbHVlOiBGaWx0ZXI8VD4pIHtcbiAgICAgICAgLy8gdGhpcy5xdWVyeS5maWx0ZXIuZm9yY2VkLnVwZGF0ZSh2YWx1ZSlcbiAgICAgICAgdGhpcy4jZmlsdGVyLm5leHQodmFsdWUpXG4gICAgfVxuICAgIHJlYWRvbmx5ICNmaWx0ZXIgPSBuZXcgUmVwbGF5U3ViamVjdDxGaWx0ZXI8VD4+KDEpXG5cbiAgICBASW5wdXQoKVxuICAgIHNldCBmb3JjZWRTb3J0ZXJJbnB1dCh2YWx1ZTogU29ydGVyPFQ+KSB7XG4gICAgICAgIHRoaXMuI3NvcnRlci5uZXh0KHZhbHVlKVxuICAgIH1cbiAgICByZWFkb25seSAjc29ydGVyID0gbmV3IFJlcGxheVN1YmplY3Q8U29ydGVyPFQ+PigxKVxuXG4gICAgQElucHV0KClcbiAgICBzZXQgZm9yY2VkR3JvdXBlcklucHV0KHZhbHVlOiBHcm91cGVyPFQ+KSB7XG4gICAgICAgIHRoaXMuI2dyb3VwZXIubmV4dCh2YWx1ZSlcbiAgICB9XG4gICAgcmVhZG9ubHkgI2dyb3VwZXIgPSBuZXcgUmVwbGF5U3ViamVjdDxHcm91cGVyPFQ+PigxKVxuXG4gICAgQElucHV0KClcbiAgICBzZXQgZm9yY2VkU2xpbWVySW5wdXQodmFsdWU6IFNsaW1lcjxUPikge1xuICAgICAgICB0aGlzLiNzbGltZXIubmV4dCh2YWx1ZSlcbiAgICB9XG4gICAgcmVhZG9ubHkgI3NsaW1lciA9IG5ldyBSZXBsYXlTdWJqZWN0PFNsaW1lcjxUPj4oMSlcblxuICAgIHJlYWRvbmx5ICNzdWJzID0gbmV3IFN1YnNjcmlwdGlvbigpXG5cbiAgICBjb25zdHJ1Y3RvcihAT3B0aW9uYWwoKSBidXN5PzogQnVzeTxhbnk+KSB7XG4gICAgICAgIHN1cGVyKClcblxuICAgICAgICBpZiAoYnVzeSAhPSBudWxsKSB7XG4gICAgICAgICAgICB0aGlzLiNzdWJzLmFkZChidXN5LmNvbm5lY3QodGhpcy5idXN5JCkuc3Vic2NyaWJlKCkpXG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLiNzdWJzLmFkZChcbiAgICAgICAgICAgIGNvbWJpbmVMYXRlc3QoeyBxdWVyeTogdGhpcy5xdWVyeSQsIGZpbHRlcjogdGhpcy4jZmlsdGVyIH0pLnN1YnNjcmliZSgoeyBxdWVyeSwgZmlsdGVyIH0pID0+IHtcbiAgICAgICAgICAgICAgICBxdWVyeS5maWx0ZXIuZm9yY2VkLnNldChmaWx0ZXIpXG4gICAgICAgICAgICB9KVxuICAgICAgICApXG5cbiAgICAgICAgdGhpcy4jc3Vicy5hZGQoXG4gICAgICAgICAgICBjb21iaW5lTGF0ZXN0KHsgcXVlcnk6IHRoaXMucXVlcnkkLCBzb3J0ZXI6IHRoaXMuI3NvcnRlciB9KS5zdWJzY3JpYmUoKHsgcXVlcnksIHNvcnRlciB9KSA9PiB7XG4gICAgICAgICAgICAgICAgcXVlcnkuc29ydGVyLmZvcmNlZC5zZXQoc29ydGVyKVxuICAgICAgICAgICAgfSlcbiAgICAgICAgKVxuXG4gICAgICAgIHRoaXMuI3N1YnMuYWRkKFxuICAgICAgICAgICAgY29tYmluZUxhdGVzdCh7IHF1ZXJ5OiB0aGlzLnF1ZXJ5JCwgZ3JvdXBlcjogdGhpcy4jZ3JvdXBlciB9KS5zdWJzY3JpYmUoKHsgcXVlcnksIGdyb3VwZXIgfSkgPT4ge1xuICAgICAgICAgICAgICAgIHF1ZXJ5Lmdyb3VwZXIuZm9yY2VkLnNldChncm91cGVyKVxuICAgICAgICAgICAgfSlcbiAgICAgICAgKVxuXG4gICAgICAgIHRoaXMuI3N1YnMuYWRkKFxuICAgICAgICAgICAgY29tYmluZUxhdGVzdCh7IHF1ZXJ5OiB0aGlzLnF1ZXJ5JCwgc2xpbWVyOiB0aGlzLiNzbGltZXIgfSkuc3Vic2NyaWJlKCh7IHF1ZXJ5LCBzbGltZXIgfSkgPT4ge1xuICAgICAgICAgICAgICAgIHF1ZXJ5LnNsaW1lci5mb3JjZWQuc2V0KHNsaW1lcilcbiAgICAgICAgICAgIH0pXG4gICAgICAgIClcbiAgICB9XG5cbiAgICAjY3ZTdWJzID0gbmV3IE1hcDxDb2xsZWN0aW9uVmlld2VyLCBTdWJqZWN0PHZvaWQ+PigpXG5cbiAgICBvdmVycmlkZSBjb25uZWN0KGNvbGxlY3Rpb25WaWV3ZXI6IENvbGxlY3Rpb25WaWV3ZXIpOiBPYnNlcnZhYmxlPHJlYWRvbmx5IChUIHwgdW5kZWZpbmVkKVtdPiB7XG4gICAgICAgIGNvbnN0IHVudGlsID0gbmV3IFN1YmplY3Q8dm9pZD4oKVxuXG4gICAgICAgIHRoaXMuI2N2U3Vicy5nZXQoY29sbGVjdGlvblZpZXdlcik/Lm5leHQoKVxuICAgICAgICB0aGlzLiNjdlN1YnMuc2V0KGNvbGxlY3Rpb25WaWV3ZXIsIHVudGlsKVxuXG4gICAgICAgIHJldHVybiB0aGlzLnZhbHVlJC5waXBlKFxuICAgICAgICAgICAgc3dpdGNoTWFwKHZhbHVlID0+IHZhbHVlLmNvbm5lY3QoY29sbGVjdGlvblZpZXdlcikpLFxuICAgICAgICAgICAgdGFrZVVudGlsKHVudGlsKSxcbiAgICAgICAgICAgIGZpbmFsaXplKCgpID0+IHRoaXMuI2N2U3Vicy5kZWxldGUoY29sbGVjdGlvblZpZXdlcikpXG4gICAgICAgIClcbiAgICB9XG5cbiAgICBvdmVycmlkZSBkaXNjb25uZWN0KGNvbGxlY3Rpb25WaWV3ZXI6IENvbGxlY3Rpb25WaWV3ZXIpOiB2b2lkIHtcbiAgICAgICAgdGhpcy4jY3ZTdWJzLmdldChjb2xsZWN0aW9uVmlld2VyKT8ubmV4dCgpXG4gICAgICAgIHRoaXMuI2N2U3Vicy5kZWxldGUoY29sbGVjdGlvblZpZXdlcilcbiAgICB9XG5cbiAgICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy4jdmFsdWVTdWI/LnVuc3Vic2NyaWJlKClcbiAgICAgICAgdGhpcy4jdmFsdWVTdWIgPSB1bmRlZmluZWRcbiAgICAgICAgdGhpcy4jc3Vicy51bnN1YnNjcmliZSgpXG4gICAgfVxufVxuXG5mdW5jdGlvbiBjb2VyY2VEYXRhU291cmNlPFQgZXh0ZW5kcyBNb2RlbD4odmFsdWU6IERhdGFTb3VyY2VJbnB1dDxUPik6IE9ic2VydmFibGU8RGF0YVNvdXJjZTxUPj4ge1xuICAgIGlmICh2YWx1ZSBpbnN0YW5jZW9mIERhdGFTb3VyY2VQcm94eSkge1xuICAgICAgICByZXR1cm4gdmFsdWUudmFsdWUkXG4gICAgfSBlbHNlIGlmICh2YWx1ZSBpbnN0YW5jZW9mIERhdGFTb3VyY2UpIHtcbiAgICAgICAgcmV0dXJuIG9mKHZhbHVlKVxuICAgIH0gZWxzZSBpZiAodmFsdWUgaW5zdGFuY2VvZiBEYXRhUHJvdmlkZXIpIHtcbiAgICAgICAgcmV0dXJuIG9mKHZhbHVlLnRvRGF0YVNvdXJjZSgpKVxuICAgIH0gZWxzZSB7XG4gICAgICAgIHJldHVybiB0aHJvd0Vycm9yKCgpID0+IG5ldyBFcnJvcihcIkludmFsaWQgRGF0YVNvdXJjZSB2YWx1ZVwiKSlcbiAgICB9XG59XG4iXX0=
196
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJveHkuZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvZGF0YS9zcmMvc291cmNlL3Byb3h5LmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxJQUFJLGFBQWEsRUFBb0IsTUFBTSwwQkFBMEIsQ0FBQTtBQUN4RixPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFhLE1BQU0sZUFBZSxDQUFBO0FBQzFFLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxZQUFZLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQTtBQUU3RSxPQUFPLEVBQ0gsYUFBYSxFQUNiLFFBQVEsRUFDUixHQUFHLEVBRUgsRUFBRSxFQUNGLGFBQWEsRUFDYixXQUFXLEVBQ1gsT0FBTyxFQUVQLFNBQVMsRUFDVCxTQUFTLEVBQ1QsVUFBVSxFQUNiLE1BQU0sTUFBTSxDQUFBO0FBRWIsT0FBTyxFQUFFLElBQUksRUFBbUIsTUFBTSxnQkFBZ0IsQ0FBQTtBQUd0RCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sc0JBQXNCLENBQUE7QUFFbkQsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLFVBQVUsQ0FBQTs7QUFJckM7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBNkJHO0FBTUgsTUFBTSxPQUFPLGVBQ1QsU0FBUSxhQUE0QjtJQU54Qzs7UUFnQmEsV0FBTSxHQUFHLElBQUksYUFBYSxDQUFnQixDQUFDLENBQUMsQ0FBQTtRQUM1QyxXQUFNLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsa0JBQWtCLEVBQUUsQ0FBQyxDQUFBO1FBQy9DLFdBQU0sR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FDOUIsR0FBRyxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxFQUMxQixXQUFXLENBQUMsQ0FB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QyxDQUFBO1FBQ3RELFVBQUssR0FBRyxNQUFNLENBQVksSUFBSSxDQUFDLENBQUE7UUFFL0IsVUFBSyxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLElBQUksQ0FDcEMsU0FBUyxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxFQUMvQixXQUFXLENBQUMsQ0FBQyxDQUFDLENBQ2pCLENBQUE7UUFHRyxJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsSUFBSSxDQUFDLGtCQUFrQixFQUFFLENBQUMsQ0FBQyxTQUFTLEVBQUUsQ0FBQTtJQUN6RSxDQUFDOzhHQVhRLG1CQUFtQjtrR0FBbkIsbUJBQW1COzsyRkFBbkIsbUJBQW1CO2tCQUovQixTQUFTO21CQUFDO29CQUNQLFVBQVUsRUFBRSxJQUFJO29CQUNoQixRQUFRLEVBQUUsd0JBQXdCO2lCQUNyQzs7QUFlRCxTQUFTLGdCQUFnQixDQUFrQixLQUE4QjtJQUNyRSxJQUFJLEtBQUssWUFBWSxlQUFlLEVBQUUsQ0FBQztRQUNuQyxPQUFPLEtBQUssQ0FBQyxNQUFNLENBQUE7SUFDdkIsQ0FBQztTQUFNLElBQUksS0FBSyxZQUFZLFVBQVUsRUFBRSxDQUFDO1FBQ3JDLE9BQU8sRUFBRSxDQUFDLEtBQUssQ0FBQyxDQUFBO0lBQ3BCLENBQUM7U0FBTSxJQUFJLEtBQUssWUFBWSxZQUFZLEVBQUUsQ0FBQztRQUN2QyxPQUFPLEVBQUUsQ0FBQyxLQUFLLENBQUMsWUFBWSxFQUFFLENBQUMsQ0FBQTtJQUNuQyxDQUFDO1NBQU0sQ0FBQztRQUNKLE9BQU8sVUFBVSxDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksS0FBSyxDQUFDLDBCQUEwQixDQUFDLENBQUMsQ0FBQTtJQUNsRSxDQUFDO0FBQ0wsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IERhdGFTb3VyY2UgYXMgQ2RrRGF0YVNvdXJjZSwgQ29sbGVjdGlvblZpZXdlciB9IGZyb20gXCJAYW5ndWxhci9jZGsvY29sbGVjdGlvbnNcIlxuaW1wb3J0IHsgRGlyZWN0aXZlLCBpbmplY3QsIGlucHV0LCBJbnB1dCwgT25EZXN0cm95IH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIlxuaW1wb3J0IHsgdGFrZVVudGlsRGVzdHJveWVkLCB0b09ic2VydmFibGUgfSBmcm9tIFwiQGFuZ3VsYXIvY29yZS9yeGpzLWludGVyb3BcIlxuXG5pbXBvcnQge1xuICAgIGNvbWJpbmVMYXRlc3QsXG4gICAgZmluYWxpemUsXG4gICAgbWFwLFxuICAgIE9ic2VydmFibGUsXG4gICAgb2YsXG4gICAgUmVwbGF5U3ViamVjdCxcbiAgICBzaGFyZVJlcGxheSxcbiAgICBTdWJqZWN0LFxuICAgIFN1YnNjcmlwdGlvbixcbiAgICBzd2l0Y2hNYXAsXG4gICAgdGFrZVVudGlsLFxuICAgIHRocm93RXJyb3Jcbn0gZnJvbSBcInJ4anNcIlxuXG5pbXBvcnQgeyBCdXN5LCBDb25uZWN0UHJvdG9jb2wgfSBmcm9tIFwiQG5ndXRpbC9jb21tb25cIlxuXG5pbXBvcnQgeyBNb2RlbCB9IGZyb20gXCIuLi9tb2RlbFwiXG5pbXBvcnQgeyBEYXRhUHJvdmlkZXIgfSBmcm9tIFwiLi4vcHJvdmlkZXIvcHJvdmlkZXJcIlxuaW1wb3J0IHsgRmlsdGVyLCBHcm91cGVyLCBTbGltZXIsIFNvcnRlciB9IGZyb20gXCIuLi9xdWVyeVwiXG5pbXBvcnQgeyBEYXRhU291cmNlIH0gZnJvbSBcIi4vc291cmNlXCJcblxuZXhwb3J0IHR5cGUgRGF0YVNvdXJjZVByb3h5SW5wdXQ8VCBleHRlbmRzIE1vZGVsPiA9IERhdGFTb3VyY2VQcm94eTxUPiB8IERhdGFTb3VyY2U8VD4gfCBEYXRhUHJvdmlkZXI8VD5cblxuLyoqXG4gKiBAZXhhbXBsZVxuICogYGBgaHRtbFxuICogPHRhYmxlIFtudURhdGFTb3VyY2VdPVwiLi4uXCIgW2ZpbHRlcl09XCJ7aXNBY3RpdmU6IHRydWV9XCIgW3NvcnRlcl09XCJbe25hbWU6ICdhc2MnfV1cIj48L3RhYmxlPlxuICogYGBgXG4gKlxuICogYGBgdHNcbiAqIEBDb21wb25lbnQoe1xuICogICB0ZW1wbGF0ZTogYDx0YWJsZSBbbnVEYXRhU291cmNlXT1cInVzZXJzJFwiPjwvdGFibGU+YFxuICogfSlcbiAqIGNsYXNzIFVzZXJUYWJsZSB7XG4gKiAgIHJlYWRvbmx5IHVzZXJTZXJ2aWNlID0gaW5qZWN0KFVzZXJTZXJ2aWNlKVxuICogICByZWFkb25seSB1c2VycyQgPSBVc2VyU2VydmljZS5hbGwoKVxuICogfVxuICogYGBgXG4gKlxuICogYGBgdHNcbiAqIEBDb21wb25lbnQoe1xuICogICBzZWxlY3RvcjogXCJ0YWJsZS5teS10YWJsZVwiLFxuICogICB0ZW1wbGF0ZTogYFxuICogICA8Y2RrLXZpcnR1YWwtc2Nyb2xsLXZpZXdwb3J0IGl0ZW1TaXplPVwiNTBcIiBjbGFzcz1cImV4YW1wbGUtdmlld3BvcnRcIj5cbiAqICAgICAgIDxkaXYgKmNka1ZpcnR1YWxGb3I9XCJsZXQgaXRlbSBvZiBkYXRhU291cmNlXCIgY2xhc3M9XCJleGFtcGxlLWl0ZW1cIj57e2l0ZW19fTwvZGl2PlxuICogICA8L2Nkay12aXJ0dWFsLXNjcm9sbC12aWV3cG9ydD5cbiAqICAgYFxuICogfSlcbiAqIGNsYXNzIFRhYmxlQ29tcG9uZW50IHtcbiAqICAgcmVhZG9ubHkgZGF0YVNvdXJjZSA9IGluamVjdChEYXRhU291cmNlUHJveHkpXG4gKiB9XG4gKiBgYGBcbiAqL1xuQERpcmVjdGl2ZSh7XG4gICAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgICBzZWxlY3RvcjogXCJbbnVEYXRhU291cmNlXVwiLFxuICAgIGV4cG9ydEFzOiBcIm51RGF0YVNvdXJjZVwiXG59KVxuZXhwb3J0IGNsYXNzIERhdGFTb3VyY2VQcm94eTxUIGV4dGVuZHMgTW9kZWw+XG4gICAgZXh0ZW5kcyBDZGtEYXRhU291cmNlPFQgfCB1bmRlZmluZWQ+XG4gICAgaW1wbGVtZW50cyBPbkRlc3Ryb3ksIENvbm5lY3RQcm90b2NvbFxue1xuICAgIEBJbnB1dCh7IHJlcXVpcmVkOiB0cnVlLCBhbGlhczogXCJudURhdGFTb3VyY2VcIiB9KVxuICAgIHNldCB2YWx1ZSh2YWx1ZTogRGF0YVNvdXJjZVByb3h5SW5wdXQ8VD4pIHtcbiAgICAgICAgdGhpcy4jdmFsdWVTdWI/LnVuc3Vic2NyaWJlKClcbiAgICAgICAgdGhpcy4jdmFsdWVTdWIgPSBjb2VyY2VEYXRhU291cmNlPFQ+KHZhbHVlKS5zdWJzY3JpYmUodGhpcy4jdmFsdWUpXG4gICAgfVxuXG4gICAgI3ZhbHVlU3ViPzogU3Vic2NyaXB0aW9uXG4gICAgcmVhZG9ubHkgI3ZhbHVlID0gbmV3IFJlcGxheVN1YmplY3Q8RGF0YVNvdXJjZTxUPj4oMSlcbiAgICByZWFkb25seSB2YWx1ZSQgPSB0aGlzLiN2YWx1ZS5waXBlKHRha2VVbnRpbERlc3Ryb3llZCgpKVxuICAgIHJlYWRvbmx5IHF1ZXJ5JCA9IHRoaXMudmFsdWUkLnBpcGUoXG4gICAgICAgIG1hcCh2YWx1ZSA9PiB2YWx1ZS5xdWVyeSQpLFxuICAgICAgICBzaGFyZVJlcGxheSgxKVxuICAgIClcblxuICAgIHJlYWRvbmx5IGl0ZW1zJCA9IHRoaXMudmFsdWUkLnBpcGUoXG4gICAgICAgIHN3aXRjaE1hcCh2YWx1ZSA9PiB2YWx1ZS5pdGVtcyQpLFxuICAgICAgICBzaGFyZVJlcGxheSgxKVxuICAgIClcblxuICAgICNjdlN1YnMgPSBuZXcgTWFwPENvbGxlY3Rpb25WaWV3ZXIsIFN1YmplY3Q8dm9pZD4+KClcblxuICAgIG92ZXJyaWRlIGNvbm5lY3QoY29sbGVjdGlvblZpZXdlcjogQ29sbGVjdGlvblZpZXdlcik6IE9ic2VydmFibGU8cmVhZG9ubHkgKFQgfCB1bmRlZmluZWQpW10+IHtcbiAgICAgICAgY29uc3QgdW50aWwgPSBuZXcgU3ViamVjdDx2b2lkPigpXG5cbiAgICAgICAgdGhpcy4jY3ZTdWJzLmdldChjb2xsZWN0aW9uVmlld2VyKT8ubmV4dCgpXG4gICAgICAgIHRoaXMuI2N2U3Vicy5zZXQoY29sbGVjdGlvblZpZXdlciwgdW50aWwpXG5cbiAgICAgICAgcmV0dXJuIHRoaXMudmFsdWUkLnBpcGUoXG4gICAgICAgICAgICBzd2l0Y2hNYXAodmFsdWUgPT4gdmFsdWUuY29ubmVjdChjb2xsZWN0aW9uVmlld2VyKSksXG4gICAgICAgICAgICB0YWtlVW50aWwodW50aWwpLFxuICAgICAgICAgICAgZmluYWxpemUoKCkgPT4gdGhpcy4jY3ZTdWJzLmRlbGV0ZShjb2xsZWN0aW9uVmlld2VyKSlcbiAgICAgICAgKVxuICAgIH1cblxuICAgIG92ZXJyaWRlIGRpc2Nvbm5lY3QoY29sbGVjdGlvblZpZXdlcjogQ29sbGVjdGlvblZpZXdlcik6IHZvaWQge1xuICAgICAgICB0aGlzLiNjdlN1YnMuZ2V0KGNvbGxlY3Rpb25WaWV3ZXIpPy5uZXh0KClcbiAgICAgICAgdGhpcy4jY3ZTdWJzLmRlbGV0ZShjb2xsZWN0aW9uVmlld2VyKVxuICAgIH1cblxuICAgIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgICAgICB0aGlzLiN2YWx1ZVN1Yj8udW5zdWJzY3JpYmUoKVxuICAgICAgICB0aGlzLiN2YWx1ZVN1YiA9IHVuZGVmaW5lZFxuICAgIH1cbn1cblxuQERpcmVjdGl2ZSh7XG4gICAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgICBzZWxlY3RvcjogXCJbbnVEYXRhU291cmNlXVtmaWx0ZXJdXCJcbn0pXG5leHBvcnQgY2xhc3MgRGF0YVNvdXJjZVByb3h5RmlsdGVyPFQgZXh0ZW5kcyBNb2RlbCwgRiBleHRlbmRzIEZpbHRlcjxUPj4ge1xuICAgIHJlYWRvbmx5ICNwcm94eSA9IGluamVjdDxEYXRhU291cmNlUHJveHk8VD4+KERhdGFTb3VyY2VQcm94eSlcbiAgICByZWFkb25seSBmaWx0ZXIgPSBpbnB1dC5yZXF1aXJlZDxGPigpXG4gICAgcmVhZG9ubHkgZmlsdGVyJCA9IHRvT2JzZXJ2YWJsZSh0aGlzLmZpbHRlcilcblxuICAgIGNvbnN0cnVjdG9yKCkge1xuICAgICAgICBjb21iaW5lTGF0ZXN0KHsgcXVlcnk6IHRoaXMuI3Byb3h5LnF1ZXJ5JCwgZmlsdGVyOiB0aGlzLmZpbHRlciQgfSlcbiAgICAgICAgICAgIC5waXBlKHRha2VVbnRpbERlc3Ryb3llZCgpKVxuICAgICAgICAgICAgLnN1YnNjcmliZSgoeyBxdWVyeSwgZmlsdGVyIH0pID0+IHF1ZXJ5LmZpbHRlci5mb3JjZWQuc2V0KGZpbHRlcikpXG4gICAgfVxufVxuXG5ARGlyZWN0aXZlKHtcbiAgICBzdGFuZGFsb25lOiB0cnVlLFxuICAgIHNlbGVjdG9yOiBcIltudURhdGFTb3VyY2VdW3NvcnRlcl1cIlxufSlcbmV4cG9ydCBjbGFzcyBEYXRhU291cmNlUHJveHlTb3J0ZXI8VCBleHRlbmRzIE1vZGVsLCBTIGV4dGVuZHMgU29ydGVyPFQ+PiB7XG4gICAgcmVhZG9ubHkgI3Byb3h5ID0gaW5qZWN0PERhdGFTb3VyY2VQcm94eTxUPj4oRGF0YVNvdXJjZVByb3h5KVxuICAgIHJlYWRvbmx5IHNvcnRlciA9IGlucHV0LnJlcXVpcmVkPFM+KClcbiAgICByZWFkb25seSBzb3J0ZXIkID0gdG9PYnNlcnZhYmxlKHRoaXMuc29ydGVyKVxuXG4gICAgY29uc3RydWN0b3IoKSB7XG4gICAgICAgIGNvbWJpbmVMYXRlc3QoeyBxdWVyeTogdGhpcy4jcHJveHkucXVlcnkkLCBzb3J0ZXI6IHRoaXMuc29ydGVyJCB9KVxuICAgICAgICAgICAgLnBpcGUodGFrZVVudGlsRGVzdHJveWVkKCkpXG4gICAgICAgICAgICAuc3Vic2NyaWJlKCh7IHF1ZXJ5LCBzb3J0ZXIgfSkgPT4gcXVlcnkuc29ydGVyLmZvcmNlZC5zZXQoc29ydGVyKSlcbiAgICB9XG59XG5cbkBEaXJlY3RpdmUoe1xuICAgIHN0YW5kYWxvbmU6IHRydWUsXG4gICAgc2VsZWN0b3I6IFwiW251RGF0YVNvdXJjZV1bc2xpbWVyXVwiXG59KVxuZXhwb3J0IGNsYXNzIERhdGFTb3VyY2VQcm94eVNsaW1lcjxUIGV4dGVuZHMgTW9kZWwsIFMgZXh0ZW5kcyBTbGltZXI8VD4+IHtcbiAgICByZWFkb25seSAjcHJveHkgPSBpbmplY3Q8RGF0YVNvdXJjZVByb3h5PFQ+PihEYXRhU291cmNlUHJveHkpXG4gICAgcmVhZG9ubHkgc2xpbWVyID0gaW5wdXQucmVxdWlyZWQ8Uz4oKVxuICAgIHJlYWRvbmx5IHNsaW1lciQgPSB0b09ic2VydmFibGUodGhpcy5zbGltZXIpXG5cbiAgICBjb25zdHJ1Y3RvcigpIHtcbiAgICAgICAgY29tYmluZUxhdGVzdCh7IHF1ZXJ5OiB0aGlzLiNwcm94eS5xdWVyeSQsIHNsaW1lcjogdGhpcy5zbGltZXIkIH0pXG4gICAgICAgICAgICAucGlwZSh0YWtlVW50aWxEZXN0cm95ZWQoKSlcbiAgICAgICAgICAgIC5zdWJzY3JpYmUoKHsgcXVlcnksIHNsaW1lciB9KSA9PiBxdWVyeS5zbGltZXIuZm9yY2VkLnNldChzbGltZXIpKVxuICAgIH1cbn1cblxuQERpcmVjdGl2ZSh7XG4gICAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgICBzZWxlY3RvcjogXCJbbnVEYXRhU291cmNlXVtncm91cGVyXVwiXG59KVxuZXhwb3J0IGNsYXNzIERhdGFTb3VyY2VQcm94eUdyb3VwZXI8VCBleHRlbmRzIE1vZGVsLCBHIGV4dGVuZHMgR3JvdXBlcjxUPj4ge1xuICAgIHJlYWRvbmx5ICNwcm94eSA9IGluamVjdDxEYXRhU291cmNlUHJveHk8VD4+KERhdGFTb3VyY2VQcm94eSlcbiAgICByZWFkb25seSBncm91cGVyID0gaW5wdXQucmVxdWlyZWQ8Rz4oKVxuICAgIHJlYWRvbmx5IGdyb3VwZXIkID0gdG9PYnNlcnZhYmxlKHRoaXMuZ3JvdXBlcilcblxuICAgIGNvbnN0cnVjdG9yKCkge1xuICAgICAgICBjb21iaW5lTGF0ZXN0KHsgcXVlcnk6IHRoaXMuI3Byb3h5LnF1ZXJ5JCwgZ3JvdXBlcjogdGhpcy5ncm91cGVyJCB9KVxuICAgICAgICAgICAgLnBpcGUodGFrZVVudGlsRGVzdHJveWVkKCkpXG4gICAgICAgICAgICAuc3Vic2NyaWJlKCh7IHF1ZXJ5LCBncm91cGVyIH0pID0+IHF1ZXJ5Lmdyb3VwZXIuZm9yY2VkLnNldChncm91cGVyKSlcbiAgICB9XG59XG5cbkBEaXJlY3RpdmUoe1xuICAgIHN0YW5kYWxvbmU6IHRydWUsXG4gICAgc2VsZWN0b3I6IFwiW251RGF0YVNvdXJjZV1bbnVCdXN5XVwiXG59KVxuZXhwb3J0IGNsYXNzIERhdGFTb3VyY2VQcm94eUJ1c3kge1xuICAgIHJlYWRvbmx5ICNwcm94eSA9IGluamVjdDxEYXRhU291cmNlUHJveHk8YW55Pj4oRGF0YVNvdXJjZVByb3h5KVxuICAgIHJlYWRvbmx5ICNidXN5ID0gaW5qZWN0PEJ1c3k8YW55Pj4oQnVzeSlcblxuICAgIHJlYWRvbmx5IGJ1c3kkID0gdGhpcy4jcHJveHkudmFsdWUkLnBpcGUoXG4gICAgICAgIHN3aXRjaE1hcCh2YWx1ZSA9PiB2YWx1ZS5idXN5JCksXG4gICAgICAgIHNoYXJlUmVwbGF5KDEpXG4gICAgKVxuXG4gICAgY29uc3RydWN0b3IoKSB7XG4gICAgICAgIHRoaXMuI2J1c3kuY29ubmVjdCh0aGlzLmJ1c3kkKS5waXBlKHRha2VVbnRpbERlc3Ryb3llZCgpKS5zdWJzY3JpYmUoKVxuICAgIH1cbn1cblxuZnVuY3Rpb24gY29lcmNlRGF0YVNvdXJjZTxUIGV4dGVuZHMgTW9kZWw+KHZhbHVlOiBEYXRhU291cmNlUHJveHlJbnB1dDxUPik6IE9ic2VydmFibGU8RGF0YVNvdXJjZTxUPj4ge1xuICAgIGlmICh2YWx1ZSBpbnN0YW5jZW9mIERhdGFTb3VyY2VQcm94eSkge1xuICAgICAgICByZXR1cm4gdmFsdWUudmFsdWUkXG4gICAgfSBlbHNlIGlmICh2YWx1ZSBpbnN0YW5jZW9mIERhdGFTb3VyY2UpIHtcbiAgICAgICAgcmV0dXJuIG9mKHZhbHVlKVxuICAgIH0gZWxzZSBpZiAodmFsdWUgaW5zdGFuY2VvZiBEYXRhUHJvdmlkZXIpIHtcbiAgICAgICAgcmV0dXJuIG9mKHZhbHVlLnRvRGF0YVNvdXJjZSgpKVxuICAgIH0gZWxzZSB7XG4gICAgICAgIHJldHVybiB0aHJvd0Vycm9yKCgpID0+IG5ldyBFcnJvcihcIkludmFsaWQgRGF0YVNvdXJjZSB2YWx1ZVwiKSlcbiAgICB9XG59XG4iXX0=