@mintplayer/ng-bootstrap 13.1.10 → 13.1.15

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 (178) hide show
  1. package/_bootstrap.scss +14 -0
  2. package/esm2020/lib/components/accordion/accordion/accordion.component.mjs +2 -4
  3. package/esm2020/lib/components/accordion/accordion-tab/accordion-tab.component.mjs +1 -11
  4. package/esm2020/lib/components/accordion/accordion-tab-header/accordion-tab-header.component.mjs +3 -8
  5. package/esm2020/lib/components/accordion/accordion.module.mjs +4 -8
  6. package/esm2020/lib/components/alert/alert/alert.component.mjs +2 -4
  7. package/esm2020/lib/components/alert/alert-close/alert-close.component.mjs +1 -3
  8. package/esm2020/lib/components/calendar/calendar.component.mjs +16 -15
  9. package/esm2020/lib/components/card/card/card.component.mjs +4 -10
  10. package/esm2020/lib/components/card/card-header/card-header.component.mjs +2 -6
  11. package/esm2020/lib/components/carousel/carousel/carousel.component.mjs +9 -7
  12. package/esm2020/lib/components/carousel/carousel-image/carousel-image.directive.mjs +1 -1
  13. package/esm2020/lib/components/code-snippet/code-snippet.component.mjs +28 -0
  14. package/esm2020/lib/components/code-snippet/code-snippet.module.mjs +34 -0
  15. package/esm2020/lib/components/code-snippet/index.mjs +3 -0
  16. package/esm2020/lib/components/context-menu/context-menu.directive.mjs +34 -14
  17. package/esm2020/lib/components/context-menu/context-menu.module.mjs +8 -4
  18. package/esm2020/lib/components/copy/copy.directive.mjs +45 -0
  19. package/esm2020/lib/components/copy/copy.module.mjs +26 -0
  20. package/esm2020/lib/components/copy/index.mjs +3 -0
  21. package/esm2020/lib/components/datatable/datatable/datatable.component.mjs +6 -8
  22. package/esm2020/lib/components/datatable/datatable-settings.mjs +1 -1
  23. package/esm2020/lib/components/datatable/datatable.module.mjs +1 -1
  24. package/esm2020/lib/components/datatable/row-template/row-template.directive.mjs +3 -3
  25. package/esm2020/lib/components/datepicker/datepicker.component.mjs +32 -7
  26. package/esm2020/lib/components/dropdown/dropdown/dropdown.directive.mjs +10 -3
  27. package/esm2020/lib/components/dropdown/dropdown-menu/dropdown-menu.directive.mjs +14 -16
  28. package/esm2020/lib/components/file-upload/component/file-upload.component.mjs +85 -0
  29. package/esm2020/lib/components/file-upload/directive/file-upload-template.directive.mjs +18 -0
  30. package/esm2020/lib/components/file-upload/file-upload.mjs +2 -0
  31. package/esm2020/lib/components/file-upload/file-upload.module.mjs +43 -0
  32. package/esm2020/lib/components/file-upload/index.mjs +5 -0
  33. package/esm2020/lib/components/for/for.directive.mjs +38 -0
  34. package/esm2020/lib/components/for/for.module.mjs +26 -0
  35. package/esm2020/lib/components/for/index.mjs +3 -0
  36. package/esm2020/lib/components/index.mjs +7 -1
  37. package/esm2020/lib/components/modal/component/index.mjs +3 -0
  38. package/esm2020/lib/components/modal/component/modal/modal.component.mjs +13 -0
  39. package/esm2020/lib/components/modal/component/modal-content/modal-content.component.mjs +27 -0
  40. package/esm2020/lib/components/modal/directives/index.mjs +4 -0
  41. package/esm2020/lib/components/modal/directives/modal-body/modal-body.directive.mjs +18 -0
  42. package/esm2020/lib/components/modal/directives/modal-footer/modal-footer.directive.mjs +18 -0
  43. package/esm2020/lib/components/modal/directives/modal-header/modal-header.directive.mjs +18 -0
  44. package/esm2020/lib/components/modal/index.mjs +5 -0
  45. package/esm2020/lib/components/modal/interfaces/index.mjs +2 -0
  46. package/esm2020/lib/components/modal/interfaces/modal-animation-meta.mjs +2 -0
  47. package/esm2020/lib/components/modal/modal.module.mjs +48 -0
  48. package/esm2020/lib/components/modal/providers/modal-content.provider.mjs +3 -0
  49. package/esm2020/lib/components/modal/service/modal.service.mjs +52 -0
  50. package/esm2020/lib/components/multiselect/component/multiselect.component.mjs +34 -0
  51. package/esm2020/lib/components/multiselect/directives/button-template/button-template.directive.mjs +18 -0
  52. package/esm2020/lib/components/multiselect/directives/footer-template/footer-template.directive.mjs +18 -0
  53. package/esm2020/lib/components/multiselect/directives/header-template/header-template.directive.mjs +18 -0
  54. package/esm2020/lib/components/multiselect/directives/index.mjs +4 -0
  55. package/esm2020/lib/components/multiselect/index.mjs +3 -2
  56. package/esm2020/lib/components/multiselect/multiselect.module.mjs +21 -6
  57. package/esm2020/lib/components/navbar/index.mjs +2 -1
  58. package/esm2020/lib/components/navbar/navbar/navbar.component.mjs +3 -3
  59. package/esm2020/lib/components/navbar/navbar-brand/navbar-brand.component.mjs +18 -0
  60. package/esm2020/lib/components/navbar/navbar-dropdown/navbar-dropdown.component.mjs +7 -6
  61. package/esm2020/lib/components/navbar/navbar-item/navbar-item.component.mjs +16 -5
  62. package/esm2020/lib/components/navbar/navbar-nav/navbar-nav.component.mjs +1 -1
  63. package/esm2020/lib/components/navbar/navbar.module.mjs +10 -5
  64. package/esm2020/lib/components/pagination/pagination/pagination.component.mjs +88 -71
  65. package/esm2020/lib/components/rating/index.mjs +3 -0
  66. package/esm2020/lib/components/rating/rating.component.mjs +72 -0
  67. package/esm2020/lib/components/rating/rating.module.mjs +26 -0
  68. package/esm2020/lib/components/scrollspy/component/scrollspy.component.mjs +30 -6
  69. package/esm2020/lib/components/select2/component/select2.component.mjs +7 -9
  70. package/esm2020/lib/components/select2/directive/item-template.directive.mjs +1 -2
  71. package/esm2020/lib/components/snackbar/component/snackbar.component.mjs +1 -1
  72. package/esm2020/lib/components/snackbar/service/snackbar.service.mjs +4 -4
  73. package/esm2020/lib/components/snackbar/snackbar.module.mjs +8 -4
  74. package/esm2020/lib/components/tab-control/tab-control/tab-control.component.mjs +8 -7
  75. package/esm2020/lib/components/tab-control/tab-page/tab-page.component.mjs +4 -6
  76. package/esm2020/lib/components/toggle-button/toggle-button.component.mjs +19 -15
  77. package/esm2020/lib/components/tooltip/directive/tooltip.directive.mjs +9 -3
  78. package/esm2020/lib/components/tooltip/tooltip.module.mjs +8 -4
  79. package/esm2020/lib/interfaces/date-day-of-month.mjs +1 -1
  80. package/esm2020/lib/interfaces/index.mjs +2 -1
  81. package/esm2020/lib/interfaces/week.mjs +1 -1
  82. package/esm2020/lib/interfaces/weekday.mjs +2 -0
  83. package/esm2020/lib/pipes/format-bytes/format-bytes.module.mjs +26 -0
  84. package/esm2020/lib/pipes/format-bytes/format-bytes.pipe.mjs +23 -0
  85. package/esm2020/lib/pipes/format-bytes/index.mjs +3 -0
  86. package/esm2020/lib/pipes/index.mjs +2 -1
  87. package/esm2020/lib/services/calendar-month/calendar-month.service.mjs +34 -18
  88. package/fesm2015/mintplayer-ng-bootstrap.mjs +1347 -579
  89. package/fesm2015/mintplayer-ng-bootstrap.mjs.map +1 -1
  90. package/fesm2020/mintplayer-ng-bootstrap.mjs +1342 -580
  91. package/fesm2020/mintplayer-ng-bootstrap.mjs.map +1 -1
  92. package/lib/components/accordion/accordion/accordion.component.d.ts +1 -4
  93. package/lib/components/accordion/accordion-tab/accordion-tab.component.d.ts +1 -4
  94. package/lib/components/accordion/accordion-tab-header/accordion-tab-header.component.d.ts +1 -4
  95. package/lib/components/accordion/accordion.module.d.ts +1 -2
  96. package/lib/components/alert/alert/alert.component.d.ts +1 -4
  97. package/lib/components/alert/alert-close/alert-close.component.d.ts +1 -3
  98. package/lib/components/calendar/calendar.component.d.ts +4 -5
  99. package/lib/components/card/card/card.component.d.ts +1 -6
  100. package/lib/components/card/card-header/card-header.component.d.ts +1 -4
  101. package/lib/components/carousel/carousel/carousel.component.d.ts +9 -9
  102. package/lib/components/code-snippet/code-snippet.component.d.ts +12 -0
  103. package/lib/components/code-snippet/code-snippet.module.d.ts +10 -0
  104. package/lib/components/code-snippet/index.d.ts +2 -0
  105. package/lib/components/context-menu/context-menu.directive.d.ts +4 -2
  106. package/lib/components/context-menu/context-menu.module.d.ts +2 -1
  107. package/lib/components/copy/copy.directive.d.ts +11 -0
  108. package/lib/components/copy/copy.module.d.ts +8 -0
  109. package/lib/components/copy/index.d.ts +2 -0
  110. package/lib/components/datatable/datatable/datatable.component.d.ts +4 -5
  111. package/lib/components/datatable/row-template/row-template.directive.d.ts +1 -1
  112. package/lib/components/datepicker/datepicker.component.d.ts +11 -7
  113. package/lib/components/dropdown/dropdown/dropdown.directive.d.ts +1 -0
  114. package/lib/components/dropdown/dropdown-menu/dropdown-menu.directive.d.ts +3 -3
  115. package/lib/components/file-upload/component/file-upload.component.d.ts +19 -0
  116. package/lib/components/file-upload/directive/file-upload-template.directive.d.ts +8 -0
  117. package/lib/components/file-upload/file-upload.d.ts +4 -0
  118. package/lib/components/file-upload/file-upload.module.d.ts +12 -0
  119. package/lib/components/file-upload/index.d.ts +4 -0
  120. package/lib/components/for/for.directive.d.ts +8 -0
  121. package/lib/components/for/for.module.d.ts +8 -0
  122. package/lib/components/for/index.d.ts +2 -0
  123. package/lib/components/index.d.ts +6 -0
  124. package/lib/components/modal/component/index.d.ts +2 -0
  125. package/lib/components/modal/component/modal/modal.component.d.ts +10 -0
  126. package/lib/components/modal/component/modal-content/modal-content.component.d.ts +13 -0
  127. package/lib/components/modal/directives/index.d.ts +3 -0
  128. package/lib/components/modal/directives/modal-body/modal-body.directive.d.ts +8 -0
  129. package/lib/components/modal/directives/modal-footer/modal-footer.directive.d.ts +8 -0
  130. package/lib/components/modal/directives/modal-header/modal-header.directive.d.ts +8 -0
  131. package/lib/components/modal/index.d.ts +4 -0
  132. package/lib/components/modal/interfaces/index.d.ts +1 -0
  133. package/lib/components/modal/interfaces/modal-animation-meta.d.ts +7 -0
  134. package/lib/components/modal/modal.module.d.ts +13 -0
  135. package/lib/components/modal/providers/modal-content.provider.d.ts +2 -0
  136. package/lib/components/modal/service/modal.service.d.ts +14 -0
  137. package/lib/components/multiselect/{multiselect.component.d.ts → component/multiselect.component.d.ts} +7 -6
  138. package/lib/components/multiselect/directives/button-template/button-template.directive.d.ts +8 -0
  139. package/lib/components/multiselect/directives/footer-template/footer-template.directive.d.ts +8 -0
  140. package/lib/components/multiselect/directives/header-template/header-template.directive.d.ts +8 -0
  141. package/lib/components/multiselect/directives/index.d.ts +3 -0
  142. package/lib/components/multiselect/index.d.ts +2 -1
  143. package/lib/components/multiselect/multiselect.module.d.ts +8 -5
  144. package/lib/components/navbar/index.d.ts +1 -0
  145. package/lib/components/navbar/navbar/navbar.component.d.ts +1 -1
  146. package/lib/components/navbar/navbar-brand/navbar-brand.component.d.ts +6 -0
  147. package/lib/components/navbar/navbar-dropdown/navbar-dropdown.component.d.ts +4 -4
  148. package/lib/components/navbar/navbar-item/navbar-item.component.d.ts +3 -4
  149. package/lib/components/navbar/navbar.module.d.ts +5 -4
  150. package/lib/components/pagination/pagination/pagination.component.d.ts +9 -10
  151. package/lib/components/rating/index.d.ts +2 -0
  152. package/lib/components/rating/rating.component.d.ts +22 -0
  153. package/lib/components/rating/rating.module.d.ts +8 -0
  154. package/lib/components/scrollspy/component/scrollspy.component.d.ts +11 -3
  155. package/lib/components/select2/component/select2.component.d.ts +4 -6
  156. package/lib/components/snackbar/component/snackbar.component.d.ts +1 -2
  157. package/lib/components/snackbar/snackbar.module.d.ts +2 -1
  158. package/lib/components/tab-control/tab-control/tab-control.component.d.ts +4 -6
  159. package/lib/components/tab-control/tab-page/tab-page.component.d.ts +3 -4
  160. package/lib/components/toggle-button/toggle-button.component.d.ts +5 -5
  161. package/lib/components/tooltip/directive/tooltip.directive.d.ts +1 -0
  162. package/lib/components/tooltip/tooltip.module.d.ts +2 -1
  163. package/lib/interfaces/date-day-of-month.d.ts +1 -0
  164. package/lib/interfaces/index.d.ts +1 -0
  165. package/lib/interfaces/week.d.ts +1 -1
  166. package/lib/interfaces/weekday.d.ts +4 -0
  167. package/lib/pipes/format-bytes/format-bytes.module.d.ts +8 -0
  168. package/lib/pipes/format-bytes/format-bytes.pipe.d.ts +7 -0
  169. package/lib/pipes/format-bytes/index.d.ts +2 -0
  170. package/lib/pipes/index.d.ts +1 -0
  171. package/lib/services/calendar-month/calendar-month.service.d.ts +2 -0
  172. package/package.json +3 -2
  173. package/src/assets/ic-upload-file.svg +7 -0
  174. package/src/styles/custom.scss +12 -0
  175. package/src/styles/ngx-highlight-themes/solarized-dark.scss +89 -0
  176. package/src/styles/utilities/cursor.scss +10 -0
  177. package/src/styles/utilities/white-space.scss +10 -0
  178. package/esm2020/lib/components/multiselect/multiselect.component.mjs +0 -36
@@ -0,0 +1,23 @@
1
+ import { Pipe } from '@angular/core';
2
+ import * as i0 from "@angular/core";
3
+ export class BsFormatBytesPipe {
4
+ transform(value, decimals = 2) {
5
+ if (value === 0) {
6
+ return "0 Bytes";
7
+ }
8
+ const k = 1024;
9
+ const dm = decimals <= 0 ? 0 : decimals;
10
+ const sizes = ["Bytes", "KB", "MB", "GB", "TB", "PB", "EB", "ZB", "YB"];
11
+ const i = Math.floor(Math.log(value) / Math.log(k));
12
+ return parseFloat((value / Math.pow(k, i)).toFixed(dm)) + " " + sizes[i];
13
+ }
14
+ }
15
+ BsFormatBytesPipe.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: BsFormatBytesPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe });
16
+ BsFormatBytesPipe.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: BsFormatBytesPipe, name: "bsFormatBytes" });
17
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: BsFormatBytesPipe, decorators: [{
18
+ type: Pipe,
19
+ args: [{
20
+ name: 'bsFormatBytes'
21
+ }]
22
+ }] });
23
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybWF0LWJ5dGVzLnBpcGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL21pbnRwbGF5ZXItbmctYm9vdHN0cmFwL3NyYy9saWIvcGlwZXMvZm9ybWF0LWJ5dGVzL2Zvcm1hdC1ieXRlcy5waXBlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxJQUFJLEVBQWlCLE1BQU0sZUFBZSxDQUFDOztBQUtwRCxNQUFNLE9BQU8saUJBQWlCO0lBRTVCLFNBQVMsQ0FBQyxLQUFhLEVBQUUsUUFBUSxHQUFHLENBQUM7UUFDbkMsSUFBSSxLQUFLLEtBQUssQ0FBQyxFQUFFO1lBQ2YsT0FBTyxTQUFTLENBQUM7U0FDbEI7UUFFRCxNQUFNLENBQUMsR0FBRyxJQUFJLENBQUM7UUFDZixNQUFNLEVBQUUsR0FBRyxRQUFRLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQztRQUN4QyxNQUFNLEtBQUssR0FBRyxDQUFDLE9BQU8sRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxDQUFDLENBQUM7UUFDeEUsTUFBTSxDQUFDLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUVwRCxPQUFPLFVBQVUsQ0FBQyxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUMsQ0FBQyxHQUFHLEdBQUcsR0FBRyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDM0UsQ0FBQzs7OEdBYlUsaUJBQWlCOzRHQUFqQixpQkFBaUI7MkZBQWpCLGlCQUFpQjtrQkFIN0IsSUFBSTttQkFBQztvQkFDSixJQUFJLEVBQUUsZUFBZTtpQkFDdEIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBQaXBlLCBQaXBlVHJhbnNmb3JtIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbkBQaXBlKHtcbiAgbmFtZTogJ2JzRm9ybWF0Qnl0ZXMnXG59KVxuZXhwb3J0IGNsYXNzIEJzRm9ybWF0Qnl0ZXNQaXBlIGltcGxlbWVudHMgUGlwZVRyYW5zZm9ybSB7XG5cbiAgdHJhbnNmb3JtKHZhbHVlOiBudW1iZXIsIGRlY2ltYWxzID0gMikge1xuICAgIGlmICh2YWx1ZSA9PT0gMCkge1xuICAgICAgcmV0dXJuIFwiMCBCeXRlc1wiO1xuICAgIH1cblxuICAgIGNvbnN0IGsgPSAxMDI0O1xuICAgIGNvbnN0IGRtID0gZGVjaW1hbHMgPD0gMCA/IDAgOiBkZWNpbWFscztcbiAgICBjb25zdCBzaXplcyA9IFtcIkJ5dGVzXCIsIFwiS0JcIiwgXCJNQlwiLCBcIkdCXCIsIFwiVEJcIiwgXCJQQlwiLCBcIkVCXCIsIFwiWkJcIiwgXCJZQlwiXTtcbiAgICBjb25zdCBpID0gTWF0aC5mbG9vcihNYXRoLmxvZyh2YWx1ZSkgLyBNYXRoLmxvZyhrKSk7XG5cbiAgICByZXR1cm4gcGFyc2VGbG9hdCgodmFsdWUgLyBNYXRoLnBvdyhrLCBpKSkudG9GaXhlZChkbSkpICsgXCIgXCIgKyBzaXplc1tpXTtcbiAgfVxuXG59XG4iXX0=
@@ -0,0 +1,3 @@
1
+ export * from './format-bytes.module';
2
+ export * from './format-bytes.pipe';
3
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL21pbnRwbGF5ZXItbmctYm9vdHN0cmFwL3NyYy9saWIvcGlwZXMvZm9ybWF0LWJ5dGVzL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMsdUJBQXVCLENBQUM7QUFDdEMsY0FBYyxxQkFBcUIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gJy4vZm9ybWF0LWJ5dGVzLm1vZHVsZSc7XG5leHBvcnQgKiBmcm9tICcuL2Zvcm1hdC1ieXRlcy5waXBlJzsiXX0=
@@ -1,2 +1,3 @@
1
1
  export * from './font-color';
2
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL21pbnRwbGF5ZXItbmctYm9vdHN0cmFwL3NyYy9saWIvcGlwZXMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYyxjQUFjLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tICcuL2ZvbnQtY29sb3InOyJdfQ==
2
+ export * from './format-bytes';
3
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL21pbnRwbGF5ZXItbmctYm9vdHN0cmFwL3NyYy9saWIvcGlwZXMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYyxjQUFjLENBQUM7QUFDN0IsY0FBYyxnQkFBZ0IsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gJy4vZm9udC1jb2xvcic7XG5leHBvcnQgKiBmcm9tICcuL2Zvcm1hdC1ieXRlcyc7Il19
@@ -3,22 +3,24 @@ import * as i0 from "@angular/core";
3
3
  export class BsCalendarMonthService {
4
4
  getWeeks(month) {
5
5
  const firstAndLast = this.getFirstAndLastDayOfMonth(month);
6
- const days = this.dateDiff(firstAndLast.first, firstAndLast.last) + 1;
7
- const allDays = [
8
- ...this.generateList(this.dayOfWeekMondayBased(firstAndLast.first)).map(d => null),
9
- ...this.generateList(days).map(d => {
10
- return {
11
- date: new Date(firstAndLast.first.getFullYear(), firstAndLast.first.getMonth(), firstAndLast.first.getDate() + d),
12
- dayOfMonth: d + 1,
13
- };
14
- }),
15
- ...this.generateList(6 - this.dayOfWeekMondayBased(firstAndLast.last)).map(d => null),
16
- ];
6
+ const firstOfMonth = this.getMondayBefore(firstAndLast.first);
7
+ const lastOfMonth = this.getSundayAfter(firstAndLast.last);
8
+ const days = this.dateDiff(firstOfMonth, lastOfMonth) + 1;
9
+ const firstDayOffset = (firstAndLast.first.getDay() + 7 - 1) % 7;
10
+ const allDays = this.generateList(days).map(d => d - firstDayOffset).map(d => {
11
+ const wrongDate = new Date(firstAndLast.first.getFullYear(), firstAndLast.first.getMonth(), firstAndLast.first.getDate() + d);
12
+ const correctDate = new Date(wrongDate.getFullYear(), wrongDate.getMonth(), wrongDate.getDate());
13
+ return {
14
+ date: correctDate,
15
+ dayOfMonth: correctDate.getDate(),
16
+ isInMonth: (correctDate.getFullYear() === month.getFullYear()) && (correctDate.getMonth() === month.getMonth())
17
+ };
18
+ });
17
19
  const weeks = this.chunk(allDays, 7);
18
20
  const weeksMapped = weeks.map((w, i) => {
19
21
  return {
20
- number: this.weekOfYear(new Date(month.getFullYear(), month.getMonth(), w.find(d => d !== null)?.dayOfMonth)),
21
- week: w
22
+ number: this.weekOfYear(new Date(month.getFullYear(), month.getMonth(), w.find(d => d.isInMonth)?.dayOfMonth)),
23
+ days: w
22
24
  };
23
25
  });
24
26
  return weeksMapped;
@@ -43,10 +45,9 @@ export class BsCalendarMonthService {
43
45
  return Math.ceil((utcDiff / (1000 * 60 * 60 * 24) + 1) / 7);
44
46
  }
45
47
  getFirstAndLastDayOfMonth(date) {
46
- return {
47
- first: new Date(date.getFullYear(), date.getMonth(), 1),
48
- last: new Date(date.getFullYear(), date.getMonth() + 1, 0)
49
- };
48
+ const first = new Date(date.getFullYear(), date.getMonth(), 1);
49
+ const last = new Date(date.getFullYear(), date.getMonth() + 1, 0);
50
+ return { first, last };
50
51
  }
51
52
  dateDiff(date1, date2) {
52
53
  const utc1 = this.toUTC(date1);
@@ -68,6 +69,21 @@ export class BsCalendarMonthService {
68
69
  }
69
70
  return result;
70
71
  }
72
+ getMondayBefore(date) {
73
+ const day = date.getDay(), diff = date.getDate() - day + (day == 0 ? -6 : 1); // adjust when day is sunday
74
+ const monday = new Date(date);
75
+ monday.setDate(diff);
76
+ return monday;
77
+ }
78
+ getSundayAfter(date) {
79
+ const day = date.getDay();
80
+ const sunday = new Date(date);
81
+ if (day !== 0) {
82
+ const diff = date.getDate() + 7 - day;
83
+ sunday.setDate(diff);
84
+ }
85
+ return sunday;
86
+ }
71
87
  }
72
88
  BsCalendarMonthService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: BsCalendarMonthService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
73
89
  BsCalendarMonthService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: BsCalendarMonthService, providedIn: 'root' });
@@ -77,4 +93,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.1", ngImpor
77
93
  providedIn: 'root'
78
94
  }]
79
95
  }] });
80
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FsZW5kYXItbW9udGguc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvbWludHBsYXllci1uZy1ib290c3RyYXAvc3JjL2xpYi9zZXJ2aWNlcy9jYWxlbmRhci1tb250aC9jYWxlbmRhci1tb250aC5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7O0FBUTNDLE1BQU0sT0FBTyxzQkFBc0I7SUFFMUIsUUFBUSxDQUFDLEtBQVc7UUFDekIsTUFBTSxZQUFZLEdBQUcsSUFBSSxDQUFDLHlCQUF5QixDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQzNELE1BQU0sSUFBSSxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsWUFBWSxDQUFDLEtBQUssRUFBRSxZQUFZLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQ3RFLE1BQU0sT0FBTyxHQUE4QjtZQUN6QyxHQUFHLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLG9CQUFvQixDQUFDLFlBQVksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQztZQUNsRixHQUFHLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFO2dCQUNqQyxPQUFPO29CQUNMLElBQUksRUFBRSxJQUFJLElBQUksQ0FBQyxZQUFZLENBQUMsS0FBSyxDQUFDLFdBQVcsRUFBRSxFQUFFLFlBQVksQ0FBQyxLQUFLLENBQUMsUUFBUSxFQUFFLEVBQUUsWUFBWSxDQUFDLEtBQUssQ0FBQyxPQUFPLEVBQUUsR0FBRyxDQUFDLENBQUM7b0JBQ2pILFVBQVUsRUFBRSxDQUFDLEdBQUcsQ0FBQztpQkFDbEIsQ0FBQztZQUNKLENBQUMsQ0FBQztZQUNGLEdBQUcsSUFBSSxDQUFD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XG5pbXBvcnQgeyBEYXRlRGF5T2ZNb250aCB9IGZyb20gJy4uLy4uL2ludGVyZmFjZXMvZGF0ZS1kYXktb2YtbW9udGgnO1xuaW1wb3J0IHsgRmlyc3RBbmRMYXN0RGF0ZSB9IGZyb20gJy4uLy4uL2ludGVyZmFjZXMvZmlyc3QtYW5kLWxhc3QtZGF0ZSc7XG5pbXBvcnQgeyBXZWVrIH0gZnJvbSAnLi4vLi4vaW50ZXJmYWNlcy93ZWVrJztcblxuQEluamVjdGFibGUoe1xuICBwcm92aWRlZEluOiAncm9vdCdcbn0pXG5leHBvcnQgY2xhc3MgQnNDYWxlbmRhck1vbnRoU2VydmljZSB7XG5cbiAgcHVibGljIGdldFdlZWtzKG1vbnRoOiBEYXRlKSB7XG4gICAgY29uc3QgZmlyc3RBbmRMYXN0ID0gdGhpcy5nZXRGaXJzdEFuZExhc3REYXlPZk1vbnRoKG1vbnRoKTtcbiAgICBjb25zdCBkYXlzID0gdGhpcy5kYXRlRGlmZihmaXJzdEFuZExhc3QuZmlyc3QsIGZpcnN0QW5kTGFzdC5sYXN0KSArIDE7XG4gICAgY29uc3QgYWxsRGF5czogKERhdGVEYXlPZk1vbnRoIHwgbnVsbClbXSA9IFtcbiAgICAgIC4uLnRoaXMuZ2VuZXJhdGVMaXN0KHRoaXMuZGF5T2ZXZWVrTW9uZGF5QmFzZWQoZmlyc3RBbmRMYXN0LmZpcnN0KSkubWFwKGQgPT4gbnVsbCksXG4gICAgICAuLi50aGlzLmdlbmVyYXRlTGlzdChkYXlzKS5tYXAoZCA9PiB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgZGF0ZTogbmV3IERhdGUoZmlyc3RBbmRMYXN0LmZpcnN0LmdldEZ1bGxZZWFyKCksIGZpcnN0QW5kTGFzdC5maXJzdC5nZXRNb250aCgpLCBmaXJzdEFuZExhc3QuZmlyc3QuZ2V0RGF0ZSgpICsgZCksXG4gICAgICAgICAgZGF5T2ZNb250aDogZCArIDEsXG4gICAgICAgIH07XG4gICAgICB9KSxcbiAgICAgIC4uLnRoaXMuZ2VuZXJhdGVMaXN0KDYgLSB0aGlzLmRheU9mV2Vla01vbmRheUJhc2VkKGZpcnN0QW5kTGFzdC5sYXN0KSkubWFwKGQgPT4gbnVsbCksXG4gICAgXTtcbiAgICBjb25zdCB3ZWVrcyA9IHRoaXMuY2h1bmsoYWxsRGF5cywgNyk7XG4gICAgY29uc3Qgd2Vla3NNYXBwZWQgPSB3ZWVrcy5tYXA8V2Vlaz4oKHcsIGkpID0+IHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIG51bWJlcjogdGhpcy53ZWVrT2ZZZWFyKG5ldyBEYXRlKG1vbnRoLmdldEZ1bGxZZWFyKCksIG1vbnRoLmdldE1vbnRoKCksIHcuZmluZChkID0+IGQgIT09IG51bGwpPy5kYXlPZk1vbnRoKSksXG4gICAgICAgIHdlZWs6IHdcbiAgICAgIH1cbiAgICB9KTtcbiAgICByZXR1cm4gd2Vla3NNYXBwZWQ7XG4gIH1cbiAgXG4gIGdlbmVyYXRlTGlzdChjb3VudDogbnVtYmVyKSB7XG4gICAgcmV0dXJuIFsuLi5BcnJheShjb3VudCkua2V5cygpXTtcbiAgfVxuXG4gIGRheU9mV2Vla01vbmRheUJhc2VkKGRhdGU6IERhdGUpIHtcbiAgICBjb25zdCBkID0gZGF0ZS5nZXREYXkoKSAtIDE7XG4gICAgaWYgKGQgPCAwKSB7XG4gICAgICByZXR1cm4gNjtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIGQ7XG4gICAgfVxuICB9XG5cbiAgd2Vla09mWWVhcihkYXRlOiBEYXRlKSB7XG4gICAgY29uc3QgZGF0ZUNsb25lID0gbmV3IERhdGUoRGF0ZS5VVEMoZGF0ZS5nZXRGdWxsWWVhcigpLCBkYXRlLmdldE1vbnRoKCksIGRhdGUuZ2V0RGF0ZSgpKSk7XG4gICAgZGF0ZUNsb25lLnNldFVUQ0RhdGUoZGF0ZUNsb25lLmdldFVUQ0RhdGUoKSArIDQgLSAoZGF0ZUNsb25lLmdldFVUQ0RheSgpIHx8IDcpKTtcbiAgICBjb25zdCB5ZWFyU3RhcnQgPSBuZXcgRGF0ZShEYXRlLlVUQyhkYXRlQ2xvbmUuZ2V0VVRDRnVsbFllYXIoKSwgMCwgMSkpO1xuICAgIGNvbnN0IHV0Y0RpZmYgPSB0aGlzLnRvVVRDKGRhdGVDbG9uZSkgLSB0aGlzLnRvVVRDKHllYXJTdGFydCk7XG4gICAgcmV0dXJuIE1hdGguY2VpbCgodXRjRGlmZiAvICgxMDAwICogNjAgKiA2MCAqIDI0KSArIDEpIC8gNyk7XG4gIH1cblxuICBnZXRGaXJzdEFuZExhc3REYXlPZk1vbnRoKGRhdGU6IERhdGUpIHtcbiAgICByZXR1cm4gPEZpcnN0QW5kTGFzdERhdGU+e1xuICAgICAgZmlyc3Q6IG5ldyBEYXRlKGRhdGUuZ2V0RnVsbFllYXIoKSwgZGF0ZS5nZXRNb250aCgpLCAxKSxcbiAgICAgIGxhc3Q6IG5ldyBEYXRlKGRhdGUuZ2V0RnVsbFllYXIoKSwgZGF0ZS5nZXRNb250aCgpICsgMSwgMClcbiAgICB9O1xuICB9XG5cbiAgZGF0ZURpZmYoZGF0ZTE6IERhdGUsIGRhdGUyOiBEYXRlKSB7XG4gICAgY29uc3QgdXRjMSA9IHRoaXMudG9VVEMoZGF0ZTEpO1xuICAgIGNvbnN0IHV0YzIgPSB0aGlzLnRvVVRDKGRhdGUyKTtcbiAgICBjb25zdCBtc1BlckRheSA9IDEwMDAgKiA2MCAqIDYwICogMjQ7XG4gICAgcmV0dXJuIE1hdGguZmxvb3IoKHV0YzIgLSB1dGMxKSAvIG1zUGVyRGF5KTtcbiAgfVxuXG4gIGRheU9mWWVhcihkYXRlOiBEYXRlKSB7XG4gICAgY29uc3Qgc3RhcnQgPSBuZXcgRGF0ZShkYXRlLmdldEZ1bGxZZWFyKCksIDAsIDApO1xuICAgIHJldHVybiB0aGlzLmRhdGVEaWZmKHN0YXJ0LCBkYXRlKTtcbiAgfVxuXG4gIHRvVVRDKGRhdGU6IERhdGUpIHtcbiAgICByZXR1cm4gRGF0ZS5VVEMoZGF0ZS5nZXRGdWxsWWVhcigpLCBkYXRlLmdldE1vbnRoKCksIGRhdGUuZ2V0RGF0ZSgpKTtcbiAgfVxuXG4gIGNodW5rPFQ+KGl0ZW1zOiBUW10sIHNpemU6IG51bWJlcikge1xuICAgIGNvbnN0IHJlc3VsdDogVFtdW10gPSBbXTtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IGl0ZW1zLmxlbmd0aDsgaSArPSBzaXplKSB7XG4gICAgICByZXN1bHQucHVzaChpdGVtcy5zbGljZShpLCBpICsgc2l6ZSkpO1xuICAgIH1cbiAgICByZXR1cm4gcmVzdWx0O1xuICB9XG59XG4iXX0=
96
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FsZW5kYXItbW9udGguc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvbWludHBsYXllci1uZy1ib290c3RyYXAvc3JjL2xpYi9zZXJ2aWNlcy9jYWxlbmRhci1tb250aC9jYWxlbmRhci1tb250aC5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7O0FBUTNDLE1BQU0sT0FBTyxzQkFBc0I7SUFFMUIsUUFBUSxDQUFDLEtBQVc7UUFDekIsTUFBTSxZQUFZLEdBQUcsSUFBSSxDQUFDLHlCQUF5QixDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQzNELE1BQU0sWUFBWSxHQUFHLElBQUksQ0FBQyxlQUFlLENBQUMsWUFBWSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQzlELE1BQU0sV0FBVyxHQUFHLElBQUksQ0FBQyxjQUFjLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQzNELE1BQU0sSUFBSSxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsWUFBWSxFQUFFLFdBQVcsQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUMxRCxNQUFNLGNBQWMsR0FBRyxDQUFDLFlBQVksQ0FBQyxLQUFLLENBQUMsTUFBTSxFQUFFLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUNqRSxNQUFNLE9BQU8sR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsR0FBRyxjQUFjLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUU7WUFDM0UsTUFBTSxTQUFTLEdBQUcsSUFBSSxJQUFJLENBQUMsWUFBWSxDQUFDLEtBQUssQ0FBQyxXQUFXLEVBQUUsRUFBRSxZQUFZLENBQUMsS0FBSyxDQUFDLFFBQVEsRUFBRSxFQUFFLFlB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ZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRGF0ZURheU9mTW9udGggfSBmcm9tICcuLi8uLi9pbnRlcmZhY2VzL2RhdGUtZGF5LW9mLW1vbnRoJztcbmltcG9ydCB7IEZpcnN0QW5kTGFzdERhdGUgfSBmcm9tICcuLi8uLi9pbnRlcmZhY2VzL2ZpcnN0LWFuZC1sYXN0LWRhdGUnO1xuaW1wb3J0IHsgV2VlayB9IGZyb20gJy4uLy4uL2ludGVyZmFjZXMvd2Vlayc7XG5cbkBJbmplY3RhYmxlKHtcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnXG59KVxuZXhwb3J0IGNsYXNzIEJzQ2FsZW5kYXJNb250aFNlcnZpY2Uge1xuXG4gIHB1YmxpYyBnZXRXZWVrcyhtb250aDogRGF0ZSkge1xuICAgIGNvbnN0IGZpcnN0QW5kTGFzdCA9IHRoaXMuZ2V0Rmlyc3RBbmRMYXN0RGF5T2ZNb250aChtb250aCk7XG4gICAgY29uc3QgZmlyc3RPZk1vbnRoID0gdGhpcy5nZXRNb25kYXlCZWZvcmUoZmlyc3RBbmRMYXN0LmZpcnN0KTtcbiAgICBjb25zdCBsYXN0T2ZNb250aCA9IHRoaXMuZ2V0U3VuZGF5QWZ0ZXIoZmlyc3RBbmRMYXN0Lmxhc3QpO1xuICAgIGNvbnN0IGRheXMgPSB0aGlzLmRhdGVEaWZmKGZpcnN0T2ZNb250aCwgbGFzdE9mTW9udGgpICsgMTtcbiAgICBjb25zdCBmaXJzdERheU9mZnNldCA9IChmaXJzdEFuZExhc3QuZmlyc3QuZ2V0RGF5KCkgKyA3IC0gMSkgJSA3O1xuICAgIGNvbnN0IGFsbERheXMgPSB0aGlzLmdlbmVyYXRlTGlzdChkYXlzKS5tYXAoZCA9PiBkIC0gZmlyc3REYXlPZmZzZXQpLm1hcChkID0+IHtcbiAgICAgIGNvbnN0IHdyb25nRGF0ZSA9IG5ldyBEYXRlKGZpcnN0QW5kTGFzdC5maXJzdC5nZXRGdWxsWWVhcigpLCBmaXJzdEFuZExhc3QuZmlyc3QuZ2V0TW9udGgoKSwgZmlyc3RBbmRMYXN0LmZpcnN0LmdldERhdGUoKSArIGQpO1xuICAgICAgY29uc3QgY29ycmVjdERhdGUgPSBuZXcgRGF0ZSh3cm9uZ0RhdGUuZ2V0RnVsbFllYXIoKSwgd3JvbmdEYXRlLmdldE1vbnRoKCksIHdyb25nRGF0ZS5nZXREYXRlKCkpO1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgZGF0ZTogY29ycmVjdERhdGUsXG4gICAgICAgIGRheU9mTW9udGg6IGNvcnJlY3REYXRlLmdldERhdGUoKSxcbiAgICAgICAgaXNJbk1vbnRoOiAoY29ycmVjdERhdGUuZ2V0RnVsbFllYXIoKSA9PT0gbW9udGguZ2V0RnVsbFllYXIoKSkgJiYgKGNvcnJlY3REYXRlLmdldE1vbnRoKCkgPT09IG1vbnRoLmdldE1vbnRoKCkpXG4gICAgICB9O1xuICAgIH0pO1xuICAgIGNvbnN0IHdlZWtzID0gdGhpcy5jaHVuayhhbGxEYXlzLCA3KTtcbiAgICBjb25zdCB3ZWVrc01hcHBlZCA9IHdlZWtzLm1hcDxXZWVrPigodywgaSkgPT4ge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgbnVtYmVyOiB0aGlzLndlZWtPZlllYXIobmV3IERhdGUobW9udGguZ2V0RnVsbFllYXIoKSwgbW9udGguZ2V0TW9udGgoKSwgdy5maW5kKGQgPT4gZC5pc0luTW9udGgpPy5kYXlPZk1vbnRoKSksXG4gICAgICAgIGRheXM6IHdcbiAgICAgIH1cbiAgICB9KTtcbiAgICByZXR1cm4gd2Vla3NNYXBwZWQ7XG4gIH1cbiAgXG4gIGdlbmVyYXRlTGlzdChjb3VudDogbnVtYmVyKSB7XG4gICAgcmV0dXJuIFsuLi5BcnJheShjb3VudCkua2V5cygpXTtcbiAgfVxuXG4gIGRheU9mV2Vla01vbmRheUJhc2VkKGRhdGU6IERhdGUpIHtcbiAgICBjb25zdCBkID0gZGF0ZS5nZXREYXkoKSAtIDE7XG4gICAgaWYgKGQgPCAwKSB7XG4gICAgICByZXR1cm4gNjtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIGQ7XG4gICAgfVxuICB9XG5cbiAgd2Vla09mWWVhcihkYXRlOiBEYXRlKSB7XG4gICAgY29uc3QgZGF0ZUNsb25lID0gbmV3IERhdGUoRGF0ZS5VVEMoZGF0ZS5nZXRGdWxsWWVhcigpLCBkYXRlLmdldE1vbnRoKCksIGRhdGUuZ2V0RGF0ZSgpKSk7XG4gICAgZGF0ZUNsb25lLnNldFVUQ0RhdGUoZGF0ZUNsb25lLmdldFVUQ0RhdGUoKSArIDQgLSAoZGF0ZUNsb25lLmdldFVUQ0RheSgpIHx8IDcpKTtcbiAgICBjb25zdCB5ZWFyU3RhcnQgPSBuZXcgRGF0ZShEYXRlLlVUQyhkYXRlQ2xvbmUuZ2V0VVRDRnVsbFllYXIoKSwgMCwgMSkpO1xuICAgIGNvbnN0IHV0Y0RpZmYgPSB0aGlzLnRvVVRDKGRhdGVDbG9uZSkgLSB0aGlzLnRvVVRDKHllYXJTdGFydCk7XG4gICAgcmV0dXJuIE1hdGguY2VpbCgodXRjRGlmZiAvICgxMDAwICogNjAgKiA2MCAqIDI0KSArIDEpIC8gNyk7XG4gIH1cblxuICBnZXRGaXJzdEFuZExhc3REYXlPZk1vbnRoKGRhdGU6IERhdGUpIHtcbiAgICBjb25zdCBmaXJzdCA9IG5ldyBEYXRlKGRhdGUuZ2V0RnVsbFllYXIoKSwgZGF0ZS5nZXRNb250aCgpLCAxKTtcbiAgICBjb25zdCBsYXN0ID0gbmV3IERhdGUoZGF0ZS5nZXRGdWxsWWVhcigpLCBkYXRlLmdldE1vbnRoKCkgKyAxLCAwKTtcbiAgICByZXR1cm4gPEZpcnN0QW5kTGFzdERhdGU+eyBmaXJzdCwgbGFzdCB9O1xuICB9XG5cbiAgZGF0ZURpZmYoZGF0ZTE6IERhdGUsIGRhdGUyOiBEYXRlKSB7XG4gICAgY29uc3QgdXRjMSA9IHRoaXMudG9VVEMoZGF0ZTEpO1xuICAgIGNvbnN0IHV0YzIgPSB0aGlzLnRvVVRDKGRhdGUyKTtcbiAgICBjb25zdCBtc1BlckRheSA9IDEwMDAgKiA2MCAqIDYwICogMjQ7XG4gICAgcmV0dXJuIE1hdGguZmxvb3IoKHV0YzIgLSB1dGMxKSAvIG1zUGVyRGF5KTtcbiAgfVxuXG4gIGRheU9mWWVhcihkYXRlOiBEYXRlKSB7XG4gICAgY29uc3Qgc3RhcnQgPSBuZXcgRGF0ZShkYXRlLmdldEZ1bGxZZWFyKCksIDAsIDApO1xuICAgIHJldHVybiB0aGlzLmRhdGVEaWZmKHN0YXJ0LCBkYXRlKTtcbiAgfVxuXG4gIHRvVVRDKGRhdGU6IERhdGUpIHtcbiAgICByZXR1cm4gRGF0ZS5VVEMoZGF0ZS5nZXRGdWxsWWVhcigpLCBkYXRlLmdldE1vbnRoKCksIGRhdGUuZ2V0RGF0ZSgpKTtcbiAgfVxuXG4gIGNodW5rPFQ+KGl0ZW1zOiBUW10sIHNpemU6IG51bWJlcikge1xuICAgIGNvbnN0IHJlc3VsdDogVFtdW10gPSBbXTtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IGl0ZW1zLmxlbmd0aDsgaSArPSBzaXplKSB7XG4gICAgICByZXN1bHQucHVzaChpdGVtcy5zbGljZShpLCBpICsgc2l6ZSkpO1xuICAgIH1cbiAgICByZXR1cm4gcmVzdWx0O1xuICB9XG5cbiAgZ2V0TW9uZGF5QmVmb3JlKGRhdGU6IERhdGUpIHtcbiAgICBjb25zdCBkYXkgPSBkYXRlLmdldERheSgpLCBkaWZmID0gZGF0ZS5nZXREYXRlKCkgLSBkYXkgKyAoZGF5ID09IDAgPyAtNiA6IDEpOyAvLyBhZGp1c3Qgd2hlbiBkYXkgaXMgc3VuZGF5XG4gICAgY29uc3QgbW9uZGF5ID0gbmV3IERhdGUoZGF0ZSk7XG4gICAgbW9uZGF5LnNldERhdGUoZGlmZik7XG4gICAgcmV0dXJuIG1vbmRheTtcbiAgfVxuXG4gIGdldFN1bmRheUFmdGVyKGRhdGU6IERhdGUpIHtcbiAgICBjb25zdCBkYXkgPSBkYXRlLmdldERheSgpO1xuICAgIGNvbnN0IHN1bmRheSA9IG5ldyBEYXRlKGRhdGUpO1xuICAgIGlmIChkYXkgIT09IDApIHtcbiAgICAgIGNvbnN0IGRpZmYgPSBkYXRlLmdldERhdGUoKSArIDcgLSBkYXk7XG4gICAgICBzdW5kYXkuc2V0RGF0ZShkaWZmKTtcbiAgICB9XG4gICAgcmV0dXJuIHN1bmRheTtcbiAgfVxufSJdfQ==