@copilotkitnext/angular 0.0.9-alpha.3 → 0.0.10

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 +3 -3
  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
@@ -1,152 +0,0 @@
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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVzaXplLW9ic2VydmVyLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvc2VydmljZXMvcmVzaXplLW9ic2VydmVyLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxVQUFVLEVBQXFCLE1BQU0sZUFBZSxDQUFDO0FBQzFFLE9BQU8sRUFBYyxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQzVELE9BQU8sRUFBRSxZQUFZLEVBQUUsU0FBUyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7O0FBVy9FLE1BQU0sT0FBTyxxQkFBcUI7SUFNWjtJQUxaLFFBQVEsR0FBRyxJQUFJLE9BQU8sRUFBUSxDQUFDO0lBQy9CLFNBQVMsR0FBRyxJQUFJLEdBQUcsRUFBK0IsQ0FBQztJQUNuRCxZQUFZLEdBQUcsSUFBSSxHQUFHLEVBQTZDLENBQUM7SUFDcEUsY0FBYyxHQUFHLElBQUksR0FBRyxFQUF1QixDQUFDO0lBRXhELFlBQW9CLE1BQWM7UUFBZCxXQUFNLEdBQU4sTUFBTSxDQUFRO0lBQUcsQ0FBQztJQUV0Qzs7Ozs7T0FLRztJQUNILGNBQWMsQ0FDWixPQUE4QyxFQUM5QyxhQUFxQixDQUFDLEVBQ3RCLHFCQUE2QixHQUFHO1FBRWhDLE1BQU0sRUFBRSxHQUFHLE9BQU8sWUFBWSxVQUFVLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQztRQUUzRSxnREFBZ0Q7UUFDaEQsSUFBSSxJQUFJLENBQUMsWUFBWSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDO1lBQzlCLE9BQU8sSUFBSSxDQUFDLFlBQVksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFFLENBQUMsWUFBWSxFQUFFLENBQUM7UUFDbkQsQ0FBQztRQUVELHNDQUFzQztRQUN0QyxNQUFNLFlBQVksR0FBRyxJQUFJ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RUFBRSxNQUFNO2lCQUNuQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUsIEVsZW1lbnRSZWYsIE5nWm9uZSwgT25EZXN0cm95IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBPYnNlcnZhYmxlLCBTdWJqZWN0LCBCZWhhdmlvclN1YmplY3QgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IGRlYm91bmNlVGltZSwgdGFrZVVudGlsLCBkaXN0aW5jdFVudGlsQ2hhbmdlZCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcblxuZXhwb3J0IGludGVyZmFjZSBSZXNpemVTdGF0ZSB7XG4gIHdpZHRoOiBudW1iZXI7XG4gIGhlaWdodDogbnVtYmVyO1xuICBpc1Jlc2l6aW5nOiBib29sZWFuO1xufVxuXG5ASW5qZWN0YWJsZSh7XG4gIHByb3ZpZGVkSW46ICdyb290J1xufSlcbmV4cG9ydCBjbGFzcyBSZXNpemVPYnNlcnZlclNlcnZpY2UgaW1wbGVtZW50cyBPbkRlc3Ryb3kge1xuICBwcml2YXRlIGRlc3Ryb3kkID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcbiAgcHJpdmF0ZSBvYnNlcnZlcnMgPSBuZXcgTWFwPEhUTUxFbGVtZW50LCBSZXNpemVPYnNlcnZlcj4oKTtcbiAgcHJpdmF0ZSByZXNpemVTdGF0ZXMgPSBuZXcgTWFwPEhUTUxFbGVtZW50LCBCZWhhdmlvclN1YmplY3Q8UmVzaXplU3RhdGU+PigpO1xuICBwcml2YXRlIHJlc2l6ZVRpbWVvdXRzID0gbmV3IE1hcDxIVE1MRWxlbWVudCwgbnVtYmVyPigpO1xuICBcbiAgY29uc3RydWN0b3IocHJpdmF0ZSBuZ1pvbmU6IE5nWm9uZSkge31cbiAgXG4gIC8qKlxuICAgKiBPYnNlcnZlIGVsZW1lbnQgcmVzaXplIHdpdGggZGVib3VuY2luZyBhbmQgcmVzaXppbmcgc3RhdGVcbiAgICogQHBhcmFtIGVsZW1lbnQgRWxlbWVudCB0byBvYnNlcnZlXG4gICAqIEBwYXJhbSBkZWJvdW5jZU1zIERlYm91bmNlIHRpbWUgKGRlZmF1bHQgMjUwbXMpXG4gICAqIEBwYXJhbSByZXNpemluZ0R1cmF0aW9uTXMgSG93IGxvbmcgdG8gc2hvdyBcImlzUmVzaXppbmdcIiBzdGF0ZSAoZGVmYXVsdCAyNTBtcylcbiAgICovXG4gIG9ic2VydmVFbGVtZW50KFxuICAgIGVsZW1lbnQ6IEVsZW1lbnRSZWY8SFRNTEVsZW1lbnQ+IHwgSFRNTEVsZW1lbnQsXG4gICAgZGVib3VuY2VNczogbnVtYmVyID0gMCxcbiAgICByZXNpemluZ0R1cmF0aW9uTXM6IG51bWJlciA9IDI1MFxuICApOiBPYnNlcnZhYmxlPFJlc2l6ZVN0YXRlPiB7XG4gICAgY29uc3QgZWwgPSBlbGVtZW50IGluc3RhbmNlb2YgRWxlbWVudFJlZiA/IGVsZW1lbnQubmF0aXZlRWxlbWVudCA6IGVsZW1lbnQ7XG4gICAgXG4gICAgLy8gUmV0dXJuIGV4aXN0aW5nIG9ic2VydmVyIGlmIGFscmVhZHkgb2JzZXJ2aW5nXG4gICAgaWYgKHRoaXMucmVzaXplU3RhdGVzLmhhcyhlbCkpIHtcbiAgICAgIHJldHVybiB0aGlzLnJlc2l6ZVN0YXRlcy5nZXQoZWwpIS5hc09ic2VydmFibGUoKTtcbiAgICB9XG4gICAgXG4gICAgLy8gQ3JlYXRlIG5ldyBzdWJqZWN0IGZvciB0aGlzIGVsZW1lbnRcbiAgICBjb25zdCByZXNpemVTdGF0ZSQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PFJlc2l6ZVN0YXRlPih7XG4gICAgICB3aWR0aDogZWwub2Zmc2V0V2lkdGgsXG4gICAgICBoZWlnaHQ6IGVsLm9mZnNldEhlaWdodCxcbiAgICAgIGlzUmVzaXppbmc6IGZhbHNlXG4gICAgfSk7XG4gICAgXG4gICAgdGhpcy5yZXNpemVTdGF0ZXMuc2V0KGVsLCByZXNpemVTdGF0ZSQpO1xuICAgIFxuICAgIC8vIENyZWF0ZSBSZXNpemVPYnNlcnZlclxuICAgIGNvbnN0IHJlc2l6ZU9ic2VydmVyID0gbmV3IFJlc2l6ZU9ic2VydmVyKChlbnRyaWVzKSA9PiB7XG4gICAgICBpZiAoZW50cmllcy5sZW5ndGggPT09IDApIHJldHVybjtcbiAgICAgIFxuICAgICAgY29uc3QgZW50cnkgPSBlbnRyaWVzWzBdO1xuICAgICAgaWYgKCFlbnRyeSkgcmV0dXJuO1xuICAgICAgXG4gICAgICBjb25zdCB7IHdpZHRoLCBoZWlnaHQgfSA9IGVudHJ5LmNvbnRlbnRSZWN0O1xuICAgICAgXG4gICAgICB0aGlzLm5nWm9uZS5ydW4oKCkgPT4ge1xuICAgICAgICAvLyBDbGVhciBleGlzdGluZyB0aW1lb3V0XG4gICAgICAgIGNvbnN0IGV4aXN0aW5nVGltZW91dCA9IHRoaXMucmVzaXplVGltZW91dHMuZ2V0KGVsKTtcbiAgICAgICAgaWYgKGV4aXN0aW5nVGltZW91dCkge1xuICAgICAgICAgIGNsZWFyVGltZW91dChleGlzdGluZ1RpbWVvdXQpO1xuICAgICAgICB9XG4gICAgICAgIFxuICAgICAgICAvLyBVcGRhdGUgc3RhdGUgd2l0aCBpc1Jlc2l6aW5nID0gdHJ1ZVxuICAgICAgICByZXNpemVTdGF0ZSQubmV4dCh7XG4gICAgICAgICAgd2lkdGgsXG4gICAgICAgICAgaGVpZ2h0LFxuICAgICAgICAgIGlzUmVzaXppbmc6IHRydWVcbiAgICAgICAgfSk7XG4gICAgICAgIFxuICAgICAgICAvLyBTZXQgdGltZW91dCB0byBjbGVhciBpc1Jlc2l6aW5nIGZsYWdcbiAgICAgICAgaWYgKHJlc2l6aW5nRHVyYXRpb25NcyA+IDApIHtcbiAgICAgICAgICBjb25zdCB0aW1lb3V0ID0gd2luZG93LnNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgcmVzaXplU3RhdGUkLm5leHQoe1xuICAgICAgICAgICAgICB3aWR0aCxcbiAgICAgICAgICAgICAgaGVpZ2h0LFxuICAgICAgICAgICAgICBpc1Jlc2l6aW5nOiBmYWxzZVxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB0aGlzLnJlc2l6ZVRpbWVvdXRzLmRlbGV0ZShlbCk7XG4gICAgICAgICAgfSwgcmVzaXppbmdEdXJhdGlvbk1zKTtcbiAgICAgICAgICBcbiAgICAgICAgICB0aGlzLnJlc2l6ZVRpbWVvdXRzLnNldChlbCwgdGltZW91dCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgLy8gSWYgbm8gZHVyYXRpb24sIGltbWVkaWF0ZWx5IHNldCBpc1Jlc2l6aW5nIHRvIGZhbHNlXG4gICAgICAgICAgcmVzaXplU3RhdGUkLm5leHQoe1xuICAgICAgICAgICAgd2lkdGgsXG4gICAgICAgICAgICBoZWlnaHQsXG4gICAgICAgICAgICBpc1Jlc2l6aW5nOiBmYWxzZVxuICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9KTtcbiAgICBcbiAgICAvLyBTdGFydCBvYnNlcnZpbmdcbiAgICByZXNpemVPYnNlcnZlci5vYnNlcnZlKGVsKTtcbiAgICB0aGlzLm9ic2VydmVycy5zZXQoZWwsIHJlc2l6ZU9ic2VydmVyKTtcbiAgICBcbiAgICAvLyBSZXR1cm4gb2JzZXJ2YWJsZSB3aXRoIGRlYm91bmNpbmcgaWYgc3BlY2lmaWVkXG4gICAgY29uc3Qgb2JzZXJ2YWJsZSA9IHJlc2l6ZVN0YXRlJC5hc09ic2VydmFibGUoKS5waXBlKFxuICAgICAgZGVib3VuY2VNcyA+IDAgPyBkZWJvdW5jZVRpbWUoZGVib3VuY2VNcykgOiAoc291cmNlKSA9PiBzb3VyY2UsXG4gICAgICBkaXN0aW5jdFVudGlsQ2hhbmdlZCgoYSwgYikgPT4gXG4gICAgICAgIGEud2lkdGggPT09IGIud2lkdGggJiYgXG4gICAgICAgIGEuaGVpZ2h0ID09PSBiLmhlaWdodCAmJiBcbiAgICAgICAgYS5pc1Jlc2l6aW5nID09PSBiLmlzUmVzaXppbmdcbiAgICAgICksXG4gICAgICB0YWtlVW50aWwodGhpcy5kZXN0cm95JClcbiAgICApO1xuICAgIFxuICAgIHJldHVybiBvYnNlcnZhYmxlO1xuICB9XG4gIFxuICAvKipcbiAgICogU3RvcCBvYnNlcnZpbmcgYW4gZWxlbWVudFxuICAgKiBAcGFyYW0gZWxlbWVudCBFbGVtZW50IHRvIHN0b3Agb2JzZXJ2aW5nXG4gICAqL1xuICB1bm9ic2VydmUoZWxlbWVudDogRWxlbWVudFJlZjxIVE1MRWxlbWVudD4gfCBIVE1MRWxlbWVudCk6IHZvaWQge1xuICAgIGNvbnN0IGVsID0gZWxlbWVudCBpbnN0YW5jZW9mIEVsZW1lbnRSZWYgPyBlbGVtZW50Lm5hdGl2ZUVsZW1lbnQgOiBlbGVtZW50O1xuICAgIFxuICAgIC8vIENsZWFyIHRpbWVvdXQgaWYgZXhpc3RzXG4gICAgY29uc3QgdGltZW91dCA9IHRoaXMucmVzaXplVGltZW91dHMuZ2V0KGVsKTtcbiAgICBpZiAodGltZW91dCkge1xuICAgICAgY2xlYXJUaW1lb3V0KHRpbWVvdXQpO1xuICAgICAgdGhpcy5yZXNpemVUaW1lb3V0cy5kZWxldGUoZWwpO1xuICAgIH1cbiAgICBcbiAgICAvLyBEaXNjb25uZWN0IG9ic2VydmVyXG4gICAgY29uc3Qgb2JzZXJ2ZXIgPSB0aGlzLm9ic2VydmVycy5nZXQoZWwpO1xuICAgIGlmIChvYnNlcnZlcikge1xuICAgICAgb2JzZXJ2ZXIuZGlzY29ubmVjdCgpO1xuICAgICAgdGhpcy5vYnNlcnZlcnMuZGVsZXRlKGVsKTtcbiAgICB9XG4gICAgXG4gICAgLy8gQ29tcGxldGUgYW5kIHJlbW92ZSBzdWJqZWN0XG4gICAgY29uc3Qgc3ViamVjdCA9IHRoaXMucmVzaXplU3RhdGVzLmdldChlbCk7XG4gICAgaWYgKHN1YmplY3QpIHtcbiAgICAgIHN1YmplY3QuY29tcGxldGUoKTtcbiAgICAgIHRoaXMucmVzaXplU3RhdGVzLmRlbGV0ZShlbCk7XG4gICAgfVxuICB9XG4gIFxuICAvKipcbiAgICogR2V0IGN1cnJlbnQgc2l6ZSBvZiBlbGVtZW50XG4gICAqIEBwYXJhbSBlbGVtZW50IEVsZW1lbnQgdG8gbWVhc3VyZVxuICAgKi9cbiAgZ2V0Q3VycmVudFNpemUoZWxlbWVudDogRWxlbWVudFJlZjxIVE1MRWxlbWVudD4gfCBIVE1MRWxlbWVudCk6IHsgd2lkdGg6IG51bWJlcjsgaGVpZ2h0OiBudW1iZXIgfSB7XG4gICAgY29uc3QgZWwgPSBlbGVtZW50IGluc3RhbmNlb2YgRWxlbWVudFJlZiA/IGVsZW1lbnQubmF0aXZlRWxlbWVudCA6IGVsZW1lbnQ7XG4gICAgcmV0dXJuIHtcbiAgICAgIHdpZHRoOiBlbC5vZmZzZXRXaWR0aCxcbiAgICAgIGhlaWdodDogZWwub2Zmc2V0SGVpZ2h0XG4gICAgfTtcbiAgfVxuICBcbiAgLyoqXG4gICAqIEdldCBjdXJyZW50IHJlc2l6ZSBzdGF0ZSBvZiBlbGVtZW50XG4gICAqIEBwYXJhbSBlbGVtZW50IEVsZW1lbnQgdG8gY2hlY2tcbiAgICovXG4gIGdldEN1cnJlbnRTdGF0ZShlbGVtZW50OiBFbGVtZW50UmVmPEhUTUxFbGVtZW50PiB8IEhUTUxFbGVtZW50KTogUmVzaXplU3RhdGUgfCBudWxsIHtcbiAgICBjb25zdCBlbCA9IGVsZW1lbnQgaW5zdGFuY2VvZiBFbGVtZW50UmVmID8gZWxlbWVudC5uYXRpdmVFbGVtZW50IDogZWxlbWVudDtcbiAgICBjb25zdCBzdWJqZWN0ID0gdGhpcy5yZXNpemVTdGF0ZXMuZ2V0KGVsKTtcbiAgICByZXR1cm4gc3ViamVjdCA/IHN1YmplY3QudmFsdWUgOiBudWxsO1xuICB9XG4gIFxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICAvLyBDbGVhciBhbGwgdGltZW91dHNcbiAgICB0aGlzLnJlc2l6ZVRpbWVvdXRzLmZvckVhY2godGltZW91dCA9PiBjbGVhclRpbWVvdXQodGltZW91dCkpO1xuICAgIHRoaXMucmVzaXplVGltZW91dHMuY2xlYXIoKTtcbiAgICBcbiAgICAvLyBEaXNjb25uZWN0IGFsbCBvYnNlcnZlcnNcbiAgICB0aGlzLm9ic2VydmVycy5mb3JFYWNoKG9ic2VydmVyID0+IG9ic2VydmVyLmRpc2Nvbm5lY3QoKSk7XG4gICAgdGhpcy5vYnNlcnZlcnMuY2xlYXIoKTtcbiAgICBcbiAgICAvLyBDb21wbGV0ZSBhbGwgc3ViamVjdHNcbiAgICB0aGlzLnJlc2l6ZVN0YXRlcy5mb3JFYWNoKHN1YmplY3QgPT4gc3ViamVjdC5jb21wbGV0ZSgpKTtcbiAgICB0aGlzLnJlc2l6ZVN0YXRlcy5jbGVhcigpO1xuICAgIFxuICAgIC8vIENvbXBsZXRlIGRlc3Ryb3kgc3ViamVjdFxuICAgIHRoaXMuZGVzdHJveSQubmV4dCgpO1xuICAgIHRoaXMuZGVzdHJveSQuY29tcGxldGUoKTtcbiAgfVxufSJdfQ==
@@ -1,124 +0,0 @@
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 ScrollPositionService {
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: ScrollPositionService, 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: ScrollPositionService, providedIn: 'root' });
117
- }
118
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ScrollPositionService, 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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2Nyb2xsLXBvc2l0aW9uLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvc2VydmljZXMvc2Nyb2xsLXBvc2l0aW9uLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxVQUFVLEVBQXFCLE1BQU0sZUFBZSxDQUFDO0FBRTFFLE9BQU8sRUFBYyxPQUFPLEVBQUUsZUFBZSxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDdkcsT0FBTyxFQUNMLFNBQVMsRUFDVCxZQUFZLEVBQ1osWUFBWSxFQUNaLG9CQUFvQixFQUNwQixHQUFHLEVBRUgsU0FBUyxFQUNWLE1BQU0sZ0JBQWdCLENBQUM7OztBQVl4QixNQUFNLE9BQU8scUJBQXFCO0lBWXRCO0lBQ0E7SUFDQTtJQWJGLFFBQVEsR0FBRyxJQUFJLE9BQU8sRUFBUSxDQUFDO0lBQy9CLGtCQUFrQixHQUFHLElBQUksZUFBZSxDQUFjO1FBQzVELFVBQVUsRUFBRSxJQUFJO1FBQ2hCLFNBQVMsRUFBRSxDQUFDO1FBQ1osWUFBWSxFQUFFLENBQUM7UUFDZixZQUFZLEVBQUUsQ0FBQztLQUNoQixDQUFDLENBQUM7SUFFSSxZQUFZLEdBQUcsSUFBSSxDQUFDLGtCQUFrQixDQUFDLFlBQVksRUFBRSxDQUFDO0lBRTdELFlBQ1UsZ0JBQWtDLEVBQ2xDLGFBQTRCLEVBQzVCLE1BQWM7UUFGZCxxQkFBZ0IsR0FBaEIsZ0JBQWdCLENBQWtCO1FBQ2xDLGtCQUFhLEdBQWIsYUFBYSxDQUFlO1FBQzVCLFdBQU0sR0FBTixNQUFNLENBQVE7SUFDckIsQ0FBQztJQUVKOzs7O09BSUc7SUFDSCxxQkFBcUIsQ0FDbkIsT0FBOEMsRUFDOUMsWUFBb0IsRUFBRTtRQUV0QixNQUFNLEVBQUUsR0FBRyxPQUFPLFlBQVksVUFBVSxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsYUFBYSxDQUFD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TUFBTTtpQkFDbkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlLCBFbGVtZW50UmVmLCBOZ1pvbmUsIE9uRGVzdHJveSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgU2Nyb2xsRGlzcGF0Y2hlciwgVmlld3BvcnRSdWxlciB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9zY3JvbGxpbmcnO1xuaW1wb3J0IHsgT2JzZXJ2YWJsZSwgU3ViamVjdCwgQmVoYXZpb3JTdWJqZWN0LCBmcm9tRXZlbnQsIG1lcmdlLCBhbmltYXRpb25GcmFtZVNjaGVkdWxlciB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgXG4gIHRha2VVbnRpbCwgXG4gIGRlYm91bmNlVGltZSwgXG4gIHRocm90dGxlVGltZSwgXG4gIGRpc3RpbmN0VW50aWxDaGFuZ2VkLFxuICBtYXAsXG4gIG9ic2VydmVPbixcbiAgc3RhcnRXaXRoXG59IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcblxuZXhwb3J0IGludGVyZmFjZSBTY3JvbGxTdGF0ZSB7XG4gIGlzQXRCb3R0b206IGJvb2xlYW47XG4gIHNjcm9sbFRvcDogbnVtYmVyO1xuICBzY3JvbGxIZWlnaHQ6IG51bWJlcjtcbiAgY2xpZW50SGVpZ2h0OiBudW1iZXI7XG59XG5cbkBJbmplY3RhYmxlKHtcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnXG59KVxuZXhwb3J0IGNsYXNzIFNjcm9sbFBvc2l0aW9uU2VydmljZSBpbXBsZW1lbnRzIE9uRGVzdHJveSB7XG4gIHByaXZhdGUgZGVzdHJveSQgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xuICBwcml2YXRlIHNjcm9sbFN0YXRlU3ViamVjdCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8U2Nyb2xsU3RhdGU+KHtcbiAgICBpc0F0Qm90dG9tOiB0cnVlLFxuICAgIHNjcm9sbFRvcDogMCxcbiAgICBzY3JvbGxIZWlnaHQ6IDAsXG4gICAgY2xpZW50SGVpZ2h0OiAwXG4gIH0pO1xuICBcbiAgcHVibGljIHNjcm9sbFN0YXRlJCA9IHRoaXMuc2Nyb2xsU3RhdGVTdWJqZWN0LmFzT2JzZXJ2YWJsZSgpO1xuICBcbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBzY3JvbGxEaXNwYXRjaGVyOiBTY3JvbGxEaXNwYXRjaGVyLFxuICAgIHByaXZhdGUgdmlld3BvcnRSdWxlcjogVmlld3BvcnRSdWxlcixcbiAgICBwcml2YXRlIG5nWm9uZTogTmdab25lXG4gICkge31cbiAgXG4gIC8qKlxuICAgKiBNb25pdG9yIHNjcm9sbCBwb3NpdGlvbiBvZiBhbiBlbGVtZW50XG4gICAqIEBwYXJhbSBlbGVtZW50IFRoZSBlbGVtZW50IHRvIG1vbml0b3JcbiAgICogQHBhcmFtIHRocmVzaG9sZCBQaXhlbHMgZnJvbSBib3R0b20gdG8gY29uc2lkZXIgXCJhdCBib3R0b21cIiAoZGVmYXVsdCAxMClcbiAgICovXG4gIG1vbml0b3JTY3JvbGxQb3NpdGlvbihcbiAgICBlbGVtZW50OiBFbGVtZW50UmVmPEhUTUxFbGVtZW50PiB8IEhUTUxFbGVtZW50LFxuICAgIHRocmVzaG9sZDogbnVtYmVyID0gMTBcbiAgKTogT2JzZXJ2YWJsZTxTY3JvbGxTdGF0ZT4ge1xuICAgIGNvbnN0IGVsID0gZWxlbWVudCBpbnN0YW5jZW9mIEVsZW1lbnRSZWYgPyBlbGVtZW50Lm5hdGl2ZUVsZW1lbnQgOiBlbGVtZW50O1xuICAgIFxuICAgIC8vIENyZWF0ZSBzY3JvbGwgb2JzZXJ2YWJsZVxuICAgIGNvbnN0IHNjcm9sbCQgPSBtZXJnZShcbiAgICAgIGZyb21FdmVudChlbCwgJ3Njcm9sbCcpLFxuICAgICAgdGhpcy52aWV3cG9ydFJ1bGVyLmNoYW5nZSgxNTApIC8vIE1vbml0b3Igdmlld3BvcnQgY2hhbmdlc1xuICAgICkucGlwZShcbiAgICAgIHN0YXJ0V2l0aChudWxsKSwgLy8gRW1pdCBpbml0aWFsIHN0YXRlXG4gICAgICB0aHJvdHRsZVRpbWUoMTYsIGFuaW1hdGlvbkZyYW1lU2NoZWR1bGVyLCB7IHRyYWlsaW5nOiB0cnVlIH0pLCAvLyB+NjBmcHNcbiAgICAgIG1hcCgoKSA9PiB0aGlzLmdldFNjcm9sbFN0YXRlKGVsLCB0aHJlc2hvbGQpKSxcbiAgICAgIGRpc3RpbmN0VW50aWxDaGFuZ2VkKChhLCBiKSA9PiBcbiAgICAgICAgYS5pc0F0Qm90dG9tID09PSBiLmlzQXRCb3R0b20gJiYgXG4gICAgICAgIGEuc2Nyb2xsVG9wID09PSBiLnNjcm9sbFRvcCAmJlxuICAgICAgICBhLnNjcm9sbEhlaWdodCA9PT0gYi5zY3JvbGxIZWlnaHRcbiAgICAgICksXG4gICAgICB0YWtlVW50aWwodGhpcy5kZXN0cm95JClcbiAgICApO1xuICAgIFxuICAgIC8vIFN1YnNjcmliZSBhbmQgdXBkYXRlIHN1YmplY3RcbiAgICBzY3JvbGwkLnN1YnNjcmliZShzdGF0ZSA9PiB7XG4gICAgICB0aGlzLnNjcm9sbFN0YXRlU3ViamVjdC5uZXh0KHN0YXRlKTtcbiAgICB9KTtcbiAgICBcbiAgICByZXR1cm4gc2Nyb2xsJDtcbiAgfVxuICBcbiAgLyoqXG4gICAqIFNjcm9sbCBlbGVtZW50IHRvIGJvdHRvbSB3aXRoIHNtb290aCBhbmltYXRpb25cbiAgICogQHBhcmFtIGVsZW1lbnQgVGhlIGVsZW1lbnQgdG8gc2Nyb2xsXG4gICAqIEBwYXJhbSBzbW9vdGggV2hldGhlciB0byB1c2Ugc21vb3RoIHNjcm9sbGluZ1xuICAgKi9cbiAgc2Nyb2xsVG9Cb3R0b20oXG4gICAgZWxlbWVudDogRWxlbWVudFJlZjxIVE1MRWxlbWVudD4gfCBIVE1MRWxlbWVudCxcbiAgICBzbW9vdGg6IGJvb2xlYW4gPSB0cnVlXG4gICk6IHZvaWQge1xuICAgIGNvbnN0IGVsID0gZWxlbWVudCBpbnN0YW5jZW9mIEVsZW1lbnRSZWYgPyBlbGVtZW50Lm5hdGl2ZUVsZW1lbnQgOiBlbGVtZW50O1xuICAgIFxuICAgIHRoaXMubmdab25lLnJ1bk91dHNpZGVBbmd1bGFyKCgpID0+IHtcbiAgICAgIGlmIChzbW9vdGggJiYgJ3Njcm9sbEJlaGF2aW9yJyBpbiBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuc3R5bGUpIHtcbiAgICAgICAgZWwuc2Nyb2xsVG8oe1xuICAgICAgICAgIHRvcDogZWwuc2Nyb2xsSGVpZ2h0LFxuICAgICAgICAgIGJlaGF2aW9yOiAnc21vb3RoJ1xuICAgICAgICB9KTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGVsLnNjcm9sbFRvcCA9IGVsLnNjcm9sbEhlaWdodDtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuICBcbiAgLyoqXG4gICAqIENoZWNrIGlmIGVsZW1lbnQgaXMgYXQgYm90dG9tXG4gICAqIEBwYXJhbSBlbGVtZW50IFRoZSBlbGVtZW50IHRvIGNoZWNrXG4gICAqIEBwYXJhbSB0aHJlc2hvbGQgUGl4ZWxzIGZyb20gYm90dG9tIHRvIGNvbnNpZGVyIFwiYXQgYm90dG9tXCJcbiAgICovXG4gIGlzQXRCb3R0b20oXG4gICAgZWxlbWVudDogRWxlbWVudFJlZjxIVE1MRWxlbWVudD4gfCBIVE1MRWxlbWVudCxcbiAgICB0aHJlc2hvbGQ6IG51bWJlciA9IDEwXG4gICk6IGJvb2xlYW4ge1xuICAgIGNvbnN0IGVsID0gZWxlbWVudCBpbnN0YW5jZW9mIEVsZW1lbnRSZWYgPyBlbGVtZW50Lm5hdGl2ZUVsZW1lbnQgOiBlbGVtZW50O1xuICAgIHJldHVybiB0aGlzLmdldFNjcm9sbFN0YXRlKGVsLCB0aHJlc2hvbGQpLmlzQXRCb3R0b207XG4gIH1cbiAgXG4gIC8qKlxuICAgKiBHZXQgY3VycmVudCBzY3JvbGwgc3RhdGUgb2YgZWxlbWVudFxuICAgKi9cbiAgcHVibGljIGdldFNjcm9sbFN0YXRlKGVsZW1lbnQ6IEhUTUxFbGVtZW50LCB0aHJlc2hvbGQ6IG51bWJlcik6IFNjcm9sbFN0YXRlIHtcbiAgICBjb25zdCBzY3JvbGxUb3AgPSBlbGVtZW50LnNjcm9sbFRvcDtcbiAgICBjb25zdCBzY3JvbGxIZWlnaHQgPSBlbGVtZW50LnNjcm9sbEhlaWdodDtcbiAgICBjb25zdCBjbGllbnRIZWlnaHQgPSBlbGVtZW50LmNsaWVudEhlaWdodDtcbiAgICBjb25zdCBkaXN0YW5jZUZyb21Cb3R0b20gPSBzY3JvbGxIZWlnaHQgLSBzY3JvbGxUb3AgLSBjbGllbnRIZWlnaHQ7XG4gICAgY29uc3QgaXNBdEJvdHRvbSA9IGRpc3RhbmNlRnJvbUJvdHRvbSA8PSB0aHJlc2hvbGQ7XG4gICAgXG4gICAgcmV0dXJuIHtcbiAgICAgIGlzQXRCb3R0b20sXG4gICAgICBzY3JvbGxUb3AsXG4gICAgICBzY3JvbGxIZWlnaHQsXG4gICAgICBjbGllbnRIZWlnaHRcbiAgICB9O1xuICB9XG4gIFxuICAvKipcbiAgICogQ3JlYXRlIGEgUmVzaXplT2JzZXJ2ZXIgZm9yIGVsZW1lbnQgc2l6ZSBjaGFuZ2VzXG4gICAqIEBwYXJhbSBlbGVtZW50IFRoZSBlbGVtZW50IHRvIG9ic2VydmVcbiAgICogQHBhcmFtIGRlYm91bmNlTXMgRGVib3VuY2UgdGltZSBpbiBtaWxsaXNlY29uZHNcbiAgICovXG4gIG9ic2VydmVSZXNpemUoXG4gICAgZWxlbWVudDogRWxlbWVudFJlZjxIVE1MRWxlbWVudD4gfCBIVE1MRWxlbWVudCxcbiAgICBkZWJvdW5jZU1zOiBudW1iZXIgPSAyNTBcbiAgKTogT2JzZXJ2YWJsZTxSZXNpemVPYnNlcnZlckVudHJ5PiB7XG4gICAgY29uc3QgZWwgPSBlbGVtZW50IGluc3RhbmNlb2YgRWxlbWVudFJlZiA/IGVsZW1lbnQubmF0aXZlRWxlbWVudCA6IGVsZW1lbnQ7XG4gICAgY29uc3QgcmVzaXplJCA9IG5ldyBTdWJqZWN0PFJlc2l6ZU9ic2VydmVyRW50cnk+KCk7XG4gICAgXG4gICAgY29uc3QgcmVzaXplT2JzZXJ2ZXIgPSBuZXcgUmVzaXplT2JzZXJ2ZXIoKGVudHJpZXMpID0+IHtcbiAgICAgIGNvbnN0IGVudHJ5ID0gZW50cmllc1swXTtcbiAgICAgIGlmIChlbnRyeSkge1xuICAgICAgICB0aGlzLm5nWm9uZS5ydW4oKCkgPT4ge1xuICAgICAgICAgIHJlc2l6ZSQubmV4dChlbnRyeSk7XG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH0pO1xuICAgIFxuICAgIHJlc2l6ZU9ic2VydmVyLm9ic2VydmUoZWwpO1xuICAgIFxuICAgIC8vIENsZWFudXAgb24gZGVzdHJveVxuICAgIHRoaXMuZGVzdHJveSQuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgIHJlc2l6ZU9ic2VydmVyLmRpc2Nvbm5lY3QoKTtcbiAgICB9KTtcbiAgICBcbiAgICByZXR1cm4gcmVzaXplJC5waXBlKFxuICAgICAgZGVib3VuY2VUaW1lKGRlYm91bmNlTXMpLFxuICAgICAgdGFrZVVudGlsKHRoaXMuZGVzdHJveSQpXG4gICAgKTtcbiAgfVxuICBcbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgdGhpcy5kZXN0cm95JC5uZXh0KCk7XG4gICAgdGhpcy5kZXN0cm95JC5jb21wbGV0ZSgpO1xuICAgIHRoaXMuc2Nyb2xsU3RhdGVTdWJqZWN0LmNvbXBsZXRlKCk7XG4gIH1cbn0iXX0=
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZnJvbnRlbmQtdG9vbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy90eXBlcy9mcm9udGVuZC10b29sLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBUeXBlLCBUZW1wbGF0ZVJlZiB9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XG5pbXBvcnQgdHlwZSB7IHogfSBmcm9tIFwiem9kXCI7XG5cbi8qKlxuICogQW5ndWxhci1zcGVjaWZpYyBmcm9udGVuZCB0b29sIGRlZmluaXRpb24uXG4gKiBQcm92aWRlcyBhIGhhbmRsZXIgZnVuY3Rpb24gdGhhdCBleGVjdXRlcyBvbiB0aGUgZnJvbnRlbmQgd2hlbiB0aGUgdG9vbCBpcyBjYWxsZWQuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQW5ndWxhckZyb250ZW5kVG9vbDxUIGV4dGVuZHMgUmVjb3JkPHN0cmluZywgYW55PiA9IFJlY29yZDxzdHJpbmcsIGFueT4+IHtcbiAgLyoqXG4gICAqIFRoZSBuYW1lIG9mIHRoZSB0b29sIC0gbXVzdCBiZSB1bmlxdWVcbiAgICovXG4gIG5hbWU6IHN0cmluZztcbiAgXG4gIC8qKlxuICAgKiBEZXNjcmlwdGlvbiBvZiB3aGF0IHRoZSB0b29sIGRvZXNcbiAgICovXG4gIGRlc2NyaXB0aW9uPzogc3RyaW5nO1xuICBcbiAgLyoqXG4gICAqIFpvZCBzY2hlbWEgZGVmaW5pbmcgdGhlIHBhcmFtZXRlcnMgZm9yIHRoZSB0b29sXG4gICAqL1xuICBwYXJhbWV0ZXJzPzogei5ab2RTY2hlbWE8VD47XG4gIFxuICAvKipcbiAgICogSGFuZGxlciBmdW5jdGlvbiB0aGF0IGV4ZWN1dGVzIHdoZW4gdGhlIHRvb2wgaXMgY2FsbGVkXG4gICAqL1xuICBoYW5kbGVyPzogKGFyZ3M6IFQpID0+IFByb21pc2U8YW55PjtcbiAgXG4gIC8qKlxuICAgKiBPcHRpb25hbCBBbmd1bGFyIGNvbXBvbmVudCBvciB0ZW1wbGF0ZSB0byByZW5kZXIgd2hlbiB0aGUgdG9vbCBpcyBjYWxsZWRcbiAgICovXG4gIHJlbmRlcj86IFR5cGU8YW55PiB8IFRlbXBsYXRlUmVmPGFueT47XG4gIFxuICAvKipcbiAgICogV2hldGhlciB0aGUgYWdlbnQgc2hvdWxkIGZvbGxvdyB1cCBhZnRlciB0aGlzIHRvb2wgY29tcGxldGVzLlxuICAgKiBEZWZhdWx0cyB0byB0cnVlIGlmIG5vdCBzcGVjaWZpZWQuXG4gICAqL1xuICBmb2xsb3dVcD86IGJvb2xlYW47XG4gIFxuICAvKipcbiAgICogT3B0aW9uYWwgYWdlbnQgSUQgdG8gY29uc3RyYWluIHRoaXMgdG9vbCB0byBhIHNwZWNpZmljIGFnZW50XG4gICAqL1xuICBhZ2VudElkPzogc3RyaW5nO1xufSJdfQ==
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaHVtYW4taW4tdGhlLWxvb3AuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvdHlwZXMvaHVtYW4taW4tdGhlLWxvb3AudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFR5cGUsIFRlbXBsYXRlUmVmIH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcbmltcG9ydCB0eXBlIHsgeiB9IGZyb20gXCJ6b2RcIjtcbmltcG9ydCB7IEFuZ3VsYXJGcm9udGVuZFRvb2wgfSBmcm9tIFwiLi9mcm9udGVuZC10b29sXCI7XG5pbXBvcnQgeyBUb29sQ2FsbFN0YXR1cyB9IGZyb20gXCJAY29waWxvdGtpdG5leHQvY29yZVwiO1xuXG4vKipcbiAqIFByb3BzIHBhc3NlZCB0byBodW1hbi1pbi10aGUtbG9vcCByZW5kZXIgY29tcG9uZW50cyAtIGRpc2NyaW1pbmF0ZWQgdW5pb24gbWF0Y2hpbmcgUmVhY3RcbiAqL1xuZXhwb3J0IHR5cGUgSHVtYW5JblRoZUxvb3BQcm9wczxUID0gdW5rbm93bj4gPVxuICB8IHtcbiAgICAgIG5hbWU6IHN0cmluZztcbiAgICAgIGRlc2NyaXB0aW9uOiBzdHJpbmc7XG4gICAgICBhcmdzOiBQYXJ0aWFsPFQ+O1xuICAgICAgc3RhdHVzOiBUb29sQ2FsbFN0YXR1cy5JblByb2dyZXNzO1xuICAgICAgcmVzdWx0OiB1bmRlZmluZWQ7XG4gICAgICByZXNwb25kOiB1bmRlZmluZWQ7XG4gICAgfVxuICB8IHtcbiAgICAgIG5hbWU6IHN0cmluZztcbiAgICAgIGRlc2NyaXB0aW9uOiBzdHJpbmc7XG4gICAgICBhcmdzOiBUO1xuICAgICAgc3RhdHVzOiBUb29sQ2FsbFN0YXR1cy5FeGVjdXRpbmc7XG4gICAgICByZXN1bHQ6IHVuZGVmaW5lZDtcbiAgICAgIHJlc3BvbmQ6IChyZXN1bHQ6IHVua25vd24pID0+IFByb21pc2U8dm9pZD47XG4gICAgfVxuICB8IHtcbiAgICAgIG5hbWU6IHN0cmluZztcbiAgICAgIGRlc2NyaXB0aW9uOiBzdHJpbmc7XG4gICAgICBhcmdzOiBUO1xuICAgICAgc3RhdHVzOiBUb29sQ2FsbFN0YXR1cy5Db21wbGV0ZTtcbiAgICAgIHJlc3VsdDogc3RyaW5nO1xuICAgICAgcmVzcG9uZDogdW5kZWZpbmVkO1xuICAgIH07XG5cbi8qKlxuICogQW5ndWxhciBodW1hbi1pbi10aGUtbG9vcCB0b29sIGRlZmluaXRpb24uXG4gKiBTaW1pbGFyIHRvIGZyb250ZW5kIHRvb2xzIGJ1dCBkZXNpZ25lZCBmb3IgaW50ZXJhY3RpdmUgdXNlciBpbnB1dCBzY2VuYXJpb3MuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQW5ndWxhckh1bWFuSW5UaGVMb29wPFxuICBUIGV4dGVuZHMgUmVjb3JkPHN0cmluZywgYW55PiA9IFJlY29yZDxzdHJpbmcsIGFueT4sXG4+IGV4dGVuZHMgT21pdDxBbmd1bGFyRnJvbnRlbmRUb29sPFQ+LCBcImhhbmRsZXJcIiB8IFwicmVuZGVyXCI+IHtcbiAgLyoqXG4gICAqIEFuZ3VsYXIgY29tcG9uZW50IG9yIHRlbXBsYXRlIHRvIHJlbmRlciBmb3IgdXNlciBpbnRlcmFjdGlvbi5cbiAgICogUmVxdWlyZWQgZm9yIGh1bWFuLWluLXRoZS1sb29wIHRvb2xzLlxuICAgKi9cbiAgcmVuZGVyOiBUeXBlPEh1bWFuSW5UaGVMb29wUHJvcHM8VD4+IHwgVGVtcGxhdGVSZWY8SHVtYW5JblRoZUxvb3BQcm9wczxUPj47XG5cbiAgLyoqXG4gICAqIFBhcmFtZXRlcnMgc2NoZW1hIGlzIHJlcXVpcmVkIGZvciBodW1hbi1pbi10aGUtbG9vcCB0b29sc1xuICAgKi9cbiAgcGFyYW1ldGVyczogei5ab2RUeXBlPFQ+O1xufVxuIl19
@@ -1,114 +0,0 @@
1
- import { DestroyRef, inject } from '@angular/core';
2
- import { CopilotKitService } from '../core/copilotkit.service';
3
- /**
4
- * Programmatically adds an agent context to CopilotKit and returns a cleanup function.
5
- *
6
- * @param context - The context to add
7
- * @returns A cleanup function that removes the context
8
- *
9
- * @example
10
- * ```typescript
11
- * export class MyComponent implements OnInit {
12
- * private copilotkit = injectCopilotKit();
13
- *
14
- * ngOnInit() {
15
- * const cleanup = addAgentContext(this.copilotkit, {
16
- * description: 'User preferences',
17
- * value: this.userSettings
18
- * });
19
- *
20
- * // Store cleanup for later or register with DestroyRef
21
- * this.cleanupFns.push(cleanup);
22
- * }
23
- * }
24
- * ```
25
- */
26
- export function addAgentContext(copilotkit, context) {
27
- const contextId = copilotkit.copilotkit.addContext(context);
28
- return () => {
29
- copilotkit.copilotkit.removeContext(contextId);
30
- };
31
- }
32
- /**
33
- * Registers an agent context with CopilotKit and automatically removes it when the component/service is destroyed.
34
- * Must be called within an injection context.
35
- *
36
- * @param context - The context to add
37
- * @returns The context ID
38
- *
39
- * @example
40
- * ```typescript
41
- * export class MyComponent implements OnInit {
42
- * ngOnInit() {
43
- * // Automatically cleaned up on component destroy
44
- * registerAgentContext({
45
- * description: 'Component state',
46
- * value: this.state
47
- * });
48
- * }
49
- * }
50
- * ```
51
- */
52
- export function registerAgentContext(context) {
53
- const copilotkit = inject(CopilotKitService);
54
- const destroyRef = inject(DestroyRef);
55
- const contextId = copilotkit.copilotkit.addContext(context);
56
- // Register cleanup with Angular's DestroyRef
57
- destroyRef.onDestroy(() => {
58
- copilotkit.copilotkit.removeContext(contextId);
59
- });
60
- return contextId;
61
- }
62
- /**
63
- * Creates a reactive context that updates whenever the value changes.
64
- * Uses Angular signals for reactivity.
65
- *
66
- * @param description - Static or signal-based description
67
- * @param value - Signal that provides the context value
68
- * @returns Object with update and destroy methods
69
- *
70
- * @example
71
- * ```typescript
72
- * export class MyComponent {
73
- * private userSettings = signal({ theme: 'dark' });
74
- *
75
- * ngOnInit() {
76
- * const context = createReactiveContext(
77
- * 'User settings',
78
- * computed(() => this.userSettings())
79
- * );
80
- *
81
- * // Updates automatically when userSettings signal changes
82
- * }
83
- * }
84
- * ```
85
- */
86
- export function createReactiveContext(description, value) {
87
- const copilotkit = inject(CopilotKitService);
88
- let currentContextId;
89
- const update = () => {
90
- // Remove old context if it exists
91
- if (currentContextId) {
92
- copilotkit.copilotkit.removeContext(currentContextId);
93
- }
94
- // Add new context
95
- const desc = typeof description === 'function' ? description() : description;
96
- currentContextId = copilotkit.copilotkit.addContext({
97
- description: desc,
98
- value: value()
99
- });
100
- };
101
- const destroy = () => {
102
- if (currentContextId) {
103
- copilotkit.copilotkit.removeContext(currentContextId);
104
- currentContextId = undefined;
105
- }
106
- };
107
- // Initial setup
108
- update();
109
- // Register cleanup
110
- const destroyRef = inject(DestroyRef);
111
- destroyRef.onDestroy(destroy);
112
- return { update, destroy };
113
- }
114
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWdlbnQtY29udGV4dC51dGlscy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy91dGlscy9hZ2VudC1jb250ZXh0LnV0aWxzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ25ELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBRy9EOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBc0JHO0FBQ0gsTUFBTSxVQUFVLGVBQWUsQ0FDN0IsVUFBNkIsRUFDN0IsT0FBZ0I7SUFFaEIsTUFBTSxTQUFTLEdBQUcsVUFBVSxDQUFDLFVBQVUsQ0FBQyxVQUFVLENBQUMsT0FBTyxDQUFDLENBQUM7SUFFNUQsT0FBTyxHQUFHLEVBQUU7UUFDVixVQUFVLENBQUMsVUFBVSxDQUFDLGFBQWEsQ0FBQyxTQUFTLENBQUMsQ0FBQztJQUNqRCxDQUFDLENBQUM7QUFDSixDQUFDO0FBRUQ7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FtQkc7QUFDSCxNQUFNLFVBQVUsb0JBQW9CLENBQUMsT0FBZ0I7SUFDbkQsTUFBTSxVQUFVLEdBQUcsTUFBTSxDQUFDLGlCQUFpQixDQUFDLENBQUM7SUFDN0MsTUFBTSxVQUFVLEdBQUcsTUFBTSxDQUFDLFVBQVUsQ0FBQyxDQUFDO0lBRXRDLE1BQU0sU0FBUyxHQUFHLFVBQVUsQ0FBQyxVQUFVLENBQUMsVUFBVSxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBRTVELDZDQUE2QztJQUM3QyxVQUFVLENBQUMsU0FBUyxDQUFDLEdBQUcsRUFBRTtRQUN4QixVQUFVLENBQUMsVUFBVSxDQUFDLGFBQWEsQ0FBQyxTQUFTLENBQUMsQ0FBQztJQUNqRCxDQUFDLENBQUMsQ0FBQztJQUVILE9BQU8sU0FBUyxDQUFDO0FBQ25CLENBQUM7QUFFRDs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0F1Qkc7QUFDSCxNQUFNLFVBQVUscUJBQXFCLENBQ25DLFdBQW9DLEVBQ3BDLEtBQWdCO0lBRWhCLE1BQU0sVUFBVSxHQUFHLE1BQU0sQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDO0lBQzdDLElBQUksZ0JBQW9DLENBQUM7SUFFekMsTUFBTSxNQUFNLEdBQUcsR0FBRyxFQUFFO1FBQ2xCLGtDQUFrQztRQUNsQyxJQUFJLGdCQUFnQixFQUFFLENBQUM7WUFDckIsVUFBVSxDQUFDLFVBQVUsQ0FBQyxhQUFhLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztRQUN4RCxDQUFDO1FBRUQsa0JBQWtCO1FBQ2xCLE1BQU0sSUFBSSxHQUFHLE9BQU8sV0FBVyxLQUFLLFVBQVUsQ0FBQyxDQUFDLENBQUMsV0FBVyxFQUFFLENBQUMsQ0FBQyxDQUFDLFdBQVcsQ0FBQztRQUM3RSxnQkFBZ0IsR0FBRyxVQUFVLENBQUMsVUFBVSxDQUFDLFVBQVUsQ0FBQztZQUNsRCxXQUFXLEVBQUUsSUFBSTtZQUNqQixLQUFLLEVBQUUsS0FBSyxFQUFFO1NBQ2YsQ0FBQyxDQUFDO0lBQ0wsQ0FBQyxDQUFDO0lBRUYsTUFBTSxPQUFPLEdBQUcsR0FBRyxFQUFFO1FBQ25CLElBQUksZ0JBQWdCLEVBQUUsQ0FBQztZQUNyQixVQUFVLENBQUMsVUFBVSxDQUFDLGFBQWEsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO1lBQ3RELGdCQUFnQixHQUFHLFNBQVMsQ0FBQztRQUMvQixDQUFDO0lBQ0gsQ0FBQyxDQUFDO0lBRUYsZ0JBQWdCO0lBQ2hCLE1BQU0sRUFBRSxDQUFDO0lBRVQsbUJBQW1CO0lBQ25CLE1BQU0sVUFBVSxHQUFHLE1BQU0sQ0FBQyxVQUFVLENBQUMsQ0FBQztJQUN0QyxVQUFVLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBRTlCLE9BQU8sRUFBRSxNQUFNLEVBQUUsT0FBTyxFQUFFLENBQUM7QUFDN0IsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IERlc3Ryb3lSZWYsIGluamVjdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQ29waWxvdEtpdFNlcnZpY2UgfSBmcm9tICcuLi9jb3JlL2NvcGlsb3RraXQuc2VydmljZSc7XG5pbXBvcnQgeyBDb250ZXh0IH0gZnJvbSAnQGFnLXVpL2NsaWVudCc7XG5cbi8qKlxuICogUHJvZ3JhbW1hdGljYWxseSBhZGRzIGFuIGFnZW50IGNvbnRleHQgdG8gQ29waWxvdEtpdCBhbmQgcmV0dXJucyBhIGNsZWFudXAgZnVuY3Rpb24uXG4gKiBcbiAqIEBwYXJhbSBjb250ZXh0IC0gVGhlIGNvbnRleHQgdG8gYWRkXG4gKiBAcmV0dXJucyBBIGNsZWFudXAgZnVuY3Rpb24gdGhhdCByZW1vdmVzIHRoZSBjb250ZXh0XG4gKiBcbiAqIEBleGFtcGxlXG4gKiBgYGB0eXBlc2NyaXB0XG4gKiBleHBvcnQgY2xhc3MgTXlDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xuICogICBwcml2YXRlIGNvcGlsb3RraXQgPSBpbmplY3RDb3BpbG90S2l0KCk7XG4gKiAgIFxuICogICBuZ09uSW5pdCgpIHtcbiAqICAgICBjb25zdCBjbGVhbnVwID0gYWRkQWdlbnRDb250ZXh0KHRoaXMuY29waWxvdGtpdCwge1xuICogICAgICAgZGVzY3JpcHRpb246ICdVc2VyIHByZWZlcmVuY2VzJyxcbiAqICAgICAgIHZhbHVlOiB0aGlzLnVzZXJTZXR0aW5nc1xuICogICAgIH0pO1xuICogICAgIFxuICogICAgIC8vIFN0b3JlIGNsZWFudXAgZm9yIGxhdGVyIG9yIHJlZ2lzdGVyIHdpdGggRGVzdHJveVJlZlxuICogICAgIHRoaXMuY2xlYW51cEZucy5wdXNoKGNsZWFudXApO1xuICogICB9XG4gKiB9XG4gKiBgYGBcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGFkZEFnZW50Q29udGV4dChcbiAgY29waWxvdGtpdDogQ29waWxvdEtpdFNlcnZpY2UsXG4gIGNvbnRleHQ6IENvbnRleHRcbik6ICgpID0+IHZvaWQge1xuICBjb25zdCBjb250ZXh0SWQgPSBjb3BpbG90a2l0LmNvcGlsb3RraXQuYWRkQ29udGV4dChjb250ZXh0KTtcbiAgXG4gIHJldHVybiAoKSA9PiB7XG4gICAgY29waWxvdGtpdC5jb3BpbG90a2l0LnJlbW92ZUNvbnRleHQoY29udGV4dElkKTtcbiAgfTtcbn1cblxuLyoqXG4gKiBSZWdpc3RlcnMgYW4gYWdlbnQgY29udGV4dCB3aXRoIENvcGlsb3RLaXQgYW5kIGF1dG9tYXRpY2FsbHkgcmVtb3ZlcyBpdCB3aGVuIHRoZSBjb21wb25lbnQvc2VydmljZSBpcyBkZXN0cm95ZWQuXG4gKiBNdXN0IGJlIGNhbGxlZCB3aXRoaW4gYW4gaW5qZWN0aW9uIGNvbnRleHQuXG4gKiBcbiAqIEBwYXJhbSBjb250ZXh0IC0gVGhlIGNvbnRleHQgdG8gYWRkXG4gKiBAcmV0dXJucyBUaGUgY29udGV4dCBJRFxuICogXG4gKiBAZXhhbXBsZVxuICogYGBgdHlwZXNjcmlwdFxuICogZXhwb3J0IGNsYXNzIE15Q29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcbiAqICAgbmdPbkluaXQoKSB7XG4gKiAgICAgLy8gQXV0b21hdGljYWxseSBjbGVhbmVkIHVwIG9uIGNvbXBvbmVudCBkZXN0cm95XG4gKiAgICAgcmVnaXN0ZXJBZ2VudENvbnRleHQoe1xuICogICAgICAgZGVzY3JpcHRpb246ICdDb21wb25lbnQgc3RhdGUnLFxuICogICAgICAgdmFsdWU6IHRoaXMuc3RhdGVcbiAqICAgICB9KTtcbiAqICAgfVxuICogfVxuICogYGBgXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiByZWdpc3RlckFnZW50Q29udGV4dChjb250ZXh0OiBDb250ZXh0KTogc3RyaW5nIHtcbiAgY29uc3QgY29waWxvdGtpdCA9IGluamVjdChDb3BpbG90S2l0U2VydmljZSk7XG4gIGNvbnN0IGRlc3Ryb3lSZWYgPSBpbmplY3QoRGVzdHJveVJlZik7XG4gIFxuICBjb25zdCBjb250ZXh0SWQgPSBjb3BpbG90a2l0LmNvcGlsb3RraXQuYWRkQ29udGV4dChjb250ZXh0KTtcbiAgXG4gIC8vIFJlZ2lzdGVyIGNsZWFudXAgd2l0aCBBbmd1bGFyJ3MgRGVzdHJveVJlZlxuICBkZXN0cm95UmVmLm9uRGVzdHJveSgoKSA9PiB7XG4gICAgY29waWxvdGtpdC5jb3BpbG90a2l0LnJlbW92ZUNvbnRleHQoY29udGV4dElkKTtcbiAgfSk7XG4gIFxuICByZXR1cm4gY29udGV4dElkO1xufVxuXG4vKipcbiAqIENyZWF0ZXMgYSByZWFjdGl2ZSBjb250ZXh0IHRoYXQgdXBkYXRlcyB3aGVuZXZlciB0aGUgdmFsdWUgY2hhbmdlcy5cbiAqIFVzZXMgQW5ndWxhciBzaWduYWxzIGZvciByZWFjdGl2aXR5LlxuICogXG4gKiBAcGFyYW0gZGVzY3JpcHRpb24gLSBTdGF0aWMgb3Igc2lnbmFsLWJhc2VkIGRlc2NyaXB0aW9uXG4gKiBAcGFyYW0gdmFsdWUgLSBTaWduYWwgdGhhdCBwcm92aWRlcyB0aGUgY29udGV4dCB2YWx1ZVxuICogQHJldHVybnMgT2JqZWN0IHdpdGggdXBkYXRlIGFuZCBkZXN0cm95IG1ldGhvZHNcbiAqIFxuICogQGV4YW1wbGVcbiAqIGBgYHR5cGVzY3JpcHRcbiAqIGV4cG9ydCBjbGFzcyBNeUNvbXBvbmVudCB7XG4gKiAgIHByaXZhdGUgdXNlclNldHRpbmdzID0gc2lnbmFsKHsgdGhlbWU6ICdkYXJrJyB9KTtcbiAqICAgXG4gKiAgIG5nT25Jbml0KCkge1xuICogICAgIGNvbnN0IGNvbnRleHQgPSBjcmVhdGVSZWFjdGl2ZUNvbnRleHQoXG4gKiAgICAgICAnVXNlciBzZXR0aW5ncycsXG4gKiAgICAgICBjb21wdXRlZCgoKSA9PiB0aGlzLnVzZXJTZXR0aW5ncygpKVxuICogICAgICk7XG4gKiAgICAgXG4gKiAgICAgLy8gVXBkYXRlcyBhdXRvbWF0aWNhbGx5IHdoZW4gdXNlclNldHRpbmdzIHNpZ25hbCBjaGFuZ2VzXG4gKiAgIH1cbiAqIH1cbiAqIGBgYFxuICovXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlUmVhY3RpdmVDb250ZXh0KFxuICBkZXNjcmlwdGlvbjogc3RyaW5nIHwgKCgpID0+IHN0cmluZyksXG4gIHZhbHVlOiAoKSA9PiBhbnlcbik6IHsgdXBkYXRlOiAoKSA9PiB2b2lkOyBkZXN0cm95OiAoKSA9PiB2b2lkIH0ge1xuICBjb25zdCBjb3BpbG90a2l0ID0gaW5qZWN0KENvcGlsb3RLaXRTZXJ2aWNlKTtcbiAgbGV0IGN1cnJlbnRDb250ZXh0SWQ6IHN0cmluZyB8IHVuZGVmaW5lZDtcbiAgXG4gIGNvbnN0IHVwZGF0ZSA9ICgpID0+IHtcbiAgICAvLyBSZW1vdmUgb2xkIGNvbnRleHQgaWYgaXQgZXhpc3RzXG4gICAgaWYgKGN1cnJlbnRDb250ZXh0SWQpIHtcbiAgICAgIGNvcGlsb3RraXQuY29waWxvdGtpdC5yZW1vdmVDb250ZXh0KGN1cnJlbnRDb250ZXh0SWQpO1xuICAgIH1cbiAgICBcbiAgICAvLyBBZGQgbmV3IGNvbnRleHRcbiAgICBjb25zdCBkZXNjID0gdHlwZW9mIGRlc2NyaXB0aW9uID09PSAnZnVuY3Rpb24nID8gZGVzY3JpcHRpb24oKSA6IGRlc2NyaXB0aW9uO1xuICAgIGN1cnJlbnRDb250ZXh0SWQgPSBjb3BpbG90a2l0LmNvcGlsb3RraXQuYWRkQ29udGV4dCh7XG4gICAgICBkZXNjcmlwdGlvbjogZGVzYyxcbiAgICAgIHZhbHVlOiB2YWx1ZSgpXG4gICAgfSk7XG4gIH07XG4gIFxuICBjb25zdCBkZXN0cm95ID0gKCkgPT4ge1xuICAgIGlmIChjdXJyZW50Q29udGV4dElkKSB7XG4gICAgICBjb3BpbG90a2l0LmNvcGlsb3RraXQucmVtb3ZlQ29udGV4dChjdXJyZW50Q29udGV4dElkKTtcbiAgICAgIGN1cnJlbnRDb250ZXh0SWQgPSB1bmRlZmluZWQ7XG4gICAgfVxuICB9O1xuICBcbiAgLy8gSW5pdGlhbCBzZXR1cFxuICB1cGRhdGUoKTtcbiAgXG4gIC8vIFJlZ2lzdGVyIGNsZWFudXBcbiAgY29uc3QgZGVzdHJveVJlZiA9IGluamVjdChEZXN0cm95UmVmKTtcbiAgZGVzdHJveVJlZi5vbkRlc3Ryb3koZGVzdHJveSk7XG4gIFxuICByZXR1cm4geyB1cGRhdGUsIGRlc3Ryb3kgfTtcbn0iXX0=