@copilotkitnext/angular 0.0.9-alpha.2 → 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.
- package/dist/esm2022/index.mjs +2 -70
- package/dist/esm2022/lib/agent.mjs +73 -0
- package/dist/esm2022/lib/chat-config.mjs +35 -0
- package/dist/esm2022/lib/chat-state.mjs +18 -0
- package/dist/esm2022/lib/components/chat/copilot-chat-assistant-message-buttons.mjs +344 -0
- package/dist/esm2022/lib/components/chat/copilot-chat-assistant-message-renderer.mjs +260 -0
- package/dist/esm2022/lib/components/chat/copilot-chat-assistant-message-toolbar.mjs +22 -0
- package/dist/esm2022/{components/chat/copilot-chat-assistant-message.component.mjs → lib/components/chat/copilot-chat-assistant-message.mjs} +216 -240
- package/dist/esm2022/lib/components/chat/copilot-chat-assistant-message.types.mjs +2 -0
- package/dist/esm2022/lib/components/chat/copilot-chat-audio-recorder.mjs +196 -0
- package/dist/esm2022/lib/components/chat/copilot-chat-buttons.mjs +299 -0
- package/dist/esm2022/lib/components/chat/copilot-chat-input-defaults.mjs +39 -0
- package/dist/esm2022/lib/components/chat/copilot-chat-input.mjs +634 -0
- package/dist/esm2022/lib/components/chat/copilot-chat-input.types.mjs +10 -0
- package/dist/esm2022/lib/components/chat/copilot-chat-message-view-cursor.mjs +27 -0
- package/dist/esm2022/lib/components/chat/copilot-chat-message-view.mjs +268 -0
- package/dist/esm2022/lib/components/chat/copilot-chat-message-view.types.mjs +2 -0
- package/dist/esm2022/lib/components/chat/copilot-chat-textarea.mjs +139 -0
- package/dist/esm2022/lib/components/chat/copilot-chat-tool-calls-view.mjs +36 -0
- package/dist/esm2022/lib/components/chat/copilot-chat-toolbar.mjs +20 -0
- package/dist/esm2022/lib/components/chat/copilot-chat-tools-menu.mjs +203 -0
- package/dist/esm2022/lib/components/chat/copilot-chat-user-message-branch-navigation.mjs +118 -0
- package/dist/esm2022/lib/components/chat/copilot-chat-user-message-buttons.mjs +182 -0
- package/dist/esm2022/lib/components/chat/copilot-chat-user-message-renderer.mjs +28 -0
- package/dist/esm2022/lib/components/chat/copilot-chat-user-message-toolbar.mjs +25 -0
- package/dist/esm2022/lib/components/chat/copilot-chat-user-message.mjs +306 -0
- package/dist/esm2022/lib/components/chat/copilot-chat-user-message.types.mjs +2 -0
- package/dist/esm2022/lib/components/chat/copilot-chat-view-disclaimer.mjs +48 -0
- package/dist/esm2022/lib/components/chat/copilot-chat-view-feather.mjs +41 -0
- package/dist/esm2022/lib/components/chat/copilot-chat-view-handlers.mjs +19 -0
- package/dist/esm2022/lib/components/chat/copilot-chat-view-input-container.mjs +96 -0
- package/dist/esm2022/lib/components/chat/copilot-chat-view-scroll-to-bottom-button.mjs +89 -0
- package/dist/esm2022/lib/components/chat/copilot-chat-view-scroll-view.mjs +456 -0
- package/dist/esm2022/lib/components/chat/copilot-chat-view.mjs +404 -0
- package/dist/esm2022/lib/components/chat/copilot-chat-view.types.mjs +2 -0
- package/dist/esm2022/lib/components/chat/copilot-chat.mjs +167 -0
- package/dist/esm2022/lib/config.mjs +9 -0
- package/dist/esm2022/lib/copilotkit.mjs +124 -0
- package/dist/esm2022/lib/directives/copilotkit-agent-context.mjs +130 -0
- package/dist/esm2022/lib/directives/stick-to-bottom.mjs +170 -0
- package/dist/esm2022/lib/directives/tooltip.mjs +217 -0
- package/dist/esm2022/lib/human-in-the-loop.mjs +19 -0
- package/dist/esm2022/lib/render-tool-calls.mjs +131 -0
- package/dist/esm2022/lib/resize-observer.mjs +152 -0
- package/dist/esm2022/lib/scroll-position.mjs +124 -0
- package/dist/esm2022/lib/slots/copilot-slot.mjs +156 -0
- package/dist/esm2022/lib/slots/index.mjs +4 -0
- package/dist/esm2022/lib/slots/slot.types.mjs +3 -3
- package/dist/esm2022/lib/slots/slot.utils.mjs +19 -15
- package/dist/esm2022/lib/tools.mjs +31 -0
- package/dist/esm2022/lib/utils.mjs +3 -3
- package/dist/esm2022/public-api.mjs +47 -0
- package/dist/fesm2022/copilotkitnext-angular.mjs +5249 -8271
- package/dist/fesm2022/copilotkitnext-angular.mjs.map +1 -1
- package/dist/index.d.ts +1 -55
- package/dist/lib/agent.d.ts +53 -0
- package/dist/{core/chat-configuration/chat-configuration.types.d.ts → lib/chat-config.d.ts} +4 -8
- package/dist/lib/chat-state.d.ts +10 -0
- package/dist/lib/components/chat/copilot-chat-assistant-message-buttons.d.ts +68 -0
- package/dist/lib/components/chat/copilot-chat-assistant-message-renderer.d.ts +26 -0
- package/dist/lib/components/chat/copilot-chat-assistant-message-toolbar.d.ts +7 -0
- package/dist/lib/components/chat/copilot-chat-assistant-message.d.ts +178 -0
- package/dist/{components → lib/components}/chat/copilot-chat-assistant-message.types.d.ts +1 -1
- package/dist/{components/chat/copilot-chat-audio-recorder.component.d.ts → lib/components/chat/copilot-chat-audio-recorder.d.ts} +10 -10
- package/dist/lib/components/chat/copilot-chat-buttons.d.ts +65 -0
- package/dist/lib/components/chat/copilot-chat-input-defaults.d.ts +38 -0
- package/dist/lib/components/chat/copilot-chat-input.d.ts +133 -0
- package/dist/{components → lib/components}/chat/copilot-chat-input.types.d.ts +11 -11
- package/dist/lib/components/chat/copilot-chat-message-view-cursor.d.ts +11 -0
- package/dist/{components/chat/copilot-chat-message-view.component.d.ts → lib/components/chat/copilot-chat-message-view.d.ts} +68 -36
- package/dist/{components → lib/components}/chat/copilot-chat-message-view.types.d.ts +2 -2
- package/dist/lib/components/chat/copilot-chat-textarea.d.ts +41 -0
- package/dist/lib/components/chat/copilot-chat-tool-calls-view.d.ts +55 -0
- package/dist/lib/components/chat/copilot-chat-toolbar.d.ts +7 -0
- package/dist/lib/components/chat/copilot-chat-tools-menu.d.ts +20 -0
- package/dist/lib/components/chat/copilot-chat-user-message-branch-navigation.d.ts +20 -0
- package/dist/lib/components/chat/copilot-chat-user-message-buttons.d.ts +35 -0
- package/dist/lib/components/chat/copilot-chat-user-message-renderer.d.ts +8 -0
- package/dist/lib/components/chat/copilot-chat-user-message-toolbar.d.ts +7 -0
- package/dist/lib/components/chat/copilot-chat-user-message.d.ts +55 -0
- package/dist/{components → lib/components}/chat/copilot-chat-user-message.types.d.ts +2 -2
- package/dist/lib/components/chat/copilot-chat-view-disclaimer.d.ts +15 -0
- package/dist/{components/chat/copilot-chat-view-feather.component.d.ts → lib/components/chat/copilot-chat-view-feather.d.ts} +6 -6
- package/dist/{components/chat/copilot-chat-view-handlers.service.d.ts → lib/components/chat/copilot-chat-view-handlers.d.ts} +3 -3
- package/dist/lib/components/chat/copilot-chat-view-input-container.d.ts +23 -0
- package/dist/lib/components/chat/copilot-chat-view-scroll-to-bottom-button.d.ts +16 -0
- package/dist/lib/components/chat/copilot-chat-view-scroll-view.d.ts +114 -0
- package/dist/lib/components/chat/copilot-chat-view.d.ts +239 -0
- package/dist/{components → lib/components}/chat/copilot-chat-view.types.d.ts +2 -2
- package/dist/lib/components/chat/copilot-chat.d.ts +67 -0
- package/dist/lib/config.d.ts +16 -0
- package/dist/lib/copilotkit.d.ts +29 -0
- package/dist/{directives/copilotkit-agent-context.directive.d.ts → lib/directives/copilotkit-agent-context.d.ts} +5 -5
- package/dist/lib/directives/stick-to-bottom.d.ts +62 -0
- package/dist/lib/directives/tooltip.d.ts +33 -0
- package/dist/lib/human-in-the-loop.d.ts +13 -0
- package/dist/lib/render-tool-calls.d.ts +75 -0
- package/dist/{services/resize-observer.service.d.ts → lib/resize-observer.d.ts} +2 -2
- package/dist/{services/scroll-position.service.d.ts → lib/scroll-position.d.ts} +6 -6
- package/dist/lib/slots/copilot-slot.d.ts +34 -0
- package/dist/lib/slots/index.d.ts +3 -0
- package/dist/lib/slots/slot.types.d.ts +1 -1
- package/dist/lib/slots/slot.utils.d.ts +6 -4
- package/dist/lib/tools.d.ts +63 -0
- package/dist/lib/utils.d.ts +1 -1
- package/dist/public-api.d.ts +46 -0
- package/dist/styles.css +0 -69
- package/package.json +3 -3
- package/dist/components/chat/copilot-chat-assistant-message-buttons.component.d.ts +0 -75
- package/dist/components/chat/copilot-chat-assistant-message-renderer.component.d.ts +0 -31
- package/dist/components/chat/copilot-chat-assistant-message-toolbar.component.d.ts +0 -8
- package/dist/components/chat/copilot-chat-assistant-message.component.d.ts +0 -132
- package/dist/components/chat/copilot-chat-buttons.component.d.ts +0 -66
- package/dist/components/chat/copilot-chat-input-defaults.d.ts +0 -37
- package/dist/components/chat/copilot-chat-input.component.d.ts +0 -133
- package/dist/components/chat/copilot-chat-message-view-cursor.component.d.ts +0 -15
- package/dist/components/chat/copilot-chat-textarea.component.d.ts +0 -45
- package/dist/components/chat/copilot-chat-tool-calls-view.component.d.ts +0 -35
- package/dist/components/chat/copilot-chat-toolbar.component.d.ts +0 -8
- package/dist/components/chat/copilot-chat-tools-menu.component.d.ts +0 -20
- package/dist/components/chat/copilot-chat-user-message-branch-navigation.component.d.ts +0 -23
- package/dist/components/chat/copilot-chat-user-message-buttons.component.d.ts +0 -39
- package/dist/components/chat/copilot-chat-user-message-renderer.component.d.ts +0 -9
- package/dist/components/chat/copilot-chat-user-message-toolbar.component.d.ts +0 -8
- package/dist/components/chat/copilot-chat-user-message.component.d.ts +0 -55
- package/dist/components/chat/copilot-chat-view-disclaimer.component.d.ts +0 -15
- package/dist/components/chat/copilot-chat-view-input-container.component.d.ts +0 -23
- package/dist/components/chat/copilot-chat-view-scroll-to-bottom-button.component.d.ts +0 -17
- package/dist/components/chat/copilot-chat-view-scroll-view.component.d.ts +0 -84
- package/dist/components/chat/copilot-chat-view.component.d.ts +0 -205
- package/dist/components/chat/copilot-chat.component.d.ts +0 -36
- package/dist/components/copilotkit-tool-render.component.d.ts +0 -25
- package/dist/core/chat-configuration/chat-configuration.providers.d.ts +0 -54
- package/dist/core/chat-configuration/chat-configuration.service.d.ts +0 -75
- package/dist/core/copilotkit.providers.d.ts +0 -13
- package/dist/core/copilotkit.service.d.ts +0 -119
- package/dist/core/copilotkit.types.d.ts +0 -81
- package/dist/directives/copilotkit-agent.directive.d.ts +0 -106
- package/dist/directives/copilotkit-chat-config.directive.d.ts +0 -84
- package/dist/directives/copilotkit-config.directive.d.ts +0 -44
- package/dist/directives/copilotkit-frontend-tool.directive.d.ts +0 -25
- package/dist/directives/copilotkit-human-in-the-loop.directive.d.ts +0 -124
- package/dist/directives/stick-to-bottom.directive.d.ts +0 -62
- package/dist/esm2022/components/chat/copilot-chat-assistant-message-buttons.component.mjs +0 -384
- package/dist/esm2022/components/chat/copilot-chat-assistant-message-renderer.component.mjs +0 -286
- package/dist/esm2022/components/chat/copilot-chat-assistant-message-toolbar.component.mjs +0 -27
- package/dist/esm2022/components/chat/copilot-chat-assistant-message.types.mjs +0 -2
- package/dist/esm2022/components/chat/copilot-chat-audio-recorder.component.mjs +0 -202
- package/dist/esm2022/components/chat/copilot-chat-buttons.component.mjs +0 -321
- package/dist/esm2022/components/chat/copilot-chat-input-defaults.mjs +0 -38
- package/dist/esm2022/components/chat/copilot-chat-input.component.mjs +0 -666
- package/dist/esm2022/components/chat/copilot-chat-input.types.mjs +0 -10
- package/dist/esm2022/components/chat/copilot-chat-message-view-cursor.component.mjs +0 -45
- package/dist/esm2022/components/chat/copilot-chat-message-view.component.mjs +0 -296
- package/dist/esm2022/components/chat/copilot-chat-message-view.types.mjs +0 -2
- package/dist/esm2022/components/chat/copilot-chat-textarea.component.mjs +0 -188
- package/dist/esm2022/components/chat/copilot-chat-tool-calls-view.component.mjs +0 -222
- package/dist/esm2022/components/chat/copilot-chat-toolbar.component.mjs +0 -25
- package/dist/esm2022/components/chat/copilot-chat-tools-menu.component.mjs +0 -199
- package/dist/esm2022/components/chat/copilot-chat-user-message-branch-navigation.component.mjs +0 -137
- package/dist/esm2022/components/chat/copilot-chat-user-message-buttons.component.mjs +0 -207
- package/dist/esm2022/components/chat/copilot-chat-user-message-renderer.component.mjs +0 -35
- package/dist/esm2022/components/chat/copilot-chat-user-message-toolbar.component.mjs +0 -34
- package/dist/esm2022/components/chat/copilot-chat-user-message.component.mjs +0 -341
- package/dist/esm2022/components/chat/copilot-chat-user-message.types.mjs +0 -2
- package/dist/esm2022/components/chat/copilot-chat-view-disclaimer.component.mjs +0 -52
- package/dist/esm2022/components/chat/copilot-chat-view-feather.component.mjs +0 -55
- package/dist/esm2022/components/chat/copilot-chat-view-handlers.service.mjs +0 -19
- package/dist/esm2022/components/chat/copilot-chat-view-input-container.component.mjs +0 -110
- package/dist/esm2022/components/chat/copilot-chat-view-scroll-to-bottom-button.component.mjs +0 -93
- package/dist/esm2022/components/chat/copilot-chat-view-scroll-view.component.mjs +0 -443
- package/dist/esm2022/components/chat/copilot-chat-view.component.mjs +0 -479
- package/dist/esm2022/components/chat/copilot-chat-view.types.mjs +0 -2
- package/dist/esm2022/components/chat/copilot-chat.component.mjs +0 -220
- package/dist/esm2022/components/copilotkit-tool-render.component.mjs +0 -150
- package/dist/esm2022/core/chat-configuration/chat-configuration.providers.mjs +0 -65
- package/dist/esm2022/core/chat-configuration/chat-configuration.service.mjs +0 -145
- package/dist/esm2022/core/chat-configuration/chat-configuration.types.mjs +0 -26
- package/dist/esm2022/core/copilotkit.providers.mjs +0 -34
- package/dist/esm2022/core/copilotkit.service.mjs +0 -411
- package/dist/esm2022/core/copilotkit.types.mjs +0 -13
- package/dist/esm2022/directives/copilotkit-agent-context.directive.mjs +0 -130
- package/dist/esm2022/directives/copilotkit-agent.directive.mjs +0 -221
- package/dist/esm2022/directives/copilotkit-chat-config.directive.mjs +0 -218
- package/dist/esm2022/directives/copilotkit-config.directive.mjs +0 -94
- package/dist/esm2022/directives/copilotkit-frontend-tool.directive.mjs +0 -128
- package/dist/esm2022/directives/copilotkit-human-in-the-loop.directive.mjs +0 -265
- package/dist/esm2022/directives/stick-to-bottom.directive.mjs +0 -181
- package/dist/esm2022/lib/directives/tooltip.directive.mjs +0 -211
- package/dist/esm2022/lib/slots/copilot-slot.component.mjs +0 -154
- package/dist/esm2022/services/resize-observer.service.mjs +0 -152
- package/dist/esm2022/services/scroll-position.service.mjs +0 -124
- package/dist/esm2022/types/frontend-tool.mjs +0 -2
- package/dist/esm2022/types/human-in-the-loop.mjs +0 -2
- package/dist/esm2022/utils/agent-context.utils.mjs +0 -114
- package/dist/esm2022/utils/agent.utils.mjs +0 -212
- package/dist/esm2022/utils/chat-config.utils.mjs +0 -186
- package/dist/esm2022/utils/copilotkit.utils.mjs +0 -20
- package/dist/esm2022/utils/frontend-tool.utils.mjs +0 -224
- package/dist/esm2022/utils/human-in-the-loop.utils.mjs +0 -293
- package/dist/lib/directives/tooltip.directive.d.ts +0 -33
- package/dist/lib/slots/copilot-slot.component.d.ts +0 -34
- package/dist/types/frontend-tool.d.ts +0 -37
- package/dist/types/human-in-the-loop.d.ts +0 -44
- package/dist/utils/agent-context.utils.d.ts +0 -75
- package/dist/utils/agent.utils.d.ts +0 -108
- package/dist/utils/chat-config.utils.d.ts +0 -166
- package/dist/utils/copilotkit.utils.d.ts +0 -16
- package/dist/utils/frontend-tool.utils.d.ts +0 -119
- 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=
|