@mintplayer/ng-bootstrap 21.6.0 → 21.8.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 (215) hide show
  1. package/fesm2022/mintplayer-ng-bootstrap-accordion.mjs +34 -73
  2. package/fesm2022/mintplayer-ng-bootstrap-accordion.mjs.map +1 -1
  3. package/fesm2022/mintplayer-ng-bootstrap-alert.mjs +10 -31
  4. package/fesm2022/mintplayer-ng-bootstrap-alert.mjs.map +1 -1
  5. package/fesm2022/mintplayer-ng-bootstrap-badge.mjs +4 -4
  6. package/fesm2022/mintplayer-ng-bootstrap-badge.mjs.map +1 -1
  7. package/fesm2022/mintplayer-ng-bootstrap-breadcrumb.mjs +12 -29
  8. package/fesm2022/mintplayer-ng-bootstrap-breadcrumb.mjs.map +1 -1
  9. package/fesm2022/mintplayer-ng-bootstrap-button-group.mjs +5 -5
  10. package/fesm2022/mintplayer-ng-bootstrap-button-group.mjs.map +1 -1
  11. package/fesm2022/mintplayer-ng-bootstrap-button-type.mjs +17 -19
  12. package/fesm2022/mintplayer-ng-bootstrap-button-type.mjs.map +1 -1
  13. package/fesm2022/mintplayer-ng-bootstrap-calendar-month.mjs +9 -11
  14. package/fesm2022/mintplayer-ng-bootstrap-calendar-month.mjs.map +1 -1
  15. package/fesm2022/mintplayer-ng-bootstrap-calendar.mjs +5 -5
  16. package/fesm2022/mintplayer-ng-bootstrap-calendar.mjs.map +1 -1
  17. package/fesm2022/mintplayer-ng-bootstrap-card.mjs +14 -41
  18. package/fesm2022/mintplayer-ng-bootstrap-card.mjs.map +1 -1
  19. package/fesm2022/mintplayer-ng-bootstrap-carousel.mjs +47 -89
  20. package/fesm2022/mintplayer-ng-bootstrap-carousel.mjs.map +1 -1
  21. package/fesm2022/mintplayer-ng-bootstrap-close.mjs +4 -4
  22. package/fesm2022/mintplayer-ng-bootstrap-close.mjs.map +1 -1
  23. package/fesm2022/mintplayer-ng-bootstrap-code-snippet.mjs +10 -13
  24. package/fesm2022/mintplayer-ng-bootstrap-code-snippet.mjs.map +1 -1
  25. package/fesm2022/mintplayer-ng-bootstrap-color-picker.mjs +294 -383
  26. package/fesm2022/mintplayer-ng-bootstrap-color-picker.mjs.map +1 -1
  27. package/fesm2022/mintplayer-ng-bootstrap-container.mjs +5 -5
  28. package/fesm2022/mintplayer-ng-bootstrap-container.mjs.map +1 -1
  29. package/fesm2022/mintplayer-ng-bootstrap-context-menu.mjs +10 -44
  30. package/fesm2022/mintplayer-ng-bootstrap-context-menu.mjs.map +1 -1
  31. package/fesm2022/mintplayer-ng-bootstrap-copy.mjs +16 -23
  32. package/fesm2022/mintplayer-ng-bootstrap-copy.mjs.map +1 -1
  33. package/fesm2022/mintplayer-ng-bootstrap-datatable.mjs +24 -74
  34. package/fesm2022/mintplayer-ng-bootstrap-datatable.mjs.map +1 -1
  35. package/fesm2022/mintplayer-ng-bootstrap-datepicker.mjs +6 -8
  36. package/fesm2022/mintplayer-ng-bootstrap-datepicker.mjs.map +1 -1
  37. package/fesm2022/mintplayer-ng-bootstrap-dock.mjs +43 -73
  38. package/fesm2022/mintplayer-ng-bootstrap-dock.mjs.map +1 -1
  39. package/fesm2022/mintplayer-ng-bootstrap-dropdown-divider.mjs +8 -12
  40. package/fesm2022/mintplayer-ng-bootstrap-dropdown-divider.mjs.map +1 -1
  41. package/fesm2022/mintplayer-ng-bootstrap-dropdown-menu.mjs +23 -60
  42. package/fesm2022/mintplayer-ng-bootstrap-dropdown-menu.mjs.map +1 -1
  43. package/fesm2022/mintplayer-ng-bootstrap-dropdown.mjs +34 -86
  44. package/fesm2022/mintplayer-ng-bootstrap-dropdown.mjs.map +1 -1
  45. package/fesm2022/mintplayer-ng-bootstrap-enhanced-paste.mjs +9 -12
  46. package/fesm2022/mintplayer-ng-bootstrap-enhanced-paste.mjs.map +1 -1
  47. package/fesm2022/mintplayer-ng-bootstrap-enum.mjs +3 -3
  48. package/fesm2022/mintplayer-ng-bootstrap-file-upload.mjs +35 -96
  49. package/fesm2022/mintplayer-ng-bootstrap-file-upload.mjs.map +1 -1
  50. package/fesm2022/mintplayer-ng-bootstrap-floating-labels.mjs +9 -10
  51. package/fesm2022/mintplayer-ng-bootstrap-floating-labels.mjs.map +1 -1
  52. package/fesm2022/mintplayer-ng-bootstrap-font-color.mjs +3 -4
  53. package/fesm2022/mintplayer-ng-bootstrap-font-color.mjs.map +1 -1
  54. package/fesm2022/mintplayer-ng-bootstrap-for.mjs +23 -26
  55. package/fesm2022/mintplayer-ng-bootstrap-for.mjs.map +1 -1
  56. package/fesm2022/mintplayer-ng-bootstrap-form.mjs +29 -54
  57. package/fesm2022/mintplayer-ng-bootstrap-form.mjs.map +1 -1
  58. package/fesm2022/mintplayer-ng-bootstrap-grid.mjs +35 -67
  59. package/fesm2022/mintplayer-ng-bootstrap-grid.mjs.map +1 -1
  60. package/fesm2022/mintplayer-ng-bootstrap-has-overlay.mjs +5 -5
  61. package/fesm2022/mintplayer-ng-bootstrap-has-overlay.mjs.map +1 -1
  62. package/fesm2022/mintplayer-ng-bootstrap-has-property.mjs +3 -4
  63. package/fesm2022/mintplayer-ng-bootstrap-has-property.mjs.map +1 -1
  64. package/fesm2022/mintplayer-ng-bootstrap-in-list.mjs +3 -4
  65. package/fesm2022/mintplayer-ng-bootstrap-in-list.mjs.map +1 -1
  66. package/fesm2022/mintplayer-ng-bootstrap-input-group.mjs +5 -5
  67. package/fesm2022/mintplayer-ng-bootstrap-input-group.mjs.map +1 -1
  68. package/fesm2022/mintplayer-ng-bootstrap-instance-of.mjs +75 -114
  69. package/fesm2022/mintplayer-ng-bootstrap-instance-of.mjs.map +1 -1
  70. package/fesm2022/mintplayer-ng-bootstrap-let.mjs +16 -15
  71. package/fesm2022/mintplayer-ng-bootstrap-let.mjs.map +1 -1
  72. package/fesm2022/mintplayer-ng-bootstrap-linify.mjs +3 -4
  73. package/fesm2022/mintplayer-ng-bootstrap-linify.mjs.map +1 -1
  74. package/fesm2022/mintplayer-ng-bootstrap-list-group.mjs +17 -44
  75. package/fesm2022/mintplayer-ng-bootstrap-list-group.mjs.map +1 -1
  76. package/fesm2022/mintplayer-ng-bootstrap-markdown.mjs +12 -16
  77. package/fesm2022/mintplayer-ng-bootstrap-markdown.mjs.map +1 -1
  78. package/fesm2022/mintplayer-ng-bootstrap-marquee.mjs +5 -5
  79. package/fesm2022/mintplayer-ng-bootstrap-marquee.mjs.map +1 -1
  80. package/fesm2022/mintplayer-ng-bootstrap-modal.mjs +74 -160
  81. package/fesm2022/mintplayer-ng-bootstrap-modal.mjs.map +1 -1
  82. package/fesm2022/mintplayer-ng-bootstrap-multiselect.mjs +25 -87
  83. package/fesm2022/mintplayer-ng-bootstrap-multiselect.mjs.map +1 -1
  84. package/fesm2022/mintplayer-ng-bootstrap-navbar-toggler.mjs +8 -9
  85. package/fesm2022/mintplayer-ng-bootstrap-navbar-toggler.mjs.map +1 -1
  86. package/fesm2022/mintplayer-ng-bootstrap-navbar.mjs +136 -232
  87. package/fesm2022/mintplayer-ng-bootstrap-navbar.mjs.map +1 -1
  88. package/fesm2022/mintplayer-ng-bootstrap-navigation-lock.mjs +40 -68
  89. package/fesm2022/mintplayer-ng-bootstrap-navigation-lock.mjs.map +1 -1
  90. package/fesm2022/mintplayer-ng-bootstrap-no-noscript.mjs +11 -15
  91. package/fesm2022/mintplayer-ng-bootstrap-no-noscript.mjs.map +1 -1
  92. package/fesm2022/mintplayer-ng-bootstrap-offcanvas.mjs +70 -138
  93. package/fesm2022/mintplayer-ng-bootstrap-offcanvas.mjs.map +1 -1
  94. package/fesm2022/mintplayer-ng-bootstrap-ordinal-number.mjs +3 -4
  95. package/fesm2022/mintplayer-ng-bootstrap-ordinal-number.mjs.map +1 -1
  96. package/fesm2022/mintplayer-ng-bootstrap-pagination.mjs +4 -4
  97. package/fesm2022/mintplayer-ng-bootstrap-pagination.mjs.map +1 -1
  98. package/fesm2022/mintplayer-ng-bootstrap-parallax.mjs +5 -5
  99. package/fesm2022/mintplayer-ng-bootstrap-parallax.mjs.map +1 -1
  100. package/fesm2022/mintplayer-ng-bootstrap-placeholder.mjs +16 -39
  101. package/fesm2022/mintplayer-ng-bootstrap-placeholder.mjs.map +1 -1
  102. package/fesm2022/mintplayer-ng-bootstrap-playlist-toggler.mjs +8 -9
  103. package/fesm2022/mintplayer-ng-bootstrap-playlist-toggler.mjs.map +1 -1
  104. package/fesm2022/mintplayer-ng-bootstrap-popover.mjs +40 -70
  105. package/fesm2022/mintplayer-ng-bootstrap-popover.mjs.map +1 -1
  106. package/fesm2022/mintplayer-ng-bootstrap-progress-bar.mjs +28 -97
  107. package/fesm2022/mintplayer-ng-bootstrap-progress-bar.mjs.map +1 -1
  108. package/fesm2022/mintplayer-ng-bootstrap-range.mjs +30 -58
  109. package/fesm2022/mintplayer-ng-bootstrap-range.mjs.map +1 -1
  110. package/fesm2022/mintplayer-ng-bootstrap-rating.mjs +10 -17
  111. package/fesm2022/mintplayer-ng-bootstrap-rating.mjs.map +1 -1
  112. package/fesm2022/mintplayer-ng-bootstrap-resizable.mjs +96 -153
  113. package/fesm2022/mintplayer-ng-bootstrap-resizable.mjs.map +1 -1
  114. package/fesm2022/mintplayer-ng-bootstrap-scheduler.mjs +26 -41
  115. package/fesm2022/mintplayer-ng-bootstrap-scheduler.mjs.map +1 -1
  116. package/fesm2022/mintplayer-ng-bootstrap-scrollspy.mjs +30 -61
  117. package/fesm2022/mintplayer-ng-bootstrap-scrollspy.mjs.map +1 -1
  118. package/fesm2022/mintplayer-ng-bootstrap-searchbox.mjs +59 -108
  119. package/fesm2022/mintplayer-ng-bootstrap-searchbox.mjs.map +1 -1
  120. package/fesm2022/mintplayer-ng-bootstrap-select.mjs +99 -131
  121. package/fesm2022/mintplayer-ng-bootstrap-select.mjs.map +1 -1
  122. package/fesm2022/mintplayer-ng-bootstrap-select2.mjs +63 -106
  123. package/fesm2022/mintplayer-ng-bootstrap-select2.mjs.map +1 -1
  124. package/fesm2022/mintplayer-ng-bootstrap-shell.mjs +15 -33
  125. package/fesm2022/mintplayer-ng-bootstrap-shell.mjs.map +1 -1
  126. package/fesm2022/mintplayer-ng-bootstrap-signature-pad.mjs +16 -33
  127. package/fesm2022/mintplayer-ng-bootstrap-signature-pad.mjs.map +1 -1
  128. package/fesm2022/mintplayer-ng-bootstrap-slugify.mjs +3 -4
  129. package/fesm2022/mintplayer-ng-bootstrap-slugify.mjs.map +1 -1
  130. package/fesm2022/mintplayer-ng-bootstrap-spinner.mjs +4 -4
  131. package/fesm2022/mintplayer-ng-bootstrap-spinner.mjs.map +1 -1
  132. package/fesm2022/mintplayer-ng-bootstrap-split-string.mjs +3 -4
  133. package/fesm2022/mintplayer-ng-bootstrap-split-string.mjs.map +1 -1
  134. package/fesm2022/mintplayer-ng-bootstrap-sticky-footer.mjs +16 -35
  135. package/fesm2022/mintplayer-ng-bootstrap-sticky-footer.mjs.map +1 -1
  136. package/fesm2022/mintplayer-ng-bootstrap-tab-control.mjs +39 -81
  137. package/fesm2022/mintplayer-ng-bootstrap-tab-control.mjs.map +1 -1
  138. package/fesm2022/mintplayer-ng-bootstrap-table.mjs +4 -4
  139. package/fesm2022/mintplayer-ng-bootstrap-table.mjs.map +1 -1
  140. package/fesm2022/mintplayer-ng-bootstrap-timepicker.mjs +13 -17
  141. package/fesm2022/mintplayer-ng-bootstrap-timepicker.mjs.map +1 -1
  142. package/fesm2022/mintplayer-ng-bootstrap-toast.mjs +80 -154
  143. package/fesm2022/mintplayer-ng-bootstrap-toast.mjs.map +1 -1
  144. package/fesm2022/mintplayer-ng-bootstrap-toggle-button.mjs +116 -153
  145. package/fesm2022/mintplayer-ng-bootstrap-toggle-button.mjs.map +1 -1
  146. package/fesm2022/mintplayer-ng-bootstrap-tooltip.mjs +25 -62
  147. package/fesm2022/mintplayer-ng-bootstrap-tooltip.mjs.map +1 -1
  148. package/fesm2022/mintplayer-ng-bootstrap-treeview.mjs +16 -33
  149. package/fesm2022/mintplayer-ng-bootstrap-treeview.mjs.map +1 -1
  150. package/fesm2022/mintplayer-ng-bootstrap-trust-html.mjs +3 -4
  151. package/fesm2022/mintplayer-ng-bootstrap-trust-html.mjs.map +1 -1
  152. package/fesm2022/mintplayer-ng-bootstrap-typeahead.mjs +13 -20
  153. package/fesm2022/mintplayer-ng-bootstrap-typeahead.mjs.map +1 -1
  154. package/fesm2022/mintplayer-ng-bootstrap-uc-first.mjs +3 -4
  155. package/fesm2022/mintplayer-ng-bootstrap-uc-first.mjs.map +1 -1
  156. package/fesm2022/mintplayer-ng-bootstrap-user-agent.mjs +14 -26
  157. package/fesm2022/mintplayer-ng-bootstrap-user-agent.mjs.map +1 -1
  158. package/fesm2022/mintplayer-ng-bootstrap-viewport.mjs +6 -9
  159. package/fesm2022/mintplayer-ng-bootstrap-viewport.mjs.map +1 -1
  160. package/fesm2022/mintplayer-ng-bootstrap-word-count.mjs +3 -4
  161. package/fesm2022/mintplayer-ng-bootstrap-word-count.mjs.map +1 -1
  162. package/package.json +4 -4
  163. package/types/mintplayer-ng-bootstrap-accordion.d.ts +20 -30
  164. package/types/mintplayer-ng-bootstrap-alert.d.ts +3 -9
  165. package/types/mintplayer-ng-bootstrap-breadcrumb.d.ts +3 -10
  166. package/types/mintplayer-ng-bootstrap-button-type.d.ts +4 -4
  167. package/types/mintplayer-ng-bootstrap-card.d.ts +5 -12
  168. package/types/mintplayer-ng-bootstrap-carousel.d.ts +6 -14
  169. package/types/mintplayer-ng-bootstrap-code-snippet.d.ts +3 -3
  170. package/types/mintplayer-ng-bootstrap-color-picker.d.ts +43 -54
  171. package/types/mintplayer-ng-bootstrap-context-menu.d.ts +2 -11
  172. package/types/mintplayer-ng-bootstrap-copy.d.ts +5 -7
  173. package/types/mintplayer-ng-bootstrap-datatable.d.ts +7 -18
  174. package/types/mintplayer-ng-bootstrap-dock.d.ts +18 -31
  175. package/types/mintplayer-ng-bootstrap-dropdown-divider.d.ts +0 -1
  176. package/types/mintplayer-ng-bootstrap-dropdown-menu.d.ts +11 -22
  177. package/types/mintplayer-ng-bootstrap-dropdown.d.ts +16 -28
  178. package/types/mintplayer-ng-bootstrap-enhanced-paste.d.ts +1 -2
  179. package/types/mintplayer-ng-bootstrap-file-upload.d.ts +16 -27
  180. package/types/mintplayer-ng-bootstrap-floating-labels.d.ts +2 -3
  181. package/types/mintplayer-ng-bootstrap-for.d.ts +3 -3
  182. package/types/mintplayer-ng-bootstrap-form.d.ts +11 -20
  183. package/types/mintplayer-ng-bootstrap-grid.d.ts +23 -35
  184. package/types/mintplayer-ng-bootstrap-instance-of.d.ts +34 -41
  185. package/types/mintplayer-ng-bootstrap-let.d.ts +3 -2
  186. package/types/mintplayer-ng-bootstrap-list-group.d.ts +4 -13
  187. package/types/mintplayer-ng-bootstrap-modal.d.ts +13 -29
  188. package/types/mintplayer-ng-bootstrap-multiselect.d.ts +8 -21
  189. package/types/mintplayer-ng-bootstrap-navbar.d.ts +38 -51
  190. package/types/mintplayer-ng-bootstrap-navigation-lock.d.ts +8 -15
  191. package/types/mintplayer-ng-bootstrap-no-noscript.d.ts +1 -1
  192. package/types/mintplayer-ng-bootstrap-offcanvas.d.ts +20 -30
  193. package/types/mintplayer-ng-bootstrap-placeholder.d.ts +3 -11
  194. package/types/mintplayer-ng-bootstrap-popover.d.ts +18 -31
  195. package/types/mintplayer-ng-bootstrap-progress-bar.d.ts +9 -27
  196. package/types/mintplayer-ng-bootstrap-range.d.ts +14 -22
  197. package/types/mintplayer-ng-bootstrap-rating.d.ts +0 -2
  198. package/types/mintplayer-ng-bootstrap-resizable.d.ts +23 -32
  199. package/types/mintplayer-ng-bootstrap-scheduler.d.ts +3 -9
  200. package/types/mintplayer-ng-bootstrap-scrollspy.d.ts +7 -16
  201. package/types/mintplayer-ng-bootstrap-searchbox.d.ts +20 -34
  202. package/types/mintplayer-ng-bootstrap-select.d.ts +24 -30
  203. package/types/mintplayer-ng-bootstrap-select2.d.ts +21 -33
  204. package/types/mintplayer-ng-bootstrap-shell.d.ts +12 -19
  205. package/types/mintplayer-ng-bootstrap-signature-pad.d.ts +2 -3
  206. package/types/mintplayer-ng-bootstrap-sticky-footer.d.ts +4 -12
  207. package/types/mintplayer-ng-bootstrap-tab-control.d.ts +9 -21
  208. package/types/mintplayer-ng-bootstrap-timepicker.d.ts +3 -3
  209. package/types/mintplayer-ng-bootstrap-toast.d.ts +12 -20
  210. package/types/mintplayer-ng-bootstrap-toggle-button.d.ts +20 -29
  211. package/types/mintplayer-ng-bootstrap-tooltip.d.ts +4 -24
  212. package/types/mintplayer-ng-bootstrap-treeview.d.ts +13 -21
  213. package/types/mintplayer-ng-bootstrap-typeahead.d.ts +3 -3
  214. package/types/mintplayer-ng-bootstrap-user-agent.d.ts +2 -3
  215. package/types/mintplayer-ng-bootstrap-viewport.d.ts +2 -2
@@ -1,5 +1,5 @@
1
1
  import * as i0 from '@angular/core';
2
- import { inject, Injector, input, model, output, computed, signal, runInInjectionContext, effect, ViewChild, CUSTOM_ELEMENTS_SCHEMA, ChangeDetectionStrategy, Component, NgModule } from '@angular/core';
2
+ import { inject, Injector, viewChild, input, model, output, computed, signal, runInInjectionContext, effect, CUSTOM_ELEMENTS_SCHEMA, ChangeDetectionStrategy, Component } from '@angular/core';
3
3
  import '@mintplayer/scheduler-wc';
4
4
  export { generateEventId, generateGroupId, generateResourceId } from '@mintplayer/scheduler-core';
5
5
 
@@ -9,6 +9,7 @@ export { generateEventId, generateGroupId, generateResourceId } from '@mintplaye
9
9
  class BsSchedulerComponent {
10
10
  constructor() {
11
11
  this.injector = inject(Injector);
12
+ this.schedulerRef = viewChild.required('scheduler');
12
13
  // Input signals
13
14
  this.view = input('week', ...(ngDevMode ? [{ debugName: "view" }] : []));
14
15
  this.date = input(new Date(), ...(ngDevMode ? [{ debugName: "date" }] : []));
@@ -56,38 +57,38 @@ class BsSchedulerComponent {
56
57
  runInInjectionContext(this.injector, () => {
57
58
  // Set up effects to sync inputs to web component
58
59
  effect(() => {
59
- const el = this.schedulerRef?.nativeElement;
60
+ const el = this.schedulerRef()?.nativeElement;
60
61
  if (el) {
61
62
  el.view = this.view();
62
63
  }
63
64
  });
64
65
  effect(() => {
65
- const el = this.schedulerRef?.nativeElement;
66
+ const el = this.schedulerRef()?.nativeElement;
66
67
  if (el) {
67
68
  el.date = this.date();
68
69
  }
69
70
  });
70
71
  effect(() => {
71
- const el = this.schedulerRef?.nativeElement;
72
+ const el = this.schedulerRef()?.nativeElement;
72
73
  if (el) {
73
74
  el.events = this.events();
74
75
  }
75
76
  });
76
77
  effect(() => {
77
- const el = this.schedulerRef?.nativeElement;
78
+ const el = this.schedulerRef()?.nativeElement;
78
79
  if (el) {
79
80
  el.resources = this.resources();
80
81
  }
81
82
  });
82
83
  effect(() => {
83
- const el = this.schedulerRef?.nativeElement;
84
+ const el = this.schedulerRef()?.nativeElement;
84
85
  if (el) {
85
86
  el.options = this.options();
86
87
  }
87
88
  });
88
89
  // Sync selectedEvent to web component
89
90
  effect(() => {
90
- const el = this.schedulerRef?.nativeElement;
91
+ const el = this.schedulerRef()?.nativeElement;
91
92
  if (el) {
92
93
  el.selectedEvent = this.selectedEvent();
93
94
  }
@@ -101,7 +102,7 @@ class BsSchedulerComponent {
101
102
  this.removeEventListeners();
102
103
  }
103
104
  setupEventListeners() {
104
- const el = this.schedulerRef?.nativeElement;
105
+ const el = this.schedulerRef()?.nativeElement;
105
106
  if (!el)
106
107
  return;
107
108
  const addListener = (type, handler) => {
@@ -140,7 +141,7 @@ class BsSchedulerComponent {
140
141
  });
141
142
  }
142
143
  removeEventListeners() {
143
- const el = this.schedulerRef?.nativeElement;
144
+ const el = this.schedulerRef()?.nativeElement;
144
145
  if (!el)
145
146
  return;
146
147
  for (const { type, listener } of this.eventListeners) {
@@ -153,89 +154,73 @@ class BsSchedulerComponent {
153
154
  * Navigate to next period
154
155
  */
155
156
  next() {
156
- this.schedulerRef?.nativeElement?.next();
157
+ this.schedulerRef()?.nativeElement?.next();
157
158
  }
158
159
  /**
159
160
  * Navigate to previous period
160
161
  */
161
162
  prev() {
162
- this.schedulerRef?.nativeElement?.prev();
163
+ this.schedulerRef()?.nativeElement?.prev();
163
164
  }
164
165
  /**
165
166
  * Navigate to today
166
167
  */
167
168
  today() {
168
- this.schedulerRef?.nativeElement?.today();
169
+ this.schedulerRef()?.nativeElement?.today();
169
170
  }
170
171
  /**
171
172
  * Navigate to a specific date
172
173
  */
173
174
  gotoDate(date) {
174
- this.schedulerRef?.nativeElement?.gotoDate(date);
175
+ this.schedulerRef()?.nativeElement?.gotoDate(date);
175
176
  }
176
177
  /**
177
178
  * Change the current view
178
179
  */
179
180
  changeView(view) {
180
- this.schedulerRef?.nativeElement?.changeView(view);
181
+ this.schedulerRef()?.nativeElement?.changeView(view);
181
182
  }
182
183
  /**
183
184
  * Add an event
184
185
  */
185
186
  addEvent(event) {
186
- this.schedulerRef?.nativeElement?.addEvent(event);
187
+ this.schedulerRef()?.nativeElement?.addEvent(event);
187
188
  }
188
189
  /**
189
190
  * Update an event
190
191
  */
191
192
  updateEvent(event) {
192
- this.schedulerRef?.nativeElement?.updateEvent(event);
193
+ this.schedulerRef()?.nativeElement?.updateEvent(event);
193
194
  }
194
195
  /**
195
196
  * Remove an event
196
197
  */
197
198
  removeEvent(eventId) {
198
- this.schedulerRef?.nativeElement?.removeEvent(eventId);
199
+ this.schedulerRef()?.nativeElement?.removeEvent(eventId);
199
200
  }
200
201
  /**
201
202
  * Get an event by ID
202
203
  */
203
204
  getEventById(eventId) {
204
- return this.schedulerRef?.nativeElement?.getEventById(eventId) ?? null;
205
+ return this.schedulerRef()?.nativeElement?.getEventById(eventId) ?? null;
205
206
  }
206
207
  /**
207
208
  * Refetch/refresh events
208
209
  */
209
210
  refetchEvents() {
210
- this.schedulerRef?.nativeElement?.refetchEvents();
211
+ this.schedulerRef()?.nativeElement?.refetchEvents();
211
212
  }
212
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.0.6", ngImport: i0, type: BsSchedulerComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
213
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "21.0.6", type: BsSchedulerComponent, isStandalone: true, selector: "bs-scheduler", inputs: { view: { classPropertyName: "view", publicName: "view", isSignal: true, isRequired: false, transformFunction: null }, date: { classPropertyName: "date", publicName: "date", isSignal: true, isRequired: false, transformFunction: null }, events: { classPropertyName: "events", publicName: "events", isSignal: true, isRequired: false, transformFunction: null }, resources: { classPropertyName: "resources", publicName: "resources", isSignal: true, isRequired: false, transformFunction: null }, options: { classPropertyName: "options", publicName: "options", isSignal: true, isRequired: false, transformFunction: null }, selectedEvent: { classPropertyName: "selectedEvent", publicName: "selectedEvent", isSignal: true, isRequired: false, transformFunction: null }, selectedRange: { classPropertyName: "selectedRange", publicName: "selectedRange", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { selectedEvent: "selectedEventChange", selectedRange: "selectedRangeChange", eventClick: "eventClick", eventDblClick: "eventDblClick", eventCreate: "eventCreate", eventUpdate: "eventUpdate", eventDelete: "eventDelete", dateClick: "dateClick", dateSelect: "dateSelect", viewChange: "viewChange" }, viewQueries: [{ propertyName: "schedulerRef", first: true, predicate: ["scheduler"], descendants: true, static: true }], ngImport: i0, template: `<mp-scheduler #scheduler></mp-scheduler>`, isInline: true, styles: [":host{display:block;height:100%}mp-scheduler{display:block;height:100%}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
213
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.6", ngImport: i0, type: BsSchedulerComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
214
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.2.0", version: "21.1.6", type: BsSchedulerComponent, isStandalone: true, selector: "bs-scheduler", inputs: { view: { classPropertyName: "view", publicName: "view", isSignal: true, isRequired: false, transformFunction: null }, date: { classPropertyName: "date", publicName: "date", isSignal: true, isRequired: false, transformFunction: null }, events: { classPropertyName: "events", publicName: "events", isSignal: true, isRequired: false, transformFunction: null }, resources: { classPropertyName: "resources", publicName: "resources", isSignal: true, isRequired: false, transformFunction: null }, options: { classPropertyName: "options", publicName: "options", isSignal: true, isRequired: false, transformFunction: null }, selectedEvent: { classPropertyName: "selectedEvent", publicName: "selectedEvent", isSignal: true, isRequired: false, transformFunction: null }, selectedRange: { classPropertyName: "selectedRange", publicName: "selectedRange", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { selectedEvent: "selectedEventChange", selectedRange: "selectedRangeChange", eventClick: "eventClick", eventDblClick: "eventDblClick", eventCreate: "eventCreate", eventUpdate: "eventUpdate", eventDelete: "eventDelete", dateClick: "dateClick", dateSelect: "dateSelect", viewChange: "viewChange" }, viewQueries: [{ propertyName: "schedulerRef", first: true, predicate: ["scheduler"], descendants: true, isSignal: true }], ngImport: i0, template: `<mp-scheduler #scheduler></mp-scheduler>`, isInline: true, styles: [":host{display:block;height:100%}mp-scheduler{display:block;height:100%}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
214
215
  }
215
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.6", ngImport: i0, type: BsSchedulerComponent, decorators: [{
216
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.6", ngImport: i0, type: BsSchedulerComponent, decorators: [{
216
217
  type: Component,
217
- args: [{ selector: 'bs-scheduler', standalone: true, template: `<mp-scheduler #scheduler></mp-scheduler>`, changeDetection: ChangeDetectionStrategy.OnPush, schemas: [CUSTOM_ELEMENTS_SCHEMA], styles: [":host{display:block;height:100%}mp-scheduler{display:block;height:100%}\n"] }]
218
- }], propDecorators: { schedulerRef: [{
219
- type: ViewChild,
220
- args: ['scheduler', { static: true }]
221
- }], view: [{ type: i0.Input, args: [{ isSignal: true, alias: "view", required: false }] }], date: [{ type: i0.Input, args: [{ isSignal: true, alias: "date", required: false }] }], events: [{ type: i0.Input, args: [{ isSignal: true, alias: "events", required: false }] }], resources: [{ type: i0.Input, args: [{ isSignal: true, alias: "resources", required: false }] }], options: [{ type: i0.Input, args: [{ isSignal: true, alias: "options", required: false }] }], selectedEvent: [{ type: i0.Input, args: [{ isSignal: true, alias: "selectedEvent", required: false }] }, { type: i0.Output, args: ["selectedEventChange"] }], selectedRange: [{ type: i0.Input, args: [{ isSignal: true, alias: "selectedRange", required: false }] }, { type: i0.Output, args: ["selectedRangeChange"] }], eventClick: [{ type: i0.Output, args: ["eventClick"] }], eventDblClick: [{ type: i0.Output, args: ["eventDblClick"] }], eventCreate: [{ type: i0.Output, args: ["eventCreate"] }], eventUpdate: [{ type: i0.Output, args: ["eventUpdate"] }], eventDelete: [{ type: i0.Output, args: ["eventDelete"] }], dateClick: [{ type: i0.Output, args: ["dateClick"] }], dateSelect: [{ type: i0.Output, args: ["dateSelect"] }], viewChange: [{ type: i0.Output, args: ["viewChange"] }] } });
222
-
223
- class BsSchedulerModule {
224
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.0.6", ngImport: i0, type: BsSchedulerModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
225
- static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "21.0.6", ngImport: i0, type: BsSchedulerModule, imports: [BsSchedulerComponent], exports: [BsSchedulerComponent] }); }
226
- static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "21.0.6", ngImport: i0, type: BsSchedulerModule }); }
227
- }
228
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.6", ngImport: i0, type: BsSchedulerModule, decorators: [{
229
- type: NgModule,
230
- args: [{
231
- imports: [BsSchedulerComponent],
232
- exports: [BsSchedulerComponent],
233
- }]
234
- }] });
218
+ args: [{ selector: 'bs-scheduler', template: `<mp-scheduler #scheduler></mp-scheduler>`, changeDetection: ChangeDetectionStrategy.OnPush, schemas: [CUSTOM_ELEMENTS_SCHEMA], styles: [":host{display:block;height:100%}mp-scheduler{display:block;height:100%}\n"] }]
219
+ }], propDecorators: { schedulerRef: [{ type: i0.ViewChild, args: ['scheduler', { isSignal: true }] }], view: [{ type: i0.Input, args: [{ isSignal: true, alias: "view", required: false }] }], date: [{ type: i0.Input, args: [{ isSignal: true, alias: "date", required: false }] }], events: [{ type: i0.Input, args: [{ isSignal: true, alias: "events", required: false }] }], resources: [{ type: i0.Input, args: [{ isSignal: true, alias: "resources", required: false }] }], options: [{ type: i0.Input, args: [{ isSignal: true, alias: "options", required: false }] }], selectedEvent: [{ type: i0.Input, args: [{ isSignal: true, alias: "selectedEvent", required: false }] }, { type: i0.Output, args: ["selectedEventChange"] }], selectedRange: [{ type: i0.Input, args: [{ isSignal: true, alias: "selectedRange", required: false }] }, { type: i0.Output, args: ["selectedRangeChange"] }], eventClick: [{ type: i0.Output, args: ["eventClick"] }], eventDblClick: [{ type: i0.Output, args: ["eventDblClick"] }], eventCreate: [{ type: i0.Output, args: ["eventCreate"] }], eventUpdate: [{ type: i0.Output, args: ["eventUpdate"] }], eventDelete: [{ type: i0.Output, args: ["eventDelete"] }], dateClick: [{ type: i0.Output, args: ["dateClick"] }], dateSelect: [{ type: i0.Output, args: ["dateSelect"] }], viewChange: [{ type: i0.Output, args: ["viewChange"] }] } });
235
220
 
236
221
  /**
237
222
  * Generated bundle index. Do not edit.
238
223
  */
239
224
 
240
- export { BsSchedulerComponent, BsSchedulerModule };
225
+ export { BsSchedulerComponent };
241
226
  //# sourceMappingURL=mintplayer-ng-bootstrap-scheduler.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"mintplayer-ng-bootstrap-scheduler.mjs","sources":["../../../../libs/mintplayer-ng-bootstrap/scheduler/src/components/scheduler/scheduler.component.ts","../../../../libs/mintplayer-ng-bootstrap/scheduler/src/scheduler.module.ts","../../../../libs/mintplayer-ng-bootstrap/scheduler/mintplayer-ng-bootstrap-scheduler.ts"],"sourcesContent":["import {\n Component,\n ElementRef,\n ViewChild,\n AfterViewInit,\n OnDestroy,\n ChangeDetectionStrategy,\n CUSTOM_ELEMENTS_SCHEMA,\n input,\n output,\n model,\n computed,\n effect,\n signal,\n Injector,\n inject,\n runInInjectionContext,\n} from '@angular/core';\n\nimport {\n ViewType,\n SchedulerEvent,\n Resource,\n ResourceGroup,\n SchedulerOptions,\n} from '@mintplayer/scheduler-core';\n\n// Import the web component to ensure it gets registered\nimport '@mintplayer/scheduler-wc';\n\n/**\n * Interface for the mp-scheduler web component element\n */\ninterface MpSchedulerElement extends HTMLElement {\n view: ViewType;\n date: Date;\n events: SchedulerEvent[];\n resources: (Resource | ResourceGroup)[];\n options: Partial<SchedulerOptions>;\n selectedEvent: SchedulerEvent | null;\n selectedRange: { start: Date; end: Date } | null;\n next(): void;\n prev(): void;\n today(): void;\n gotoDate(date: Date): void;\n changeView(view: ViewType): void;\n addEvent(event: SchedulerEvent): void;\n updateEvent(event: SchedulerEvent): void;\n removeEvent(eventId: string): void;\n getEventById(eventId: string): SchedulerEvent | null;\n refetchEvents(): void;\n}\n\n/**\n * Event click event detail\n */\nexport interface SchedulerEventClickEvent {\n event: SchedulerEvent;\n originalEvent?: Event;\n}\n\n/**\n * Event create event detail\n */\nexport interface SchedulerEventCreateEvent {\n event: SchedulerEvent;\n resource?: Resource;\n originalEvent?: Event;\n}\n\n/**\n * Event update event detail\n */\nexport interface SchedulerEventUpdateEvent {\n event: SchedulerEvent;\n oldEvent: SchedulerEvent;\n originalEvent?: Event;\n}\n\n/**\n * Event delete event detail\n */\nexport interface SchedulerEventDeleteEvent {\n event: SchedulerEvent;\n originalEvent?: Event;\n}\n\n/**\n * Date click event detail\n */\nexport interface DateClickEvent {\n date: Date;\n resource?: Resource;\n originalEvent?: Event;\n}\n\n/**\n * Date select event detail\n */\nexport interface DateSelectEvent {\n start: Date;\n end: Date;\n resource?: Resource;\n originalEvent?: Event;\n}\n\n/**\n * View change event detail\n */\nexport interface ViewChangeEvent {\n view: ViewType;\n date: Date;\n}\n\n/**\n * Angular wrapper for the mp-scheduler web component using signals\n */\n@Component({\n selector: 'bs-scheduler',\n standalone: true,\n template: `<mp-scheduler #scheduler></mp-scheduler>`,\n styles: [`\n :host {\n display: block;\n height: 100%;\n }\n mp-scheduler {\n display: block;\n height: 100%;\n }\n `],\n changeDetection: ChangeDetectionStrategy.OnPush,\n schemas: [CUSTOM_ELEMENTS_SCHEMA],\n})\nexport class BsSchedulerComponent implements AfterViewInit, OnDestroy {\n private readonly injector = inject(Injector);\n\n @ViewChild('scheduler', { static: true })\n private schedulerRef!: ElementRef<MpSchedulerElement>;\n\n // Input signals\n readonly view = input<ViewType>('week');\n readonly date = input<Date>(new Date());\n readonly events = input<SchedulerEvent[]>([]);\n readonly resources = input<(Resource | ResourceGroup)[]>([]);\n readonly options = input<Partial<SchedulerOptions>>({});\n\n // Two-way binding model signals\n readonly selectedEvent = model<SchedulerEvent | null>(null);\n readonly selectedRange = model<{ start: Date; end: Date } | null>(null);\n\n // Output signals (events)\n readonly eventClick = output<SchedulerEventClickEvent>();\n readonly eventDblClick = output<SchedulerEventClickEvent>();\n readonly eventCreate = output<SchedulerEventCreateEvent>();\n readonly eventUpdate = output<SchedulerEventUpdateEvent>();\n readonly eventDelete = output<SchedulerEventDeleteEvent>();\n readonly dateClick = output<DateClickEvent>();\n readonly dateSelect = output<DateSelectEvent>();\n readonly viewChange = output<ViewChangeEvent>();\n\n // Computed signals\n readonly currentWeekStart = computed(() => {\n const d = new Date(this.date());\n const day = d.getDay();\n const diff = (day === 0 ? 6 : day - 1); // Adjust for Monday start\n d.setDate(d.getDate() - diff);\n d.setHours(0, 0, 0, 0);\n return d;\n });\n\n readonly currentWeekEnd = computed(() => {\n const start = this.currentWeekStart();\n const end = new Date(start);\n end.setDate(end.getDate() + 6);\n end.setHours(23, 59, 59, 999);\n return end;\n });\n\n readonly visibleEvents = computed(() => {\n const start = this.currentWeekStart();\n const end = this.currentWeekEnd();\n return this.events().filter(\n (e) => e.start < end && e.end > start\n );\n });\n\n // Internal state\n private readonly initialized = signal(false);\n private eventListeners: Array<{ type: string; listener: EventListener }> = [];\n\n ngAfterViewInit(): void {\n runInInjectionContext(this.injector, () => {\n // Set up effects to sync inputs to web component\n effect(() => {\n const el = this.schedulerRef?.nativeElement;\n if (el) {\n el.view = this.view();\n }\n });\n\n effect(() => {\n const el = this.schedulerRef?.nativeElement;\n if (el) {\n el.date = this.date();\n }\n });\n\n effect(() => {\n const el = this.schedulerRef?.nativeElement;\n if (el) {\n el.events = this.events();\n }\n });\n\n effect(() => {\n const el = this.schedulerRef?.nativeElement;\n if (el) {\n el.resources = this.resources();\n }\n });\n\n effect(() => {\n const el = this.schedulerRef?.nativeElement;\n if (el) {\n el.options = this.options();\n }\n });\n\n // Sync selectedEvent to web component\n effect(() => {\n const el = this.schedulerRef?.nativeElement;\n if (el) {\n el.selectedEvent = this.selectedEvent();\n }\n });\n });\n\n // Set up event listeners\n this.setupEventListeners();\n this.initialized.set(true);\n }\n\n ngOnDestroy(): void {\n this.removeEventListeners();\n }\n\n private setupEventListeners(): void {\n const el = this.schedulerRef?.nativeElement;\n if (!el) return;\n\n const addListener = (type: string, handler: (e: CustomEvent) => void) => {\n const listener = (e: Event) => handler(e as CustomEvent);\n el.addEventListener(type, listener);\n this.eventListeners.push({ type, listener });\n };\n\n addListener('event-click', (e) => {\n this.eventClick.emit(e.detail);\n this.selectedEvent.set(e.detail.event);\n });\n\n addListener('event-dblclick', (e) => {\n this.eventDblClick.emit(e.detail);\n });\n\n addListener('event-create', (e) => {\n this.eventCreate.emit(e.detail);\n });\n\n addListener('event-update', (e) => {\n this.eventUpdate.emit(e.detail);\n });\n\n addListener('event-delete', (e) => {\n this.eventDelete.emit(e.detail);\n });\n\n addListener('date-click', (e) => {\n this.dateClick.emit(e.detail);\n });\n\n addListener('date-select', (e) => {\n this.dateSelect.emit(e.detail);\n this.selectedRange.set({ start: e.detail.start, end: e.detail.end });\n });\n\n addListener('view-change', (e) => {\n this.viewChange.emit(e.detail);\n });\n\n addListener('selection-change', (e) => {\n this.selectedEvent.set(e.detail.selectedEvent);\n });\n }\n\n private removeEventListeners(): void {\n const el = this.schedulerRef?.nativeElement;\n if (!el) return;\n\n for (const { type, listener } of this.eventListeners) {\n el.removeEventListener(type, listener);\n }\n this.eventListeners = [];\n }\n\n // Public API methods (delegate to web component)\n\n /**\n * Navigate to next period\n */\n next(): void {\n this.schedulerRef?.nativeElement?.next();\n }\n\n /**\n * Navigate to previous period\n */\n prev(): void {\n this.schedulerRef?.nativeElement?.prev();\n }\n\n /**\n * Navigate to today\n */\n today(): void {\n this.schedulerRef?.nativeElement?.today();\n }\n\n /**\n * Navigate to a specific date\n */\n gotoDate(date: Date): void {\n this.schedulerRef?.nativeElement?.gotoDate(date);\n }\n\n /**\n * Change the current view\n */\n changeView(view: ViewType): void {\n this.schedulerRef?.nativeElement?.changeView(view);\n }\n\n /**\n * Add an event\n */\n addEvent(event: SchedulerEvent): void {\n this.schedulerRef?.nativeElement?.addEvent(event);\n }\n\n /**\n * Update an event\n */\n updateEvent(event: SchedulerEvent): void {\n this.schedulerRef?.nativeElement?.updateEvent(event);\n }\n\n /**\n * Remove an event\n */\n removeEvent(eventId: string): void {\n this.schedulerRef?.nativeElement?.removeEvent(eventId);\n }\n\n /**\n * Get an event by ID\n */\n getEventById(eventId: string): SchedulerEvent | null {\n return this.schedulerRef?.nativeElement?.getEventById(eventId) ?? null;\n }\n\n /**\n * Refetch/refresh events\n */\n refetchEvents(): void {\n this.schedulerRef?.nativeElement?.refetchEvents();\n }\n}\n","import { NgModule } from '@angular/core';\nimport { BsSchedulerComponent } from './components/scheduler/scheduler.component';\n\n@NgModule({\n imports: [BsSchedulerComponent],\n exports: [BsSchedulerComponent],\n})\nexport class BsSchedulerModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;;;;AAkHA;;AAEG;MAkBU,oBAAoB,CAAA;AAjBjC,IAAA,WAAA,GAAA;AAkBmB,QAAA,IAAA,CAAA,QAAQ,GAAG,MAAM,CAAC,QAAQ,CAAC;;AAMnC,QAAA,IAAA,CAAA,IAAI,GAAG,KAAK,CAAW,MAAM,gDAAC;AAC9B,QAAA,IAAA,CAAA,IAAI,GAAG,KAAK,CAAO,IAAI,IAAI,EAAE,gDAAC;AAC9B,QAAA,IAAA,CAAA,MAAM,GAAG,KAAK,CAAmB,EAAE,kDAAC;AACpC,QAAA,IAAA,CAAA,SAAS,GAAG,KAAK,CAA+B,EAAE,qDAAC;AACnD,QAAA,IAAA,CAAA,OAAO,GAAG,KAAK,CAA4B,EAAE,mDAAC;;AAG9C,QAAA,IAAA,CAAA,aAAa,GAAG,KAAK,CAAwB,IAAI,yDAAC;AAClD,QAAA,IAAA,CAAA,aAAa,GAAG,KAAK,CAAoC,IAAI,yDAAC;;QAG9D,IAAA,CAAA,UAAU,GAAG,MAAM,EAA4B;QAC/C,IAAA,CAAA,aAAa,GAAG,MAAM,EAA4B;QAClD,IAAA,CAAA,WAAW,GAAG,MAAM,EAA6B;QACjD,IAAA,CAAA,WAAW,GAAG,MAAM,EAA6B;QACjD,IAAA,CAAA,WAAW,GAAG,MAAM,EAA6B;QACjD,IAAA,CAAA,SAAS,GAAG,MAAM,EAAkB;QACpC,IAAA,CAAA,UAAU,GAAG,MAAM,EAAmB;QACtC,IAAA,CAAA,UAAU,GAAG,MAAM,EAAmB;;AAGtC,QAAA,IAAA,CAAA,gBAAgB,GAAG,QAAQ,CAAC,MAAK;YACxC,MAAM,CAAC,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;AAC/B,YAAA,MAAM,GAAG,GAAG,CAAC,CAAC,MAAM,EAAE;AACtB,YAAA,MAAM,IAAI,IAAI,GAAG,KAAK,CAAC,GAAG,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC,CAAC;YACvC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,EAAE,GAAG,IAAI,CAAC;YAC7B,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;AACtB,YAAA,OAAO,CAAC;AACV,QAAA,CAAC,4DAAC;AAEO,QAAA,IAAA,CAAA,cAAc,GAAG,QAAQ,CAAC,MAAK;AACtC,YAAA,MAAM,KAAK,GAAG,IAAI,CAAC,gBAAgB,EAAE;AACrC,YAAA,MAAM,GAAG,GAAG,IAAI,IAAI,CAAC,KAAK,CAAC;YAC3B,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC;YAC9B,GAAG,CAAC,QAAQ,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC;AAC7B,YAAA,OAAO,GAAG;AACZ,QAAA,CAAC,0DAAC;AAEO,QAAA,IAAA,CAAA,aAAa,GAAG,QAAQ,CAAC,MAAK;AACrC,YAAA,MAAM,KAAK,GAAG,IAAI,CAAC,gBAAgB,EAAE;AACrC,YAAA,MAAM,GAAG,GAAG,IAAI,CAAC,cAAc,EAAE;YACjC,OAAO,IAAI,CAAC,MAAM,EAAE,CAAC,MAAM,CACzB,CAAC,CAAC,KAAK,CAAC,CAAC,KAAK,GAAG,GAAG,IAAI,CAAC,CAAC,GAAG,GAAG,KAAK,CACtC;AACH,QAAA,CAAC,yDAAC;;AAGe,QAAA,IAAA,CAAA,WAAW,GAAG,MAAM,CAAC,KAAK,uDAAC;QACpC,IAAA,CAAA,cAAc,GAAqD,EAAE;AA4L9E,IAAA;IA1LC,eAAe,GAAA;AACb,QAAA,qBAAqB,CAAC,IAAI,CAAC,QAAQ,EAAE,MAAK;;YAExC,MAAM,CAAC,MAAK;AACV,gBAAA,MAAM,EAAE,GAAG,IAAI,CAAC,YAAY,EAAE,aAAa;gBAC3C,IAAI,EAAE,EAAE;AACN,oBAAA,EAAE,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,EAAE;gBACvB;AACF,YAAA,CAAC,CAAC;YAEF,MAAM,CAAC,MAAK;AACV,gBAAA,MAAM,EAAE,GAAG,IAAI,CAAC,YAAY,EAAE,aAAa;gBAC3C,IAAI,EAAE,EAAE;AACN,oBAAA,EAAE,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,EAAE;gBACvB;AACF,YAAA,CAAC,CAAC;YAEF,MAAM,CAAC,MAAK;AACV,gBAAA,MAAM,EAAE,GAAG,IAAI,CAAC,YAAY,EAAE,aAAa;gBAC3C,IAAI,EAAE,EAAE;AACN,oBAAA,EAAE,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,EAAE;gBAC3B;AACF,YAAA,CAAC,CAAC;YAEF,MAAM,CAAC,MAAK;AACV,gBAAA,MAAM,EAAE,GAAG,IAAI,CAAC,YAAY,EAAE,aAAa;gBAC3C,IAAI,EAAE,EAAE;AACN,oBAAA,EAAE,CAAC,SAAS,GAAG,IAAI,CAAC,SAAS,EAAE;gBACjC;AACF,YAAA,CAAC,CAAC;YAEF,MAAM,CAAC,MAAK;AACV,gBAAA,MAAM,EAAE,GAAG,IAAI,CAAC,YAAY,EAAE,aAAa;gBAC3C,IAAI,EAAE,EAAE;AACN,oBAAA,EAAE,CAAC,OAAO,GAAG,IAAI,CAAC,OAAO,EAAE;gBAC7B;AACF,YAAA,CAAC,CAAC;;YAGF,MAAM,CAAC,MAAK;AACV,gBAAA,MAAM,EAAE,GAAG,IAAI,CAAC,YAAY,EAAE,aAAa;gBAC3C,IAAI,EAAE,EAAE;AACN,oBAAA,EAAE,CAAC,aAAa,GAAG,IAAI,CAAC,aAAa,EAAE;gBACzC;AACF,YAAA,CAAC,CAAC;AACJ,QAAA,CAAC,CAAC;;QAGF,IAAI,CAAC,mBAAmB,EAAE;AAC1B,QAAA,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC;IAC5B;IAEA,WAAW,GAAA;QACT,IAAI,CAAC,oBAAoB,EAAE;IAC7B;IAEQ,mBAAmB,GAAA;AACzB,QAAA,MAAM,EAAE,GAAG,IAAI,CAAC,YAAY,EAAE,aAAa;AAC3C,QAAA,IAAI,CAAC,EAAE;YAAE;AAET,QAAA,MAAM,WAAW,GAAG,CAAC,IAAY,EAAE,OAAiC,KAAI;YACtE,MAAM,QAAQ,GAAG,CAAC,CAAQ,KAAK,OAAO,CAAC,CAAgB,CAAC;AACxD,YAAA,EAAE,CAAC,gBAAgB,CAAC,IAAI,EAAE,QAAQ,CAAC;YACnC,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC;AAC9C,QAAA,CAAC;AAED,QAAA,WAAW,CAAC,aAAa,EAAE,CAAC,CAAC,KAAI;YAC/B,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC;YAC9B,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC;AACxC,QAAA,CAAC,CAAC;AAEF,QAAA,WAAW,CAAC,gBAAgB,EAAE,CAAC,CAAC,KAAI;YAClC,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC;AACnC,QAAA,CAAC,CAAC;AAEF,QAAA,WAAW,CAAC,cAAc,EAAE,CAAC,CAAC,KAAI;YAChC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC;AACjC,QAAA,CAAC,CAAC;AAEF,QAAA,WAAW,CAAC,cAAc,EAAE,CAAC,CAAC,KAAI;YAChC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC;AACjC,QAAA,CAAC,CAAC;AAEF,QAAA,WAAW,CAAC,cAAc,EAAE,CAAC,CAAC,KAAI;YAChC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC;AACjC,QAAA,CAAC,CAAC;AAEF,QAAA,WAAW,CAAC,YAAY,EAAE,CAAC,CAAC,KAAI;YAC9B,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC;AAC/B,QAAA,CAAC,CAAC;AAEF,QAAA,WAAW,CAAC,aAAa,EAAE,CAAC,CAAC,KAAI;YAC/B,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC;YAC9B,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,MAAM,CAAC,KAAK,EAAE,GAAG,EAAE,CAAC,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC;AACtE,QAAA,CAAC,CAAC;AAEF,QAAA,WAAW,CAAC,aAAa,EAAE,CAAC,CAAC,KAAI;YAC/B,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC;AAChC,QAAA,CAAC,CAAC;AAEF,QAAA,WAAW,CAAC,kBAAkB,EAAE,CAAC,CAAC,KAAI;YACpC,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,aAAa,CAAC;AAChD,QAAA,CAAC,CAAC;IACJ;IAEQ,oBAAoB,GAAA;AAC1B,QAAA,MAAM,EAAE,GAAG,IAAI,CAAC,YAAY,EAAE,aAAa;AAC3C,QAAA,IAAI,CAAC,EAAE;YAAE;QAET,KAAK,MAAM,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,IAAI,CAAC,cAAc,EAAE;AACpD,YAAA,EAAE,CAAC,mBAAmB,CAAC,IAAI,EAAE,QAAQ,CAAC;QACxC;AACA,QAAA,IAAI,CAAC,cAAc,GAAG,EAAE;IAC1B;;AAIA;;AAEG;IACH,IAAI,GAAA;AACF,QAAA,IAAI,CAAC,YAAY,EAAE,aAAa,EAAE,IAAI,EAAE;IAC1C;AAEA;;AAEG;IACH,IAAI,GAAA;AACF,QAAA,IAAI,CAAC,YAAY,EAAE,aAAa,EAAE,IAAI,EAAE;IAC1C;AAEA;;AAEG;IACH,KAAK,GAAA;AACH,QAAA,IAAI,CAAC,YAAY,EAAE,aAAa,EAAE,KAAK,EAAE;IAC3C;AAEA;;AAEG;AACH,IAAA,QAAQ,CAAC,IAAU,EAAA;QACjB,IAAI,CAAC,YAAY,EAAE,aAAa,EAAE,QAAQ,CAAC,IAAI,CAAC;IAClD;AAEA;;AAEG;AACH,IAAA,UAAU,CAAC,IAAc,EAAA;QACvB,IAAI,CAAC,YAAY,EAAE,aAAa,EAAE,UAAU,CAAC,IAAI,CAAC;IACpD;AAEA;;AAEG;AACH,IAAA,QAAQ,CAAC,KAAqB,EAAA;QAC5B,IAAI,CAAC,YAAY,EAAE,aAAa,EAAE,QAAQ,CAAC,KAAK,CAAC;IACnD;AAEA;;AAEG;AACH,IAAA,WAAW,CAAC,KAAqB,EAAA;QAC/B,IAAI,CAAC,YAAY,EAAE,aAAa,EAAE,WAAW,CAAC,KAAK,CAAC;IACtD;AAEA;;AAEG;AACH,IAAA,WAAW,CAAC,OAAe,EAAA;QACzB,IAAI,CAAC,YAAY,EAAE,aAAa,EAAE,WAAW,CAAC,OAAO,CAAC;IACxD;AAEA;;AAEG;AACH,IAAA,YAAY,CAAC,OAAe,EAAA;AAC1B,QAAA,OAAO,IAAI,CAAC,YAAY,EAAE,aAAa,EAAE,YAAY,CAAC,OAAO,CAAC,IAAI,IAAI;IACxE;AAEA;;AAEG;IACH,aAAa,GAAA;AACX,QAAA,IAAI,CAAC,YAAY,EAAE,aAAa,EAAE,aAAa,EAAE;IACnD;8GAlPW,oBAAoB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAApB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,oBAAoB,u4CAdrB,CAAA,wCAAA,CAA0C,EAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,2EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;;2FAczC,oBAAoB,EAAA,UAAA,EAAA,CAAA;kBAjBhC,SAAS;+BACE,cAAc,EAAA,UAAA,EACZ,IAAI,EAAA,QAAA,EACN,CAAA,wCAAA,CAA0C,EAAA,eAAA,EAWnC,uBAAuB,CAAC,MAAM,EAAA,OAAA,EACtC,CAAC,sBAAsB,CAAC,EAAA,MAAA,EAAA,CAAA,2EAAA,CAAA,EAAA;;sBAKhC,SAAS;AAAC,gBAAA,IAAA,EAAA,CAAA,WAAW,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE;;;MClI7B,iBAAiB,CAAA;8GAAjB,iBAAiB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;+GAAjB,iBAAiB,EAAA,OAAA,EAAA,CAHlB,oBAAoB,CAAA,EAAA,OAAA,EAAA,CACpB,oBAAoB,CAAA,EAAA,CAAA,CAAA;+GAEnB,iBAAiB,EAAA,CAAA,CAAA;;2FAAjB,iBAAiB,EAAA,UAAA,EAAA,CAAA;kBAJ7B,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;oBACR,OAAO,EAAE,CAAC,oBAAoB,CAAC;oBAC/B,OAAO,EAAE,CAAC,oBAAoB,CAAC;AAChC,iBAAA;;;ACND;;AAEG;;;;"}
1
+ {"version":3,"file":"mintplayer-ng-bootstrap-scheduler.mjs","sources":["../../../../libs/mintplayer-ng-bootstrap/scheduler/src/components/scheduler/scheduler.component.ts","../../../../libs/mintplayer-ng-bootstrap/scheduler/mintplayer-ng-bootstrap-scheduler.ts"],"sourcesContent":["import {\n Component,\n ElementRef,\n viewChild,\n AfterViewInit,\n OnDestroy,\n ChangeDetectionStrategy,\n CUSTOM_ELEMENTS_SCHEMA,\n input,\n output,\n model,\n computed,\n effect,\n signal,\n Injector,\n inject,\n runInInjectionContext,\n} from '@angular/core';\n\nimport {\n ViewType,\n SchedulerEvent,\n Resource,\n ResourceGroup,\n SchedulerOptions,\n} from '@mintplayer/scheduler-core';\n\n// Import the web component to ensure it gets registered\nimport '@mintplayer/scheduler-wc';\n\n/**\n * Interface for the mp-scheduler web component element\n */\ninterface MpSchedulerElement extends HTMLElement {\n view: ViewType;\n date: Date;\n events: SchedulerEvent[];\n resources: (Resource | ResourceGroup)[];\n options: Partial<SchedulerOptions>;\n selectedEvent: SchedulerEvent | null;\n selectedRange: { start: Date; end: Date } | null;\n next(): void;\n prev(): void;\n today(): void;\n gotoDate(date: Date): void;\n changeView(view: ViewType): void;\n addEvent(event: SchedulerEvent): void;\n updateEvent(event: SchedulerEvent): void;\n removeEvent(eventId: string): void;\n getEventById(eventId: string): SchedulerEvent | null;\n refetchEvents(): void;\n}\n\n/**\n * Event click event detail\n */\nexport interface SchedulerEventClickEvent {\n event: SchedulerEvent;\n originalEvent?: Event;\n}\n\n/**\n * Event create event detail\n */\nexport interface SchedulerEventCreateEvent {\n event: SchedulerEvent;\n resource?: Resource;\n originalEvent?: Event;\n}\n\n/**\n * Event update event detail\n */\nexport interface SchedulerEventUpdateEvent {\n event: SchedulerEvent;\n oldEvent: SchedulerEvent;\n originalEvent?: Event;\n}\n\n/**\n * Event delete event detail\n */\nexport interface SchedulerEventDeleteEvent {\n event: SchedulerEvent;\n originalEvent?: Event;\n}\n\n/**\n * Date click event detail\n */\nexport interface DateClickEvent {\n date: Date;\n resource?: Resource;\n originalEvent?: Event;\n}\n\n/**\n * Date select event detail\n */\nexport interface DateSelectEvent {\n start: Date;\n end: Date;\n resource?: Resource;\n originalEvent?: Event;\n}\n\n/**\n * View change event detail\n */\nexport interface ViewChangeEvent {\n view: ViewType;\n date: Date;\n}\n\n/**\n * Angular wrapper for the mp-scheduler web component using signals\n */\n@Component({\n selector: 'bs-scheduler',\n template: `<mp-scheduler #scheduler></mp-scheduler>`,\n styles: [`\n :host {\n display: block;\n height: 100%;\n }\n mp-scheduler {\n display: block;\n height: 100%;\n }\n `],\n changeDetection: ChangeDetectionStrategy.OnPush,\n schemas: [CUSTOM_ELEMENTS_SCHEMA],\n})\nexport class BsSchedulerComponent implements AfterViewInit, OnDestroy {\n private readonly injector = inject(Injector);\n\n private readonly schedulerRef = viewChild.required<ElementRef<MpSchedulerElement>>('scheduler');\n\n // Input signals\n readonly view = input<ViewType>('week');\n readonly date = input<Date>(new Date());\n readonly events = input<SchedulerEvent[]>([]);\n readonly resources = input<(Resource | ResourceGroup)[]>([]);\n readonly options = input<Partial<SchedulerOptions>>({});\n\n // Two-way binding model signals\n readonly selectedEvent = model<SchedulerEvent | null>(null);\n readonly selectedRange = model<{ start: Date; end: Date } | null>(null);\n\n // Output signals (events)\n readonly eventClick = output<SchedulerEventClickEvent>();\n readonly eventDblClick = output<SchedulerEventClickEvent>();\n readonly eventCreate = output<SchedulerEventCreateEvent>();\n readonly eventUpdate = output<SchedulerEventUpdateEvent>();\n readonly eventDelete = output<SchedulerEventDeleteEvent>();\n readonly dateClick = output<DateClickEvent>();\n readonly dateSelect = output<DateSelectEvent>();\n readonly viewChange = output<ViewChangeEvent>();\n\n // Computed signals\n readonly currentWeekStart = computed(() => {\n const d = new Date(this.date());\n const day = d.getDay();\n const diff = (day === 0 ? 6 : day - 1); // Adjust for Monday start\n d.setDate(d.getDate() - diff);\n d.setHours(0, 0, 0, 0);\n return d;\n });\n\n readonly currentWeekEnd = computed(() => {\n const start = this.currentWeekStart();\n const end = new Date(start);\n end.setDate(end.getDate() + 6);\n end.setHours(23, 59, 59, 999);\n return end;\n });\n\n readonly visibleEvents = computed(() => {\n const start = this.currentWeekStart();\n const end = this.currentWeekEnd();\n return this.events().filter(\n (e) => e.start < end && e.end > start\n );\n });\n\n // Internal state\n private readonly initialized = signal(false);\n private eventListeners: Array<{ type: string; listener: EventListener }> = [];\n\n ngAfterViewInit(): void {\n runInInjectionContext(this.injector, () => {\n // Set up effects to sync inputs to web component\n effect(() => {\n const el = this.schedulerRef()?.nativeElement;\n if (el) {\n el.view = this.view();\n }\n });\n\n effect(() => {\n const el = this.schedulerRef()?.nativeElement;\n if (el) {\n el.date = this.date();\n }\n });\n\n effect(() => {\n const el = this.schedulerRef()?.nativeElement;\n if (el) {\n el.events = this.events();\n }\n });\n\n effect(() => {\n const el = this.schedulerRef()?.nativeElement;\n if (el) {\n el.resources = this.resources();\n }\n });\n\n effect(() => {\n const el = this.schedulerRef()?.nativeElement;\n if (el) {\n el.options = this.options();\n }\n });\n\n // Sync selectedEvent to web component\n effect(() => {\n const el = this.schedulerRef()?.nativeElement;\n if (el) {\n el.selectedEvent = this.selectedEvent();\n }\n });\n });\n\n // Set up event listeners\n this.setupEventListeners();\n this.initialized.set(true);\n }\n\n ngOnDestroy(): void {\n this.removeEventListeners();\n }\n\n private setupEventListeners(): void {\n const el = this.schedulerRef()?.nativeElement;\n if (!el) return;\n\n const addListener = (type: string, handler: (e: CustomEvent) => void) => {\n const listener = (e: Event) => handler(e as CustomEvent);\n el.addEventListener(type, listener);\n this.eventListeners.push({ type, listener });\n };\n\n addListener('event-click', (e) => {\n this.eventClick.emit(e.detail);\n this.selectedEvent.set(e.detail.event);\n });\n\n addListener('event-dblclick', (e) => {\n this.eventDblClick.emit(e.detail);\n });\n\n addListener('event-create', (e) => {\n this.eventCreate.emit(e.detail);\n });\n\n addListener('event-update', (e) => {\n this.eventUpdate.emit(e.detail);\n });\n\n addListener('event-delete', (e) => {\n this.eventDelete.emit(e.detail);\n });\n\n addListener('date-click', (e) => {\n this.dateClick.emit(e.detail);\n });\n\n addListener('date-select', (e) => {\n this.dateSelect.emit(e.detail);\n this.selectedRange.set({ start: e.detail.start, end: e.detail.end });\n });\n\n addListener('view-change', (e) => {\n this.viewChange.emit(e.detail);\n });\n\n addListener('selection-change', (e) => {\n this.selectedEvent.set(e.detail.selectedEvent);\n });\n }\n\n private removeEventListeners(): void {\n const el = this.schedulerRef()?.nativeElement;\n if (!el) return;\n\n for (const { type, listener } of this.eventListeners) {\n el.removeEventListener(type, listener);\n }\n this.eventListeners = [];\n }\n\n // Public API methods (delegate to web component)\n\n /**\n * Navigate to next period\n */\n next(): void {\n this.schedulerRef()?.nativeElement?.next();\n }\n\n /**\n * Navigate to previous period\n */\n prev(): void {\n this.schedulerRef()?.nativeElement?.prev();\n }\n\n /**\n * Navigate to today\n */\n today(): void {\n this.schedulerRef()?.nativeElement?.today();\n }\n\n /**\n * Navigate to a specific date\n */\n gotoDate(date: Date): void {\n this.schedulerRef()?.nativeElement?.gotoDate(date);\n }\n\n /**\n * Change the current view\n */\n changeView(view: ViewType): void {\n this.schedulerRef()?.nativeElement?.changeView(view);\n }\n\n /**\n * Add an event\n */\n addEvent(event: SchedulerEvent): void {\n this.schedulerRef()?.nativeElement?.addEvent(event);\n }\n\n /**\n * Update an event\n */\n updateEvent(event: SchedulerEvent): void {\n this.schedulerRef()?.nativeElement?.updateEvent(event);\n }\n\n /**\n * Remove an event\n */\n removeEvent(eventId: string): void {\n this.schedulerRef()?.nativeElement?.removeEvent(eventId);\n }\n\n /**\n * Get an event by ID\n */\n getEventById(eventId: string): SchedulerEvent | null {\n return this.schedulerRef()?.nativeElement?.getEventById(eventId) ?? null;\n }\n\n /**\n * Refetch/refresh events\n */\n refetchEvents(): void {\n this.schedulerRef()?.nativeElement?.refetchEvents();\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;;;;AAkHA;;AAEG;MAiBU,oBAAoB,CAAA;AAhBjC,IAAA,WAAA,GAAA;AAiBmB,QAAA,IAAA,CAAA,QAAQ,GAAG,MAAM,CAAC,QAAQ,CAAC;AAE3B,QAAA,IAAA,CAAA,YAAY,GAAG,SAAS,CAAC,QAAQ,CAAiC,WAAW,CAAC;;AAGtF,QAAA,IAAA,CAAA,IAAI,GAAG,KAAK,CAAW,MAAM,gDAAC;AAC9B,QAAA,IAAA,CAAA,IAAI,GAAG,KAAK,CAAO,IAAI,IAAI,EAAE,gDAAC;AAC9B,QAAA,IAAA,CAAA,MAAM,GAAG,KAAK,CAAmB,EAAE,kDAAC;AACpC,QAAA,IAAA,CAAA,SAAS,GAAG,KAAK,CAA+B,EAAE,qDAAC;AACnD,QAAA,IAAA,CAAA,OAAO,GAAG,KAAK,CAA4B,EAAE,mDAAC;;AAG9C,QAAA,IAAA,CAAA,aAAa,GAAG,KAAK,CAAwB,IAAI,yDAAC;AAClD,QAAA,IAAA,CAAA,aAAa,GAAG,KAAK,CAAoC,IAAI,yDAAC;;QAG9D,IAAA,CAAA,UAAU,GAAG,MAAM,EAA4B;QAC/C,IAAA,CAAA,aAAa,GAAG,MAAM,EAA4B;QAClD,IAAA,CAAA,WAAW,GAAG,MAAM,EAA6B;QACjD,IAAA,CAAA,WAAW,GAAG,MAAM,EAA6B;QACjD,IAAA,CAAA,WAAW,GAAG,MAAM,EAA6B;QACjD,IAAA,CAAA,SAAS,GAAG,MAAM,EAAkB;QACpC,IAAA,CAAA,UAAU,GAAG,MAAM,EAAmB;QACtC,IAAA,CAAA,UAAU,GAAG,MAAM,EAAmB;;AAGtC,QAAA,IAAA,CAAA,gBAAgB,GAAG,QAAQ,CAAC,MAAK;YACxC,MAAM,CAAC,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;AAC/B,YAAA,MAAM,GAAG,GAAG,CAAC,CAAC,MAAM,EAAE;AACtB,YAAA,MAAM,IAAI,IAAI,GAAG,KAAK,CAAC,GAAG,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC,CAAC;YACvC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,EAAE,GAAG,IAAI,CAAC;YAC7B,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;AACtB,YAAA,OAAO,CAAC;AACV,QAAA,CAAC,4DAAC;AAEO,QAAA,IAAA,CAAA,cAAc,GAAG,QAAQ,CAAC,MAAK;AACtC,YAAA,MAAM,KAAK,GAAG,IAAI,CAAC,gBAAgB,EAAE;AACrC,YAAA,MAAM,GAAG,GAAG,IAAI,IAAI,CAAC,KAAK,CAAC;YAC3B,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC;YAC9B,GAAG,CAAC,QAAQ,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC;AAC7B,YAAA,OAAO,GAAG;AACZ,QAAA,CAAC,0DAAC;AAEO,QAAA,IAAA,CAAA,aAAa,GAAG,QAAQ,CAAC,MAAK;AACrC,YAAA,MAAM,KAAK,GAAG,IAAI,CAAC,gBAAgB,EAAE;AACrC,YAAA,MAAM,GAAG,GAAG,IAAI,CAAC,cAAc,EAAE;YACjC,OAAO,IAAI,CAAC,MAAM,EAAE,CAAC,MAAM,CACzB,CAAC,CAAC,KAAK,CAAC,CAAC,KAAK,GAAG,GAAG,IAAI,CAAC,CAAC,GAAG,GAAG,KAAK,CACtC;AACH,QAAA,CAAC,yDAAC;;AAGe,QAAA,IAAA,CAAA,WAAW,GAAG,MAAM,CAAC,KAAK,uDAAC;QACpC,IAAA,CAAA,cAAc,GAAqD,EAAE;AA4L9E,IAAA;IA1LC,eAAe,GAAA;AACb,QAAA,qBAAqB,CAAC,IAAI,CAAC,QAAQ,EAAE,MAAK;;YAExC,MAAM,CAAC,MAAK;gBACV,MAAM,EAAE,GAAG,IAAI,CAAC,YAAY,EAAE,EAAE,aAAa;gBAC7C,IAAI,EAAE,EAAE;AACN,oBAAA,EAAE,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,EAAE;gBACvB;AACF,YAAA,CAAC,CAAC;YAEF,MAAM,CAAC,MAAK;gBACV,MAAM,EAAE,GAAG,IAAI,CAAC,YAAY,EAAE,EAAE,aAAa;gBAC7C,IAAI,EAAE,EAAE;AACN,oBAAA,EAAE,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,EAAE;gBACvB;AACF,YAAA,CAAC,CAAC;YAEF,MAAM,CAAC,MAAK;gBACV,MAAM,EAAE,GAAG,IAAI,CAAC,YAAY,EAAE,EAAE,aAAa;gBAC7C,IAAI,EAAE,EAAE;AACN,oBAAA,EAAE,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,EAAE;gBAC3B;AACF,YAAA,CAAC,CAAC;YAEF,MAAM,CAAC,MAAK;gBACV,MAAM,EAAE,GAAG,IAAI,CAAC,YAAY,EAAE,EAAE,aAAa;gBAC7C,IAAI,EAAE,EAAE;AACN,oBAAA,EAAE,CAAC,SAAS,GAAG,IAAI,CAAC,SAAS,EAAE;gBACjC;AACF,YAAA,CAAC,CAAC;YAEF,MAAM,CAAC,MAAK;gBACV,MAAM,EAAE,GAAG,IAAI,CAAC,YAAY,EAAE,EAAE,aAAa;gBAC7C,IAAI,EAAE,EAAE;AACN,oBAAA,EAAE,CAAC,OAAO,GAAG,IAAI,CAAC,OAAO,EAAE;gBAC7B;AACF,YAAA,CAAC,CAAC;;YAGF,MAAM,CAAC,MAAK;gBACV,MAAM,EAAE,GAAG,IAAI,CAAC,YAAY,EAAE,EAAE,aAAa;gBAC7C,IAAI,EAAE,EAAE;AACN,oBAAA,EAAE,CAAC,aAAa,GAAG,IAAI,CAAC,aAAa,EAAE;gBACzC;AACF,YAAA,CAAC,CAAC;AACJ,QAAA,CAAC,CAAC;;QAGF,IAAI,CAAC,mBAAmB,EAAE;AAC1B,QAAA,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC;IAC5B;IAEA,WAAW,GAAA;QACT,IAAI,CAAC,oBAAoB,EAAE;IAC7B;IAEQ,mBAAmB,GAAA;QACzB,MAAM,EAAE,GAAG,IAAI,CAAC,YAAY,EAAE,EAAE,aAAa;AAC7C,QAAA,IAAI,CAAC,EAAE;YAAE;AAET,QAAA,MAAM,WAAW,GAAG,CAAC,IAAY,EAAE,OAAiC,KAAI;YACtE,MAAM,QAAQ,GAAG,CAAC,CAAQ,KAAK,OAAO,CAAC,CAAgB,CAAC;AACxD,YAAA,EAAE,CAAC,gBAAgB,CAAC,IAAI,EAAE,QAAQ,CAAC;YACnC,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC;AAC9C,QAAA,CAAC;AAED,QAAA,WAAW,CAAC,aAAa,EAAE,CAAC,CAAC,KAAI;YAC/B,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC;YAC9B,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC;AACxC,QAAA,CAAC,CAAC;AAEF,QAAA,WAAW,CAAC,gBAAgB,EAAE,CAAC,CAAC,KAAI;YAClC,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC;AACnC,QAAA,CAAC,CAAC;AAEF,QAAA,WAAW,CAAC,cAAc,EAAE,CAAC,CAAC,KAAI;YAChC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC;AACjC,QAAA,CAAC,CAAC;AAEF,QAAA,WAAW,CAAC,cAAc,EAAE,CAAC,CAAC,KAAI;YAChC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC;AACjC,QAAA,CAAC,CAAC;AAEF,QAAA,WAAW,CAAC,cAAc,EAAE,CAAC,CAAC,KAAI;YAChC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC;AACjC,QAAA,CAAC,CAAC;AAEF,QAAA,WAAW,CAAC,YAAY,EAAE,CAAC,CAAC,KAAI;YAC9B,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC;AAC/B,QAAA,CAAC,CAAC;AAEF,QAAA,WAAW,CAAC,aAAa,EAAE,CAAC,CAAC,KAAI;YAC/B,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC;YAC9B,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,MAAM,CAAC,KAAK,EAAE,GAAG,EAAE,CAAC,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC;AACtE,QAAA,CAAC,CAAC;AAEF,QAAA,WAAW,CAAC,aAAa,EAAE,CAAC,CAAC,KAAI;YAC/B,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC;AAChC,QAAA,CAAC,CAAC;AAEF,QAAA,WAAW,CAAC,kBAAkB,EAAE,CAAC,CAAC,KAAI;YACpC,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,aAAa,CAAC;AAChD,QAAA,CAAC,CAAC;IACJ;IAEQ,oBAAoB,GAAA;QAC1B,MAAM,EAAE,GAAG,IAAI,CAAC,YAAY,EAAE,EAAE,aAAa;AAC7C,QAAA,IAAI,CAAC,EAAE;YAAE;QAET,KAAK,MAAM,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,IAAI,CAAC,cAAc,EAAE;AACpD,YAAA,EAAE,CAAC,mBAAmB,CAAC,IAAI,EAAE,QAAQ,CAAC;QACxC;AACA,QAAA,IAAI,CAAC,cAAc,GAAG,EAAE;IAC1B;;AAIA;;AAEG;IACH,IAAI,GAAA;QACF,IAAI,CAAC,YAAY,EAAE,EAAE,aAAa,EAAE,IAAI,EAAE;IAC5C;AAEA;;AAEG;IACH,IAAI,GAAA;QACF,IAAI,CAAC,YAAY,EAAE,EAAE,aAAa,EAAE,IAAI,EAAE;IAC5C;AAEA;;AAEG;IACH,KAAK,GAAA;QACH,IAAI,CAAC,YAAY,EAAE,EAAE,aAAa,EAAE,KAAK,EAAE;IAC7C;AAEA;;AAEG;AACH,IAAA,QAAQ,CAAC,IAAU,EAAA;QACjB,IAAI,CAAC,YAAY,EAAE,EAAE,aAAa,EAAE,QAAQ,CAAC,IAAI,CAAC;IACpD;AAEA;;AAEG;AACH,IAAA,UAAU,CAAC,IAAc,EAAA;QACvB,IAAI,CAAC,YAAY,EAAE,EAAE,aAAa,EAAE,UAAU,CAAC,IAAI,CAAC;IACtD;AAEA;;AAEG;AACH,IAAA,QAAQ,CAAC,KAAqB,EAAA;QAC5B,IAAI,CAAC,YAAY,EAAE,EAAE,aAAa,EAAE,QAAQ,CAAC,KAAK,CAAC;IACrD;AAEA;;AAEG;AACH,IAAA,WAAW,CAAC,KAAqB,EAAA;QAC/B,IAAI,CAAC,YAAY,EAAE,EAAE,aAAa,EAAE,WAAW,CAAC,KAAK,CAAC;IACxD;AAEA;;AAEG;AACH,IAAA,WAAW,CAAC,OAAe,EAAA;QACzB,IAAI,CAAC,YAAY,EAAE,EAAE,aAAa,EAAE,WAAW,CAAC,OAAO,CAAC;IAC1D;AAEA;;AAEG;AACH,IAAA,YAAY,CAAC,OAAe,EAAA;AAC1B,QAAA,OAAO,IAAI,CAAC,YAAY,EAAE,EAAE,aAAa,EAAE,YAAY,CAAC,OAAO,CAAC,IAAI,IAAI;IAC1E;AAEA;;AAEG;IACH,aAAa,GAAA;QACX,IAAI,CAAC,YAAY,EAAE,EAAE,aAAa,EAAE,aAAa,EAAE;IACrD;8GAjPW,oBAAoB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAApB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,oBAAoB,y4CAdrB,CAAA,wCAAA,CAA0C,EAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,2EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;;2FAczC,oBAAoB,EAAA,UAAA,EAAA,CAAA;kBAhBhC,SAAS;+BACE,cAAc,EAAA,QAAA,EACd,0CAA0C,EAAA,eAAA,EAWnC,uBAAuB,CAAC,MAAM,EAAA,OAAA,EACtC,CAAC,sBAAsB,CAAC,EAAA,MAAA,EAAA,CAAA,2EAAA,CAAA,EAAA;0EAKkD,WAAW,EAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,CAAA,EAAA,IAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,MAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,IAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,MAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,MAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,QAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,SAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,WAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,OAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,SAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,aAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,eAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,EAAA,CAAA,MAAA,EAAA,IAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,CAAA,EAAA,aAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,eAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,EAAA,CAAA,MAAA,EAAA,IAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,CAAA,EAAA,UAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,MAAA,EAAA,IAAA,EAAA,CAAA,YAAA,CAAA,EAAA,CAAA,EAAA,aAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,MAAA,EAAA,IAAA,EAAA,CAAA,eAAA,CAAA,EAAA,CAAA,EAAA,WAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,MAAA,EAAA,IAAA,EAAA,CAAA,aAAA,CAAA,EAAA,CAAA,EAAA,WAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,MAAA,EAAA,IAAA,EAAA,CAAA,aAAA,CAAA,EAAA,CAAA,EAAA,WAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,MAAA,EAAA,IAAA,EAAA,CAAA,aAAA,CAAA,EAAA,CAAA,EAAA,SAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,MAAA,EAAA,IAAA,EAAA,CAAA,WAAA,CAAA,EAAA,CAAA,EAAA,UAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,MAAA,EAAA,IAAA,EAAA,CAAA,YAAA,CAAA,EAAA,CAAA,EAAA,UAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,MAAA,EAAA,IAAA,EAAA,CAAA,YAAA,CAAA,EAAA,CAAA,EAAA,EAAA,CAAA;;ACxIhG;;AAEG;;;;"}
@@ -1,11 +1,11 @@
1
1
  import { DOCUMENT } from '@angular/common';
2
2
  import * as i0 from '@angular/core';
3
- import { Inject, Injectable, inject, ElementRef, Directive, NgZone, signal, effect, HostListener, ViewChildren, ContentChildren, ChangeDetectionStrategy, Component, NgModule } from '@angular/core';
3
+ import { inject, Injectable, ElementRef, Directive, signal, contentChildren, viewChildren, effect, ChangeDetectionStrategy, Component } from '@angular/core';
4
4
  import { ROUTER_CONFIGURATION } from '@angular/router';
5
5
 
6
6
  class BsScrollOffsetService {
7
- constructor(routerConfig) {
8
- this.routerConfig = routerConfig;
7
+ constructor() {
8
+ this.routerConfig = inject(ROUTER_CONFIGURATION);
9
9
  }
10
10
  getScrollOffset() {
11
11
  if (!this.routerConfig.scrollOffset) {
@@ -18,42 +18,39 @@ class BsScrollOffsetService {
18
18
  return this.routerConfig.scrollOffset();
19
19
  }
20
20
  }
21
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.0.6", ngImport: i0, type: BsScrollOffsetService, deps: [{ token: ROUTER_CONFIGURATION }], target: i0.ɵɵFactoryTarget.Injectable }); }
22
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.0.6", ngImport: i0, type: BsScrollOffsetService, providedIn: 'root' }); }
21
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.6", ngImport: i0, type: BsScrollOffsetService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
22
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.1.6", ngImport: i0, type: BsScrollOffsetService, providedIn: 'root' }); }
23
23
  }
24
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.6", ngImport: i0, type: BsScrollOffsetService, decorators: [{
24
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.6", ngImport: i0, type: BsScrollOffsetService, decorators: [{
25
25
  type: Injectable,
26
26
  args: [{
27
27
  providedIn: 'root'
28
28
  }]
29
- }], ctorParameters: () => [{ type: undefined, decorators: [{
30
- type: Inject,
31
- args: [ROUTER_CONFIGURATION]
32
- }] }] });
29
+ }] });
33
30
 
34
31
  class BsScrollspyDirective {
35
32
  constructor() {
36
33
  this.element = inject(ElementRef);
37
34
  }
38
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.0.6", ngImport: i0, type: BsScrollspyDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
39
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "21.0.6", type: BsScrollspyDirective, isStandalone: false, selector: "[bsScrollspy]", ngImport: i0 }); }
35
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.6", ngImport: i0, type: BsScrollspyDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
36
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "21.1.6", type: BsScrollspyDirective, isStandalone: true, selector: "[bsScrollspy]", ngImport: i0 }); }
40
37
  }
41
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.6", ngImport: i0, type: BsScrollspyDirective, decorators: [{
38
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.6", ngImport: i0, type: BsScrollspyDirective, decorators: [{
42
39
  type: Directive,
43
40
  args: [{
44
41
  selector: '[bsScrollspy]',
45
- standalone: false,
46
42
  }]
47
43
  }] });
48
44
 
49
45
  class BsScrollspyComponent {
50
46
  constructor() {
51
47
  this.scrollOffsetService = inject(BsScrollOffsetService);
52
- this.zone = inject(NgZone);
53
48
  this.doc = inject(DOCUMENT);
54
49
  this.viewInit = signal(false, ...(ngDevMode ? [{ debugName: "viewInit" }] : []));
55
50
  this.contentInit = signal(false, ...(ngDevMode ? [{ debugName: "contentInit" }] : []));
56
- this.activeDirective = null;
51
+ this.directives = contentChildren(BsScrollspyDirective, { ...(ngDevMode ? { debugName: "directives" } : {}), descendants: true });
52
+ this.anchors = viewChildren('anchor', ...(ngDevMode ? [{ debugName: "anchors" }] : []));
53
+ this.activeDirective = signal(null, ...(ngDevMode ? [{ debugName: "activeDirective" }] : []));
57
54
  effect(() => {
58
55
  const viewInit = this.viewInit();
59
56
  const contentInit = this.contentInit();
@@ -74,22 +71,23 @@ class BsScrollspyComponent {
74
71
  }
75
72
  setActiveDirective() {
76
73
  const offsetY = this.scrollOffsetService.getScrollOffset()[1];
77
- const dirs = this.directives.filter((d) => d.element.nativeElement.getBoundingClientRect().y < offsetY);
78
- if (this.directives.length === 0) {
79
- this.activeDirective = null;
74
+ const allDirectives = this.directives();
75
+ const dirs = allDirectives.filter((d) => d.element.nativeElement.getBoundingClientRect().y < offsetY);
76
+ if (allDirectives.length === 0) {
77
+ this.activeDirective.set(null);
80
78
  }
81
79
  else if (dirs.length === 0) {
82
- this.activeDirective = this.directives.get(0) ?? null;
80
+ this.activeDirective.set(allDirectives[0] ?? null);
83
81
  }
84
82
  else {
85
- this.activeDirective = dirs[dirs.length - 1];
83
+ this.activeDirective.set(dirs[dirs.length - 1]);
86
84
  }
87
85
  }
88
86
  scrollToCurrentInSpy() {
89
87
  if ((typeof window !== 'undefined') && (window.innerWidth >= 768)) {
90
- if (this.activeDirective) {
91
- const index = this.directives.toArray().findIndex((v, i) => v === this.activeDirective);
92
- const anchor = this.anchors.get(index);
88
+ if (this.activeDirective()) {
89
+ const index = this.directives().findIndex((v, i) => v === this.activeDirective());
90
+ const anchor = this.anchors()[index];
93
91
  if (anchor && anchor.nativeElement.parentElement) {
94
92
  anchor.nativeElement.scrollIntoView({ block: 'nearest', inline: 'nearest' });
95
93
  }
@@ -104,48 +102,19 @@ class BsScrollspyComponent {
104
102
  window.scrollTo({ top: y, behavior: 'smooth' });
105
103
  }
106
104
  }
107
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.0.6", ngImport: i0, type: BsScrollspyComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
108
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.0.6", type: BsScrollspyComponent, isStandalone: false, selector: "bs-scrollspy", host: { listeners: { "window:scroll": "onWindowScroll()" } }, queries: [{ propertyName: "directives", predicate: BsScrollspyDirective, descendants: true }], viewQueries: [{ propertyName: "anchors", predicate: ["anchor"], descendants: true }], ngImport: i0, template: "<div class=\"spy\">\n <ul class=\"text-muted\">\n @for (dir of directives; track dir; let i = $index) {\n <li>\n <span [attr.data-index]=\"i\" class=\"cursor-pointer\" [class]=\"'nav' + dir.element.nativeElement.tagName\" [class.fw-bold]=\"activeDirective?.element === dir.element\" (click)=\"scrollToHeader(dir)\" [title]=\"dir.element.nativeElement.textContent\" #anchor>\n {{ dir.element.nativeElement.textContent }}\n </span>\n </li>\n }\n </ul>\n</div>\n<div class=\"content\">\n <ng-content></ng-content>\n</div>", styles: [":host{display:block}.spy>ul{list-style-type:none;padding-left:0}.spy>ul>li:hover{color:rgba(var(--bs-dark-rgb),var(--bs-text-opacity))!important}.spy>ul>li{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}@media(min-width:768px){:host{display:grid;grid-template-areas:\"content toc\";grid-template-columns:auto 200px;grid-template-rows:auto;gap:inherit;grid-area:main}.spy{position:sticky;top:5rem;right:0;z-index:2;height:calc(100vh - 7rem);overflow-y:auto;grid-area:toc}.spy>ul{padding-left:2rem}}.navH2{margin-left:20px}.navH3{margin-left:40px}.navH4{margin-left:60px}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
105
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.6", ngImport: i0, type: BsScrollspyComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
106
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.1.6", type: BsScrollspyComponent, isStandalone: true, selector: "bs-scrollspy", host: { listeners: { "window:scroll": "onWindowScroll()" } }, queries: [{ propertyName: "directives", predicate: BsScrollspyDirective, descendants: true, isSignal: true }], viewQueries: [{ propertyName: "anchors", predicate: ["anchor"], descendants: true, isSignal: true }], ngImport: i0, template: "<div class=\"spy\">\n <ul class=\"text-muted\">\n @for (dir of directives(); track dir; let i = $index) {\n <li>\n <span [attr.data-index]=\"i\" class=\"cursor-pointer\" [class]=\"'nav' + dir.element.nativeElement.tagName\" [class.fw-bold]=\"activeDirective()?.element === dir.element\" (click)=\"scrollToHeader(dir)\" [title]=\"dir.element.nativeElement.textContent\" #anchor>\n {{ dir.element.nativeElement.textContent }}\n </span>\n </li>\n }\n </ul>\n</div>\n<div class=\"content\">\n <ng-content></ng-content>\n</div>", styles: [":host{display:block}.spy>ul{list-style-type:none;padding-left:0}.spy>ul>li:hover{color:rgba(var(--bs-dark-rgb),var(--bs-text-opacity))!important}.spy>ul>li{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}@media(min-width:768px){:host{display:grid;grid-template-areas:\"content toc\";grid-template-columns:auto 200px;grid-template-rows:auto;gap:inherit;grid-area:main}.spy{position:sticky;top:5rem;right:0;z-index:2;height:calc(100vh - 7rem);overflow-y:auto;grid-area:toc}.spy>ul{padding-left:2rem}}.navH2{margin-left:20px}.navH3{margin-left:40px}.navH4{margin-left:60px}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
109
107
  }
110
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.6", ngImport: i0, type: BsScrollspyComponent, decorators: [{
108
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.6", ngImport: i0, type: BsScrollspyComponent, decorators: [{
111
109
  type: Component,
112
- args: [{ selector: 'bs-scrollspy', standalone: false, changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"spy\">\n <ul class=\"text-muted\">\n @for (dir of directives; track dir; let i = $index) {\n <li>\n <span [attr.data-index]=\"i\" class=\"cursor-pointer\" [class]=\"'nav' + dir.element.nativeElement.tagName\" [class.fw-bold]=\"activeDirective?.element === dir.element\" (click)=\"scrollToHeader(dir)\" [title]=\"dir.element.nativeElement.textContent\" #anchor>\n {{ dir.element.nativeElement.textContent }}\n </span>\n </li>\n }\n </ul>\n</div>\n<div class=\"content\">\n <ng-content></ng-content>\n</div>", styles: [":host{display:block}.spy>ul{list-style-type:none;padding-left:0}.spy>ul>li:hover{color:rgba(var(--bs-dark-rgb),var(--bs-text-opacity))!important}.spy>ul>li{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}@media(min-width:768px){:host{display:grid;grid-template-areas:\"content toc\";grid-template-columns:auto 200px;grid-template-rows:auto;gap:inherit;grid-area:main}.spy{position:sticky;top:5rem;right:0;z-index:2;height:calc(100vh - 7rem);overflow-y:auto;grid-area:toc}.spy>ul{padding-left:2rem}}.navH2{margin-left:20px}.navH3{margin-left:40px}.navH4{margin-left:60px}\n"] }]
113
- }], ctorParameters: () => [], propDecorators: { directives: [{
114
- type: ContentChildren,
115
- args: [BsScrollspyDirective, { descendants: true }]
116
- }], anchors: [{
117
- type: ViewChildren,
118
- args: ['anchor']
119
- }], onWindowScroll: [{
120
- type: HostListener,
121
- args: ['window:scroll']
122
- }] } });
123
-
124
- class BsScrollspyModule {
125
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.0.6", ngImport: i0, type: BsScrollspyModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
126
- static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "21.0.6", ngImport: i0, type: BsScrollspyModule, declarations: [BsScrollspyComponent,
127
- BsScrollspyDirective], exports: [BsScrollspyComponent,
128
- BsScrollspyDirective] }); }
129
- static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "21.0.6", ngImport: i0, type: BsScrollspyModule }); }
130
- }
131
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.6", ngImport: i0, type: BsScrollspyModule, decorators: [{
132
- type: NgModule,
133
- args: [{
134
- declarations: [
135
- BsScrollspyComponent,
136
- BsScrollspyDirective
137
- ],
138
- imports: [],
139
- exports: [
140
- BsScrollspyComponent,
141
- BsScrollspyDirective
142
- ]
143
- }]
144
- }] });
110
+ args: [{ selector: 'bs-scrollspy', changeDetection: ChangeDetectionStrategy.OnPush, host: {
111
+ '(window:scroll)': 'onWindowScroll()',
112
+ }, template: "<div class=\"spy\">\n <ul class=\"text-muted\">\n @for (dir of directives(); track dir; let i = $index) {\n <li>\n <span [attr.data-index]=\"i\" class=\"cursor-pointer\" [class]=\"'nav' + dir.element.nativeElement.tagName\" [class.fw-bold]=\"activeDirective()?.element === dir.element\" (click)=\"scrollToHeader(dir)\" [title]=\"dir.element.nativeElement.textContent\" #anchor>\n {{ dir.element.nativeElement.textContent }}\n </span>\n </li>\n }\n </ul>\n</div>\n<div class=\"content\">\n <ng-content></ng-content>\n</div>", styles: [":host{display:block}.spy>ul{list-style-type:none;padding-left:0}.spy>ul>li:hover{color:rgba(var(--bs-dark-rgb),var(--bs-text-opacity))!important}.spy>ul>li{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}@media(min-width:768px){:host{display:grid;grid-template-areas:\"content toc\";grid-template-columns:auto 200px;grid-template-rows:auto;gap:inherit;grid-area:main}.spy{position:sticky;top:5rem;right:0;z-index:2;height:calc(100vh - 7rem);overflow-y:auto;grid-area:toc}.spy>ul{padding-left:2rem}}.navH2{margin-left:20px}.navH3{margin-left:40px}.navH4{margin-left:60px}\n"] }]
113
+ }], ctorParameters: () => [], propDecorators: { directives: [{ type: i0.ContentChildren, args: [i0.forwardRef(() => BsScrollspyDirective), { ...{ descendants: true }, isSignal: true }] }], anchors: [{ type: i0.ViewChildren, args: ['anchor', { isSignal: true }] }] } });
145
114
 
146
115
  /**
147
116
  * Generated bundle index. Do not edit.
148
117
  */
149
118
 
150
- export { BsScrollOffsetService, BsScrollspyComponent, BsScrollspyDirective, BsScrollspyModule };
119
+ export { BsScrollOffsetService, BsScrollspyComponent, BsScrollspyDirective };
151
120
  //# sourceMappingURL=mintplayer-ng-bootstrap-scrollspy.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"mintplayer-ng-bootstrap-scrollspy.mjs","sources":["../../../../libs/mintplayer-ng-bootstrap/scrollspy/src/services/scroll-offset/scroll-offset.service.ts","../../../../libs/mintplayer-ng-bootstrap/scrollspy/src/directives/scrollspy.directive.ts","../../../../libs/mintplayer-ng-bootstrap/scrollspy/src/component/scrollspy.component.ts","../../../../libs/mintplayer-ng-bootstrap/scrollspy/src/component/scrollspy.component.html","../../../../libs/mintplayer-ng-bootstrap/scrollspy/src/scrollspy.module.ts","../../../../libs/mintplayer-ng-bootstrap/scrollspy/mintplayer-ng-bootstrap-scrollspy.ts"],"sourcesContent":["import { Inject, Injectable } from '@angular/core';\nimport { ExtraOptions, ROUTER_CONFIGURATION } from '@angular/router';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class BsScrollOffsetService {\n\n constructor(\n @Inject(ROUTER_CONFIGURATION) private routerConfig: ExtraOptions\n ) { }\n\n getScrollOffset(): [number, number] {\n if (!this.routerConfig.scrollOffset) {\n return [0, 0];\n } else if (Array.isArray(this.routerConfig.scrollOffset)) {\n return this.routerConfig.scrollOffset\n } else {\n return this.routerConfig.scrollOffset();\n }\n }\n}\n","import { Directive, ElementRef, inject } from '@angular/core';\n\n@Directive({\n selector: '[bsScrollspy]',\n standalone: false,\n})\nexport class BsScrollspyDirective {\n element = inject(ElementRef);\n}\n","import { DOCUMENT } from '@angular/common';\nimport { AfterContentInit, AfterViewInit, ChangeDetectionStrategy, Component, ContentChildren, effect, ElementRef, HostListener, inject, NgZone, QueryList, signal, ViewChildren } from '@angular/core';\nimport { BsScrollOffsetService } from '../services/scroll-offset/scroll-offset.service';\nimport { BsScrollspyDirective } from '../directives/scrollspy.directive';\n\n@Component({\n selector: 'bs-scrollspy',\n templateUrl: './scrollspy.component.html',\n styleUrls: ['./scrollspy.component.scss'],\n standalone: false,\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class BsScrollspyComponent implements AfterViewInit, AfterContentInit {\n\n private scrollOffsetService = inject(BsScrollOffsetService);\n private zone = inject(NgZone);\n doc = inject<Document>(DOCUMENT);\n\n private viewInit = signal<boolean>(false);\n private contentInit = signal<boolean>(false);\n\n @ContentChildren(BsScrollspyDirective, { descendants: true }) directives!: QueryList<BsScrollspyDirective>;\n @ViewChildren('anchor') anchors!: QueryList<ElementRef<HTMLSpanElement>>;\n\n activeDirective: BsScrollspyDirective | null = null;\n\n constructor() {\n effect(() => {\n const viewInit = this.viewInit();\n const contentInit = this.contentInit();\n if (viewInit && contentInit) {\n this.scrollToCurrentInSpy();\n }\n });\n }\n\n ngAfterViewInit() {\n this.viewInit.set(true);\n }\n\n ngAfterContentInit() {\n this.contentInit.set(true);\n }\n\n @HostListener('window:scroll')\n onWindowScroll() {\n this.setActiveDirective();\n this.scrollToCurrentInSpy();\n }\n\n setActiveDirective() {\n const offsetY = this.scrollOffsetService.getScrollOffset()[1];\n const dirs = this.directives.filter((d) => d.element.nativeElement.getBoundingClientRect().y < offsetY);\n\n if (this.directives.length === 0) {\n this.activeDirective = null;\n } else if (dirs.length === 0) {\n this.activeDirective = this.directives.get(0) ?? null;\n } else {\n this.activeDirective = dirs[dirs.length - 1];\n }\n }\n\n scrollToCurrentInSpy() {\n if ((typeof window !== 'undefined') && (window.innerWidth >= 768)) {\n if (this.activeDirective) {\n const index = this.directives.toArray().findIndex((v, i) => v === this.activeDirective);\n const anchor = this.anchors.get(index);\n if (anchor && anchor.nativeElement.parentElement) {\n anchor.nativeElement.scrollIntoView({ block: 'nearest', inline: 'nearest' });\n }\n }\n }\n }\n\n scrollToHeader(directive: BsScrollspyDirective) {\n if (typeof window !== 'undefined') {\n const header = directive.element.nativeElement;\n const offsetY = this.scrollOffsetService.getScrollOffset()[1];\n const y = header.getBoundingClientRect().top + window.scrollY - offsetY + 1;\n window.scrollTo({top: y, behavior: 'smooth'});\n }\n }\n}\n","<div class=\"spy\">\n <ul class=\"text-muted\">\n @for (dir of directives; track dir; let i = $index) {\n <li>\n <span [attr.data-index]=\"i\" class=\"cursor-pointer\" [class]=\"'nav' + dir.element.nativeElement.tagName\" [class.fw-bold]=\"activeDirective?.element === dir.element\" (click)=\"scrollToHeader(dir)\" [title]=\"dir.element.nativeElement.textContent\" #anchor>\n {{ dir.element.nativeElement.textContent }}\n </span>\n </li>\n }\n </ul>\n</div>\n<div class=\"content\">\n <ng-content></ng-content>\n</div>","import { NgModule } from '@angular/core';\nimport { BsScrollspyComponent } from './component/scrollspy.component';\nimport { BsScrollspyDirective } from './directives/scrollspy.directive';\n\n\n\n@NgModule({\n declarations: [\n BsScrollspyComponent,\n BsScrollspyDirective\n ],\n imports: [],\n exports: [\n BsScrollspyComponent,\n BsScrollspyDirective\n ]\n})\nexport class BsScrollspyModule { }\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"mintplayer-ng-bootstrap-scrollspy.mjs","sources":["../../../../libs/mintplayer-ng-bootstrap/scrollspy/src/services/scroll-offset/scroll-offset.service.ts","../../../../libs/mintplayer-ng-bootstrap/scrollspy/src/directives/scrollspy.directive.ts","../../../../libs/mintplayer-ng-bootstrap/scrollspy/src/component/scrollspy.component.ts","../../../../libs/mintplayer-ng-bootstrap/scrollspy/src/component/scrollspy.component.html","../../../../libs/mintplayer-ng-bootstrap/scrollspy/mintplayer-ng-bootstrap-scrollspy.ts"],"sourcesContent":["import { inject, Injectable } from '@angular/core';\nimport { ExtraOptions, ROUTER_CONFIGURATION } from '@angular/router';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class BsScrollOffsetService {\n\n private routerConfig = inject<ExtraOptions>(ROUTER_CONFIGURATION);\n\n getScrollOffset(): [number, number] {\n if (!this.routerConfig.scrollOffset) {\n return [0, 0];\n } else if (Array.isArray(this.routerConfig.scrollOffset)) {\n return this.routerConfig.scrollOffset\n } else {\n return this.routerConfig.scrollOffset();\n }\n }\n}\n","import { Directive, ElementRef, inject } from '@angular/core';\n\n@Directive({\n selector: '[bsScrollspy]',\n})\nexport class BsScrollspyDirective {\n element = inject(ElementRef);\n}\n","import { DOCUMENT } from '@angular/common';\nimport { AfterContentInit, AfterViewInit, ChangeDetectionStrategy, Component, contentChildren, effect, ElementRef, inject, signal, viewChildren } from '@angular/core';\nimport { BsScrollOffsetService } from '../services/scroll-offset/scroll-offset.service';\nimport { BsScrollspyDirective } from '../directives/scrollspy.directive';\n\n@Component({\n selector: 'bs-scrollspy',\n templateUrl: './scrollspy.component.html',\n styleUrls: ['./scrollspy.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n '(window:scroll)': 'onWindowScroll()',\n },\n})\nexport class BsScrollspyComponent implements AfterViewInit, AfterContentInit {\n\n private scrollOffsetService = inject(BsScrollOffsetService);\n doc = inject<Document>(DOCUMENT);\n\n private viewInit = signal<boolean>(false);\n private contentInit = signal<boolean>(false);\n\n readonly directives = contentChildren(BsScrollspyDirective, { descendants: true });\n readonly anchors = viewChildren<ElementRef<HTMLSpanElement>>('anchor');\n\n activeDirective = signal<BsScrollspyDirective | null>(null);\n\n constructor() {\n effect(() => {\n const viewInit = this.viewInit();\n const contentInit = this.contentInit();\n if (viewInit && contentInit) {\n this.scrollToCurrentInSpy();\n }\n });\n }\n\n ngAfterViewInit() {\n this.viewInit.set(true);\n }\n\n ngAfterContentInit() {\n this.contentInit.set(true);\n }\n\n onWindowScroll() {\n this.setActiveDirective();\n this.scrollToCurrentInSpy();\n }\n\n setActiveDirective() {\n const offsetY = this.scrollOffsetService.getScrollOffset()[1];\n const allDirectives = this.directives();\n const dirs = allDirectives.filter((d) => d.element.nativeElement.getBoundingClientRect().y < offsetY);\n\n if (allDirectives.length === 0) {\n this.activeDirective.set(null);\n } else if (dirs.length === 0) {\n this.activeDirective.set(allDirectives[0] ?? null);\n } else {\n this.activeDirective.set(dirs[dirs.length - 1]);\n }\n }\n\n scrollToCurrentInSpy() {\n if ((typeof window !== 'undefined') && (window.innerWidth >= 768)) {\n if (this.activeDirective()) {\n const index = this.directives().findIndex((v, i) => v === this.activeDirective());\n const anchor = this.anchors()[index];\n if (anchor && anchor.nativeElement.parentElement) {\n anchor.nativeElement.scrollIntoView({ block: 'nearest', inline: 'nearest' });\n }\n }\n }\n }\n\n scrollToHeader(directive: BsScrollspyDirective) {\n if (typeof window !== 'undefined') {\n const header = directive.element.nativeElement;\n const offsetY = this.scrollOffsetService.getScrollOffset()[1];\n const y = header.getBoundingClientRect().top + window.scrollY - offsetY + 1;\n window.scrollTo({top: y, behavior: 'smooth'});\n }\n }\n}\n","<div class=\"spy\">\n <ul class=\"text-muted\">\n @for (dir of directives(); track dir; let i = $index) {\n <li>\n <span [attr.data-index]=\"i\" class=\"cursor-pointer\" [class]=\"'nav' + dir.element.nativeElement.tagName\" [class.fw-bold]=\"activeDirective()?.element === dir.element\" (click)=\"scrollToHeader(dir)\" [title]=\"dir.element.nativeElement.textContent\" #anchor>\n {{ dir.element.nativeElement.textContent }}\n </span>\n </li>\n }\n </ul>\n</div>\n<div class=\"content\">\n <ng-content></ng-content>\n</div>","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}