@copilotkitnext/angular 0.0.9-alpha.3 → 0.0.11

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 (210) hide show
  1. package/dist/esm2022/index.mjs +2 -70
  2. package/dist/esm2022/lib/agent.mjs +73 -0
  3. package/dist/esm2022/lib/chat-config.mjs +35 -0
  4. package/dist/esm2022/lib/chat-state.mjs +18 -0
  5. package/dist/esm2022/lib/components/chat/copilot-chat-assistant-message-buttons.mjs +344 -0
  6. package/dist/esm2022/lib/components/chat/copilot-chat-assistant-message-renderer.mjs +260 -0
  7. package/dist/esm2022/lib/components/chat/copilot-chat-assistant-message-toolbar.mjs +22 -0
  8. package/dist/esm2022/{components/chat/copilot-chat-assistant-message.component.mjs → lib/components/chat/copilot-chat-assistant-message.mjs} +216 -240
  9. package/dist/esm2022/lib/components/chat/copilot-chat-assistant-message.types.mjs +2 -0
  10. package/dist/esm2022/lib/components/chat/copilot-chat-audio-recorder.mjs +196 -0
  11. package/dist/esm2022/lib/components/chat/copilot-chat-buttons.mjs +299 -0
  12. package/dist/esm2022/lib/components/chat/copilot-chat-input-defaults.mjs +39 -0
  13. package/dist/esm2022/lib/components/chat/copilot-chat-input.mjs +634 -0
  14. package/dist/esm2022/lib/components/chat/copilot-chat-input.types.mjs +10 -0
  15. package/dist/esm2022/lib/components/chat/copilot-chat-message-view-cursor.mjs +27 -0
  16. package/dist/esm2022/lib/components/chat/copilot-chat-message-view.mjs +268 -0
  17. package/dist/esm2022/lib/components/chat/copilot-chat-message-view.types.mjs +2 -0
  18. package/dist/esm2022/lib/components/chat/copilot-chat-textarea.mjs +139 -0
  19. package/dist/esm2022/lib/components/chat/copilot-chat-tool-calls-view.mjs +36 -0
  20. package/dist/esm2022/lib/components/chat/copilot-chat-toolbar.mjs +20 -0
  21. package/dist/esm2022/lib/components/chat/copilot-chat-tools-menu.mjs +203 -0
  22. package/dist/esm2022/lib/components/chat/copilot-chat-user-message-branch-navigation.mjs +118 -0
  23. package/dist/esm2022/lib/components/chat/copilot-chat-user-message-buttons.mjs +182 -0
  24. package/dist/esm2022/lib/components/chat/copilot-chat-user-message-renderer.mjs +28 -0
  25. package/dist/esm2022/lib/components/chat/copilot-chat-user-message-toolbar.mjs +25 -0
  26. package/dist/esm2022/lib/components/chat/copilot-chat-user-message.mjs +306 -0
  27. package/dist/esm2022/lib/components/chat/copilot-chat-user-message.types.mjs +2 -0
  28. package/dist/esm2022/lib/components/chat/copilot-chat-view-disclaimer.mjs +48 -0
  29. package/dist/esm2022/lib/components/chat/copilot-chat-view-feather.mjs +41 -0
  30. package/dist/esm2022/lib/components/chat/copilot-chat-view-handlers.mjs +19 -0
  31. package/dist/esm2022/lib/components/chat/copilot-chat-view-input-container.mjs +96 -0
  32. package/dist/esm2022/lib/components/chat/copilot-chat-view-scroll-to-bottom-button.mjs +89 -0
  33. package/dist/esm2022/lib/components/chat/copilot-chat-view-scroll-view.mjs +456 -0
  34. package/dist/esm2022/lib/components/chat/copilot-chat-view.mjs +404 -0
  35. package/dist/esm2022/lib/components/chat/copilot-chat-view.types.mjs +2 -0
  36. package/dist/esm2022/lib/components/chat/copilot-chat.mjs +167 -0
  37. package/dist/esm2022/lib/config.mjs +9 -0
  38. package/dist/esm2022/lib/copilotkit.mjs +124 -0
  39. package/dist/esm2022/lib/directives/copilotkit-agent-context.mjs +130 -0
  40. package/dist/esm2022/lib/directives/stick-to-bottom.mjs +170 -0
  41. package/dist/esm2022/lib/directives/tooltip.mjs +217 -0
  42. package/dist/esm2022/lib/human-in-the-loop.mjs +19 -0
  43. package/dist/esm2022/lib/render-tool-calls.mjs +131 -0
  44. package/dist/esm2022/lib/resize-observer.mjs +152 -0
  45. package/dist/esm2022/lib/scroll-position.mjs +124 -0
  46. package/dist/esm2022/lib/slots/copilot-slot.mjs +156 -0
  47. package/dist/esm2022/lib/slots/index.mjs +4 -0
  48. package/dist/esm2022/lib/slots/slot.types.mjs +3 -3
  49. package/dist/esm2022/lib/slots/slot.utils.mjs +19 -15
  50. package/dist/esm2022/lib/tools.mjs +31 -0
  51. package/dist/esm2022/lib/utils.mjs +3 -3
  52. package/dist/esm2022/public-api.mjs +47 -0
  53. package/dist/fesm2022/copilotkitnext-angular.mjs +5249 -8271
  54. package/dist/fesm2022/copilotkitnext-angular.mjs.map +1 -1
  55. package/dist/index.d.ts +1 -55
  56. package/dist/lib/agent.d.ts +53 -0
  57. package/dist/{core/chat-configuration/chat-configuration.types.d.ts → lib/chat-config.d.ts} +4 -8
  58. package/dist/lib/chat-state.d.ts +10 -0
  59. package/dist/lib/components/chat/copilot-chat-assistant-message-buttons.d.ts +68 -0
  60. package/dist/lib/components/chat/copilot-chat-assistant-message-renderer.d.ts +26 -0
  61. package/dist/lib/components/chat/copilot-chat-assistant-message-toolbar.d.ts +7 -0
  62. package/dist/lib/components/chat/copilot-chat-assistant-message.d.ts +178 -0
  63. package/dist/{components → lib/components}/chat/copilot-chat-assistant-message.types.d.ts +1 -1
  64. package/dist/{components/chat/copilot-chat-audio-recorder.component.d.ts → lib/components/chat/copilot-chat-audio-recorder.d.ts} +10 -10
  65. package/dist/lib/components/chat/copilot-chat-buttons.d.ts +65 -0
  66. package/dist/lib/components/chat/copilot-chat-input-defaults.d.ts +38 -0
  67. package/dist/lib/components/chat/copilot-chat-input.d.ts +133 -0
  68. package/dist/{components → lib/components}/chat/copilot-chat-input.types.d.ts +11 -11
  69. package/dist/lib/components/chat/copilot-chat-message-view-cursor.d.ts +11 -0
  70. package/dist/{components/chat/copilot-chat-message-view.component.d.ts → lib/components/chat/copilot-chat-message-view.d.ts} +68 -36
  71. package/dist/{components → lib/components}/chat/copilot-chat-message-view.types.d.ts +2 -2
  72. package/dist/lib/components/chat/copilot-chat-textarea.d.ts +41 -0
  73. package/dist/lib/components/chat/copilot-chat-tool-calls-view.d.ts +55 -0
  74. package/dist/lib/components/chat/copilot-chat-toolbar.d.ts +7 -0
  75. package/dist/lib/components/chat/copilot-chat-tools-menu.d.ts +20 -0
  76. package/dist/lib/components/chat/copilot-chat-user-message-branch-navigation.d.ts +20 -0
  77. package/dist/lib/components/chat/copilot-chat-user-message-buttons.d.ts +35 -0
  78. package/dist/lib/components/chat/copilot-chat-user-message-renderer.d.ts +8 -0
  79. package/dist/lib/components/chat/copilot-chat-user-message-toolbar.d.ts +7 -0
  80. package/dist/lib/components/chat/copilot-chat-user-message.d.ts +55 -0
  81. package/dist/{components → lib/components}/chat/copilot-chat-user-message.types.d.ts +2 -2
  82. package/dist/lib/components/chat/copilot-chat-view-disclaimer.d.ts +15 -0
  83. package/dist/{components/chat/copilot-chat-view-feather.component.d.ts → lib/components/chat/copilot-chat-view-feather.d.ts} +6 -6
  84. package/dist/{components/chat/copilot-chat-view-handlers.service.d.ts → lib/components/chat/copilot-chat-view-handlers.d.ts} +3 -3
  85. package/dist/lib/components/chat/copilot-chat-view-input-container.d.ts +23 -0
  86. package/dist/lib/components/chat/copilot-chat-view-scroll-to-bottom-button.d.ts +16 -0
  87. package/dist/lib/components/chat/copilot-chat-view-scroll-view.d.ts +114 -0
  88. package/dist/lib/components/chat/copilot-chat-view.d.ts +239 -0
  89. package/dist/{components → lib/components}/chat/copilot-chat-view.types.d.ts +2 -2
  90. package/dist/lib/components/chat/copilot-chat.d.ts +67 -0
  91. package/dist/lib/config.d.ts +16 -0
  92. package/dist/lib/copilotkit.d.ts +29 -0
  93. package/dist/{directives/copilotkit-agent-context.directive.d.ts → lib/directives/copilotkit-agent-context.d.ts} +5 -5
  94. package/dist/lib/directives/stick-to-bottom.d.ts +62 -0
  95. package/dist/lib/directives/tooltip.d.ts +33 -0
  96. package/dist/lib/human-in-the-loop.d.ts +13 -0
  97. package/dist/lib/render-tool-calls.d.ts +75 -0
  98. package/dist/{services/resize-observer.service.d.ts → lib/resize-observer.d.ts} +2 -2
  99. package/dist/{services/scroll-position.service.d.ts → lib/scroll-position.d.ts} +6 -6
  100. package/dist/lib/slots/copilot-slot.d.ts +34 -0
  101. package/dist/lib/slots/index.d.ts +3 -0
  102. package/dist/lib/slots/slot.types.d.ts +1 -1
  103. package/dist/lib/slots/slot.utils.d.ts +6 -4
  104. package/dist/lib/tools.d.ts +63 -0
  105. package/dist/lib/utils.d.ts +1 -1
  106. package/dist/public-api.d.ts +46 -0
  107. package/dist/styles.css +0 -69
  108. package/package.json +5 -5
  109. package/dist/components/chat/copilot-chat-assistant-message-buttons.component.d.ts +0 -75
  110. package/dist/components/chat/copilot-chat-assistant-message-renderer.component.d.ts +0 -31
  111. package/dist/components/chat/copilot-chat-assistant-message-toolbar.component.d.ts +0 -8
  112. package/dist/components/chat/copilot-chat-assistant-message.component.d.ts +0 -132
  113. package/dist/components/chat/copilot-chat-buttons.component.d.ts +0 -66
  114. package/dist/components/chat/copilot-chat-input-defaults.d.ts +0 -37
  115. package/dist/components/chat/copilot-chat-input.component.d.ts +0 -133
  116. package/dist/components/chat/copilot-chat-message-view-cursor.component.d.ts +0 -15
  117. package/dist/components/chat/copilot-chat-textarea.component.d.ts +0 -45
  118. package/dist/components/chat/copilot-chat-tool-calls-view.component.d.ts +0 -35
  119. package/dist/components/chat/copilot-chat-toolbar.component.d.ts +0 -8
  120. package/dist/components/chat/copilot-chat-tools-menu.component.d.ts +0 -20
  121. package/dist/components/chat/copilot-chat-user-message-branch-navigation.component.d.ts +0 -23
  122. package/dist/components/chat/copilot-chat-user-message-buttons.component.d.ts +0 -39
  123. package/dist/components/chat/copilot-chat-user-message-renderer.component.d.ts +0 -9
  124. package/dist/components/chat/copilot-chat-user-message-toolbar.component.d.ts +0 -8
  125. package/dist/components/chat/copilot-chat-user-message.component.d.ts +0 -55
  126. package/dist/components/chat/copilot-chat-view-disclaimer.component.d.ts +0 -15
  127. package/dist/components/chat/copilot-chat-view-input-container.component.d.ts +0 -23
  128. package/dist/components/chat/copilot-chat-view-scroll-to-bottom-button.component.d.ts +0 -17
  129. package/dist/components/chat/copilot-chat-view-scroll-view.component.d.ts +0 -84
  130. package/dist/components/chat/copilot-chat-view.component.d.ts +0 -205
  131. package/dist/components/chat/copilot-chat.component.d.ts +0 -36
  132. package/dist/components/copilotkit-tool-render.component.d.ts +0 -25
  133. package/dist/core/chat-configuration/chat-configuration.providers.d.ts +0 -54
  134. package/dist/core/chat-configuration/chat-configuration.service.d.ts +0 -75
  135. package/dist/core/copilotkit.providers.d.ts +0 -13
  136. package/dist/core/copilotkit.service.d.ts +0 -119
  137. package/dist/core/copilotkit.types.d.ts +0 -81
  138. package/dist/directives/copilotkit-agent.directive.d.ts +0 -106
  139. package/dist/directives/copilotkit-chat-config.directive.d.ts +0 -84
  140. package/dist/directives/copilotkit-config.directive.d.ts +0 -44
  141. package/dist/directives/copilotkit-frontend-tool.directive.d.ts +0 -25
  142. package/dist/directives/copilotkit-human-in-the-loop.directive.d.ts +0 -124
  143. package/dist/directives/stick-to-bottom.directive.d.ts +0 -62
  144. package/dist/esm2022/components/chat/copilot-chat-assistant-message-buttons.component.mjs +0 -384
  145. package/dist/esm2022/components/chat/copilot-chat-assistant-message-renderer.component.mjs +0 -286
  146. package/dist/esm2022/components/chat/copilot-chat-assistant-message-toolbar.component.mjs +0 -27
  147. package/dist/esm2022/components/chat/copilot-chat-assistant-message.types.mjs +0 -2
  148. package/dist/esm2022/components/chat/copilot-chat-audio-recorder.component.mjs +0 -202
  149. package/dist/esm2022/components/chat/copilot-chat-buttons.component.mjs +0 -321
  150. package/dist/esm2022/components/chat/copilot-chat-input-defaults.mjs +0 -38
  151. package/dist/esm2022/components/chat/copilot-chat-input.component.mjs +0 -666
  152. package/dist/esm2022/components/chat/copilot-chat-input.types.mjs +0 -10
  153. package/dist/esm2022/components/chat/copilot-chat-message-view-cursor.component.mjs +0 -45
  154. package/dist/esm2022/components/chat/copilot-chat-message-view.component.mjs +0 -296
  155. package/dist/esm2022/components/chat/copilot-chat-message-view.types.mjs +0 -2
  156. package/dist/esm2022/components/chat/copilot-chat-textarea.component.mjs +0 -188
  157. package/dist/esm2022/components/chat/copilot-chat-tool-calls-view.component.mjs +0 -222
  158. package/dist/esm2022/components/chat/copilot-chat-toolbar.component.mjs +0 -25
  159. package/dist/esm2022/components/chat/copilot-chat-tools-menu.component.mjs +0 -199
  160. package/dist/esm2022/components/chat/copilot-chat-user-message-branch-navigation.component.mjs +0 -137
  161. package/dist/esm2022/components/chat/copilot-chat-user-message-buttons.component.mjs +0 -207
  162. package/dist/esm2022/components/chat/copilot-chat-user-message-renderer.component.mjs +0 -35
  163. package/dist/esm2022/components/chat/copilot-chat-user-message-toolbar.component.mjs +0 -34
  164. package/dist/esm2022/components/chat/copilot-chat-user-message.component.mjs +0 -341
  165. package/dist/esm2022/components/chat/copilot-chat-user-message.types.mjs +0 -2
  166. package/dist/esm2022/components/chat/copilot-chat-view-disclaimer.component.mjs +0 -52
  167. package/dist/esm2022/components/chat/copilot-chat-view-feather.component.mjs +0 -55
  168. package/dist/esm2022/components/chat/copilot-chat-view-handlers.service.mjs +0 -19
  169. package/dist/esm2022/components/chat/copilot-chat-view-input-container.component.mjs +0 -110
  170. package/dist/esm2022/components/chat/copilot-chat-view-scroll-to-bottom-button.component.mjs +0 -93
  171. package/dist/esm2022/components/chat/copilot-chat-view-scroll-view.component.mjs +0 -443
  172. package/dist/esm2022/components/chat/copilot-chat-view.component.mjs +0 -479
  173. package/dist/esm2022/components/chat/copilot-chat-view.types.mjs +0 -2
  174. package/dist/esm2022/components/chat/copilot-chat.component.mjs +0 -220
  175. package/dist/esm2022/components/copilotkit-tool-render.component.mjs +0 -150
  176. package/dist/esm2022/core/chat-configuration/chat-configuration.providers.mjs +0 -65
  177. package/dist/esm2022/core/chat-configuration/chat-configuration.service.mjs +0 -145
  178. package/dist/esm2022/core/chat-configuration/chat-configuration.types.mjs +0 -26
  179. package/dist/esm2022/core/copilotkit.providers.mjs +0 -34
  180. package/dist/esm2022/core/copilotkit.service.mjs +0 -411
  181. package/dist/esm2022/core/copilotkit.types.mjs +0 -13
  182. package/dist/esm2022/directives/copilotkit-agent-context.directive.mjs +0 -130
  183. package/dist/esm2022/directives/copilotkit-agent.directive.mjs +0 -221
  184. package/dist/esm2022/directives/copilotkit-chat-config.directive.mjs +0 -218
  185. package/dist/esm2022/directives/copilotkit-config.directive.mjs +0 -94
  186. package/dist/esm2022/directives/copilotkit-frontend-tool.directive.mjs +0 -128
  187. package/dist/esm2022/directives/copilotkit-human-in-the-loop.directive.mjs +0 -265
  188. package/dist/esm2022/directives/stick-to-bottom.directive.mjs +0 -181
  189. package/dist/esm2022/lib/directives/tooltip.directive.mjs +0 -211
  190. package/dist/esm2022/lib/slots/copilot-slot.component.mjs +0 -154
  191. package/dist/esm2022/services/resize-observer.service.mjs +0 -152
  192. package/dist/esm2022/services/scroll-position.service.mjs +0 -124
  193. package/dist/esm2022/types/frontend-tool.mjs +0 -2
  194. package/dist/esm2022/types/human-in-the-loop.mjs +0 -2
  195. package/dist/esm2022/utils/agent-context.utils.mjs +0 -114
  196. package/dist/esm2022/utils/agent.utils.mjs +0 -212
  197. package/dist/esm2022/utils/chat-config.utils.mjs +0 -186
  198. package/dist/esm2022/utils/copilotkit.utils.mjs +0 -20
  199. package/dist/esm2022/utils/frontend-tool.utils.mjs +0 -224
  200. package/dist/esm2022/utils/human-in-the-loop.utils.mjs +0 -293
  201. package/dist/lib/directives/tooltip.directive.d.ts +0 -33
  202. package/dist/lib/slots/copilot-slot.component.d.ts +0 -34
  203. package/dist/types/frontend-tool.d.ts +0 -37
  204. package/dist/types/human-in-the-loop.d.ts +0 -44
  205. package/dist/utils/agent-context.utils.d.ts +0 -75
  206. package/dist/utils/agent.utils.d.ts +0 -108
  207. package/dist/utils/chat-config.utils.d.ts +0 -166
  208. package/dist/utils/copilotkit.utils.d.ts +0 -16
  209. package/dist/utils/frontend-tool.utils.d.ts +0 -119
  210. package/dist/utils/human-in-the-loop.utils.d.ts +0 -92
@@ -0,0 +1,152 @@
1
+ import { Injectable, ElementRef } from "@angular/core";
2
+ import { Subject, BehaviorSubject } from "rxjs";
3
+ import { debounceTime, takeUntil, distinctUntilChanged } from "rxjs/operators";
4
+ import * as i0 from "@angular/core";
5
+ export class ResizeObserverService {
6
+ ngZone;
7
+ destroy$ = new Subject();
8
+ observers = new Map();
9
+ resizeStates = new Map();
10
+ resizeTimeouts = new Map();
11
+ constructor(ngZone) {
12
+ this.ngZone = ngZone;
13
+ }
14
+ /**
15
+ * Observe element resize with debouncing and resizing state
16
+ * @param element Element to observe
17
+ * @param debounceMs Debounce time (default 250ms)
18
+ * @param resizingDurationMs How long to show "isResizing" state (default 250ms)
19
+ */
20
+ observeElement(element, debounceMs = 0, resizingDurationMs = 250) {
21
+ const el = element instanceof ElementRef ? element.nativeElement : element;
22
+ // Return existing observer if already observing
23
+ if (this.resizeStates.has(el)) {
24
+ return this.resizeStates.get(el).asObservable();
25
+ }
26
+ // Create new subject for this element
27
+ const resizeState$ = new BehaviorSubject({
28
+ width: el.offsetWidth,
29
+ height: el.offsetHeight,
30
+ isResizing: false,
31
+ });
32
+ this.resizeStates.set(el, resizeState$);
33
+ // Create ResizeObserver
34
+ const resizeObserver = new ResizeObserver((entries) => {
35
+ if (entries.length === 0)
36
+ return;
37
+ const entry = entries[0];
38
+ if (!entry)
39
+ return;
40
+ const { width, height } = entry.contentRect;
41
+ this.ngZone.run(() => {
42
+ // Clear existing timeout
43
+ const existingTimeout = this.resizeTimeouts.get(el);
44
+ if (existingTimeout) {
45
+ clearTimeout(existingTimeout);
46
+ }
47
+ // Update state with isResizing = true
48
+ resizeState$.next({
49
+ width,
50
+ height,
51
+ isResizing: true,
52
+ });
53
+ // Set timeout to clear isResizing flag
54
+ if (resizingDurationMs > 0) {
55
+ const timeout = window.setTimeout(() => {
56
+ resizeState$.next({
57
+ width,
58
+ height,
59
+ isResizing: false,
60
+ });
61
+ this.resizeTimeouts.delete(el);
62
+ }, resizingDurationMs);
63
+ this.resizeTimeouts.set(el, timeout);
64
+ }
65
+ else {
66
+ // If no duration, immediately set isResizing to false
67
+ resizeState$.next({
68
+ width,
69
+ height,
70
+ isResizing: false,
71
+ });
72
+ }
73
+ });
74
+ });
75
+ // Start observing
76
+ resizeObserver.observe(el);
77
+ this.observers.set(el, resizeObserver);
78
+ // Return observable with debouncing if specified
79
+ const observable = resizeState$.asObservable().pipe(debounceMs > 0 ? debounceTime(debounceMs) : (source) => source, distinctUntilChanged((a, b) => a.width === b.width &&
80
+ a.height === b.height &&
81
+ a.isResizing === b.isResizing), takeUntil(this.destroy$));
82
+ return observable;
83
+ }
84
+ /**
85
+ * Stop observing an element
86
+ * @param element Element to stop observing
87
+ */
88
+ unobserve(element) {
89
+ const el = element instanceof ElementRef ? element.nativeElement : element;
90
+ // Clear timeout if exists
91
+ const timeout = this.resizeTimeouts.get(el);
92
+ if (timeout) {
93
+ clearTimeout(timeout);
94
+ this.resizeTimeouts.delete(el);
95
+ }
96
+ // Disconnect observer
97
+ const observer = this.observers.get(el);
98
+ if (observer) {
99
+ observer.disconnect();
100
+ this.observers.delete(el);
101
+ }
102
+ // Complete and remove subject
103
+ const subject = this.resizeStates.get(el);
104
+ if (subject) {
105
+ subject.complete();
106
+ this.resizeStates.delete(el);
107
+ }
108
+ }
109
+ /**
110
+ * Get current size of element
111
+ * @param element Element to measure
112
+ */
113
+ getCurrentSize(element) {
114
+ const el = element instanceof ElementRef ? element.nativeElement : element;
115
+ return {
116
+ width: el.offsetWidth,
117
+ height: el.offsetHeight,
118
+ };
119
+ }
120
+ /**
121
+ * Get current resize state of element
122
+ * @param element Element to check
123
+ */
124
+ getCurrentState(element) {
125
+ const el = element instanceof ElementRef ? element.nativeElement : element;
126
+ const subject = this.resizeStates.get(el);
127
+ return subject ? subject.value : null;
128
+ }
129
+ ngOnDestroy() {
130
+ // Clear all timeouts
131
+ this.resizeTimeouts.forEach((timeout) => clearTimeout(timeout));
132
+ this.resizeTimeouts.clear();
133
+ // Disconnect all observers
134
+ this.observers.forEach((observer) => observer.disconnect());
135
+ this.observers.clear();
136
+ // Complete all subjects
137
+ this.resizeStates.forEach((subject) => subject.complete());
138
+ this.resizeStates.clear();
139
+ // Complete destroy subject
140
+ this.destroy$.next();
141
+ this.destroy$.complete();
142
+ }
143
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ResizeObserverService, deps: [{ token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Injectable });
144
+ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ResizeObserverService, providedIn: "root" });
145
+ }
146
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ResizeObserverService, decorators: [{
147
+ type: Injectable,
148
+ args: [{
149
+ providedIn: "root",
150
+ }]
151
+ }], ctorParameters: () => [{ type: i0.NgZone }] });
152
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVzaXplLW9ic2VydmVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2xpYi9yZXNpemUtb2JzZXJ2ZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxVQUFVLEVBQXFCLE1BQU0sZUFBZSxDQUFDO0FBQzFFLE9BQU8sRUFBYyxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQzVELE9BQU8sRUFBRSxZQUFZLEVBQUUsU0FBUyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7O0FBVy9FLE1BQU0sT0FBTyxxQkFBcUI7SUFNWjtJQUxaLFFBQVEsR0FBRyxJQUFJLE9BQU8sRUFBUSxDQUFDO0lBQy9CLFNBQVMsR0FBRyxJQUFJLEdBQUcsRUFBK0IsQ0FBQztJQUNuRCxZQUFZLEdBQUcsSUFBSSxHQUFHLEVBQTZDLENBQUM7SUFDcEUsY0FBYyxHQUFHLElBQUksR0FBRyxFQUF1QixDQUFDO0lBRXhELFlBQW9CLE1BQWM7UUFBZCxXQUFNLEdBQU4sTUFBTSxDQUFRO0lBQUcsQ0FBQztJQUV0Qzs7Ozs7T0FLRztJQUNILGNBQWMsQ0FDWixPQUE4QyxFQUM5QyxhQUFxQixDQUFDLEVBQ3RCLHFCQUE2QixHQUFHO1FBRWhDLE1BQU0sRUFBRSxHQUFHLE9BQU8sWUFBWSxVQUFVLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQztRQUUzRSxnREFBZ0Q7UUFDaEQsSUFBSSxJQUFJLENBQUMsWUFBWSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDO1lBQzlCLE9BQU8sSUFBSSxDQUFDLFlBQVksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFFLENBQUMsWUFBWSxFQUFFLENBQUM7UUFDbkQsQ0FBQztRQUVELHNDQUFzQztRQUN0QyxNQUFNLFlBQVksR0FBRyxJQUFJLGVBQWUsQ0FBYztZQUNwRCxLQUFL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QUFNO2lCQUNuQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUsIEVsZW1lbnRSZWYsIE5nWm9uZSwgT25EZXN0cm95IH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcbmltcG9ydCB7IE9ic2VydmFibGUsIFN1YmplY3QsIEJlaGF2aW9yU3ViamVjdCB9IGZyb20gXCJyeGpzXCI7XG5pbXBvcnQgeyBkZWJvdW5jZVRpbWUsIHRha2VVbnRpbCwgZGlzdGluY3RVbnRpbENoYW5nZWQgfSBmcm9tIFwicnhqcy9vcGVyYXRvcnNcIjtcblxuZXhwb3J0IGludGVyZmFjZSBSZXNpemVTdGF0ZSB7XG4gIHdpZHRoOiBudW1iZXI7XG4gIGhlaWdodDogbnVtYmVyO1xuICBpc1Jlc2l6aW5nOiBib29sZWFuO1xufVxuXG5ASW5qZWN0YWJsZSh7XG4gIHByb3ZpZGVkSW46IFwicm9vdFwiLFxufSlcbmV4cG9ydCBjbGFzcyBSZXNpemVPYnNlcnZlclNlcnZpY2UgaW1wbGVtZW50cyBPbkRlc3Ryb3kge1xuICBwcml2YXRlIGRlc3Ryb3kkID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcbiAgcHJpdmF0ZSBvYnNlcnZlcnMgPSBuZXcgTWFwPEhUTUxFbGVtZW50LCBSZXNpemVPYnNlcnZlcj4oKTtcbiAgcHJpdmF0ZSByZXNpemVTdGF0ZXMgPSBuZXcgTWFwPEhUTUxFbGVtZW50LCBCZWhhdmlvclN1YmplY3Q8UmVzaXplU3RhdGU+PigpO1xuICBwcml2YXRlIHJlc2l6ZVRpbWVvdXRzID0gbmV3IE1hcDxIVE1MRWxlbWVudCwgbnVtYmVyPigpO1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgbmdab25lOiBOZ1pvbmUpIHt9XG5cbiAgLyoqXG4gICAqIE9ic2VydmUgZWxlbWVudCByZXNpemUgd2l0aCBkZWJvdW5jaW5nIGFuZCByZXNpemluZyBzdGF0ZVxuICAgKiBAcGFyYW0gZWxlbWVudCBFbGVtZW50IHRvIG9ic2VydmVcbiAgICogQHBhcmFtIGRlYm91bmNlTXMgRGVib3VuY2UgdGltZSAoZGVmYXVsdCAyNTBtcylcbiAgICogQHBhcmFtIHJlc2l6aW5nRHVyYXRpb25NcyBIb3cgbG9uZyB0byBzaG93IFwiaXNSZXNpemluZ1wiIHN0YXRlIChkZWZhdWx0IDI1MG1zKVxuICAgKi9cbiAgb2JzZXJ2ZUVsZW1lbnQoXG4gICAgZWxlbWVudDogRWxlbWVudFJlZjxIVE1MRWxlbWVudD4gfCBIVE1MRWxlbWVudCxcbiAgICBkZWJvdW5jZU1zOiBudW1iZXIgPSAwLFxuICAgIHJlc2l6aW5nRHVyYXRpb25NczogbnVtYmVyID0gMjUwXG4gICk6IE9ic2VydmFibGU8UmVzaXplU3RhdGU+IHtcbiAgICBjb25zdCBlbCA9IGVsZW1lbnQgaW5zdGFuY2VvZiBFbGVtZW50UmVmID8gZWxlbWVudC5uYXRpdmVFbGVtZW50IDogZWxlbWVudDtcblxuICAgIC8vIFJldHVybiBleGlzdGluZyBvYnNlcnZlciBpZiBhbHJlYWR5IG9ic2VydmluZ1xuICAgIGlmICh0aGlzLnJlc2l6ZVN0YXRlcy5oYXMoZWwpKSB7XG4gICAgICByZXR1cm4gdGhpcy5yZXNpemVTdGF0ZXMuZ2V0KGVsKSEuYXNPYnNlcnZhYmxlKCk7XG4gICAgfVxuXG4gICAgLy8gQ3JlYXRlIG5ldyBzdWJqZWN0IGZvciB0aGlzIGVsZW1lbnRcbiAgICBjb25zdCByZXNpemVTdGF0ZSQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PFJlc2l6ZVN0YXRlPih7XG4gICAgICB3aWR0aDogZWwub2Zmc2V0V2lkdGgsXG4gICAgICBoZWlnaHQ6IGVsLm9mZnNldEhlaWdodCxcbiAgICAgIGlzUmVzaXppbmc6IGZhbHNlLFxuICAgIH0pO1xuXG4gICAgdGhpcy5yZXNpemVTdGF0ZXMuc2V0KGVsLCByZXNpemVTdGF0ZSQpO1xuXG4gICAgLy8gQ3JlYXRlIFJlc2l6ZU9ic2VydmVyXG4gICAgY29uc3QgcmVzaXplT2JzZXJ2ZXIgPSBuZXcgUmVzaXplT2JzZXJ2ZXIoKGVudHJpZXMpID0+IHtcbiAgICAgIGlmIChlbnRyaWVzLmxlbmd0aCA9PT0gMCkgcmV0dXJuO1xuXG4gICAgICBjb25zdCBlbnRyeSA9IGVudHJpZXNbMF07XG4gICAgICBpZiAoIWVudHJ5KSByZXR1cm47XG5cbiAgICAgIGNvbnN0IHsgd2lkdGgsIGhlaWdodCB9ID0gZW50cnkuY29udGVudFJlY3Q7XG5cbiAgICAgIHRoaXMubmdab25lLnJ1bigoKSA9PiB7XG4gICAgICAgIC8vIENsZWFyIGV4aXN0aW5nIHRpbWVvdXRcbiAgICAgICAgY29uc3QgZXhpc3RpbmdUaW1lb3V0ID0gdGhpcy5yZXNpemVUaW1lb3V0cy5nZXQoZWwpO1xuICAgICAgICBpZiAoZXhpc3RpbmdUaW1lb3V0KSB7XG4gICAgICAgICAgY2xlYXJUaW1lb3V0KGV4aXN0aW5nVGltZW91dCk7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBVcGRhdGUgc3RhdGUgd2l0aCBpc1Jlc2l6aW5nID0gdHJ1ZVxuICAgICAgICByZXNpemVTdGF0ZSQubmV4dCh7XG4gICAgICAgICAgd2lkdGgsXG4gICAgICAgICAgaGVpZ2h0LFxuICAgICAgICAgIGlzUmVzaXppbmc6IHRydWUsXG4gICAgICAgIH0pO1xuXG4gICAgICAgIC8vIFNldCB0aW1lb3V0IHRvIGNsZWFyIGlzUmVzaXppbmcgZmxhZ1xuICAgICAgICBpZiAocmVzaXppbmdEdXJhdGlvbk1zID4gMCkge1xuICAgICAgICAgIGNvbnN0IHRpbWVvdXQgPSB3aW5kb3cuc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgICByZXNpemVTdGF0ZSQubmV4dCh7XG4gICAgICAgICAgICAgIHdpZHRoLFxuICAgICAgICAgICAgICBoZWlnaHQsXG4gICAgICAgICAgICAgIGlzUmVzaXppbmc6IGZhbHNlLFxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB0aGlzLnJlc2l6ZVRpbWVvdXRzLmRlbGV0ZShlbCk7XG4gICAgICAgICAgfSwgcmVzaXppbmdEdXJhdGlvbk1zKTtcblxuICAgICAgICAgIHRoaXMucmVzaXplVGltZW91dHMuc2V0KGVsLCB0aW1lb3V0KTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAvLyBJZiBubyBkdXJhdGlvbiwgaW1tZWRpYXRlbHkgc2V0IGlzUmVzaXppbmcgdG8gZmFsc2VcbiAgICAgICAgICByZXNpemVTdGF0ZSQubmV4dCh7XG4gICAgICAgICAgICB3aWR0aCxcbiAgICAgICAgICAgIGhlaWdodCxcbiAgICAgICAgICAgIGlzUmVzaXppbmc6IGZhbHNlLFxuICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9KTtcblxuICAgIC8vIFN0YXJ0IG9ic2VydmluZ1xuICAgIHJlc2l6ZU9ic2VydmVyLm9ic2VydmUoZWwpO1xuICAgIHRoaXMub2JzZXJ2ZXJzLnNldChlbCwgcmVzaXplT2JzZXJ2ZXIpO1xuXG4gICAgLy8gUmV0dXJuIG9ic2VydmFibGUgd2l0aCBkZWJvdW5jaW5nIGlmIHNwZWNpZmllZFxuICAgIGNvbnN0IG9ic2VydmFibGUgPSByZXNpemVTdGF0ZSQuYXNPYnNlcnZhYmxlKCkucGlwZShcbiAgICAgIGRlYm91bmNlTXMgPiAwID8gZGVib3VuY2VUaW1lKGRlYm91bmNlTXMpIDogKHNvdXJjZSkgPT4gc291cmNlLFxuICAgICAgZGlzdGluY3RVbnRpbENoYW5nZWQoXG4gICAgICAgIChhLCBiKSA9PlxuICAgICAgICAgIGEud2lkdGggPT09IGIud2lkdGggJiZcbiAgICAgICAgICBhLmhlaWdodCA9PT0gYi5oZWlnaHQgJiZcbiAgICAgICAgICBhLmlzUmVzaXppbmcgPT09IGIuaXNSZXNpemluZ1xuICAgICAgKSxcbiAgICAgIHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKVxuICAgICk7XG5cbiAgICByZXR1cm4gb2JzZXJ2YWJsZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBTdG9wIG9ic2VydmluZyBhbiBlbGVtZW50XG4gICAqIEBwYXJhbSBlbGVtZW50IEVsZW1lbnQgdG8gc3RvcCBvYnNlcnZpbmdcbiAgICovXG4gIHVub2JzZXJ2ZShlbGVtZW50OiBFbGVtZW50UmVmPEhUTUxFbGVtZW50PiB8IEhUTUxFbGVtZW50KTogdm9pZCB7XG4gICAgY29uc3QgZWwgPSBlbGVtZW50IGluc3RhbmNlb2YgRWxlbWVudFJlZiA/IGVsZW1lbnQubmF0aXZlRWxlbWVudCA6IGVsZW1lbnQ7XG5cbiAgICAvLyBDbGVhciB0aW1lb3V0IGlmIGV4aXN0c1xuICAgIGNvbnN0IHRpbWVvdXQgPSB0aGlzLnJlc2l6ZVRpbWVvdXRzLmdldChlbCk7XG4gICAgaWYgKHRpbWVvdXQpIHtcbiAgICAgIGNsZWFyVGltZW91dCh0aW1lb3V0KTtcbiAgICAgIHRoaXMucmVzaXplVGltZW91dHMuZGVsZXRlKGVsKTtcbiAgICB9XG5cbiAgICAvLyBEaXNjb25uZWN0IG9ic2VydmVyXG4gICAgY29uc3Qgb2JzZXJ2ZXIgPSB0aGlzLm9ic2VydmVycy5nZXQoZWwpO1xuICAgIGlmIChvYnNlcnZlcikge1xuICAgICAgb2JzZXJ2ZXIuZGlzY29ubmVjdCgpO1xuICAgICAgdGhpcy5vYnNlcnZlcnMuZGVsZXRlKGVsKTtcbiAgICB9XG5cbiAgICAvLyBDb21wbGV0ZSBhbmQgcmVtb3ZlIHN1YmplY3RcbiAgICBjb25zdCBzdWJqZWN0ID0gdGhpcy5yZXNpemVTdGF0ZXMuZ2V0KGVsKTtcbiAgICBpZiAoc3ViamVjdCkge1xuICAgICAgc3ViamVjdC5jb21wbGV0ZSgpO1xuICAgICAgdGhpcy5yZXNpemVTdGF0ZXMuZGVsZXRlKGVsKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogR2V0IGN1cnJlbnQgc2l6ZSBvZiBlbGVtZW50XG4gICAqIEBwYXJhbSBlbGVtZW50IEVsZW1lbnQgdG8gbWVhc3VyZVxuICAgKi9cbiAgZ2V0Q3VycmVudFNpemUoZWxlbWVudDogRWxlbWVudFJlZjxIVE1MRWxlbWVudD4gfCBIVE1MRWxlbWVudCk6IHtcbiAgICB3aWR0aDogbnVtYmVyO1xuICAgIGhlaWdodDogbnVtYmVyO1xuICB9IHtcbiAgICBjb25zdCBlbCA9IGVsZW1lbnQgaW5zdGFuY2VvZiBFbGVtZW50UmVmID8gZWxlbWVudC5uYXRpdmVFbGVtZW50IDogZWxlbWVudDtcbiAgICByZXR1cm4ge1xuICAgICAgd2lkdGg6IGVsLm9mZnNldFdpZHRoLFxuICAgICAgaGVpZ2h0OiBlbC5vZmZzZXRIZWlnaHQsXG4gICAgfTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXQgY3VycmVudCByZXNpemUgc3RhdGUgb2YgZWxlbWVudFxuICAgKiBAcGFyYW0gZWxlbWVudCBFbGVtZW50IHRvIGNoZWNrXG4gICAqL1xuICBnZXRDdXJyZW50U3RhdGUoXG4gICAgZWxlbWVudDogRWxlbWVudFJlZjxIVE1MRWxlbWVudD4gfCBIVE1MRWxlbWVudFxuICApOiBSZXNpemVTdGF0ZSB8IG51bGwge1xuICAgIGNvbnN0IGVsID0gZWxlbWVudCBpbnN0YW5jZW9mIEVsZW1lbnRSZWYgPyBlbGVtZW50Lm5hdGl2ZUVsZW1lbnQgOiBlbGVtZW50O1xuICAgIGNvbnN0IHN1YmplY3QgPSB0aGlzLnJlc2l6ZVN0YXRlcy5nZXQoZWwpO1xuICAgIHJldHVybiBzdWJqZWN0ID8gc3ViamVjdC52YWx1ZSA6IG51bGw7XG4gIH1cblxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICAvLyBDbGVhciBhbGwgdGltZW91dHNcbiAgICB0aGlzLnJlc2l6ZVRpbWVvdXRzLmZvckVhY2goKHRpbWVvdXQpID0+IGNsZWFyVGltZW91dCh0aW1lb3V0KSk7XG4gICAgdGhpcy5yZXNpemVUaW1lb3V0cy5jbGVhcigpO1xuXG4gICAgLy8gRGlzY29ubmVjdCBhbGwgb2JzZXJ2ZXJzXG4gICAgdGhpcy5vYnNlcnZlcnMuZm9yRWFjaCgob2JzZXJ2ZXIpID0+IG9ic2VydmVyLmRpc2Nvbm5lY3QoKSk7XG4gICAgdGhpcy5vYnNlcnZlcnMuY2xlYXIoKTtcblxuICAgIC8vIENvbXBsZXRlIGFsbCBzdWJqZWN0c1xuICAgIHRoaXMucmVzaXplU3RhdGVzLmZvckVhY2goKHN1YmplY3QpID0+IHN1YmplY3QuY29tcGxldGUoKSk7XG4gICAgdGhpcy5yZXNpemVTdGF0ZXMuY2xlYXIoKTtcblxuICAgIC8vIENvbXBsZXRlIGRlc3Ryb3kgc3ViamVjdFxuICAgIHRoaXMuZGVzdHJveSQubmV4dCgpO1xuICAgIHRoaXMuZGVzdHJveSQuY29tcGxldGUoKTtcbiAgfVxufVxuIl19
@@ -0,0 +1,124 @@
1
+ import { Injectable, ElementRef } from "@angular/core";
2
+ import { Subject, BehaviorSubject, fromEvent, merge, animationFrameScheduler, } from "rxjs";
3
+ import { takeUntil, debounceTime, throttleTime, distinctUntilChanged, map, startWith, } from "rxjs/operators";
4
+ import * as i0 from "@angular/core";
5
+ import * as i1 from "@angular/cdk/scrolling";
6
+ export class ScrollPosition {
7
+ scrollDispatcher;
8
+ viewportRuler;
9
+ ngZone;
10
+ destroy$ = new Subject();
11
+ scrollStateSubject = new BehaviorSubject({
12
+ isAtBottom: true,
13
+ scrollTop: 0,
14
+ scrollHeight: 0,
15
+ clientHeight: 0,
16
+ });
17
+ scrollState$ = this.scrollStateSubject.asObservable();
18
+ constructor(scrollDispatcher, viewportRuler, ngZone) {
19
+ this.scrollDispatcher = scrollDispatcher;
20
+ this.viewportRuler = viewportRuler;
21
+ this.ngZone = ngZone;
22
+ }
23
+ /**
24
+ * Monitor scroll position of an element
25
+ * @param element The element to monitor
26
+ * @param threshold Pixels from bottom to consider "at bottom" (default 10)
27
+ */
28
+ monitorScrollPosition(element, threshold = 10) {
29
+ const el = element instanceof ElementRef ? element.nativeElement : element;
30
+ // Create scroll observable
31
+ const scroll$ = merge(fromEvent(el, "scroll"), this.viewportRuler.change(150) // Monitor viewport changes
32
+ ).pipe(startWith(null), // Emit initial state
33
+ throttleTime(16, animationFrameScheduler, { trailing: true }), // ~60fps
34
+ map(() => this.getScrollState(el, threshold)), distinctUntilChanged((a, b) => a.isAtBottom === b.isAtBottom &&
35
+ a.scrollTop === b.scrollTop &&
36
+ a.scrollHeight === b.scrollHeight), takeUntil(this.destroy$));
37
+ // Subscribe and update subject
38
+ scroll$.subscribe((state) => {
39
+ this.scrollStateSubject.next(state);
40
+ });
41
+ return scroll$;
42
+ }
43
+ /**
44
+ * Scroll element to bottom with smooth animation
45
+ * @param element The element to scroll
46
+ * @param smooth Whether to use smooth scrolling
47
+ */
48
+ scrollToBottom(element, smooth = true) {
49
+ const el = element instanceof ElementRef ? element.nativeElement : element;
50
+ this.ngZone.runOutsideAngular(() => {
51
+ if (smooth && "scrollBehavior" in document.documentElement.style) {
52
+ el.scrollTo({
53
+ top: el.scrollHeight,
54
+ behavior: "smooth",
55
+ });
56
+ }
57
+ else {
58
+ el.scrollTop = el.scrollHeight;
59
+ }
60
+ });
61
+ }
62
+ /**
63
+ * Check if element is at bottom
64
+ * @param element The element to check
65
+ * @param threshold Pixels from bottom to consider "at bottom"
66
+ */
67
+ isAtBottom(element, threshold = 10) {
68
+ const el = element instanceof ElementRef ? element.nativeElement : element;
69
+ return this.getScrollState(el, threshold).isAtBottom;
70
+ }
71
+ /**
72
+ * Get current scroll state of element
73
+ */
74
+ getScrollState(element, threshold) {
75
+ const scrollTop = element.scrollTop;
76
+ const scrollHeight = element.scrollHeight;
77
+ const clientHeight = element.clientHeight;
78
+ const distanceFromBottom = scrollHeight - scrollTop - clientHeight;
79
+ const isAtBottom = distanceFromBottom <= threshold;
80
+ return {
81
+ isAtBottom,
82
+ scrollTop,
83
+ scrollHeight,
84
+ clientHeight,
85
+ };
86
+ }
87
+ /**
88
+ * Create a ResizeObserver for element size changes
89
+ * @param element The element to observe
90
+ * @param debounceMs Debounce time in milliseconds
91
+ */
92
+ observeResize(element, debounceMs = 250) {
93
+ const el = element instanceof ElementRef ? element.nativeElement : element;
94
+ const resize$ = new Subject();
95
+ const resizeObserver = new ResizeObserver((entries) => {
96
+ const entry = entries[0];
97
+ if (entry) {
98
+ this.ngZone.run(() => {
99
+ resize$.next(entry);
100
+ });
101
+ }
102
+ });
103
+ resizeObserver.observe(el);
104
+ // Cleanup on destroy
105
+ this.destroy$.subscribe(() => {
106
+ resizeObserver.disconnect();
107
+ });
108
+ return resize$.pipe(debounceTime(debounceMs), takeUntil(this.destroy$));
109
+ }
110
+ ngOnDestroy() {
111
+ this.destroy$.next();
112
+ this.destroy$.complete();
113
+ this.scrollStateSubject.complete();
114
+ }
115
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ScrollPosition, deps: [{ token: i1.ScrollDispatcher }, { token: i1.ViewportRuler }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Injectable });
116
+ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ScrollPosition, providedIn: "root" });
117
+ }
118
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ScrollPosition, decorators: [{
119
+ type: Injectable,
120
+ args: [{
121
+ providedIn: "root",
122
+ }]
123
+ }], ctorParameters: () => [{ type: i1.ScrollDispatcher }, { type: i1.ViewportRuler }, { type: i0.NgZone }] });
124
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2Nyb2xsLXBvc2l0aW9uLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2xpYi9zY3JvbGwtcG9zaXRpb24udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxVQUFVLEVBQXFCLE1BQU0sZUFBZSxDQUFDO0FBRTFFLE9BQU8sRUFFTCxPQUFPLEVBQ1AsZUFBZSxFQUNmLFNBQVMsRUFDVCxLQUFLLEVBQ0wsdUJBQXVCLEdBQ3hCLE1BQU0sTUFBTSxDQUFDO0FBQ2QsT0FBTyxFQUNMLFNBQVMsRUFDVCxZQUFZLEVBQ1osWUFBWSxFQUNaLG9CQUFvQixFQUNwQixHQUFHLEVBQ0gsU0FBUyxHQUNWLE1BQU0sZ0JBQWdCLENBQUM7OztBQVl4QixNQUFNLE9BQU8sY0FBYztJQVlmO0lBQ0E7SUFDQTtJQWJGLFFBQVEsR0FBRyxJQUFJLE9BQU8sRUFBUSxDQUFDO0lBQy9CLGtCQUFrQixHQUFHLElBQUksZUFBZSxDQUFjO1FBQzVELFVBQVUsRUFBRSxJQUFJO1FBQ2hCLFNBQVMsRUFBRSxDQUFDO1FBQ1osWUFBWSxFQUFFLENBQUM7UUFDZixZQUFZLEVBQUUsQ0FBQztLQUNoQixDQUFDLENBQUM7SUFFSSxZQUFZLEdBQUcsSUFBSSxDQUFDLGtCQUFrQixDQUFDLFlBQVksRUFBRSxDQUFDO0lBRTdELFlBQ1UsZ0JBQWtDLEVBQ2xDLGFBQTRCLEVBQzVCLE1BQWM7UUFGZCxxQkFBZ0IsR0FBaEIsZ0JBQWdCLENBQWtCO1FBQ2xDLGtCQUFhLEdBQWIsYUFBYSxDQUFlO1FBQzVCLFdBQU0sR0FBTixNQUFNLENBQVE7SUFDckIsQ0FBQztJQUVKOzs7O09BSUc7SUFDSCxxQkFBcUIsQ0FDbkIsT0FBOEMsRUFDOUMsWUFBb0IsRUFBRTtRQUV0QixNQUFNLEVBQUUsR0FBRyxPQUFPLFlBQVksVUFBVSxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUM7UUFF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OlsiaW1wb3J0IHsgSW5qZWN0YWJsZSwgRWxlbWVudFJlZiwgTmdab25lLCBPbkRlc3Ryb3kgfSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xuaW1wb3J0IHsgU2Nyb2xsRGlzcGF0Y2hlciwgVmlld3BvcnRSdWxlciB9IGZyb20gXCJAYW5ndWxhci9jZGsvc2Nyb2xsaW5nXCI7XG5pbXBvcnQge1xuICBPYnNlcnZhYmxlLFxuICBTdWJqZWN0LFxuICBCZWhhdmlvclN1YmplY3QsXG4gIGZyb21FdmVudCxcbiAgbWVyZ2UsXG4gIGFuaW1hdGlvbkZyYW1lU2NoZWR1bGVyLFxufSBmcm9tIFwicnhqc1wiO1xuaW1wb3J0IHtcbiAgdGFrZVVudGlsLFxuICBkZWJvdW5jZVRpbWUsXG4gIHRocm90dGxlVGltZSxcbiAgZGlzdGluY3RVbnRpbENoYW5nZWQsXG4gIG1hcCxcbiAgc3RhcnRXaXRoLFxufSBmcm9tIFwicnhqcy9vcGVyYXRvcnNcIjtcblxuZXhwb3J0IGludGVyZmFjZSBTY3JvbGxTdGF0ZSB7XG4gIGlzQXRCb3R0b206IGJvb2xlYW47XG4gIHNjcm9sbFRvcDogbnVtYmVyO1xuICBzY3JvbGxIZWlnaHQ6IG51bWJlcjtcbiAgY2xpZW50SGVpZ2h0OiBudW1iZXI7XG59XG5cbkBJbmplY3RhYmxlKHtcbiAgcHJvdmlkZWRJbjogXCJyb290XCIsXG59KVxuZXhwb3J0IGNsYXNzIFNjcm9sbFBvc2l0aW9uIGltcGxlbWVudHMgT25EZXN0cm95IHtcbiAgcHJpdmF0ZSBkZXN0cm95JCA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XG4gIHByaXZhdGUgc2Nyb2xsU3RhdGVTdWJqZWN0ID0gbmV3IEJlaGF2aW9yU3ViamVjdDxTY3JvbGxTdGF0ZT4oe1xuICAgIGlzQXRCb3R0b206IHRydWUsXG4gICAgc2Nyb2xsVG9wOiAwLFxuICAgIHNjcm9sbEhlaWdodDogMCxcbiAgICBjbGllbnRIZWlnaHQ6IDAsXG4gIH0pO1xuXG4gIHB1YmxpYyBzY3JvbGxTdGF0ZSQgPSB0aGlzLnNjcm9sbFN0YXRlU3ViamVjdC5hc09ic2VydmFibGUoKTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIHNjcm9sbERpc3BhdGNoZXI6IFNjcm9sbERpc3BhdGNoZXIsXG4gICAgcHJpdmF0ZSB2aWV3cG9ydFJ1bGVyOiBWaWV3cG9ydFJ1bGVyLFxuICAgIHByaXZhdGUgbmdab25lOiBOZ1pvbmVcbiAgKSB7fVxuXG4gIC8qKlxuICAgKiBNb25pdG9yIHNjcm9sbCBwb3NpdGlvbiBvZiBhbiBlbGVtZW50XG4gICAqIEBwYXJhbSBlbGVtZW50IFRoZSBlbGVtZW50IHRvIG1vbml0b3JcbiAgICogQHBhcmFtIHRocmVzaG9sZCBQaXhlbHMgZnJvbSBib3R0b20gdG8gY29uc2lkZXIgXCJhdCBib3R0b21cIiAoZGVmYXVsdCAxMClcbiAgICovXG4gIG1vbml0b3JTY3JvbGxQb3NpdGlvbihcbiAgICBlbGVtZW50OiBFbGVtZW50UmVmPEhUTUxFbGVtZW50PiB8IEhUTUxFbGVtZW50LFxuICAgIHRocmVzaG9sZDogbnVtYmVyID0gMTBcbiAgKTogT2JzZXJ2YWJsZTxTY3JvbGxTdGF0ZT4ge1xuICAgIGNvbnN0IGVsID0gZWxlbWVudCBpbnN0YW5jZW9mIEVsZW1lbnRSZWYgPyBlbGVtZW50Lm5hdGl2ZUVsZW1lbnQgOiBlbGVtZW50O1xuXG4gICAgLy8gQ3JlYXRlIHNjcm9sbCBvYnNlcnZhYmxlXG4gICAgY29uc3Qgc2Nyb2xsJCA9IG1lcmdlKFxuICAgICAgZnJvbUV2ZW50KGVsLCBcInNjcm9sbFwiKSxcbiAgICAgIHRoaXMudmlld3BvcnRSdWxlci5jaGFuZ2UoMTUwKSAvLyBNb25pdG9yIHZpZXdwb3J0IGNoYW5nZXNcbiAgICApLnBpcGUoXG4gICAgICBzdGFydFdpdGgobnVsbCksIC8vIEVtaXQgaW5pdGlhbCBzdGF0ZVxuICAgICAgdGhyb3R0bGVUaW1lKDE2LCBhbmltYXRpb25GcmFtZVNjaGVkdWxlciwgeyB0cmFpbGluZzogdHJ1ZSB9KSwgLy8gfjYwZnBzXG4gICAgICBtYXAoKCkgPT4gdGhpcy5nZXRTY3JvbGxTdGF0ZShlbCwgdGhyZXNob2xkKSksXG4gICAgICBkaXN0aW5jdFVudGlsQ2hhbmdlZChcbiAgICAgICAgKGEsIGIpID0+XG4gICAgICAgICAgYS5pc0F0Qm90dG9tID09PSBiLmlzQXRCb3R0b20gJiZcbiAgICAgICAgICBhLnNjcm9sbFRvcCA9PT0gYi5zY3JvbGxUb3AgJiZcbiAgICAgICAgICBhLnNjcm9sbEhlaWdodCA9PT0gYi5zY3JvbGxIZWlnaHRcbiAgICAgICksXG4gICAgICB0YWtlVW50aWwodGhpcy5kZXN0cm95JClcbiAgICApO1xuXG4gICAgLy8gU3Vic2NyaWJlIGFuZCB1cGRhdGUgc3ViamVjdFxuICAgIHNjcm9sbCQuc3Vic2NyaWJlKChzdGF0ZSkgPT4ge1xuICAgICAgdGhpcy5zY3JvbGxTdGF0ZVN1YmplY3QubmV4dChzdGF0ZSk7XG4gICAgfSk7XG5cbiAgICByZXR1cm4gc2Nyb2xsJDtcbiAgfVxuXG4gIC8qKlxuICAgKiBTY3JvbGwgZWxlbWVudCB0byBib3R0b20gd2l0aCBzbW9vdGggYW5pbWF0aW9uXG4gICAqIEBwYXJhbSBlbGVtZW50IFRoZSBlbGVtZW50IHRvIHNjcm9sbFxuICAgKiBAcGFyYW0gc21vb3RoIFdoZXRoZXIgdG8gdXNlIHNtb290aCBzY3JvbGxpbmdcbiAgICovXG4gIHNjcm9sbFRvQm90dG9tKFxuICAgIGVsZW1lbnQ6IEVsZW1lbnRSZWY8SFRNTEVsZW1lbnQ+IHwgSFRNTEVsZW1lbnQsXG4gICAgc21vb3RoOiBib29sZWFuID0gdHJ1ZVxuICApOiB2b2lkIHtcbiAgICBjb25zdCBlbCA9IGVsZW1lbnQgaW5zdGFuY2VvZiBFbGVtZW50UmVmID8gZWxlbWVudC5uYXRpdmVFbGVtZW50IDogZWxlbWVudDtcblxuICAgIHRoaXMubmdab25lLnJ1bk91dHNpZGVBbmd1bGFyKCgpID0+IHtcbiAgICAgIGlmIChzbW9vdGggJiYgXCJzY3JvbGxCZWhhdmlvclwiIGluIGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5zdHlsZSkge1xuICAgICAgICBlbC5zY3JvbGxUbyh7XG4gICAgICAgICAgdG9wOiBlbC5zY3JvbGxIZWlnaHQsXG4gICAgICAgICAgYmVoYXZpb3I6IFwic21vb3RoXCIsXG4gICAgICAgIH0pO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgZWwuc2Nyb2xsVG9wID0gZWwuc2Nyb2xsSGVpZ2h0O1xuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIENoZWNrIGlmIGVsZW1lbnQgaXMgYXQgYm90dG9tXG4gICAqIEBwYXJhbSBlbGVtZW50IFRoZSBlbGVtZW50IHRvIGNoZWNrXG4gICAqIEBwYXJhbSB0aHJlc2hvbGQgUGl4ZWxzIGZyb20gYm90dG9tIHRvIGNvbnNpZGVyIFwiYXQgYm90dG9tXCJcbiAgICovXG4gIGlzQXRCb3R0b20oXG4gICAgZWxlbWVudDogRWxlbWVudFJlZjxIVE1MRWxlbWVudD4gfCBIVE1MRWxlbWVudCxcbiAgICB0aHJlc2hvbGQ6IG51bWJlciA9IDEwXG4gICk6IGJvb2xlYW4ge1xuICAgIGNvbnN0IGVsID0gZWxlbWVudCBpbnN0YW5jZW9mIEVsZW1lbnRSZWYgPyBlbGVtZW50Lm5hdGl2ZUVsZW1lbnQgOiBlbGVtZW50O1xuICAgIHJldHVybiB0aGlzLmdldFNjcm9sbFN0YXRlKGVsLCB0aHJlc2hvbGQpLmlzQXRCb3R0b207XG4gIH1cblxuICAvKipcbiAgICogR2V0IGN1cnJlbnQgc2Nyb2xsIHN0YXRlIG9mIGVsZW1lbnRcbiAgICovXG4gIHB1YmxpYyBnZXRTY3JvbGxTdGF0ZShlbGVtZW50OiBIVE1MRWxlbWVudCwgdGhyZXNob2xkOiBudW1iZXIpOiBTY3JvbGxTdGF0ZSB7XG4gICAgY29uc3Qgc2Nyb2xsVG9wID0gZWxlbWVudC5zY3JvbGxUb3A7XG4gICAgY29uc3Qgc2Nyb2xsSGVpZ2h0ID0gZWxlbWVudC5zY3JvbGxIZWlnaHQ7XG4gICAgY29uc3QgY2xpZW50SGVpZ2h0ID0gZWxlbWVudC5jbGllbnRIZWlnaHQ7XG4gICAgY29uc3QgZGlzdGFuY2VGcm9tQm90dG9tID0gc2Nyb2xsSGVpZ2h0IC0gc2Nyb2xsVG9wIC0gY2xpZW50SGVpZ2h0O1xuICAgIGNvbnN0IGlzQXRCb3R0b20gPSBkaXN0YW5jZUZyb21Cb3R0b20gPD0gdGhyZXNob2xkO1xuXG4gICAgcmV0dXJuIHtcbiAgICAgIGlzQXRCb3R0b20sXG4gICAgICBzY3JvbGxUb3AsXG4gICAgICBzY3JvbGxIZWlnaHQsXG4gICAgICBjbGllbnRIZWlnaHQsXG4gICAgfTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDcmVhdGUgYSBSZXNpemVPYnNlcnZlciBmb3IgZWxlbWVudCBzaXplIGNoYW5nZXNcbiAgICogQHBhcmFtIGVsZW1lbnQgVGhlIGVsZW1lbnQgdG8gb2JzZXJ2ZVxuICAgKiBAcGFyYW0gZGVib3VuY2VNcyBEZWJvdW5jZSB0aW1lIGluIG1pbGxpc2Vjb25kc1xuICAgKi9cbiAgb2JzZXJ2ZVJlc2l6ZShcbiAgICBlbGVtZW50OiBFbGVtZW50UmVmPEhUTUxFbGVtZW50PiB8IEhUTUxFbGVtZW50LFxuICAgIGRlYm91bmNlTXM6IG51bWJlciA9IDI1MFxuICApOiBPYnNlcnZhYmxlPFJlc2l6ZU9ic2VydmVyRW50cnk+IHtcbiAgICBjb25zdCBlbCA9IGVsZW1lbnQgaW5zdGFuY2VvZiBFbGVtZW50UmVmID8gZWxlbWVudC5uYXRpdmVFbGVtZW50IDogZWxlbWVudDtcbiAgICBjb25zdCByZXNpemUkID0gbmV3IFN1YmplY3Q8UmVzaXplT2JzZXJ2ZXJFbnRyeT4oKTtcblxuICAgIGNvbnN0IHJlc2l6ZU9ic2VydmVyID0gbmV3IFJlc2l6ZU9ic2VydmVyKChlbnRyaWVzKSA9PiB7XG4gICAgICBjb25zdCBlbnRyeSA9IGVudHJpZXNbMF07XG4gICAgICBpZiAoZW50cnkpIHtcbiAgICAgICAgdGhpcy5uZ1pvbmUucnVuKCgpID0+IHtcbiAgICAgICAgICByZXNpemUkLm5leHQoZW50cnkpO1xuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIHJlc2l6ZU9ic2VydmVyLm9ic2VydmUoZWwpO1xuXG4gICAgLy8gQ2xlYW51cCBvbiBkZXN0cm95XG4gICAgdGhpcy5kZXN0cm95JC5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgcmVzaXplT2JzZXJ2ZXIuZGlzY29ubmVjdCgpO1xuICAgIH0pO1xuXG4gICAgcmV0dXJuIHJlc2l6ZSQucGlwZShkZWJvdW5jZVRpbWUoZGVib3VuY2VNcyksIHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSk7XG4gIH1cblxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICB0aGlzLmRlc3Ryb3kkLm5leHQoKTtcbiAgICB0aGlzLmRlc3Ryb3kkLmNvbXBsZXRlKCk7XG4gICAgdGhpcy5zY3JvbGxTdGF0ZVN1YmplY3QuY29tcGxldGUoKTtcbiAgfVxufVxuIl19
@@ -0,0 +1,156 @@
1
+ import { Component, TemplateRef, ViewContainerRef, Inject, ChangeDetectionStrategy, input, ViewChild, } from "@angular/core";
2
+ import { CommonModule } from "@angular/common";
3
+ import { renderSlot } from "./slot.utils";
4
+ import * as i0 from "@angular/core";
5
+ import * as i1 from "@angular/common";
6
+ /**
7
+ * @internal - This component is for internal use only.
8
+ * Simple slot component for rendering custom content or defaults.
9
+ * Supports templates and components only.
10
+ *
11
+ * @example
12
+ * ```html
13
+ * <!-- With template -->
14
+ * <copilot-slot [slot]="sendButtonTemplate" [context]="buttonContext">
15
+ * <button class="default-btn">Default</button>
16
+ * </copilot-slot>
17
+ * ```
18
+ */
19
+ export class CopilotSlot {
20
+ viewContainer;
21
+ cdr;
22
+ slot = input(undefined);
23
+ context = input(undefined);
24
+ defaultComponent = input(undefined);
25
+ outputs = input(undefined);
26
+ slotContainer;
27
+ componentRef;
28
+ constructor(viewContainer, cdr) {
29
+ this.viewContainer = viewContainer;
30
+ this.cdr = cdr;
31
+ }
32
+ ngOnInit() {
33
+ this.renderSlot();
34
+ }
35
+ ngOnChanges(changes) {
36
+ if (changes["slot"]) {
37
+ // Slot changed, need to re-render completely
38
+ this.renderSlot();
39
+ }
40
+ else if (changes["context"] && this.componentRef) {
41
+ // Just context changed, update existing component
42
+ this.updateComponentProps();
43
+ this.cdr.detectChanges();
44
+ }
45
+ else if (changes["context"]) {
46
+ // No component ref yet, render the slot
47
+ this.renderSlot();
48
+ }
49
+ }
50
+ isTemplate(value) {
51
+ return value instanceof TemplateRef;
52
+ }
53
+ renderSlot() {
54
+ // Skip if it's a template (handled by ngTemplateOutlet)
55
+ if (this.slot() && this.isTemplate(this.slot())) {
56
+ this.componentRef = null;
57
+ return;
58
+ }
59
+ // Clear previous content
60
+ this.slotContainer.clear();
61
+ this.componentRef = null;
62
+ // Skip if no slot and no default component
63
+ if (!this.slot() && !this.defaultComponent()) {
64
+ return;
65
+ }
66
+ // Use the utility to render other slot types
67
+ if (this.slot() || this.defaultComponent()) {
68
+ this.componentRef = renderSlot(this.slotContainer, {
69
+ slot: this.slot(),
70
+ defaultComponent: this.defaultComponent(),
71
+ props: this.context(),
72
+ outputs: this.outputs(),
73
+ });
74
+ }
75
+ }
76
+ updateComponentProps() {
77
+ if (!this.componentRef || !this.componentRef.instance) {
78
+ return;
79
+ }
80
+ const props = this.context();
81
+ // Update props using setInput, only for declared inputs
82
+ if (props) {
83
+ const ctor = this.componentRef.instance.constructor;
84
+ const cmpDef = ctor?.ɵcmp;
85
+ const declaredInputs = new Set(Object.keys(cmpDef?.inputs ?? {}));
86
+ if (declaredInputs.has("props")) {
87
+ this.componentRef.setInput("props", props);
88
+ }
89
+ else {
90
+ for (const key in props) {
91
+ if (declaredInputs.has(key)) {
92
+ const value = props[key];
93
+ this.componentRef.setInput(key, value);
94
+ }
95
+ }
96
+ }
97
+ }
98
+ // Trigger change detection
99
+ if (this.componentRef.changeDetectorRef) {
100
+ this.componentRef.changeDetectorRef.detectChanges();
101
+ }
102
+ }
103
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: CopilotSlot, deps: [{ token: ViewContainerRef }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
104
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.13", type: CopilotSlot, isStandalone: true, selector: "copilot-slot", inputs: { slot: { classPropertyName: "slot", publicName: "slot", isSignal: true, isRequired: false, transformFunction: null }, context: { classPropertyName: "context", publicName: "context", isSignal: true, isRequired: false, transformFunction: null }, defaultComponent: { classPropertyName: "defaultComponent", publicName: "defaultComponent", isSignal: true, isRequired: false, transformFunction: null }, outputs: { classPropertyName: "outputs", publicName: "outputs", isSignal: true, isRequired: false, transformFunction: null } }, viewQueries: [{ propertyName: "slotContainer", first: true, predicate: ["slotContainer"], descendants: true, read: ViewContainerRef, static: true }], usesOnChanges: true, ngImport: i0, template: `
105
+ <!-- If slot template provided, render it -->
106
+ @if (slot() && isTemplate(slot)) {
107
+ <ng-container
108
+ [ngTemplateOutlet]="slot"
109
+ [ngTemplateOutletContext]="context || {}"
110
+ >
111
+ </ng-container>
112
+ }
113
+
114
+ <!-- If not a template, we'll handle in code -->
115
+ <ng-container #slotContainer></ng-container>
116
+
117
+ <!-- Default content (only shown if no slot) -->
118
+ @if (!slot && !defaultComponent) {
119
+ <ng-content></ng-content>
120
+ }
121
+ `, isInline: true, dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
122
+ }
123
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: CopilotSlot, decorators: [{
124
+ type: Component,
125
+ args: [{
126
+ standalone: true,
127
+ selector: "copilot-slot",
128
+ imports: [CommonModule],
129
+ template: `
130
+ <!-- If slot template provided, render it -->
131
+ @if (slot() && isTemplate(slot)) {
132
+ <ng-container
133
+ [ngTemplateOutlet]="slot"
134
+ [ngTemplateOutletContext]="context || {}"
135
+ >
136
+ </ng-container>
137
+ }
138
+
139
+ <!-- If not a template, we'll handle in code -->
140
+ <ng-container #slotContainer></ng-container>
141
+
142
+ <!-- Default content (only shown if no slot) -->
143
+ @if (!slot && !defaultComponent) {
144
+ <ng-content></ng-content>
145
+ }
146
+ `,
147
+ changeDetection: ChangeDetectionStrategy.OnPush,
148
+ }]
149
+ }], ctorParameters: () => [{ type: i0.ViewContainerRef, decorators: [{
150
+ type: Inject,
151
+ args: [ViewContainerRef]
152
+ }] }, { type: i0.ChangeDetectorRef }], propDecorators: { slotContainer: [{
153
+ type: ViewChild,
154
+ args: ["slotContainer", { read: ViewContainerRef, static: true }]
155
+ }] } });
156
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29waWxvdC1zbG90LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2xpYi9zbG90cy9jb3BpbG90LXNsb3QudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLFNBQVMsRUFDVCxXQUFXLEVBQ1gsZ0JBQWdCLEVBSWhCLE1BQU0sRUFDTix1QkFBdUIsRUFFdkIsS0FBSyxFQUNMLFNBQVMsR0FDVixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGNBQWMsQ0FBQzs7O0FBRzFDOzs7Ozs7Ozs7Ozs7R0FZRztBQXlCSCxNQUFNLE9BQU8sV0FBVztJQVljO0lBQzFCO0lBWlYsSUFBSSxHQUFHLEtBQUssQ0FBMkMsU0FBUyxDQUFDLENBQUM7SUFDbEUsT0FBTyxHQUFHLEtBQUssQ0FBa0IsU0FBUyxDQUFDLENBQUM7SUFDNUMsZ0JBQWdCLEdBQUcsS0FBSyxDQUF3QixTQUFTLENBQUMsQ0FBQztJQUMzRCxPQUFPLEdBQUcsS0FBSyxDQUFtRCxTQUFTLENBQUMsQ0FBQztJQUdyRSxhQUFhLENBQW9CO0lBRWpDLFlBQVksQ0FBTztJQUUzQixZQUNvQyxhQUErQixFQUN6RCxHQUFzQjtRQURJLGtCQUFhLEdBQWIsYUFBYSxDQUFrQjtRQUN6RCxRQUFHLEdBQUgsR0FBRyxDQUFtQjtJQUM3QixDQUFDO0lBRUosUUFBUTtRQUNOLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQztJQUNwQixDQUFDO0lBRUQsV0FBVyxDQUFDLE9BQXNCO1FBQ2hDLElBQUksT0FBTyxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUM7WUFDcEIsNkNBQTZDO1lBQzdDLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQztRQUNwQixDQUFDO2FBQU0sSUFBSSxPQUFPLENBQUMsU0FBUyxDQUFDLElBQUksSUFBSSxDQUFDLFlBQVksRUFBRSxD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QyxJQUFJLENBQUMsWUFBWSxDQUFDLGlCQUFpQixDQUFDLGFBQWEsRUFBRSxDQUFDO1FBQ3RELENBQUM7SUFDSCxDQUFDO3dHQTlGVSxXQUFXLGtCQVlaLGdCQUFnQjs0RkFaZixXQUFXLHlyQkFNYyxnQkFBZ0IsZ0VBMUIxQzs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FpQlQsMkRBbEJTLFlBQVk7OzRGQXFCWCxXQUFXO2tCQXhCdkIsU0FBUzttQkFBQztvQkFDVCxVQUFVLEVBQUUsSUFBSTtvQkFDaEIsUUFBUSxFQUFFLGNBQWM7b0JBQ3hCLE9BQU8sRUFBRSxDQUFDLFlBQVksQ0FBQztvQkFDdkIsUUFBUSxFQUFFOzs7Ozs7Ozs7Ozs7Ozs7OztHQWlCVDtvQkFDRCxlQUFlLEVBQUUsdUJBQXVCLENBQUMsTUFBTTtpQkFDaEQ7OzBCQWFJLE1BQU07MkJBQUMsZ0JBQWdCO3lFQUxsQixhQUFhO3NCQURwQixTQUFTO3VCQUFDLGVBQWUsRUFBRSxFQUFFLElBQUksRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQ29tcG9uZW50LFxuICBUZW1wbGF0ZVJlZixcbiAgVmlld0NvbnRhaW5lclJlZixcbiAgT25Jbml0LFxuICBPbkNoYW5nZXMsXG4gIFNpbXBsZUNoYW5nZXMsXG4gIEluamVjdCxcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gIENoYW5nZURldGVjdG9yUmVmLFxuICBpbnB1dCxcbiAgVmlld0NoaWxkLFxufSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSBcIkBhbmd1bGFyL2NvbW1vblwiO1xuaW1wb3J0IHsgcmVuZGVyU2xvdCB9IGZyb20gXCIuL3Nsb3QudXRpbHNcIjtcbmltcG9ydCB7IFR5cGUgfSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xuXG4vKipcbiAqIEBpbnRlcm5hbCAtIFRoaXMgY29tcG9uZW50IGlzIGZvciBpbnRlcm5hbCB1c2Ugb25seS5cbiAqIFNpbXBsZSBzbG90IGNvbXBvbmVudCBmb3IgcmVuZGVyaW5nIGN1c3RvbSBjb250ZW50IG9yIGRlZmF1bHRzLlxuICogU3VwcG9ydHMgdGVtcGxhdGVzIGFuZCBjb21wb25lbnRzIG9ubHkuXG4gKlxuICogQGV4YW1wbGVcbiAqIGBgYGh0bWxcbiAqIDwhLS0gV2l0aCB0ZW1wbGF0ZSAtLT5cbiAqIDxjb3BpbG90LXNsb3QgW3Nsb3RdPVwic2VuZEJ1dHRvblRlbXBsYXRlXCIgW2NvbnRleHRdPVwiYnV0dG9uQ29udGV4dFwiPlxuICogICA8YnV0dG9uIGNsYXNzPVwiZGVmYXVsdC1idG5cIj5EZWZhdWx0PC9idXR0b24+XG4gKiA8L2NvcGlsb3Qtc2xvdD5cbiAqIGBgYFxuICovXG5AQ29tcG9uZW50KHtcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgc2VsZWN0b3I6IFwiY29waWxvdC1zbG90XCIsXG4gIGltcG9ydHM6IFtDb21tb25Nb2R1bGVdLFxuICB0ZW1wbGF0ZTogYFxuICAgIDwhLS0gSWYgc2xvdCB0ZW1wbGF0ZSBwcm92aWRlZCwgcmVuZGVyIGl0IC0tPlxuICAgIEBpZiAoc2xvdCgpICYmIGlzVGVtcGxhdGUoc2xvdCkpIHtcbiAgICAgIDxuZy1jb250YWluZXJcbiAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRdPVwic2xvdFwiXG4gICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJjb250ZXh0IHx8IHt9XCJcbiAgICAgID5cbiAgICAgIDwvbmctY29udGFpbmVyPlxuICAgIH1cblxuICAgIDwhLS0gSWYgbm90IGEgdGVtcGxhdGUsIHdlJ2xsIGhhbmRsZSBpbiBjb2RlIC0tPlxuICAgIDxuZy1jb250YWluZXIgI3Nsb3RDb250YWluZXI+PC9uZy1jb250YWluZXI+XG5cbiAgICA8IS0tIERlZmF1bHQgY29udGVudCAob25seSBzaG93biBpZiBubyBzbG90KSAtLT5cbiAgICBAaWYgKCFzbG90ICYmICFkZWZhdWx0Q29tcG9uZW50KSB7XG4gICAgICA8bmctY29udGVudD48L25nLWNvbnRlbnQ+XG4gICAgfVxuICBgLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbn0pXG5leHBvcnQgY2xhc3MgQ29waWxvdFNsb3QgaW1wbGVtZW50cyBPbkluaXQsIE9uQ2hhbmdlcyB7XG4gIHNsb3QgPSBpbnB1dDxUZW1wbGF0ZVJlZjxhbnk+IHwgVHlwZTxhbnk+IHwgdW5kZWZpbmVkPih1bmRlZmluZWQpO1xuICBjb250ZXh0ID0gaW5wdXQ8YW55IHwgdW5kZWZpbmVkPih1bmRlZmluZWQpO1xuICBkZWZhdWx0Q29tcG9uZW50ID0gaW5wdXQ8VHlwZTxhbnk+IHwgdW5kZWZpbmVkPih1bmRlZmluZWQpO1xuICBvdXRwdXRzID0gaW5wdXQ8UmVjb3JkPHN0cmluZywgKGV2ZW50OiBhbnkpID0+IHZvaWQ+IHwgdW5kZWZpbmVkPih1bmRlZmluZWQpO1xuXG4gIEBWaWV3Q2hpbGQoXCJzbG90Q29udGFpbmVyXCIsIHsgcmVhZDogVmlld0NvbnRhaW5lclJlZiwgc3RhdGljOiB0cnVlIH0pXG4gIHByaXZhdGUgc2xvdENvbnRhaW5lciE6IFZpZXdDb250YWluZXJSZWY7XG5cbiAgcHJpdmF0ZSBjb21wb25lbnRSZWY/OiBhbnk7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgQEluamVjdChWaWV3Q29udGFpbmVyUmVmKSBwcml2YXRlIHZpZXdDb250YWluZXI6IFZpZXdDb250YWluZXJSZWYsXG4gICAgcHJpdmF0ZSBjZHI6IENoYW5nZURldGVjdG9yUmVmXG4gICkge31cblxuICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLnJlbmRlclNsb3QoKTtcbiAgfVxuXG4gIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpOiB2b2lkIHtcbiAgICBpZiAoY2hhbmdlc1tcInNsb3RcIl0pIHtcbiAgICAgIC8vIFNsb3QgY2hhbmdlZCwgbmVlZCB0byByZS1yZW5kZXIgY29tcGxldGVseVxuICAgICAgdGhpcy5yZW5kZXJTbG90KCk7XG4gICAgfSBlbHNlIGlmIChjaGFuZ2VzW1wiY29udGV4dFwiXSAmJiB0aGlzLmNvbXBvbmVudFJlZikge1xuICAgICAgLy8gSnVzdCBjb250ZXh0IGNoYW5nZWQsIHVwZGF0ZSBleGlzdGluZyBjb21wb25lbnRcbiAgICAgIHRoaXMudXBkYXRlQ29tcG9uZW50UHJvcHMoKTtcbiAgICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcbiAgICB9IGVsc2UgaWYgKGNoYW5nZXNbXCJjb250ZXh0XCJdKSB7XG4gICAgICAvLyBObyBjb21wb25lbnQgcmVmIHlldCwgcmVuZGVyIHRoZSBzbG90XG4gICAgICB0aGlzLnJlbmRlclNsb3QoKTtcbiAgICB9XG4gIH1cblxuICBpc1RlbXBsYXRlKHZhbHVlOiBhbnkpOiB2YWx1ZSBpcyBUZW1wbGF0ZVJlZjxhbnk+IHtcbiAgICByZXR1cm4gdmFsdWUgaW5zdGFuY2VvZiBUZW1wbGF0ZVJlZjtcbiAgfVxuXG4gIHByaXZhdGUgcmVuZGVyU2xvdCgpOiB2b2lkIHtcbiAgICAvLyBTa2lwIGlmIGl0J3MgYSB0ZW1wbGF0ZSAoaGFuZGxlZCBieSBuZ1RlbXBsYXRlT3V0bGV0KVxuICAgIGlmICh0aGlzLnNsb3QoKSAmJiB0aGlzLmlzVGVtcGxhdGUodGhpcy5zbG90KCkpKSB7XG4gICAgICB0aGlzLmNvbXBvbmVudFJlZiA9IG51bGw7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgLy8gQ2xlYXIgcHJldmlvdXMgY29udGVudFxuICAgIHRoaXMuc2xvdENvbnRhaW5lci5jbGVhcigpO1xuICAgIHRoaXMuY29tcG9uZW50UmVmID0gbnVsbDtcblxuICAgIC8vIFNraXAgaWYgbm8gc2xvdCBhbmQgbm8gZGVmYXVsdCBjb21wb25lbnRcbiAgICBpZiAoIXRoaXMuc2xvdCgpICYmICF0aGlzLmRlZmF1bHRDb21wb25lbnQoKSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIC8vIFVzZSB0aGUgdXRpbGl0eSB0byByZW5kZXIgb3RoZXIgc2xvdCB0eXBlc1xuICAgIGlmICh0aGlzLnNsb3QoKSB8fCB0aGlzLmRlZmF1bHRDb21wb25lbnQoKSkge1xuICAgICAgdGhpcy5jb21wb25lbnRSZWYgPSByZW5kZXJTbG90KHRoaXMuc2xvdENvbnRhaW5lciwge1xuICAgICAgICBzbG90OiB0aGlzLnNsb3QoKSxcbiAgICAgICAgZGVmYXVsdENvbXBvbmVudDogdGhpcy5kZWZhdWx0Q29tcG9uZW50KCkhLFxuICAgICAgICBwcm9wczogdGhpcy5jb250ZXh0KCksXG4gICAgICAgIG91dHB1dHM6IHRoaXMub3V0cHV0cygpLFxuICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSB1cGRhdGVDb21wb25lbnRQcm9wcygpOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMuY29tcG9uZW50UmVmIHx8ICF0aGlzLmNvbXBvbmVudFJlZi5pbnN0YW5jZSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IHByb3BzID0gdGhpcy5jb250ZXh0KCk7XG5cbiAgICAvLyBVcGRhdGUgcHJvcHMgdXNpbmcgc2V0SW5wdXQsIG9ubHkgZm9yIGRlY2xhcmVkIGlucHV0c1xuICAgIGlmIChwcm9wcykge1xuICAgICAgY29uc3QgY3RvciA9IHRoaXMuY29tcG9uZW50UmVmLmluc3RhbmNlLmNvbnN0cnVjdG9yIGFzIGFueTtcbiAgICAgIGNvbnN0IGNtcERlZjogYW55ID0gY3Rvcj8uybVjbXA7XG4gICAgICBjb25zdCBkZWNsYXJlZElucHV0cyA9IG5ldyBTZXQ8c3RyaW5nPihPYmplY3Qua2V5cyhjbXBEZWY/LmlucHV0cyA/PyB7fSkpO1xuXG4gICAgICBpZiAoZGVjbGFyZWRJbnB1dHMuaGFzKFwicHJvcHNcIikpIHtcbiAgICAgICAgdGhpcy5jb21wb25lbnRSZWYuc2V0SW5wdXQoXCJwcm9wc1wiLCBwcm9wcyk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBmb3IgKGNvbnN0IGtleSBpbiBwcm9wcykge1xuICAgICAgICAgIGlmIChkZWNsYXJlZElucHV0cy5oYXMoa2V5KSkge1xuICAgICAgICAgICAgY29uc3QgdmFsdWUgPSBwcm9wc1trZXldO1xuICAgICAgICAgICAgdGhpcy5jb21wb25lbnRSZWYuc2V0SW5wdXQoa2V5LCB2YWx1ZSk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgLy8gVHJpZ2dlciBjaGFuZ2UgZGV0ZWN0aW9uXG4gICAgaWYgKHRoaXMuY29tcG9uZW50UmVmLmNoYW5nZURldGVjdG9yUmVmKSB7XG4gICAgICB0aGlzLmNvbXBvbmVudFJlZi5jaGFuZ2VEZXRlY3RvclJlZi5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgfVxuICB9XG59XG4iXX0=
@@ -0,0 +1,4 @@
1
+ export * from "./slot.types";
2
+ export * from "./slot.utils";
3
+ export { CopilotSlot } from "./copilot-slot";
4
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvbGliL3Nsb3RzL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMsY0FBYyxDQUFDO0FBQzdCLGNBQWMsY0FBYyxDQUFDO0FBQzdCLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gXCIuL3Nsb3QudHlwZXNcIjtcbmV4cG9ydCAqIGZyb20gXCIuL3Nsb3QudXRpbHNcIjtcbmV4cG9ydCB7IENvcGlsb3RTbG90IH0gZnJvbSBcIi4vY29waWxvdC1zbG90XCI7XG4iXX0=
@@ -1,6 +1,6 @@
1
- import { InjectionToken } from '@angular/core';
1
+ import { InjectionToken } from "@angular/core";
2
2
  /**
3
3
  * Injection token for slot configuration
4
4
  */
5
- export const SLOT_CONFIG = new InjectionToken('SLOT_CONFIG');
6
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2xvdC50eXBlcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9saWIvc2xvdHMvc2xvdC50eXBlcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQXFCLGNBQWMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQWlEbEU7O0dBRUc7QUFDSCxNQUFNLENBQUMsTUFBTSxXQUFXLEdBQUcsSUFBSSxjQUFjLENBQXlDLGFBQWEsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgVHlwZSwgVGVtcGxhdGVSZWYsIEluamVjdGlvblRva2VuIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbi8qKlxuICogUmVwcmVzZW50cyBhIHZhbHVlIHRoYXQgY2FuIGJlIHVzZWQgYXMgYSBzbG90IG92ZXJyaWRlLlxuICogQ2FuIGJlIGEgY29tcG9uZW50IHR5cGUgb3IgdGVtcGxhdGUgcmVmZXJlbmNlIG9ubHkuXG4gKiBAaW50ZXJuYWwgLSBUaGlzIHR5cGUgaXMgZm9yIGludGVybmFsIHVzZSBvbmx5XG4gKi9cbmV4cG9ydCB0eXBlIFNsb3RWYWx1ZTxUID0gYW55PiA9IFxuICB8IFR5cGU8VD5cbiAgfCBUZW1wbGF0ZVJlZjxUPjtcblxuLyoqXG4gKiBDb25maWd1cmF0aW9uIGZvciBhIHNsb3RcbiAqIEBpbnRlcm5hbCAtIFRoaXMgaW50ZXJmYWNlIGlzIGZvciBpbnRlcm5hbCB1c2Ugb25seVxuICovXG5leHBvcnQgaW50ZXJmYWNlIFNsb3RDb25maWc8VCA9IGFueT4ge1xuICB2YWx1ZT86IFNsb3RWYWx1ZTxUPjtcbiAgZGVmYXVsdD86IFR5cGU8VD47XG59XG5cbi8qKlxuICogQ29udGV4dCBwYXNzZWQgdG8gc2xvdCB0ZW1wbGF0ZXNcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBTbG90Q29udGV4dDxUID0gYW55PiB7XG4gICRpbXBsaWNpdDogVDtcbiAgcHJvcHM/OiBQYXJ0aWFsPFQ+O1xuICBba2V5OiBzdHJpbmddOiBhbnk7XG59XG5cbi8qKlxuICogU2xvdCByZWdpc3RyeSBlbnRyeVxuICogQGludGVybmFsIC0gVGhpcyBpbnRlcmZhY2UgaXMgZm9yIGludGVybmFsIHVzZSBvbmx5XG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgU2xvdFJlZ2lzdHJ5RW50cnk8VCA9IGFueT4ge1xuICBjb21wb25lbnQ/OiBUeXBlPFQ+O1xuICB0ZW1wbGF0ZT86IFRlbXBsYXRlUmVmPFQ+O1xufVxuXG4vKipcbiAqIE9wdGlvbnMgZm9yIHJlbmRlcmluZyBhIHNsb3RcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBSZW5kZXJTbG90T3B0aW9uczxUID0gYW55PiB7XG4gIHNsb3Q/OiBTbG90VmFsdWU8VD47XG4gIGRlZmF1bHRDb21wb25lbnQ6IFR5cGU8VD47XG4gIHByb3BzPzogUGFydGlhbDxUPjtcbiAgaW5qZWN0b3I/OiBhbnk7XG4gIG91dHB1dHM/OiBSZWNvcmQ8c3RyaW5nLCAoZXZlbnQ6IGFueSkgPT4gdm9pZD47XG59XG5cbi8qKlxuICogSW5qZWN0aW9uIHRva2VuIGZvciBzbG90IGNvbmZpZ3VyYXRpb25cbiAqL1xuZXhwb3J0IGNvbnN0IFNMT1RfQ09ORklHID0gbmV3IEluamVjdGlvblRva2VuPFJlYWRvbmx5TWFwPHN0cmluZywgU2xvdFJlZ2lzdHJ5RW50cnk+PignU0xPVF9DT05GSUcnKTtcblxuLyoqXG4gKiBUeXBlIGZvciBjb21wb25lbnRzIHdpdGggc2xvdHNcbiAqL1xuZXhwb3J0IHR5cGUgV2l0aFNsb3RzPFMgZXh0ZW5kcyBSZWNvcmQ8c3RyaW5nLCBUeXBlPGFueT4+LCBSZXN0ID0gb2JqZWN0PiA9IHtcbiAgW0sgaW4ga2V5b2YgUyBhcyBgJHtzdHJpbmcgJiBLfUNvbXBvbmVudGBdPzogVHlwZTxhbnk+O1xufSAmIHtcbiAgW0sgaW4ga2V5b2YgUyBhcyBgJHtzdHJpbmcgJiBLfVRlbXBsYXRlYF0/OiBUZW1wbGF0ZVJlZjxhbnk+O1xufSAmIHtcbiAgW0sgaW4ga2V5b2YgUyBhcyBgJHtzdHJpbmcgJiBLfUNsYXNzYF0/OiBzdHJpbmc7XG59ICYgUmVzdDsiXX0=
5
+ export const SLOT_CONFIG = new InjectionToken("SLOT_CONFIG");
6
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2xvdC50eXBlcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9saWIvc2xvdHMvc2xvdC50eXBlcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQXFCLGNBQWMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQStDbEU7O0dBRUc7QUFDSCxNQUFNLENBQUMsTUFBTSxXQUFXLEdBQUcsSUFBSSxjQUFjLENBRTNDLGFBQWEsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgVHlwZSwgVGVtcGxhdGVSZWYsIEluamVjdGlvblRva2VuIH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcblxuLyoqXG4gKiBSZXByZXNlbnRzIGEgdmFsdWUgdGhhdCBjYW4gYmUgdXNlZCBhcyBhIHNsb3Qgb3ZlcnJpZGUuXG4gKiBDYW4gYmUgYSBjb21wb25lbnQgdHlwZSBvciB0ZW1wbGF0ZSByZWZlcmVuY2Ugb25seS5cbiAqIEBpbnRlcm5hbCAtIFRoaXMgdHlwZSBpcyBmb3IgaW50ZXJuYWwgdXNlIG9ubHlcbiAqL1xuZXhwb3J0IHR5cGUgU2xvdFZhbHVlPFQgPSBhbnk+ID0gVHlwZTxUPiB8IFRlbXBsYXRlUmVmPFQ+O1xuXG4vKipcbiAqIENvbmZpZ3VyYXRpb24gZm9yIGEgc2xvdFxuICogQGludGVybmFsIC0gVGhpcyBpbnRlcmZhY2UgaXMgZm9yIGludGVybmFsIHVzZSBvbmx5XG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgU2xvdENvbmZpZzxUID0gYW55PiB7XG4gIHZhbHVlPzogU2xvdFZhbHVlPFQ+O1xuICBkZWZhdWx0PzogVHlwZTxUPjtcbn1cblxuLyoqXG4gKiBDb250ZXh0IHBhc3NlZCB0byBzbG90IHRlbXBsYXRlc1xuICovXG5leHBvcnQgaW50ZXJmYWNlIFNsb3RDb250ZXh0PFQgPSBhbnk+IHtcbiAgJGltcGxpY2l0OiBUO1xuICBwcm9wcz86IFBhcnRpYWw8VD47XG4gIFtrZXk6IHN0cmluZ106IGFueTtcbn1cblxuLyoqXG4gKiBTbG90IHJlZ2lzdHJ5IGVudHJ5XG4gKiBAaW50ZXJuYWwgLSBUaGlzIGludGVyZmFjZSBpcyBmb3IgaW50ZXJuYWwgdXNlIG9ubHlcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBTbG90UmVnaXN0cnlFbnRyeTxUID0gYW55PiB7XG4gIGNvbXBvbmVudD86IFR5cGU8VD47XG4gIHRlbXBsYXRlPzogVGVtcGxhdGVSZWY8VD47XG59XG5cbi8qKlxuICogT3B0aW9ucyBmb3IgcmVuZGVyaW5nIGEgc2xvdFxuICovXG5leHBvcnQgaW50ZXJmYWNlIFJlbmRlclNsb3RPcHRpb25zPFQgPSBhbnk+IHtcbiAgc2xvdD86IFNsb3RWYWx1ZTxUPjtcbiAgZGVmYXVsdENvbXBvbmVudDogVHlwZTxUPjtcbiAgcHJvcHM/OiBQYXJ0aWFsPFQ+O1xuICBpbmplY3Rvcj86IGFueTtcbiAgb3V0cHV0cz86IFJlY29yZDxzdHJpbmcsIChldmVudDogYW55KSA9PiB2b2lkPjtcbn1cblxuLyoqXG4gKiBJbmplY3Rpb24gdG9rZW4gZm9yIHNsb3QgY29uZmlndXJhdGlvblxuICovXG5leHBvcnQgY29uc3QgU0xPVF9DT05GSUcgPSBuZXcgSW5qZWN0aW9uVG9rZW48XG4gIFJlYWRvbmx5TWFwPHN0cmluZywgU2xvdFJlZ2lzdHJ5RW50cnk+XG4+KFwiU0xPVF9DT05GSUdcIik7XG5cbi8qKlxuICogVHlwZSBmb3IgY29tcG9uZW50cyB3aXRoIHNsb3RzXG4gKi9cbmV4cG9ydCB0eXBlIFdpdGhTbG90czxTIGV4dGVuZHMgUmVjb3JkPHN0cmluZywgVHlwZTxhbnk+PiwgUmVzdCA9IG9iamVjdD4gPSB7XG4gIFtLIGluIGtleW9mIFMgYXMgYCR7c3RyaW5nICYgS31Db21wb25lbnRgXT86IFR5cGU8YW55Pjtcbn0gJiB7XG4gIFtLIGluIGtleW9mIFMgYXMgYCR7c3RyaW5nICYgS31UZW1wbGF0ZWBdPzogVGVtcGxhdGVSZWY8YW55Pjtcbn0gJiB7XG4gIFtLIGluIGtleW9mIFMgYXMgYCR7c3RyaW5nICYgS31DbGFzc2BdPzogc3RyaW5nO1xufSAmIFJlc3Q7XG4iXX0=