@dereekb/dbx-web 9.20.19 → 9.21.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.
Files changed (98) hide show
  1. package/calendar/package.json +2 -2
  2. package/esm2020/lib/layout/content/content.layout.module.mjs +31 -4
  3. package/esm2020/lib/layout/content/content.pit.directive.mjs +19 -0
  4. package/esm2020/lib/layout/content/index.mjs +2 -1
  5. package/esm2020/lib/layout/list/list.wrapper.mjs +1 -1
  6. package/esm2020/table/dereekb-dbx-web-table.mjs +5 -0
  7. package/esm2020/table/index.mjs +2 -0
  8. package/esm2020/table/lib/date/date.table.column.header.component.mjs +49 -0
  9. package/esm2020/table/lib/date/daterange.table.cell.input.component.mjs +166 -0
  10. package/esm2020/table/lib/date/index.mjs +4 -0
  11. package/esm2020/table/lib/date/table.date.module.mjs +68 -0
  12. package/esm2020/table/lib/index.mjs +18 -0
  13. package/esm2020/table/lib/table.cell.action.component.mjs +28 -0
  14. package/esm2020/table/lib/table.cell.input.component.mjs +31 -0
  15. package/esm2020/table/lib/table.cell.summaryend.component.mjs +28 -0
  16. package/esm2020/table/lib/table.cell.summarystart.component.mjs +31 -0
  17. package/esm2020/table/lib/table.column.directive.mjs +30 -0
  18. package/esm2020/table/lib/table.column.footer.component.mjs +35 -0
  19. package/esm2020/table/lib/table.column.header.component.mjs +35 -0
  20. package/esm2020/table/lib/table.component.mjs +59 -0
  21. package/esm2020/table/lib/table.directive.mjs +37 -0
  22. package/esm2020/table/lib/table.item.action.component.mjs +35 -0
  23. package/esm2020/table/lib/table.item.cell.component.mjs +39 -0
  24. package/esm2020/table/lib/table.item.directive.mjs +30 -0
  25. package/esm2020/table/lib/table.item.header.component.mjs +27 -0
  26. package/esm2020/table/lib/table.mjs +2 -0
  27. package/esm2020/table/lib/table.module.mjs +74 -0
  28. package/esm2020/table/lib/table.store.mjs +53 -0
  29. package/fesm2015/dereekb-dbx-web-table.mjs +746 -0
  30. package/fesm2015/dereekb-dbx-web-table.mjs.map +1 -0
  31. package/fesm2015/dereekb-dbx-web.mjs +58 -13
  32. package/fesm2015/dereekb-dbx-web.mjs.map +1 -1
  33. package/fesm2020/dereekb-dbx-web-table.mjs +739 -0
  34. package/fesm2020/dereekb-dbx-web-table.mjs.map +1 -0
  35. package/fesm2020/dereekb-dbx-web.mjs +56 -13
  36. package/fesm2020/dereekb-dbx-web.mjs.map +1 -1
  37. package/lib/extension/_extension.scss +19 -0
  38. package/lib/extension/table/_table.scss +60 -0
  39. package/lib/layout/content/_content.scss +14 -0
  40. package/lib/layout/content/content.layout.module.d.ts +3 -2
  41. package/lib/layout/content/content.pit.directive.d.ts +8 -0
  42. package/lib/layout/content/index.d.ts +1 -0
  43. package/lib/layout/list/list.wrapper.d.ts +2 -1
  44. package/lib/layout/style/_style.scss +4 -0
  45. package/lib/style/_config.scss +8 -2
  46. package/mapbox/package.json +3 -3
  47. package/package.json +14 -6
  48. package/table/README.md +6 -0
  49. package/table/esm2020/dereekb-dbx-web-table.mjs +5 -0
  50. package/table/esm2020/index.mjs +2 -0
  51. package/table/esm2020/lib/date/date.table.column.header.component.mjs +49 -0
  52. package/table/esm2020/lib/date/daterange.table.cell.input.component.mjs +166 -0
  53. package/table/esm2020/lib/date/index.mjs +4 -0
  54. package/table/esm2020/lib/date/table.date.module.mjs +68 -0
  55. package/table/esm2020/lib/index.mjs +18 -0
  56. package/table/esm2020/lib/table.cell.action.component.mjs +28 -0
  57. package/table/esm2020/lib/table.cell.input.component.mjs +31 -0
  58. package/table/esm2020/lib/table.cell.summaryend.component.mjs +28 -0
  59. package/table/esm2020/lib/table.cell.summarystart.component.mjs +31 -0
  60. package/table/esm2020/lib/table.column.directive.mjs +30 -0
  61. package/table/esm2020/lib/table.column.footer.component.mjs +35 -0
  62. package/table/esm2020/lib/table.column.header.component.mjs +35 -0
  63. package/table/esm2020/lib/table.component.mjs +59 -0
  64. package/table/esm2020/lib/table.directive.mjs +37 -0
  65. package/table/esm2020/lib/table.item.action.component.mjs +35 -0
  66. package/table/esm2020/lib/table.item.cell.component.mjs +39 -0
  67. package/table/esm2020/lib/table.item.directive.mjs +30 -0
  68. package/table/esm2020/lib/table.item.header.component.mjs +27 -0
  69. package/table/esm2020/lib/table.mjs +2 -0
  70. package/table/esm2020/lib/table.module.mjs +74 -0
  71. package/table/esm2020/lib/table.store.mjs +53 -0
  72. package/table/fesm2015/dereekb-dbx-web-table.mjs +746 -0
  73. package/table/fesm2015/dereekb-dbx-web-table.mjs.map +1 -0
  74. package/table/fesm2020/dereekb-dbx-web-table.mjs +739 -0
  75. package/table/fesm2020/dereekb-dbx-web-table.mjs.map +1 -0
  76. package/table/index.d.ts +1 -0
  77. package/table/lib/date/date.table.column.header.component.d.ts +18 -0
  78. package/table/lib/date/daterange.table.cell.input.component.d.ts +66 -0
  79. package/table/lib/date/index.d.ts +3 -0
  80. package/table/lib/date/table.date.module.d.ts +16 -0
  81. package/table/lib/index.d.ts +17 -0
  82. package/table/lib/table.cell.action.component.d.ts +9 -0
  83. package/table/lib/table.cell.input.component.d.ts +12 -0
  84. package/table/lib/table.cell.summaryend.component.d.ts +9 -0
  85. package/table/lib/table.cell.summarystart.component.d.ts +12 -0
  86. package/table/lib/table.column.directive.d.ts +18 -0
  87. package/table/lib/table.column.footer.component.d.ts +8 -0
  88. package/table/lib/table.column.header.component.d.ts +8 -0
  89. package/table/lib/table.component.d.ts +29 -0
  90. package/table/lib/table.d.ts +99 -0
  91. package/table/lib/table.directive.d.ts +16 -0
  92. package/table/lib/table.item.action.component.d.ts +8 -0
  93. package/table/lib/table.item.cell.component.d.ts +13 -0
  94. package/table/lib/table.item.directive.d.ts +17 -0
  95. package/table/lib/table.item.header.component.d.ts +8 -0
  96. package/table/lib/table.module.d.ts +22 -0
  97. package/table/lib/table.store.d.ts +38 -0
  98. package/table/package.json +35 -0
@@ -0,0 +1,53 @@
1
+ import { Injectable } from '@angular/core';
2
+ import { beginLoading, filterMaybe, valueFromLoadingState } from '@dereekb/rxjs';
3
+ import { ComponentStore } from '@ngrx/component-store';
4
+ import { distinctUntilChanged, first, map, shareReplay, switchMap, tap, combineLatest, of } from 'rxjs';
5
+ import * as i0 from "@angular/core";
6
+ export class DbxTableStore extends ComponentStore {
7
+ constructor() {
8
+ super({
9
+ input: null,
10
+ dataDelegate: null,
11
+ viewDelegate: null
12
+ });
13
+ // MARK: Effects
14
+ this.loadMore = this.effect((input) => {
15
+ return input.pipe(switchMap(() => this.data$.pipe(first(), tap((x) => {
16
+ if (x.loadMore) {
17
+ x.loadMore();
18
+ }
19
+ }))));
20
+ });
21
+ // MARK: Accessors
22
+ this.input$ = this.state$.pipe(map((x) => x.input), distinctUntilChanged(), shareReplay(1));
23
+ this.dataDelegate$ = this.state$.pipe(map((x) => x.dataDelegate), distinctUntilChanged(), shareReplay(1));
24
+ this.currentViewDelegate$ = this.state$.pipe(map((x) => x.viewDelegate), distinctUntilChanged(), shareReplay(1));
25
+ this.viewDelegate$ = this.currentViewDelegate$.pipe(filterMaybe());
26
+ this.dataState$ = combineLatest([this.input$, this.dataDelegate$]).pipe(switchMap(([input, dataDelegate]) => {
27
+ let obs;
28
+ if (input && dataDelegate) {
29
+ obs = dataDelegate.loadData(input);
30
+ }
31
+ else {
32
+ obs = of(beginLoading());
33
+ }
34
+ return obs;
35
+ }), shareReplay(1));
36
+ this.data$ = this.dataState$.pipe(
37
+ //
38
+ valueFromLoadingState(), distinctUntilChanged(), shareReplay(1));
39
+ this.columns$ = this.data$.pipe(map((x) => x.columns), shareReplay(1));
40
+ this.itemsState$ = this.data$.pipe(switchMap((x) => x.items$), shareReplay(1));
41
+ this.items$ = this.itemsState$.pipe(valueFromLoadingState(), shareReplay(1));
42
+ // MARK: State Changes
43
+ this.setInput = this.updater((state, input) => ({ ...state, input }));
44
+ this.setDataDelegate = this.updater((state, dataDelegate) => ({ ...state, dataDelegate }));
45
+ this.setViewDelegate = this.updater((state, viewDelegate) => ({ ...state, viewDelegate }));
46
+ }
47
+ }
48
+ DbxTableStore.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: DbxTableStore, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
49
+ DbxTableStore.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: DbxTableStore });
50
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: DbxTableStore, decorators: [{
51
+ type: Injectable
52
+ }], ctorParameters: function () { return []; } });
53
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibGUuc3RvcmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9kYngtd2ViL3RhYmxlL3NyYy9saWIvdGFibGUuc3RvcmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzQyxPQUFPLEVBQUUsWUFBWSxFQUFFLFdBQVcsRUFBa0YscUJBQXFCLEVBQVUsTUFBTSxlQUFlLENBQUM7QUFFekssT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQ3ZELE9BQU8sRUFBYyxvQkFBb0IsRUFBRSxLQUFLLEVBQUUsR0FBRyxFQUFFLFdBQVcsRUFBRSxTQUFTLEVBQUUsR0FBRyxFQUFFLGFBQWEsRUFBRSxFQUFFLEVBQVMsTUFBTSxNQUFNLENBQUM7O0FBbUIzSCxNQUFNLE9BQU8sYUFBcUQsU0FBUSxjQUEyQztJQUNuSDtRQUNFLEtBQUssQ0FBQztZQUNKLEtBQUssRUFBRSxJQUFJO1lBQ1gsWUFBWSxFQUFFLElBQUk7WUFDbEIsWUFBWSxFQUFFLElBQUk7U0FDbkIsQ0FBQyxDQUFDO1FBR0wsZ0JBQWdCO1FBQ1AsYUFBUSxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxLQUF1QixFQUFFLEVBQUU7WUFDMUQsT0FBTyxLQUFLLENBQUMsSUFBSSxDQUNmLFNBQVMsQ0FBQyxHQUFHLEVBQUUsQ0FDYixJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FDYixLQUFLLEVBQUUsRUFDUCxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRTtnQkFDUixJQUFJLENBQUMsQ0FBQyxRQUFRLEVBQUU7b0JBQ2QsQ0FBQyxDQUFDLFFBQVEsRUFBRSxDQUFDO2lCQUNkO1lBQ0gsQ0FBQyxDQUFDLENBQ0gsQ0FDRixDQUNGLENBQUM7UUFDSixDQUFDLENBQUMsQ0FBQztRQUVILGtCQUFrQjtRQUNULFdBQU0sR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FDaEMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLEVBQ25CLG9CQUFvQixFQUFFLEVBQ3RCLFdBQVcsQ0FBQyxDQUFDLENBQUMsQ0FDZixDQUFDO1FBRU8sa0JBQWEsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FDdkMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsWUFBWSxDQUFDLEVBQzFCLG9CQUFvQixFQUFFLEVBQ3RCLFdBQVcsQ0FBQyxDQUFDLENBQUMsQ0FDZixDQUFDO1FBRU8seUJBQW9CLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQzlDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLFlBQVksQ0FBQyxFQUMxQixvQkFBb0IsRUFBRSxFQUN0QixXQUFXLENBQUMsQ0FBQyxDQUFDLENBQ2YsQ0FBQztRQUVPLGtCQUFhLEdBQUcsSUFBSSxDQUFDLG9CQUFvQixDQUFDLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQyxDQUFDO1FBRTlELGVBQVUsR0FBMkQsYUFBYSxDQUFDLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQ2pJLFNBQVMsQ0FBQyxDQUFDLENBQUMsS0FBSyxFQUFFLFlBQVksQ0FBQyxFQUFFLEVBQUU7WUFDbEMsSUFBSSxHQUEyRCxDQUFDO1lBRWhFLElBQUksS0FBSyxJQUFJLFlBQVksRUFBRTtnQkFDekIsR0FBRyxHQUFHLFlBQVksQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLENBQUM7YUFDcEM7aUJBQU07Z0JBQ0wsR0FBRyxHQUFHLEVBQUUsQ0FBQyxZQUFZLEVBQWdDLENBQUMsQ0FBQzthQUN4RDtZQUVELE9BQU8sR0FBRyxDQUFDO1FBQ2IsQ0FBQyxDQUFDLEVBQ0YsV0FBVyxDQUFDLENBQUMsQ0FBQyxDQUNmLENBQUM7UUFFTyxVQUFLLEdBQTZDLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSTtRQUM3RSxFQUFFO1FBQ0YscUJBQXFCLEVBQUUsRUFDdkIsb0JBQW9CLEVBQUUsRUFDdEIsV0FBVyxDQUFDLENBQUMsQ0FBQyxDQUNmLENBQUM7UUFFTyxhQUFRLEdBQW9DLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUNsRSxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsRUFDckIsV0FBVyxDQUFDLENBQUMsQ0FBQyxDQUNmLENBQUM7UUFFTyxnQkFBVyxHQUF3QyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FDekUsU0FBUyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLEVBQzFCLFdBQVcsQ0FBQyxDQUFDLENBQUMsQ0FDZixDQUFDO1FBRU8sV0FBTSxHQUFvQixJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxxQkFBcUIsRUFBRSxFQUFFLFdBQVcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBRWxHLHNCQUFzQjtRQUNiLGFBQVEsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUMsS0FBSyxFQUFFLEtBQWUsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLEdBQUcsS0FBSyxFQUFFLEtBQUssRUFBRSxDQUFDLENBQUMsQ0FBQztRQUMzRSxvQkFBZSxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQyxLQUFLLEVBQUUsWUFBeUQsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLEdBQUcsS0FBSyxFQUFFLFlBQVksRUFBRSxDQUFDLENBQUMsQ0FBQztRQUNuSSxvQkFBZSxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQyxLQUFLLEVBQUUsWUFBa0QsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLEdBQUcsS0FBSyxFQUFFLFlBQVksRUFBRSxDQUFDLENBQUMsQ0FBQztJQTVFckksQ0FBQzs7MkdBUFUsYUFBYTsrR0FBYixhQUFhOzRGQUFiLGFBQWE7a0JBRHpCLFVBQVUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBiZWdpbkxvYWRpbmcsIGZpbHRlck1heWJlLCBMb2FkaW5nU3RhdGUsIFBhZ2VMaXN0TG9hZGluZ1N0YXRlLCBQYWdlTG9hZGluZ1N0YXRlLCB0YXBPbkxvYWRpbmdTdGF0ZVN1Y2Nlc3MsIHZhbHVlRnJvbUxvYWRpbmdTdGF0ZSwgdGFwTG9nIH0gZnJvbSAnQGRlcmVla2Ivcnhqcyc7XG5pbXBvcnQgeyBNYXliZSB9IGZyb20gJ0BkZXJlZWtiL3V0aWwnO1xuaW1wb3J0IHsgQ29tcG9uZW50U3RvcmUgfSBmcm9tICdAbmdyeC9jb21wb25lbnQtc3RvcmUnO1xuaW1wb3J0IHsgT2JzZXJ2YWJsZSwgZGlzdGluY3RVbnRpbENoYW5nZWQsIGZpcnN0LCBtYXAsIHNoYXJlUmVwbGF5LCBzd2l0Y2hNYXAsIHRhcCwgY29tYmluZUxhdGVzdCwgb2YsIEVNUFRZIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBEYnhUYWJsZUNvbHVtbiwgRGJ4VGFibGVDb250ZXh0RGF0YSwgRGJ4VGFibGVDb250ZXh0RGF0YURlbGVnYXRlLCBEYnhUYWJsZVZpZXdEZWxlZ2F0ZSB9IGZyb20gJy4vdGFibGUnO1xuXG5leHBvcnQgaW50ZXJmYWNlIERieFRhYmxlU3RvcmVTdGF0ZTxJLCBDLCBUPiB7XG4gIC8qKlxuICAgKiBDb250ZXh0dWFsIGlucHV0IHRoYXQgaXMgcGFzc2VkIHRvIHRoZSBkYXRhIGRlbGVnYXRlLlxuICAgKi9cbiAgcmVhZG9ubHkgaW5wdXQ6IE1heWJlPEk+O1xuICAvKipcbiAgICogRGVsZWdhdGUgdXNlZCBmb3IgcmV0cmlldmluZyBpbmZvIGdpdmVuIHRoZSBzZWxlY3Rpb24uXG4gICAqL1xuICByZWFkb25seSBkYXRhRGVsZWdhdGU6IE1heWJlPERieFRhYmxlQ29udGV4dERhdGFEZWxlZ2F0ZTxJLCBDLCBUPj47XG4gIC8qKlxuICAgKiBEZWxlZ2F0ZSB1c2VkIGZvciByZXRyaWV2aW5nIHZpZXcgY29uZmlndXJhdGlvbnMuXG4gICAqL1xuICByZWFkb25seSB2aWV3RGVsZWdhdGU6IE1heWJlPERieFRhYmxlVmlld0RlbGVnYXRlPEksIEMsIFQ+Pjtcbn1cblxuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIERieFRhYmxlU3RvcmU8SSA9IHVua25vd24sIEMgPSB1bmtub3duLCBUID0gdW5rbm93bj4gZXh0ZW5kcyBDb21wb25lbnRTdG9yZTxEYnhUYWJsZVN0b3JlU3RhdGU8SSwgQywgVD4+IHtcbiAgY29uc3RydWN0b3IoKSB7XG4gICAgc3VwZXIoe1xuICAgICAgaW5wdXQ6IG51bGwsXG4gICAgICBkYXRhRGVsZWdhdGU6IG51bGwsXG4gICAgICB2aWV3RGVsZWdhdGU6IG51bGxcbiAgICB9KTtcbiAgfVxuXG4gIC8vIE1BUks6IEVmZmVjdHNcbiAgcmVhZG9ubHkgbG9hZE1vcmUgPSB0aGlzLmVmZmVjdCgoaW5wdXQ6IE9ic2VydmFibGU8dm9pZD4pID0+IHtcbiAgICByZXR1cm4gaW5wdXQucGlwZShcbiAgICAgIHN3aXRjaE1hcCgoKSA9PlxuICAgICAgICB0aGlzLmRhdGEkLnBpcGUoXG4gICAgICAgICAgZmlyc3QoKSxcbiAgICAgICAgICB0YXAoKHgpID0+IHtcbiAgICAgICAgICAgIGlmICh4LmxvYWRNb3JlKSB7XG4gICAgICAgICAgICAgIHgubG9hZE1vcmUoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9KVxuICAgICAgICApXG4gICAgICApXG4gICAgKTtcbiAgfSk7XG5cbiAgLy8gTUFSSzogQWNjZXNzb3JzXG4gIHJlYWRvbmx5IGlucHV0JCA9IHRoaXMuc3RhdGUkLnBpcGUoXG4gICAgbWFwKCh4KSA9PiB4LmlucHV0KSxcbiAgICBkaXN0aW5jdFVudGlsQ2hhbmdlZCgpLFxuICAgIHNoYXJlUmVwbGF5KDEpXG4gICk7XG5cbiAgcmVhZG9ubHkgZGF0YURlbGVnYXRlJCA9IHRoaXMuc3RhdGUkLnBpcGUoXG4gICAgbWFwKCh4KSA9PiB4LmRhdGFEZWxlZ2F0ZSksXG4gICAgZGlzdGluY3RVbnRpbENoYW5nZWQoKSxcbiAgICBzaGFyZVJlcGxheSgxKVxuICApO1xuXG4gIHJlYWRvbmx5IGN1cnJlbnRWaWV3RGVsZWdhdGUkID0gdGhpcy5zdGF0ZSQucGlwZShcbiAgICBtYXAoKHgpID0+IHgudmlld0RlbGVnYXRlKSxcbiAgICBkaXN0aW5jdFVudGlsQ2hhbmdlZCgpLFxuICAgIHNoYXJlUmVwbGF5KDEpXG4gICk7XG5cbiAgcmVhZG9ubHkgdmlld0RlbGVnYXRlJCA9IHRoaXMuY3VycmVudFZpZXdEZWxlZ2F0ZSQucGlwZShmaWx0ZXJNYXliZSgpKTtcblxuICByZWFkb25seSBkYXRhU3RhdGUkOiBPYnNlcnZhYmxlPExvYWRpbmdTdGF0ZTxEYnhUYWJsZUNvbnRleHREYXRhPEksIEMsIFQ+Pj4gPSBjb21iaW5lTGF0ZXN0KFt0aGlzLmlucHV0JCwgdGhpcy5kYXRhRGVsZWdhdGUkXSkucGlwZShcbiAgICBzd2l0Y2hNYXAoKFtpbnB1dCwgZGF0YURlbGVnYXRlXSkgPT4ge1xuICAgICAgbGV0IG9iczogT2JzZXJ2YWJsZTxMb2FkaW5nU3RhdGU8RGJ4VGFibGVDb250ZXh0RGF0YTxJLCBDLCBUPj4+O1xuXG4gICAgICBpZiAoaW5wdXQgJiYgZGF0YURlbGVnYXRlKSB7XG4gICAgICAgIG9icyA9IGRhdGFEZWxlZ2F0ZS5sb2FkRGF0YShpbnB1dCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBvYnMgPSBvZihiZWdpbkxvYWRpbmc8RGJ4VGFibGVDb250ZXh0RGF0YTxJLCBDLCBUPj4oKSk7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBvYnM7XG4gICAgfSksXG4gICAgc2hhcmVSZXBsYXkoMSlcbiAgKTtcblxuICByZWFkb25seSBkYXRhJDogT2JzZXJ2YWJsZTxEYnhUYWJsZUNvbnRleHREYXRhPEksIEMsIFQ+PiA9IHRoaXMuZGF0YVN0YXRlJC5waXBlKFxuICAgIC8vXG4gICAgdmFsdWVGcm9tTG9hZGluZ1N0YXRlKCksXG4gICAgZGlzdGluY3RVbnRpbENoYW5nZWQoKSxcbiAgICBzaGFyZVJlcGxheSgxKVxuICApO1xuXG4gIHJlYWRvbmx5IGNvbHVtbnMkOiBPYnNlcnZhYmxlPERieFRhYmxlQ29sdW1uPEM+W10+ID0gdGhpcy5kYXRhJC5waXBlKFxuICAgIG1hcCgoeCkgPT4geC5jb2x1bW5zKSxcbiAgICBzaGFyZVJlcGxheSgxKVxuICApO1xuXG4gIHJlYWRvbmx5IGl0ZW1zU3RhdGUkOiBPYnNlcnZhYmxlPFBhZ2VMaXN0TG9hZGluZ1N0YXRlPFQ+PiA9IHRoaXMuZGF0YSQucGlwZShcbiAgICBzd2l0Y2hNYXAoKHgpID0+IHguaXRlbXMkKSxcbiAgICBzaGFyZVJlcGxheSgxKVxuICApO1xuXG4gIHJlYWRvbmx5IGl0ZW1zJDogT2JzZXJ2YWJsZTxUW10+ID0gdGhpcy5pdGVtc1N0YXRlJC5waXBlKHZhbHVlRnJvbUxvYWRpbmdTdGF0ZSgpLCBzaGFyZVJlcGxheSgxKSk7XG5cbiAgLy8gTUFSSzogU3RhdGUgQ2hhbmdlc1xuICByZWFkb25seSBzZXRJbnB1dCA9IHRoaXMudXBkYXRlcigoc3RhdGUsIGlucHV0OiBNYXliZTxJPikgPT4gKHsgLi4uc3RhdGUsIGlucHV0IH0pKTtcbiAgcmVhZG9ubHkgc2V0RGF0YURlbGVnYXRlID0gdGhpcy51cGRhdGVyKChzdGF0ZSwgZGF0YURlbGVnYXRlOiBNYXliZTxEYnhUYWJsZUNvbnRleHREYXRhRGVsZWdhdGU8SSwgQywgVD4+KSA9PiAoeyAuLi5zdGF0ZSwgZGF0YURlbGVnYXRlIH0pKTtcbiAgcmVhZG9ubHkgc2V0Vmlld0RlbGVnYXRlID0gdGhpcy51cGRhdGVyKChzdGF0ZSwgdmlld0RlbGVnYXRlOiBNYXliZTxEYnhUYWJsZVZpZXdEZWxlZ2F0ZTxJLCBDLCBUPj4pID0+ICh7IC4uLnN0YXRlLCB2aWV3RGVsZWdhdGUgfSkpO1xufVxuIl19