@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.
- package/esm2020/public-api.mjs +5 -1
- package/esm2020/src/lib/color-picker/color-picker.component.mjs +11 -27
- package/esm2020/src/lib/date-picker/date-picker.component.mjs +5 -5
- package/esm2020/src/lib/date-picker/date-picker.model.mjs +1 -1
- package/esm2020/src/lib/ellipsis/directives/ellipsis.directive.mjs +51 -0
- package/esm2020/src/lib/ellipsis/ellipsis.module.mjs +26 -0
- package/esm2020/src/lib/ellipsis/public-api.mjs +3 -0
- package/esm2020/src/lib/ellipsis/spicainternational-ngx-sds-components-src-lib-ellipsis.mjs +5 -0
- package/esm2020/src/lib/expansion-panel/expansion-panel.component.mjs +7 -3
- package/esm2020/src/lib/intersection/directives/index.mjs +2 -0
- package/esm2020/src/lib/intersection/directives/intersection.directive.mjs +51 -0
- package/esm2020/src/lib/intersection/intersection.module.mjs +22 -0
- package/esm2020/src/lib/intersection/public-api.mjs +4 -0
- package/esm2020/src/lib/intersection/services/index.mjs +2 -0
- package/esm2020/src/lib/intersection/services/intersection.service.mjs +54 -0
- package/esm2020/src/lib/intersection/spicainternational-ngx-sds-components-src-lib-intersection.mjs +5 -0
- package/esm2020/src/lib/keyboard-shortcut/directives/index.mjs +2 -0
- package/esm2020/src/lib/keyboard-shortcut/directives/keyboard-shortcut.directive.mjs +56 -0
- package/esm2020/src/lib/keyboard-shortcut/keyboard-shortcut.module.mjs +26 -0
- package/esm2020/src/lib/keyboard-shortcut/public-api.mjs +3 -0
- package/esm2020/src/lib/keyboard-shortcut/spicainternational-ngx-sds-components-src-lib-keyboard-shortcut.mjs +5 -0
- package/esm2020/src/lib/modal/modal.component.mjs +3 -3
- package/esm2020/src/lib/timer/public-api.mjs +4 -0
- package/esm2020/src/lib/timer/services/index.mjs +2 -0
- package/esm2020/src/lib/timer/services/timer.service.mjs +99 -0
- package/esm2020/src/lib/timer/spicainternational-ngx-sds-components-src-lib-timer.mjs +5 -0
- package/esm2020/src/lib/timer/timer.module.mjs +36 -0
- package/esm2020/src/lib/timer/utils/index.mjs +2 -0
- package/esm2020/src/lib/timer/utils/timer.utils.mjs +97 -0
- package/fesm2015/spicainternational-ngx-sds-components-src-lib-color-picker.mjs +10 -26
- package/fesm2015/spicainternational-ngx-sds-components-src-lib-color-picker.mjs.map +1 -1
- package/fesm2015/spicainternational-ngx-sds-components-src-lib-date-picker.mjs +4 -4
- package/fesm2015/spicainternational-ngx-sds-components-src-lib-date-picker.mjs.map +1 -1
- package/fesm2015/spicainternational-ngx-sds-components-src-lib-ellipsis.mjs +82 -0
- package/fesm2015/spicainternational-ngx-sds-components-src-lib-ellipsis.mjs.map +1 -0
- package/fesm2015/spicainternational-ngx-sds-components-src-lib-expansion-panel.mjs +6 -2
- package/fesm2015/spicainternational-ngx-sds-components-src-lib-expansion-panel.mjs.map +1 -1
- package/fesm2015/spicainternational-ngx-sds-components-src-lib-intersection.mjs +129 -0
- package/fesm2015/spicainternational-ngx-sds-components-src-lib-intersection.mjs.map +1 -0
- package/fesm2015/spicainternational-ngx-sds-components-src-lib-keyboard-shortcut.mjs +87 -0
- package/fesm2015/spicainternational-ngx-sds-components-src-lib-keyboard-shortcut.mjs.map +1 -0
- package/fesm2015/spicainternational-ngx-sds-components-src-lib-modal.mjs +2 -2
- package/fesm2015/spicainternational-ngx-sds-components-src-lib-modal.mjs.map +1 -1
- package/fesm2015/spicainternational-ngx-sds-components-src-lib-timer.mjs +237 -0
- package/fesm2015/spicainternational-ngx-sds-components-src-lib-timer.mjs.map +1 -0
- package/fesm2015/spicainternational-ngx-sds-components.mjs +4 -0
- package/fesm2015/spicainternational-ngx-sds-components.mjs.map +1 -1
- package/fesm2020/spicainternational-ngx-sds-components-src-lib-color-picker.mjs +10 -26
- package/fesm2020/spicainternational-ngx-sds-components-src-lib-color-picker.mjs.map +1 -1
- package/fesm2020/spicainternational-ngx-sds-components-src-lib-date-picker.mjs +4 -4
- package/fesm2020/spicainternational-ngx-sds-components-src-lib-date-picker.mjs.map +1 -1
- package/fesm2020/spicainternational-ngx-sds-components-src-lib-ellipsis.mjs +81 -0
- package/fesm2020/spicainternational-ngx-sds-components-src-lib-ellipsis.mjs.map +1 -0
- package/fesm2020/spicainternational-ngx-sds-components-src-lib-expansion-panel.mjs +6 -2
- package/fesm2020/spicainternational-ngx-sds-components-src-lib-expansion-panel.mjs.map +1 -1
- package/fesm2020/spicainternational-ngx-sds-components-src-lib-intersection.mjs +126 -0
- package/fesm2020/spicainternational-ngx-sds-components-src-lib-intersection.mjs.map +1 -0
- package/fesm2020/spicainternational-ngx-sds-components-src-lib-keyboard-shortcut.mjs +85 -0
- package/fesm2020/spicainternational-ngx-sds-components-src-lib-keyboard-shortcut.mjs.map +1 -0
- package/fesm2020/spicainternational-ngx-sds-components-src-lib-modal.mjs +2 -2
- package/fesm2020/spicainternational-ngx-sds-components-src-lib-modal.mjs.map +1 -1
- package/fesm2020/spicainternational-ngx-sds-components-src-lib-timer.mjs +235 -0
- package/fesm2020/spicainternational-ngx-sds-components-src-lib-timer.mjs.map +1 -0
- package/fesm2020/spicainternational-ngx-sds-components.mjs +4 -0
- package/fesm2020/spicainternational-ngx-sds-components.mjs.map +1 -1
- package/package.json +33 -1
- package/public-api.d.ts +4 -0
- package/src/lib/color-picker/color-picker.component.d.ts +6 -2
- package/src/lib/date-picker/date-picker.component.d.ts +1 -1
- package/src/lib/date-picker/date-picker.model.d.ts +1 -0
- package/src/lib/ellipsis/directives/ellipsis.directive.d.ts +13 -0
- package/src/lib/ellipsis/ellipsis.module.d.ts +8 -0
- package/src/lib/ellipsis/package.json +10 -0
- package/src/lib/ellipsis/public-api.d.ts +2 -0
- package/src/lib/ellipsis/spicainternational-ngx-sds-components-src-lib-ellipsis.d.ts +5 -0
- package/src/lib/expansion-panel/expansion-panel.component.d.ts +3 -1
- package/src/lib/intersection/directives/index.d.ts +1 -0
- package/src/lib/intersection/directives/intersection.directive.d.ts +24 -0
- package/src/lib/intersection/intersection.module.d.ts +8 -0
- package/src/lib/intersection/package.json +10 -0
- package/src/lib/intersection/public-api.d.ts +3 -0
- package/src/lib/intersection/services/index.d.ts +1 -0
- package/src/lib/intersection/services/intersection.service.d.ts +19 -0
- package/src/lib/intersection/spicainternational-ngx-sds-components-src-lib-intersection.d.ts +5 -0
- package/src/lib/keyboard-shortcut/directives/index.d.ts +1 -0
- package/src/lib/keyboard-shortcut/directives/keyboard-shortcut.directive.d.ts +22 -0
- package/src/lib/keyboard-shortcut/keyboard-shortcut.module.d.ts +8 -0
- package/src/lib/keyboard-shortcut/package.json +10 -0
- package/src/lib/keyboard-shortcut/public-api.d.ts +2 -0
- package/src/lib/keyboard-shortcut/spicainternational-ngx-sds-components-src-lib-keyboard-shortcut.d.ts +5 -0
- package/src/lib/timer/package.json +10 -0
- package/src/lib/timer/public-api.d.ts +3 -0
- package/src/lib/timer/services/index.d.ts +1 -0
- package/src/lib/timer/services/timer.service.d.ts +78 -0
- package/src/lib/timer/spicainternational-ngx-sds-components-src-lib-timer.d.ts +5 -0
- package/src/lib/timer/timer.module.d.ts +10 -0
- package/src/lib/timer/utils/index.d.ts +1 -0
- 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,
|
|
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
|
|
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
|
|
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":";;;;;;;;;;MAQa,uBAAuB,CAAA;AAsBhC,IAAA,WAAA,GAAA;AArBS,QAAA,IAAM,CAAA,MAAA,GAAkB,EAAE,CAAC;AAC3B,QAAA,IAAQ,CAAA,QAAA,GAAY,KAAK,CAAC;AAI1B,QAAA,IAAK,CAAA,KAAA,GAA0B,QAAQ,CAAA;AACvC,QAAA,IAAS,CAAA,SAAA,GAAY,IAAI,CAAC;AAC1B,QAAA,IAAK,CAAA,KAAA,GAAwB,QAAQ,CAAC;AAIxC,QAAA,IAAY,CAAA,YAAA,GAAG,KAAK,CAAC;AAGrB,QAAA,IAAS,CAAA,SAAA,GAAG,OAAO,CAAC;AAEnB,QAAA,IAAQ,CAAA,QAAA,GAAG,CAAC,CAAC;AAEd,QAAA,IAAY,CAAA,YAAA,GAAG,MAAM,CAAC;AACtB,QAAA,IAAY,CAAA,YAAA,GAAG,KAAK,CAAC;AAGxB,QAAA,IAAI,CAAC,mBAAmB,GAAG,IAAI,YAAY,EAAU,CAAC;AACtD,QAAA,IAAI,CAAC,WAAW,GAAG,CAAU,OAAA,EAAA,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,OAAO,CAAC,EAAE,CAAC;;KAGrE;AAED,IAAA,WAAW,CAAC,OAAsB,EAAA;AAC9B,QAAA,IAAI,OAAO,CAAC,QAAQ,CAAC,EAAE;AACnB,YAAA,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC;YACzD,IAAI,CAAC,2BAA2B,GAAG,CAAA,OAAA,EAAU,IAAI,CAAC,QAAQ,QAAQ,CAAC;AACtE,SAAA;KACJ;AAED,IAAA,QAAQ,MAAW;AAEZ,IAAA,WAAW,CAAC,KAAa,EAAA;AAC5B,QAAA,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE;AAChB,YAAA,IAAI,CAAC,aAAa,GAAG,KAAK,CAAC;AAC3B,YAAA,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AACrC,YAAA,IAAI,CAAC,YAAY,GAAG,KAAK,CAAC;AAC7B,SAAA;KACJ;AAEM,IAAA,SAAS,CAAC,MAAqB,EAAA;QAElC,IAAI,MAAM,CAAC,GAAG,KAAK,SAAS,IAAI,MAAM,CAAC,GAAG,KAAK,WAAW,EAAE;YACxD,MAAM,CAAC,cAAc,EAAE,CAAC;AAC3B,SAAA;QAED,IAAI,MAAM,CAAC,GAAG,KAAK,WAAW,IAAI,MAAM,CAAC,GAAG,KAAK,YAAY,EAAE;YAC3D,MAAM,CAAC,cAAc,EAAE,CAAC;AAC3B,SAAA;KACJ;IAGM,cAAc,GAAA;AACjB,QAAA,IAAI,CAAC,YAAY,GAAG,CAAC,IAAI,CAAC,YAAY,CAAC;KAE1C;;oHA7DQ,uBAAuB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAvB,uBAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,uBAAuB,gTCRpC,wjEAkEa,EAAA,MAAA,EAAA,CAAA,mjBAAA,CAAA,EAAA,UAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,eAAA,EAAA,QAAA,EAAA,SAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,OAAA,EAAA,MAAA,EAAA,OAAA,EAAA,MAAA,EAAA,QAAA,EAAA,MAAA,EAAA,MAAA,EAAA,MAAA,EAAA,QAAA,EAAA,SAAA,EAAA,QAAA,EAAA,QAAA,EAAA,YAAA,EAAA,SAAA,EAAA,WAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,EAAA,CAAA,kBAAA,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,CAAA,WAAA,EAAA,qBAAA,EAAA,WAAA,EAAA,iBAAA,EAAA,0BAAA,EAAA,gBAAA,EAAA,UAAA,EAAA,aAAA,EAAA,QAAA,EAAA,WAAA,EAAA,oBAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,mBAAA,EAAA,WAAA,EAAA,UAAA,EAAA,WAAA,EAAA,UAAA,EAAA,UAAA,EAAA,YAAA,EAAA,SAAA,EAAA,cAAA,EAAA,iBAAA,EAAA,WAAA,EAAA,WAAA,EAAA,QAAA,EAAA,OAAA,EAAA,eAAA,EAAA,cAAA,EAAA,SAAA,EAAA,OAAA,EAAA,aAAA,CAAA,EAAA,OAAA,EAAA,CAAA,gBAAA,EAAA,aAAA,EAAA,UAAA,EAAA,UAAA,EAAA,eAAA,EAAA,iBAAA,EAAA,WAAA,EAAA,SAAA,EAAA,iBAAA,EAAA,iBAAA,EAAA,2BAAA,EAAA,iBAAA,EAAA,uBAAA,EAAA,gCAAA,EAAA,sBAAA,EAAA,gBAAA,EAAA,mBAAA,EAAA,cAAA,EAAA,iBAAA,EAAA,0BAAA,EAAA,0BAAA,EAAA,YAAA,EAAA,yBAAA,EAAA,iBAAA,EAAA,gBAAA,EAAA,iBAAA,EAAA,gBAAA,EAAA,gBAAA,EAAA,kBAAA,EAAA,eAAA,EAAA,oBAAA,EAAA,uBAAA,EAAA,iBAAA,EAAA,iBAAA,EAAA,cAAA,EAAA,aAAA,EAAA,qBAAA,EAAA,oBAAA,EAAA,eAAA,EAAA,aAAA,EAAA,mBAAA,CAAA,EAAA,CAAA,EAAA,UAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,cAAA,EAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,SAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA;2FD1DA,uBAAuB,EAAA,UAAA,EAAA,CAAA;kBALnC,SAAS;+BACI,kBAAkB,EAAA,QAAA,EAAA,wjEAAA,EAAA,MAAA,EAAA,CAAA,mjBAAA,CAAA,EAAA,CAAA;0EAKnB,MAAM,EAAA,CAAA;sBAAd,KAAK;gBACG,QAAQ,EAAA,CAAA;sBAAhB,KAAK;gBACG,aAAa,EAAA,CAAA;sBAArB,KAAK;gBACG,YAAY,EAAA,CAAA;sBAApB,KAAK;gBACI,mBAAmB,EAAA,CAAA;sBAA5B,MAAM;gBACE,KAAK,EAAA,CAAA;sBAAb,KAAK;gBACG,SAAS,EAAA,CAAA;sBAAjB,KAAK;gBACG,KAAK,EAAA,CAAA;sBAAb,KAAK;;;AETV,MAAM,UAAU,GAAG,CAAC,uBAAuB,CAAC,CAAC;MAchC,oBAAoB,CAAA;;iHAApB,oBAAoB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;kHAApB,oBAAoB,EAAA,YAAA,EAAA,CAdb,uBAAuB,CAAA,EAAA,OAAA,EAAA,CAMvC,YAAY;QACZ,iBAAiB;QACjB,eAAe,aARC,uBAAuB,CAAA,EAAA,CAAA,CAAA;AAc9B,oBAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,oBAAoB,EATtB,OAAA,EAAA,CAAA;YACP,YAAY;YACZ,iBAAiB;YACjB,eAAe;SAChB,CAAA,EAAA,CAAA,CAAA;2FAKU,oBAAoB,EAAA,UAAA,EAAA,CAAA;kBAbhC,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;AACR,oBAAA,YAAY,EAAE;AACZ,wBAAA,GAAG,UAAU;AACd,qBAAA;AACD,oBAAA,OAAO,EAAE;wBACP,YAAY;wBACZ,iBAAiB;wBACjB,eAAe;AAChB,qBAAA;AACD,oBAAA,OAAO,EAAE;AACL,wBAAA,GAAG,UAAU;AAChB,qBAAA;iBACF,CAAA;;;ACpBD;;AAEG;;;;"}
|