@spicainternational/ngx-sds-components 5.13.0 → 5.20.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/esm2020/public-api.mjs +5 -1
  2. package/esm2020/src/lib/color-picker/color-picker.component.mjs +11 -27
  3. package/esm2020/src/lib/date-picker/date-picker.component.mjs +5 -5
  4. package/esm2020/src/lib/date-picker/date-picker.model.mjs +1 -1
  5. package/esm2020/src/lib/ellipsis/directives/ellipsis.directive.mjs +51 -0
  6. package/esm2020/src/lib/ellipsis/ellipsis.module.mjs +26 -0
  7. package/esm2020/src/lib/ellipsis/public-api.mjs +3 -0
  8. package/esm2020/src/lib/ellipsis/spicainternational-ngx-sds-components-src-lib-ellipsis.mjs +5 -0
  9. package/esm2020/src/lib/expansion-panel/expansion-panel.component.mjs +7 -3
  10. package/esm2020/src/lib/intersection/directives/index.mjs +2 -0
  11. package/esm2020/src/lib/intersection/directives/intersection.directive.mjs +51 -0
  12. package/esm2020/src/lib/intersection/intersection.module.mjs +22 -0
  13. package/esm2020/src/lib/intersection/public-api.mjs +4 -0
  14. package/esm2020/src/lib/intersection/services/index.mjs +2 -0
  15. package/esm2020/src/lib/intersection/services/intersection.service.mjs +54 -0
  16. package/esm2020/src/lib/intersection/spicainternational-ngx-sds-components-src-lib-intersection.mjs +5 -0
  17. package/esm2020/src/lib/keyboard-shortcut/directives/index.mjs +2 -0
  18. package/esm2020/src/lib/keyboard-shortcut/directives/keyboard-shortcut.directive.mjs +56 -0
  19. package/esm2020/src/lib/keyboard-shortcut/keyboard-shortcut.module.mjs +26 -0
  20. package/esm2020/src/lib/keyboard-shortcut/public-api.mjs +3 -0
  21. package/esm2020/src/lib/keyboard-shortcut/spicainternational-ngx-sds-components-src-lib-keyboard-shortcut.mjs +5 -0
  22. package/esm2020/src/lib/modal/modal.component.mjs +3 -3
  23. package/esm2020/src/lib/timer/public-api.mjs +4 -0
  24. package/esm2020/src/lib/timer/services/index.mjs +2 -0
  25. package/esm2020/src/lib/timer/services/timer.service.mjs +99 -0
  26. package/esm2020/src/lib/timer/spicainternational-ngx-sds-components-src-lib-timer.mjs +5 -0
  27. package/esm2020/src/lib/timer/timer.module.mjs +36 -0
  28. package/esm2020/src/lib/timer/utils/index.mjs +2 -0
  29. package/esm2020/src/lib/timer/utils/timer.utils.mjs +97 -0
  30. package/fesm2015/spicainternational-ngx-sds-components-src-lib-color-picker.mjs +10 -26
  31. package/fesm2015/spicainternational-ngx-sds-components-src-lib-color-picker.mjs.map +1 -1
  32. package/fesm2015/spicainternational-ngx-sds-components-src-lib-date-picker.mjs +4 -4
  33. package/fesm2015/spicainternational-ngx-sds-components-src-lib-date-picker.mjs.map +1 -1
  34. package/fesm2015/spicainternational-ngx-sds-components-src-lib-ellipsis.mjs +82 -0
  35. package/fesm2015/spicainternational-ngx-sds-components-src-lib-ellipsis.mjs.map +1 -0
  36. package/fesm2015/spicainternational-ngx-sds-components-src-lib-expansion-panel.mjs +6 -2
  37. package/fesm2015/spicainternational-ngx-sds-components-src-lib-expansion-panel.mjs.map +1 -1
  38. package/fesm2015/spicainternational-ngx-sds-components-src-lib-intersection.mjs +129 -0
  39. package/fesm2015/spicainternational-ngx-sds-components-src-lib-intersection.mjs.map +1 -0
  40. package/fesm2015/spicainternational-ngx-sds-components-src-lib-keyboard-shortcut.mjs +87 -0
  41. package/fesm2015/spicainternational-ngx-sds-components-src-lib-keyboard-shortcut.mjs.map +1 -0
  42. package/fesm2015/spicainternational-ngx-sds-components-src-lib-modal.mjs +2 -2
  43. package/fesm2015/spicainternational-ngx-sds-components-src-lib-modal.mjs.map +1 -1
  44. package/fesm2015/spicainternational-ngx-sds-components-src-lib-timer.mjs +237 -0
  45. package/fesm2015/spicainternational-ngx-sds-components-src-lib-timer.mjs.map +1 -0
  46. package/fesm2015/spicainternational-ngx-sds-components.mjs +4 -0
  47. package/fesm2015/spicainternational-ngx-sds-components.mjs.map +1 -1
  48. package/fesm2020/spicainternational-ngx-sds-components-src-lib-color-picker.mjs +10 -26
  49. package/fesm2020/spicainternational-ngx-sds-components-src-lib-color-picker.mjs.map +1 -1
  50. package/fesm2020/spicainternational-ngx-sds-components-src-lib-date-picker.mjs +4 -4
  51. package/fesm2020/spicainternational-ngx-sds-components-src-lib-date-picker.mjs.map +1 -1
  52. package/fesm2020/spicainternational-ngx-sds-components-src-lib-ellipsis.mjs +81 -0
  53. package/fesm2020/spicainternational-ngx-sds-components-src-lib-ellipsis.mjs.map +1 -0
  54. package/fesm2020/spicainternational-ngx-sds-components-src-lib-expansion-panel.mjs +6 -2
  55. package/fesm2020/spicainternational-ngx-sds-components-src-lib-expansion-panel.mjs.map +1 -1
  56. package/fesm2020/spicainternational-ngx-sds-components-src-lib-intersection.mjs +126 -0
  57. package/fesm2020/spicainternational-ngx-sds-components-src-lib-intersection.mjs.map +1 -0
  58. package/fesm2020/spicainternational-ngx-sds-components-src-lib-keyboard-shortcut.mjs +85 -0
  59. package/fesm2020/spicainternational-ngx-sds-components-src-lib-keyboard-shortcut.mjs.map +1 -0
  60. package/fesm2020/spicainternational-ngx-sds-components-src-lib-modal.mjs +2 -2
  61. package/fesm2020/spicainternational-ngx-sds-components-src-lib-modal.mjs.map +1 -1
  62. package/fesm2020/spicainternational-ngx-sds-components-src-lib-timer.mjs +235 -0
  63. package/fesm2020/spicainternational-ngx-sds-components-src-lib-timer.mjs.map +1 -0
  64. package/fesm2020/spicainternational-ngx-sds-components.mjs +4 -0
  65. package/fesm2020/spicainternational-ngx-sds-components.mjs.map +1 -1
  66. package/package.json +33 -1
  67. package/public-api.d.ts +4 -0
  68. package/src/lib/color-picker/color-picker.component.d.ts +6 -2
  69. package/src/lib/date-picker/date-picker.component.d.ts +1 -1
  70. package/src/lib/date-picker/date-picker.model.d.ts +1 -0
  71. package/src/lib/ellipsis/directives/ellipsis.directive.d.ts +13 -0
  72. package/src/lib/ellipsis/ellipsis.module.d.ts +8 -0
  73. package/src/lib/ellipsis/package.json +10 -0
  74. package/src/lib/ellipsis/public-api.d.ts +2 -0
  75. package/src/lib/ellipsis/spicainternational-ngx-sds-components-src-lib-ellipsis.d.ts +5 -0
  76. package/src/lib/expansion-panel/expansion-panel.component.d.ts +3 -1
  77. package/src/lib/intersection/directives/index.d.ts +1 -0
  78. package/src/lib/intersection/directives/intersection.directive.d.ts +24 -0
  79. package/src/lib/intersection/intersection.module.d.ts +8 -0
  80. package/src/lib/intersection/package.json +10 -0
  81. package/src/lib/intersection/public-api.d.ts +3 -0
  82. package/src/lib/intersection/services/index.d.ts +1 -0
  83. package/src/lib/intersection/services/intersection.service.d.ts +19 -0
  84. package/src/lib/intersection/spicainternational-ngx-sds-components-src-lib-intersection.d.ts +5 -0
  85. package/src/lib/keyboard-shortcut/directives/index.d.ts +1 -0
  86. package/src/lib/keyboard-shortcut/directives/keyboard-shortcut.directive.d.ts +22 -0
  87. package/src/lib/keyboard-shortcut/keyboard-shortcut.module.d.ts +8 -0
  88. package/src/lib/keyboard-shortcut/package.json +10 -0
  89. package/src/lib/keyboard-shortcut/public-api.d.ts +2 -0
  90. package/src/lib/keyboard-shortcut/spicainternational-ngx-sds-components-src-lib-keyboard-shortcut.d.ts +5 -0
  91. package/src/lib/timer/package.json +10 -0
  92. package/src/lib/timer/public-api.d.ts +3 -0
  93. package/src/lib/timer/services/index.d.ts +1 -0
  94. package/src/lib/timer/services/timer.service.d.ts +78 -0
  95. package/src/lib/timer/spicainternational-ngx-sds-components-src-lib-timer.d.ts +5 -0
  96. package/src/lib/timer/timer.module.d.ts +10 -0
  97. package/src/lib/timer/utils/index.d.ts +1 -0
  98. package/src/lib/timer/utils/timer.utils.d.ts +61 -0
@@ -56,10 +56,10 @@ export class SdsModalComponent {
56
56
  }
57
57
  }
58
58
  SdsModalComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.1", ngImport: i0, type: SdsModalComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
59
- SdsModalComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.1", type: SdsModalComponent, selector: "sds-modal", inputs: { modalTitle: "modalTitle", showHeader: "showHeader", showFooter: "showFooter", size: "size", modalDialogId: "modalDialogId", showCloseButton: "showCloseButton", autoFocusCloseButton: "autoFocusCloseButton", translations: "translations", isScrollable: "isScrollable", closeOnEscape: "closeOnEscape" }, outputs: { modalOpen: "modalOpen", modalClose: "modalClose", closeClick: "closeClick", closeEscapeKeypress: "closeEscapeKeypress" }, queries: [{ propertyName: "headerContent", first: true, predicate: ["header"], descendants: true }], viewQueries: [{ propertyName: "_modal", first: true, predicate: ["modal"], descendants: true }, { propertyName: "_closeButton", first: true, predicate: ["closeButton"], descendants: true }], ngImport: i0, template: "<div #modal class=\"modal\" (keydown)=\"onKeydown($event)\" [cdkTrapFocus]=\"isOpen\" [cdkTrapFocusAutoCapture]=\"true\" >\r\n <div\r\n class=\"modal-dialog modal-dialog-centered\"\r\n [class.modal-dialog-scrollable] = \"isScrollable\"\r\n [attr.id]=\"modalDialogId\"\r\n [ngClass]=\"'modal-' + size\"\r\n role=\"document\"\r\n >\r\n <div class=\"modal-content\">\r\n\r\n <div *ngIf=\"showHeader && headerContent\" class=\"modal-header\">\r\n <ng-content select='header'></ng-content>\r\n </div> \r\n\r\n <div *ngIf=\"showHeader && !headerContent\" class=\"modal-header\">\r\n <h5 class=\"modal-title\">{{modalTitle}}</h5>\r\n <button \r\n #closeButton\r\n *ngIf=\"showCloseButton\"\r\n type=\"button\" \r\n class=\"btn-close\" \r\n [title]=\"translations.close ?? ''\"\r\n (click)=\"onCloseButtonClick()\">\r\n </button>\r\n </div>\r\n\r\n <div class=\"modal-body\">\r\n <ng-content></ng-content>\r\n </div>\r\n\r\n <div *ngIf=\"showFooter\" class=\"modal-footer\">\r\n <ng-content select=\"footer\"></ng-content>\r\n </div> \r\n </div>\r\n </div>\r\n</div>", styles: [".modal{background:rgba(0,0,0,.5)}.modal .modal-header button.btn-close:hover{background-color:#e9ecef}.modal.in{opacity:1}.modal.in .modal-dialog{transform:translate(0)}.modal-backdrop.fade{filter:alpha(opacity=0);opacity:0}.modal-backdrop.in{filter:alpha(opacity=50);opacity:.5}@media (min-width: 820px){.modal-820{max-width:820px}}\n"], directives: [{ type: i1.CdkTrapFocus, selector: "[cdkTrapFocus]", inputs: ["cdkTrapFocus", "cdkTrapFocusAutoCapture"], exportAs: ["cdkTrapFocus"] }, { type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }] });
59
+ SdsModalComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.1", type: SdsModalComponent, selector: "sds-modal", inputs: { modalTitle: "modalTitle", showHeader: "showHeader", showFooter: "showFooter", size: "size", modalDialogId: "modalDialogId", showCloseButton: "showCloseButton", autoFocusCloseButton: "autoFocusCloseButton", translations: "translations", isScrollable: "isScrollable", closeOnEscape: "closeOnEscape" }, outputs: { modalOpen: "modalOpen", modalClose: "modalClose", closeClick: "closeClick", closeEscapeKeypress: "closeEscapeKeypress" }, queries: [{ propertyName: "headerContent", first: true, predicate: ["header"], descendants: true }], viewQueries: [{ propertyName: "_modal", first: true, predicate: ["modal"], descendants: true }, { propertyName: "_closeButton", first: true, predicate: ["closeButton"], descendants: true }], ngImport: i0, template: "<div #modal class=\"modal\" (keydown)=\"onKeydown($event)\" [cdkTrapFocus]=\"isOpen\" [cdkTrapFocusAutoCapture]=\"true\" >\r\n <div\r\n class=\"modal-dialog modal-dialog-centered\"\r\n [class.modal-dialog-scrollable] = \"isScrollable\"\r\n [attr.id]=\"modalDialogId\"\r\n [ngClass]=\"'modal-' + size\"\r\n role=\"document\"\r\n >\r\n <div class=\"modal-content\">\r\n\r\n <div *ngIf=\"showHeader && headerContent\" class=\"modal-header\">\r\n <ng-content select='header'></ng-content>\r\n </div> \r\n\r\n <div \r\n *ngIf=\"showHeader && !headerContent\" \r\n class=\"modal-header\"\r\n >\r\n <h5 class=\"modal-title\">{{modalTitle}}</h5>\r\n <button \r\n #closeButton\r\n *ngIf=\"showCloseButton\"\r\n type=\"button\" \r\n class=\"btn-close\" \r\n [title]=\"translations.close ?? ''\"\r\n (click)=\"onCloseButtonClick()\">\r\n </button>\r\n </div>\r\n\r\n <div \r\n class=\"modal-body\"\r\n [class.pt-0]=\"showHeader\"\r\n [class.pb-0]=\"showFooter\"\r\n >\r\n <ng-content></ng-content>\r\n </div>\r\n\r\n <div *ngIf=\"showFooter\" class=\"modal-footer\">\r\n <ng-content select=\"footer\"></ng-content>\r\n </div> \r\n </div>\r\n </div>\r\n</div>", styles: [".modal{background:rgba(0,0,0,.5)}.modal .modal-header button.btn-close:hover{background-color:#e9ecef}.modal.in{opacity:1}.modal.in .modal-dialog{transform:translate(0)}.modal-backdrop.fade{filter:alpha(opacity=0);opacity:0}.modal-backdrop.in{filter:alpha(opacity=50);opacity:.5}@media (min-width: 820px){.modal-820{max-width:820px}}\n"], directives: [{ type: i1.CdkTrapFocus, selector: "[cdkTrapFocus]", inputs: ["cdkTrapFocus", "cdkTrapFocusAutoCapture"], exportAs: ["cdkTrapFocus"] }, { type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }] });
60
60
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.1", ngImport: i0, type: SdsModalComponent, decorators: [{
61
61
  type: Component,
62
- args: [{ selector: 'sds-modal', template: "<div #modal class=\"modal\" (keydown)=\"onKeydown($event)\" [cdkTrapFocus]=\"isOpen\" [cdkTrapFocusAutoCapture]=\"true\" >\r\n <div\r\n class=\"modal-dialog modal-dialog-centered\"\r\n [class.modal-dialog-scrollable] = \"isScrollable\"\r\n [attr.id]=\"modalDialogId\"\r\n [ngClass]=\"'modal-' + size\"\r\n role=\"document\"\r\n >\r\n <div class=\"modal-content\">\r\n\r\n <div *ngIf=\"showHeader && headerContent\" class=\"modal-header\">\r\n <ng-content select='header'></ng-content>\r\n </div> \r\n\r\n <div *ngIf=\"showHeader && !headerContent\" class=\"modal-header\">\r\n <h5 class=\"modal-title\">{{modalTitle}}</h5>\r\n <button \r\n #closeButton\r\n *ngIf=\"showCloseButton\"\r\n type=\"button\" \r\n class=\"btn-close\" \r\n [title]=\"translations.close ?? ''\"\r\n (click)=\"onCloseButtonClick()\">\r\n </button>\r\n </div>\r\n\r\n <div class=\"modal-body\">\r\n <ng-content></ng-content>\r\n </div>\r\n\r\n <div *ngIf=\"showFooter\" class=\"modal-footer\">\r\n <ng-content select=\"footer\"></ng-content>\r\n </div> \r\n </div>\r\n </div>\r\n</div>", styles: [".modal{background:rgba(0,0,0,.5)}.modal .modal-header button.btn-close:hover{background-color:#e9ecef}.modal.in{opacity:1}.modal.in .modal-dialog{transform:translate(0)}.modal-backdrop.fade{filter:alpha(opacity=0);opacity:0}.modal-backdrop.in{filter:alpha(opacity=50);opacity:.5}@media (min-width: 820px){.modal-820{max-width:820px}}\n"] }]
62
+ args: [{ selector: 'sds-modal', template: "<div #modal class=\"modal\" (keydown)=\"onKeydown($event)\" [cdkTrapFocus]=\"isOpen\" [cdkTrapFocusAutoCapture]=\"true\" >\r\n <div\r\n class=\"modal-dialog modal-dialog-centered\"\r\n [class.modal-dialog-scrollable] = \"isScrollable\"\r\n [attr.id]=\"modalDialogId\"\r\n [ngClass]=\"'modal-' + size\"\r\n role=\"document\"\r\n >\r\n <div class=\"modal-content\">\r\n\r\n <div *ngIf=\"showHeader && headerContent\" class=\"modal-header\">\r\n <ng-content select='header'></ng-content>\r\n </div> \r\n\r\n <div \r\n *ngIf=\"showHeader && !headerContent\" \r\n class=\"modal-header\"\r\n >\r\n <h5 class=\"modal-title\">{{modalTitle}}</h5>\r\n <button \r\n #closeButton\r\n *ngIf=\"showCloseButton\"\r\n type=\"button\" \r\n class=\"btn-close\" \r\n [title]=\"translations.close ?? ''\"\r\n (click)=\"onCloseButtonClick()\">\r\n </button>\r\n </div>\r\n\r\n <div \r\n class=\"modal-body\"\r\n [class.pt-0]=\"showHeader\"\r\n [class.pb-0]=\"showFooter\"\r\n >\r\n <ng-content></ng-content>\r\n </div>\r\n\r\n <div *ngIf=\"showFooter\" class=\"modal-footer\">\r\n <ng-content select=\"footer\"></ng-content>\r\n </div> \r\n </div>\r\n </div>\r\n</div>", styles: [".modal{background:rgba(0,0,0,.5)}.modal .modal-header button.btn-close:hover{background-color:#e9ecef}.modal.in{opacity:1}.modal.in .modal-dialog{transform:translate(0)}.modal-backdrop.fade{filter:alpha(opacity=0);opacity:0}.modal-backdrop.in{filter:alpha(opacity=50);opacity:.5}@media (min-width: 820px){.modal-820{max-width:820px}}\n"] }]
63
63
  }], ctorParameters: function () { return []; }, propDecorators: { headerContent: [{
64
64
  type: ContentChild,
65
65
  args: ['header']
@@ -98,4 +98,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.1", ngImpor
98
98
  type: ViewChild,
99
99
  args: ['closeButton', { static: false }]
100
100
  }] } });
101
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9kYWwuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LXNkcy1jb21wb25lbnRzL3NyYy9saWIvbW9kYWwvbW9kYWwuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LXNkcy1jb21wb25lbnRzL3NyYy9saWIvbW9kYWwvbW9kYWwuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNILFNBQVMsRUFFVCxLQUFLLEVBRUwsTUFBTSxFQUNOLFNBQVMsRUFDVCxZQUFZLEVBQ1osWUFBWSxFQUNmLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxvQ0FBb0MsQ0FBQzs7OztBQVE3RCxNQUFNLE9BQU8saUJBQWlCO0lBNkIxQjtRQTVCd0Isa0JBQWEsR0FBZSxFQUFFLGFBQWEsRUFBRSxTQUFTLEVBQUUsQ0FBQztRQUdqRSxlQUFVLEdBQVksSUFBSSxDQUFDO1FBQzNCLGVBQVUsR0FBWSxJQUFJLENBQUM7UUFDM0IsU0FBSSxHQUFzQyxJQUFJLENBQUM7UUFFL0Msb0JBQWUsR0FBWSxJQUFJLENBQUM7UUFDaEMseUJBQW9CLEdBQVksS0FBSyxDQUFDO1FBR3RDLGlCQUFZLEdBQUcsSUFBSSxDQUFDO1FBQ3BCLGtCQUFhLEdBQUcsS0FBSyxDQUFDO1FBRXJCLGNBQVMsR0FBdUIsSUFBSSxZQUFZLEVBQVEsQ0FBQztRQUN6RCxlQUFVLEdBQXVCLElBQUksWUFBWSxFQUFRLENBQUM7UUFFMUQsZUFBVSxHQUF1QixJQUFJLFlBQVksRUFBUSxDQUFDO1FBQzFELHdCQUFtQixHQUF1QixJQUFJLFlBQVksRUFBUSxDQUFDO1FBRTdFLGNBQVMsR0FBRyxPQUFPLENBQUM7UUFFcEIsV0FBTSxHQUFZLEtBQUssQ0FBQztRQU8zQixJQUFJLENBQUMsWUFBWSxHQUFHO1lBQ2hCLEtBQUssRUFBRSxTQUFTO1NBQ25CLENBQUE7SUFDTCxDQUFDO0lBRUQsUUFBUSxLQUFVLENBQUM7SUFFWixJQUFJO1FBQ1AsSUFBSSxJQUFJLENBQUMsTUFBTSxJQUFJLFNBQVMsRUFBRTtZQUMxQixJQUFJLENBQUMsTUFBTSxDQUFDLGFBQWEsQ0FBQyxLQUFLLENBQUMsT0FBTyxHQUFHLE9BQU8sQ0FBQztZQUNsRCxJQUFJLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQztZQUNuQixJQUFHLElBQUksQ0FBQyxvQkFBb0I7Z0JBQ3hCLElBQUksQ0FBQyxZQUFZLEVBQUUsYUFBYSxDQUFDLEtBQUssRUFBRSxDQUFDO1lBQzdDLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxFQUFFLENBQUM7U0FDekI7SUFDTCxDQUFDO0lBRU0sS0FBSztRQUNSLElBQUksSUFBSSxDQUFDLE1BQU0sSUFBSSxTQUFTLEVBQUU7WUFDMUIsSUFBSSxDQUFDLE1BQU0sQ0FBQyxhQUFhLENBQUMsS0FBSyxDQUFDLE9BQU8sR0FBRyxNQUFNLENBQUM7WUFDakQsSUFBSSxDQUFDLE1BQU0sR0FBRyxLQUFLLENBQUM7WUFDcEIsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLEVBQUUsQ0FBQztTQUMxQjtJQUNMLENBQUM7SUFFTSxrQkFBa0I7UUFDckIsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUN2QixJQUFJLENBQUMsS0FBSyxFQUFFLENBQUM7SUFDakIsQ0FBQztJQUVELFNBQVMsQ0FBQyxLQUFvQjtRQUMxQixJQUNJLEtBQUssQ0FBQyxJQUFJLEtBQUssUUFBUTtZQUN2QixJQUFJLENBQUMsYUFBYTtZQUNsQixJQUFJLENBQUMsTUFBTSxJQUFJLFNBQVM7WUFDeEIsSUFBSSxDQUFDLE1BQU0sQ0FBQyxhQUFhLENBQUMsS0FBSyxDQUFDLE9BQU8sS0FBSyxPQUFPLEVBQUM7WUFDaEQsb0VBQW9FO1lBQ3BFLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxJQUFJLEVBQUUsQ0FBQztZQUNoQyxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUM7U0FDcEI7SUFDTCxDQUFDOzs4R0F0RVEsaUJBQWlCO2tHQUFqQixpQkFBaUIsZ3hCQ2xCOUIsNjVDQW1DTTsyRkRqQk8saUJBQWlCO2tCQUw3QixTQUFTOytCQUNJLFdBQVc7MEVBS0csYUFBYTtzQkFBcEMsWUFBWTt1QkFBQyxRQUFRO2dCQUVOLFVBQVU7c0JBQXpCLEtBQUs7Z0JBQ1UsVUFBVTtzQkFBekIsS0FBSztnQkFDVSxVQUFVO3NCQUF6QixLQUFLO2dCQUNVLElBQUk7c0JBQW5CLEtBQUs7Z0JBQ1UsYUFBYTtzQkFBNUIsS0FBSztnQkFDVSxlQUFlO3NCQUE5QixLQUFLO2dCQUNVLG9CQUFvQjtzQkFBbkMsS0FBSztnQkFFVSxZQUFZO3NCQUEzQixLQUFLO2dCQUNVLFlBQVk7c0JBQTNCLEtBQUs7Z0JBQ1UsYUFBYTtzQkFBNUIsS0FBSztnQkFFVyxTQUFTO3NCQUF6QixNQUFNO2dCQUNVLFVBQVU7c0JBQTFCLE1BQU07Z0JBRVUsVUFBVTtzQkFBMUIsTUFBTTtnQkFDVSxtQkFBbUI7c0JBQW5DLE1BQU07Z0JBTXdDLE1BQU07c0JBQXBELFNBQVM7dUJBQUMsT0FBTyxFQUFFLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRTtnQkFDZ0IsWUFBWTtzQkFBaEUsU0FBUzt1QkFBQyxhQUFhLEVBQUUsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcclxuICAgIENvbXBvbmVudCxcclxuICAgIEVsZW1lbnRSZWYsXHJcbiAgICBJbnB1dCxcclxuICAgIE9uSW5pdCxcclxuICAgIE91dHB1dCxcclxuICAgIFZpZXdDaGlsZCxcclxuICAgIEV2ZW50RW1pdHRlcixcclxuICAgIENvbnRlbnRDaGlsZFxyXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBmYVhtYXJrIH0gZnJvbSAnQGZvcnRhd2Vzb21lL3Byby1yZWd1bGFyLXN2Zy1pY29ucyc7XHJcbmltcG9ydCB7IE1vZGFsVHJhbnNsYXRpb25zIH0gZnJvbSAnLi9tb2RhbC5tb2RlbCc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICAgIHNlbGVjdG9yOiAnc2RzLW1vZGFsJyxcclxuICAgIHRlbXBsYXRlVXJsOiAnLi9tb2RhbC5jb21wb25lbnQuaHRtbCcsXHJcbiAgICBzdHlsZVVybHM6IFsnLi9tb2RhbC5jb21wb25lbnQuc2NzcyddLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgU2RzTW9kYWxDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xyXG4gICAgQENvbnRlbnRDaGlsZCgnaGVhZGVyJykgaGVhZGVyQ29udGVudDogRWxlbWVudFJlZiA9IHsgbmF0aXZlRWxlbWVudDogdW5kZWZpbmVkIH07XHJcblxyXG4gICAgQElucHV0KCkgcHVibGljIG1vZGFsVGl0bGU/OiBzdHJpbmc7XHJcbiAgICBASW5wdXQoKSBwdWJsaWMgc2hvd0hlYWRlcjogYm9vbGVhbiA9IHRydWU7XHJcbiAgICBASW5wdXQoKSBwdWJsaWMgc2hvd0Zvb3RlcjogYm9vbGVhbiA9IHRydWU7XHJcbiAgICBASW5wdXQoKSBwdWJsaWMgc2l6ZTogJ3NtJyB8ICdtZCcgfCAnbGcnIHwgJ3hsJyB8ICc4MjAnID0gJ21kJztcclxuICAgIEBJbnB1dCgpIHB1YmxpYyBtb2RhbERpYWxvZ0lkPzogc3RyaW5nO1xyXG4gICAgQElucHV0KCkgcHVibGljIHNob3dDbG9zZUJ1dHRvbjogYm9vbGVhbiA9IHRydWU7XHJcbiAgICBASW5wdXQoKSBwdWJsaWMgYXV0b0ZvY3VzQ2xvc2VCdXR0b246IGJvb2xlYW4gPSBmYWxzZTtcclxuXHJcbiAgICBASW5wdXQoKSBwdWJsaWMgdHJhbnNsYXRpb25zOiBNb2RhbFRyYW5zbGF0aW9ucztcclxuICAgIEBJbnB1dCgpIHB1YmxpYyBpc1Njcm9sbGFibGUgPSB0cnVlO1xyXG4gICAgQElucHV0KCkgcHVibGljIGNsb3NlT25Fc2NhcGUgPSBmYWxzZTtcclxuXHJcbiAgICBAT3V0cHV0KCkgcHVibGljIG1vZGFsT3BlbjogRXZlbnRFbWl0dGVyPHZvaWQ+ID0gbmV3IEV2ZW50RW1pdHRlcjx2b2lkPigpO1xyXG4gICAgQE91dHB1dCgpIHB1YmxpYyBtb2RhbENsb3NlOiBFdmVudEVtaXR0ZXI8dm9pZD4gPSBuZXcgRXZlbnRFbWl0dGVyPHZvaWQ+KCk7XHJcblxyXG4gICAgQE91dHB1dCgpIHB1YmxpYyBjbG9zZUNsaWNrOiBFdmVudEVtaXR0ZXI8dm9pZD4gPSBuZXcgRXZlbnRFbWl0dGVyPHZvaWQ+KCk7XHJcbiAgICBAT3V0cHV0KCkgcHVibGljIGNsb3NlRXNjYXBlS2V5cHJlc3M6IEV2ZW50RW1pdHRlcjx2b2lkPiA9IG5ldyBFdmVudEVtaXR0ZXI8dm9pZD4oKTtcclxuXHJcbiAgICBwdWJsaWMgY2xvc2VJY29uID0gZmFYbWFyaztcclxuXHJcbiAgICBwdWJsaWMgaXNPcGVuOiBib29sZWFuID0gZmFsc2U7XHJcblxyXG4gICAgQFZpZXdDaGlsZCgnbW9kYWwnLCB7IHN0YXRpYzogZmFsc2UgfSkgcHJpdmF0ZSBfbW9kYWw6IEVsZW1lbnRSZWYgfCB1bmRlZmluZWQ7XHJcbiAgICBAVmlld0NoaWxkKCdjbG9zZUJ1dHRvbicsIHsgc3RhdGljOiBmYWxzZSB9KSBwcml2YXRlIF9jbG9zZUJ1dHRvbjogRWxlbWVudFJlZiB8IHVuZGVmaW5lZDtcclxuICAgIFxyXG5cclxuICAgIGNvbnN0cnVjdG9yKCkge1xyXG4gICAgICAgIHRoaXMudHJhbnNsYXRpb25zID0ge1xyXG4gICAgICAgICAgICBjbG9zZTogdW5kZWZpbmVkXHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIG5nT25Jbml0KCk6IHZvaWQge31cclxuXHJcbiAgICBwdWJsaWMgb3BlbigpOiB2b2lkIHtcclxuICAgICAgICBpZiAodGhpcy5fbW9kYWwgIT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgICAgICAgIHRoaXMuX21vZGFsLm5hdGl2ZUVsZW1lbnQuc3R5bGUuZGlzcGxheSA9ICdibG9jayc7XHJcbiAgICAgICAgICAgIHRoaXMuaXNPcGVuID0gdHJ1ZTtcclxuICAgICAgICAgICAgaWYodGhpcy5hdXRvRm9jdXNDbG9zZUJ1dHRvbilcclxuICAgICAgICAgICAgICAgIHRoaXMuX2Nsb3NlQnV0dG9uPy5uYXRpdmVFbGVtZW50LmZvY3VzKCk7XHJcbiAgICAgICAgICAgIHRoaXMubW9kYWxPcGVuLmVtaXQoKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIGNsb3NlKCk6IHZvaWQge1xyXG4gICAgICAgIGlmICh0aGlzLl9tb2RhbCAhPSB1bmRlZmluZWQpIHtcclxuICAgICAgICAgICAgdGhpcy5fbW9kYWwubmF0aXZlRWxlbWVudC5zdHlsZS5kaXNwbGF5ID0gJ25vbmUnO1xyXG4gICAgICAgICAgICB0aGlzLmlzT3BlbiA9IGZhbHNlO1xyXG4gICAgICAgICAgICB0aGlzLm1vZGFsQ2xvc2UuZW1pdCgpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgb25DbG9zZUJ1dHRvbkNsaWNrKCl7XHJcbiAgICAgICAgdGhpcy5jbG9zZUNsaWNrLmVtaXQoKTtcclxuICAgICAgICB0aGlzLmNsb3NlKCk7XHJcbiAgICB9XHJcblxyXG4gICAgb25LZXlkb3duKGV2ZW50OiBLZXlib2FyZEV2ZW50KXtcclxuICAgICAgICBpZiAoXHJcbiAgICAgICAgICAgIGV2ZW50LmNvZGUgPT09ICdFc2NhcGUnICYmXHJcbiAgICAgICAgICAgIHRoaXMuY2xvc2VPbkVzY2FwZSAmJiBcclxuICAgICAgICAgICAgdGhpcy5fbW9kYWwgIT0gdW5kZWZpbmVkICYmIFxyXG4gICAgICAgICAgICB0aGlzLl9tb2RhbC5uYXRpdmVFbGVtZW50LnN0eWxlLmRpc3BsYXkgPT09ICdibG9jaycpe1xyXG4gICAgICAgICAgICAgICAgLy8gY29uc29sZS5sb2coYCR7dGhpcy5jb25zdHJ1Y3Rvci5uYW1lfSBnb3QgZXZlbnQ6ICR7ZXZlbnQuY29kZX1gKTtcclxuICAgICAgICAgICAgICAgIHRoaXMuY2xvc2VFc2NhcGVLZXlwcmVzcy5lbWl0KCk7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmNsb3NlKCk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG59XHJcbiIsIjxkaXYgI21vZGFsIGNsYXNzPVwibW9kYWxcIiAoa2V5ZG93bik9XCJvbktleWRvd24oJGV2ZW50KVwiIFtjZGtUcmFwRm9jdXNdPVwiaXNPcGVuXCIgW2Nka1RyYXBGb2N1c0F1dG9DYXB0dXJlXT1cInRydWVcIiA+XHJcbiAgICA8ZGl2XHJcbiAgICAgICAgY2xhc3M9XCJtb2RhbC1kaWFsb2cgbW9kYWwtZGlhbG9nLWNlbnRlcmVkXCJcclxuICAgICAgICBbY2xhc3MubW9kYWwtZGlhbG9nLXNjcm9sbGFibGVdID0gXCJpc1Njcm9sbGFibGVcIlxyXG4gICAgICAgIFthdHRyLmlkXT1cIm1vZGFsRGlhbG9nSWRcIlxyXG4gICAgICAgIFtuZ0NsYXNzXT1cIidtb2RhbC0nICsgc2l6ZVwiXHJcbiAgICAgICAgcm9sZT1cImRvY3VtZW50XCJcclxuICAgICAgICA+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cIm1vZGFsLWNvbnRlbnRcIj5cclxuXHJcbiAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJzaG93SGVhZGVyICYmIGhlYWRlckNvbnRlbnRcIiBjbGFzcz1cIm1vZGFsLWhlYWRlclwiPlxyXG4gICAgICAgICAgICAgICAgPG5nLWNvbnRlbnQgc2VsZWN0PSdoZWFkZXInPjwvbmctY29udGVudD5cclxuICAgICAgICAgICAgPC9kaXY+ICAgICAgICAgICAgIFxyXG5cclxuICAgICAgICAgICAgPGRpdiAqbmdJZj1cInNob3dIZWFkZXIgJiYgIWhlYWRlckNvbnRlbnRcIiBjbGFzcz1cIm1vZGFsLWhlYWRlclwiPlxyXG4gICAgICAgICAgICAgICAgPGg1IGNsYXNzPVwibW9kYWwtdGl0bGVcIj57e21vZGFsVGl0bGV9fTwvaDU+XHJcbiAgICAgICAgICAgICAgICA8YnV0dG9uIFxyXG4gICAgICAgICAgICAgICAgICAgICNjbG9zZUJ1dHRvblxyXG4gICAgICAgICAgICAgICAgICAgICpuZ0lmPVwic2hvd0Nsb3NlQnV0dG9uXCJcclxuICAgICAgICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCIgXHJcbiAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJidG4tY2xvc2VcIiBcclxuICAgICAgICAgICAgICAgICAgICBbdGl0bGVdPVwidHJhbnNsYXRpb25zLmNsb3NlID8/ICcnXCJcclxuICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwib25DbG9zZUJ1dHRvbkNsaWNrKClcIj5cclxuICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtb2RhbC1ib2R5XCI+XHJcbiAgICAgICAgICAgICAgICA8bmctY29udGVudD48L25nLWNvbnRlbnQ+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgICAgPGRpdiAqbmdJZj1cInNob3dGb290ZXJcIiBjbGFzcz1cIm1vZGFsLWZvb3RlclwiPlxyXG4gICAgICAgICAgICAgICAgPG5nLWNvbnRlbnQgc2VsZWN0PVwiZm9vdGVyXCI+PC9uZy1jb250ZW50PlxyXG4gICAgICAgICAgICA8L2Rpdj4gICAgICAgICAgICBcclxuICAgICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG48L2Rpdj4iXX0=
101
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9kYWwuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LXNkcy1jb21wb25lbnRzL3NyYy9saWIvbW9kYWwvbW9kYWwuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LXNkcy1jb21wb25lbnRzL3NyYy9saWIvbW9kYWwvbW9kYWwuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNILFNBQVMsRUFFVCxLQUFLLEVBRUwsTUFBTSxFQUNOLFNBQVMsRUFDVCxZQUFZLEVBQ1osWUFBWSxFQUNmLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxvQ0FBb0MsQ0FBQzs7OztBQVE3RCxNQUFNLE9BQU8saUJBQWlCO0lBNkIxQjtRQTVCd0Isa0JBQWEsR0FBZSxFQUFFLGFBQWEsRUFBRSxTQUFTLEVBQUUsQ0FBQztRQUdqRSxlQUFVLEdBQVksSUFBSSxDQUFDO1FBQzNCLGVBQVUsR0FBWSxJQUFJLENBQUM7UUFDM0IsU0FBSSxHQUFzQyxJQUFJLENBQUM7UUFFL0Msb0JBQWUsR0FBWSxJQUFJLENBQUM7UUFDaEMseUJBQW9CLEdBQVksS0FBSyxDQUFDO1FBR3RDLGlCQUFZLEdBQUcsSUFBSSxDQUFDO1FBQ3BCLGtCQUFhLEdBQUcsS0FBSyxDQUFDO1FBRXJCLGNBQVMsR0FBdUIsSUFBSSxZQUFZLEVBQVEsQ0FBQztRQUN6RCxlQUFVLEdBQXVCLElBQUksWUFBWSxFQUFRLENBQUM7UUFFMUQsZUFBVSxHQUF1QixJQUFJLFlBQVksRUFBUSxDQUFDO1FBQzFELHdCQUFtQixHQUF1QixJQUFJLFlBQVksRUFBUSxDQUFDO1FBRTdFLGNBQVMsR0FBRyxPQUFPLENBQUM7UUFFcEIsV0FBTSxHQUFZLEtBQUssQ0FBQztRQU8zQixJQUFJLENBQUMsWUFBWSxHQUFHO1lBQ2hCLEtBQUssRUFBRSxTQUFTO1NBQ25CLENBQUE7SUFDTCxDQUFDO0lBRUQsUUFBUSxLQUFVLENBQUM7SUFFWixJQUFJO1FBQ1AsSUFBSSxJQUFJLENBQUMsTUFBTSxJQUFJLFNBQVMsRUFBRTtZQUMxQixJQUFJLENBQUMsTUFBTSxDQUFDLGFBQWEsQ0FBQyxLQUFLLENBQUMsT0FBTyxHQUFHLE9BQU8sQ0FBQztZQUNsRCxJQUFJLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQztZQUNuQixJQUFHLElBQUksQ0FBQyxvQkFBb0I7Z0JBQ3hCLElBQUksQ0FBQyxZQUFZLEVBQUUsYUFBYSxDQUFDLEtBQUssRUFBRSxDQUFDO1lBQzdDLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxFQUFFLENBQUM7U0FDekI7SUFDTCxDQUFDO0lBRU0sS0FBSztRQUNSLElBQUksSUFBSSxDQUFDLE1BQU0sSUFBSSxTQUFTLEVBQUU7WUFDMUIsSUFBSSxDQUFDLE1BQU0sQ0FBQyxhQUFhLENBQUMsS0FBSyxDQUFDLE9BQU8sR0FBRyxNQUFNLENBQUM7WUFDakQsSUFBSSxDQUFDLE1BQU0sR0FBRyxLQUFLLENBQUM7WUFDcEIsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLEVBQUUsQ0FBQztTQUMxQjtJQUNMLENBQUM7SUFFTSxrQkFBa0I7UUFDckIsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUN2QixJQUFJLENBQUMsS0FBSyxFQUFFLENBQUM7SUFDakIsQ0FBQztJQUVELFNBQVMsQ0FBQyxLQUFvQjtRQUMxQixJQUNJLEtBQUssQ0FBQyxJQUFJLEtBQUssUUFBUTtZQUN2QixJQUFJLENBQUMsYUFBYTtZQUNsQixJQUFJLENBQUMsTUFBTSxJQUFJLFNBQVM7WUFDeEIsSUFBSSxDQUFDLE1BQU0sQ0FBQyxhQUFhLENBQUMsS0FBSyxDQUFDLE9BQU8sS0FBSyxPQUFPLEVBQUM7WUFDaEQsb0VBQW9FO1lBQ3BFLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxJQUFJLEVBQUUsQ0FBQztZQUNoQyxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUM7U0FDcEI7SUFDTCxDQUFDOzs4R0F0RVEsaUJBQWlCO2tHQUFqQixpQkFBaUIsZ3hCQ2xCOUIsK2xEQTBDTTsyRkR4Qk8saUJBQWlCO2tCQUw3QixTQUFTOytCQUNJLFdBQVc7MEVBS0csYUFBYTtzQkFBcEMsWUFBWTt1QkFBQyxRQUFRO2dCQUVOLFVBQVU7c0JBQXpCLEtBQUs7Z0JBQ1UsVUFBVTtzQkFBekIsS0FBSztnQkFDVSxVQUFVO3NCQUF6QixLQUFLO2dCQUNVLElBQUk7c0JBQW5CLEtBQUs7Z0JBQ1UsYUFBYTtzQkFBNUIsS0FBSztnQkFDVSxlQUFlO3NCQUE5QixLQUFLO2dCQUNVLG9CQUFvQjtzQkFBbkMsS0FBSztnQkFFVSxZQUFZO3NCQUEzQixLQUFLO2dCQUNVLFlBQVk7c0JBQTNCLEtBQUs7Z0JBQ1UsYUFBYTtzQkFBNUIsS0FBSztnQkFFVyxTQUFTO3NCQUF6QixNQUFNO2dCQUNVLFVBQVU7c0JBQTFCLE1BQU07Z0JBRVUsVUFBVTtzQkFBMUIsTUFBTTtnQkFDVSxtQkFBbUI7c0JBQW5DLE1BQU07Z0JBTXdDLE1BQU07c0JBQXBELFNBQVM7dUJBQUMsT0FBTyxFQUFFLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRTtnQkFDZ0IsWUFBWTtzQkFBaEUsU0FBUzt1QkFBQyxhQUFhLEVBQUUsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcclxuICAgIENvbXBvbmVudCxcclxuICAgIEVsZW1lbnRSZWYsXHJcbiAgICBJbnB1dCxcclxuICAgIE9uSW5pdCxcclxuICAgIE91dHB1dCxcclxuICAgIFZpZXdDaGlsZCxcclxuICAgIEV2ZW50RW1pdHRlcixcclxuICAgIENvbnRlbnRDaGlsZFxyXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBmYVhtYXJrIH0gZnJvbSAnQGZvcnRhd2Vzb21lL3Byby1yZWd1bGFyLXN2Zy1pY29ucyc7XHJcbmltcG9ydCB7IE1vZGFsVHJhbnNsYXRpb25zIH0gZnJvbSAnLi9tb2RhbC5tb2RlbCc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICAgIHNlbGVjdG9yOiAnc2RzLW1vZGFsJyxcclxuICAgIHRlbXBsYXRlVXJsOiAnLi9tb2RhbC5jb21wb25lbnQuaHRtbCcsXHJcbiAgICBzdHlsZVVybHM6IFsnLi9tb2RhbC5jb21wb25lbnQuc2NzcyddLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgU2RzTW9kYWxDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xyXG4gICAgQENvbnRlbnRDaGlsZCgnaGVhZGVyJykgaGVhZGVyQ29udGVudDogRWxlbWVudFJlZiA9IHsgbmF0aXZlRWxlbWVudDogdW5kZWZpbmVkIH07XHJcblxyXG4gICAgQElucHV0KCkgcHVibGljIG1vZGFsVGl0bGU/OiBzdHJpbmc7XHJcbiAgICBASW5wdXQoKSBwdWJsaWMgc2hvd0hlYWRlcjogYm9vbGVhbiA9IHRydWU7XHJcbiAgICBASW5wdXQoKSBwdWJsaWMgc2hvd0Zvb3RlcjogYm9vbGVhbiA9IHRydWU7XHJcbiAgICBASW5wdXQoKSBwdWJsaWMgc2l6ZTogJ3NtJyB8ICdtZCcgfCAnbGcnIHwgJ3hsJyB8ICc4MjAnID0gJ21kJztcclxuICAgIEBJbnB1dCgpIHB1YmxpYyBtb2RhbERpYWxvZ0lkPzogc3RyaW5nO1xyXG4gICAgQElucHV0KCkgcHVibGljIHNob3dDbG9zZUJ1dHRvbjogYm9vbGVhbiA9IHRydWU7XHJcbiAgICBASW5wdXQoKSBwdWJsaWMgYXV0b0ZvY3VzQ2xvc2VCdXR0b246IGJvb2xlYW4gPSBmYWxzZTtcclxuXHJcbiAgICBASW5wdXQoKSBwdWJsaWMgdHJhbnNsYXRpb25zOiBNb2RhbFRyYW5zbGF0aW9ucztcclxuICAgIEBJbnB1dCgpIHB1YmxpYyBpc1Njcm9sbGFibGUgPSB0cnVlO1xyXG4gICAgQElucHV0KCkgcHVibGljIGNsb3NlT25Fc2NhcGUgPSBmYWxzZTtcclxuXHJcbiAgICBAT3V0cHV0KCkgcHVibGljIG1vZGFsT3BlbjogRXZlbnRFbWl0dGVyPHZvaWQ+ID0gbmV3IEV2ZW50RW1pdHRlcjx2b2lkPigpO1xyXG4gICAgQE91dHB1dCgpIHB1YmxpYyBtb2RhbENsb3NlOiBFdmVudEVtaXR0ZXI8dm9pZD4gPSBuZXcgRXZlbnRFbWl0dGVyPHZvaWQ+KCk7XHJcblxyXG4gICAgQE91dHB1dCgpIHB1YmxpYyBjbG9zZUNsaWNrOiBFdmVudEVtaXR0ZXI8dm9pZD4gPSBuZXcgRXZlbnRFbWl0dGVyPHZvaWQ+KCk7XHJcbiAgICBAT3V0cHV0KCkgcHVibGljIGNsb3NlRXNjYXBlS2V5cHJlc3M6IEV2ZW50RW1pdHRlcjx2b2lkPiA9IG5ldyBFdmVudEVtaXR0ZXI8dm9pZD4oKTtcclxuXHJcbiAgICBwdWJsaWMgY2xvc2VJY29uID0gZmFYbWFyaztcclxuXHJcbiAgICBwdWJsaWMgaXNPcGVuOiBib29sZWFuID0gZmFsc2U7XHJcblxyXG4gICAgQFZpZXdDaGlsZCgnbW9kYWwnLCB7IHN0YXRpYzogZmFsc2UgfSkgcHJpdmF0ZSBfbW9kYWw6IEVsZW1lbnRSZWYgfCB1bmRlZmluZWQ7XHJcbiAgICBAVmlld0NoaWxkKCdjbG9zZUJ1dHRvbicsIHsgc3RhdGljOiBmYWxzZSB9KSBwcml2YXRlIF9jbG9zZUJ1dHRvbjogRWxlbWVudFJlZiB8IHVuZGVmaW5lZDtcclxuICAgIFxyXG5cclxuICAgIGNvbnN0cnVjdG9yKCkge1xyXG4gICAgICAgIHRoaXMudHJhbnNsYXRpb25zID0ge1xyXG4gICAgICAgICAgICBjbG9zZTogdW5kZWZpbmVkXHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIG5nT25Jbml0KCk6IHZvaWQge31cclxuXHJcbiAgICBwdWJsaWMgb3BlbigpOiB2b2lkIHtcclxuICAgICAgICBpZiAodGhpcy5fbW9kYWwgIT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgICAgICAgIHRoaXMuX21vZGFsLm5hdGl2ZUVsZW1lbnQuc3R5bGUuZGlzcGxheSA9ICdibG9jayc7XHJcbiAgICAgICAgICAgIHRoaXMuaXNPcGVuID0gdHJ1ZTtcclxuICAgICAgICAgICAgaWYodGhpcy5hdXRvRm9jdXNDbG9zZUJ1dHRvbilcclxuICAgICAgICAgICAgICAgIHRoaXMuX2Nsb3NlQnV0dG9uPy5uYXRpdmVFbGVtZW50LmZvY3VzKCk7XHJcbiAgICAgICAgICAgIHRoaXMubW9kYWxPcGVuLmVtaXQoKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIGNsb3NlKCk6IHZvaWQge1xyXG4gICAgICAgIGlmICh0aGlzLl9tb2RhbCAhPSB1bmRlZmluZWQpIHtcclxuICAgICAgICAgICAgdGhpcy5fbW9kYWwubmF0aXZlRWxlbWVudC5zdHlsZS5kaXNwbGF5ID0gJ25vbmUnO1xyXG4gICAgICAgICAgICB0aGlzLmlzT3BlbiA9IGZhbHNlO1xyXG4gICAgICAgICAgICB0aGlzLm1vZGFsQ2xvc2UuZW1pdCgpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgb25DbG9zZUJ1dHRvbkNsaWNrKCl7XHJcbiAgICAgICAgdGhpcy5jbG9zZUNsaWNrLmVtaXQoKTtcclxuICAgICAgICB0aGlzLmNsb3NlKCk7XHJcbiAgICB9XHJcblxyXG4gICAgb25LZXlkb3duKGV2ZW50OiBLZXlib2FyZEV2ZW50KXtcclxuICAgICAgICBpZiAoXHJcbiAgICAgICAgICAgIGV2ZW50LmNvZGUgPT09ICdFc2NhcGUnICYmXHJcbiAgICAgICAgICAgIHRoaXMuY2xvc2VPbkVzY2FwZSAmJiBcclxuICAgICAgICAgICAgdGhpcy5fbW9kYWwgIT0gdW5kZWZpbmVkICYmIFxyXG4gICAgICAgICAgICB0aGlzLl9tb2RhbC5uYXRpdmVFbGVtZW50LnN0eWxlLmRpc3BsYXkgPT09ICdibG9jaycpe1xyXG4gICAgICAgICAgICAgICAgLy8gY29uc29sZS5sb2coYCR7dGhpcy5jb25zdHJ1Y3Rvci5uYW1lfSBnb3QgZXZlbnQ6ICR7ZXZlbnQuY29kZX1gKTtcclxuICAgICAgICAgICAgICAgIHRoaXMuY2xvc2VFc2NhcGVLZXlwcmVzcy5lbWl0KCk7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmNsb3NlKCk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG59XHJcbiIsIjxkaXYgI21vZGFsIGNsYXNzPVwibW9kYWxcIiAoa2V5ZG93bik9XCJvbktleWRvd24oJGV2ZW50KVwiIFtjZGtUcmFwRm9jdXNdPVwiaXNPcGVuXCIgW2Nka1RyYXBGb2N1c0F1dG9DYXB0dXJlXT1cInRydWVcIiA+XHJcbiAgICA8ZGl2XHJcbiAgICAgICAgY2xhc3M9XCJtb2RhbC1kaWFsb2cgbW9kYWwtZGlhbG9nLWNlbnRlcmVkXCJcclxuICAgICAgICBbY2xhc3MubW9kYWwtZGlhbG9nLXNjcm9sbGFibGVdID0gXCJpc1Njcm9sbGFibGVcIlxyXG4gICAgICAgIFthdHRyLmlkXT1cIm1vZGFsRGlhbG9nSWRcIlxyXG4gICAgICAgIFtuZ0NsYXNzXT1cIidtb2RhbC0nICsgc2l6ZVwiXHJcbiAgICAgICAgcm9sZT1cImRvY3VtZW50XCJcclxuICAgICAgICA+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cIm1vZGFsLWNvbnRlbnRcIj5cclxuXHJcbiAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJzaG93SGVhZGVyICYmIGhlYWRlckNvbnRlbnRcIiBjbGFzcz1cIm1vZGFsLWhlYWRlclwiPlxyXG4gICAgICAgICAgICAgICAgPG5nLWNvbnRlbnQgc2VsZWN0PSdoZWFkZXInPjwvbmctY29udGVudD5cclxuICAgICAgICAgICAgPC9kaXY+ICAgICAgICAgICAgIFxyXG5cclxuICAgICAgICAgICAgPGRpdiBcclxuICAgICAgICAgICAgICAgICpuZ0lmPVwic2hvd0hlYWRlciAmJiAhaGVhZGVyQ29udGVudFwiIFxyXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJtb2RhbC1oZWFkZXJcIlxyXG4gICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgPGg1IGNsYXNzPVwibW9kYWwtdGl0bGVcIj57e21vZGFsVGl0bGV9fTwvaDU+XHJcbiAgICAgICAgICAgICAgICA8YnV0dG9uIFxyXG4gICAgICAgICAgICAgICAgICAgICNjbG9zZUJ1dHRvblxyXG4gICAgICAgICAgICAgICAgICAgICpuZ0lmPVwic2hvd0Nsb3NlQnV0dG9uXCJcclxuICAgICAgICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCIgXHJcbiAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJidG4tY2xvc2VcIiBcclxuICAgICAgICAgICAgICAgICAgICBbdGl0bGVdPVwidHJhbnNsYXRpb25zLmNsb3NlID8/ICcnXCJcclxuICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwib25DbG9zZUJ1dHRvbkNsaWNrKClcIj5cclxuICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgIDxkaXYgXHJcbiAgICAgICAgICAgICAgICBjbGFzcz1cIm1vZGFsLWJvZHlcIlxyXG4gICAgICAgICAgICAgICAgW2NsYXNzLnB0LTBdPVwic2hvd0hlYWRlclwiXHJcbiAgICAgICAgICAgICAgICBbY2xhc3MucGItMF09XCJzaG93Rm9vdGVyXCJcclxuICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgIDxuZy1jb250ZW50PjwvbmctY29udGVudD5cclxuICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICA8ZGl2ICpuZ0lmPVwic2hvd0Zvb3RlclwiIGNsYXNzPVwibW9kYWwtZm9vdGVyXCI+XHJcbiAgICAgICAgICAgICAgICA8bmctY29udGVudCBzZWxlY3Q9XCJmb290ZXJcIj48L25nLWNvbnRlbnQ+XHJcbiAgICAgICAgICAgIDwvZGl2PiAgICAgICAgICAgIFxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcbjwvZGl2PiJdfQ==
@@ -0,0 +1,4 @@
1
+ export * from './timer.module';
2
+ export * from './services';
3
+ export * from './utils';
4
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljLWFwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1zZHMtY29tcG9uZW50cy9zcmMvbGliL3RpbWVyL3B1YmxpYy1hcGkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYyxnQkFBZ0IsQ0FBQTtBQUM5QixjQUFjLFlBQVksQ0FBQTtBQUMxQixjQUFjLFNBQVMsQ0FBQSIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gJy4vdGltZXIubW9kdWxlJ1xyXG5leHBvcnQgKiBmcm9tICcuL3NlcnZpY2VzJ1xyXG5leHBvcnQgKiBmcm9tICcuL3V0aWxzJ1xyXG4iXX0=
@@ -0,0 +1,2 @@
1
+ export * from './timer.service';
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtc2RzLWNvbXBvbmVudHMvc3JjL2xpYi90aW1lci9zZXJ2aWNlcy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLGlCQUFpQixDQUFBIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSAnLi90aW1lci5zZXJ2aWNlJ1xyXG4iXX0=
@@ -0,0 +1,99 @@
1
+ import { Injectable } from '@angular/core';
2
+ import { BehaviorSubject, interval } from 'rxjs';
3
+ import { timeToNextFifteenMinutesInterval, timeToNextFiveMinutesInterval, timeToNextHalfHour, timeToNextHour, timeToNextMinuteInterval, timeToNextSecondInterval, timeToNextTenMinutesInterval } from '../utils';
4
+ import { debounceTime, skip } from 'rxjs/operators';
5
+ import * as i0 from "@angular/core";
6
+ export class TimerService {
7
+ constructor() {
8
+ /**
9
+ * @description
10
+ * Source for fifteen minute interval
11
+ */
12
+ this._fifteenMinutesInterval = new BehaviorSubject(undefined);
13
+ /**
14
+ * @description
15
+ * Source for five minute interval
16
+ */
17
+ this._fiveMinutesInterval = new BehaviorSubject(undefined);
18
+ /**
19
+ * @description
20
+ * Source for half hour interval
21
+ */
22
+ this._fullHourInterval = new BehaviorSubject(undefined);
23
+ /**
24
+ * @description
25
+ * Source for half hour interval
26
+ */
27
+ this._halfHourInterval = new BehaviorSubject(undefined);
28
+ /**
29
+ * @description
30
+ * Source for minute interval
31
+ */
32
+ this._minuteInterval = new BehaviorSubject(undefined);
33
+ /**
34
+ * @description
35
+ * Source for secong interval
36
+ */
37
+ this._secondsInterval = new BehaviorSubject(undefined);
38
+ /**
39
+ * @description
40
+ * Source for ten minutes interval
41
+ */
42
+ this._tenMinutesInterval = new BehaviorSubject(undefined);
43
+ this._subscriptions = [];
44
+ this.fifteenMinutesInterval$ = this._fifteenMinutesInterval.asObservable().pipe(skip(1));
45
+ this.fiveMinutesInterval$ = this._fiveMinutesInterval.asObservable().pipe(skip(1));
46
+ this.fullHourInterval$ = this._fullHourInterval.asObservable().pipe(skip(1));
47
+ this.halfHourInterval$ = this._halfHourInterval.asObservable().pipe(skip(1));
48
+ this.minuteInterval$ = this._minuteInterval.asObservable().pipe().pipe(skip(1));
49
+ this.secondsInterval$ = this._secondsInterval.asObservable().pipe(skip(1));
50
+ this.tenMinutesInterval$ = this._tenMinutesInterval.asObservable().pipe(skip(1));
51
+ const timeOffsetToFullSecond = timeToNextSecondInterval(new Date().getTime());
52
+ // This observable will invoke each second while app is running
53
+ const ticksSubscription = interval(1000).pipe(debounceTime(timeOffsetToFullSecond)).subscribe(intervalTick => {
54
+ const now = new Date().getTime();
55
+ const timeRemainingToNextMinuteInterval = timeToNextMinuteInterval(now);
56
+ const timeRemaingingToNextFiveMinutesInterval = timeToNextFiveMinutesInterval(now);
57
+ const timeRemainingToNextTenMinutesInterval = timeToNextTenMinutesInterval(now);
58
+ const timeRemainingToNextFifteenMinutesInterval = timeToNextFifteenMinutesInterval(now);
59
+ const timeRemainingToNextFullHour = timeToNextHour(now);
60
+ const timeRemainingToNextHalfHour = timeToNextHalfHour(now);
61
+ this._secondsInterval.next();
62
+ // Check if its minute tick
63
+ if (timeRemainingToNextMinuteInterval > 59) {
64
+ this._minuteInterval.next();
65
+ }
66
+ // Check if its five minute interval tick
67
+ if (timeRemaingingToNextFiveMinutesInterval > 299) {
68
+ this._fiveMinutesInterval.next();
69
+ }
70
+ // Check if its ten minute interval
71
+ if (timeRemainingToNextTenMinutesInterval > 599) {
72
+ this._tenMinutesInterval.next();
73
+ }
74
+ // Check if its fifteen minute interval
75
+ if (timeRemainingToNextFifteenMinutesInterval > 899) {
76
+ this._fifteenMinutesInterval.next();
77
+ }
78
+ // Check if its half hour tick
79
+ if (timeRemainingToNextHalfHour > 1799) {
80
+ this._halfHourInterval.next();
81
+ }
82
+ // Check if its full hour tick
83
+ if (timeRemainingToNextFullHour > 3599) {
84
+ this._fullHourInterval.next();
85
+ }
86
+ // Define any additional intervals that might be needed
87
+ });
88
+ this._subscriptions.push(ticksSubscription);
89
+ }
90
+ }
91
+ TimerService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.1", ngImport: i0, type: TimerService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
92
+ TimerService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "13.3.1", ngImport: i0, type: TimerService, providedIn: 'root' });
93
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.1", ngImport: i0, type: TimerService, decorators: [{
94
+ type: Injectable,
95
+ args: [{
96
+ providedIn: 'root'
97
+ }]
98
+ }], ctorParameters: function () { return []; } });
99
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGltZXIuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1zZHMtY29tcG9uZW50cy9zcmMvbGliL3RpbWVyL3NlcnZpY2VzL3RpbWVyLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzQyxPQUFPLEVBQUUsZUFBZSxFQUE0QixRQUFRLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDM0UsT0FBTyxFQUFFLGdDQUFnQyxFQUFFLDZCQUE2QixFQUFFLGtCQUFrQixFQUFFLGNBQWMsRUFBRSx3QkFBd0IsRUFBRSx3QkFBd0IsRUFBRSw0QkFBNEIsRUFBRSxNQUFNLFVBQVUsQ0FBQztBQUNqTixPQUFPLEVBQUUsWUFBWSxFQUFFLElBQUksRUFBRSxNQUFNLGdCQUFnQixDQUFDOztBQUtwRCxNQUFNLE9BQU8sWUFBWTtJQTJGekI7UUFoREk7OztXQUdHO1FBQ0ssNEJBQXVCLEdBQTBCLElBQUksZUFBZSxDQUFPLFNBQVMsQ0FBQyxDQUFBO1FBRTdGOzs7V0FHRztRQUNLLHlCQUFvQixHQUEwQixJQUFJLGVBQWUsQ0FBTyxTQUFTLENBQUMsQ0FBQTtRQUUxRjs7O1dBR0c7UUFDSyxzQkFBaUIsR0FBMEIsSUFBSSxlQUFlLENBQ3RFLFNBQVMsQ0FDUixDQUFDO1FBRUY7OztXQUdHO1FBQ0ssc0JBQWlCLEdBQTBCLElBQUksZUFBZSxDQUN0RSxTQUFTLENBQ1IsQ0FBQztRQUVGOzs7V0FHRztRQUNLLG9CQUFlLEdBQTBCLElBQUksZUFBZSxDQUFPLFNBQVMsQ0FBQyxDQUFBO1FBRXJGOzs7V0FHRztRQUNLLHFCQUFnQixHQUEwQixJQUFJLGVBQWUsQ0FBTyxTQUFTLENBQUMsQ0FBQztRQUV2Rjs7O1dBR0c7UUFDSyx3QkFBbUIsR0FBMEIsSUFBSSxlQUFlLENBQU8sU0FBUyxDQUFDLENBQUE7UUFFakYs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SUFBSSxDQUFDLGlCQUFpQixDQUFDLElBQUksRUFBRSxDQUFDO2FBQ2pDO1lBRUQsOEJBQThCO1lBQzlCLElBQUksMkJBQTJCLEdBQUcsSUFBSSxFQUFFO2dCQUNwQyxJQUFJLENBQUMsaUJBQWlCLENBQUMsSUFBSSxFQUFFLENBQUM7YUFDakM7WUFFRCx1REFBdUQ7UUFDdkQsQ0FBQyxDQUNKLENBQUM7UUFFRixJQUFJLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDO0lBQ2hELENBQUM7O3lHQWhLWSxZQUFZOzZHQUFaLFlBQVksY0FGWCxNQUFNOzJGQUVQLFlBQVk7a0JBSHhCLFVBQVU7bUJBQUM7b0JBQ1YsVUFBVSxFQUFFLE1BQU07aUJBQ25CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QsIE9ic2VydmFibGUsIFN1YnNjcmlwdGlvbiwgaW50ZXJ2YWwgfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgdGltZVRvTmV4dEZpZnRlZW5NaW51dGVzSW50ZXJ2YWwsIHRpbWVUb05leHRGaXZlTWludXRlc0ludGVydmFsLCB0aW1lVG9OZXh0SGFsZkhvdXIsIHRpbWVUb05leHRIb3VyLCB0aW1lVG9OZXh0TWludXRlSW50ZXJ2YWwsIHRpbWVUb05leHRTZWNvbmRJbnRlcnZhbCwgdGltZVRvTmV4dFRlbk1pbnV0ZXNJbnRlcnZhbCB9IGZyb20gJy4uL3V0aWxzJztcclxuaW1wb3J0IHsgZGVib3VuY2VUaW1lLCBza2lwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xyXG5cclxuQEluamVjdGFibGUoe1xyXG4gIHByb3ZpZGVkSW46ICdyb290J1xyXG59KVxyXG5leHBvcnQgY2xhc3MgVGltZXJTZXJ2aWNlIHtcclxuICAgIC8qKlxyXG4gICAgICogQGRlc2NyaXB0aW9uXHJcbiAgICAgKiBUaW1lciBlbWl0dGVkIGV2ZXJ5IDE1IG1pbnV0ZXMgKGUuZy4gMDg6MDAsIDA4OjE1LCAwODozMCwgZXRjLilcclxuICAgICAqL1xyXG4gICAgcHVibGljIGZpZnRlZW5NaW51dGVzSW50ZXJ2YWwkOiBPYnNlcnZhYmxlPHZvaWQ+O1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogQGRlc2NyaXB0aW9uXHJcbiAgICAgKiBUaW1lciBlbWl0dGVkIGV2ZXJ5IDUgbWludXRlcyAoZS5nLiAwODowMCwgMDg6MDUsIDA4OjEwLCBldGMuKVxyXG4gICAgICovXHJcbiAgICBwdWJsaWMgZml2ZU1pbnV0ZXNJbnRlcnZhbCQ6IE9ic2VydmFibGU8dm9pZD47XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBAZGVzY3JpcHRpb25cclxuICAgICAqIFRpbWVyIHRoYXQgaW52b2tlcyBlYWNoIGZ1bGwgaG91clxyXG4gICAgICovXHJcbiAgICBwdWJsaWMgZnVsbEhvdXJJbnRlcnZhbCQ6IE9ic2VydmFibGU8dm9pZD47XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBAZGVzY3JpcHRpb25cclxuICAgICAqIFRpbWVyIGVtaXR0ZWQgZXZlcnkgMzAgbWludXRlcyBhdCBmdWxsIGFuZCBoYWxmIGhvdXIgKGUuZy4gYXQgMTA6MDAsIDEwOjMwLCAxMTowMCwgZXRjLilcclxuICAgICAqL1xyXG4gICAgcHVibGljIGhhbGZIb3VySW50ZXJ2YWwkOiBPYnNlcnZhYmxlPHZvaWQ+O1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogQGRlc2NyaXB0aW9uXHJcbiAgICAgKiBUaW1lciBlbWl0dGVkIGV2ZXJ5IG1pbnV0ZSAoZS5nLiAwODowMCwgMDg6MDEsIDA4OjAyLCBldGMuKVxyXG4gICAgICovXHJcbiAgICBwdWJsaWMgbWludXRlSW50ZXJ2YWwkOiBPYnNlcnZhYmxlPHZvaWQ+O1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogQGRlc2NyaXB0aW9uXHJcbiAgICAgKiBUaW1lciBlbWl0dGVkIGV2ZXJ5IHNlY29uZFxyXG4gICAgICovXHJcbiAgICBwdWJsaWMgc2Vjb25kc0ludGVydmFsJDogT2JzZXJ2YWJsZTx2b2lkPjtcclxuXHJcbiAgICAvKipcclxuICAgICAqIEBkZXNjcmlwdGlvblxyXG4gICAgICogVGltZXIgZW1pdHRlZCBldmVyeSAxMCBtaW51dGVzIChlLmcuIDA4OjAwLCAwODoxMCwgMDg6MjAsIGV0Yy4pXHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyB0ZW5NaW51dGVzSW50ZXJ2YWwkOiBPYnNlcnZhYmxlPHZvaWQ+O1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogQGRlc2NyaXB0aW9uXHJcbiAgICAgKiBTb3VyY2UgZm9yIGZpZnRlZW4gbWludXRlIGludGVydmFsXHJcbiAgICAgKi9cclxuICAgIHByaXZhdGUgX2ZpZnRlZW5NaW51dGVzSW50ZXJ2YWw6IEJlaGF2aW9yU3ViamVjdDx2b2lkPiA9IG5ldyBCZWhhdmlvclN1YmplY3Q8dm9pZD4odW5kZWZpbmVkKVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogQGRlc2NyaXB0aW9uXHJcbiAgICAgKiBTb3VyY2UgZm9yIGZpdmUgbWludXRlIGludGVydmFsXHJcbiAgICAgKi9cclxuICAgIHByaXZhdGUgX2ZpdmVNaW51dGVzSW50ZXJ2YWw6IEJlaGF2aW9yU3ViamVjdDx2b2lkPiA9IG5ldyBCZWhhdmlvclN1YmplY3Q8dm9pZD4odW5kZWZpbmVkKVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogQGRlc2NyaXB0aW9uXHJcbiAgICAgKiBTb3VyY2UgZm9yIGhhbGYgaG91ciBpbnRlcnZhbFxyXG4gICAgICovXHJcbiAgICBwcml2YXRlIF9mdWxsSG91ckludGVydmFsOiBCZWhhdmlvclN1YmplY3Q8dm9pZD4gPSBuZXcgQmVoYXZpb3JTdWJqZWN0PHZvaWQ+KFxyXG4gICAgdW5kZWZpbmVkXHJcbiAgICApO1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogQGRlc2NyaXB0aW9uXHJcbiAgICAgKiBTb3VyY2UgZm9yIGhhbGYgaG91ciBpbnRlcnZhbFxyXG4gICAgICovXHJcbiAgICBwcml2YXRlIF9oYWxmSG91ckludGVydmFsOiBCZWhhdmlvclN1YmplY3Q8dm9pZD4gPSBuZXcgQmVoYXZpb3JTdWJqZWN0PHZvaWQ+KFxyXG4gICAgdW5kZWZpbmVkXHJcbiAgICApO1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogQGRlc2NyaXB0aW9uXHJcbiAgICAgKiBTb3VyY2UgZm9yIG1pbnV0ZSBpbnRlcnZhbFxyXG4gICAgICovXHJcbiAgICBwcml2YXRlIF9taW51dGVJbnRlcnZhbDogQmVoYXZpb3JTdWJqZWN0PHZvaWQ+ID0gbmV3IEJlaGF2aW9yU3ViamVjdDx2b2lkPih1bmRlZmluZWQpXHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBAZGVzY3JpcHRpb25cclxuICAgICAqIFNvdXJjZSBmb3Igc2Vjb25nIGludGVydmFsXHJcbiAgICAgKi9cclxuICAgIHByaXZhdGUgX3NlY29uZHNJbnRlcnZhbDogQmVoYXZpb3JTdWJqZWN0PHZvaWQ+ID0gbmV3IEJlaGF2aW9yU3ViamVjdDx2b2lkPih1bmRlZmluZWQpO1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogQGRlc2NyaXB0aW9uXHJcbiAgICAgKiBTb3VyY2UgZm9yIHRlbiBtaW51dGVzIGludGVydmFsXHJcbiAgICAgKi9cclxuICAgIHByaXZhdGUgX3Rlbk1pbnV0ZXNJbnRlcnZhbDogQmVoYXZpb3JTdWJqZWN0PHZvaWQ+ID0gbmV3IEJlaGF2aW9yU3ViamVjdDx2b2lkPih1bmRlZmluZWQpXHJcblxyXG4gICAgcHJpdmF0ZSBfc3Vic2NyaXB0aW9uczogU3Vic2NyaXB0aW9uW10gPSBbXTtcclxuXHJcbmNvbnN0cnVjdG9yKCkge1xyXG4gICAgdGhpcy5maWZ0ZWVuTWludXRlc0ludGVydmFsJCA9IHRoaXMuX2ZpZnRlZW5NaW51dGVzSW50ZXJ2YWwuYXNPYnNlcnZhYmxlKCkucGlwZShza2lwKDEpKTtcclxuICAgIHRoaXMuZml2ZU1pbnV0ZXNJbnRlcnZhbCQgPSB0aGlzLl9maXZlTWludXRlc0ludGVydmFsLmFzT2JzZXJ2YWJsZSgpLnBpcGUoc2tpcCgxKSk7XHJcbiAgICB0aGlzLmZ1bGxIb3VySW50ZXJ2YWwkID0gdGhpcy5fZnVsbEhvdXJJbnRlcnZhbC5hc09ic2VydmFibGUoKS5waXBlKHNraXAoMSkpO1xyXG4gICAgdGhpcy5oYWxmSG91ckludGVydmFsJCA9IHRoaXMuX2hhbGZIb3VySW50ZXJ2YWwuYXNPYnNlcnZhYmxlKCkucGlwZShza2lwKDEpKTtcclxuICAgIHRoaXMubWludXRlSW50ZXJ2YWwkID0gdGhpcy5fbWludXRlSW50ZXJ2YWwuYXNPYnNlcnZhYmxlKCkucGlwZSgpLnBpcGUoc2tpcCgxKSk7XHJcbiAgICB0aGlzLnNlY29uZHNJbnRlcnZhbCQgPSB0aGlzLl9zZWNvbmRzSW50ZXJ2YWwuYXNPYnNlcnZhYmxlKCkucGlwZShza2lwKDEpKTtcclxuICAgIHRoaXMudGVuTWludXRlc0ludGVydmFsJCA9IHRoaXMuX3Rlbk1pbnV0ZXNJbnRlcnZhbC5hc09ic2VydmFibGUoKS5waXBlKHNraXAoMSkpO1xyXG5cclxuICAgIGNvbnN0IHRpbWVPZmZzZXRUb0Z1bGxTZWNvbmQgPSB0aW1lVG9OZXh0U2Vjb25kSW50ZXJ2YWwobmV3IERhdGUoKS5nZXRUaW1lKCkpXHJcblxyXG4gICAgLy8gVGhpcyBvYnNlcnZhYmxlIHdpbGwgaW52b2tlIGVhY2ggc2Vjb25kIHdoaWxlIGFwcCBpcyBydW5uaW5nXHJcbiAgICBjb25zdCB0aWNrc1N1YnNjcmlwdGlvbjogU3Vic2NyaXB0aW9uID0gaW50ZXJ2YWwoMTAwMCkucGlwZShkZWJvdW5jZVRpbWUodGltZU9mZnNldFRvRnVsbFNlY29uZCkpLnN1YnNjcmliZShcclxuICAgICAgICBpbnRlcnZhbFRpY2sgPT4ge1xyXG4gICAgICAgICAgICBjb25zdCBub3cgPSBuZXcgRGF0ZSgpLmdldFRpbWUoKTtcclxuXHJcbiAgICAgICAgY29uc3QgdGltZVJlbWFpbmluZ1RvTmV4dE1pbnV0ZUludGVydmFsID0gdGltZVRvTmV4dE1pbnV0ZUludGVydmFsKG5vdyk7XHJcblxyXG4gICAgICAgIGNvbnN0IHRpbWVSZW1haW5naW5nVG9OZXh0Rml2ZU1pbnV0ZXNJbnRlcnZhbCA9IHRpbWVUb05leHRGaXZlTWludXRlc0ludGVydmFsKG5vdyk7XHJcblxyXG4gICAgICAgIGNvbnN0IHRpbWVSZW1haW5pbmdUb05leHRUZW5NaW51dGVzSW50ZXJ2YWwgPSB0aW1lVG9OZXh0VGVuTWludXRlc0ludGVydmFsKG5vdyk7XHJcblxyXG4gICAgICAgIGNvbnN0IHRpbWVSZW1haW5pbmdUb05leHRGaWZ0ZWVuTWludXRlc0ludGVydmFsID0gdGltZVRvTmV4dEZpZnRlZW5NaW51dGVzSW50ZXJ2YWwobm93KTtcclxuXHJcbiAgICAgICAgY29uc3QgdGltZVJlbWFpbmluZ1RvTmV4dEZ1bGxIb3VyID0gdGltZVRvTmV4dEhvdXIoXHJcbiAgICAgICAgICAgIG5vd1xyXG4gICAgICAgICk7XHJcblxyXG4gICAgICAgIGNvbnN0IHRpbWVSZW1haW5pbmdUb05leHRIYWxmSG91ciA9IHRpbWVUb05leHRIYWxmSG91cihcclxuICAgICAgICAgICAgbm93XHJcbiAgICAgICAgKTtcclxuXHJcbiAgICAgICAgdGhpcy5fc2Vjb25kc0ludGVydmFsLm5leHQoKTtcclxuXHJcbiAgICAgICAgLy8gQ2hlY2sgaWYgaXRzIG1pbnV0ZSB0aWNrXHJcbiAgICAgICAgaWYgKHRpbWVSZW1haW5pbmdUb05leHRNaW51dGVJbnRlcnZhbCA+IDU5KSB7XHJcbiAgICAgICAgICAgIHRoaXMuX21pbnV0ZUludGVydmFsLm5leHQoKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIC8vIENoZWNrIGlmIGl0cyBmaXZlIG1pbnV0ZSBpbnRlcnZhbCB0aWNrXHJcbiAgICAgICAgaWYgKHRpbWVSZW1haW5naW5nVG9OZXh0Rml2ZU1pbnV0ZXNJbnRlcnZhbCA+IDI5OSkge1xyXG4gICAgICAgICAgICB0aGlzLl9maXZlTWludXRlc0ludGVydmFsLm5leHQoKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIC8vIENoZWNrIGlmIGl0cyB0ZW4gbWludXRlIGludGVydmFsXHJcbiAgICAgICAgaWYgKHRpbWVSZW1haW5pbmdUb05leHRUZW5NaW51dGVzSW50ZXJ2YWwgPiA1OTkpIHtcclxuICAgICAgICAgICAgdGhpcy5fdGVuTWludXRlc0ludGVydmFsLm5leHQoKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIC8vIENoZWNrIGlmIGl0cyBmaWZ0ZWVuIG1pbnV0ZSBpbnRlcnZhbFxyXG4gICAgICAgIGlmICh0aW1lUmVtYWluaW5nVG9OZXh0RmlmdGVlbk1pbnV0ZXNJbnRlcnZhbCA+IDg5OSkge1xyXG4gICAgICAgICAgICB0aGlzLl9maWZ0ZWVuTWludXRlc0ludGVydmFsLm5leHQoKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIC8vIENoZWNrIGlmIGl0cyBoYWxmIGhvdXIgdGlja1xyXG4gICAgICAgIGlmICh0aW1lUmVtYWluaW5nVG9OZXh0SGFsZkhvdXIgPiAxNzk5KSB7XHJcbiAgICAgICAgICAgIHRoaXMuX2hhbGZIb3VySW50ZXJ2YWwubmV4dCgpO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgLy8gQ2hlY2sgaWYgaXRzIGZ1bGwgaG91ciB0aWNrXHJcbiAgICAgICAgaWYgKHRpbWVSZW1haW5pbmdUb05leHRGdWxsSG91ciA+IDM1OTkpIHtcclxuICAgICAgICAgICAgdGhpcy5fZnVsbEhvdXJJbnRlcnZhbC5uZXh0KCk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICAvLyBEZWZpbmUgYW55IGFkZGl0aW9uYWwgaW50ZXJ2YWxzIHRoYXQgbWlnaHQgYmUgbmVlZGVkXHJcbiAgICAgICAgfVxyXG4gICAgKTtcclxuXHJcbiAgICB0aGlzLl9zdWJzY3JpcHRpb25zLnB1c2godGlja3NTdWJzY3JpcHRpb24pO1xyXG59XHJcbn1cclxuIl19
@@ -0,0 +1,5 @@
1
+ /**
2
+ * Generated bundle index. Do not edit.
3
+ */
4
+ export * from './public-api';
5
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3BpY2FpbnRlcm5hdGlvbmFsLW5neC1zZHMtY29tcG9uZW50cy1zcmMtbGliLXRpbWVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LXNkcy1jb21wb25lbnRzL3NyYy9saWIvdGltZXIvc3BpY2FpbnRlcm5hdGlvbmFsLW5neC1zZHMtY29tcG9uZW50cy1zcmMtbGliLXRpbWVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztHQUVHO0FBRUgsY0FBYyxjQUFjLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEdlbmVyYXRlZCBidW5kbGUgaW5kZXguIERvIG5vdCBlZGl0LlxuICovXG5cbmV4cG9ydCAqIGZyb20gJy4vcHVibGljLWFwaSc7XG4iXX0=
@@ -0,0 +1,36 @@
1
+ import { NgModule, Optional, SkipSelf } from '@angular/core';
2
+ import { CommonModule } from '@angular/common';
3
+ import { TimerService } from './services';
4
+ import * as i0 from "@angular/core";
5
+ export class SdsTimerModule {
6
+ constructor(parentModule) {
7
+ if (parentModule) {
8
+ throw new Error('TimerModule is already loaded. Import it in the AppModule only');
9
+ }
10
+ }
11
+ static forRoot() {
12
+ return {
13
+ ngModule: SdsTimerModule,
14
+ providers: [TimerService]
15
+ };
16
+ }
17
+ }
18
+ SdsTimerModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.1", ngImport: i0, type: SdsTimerModule, deps: [{ token: SdsTimerModule, optional: true, skipSelf: true }], target: i0.ɵɵFactoryTarget.NgModule });
19
+ SdsTimerModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "13.3.1", ngImport: i0, type: SdsTimerModule, imports: [CommonModule] });
20
+ SdsTimerModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "13.3.1", ngImport: i0, type: SdsTimerModule, imports: [[
21
+ CommonModule
22
+ ]] });
23
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.1", ngImport: i0, type: SdsTimerModule, decorators: [{
24
+ type: NgModule,
25
+ args: [{
26
+ declarations: [],
27
+ imports: [
28
+ CommonModule
29
+ ]
30
+ }]
31
+ }], ctorParameters: function () { return [{ type: SdsTimerModule, decorators: [{
32
+ type: Optional
33
+ }, {
34
+ type: SkipSelf
35
+ }] }]; } });
36
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGltZXIubW9kdWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LXNkcy1jb21wb25lbnRzL3NyYy9saWIvdGltZXIvdGltZXIubW9kdWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBdUIsUUFBUSxFQUFFLFFBQVEsRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDbEYsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxZQUFZLENBQUM7O0FBUTFDLE1BQU0sT0FBTyxjQUFjO0lBUXZCLFlBQW9DLFlBQTRCO1FBQzVELElBQUksWUFBWSxFQUFFO1lBQ2hCLE1BQU0sSUFBSSxLQUFLLENBQ2IsZ0VBQWdFLENBQ2pFLENBQUM7U0FDSDtJQUNILENBQUM7SUFiSCxNQUFNLENBQUMsT0FBTztRQUNWLE9BQU87WUFDSCxRQUFRLEVBQUUsY0FBYztZQUN4QixTQUFTLEVBQUUsQ0FBQyxZQUFZLENBQUM7U0FDNUIsQ0FBQTtJQUNMLENBQUM7OzJHQU5RLGNBQWMsa0JBUTJCLGNBQWM7NEdBUnZELGNBQWMsWUFIdkIsWUFBWTs0R0FHSCxjQUFjLFlBSmhCO1lBQ1AsWUFBWTtTQUNiOzJGQUVVLGNBQWM7a0JBTjFCLFFBQVE7bUJBQUM7b0JBQ1IsWUFBWSxFQUFFLEVBQUU7b0JBQ2hCLE9BQU8sRUFBRTt3QkFDUCxZQUFZO3FCQUNiO2lCQUNGOzBEQVNxRCxjQUFjOzBCQUFuRCxRQUFROzswQkFBSSxRQUFRIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTW9kdWxlV2l0aFByb3ZpZGVycywgTmdNb2R1bGUsIE9wdGlvbmFsLCBTa2lwU2VsZiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xyXG5pbXBvcnQgeyBUaW1lclNlcnZpY2UgfSBmcm9tICcuL3NlcnZpY2VzJztcclxuXHJcbkBOZ01vZHVsZSh7XHJcbiAgZGVjbGFyYXRpb25zOiBbXSxcclxuICBpbXBvcnRzOiBbXHJcbiAgICBDb21tb25Nb2R1bGVcclxuICBdXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBTZHNUaW1lck1vZHVsZSB7XHJcbiAgICBzdGF0aWMgZm9yUm9vdCgpOiBNb2R1bGVXaXRoUHJvdmlkZXJzPFNkc1RpbWVyTW9kdWxlPiB7XHJcbiAgICAgICAgcmV0dXJuIHtcclxuICAgICAgICAgICAgbmdNb2R1bGU6IFNkc1RpbWVyTW9kdWxlLFxyXG4gICAgICAgICAgICBwcm92aWRlcnM6IFtUaW1lclNlcnZpY2VdXHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIGNvbnN0cnVjdG9yKEBPcHRpb25hbCgpIEBTa2lwU2VsZigpIHBhcmVudE1vZHVsZTogU2RzVGltZXJNb2R1bGUpIHtcclxuICAgICAgICBpZiAocGFyZW50TW9kdWxlKSB7XHJcbiAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXHJcbiAgICAgICAgICAgICdUaW1lck1vZHVsZSBpcyBhbHJlYWR5IGxvYWRlZC4gSW1wb3J0IGl0IGluIHRoZSBBcHBNb2R1bGUgb25seSdcclxuICAgICAgICAgICk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbn1cclxuIl19
@@ -0,0 +1,2 @@
1
+ export * from './timer.utils';
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtc2RzLWNvbXBvbmVudHMvc3JjL2xpYi90aW1lci91dGlscy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLGVBQWUsQ0FBQSIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gJy4vdGltZXIudXRpbHMnXHJcbiJdfQ==
@@ -0,0 +1,97 @@
1
+ /**
2
+ * @public @function timeToNextFifteenMinutesInterval
3
+ * @description
4
+ * Function responsible for calc of time until next fifteen minutes interval. By fifteen minutes interval
5
+ * we mean (e.g. 08:15, 08:30, 08:45,...)
6
+ * @param { number } currentTimestampMs
7
+ * @returns { number }
8
+ */
9
+ export const timeToNextFifteenMinutesInterval = (currentTimestamp) => {
10
+ const timestampSeconds = currentTimestamp / 1000;
11
+ const numberOfSecondsIntoTheCurrentInterval = timestampSeconds % 900;
12
+ const numberOfSecondsToTheNextInterval = 900 - numberOfSecondsIntoTheCurrentInterval;
13
+ return numberOfSecondsToTheNextInterval;
14
+ };
15
+ /**
16
+ * @public @function timeToNextFiveMinutesInterval
17
+ * @description
18
+ * Function responsible for calc of time until next five minutes interval. By five minutes interval
19
+ * we mean (e.g. 08:05, 08:10, 08:15,...)
20
+ * @param { number } currentTimestampMs
21
+ * @returns { number }
22
+ */
23
+ export const timeToNextFiveMinutesInterval = (currentTimestamp) => {
24
+ const timestampSeconds = currentTimestamp / 1000;
25
+ const numberOfSecondsIntoTheCurrentInterval = timestampSeconds % 300;
26
+ const numberOfSecondsToTheNextInterval = 300 - numberOfSecondsIntoTheCurrentInterval;
27
+ return numberOfSecondsToTheNextInterval;
28
+ };
29
+ /**
30
+ * @public @function timeToNextHour
31
+ * @description
32
+ * Function responsible for calc of time until next hour
33
+ * @param { number } currentTimestampMs
34
+ * @returns { number }
35
+ */
36
+ export const timeToNextHour = (currentTimestamp) => {
37
+ const timestampSeconds = currentTimestamp / 1000;
38
+ const numberOfSecondsIntoTheCurrentHour = timestampSeconds % 3600;
39
+ const numberOfSecondsToTheNextHour = 3600 - numberOfSecondsIntoTheCurrentHour;
40
+ return numberOfSecondsToTheNextHour;
41
+ };
42
+ /**
43
+ * @public @function timeToNextHalfHour
44
+ * @description
45
+ * Function responsible for calc of time until half hour
46
+ * @param { number } currentTimestampMs
47
+ * @returns { number }
48
+ */
49
+ export const timeToNextHalfHour = (currentTimestamp) => {
50
+ const timestampSeconds = currentTimestamp / 1000;
51
+ const numberOfSecondsIntoTheCurrentHalfHour = timestampSeconds % 1800;
52
+ const numberOfSecondsToTheNextHalfHour = 1800 - numberOfSecondsIntoTheCurrentHalfHour;
53
+ return numberOfSecondsToTheNextHalfHour;
54
+ };
55
+ /**
56
+ * @public @function timeToNextMinuteInterval
57
+ * @description
58
+ * Function responsible for calc of time until next minute interval. By minute interval
59
+ * we mean (e.g. 08:00, 08:01, 08:02,...)
60
+ * @param { number } currentTimestampMs
61
+ * @returns { number }
62
+ */
63
+ export const timeToNextMinuteInterval = (currentTimestamp) => {
64
+ const timestampSeconds = currentTimestamp / 1000;
65
+ const numberOfSecondsIntoTheCurrentInterval = timestampSeconds % 60;
66
+ const numberOfSecondsToTheNextInterval = 60 - numberOfSecondsIntoTheCurrentInterval;
67
+ return numberOfSecondsToTheNextInterval;
68
+ };
69
+ /**
70
+ * @public @function timeToNextSecondInterval
71
+ * @description
72
+ * Function responsible for calc of time until next second interval. By second interval
73
+ * we mean (e.g. 08:00:01, 08:00:01, 08:00:02,...)
74
+ * @param { number } currentTimestampMs
75
+ * @returns { number }
76
+ */
77
+ export const timeToNextSecondInterval = (currentTimestamp) => {
78
+ const timestampSeconds = currentTimestamp;
79
+ const numberOfMilisecSecondsIntoTheCurrentInterval = timestampSeconds % 999;
80
+ const numberOfMilisecondsSecondsToTheNextInterval = 999 - numberOfMilisecSecondsIntoTheCurrentInterval;
81
+ return numberOfMilisecondsSecondsToTheNextInterval;
82
+ };
83
+ /**
84
+ * @public @function timeToNextTenMinutesInterval
85
+ * @description
86
+ * Function responsible for calc of time until next ten minutes interval. By ten minutes interval
87
+ * we mean (e.g. 08:10, 08:20, 08:30,...)
88
+ * @param { number } currentTimestampMs
89
+ * @returns { number }
90
+ */
91
+ export const timeToNextTenMinutesInterval = (currentTimestamp) => {
92
+ const timestampSeconds = currentTimestamp / 1000;
93
+ const numberOfSecondsIntoTheCurrentInterval = timestampSeconds % 600;
94
+ const numberOfSecondsToTheNextInterval = 600 - numberOfSecondsIntoTheCurrentInterval;
95
+ return numberOfSecondsToTheNextInterval;
96
+ };
97
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGltZXIudXRpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtc2RzLWNvbXBvbmVudHMvc3JjL2xpYi90aW1lci91dGlscy90aW1lci51dGlscy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7OztHQU9HO0FBQ0gsTUFBTSxDQUFDLE1BQU0sZ0NBQWdDLEdBQUcsQ0FBQyxnQkFBd0IsRUFBRSxFQUFFO0lBQ3pFLE1BQU0sZ0JBQWdCLEdBQUcsZ0JBQWdCLEdBQUcsSUFBSSxDQUFDO0lBRWpELE1BQU0scUNBQXFDLEdBQUcsZ0JBQWdCLEdBQUcsR0FBRyxDQUFDO0lBRXJFLE1BQU0sZ0NBQWdDLEdBQUcsR0FBRyxHQUFHLHFDQUFxQyxDQUFDO0lBQ3JGLE9BQU8sZ0NBQWdDLENBQUM7QUFDNUMsQ0FBQyxDQUFBO0FBRUQ7Ozs7Ozs7R0FPRztBQUNILE1BQU0sQ0FBQyxNQUFNLDZCQUE2QixHQUFHLENBQUMsZ0JBQXdCLEVBQUUsRUFBRTtJQUN0RSxNQUFNLGdCQUFnQixHQUFHLGdCQUFnQixHQUFHLElBQUksQ0FBQztJQUVqRCxNQUFNLHFDQUFxQyxHQUFHLGdCQUFnQixHQUFHLEdBQUcsQ0FBQztJQUVyRSxNQUFNLGdDQUFnQyxHQUFHLEdBQUcsR0FBRyxxQ0FBcUMsQ0FBQztJQUNyRixPQUFPLGdDQUFnQyxDQUFDO0FBQzVDLENBQUMsQ0FBQTtBQUVEOzs7Ozs7R0FNRztBQUNILE1BQU0sQ0FBQyxNQUFNLGNBQWMsR0FBRyxDQUFDLGdCQUF3QixFQUFFLEVBQUU7SUFDdkQsTUFBTSxnQkFBZ0IsR0FBRyxnQkFBZ0IsR0FBRyxJQUFJLENBQUM7SUFFakQsTUFBTSxpQ0FBaUMsR0FBRyxnQkFBZ0IsR0FBRyxJQUFJLENBQUM7SUFFbEUsTUFBTSw0QkFBNEIsR0FBRyxJQUFJLEdBQUcsaUNBQWlDLENBQUM7SUFDOUUsT0FBTyw0QkFBNEIsQ0FBQztBQUN0QyxDQUFDLENBQUM7QUFFRjs7Ozs7O0dBTUc7QUFDTCxNQUFNLENBQUMsTUFBTSxrQkFBa0IsR0FBRyxDQUFDLGdCQUF3QixFQUFFLEVBQUU7SUFDM0QsTUFBTSxnQkFBZ0IsR0FBRyxnQkFBZ0IsR0FBRyxJQUFJLENBQUM7SUFFakQsTUFBTSxxQ0FBcUMsR0FBRyxnQkFBZ0IsR0FBRyxJQUFJLENBQUM7SUFFdEUsTUFBTSxnQ0FBZ0MsR0FBRyxJQUFJLEdBQUcscUNBQXFDLENBQUM7SUFDdEYsT0FBTyxnQ0FBZ0MsQ0FBQztBQUMxQyxDQUFDLENBQUM7QUFFSjs7Ozs7OztHQU9HO0FBQ0gsTUFBTSxDQUFDLE1BQU0sd0JBQXdCLEdBQUcsQ0FBQyxnQkFBd0IsRUFBRSxFQUFFO0lBQ2pFLE1BQU0sZ0JBQWdCLEdBQUcsZ0JBQWdCLEdBQUcsSUFBSSxDQUFDO0lBRWpELE1BQU0scUNBQXFDLEdBQUcsZ0JBQWdCLEdBQUcsRUFBRSxDQUFDO0lBRXBFLE1BQU0sZ0NBQWdDLEdBQUcsRUFBRSxHQUFHLHFDQUFxQyxDQUFDO0lBQ3BGLE9BQU8sZ0NBQWdDLENBQUM7QUFDNUMsQ0FBQyxDQUFBO0FBRUQ7Ozs7Ozs7R0FPRztBQUNILE1BQU0sQ0FBQyxNQUFNLHdCQUF3QixHQUFHLENBQUMsZ0JBQXdCLEVBQUUsRUFBRTtJQUNqRSxNQUFNLGdCQUFnQixHQUFHLGdCQUFnQixDQUFDO0lBRTFDLE1BQU0sNENBQTRDLEdBQUcsZ0JBQWdCLEdBQUcsR0FBRyxDQUFDO0lBRTVFLE1BQU0sMkNBQTJDLEdBQUcsR0FBRyxHQUFHLDRDQUE0QyxDQUFDO0lBQ3ZHLE9BQU8sMkNBQTJDLENBQUM7QUFDdkQsQ0FBQyxDQUFBO0FBRUQ7Ozs7Ozs7R0FPRztBQUNILE1BQU0sQ0FBQyxNQUFNLDRCQUE0QixHQUFHLENBQUMsZ0JBQXdCLEVBQUUsRUFBRTtJQUNyRSxNQUFNLGdCQUFnQixHQUFHLGdCQUFnQixHQUFHLElBQUksQ0FBQztJQUVqRCxNQUFNLHFDQUFxQyxHQUFHLGdCQUFnQixHQUFHLEdBQUcsQ0FBQztJQUVyRSxNQUFNLGdDQUFnQyxHQUFHLEdBQUcsR0FBRyxxQ0FBcUMsQ0FBQztJQUNyRixPQUFPLGdDQUFnQyxDQUFDO0FBQzVDLENBQUMsQ0FBQSIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxyXG4gKiBAcHVibGljIEBmdW5jdGlvbiB0aW1lVG9OZXh0RmlmdGVlbk1pbnV0ZXNJbnRlcnZhbFxyXG4gKiBAZGVzY3JpcHRpb25cclxuICogRnVuY3Rpb24gcmVzcG9uc2libGUgZm9yIGNhbGMgb2YgdGltZSB1bnRpbCBuZXh0IGZpZnRlZW4gbWludXRlcyBpbnRlcnZhbC4gQnkgZmlmdGVlbiBtaW51dGVzIGludGVydmFsXHJcbiAqIHdlIG1lYW4gKGUuZy4gMDg6MTUsIDA4OjMwLCAwODo0NSwuLi4pXHJcbiAqIEBwYXJhbSB7IG51bWJlciB9IGN1cnJlbnRUaW1lc3RhbXBNc1xyXG4gKiBAcmV0dXJucyB7IG51bWJlciB9XHJcbiAqL1xyXG5leHBvcnQgY29uc3QgdGltZVRvTmV4dEZpZnRlZW5NaW51dGVzSW50ZXJ2YWwgPSAoY3VycmVudFRpbWVzdGFtcDogbnVtYmVyKSA9PiB7XHJcbiAgICBjb25zdCB0aW1lc3RhbXBTZWNvbmRzID0gY3VycmVudFRpbWVzdGFtcCAvIDEwMDA7XHJcblxyXG4gICAgY29uc3QgbnVtYmVyT2ZTZWNvbmRzSW50b1RoZUN1cnJlbnRJbnRlcnZhbCA9IHRpbWVzdGFtcFNlY29uZHMgJSA5MDA7XHJcblxyXG4gICAgY29uc3QgbnVtYmVyT2ZTZWNvbmRzVG9UaGVOZXh0SW50ZXJ2YWwgPSA5MDAgLSBudW1iZXJPZlNlY29uZHNJbnRvVGhlQ3VycmVudEludGVydmFsO1xyXG4gICAgcmV0dXJuIG51bWJlck9mU2Vjb25kc1RvVGhlTmV4dEludGVydmFsO1xyXG59XHJcblxyXG4vKipcclxuICogQHB1YmxpYyBAZnVuY3Rpb24gdGltZVRvTmV4dEZpdmVNaW51dGVzSW50ZXJ2YWxcclxuICogQGRlc2NyaXB0aW9uXHJcbiAqIEZ1bmN0aW9uIHJlc3BvbnNpYmxlIGZvciBjYWxjIG9mIHRpbWUgdW50aWwgbmV4dCBmaXZlIG1pbnV0ZXMgaW50ZXJ2YWwuIEJ5IGZpdmUgbWludXRlcyBpbnRlcnZhbFxyXG4gKiB3ZSBtZWFuIChlLmcuIDA4OjA1LCAwODoxMCwgMDg6MTUsLi4uKVxyXG4gKiBAcGFyYW0geyBudW1iZXIgfSBjdXJyZW50VGltZXN0YW1wTXNcclxuICogQHJldHVybnMgeyBudW1iZXIgfVxyXG4gKi9cclxuZXhwb3J0IGNvbnN0IHRpbWVUb05leHRGaXZlTWludXRlc0ludGVydmFsID0gKGN1cnJlbnRUaW1lc3RhbXA6IG51bWJlcikgPT4ge1xyXG4gICAgY29uc3QgdGltZXN0YW1wU2Vjb25kcyA9IGN1cnJlbnRUaW1lc3RhbXAgLyAxMDAwO1xyXG5cclxuICAgIGNvbnN0IG51bWJlck9mU2Vjb25kc0ludG9UaGVDdXJyZW50SW50ZXJ2YWwgPSB0aW1lc3RhbXBTZWNvbmRzICUgMzAwO1xyXG5cclxuICAgIGNvbnN0IG51bWJlck9mU2Vjb25kc1RvVGhlTmV4dEludGVydmFsID0gMzAwIC0gbnVtYmVyT2ZTZWNvbmRzSW50b1RoZUN1cnJlbnRJbnRlcnZhbDtcclxuICAgIHJldHVybiBudW1iZXJPZlNlY29uZHNUb1RoZU5leHRJbnRlcnZhbDtcclxufVxyXG5cclxuLyoqXHJcbiAqIEBwdWJsaWMgQGZ1bmN0aW9uIHRpbWVUb05leHRIb3VyXHJcbiAqIEBkZXNjcmlwdGlvblxyXG4gKiBGdW5jdGlvbiByZXNwb25zaWJsZSBmb3IgY2FsYyBvZiB0aW1lIHVudGlsIG5leHQgaG91clxyXG4gKiBAcGFyYW0geyBudW1iZXIgfSBjdXJyZW50VGltZXN0YW1wTXNcclxuICogQHJldHVybnMgeyBudW1iZXIgfVxyXG4gKi9cclxuZXhwb3J0IGNvbnN0IHRpbWVUb05leHRIb3VyID0gKGN1cnJlbnRUaW1lc3RhbXA6IG51bWJlcikgPT4ge1xyXG4gICAgY29uc3QgdGltZXN0YW1wU2Vjb25kcyA9IGN1cnJlbnRUaW1lc3RhbXAgLyAxMDAwO1xyXG5cclxuICAgIGNvbnN0IG51bWJlck9mU2Vjb25kc0ludG9UaGVDdXJyZW50SG91ciA9IHRpbWVzdGFtcFNlY29uZHMgJSAzNjAwO1xyXG5cclxuICAgIGNvbnN0IG51bWJlck9mU2Vjb25kc1RvVGhlTmV4dEhvdXIgPSAzNjAwIC0gbnVtYmVyT2ZTZWNvbmRzSW50b1RoZUN1cnJlbnRIb3VyO1xyXG4gICAgcmV0dXJuIG51bWJlck9mU2Vjb25kc1RvVGhlTmV4dEhvdXI7XHJcbiAgfTtcclxuXHJcbiAgLyoqXHJcbiAgICogQHB1YmxpYyBAZnVuY3Rpb24gdGltZVRvTmV4dEhhbGZIb3VyXHJcbiAgICogQGRlc2NyaXB0aW9uXHJcbiAgICogRnVuY3Rpb24gcmVzcG9uc2libGUgZm9yIGNhbGMgb2YgdGltZSB1bnRpbCBoYWxmIGhvdXJcclxuICAgKiBAcGFyYW0geyBudW1iZXIgfSBjdXJyZW50VGltZXN0YW1wTXNcclxuICAgKiBAcmV0dXJucyB7IG51bWJlciB9XHJcbiAgICovXHJcbmV4cG9ydCBjb25zdCB0aW1lVG9OZXh0SGFsZkhvdXIgPSAoY3VycmVudFRpbWVzdGFtcDogbnVtYmVyKSA9PiB7XHJcbiAgICBjb25zdCB0aW1lc3RhbXBTZWNvbmRzID0gY3VycmVudFRpbWVzdGFtcCAvIDEwMDA7XHJcblxyXG4gICAgY29uc3QgbnVtYmVyT2ZTZWNvbmRzSW50b1RoZUN1cnJlbnRIYWxmSG91ciA9IHRpbWVzdGFtcFNlY29uZHMgJSAxODAwO1xyXG5cclxuICAgIGNvbnN0IG51bWJlck9mU2Vjb25kc1RvVGhlTmV4dEhhbGZIb3VyID0gMTgwMCAtIG51bWJlck9mU2Vjb25kc0ludG9UaGVDdXJyZW50SGFsZkhvdXI7XHJcbiAgICByZXR1cm4gbnVtYmVyT2ZTZWNvbmRzVG9UaGVOZXh0SGFsZkhvdXI7XHJcbiAgfTtcclxuXHJcbi8qKlxyXG4gKiBAcHVibGljIEBmdW5jdGlvbiB0aW1lVG9OZXh0TWludXRlSW50ZXJ2YWxcclxuICogQGRlc2NyaXB0aW9uXHJcbiAqIEZ1bmN0aW9uIHJlc3BvbnNpYmxlIGZvciBjYWxjIG9mIHRpbWUgdW50aWwgbmV4dCBtaW51dGUgaW50ZXJ2YWwuIEJ5IG1pbnV0ZSBpbnRlcnZhbFxyXG4gKiB3ZSBtZWFuIChlLmcuIDA4OjAwLCAwODowMSwgMDg6MDIsLi4uKVxyXG4gKiBAcGFyYW0geyBudW1iZXIgfSBjdXJyZW50VGltZXN0YW1wTXNcclxuICogQHJldHVybnMgeyBudW1iZXIgfVxyXG4gKi9cclxuZXhwb3J0IGNvbnN0IHRpbWVUb05leHRNaW51dGVJbnRlcnZhbCA9IChjdXJyZW50VGltZXN0YW1wOiBudW1iZXIpID0+IHtcclxuICAgIGNvbnN0IHRpbWVzdGFtcFNlY29uZHMgPSBjdXJyZW50VGltZXN0YW1wIC8gMTAwMDtcclxuXHJcbiAgICBjb25zdCBudW1iZXJPZlNlY29uZHNJbnRvVGhlQ3VycmVudEludGVydmFsID0gdGltZXN0YW1wU2Vjb25kcyAlIDYwO1xyXG5cclxuICAgIGNvbnN0IG51bWJlck9mU2Vjb25kc1RvVGhlTmV4dEludGVydmFsID0gNjAgLSBudW1iZXJPZlNlY29uZHNJbnRvVGhlQ3VycmVudEludGVydmFsO1xyXG4gICAgcmV0dXJuIG51bWJlck9mU2Vjb25kc1RvVGhlTmV4dEludGVydmFsO1xyXG59XHJcblxyXG4vKipcclxuICogQHB1YmxpYyBAZnVuY3Rpb24gdGltZVRvTmV4dFNlY29uZEludGVydmFsXHJcbiAqIEBkZXNjcmlwdGlvblxyXG4gKiBGdW5jdGlvbiByZXNwb25zaWJsZSBmb3IgY2FsYyBvZiB0aW1lIHVudGlsIG5leHQgc2Vjb25kIGludGVydmFsLiBCeSBzZWNvbmQgaW50ZXJ2YWxcclxuICogd2UgbWVhbiAoZS5nLiAwODowMDowMSwgMDg6MDA6MDEsIDA4OjAwOjAyLC4uLilcclxuICogQHBhcmFtIHsgbnVtYmVyIH0gY3VycmVudFRpbWVzdGFtcE1zXHJcbiAqIEByZXR1cm5zIHsgbnVtYmVyIH1cclxuICovXHJcbmV4cG9ydCBjb25zdCB0aW1lVG9OZXh0U2Vjb25kSW50ZXJ2YWwgPSAoY3VycmVudFRpbWVzdGFtcDogbnVtYmVyKSA9PiB7XHJcbiAgICBjb25zdCB0aW1lc3RhbXBTZWNvbmRzID0gY3VycmVudFRpbWVzdGFtcDtcclxuXHJcbiAgICBjb25zdCBudW1iZXJPZk1pbGlzZWNTZWNvbmRzSW50b1RoZUN1cnJlbnRJbnRlcnZhbCA9IHRpbWVzdGFtcFNlY29uZHMgJSA5OTk7XHJcblxyXG4gICAgY29uc3QgbnVtYmVyT2ZNaWxpc2Vjb25kc1NlY29uZHNUb1RoZU5leHRJbnRlcnZhbCA9IDk5OSAtIG51bWJlck9mTWlsaXNlY1NlY29uZHNJbnRvVGhlQ3VycmVudEludGVydmFsO1xyXG4gICAgcmV0dXJuIG51bWJlck9mTWlsaXNlY29uZHNTZWNvbmRzVG9UaGVOZXh0SW50ZXJ2YWw7XHJcbn1cclxuXHJcbi8qKlxyXG4gKiBAcHVibGljIEBmdW5jdGlvbiB0aW1lVG9OZXh0VGVuTWludXRlc0ludGVydmFsXHJcbiAqIEBkZXNjcmlwdGlvblxyXG4gKiBGdW5jdGlvbiByZXNwb25zaWJsZSBmb3IgY2FsYyBvZiB0aW1lIHVudGlsIG5leHQgdGVuIG1pbnV0ZXMgaW50ZXJ2YWwuIEJ5IHRlbiBtaW51dGVzIGludGVydmFsXHJcbiAqIHdlIG1lYW4gKGUuZy4gMDg6MTAsIDA4OjIwLCAwODozMCwuLi4pXHJcbiAqIEBwYXJhbSB7IG51bWJlciB9IGN1cnJlbnRUaW1lc3RhbXBNc1xyXG4gKiBAcmV0dXJucyB7IG51bWJlciB9XHJcbiAqL1xyXG5leHBvcnQgY29uc3QgdGltZVRvTmV4dFRlbk1pbnV0ZXNJbnRlcnZhbCA9IChjdXJyZW50VGltZXN0YW1wOiBudW1iZXIpID0+IHtcclxuICAgIGNvbnN0IHRpbWVzdGFtcFNlY29uZHMgPSBjdXJyZW50VGltZXN0YW1wIC8gMTAwMDtcclxuXHJcbiAgICBjb25zdCBudW1iZXJPZlNlY29uZHNJbnRvVGhlQ3VycmVudEludGVydmFsID0gdGltZXN0YW1wU2Vjb25kcyAlIDYwMDtcclxuXHJcbiAgICBjb25zdCBudW1iZXJPZlNlY29uZHNUb1RoZU5leHRJbnRlcnZhbCA9IDYwMCAtIG51bWJlck9mU2Vjb25kc0ludG9UaGVDdXJyZW50SW50ZXJ2YWw7XHJcbiAgICByZXR1cm4gbnVtYmVyT2ZTZWNvbmRzVG9UaGVOZXh0SW50ZXJ2YWw7XHJcbn1cclxuIl19
@@ -8,16 +8,18 @@ import { FontAwesomeModule } from '@fortawesome/angular-fontawesome';
8
8
  import * as i2 from 'devextreme-angular/ui/popover';
9
9
  import { DxPopoverModule } from 'devextreme-angular/ui/popover';
10
10
 
11
- // import { library } from '@fortawesome/fontawesome-svg-core';
12
- // import { faCheck } from '@fortawesome/pro-solid-svg-icons';
13
11
  class SdsColorPickerComponent {
14
12
  constructor() {
15
13
  this.colors = [];
16
14
  this.disabled = false;
17
15
  this.style = 'inline';
16
+ this.showCaret = true;
17
+ this.shape = 'circle';
18
18
  this.showDropdown = false;
19
19
  this.checkIcon = faCheck;
20
20
  this.gridSize = 1;
21
+ this.circleRadius = '100%';
22
+ this.squareRadius = '10%';
21
23
  this.selectedColorChange = new EventEmitter();
22
24
  this.elementUUID = `sds-cp-${Math.ceil(Math.random() * 1000000)}`;
23
25
  // library.add(faCheck);
@@ -39,31 +41,9 @@ class SdsColorPickerComponent {
39
41
  onKeyDown($event) {
40
42
  if ($event.key === 'ArrowUp' || $event.key === 'ArrowDown') {
41
43
  $event.preventDefault();
42
- // const modifier = $event.key === 'ArrowUp' ? -this.gridSize : this.gridSize;
43
- // const color = this.selectedColor || this.defaultColor;
44
- // if (color) {
45
- // const colorIndex = this.colors.indexOf(color);
46
- // let nextColorIndex = (colorIndex + modifier) % this.colors.length;
47
- // if (nextColorIndex < 0) {
48
- // nextColorIndex = this.colors.length + modifier;
49
- // }
50
- // this.selectedColor = this.colors[nextColorIndex];
51
- // console.log(nextColorIndex);
52
- // }
53
44
  }
54
45
  if ($event.key === 'ArrowLeft' || $event.key === 'ArrowRight') {
55
46
  $event.preventDefault();
56
- // const modifier = $event.key === 'ArrowLeft' ? -1 : 1;
57
- // const color = this.selectedColor || this.defaultColor;
58
- // if (color) {
59
- // const colorIndex = this.colors.indexOf(color);
60
- // let nextColorIndex = (colorIndex + modifier) % this.colors.length;
61
- // if (nextColorIndex < 0) {
62
- // nextColorIndex = this.colors.length + modifier;
63
- // }
64
- // this.selectedColor = this.colors[nextColorIndex];
65
- // console.log(nextColorIndex);
66
- // }
67
47
  }
68
48
  }
69
49
  toggleDropdown() {
@@ -71,10 +51,10 @@ class SdsColorPickerComponent {
71
51
  }
72
52
  }
73
53
  SdsColorPickerComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.1", ngImport: i0, type: SdsColorPickerComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
74
- SdsColorPickerComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.1", type: SdsColorPickerComponent, selector: "sds-color-picker", inputs: { colors: "colors", disabled: "disabled", selectedColor: "selectedColor", defaultColor: "defaultColor", style: "style" }, outputs: { selectedColorChange: "selectedColorChange" }, usesOnChanges: true, ngImport: i0, template: "<div\r\n *ngIf=\"style === 'inline'\"\r\n class=\"color-tiles-container-inline\"\r\n>\r\n <div\r\n *ngFor=\"let color of colors\"\r\n [style.background-color]=\"color\"\r\n [style.border-color]=\"color\"\r\n class=\"color-tile\"\r\n [class.selected]=\"selectedColor === color\"\r\n (click)=\"selectColor(color)\"\r\n >\r\n <fa-icon\r\n *ngIf=\"selectedColor === color\"\r\n [icon]=\"['fas', 'check']\"\r\n >\r\n </fa-icon>\r\n </div>\r\n</div>\r\n\r\n\r\n<button\r\n *ngIf=\"style !== 'inline'\"\r\n [id]=\"elementUUID\"\r\n type=\"button\"\r\n class=\"btn d-flex align-items-center\"\r\n \r\n [class.dropdown-toggle]=\"style === 'input'\"\r\n [class.border]=\"style === 'input'\"\r\n \r\n [class.p-1]=\"style == 'plain'\"\r\n [class.rounded-circle]=\"style == 'plain'\"\r\n \r\n aria-controls=\"dropdown-basic\"\r\n (click)=\"toggleDropdown()\"\r\n (keydown)=\"onKeyDown($event)\"\r\n>\r\n\r\n <div\r\n class=\"color-tile color-tile-dropdown\"\r\n [class.color-tile-dropdown]=\"style === 'input'\"\r\n [style.background-color]=\"selectedColor || defaultColor\"\r\n [class.undefined-color]=\"!(selectedColor || defaultColor)\"\r\n >\r\n </div>\r\n <div \r\n *ngIf=\"style === 'input'\"\r\n class=\"caret ms-1\">\r\n </div>\r\n</button>\r\n\r\n<dx-popover\r\n target=\"#{{elementUUID}}\"\r\n position=\"bottom\"\r\n [(visible)]=\"showDropdown\"\r\n>\r\n <div\r\n class=\"color-tiles-container-square\"\r\n [ngStyle]=\"{ 'grid-template-columns': dropdownGridTemplateColumns}\"\r\n >\r\n <div\r\n *ngFor=\"let color of colors\"\r\n [style.background-color]=\"color\"\r\n class=\"color-tile color-tile-popover rounded-circle\"\r\n (click)=\"selectColor(color)\"\r\n >\r\n <fa-icon\r\n *ngIf=\"selectedColor === color || !selectedColor && defaultColor === color\"\r\n [icon]=\"checkIcon\"\r\n >\r\n </fa-icon>\r\n\r\n </div>\r\n </div>\r\n</dx-popover>", styles: [".color-tiles-container-inline{display:flex;gap:.25rem;color:#fff}.color-tiles-container-square{display:grid;grid-gap:.5rem;gap:.5rem;color:#fff}.color-tile{height:2rem;width:2rem;display:flex;align-items:center;justify-content:center;border-radius:100%;cursor:pointer}.color-tile.color-tile-dropdown{height:1.5rem;width:1.5rem}.color-tile.color-tile-popover:hover{filter:brightness(90%)}.color-tile fa-icon{line-height:1rem}.color-tile.undefined-color{border-color:gray;border-style:solid;border-width:1px}.btn:focus-visible{outline:0;box-shadow:0 0 0 .2rem #3b8fc240}.btn:active{border-color:transparent}\n"], components: [{ type: i1.FaIconComponent, selector: "fa-icon", inputs: ["icon", "title", "spin", "pulse", "mask", "styles", "flip", "size", "pull", "border", "inverse", "symbol", "rotate", "fixedWidth", "classes", "transform", "a11yRole"] }, { type: i2.DxPopoverComponent, selector: "dx-popover", inputs: ["animation", "closeOnOutsideClick", "container", "contentTemplate", "copyRootClassesToWrapper", "deferRendering", "disabled", "elementAttr", "height", "hideEvent", "hideOnOutsideClick", "hideOnParentScroll", "hint", "hoverStateEnabled", "maxHeight", "maxWidth", "minHeight", "minWidth", "position", "rtlEnabled", "shading", "shadingColor", "showCloseButton", "showEvent", "showTitle", "target", "title", "titleTemplate", "toolbarItems", "visible", "width", "wrapperAttr"], outputs: ["onContentReady", "onDisposing", "onHidden", "onHiding", "onInitialized", "onOptionChanged", "onShowing", "onShown", "onTitleRendered", "animationChange", "closeOnOutsideClickChange", "containerChange", "contentTemplateChange", "copyRootClassesToWrapperChange", "deferRenderingChange", "disabledChange", "elementAttrChange", "heightChange", "hideEventChange", "hideOnOutsideClickChange", "hideOnParentScrollChange", "hintChange", "hoverStateEnabledChange", "maxHeightChange", "maxWidthChange", "minHeightChange", "minWidthChange", "positionChange", "rtlEnabledChange", "shadingChange", "shadingColorChange", "showCloseButtonChange", "showEventChange", "showTitleChange", "targetChange", "titleChange", "titleTemplateChange", "toolbarItemsChange", "visibleChange", "widthChange", "wrapperAttrChange"] }], directives: [{ type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i3.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }] });
54
+ SdsColorPickerComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.1", type: SdsColorPickerComponent, selector: "sds-color-picker", inputs: { colors: "colors", disabled: "disabled", selectedColor: "selectedColor", defaultColor: "defaultColor", style: "style", showCaret: "showCaret", shape: "shape" }, outputs: { selectedColorChange: "selectedColorChange" }, usesOnChanges: true, ngImport: i0, template: "<div\r\n *ngIf=\"style === 'inline'\"\r\n class=\"color-tiles-container-inline\"\r\n [style.--sds-cp-radius]=\"shape === 'square' ? squareRadius : circleRadius\"\r\n>\r\n <div\r\n *ngFor=\"let color of colors\"\r\n [style.background-color]=\"color\"\r\n [style.border-color]=\"color\"\r\n class=\"color-tile\"\r\n [class.selected]=\"selectedColor === color\"\r\n (click)=\"selectColor(color)\"\r\n >\r\n <fa-icon\r\n *ngIf=\"selectedColor === color\"\r\n [icon]=\"['fas', 'check']\"\r\n >\r\n </fa-icon>\r\n </div>\r\n</div>\r\n\r\n\r\n<button\r\n *ngIf=\"style === 'dropdown'\"\r\n [id]=\"elementUUID\"\r\n type=\"button\"\r\n class=\"btn d-flex align-items-center\"\r\n [class.dropdown-toggle]=\"showCaret\"\r\n [style.--sds-cp-radius]=\"shape === 'square' ? squareRadius : circleRadius\"\r\n aria-controls=\"dropdown-basic\"\r\n (click)=\"toggleDropdown()\"\r\n (keydown)=\"onKeyDown($event)\"\r\n>\r\n\r\n <div\r\n class=\"color-tile color-tile-dropdown\"\r\n [style.background-color]=\"selectedColor || defaultColor\"\r\n [class.undefined-color]=\"!(selectedColor || defaultColor)\"\r\n >\r\n </div>\r\n</button>\r\n\r\n<dx-popover\r\n target=\"#{{elementUUID}}\"\r\n position=\"bottom\"\r\n [(visible)]=\"showDropdown\"\r\n>\r\n <div\r\n class=\"color-tiles-container-square\"\r\n [ngStyle]=\"{ 'grid-template-columns': dropdownGridTemplateColumns}\"\r\n [style.--sds-cp-radius]=\"shape === 'square' ? squareRadius : circleRadius\"\r\n >\r\n <div\r\n *ngFor=\"let color of colors\"\r\n [style.background-color]=\"color\"\r\n class=\"color-tile color-tile-popover\"\r\n (click)=\"selectColor(color)\"\r\n >\r\n <fa-icon\r\n *ngIf=\"selectedColor === color || !selectedColor && defaultColor === color\"\r\n [icon]=\"checkIcon\"\r\n >\r\n </fa-icon>\r\n\r\n </div>\r\n </div>\r\n</dx-popover>", styles: [".color-tiles-container-inline{display:flex;gap:.5rem;color:#fff}.color-tiles-container-square{display:grid;grid-gap:1rem;gap:1rem;color:#fff}.color-tile{height:2rem;width:2rem;display:flex;align-items:center;justify-content:center;border-radius:var(--sds-cp-radius);cursor:pointer}.color-tile.color-tile-popover:hover{filter:brightness(90%)}.color-tile fa-icon{line-height:1rem}.color-tile.undefined-color{border-color:gray;border-style:solid;border-width:1px}.btn:focus-visible{outline:0;box-shadow:0 0 0 .2rem #3b8fc240}.btn:active{border-color:transparent}\n"], components: [{ type: i1.FaIconComponent, selector: "fa-icon", inputs: ["icon", "title", "spin", "pulse", "mask", "styles", "flip", "size", "pull", "border", "inverse", "symbol", "rotate", "fixedWidth", "classes", "transform", "a11yRole"] }, { type: i2.DxPopoverComponent, selector: "dx-popover", inputs: ["animation", "closeOnOutsideClick", "container", "contentTemplate", "copyRootClassesToWrapper", "deferRendering", "disabled", "elementAttr", "height", "hideEvent", "hideOnOutsideClick", "hideOnParentScroll", "hint", "hoverStateEnabled", "maxHeight", "maxWidth", "minHeight", "minWidth", "position", "rtlEnabled", "shading", "shadingColor", "showCloseButton", "showEvent", "showTitle", "target", "title", "titleTemplate", "toolbarItems", "visible", "width", "wrapperAttr"], outputs: ["onContentReady", "onDisposing", "onHidden", "onHiding", "onInitialized", "onOptionChanged", "onShowing", "onShown", "onTitleRendered", "animationChange", "closeOnOutsideClickChange", "containerChange", "contentTemplateChange", "copyRootClassesToWrapperChange", "deferRenderingChange", "disabledChange", "elementAttrChange", "heightChange", "hideEventChange", "hideOnOutsideClickChange", "hideOnParentScrollChange", "hintChange", "hoverStateEnabledChange", "maxHeightChange", "maxWidthChange", "minHeightChange", "minWidthChange", "positionChange", "rtlEnabledChange", "shadingChange", "shadingColorChange", "showCloseButtonChange", "showEventChange", "showTitleChange", "targetChange", "titleChange", "titleTemplateChange", "toolbarItemsChange", "visibleChange", "widthChange", "wrapperAttrChange"] }], directives: [{ type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i3.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }] });
75
55
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.1", ngImport: i0, type: SdsColorPickerComponent, decorators: [{
76
56
  type: Component,
77
- args: [{ selector: 'sds-color-picker', template: "<div\r\n *ngIf=\"style === 'inline'\"\r\n class=\"color-tiles-container-inline\"\r\n>\r\n <div\r\n *ngFor=\"let color of colors\"\r\n [style.background-color]=\"color\"\r\n [style.border-color]=\"color\"\r\n class=\"color-tile\"\r\n [class.selected]=\"selectedColor === color\"\r\n (click)=\"selectColor(color)\"\r\n >\r\n <fa-icon\r\n *ngIf=\"selectedColor === color\"\r\n [icon]=\"['fas', 'check']\"\r\n >\r\n </fa-icon>\r\n </div>\r\n</div>\r\n\r\n\r\n<button\r\n *ngIf=\"style !== 'inline'\"\r\n [id]=\"elementUUID\"\r\n type=\"button\"\r\n class=\"btn d-flex align-items-center\"\r\n \r\n [class.dropdown-toggle]=\"style === 'input'\"\r\n [class.border]=\"style === 'input'\"\r\n \r\n [class.p-1]=\"style == 'plain'\"\r\n [class.rounded-circle]=\"style == 'plain'\"\r\n \r\n aria-controls=\"dropdown-basic\"\r\n (click)=\"toggleDropdown()\"\r\n (keydown)=\"onKeyDown($event)\"\r\n>\r\n\r\n <div\r\n class=\"color-tile color-tile-dropdown\"\r\n [class.color-tile-dropdown]=\"style === 'input'\"\r\n [style.background-color]=\"selectedColor || defaultColor\"\r\n [class.undefined-color]=\"!(selectedColor || defaultColor)\"\r\n >\r\n </div>\r\n <div \r\n *ngIf=\"style === 'input'\"\r\n class=\"caret ms-1\">\r\n </div>\r\n</button>\r\n\r\n<dx-popover\r\n target=\"#{{elementUUID}}\"\r\n position=\"bottom\"\r\n [(visible)]=\"showDropdown\"\r\n>\r\n <div\r\n class=\"color-tiles-container-square\"\r\n [ngStyle]=\"{ 'grid-template-columns': dropdownGridTemplateColumns}\"\r\n >\r\n <div\r\n *ngFor=\"let color of colors\"\r\n [style.background-color]=\"color\"\r\n class=\"color-tile color-tile-popover rounded-circle\"\r\n (click)=\"selectColor(color)\"\r\n >\r\n <fa-icon\r\n *ngIf=\"selectedColor === color || !selectedColor && defaultColor === color\"\r\n [icon]=\"checkIcon\"\r\n >\r\n </fa-icon>\r\n\r\n </div>\r\n </div>\r\n</dx-popover>", styles: [".color-tiles-container-inline{display:flex;gap:.25rem;color:#fff}.color-tiles-container-square{display:grid;grid-gap:.5rem;gap:.5rem;color:#fff}.color-tile{height:2rem;width:2rem;display:flex;align-items:center;justify-content:center;border-radius:100%;cursor:pointer}.color-tile.color-tile-dropdown{height:1.5rem;width:1.5rem}.color-tile.color-tile-popover:hover{filter:brightness(90%)}.color-tile fa-icon{line-height:1rem}.color-tile.undefined-color{border-color:gray;border-style:solid;border-width:1px}.btn:focus-visible{outline:0;box-shadow:0 0 0 .2rem #3b8fc240}.btn:active{border-color:transparent}\n"] }]
57
+ args: [{ selector: 'sds-color-picker', template: "<div\r\n *ngIf=\"style === 'inline'\"\r\n class=\"color-tiles-container-inline\"\r\n [style.--sds-cp-radius]=\"shape === 'square' ? squareRadius : circleRadius\"\r\n>\r\n <div\r\n *ngFor=\"let color of colors\"\r\n [style.background-color]=\"color\"\r\n [style.border-color]=\"color\"\r\n class=\"color-tile\"\r\n [class.selected]=\"selectedColor === color\"\r\n (click)=\"selectColor(color)\"\r\n >\r\n <fa-icon\r\n *ngIf=\"selectedColor === color\"\r\n [icon]=\"['fas', 'check']\"\r\n >\r\n </fa-icon>\r\n </div>\r\n</div>\r\n\r\n\r\n<button\r\n *ngIf=\"style === 'dropdown'\"\r\n [id]=\"elementUUID\"\r\n type=\"button\"\r\n class=\"btn d-flex align-items-center\"\r\n [class.dropdown-toggle]=\"showCaret\"\r\n [style.--sds-cp-radius]=\"shape === 'square' ? squareRadius : circleRadius\"\r\n aria-controls=\"dropdown-basic\"\r\n (click)=\"toggleDropdown()\"\r\n (keydown)=\"onKeyDown($event)\"\r\n>\r\n\r\n <div\r\n class=\"color-tile color-tile-dropdown\"\r\n [style.background-color]=\"selectedColor || defaultColor\"\r\n [class.undefined-color]=\"!(selectedColor || defaultColor)\"\r\n >\r\n </div>\r\n</button>\r\n\r\n<dx-popover\r\n target=\"#{{elementUUID}}\"\r\n position=\"bottom\"\r\n [(visible)]=\"showDropdown\"\r\n>\r\n <div\r\n class=\"color-tiles-container-square\"\r\n [ngStyle]=\"{ 'grid-template-columns': dropdownGridTemplateColumns}\"\r\n [style.--sds-cp-radius]=\"shape === 'square' ? squareRadius : circleRadius\"\r\n >\r\n <div\r\n *ngFor=\"let color of colors\"\r\n [style.background-color]=\"color\"\r\n class=\"color-tile color-tile-popover\"\r\n (click)=\"selectColor(color)\"\r\n >\r\n <fa-icon\r\n *ngIf=\"selectedColor === color || !selectedColor && defaultColor === color\"\r\n [icon]=\"checkIcon\"\r\n >\r\n </fa-icon>\r\n\r\n </div>\r\n </div>\r\n</dx-popover>", styles: [".color-tiles-container-inline{display:flex;gap:.5rem;color:#fff}.color-tiles-container-square{display:grid;grid-gap:1rem;gap:1rem;color:#fff}.color-tile{height:2rem;width:2rem;display:flex;align-items:center;justify-content:center;border-radius:var(--sds-cp-radius);cursor:pointer}.color-tile.color-tile-popover:hover{filter:brightness(90%)}.color-tile fa-icon{line-height:1rem}.color-tile.undefined-color{border-color:gray;border-style:solid;border-width:1px}.btn:focus-visible{outline:0;box-shadow:0 0 0 .2rem #3b8fc240}.btn:active{border-color:transparent}\n"] }]
78
58
  }], ctorParameters: function () { return []; }, propDecorators: { colors: [{
79
59
  type: Input
80
60
  }], disabled: [{
@@ -87,6 +67,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.1", ngImpor
87
67
  type: Output
88
68
  }], style: [{
89
69
  type: Input
70
+ }], showCaret: [{
71
+ type: Input
72
+ }], shape: [{
73
+ type: Input
90
74
  }] } });
91
75
 
92
76
  const components = [SdsColorPickerComponent];
@@ -1 +1 @@
1
- {"version":3,"file":"spicainternational-ngx-sds-components-src-lib-color-picker.mjs","sources":["../../../projects/ngx-sds-components/src/lib/color-picker/color-picker.component.ts","../../../projects/ngx-sds-components/src/lib/color-picker/color-picker.component.html","../../../projects/ngx-sds-components/src/lib/color-picker/color-picker.module.ts","../../../projects/ngx-sds-components/src/lib/color-picker/spicainternational-ngx-sds-components-src-lib-color-picker.ts"],"sourcesContent":["import { Component, EventEmitter, Input, OnChanges, OnInit, Output, SimpleChanges } from '@angular/core';\r\nimport { faCheck } from '@fortawesome/pro-solid-svg-icons';\r\n// import { library } from '@fortawesome/fontawesome-svg-core';\r\n// import { faCheck } from '@fortawesome/pro-solid-svg-icons';\r\n\r\n@Component({\r\n selector: 'sds-color-picker',\r\n templateUrl: './color-picker.component.html',\r\n styleUrls: ['./color-picker.component.scss'],\r\n})\r\nexport class SdsColorPickerComponent implements OnInit, OnChanges {\r\n @Input() colors: Array<string> = [];\r\n @Input() disabled: boolean = false;\r\n @Input() selectedColor?: string;\r\n @Input() defaultColor?: string;\r\n @Output() selectedColorChange: EventEmitter<string>;\r\n @Input() style: 'inline' | 'plain' | 'input' = 'inline'\r\n\r\n // public checkIcon = faCheck;\r\n public dropdownGridTemplateColumns?: string;\r\n public showDropdown = false;\r\n public elementUUID; // = 'sds-cp-' + crypto.randomUUID();\r\n\r\n public checkIcon = faCheck;\r\n\r\n private gridSize = 1;\r\n\r\n constructor() {\r\n this.selectedColorChange = new EventEmitter<string>();\r\n this.elementUUID = `sds-cp-${Math.ceil(Math.random() * 1000000)}`; \r\n\r\n // library.add(faCheck);\r\n }\r\n\r\n ngOnChanges(changes: SimpleChanges): void {\r\n if (changes['colors']) {\r\n this.gridSize = Math.ceil(Math.sqrt(this.colors.length));\r\n this.dropdownGridTemplateColumns = `repeat(${this.gridSize}, 1fr)`;\r\n }\r\n }\r\n\r\n ngOnInit(): void {}\r\n\r\n public selectColor(color: string): void {\r\n if (!this.disabled) {\r\n this.selectedColor = color;\r\n this.selectedColorChange.emit(color);\r\n this.showDropdown = false;\r\n }\r\n }\r\n\r\n public onKeyDown($event: KeyboardEvent) {\r\n\r\n if ($event.key === 'ArrowUp' || $event.key === 'ArrowDown') {\r\n $event.preventDefault();\r\n // const modifier = $event.key === 'ArrowUp' ? -this.gridSize : this.gridSize;\r\n // const color = this.selectedColor || this.defaultColor;\r\n // if (color) {\r\n // const colorIndex = this.colors.indexOf(color);\r\n // let nextColorIndex = (colorIndex + modifier) % this.colors.length;\r\n // if (nextColorIndex < 0) {\r\n // nextColorIndex = this.colors.length + modifier;\r\n // }\r\n // this.selectedColor = this.colors[nextColorIndex];\r\n\r\n // console.log(nextColorIndex);\r\n // } \r\n }\r\n\r\n if ($event.key === 'ArrowLeft' || $event.key === 'ArrowRight') {\r\n $event.preventDefault();\r\n // const modifier = $event.key === 'ArrowLeft' ? -1 : 1;\r\n // const color = this.selectedColor || this.defaultColor;\r\n // if (color) {\r\n // const colorIndex = this.colors.indexOf(color);\r\n // let nextColorIndex = (colorIndex + modifier) % this.colors.length;\r\n // if (nextColorIndex < 0) {\r\n // nextColorIndex = this.colors.length + modifier;\r\n // }\r\n // this.selectedColor = this.colors[nextColorIndex];\r\n\r\n // console.log(nextColorIndex);\r\n // } \r\n } \r\n }\r\n\r\n \r\n public toggleDropdown(){\r\n this.showDropdown = !this.showDropdown;\r\n\r\n }\r\n}\r\n","<div\r\n *ngIf=\"style === 'inline'\"\r\n class=\"color-tiles-container-inline\"\r\n>\r\n <div\r\n *ngFor=\"let color of colors\"\r\n [style.background-color]=\"color\"\r\n [style.border-color]=\"color\"\r\n class=\"color-tile\"\r\n [class.selected]=\"selectedColor === color\"\r\n (click)=\"selectColor(color)\"\r\n >\r\n <fa-icon\r\n *ngIf=\"selectedColor === color\"\r\n [icon]=\"['fas', 'check']\"\r\n >\r\n </fa-icon>\r\n </div>\r\n</div>\r\n\r\n\r\n<button\r\n *ngIf=\"style !== 'inline'\"\r\n [id]=\"elementUUID\"\r\n type=\"button\"\r\n class=\"btn d-flex align-items-center\"\r\n \r\n [class.dropdown-toggle]=\"style === 'input'\"\r\n [class.border]=\"style === 'input'\"\r\n \r\n [class.p-1]=\"style == 'plain'\"\r\n [class.rounded-circle]=\"style == 'plain'\"\r\n \r\n aria-controls=\"dropdown-basic\"\r\n (click)=\"toggleDropdown()\"\r\n (keydown)=\"onKeyDown($event)\"\r\n>\r\n\r\n <div\r\n class=\"color-tile color-tile-dropdown\"\r\n [class.color-tile-dropdown]=\"style === 'input'\"\r\n [style.background-color]=\"selectedColor || defaultColor\"\r\n [class.undefined-color]=\"!(selectedColor || defaultColor)\"\r\n >\r\n </div>\r\n <div \r\n *ngIf=\"style === 'input'\"\r\n class=\"caret ms-1\">\r\n </div>\r\n</button>\r\n\r\n<dx-popover\r\n target=\"#{{elementUUID}}\"\r\n position=\"bottom\"\r\n [(visible)]=\"showDropdown\"\r\n>\r\n <div\r\n class=\"color-tiles-container-square\"\r\n [ngStyle]=\"{ 'grid-template-columns': dropdownGridTemplateColumns}\"\r\n >\r\n <div\r\n *ngFor=\"let color of colors\"\r\n [style.background-color]=\"color\"\r\n class=\"color-tile color-tile-popover rounded-circle\"\r\n (click)=\"selectColor(color)\"\r\n >\r\n <fa-icon\r\n *ngIf=\"selectedColor === color || !selectedColor && defaultColor === color\"\r\n [icon]=\"checkIcon\"\r\n >\r\n </fa-icon>\r\n\r\n </div>\r\n </div>\r\n</dx-popover>","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { SdsColorPickerComponent } from './color-picker.component';\r\nimport { FontAwesomeModule } from '@fortawesome/angular-fontawesome';\r\nimport { DxPopoverModule } from 'devextreme-angular/ui/popover';\r\n\r\n\r\nconst components = [SdsColorPickerComponent];\r\n@NgModule({\r\n declarations: [\r\n ...components\r\n ],\r\n imports: [\r\n CommonModule,\r\n FontAwesomeModule,\r\n DxPopoverModule,\r\n ],\r\n exports: [\r\n ...components\r\n ]\r\n})\r\nexport class SdsColorPickerModule { }\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"spicainternational-ngx-sds-components-src-lib-color-picker.mjs","sources":["../../../projects/ngx-sds-components/src/lib/color-picker/color-picker.component.ts","../../../projects/ngx-sds-components/src/lib/color-picker/color-picker.component.html","../../../projects/ngx-sds-components/src/lib/color-picker/color-picker.module.ts","../../../projects/ngx-sds-components/src/lib/color-picker/spicainternational-ngx-sds-components-src-lib-color-picker.ts"],"sourcesContent":["import { Component, EventEmitter, Input, OnChanges, OnInit, Output, SimpleChanges } from '@angular/core';\r\nimport { faCheck } from '@fortawesome/pro-solid-svg-icons';\r\n\r\n@Component({\r\n selector: 'sds-color-picker',\r\n templateUrl: './color-picker.component.html',\r\n styleUrls: ['./color-picker.component.scss'],\r\n})\r\nexport class SdsColorPickerComponent implements OnInit, OnChanges {\r\n @Input() colors: Array<string> = [];\r\n @Input() disabled: boolean = false;\r\n @Input() selectedColor?: string;\r\n @Input() defaultColor?: string;\r\n @Output() selectedColorChange: EventEmitter<string>;\r\n @Input() style: 'inline' | 'dropdown' = 'inline'\r\n @Input() showCaret: boolean = true;\r\n @Input() shape: 'circle' | 'square' = 'circle';\r\n\r\n // public checkIcon = faCheck;\r\n public dropdownGridTemplateColumns?: string;\r\n public showDropdown = false;\r\n public elementUUID; // = 'sds-cp-' + crypto.randomUUID();\r\n\r\n public checkIcon = faCheck;\r\n\r\n private gridSize = 1;\r\n\r\n public circleRadius = '100%';\r\n public squareRadius = '10%';\r\n\r\n constructor() {\r\n this.selectedColorChange = new EventEmitter<string>();\r\n this.elementUUID = `sds-cp-${Math.ceil(Math.random() * 1000000)}`; \r\n\r\n // library.add(faCheck);\r\n }\r\n\r\n ngOnChanges(changes: SimpleChanges): void {\r\n if (changes['colors']) {\r\n this.gridSize = Math.ceil(Math.sqrt(this.colors.length));\r\n this.dropdownGridTemplateColumns = `repeat(${this.gridSize}, 1fr)`;\r\n }\r\n }\r\n\r\n ngOnInit(): void {}\r\n\r\n public selectColor(color: string): void {\r\n if (!this.disabled) {\r\n this.selectedColor = color;\r\n this.selectedColorChange.emit(color);\r\n this.showDropdown = false;\r\n }\r\n }\r\n\r\n public onKeyDown($event: KeyboardEvent) {\r\n\r\n if ($event.key === 'ArrowUp' || $event.key === 'ArrowDown') {\r\n $event.preventDefault(); \r\n }\r\n\r\n if ($event.key === 'ArrowLeft' || $event.key === 'ArrowRight') {\r\n $event.preventDefault(); \r\n } \r\n }\r\n\r\n \r\n public toggleDropdown(){\r\n this.showDropdown = !this.showDropdown;\r\n\r\n }\r\n}\r\n","<div\r\n *ngIf=\"style === 'inline'\"\r\n class=\"color-tiles-container-inline\"\r\n [style.--sds-cp-radius]=\"shape === 'square' ? squareRadius : circleRadius\"\r\n>\r\n <div\r\n *ngFor=\"let color of colors\"\r\n [style.background-color]=\"color\"\r\n [style.border-color]=\"color\"\r\n class=\"color-tile\"\r\n [class.selected]=\"selectedColor === color\"\r\n (click)=\"selectColor(color)\"\r\n >\r\n <fa-icon\r\n *ngIf=\"selectedColor === color\"\r\n [icon]=\"['fas', 'check']\"\r\n >\r\n </fa-icon>\r\n </div>\r\n</div>\r\n\r\n\r\n<button\r\n *ngIf=\"style === 'dropdown'\"\r\n [id]=\"elementUUID\"\r\n type=\"button\"\r\n class=\"btn d-flex align-items-center\"\r\n [class.dropdown-toggle]=\"showCaret\"\r\n [style.--sds-cp-radius]=\"shape === 'square' ? squareRadius : circleRadius\"\r\n aria-controls=\"dropdown-basic\"\r\n (click)=\"toggleDropdown()\"\r\n (keydown)=\"onKeyDown($event)\"\r\n>\r\n\r\n <div\r\n class=\"color-tile color-tile-dropdown\"\r\n [style.background-color]=\"selectedColor || defaultColor\"\r\n [class.undefined-color]=\"!(selectedColor || defaultColor)\"\r\n >\r\n </div>\r\n</button>\r\n\r\n<dx-popover\r\n target=\"#{{elementUUID}}\"\r\n position=\"bottom\"\r\n [(visible)]=\"showDropdown\"\r\n>\r\n <div\r\n class=\"color-tiles-container-square\"\r\n [ngStyle]=\"{ 'grid-template-columns': dropdownGridTemplateColumns}\"\r\n [style.--sds-cp-radius]=\"shape === 'square' ? squareRadius : circleRadius\"\r\n >\r\n <div\r\n *ngFor=\"let color of colors\"\r\n [style.background-color]=\"color\"\r\n class=\"color-tile color-tile-popover\"\r\n (click)=\"selectColor(color)\"\r\n >\r\n <fa-icon\r\n *ngIf=\"selectedColor === color || !selectedColor && defaultColor === color\"\r\n [icon]=\"checkIcon\"\r\n >\r\n </fa-icon>\r\n\r\n </div>\r\n </div>\r\n</dx-popover>","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { SdsColorPickerComponent } from './color-picker.component';\r\nimport { FontAwesomeModule } from '@fortawesome/angular-fontawesome';\r\nimport { DxPopoverModule } from 'devextreme-angular/ui/popover';\r\n\r\n\r\nconst components = [SdsColorPickerComponent];\r\n@NgModule({\r\n declarations: [\r\n ...components\r\n ],\r\n imports: [\r\n CommonModule,\r\n FontAwesomeModule,\r\n DxPopoverModule,\r\n ],\r\n exports: [\r\n ...components\r\n ]\r\n})\r\nexport class SdsColorPickerModule { }\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}