@mintplayer/ng-bootstrap 20.0.0 → 20.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (177) hide show
  1. package/calendar/index.d.ts +3 -2
  2. package/code-snippet/index.d.ts +6 -6
  3. package/color-picker/index.d.ts +3 -2
  4. package/dock/index.d.ts +236 -165
  5. package/dropdown/index.d.ts +4 -3
  6. package/fesm2022/mintplayer-ng-bootstrap-accordion.mjs +13 -13
  7. package/fesm2022/mintplayer-ng-bootstrap-accordion.mjs.map +1 -1
  8. package/fesm2022/mintplayer-ng-bootstrap-alert.mjs +10 -10
  9. package/fesm2022/mintplayer-ng-bootstrap-alert.mjs.map +1 -1
  10. package/fesm2022/mintplayer-ng-bootstrap-badge.mjs +3 -3
  11. package/fesm2022/mintplayer-ng-bootstrap-badge.mjs.map +1 -1
  12. package/fesm2022/mintplayer-ng-bootstrap-breadcrumb.mjs +10 -10
  13. package/fesm2022/mintplayer-ng-bootstrap-breadcrumb.mjs.map +1 -1
  14. package/fesm2022/mintplayer-ng-bootstrap-button-group.mjs +3 -3
  15. package/fesm2022/mintplayer-ng-bootstrap-button-group.mjs.map +1 -1
  16. package/fesm2022/mintplayer-ng-bootstrap-button-type.mjs +3 -3
  17. package/fesm2022/mintplayer-ng-bootstrap-button-type.mjs.map +1 -1
  18. package/fesm2022/mintplayer-ng-bootstrap-calendar-month.mjs +9 -9
  19. package/fesm2022/mintplayer-ng-bootstrap-calendar-month.mjs.map +1 -1
  20. package/fesm2022/mintplayer-ng-bootstrap-calendar.mjs +8 -7
  21. package/fesm2022/mintplayer-ng-bootstrap-calendar.mjs.map +1 -1
  22. package/fesm2022/mintplayer-ng-bootstrap-card.mjs +10 -10
  23. package/fesm2022/mintplayer-ng-bootstrap-card.mjs.map +1 -1
  24. package/fesm2022/mintplayer-ng-bootstrap-carousel.mjs +14 -14
  25. package/fesm2022/mintplayer-ng-bootstrap-carousel.mjs.map +1 -1
  26. package/fesm2022/mintplayer-ng-bootstrap-close.mjs +3 -3
  27. package/fesm2022/mintplayer-ng-bootstrap-close.mjs.map +1 -1
  28. package/fesm2022/mintplayer-ng-bootstrap-code-snippet.mjs +9 -11
  29. package/fesm2022/mintplayer-ng-bootstrap-code-snippet.mjs.map +1 -1
  30. package/fesm2022/mintplayer-ng-bootstrap-color-picker.mjs +41 -34
  31. package/fesm2022/mintplayer-ng-bootstrap-color-picker.mjs.map +1 -1
  32. package/fesm2022/mintplayer-ng-bootstrap-container.mjs +3 -3
  33. package/fesm2022/mintplayer-ng-bootstrap-container.mjs.map +1 -1
  34. package/fesm2022/mintplayer-ng-bootstrap-context-menu.mjs +7 -7
  35. package/fesm2022/mintplayer-ng-bootstrap-context-menu.mjs.map +1 -1
  36. package/fesm2022/mintplayer-ng-bootstrap-copy.mjs +3 -3
  37. package/fesm2022/mintplayer-ng-bootstrap-copy.mjs.map +1 -1
  38. package/fesm2022/mintplayer-ng-bootstrap-datatable.mjs +13 -13
  39. package/fesm2022/mintplayer-ng-bootstrap-datatable.mjs.map +1 -1
  40. package/fesm2022/mintplayer-ng-bootstrap-datepicker.mjs +3 -3
  41. package/fesm2022/mintplayer-ng-bootstrap-datepicker.mjs.map +1 -1
  42. package/fesm2022/mintplayer-ng-bootstrap-dock.mjs +2552 -505
  43. package/fesm2022/mintplayer-ng-bootstrap-dock.mjs.map +1 -1
  44. package/fesm2022/mintplayer-ng-bootstrap-dropdown-divider.mjs +3 -3
  45. package/fesm2022/mintplayer-ng-bootstrap-dropdown-divider.mjs.map +1 -1
  46. package/fesm2022/mintplayer-ng-bootstrap-dropdown-menu.mjs +10 -10
  47. package/fesm2022/mintplayer-ng-bootstrap-dropdown-menu.mjs.map +1 -1
  48. package/fesm2022/mintplayer-ng-bootstrap-dropdown.mjs +18 -17
  49. package/fesm2022/mintplayer-ng-bootstrap-dropdown.mjs.map +1 -1
  50. package/fesm2022/mintplayer-ng-bootstrap-enhanced-paste.mjs +3 -3
  51. package/fesm2022/mintplayer-ng-bootstrap-enhanced-paste.mjs.map +1 -1
  52. package/fesm2022/mintplayer-ng-bootstrap-enum.mjs +3 -3
  53. package/fesm2022/mintplayer-ng-bootstrap-enum.mjs.map +1 -1
  54. package/fesm2022/mintplayer-ng-bootstrap-file-upload.mjs +13 -13
  55. package/fesm2022/mintplayer-ng-bootstrap-file-upload.mjs.map +1 -1
  56. package/fesm2022/mintplayer-ng-bootstrap-floating-labels.mjs +3 -3
  57. package/fesm2022/mintplayer-ng-bootstrap-floating-labels.mjs.map +1 -1
  58. package/fesm2022/mintplayer-ng-bootstrap-font-color.mjs +3 -3
  59. package/fesm2022/mintplayer-ng-bootstrap-font-color.mjs.map +1 -1
  60. package/fesm2022/mintplayer-ng-bootstrap-for.mjs +3 -3
  61. package/fesm2022/mintplayer-ng-bootstrap-for.mjs.map +1 -1
  62. package/fesm2022/mintplayer-ng-bootstrap-form.mjs +13 -13
  63. package/fesm2022/mintplayer-ng-bootstrap-form.mjs.map +1 -1
  64. package/fesm2022/mintplayer-ng-bootstrap-grid.mjs +19 -19
  65. package/fesm2022/mintplayer-ng-bootstrap-grid.mjs.map +1 -1
  66. package/fesm2022/mintplayer-ng-bootstrap-has-overlay.mjs +3 -3
  67. package/fesm2022/mintplayer-ng-bootstrap-has-overlay.mjs.map +1 -1
  68. package/fesm2022/mintplayer-ng-bootstrap-has-property.mjs +3 -3
  69. package/fesm2022/mintplayer-ng-bootstrap-has-property.mjs.map +1 -1
  70. package/fesm2022/mintplayer-ng-bootstrap-in-list.mjs +3 -3
  71. package/fesm2022/mintplayer-ng-bootstrap-in-list.mjs.map +1 -1
  72. package/fesm2022/mintplayer-ng-bootstrap-input-group.mjs +3 -3
  73. package/fesm2022/mintplayer-ng-bootstrap-input-group.mjs.map +1 -1
  74. package/fesm2022/mintplayer-ng-bootstrap-instance-of.mjs +16 -16
  75. package/fesm2022/mintplayer-ng-bootstrap-instance-of.mjs.map +1 -1
  76. package/fesm2022/mintplayer-ng-bootstrap-let.mjs +3 -3
  77. package/fesm2022/mintplayer-ng-bootstrap-let.mjs.map +1 -1
  78. package/fesm2022/mintplayer-ng-bootstrap-linify.mjs +3 -3
  79. package/fesm2022/mintplayer-ng-bootstrap-linify.mjs.map +1 -1
  80. package/fesm2022/mintplayer-ng-bootstrap-list-group.mjs +10 -10
  81. package/fesm2022/mintplayer-ng-bootstrap-list-group.mjs.map +1 -1
  82. package/fesm2022/mintplayer-ng-bootstrap-markdown.mjs +12 -12
  83. package/fesm2022/mintplayer-ng-bootstrap-markdown.mjs.map +1 -1
  84. package/fesm2022/mintplayer-ng-bootstrap-marquee.mjs +3 -3
  85. package/fesm2022/mintplayer-ng-bootstrap-marquee.mjs.map +1 -1
  86. package/fesm2022/mintplayer-ng-bootstrap-modal.mjs +27 -25
  87. package/fesm2022/mintplayer-ng-bootstrap-modal.mjs.map +1 -1
  88. package/fesm2022/mintplayer-ng-bootstrap-multiselect.mjs +16 -16
  89. package/fesm2022/mintplayer-ng-bootstrap-multiselect.mjs.map +1 -1
  90. package/fesm2022/mintplayer-ng-bootstrap-navbar-toggler.mjs +3 -3
  91. package/fesm2022/mintplayer-ng-bootstrap-navbar-toggler.mjs.map +1 -1
  92. package/fesm2022/mintplayer-ng-bootstrap-navbar.mjs +38 -39
  93. package/fesm2022/mintplayer-ng-bootstrap-navbar.mjs.map +1 -1
  94. package/fesm2022/mintplayer-ng-bootstrap-navigation-lock.mjs +15 -13
  95. package/fesm2022/mintplayer-ng-bootstrap-navigation-lock.mjs.map +1 -1
  96. package/fesm2022/mintplayer-ng-bootstrap-no-noscript.mjs +3 -3
  97. package/fesm2022/mintplayer-ng-bootstrap-no-noscript.mjs.map +1 -1
  98. package/fesm2022/mintplayer-ng-bootstrap-offcanvas.mjs +25 -25
  99. package/fesm2022/mintplayer-ng-bootstrap-offcanvas.mjs.map +1 -1
  100. package/fesm2022/mintplayer-ng-bootstrap-ordinal-number.mjs +3 -3
  101. package/fesm2022/mintplayer-ng-bootstrap-ordinal-number.mjs.map +1 -1
  102. package/fesm2022/mintplayer-ng-bootstrap-pagination.mjs +3 -3
  103. package/fesm2022/mintplayer-ng-bootstrap-pagination.mjs.map +1 -1
  104. package/fesm2022/mintplayer-ng-bootstrap-parallax.mjs +6 -6
  105. package/fesm2022/mintplayer-ng-bootstrap-parallax.mjs.map +1 -1
  106. package/fesm2022/mintplayer-ng-bootstrap-placeholder.mjs +10 -10
  107. package/fesm2022/mintplayer-ng-bootstrap-placeholder.mjs.map +1 -1
  108. package/fesm2022/mintplayer-ng-bootstrap-playlist-toggler.mjs +3 -3
  109. package/fesm2022/mintplayer-ng-bootstrap-playlist-toggler.mjs.map +1 -1
  110. package/fesm2022/mintplayer-ng-bootstrap-popover.mjs +20 -19
  111. package/fesm2022/mintplayer-ng-bootstrap-popover.mjs.map +1 -1
  112. package/fesm2022/mintplayer-ng-bootstrap-progress-bar.mjs +10 -10
  113. package/fesm2022/mintplayer-ng-bootstrap-progress-bar.mjs.map +1 -1
  114. package/fesm2022/mintplayer-ng-bootstrap-range.mjs +10 -10
  115. package/fesm2022/mintplayer-ng-bootstrap-range.mjs.map +1 -1
  116. package/fesm2022/mintplayer-ng-bootstrap-rating.mjs +3 -3
  117. package/fesm2022/mintplayer-ng-bootstrap-rating.mjs.map +1 -1
  118. package/fesm2022/mintplayer-ng-bootstrap-resizable.mjs +10 -10
  119. package/fesm2022/mintplayer-ng-bootstrap-resizable.mjs.map +1 -1
  120. package/fesm2022/mintplayer-ng-bootstrap-scheduler.mjs +38 -36
  121. package/fesm2022/mintplayer-ng-bootstrap-scheduler.mjs.map +1 -1
  122. package/fesm2022/mintplayer-ng-bootstrap-scrollspy.mjs +13 -13
  123. package/fesm2022/mintplayer-ng-bootstrap-scrollspy.mjs.map +1 -1
  124. package/fesm2022/mintplayer-ng-bootstrap-searchbox.mjs +16 -16
  125. package/fesm2022/mintplayer-ng-bootstrap-searchbox.mjs.map +1 -1
  126. package/fesm2022/mintplayer-ng-bootstrap-select.mjs +13 -13
  127. package/fesm2022/mintplayer-ng-bootstrap-select.mjs.map +1 -1
  128. package/fesm2022/mintplayer-ng-bootstrap-select2.mjs +13 -13
  129. package/fesm2022/mintplayer-ng-bootstrap-select2.mjs.map +1 -1
  130. package/fesm2022/mintplayer-ng-bootstrap-shell.mjs +10 -10
  131. package/fesm2022/mintplayer-ng-bootstrap-shell.mjs.map +1 -1
  132. package/fesm2022/mintplayer-ng-bootstrap-signature-pad.mjs +6 -4
  133. package/fesm2022/mintplayer-ng-bootstrap-signature-pad.mjs.map +1 -1
  134. package/fesm2022/mintplayer-ng-bootstrap-slugify.mjs +3 -3
  135. package/fesm2022/mintplayer-ng-bootstrap-slugify.mjs.map +1 -1
  136. package/fesm2022/mintplayer-ng-bootstrap-spinner.mjs +3 -3
  137. package/fesm2022/mintplayer-ng-bootstrap-spinner.mjs.map +1 -1
  138. package/fesm2022/mintplayer-ng-bootstrap-split-string.mjs +3 -3
  139. package/fesm2022/mintplayer-ng-bootstrap-split-string.mjs.map +1 -1
  140. package/fesm2022/mintplayer-ng-bootstrap-splitter.mjs +18 -16
  141. package/fesm2022/mintplayer-ng-bootstrap-splitter.mjs.map +1 -1
  142. package/fesm2022/mintplayer-ng-bootstrap-sticky-footer.mjs +10 -10
  143. package/fesm2022/mintplayer-ng-bootstrap-sticky-footer.mjs.map +1 -1
  144. package/fesm2022/mintplayer-ng-bootstrap-tab-control.mjs +14 -14
  145. package/fesm2022/mintplayer-ng-bootstrap-tab-control.mjs.map +1 -1
  146. package/fesm2022/mintplayer-ng-bootstrap-table.mjs +3 -3
  147. package/fesm2022/mintplayer-ng-bootstrap-table.mjs.map +1 -1
  148. package/fesm2022/mintplayer-ng-bootstrap-timepicker.mjs +3 -3
  149. package/fesm2022/mintplayer-ng-bootstrap-timepicker.mjs.map +1 -1
  150. package/fesm2022/mintplayer-ng-bootstrap-toast.mjs +25 -25
  151. package/fesm2022/mintplayer-ng-bootstrap-toast.mjs.map +1 -1
  152. package/fesm2022/mintplayer-ng-bootstrap-toggle-button.mjs +13 -13
  153. package/fesm2022/mintplayer-ng-bootstrap-toggle-button.mjs.map +1 -1
  154. package/fesm2022/mintplayer-ng-bootstrap-tooltip.mjs +10 -10
  155. package/fesm2022/mintplayer-ng-bootstrap-tooltip.mjs.map +1 -1
  156. package/fesm2022/mintplayer-ng-bootstrap-treeview.mjs +10 -10
  157. package/fesm2022/mintplayer-ng-bootstrap-treeview.mjs.map +1 -1
  158. package/fesm2022/mintplayer-ng-bootstrap-trust-html.mjs +3 -3
  159. package/fesm2022/mintplayer-ng-bootstrap-trust-html.mjs.map +1 -1
  160. package/fesm2022/mintplayer-ng-bootstrap-typeahead.mjs +3 -3
  161. package/fesm2022/mintplayer-ng-bootstrap-typeahead.mjs.map +1 -1
  162. package/fesm2022/mintplayer-ng-bootstrap-uc-first.mjs +3 -3
  163. package/fesm2022/mintplayer-ng-bootstrap-uc-first.mjs.map +1 -1
  164. package/fesm2022/mintplayer-ng-bootstrap-user-agent.mjs +3 -3
  165. package/fesm2022/mintplayer-ng-bootstrap-user-agent.mjs.map +1 -1
  166. package/fesm2022/mintplayer-ng-bootstrap-word-count.mjs +3 -3
  167. package/fesm2022/mintplayer-ng-bootstrap-word-count.mjs.map +1 -1
  168. package/navbar/index.d.ts +3 -2
  169. package/navigation-lock/index.d.ts +3 -1
  170. package/package.json +9 -9
  171. package/popover/index.d.ts +4 -3
  172. package/scheduler/index.d.ts +3 -2
  173. package/splitter/index.d.ts +3 -2
  174. package/src/styles/utilities/cursor.scss +3 -1
  175. package/src/styles/utilities/overflow.scss +3 -1
  176. package/src/styles/utilities/white-space.scss +3 -1
  177. package/src/styles/utilities/width.scss +3 -1
@@ -74,10 +74,10 @@ class BsTimelineService {
74
74
  return false;
75
75
  }
76
76
  }
77
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.0", ngImport: i0, type: BsTimelineService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
78
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.0.0", ngImport: i0, type: BsTimelineService, providedIn: 'root' }); }
77
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.7", ngImport: i0, type: BsTimelineService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
78
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.1.7", ngImport: i0, type: BsTimelineService, providedIn: 'root' }); }
79
79
  }
80
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.0", ngImport: i0, type: BsTimelineService, decorators: [{
80
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.7", ngImport: i0, type: BsTimelineService, decorators: [{
81
81
  type: Injectable,
82
82
  args: [{
83
83
  providedIn: 'root'
@@ -149,10 +149,10 @@ class ResourceGroupPresenterComponent {
149
149
  toggleExpanded() {
150
150
  this.isExpanded$.next(!this.isExpanded$.value);
151
151
  }
152
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.0", ngImport: i0, type: ResourceGroupPresenterComponent, deps: [{ token: i1.DomSanitizer }], target: i0.ɵɵFactoryTarget.Component }); }
153
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.0.0", type: ResourceGroupPresenterComponent, isStandalone: false, selector: "bs-resource-group-presenter", inputs: { level: "level", resourceGroup: "resourceGroup", timeSlots: "timeSlots", isExpanded: "isExpanded" }, ngImport: i0, template: "@if (data$ | async; as data) {\n\n <!-- Data is a resource group -->\n @if (data.resourceGroup) {\n <!-- Header -->\n @if (timeSlots$ | async; as timeSlots) {\n <tr class=\"p-0 cursor-pointer\" [title]=\"data.resourceGroup.description\">\n @if (colSpan$ | async; as colspan) {\n <td class=\"p-2 cursor-pointer\" [colSpan]=\"colspan + 1\" (click)=\"toggleExpanded()\">\n <span class=\"p-2 align-middle position-sticky\">\n @if (isExpanded$ | async) {\n <span [innerHTML]=\"chevronDown\" [style.padding-left.px]=\"level * 20\"></span>\n } @else {\n <span [innerHTML]=\"chevronRight\" [style.padding-left.px]=\"level * 20\"></span>\n }\n {{ data.resourceGroup.description }}\n </span>\n </td>\n }\n </tr>\n }\n\n <!-- Subgroups or resources -->\n @if (isExpanded$ | async) {\n @if (timeSlots$ | async; as timeSlots) {\n @for (child of data.resourceGroup.children; track child) {\n <bs-resource-group-presenter [resourceGroup]=\"child\" [timeSlots]=\"timeSlots\" [level]=\"level + 1\"></bs-resource-group-presenter>\n }\n }\n }\n }\n\n <!-- Data is a resource -->\n @if (data.resource) {\n <tr class=\"p-0 bordered\" [title]=\"data.resource.description\">\n <td class=\"p-0 bg-white\">\n <div class=\"p-2\">{{ data.resource.description }}</div>\n </td>\n @for (slots of (timeSlots$ | async); track $index) {\n @for (slot of slots.slots; track slot) {\n <td class=\"bg-white border-1\">\n <!-- {{ slot.start | date: 'dd/MM/yyyy HH:mm:ss' }} -->\n </td>\n }\n }\n </tr>\n }\n}", styles: [":host{display:contents}tr{border-bottom-width:1px}tr:not(.bordered) td span.position-sticky{left:0;right:0}\n"], dependencies: [{ kind: "component", type: ResourceGroupPresenterComponent, selector: "bs-resource-group-presenter", inputs: ["level", "resourceGroup", "timeSlots", "isExpanded"] }, { kind: "pipe", type: i5.AsyncPipe, name: "async" }] }); }
152
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.7", ngImport: i0, type: ResourceGroupPresenterComponent, deps: [{ token: i1.DomSanitizer }], target: i0.ɵɵFactoryTarget.Component }); }
153
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.1.7", type: ResourceGroupPresenterComponent, isStandalone: false, selector: "bs-resource-group-presenter", inputs: { level: "level", resourceGroup: "resourceGroup", timeSlots: "timeSlots", isExpanded: "isExpanded" }, ngImport: i0, template: "@if (data$ | async; as data) {\n\n <!-- Data is a resource group -->\n @if (data.resourceGroup) {\n <!-- Header -->\n @if (timeSlots$ | async; as timeSlots) {\n <tr class=\"p-0 cursor-pointer\" [title]=\"data.resourceGroup.description\">\n @if (colSpan$ | async; as colspan) {\n <td class=\"p-2 cursor-pointer\" [colSpan]=\"colspan + 1\" (click)=\"toggleExpanded()\">\n <span class=\"p-2 align-middle position-sticky\">\n @if (isExpanded$ | async) {\n <span [innerHTML]=\"chevronDown\" [style.padding-left.px]=\"level * 20\"></span>\n } @else {\n <span [innerHTML]=\"chevronRight\" [style.padding-left.px]=\"level * 20\"></span>\n }\n {{ data.resourceGroup.description }}\n </span>\n </td>\n }\n </tr>\n }\n\n <!-- Subgroups or resources -->\n @if (isExpanded$ | async) {\n @if (timeSlots$ | async; as timeSlots) {\n @for (child of data.resourceGroup.children; track child) {\n <bs-resource-group-presenter [resourceGroup]=\"child\" [timeSlots]=\"timeSlots\" [level]=\"level + 1\"></bs-resource-group-presenter>\n }\n }\n }\n }\n\n <!-- Data is a resource -->\n @if (data.resource) {\n <tr class=\"p-0 bordered\" [title]=\"data.resource.description\">\n <td class=\"p-0 bg-white\">\n <div class=\"p-2\">{{ data.resource.description }}</div>\n </td>\n @for (slots of (timeSlots$ | async); track $index) {\n @for (slot of slots.slots; track slot) {\n <td class=\"bg-white border-1\">\n <!-- {{ slot.start | date: 'dd/MM/yyyy HH:mm:ss' }} -->\n </td>\n }\n }\n </tr>\n }\n}", styles: [":host{display:contents}tr{border-bottom-width:1px}tr:not(.bordered) td span.position-sticky{left:0;right:0}\n"], dependencies: [{ kind: "component", type: ResourceGroupPresenterComponent, selector: "bs-resource-group-presenter", inputs: ["level", "resourceGroup", "timeSlots", "isExpanded"] }, { kind: "pipe", type: i5.AsyncPipe, name: "async" }] }); }
154
154
  }
155
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.0", ngImport: i0, type: ResourceGroupPresenterComponent, decorators: [{
155
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.7", ngImport: i0, type: ResourceGroupPresenterComponent, decorators: [{
156
156
  type: Component,
157
157
  args: [{ selector: 'bs-resource-group-presenter', standalone: false, template: "@if (data$ | async; as data) {\n\n <!-- Data is a resource group -->\n @if (data.resourceGroup) {\n <!-- Header -->\n @if (timeSlots$ | async; as timeSlots) {\n <tr class=\"p-0 cursor-pointer\" [title]=\"data.resourceGroup.description\">\n @if (colSpan$ | async; as colspan) {\n <td class=\"p-2 cursor-pointer\" [colSpan]=\"colspan + 1\" (click)=\"toggleExpanded()\">\n <span class=\"p-2 align-middle position-sticky\">\n @if (isExpanded$ | async) {\n <span [innerHTML]=\"chevronDown\" [style.padding-left.px]=\"level * 20\"></span>\n } @else {\n <span [innerHTML]=\"chevronRight\" [style.padding-left.px]=\"level * 20\"></span>\n }\n {{ data.resourceGroup.description }}\n </span>\n </td>\n }\n </tr>\n }\n\n <!-- Subgroups or resources -->\n @if (isExpanded$ | async) {\n @if (timeSlots$ | async; as timeSlots) {\n @for (child of data.resourceGroup.children; track child) {\n <bs-resource-group-presenter [resourceGroup]=\"child\" [timeSlots]=\"timeSlots\" [level]=\"level + 1\"></bs-resource-group-presenter>\n }\n }\n }\n }\n\n <!-- Data is a resource -->\n @if (data.resource) {\n <tr class=\"p-0 bordered\" [title]=\"data.resource.description\">\n <td class=\"p-0 bg-white\">\n <div class=\"p-2\">{{ data.resource.description }}</div>\n </td>\n @for (slots of (timeSlots$ | async); track $index) {\n @for (slot of slots.slots; track slot) {\n <td class=\"bg-white border-1\">\n <!-- {{ slot.start | date: 'dd/MM/yyyy HH:mm:ss' }} -->\n </td>\n }\n }\n </tr>\n }\n}", styles: [":host{display:contents}tr{border-bottom-width:1px}tr:not(.bordered) td span.position-sticky{left:0;right:0}\n"] }]
158
158
  }], ctorParameters: () => [{ type: i1.DomSanitizer }], propDecorators: { level: [{
@@ -169,10 +169,10 @@ class BsSecondsTimespanPipe {
169
169
  transform(value) {
170
170
  return (value.end.getTime() - value.start.getTime()) / 1000;
171
171
  }
172
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.0", ngImport: i0, type: BsSecondsTimespanPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe }); }
173
- static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "20.0.0", ngImport: i0, type: BsSecondsTimespanPipe, isStandalone: false, name: "bsSecondsTimespan" }); }
172
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.7", ngImport: i0, type: BsSecondsTimespanPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe }); }
173
+ static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "20.1.7", ngImport: i0, type: BsSecondsTimespanPipe, isStandalone: false, name: "bsSecondsTimespan" }); }
174
174
  }
175
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.0", ngImport: i0, type: BsSecondsTimespanPipe, decorators: [{
175
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.7", ngImport: i0, type: BsSecondsTimespanPipe, decorators: [{
176
176
  type: Pipe,
177
177
  args: [{
178
178
  name: 'bsSecondsTimespan',
@@ -188,10 +188,10 @@ class BsSecondsTodayOffsetPipe {
188
188
  today.setSeconds(0);
189
189
  return (value.start.getTime() - today.getTime()) / 1000;
190
190
  }
191
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.0", ngImport: i0, type: BsSecondsTodayOffsetPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe }); }
192
- static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "20.0.0", ngImport: i0, type: BsSecondsTodayOffsetPipe, isStandalone: false, name: "bsSecondsTodayOffset" }); }
191
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.7", ngImport: i0, type: BsSecondsTodayOffsetPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe }); }
192
+ static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "20.1.7", ngImport: i0, type: BsSecondsTodayOffsetPipe, isStandalone: false, name: "bsSecondsTodayOffset" }); }
193
193
  }
194
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.0", ngImport: i0, type: BsSecondsTodayOffsetPipe, decorators: [{
194
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.7", ngImport: i0, type: BsSecondsTodayOffsetPipe, decorators: [{
195
195
  type: Pipe,
196
196
  args: [{
197
197
  name: 'bsSecondsTodayOffset',
@@ -209,10 +209,10 @@ class DayOfWeekPipe {
209
209
  return dayOfWeek;
210
210
  }
211
211
  }
212
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.0", ngImport: i0, type: DayOfWeekPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe }); }
213
- static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "20.0.0", ngImport: i0, type: DayOfWeekPipe, isStandalone: false, name: "dayOfWeek" }); }
212
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.7", ngImport: i0, type: DayOfWeekPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe }); }
213
+ static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "20.1.7", ngImport: i0, type: DayOfWeekPipe, isStandalone: false, name: "dayOfWeek" }); }
214
214
  }
215
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.0", ngImport: i0, type: DayOfWeekPipe, decorators: [{
215
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.7", ngImport: i0, type: DayOfWeekPipe, decorators: [{
216
216
  type: Pipe,
217
217
  args: [{
218
218
  name: 'dayOfWeek',
@@ -222,10 +222,11 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.0", ngImpor
222
222
 
223
223
  /// <reference types="../../types" />
224
224
  class BsSchedulerComponent {
225
- constructor(sanitizer, calendarMonthService, timelineService) {
225
+ constructor(sanitizer, calendarMonthService, timelineService, destroy) {
226
226
  this.sanitizer = sanitizer;
227
227
  this.calendarMonthService = calendarMonthService;
228
228
  this.timelineService = timelineService;
229
+ this.destroy = destroy;
229
230
  this.resources$ = new BehaviorSubject([]);
230
231
  this.weekOptions$ = new BehaviorSubject({ unitHeight: 30 });
231
232
  this.timelineOptions$ = new BehaviorSubject({ unitWidth: 50 });
@@ -380,6 +381,7 @@ class BsSchedulerComponent {
380
381
  }
381
382
  }
382
383
  }))
384
+ .pipe(takeUntilDestroyed(this.destroy))
383
385
  .subscribe((timeslots) => {
384
386
  // For performance reasons, we're not using an observable here, but persist the timeslots in a BehaviorSubject.
385
387
  this.timeSlots$.next(timeslots);
@@ -463,7 +465,7 @@ class BsSchedulerComponent {
463
465
  return new Date(currentWeekOrMonth.getFullYear(), currentWeekOrMonth.getMonth() + (next ? 1 : -1), 1);
464
466
  }
465
467
  }
466
- }), take(1))
468
+ }), take(1), takeUntilDestroyed(this.destroy))
467
469
  .subscribe((w) => this.currentWeekOrMonth$.next(w));
468
470
  }
469
471
  onHoverEvent(ev) {
@@ -500,7 +502,7 @@ class BsSchedulerComponent {
500
502
  }
501
503
  onStartDragEvent(eventPart, ev) {
502
504
  ev.preventDefault();
503
- this.hoveredTimeSlot$.pipe(take(1)).subscribe((hoveredTimeSlot) => {
505
+ this.hoveredTimeSlot$.pipe(take(1), takeUntilDestroyed(this.destroy)).subscribe((hoveredTimeSlot) => {
504
506
  if (eventPart.event) {
505
507
  this.dragStartTimeslot = hoveredTimeSlot;
506
508
  this.operation = {
@@ -567,7 +569,7 @@ class BsSchedulerComponent {
567
569
  return slot;
568
570
  }
569
571
  onMousemove(ev) {
570
- this.timeSlots$.pipe(take(1)).subscribe((timeSlots) => {
572
+ this.timeSlots$.pipe(take(1), takeUntilDestroyed(this.destroy)).subscribe((timeSlots) => {
571
573
  const hovered = this.getHoveredTimeslot(ev, timeSlots);
572
574
  this.hoveredTimeSlot$.next(hovered);
573
575
  if (this.operation) {
@@ -589,7 +591,7 @@ class BsSchedulerComponent {
589
591
  }
590
592
  return ev;
591
593
  }))
592
- .pipe(take(1))
594
+ .pipe(take(1), takeUntilDestroyed(this.destroy))
593
595
  .subscribe((ev) => this.previewEvent$.next(ev));
594
596
  }
595
597
  else if (this.dragStartTimeslot.start.getTime() > hovered.start.getTime()) {
@@ -603,7 +605,7 @@ class BsSchedulerComponent {
603
605
  }
604
606
  return ev;
605
607
  }))
606
- .pipe(take(1))
608
+ .pipe(take(1), takeUntilDestroyed(this.destroy))
607
609
  .subscribe((ev) => this.previewEvent$.next(ev));
608
610
  }
609
611
  }
@@ -627,7 +629,7 @@ class BsSchedulerComponent {
627
629
  return ev;
628
630
  }
629
631
  }))
630
- .pipe(take(1))
632
+ .pipe(take(1), takeUntilDestroyed(this.destroy))
631
633
  .subscribe(ev => this.previewEvent$.next(ev));
632
634
  }
633
635
  }
@@ -650,7 +652,7 @@ class BsSchedulerComponent {
650
652
  }
651
653
  return ev;
652
654
  }))
653
- .pipe(take(1))
655
+ .pipe(take(1), takeUntilDestroyed(this.destroy))
654
656
  .subscribe((ev) => this.previewEvent$.next(ev));
655
657
  }
656
658
  }
@@ -666,7 +668,7 @@ class BsSchedulerComponent {
666
668
  case EDragOperation.createEvent:
667
669
  {
668
670
  combineLatest([this.previewEvent$])
669
- .pipe(take(1))
671
+ .pipe(take(1), takeUntilDestroyed(this.destroy))
670
672
  .subscribe(([previewEvent]) => {
671
673
  if (previewEvent) {
672
674
  this.operation = null;
@@ -693,7 +695,7 @@ class BsSchedulerComponent {
693
695
  {
694
696
  this.previewEvent$
695
697
  .pipe(filter((ev) => !!ev))
696
- .pipe(take(1))
698
+ .pipe(take(1), takeUntilDestroyed(this.destroy))
697
699
  .subscribe((previewEvent) => {
698
700
  if (this.operation && this.operation.event && previewEvent) {
699
701
  this.operation.event.start = previewEvent.start;
@@ -709,13 +711,13 @@ class BsSchedulerComponent {
709
711
  }
710
712
  }
711
713
  }
712
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.0", ngImport: i0, type: BsSchedulerComponent, deps: [{ token: i1.DomSanitizer }, { token: i2.BsCalendarMonthService }, { token: BsTimelineService }], target: i0.ɵɵFactoryTarget.Component }); }
713
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.0.0", type: BsSchedulerComponent, isStandalone: false, selector: "bs-scheduler", inputs: { mode: "mode", weekOptions: "weekOptions", timelineOptions: "timelineOptions", maxInnerHeight: "maxInnerHeight", resources: "resources" }, outputs: { modeChange: "modeChange", weekOptionsChange: "weekOptionsChange", timelineOptionsChange: "timelineOptionsChange" }, host: { listeners: { "document:mousemove": "onMousemove($event)", "document:mouseup": "onMouseUp($event)" } }, viewQueries: [{ propertyName: "timeSlotElements", predicate: ["slot"], descendants: true }], ngImport: i0, template: "@switch (mode$ | async) {\n @case (modes.week) {\n <div class=\"d-flex flex-column w-100 overflow-y-auto mb-0 week-schedule\" [style.max-height.px]=\"null\">\n <div class=\"calendar-head\">\n <div class=\"w-100 d-flex flex-row\">\n <div class=\"d-flex calendar-left justify-content-between\">\n <button class=\"btn btn-default flex-start\" (click)=\"onPreviousWeekOrMonth()\">\n <span [innerHTML]=\"chevronLeft\" class=\"px-0\"></span>\n </button>\n <button class=\"btn btn-default flex-end\" (click)=\"onNextWeekOrMonth()\">\n <span [innerHTML]=\"chevronRight\" class=\"px-0\"></span>\n </button>\n </div>\n @for (day of (shownDays$ | async); track day) {\n <div class=\"flex-grow-1 calendar-head-cell\">\n <span class=\"d-block col-form-label text-center text-nowrap\">\n <span>{{ day | date: 'dd-MM' }}</span><span class=\"d-none d-lg-inline-block\">-{{ day | date: 'yyyy' }}</span>\n </span>\n </div>\n }\n </div>\n </div>\n <div class=\"calendar-body\" [style.height.px]=\"maxInnerHeight\">\n @if (timeSlots$ | async; as row) {\n <div class=\"position-relative\">\n @if (weekOptions$ | async; as weekOptions) {\n <!-- Timeslots -->\n @for (timeslots of row; track timeslots; let i = $index) {\n <div class=\"d-flex flex-row p-0 timeslot\" [style.height.px]=\"weekOptions.unitHeight\">\n <div class=\"calendar-cell calendar-left align-top px-2 py-0\">{{ timeslots.slots[0].start | date: 'HH:mm:ss' }}</div>\n @for (slot of timeslots.slots; track slot.start; let j = $index) {\n <div class=\"calendar-cell flex-grow-1\" #slot (mousedown)=\"onCreateEvent($event, slot)\" [attr.data-row]=\"i\" [attr.data-column]=\"j\"></div>\n }\n </div>\n }\n \n <!-- Events -->\n @if (timeSlotDuration$ | async; as timeSlotDuration) {\n @if (timelinedEventPartsForThisWeek$ | async; as partData) {\n @for (eventPart of partData.parts; track eventPart) {\n <div class=\"event p-0\"\n [style.top.px]=\"(eventPart.part | bsSecondsTodayOffset) / timeSlotDuration * weekOptions.unitHeight\"\n [style.height.px]=\"(eventPart.part | bsSecondsTimespan) / timeSlotDuration * weekOptions.unitHeight\"\n [style.left]=\"'calc(90px + ((100% - 90px) / 7 * ' + ((eventPart.part | dayOfWeek) - 1) + '))'\">\n <div class=\"event-inner\" [class.hover]=\"(hoveredEvent$ | async) === eventPart.part.event\"\n [style.width]=\"'calc(100% / ' + partData.total + ')'\"\n [style.height.px]=\"(eventPart.part | bsSecondsTimespan) / timeSlotDuration * weekOptions.unitHeight\"\n [style.margin-left]=\"'calc(100% / ' + partData.total + ' * ' + eventPart.index + ')'\">\n \n @if (eventPart.part.start === eventPart.part.event?.start) {\n <div class=\"event-resize top\" (mousedown)=\"onStartResizeEvent(eventPart.part.event, 'top')\"></div>\n }\n <div class=\"event-border\"></div>\n @if (eventPart.part.event) {\n <div class=\"event-wrapper\"\n (mousedown)=\"onStartDragEvent(eventPart.part, $event)\"\n (mouseenter)=\"onHoverEvent(eventPart.part.event)\"\n (mouseleave)=\"onLeaveEvent(eventPart.part.event)\">\n <div class=\"event-bg\" [style.background-color]=\"eventPart.part.event.color\"></div>\n <div class=\"event-label\">{{ eventPart.part.event.description }}</div>\n </div>\n }\n @if (eventPart.part.end === eventPart.part.event?.end) {\n <div class=\"event-resize bottom\" (mousedown)=\"onStartResizeEvent(eventPart.part.event, 'bottom')\"></div>\n }\n </div>\n </div>\n }\n }\n @if (previewEventPartsForThisWeek$ | async; as previewPartData) {\n @for (eventPart of previewPartData; track eventPart) {\n <div class=\"event preview p-0\"\n [style.top.px]=\"(eventPart | bsSecondsTodayOffset) / timeSlotDuration * weekOptions.unitHeight\"\n [style.height.px]=\"(eventPart | bsSecondsTimespan) / timeSlotDuration * weekOptions.unitHeight\"\n [style.left]=\"'calc(90px + ((100% - 90px) / 7 * ' + ((eventPart | dayOfWeek) - 1) + '))'\">\n <div class=\"event-inner w-100\"\n [style.height.px]=\"(eventPart | bsSecondsTimespan) / timeSlotDuration * weekOptions.unitHeight\">\n </div>\n </div>\n }\n }\n }\n }\n </div>\n }\n </div>\n </div>\n }\n @case (modes.timeline) {\n <div class=\"d-flex flex-column-100 overflow-y-auto mb-0 bg-white timeline\">\n <div class=\"calendar-head d-flex\">\n <button class=\"btn flex-start\" (click)=\"onPreviousWeekOrMonth()\">\n <span [innerHTML]=\"chevronLeft\" class=\"px-0\"></span>\n </button>\n <div class=\"flex-grow-1 h3 py-2 mb-0 text-center\">{{ currentWeekOrMonth$ | async | date: 'MMMM yyyy' }}</div>\n <button class=\"btn flex-start\" (click)=\"onNextWeekOrMonth()\">\n <span [innerHTML]=\"chevronRight\" class=\"px-0\"></span>\n </button>\n </div>\n \n <div class=\"calendar-body table-responsive overflow-x-auto\">\n <table class=\"table mb-0\">\n @if (timeSlots$ | async; as timeSlots) {\n <tr>\n <td></td>\n @for (day of timeSlots; track day) {\n <td [attr.colspan]=\"day.slots.length\" class=\"text-center px-2\">\n <span class=\"position-sticky day-label\">{{ day.stamp | date: 'd EE' }}</span>\n </td>\n }\n </tr>\n <tr>\n <td></td>\n @if (timelineOptions$ | async; as timelineOptions) {\n @for (day of timeSlots; track day) {\n @for (slot of day.slots; track slot) {\n <td>\n <span class=\"d-block p-0 text-center\" [style.width.px]=\"timelineOptions.unitWidth\">\n {{ slot.start | date: 'HH:mm' }}\n </span>\n </td>\n }\n }\n }\n </tr>\n @for (group of (resources$ | async); track group) {\n <bs-resource-group-presenter [resourceGroup]=\"group\" [timeSlots]=\"timeSlots\"></bs-resource-group-presenter>\n }\n }\n </table>\n </div>\n </div>\n }\n}", styles: [":host{display:block;border:1px solid #333;border-top-right-radius:10px;border-top-left-radius:10px;overflow:hidden}.calendar-head{background:#f7f7f7;color:#007aff}.tabel .calendar-head{flex:0 0 auto}.tabel .calendar-body{display:block;flex:1 1 auto}.week-schedule .calendar-head>div{padding-right:18px}.week-schedule .calendar-body{overflow-y:scroll;overflow-x:hidden}.week-schedule .calendar-body .calendar-cell{border-right:1px solid #DEE2E6;border-bottom:1px solid #DEE2E6;cursor:default}.week-schedule .calendar-body .calendar-cell.hover{border-top-width:3px}.week-schedule .calendar-left{width:90px}.week-schedule .event{z-index:5;width:calc((100% - 90px) / 7);height:100px;overflow:hidden;position:absolute;-webkit-user-select:none;user-select:none;pointer-events:none}.week-schedule .event.preview{background:#666;opacity:.6}.week-schedule .event .event-border{background:#000;top:0;left:0;bottom:3px;width:3px;position:absolute;z-index:10;opacity:.3}.week-schedule .event .event-inner{position:relative;inset:0 5px 5px 0;cursor:move;pointer-events:all;overflow:hidden}.week-schedule .event .event-inner .event-wrapper{width:calc(100% - 2px);margin:1px auto 1px 0;height:calc(100% - 3px)}.week-schedule .event .event-inner .event-wrapper .event-bg{opacity:.5;height:100%;transition:opacity .15s ease-in-out}.week-schedule .event .event-inner .event-wrapper .event-label{position:absolute;top:0;font-size:12px;font-weight:600;padding:4px}.week-schedule .event .event-inner .event-resize{position:absolute;cursor:ns-resize;height:4px;left:0;right:0;z-index:400}.week-schedule .event .event-inner .event-resize.top{top:0}.week-schedule .event .event-inner .event-resize.bottom{bottom:0}.week-schedule .event .event-inner .event-resize:hover{background:#ddd}.week-schedule .event .event-inner.hover .event-bg{opacity:.7!important}@media (max-width: 767px){.week-schedule.tabel .calendar-head .calendar-head-cell{text-orientation:sideways;writing-mode:vertical-rl}}.timeline.tabel{flex-flow:column}.timeline .calendar-body .tabel{background-color:#f7f7f7}.timeline .calendar-body .tabel tr:first-child td{background-color:#fff;border:1px solid #000}.timeline .calendar-body .tabel tr:first-child td:first-child{min-width:10rem}.timeline .calendar-body .tabel tr:first-child span.day-label{left:0;right:0}.timeline .calendar-body .tabel tr:nth-child(2) td{border-width:1px;border-color:inherit}.timeline .calendar-body .tabel>:not(:first-child){border-top:none!important}\n"], dependencies: [{ kind: "component", type: ResourceGroupPresenterComponent, selector: "bs-resource-group-presenter", inputs: ["level", "resourceGroup", "timeSlots", "isExpanded"] }, { kind: "pipe", type: i5.AsyncPipe, name: "async" }, { kind: "pipe", type: i5.DatePipe, name: "date" }, { kind: "pipe", type: BsSecondsTimespanPipe, name: "bsSecondsTimespan" }, { kind: "pipe", type: BsSecondsTodayOffsetPipe, name: "bsSecondsTodayOffset" }, { kind: "pipe", type: DayOfWeekPipe, name: "dayOfWeek" }] }); }
714
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.7", ngImport: i0, type: BsSchedulerComponent, deps: [{ token: i1.DomSanitizer }, { token: i2.BsCalendarMonthService }, { token: BsTimelineService }, { token: i0.DestroyRef }], target: i0.ɵɵFactoryTarget.Component }); }
715
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.1.7", type: BsSchedulerComponent, isStandalone: false, selector: "bs-scheduler", inputs: { mode: "mode", weekOptions: "weekOptions", timelineOptions: "timelineOptions", maxInnerHeight: "maxInnerHeight", resources: "resources" }, outputs: { modeChange: "modeChange", weekOptionsChange: "weekOptionsChange", timelineOptionsChange: "timelineOptionsChange" }, host: { listeners: { "document:mousemove": "onMousemove($event)", "document:mouseup": "onMouseUp($event)" } }, viewQueries: [{ propertyName: "timeSlotElements", predicate: ["slot"], descendants: true }], ngImport: i0, template: "@switch (mode$ | async) {\n @case (modes.week) {\n <div class=\"d-flex flex-column w-100 overflow-y-auto mb-0 week-schedule\" [style.max-height.px]=\"null\">\n <div class=\"calendar-head\">\n <div class=\"w-100 d-flex flex-row\">\n <div class=\"d-flex calendar-left justify-content-between\">\n <button class=\"btn btn-default flex-start\" (click)=\"onPreviousWeekOrMonth()\">\n <span [innerHTML]=\"chevronLeft\" class=\"px-0\"></span>\n </button>\n <button class=\"btn btn-default flex-end\" (click)=\"onNextWeekOrMonth()\">\n <span [innerHTML]=\"chevronRight\" class=\"px-0\"></span>\n </button>\n </div>\n @for (day of (shownDays$ | async); track day) {\n <div class=\"flex-grow-1 calendar-head-cell\">\n <span class=\"d-block col-form-label text-center text-nowrap\">\n <span>{{ day | date: 'dd-MM' }}</span><span class=\"d-none d-lg-inline-block\">-{{ day | date: 'yyyy' }}</span>\n </span>\n </div>\n }\n </div>\n </div>\n <div class=\"calendar-body\" [style.height.px]=\"maxInnerHeight\">\n @if (timeSlots$ | async; as row) {\n <div class=\"position-relative\">\n @if (weekOptions$ | async; as weekOptions) {\n <!-- Timeslots -->\n @for (timeslots of row; track timeslots; let i = $index) {\n <div class=\"d-flex flex-row p-0 timeslot\" [style.height.px]=\"weekOptions.unitHeight\">\n <div class=\"calendar-cell calendar-left align-top px-2 py-0\">{{ timeslots.slots[0].start | date: 'HH:mm:ss' }}</div>\n @for (slot of timeslots.slots; track slot.start; let j = $index) {\n <div class=\"calendar-cell flex-grow-1\" #slot (mousedown)=\"onCreateEvent($event, slot)\" [attr.data-row]=\"i\" [attr.data-column]=\"j\"></div>\n }\n </div>\n }\n \n <!-- Events -->\n @if (timeSlotDuration$ | async; as timeSlotDuration) {\n @if (timelinedEventPartsForThisWeek$ | async; as partData) {\n @for (eventPart of partData.parts; track eventPart) {\n <div class=\"event p-0\"\n [style.top.px]=\"(eventPart.part | bsSecondsTodayOffset) / timeSlotDuration * weekOptions.unitHeight\"\n [style.height.px]=\"(eventPart.part | bsSecondsTimespan) / timeSlotDuration * weekOptions.unitHeight\"\n [style.left]=\"'calc(90px + ((100% - 90px) / 7 * ' + ((eventPart.part | dayOfWeek) - 1) + '))'\">\n <div class=\"event-inner\" [class.hover]=\"(hoveredEvent$ | async) === eventPart.part.event\"\n [style.width]=\"'calc(100% / ' + partData.total + ')'\"\n [style.height.px]=\"(eventPart.part | bsSecondsTimespan) / timeSlotDuration * weekOptions.unitHeight\"\n [style.margin-left]=\"'calc(100% / ' + partData.total + ' * ' + eventPart.index + ')'\">\n \n @if (eventPart.part.start === eventPart.part.event?.start) {\n <div class=\"event-resize top\" (mousedown)=\"onStartResizeEvent(eventPart.part.event, 'top')\"></div>\n }\n <div class=\"event-border\"></div>\n @if (eventPart.part.event) {\n <div class=\"event-wrapper\"\n (mousedown)=\"onStartDragEvent(eventPart.part, $event)\"\n (mouseenter)=\"onHoverEvent(eventPart.part.event)\"\n (mouseleave)=\"onLeaveEvent(eventPart.part.event)\">\n <div class=\"event-bg\" [style.background-color]=\"eventPart.part.event.color\"></div>\n <div class=\"event-label\">{{ eventPart.part.event.description }}</div>\n </div>\n }\n @if (eventPart.part.end === eventPart.part.event?.end) {\n <div class=\"event-resize bottom\" (mousedown)=\"onStartResizeEvent(eventPart.part.event, 'bottom')\"></div>\n }\n </div>\n </div>\n }\n }\n @if (previewEventPartsForThisWeek$ | async; as previewPartData) {\n @for (eventPart of previewPartData; track eventPart) {\n <div class=\"event preview p-0\"\n [style.top.px]=\"(eventPart | bsSecondsTodayOffset) / timeSlotDuration * weekOptions.unitHeight\"\n [style.height.px]=\"(eventPart | bsSecondsTimespan) / timeSlotDuration * weekOptions.unitHeight\"\n [style.left]=\"'calc(90px + ((100% - 90px) / 7 * ' + ((eventPart | dayOfWeek) - 1) + '))'\">\n <div class=\"event-inner w-100\"\n [style.height.px]=\"(eventPart | bsSecondsTimespan) / timeSlotDuration * weekOptions.unitHeight\">\n </div>\n </div>\n }\n }\n }\n }\n </div>\n }\n </div>\n </div>\n }\n @case (modes.timeline) {\n <div class=\"d-flex flex-column-100 overflow-y-auto mb-0 bg-white timeline\">\n <div class=\"calendar-head d-flex\">\n <button class=\"btn flex-start\" (click)=\"onPreviousWeekOrMonth()\">\n <span [innerHTML]=\"chevronLeft\" class=\"px-0\"></span>\n </button>\n <div class=\"flex-grow-1 h3 py-2 mb-0 text-center\">{{ currentWeekOrMonth$ | async | date: 'MMMM yyyy' }}</div>\n <button class=\"btn flex-start\" (click)=\"onNextWeekOrMonth()\">\n <span [innerHTML]=\"chevronRight\" class=\"px-0\"></span>\n </button>\n </div>\n \n <div class=\"calendar-body table-responsive overflow-x-auto\">\n <table class=\"table mb-0\">\n @if (timeSlots$ | async; as timeSlots) {\n <tr>\n <td></td>\n @for (day of timeSlots; track day) {\n <td [attr.colspan]=\"day.slots.length\" class=\"text-center px-2\">\n <span class=\"position-sticky day-label\">{{ day.stamp | date: 'd EE' }}</span>\n </td>\n }\n </tr>\n <tr>\n <td></td>\n @if (timelineOptions$ | async; as timelineOptions) {\n @for (day of timeSlots; track day) {\n @for (slot of day.slots; track slot) {\n <td>\n <span class=\"d-block p-0 text-center\" [style.width.px]=\"timelineOptions.unitWidth\">\n {{ slot.start | date: 'HH:mm' }}\n </span>\n </td>\n }\n }\n }\n </tr>\n @for (group of (resources$ | async); track group) {\n <bs-resource-group-presenter [resourceGroup]=\"group\" [timeSlots]=\"timeSlots\"></bs-resource-group-presenter>\n }\n }\n </table>\n </div>\n </div>\n }\n}", styles: [":host{display:block;border:1px solid #333;border-top-right-radius:10px;border-top-left-radius:10px;overflow:hidden}.calendar-head{background:#f7f7f7;color:#007aff}.tabel .calendar-head{flex:0 0 auto}.tabel .calendar-body{display:block;flex:1 1 auto}.week-schedule .calendar-head>div{padding-right:18px}.week-schedule .calendar-body{overflow-y:scroll;overflow-x:hidden}.week-schedule .calendar-body .calendar-cell{border-right:1px solid #DEE2E6;border-bottom:1px solid #DEE2E6;cursor:default}.week-schedule .calendar-body .calendar-cell.hover{border-top-width:3px}.week-schedule .calendar-left{width:90px}.week-schedule .event{z-index:5;width:calc((100% - 90px) / 7);height:100px;overflow:hidden;position:absolute;-webkit-user-select:none;user-select:none;pointer-events:none}.week-schedule .event.preview{background:#666;opacity:.6}.week-schedule .event .event-border{background:#000;top:0;left:0;bottom:3px;width:3px;position:absolute;z-index:10;opacity:.3}.week-schedule .event .event-inner{position:relative;inset:0 5px 5px 0;cursor:move;pointer-events:all;overflow:hidden}.week-schedule .event .event-inner .event-wrapper{width:calc(100% - 2px);margin:1px auto 1px 0;height:calc(100% - 3px)}.week-schedule .event .event-inner .event-wrapper .event-bg{opacity:.5;height:100%;transition:opacity .15s ease-in-out}.week-schedule .event .event-inner .event-wrapper .event-label{position:absolute;top:0;font-size:12px;font-weight:600;padding:4px}.week-schedule .event .event-inner .event-resize{position:absolute;cursor:ns-resize;height:4px;left:0;right:0;z-index:400}.week-schedule .event .event-inner .event-resize.top{top:0}.week-schedule .event .event-inner .event-resize.bottom{bottom:0}.week-schedule .event .event-inner .event-resize:hover{background:#ddd}.week-schedule .event .event-inner.hover .event-bg{opacity:.7!important}@media (max-width: 767px){.week-schedule.tabel .calendar-head .calendar-head-cell{text-orientation:sideways;writing-mode:vertical-rl}}.timeline.tabel{flex-flow:column}.timeline .calendar-body .tabel{background-color:#f7f7f7}.timeline .calendar-body .tabel tr:first-child td{background-color:#fff;border:1px solid #000}.timeline .calendar-body .tabel tr:first-child td:first-child{min-width:10rem}.timeline .calendar-body .tabel tr:first-child span.day-label{left:0;right:0}.timeline .calendar-body .tabel tr:nth-child(2) td{border-width:1px;border-color:inherit}.timeline .calendar-body .tabel>:not(:first-child){border-top:none!important}\n"], dependencies: [{ kind: "component", type: ResourceGroupPresenterComponent, selector: "bs-resource-group-presenter", inputs: ["level", "resourceGroup", "timeSlots", "isExpanded"] }, { kind: "pipe", type: i5.AsyncPipe, name: "async" }, { kind: "pipe", type: i5.DatePipe, name: "date" }, { kind: "pipe", type: BsSecondsTimespanPipe, name: "bsSecondsTimespan" }, { kind: "pipe", type: BsSecondsTodayOffsetPipe, name: "bsSecondsTodayOffset" }, { kind: "pipe", type: DayOfWeekPipe, name: "dayOfWeek" }] }); }
714
716
  }
715
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.0", ngImport: i0, type: BsSchedulerComponent, decorators: [{
717
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.7", ngImport: i0, type: BsSchedulerComponent, decorators: [{
716
718
  type: Component,
717
719
  args: [{ selector: 'bs-scheduler', standalone: false, template: "@switch (mode$ | async) {\n @case (modes.week) {\n <div class=\"d-flex flex-column w-100 overflow-y-auto mb-0 week-schedule\" [style.max-height.px]=\"null\">\n <div class=\"calendar-head\">\n <div class=\"w-100 d-flex flex-row\">\n <div class=\"d-flex calendar-left justify-content-between\">\n <button class=\"btn btn-default flex-start\" (click)=\"onPreviousWeekOrMonth()\">\n <span [innerHTML]=\"chevronLeft\" class=\"px-0\"></span>\n </button>\n <button class=\"btn btn-default flex-end\" (click)=\"onNextWeekOrMonth()\">\n <span [innerHTML]=\"chevronRight\" class=\"px-0\"></span>\n </button>\n </div>\n @for (day of (shownDays$ | async); track day) {\n <div class=\"flex-grow-1 calendar-head-cell\">\n <span class=\"d-block col-form-label text-center text-nowrap\">\n <span>{{ day | date: 'dd-MM' }}</span><span class=\"d-none d-lg-inline-block\">-{{ day | date: 'yyyy' }}</span>\n </span>\n </div>\n }\n </div>\n </div>\n <div class=\"calendar-body\" [style.height.px]=\"maxInnerHeight\">\n @if (timeSlots$ | async; as row) {\n <div class=\"position-relative\">\n @if (weekOptions$ | async; as weekOptions) {\n <!-- Timeslots -->\n @for (timeslots of row; track timeslots; let i = $index) {\n <div class=\"d-flex flex-row p-0 timeslot\" [style.height.px]=\"weekOptions.unitHeight\">\n <div class=\"calendar-cell calendar-left align-top px-2 py-0\">{{ timeslots.slots[0].start | date: 'HH:mm:ss' }}</div>\n @for (slot of timeslots.slots; track slot.start; let j = $index) {\n <div class=\"calendar-cell flex-grow-1\" #slot (mousedown)=\"onCreateEvent($event, slot)\" [attr.data-row]=\"i\" [attr.data-column]=\"j\"></div>\n }\n </div>\n }\n \n <!-- Events -->\n @if (timeSlotDuration$ | async; as timeSlotDuration) {\n @if (timelinedEventPartsForThisWeek$ | async; as partData) {\n @for (eventPart of partData.parts; track eventPart) {\n <div class=\"event p-0\"\n [style.top.px]=\"(eventPart.part | bsSecondsTodayOffset) / timeSlotDuration * weekOptions.unitHeight\"\n [style.height.px]=\"(eventPart.part | bsSecondsTimespan) / timeSlotDuration * weekOptions.unitHeight\"\n [style.left]=\"'calc(90px + ((100% - 90px) / 7 * ' + ((eventPart.part | dayOfWeek) - 1) + '))'\">\n <div class=\"event-inner\" [class.hover]=\"(hoveredEvent$ | async) === eventPart.part.event\"\n [style.width]=\"'calc(100% / ' + partData.total + ')'\"\n [style.height.px]=\"(eventPart.part | bsSecondsTimespan) / timeSlotDuration * weekOptions.unitHeight\"\n [style.margin-left]=\"'calc(100% / ' + partData.total + ' * ' + eventPart.index + ')'\">\n \n @if (eventPart.part.start === eventPart.part.event?.start) {\n <div class=\"event-resize top\" (mousedown)=\"onStartResizeEvent(eventPart.part.event, 'top')\"></div>\n }\n <div class=\"event-border\"></div>\n @if (eventPart.part.event) {\n <div class=\"event-wrapper\"\n (mousedown)=\"onStartDragEvent(eventPart.part, $event)\"\n (mouseenter)=\"onHoverEvent(eventPart.part.event)\"\n (mouseleave)=\"onLeaveEvent(eventPart.part.event)\">\n <div class=\"event-bg\" [style.background-color]=\"eventPart.part.event.color\"></div>\n <div class=\"event-label\">{{ eventPart.part.event.description }}</div>\n </div>\n }\n @if (eventPart.part.end === eventPart.part.event?.end) {\n <div class=\"event-resize bottom\" (mousedown)=\"onStartResizeEvent(eventPart.part.event, 'bottom')\"></div>\n }\n </div>\n </div>\n }\n }\n @if (previewEventPartsForThisWeek$ | async; as previewPartData) {\n @for (eventPart of previewPartData; track eventPart) {\n <div class=\"event preview p-0\"\n [style.top.px]=\"(eventPart | bsSecondsTodayOffset) / timeSlotDuration * weekOptions.unitHeight\"\n [style.height.px]=\"(eventPart | bsSecondsTimespan) / timeSlotDuration * weekOptions.unitHeight\"\n [style.left]=\"'calc(90px + ((100% - 90px) / 7 * ' + ((eventPart | dayOfWeek) - 1) + '))'\">\n <div class=\"event-inner w-100\"\n [style.height.px]=\"(eventPart | bsSecondsTimespan) / timeSlotDuration * weekOptions.unitHeight\">\n </div>\n </div>\n }\n }\n }\n }\n </div>\n }\n </div>\n </div>\n }\n @case (modes.timeline) {\n <div class=\"d-flex flex-column-100 overflow-y-auto mb-0 bg-white timeline\">\n <div class=\"calendar-head d-flex\">\n <button class=\"btn flex-start\" (click)=\"onPreviousWeekOrMonth()\">\n <span [innerHTML]=\"chevronLeft\" class=\"px-0\"></span>\n </button>\n <div class=\"flex-grow-1 h3 py-2 mb-0 text-center\">{{ currentWeekOrMonth$ | async | date: 'MMMM yyyy' }}</div>\n <button class=\"btn flex-start\" (click)=\"onNextWeekOrMonth()\">\n <span [innerHTML]=\"chevronRight\" class=\"px-0\"></span>\n </button>\n </div>\n \n <div class=\"calendar-body table-responsive overflow-x-auto\">\n <table class=\"table mb-0\">\n @if (timeSlots$ | async; as timeSlots) {\n <tr>\n <td></td>\n @for (day of timeSlots; track day) {\n <td [attr.colspan]=\"day.slots.length\" class=\"text-center px-2\">\n <span class=\"position-sticky day-label\">{{ day.stamp | date: 'd EE' }}</span>\n </td>\n }\n </tr>\n <tr>\n <td></td>\n @if (timelineOptions$ | async; as timelineOptions) {\n @for (day of timeSlots; track day) {\n @for (slot of day.slots; track slot) {\n <td>\n <span class=\"d-block p-0 text-center\" [style.width.px]=\"timelineOptions.unitWidth\">\n {{ slot.start | date: 'HH:mm' }}\n </span>\n </td>\n }\n }\n }\n </tr>\n @for (group of (resources$ | async); track group) {\n <bs-resource-group-presenter [resourceGroup]=\"group\" [timeSlots]=\"timeSlots\"></bs-resource-group-presenter>\n }\n }\n </table>\n </div>\n </div>\n }\n}", styles: [":host{display:block;border:1px solid #333;border-top-right-radius:10px;border-top-left-radius:10px;overflow:hidden}.calendar-head{background:#f7f7f7;color:#007aff}.tabel .calendar-head{flex:0 0 auto}.tabel .calendar-body{display:block;flex:1 1 auto}.week-schedule .calendar-head>div{padding-right:18px}.week-schedule .calendar-body{overflow-y:scroll;overflow-x:hidden}.week-schedule .calendar-body .calendar-cell{border-right:1px solid #DEE2E6;border-bottom:1px solid #DEE2E6;cursor:default}.week-schedule .calendar-body .calendar-cell.hover{border-top-width:3px}.week-schedule .calendar-left{width:90px}.week-schedule .event{z-index:5;width:calc((100% - 90px) / 7);height:100px;overflow:hidden;position:absolute;-webkit-user-select:none;user-select:none;pointer-events:none}.week-schedule .event.preview{background:#666;opacity:.6}.week-schedule .event .event-border{background:#000;top:0;left:0;bottom:3px;width:3px;position:absolute;z-index:10;opacity:.3}.week-schedule .event .event-inner{position:relative;inset:0 5px 5px 0;cursor:move;pointer-events:all;overflow:hidden}.week-schedule .event .event-inner .event-wrapper{width:calc(100% - 2px);margin:1px auto 1px 0;height:calc(100% - 3px)}.week-schedule .event .event-inner .event-wrapper .event-bg{opacity:.5;height:100%;transition:opacity .15s ease-in-out}.week-schedule .event .event-inner .event-wrapper .event-label{position:absolute;top:0;font-size:12px;font-weight:600;padding:4px}.week-schedule .event .event-inner .event-resize{position:absolute;cursor:ns-resize;height:4px;left:0;right:0;z-index:400}.week-schedule .event .event-inner .event-resize.top{top:0}.week-schedule .event .event-inner .event-resize.bottom{bottom:0}.week-schedule .event .event-inner .event-resize:hover{background:#ddd}.week-schedule .event .event-inner.hover .event-bg{opacity:.7!important}@media (max-width: 767px){.week-schedule.tabel .calendar-head .calendar-head-cell{text-orientation:sideways;writing-mode:vertical-rl}}.timeline.tabel{flex-flow:column}.timeline .calendar-body .tabel{background-color:#f7f7f7}.timeline .calendar-body .tabel tr:first-child td{background-color:#fff;border:1px solid #000}.timeline .calendar-body .tabel tr:first-child td:first-child{min-width:10rem}.timeline .calendar-body .tabel tr:first-child span.day-label{left:0;right:0}.timeline .calendar-body .tabel tr:nth-child(2) td{border-width:1px;border-color:inherit}.timeline .calendar-body .tabel>:not(:first-child){border-top:none!important}\n"] }]
718
- }], ctorParameters: () => [{ type: i1.DomSanitizer }, { type: i2.BsCalendarMonthService }, { type: BsTimelineService }], propDecorators: { timeSlotElements: [{
720
+ }], ctorParameters: () => [{ type: i1.DomSanitizer }, { type: i2.BsCalendarMonthService }, { type: BsTimelineService }, { type: i0.DestroyRef }], propDecorators: { timeSlotElements: [{
719
721
  type: ViewChildren,
720
722
  args: ['slot']
721
723
  }], modeChange: [{
@@ -762,10 +764,10 @@ class DateOffsetPipe {
762
764
  today.setSeconds(0);
763
765
  return (value.start.getTime() - today.getTime()) / 1000;
764
766
  }
765
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.0", ngImport: i0, type: DateOffsetPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe }); }
766
- static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "20.0.0", ngImport: i0, type: DateOffsetPipe, isStandalone: false, name: "dateOffset" }); }
767
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.7", ngImport: i0, type: DateOffsetPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe }); }
768
+ static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "20.1.7", ngImport: i0, type: DateOffsetPipe, isStandalone: false, name: "dateOffset" }); }
767
769
  }
768
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.0", ngImport: i0, type: DateOffsetPipe, decorators: [{
770
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.7", ngImport: i0, type: DateOffsetPipe, decorators: [{
769
771
  type: Pipe,
770
772
  args: [{
771
773
  name: 'dateOffset',
@@ -774,17 +776,17 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.0", ngImpor
774
776
  }] });
775
777
 
776
778
  class BsSchedulerModule {
777
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.0", ngImport: i0, type: BsSchedulerModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
778
- static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "20.0.0", ngImport: i0, type: BsSchedulerModule, declarations: [BsSchedulerComponent,
779
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.7", ngImport: i0, type: BsSchedulerModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
780
+ static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "20.1.7", ngImport: i0, type: BsSchedulerModule, declarations: [BsSchedulerComponent,
779
781
  BsSecondsTimespanPipe,
780
782
  BsSecondsTodayOffsetPipe,
781
783
  DateOffsetPipe,
782
784
  DayOfWeekPipe,
783
785
  ResourceGroupPresenterComponent], imports: [CommonModule], exports: [BsSchedulerComponent,
784
786
  ResourceGroupPresenterComponent] }); }
785
- static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "20.0.0", ngImport: i0, type: BsSchedulerModule, imports: [CommonModule] }); }
787
+ static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "20.1.7", ngImport: i0, type: BsSchedulerModule, imports: [CommonModule] }); }
786
788
  }
787
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.0", ngImport: i0, type: BsSchedulerModule, decorators: [{
789
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.7", ngImport: i0, type: BsSchedulerModule, decorators: [{
788
790
  type: NgModule,
789
791
  args: [{
790
792
  declarations: [