igniteui-angular 13.1.0-rc.1 → 13.1.0-rc.2

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 (62) hide show
  1. package/esm2020/lib/action-strip/grid-actions/grid-editing-actions.component.mjs +2 -2
  2. package/esm2020/lib/data-operations/pivot-sort-strategy.mjs +44 -0
  3. package/esm2020/lib/data-operations/pivot-strategy.mjs +2 -43
  4. package/esm2020/lib/grids/cell.component.mjs +1 -2
  5. package/esm2020/lib/grids/common/grid.interface.mjs +1 -1
  6. package/esm2020/lib/grids/filtering/excel-style/excel-style-search.component.mjs +6 -3
  7. package/esm2020/lib/grids/grid-base.directive.mjs +11 -11
  8. package/esm2020/lib/grids/hierarchical-grid/hierarchical-cell.component.mjs +2 -2
  9. package/esm2020/lib/grids/hierarchical-grid/hierarchical-grid-api.service.mjs +3 -3
  10. package/esm2020/lib/grids/hierarchical-grid/hierarchical-grid-base.directive.mjs +10 -10
  11. package/esm2020/lib/grids/hierarchical-grid/hierarchical-grid-navigation.service.mjs +3 -3
  12. package/esm2020/lib/grids/hierarchical-grid/hierarchical-grid.component.mjs +31 -30
  13. package/esm2020/lib/grids/hierarchical-grid/hierarchical-grid.module.mjs +1 -1
  14. package/esm2020/lib/grids/hierarchical-grid/hierarchical-row.component.mjs +2 -2
  15. package/esm2020/lib/grids/hierarchical-grid/row-island.component.mjs +12 -13
  16. package/esm2020/lib/grids/pivot-grid/pivot-data-selector.component.mjs +2 -5
  17. package/esm2020/lib/grids/pivot-grid/pivot-grid-dimensions.mjs +2 -2
  18. package/esm2020/lib/grids/pivot-grid/pivot-grid.component.mjs +13 -13
  19. package/esm2020/lib/grids/pivot-grid/pivot-grid.pipes.mjs +7 -9
  20. package/esm2020/lib/grids/pivot-grid/pivot-header-row.component.mjs +6 -9
  21. package/esm2020/lib/grids/pivot-grid/pivot-row-dimension-content.component.mjs +9 -10
  22. package/esm2020/lib/grids/pivot-grid/pivot-row-dimension-header-group.component.mjs +1 -1
  23. package/esm2020/lib/grids/pivot-grid/pivot-row.component.mjs +1 -1
  24. package/esm2020/lib/grids/pivot-grid/pivot-sort-util.mjs +26 -0
  25. package/esm2020/lib/grids/pivot-grid/pivot-util.mjs +1 -23
  26. package/esm2020/lib/grids/resizing/pivot-grid/pivot-resize-handle.directive.mjs +1 -1
  27. package/esm2020/lib/grids/resizing/resize-handle.directive.mjs +1 -1
  28. package/esm2020/lib/grids/resizing/resizer.component.mjs +1 -1
  29. package/esm2020/lib/grids/resizing/resizing.service.mjs +1 -1
  30. package/esm2020/lib/grids/row.directive.mjs +1 -1
  31. package/esm2020/lib/grids/state.directive.mjs +2 -2
  32. package/esm2020/lib/grids/toolbar/grid-toolbar.base.mjs +1 -1
  33. package/esm2020/lib/grids/tree-grid/tree-grid.component.mjs +5 -7
  34. package/esm2020/lib/progressbar/progressbar.component.mjs +1 -2
  35. package/esm2020/lib/services/exporter-common/base-export-service.mjs +3 -3
  36. package/esm2020/public_api.mjs +2 -1
  37. package/fesm2015/igniteui-angular.mjs +276 -290
  38. package/fesm2015/igniteui-angular.mjs.map +1 -1
  39. package/fesm2020/igniteui-angular.mjs +276 -289
  40. package/fesm2020/igniteui-angular.mjs.map +1 -1
  41. package/lib/data-operations/pivot-sort-strategy.d.ts +16 -0
  42. package/lib/data-operations/pivot-strategy.d.ts +0 -14
  43. package/lib/grids/cell.component.d.ts +2 -2
  44. package/lib/grids/common/grid.interface.d.ts +3 -3
  45. package/lib/grids/grid-base.directive.d.ts +6 -7
  46. package/lib/grids/hierarchical-grid/hierarchical-grid-api.service.d.ts +1 -1
  47. package/lib/grids/hierarchical-grid/hierarchical-grid-base.directive.d.ts +4 -8
  48. package/lib/grids/hierarchical-grid/hierarchical-grid.component.d.ts +11 -6
  49. package/lib/grids/hierarchical-grid/row-island.component.d.ts +5 -5
  50. package/lib/grids/pivot-grid/pivot-grid-dimensions.d.ts +1 -1
  51. package/lib/grids/pivot-grid/pivot-grid.component.d.ts +4 -2
  52. package/lib/grids/pivot-grid/pivot-grid.pipes.d.ts +2 -2
  53. package/lib/grids/pivot-grid/pivot-header-row.component.d.ts +1 -1
  54. package/lib/grids/pivot-grid/pivot-row-dimension-content.component.d.ts +6 -6
  55. package/lib/grids/pivot-grid/pivot-sort-util.d.ts +5 -0
  56. package/lib/grids/pivot-grid/pivot-util.d.ts +0 -1
  57. package/lib/grids/row.directive.d.ts +3 -3
  58. package/lib/grids/tree-grid/tree-grid.component.d.ts +2 -4
  59. package/lib/progressbar/progressbar.component.d.ts +1 -1
  60. package/package.json +1 -1
  61. package/public_api.d.ts +1 -0
  62. package/schematics/tsconfig.tsbuildinfo +1 -1
@@ -91,7 +91,7 @@ export class IgxGridEditingActionsComponent extends IgxGridActionsBaseDirective
91
91
  // be sure row is in view
92
92
  if (grid.rowList.filter(r => r === row).length !== 0) {
93
93
  grid.gridAPI.crudService.enterEditMode(firstEditable, event);
94
- firstEditable.activate();
94
+ firstEditable.activate(event);
95
95
  }
96
96
  this.strip.hide();
97
97
  }
@@ -153,4 +153,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.2", ngImpor
153
153
  }], addChild: [{
154
154
  type: Input
155
155
  }] } });
156
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ3JpZC1lZGl0aW5nLWFjdGlvbnMuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvaWduaXRldWktYW5ndWxhci9zcmMvbGliL2FjdGlvbi1zdHJpcC9ncmlkLWFjdGlvbnMvZ3JpZC1lZGl0aW5nLWFjdGlvbnMuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvaWduaXRldWktYW5ndWxhci9zcmMvbGliL2FjdGlvbi1zdHJpcC9ncmlkLWFjdGlvbnMvZ3JpZC1lZGl0aW5nLWFjdGlvbnMuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxXQUFXLEVBQUUsS0FBSyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzlELE9BQU8sRUFBRSwyQkFBMkIsRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBQzVFLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUMvQyxPQUFPLEVBQUUsTUFBTSxFQUFFLFFBQVEsRUFBRyxNQUFNLG1DQUFtQyxDQUFDOzs7O0FBUXRFLE1BQU0sT0FBTyw4QkFBK0IsU0FBUSwyQkFBMkI7SUFOL0U7O1FBUUk7Ozs7O1dBS0c7UUFFSSxhQUFRLEdBQUcsbUNBQW1DLENBQUM7UUFrRHREOztXQUVHO1FBRUksYUFBUSxHQUFHLEtBQUssQ0FBQztRQUVoQixtQkFBYyxHQUFHLEtBQUssQ0FBQztRQUN2QixZQUFPLEdBQUcsS0FBSyxDQUFDO1FBQ2hCLGtCQUFhLEdBQUcsS0FBSyxDQUFDO0tBaUZqQztJQXpJRzs7T0FFRztJQUNILElBQ1csTUFBTSxDQUFDLEtBQWM7UUFDNUIsSUFBSSxDQUFDLE9BQU8sR0FBRyxLQUFLLENBQUM7SUFDekIsQ0FBQztJQUNELElBQVcsTUFBTTtRQUNiLElBQUksQ0FBQyxJQUFJLENBQUMsYUFBYSxFQUFFO1lBQ3JCLElBQUksQ0FBQyxh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QkFBMkIsRUFBRSxXQUFXLGdDQUFnQyxFQUFFLENBQUM7OEJBWTNGLFFBQVE7c0JBRGQsV0FBVzt1QkFBQyx5Q0FBeUM7Z0JBTzNDLE1BQU07c0JBRGhCLEtBQUs7Z0JBaURDLFFBQVE7c0JBRGQsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgSG9zdEJpbmRpbmcsIElucHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBJZ3hHcmlkQWN0aW9uc0Jhc2VEaXJlY3RpdmUgfSBmcm9tICcuL2dyaWQtYWN0aW9ucy1iYXNlLmRpcmVjdGl2ZSc7XG5pbXBvcnQgeyBzaG93TWVzc2FnZSB9IGZyb20gJy4uLy4uL2NvcmUvdXRpbHMnO1xuaW1wb3J0IHsgYWRkUm93LCBhZGRDaGlsZCAgfSBmcm9tICdAaWduaXRldWkvbWF0ZXJpYWwtaWNvbnMtZXh0ZW5kZWQnO1xuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ2lneC1ncmlkLWVkaXRpbmctYWN0aW9ucycsXG4gICAgdGVtcGxhdGVVcmw6ICdncmlkLWVkaXRpbmctYWN0aW9ucy5jb21wb25lbnQuaHRtbCcsXG4gICAgcHJvdmlkZXJzOiBbeyBwcm92aWRlOiBJZ3hHcmlkQWN0aW9uc0Jhc2VEaXJlY3RpdmUsIHVzZUV4aXN0aW5nOiBJZ3hHcmlkRWRpdGluZ0FjdGlvbnNDb21wb25lbnQgfV1cbn0pXG5cbmV4cG9ydCBjbGFzcyBJZ3hHcmlkRWRpdGluZ0FjdGlvbnNDb21wb25lbnQgZXh0ZW5kcyBJZ3hHcmlkQWN0aW9uc0Jhc2VEaXJlY3RpdmUge1xuXG4gICAgLyoqXG4gICAgICogSG9zdCBgY2xhc3MuaWd4LWFjdGlvbi1zdHJpcGAgYmluZGluZy5cbiAgICAgKlxuICAgICAqIEBoaWRkZW5cbiAgICAgKiBAaW50ZXJuYWxcbiAgICAgKi9cbiAgICBASG9zdEJpbmRpbmcoJ2NsYXNzLmlneC1hY3Rpb24tc3RyaXBfX2VkaXRpbmctYWN0aW9ucycpXG4gICAgcHVibGljIGNzc0NsYXNzID0gJ2lneC1hY3Rpb24tc3RyaXBfX2VkaXRpbmctYWN0aW9ucyc7XG5cbiAgICAvKipcbiAgICAgKiBBbiBpbnB1dCB0byBlbmFibGUvZGlzYWJsZSBhY3Rpb24gc3RyaXAgcm93IGFkZGluZyBidXR0b25cbiAgICAgKi9cbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBzZXQgYWRkUm93KHZhbHVlOiBib29sZWFuKSB7XG4gICAgICAgIHRoaXMuX2FkZFJvdyA9IHZhbHVlO1xuICAgIH1cbiAgICBwdWJsaWMgZ2V0IGFkZFJvdygpOiBib29sZWFuIHtcbiAgICAgICAgaWYgKCF0aGlzLmljb25zUmVuZGVyZWQpIHtcbiAgICAgICAgICAgIHRoaXMucmVnaXN0ZXJJY29ucygpO1xuICAgICAgICAgICAgdGhpcy5pY29uc1JlbmRlcmVkID0gdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdGhpcy5fYWRkUm93O1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEdldHRlciBpZiB0aGUgcm93IGlzIGRpc2FibGVkXG4gICAgICpcbiAgICAgKiBAaGlkZGVuXG4gICAgICogQGludGVybmFsXG4gICAgICovXG4gICAgcHVibGljIGdldCBkaXNhYmxlZCgpOiBib29sZWFuIHtcbiAgICAgICAgaWYgKCF0aGlzLmlzUm93KHRoaXMuc3RyaXAuY29udGV4dCkpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdGhpcy5zdHJpcC5jb250ZXh0LmRpc2FibGVkO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEdldHRlciBpZiB0aGUgcm93IGlzIHJvb3QuXG4gICAgICpcbiAgICAgKiBAaGlkZGVuXG4gICAgICogQGludGVybmFsXG4gICAgICovXG4gICAgcHVibGljIGdldCBpc1Jvb3RSb3coKTogYm9vbGVhbiB7XG4gICAgICAgIGlmICghdGhpcy5pc1Jvdyh0aGlzLnN0cmlwLmNvbnRleHQpKSB7XG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRoaXMuc3RyaXAuY29udGV4dC5pc1Jvb3Q7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCBoYXNDaGlsZHJlbigpOiBib29sZWFuIHtcbiAgICAgICAgaWYgKCF0aGlzLmlzUm93KHRoaXMuc3RyaXAuY29udGV4dCkpIHtcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdGhpcy5zdHJpcC5jb250ZXh0Lmhhc0NoaWxkcmVuO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEFuIGlucHV0IHRvIGVuYWJsZS9kaXNhYmxlIGFjdGlvbiBzdHJpcCBjaGlsZCByb3cgYWRkaW5nIGJ1dHRvblxuICAgICAqL1xuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIGFkZENoaWxkID0gZmFsc2U7XG5cbiAgICBwcml2YXRlIGlzTWVzc2FnZVNob3duID0gZmFsc2U7XG4gICAgcHJpdmF0ZSBfYWRkUm93ID0gZmFsc2U7XG4gICAgcHJpdmF0ZSBpY29uc1JlbmRlcmVkID0gZmFsc2U7XG5cbiAgICAvKipcbiAgICAgKiBFbnRlciByb3cgb3IgY2VsbCBlZGl0IG1vZGUgZGVwZW5kaW5nIHRoZSBncmlkIHJvd0VkaXRhYmxlIG9wdGlvblxuICAgICAqXG4gICAgICogQGV4YW1wbGVcbiAgICAgKiBgYGB0eXBlc2NyaXB0XG4gICAgICogdGhpcy5ncmlkRWRpdGluZ0FjdGlvbnMuc3RhcnRFZGl0KCk7XG4gICAgICogYGBgXG4gICAgICovXG4gICAgcHVibGljIHN0YXJ0RWRpdChldmVudD8pOiB2b2lkIHtcbiAgICAgICAgaWYgKGV2ZW50KSB7XG4gICAgICAgICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoIXRoaXMuaXNSb3codGhpcy5zdHJpcC5jb250ZXh0KSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IHJvdyA9IHRoaXMuc3RyaXAuY29udGV4dDtcbiAgICAgICAgY29uc3QgZmlyc3RFZGl0YWJsZSA9IHJvdy5jZWxscy5maWx0ZXIoY2VsbCA9PiBjZWxsLmVkaXRhYmxlKVswXTtcbiAgICAgICAgY29uc3QgZ3JpZCA9IHJvdy5ncmlkO1xuICAgICAgICBpZiAoIWdyaWQuaGFzRWRpdGFibGVDb2x1bW5zKSB7XG4gICAgICAgICAgICB0aGlzLmlzTWVzc2FnZVNob3duID0gc2hvd01lc3NhZ2UoXG4gICAgICAgICAgICAgICAgJ1RoZSBncmlkIHNob3VsZCBiZSBlZGl0YWJsZSBpbiBvcmRlciB0byB1c2UgSWd4R3JpZEVkaXRpbmdBY3Rpb25zQ29tcG9uZW50JyxcbiAgICAgICAgICAgICAgICB0aGlzLmlzTWVzc2FnZVNob3duKTtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgLy8gYmUgc3VyZSByb3cgaXMgaW4gdmlld1xuICAgICAgICBpZiAoZ3JpZC5yb3dMaXN0LmZpbHRlcihyID0+IHIgPT09IHJvdykubGVuZ3RoICE9PSAwKSB7XG4gICAgICAgICAgICBncmlkLmdyaWRBUEkuY3J1ZFNlcnZpY2UuZW50ZXJFZGl0TW9kZShmaXJzdEVkaXRhYmxlLCBldmVudCk7XG4gICAgICAgICAgICBmaXJzdEVkaXRhYmxlLmFjdGl2YXRlKCk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5zdHJpcC5oaWRlKCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogRGVsZXRlIGEgcm93IGFjY29yZGluZyB0byB0aGUgY29udGV4dFxuICAgICAqXG4gICAgICogQGV4YW1wbGVcbiAgICAgKiBgYGB0eXBlc2NyaXB0XG4gICAgICogdGhpcy5ncmlkRWRpdGluZ0FjdGlvbnMuZGVsZXRlUm93KCk7XG4gICAgICogYGBgXG4gICAgICovXG4gICAgcHVibGljIGRlbGV0ZVJvdyhldmVudD8pOiB2b2lkIHtcbiAgICAgICAgaWYgKGV2ZW50KSB7XG4gICAgICAgICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoIXRoaXMuaXNSb3codGhpcy5zdHJpcC5jb250ZXh0KSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IGNvbnRleHQgPSB0aGlzLnN0cmlwLmNvbnRleHQ7XG4gICAgICAgIGNvbnN0IGdyaWQgPSBjb250ZXh0LmdyaWQ7XG4gICAgICAgIGdyaWQuZGVsZXRlUm93KGNvbnRleHQua2V5KTtcblxuICAgICAgICB0aGlzLnN0cmlwLmhpZGUoKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYWRkUm93SGFuZGxlcihldmVudD8sIGFzQ2hpbGQ/OiBib29sZWFuKTogdm9pZCB7XG4gICAgICAgIGlmIChldmVudCkge1xuICAgICAgICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKCF0aGlzLmlzUm93KHRoaXMuc3RyaXAuY29udGV4dCkpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBjb250ZXh0ID0gdGhpcy5zdHJpcC5jb250ZXh0O1xuICAgICAgICBjb25zdCBncmlkID0gY29udGV4dC5ncmlkO1xuICAgICAgICBpZiAoIWdyaWQucm93RWRpdGFibGUpIHtcbiAgICAgICAgICAgIGNvbnNvbGUud2FybignVGhlIGdyaWQgbXVzdCB1c2Ugcm93IGVkaXQgbW9kZSB0byBwZXJmb3JtIHJvdyBhZGRpbmchIFBsZWFzZSBzZXQgcm93RWRpdGFibGUgdG8gdHJ1ZS4nKTtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBncmlkLmdyaWRBUEkuY3J1ZFNlcnZpY2UuZW50ZXJBZGRSb3dNb2RlKGNvbnRleHQsIGFzQ2hpbGQsIGV2ZW50KTtcbiAgICAgICAgdGhpcy5zdHJpcC5oaWRlKCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQGhpZGRlblxuICAgICAqIEBpbnRlcm5hbFxuICAgICAqL1xuICAgIHByaXZhdGUgcmVnaXN0ZXJJY29ucygpIHtcbiAgICAgICAgdGhpcy5pY29uU2VydmljZS5hZGRTdmdJY29uRnJvbVRleHQoYWRkUm93Lm5hbWUsIGFkZFJvdy52YWx1ZSwgJ2lteC1pY29ucycsIHRydWUsKTtcbiAgICAgICAgdGhpcy5pY29uU2VydmljZS5hZGRTdmdJY29uRnJvbVRleHQoYWRkQ2hpbGQubmFtZSwgYWRkQ2hpbGQudmFsdWUsICdpbXgtaWNvbnMnLCB0cnVlKTtcbiAgICB9XG59XG4iLCJcbjxuZy1jb250YWluZXIgKm5nSWY9XCJpc1Jvd0NvbnRleHRcIj5cbiAgICA8aWd4LWdyaWQtYWN0aW9uLWJ1dHRvbiAqbmdJZj1cIiFkaXNhYmxlZFwiIFthc01lbnVJdGVtXT1cImFzTWVudUl0ZW1zXCIgaWNvbk5hbWU9XCJlZGl0XCIgW2xhYmVsVGV4dF09XCJncmlkLnJlc291cmNlU3RyaW5ncy5pZ3hfZ3JpZF9hY3Rpb25zX2VkaXRfbGFiZWxcIiAoYWN0aW9uQ2xpY2spPVwic3RhcnRFZGl0KCRldmVudClcIj48L2lneC1ncmlkLWFjdGlvbi1idXR0b24+XG4gICAgPGlneC1ncmlkLWFjdGlvbi1idXR0b24gKm5nSWY9XCJhZGRSb3cgJiYgaXNSb290Um93XCIgW2FzTWVudUl0ZW1dPVwiYXNNZW51SXRlbXNcIiBpY29uTmFtZT1cImFkZC1yb3dcIiBpY29uU2V0PVwiaW14LWljb25zXCIgW2xhYmVsVGV4dF09XCJncmlkLnJlc291cmNlU3RyaW5ncy5pZ3hfZ3JpZF9hY3Rpb25zX2FkZF9sYWJlbFwiIChhY3Rpb25DbGljayk9XCJhZGRSb3dIYW5kbGVyKCRldmVudClcIj48L2lneC1ncmlkLWFjdGlvbi1idXR0b24+XG4gICAgPGlneC1ncmlkLWFjdGlvbi1idXR0b24gKm5nSWY9XCJhZGRDaGlsZCAmJiBoYXNDaGlsZHJlblwiIFthc01lbnVJdGVtXT1cImFzTWVudUl0ZW1zXCIgaWNvbk5hbWU9XCJhZGQtY2hpbGRcIiBpY29uU2V0PVwiaW14LWljb25zXCIgW2xhYmVsVGV4dF09XCJncmlkLnJlc291cmNlU3RyaW5ncy5pZ3hfZ3JpZF9hY3Rpb25zX2FkZF9jaGlsZF9sYWJlbFwiIChhY3Rpb25DbGljayk9XCJhZGRSb3dIYW5kbGVyKCRldmVudCwgdHJ1ZSlcIj48L2lneC1ncmlkLWFjdGlvbi1idXR0b24+XG4gICAgPGlneC1ncmlkLWFjdGlvbi1idXR0b24gKm5nSWY9XCIhZGlzYWJsZWRcIiBjbGFzcz1cImlneC1hY3Rpb24tc3RyaXBfX2RlbGV0ZVwiIGNsYXNzTmFtZXM9J2lneC1hY3Rpb24tc3RyaXBfX21lbnUtaXRlbS0tZGFuZ2VyJyBbYXNNZW51SXRlbV09XCJhc01lbnVJdGVtc1wiIGljb25OYW1lPVwiZGVsZXRlXCIgW2xhYmVsVGV4dF09XCJncmlkLnJlc291cmNlU3RyaW5ncy5pZ3hfZ3JpZF9hY3Rpb25zX2RlbGV0ZV9sYWJlbFwiIChhY3Rpb25DbGljayk9XCJkZWxldGVSb3coJGV2ZW50KVwiPjwvaWd4LWdyaWQtYWN0aW9uLWJ1dHRvbj5cbjwvbmctY29udGFpbmVyPlxuXG4iXX0=
156
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ3JpZC1lZGl0aW5nLWFjdGlvbnMuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvaWduaXRldWktYW5ndWxhci9zcmMvbGliL2FjdGlvbi1zdHJpcC9ncmlkLWFjdGlvbnMvZ3JpZC1lZGl0aW5nLWFjdGlvbnMuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvaWduaXRldWktYW5ndWxhci9zcmMvbGliL2FjdGlvbi1zdHJpcC9ncmlkLWFjdGlvbnMvZ3JpZC1lZGl0aW5nLWFjdGlvbnMuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxXQUFXLEVBQUUsS0FBSyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzlELE9BQU8sRUFBRSwyQkFBMkIsRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBQzVFLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUMvQyxPQUFPLEVBQUUsTUFBTSxFQUFFLFFBQVEsRUFBRyxNQUFNLG1DQUFtQyxDQUFDOzs7O0FBUXRFLE1BQU0sT0FBTyw4QkFBK0IsU0FBUSwyQkFBMkI7SUFOL0U7O1FBUUk7Ozs7O1dBS0c7UUFFSSxhQUFRLEdBQUcsbUNBQW1DLENBQUM7UUFrRHREOztXQUVHO1FBRUksYUFBUSxHQUFHLEtBQUssQ0FBQztRQUVoQixtQkFBYyxHQUFHLEtBQUssQ0FBQztRQUN2QixZQUFPLEdBQUcsS0FBSyxDQUFDO1FBQ2hCLGtCQUFhLEdBQUcsS0FBSyxDQUFDO0tBaUZqQztJQXpJRzs7T0FFRztJQUNILElBQ1csTUFBTSxDQUFDLEtBQWM7UUFDNUIsSUFBSSxDQUFDLE9BQU8sR0FBRyxLQUFLLENBQUM7SUFDekIsQ0FBQztJQUNELElBQVcsTUFBTTtRQUNiLElBQUksQ0FBQyxJQUFJLENBQUMsYUFBYSxFQUFFO1lBQ3JCLElBQUksQ0FBQyxh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QUFPLEVBQUUsMkJBQTJCLEVBQUUsV0FBVyxnQ0FBZ0MsRUFBRSxDQUFDOzhCQVkzRixRQUFRO3NCQURkLFdBQVc7dUJBQUMseUNBQXlDO2dCQU8zQyxNQUFNO3NCQURoQixLQUFLO2dCQWlEQyxRQUFRO3NCQURkLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIEhvc3RCaW5kaW5nLCBJbnB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgSWd4R3JpZEFjdGlvbnNCYXNlRGlyZWN0aXZlIH0gZnJvbSAnLi9ncmlkLWFjdGlvbnMtYmFzZS5kaXJlY3RpdmUnO1xuaW1wb3J0IHsgc2hvd01lc3NhZ2UgfSBmcm9tICcuLi8uLi9jb3JlL3V0aWxzJztcbmltcG9ydCB7IGFkZFJvdywgYWRkQ2hpbGQgIH0gZnJvbSAnQGlnbml0ZXVpL21hdGVyaWFsLWljb25zLWV4dGVuZGVkJztcblxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICdpZ3gtZ3JpZC1lZGl0aW5nLWFjdGlvbnMnLFxuICAgIHRlbXBsYXRlVXJsOiAnZ3JpZC1lZGl0aW5nLWFjdGlvbnMuY29tcG9uZW50Lmh0bWwnLFxuICAgIHByb3ZpZGVyczogW3sgcHJvdmlkZTogSWd4R3JpZEFjdGlvbnNCYXNlRGlyZWN0aXZlLCB1c2VFeGlzdGluZzogSWd4R3JpZEVkaXRpbmdBY3Rpb25zQ29tcG9uZW50IH1dXG59KVxuXG5leHBvcnQgY2xhc3MgSWd4R3JpZEVkaXRpbmdBY3Rpb25zQ29tcG9uZW50IGV4dGVuZHMgSWd4R3JpZEFjdGlvbnNCYXNlRGlyZWN0aXZlIHtcblxuICAgIC8qKlxuICAgICAqIEhvc3QgYGNsYXNzLmlneC1hY3Rpb24tc3RyaXBgIGJpbmRpbmcuXG4gICAgICpcbiAgICAgKiBAaGlkZGVuXG4gICAgICogQGludGVybmFsXG4gICAgICovXG4gICAgQEhvc3RCaW5kaW5nKCdjbGFzcy5pZ3gtYWN0aW9uLXN0cmlwX19lZGl0aW5nLWFjdGlvbnMnKVxuICAgIHB1YmxpYyBjc3NDbGFzcyA9ICdpZ3gtYWN0aW9uLXN0cmlwX19lZGl0aW5nLWFjdGlvbnMnO1xuXG4gICAgLyoqXG4gICAgICogQW4gaW5wdXQgdG8gZW5hYmxlL2Rpc2FibGUgYWN0aW9uIHN0cmlwIHJvdyBhZGRpbmcgYnV0dG9uXG4gICAgICovXG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgc2V0IGFkZFJvdyh2YWx1ZTogYm9vbGVhbikge1xuICAgICAgICB0aGlzLl9hZGRSb3cgPSB2YWx1ZTtcbiAgICB9XG4gICAgcHVibGljIGdldCBhZGRSb3coKTogYm9vbGVhbiB7XG4gICAgICAgIGlmICghdGhpcy5pY29uc1JlbmRlcmVkKSB7XG4gICAgICAgICAgICB0aGlzLnJlZ2lzdGVySWNvbnMoKTtcbiAgICAgICAgICAgIHRoaXMuaWNvbnNSZW5kZXJlZCA9IHRydWU7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRoaXMuX2FkZFJvdztcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBHZXR0ZXIgaWYgdGhlIHJvdyBpcyBkaXNhYmxlZFxuICAgICAqXG4gICAgICogQGhpZGRlblxuICAgICAqIEBpbnRlcm5hbFxuICAgICAqL1xuICAgIHB1YmxpYyBnZXQgZGlzYWJsZWQoKTogYm9vbGVhbiB7XG4gICAgICAgIGlmICghdGhpcy5pc1Jvdyh0aGlzLnN0cmlwLmNvbnRleHQpKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRoaXMuc3RyaXAuY29udGV4dC5kaXNhYmxlZDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBHZXR0ZXIgaWYgdGhlIHJvdyBpcyByb290LlxuICAgICAqXG4gICAgICogQGhpZGRlblxuICAgICAqIEBpbnRlcm5hbFxuICAgICAqL1xuICAgIHB1YmxpYyBnZXQgaXNSb290Um93KCk6IGJvb2xlYW4ge1xuICAgICAgICBpZiAoIXRoaXMuaXNSb3codGhpcy5zdHJpcC5jb250ZXh0KSkge1xuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0aGlzLnN0cmlwLmNvbnRleHQuaXNSb290O1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgaGFzQ2hpbGRyZW4oKTogYm9vbGVhbiB7XG4gICAgICAgIGlmICghdGhpcy5pc1Jvdyh0aGlzLnN0cmlwLmNvbnRleHQpKSB7XG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRoaXMuc3RyaXAuY29udGV4dC5oYXNDaGlsZHJlbjtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBBbiBpbnB1dCB0byBlbmFibGUvZGlzYWJsZSBhY3Rpb24gc3RyaXAgY2hpbGQgcm93IGFkZGluZyBidXR0b25cbiAgICAgKi9cbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBhZGRDaGlsZCA9IGZhbHNlO1xuXG4gICAgcHJpdmF0ZSBpc01lc3NhZ2VTaG93biA9IGZhbHNlO1xuICAgIHByaXZhdGUgX2FkZFJvdyA9IGZhbHNlO1xuICAgIHByaXZhdGUgaWNvbnNSZW5kZXJlZCA9IGZhbHNlO1xuXG4gICAgLyoqXG4gICAgICogRW50ZXIgcm93IG9yIGNlbGwgZWRpdCBtb2RlIGRlcGVuZGluZyB0aGUgZ3JpZCByb3dFZGl0YWJsZSBvcHRpb25cbiAgICAgKlxuICAgICAqIEBleGFtcGxlXG4gICAgICogYGBgdHlwZXNjcmlwdFxuICAgICAqIHRoaXMuZ3JpZEVkaXRpbmdBY3Rpb25zLnN0YXJ0RWRpdCgpO1xuICAgICAqIGBgYFxuICAgICAqL1xuICAgIHB1YmxpYyBzdGFydEVkaXQoZXZlbnQ/KTogdm9pZCB7XG4gICAgICAgIGlmIChldmVudCkge1xuICAgICAgICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKCF0aGlzLmlzUm93KHRoaXMuc3RyaXAuY29udGV4dCkpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCByb3cgPSB0aGlzLnN0cmlwLmNvbnRleHQ7XG4gICAgICAgIGNvbnN0IGZpcnN0RWRpdGFibGUgPSByb3cuY2VsbHMuZmlsdGVyKGNlbGwgPT4gY2VsbC5lZGl0YWJsZSlbMF07XG4gICAgICAgIGNvbnN0IGdyaWQgPSByb3cuZ3JpZDtcbiAgICAgICAgaWYgKCFncmlkLmhhc0VkaXRhYmxlQ29sdW1ucykge1xuICAgICAgICAgICAgdGhpcy5pc01lc3NhZ2VTaG93biA9IHNob3dNZXNzYWdlKFxuICAgICAgICAgICAgICAgICdUaGUgZ3JpZCBzaG91bGQgYmUgZWRpdGFibGUgaW4gb3JkZXIgdG8gdXNlIElneEdyaWRFZGl0aW5nQWN0aW9uc0NvbXBvbmVudCcsXG4gICAgICAgICAgICAgICAgdGhpcy5pc01lc3NhZ2VTaG93bik7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIC8vIGJlIHN1cmUgcm93IGlzIGluIHZpZXdcbiAgICAgICAgaWYgKGdyaWQucm93TGlzdC5maWx0ZXIociA9PiByID09PSByb3cpLmxlbmd0aCAhPT0gMCkge1xuICAgICAgICAgICAgZ3JpZC5ncmlkQVBJLmNydWRTZXJ2aWNlLmVudGVyRWRpdE1vZGUoZmlyc3RFZGl0YWJsZSwgZXZlbnQpO1xuICAgICAgICAgICAgZmlyc3RFZGl0YWJsZS5hY3RpdmF0ZShldmVudCk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5zdHJpcC5oaWRlKCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogRGVsZXRlIGEgcm93IGFjY29yZGluZyB0byB0aGUgY29udGV4dFxuICAgICAqXG4gICAgICogQGV4YW1wbGVcbiAgICAgKiBgYGB0eXBlc2NyaXB0XG4gICAgICogdGhpcy5ncmlkRWRpdGluZ0FjdGlvbnMuZGVsZXRlUm93KCk7XG4gICAgICogYGBgXG4gICAgICovXG4gICAgcHVibGljIGRlbGV0ZVJvdyhldmVudD8pOiB2b2lkIHtcbiAgICAgICAgaWYgKGV2ZW50KSB7XG4gICAgICAgICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoIXRoaXMuaXNSb3codGhpcy5zdHJpcC5jb250ZXh0KSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IGNvbnRleHQgPSB0aGlzLnN0cmlwLmNvbnRleHQ7XG4gICAgICAgIGNvbnN0IGdyaWQgPSBjb250ZXh0LmdyaWQ7XG4gICAgICAgIGdyaWQuZGVsZXRlUm93KGNvbnRleHQua2V5KTtcblxuICAgICAgICB0aGlzLnN0cmlwLmhpZGUoKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYWRkUm93SGFuZGxlcihldmVudD8sIGFzQ2hpbGQ/OiBib29sZWFuKTogdm9pZCB7XG4gICAgICAgIGlmIChldmVudCkge1xuICAgICAgICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKCF0aGlzLmlzUm93KHRoaXMuc3RyaXAuY29udGV4dCkpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBjb250ZXh0ID0gdGhpcy5zdHJpcC5jb250ZXh0O1xuICAgICAgICBjb25zdCBncmlkID0gY29udGV4dC5ncmlkO1xuICAgICAgICBpZiAoIWdyaWQucm93RWRpdGFibGUpIHtcbiAgICAgICAgICAgIGNvbnNvbGUud2FybignVGhlIGdyaWQgbXVzdCB1c2Ugcm93IGVkaXQgbW9kZSB0byBwZXJmb3JtIHJvdyBhZGRpbmchIFBsZWFzZSBzZXQgcm93RWRpdGFibGUgdG8gdHJ1ZS4nKTtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBncmlkLmdyaWRBUEkuY3J1ZFNlcnZpY2UuZW50ZXJBZGRSb3dNb2RlKGNvbnRleHQsIGFzQ2hpbGQsIGV2ZW50KTtcbiAgICAgICAgdGhpcy5zdHJpcC5oaWRlKCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQGhpZGRlblxuICAgICAqIEBpbnRlcm5hbFxuICAgICAqL1xuICAgIHByaXZhdGUgcmVnaXN0ZXJJY29ucygpIHtcbiAgICAgICAgdGhpcy5pY29uU2VydmljZS5hZGRTdmdJY29uRnJvbVRleHQoYWRkUm93Lm5hbWUsIGFkZFJvdy52YWx1ZSwgJ2lteC1pY29ucycsIHRydWUsKTtcbiAgICAgICAgdGhpcy5pY29uU2VydmljZS5hZGRTdmdJY29uRnJvbVRleHQoYWRkQ2hpbGQubmFtZSwgYWRkQ2hpbGQudmFsdWUsICdpbXgtaWNvbnMnLCB0cnVlKTtcbiAgICB9XG59XG4iLCJcbjxuZy1jb250YWluZXIgKm5nSWY9XCJpc1Jvd0NvbnRleHRcIj5cbiAgICA8aWd4LWdyaWQtYWN0aW9uLWJ1dHRvbiAqbmdJZj1cIiFkaXNhYmxlZFwiIFthc01lbnVJdGVtXT1cImFzTWVudUl0ZW1zXCIgaWNvbk5hbWU9XCJlZGl0XCIgW2xhYmVsVGV4dF09XCJncmlkLnJlc291cmNlU3RyaW5ncy5pZ3hfZ3JpZF9hY3Rpb25zX2VkaXRfbGFiZWxcIiAoYWN0aW9uQ2xpY2spPVwic3RhcnRFZGl0KCRldmVudClcIj48L2lneC1ncmlkLWFjdGlvbi1idXR0b24+XG4gICAgPGlneC1ncmlkLWFjdGlvbi1idXR0b24gKm5nSWY9XCJhZGRSb3cgJiYgaXNSb290Um93XCIgW2FzTWVudUl0ZW1dPVwiYXNNZW51SXRlbXNcIiBpY29uTmFtZT1cImFkZC1yb3dcIiBpY29uU2V0PVwiaW14LWljb25zXCIgW2xhYmVsVGV4dF09XCJncmlkLnJlc291cmNlU3RyaW5ncy5pZ3hfZ3JpZF9hY3Rpb25zX2FkZF9sYWJlbFwiIChhY3Rpb25DbGljayk9XCJhZGRSb3dIYW5kbGVyKCRldmVudClcIj48L2lneC1ncmlkLWFjdGlvbi1idXR0b24+XG4gICAgPGlneC1ncmlkLWFjdGlvbi1idXR0b24gKm5nSWY9XCJhZGRDaGlsZCAmJiBoYXNDaGlsZHJlblwiIFthc01lbnVJdGVtXT1cImFzTWVudUl0ZW1zXCIgaWNvbk5hbWU9XCJhZGQtY2hpbGRcIiBpY29uU2V0PVwiaW14LWljb25zXCIgW2xhYmVsVGV4dF09XCJncmlkLnJlc291cmNlU3RyaW5ncy5pZ3hfZ3JpZF9hY3Rpb25zX2FkZF9jaGlsZF9sYWJlbFwiIChhY3Rpb25DbGljayk9XCJhZGRSb3dIYW5kbGVyKCRldmVudCwgdHJ1ZSlcIj48L2lneC1ncmlkLWFjdGlvbi1idXR0b24+XG4gICAgPGlneC1ncmlkLWFjdGlvbi1idXR0b24gKm5nSWY9XCIhZGlzYWJsZWRcIiBjbGFzcz1cImlneC1hY3Rpb24tc3RyaXBfX2RlbGV0ZVwiIGNsYXNzTmFtZXM9J2lneC1hY3Rpb24tc3RyaXBfX21lbnUtaXRlbS0tZGFuZ2VyJyBbYXNNZW51SXRlbV09XCJhc01lbnVJdGVtc1wiIGljb25OYW1lPVwiZGVsZXRlXCIgW2xhYmVsVGV4dF09XCJncmlkLnJlc291cmNlU3RyaW5ncy5pZ3hfZ3JpZF9hY3Rpb25zX2RlbGV0ZV9sYWJlbFwiIChhY3Rpb25DbGljayk9XCJkZWxldGVSb3coJGV2ZW50KVwiPjwvaWd4LWdyaWQtYWN0aW9uLWJ1dHRvbj5cbjwvbmctY29udGFpbmVyPlxuXG4iXX0=
@@ -0,0 +1,44 @@
1
+ import { parseDate } from '../core/utils';
2
+ import { PivotUtil } from '../grids/pivot-grid/pivot-util';
3
+ import { GridColumnDataType } from './data-util';
4
+ import { DefaultSortingStrategy, SortingDirection } from './sorting-strategy';
5
+ export class DefaultPivotGridRecordSortingStrategy extends DefaultSortingStrategy {
6
+ static instance() {
7
+ return this._instance || (this._instance = new this());
8
+ }
9
+ sort(data, fieldName, dir, ignoreCase, valueResolver, isDate, isTime, grid) {
10
+ const reverse = (dir === SortingDirection.Desc ? -1 : 1);
11
+ const cmpFunc = (obj1, obj2) => this.compareObjects(obj1, obj2, fieldName, reverse, ignoreCase, this.getFieldValue, isDate, isTime);
12
+ return this.arraySort(data, cmpFunc);
13
+ }
14
+ getFieldValue(obj, key, isDate = false, isTime = false) {
15
+ return obj.aggregationValues.get(key);
16
+ }
17
+ }
18
+ DefaultPivotGridRecordSortingStrategy._instance = null;
19
+ export class DefaultPivotSortingStrategy extends DefaultSortingStrategy {
20
+ static instance() {
21
+ return this._instance || (this._instance = new this());
22
+ }
23
+ sort(data, fieldName, dir, ignoreCase, valueResolver, isDate, isTime, grid) {
24
+ const key = fieldName;
25
+ const allDimensions = grid.allDimensions;
26
+ const enabledDimensions = allDimensions.filter(x => x && x.enabled);
27
+ this.dimension = PivotUtil.flatten(enabledDimensions).find(x => x.memberName === key);
28
+ const reverse = (dir === SortingDirection.Desc ? -1 : 1);
29
+ const cmpFunc = (obj1, obj2) => this.compareObjects(obj1, obj2, key, reverse, ignoreCase, this.getFieldValue, isDate, isTime);
30
+ return this.arraySort(data, cmpFunc);
31
+ }
32
+ getFieldValue(obj, key, isDate = false, isTime = false) {
33
+ let resolvedValue = PivotUtil.extractValueFromDimension(this.dimension, obj) || obj[0];
34
+ const formatAsDate = this.dimension.dataType === GridColumnDataType.Date || this.dimension.dataType === GridColumnDataType.DateTime;
35
+ if (formatAsDate) {
36
+ const date = parseDate(resolvedValue);
37
+ resolvedValue = isTime && date ?
38
+ new Date().setHours(date.getHours(), date.getMinutes(), date.getSeconds(), date.getMilliseconds()) : date;
39
+ }
40
+ return resolvedValue;
41
+ }
42
+ }
43
+ DefaultPivotSortingStrategy._instance = null;
44
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGl2b3Qtc29ydC1zdHJhdGVneS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2lnbml0ZXVpLWFuZ3VsYXIvc3JjL2xpYi9kYXRhLW9wZXJhdGlvbnMvcGl2b3Qtc29ydC1zdHJhdGVneS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRzFDLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUMzRCxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFDakQsT0FBTyxFQUFFLHNCQUFzQixFQUFFLGdCQUFnQixFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFFOUUsTUFBTSxPQUFPLHFDQUFzQyxTQUFRLHNCQUFzQjtJQUV0RSxNQUFNLENBQUMsUUFBUTtRQUNsQixPQUFPLElBQUksQ0FBQyxTQUFTLElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUyxHQUFHLElBQUksSUFBSSxFQUFFLENBQUMsQ0FBQztJQUMzRCxDQUFDO0lBQ00sSUFBSSxDQUFDLElBQVcsRUFDbkIsU0FBaUIsRUFDakIsR0FBcUIsRUFDckIsVUFBbUIsRUFDbkIsYUFBK0QsRUFDL0QsTUFBZ0IsRUFDaEIsTUFBZ0IsRUFDaEIsSUFBb0I7UUFDcEIsTUFBTSxPQUFPLEdBQUcsQ0FBQyxHQUFHLEtBQUssZ0JBQWdCLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDekQsTUFBTSxPQUFPLEdBQUcsQ0FBQyxJQUFJLEVBQUUsSUFBSSxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLElBQUksRUFBRSxJQUFJLEVBQUUsU0FBUyxFQUFFLE9BQU8sRUFBRSxVQUFVLEVBQUUsSUFBSSxDQUFDLGFBQWEsRUFBRSxNQUFNLEVBQUUsTUFBTSxDQUFDLENBQUM7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Li9jb3JlL3V0aWxzJztcbmltcG9ydCB7IFBpdm90R3JpZFR5cGUgfSBmcm9tICcuLi9ncmlkcy9jb21tb24vZ3JpZC5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgSVBpdm90R3JpZFJlY29yZCB9IGZyb20gJy4uL2dyaWRzL3Bpdm90LWdyaWQvcGl2b3QtZ3JpZC5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgUGl2b3RVdGlsIH0gZnJvbSAnLi4vZ3JpZHMvcGl2b3QtZ3JpZC9waXZvdC11dGlsJztcbmltcG9ydCB7IEdyaWRDb2x1bW5EYXRhVHlwZSB9IGZyb20gJy4vZGF0YS11dGlsJztcbmltcG9ydCB7IERlZmF1bHRTb3J0aW5nU3RyYXRlZ3ksIFNvcnRpbmdEaXJlY3Rpb24gfSBmcm9tICcuL3NvcnRpbmctc3RyYXRlZ3knO1xuXG5leHBvcnQgY2xhc3MgRGVmYXVsdFBpdm90R3JpZFJlY29yZFNvcnRpbmdTdHJhdGVneSBleHRlbmRzIERlZmF1bHRTb3J0aW5nU3RyYXRlZ3kge1xuICAgIHByb3RlY3RlZCBzdGF0aWMgX2luc3RhbmNlOiBEZWZhdWx0UGl2b3RHcmlkUmVjb3JkU29ydGluZ1N0cmF0ZWd5ID0gbnVsbDtcbiAgICBwdWJsaWMgc3RhdGljIGluc3RhbmNlKCk6IERlZmF1bHRQaXZvdEdyaWRSZWNvcmRTb3J0aW5nU3RyYXRlZ3kge1xuICAgICAgICByZXR1cm4gdGhpcy5faW5zdGFuY2UgfHwgKHRoaXMuX2luc3RhbmNlID0gbmV3IHRoaXMoKSk7XG4gICAgfVxuICAgIHB1YmxpYyBzb3J0KGRhdGE6IGFueVtdLFxuICAgICAgICBmaWVsZE5hbWU6IHN0cmluZyxcbiAgICAgICAgZGlyOiBTb3J0aW5nRGlyZWN0aW9uLFxuICAgICAgICBpZ25vcmVDYXNlOiBib29sZWFuLFxuICAgICAgICB2YWx1ZVJlc29sdmVyOiAob2JqOiBhbnksIGtleTogc3RyaW5nLCBpc0RhdGU/OiBib29sZWFuKSA9PiBhbnksXG4gICAgICAgIGlzRGF0ZT86IGJvb2xlYW4sXG4gICAgICAgIGlzVGltZT86IGJvb2xlYW4sXG4gICAgICAgIGdyaWQ/OiBQaXZvdEdyaWRUeXBlKSB7XG4gICAgICAgIGNvbnN0IHJldmVyc2UgPSAoZGlyID09PSBTb3J0aW5nRGlyZWN0aW9uLkRlc2MgPyAtMSA6IDEpO1xuICAgICAgICBjb25zdCBjbXBGdW5jID0gKG9iajEsIG9iajIpID0+IHRoaXMuY29tcGFyZU9iamVjdHMob2JqMSwgb2JqMiwgZmllbGROYW1lLCByZXZlcnNlLCBpZ25vcmVDYXNlLCB0aGlzLmdldEZpZWxkVmFsdWUsIGlzRGF0ZSwgaXNUaW1lKTtcbiAgICAgICAgcmV0dXJuIHRoaXMuYXJyYXlTb3J0KGRhdGEsIGNtcEZ1bmMpO1xuICAgIH1cblxuICAgIHByb3RlY3RlZCBnZXRGaWVsZFZhbHVlKG9iajogSVBpdm90R3JpZFJlY29yZCwga2V5OiBzdHJpbmcsIGlzRGF0ZTogYm9vbGVhbiA9IGZhbHNlLCBpc1RpbWU6IGJvb2xlYW4gPSBmYWxzZSk6IGFueSB7XG4gICAgICAgIHJldHVybiBvYmouYWdncmVnYXRpb25WYWx1ZXMuZ2V0KGtleSk7XG4gICAgfVxufVxuXG5cbmV4cG9ydCBjbGFzcyBEZWZhdWx0UGl2b3RTb3J0aW5nU3RyYXRlZ3kgZXh0ZW5kcyBEZWZhdWx0U29ydGluZ1N0cmF0ZWd5IHtcbiAgICBwcm90ZWN0ZWQgc3RhdGljIF9pbnN0YW5jZTogRGVmYXVsdFBpdm90U29ydGluZ1N0cmF0ZWd5ID0gbnVsbDtcbiAgICBwcm90ZWN0ZWQgZGltZW5zaW9uO1xuICAgIHB1YmxpYyBzdGF0aWMgaW5zdGFuY2UoKTogRGVmYXVsdFBpdm90U29ydGluZ1N0cmF0ZWd5IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2luc3RhbmNlIHx8ICh0aGlzLl9pbnN0YW5jZSA9IG5ldyB0aGlzKCkpO1xuICAgIH1cbiAgICBwdWJsaWMgc29ydChkYXRhOiBhbnlbXSxcbiAgICAgICAgZmllbGROYW1lOiBzdHJpbmcsXG4gICAgICAgIGRpcjogU29ydGluZ0RpcmVjdGlvbixcbiAgICAgICAgaWdub3JlQ2FzZTogYm9vbGVhbixcbiAgICAgICAgdmFsdWVSZXNvbHZlcjogKG9iajogYW55LCBrZXk6IHN0cmluZywgaXNEYXRlPzogYm9vbGVhbikgPT4gYW55LFxuICAgICAgICBpc0RhdGU/OiBib29sZWFuLFxuICAgICAgICBpc1RpbWU/OiBib29sZWFuLFxuICAgICAgICBncmlkPzogUGl2b3RHcmlkVHlwZSkge1xuICAgICAgICBjb25zdCBrZXkgPSBmaWVsZE5hbWU7XG4gICAgICAgIGNvbnN0IGFsbERpbWVuc2lvbnMgPSBncmlkLmFsbERpbWVuc2lvbnM7XG4gICAgICAgIGNvbnN0IGVuYWJsZWREaW1lbnNpb25zID0gYWxsRGltZW5zaW9ucy5maWx0ZXIoeCA9PiB4ICYmIHguZW5hYmxlZCk7XG4gICAgICAgIHRoaXMuZGltZW5zaW9uID0gUGl2b3RVdGlsLmZsYXR0ZW4oZW5hYmxlZERpbWVuc2lvbnMpLmZpbmQoeCA9PiB4Lm1lbWJlck5hbWUgPT09IGtleSk7XG4gICAgICAgIGNvbnN0IHJldmVyc2UgPSAoZGlyID09PSBTb3J0aW5nRGlyZWN0aW9uLkRlc2MgPyAtMSA6IDEpO1xuICAgICAgICBjb25zdCBjbXBGdW5jID0gKG9iajEsIG9iajIpID0+IHRoaXMuY29tcGFyZU9iamVjdHMob2JqMSwgb2JqMiwga2V5LCByZXZlcnNlLCBpZ25vcmVDYXNlLCB0aGlzLmdldEZpZWxkVmFsdWUsIGlzRGF0ZSwgaXNUaW1lKTtcbiAgICAgICAgcmV0dXJuIHRoaXMuYXJyYXlTb3J0KGRhdGEsIGNtcEZ1bmMpO1xuICAgIH1cblxuICAgIHByb3RlY3RlZCBnZXRGaWVsZFZhbHVlKG9iajogYW55LCBrZXk6IHN0cmluZywgaXNEYXRlOiBib29sZWFuID0gZmFsc2UsIGlzVGltZTogYm9vbGVhbiA9IGZhbHNlKTogYW55IHtcbiAgICAgICAgbGV0IHJlc29sdmVkVmFsdWUgPSBQaXZvdFV0aWwuZXh0cmFjdFZhbHVlRnJvbURpbWVuc2lvbih0aGlzLmRpbWVuc2lvbiwgb2JqKSB8fCBvYmpbMF07XG4gICAgICAgIGNvbnN0IGZvcm1hdEFzRGF0ZSA9IHRoaXMuZGltZW5zaW9uLmRhdGFUeXBlID09PSBHcmlkQ29sdW1uRGF0YVR5cGUuRGF0ZSB8fCB0aGlzLmRpbWVuc2lvbi5kYXRhVHlwZSA9PT0gR3JpZENvbHVtbkRhdGFUeXBlLkRhdGVUaW1lO1xuICAgICAgICBpZiAoZm9ybWF0QXNEYXRlKSB7XG4gICAgICAgICAgICBjb25zdCBkYXRlID0gcGFyc2VEYXRlKHJlc29sdmVkVmFsdWUpO1xuICAgICAgICAgICAgcmVzb2x2ZWRWYWx1ZSA9IGlzVGltZSAmJiBkYXRlID9cbiAgICAgICAgICAgICAgICBuZXcgRGF0ZSgpLnNldEhvdXJzKGRhdGUuZ2V0SG91cnMoKSwgZGF0ZS5nZXRNaW51dGVzKCksIGRhdGUuZ2V0U2Vjb25kcygpLCBkYXRlLmdldE1pbGxpc2Vjb25kcygpKSA6IGRhdGU7XG5cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gcmVzb2x2ZWRWYWx1ZTtcbiAgICB9XG59XG4iXX0=
@@ -1,9 +1,7 @@
1
1
  import { DEFAULT_PIVOT_KEYS, PivotDimensionType } from '../grids/pivot-grid/pivot-grid.interface';
2
2
  import { PivotUtil } from '../grids/pivot-grid/pivot-util';
3
3
  import { FilteringStrategy } from './filtering-strategy';
4
- import { GridColumnDataType } from './data-util';
5
- import { DefaultSortingStrategy, SortingDirection } from './sorting-strategy';
6
- import { cloneArray, parseDate } from '../core/utils';
4
+ import { cloneArray } from '../core/utils';
7
5
  export class NoopPivotDimensionsStrategy {
8
6
  static instance() {
9
7
  return this._instance || (this._instance = new NoopPivotDimensionsStrategy());
@@ -120,43 +118,4 @@ export class DimensionValuesFilteringStrategy extends FilteringStrategy {
120
118
  return PivotUtil.extractValueFromDimension(dim, rec);
121
119
  }
122
120
  }
123
- export class DefaultPivotSortingStrategy extends DefaultSortingStrategy {
124
- static instance() {
125
- return this._instance || (this._instance = new this());
126
- }
127
- sort(data, fieldName, dir, ignoreCase, valueResolver, isDate, isTime, grid) {
128
- const key = fieldName;
129
- const allDimensions = grid.allDimensions;
130
- const enabledDimensions = allDimensions.filter(x => x && x.enabled);
131
- this.dimension = PivotUtil.flatten(enabledDimensions).find(x => x.memberName === key);
132
- const reverse = (dir === SortingDirection.Desc ? -1 : 1);
133
- const cmpFunc = (obj1, obj2) => this.compareObjects(obj1, obj2, key, reverse, ignoreCase, this.getFieldValue, isDate, isTime);
134
- return this.arraySort(data, cmpFunc);
135
- }
136
- getFieldValue(obj, key, isDate = false, isTime = false) {
137
- let resolvedValue = PivotUtil.extractValueFromDimension(this.dimension, obj) || obj[0];
138
- const formatAsDate = this.dimension.dataType === GridColumnDataType.Date || this.dimension.dataType === GridColumnDataType.DateTime;
139
- if (formatAsDate) {
140
- const date = parseDate(resolvedValue);
141
- resolvedValue = isTime && date ?
142
- new Date().setHours(date.getHours(), date.getMinutes(), date.getSeconds(), date.getMilliseconds()) : date;
143
- }
144
- return resolvedValue;
145
- }
146
- }
147
- DefaultPivotSortingStrategy._instance = null;
148
- export class DefaultPivotGridRecordSortingStrategy extends DefaultSortingStrategy {
149
- static instance() {
150
- return this._instance || (this._instance = new this());
151
- }
152
- sort(data, fieldName, dir, ignoreCase, valueResolver, isDate, isTime, grid) {
153
- const reverse = (dir === SortingDirection.Desc ? -1 : 1);
154
- const cmpFunc = (obj1, obj2) => this.compareObjects(obj1, obj2, fieldName, reverse, ignoreCase, this.getFieldValue, isDate, isTime);
155
- return this.arraySort(data, cmpFunc);
156
- }
157
- getFieldValue(obj, key, isDate = false, isTime = false) {
158
- return obj.aggregationValues.get(key);
159
- }
160
- }
161
- DefaultPivotGridRecordSortingStrategy._instance = null;
162
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGl2b3Qtc3RyYXRlZ3kuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9pZ25pdGV1aS1hbmd1bGFyL3NyYy9saWIvZGF0YS1vcGVyYXRpb25zL3Bpdm90LXN0cmF0ZWd5LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUVBLE9BQU8sRUFBRSxrQkFBa0IsRUFBdUYsa0JBQWtCLEVBQUUsTUFBTSwwQ0FBMEMsQ0FBQztBQUN2TCxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFDM0QsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDekQsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQ2pELE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQzlFLE9BQU8sRUFBRSxVQUFVLEVBQUUsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRXRELE1BQU0sT0FBTywyQkFBMkI7SUFHN0IsTUFBTSxDQUFDLFFBQVE7UUFDbEIsT0FBTyxJQUFJLENBQUMsU0FBUyxJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLDJCQUEyQixFQUFFLENBQUMsQ0FBQztJQUNsRixDQUFDO0lBRU0sT0FBTyxDQUFDLFVBQWlCLEVBQUUsQ0FBb0IsRUFBRSxFQUFpQjtRQUNyRSxPQUFPLFVBQVUsQ0FBQztJQUN0QixDQUFDOztBQVJjLHFDQUFTLEdBQWdDLElBQUksQ0FBQztBQVlqRSxNQUFNLE9BQU8sMEJBQTBCO0lBRzVCLE1BQU0sQ0FBQyxRQUFRO1FBQ2xCLE9BQU8sSUFBSSxDQUFDLFNBQVMsSUFBSSxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsSUFBSSwwQkFBMEIsRUFBRSxDQUFDLENBQUM7SUFDakYsQ0FBQztJQUVNLE9BQU8sQ0FDVixVQUFlLEVBQ2YsSUFBdUIsRUFDdkIsTUFBc0IsRUFDdEIs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SUFBb0I7UUFDcEIsTUFBTSxPQUFPLEdBQUcsQ0FBQyxHQUFHLEtBQUssZ0JBQWdCLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDekQsTUFBTSxPQUFPLEdBQUcsQ0FBQyxJQUFJLEVBQUUsSUFBSSxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLElBQUksRUFBRSxJQUFJLEVBQUUsU0FBUyxFQUFFLE9BQU8sRUFBRSxVQUFVLEVBQUUsSUFBSSxDQUFDLGFBQWEsRUFBRSxNQUFNLEVBQUUsTUFBTSxDQUFDLENBQUM7UUFDcEksT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksRUFBRSxPQUFPLENBQUMsQ0FBQztJQUN6QyxDQUFDO0lBRVMsYUFBYSxDQUFDLEdBQXFCLEVBQUUsR0FBVyxFQUFFLFNBQWtCLEtBQUssRUFBRSxTQUFrQixLQUFLO1FBQ3hHLE9BQU8sR0FBRyxDQUFDLGlCQUFpQixDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUMxQyxDQUFDOztBQW5CZ0IsK0NBQVMsR0FBMEMsSUFBSSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiXG5pbXBvcnQgeyBHcmlkVHlwZSwgUGl2b3RHcmlkVHlwZSB9IGZyb20gJy4uL2dyaWRzL2NvbW1vbi9ncmlkLmludGVyZmFjZSc7XG5pbXBvcnQgeyBERUZBVUxUX1BJVk9UX0tFWVMsIElQaXZvdERpbWVuc2lvbiwgSVBpdm90RGltZW5zaW9uU3RyYXRlZ3ksIElQaXZvdEdyaWRSZWNvcmQsIElQaXZvdEtleXMsIElQaXZvdFZhbHVlLCBQaXZvdERpbWVuc2lvblR5cGUgfSBmcm9tICcuLi9ncmlkcy9waXZvdC1ncmlkL3Bpdm90LWdyaWQuaW50ZXJmYWNlJztcbmltcG9ydCB7IFBpdm90VXRpbCB9IGZyb20gJy4uL2dyaWRzL3Bpdm90LWdyaWQvcGl2b3QtdXRpbCc7XG5pbXBvcnQgeyBGaWx0ZXJpbmdTdHJhdGVneSB9IGZyb20gJy4vZmlsdGVyaW5nLXN0cmF0ZWd5JztcbmltcG9ydCB7IEdyaWRDb2x1bW5EYXRhVHlwZSB9IGZyb20gJy4vZGF0YS11dGlsJztcbmltcG9ydCB7IERlZmF1bHRTb3J0aW5nU3RyYXRlZ3ksIFNvcnRpbmdEaXJlY3Rpb24gfSBmcm9tICcuL3NvcnRpbmctc3RyYXRlZ3knO1xuaW1wb3J0IHsgY2xvbmVBcnJheSwgcGFyc2VEYXRlIH0gZnJvbSAnLi4vY29yZS91dGlscyc7XG5cbmV4cG9ydCBjbGFzcyBOb29wUGl2b3REaW1lbnNpb25zU3RyYXRlZ3kgaW1wbGVtZW50cyBJUGl2b3REaW1lbnNpb25TdHJhdGVneSB7XG4gICAgcHJpdmF0ZSBzdGF0aWMgX2luc3RhbmNlOiBOb29wUGl2b3REaW1lbnNpb25zU3RyYXRlZ3kgPSBudWxsO1xuXG4gICAgcHVibGljIHN0YXRpYyBpbnN0YW5jZSgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2luc3RhbmNlIHx8ICh0aGlzLl9pbnN0YW5jZSA9IG5ldyBOb29wUGl2b3REaW1lbnNpb25zU3RyYXRlZ3koKSk7XG4gICAgfVxuXG4gICAgcHVibGljIHByb2Nlc3MoY29sbGVjdGlvbjogYW55W10sIF86IElQaXZvdERpbWVuc2lvbltdLCBfXzogSVBpdm90VmFsdWVbXSk6IGFueVtdIHtcbiAgICAgICAgcmV0dXJuIGNvbGxlY3Rpb247XG4gICAgfVxufVxuXG5cbmV4cG9ydCBjbGFzcyBQaXZvdFJvd0RpbWVuc2lvbnNTdHJhdGVneSBpbXBsZW1lbnRzIElQaXZvdERpbWVuc2lvblN0cmF0ZWd5IHtcbiAgICBwcml2YXRlIHN0YXRpYyBfaW5zdGFuY2U6IFBpdm90Um93RGltZW5zaW9uc1N0cmF0ZWd5ID0gbnVsbDtcblxuICAgIHB1YmxpYyBzdGF0aWMgaW5zdGFuY2UoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9pbnN0YW5jZSB8fCAodGhpcy5faW5zdGFuY2UgPSBuZXcgUGl2b3RSb3dEaW1lbnNpb25zU3RyYXRlZ3koKSk7XG4gICAgfVxuXG4gICAgcHVibGljIHByb2Nlc3MoXG4gICAgICAgIGNvbGxlY3Rpb246IGFueSxcbiAgICAgICAgcm93czogSVBpdm90RGltZW5zaW9uW10sXG4gICAgICAgIHZhbHVlcz86IElQaXZvdFZhbHVlW10sXG4gICAgICAgIHBpdm90S2V5czogSVBpdm90S2V5cyA9IERFRkFVTFRfUElWT1RfS0VZU1xuICAgICk6IElQaXZvdEdyaWRSZWNvcmRbXSB7XG4gICAgICAgIGxldCBoaWVyYXJjaGllcztcbiAgICAgICAgbGV0IGRhdGE6IElQaXZvdEdyaWRSZWNvcmRbXTtcbiAgICAgICAgY29uc3QgcHJldlJvd0RpbXMgPSBbXTtcbiAgICAgICAgbGV0IHByZXZEaW07XG4gICAgICAgIGxldCBwcmV2RGltVG9wUmVjb3JkcyA9IFtdO1xuICAgICAgICBjb25zdCBjdXJyUm93cyA9IGNsb25lQXJyYXkocm93cywgdHJ1ZSk7XG4gICAgICAgIFBpdm90VXRpbC5hc3NpZ25MZXZlbHMoY3VyclJvd3MpO1xuXG4gICAgICAgIGlmIChjdXJyUm93cy5sZW5ndGggPT09IDApIHtcbiAgICAgICAgICAgIGhpZXJhcmNoaWVzID0gUGl2b3RVdGlsLmdldEZpZWxkc0hpZXJhcmNoeShjb2xsZWN0aW9uLCBbeyBtZW1iZXJOYW1lOiAnJywgZW5hYmxlZDogdHJ1ZSB9XSwgUGl2b3REaW1lbnNpb25UeXBlLlJvdywgcGl2b3RLZXlzKTtcbiAgICAgICAgICAgIC8vIGdlbmVyYXRlIGZsYXQgZGF0YSBmcm9tIHRoZSBoaWVyYXJjaGllc1xuICAgICAgICAgICAgZGF0YSA9IFBpdm90VXRpbC5wcm9jZXNzSGllcmFyY2h5KGhpZXJhcmNoaWVzLCBwaXZvdEtleXMsIDAsIHRydWUpO1xuICAgICAgICAgICAgcmV0dXJuIGRhdGE7XG4gICAgICAgIH1cblxuICAgICAgICBmb3IgKGNvbnN0IHJvdyBvZiBjdXJyUm93cykge1xuICAgICAgICAgICAgaWYgKCFkYXRhKSB7XG4gICAgICAgICAgICAgICAgLy8gYnVpbGQgaGllcmFyY2hpZXMgLSBncm91cHMgYW5kIHN1Ymdyb3Vwc1xuICAgICAgICAgICAgICAgIGhpZXJhcmNoaWVzID0gUGl2b3RVdGlsLmdldEZpZWxkc0hpZXJhcmNoeShjb2xsZWN0aW9uLCBbcm93XSwgUGl2b3REaW1lbnNpb25UeXBlLlJvdywgcGl2b3RLZXlzKTtcbiAgICAgICAgICAgICAgICAvLyBnZW5lcmF0ZSBmbGF0IGRhdGEgZnJvbSB0aGUgaGllcmFyY2hpZXNcbiAgICAgICAgICAgICAgICBkYXRhID0gUGl2b3RVdGlsLnByb2Nlc3NIaWVyYXJjaHkoaGllcmFyY2hpZXMsIHBpdm90S2V5cywgMCwgdHJ1ZSk7XG4gICAgICAgICAgICAgICAgcHJldlJvd0RpbXMucHVzaChyb3cpO1xuICAgICAgICAgICAgICAgIHByZXZEaW0gPSByb3c7XG4gICAgICAgICAgICAgICAgcHJldkRpbVRvcFJlY29yZHMgPSBkYXRhO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBQaXZvdFV0aWwucHJvY2Vzc0dyb3VwcyhkYXRhLCByb3csIHBpdm90S2V5cyk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGRhdGE7XG4gICAgfVxufVxuXG5leHBvcnQgY2xhc3MgUGl2b3RDb2x1bW5EaW1lbnNpb25zU3RyYXRlZ3kgaW1wbGVtZW50cyBJUGl2b3REaW1lbnNpb25TdHJhdGVneSB7XG4gICAgcHJpdmF0ZSBzdGF0aWMgX2luc3RhbmNlOiBQaXZvdFJvd0RpbWVuc2lvbnNTdHJhdGVneSA9IG51bGw7XG5cbiAgICBwdWJsaWMgc3RhdGljIGluc3RhbmNlKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5faW5zdGFuY2UgfHwgKHRoaXMuX2luc3RhbmNlID0gbmV3IFBpdm90Q29sdW1uRGltZW5zaW9uc1N0cmF0ZWd5KCkpO1xuICAgIH1cblxuICAgIHB1YmxpYyBwcm9jZXNzKFxuICAgICAgICBjb2xsZWN0aW9uOiBJUGl2b3RHcmlkUmVjb3JkW10sXG4gICAgICAgIGNvbHVtbnM6IElQaXZvdERpbWVuc2lvbltdLFxuICAgICAgICB2YWx1ZXM6IElQaXZvdFZhbHVlW10sXG4gICAgICAgIHBpdm90S2V5czogSVBpdm90S2V5cyA9IERFRkFVTFRfUElWT1RfS0VZU1xuICAgICk6IGFueVtdIHtcbiAgICAgICAgY29uc3QgcmVzID0gdGhpcy5wcm9jZXNzSGllcmFyY2h5KGNvbGxlY3Rpb24sIGNvbHVtbnMsIHZhbHVlcywgcGl2b3RLZXlzKTtcbiAgICAgICAgcmV0dXJuIHJlcztcbiAgICB9XG5cbiAgICBwcml2YXRlIHByb2Nlc3NIaWVyYXJjaHkoY29sbGVjdGlvbjogSVBpdm90R3JpZFJlY29yZFtdLCBjb2x1bW5zOiBJUGl2b3REaW1lbnNpb25bXSwgdmFsdWVzLCBwaXZvdEtleXMpIHtcbiAgICAgICAgY29uc3QgcmVzdWx0OiBJUGl2b3RHcmlkUmVjb3JkW10gPSBbXTtcbiAgICAgICAgY29sbGVjdGlvbi5mb3JFYWNoKHJlYyA9PiB7XG4gICAgICAgICAgICAvLyBhcHBseSBhZ2dyZWdhdGlvbnMgYmFzZWQgb24gdGhlIGNyZWF0ZWQgZ3JvdXBzIGFuZCBnZW5lcmF0ZSBjb2x1bW4gZmllbGRzIGJhc2VkIG9uIHRoZSBoaWVyYXJjaGllc1xuICAgICAgICAgICAgdGhpcy5ncm91cENvbHVtbnMocmVjLCBjb2x1bW5zLCB2YWx1ZXMsIHBpdm90S2V5cyk7XG4gICAgICAgICAgICByZXN1bHQucHVzaChyZWMpO1xuICAgICAgICB9KTtcbiAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9XG5cbiAgICBwcml2YXRlIGdyb3VwQ29sdW1ucyhyZWM6IElQaXZvdEdyaWRSZWNvcmQsIGNvbHVtbnMsIHZhbHVlcywgcGl2b3RLZXlzKSB7XG4gICAgICAgIGNvbnN0IGNoaWxkcmVuID0gcmVjLmNoaWxkcmVuO1xuICAgICAgICBpZiAoY2hpbGRyZW4gJiYgY2hpbGRyZW4uc2l6ZSA+IDApIHtcbiAgICAgICAgICAgIGNoaWxkcmVuLmZvckVhY2goKGNoaWxkUmVjcywga2V5KSA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKGNoaWxkUmVjcykge1xuICAgICAgICAgICAgICAgICAgICBjaGlsZFJlY3MuZm9yRWFjaChjaGlsZCA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmdyb3VwQ29sdW1ucyhjaGlsZCwgY29sdW1ucywgdmFsdWVzLCBwaXZvdEtleXMpO1xuICAgICAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgXG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5hcHBseUFnZ3JlZ2F0ZXMocmVjLCBjb2x1bW5zLCB2YWx1ZXMsIHBpdm90S2V5cyk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBhcHBseUFnZ3JlZ2F0ZXMocmVjLCBjb2x1bW5zLCB2YWx1ZXMsIHBpdm90S2V5cykge1xuICAgICAgICBjb25zdCBsZWFmUmVjb3JkcyA9IHRoaXMuZ2V0TGVhZnMocmVjLnJlY29yZHMsIHBpdm90S2V5cyk7XG4gICAgICAgIGNvbnN0IGhpZXJhcmNoeSA9IFBpdm90VXRpbC5nZXRGaWVsZHNIaWVyYXJjaHkobGVhZlJlY29yZHMsIGNvbHVtbnMsIFBpdm90RGltZW5zaW9uVHlwZS5Db2x1bW4sIHBpdm90S2V5cyk7XG4gICAgICAgIFBpdm90VXRpbC5hcHBseUFnZ3JlZ2F0aW9ucyhyZWMsIGhpZXJhcmNoeSwgdmFsdWVzLCBwaXZvdEtleXMpXG4gICAgfVxuXG4gICAgcHJpdmF0ZSBnZXRMZWFmcyhyZWNvcmRzLCBwaXZvdEtleXMpIHtcbiAgICAgICAgbGV0IGxlYWZzID0gW107XG4gICAgICAgIGZvciAoY29uc3QgcmVjIG9mIHJlY29yZHMpIHtcbiAgICAgICAgICAgIGlmIChyZWNbcGl2b3RLZXlzLnJlY29yZHNdKSB7XG4gICAgICAgICAgICAgICAgbGVhZnMgPSBsZWFmcy5jb25jYXQodGhpcy5nZXRMZWFmcyhyZWNbcGl2b3RLZXlzLnJlY29yZHNdLCBwaXZvdEtleXMpKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgbGVhZnMucHVzaChyZWMpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiBsZWFmcztcbiAgICB9XG5cbiAgICBwcml2YXRlIGlzTGVhZihyZWNvcmQsIHBpdm90S2V5cykge1xuICAgICAgICByZXR1cm4gIShyZWNvcmRbcGl2b3RLZXlzLnJlY29yZHNdICYmIHJlY29yZFtwaXZvdEtleXMucmVjb3Jkc10uc29tZShyID0+IHJbcGl2b3RLZXlzLnJlY29yZHNdKSk7XG4gICAgfVxufVxuXG5leHBvcnQgY2xhc3MgRGltZW5zaW9uVmFsdWVzRmlsdGVyaW5nU3RyYXRlZ3kgZXh0ZW5kcyBGaWx0ZXJpbmdTdHJhdGVneSB7XG4gICAgLyoqXG4gICAgICogQ3JlYXRlcyBhIG5ldyBpbnN0YW5jZSBvZiBGb3JtYXR0ZWRWYWx1ZXNGaWx0ZXJpbmdTdHJhdGVneS5cbiAgICAgKlxuICAgICAqIEBwYXJhbSBmaWVsZHMgQW4gYXJyYXkgb2YgY29sdW1uIGZpZWxkIG5hbWVzIHRoYXQgc2hvdWxkIGJlIGZvcm1hdHRlZC5cbiAgICAgKiBJZiBvbWl0dGVkIHRoZSB2YWx1ZXMgb2YgYWxsIGNvbHVtbnMgd2hpY2ggaGFzIGZvcm1hdHRlciB3aWxsIGJlIGZvcm1hdHRlZC5cbiAgICAgKi9cbiAgICBjb25zdHJ1Y3Rvcihwcml2YXRlIGZpZWxkcz86IHN0cmluZ1tdKSB7XG4gICAgICAgIHN1cGVyKCk7XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIGdldEZpZWxkVmFsdWUocmVjOiBhbnksIGZpZWxkTmFtZTogc3RyaW5nLCBpc0RhdGU6IGJvb2xlYW4gPSBmYWxzZSwgaXNUaW1lOiBib29sZWFuID0gZmFsc2UsXG4gICAgICAgIGdyaWQ/OiBQaXZvdEdyaWRUeXBlKTogYW55IHtcbiAgICAgICAgY29uc3QgY29uZmlnID0gZ3JpZC5waXZvdENvbmZpZ3VyYXRpb247XG4gICAgICAgIGNvbnN0IGFsbERpbWVuc2lvbnMgPSBncmlkLmFsbERpbWVuc2lvbnM7XG4gICAgICAgIGNvbnN0IGVuYWJsZWREaW1lbnNpb25zID0gYWxsRGltZW5zaW9ucy5maWx0ZXIoeCA9PiB4ICYmIHguZW5hYmxlZCk7XG4gICAgICAgIGNvbnN0IGRpbSA9IFBpdm90VXRpbC5mbGF0dGVuKGVuYWJsZWREaW1lbnNpb25zKS5maW5kKHggPT4geC5tZW1iZXJOYW1lID09PSBmaWVsZE5hbWUpO1xuICAgICAgICByZXR1cm4gUGl2b3RVdGlsLmV4dHJhY3RWYWx1ZUZyb21EaW1lbnNpb24oZGltLCByZWMpO1xuICAgIH1cbn1cblxuZXhwb3J0IGNsYXNzIERlZmF1bHRQaXZvdFNvcnRpbmdTdHJhdGVneSBleHRlbmRzIERlZmF1bHRTb3J0aW5nU3RyYXRlZ3kge1xuICAgIHByb3RlY3RlZCBzdGF0aWMgX2luc3RhbmNlOiBEZWZhdWx0UGl2b3RTb3J0aW5nU3RyYXRlZ3kgPSBudWxsO1xuICAgIHByb3RlY3RlZCBkaW1lbnNpb247XG4gICAgcHVibGljIHN0YXRpYyBpbnN0YW5jZSgpOiBEZWZhdWx0UGl2b3RTb3J0aW5nU3RyYXRlZ3kge1xuICAgICAgICByZXR1cm4gdGhpcy5faW5zdGFuY2UgfHwgKHRoaXMuX2luc3RhbmNlID0gbmV3IHRoaXMoKSk7XG4gICAgfVxuICAgIHB1YmxpYyBzb3J0KGRhdGE6IGFueVtdLFxuICAgICAgICBmaWVsZE5hbWU6IHN0cmluZyxcbiAgICAgICAgZGlyOiBTb3J0aW5nRGlyZWN0aW9uLFxuICAgICAgICBpZ25vcmVDYXNlOiBib29sZWFuLFxuICAgICAgICB2YWx1ZVJlc29sdmVyOiAob2JqOiBhbnksIGtleTogc3RyaW5nLCBpc0RhdGU/OiBib29sZWFuKSA9PiBhbnksXG4gICAgICAgIGlzRGF0ZT86IGJvb2xlYW4sXG4gICAgICAgIGlzVGltZT86IGJvb2xlYW4sXG4gICAgICAgIGdyaWQ/OiBQaXZvdEdyaWRUeXBlKSB7XG4gICAgICAgIGNvbnN0IGtleSA9IGZpZWxkTmFtZTtcbiAgICAgICAgY29uc3QgYWxsRGltZW5zaW9ucyA9IGdyaWQuYWxsRGltZW5zaW9ucztcbiAgICAgICAgY29uc3QgZW5hYmxlZERpbWVuc2lvbnMgPSBhbGxEaW1lbnNpb25zLmZpbHRlcih4ID0+IHggJiYgeC5lbmFibGVkKTtcbiAgICAgICAgdGhpcy5kaW1lbnNpb24gPSBQaXZvdFV0aWwuZmxhdHRlbihlbmFibGVkRGltZW5zaW9ucykuZmluZCh4ID0+IHgubWVtYmVyTmFtZSA9PT0ga2V5KTtcbiAgICAgICAgY29uc3QgcmV2ZXJzZSA9IChkaXIgPT09IFNvcnRpbmdEaXJlY3Rpb24uRGVzYyA/IC0xIDogMSk7XG4gICAgICAgIGNvbnN0IGNtcEZ1bmMgPSAob2JqMSwgb2JqMikgPT4gdGhpcy5jb21wYXJlT2JqZWN0cyhvYmoxLCBvYmoyLCBrZXksIHJldmVyc2UsIGlnbm9yZUNhc2UsIHRoaXMuZ2V0RmllbGRWYWx1ZSwgaXNEYXRlLCBpc1RpbWUpO1xuICAgICAgICByZXR1cm4gdGhpcy5hcnJheVNvcnQoZGF0YSwgY21wRnVuYyk7XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIGdldEZpZWxkVmFsdWUob2JqOiBhbnksIGtleTogc3RyaW5nLCBpc0RhdGU6IGJvb2xlYW4gPSBmYWxzZSwgaXNUaW1lOiBib29sZWFuID0gZmFsc2UpOiBhbnkge1xuICAgICAgICBsZXQgcmVzb2x2ZWRWYWx1ZSA9IFBpdm90VXRpbC5leHRyYWN0VmFsdWVGcm9tRGltZW5zaW9uKHRoaXMuZGltZW5zaW9uLCBvYmopIHx8IG9ialswXTtcbiAgICAgICAgY29uc3QgZm9ybWF0QXNEYXRlID0gdGhpcy5kaW1lbnNpb24uZGF0YVR5cGUgPT09IEdyaWRDb2x1bW5EYXRhVHlwZS5EYXRlIHx8IHRoaXMuZGltZW5zaW9uLmRhdGFUeXBlID09PSBHcmlkQ29sdW1uRGF0YVR5cGUuRGF0ZVRpbWU7XG4gICAgICAgIGlmIChmb3JtYXRBc0RhdGUpIHtcbiAgICAgICAgICAgIGNvbnN0IGRhdGUgPSBwYXJzZURhdGUocmVzb2x2ZWRWYWx1ZSk7XG4gICAgICAgICAgICByZXNvbHZlZFZhbHVlID0gaXNUaW1lICYmIGRhdGUgP1xuICAgICAgICAgICAgICAgIG5ldyBEYXRlKCkuc2V0SG91cnMoZGF0ZS5nZXRIb3VycygpLCBkYXRlLmdldE1pbnV0ZXMoKSwgZGF0ZS5nZXRTZWNvbmRzKCksIGRhdGUuZ2V0TWlsbGlzZWNvbmRzKCkpIDogZGF0ZTtcblxuICAgICAgICB9XG4gICAgICAgIHJldHVybiByZXNvbHZlZFZhbHVlO1xuICAgIH1cbn1cblxuZXhwb3J0IGNsYXNzIERlZmF1bHRQaXZvdEdyaWRSZWNvcmRTb3J0aW5nU3RyYXRlZ3kgZXh0ZW5kcyBEZWZhdWx0U29ydGluZ1N0cmF0ZWd5IHtcbiAgICBwcm90ZWN0ZWQgc3RhdGljIF9pbnN0YW5jZTogRGVmYXVsdFBpdm90R3JpZFJlY29yZFNvcnRpbmdTdHJhdGVneSA9IG51bGw7XG4gICAgcHVibGljIHN0YXRpYyBpbnN0YW5jZSgpOiBEZWZhdWx0UGl2b3RHcmlkUmVjb3JkU29ydGluZ1N0cmF0ZWd5IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2luc3RhbmNlIHx8ICh0aGlzLl9pbnN0YW5jZSA9IG5ldyB0aGlzKCkpO1xuICAgIH1cbiAgICBwdWJsaWMgc29ydChkYXRhOiBhbnlbXSxcbiAgICAgICAgZmllbGROYW1lOiBzdHJpbmcsXG4gICAgICAgIGRpcjogU29ydGluZ0RpcmVjdGlvbixcbiAgICAgICAgaWdub3JlQ2FzZTogYm9vbGVhbixcbiAgICAgICAgdmFsdWVSZXNvbHZlcjogKG9iajogYW55LCBrZXk6IHN0cmluZywgaXNEYXRlPzogYm9vbGVhbikgPT4gYW55LFxuICAgICAgICBpc0RhdGU/OiBib29sZWFuLFxuICAgICAgICBpc1RpbWU/OiBib29sZWFuLFxuICAgICAgICBncmlkPzogUGl2b3RHcmlkVHlwZSkge1xuICAgICAgICBjb25zdCByZXZlcnNlID0gKGRpciA9PT0gU29ydGluZ0RpcmVjdGlvbi5EZXNjID8gLTEgOiAxKTtcbiAgICAgICAgY29uc3QgY21wRnVuYyA9IChvYmoxLCBvYmoyKSA9PiB0aGlzLmNvbXBhcmVPYmplY3RzKG9iajEsIG9iajIsIGZpZWxkTmFtZSwgcmV2ZXJzZSwgaWdub3JlQ2FzZSwgdGhpcy5nZXRGaWVsZFZhbHVlLCBpc0RhdGUsIGlzVGltZSk7XG4gICAgICAgIHJldHVybiB0aGlzLmFycmF5U29ydChkYXRhLCBjbXBGdW5jKTtcbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgZ2V0RmllbGRWYWx1ZShvYmo6IElQaXZvdEdyaWRSZWNvcmQsIGtleTogc3RyaW5nLCBpc0RhdGU6IGJvb2xlYW4gPSBmYWxzZSwgaXNUaW1lOiBib29sZWFuID0gZmFsc2UpOiBhbnkge1xuICAgICAgICByZXR1cm4gb2JqLmFnZ3JlZ2F0aW9uVmFsdWVzLmdldChrZXkpO1xuICAgIH1cbn1cbiJdfQ==
121
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGl2b3Qtc3RyYXRlZ3kuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9pZ25pdGV1aS1hbmd1bGFyL3NyYy9saWIvZGF0YS1vcGVyYXRpb25zL3Bpdm90LXN0cmF0ZWd5LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUVBLE9BQU8sRUFBRSxrQkFBa0IsRUFBdUYsa0JBQWtCLEVBQUUsTUFBTSwwQ0FBMEMsQ0FBQztBQUN2TCxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFDM0QsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDekQsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUUzQyxNQUFNLE9BQU8sMkJBQTJCO0lBRzdCLE1BQU0sQ0FBQyxRQUFRO1FBQ2xCLE9BQU8sSUFBSSxDQUFDLFNBQVMsSUFBSSxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsSUFBSSwyQkFBMkIsRUFBRSxDQUFDLENBQUM7SUFDbEYsQ0FBQztJQUVNLE9BQU8sQ0FBQyxVQUFpQixFQUFFLENBQW9CLEVBQUUsRUFBaUI7UUFDckUsT0FBTyxVQUFVLENBQUM7SUFDdEIsQ0FBQzs7QUFSYyxxQ0FBUyxHQUFnQyxJQUFJLENBQUM7QUFZakUsTUFBTSxPQUFPLDBCQUEwQjtJQUc1QixNQUFNLENBQUMsUUFBUTtRQUNsQixPQUFPLElBQUksQ0FBQyxTQUFTLElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUyxHQUFHLElBQUksMEJBQTBCLEVBQUUsQ0FBQyxDQUFDO0lBQ2pGLENBQUM7SUFFTSxPQUFPLENBQ1YsVUFBZSxFQUNmLElBQXVCLEVBQ3ZCLE1BQXNCLEVBQ3RCLFlBQXdCLGtCQUFrQjtRQUUxQyxJQUFJLFdBQVcsQ0FBQztRQUNoQixJQUFJLElBQXdCLENBQUM7UUFDN0IsTUFBTSxXQUFXLEdBQUcsRUFBRSxDQUFDO1FBQ3ZCLElBQUksT0FBTyxDQUFDO1FB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QixDQUFDO0lBRU8sTUFBTSxDQUFDLE1BQU0sRUFBRSxTQUFTO1FBQzVCLE9BQU8sQ0FBQyxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLElBQUksTUFBTSxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNyRyxDQUFDOztBQTdEYyx1Q0FBUyxHQUErQixJQUFJLENBQUM7QUFnRWhFLE1BQU0sT0FBTyxnQ0FBaUMsU0FBUSxpQkFBaUI7SUFDbkU7Ozs7O09BS0c7SUFDSCxZQUFvQixNQUFpQjtRQUNqQyxLQUFLLEVBQUUsQ0FBQztRQURRLFdBQU0sR0FBTixNQUFNLENBQVc7SUFFckMsQ0FBQztJQUVTLGFBQWEsQ0FBQyxHQUFRLEVBQUUsU0FBaUIsRUFBRSxTQUFrQixLQUFLLEVBQUUsU0FBa0IsS0FBSyxFQUNqRyxJQUFvQjtRQUNwQixNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsa0JBQWtCLENBQUM7UUFDdkMsTUFBTSxhQUFhLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQztRQUN6QyxNQUFNLGlCQUFpQixHQUFHLGFBQWEsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQ3BFLE1BQU0sR0FBRyxHQUFHLFNBQVMsQ0FBQyxPQUFPLENBQUMsaUJBQWlCLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsVUFBVSxLQUFLLFNBQVMsQ0FBQyxDQUFDO1FBQ3ZGLE9BQU8sU0FBUyxDQUFDLHlCQUF5QixDQUFDLEdBQUcsRUFBRSxHQUFHLENBQUMsQ0FBQztJQUN6RCxDQUFDO0NBQ0oiLCJzb3VyY2VzQ29udGVudCI6WyJcbmltcG9ydCB7IFBpdm90R3JpZFR5cGUgfSBmcm9tICcuLi9ncmlkcy9jb21tb24vZ3JpZC5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgREVGQVVMVF9QSVZPVF9LRVlTLCBJUGl2b3REaW1lbnNpb24sIElQaXZvdERpbWVuc2lvblN0cmF0ZWd5LCBJUGl2b3RHcmlkUmVjb3JkLCBJUGl2b3RLZXlzLCBJUGl2b3RWYWx1ZSwgUGl2b3REaW1lbnNpb25UeXBlIH0gZnJvbSAnLi4vZ3JpZHMvcGl2b3QtZ3JpZC9waXZvdC1ncmlkLmludGVyZmFjZSc7XG5pbXBvcnQgeyBQaXZvdFV0aWwgfSBmcm9tICcuLi9ncmlkcy9waXZvdC1ncmlkL3Bpdm90LXV0aWwnO1xuaW1wb3J0IHsgRmlsdGVyaW5nU3RyYXRlZ3kgfSBmcm9tICcuL2ZpbHRlcmluZy1zdHJhdGVneSc7XG5pbXBvcnQgeyBjbG9uZUFycmF5IH0gZnJvbSAnLi4vY29yZS91dGlscyc7XG5cbmV4cG9ydCBjbGFzcyBOb29wUGl2b3REaW1lbnNpb25zU3RyYXRlZ3kgaW1wbGVtZW50cyBJUGl2b3REaW1lbnNpb25TdHJhdGVneSB7XG4gICAgcHJpdmF0ZSBzdGF0aWMgX2luc3RhbmNlOiBOb29wUGl2b3REaW1lbnNpb25zU3RyYXRlZ3kgPSBudWxsO1xuXG4gICAgcHVibGljIHN0YXRpYyBpbnN0YW5jZSgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2luc3RhbmNlIHx8ICh0aGlzLl9pbnN0YW5jZSA9IG5ldyBOb29wUGl2b3REaW1lbnNpb25zU3RyYXRlZ3koKSk7XG4gICAgfVxuXG4gICAgcHVibGljIHByb2Nlc3MoY29sbGVjdGlvbjogYW55W10sIF86IElQaXZvdERpbWVuc2lvbltdLCBfXzogSVBpdm90VmFsdWVbXSk6IGFueVtdIHtcbiAgICAgICAgcmV0dXJuIGNvbGxlY3Rpb247XG4gICAgfVxufVxuXG5cbmV4cG9ydCBjbGFzcyBQaXZvdFJvd0RpbWVuc2lvbnNTdHJhdGVneSBpbXBsZW1lbnRzIElQaXZvdERpbWVuc2lvblN0cmF0ZWd5IHtcbiAgICBwcml2YXRlIHN0YXRpYyBfaW5zdGFuY2U6IFBpdm90Um93RGltZW5zaW9uc1N0cmF0ZWd5ID0gbnVsbDtcblxuICAgIHB1YmxpYyBzdGF0aWMgaW5zdGFuY2UoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9pbnN0YW5jZSB8fCAodGhpcy5faW5zdGFuY2UgPSBuZXcgUGl2b3RSb3dEaW1lbnNpb25zU3RyYXRlZ3koKSk7XG4gICAgfVxuXG4gICAgcHVibGljIHByb2Nlc3MoXG4gICAgICAgIGNvbGxlY3Rpb246IGFueSxcbiAgICAgICAgcm93czogSVBpdm90RGltZW5zaW9uW10sXG4gICAgICAgIHZhbHVlcz86IElQaXZvdFZhbHVlW10sXG4gICAgICAgIHBpdm90S2V5czogSVBpdm90S2V5cyA9IERFRkFVTFRfUElWT1RfS0VZU1xuICAgICk6IElQaXZvdEdyaWRSZWNvcmRbXSB7XG4gICAgICAgIGxldCBoaWVyYXJjaGllcztcbiAgICAgICAgbGV0IGRhdGE6IElQaXZvdEdyaWRSZWNvcmRbXTtcbiAgICAgICAgY29uc3QgcHJldlJvd0RpbXMgPSBbXTtcbiAgICAgICAgbGV0IHByZXZEaW07XG4gICAgICAgIGxldCBwcmV2RGltVG9wUmVjb3JkcyA9IFtdO1xuICAgICAgICBjb25zdCBjdXJyUm93cyA9IGNsb25lQXJyYXkocm93cywgdHJ1ZSk7XG4gICAgICAgIFBpdm90VXRpbC5hc3NpZ25MZXZlbHMoY3VyclJvd3MpO1xuXG4gICAgICAgIGlmIChjdXJyUm93cy5sZW5ndGggPT09IDApIHtcbiAgICAgICAgICAgIGhpZXJhcmNoaWVzID0gUGl2b3RVdGlsLmdldEZpZWxkc0hpZXJhcmNoeShjb2xsZWN0aW9uLCBbeyBtZW1iZXJOYW1lOiAnJywgZW5hYmxlZDogdHJ1ZSB9XSwgUGl2b3REaW1lbnNpb25UeXBlLlJvdywgcGl2b3RLZXlzKTtcbiAgICAgICAgICAgIC8vIGdlbmVyYXRlIGZsYXQgZGF0YSBmcm9tIHRoZSBoaWVyYXJjaGllc1xuICAgICAgICAgICAgZGF0YSA9IFBpdm90VXRpbC5wcm9jZXNzSGllcmFyY2h5KGhpZXJhcmNoaWVzLCBwaXZvdEtleXMsIDAsIHRydWUpO1xuICAgICAgICAgICAgcmV0dXJuIGRhdGE7XG4gICAgICAgIH1cblxuICAgICAgICBmb3IgKGNvbnN0IHJvdyBvZiBjdXJyUm93cykge1xuICAgICAgICAgICAgaWYgKCFkYXRhKSB7XG4gICAgICAgICAgICAgICAgLy8gYnVpbGQgaGllcmFyY2hpZXMgLSBncm91cHMgYW5kIHN1Ymdyb3Vwc1xuICAgICAgICAgICAgICAgIGhpZXJhcmNoaWVzID0gUGl2b3RVdGlsLmdldEZpZWxkc0hpZXJhcmNoeShjb2xsZWN0aW9uLCBbcm93XSwgUGl2b3REaW1lbnNpb25UeXBlLlJvdywgcGl2b3RLZXlzKTtcbiAgICAgICAgICAgICAgICAvLyBnZW5lcmF0ZSBmbGF0IGRhdGEgZnJvbSB0aGUgaGllcmFyY2hpZXNcbiAgICAgICAgICAgICAgICBkYXRhID0gUGl2b3RVdGlsLnByb2Nlc3NIaWVyYXJjaHkoaGllcmFyY2hpZXMsIHBpdm90S2V5cywgMCwgdHJ1ZSk7XG4gICAgICAgICAgICAgICAgcHJldlJvd0RpbXMucHVzaChyb3cpO1xuICAgICAgICAgICAgICAgIHByZXZEaW0gPSByb3c7XG4gICAgICAgICAgICAgICAgcHJldkRpbVRvcFJlY29yZHMgPSBkYXRhO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBQaXZvdFV0aWwucHJvY2Vzc0dyb3VwcyhkYXRhLCByb3csIHBpdm90S2V5cyk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGRhdGE7XG4gICAgfVxufVxuXG5leHBvcnQgY2xhc3MgUGl2b3RDb2x1bW5EaW1lbnNpb25zU3RyYXRlZ3kgaW1wbGVtZW50cyBJUGl2b3REaW1lbnNpb25TdHJhdGVneSB7XG4gICAgcHJpdmF0ZSBzdGF0aWMgX2luc3RhbmNlOiBQaXZvdFJvd0RpbWVuc2lvbnNTdHJhdGVneSA9IG51bGw7XG5cbiAgICBwdWJsaWMgc3RhdGljIGluc3RhbmNlKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5faW5zdGFuY2UgfHwgKHRoaXMuX2luc3RhbmNlID0gbmV3IFBpdm90Q29sdW1uRGltZW5zaW9uc1N0cmF0ZWd5KCkpO1xuICAgIH1cblxuICAgIHB1YmxpYyBwcm9jZXNzKFxuICAgICAgICBjb2xsZWN0aW9uOiBJUGl2b3RHcmlkUmVjb3JkW10sXG4gICAgICAgIGNvbHVtbnM6IElQaXZvdERpbWVuc2lvbltdLFxuICAgICAgICB2YWx1ZXM6IElQaXZvdFZhbHVlW10sXG4gICAgICAgIHBpdm90S2V5czogSVBpdm90S2V5cyA9IERFRkFVTFRfUElWT1RfS0VZU1xuICAgICk6IGFueVtdIHtcbiAgICAgICAgY29uc3QgcmVzID0gdGhpcy5wcm9jZXNzSGllcmFyY2h5KGNvbGxlY3Rpb24sIGNvbHVtbnMsIHZhbHVlcywgcGl2b3RLZXlzKTtcbiAgICAgICAgcmV0dXJuIHJlcztcbiAgICB9XG5cbiAgICBwcml2YXRlIHByb2Nlc3NIaWVyYXJjaHkoY29sbGVjdGlvbjogSVBpdm90R3JpZFJlY29yZFtdLCBjb2x1bW5zOiBJUGl2b3REaW1lbnNpb25bXSwgdmFsdWVzLCBwaXZvdEtleXMpIHtcbiAgICAgICAgY29uc3QgcmVzdWx0OiBJUGl2b3RHcmlkUmVjb3JkW10gPSBbXTtcbiAgICAgICAgY29sbGVjdGlvbi5mb3JFYWNoKHJlYyA9PiB7XG4gICAgICAgICAgICAvLyBhcHBseSBhZ2dyZWdhdGlvbnMgYmFzZWQgb24gdGhlIGNyZWF0ZWQgZ3JvdXBzIGFuZCBnZW5lcmF0ZSBjb2x1bW4gZmllbGRzIGJhc2VkIG9uIHRoZSBoaWVyYXJjaGllc1xuICAgICAgICAgICAgdGhpcy5ncm91cENvbHVtbnMocmVjLCBjb2x1bW5zLCB2YWx1ZXMsIHBpdm90S2V5cyk7XG4gICAgICAgICAgICByZXN1bHQucHVzaChyZWMpO1xuICAgICAgICB9KTtcbiAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9XG5cbiAgICBwcml2YXRlIGdyb3VwQ29sdW1ucyhyZWM6IElQaXZvdEdyaWRSZWNvcmQsIGNvbHVtbnMsIHZhbHVlcywgcGl2b3RLZXlzKSB7XG4gICAgICAgIGNvbnN0IGNoaWxkcmVuID0gcmVjLmNoaWxkcmVuO1xuICAgICAgICBpZiAoY2hpbGRyZW4gJiYgY2hpbGRyZW4uc2l6ZSA+IDApIHtcbiAgICAgICAgICAgIGNoaWxkcmVuLmZvckVhY2goKGNoaWxkUmVjcywga2V5KSA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKGNoaWxkUmVjcykge1xuICAgICAgICAgICAgICAgICAgICBjaGlsZFJlY3MuZm9yRWFjaChjaGlsZCA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmdyb3VwQ29sdW1ucyhjaGlsZCwgY29sdW1ucywgdmFsdWVzLCBwaXZvdEtleXMpO1xuICAgICAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgXG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5hcHBseUFnZ3JlZ2F0ZXMocmVjLCBjb2x1bW5zLCB2YWx1ZXMsIHBpdm90S2V5cyk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBhcHBseUFnZ3JlZ2F0ZXMocmVjLCBjb2x1bW5zLCB2YWx1ZXMsIHBpdm90S2V5cykge1xuICAgICAgICBjb25zdCBsZWFmUmVjb3JkcyA9IHRoaXMuZ2V0TGVhZnMocmVjLnJlY29yZHMsIHBpdm90S2V5cyk7XG4gICAgICAgIGNvbnN0IGhpZXJhcmNoeSA9IFBpdm90VXRpbC5nZXRGaWVsZHNIaWVyYXJjaHkobGVhZlJlY29yZHMsIGNvbHVtbnMsIFBpdm90RGltZW5zaW9uVHlwZS5Db2x1bW4sIHBpdm90S2V5cyk7XG4gICAgICAgIFBpdm90VXRpbC5hcHBseUFnZ3JlZ2F0aW9ucyhyZWMsIGhpZXJhcmNoeSwgdmFsdWVzLCBwaXZvdEtleXMpXG4gICAgfVxuXG4gICAgcHJpdmF0ZSBnZXRMZWFmcyhyZWNvcmRzLCBwaXZvdEtleXMpIHtcbiAgICAgICAgbGV0IGxlYWZzID0gW107XG4gICAgICAgIGZvciAoY29uc3QgcmVjIG9mIHJlY29yZHMpIHtcbiAgICAgICAgICAgIGlmIChyZWNbcGl2b3RLZXlzLnJlY29yZHNdKSB7XG4gICAgICAgICAgICAgICAgbGVhZnMgPSBsZWFmcy5jb25jYXQodGhpcy5nZXRMZWFmcyhyZWNbcGl2b3RLZXlzLnJlY29yZHNdLCBwaXZvdEtleXMpKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgbGVhZnMucHVzaChyZWMpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiBsZWFmcztcbiAgICB9XG5cbiAgICBwcml2YXRlIGlzTGVhZihyZWNvcmQsIHBpdm90S2V5cykge1xuICAgICAgICByZXR1cm4gIShyZWNvcmRbcGl2b3RLZXlzLnJlY29yZHNdICYmIHJlY29yZFtwaXZvdEtleXMucmVjb3Jkc10uc29tZShyID0+IHJbcGl2b3RLZXlzLnJlY29yZHNdKSk7XG4gICAgfVxufVxuXG5leHBvcnQgY2xhc3MgRGltZW5zaW9uVmFsdWVzRmlsdGVyaW5nU3RyYXRlZ3kgZXh0ZW5kcyBGaWx0ZXJpbmdTdHJhdGVneSB7XG4gICAgLyoqXG4gICAgICogQ3JlYXRlcyBhIG5ldyBpbnN0YW5jZSBvZiBGb3JtYXR0ZWRWYWx1ZXNGaWx0ZXJpbmdTdHJhdGVneS5cbiAgICAgKlxuICAgICAqIEBwYXJhbSBmaWVsZHMgQW4gYXJyYXkgb2YgY29sdW1uIGZpZWxkIG5hbWVzIHRoYXQgc2hvdWxkIGJlIGZvcm1hdHRlZC5cbiAgICAgKiBJZiBvbWl0dGVkIHRoZSB2YWx1ZXMgb2YgYWxsIGNvbHVtbnMgd2hpY2ggaGFzIGZvcm1hdHRlciB3aWxsIGJlIGZvcm1hdHRlZC5cbiAgICAgKi9cbiAgICBjb25zdHJ1Y3Rvcihwcml2YXRlIGZpZWxkcz86IHN0cmluZ1tdKSB7XG4gICAgICAgIHN1cGVyKCk7XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIGdldEZpZWxkVmFsdWUocmVjOiBhbnksIGZpZWxkTmFtZTogc3RyaW5nLCBpc0RhdGU6IGJvb2xlYW4gPSBmYWxzZSwgaXNUaW1lOiBib29sZWFuID0gZmFsc2UsXG4gICAgICAgIGdyaWQ/OiBQaXZvdEdyaWRUeXBlKTogYW55IHtcbiAgICAgICAgY29uc3QgY29uZmlnID0gZ3JpZC5waXZvdENvbmZpZ3VyYXRpb247XG4gICAgICAgIGNvbnN0IGFsbERpbWVuc2lvbnMgPSBncmlkLmFsbERpbWVuc2lvbnM7XG4gICAgICAgIGNvbnN0IGVuYWJsZWREaW1lbnNpb25zID0gYWxsRGltZW5zaW9ucy5maWx0ZXIoeCA9PiB4ICYmIHguZW5hYmxlZCk7XG4gICAgICAgIGNvbnN0IGRpbSA9IFBpdm90VXRpbC5mbGF0dGVuKGVuYWJsZWREaW1lbnNpb25zKS5maW5kKHggPT4geC5tZW1iZXJOYW1lID09PSBmaWVsZE5hbWUpO1xuICAgICAgICByZXR1cm4gUGl2b3RVdGlsLmV4dHJhY3RWYWx1ZUZyb21EaW1lbnNpb24oZGltLCByZWMpO1xuICAgIH1cbn1cbiJdfQ==