@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,5 +1,5 @@
|
|
|
1
|
-
import { TemplateRef, inject } from
|
|
2
|
-
import { SLOT_CONFIG } from
|
|
1
|
+
import { TemplateRef, inject, } from "@angular/core";
|
|
2
|
+
import { SLOT_CONFIG, } from "./slot.types";
|
|
3
3
|
/**
|
|
4
4
|
* Renders a slot value into a ViewContainerRef.
|
|
5
5
|
* This is the core utility for slot rendering.
|
|
@@ -33,7 +33,7 @@ export function renderSlot(viewContainer, options) {
|
|
|
33
33
|
// TemplateRef: render template
|
|
34
34
|
return viewContainer.createEmbeddedView(effectiveSlot, {
|
|
35
35
|
$implicit: props ?? {},
|
|
36
|
-
props: props ?? {}
|
|
36
|
+
props: props ?? {},
|
|
37
37
|
});
|
|
38
38
|
}
|
|
39
39
|
else if (isComponentType(effectiveSlot)) {
|
|
@@ -42,26 +42,28 @@ export function renderSlot(viewContainer, options) {
|
|
|
42
42
|
return createComponent(viewContainer, effectiveSlot, props, effectiveInjector, outputs);
|
|
43
43
|
}
|
|
44
44
|
catch (error) {
|
|
45
|
-
console.warn(
|
|
45
|
+
console.warn("Failed to create component:", effectiveSlot, error);
|
|
46
46
|
// Fall through to default component
|
|
47
47
|
}
|
|
48
48
|
}
|
|
49
49
|
// Default: render default component if provided
|
|
50
|
-
return defaultComponent
|
|
50
|
+
return defaultComponent
|
|
51
|
+
? createComponent(viewContainer, defaultComponent, props, effectiveInjector, outputs)
|
|
52
|
+
: null;
|
|
51
53
|
}
|
|
52
54
|
/**
|
|
53
55
|
* Creates a component and applies properties.
|
|
54
56
|
*/
|
|
55
57
|
function createComponent(viewContainer, component, props, injector, outputs) {
|
|
56
58
|
const componentRef = viewContainer.createComponent(component, {
|
|
57
|
-
injector
|
|
59
|
+
injector,
|
|
58
60
|
});
|
|
59
61
|
if (props) {
|
|
60
62
|
// Apply props using setInput, but only for declared inputs
|
|
61
63
|
const cmpDef = component.ɵcmp;
|
|
62
64
|
const declaredInputs = new Set(Object.keys(cmpDef?.inputs ?? {}));
|
|
63
|
-
if (declaredInputs.has(
|
|
64
|
-
componentRef.setInput(
|
|
65
|
+
if (declaredInputs.has("props")) {
|
|
66
|
+
componentRef.setInput("props", props);
|
|
65
67
|
}
|
|
66
68
|
else {
|
|
67
69
|
for (const key in props) {
|
|
@@ -84,7 +86,7 @@ function createComponent(viewContainer, component, props, injector, outputs) {
|
|
|
84
86
|
}
|
|
85
87
|
// Register cleanup on component destroy
|
|
86
88
|
componentRef.onDestroy(() => {
|
|
87
|
-
subscriptions.forEach(sub => sub.unsubscribe());
|
|
89
|
+
subscriptions.forEach((sub) => sub.unsubscribe());
|
|
88
90
|
});
|
|
89
91
|
}
|
|
90
92
|
// Trigger change detection
|
|
@@ -97,7 +99,7 @@ function createComponent(viewContainer, component, props, injector, outputs) {
|
|
|
97
99
|
*/
|
|
98
100
|
export function isComponentType(value) {
|
|
99
101
|
// Arrow functions and regular functions without a prototype are not components
|
|
100
|
-
return typeof value ===
|
|
102
|
+
return typeof value === "function" && !!value.prototype;
|
|
101
103
|
}
|
|
102
104
|
/**
|
|
103
105
|
* Checks if a value is a valid slot value.
|
|
@@ -126,7 +128,8 @@ export function normalizeSlotValue(value, defaultComponent) {
|
|
|
126
128
|
* @example
|
|
127
129
|
* ```typescript
|
|
128
130
|
* const slots = createSlotConfig({
|
|
129
|
-
|
|
131
|
+
standalone: true,
|
|
132
|
+
* sendButton: CustomSendButton,
|
|
130
133
|
* toolbar: 'custom-toolbar-class',
|
|
131
134
|
* footer: footerTemplate
|
|
132
135
|
* }, {
|
|
@@ -151,7 +154,8 @@ export function createSlotConfig(overrides, defaults) {
|
|
|
151
154
|
* @example
|
|
152
155
|
* ```typescript
|
|
153
156
|
* @Component({
|
|
154
|
-
|
|
157
|
+
standalone: true,
|
|
158
|
+
* providers: [
|
|
155
159
|
* provideSlots({
|
|
156
160
|
* sendButton: CustomSendButton,
|
|
157
161
|
* toolbar: CustomToolbar
|
|
@@ -170,7 +174,7 @@ export function provideSlots(slots) {
|
|
|
170
174
|
}
|
|
171
175
|
return {
|
|
172
176
|
provide: SLOT_CONFIG,
|
|
173
|
-
useValue: slotMap
|
|
177
|
+
useValue: slotMap,
|
|
174
178
|
};
|
|
175
179
|
}
|
|
176
180
|
/**
|
|
@@ -224,8 +228,8 @@ export function createSlotRenderer(defaultComponent, slotName) {
|
|
|
224
228
|
slot,
|
|
225
229
|
defaultComponent,
|
|
226
230
|
props,
|
|
227
|
-
outputs
|
|
231
|
+
outputs,
|
|
228
232
|
});
|
|
229
233
|
};
|
|
230
234
|
}
|
|
231
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2xvdC51dGlscy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9saWIvc2xvdHMvc2xvdC51dGlscy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBRUwsV0FBVyxFQUtYLE1BQU0sRUFDUCxNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQW1ELFdBQVcsRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUU1Rjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0F1Qkc7QUFDSCxNQUFNLFVBQVUsVUFBVSxDQUN4QixhQUErQixFQUMvQixPQUE2QjtJQUU3QixNQUFNLEVBQUUsSUFBSSxFQUFFLGdCQUFnQixFQUFFLEtBQUssRUFBRSxRQUFRLEVBQUUsT0FBTyxFQUFFLEdBQUcsT0FBTyxDQUFDO0lBRXJFLGFBQWEsQ0FBQyxLQUFLLEVBQUUsQ0FBQztJQUV0QixNQUFNLGFBQWEsR0FBRyxJQUFJLElBQUksZ0JBQWdCLENBQUM7SUFDL0MsTUFBTSxpQkFBaUIsR0FBRyxRQUFRLElBQUksYUFBYSxDQUFDLFFBQVEsQ0FBQztJQUU3RCxJQUFJLGFBQWEsWUFBWSxXQUFXLEVBQUUsQ0FBQztRQUN6QywrQkFBK0I7UUFDL0IsT0FBTyxhQUFhLENBQUMsa0JBQWtCLENBQUMsYUFBYSxFQUFFO1lBQ3JELFNBQVMsRUFBRSxLQUFLLElBQUksRUFBRTtZQUN0QixLQUFLLEVBQUUsS0FBSyxJQUFJLEVBQUU7U0FDWixDQUFDLENBQUM7SUFDWixDQUFDO1NBQU0sSUFBSSxlQUFlLENBQUMsYUFBYSxDQUFDLEVBQUUsQ0FBQztRQUMxQyxnREFBZ0Q7UUFDaEQsSUFBSSxDQUFDO1lBQ0gsT0FBTyxlQUFlLENBQ3BCLGFBQWEsRUFDYixhQUF3QixFQUN4QixLQUFLLEVBQ0wsaUJBQWlCLEVBQ2pCLE9BQU8sQ0FDUixDQUFDO1FBQ0osQ0FBQztRQUFDLE9BQU8sS0FBSyxFQUFFLENBQUM7WUFDZixPQUFPLENBQUMsSUFBSSxDQUFDLDZC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LGdCQUFnQjtZQUNoQixLQUFLO1lBQ0wsT0FBTztTQUNSLENBQUMsQ0FBQztJQUNMLENBQUMsQ0FBQztBQUNKLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBcbiAgVHlwZSwgXG4gIFRlbXBsYXRlUmVmLCBcbiAgVmlld0NvbnRhaW5lclJlZixcbiAgQ29tcG9uZW50UmVmLFxuICBFbWJlZGRlZFZpZXdSZWYsXG4gIEluamVjdG9yLFxuICBpbmplY3Rcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBTbG90VmFsdWUsIFJlbmRlclNsb3RPcHRpb25zLCBTbG90UmVnaXN0cnlFbnRyeSwgU0xPVF9DT05GSUcgfSBmcm9tICcuL3Nsb3QudHlwZXMnO1xuXG4vKipcbiAqIFJlbmRlcnMgYSBzbG90IHZhbHVlIGludG8gYSBWaWV3Q29udGFpbmVyUmVmLlxuICogVGhpcyBpcyB0aGUgY29yZSB1dGlsaXR5IGZvciBzbG90IHJlbmRlcmluZy5cbiAqIFxuICogQHBhcmFtIHZpZXdDb250YWluZXIgLSBUaGUgVmlld0NvbnRhaW5lclJlZiB0byByZW5kZXIgaW50b1xuICogQHBhcmFtIG9wdGlvbnMgLSBPcHRpb25zIGZvciByZW5kZXJpbmcgdGhlIHNsb3RcbiAqIEByZXR1cm5zIFRoZSBjcmVhdGVkIGNvbXBvbmVudCBvciBlbWJlZGRlZCB2aWV3IHJlZmVyZW5jZVxuICogXG4gKiBAZXhhbXBsZVxuICogYGBgdHlwZXNjcmlwdFxuICogZXhwb3J0IGNsYXNzIE15Q29tcG9uZW50IHtcbiAqICAgQFZpZXdDaGlsZCgnY29udGFpbmVyJywgeyByZWFkOiBWaWV3Q29udGFpbmVyUmVmIH0pIGNvbnRhaW5lciE6IFZpZXdDb250YWluZXJSZWY7XG4gKiAgIFxuICogICByZW5kZXJCdXR0b24oKSB7XG4gKiAgICAgcmVuZGVyU2xvdCh0aGlzLmNvbnRhaW5lciwge1xuICogICAgICAgc2xvdDogdGhpcy5idXR0b25PdmVycmlkZSxcbiAqICAgICAgIGRlZmF1bHRDb21wb25lbnQ6IERlZmF1bHRCdXR0b24sXG4gKiAgICAgICBwcm9wczogeyB0ZXh0OiAnQ2xpY2sgbWUnIH0sXG4gKiAgICAgICBvdXRwdXRzOiB7IGNsaWNrOiAoZXZlbnQpID0+IHRoaXMuaGFuZGxlQ2xpY2soZXZlbnQpIH1cbiAqICAgICB9KTtcbiAqICAgfVxuICogfVxuICogYGBgXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiByZW5kZXJTbG90PFQgPSBhbnk+KFxuICB2aWV3Q29udGFpbmVyOiBWaWV3Q29udGFpbmVyUmVmLFxuICBvcHRpb25zOiBSZW5kZXJTbG90T3B0aW9uczxUPlxuKTogQ29tcG9uZW50UmVmPFQ+IHwgRW1iZWRkZWRWaWV3UmVmPFQ+IHwgbnVsbCB7XG4gIGNvbnN0IHsgc2xvdCwgZGVmYXVsdENvbXBvbmVudCwgcHJvcHMsIGluamVjdG9yLCBvdXRwdXRzIH0gPSBvcHRpb25zO1xuICBcbiAgdmlld0NvbnRhaW5lci5jbGVhcigpO1xuICBcbiAgY29uc3QgZWZmZWN0aXZlU2xvdCA9IHNsb3QgPz8gZGVmYXVsdENvbXBvbmVudDtcbiAgY29uc3QgZWZmZWN0aXZlSW5qZWN0b3IgPSBpbmplY3RvciA/PyB2aWV3Q29udGFpbmVyLmluamVjdG9yO1xuICBcbiAgaWYgKGVmZmVjdGl2ZVNsb3QgaW5zdGFuY2VvZiBUZW1wbGF0ZVJlZikge1xuICAgIC8vIFRlbXBsYXRlUmVmOiByZW5kZXIgdGVtcGxhdGVcbiAgICByZXR1cm4gdmlld0NvbnRhaW5lci5jcmVhdGVFbWJlZGRlZFZpZXcoZWZmZWN0aXZlU2xvdCwge1xuICAgICAgJGltcGxpY2l0OiBwcm9wcyA/PyB7fSxcbiAgICAgIHByb3BzOiBwcm9wcyA/PyB7fVxuICAgIH0gYXMgYW55KTtcbiAgfSBlbHNlIGlmIChpc0NvbXBvbmVudFR5cGUoZWZmZWN0aXZlU2xvdCkpIHtcbiAgICAvLyBDb21wb25lbnQgdHlwZSAtIHdyYXAgaW4gdHJ5L2NhdGNoIGZvciBzYWZldHlcbiAgICB0cnkge1xuICAgICAgcmV0dXJuIGNyZWF0ZUNvbXBvbmVudChcbiAgICAgICAgdmlld0NvbnRhaW5lcixcbiAgICAgICAgZWZmZWN0aXZlU2xvdCBhcyBUeXBlPFQ+LFxuICAgICAgICBwcm9wcyxcbiAgICAgICAgZWZmZWN0aXZlSW5qZWN0b3IsXG4gICAgICAgIG91dHB1dHNcbiAgICAgICk7XG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIGNvbnNvbGUud2FybignRmFpbGVkIHRvIGNyZWF0ZSBjb21wb25lbnQ6JywgZWZmZWN0aXZlU2xvdCwgZXJyb3IpO1xuICAgICAgLy8gRmFsbCB0aHJvdWdoIHRvIGRlZmF1bHQgY29tcG9uZW50XG4gICAgfVxuICB9XG4gIFxuICAvLyBEZWZhdWx0OiByZW5kZXIgZGVmYXVsdCBjb21wb25lbnQgaWYgcHJvdmlkZWRcbiAgcmV0dXJuIGRlZmF1bHRDb21wb25lbnQgPyBjcmVhdGVDb21wb25lbnQoXG4gICAgdmlld0NvbnRhaW5lcixcbiAgICBkZWZhdWx0Q29tcG9uZW50LFxuICAgIHByb3BzLFxuICAgIGVmZmVjdGl2ZUluamVjdG9yLFxuICAgIG91dHB1dHNcbiAgKSA6IG51bGw7XG59XG5cbi8qKlxuICogQ3JlYXRlcyBhIGNvbXBvbmVudCBhbmQgYXBwbGllcyBwcm9wZXJ0aWVzLlxuICovXG5mdW5jdGlvbiBjcmVhdGVDb21wb25lbnQ8VD4oXG4gIHZpZXdDb250YWluZXI6IFZpZXdDb250YWluZXJSZWYsXG4gIGNvbXBvbmVudDogVHlwZTxUPixcbiAgcHJvcHM/OiBQYXJ0aWFsPFQ+LFxuICBpbmplY3Rvcj86IEluamVjdG9yLFxuICBvdXRwdXRzPzogUmVjb3JkPHN0cmluZywgKGV2ZW50OiBhbnkpID0+IHZvaWQ+XG4pOiBDb21wb25lbnRSZWY8VD4ge1xuICBjb25zdCBjb21wb25lbnRSZWYgPSB2aWV3Q29udGFpbmVyLmNyZWF0ZUNvbXBvbmVudChjb21wb25lbnQsIHtcbiAgICBpbmplY3RvclxuICB9KTtcbiAgXG4gIGlmIChwcm9wcykge1xuICAgIC8vIEFwcGx5IHByb3BzIHVzaW5nIHNldElucHV0LCBidXQgb25seSBmb3IgZGVjbGFyZWQgaW5wdXRzXG4gICAgY29uc3QgY21wRGVmOiBhbnkgPSAoY29tcG9uZW50IGFzIGFueSkuybVjbXA7XG4gICAgY29uc3QgZGVjbGFyZWRJbnB1dHMgPSBuZXcgU2V0PHN0cmluZz4oT2JqZWN0LmtleXMoY21wRGVmPy5pbnB1dHMgPz8ge30pKTtcblxuICAgIGlmIChkZWNsYXJlZElucHV0cy5oYXMoJ3Byb3BzJykpIHtcbiAgICAgIGNvbXBvbmVudFJlZi5zZXRJbnB1dCgncHJvcHMnLCBwcm9wcyBhcyBhbnkpO1xuICAgIH0gZWxzZSB7XG4gICAgICBmb3IgKGNvbnN0IGtleSBpbiBwcm9wcykge1xuICAgICAgICBpZiAoZGVjbGFyZWRJbnB1dHMuaGFzKGtleSkpIHtcbiAgICAgICAgICBjb25zdCB2YWx1ZSA9IChwcm9wcyBhcyBhbnkpW2tleV07XG4gICAgICAgICAgY29tcG9uZW50UmVmLnNldElucHV0KGtleSwgdmFsdWUpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG4gIFxuICBpZiAob3V0cHV0cykge1xuICAgIC8vIFdpcmUgdXAgb3V0cHV0IGV2ZW50IGhhbmRsZXJzIHdpdGggcHJvcGVyIGNsZWFudXBcbiAgICBjb25zdCBpbnN0YW5jZSA9IGNvbXBvbmVudFJlZi5pbnN0YW5jZSBhcyBhbnk7XG4gICAgY29uc3Qgc3Vic2NyaXB0aW9uczogYW55W10gPSBbXTtcbiAgICBcbiAgICBmb3IgKGNvbnN0IFtldmVudE5hbWUsIGhhbmRsZXJdIG9mIE9iamVjdC5lbnRyaWVzKG91dHB1dHMpKSB7XG4gICAgICBpZiAoaW5zdGFuY2VbZXZlbnROYW1lXT8uc3Vic2NyaWJlKSB7XG4gICAgICAgIGNvbnN0IHN1YnNjcmlwdGlvbiA9IGluc3RhbmNlW2V2ZW50TmFtZV0uc3Vic2NyaWJlKGhhbmRsZXIpO1xuICAgICAgICBzdWJzY3JpcHRpb25zLnB1c2goc3Vic2NyaXB0aW9uKTtcbiAgICAgIH1cbiAgICB9XG4gICAgXG4gICAgLy8gUmVnaXN0ZXIgY2xlYW51cCBvbiBjb21wb25lbnQgZGVzdHJveVxuICAgIGNvbXBvbmVudFJlZi5vbkRlc3Ryb3koKCkgPT4ge1xuICAgICAgc3Vic2NyaXB0aW9ucy5mb3JFYWNoKHN1YiA9PiBzdWIudW5zdWJzY3JpYmUoKSk7XG4gICAgfSk7XG4gIH1cbiAgXG4gIC8vIFRyaWdnZXIgY2hhbmdlIGRldGVjdGlvblxuICBjb21wb25lbnRSZWYuY2hhbmdlRGV0ZWN0b3JSZWYuZGV0ZWN0Q2hhbmdlcygpO1xuICBcbiAgcmV0dXJuIGNvbXBvbmVudFJlZjtcbn1cblxuXG4vKipcbiAqIENoZWNrcyBpZiBhIHZhbHVlIGlzIGEgY29tcG9uZW50IHR5cGUuXG4gKiBTaW1wbGlmaWVkIGNoZWNrIC0gcmVseSBvbiB0cnkvY2F0Y2ggZm9yIGFjdHVhbCB2YWxpZGF0aW9uLlxuICovXG5leHBvcnQgZnVuY3Rpb24gaXNDb21wb25lbnRUeXBlKHZhbHVlOiBhbnkpOiBib29sZWFuIHtcbiAgLy8gQXJyb3cgZnVuY3Rpb25zIGFuZCByZWd1bGFyIGZ1bmN0aW9ucyB3aXRob3V0IGEgcHJvdG90eXBlIGFyZSBub3QgY29tcG9uZW50c1xuICByZXR1cm4gdHlwZW9mIHZhbHVlID09PSAnZnVuY3Rpb24nICYmICEhdmFsdWUucHJvdG90eXBlO1xufVxuXG4vKipcbiAqIENoZWNrcyBpZiBhIHZhbHVlIGlzIGEgdmFsaWQgc2xvdCB2YWx1ZS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGlzU2xvdFZhbHVlKHZhbHVlOiBhbnkpOiB2YWx1ZSBpcyBTbG90VmFsdWUge1xuICByZXR1cm4gdmFsdWUgaW5zdGFuY2VvZiBUZW1wbGF0ZVJlZiB8fCBpc0NvbXBvbmVudFR5cGUodmFsdWUpO1xufVxuXG4vKipcbiAqIE5vcm1hbGl6ZXMgYSBzbG90IHZhbHVlIHRvIGEgY29uc2lzdGVudCBmb3JtYXQuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBub3JtYWxpemVTbG90VmFsdWU8VCA9IGFueT4oXG4gIHZhbHVlOiBTbG90VmFsdWU8VD4gfCB1bmRlZmluZWQsXG4gIGRlZmF1bHRDb21wb25lbnQ6IFR5cGU8VD4gfCB1bmRlZmluZWRcbik6IFNsb3RSZWdpc3RyeUVudHJ5PFQ+IHtcbiAgaWYgKCF2YWx1ZSkge1xuICAgIHJldHVybiB7IGNvbXBvbmVudDogZGVmYXVsdENvbXBvbmVudCB9O1xuICB9XG4gIFxuICBpZiAodmFsdWUgaW5zdGFuY2VvZiBUZW1wbGF0ZVJlZikge1xuICAgIHJldHVybiB7IHRlbXBsYXRlOiB2YWx1ZSB9O1xuICB9XG4gIFxuICBpZiAoaXNDb21wb25lbnRUeXBlKHZhbHVlKSkge1xuICAgIHJldHVybiB7IGNvbXBvbmVudDogdmFsdWUgYXMgVHlwZTxUPiB9O1xuICB9XG4gIFxuICByZXR1cm4geyBjb21wb25lbnQ6IGRlZmF1bHRDb21wb25lbnQgfTtcbn1cblxuLyoqXG4gKiBDcmVhdGVzIGEgc2xvdCBjb25maWd1cmF0aW9uIG1hcCBmb3IgYSBjb21wb25lbnQuXG4gKiBcbiAqIEBleGFtcGxlXG4gKiBgYGB0eXBlc2NyaXB0XG4gKiBjb25zdCBzbG90cyA9IGNyZWF0ZVNsb3RDb25maWcoe1xuICogICBzZW5kQnV0dG9uOiBDdXN0b21TZW5kQnV0dG9uLFxuICogICB0b29sYmFyOiAnY3VzdG9tLXRvb2xiYXItY2xhc3MnLFxuICogICBmb290ZXI6IGZvb3RlclRlbXBsYXRlXG4gKiB9LCB7XG4gKiAgIHNlbmRCdXR0b246IERlZmF1bHRTZW5kQnV0dG9uLFxuICogICB0b29sYmFyOiBEZWZhdWx0VG9vbGJhcixcbiAqICAgZm9vdGVyOiBEZWZhdWx0Rm9vdGVyXG4gKiB9KTtcbiAqIGBgYFxuICovXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlU2xvdENvbmZpZzxUIGV4dGVuZHMgUmVjb3JkPHN0cmluZywgVHlwZTxhbnk+Pj4oXG4gIG92ZXJyaWRlczogUGFydGlhbDxSZWNvcmQ8a2V5b2YgVCwgU2xvdFZhbHVlPj4sXG4gIGRlZmF1bHRzOiBUXG4pOiBNYXA8a2V5b2YgVCwgU2xvdFJlZ2lzdHJ5RW50cnk+IHtcbiAgY29uc3QgY29uZmlnID0gbmV3IE1hcDxrZXlvZiBULCBTbG90UmVnaXN0cnlFbnRyeT4oKTtcbiAgXG4gIGZvciAoY29uc3Qga2V5IGluIGRlZmF1bHRzKSB7XG4gICAgY29uc3Qgb3ZlcnJpZGUgPSBvdmVycmlkZXNba2V5XTtcbiAgICBjb25zdCBkZWZhdWx0Q29tcG9uZW50ID0gZGVmYXVsdHNba2V5XTtcbiAgICBjb25maWcuc2V0KGtleSwgbm9ybWFsaXplU2xvdFZhbHVlKG92ZXJyaWRlLCBkZWZhdWx0Q29tcG9uZW50KSk7XG4gIH1cbiAgXG4gIHJldHVybiBjb25maWc7XG59XG5cbi8qKlxuICogUHJvdmlkZXMgc2xvdCBjb25maWd1cmF0aW9uIHRvIGNoaWxkIGNvbXBvbmVudHMgdmlhIERJLlxuICogXG4gKiBAZXhhbXBsZVxuICogYGBgdHlwZXNjcmlwdFxuICogQENvbXBvbmVudCh7XG4gKiAgIHByb3ZpZGVyczogW1xuICogICAgIHByb3ZpZGVTbG90cyh7XG4gKiAgICAgICBzZW5kQnV0dG9uOiBDdXN0b21TZW5kQnV0dG9uLFxuICogICAgICAgdG9vbGJhcjogQ3VzdG9tVG9vbGJhclxuICogICAgIH0pXG4gKiAgIF1cbiAqIH0pXG4gKiBgYGBcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHByb3ZpZGVTbG90cyhzbG90czogUmVjb3JkPHN0cmluZywgVHlwZTxhbnk+Pikge1xuICBjb25zdCBzbG90TWFwID0gbmV3IE1hcDxzdHJpbmcsIFNsb3RSZWdpc3RyeUVudHJ5PigpO1xuICBcbiAgLy8gT25seSBhY2NlcHQgY29tcG9uZW50IHR5cGVzIGluIERJICh0ZW1wbGF0ZXMgbGFjayB2aWV3IGNvbnRleHQpXG4gIGZvciAoY29uc3QgW2tleSwgdmFsdWVdIG9mIE9iamVjdC5lbnRyaWVzKHNsb3RzKSkge1xuICAgIGlmIChpc0NvbXBvbmVudFR5cGUodmFsdWUpKSB7XG4gICAgICBzbG90TWFwLnNldChrZXksIHsgY29tcG9uZW50OiB2YWx1ZSBhcyBUeXBlPGFueT4gfSk7XG4gICAgfVxuICB9XG4gIFxuICByZXR1cm4ge1xuICAgIHByb3ZpZGU6IFNMT1RfQ09ORklHLFxuICAgIHVzZVZhbHVlOiBzbG90TWFwXG4gIH07XG59XG5cbi8qKlxuICogR2V0cyBzbG90IGNvbmZpZ3VyYXRpb24gZnJvbSBESS5cbiAqIE11c3QgYmUgY2FsbGVkIHdpdGhpbiBhbiBpbmplY3Rpb24gY29udGV4dC5cbiAqIFxuICogQGV4YW1wbGVcbiAqIGBgYHR5cGVzY3JpcHRcbiAqIGV4cG9ydCBjbGFzcyBNeUNvbXBvbmVudCB7XG4gKiAgIHNsb3RzID0gZ2V0U2xvdENvbmZpZygpO1xuICogICBcbiAqICAgbmdPbkluaXQoKSB7XG4gKiAgICAgY29uc3Qgc2VuZEJ1dHRvbiA9IHRoaXMuc2xvdHM/LmdldCgnc2VuZEJ1dHRvbicpO1xuICogICB9XG4gKiB9XG4gKiBgYGBcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldFNsb3RDb25maWcoKTogUmVhZG9ubHlNYXA8c3RyaW5nLCBTbG90UmVnaXN0cnlFbnRyeT4gfCBudWxsIHtcbiAgcmV0dXJuIGluamVjdChTTE9UX0NPTkZJRywgeyBvcHRpb25hbDogdHJ1ZSB9KTtcbn1cblxuLyoqXG4gKiBDcmVhdGVzIGEgcmVuZGVyIGZ1bmN0aW9uIGZvciBhIHNwZWNpZmljIHNsb3QuXG4gKiBVc2VmdWwgZm9yIGNyZWF0aW5nIHJldXNhYmxlIHNsb3QgcmVuZGVyZXJzLlxuICogXG4gKiBAZXhhbXBsZVxuICogYGBgdHlwZXNjcmlwdFxuICogY29uc3QgcmVuZGVyU2VuZEJ1dHRvbiA9IGNyZWF0ZVNsb3RSZW5kZXJlcihcbiAqICAgRGVmYXVsdFNlbmRCdXR0b24sXG4gKiAgICdzZW5kQnV0dG9uJ1xuICogKTtcbiAqIFxuICogLy8gTGF0ZXIgaW4gdGVtcGxhdGVcbiAqIHJlbmRlclNlbmRCdXR0b24odGhpcy52aWV3Q29udGFpbmVyLCB0aGlzLnNlbmRCdXR0b25PdmVycmlkZSk7XG4gKiBgYGBcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZVNsb3RSZW5kZXJlcjxUPihcbiAgZGVmYXVsdENvbXBvbmVudDogVHlwZTxUPixcbiAgc2xvdE5hbWU/OiBzdHJpbmdcbikge1xuICAvLyBHZXQgY29uZmlnIGluIHRoZSBpbmplY3Rpb24gY29udGV4dCB3aGVuIHRoZSByZW5kZXJlciBpcyBjcmVhdGVkXG4gIGNvbnN0IGNvbmZpZyA9IHNsb3ROYW1lID8gZ2V0U2xvdENvbmZpZygpIDogbnVsbDtcbiAgXG4gIHJldHVybiAoXG4gICAgdmlld0NvbnRhaW5lcjogVmlld0NvbnRhaW5lclJlZixcbiAgICBzbG90PzogU2xvdFZhbHVlPFQ+LFxuICAgIHByb3BzPzogUGFydGlhbDxUPixcbiAgICBvdXRwdXRzPzogUmVjb3JkPHN0cmluZywgKGV2ZW50OiBhbnkpID0+IHZvaWQ+XG4gICkgPT4ge1xuICAgIC8vIENoZWNrIERJIGZvciBvdmVycmlkZXMgaWYgc2xvdCBuYW1lIHByb3ZpZGVkXG4gICAgaWYgKHNsb3ROYW1lICYmICFzbG90ICYmIGNvbmZpZykge1xuICAgICAgY29uc3QgZW50cnkgPSBjb25maWcuZ2V0KHNsb3ROYW1lKTtcbiAgICAgIGlmIChlbnRyeSkge1xuICAgICAgICBpZiAoZW50cnkuY29tcG9uZW50KSBzbG90ID0gZW50cnkuY29tcG9uZW50O1xuICAgICAgICBlbHNlIGlmIChlbnRyeS50ZW1wbGF0ZSkgc2xvdCA9IGVudHJ5LnRlbXBsYXRlO1xuICAgICAgfVxuICAgIH1cbiAgICBcbiAgICByZXR1cm4gcmVuZGVyU2xvdCh2aWV3Q29udGFpbmVyLCB7XG4gICAgICBzbG90LFxuICAgICAgZGVmYXVsdENvbXBvbmVudCxcbiAgICAgIHByb3BzLFxuICAgICAgb3V0cHV0c1xuICAgIH0pO1xuICB9O1xufVxuIl19
|
|
235
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2xvdC51dGlscy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9saWIvc2xvdHMvc2xvdC51dGlscy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBRUwsV0FBVyxFQUtYLE1BQU0sR0FDUCxNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBSUwsV0FBVyxHQUNaLE1BQU0sY0FBYyxDQUFDO0FBRXRCOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQXVCRztBQUNILE1BQU0sVUFBVSxVQUFVLENBQ3hCLGFBQStCLEVBQy9CLE9BQTZCO0lBRTdCLE1BQU0sRUFBRSxJQUFJLEVBQUUsZ0JBQWdCLEVBQUUsS0FBSyxFQUFFLFFBQVEsRUFBRSxPQUFPLEVBQUUsR0FBRyxPQUFPLENBQUM7SUFFckUsYUFBYSxDQUFDLEtBQUssRUFBRSxDQUFDO0lBRXRCLE1BQU0sYUFBYSxHQUFHLElBQUksSUFBSSxnQkFBZ0IsQ0FBQztJQUMvQyxNQUFNLGlCQUFpQixHQUFHLFFBQVEsSUFBSSxhQUFhLENBQUMsUUFBUSxDQUFDO0lBRTdELElBQUksYUFBYSxZQUFZLFdBQVcsRUFBRSxDQUFDO1FBQ3pDLCtCQUErQjtRQUMvQixPQUFPLGFBQWEsQ0FBQyxrQkFBa0IsQ0FBQyxhQUFhLEVBQUU7WUFDckQsU0FBUyxFQUFFLEtBQUssSUFBSSxFQUFFO1lBQ3RCLEtBQUssRUFBRSxLQUFLLElBQUksRUFBRTtTQUNaLENBQUMsQ0FBQztJQUNaLENBQUM7U0FBTSxJQUFJLGVBQWUsQ0FBQyxhQUFhLENBQUMsRUFBRSxDQUFDO1FBQzFDLGdEQUFnRDtRQUNoRCxJQUFJLENBQUM7WUFDSCxPQUFPLGVBQWUsQ0FDcEIsYUFBYSxFQUNiLGFBQXdCLEVBQ3hCLEtBQUssRUFDTCxpQkFBaUIsRUFDakIsT0FBTyxDQUNSLENBQUM7UUFDSixDQUFDO1FBQUMsT0FBTyxLQUFLLEVBQUUsQ0FBQztZQUNmLE9BQU8sQ0FBQyxJQUFJLENBQUMsNkJB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QUk7WUFDSixnQkFBZ0I7WUFDaEIsS0FBSztZQUNMLE9BQU87U0FDUixDQUFDLENBQUM7SUFDTCxDQUFDLENBQUM7QUFDSixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgVHlwZSxcbiAgVGVtcGxhdGVSZWYsXG4gIFZpZXdDb250YWluZXJSZWYsXG4gIENvbXBvbmVudFJlZixcbiAgRW1iZWRkZWRWaWV3UmVmLFxuICBJbmplY3RvcixcbiAgaW5qZWN0LFxufSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xuaW1wb3J0IHtcbiAgU2xvdFZhbHVlLFxuICBSZW5kZXJTbG90T3B0aW9ucyxcbiAgU2xvdFJlZ2lzdHJ5RW50cnksXG4gIFNMT1RfQ09ORklHLFxufSBmcm9tIFwiLi9zbG90LnR5cGVzXCI7XG5cbi8qKlxuICogUmVuZGVycyBhIHNsb3QgdmFsdWUgaW50byBhIFZpZXdDb250YWluZXJSZWYuXG4gKiBUaGlzIGlzIHRoZSBjb3JlIHV0aWxpdHkgZm9yIHNsb3QgcmVuZGVyaW5nLlxuICpcbiAqIEBwYXJhbSB2aWV3Q29udGFpbmVyIC0gVGhlIFZpZXdDb250YWluZXJSZWYgdG8gcmVuZGVyIGludG9cbiAqIEBwYXJhbSBvcHRpb25zIC0gT3B0aW9ucyBmb3IgcmVuZGVyaW5nIHRoZSBzbG90XG4gKiBAcmV0dXJucyBUaGUgY3JlYXRlZCBjb21wb25lbnQgb3IgZW1iZWRkZWQgdmlldyByZWZlcmVuY2VcbiAqXG4gKiBAZXhhbXBsZVxuICogYGBgdHlwZXNjcmlwdFxuICogZXhwb3J0IGNsYXNzIE15Q29tcG9uZW50IHtcbiAqICAgQFZpZXdDaGlsZCgnY29udGFpbmVyJywgeyByZWFkOiBWaWV3Q29udGFpbmVyUmVmIH0pIGNvbnRhaW5lciE6IFZpZXdDb250YWluZXJSZWY7XG4gKlxuICogICByZW5kZXJCdXR0b24oKSB7XG4gKiAgICAgcmVuZGVyU2xvdCh0aGlzLmNvbnRhaW5lciwge1xuICogICAgICAgc2xvdDogdGhpcy5idXR0b25PdmVycmlkZSxcbiAqICAgICAgIGRlZmF1bHRDb21wb25lbnQ6IERlZmF1bHRCdXR0b24sXG4gKiAgICAgICBwcm9wczogeyB0ZXh0OiAnQ2xpY2sgbWUnIH0sXG4gKiAgICAgICBvdXRwdXRzOiB7IGNsaWNrOiAoZXZlbnQpID0+IHRoaXMuaGFuZGxlQ2xpY2soZXZlbnQpIH1cbiAqICAgICB9KTtcbiAqICAgfVxuICogfVxuICogYGBgXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiByZW5kZXJTbG90PFQgPSBhbnk+KFxuICB2aWV3Q29udGFpbmVyOiBWaWV3Q29udGFpbmVyUmVmLFxuICBvcHRpb25zOiBSZW5kZXJTbG90T3B0aW9uczxUPlxuKTogQ29tcG9uZW50UmVmPFQ+IHwgRW1iZWRkZWRWaWV3UmVmPFQ+IHwgbnVsbCB7XG4gIGNvbnN0IHsgc2xvdCwgZGVmYXVsdENvbXBvbmVudCwgcHJvcHMsIGluamVjdG9yLCBvdXRwdXRzIH0gPSBvcHRpb25zO1xuXG4gIHZpZXdDb250YWluZXIuY2xlYXIoKTtcblxuICBjb25zdCBlZmZlY3RpdmVTbG90ID0gc2xvdCA/PyBkZWZhdWx0Q29tcG9uZW50O1xuICBjb25zdCBlZmZlY3RpdmVJbmplY3RvciA9IGluamVjdG9yID8/IHZpZXdDb250YWluZXIuaW5qZWN0b3I7XG5cbiAgaWYgKGVmZmVjdGl2ZVNsb3QgaW5zdGFuY2VvZiBUZW1wbGF0ZVJlZikge1xuICAgIC8vIFRlbXBsYXRlUmVmOiByZW5kZXIgdGVtcGxhdGVcbiAgICByZXR1cm4gdmlld0NvbnRhaW5lci5jcmVhdGVFbWJlZGRlZFZpZXcoZWZmZWN0aXZlU2xvdCwge1xuICAgICAgJGltcGxpY2l0OiBwcm9wcyA/PyB7fSxcbiAgICAgIHByb3BzOiBwcm9wcyA/PyB7fSxcbiAgICB9IGFzIGFueSk7XG4gIH0gZWxzZSBpZiAoaXNDb21wb25lbnRUeXBlKGVmZmVjdGl2ZVNsb3QpKSB7XG4gICAgLy8gQ29tcG9uZW50IHR5cGUgLSB3cmFwIGluIHRyeS9jYXRjaCBmb3Igc2FmZXR5XG4gICAgdHJ5IHtcbiAgICAgIHJldHVybiBjcmVhdGVDb21wb25lbnQoXG4gICAgICAgIHZpZXdDb250YWluZXIsXG4gICAgICAgIGVmZmVjdGl2ZVNsb3QgYXMgVHlwZTxUPixcbiAgICAgICAgcHJvcHMsXG4gICAgICAgIGVmZmVjdGl2ZUluamVjdG9yLFxuICAgICAgICBvdXRwdXRzXG4gICAgICApO1xuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICBjb25zb2xlLndhcm4oXCJGYWlsZWQgdG8gY3JlYXRlIGNvbXBvbmVudDpcIiwgZWZmZWN0aXZlU2xvdCwgZXJyb3IpO1xuICAgICAgLy8gRmFsbCB0aHJvdWdoIHRvIGRlZmF1bHQgY29tcG9uZW50XG4gICAgfVxuICB9XG5cbiAgLy8gRGVmYXVsdDogcmVuZGVyIGRlZmF1bHQgY29tcG9uZW50IGlmIHByb3ZpZGVkXG4gIHJldHVybiBkZWZhdWx0Q29tcG9uZW50XG4gICAgPyBjcmVhdGVDb21wb25lbnQoXG4gICAgICAgIHZpZXdDb250YWluZXIsXG4gICAgICAgIGRlZmF1bHRDb21wb25lbnQsXG4gICAgICAgIHByb3BzLFxuICAgICAgICBlZmZlY3RpdmVJbmplY3RvcixcbiAgICAgICAgb3V0cHV0c1xuICAgICAgKVxuICAgIDogbnVsbDtcbn1cblxuLyoqXG4gKiBDcmVhdGVzIGEgY29tcG9uZW50IGFuZCBhcHBsaWVzIHByb3BlcnRpZXMuXG4gKi9cbmZ1bmN0aW9uIGNyZWF0ZUNvbXBvbmVudDxUPihcbiAgdmlld0NvbnRhaW5lcjogVmlld0NvbnRhaW5lclJlZixcbiAgY29tcG9uZW50OiBUeXBlPFQ+LFxuICBwcm9wcz86IFBhcnRpYWw8VD4sXG4gIGluamVjdG9yPzogSW5qZWN0b3IsXG4gIG91dHB1dHM/OiBSZWNvcmQ8c3RyaW5nLCAoZXZlbnQ6IGFueSkgPT4gdm9pZD5cbik6IENvbXBvbmVudFJlZjxUPiB7XG4gIGNvbnN0IGNvbXBvbmVudFJlZiA9IHZpZXdDb250YWluZXIuY3JlYXRlQ29tcG9uZW50KGNvbXBvbmVudCwge1xuICAgIGluamVjdG9yLFxuICB9KTtcblxuICBpZiAocHJvcHMpIHtcbiAgICAvLyBBcHBseSBwcm9wcyB1c2luZyBzZXRJbnB1dCwgYnV0IG9ubHkgZm9yIGRlY2xhcmVkIGlucHV0c1xuICAgIGNvbnN0IGNtcERlZjogYW55ID0gKGNvbXBvbmVudCBhcyBhbnkpLsm1Y21wO1xuICAgIGNvbnN0IGRlY2xhcmVkSW5wdXRzID0gbmV3IFNldDxzdHJpbmc+KE9iamVjdC5rZXlzKGNtcERlZj8uaW5wdXRzID8/IHt9KSk7XG5cbiAgICBpZiAoZGVjbGFyZWRJbnB1dHMuaGFzKFwicHJvcHNcIikpIHtcbiAgICAgIGNvbXBvbmVudFJlZi5zZXRJbnB1dChcInByb3BzXCIsIHByb3BzIGFzIGFueSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGZvciAoY29uc3Qga2V5IGluIHByb3BzKSB7XG4gICAgICAgIGlmIChkZWNsYXJlZElucHV0cy5oYXMoa2V5KSkge1xuICAgICAgICAgIGNvbnN0IHZhbHVlID0gKHByb3BzIGFzIGFueSlba2V5XTtcbiAgICAgICAgICBjb21wb25lbnRSZWYuc2V0SW5wdXQoa2V5LCB2YWx1ZSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBpZiAob3V0cHV0cykge1xuICAgIC8vIFdpcmUgdXAgb3V0cHV0IGV2ZW50IGhhbmRsZXJzIHdpdGggcHJvcGVyIGNsZWFudXBcbiAgICBjb25zdCBpbnN0YW5jZSA9IGNvbXBvbmVudFJlZi5pbnN0YW5jZSBhcyBhbnk7XG4gICAgY29uc3Qgc3Vic2NyaXB0aW9uczogYW55W10gPSBbXTtcblxuICAgIGZvciAoY29uc3QgW2V2ZW50TmFtZSwgaGFuZGxlcl0gb2YgT2JqZWN0LmVudHJpZXMob3V0cHV0cykpIHtcbiAgICAgIGlmIChpbnN0YW5jZVtldmVudE5hbWVdPy5zdWJzY3JpYmUpIHtcbiAgICAgICAgY29uc3Qgc3Vic2NyaXB0aW9uID0gaW5zdGFuY2VbZXZlbnROYW1lXS5zdWJzY3JpYmUoaGFuZGxlcik7XG4gICAgICAgIHN1YnNjcmlwdGlvbnMucHVzaChzdWJzY3JpcHRpb24pO1xuICAgICAgfVxuICAgIH1cblxuICAgIC8vIFJlZ2lzdGVyIGNsZWFudXAgb24gY29tcG9uZW50IGRlc3Ryb3lcbiAgICBjb21wb25lbnRSZWYub25EZXN0cm95KCgpID0+IHtcbiAgICAgIHN1YnNjcmlwdGlvbnMuZm9yRWFjaCgoc3ViKSA9PiBzdWIudW5zdWJzY3JpYmUoKSk7XG4gICAgfSk7XG4gIH1cblxuICAvLyBUcmlnZ2VyIGNoYW5nZSBkZXRlY3Rpb25cbiAgY29tcG9uZW50UmVmLmNoYW5nZURldGVjdG9yUmVmLmRldGVjdENoYW5nZXMoKTtcblxuICByZXR1cm4gY29tcG9uZW50UmVmO1xufVxuXG4vKipcbiAqIENoZWNrcyBpZiBhIHZhbHVlIGlzIGEgY29tcG9uZW50IHR5cGUuXG4gKiBTaW1wbGlmaWVkIGNoZWNrIC0gcmVseSBvbiB0cnkvY2F0Y2ggZm9yIGFjdHVhbCB2YWxpZGF0aW9uLlxuICovXG5leHBvcnQgZnVuY3Rpb24gaXNDb21wb25lbnRUeXBlKHZhbHVlOiBhbnkpOiBib29sZWFuIHtcbiAgLy8gQXJyb3cgZnVuY3Rpb25zIGFuZCByZWd1bGFyIGZ1bmN0aW9ucyB3aXRob3V0IGEgcHJvdG90eXBlIGFyZSBub3QgY29tcG9uZW50c1xuICByZXR1cm4gdHlwZW9mIHZhbHVlID09PSBcImZ1bmN0aW9uXCIgJiYgISF2YWx1ZS5wcm90b3R5cGU7XG59XG5cbi8qKlxuICogQ2hlY2tzIGlmIGEgdmFsdWUgaXMgYSB2YWxpZCBzbG90IHZhbHVlLlxuICovXG5leHBvcnQgZnVuY3Rpb24gaXNTbG90VmFsdWUodmFsdWU6IGFueSk6IHZhbHVlIGlzIFNsb3RWYWx1ZSB7XG4gIHJldHVybiB2YWx1ZSBpbnN0YW5jZW9mIFRlbXBsYXRlUmVmIHx8IGlzQ29tcG9uZW50VHlwZSh2YWx1ZSk7XG59XG5cbi8qKlxuICogTm9ybWFsaXplcyBhIHNsb3QgdmFsdWUgdG8gYSBjb25zaXN0ZW50IGZvcm1hdC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIG5vcm1hbGl6ZVNsb3RWYWx1ZTxUID0gYW55PihcbiAgdmFsdWU6IFNsb3RWYWx1ZTxUPiB8IHVuZGVmaW5lZCxcbiAgZGVmYXVsdENvbXBvbmVudDogVHlwZTxUPiB8IHVuZGVmaW5lZFxuKTogU2xvdFJlZ2lzdHJ5RW50cnk8VD4ge1xuICBpZiAoIXZhbHVlKSB7XG4gICAgcmV0dXJuIHsgY29tcG9uZW50OiBkZWZhdWx0Q29tcG9uZW50IH07XG4gIH1cblxuICBpZiAodmFsdWUgaW5zdGFuY2VvZiBUZW1wbGF0ZVJlZikge1xuICAgIHJldHVybiB7IHRlbXBsYXRlOiB2YWx1ZSB9O1xuICB9XG5cbiAgaWYgKGlzQ29tcG9uZW50VHlwZSh2YWx1ZSkpIHtcbiAgICByZXR1cm4geyBjb21wb25lbnQ6IHZhbHVlIGFzIFR5cGU8VD4gfTtcbiAgfVxuXG4gIHJldHVybiB7IGNvbXBvbmVudDogZGVmYXVsdENvbXBvbmVudCB9O1xufVxuXG4vKipcbiAqIENyZWF0ZXMgYSBzbG90IGNvbmZpZ3VyYXRpb24gbWFwIGZvciBhIGNvbXBvbmVudC5cbiAqIFxuICogQGV4YW1wbGVcbiAqIGBgYHR5cGVzY3JpcHRcbiAqIGNvbnN0IHNsb3RzID0gY3JlYXRlU2xvdENvbmZpZyh7XG4gICAgc3RhbmRhbG9uZTogdHJ1ZSxcbiogICBzZW5kQnV0dG9uOiBDdXN0b21TZW5kQnV0dG9uLFxuICogICB0b29sYmFyOiAnY3VzdG9tLXRvb2xiYXItY2xhc3MnLFxuICogICBmb290ZXI6IGZvb3RlclRlbXBsYXRlXG4gKiB9LCB7XG4gKiAgIHNlbmRCdXR0b246IERlZmF1bHRTZW5kQnV0dG9uLFxuICogICB0b29sYmFyOiBEZWZhdWx0VG9vbGJhcixcbiAqICAgZm9vdGVyOiBEZWZhdWx0Rm9vdGVyXG4gKiB9KTtcbiAqIGBgYFxuICovXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlU2xvdENvbmZpZzxUIGV4dGVuZHMgUmVjb3JkPHN0cmluZywgVHlwZTxhbnk+Pj4oXG4gIG92ZXJyaWRlczogUGFydGlhbDxSZWNvcmQ8a2V5b2YgVCwgU2xvdFZhbHVlPj4sXG4gIGRlZmF1bHRzOiBUXG4pOiBNYXA8a2V5b2YgVCwgU2xvdFJlZ2lzdHJ5RW50cnk+IHtcbiAgY29uc3QgY29uZmlnID0gbmV3IE1hcDxrZXlvZiBULCBTbG90UmVnaXN0cnlFbnRyeT4oKTtcblxuICBmb3IgKGNvbnN0IGtleSBpbiBkZWZhdWx0cykge1xuICAgIGNvbnN0IG92ZXJyaWRlID0gb3ZlcnJpZGVzW2tleV07XG4gICAgY29uc3QgZGVmYXVsdENvbXBvbmVudCA9IGRlZmF1bHRzW2tleV07XG4gICAgY29uZmlnLnNldChrZXksIG5vcm1hbGl6ZVNsb3RWYWx1ZShvdmVycmlkZSwgZGVmYXVsdENvbXBvbmVudCkpO1xuICB9XG5cbiAgcmV0dXJuIGNvbmZpZztcbn1cblxuLyoqXG4gKiBQcm92aWRlcyBzbG90IGNvbmZpZ3VyYXRpb24gdG8gY2hpbGQgY29tcG9uZW50cyB2aWEgREkuXG4gKiBcbiAqIEBleGFtcGxlXG4gKiBgYGB0eXBlc2NyaXB0XG4gKiBAQ29tcG9uZW50KHtcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiogICBwcm92aWRlcnM6IFtcbiAqICAgICBwcm92aWRlU2xvdHMoe1xuICogICAgICAgc2VuZEJ1dHRvbjogQ3VzdG9tU2VuZEJ1dHRvbixcbiAqICAgICAgIHRvb2xiYXI6IEN1c3RvbVRvb2xiYXJcbiAqICAgICB9KVxuICogICBdXG4gKiB9KVxuICogYGBgXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBwcm92aWRlU2xvdHMoc2xvdHM6IFJlY29yZDxzdHJpbmcsIFR5cGU8YW55Pj4pIHtcbiAgY29uc3Qgc2xvdE1hcCA9IG5ldyBNYXA8c3RyaW5nLCBTbG90UmVnaXN0cnlFbnRyeT4oKTtcblxuICAvLyBPbmx5IGFjY2VwdCBjb21wb25lbnQgdHlwZXMgaW4gREkgKHRlbXBsYXRlcyBsYWNrIHZpZXcgY29udGV4dClcbiAgZm9yIChjb25zdCBba2V5LCB2YWx1ZV0gb2YgT2JqZWN0LmVudHJpZXMoc2xvdHMpKSB7XG4gICAgaWYgKGlzQ29tcG9uZW50VHlwZSh2YWx1ZSkpIHtcbiAgICAgIHNsb3RNYXAuc2V0KGtleSwgeyBjb21wb25lbnQ6IHZhbHVlIGFzIFR5cGU8YW55PiB9KTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4ge1xuICAgIHByb3ZpZGU6IFNMT1RfQ09ORklHLFxuICAgIHVzZVZhbHVlOiBzbG90TWFwLFxuICB9O1xufVxuXG4vKipcbiAqIEdldHMgc2xvdCBjb25maWd1cmF0aW9uIGZyb20gREkuXG4gKiBNdXN0IGJlIGNhbGxlZCB3aXRoaW4gYW4gaW5qZWN0aW9uIGNvbnRleHQuXG4gKlxuICogQGV4YW1wbGVcbiAqIGBgYHR5cGVzY3JpcHRcbiAqIGV4cG9ydCBjbGFzcyBNeUNvbXBvbmVudCB7XG4gKiAgIHNsb3RzID0gZ2V0U2xvdENvbmZpZygpO1xuICpcbiAqICAgbmdPbkluaXQoKSB7XG4gKiAgICAgY29uc3Qgc2VuZEJ1dHRvbiA9IHRoaXMuc2xvdHM/LmdldCgnc2VuZEJ1dHRvbicpO1xuICogICB9XG4gKiB9XG4gKiBgYGBcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldFNsb3RDb25maWcoKTogUmVhZG9ubHlNYXA8c3RyaW5nLCBTbG90UmVnaXN0cnlFbnRyeT4gfCBudWxsIHtcbiAgcmV0dXJuIGluamVjdChTTE9UX0NPTkZJRywgeyBvcHRpb25hbDogdHJ1ZSB9KTtcbn1cblxuLyoqXG4gKiBDcmVhdGVzIGEgcmVuZGVyIGZ1bmN0aW9uIGZvciBhIHNwZWNpZmljIHNsb3QuXG4gKiBVc2VmdWwgZm9yIGNyZWF0aW5nIHJldXNhYmxlIHNsb3QgcmVuZGVyZXJzLlxuICpcbiAqIEBleGFtcGxlXG4gKiBgYGB0eXBlc2NyaXB0XG4gKiBjb25zdCByZW5kZXJTZW5kQnV0dG9uID0gY3JlYXRlU2xvdFJlbmRlcmVyKFxuICogICBEZWZhdWx0U2VuZEJ1dHRvbixcbiAqICAgJ3NlbmRCdXR0b24nXG4gKiApO1xuICpcbiAqIC8vIExhdGVyIGluIHRlbXBsYXRlXG4gKiByZW5kZXJTZW5kQnV0dG9uKHRoaXMudmlld0NvbnRhaW5lciwgdGhpcy5zZW5kQnV0dG9uT3ZlcnJpZGUpO1xuICogYGBgXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVTbG90UmVuZGVyZXI8VD4oXG4gIGRlZmF1bHRDb21wb25lbnQ6IFR5cGU8VD4sXG4gIHNsb3ROYW1lPzogc3RyaW5nXG4pIHtcbiAgLy8gR2V0IGNvbmZpZyBpbiB0aGUgaW5qZWN0aW9uIGNvbnRleHQgd2hlbiB0aGUgcmVuZGVyZXIgaXMgY3JlYXRlZFxuICBjb25zdCBjb25maWcgPSBzbG90TmFtZSA/IGdldFNsb3RDb25maWcoKSA6IG51bGw7XG5cbiAgcmV0dXJuIChcbiAgICB2aWV3Q29udGFpbmVyOiBWaWV3Q29udGFpbmVyUmVmLFxuICAgIHNsb3Q/OiBTbG90VmFsdWU8VD4sXG4gICAgcHJvcHM/OiBQYXJ0aWFsPFQ+LFxuICAgIG91dHB1dHM/OiBSZWNvcmQ8c3RyaW5nLCAoZXZlbnQ6IGFueSkgPT4gdm9pZD5cbiAgKSA9PiB7XG4gICAgLy8gQ2hlY2sgREkgZm9yIG92ZXJyaWRlcyBpZiBzbG90IG5hbWUgcHJvdmlkZWRcbiAgICBpZiAoc2xvdE5hbWUgJiYgIXNsb3QgJiYgY29uZmlnKSB7XG4gICAgICBjb25zdCBlbnRyeSA9IGNvbmZpZy5nZXQoc2xvdE5hbWUpO1xuICAgICAgaWYgKGVudHJ5KSB7XG4gICAgICAgIGlmIChlbnRyeS5jb21wb25lbnQpIHNsb3QgPSBlbnRyeS5jb21wb25lbnQ7XG4gICAgICAgIGVsc2UgaWYgKGVudHJ5LnRlbXBsYXRlKSBzbG90ID0gZW50cnkudGVtcGxhdGU7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIHJlbmRlclNsb3Qodmlld0NvbnRhaW5lciwge1xuICAgICAgc2xvdCxcbiAgICAgIGRlZmF1bHRDb21wb25lbnQsXG4gICAgICBwcm9wcyxcbiAgICAgIG91dHB1dHMsXG4gICAgfSk7XG4gIH07XG59XG4iXX0=
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import { DestroyRef, Injector, inject } from "@angular/core";
|
|
2
|
+
import { CopilotKit } from "./copilotkit";
|
|
3
|
+
export function registerRenderToolCall(renderToolCall) {
|
|
4
|
+
const copilotKit = inject(CopilotKit);
|
|
5
|
+
const destroyRef = inject(DestroyRef);
|
|
6
|
+
copilotKit.addRenderToolCall(renderToolCall);
|
|
7
|
+
destroyRef.onDestroy(() => {
|
|
8
|
+
copilotKit.removeTool(renderToolCall.name, renderToolCall.agentId);
|
|
9
|
+
});
|
|
10
|
+
}
|
|
11
|
+
export function registerFrontendTool(frontendTool) {
|
|
12
|
+
const injector = inject(Injector);
|
|
13
|
+
const destroyRef = inject(DestroyRef);
|
|
14
|
+
const copilotKit = inject(CopilotKit);
|
|
15
|
+
copilotKit.addFrontendTool({
|
|
16
|
+
...frontendTool,
|
|
17
|
+
injector,
|
|
18
|
+
});
|
|
19
|
+
destroyRef.onDestroy(() => {
|
|
20
|
+
copilotKit.removeTool(frontendTool.name);
|
|
21
|
+
});
|
|
22
|
+
}
|
|
23
|
+
export function registerHumanInTheLoop(humanInTheLoop) {
|
|
24
|
+
const destroyRef = inject(DestroyRef);
|
|
25
|
+
const copilotKit = inject(CopilotKit);
|
|
26
|
+
copilotKit.addHumanInTheLoop(humanInTheLoop);
|
|
27
|
+
destroyRef.onDestroy(() => {
|
|
28
|
+
copilotKit.removeTool(humanInTheLoop.name);
|
|
29
|
+
});
|
|
30
|
+
}
|
|
31
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG9vbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvbGliL3Rvb2xzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsUUFBUSxFQUFnQixNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFHM0UsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGNBQWMsQ0FBQztBQXlGMUMsTUFBTSxVQUFVLHNCQUFzQixDQUVwQyxjQUEwQztJQUMxQyxNQUFNLFVBQVUsR0FBRyxNQUFNLENBQUMsVUFBVSxDQUFDLENBQUM7SUFDdEMsTUFBTSxVQUFVLEdBQUcsTUFBTSxDQUFDLFVBQVUsQ0FBQyxDQUFDO0lBRXRDLFVBQVUsQ0FBQyxpQkFBaUIsQ0FBQyxjQUFjLENBQUMsQ0FBQztJQUU3QyxVQUFVLENBQUMsU0FBUyxDQUFDLEdBQUcsRUFBRTtRQUN4QixVQUFVLENBQUMsVUFBVSxDQUFDLGNBQWMsQ0FBQyxJQUFJLEVBQUUsY0FBYyxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQ3JFLENBQUMsQ0FBQyxDQUFDO0FBQ0wsQ0FBQztBQUVELE1BQU0sVUFBVSxvQkFBb0IsQ0FFbEMsWUFBc0M7SUFDdEMsTUFBTSxRQUFRLEdBQUcsTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBQ2xDLE1BQU0sVUFBVSxHQUFHLE1BQU0sQ0FBQyxVQUFVLENBQUMsQ0FBQztJQUN0QyxNQUFNLFVBQVUsR0FBRyxNQUFNLENBQUMsVUFBVSxDQUFDLENBQUM7SUFFdEMsVUFBVSxDQUFDLGVBQWUsQ0FBQztRQUN6QixHQUFJLFlBQW1DO1FBQ3ZDLFFBQVE7S0FDVCxDQUFDLENBQUM7SUFFSCxVQUFVLENBQUMsU0FBUyxDQUFDLEdBQUcsRUFBRTtRQUN4QixVQUFVLENBQUMsVUFBVSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUMzQyxDQUFDLENBQUMsQ0FBQztBQUNMLENBQUM7QUFFRCxNQUFNLFVBQVUsc0JBQXNCLENBRXBDLGNBQTBDO0lBQzFDLE1BQU0sVUFBVSxHQUFHLE1BQU0sQ0FBQyxVQUFVLENBQUMsQ0FBQztJQUN0QyxNQUFNLFVBQVUsR0FBRyxNQUFNLENBQUMsVUFBVSxDQUFDLENBQUM7SUFFdEMsVUFBVSxDQUFDLGlCQUFpQixDQUFDLGNBQWMsQ0FBQyxDQUFDO0lBRTdDLFVBQVUsQ0FBQyxTQUFTLENBQUMsR0FBRyxFQUFFO1FBQ3hCLFVBQVUsQ0FBQyxVQUFVLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQzdDLENBQUMsQ0FBQyxDQUFDO0FBQ0wsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IERlc3Ryb3lSZWYsIEluamVjdG9yLCBTaWduYWwsIFR5cGUsIGluamVjdCB9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XG5pbXBvcnQgeyBGcm9udGVuZFRvb2wgfSBmcm9tIFwiQGNvcGlsb3RraXRuZXh0L2NvcmVcIjtcbmltcG9ydCB7IHogfSBmcm9tIFwiem9kXCI7XG5pbXBvcnQgeyBDb3BpbG90S2l0IH0gZnJvbSBcIi4vY29waWxvdGtpdFwiO1xuXG5leHBvcnQgdHlwZSBBbmd1bGFyVG9vbENhbGw8XG4gIEFyZ3MgZXh0ZW5kcyBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiA9IFJlY29yZDxzdHJpbmcsIHVua25vd24+LFxuPiA9XG4gIHwge1xuICAgICAgYXJnczogUGFydGlhbDxBcmdzPjtcbiAgICAgIHN0YXR1czogXCJpbi1wcm9ncmVzc1wiO1xuICAgICAgcmVzdWx0OiB1bmRlZmluZWQ7XG4gICAgfVxuICB8IHtcbiAgICAgIGFyZ3M6IEFyZ3M7XG4gICAgICBzdGF0dXM6IFwiZXhlY3V0aW5nXCI7XG4gICAgICByZXN1bHQ6IHVuZGVmaW5lZDtcbiAgICB9XG4gIHwge1xuICAgICAgYXJnczogQXJncztcbiAgICAgIHN0YXR1czogXCJjb21wbGV0ZVwiO1xuICAgICAgcmVzdWx0OiBzdHJpbmc7XG4gICAgfTtcblxuZXhwb3J0IHR5cGUgSHVtYW5JblRoZUxvb3BUb29sQ2FsbDxcbiAgQXJncyBleHRlbmRzIFJlY29yZDxzdHJpbmcsIHVua25vd24+ID0gUmVjb3JkPHN0cmluZywgdW5rbm93bj4sXG4+ID1cbiAgfCB7XG4gICAgICBhcmdzOiBQYXJ0aWFsPEFyZ3M+O1xuICAgICAgc3RhdHVzOiBcImluLXByb2dyZXNzXCI7XG4gICAgICByZXN1bHQ6IHVuZGVmaW5lZDtcbiAgICB9XG4gIHwge1xuICAgICAgYXJnczogQXJncztcbiAgICAgIHN0YXR1czogXCJleGVjdXRpbmdcIjtcbiAgICAgIHJlc3VsdDogdW5kZWZpbmVkO1xuICAgICAgcmVzcG9uZDogKHJlc3VsdDogdW5rbm93bikgPT4gdm9pZDtcbiAgICB9XG4gIHwge1xuICAgICAgYXJnczogQXJncztcbiAgICAgIHN0YXR1czogXCJjb21wbGV0ZVwiO1xuICAgICAgcmVzdWx0OiBzdHJpbmc7XG4gICAgfTtcblxuZXhwb3J0IGludGVyZmFjZSBUb29sUmVuZGVyZXI8XG4gIEFyZ3MgZXh0ZW5kcyBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiA9IFJlY29yZDxzdHJpbmcsIHVua25vd24+LFxuPiB7XG4gIHRvb2xDYWxsOiBTaWduYWw8QW5ndWxhclRvb2xDYWxsPEFyZ3M+Pjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBIdW1hbkluVGhlTG9vcFRvb2xSZW5kZXJlcjxcbiAgQXJncyBleHRlbmRzIFJlY29yZDxzdHJpbmcsIHVua25vd24+ID0gUmVjb3JkPHN0cmluZywgdW5rbm93bj4sXG4+IHtcbiAgdG9vbENhbGw6IFNpZ25hbDxIdW1hbkluVGhlTG9vcFRvb2xDYWxsPEFyZ3M+Pjtcbn1cblxuZXhwb3J0IHR5cGUgQ2xpZW50VG9vbDxcbiAgQXJncyBleHRlbmRzIFJlY29yZDxzdHJpbmcsIHVua25vd24+ID0gUmVjb3JkPHN0cmluZywgdW5rbm93bj4sXG4+ID0gT21pdDxGcm9udGVuZFRvb2w8QXJncz4sIFwiaGFuZGxlclwiPiAmIHtcbiAgcmVuZGVyZXI/OiBUeXBlPFRvb2xSZW5kZXJlcjxBcmdzPj47XG59O1xuXG5leHBvcnQgaW50ZXJmYWNlIFJlbmRlclRvb2xDYWxsQ29uZmlnPFxuICBBcmdzIGV4dGVuZHMgUmVjb3JkPHN0cmluZywgdW5rbm93bj4gPSBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPixcbj4ge1xuICBuYW1lOiBzdHJpbmc7XG4gIGFyZ3M6IHouWm9kVHlwZTxBcmdzPjtcbiAgY29tcG9uZW50OiBUeXBlPFRvb2xSZW5kZXJlcjxBcmdzPj47XG4gIGFnZW50SWQ/OiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgRnJvbnRlbmRUb29sQ29uZmlnPFxuICBBcmdzIGV4dGVuZHMgUmVjb3JkPHN0cmluZywgdW5rbm93bj4gPSBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPixcbj4ge1xuICBuYW1lOiBzdHJpbmc7XG4gIGRlc2NyaXB0aW9uOiBzdHJpbmc7XG4gIGFyZ3M6IHouWm9kVHlwZTxBcmdzPjtcbiAgY29tcG9uZW50OiBUeXBlPFRvb2xSZW5kZXJlcjxBcmdzPj47XG4gIGhhbmRsZXI6IChhcmdzOiBBcmdzKSA9PiBQcm9taXNlPHVua25vd24+O1xuICBhZ2VudElkPzogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEh1bWFuSW5UaGVMb29wQ29uZmlnPFxuICBBcmdzIGV4dGVuZHMgUmVjb3JkPHN0cmluZywgdW5rbm93bj4gPSBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPixcbj4ge1xuICBuYW1lOiBzdHJpbmc7XG4gIGFyZ3M6IHouWm9kVHlwZTxBcmdzPjtcbiAgY29tcG9uZW50OiBUeXBlPEh1bWFuSW5UaGVMb29wVG9vbFJlbmRlcmVyPEFyZ3M+PjtcbiAgdG9vbENhbGw6IFNpZ25hbDxIdW1hbkluVGhlTG9vcFRvb2xDYWxsPEFyZ3M+PjtcbiAgYWdlbnRJZD86IHN0cmluZztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHJlZ2lzdGVyUmVuZGVyVG9vbENhbGw8XG4gIEFyZ3MgZXh0ZW5kcyBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiA9IFJlY29yZDxzdHJpbmcsIHVua25vd24+LFxuPihyZW5kZXJUb29sQ2FsbDogUmVuZGVyVG9vbENhbGxDb25maWc8QXJncz4pOiB2b2lkIHtcbiAgY29uc3QgY29waWxvdEtpdCA9IGluamVjdChDb3BpbG90S2l0KTtcbiAgY29uc3QgZGVzdHJveVJlZiA9IGluamVjdChEZXN0cm95UmVmKTtcblxuICBjb3BpbG90S2l0LmFkZFJlbmRlclRvb2xDYWxsKHJlbmRlclRvb2xDYWxsKTtcblxuICBkZXN0cm95UmVmLm9uRGVzdHJveSgoKSA9PiB7XG4gICAgY29waWxvdEtpdC5yZW1vdmVUb29sKHJlbmRlclRvb2xDYWxsLm5hbWUsIHJlbmRlclRvb2xDYWxsLmFnZW50SWQpO1xuICB9KTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHJlZ2lzdGVyRnJvbnRlbmRUb29sPFxuICBBcmdzIGV4dGVuZHMgUmVjb3JkPHN0cmluZywgdW5rbm93bj4gPSBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPixcbj4oZnJvbnRlbmRUb29sOiBGcm9udGVuZFRvb2xDb25maWc8QXJncz4pOiB2b2lkIHtcbiAgY29uc3QgaW5qZWN0b3IgPSBpbmplY3QoSW5qZWN0b3IpO1xuICBjb25zdCBkZXN0cm95UmVmID0gaW5qZWN0KERlc3Ryb3lSZWYpO1xuICBjb25zdCBjb3BpbG90S2l0ID0gaW5qZWN0KENvcGlsb3RLaXQpO1xuXG4gIGNvcGlsb3RLaXQuYWRkRnJvbnRlbmRUb29sKHtcbiAgICAuLi4oZnJvbnRlbmRUb29sIGFzIEZyb250ZW5kVG9vbENvbmZpZyksXG4gICAgaW5qZWN0b3IsXG4gIH0pO1xuXG4gIGRlc3Ryb3lSZWYub25EZXN0cm95KCgpID0+IHtcbiAgICBjb3BpbG90S2l0LnJlbW92ZVRvb2woZnJvbnRlbmRUb29sLm5hbWUpO1xuICB9KTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHJlZ2lzdGVySHVtYW5JblRoZUxvb3A8XG4gIEFyZ3MgZXh0ZW5kcyBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiA9IFJlY29yZDxzdHJpbmcsIHVua25vd24+LFxuPihodW1hbkluVGhlTG9vcDogSHVtYW5JblRoZUxvb3BDb25maWc8QXJncz4pOiB2b2lkIHtcbiAgY29uc3QgZGVzdHJveVJlZiA9IGluamVjdChEZXN0cm95UmVmKTtcbiAgY29uc3QgY29waWxvdEtpdCA9IGluamVjdChDb3BpbG90S2l0KTtcblxuICBjb3BpbG90S2l0LmFkZEh1bWFuSW5UaGVMb29wKGh1bWFuSW5UaGVMb29wKTtcblxuICBkZXN0cm95UmVmLm9uRGVzdHJveSgoKSA9PiB7XG4gICAgY29waWxvdEtpdC5yZW1vdmVUb29sKGh1bWFuSW5UaGVMb29wLm5hbWUpO1xuICB9KTtcbn1cbiJdfQ==
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { clsx } from
|
|
2
|
-
import { twMerge } from
|
|
1
|
+
import { clsx } from "clsx";
|
|
2
|
+
import { twMerge } from "tailwind-merge";
|
|
3
3
|
/**
|
|
4
4
|
* Utility function to merge Tailwind CSS classes
|
|
5
5
|
* Combines clsx for conditional classes and tailwind-merge for proper Tailwind class merging
|
|
@@ -7,4 +7,4 @@ import { twMerge } from 'tailwind-merge';
|
|
|
7
7
|
export function cn(...inputs) {
|
|
8
8
|
return twMerge(clsx(inputs));
|
|
9
9
|
}
|
|
10
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
10
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvbGliL3V0aWxzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxJQUFJLEVBQW1CLE1BQU0sTUFBTSxDQUFDO0FBQzdDLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUV6Qzs7O0dBR0c7QUFDSCxNQUFNLFVBQVUsRUFBRSxDQUFDLEdBQUcsTUFBb0I7SUFDeEMsT0FBTyxPQUFPLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7QUFDL0IsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGNsc3gsIHR5cGUgQ2xhc3NWYWx1ZSB9IGZyb20gXCJjbHN4XCI7XG5pbXBvcnQgeyB0d01lcmdlIH0gZnJvbSBcInRhaWx3aW5kLW1lcmdlXCI7XG5cbi8qKlxuICogVXRpbGl0eSBmdW5jdGlvbiB0byBtZXJnZSBUYWlsd2luZCBDU1MgY2xhc3Nlc1xuICogQ29tYmluZXMgY2xzeCBmb3IgY29uZGl0aW9uYWwgY2xhc3NlcyBhbmQgdGFpbHdpbmQtbWVyZ2UgZm9yIHByb3BlciBUYWlsd2luZCBjbGFzcyBtZXJnaW5nXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBjbiguLi5pbnB1dHM6IENsYXNzVmFsdWVbXSkge1xuICByZXR1cm4gdHdNZXJnZShjbHN4KGlucHV0cykpO1xufVxuIl19
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
export * from "./lib/config";
|
|
2
|
+
export * from "./lib/copilotkit";
|
|
3
|
+
export * from "./lib/tools";
|
|
4
|
+
export * from "./lib/render-tool-calls";
|
|
5
|
+
export * from "./lib/agent";
|
|
6
|
+
export * from "./lib/chat-config";
|
|
7
|
+
export * from "./lib/chat-state";
|
|
8
|
+
export * from "./lib/scroll-position";
|
|
9
|
+
export * from "./lib/resize-observer";
|
|
10
|
+
export * from "./lib/utils";
|
|
11
|
+
export * from "./lib/slots";
|
|
12
|
+
export * from "./lib/directives/copilotkit-agent-context";
|
|
13
|
+
export * from "./lib/directives/stick-to-bottom";
|
|
14
|
+
export * from "./lib/directives/tooltip";
|
|
15
|
+
export * from "./lib/components/chat/copilot-chat";
|
|
16
|
+
export * from "./lib/components/chat/copilot-chat-assistant-message";
|
|
17
|
+
export * from "./lib/components/chat/copilot-chat-assistant-message-buttons";
|
|
18
|
+
export * from "./lib/components/chat/copilot-chat-assistant-message-renderer";
|
|
19
|
+
export * from "./lib/components/chat/copilot-chat-assistant-message-toolbar";
|
|
20
|
+
export * from "./lib/components/chat/copilot-chat-assistant-message.types";
|
|
21
|
+
export * from "./lib/components/chat/copilot-chat-audio-recorder";
|
|
22
|
+
export * from "./lib/components/chat/copilot-chat-buttons";
|
|
23
|
+
export * from "./lib/components/chat/copilot-chat-input";
|
|
24
|
+
export * from "./lib/components/chat/copilot-chat-input-defaults";
|
|
25
|
+
export * from "./lib/components/chat/copilot-chat-input.types";
|
|
26
|
+
export * from "./lib/components/chat/copilot-chat-message-view";
|
|
27
|
+
export * from "./lib/components/chat/copilot-chat-message-view-cursor";
|
|
28
|
+
export * from "./lib/components/chat/copilot-chat-message-view.types";
|
|
29
|
+
export * from "./lib/components/chat/copilot-chat-textarea";
|
|
30
|
+
export * from "./lib/components/chat/copilot-chat-tool-calls-view";
|
|
31
|
+
export * from "./lib/components/chat/copilot-chat-toolbar";
|
|
32
|
+
export * from "./lib/components/chat/copilot-chat-tools-menu";
|
|
33
|
+
export * from "./lib/components/chat/copilot-chat-user-message";
|
|
34
|
+
export * from "./lib/components/chat/copilot-chat-user-message-branch-navigation";
|
|
35
|
+
export * from "./lib/components/chat/copilot-chat-user-message-buttons";
|
|
36
|
+
export * from "./lib/components/chat/copilot-chat-user-message-renderer";
|
|
37
|
+
export * from "./lib/components/chat/copilot-chat-user-message-toolbar";
|
|
38
|
+
export * from "./lib/components/chat/copilot-chat-user-message.types";
|
|
39
|
+
export * from "./lib/components/chat/copilot-chat-view";
|
|
40
|
+
export * from "./lib/components/chat/copilot-chat-view-disclaimer";
|
|
41
|
+
export * from "./lib/components/chat/copilot-chat-view-feather";
|
|
42
|
+
export * from "./lib/components/chat/copilot-chat-view-handlers";
|
|
43
|
+
export * from "./lib/components/chat/copilot-chat-view-input-container";
|
|
44
|
+
export * from "./lib/components/chat/copilot-chat-view-scroll-to-bottom-button";
|
|
45
|
+
export * from "./lib/components/chat/copilot-chat-view-scroll-view";
|
|
46
|
+
export * from "./lib/components/chat/copilot-chat-view.types";
|
|
47
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljLWFwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9wdWJsaWMtYXBpLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMsY0FBYyxDQUFDO0FBQzdCLGNBQWMsa0JBQWtCLENBQUM7QUFDakMsY0FBYyxhQUFhLENBQUM7QUFDNUIsY0FBYyx5QkFBeUIsQ0FBQztBQUN4QyxjQUFjLGFBQWEsQ0FBQztBQUM1QixjQUFjLG1CQUFtQixDQUFDO0FBQ2xDLGNBQWMsa0JBQWtCLENBQUM7QUFDakMsY0FBYyx1QkFBdUIsQ0FBQztBQUN0QyxjQUFjLHVCQUF1QixDQUFDO0FBQ3RDLGNBQWMsYUFBYSxDQUFDO0FBRTVCLGNBQWMsYUFBYSxDQUFDO0FBRTVCLGNBQWMsMkNBQTJDLENBQUM7QUFDMUQsY0FBYyxrQ0FBa0MsQ0FBQztBQUNqRCxjQUFjLDBCQUEwQixDQUFDO0FBRXpDLGNBQWMsb0NBQW9DLENBQUM7QUFDbkQsY0FBYyxzREFBc0QsQ0FBQztBQUNyRSxjQUFjLDhEQUE4RCxDQUFDO0FBQzdFLGNBQWMsK0RBQStELENBQUM7QUFDOUUsY0FBYyw4REFBOEQsQ0FBQztBQUM3RSxjQUFjLDREQUE0RCxDQUFDO0FBQzNFLGNBQWMsbURBQW1ELENBQUM7QUFDbEUsY0FBYyw0Q0FBNEMsQ0FBQztBQUMzRCxjQUFjLDBDQUEwQyxDQUFDO0FBQ3pELGNBQWMsbURBQW1ELENBQUM7QUFDbEUsY0FBYyxnREFBZ0QsQ0FBQztBQUMvRCxjQUFjLGlEQUFpRCxDQUFDO0FBQ2hFLGNBQWMsd0RBQXdELENBQUM7QUFDdkUsY0FBYyx1REFBdUQsQ0FBQztBQUN0RSxjQUFjLDZDQUE2QyxDQUFDO0FBQzVELGNBQWMsb0RBQW9ELENBQUM7QUFDbkUsY0FBYyw0Q0FBNEMsQ0FBQztBQUMzRCxjQUFjLCtDQUErQyxDQUFDO0FBQzlELGNBQWMsaURBQWlELENBQUM7QUFDaEUsY0FBYyxtRUFBbUUsQ0FBQztBQUNsRixjQUFjLHlEQUF5RCxDQUFDO0FBQ3hFLGNBQWMsMERBQTBELENBQUM7QUFDekUsY0FBYyx5REFBeUQsQ0FBQztBQUN4RSxjQUFjLHVEQUF1RCxDQUFDO0FBQ3RFLGNBQWMseUNBQXlDLENBQUM7QUFDeEQsY0FBYyxvREFBb0QsQ0FBQztBQUNuRSxjQUFjLGlEQUFpRCxDQUFDO0FBQ2hFLGNBQWMsa0RBQWtELENBQUM7QUFDakUsY0FBYyx5REFBeUQsQ0FBQztBQUN4RSxjQUFjLGlFQUFpRSxDQUFDO0FBQ2hGLGNBQWMscURBQXFELENBQUM7QUFDcEUsY0FBYywrQ0FBK0MsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gXCIuL2xpYi9jb25maWdcIjtcbmV4cG9ydCAqIGZyb20gXCIuL2xpYi9jb3BpbG90a2l0XCI7XG5leHBvcnQgKiBmcm9tIFwiLi9saWIvdG9vbHNcIjtcbmV4cG9ydCAqIGZyb20gXCIuL2xpYi9yZW5kZXItdG9vbC1jYWxsc1wiO1xuZXhwb3J0ICogZnJvbSBcIi4vbGliL2FnZW50XCI7XG5leHBvcnQgKiBmcm9tIFwiLi9saWIvY2hhdC1jb25maWdcIjtcbmV4cG9ydCAqIGZyb20gXCIuL2xpYi9jaGF0LXN0YXRlXCI7XG5leHBvcnQgKiBmcm9tIFwiLi9saWIvc2Nyb2xsLXBvc2l0aW9uXCI7XG5leHBvcnQgKiBmcm9tIFwiLi9saWIvcmVzaXplLW9ic2VydmVyXCI7XG5leHBvcnQgKiBmcm9tIFwiLi9saWIvdXRpbHNcIjtcblxuZXhwb3J0ICogZnJvbSBcIi4vbGliL3Nsb3RzXCI7XG5cbmV4cG9ydCAqIGZyb20gXCIuL2xpYi9kaXJlY3RpdmVzL2NvcGlsb3RraXQtYWdlbnQtY29udGV4dFwiO1xuZXhwb3J0ICogZnJvbSBcIi4vbGliL2RpcmVjdGl2ZXMvc3RpY2stdG8tYm90dG9tXCI7XG5leHBvcnQgKiBmcm9tIFwiLi9saWIvZGlyZWN0aXZlcy90b29sdGlwXCI7XG5cbmV4cG9ydCAqIGZyb20gXCIuL2xpYi9jb21wb25lbnRzL2NoYXQvY29waWxvdC1jaGF0XCI7XG5leHBvcnQgKiBmcm9tIFwiLi9saWIvY29tcG9uZW50cy9jaGF0L2NvcGlsb3QtY2hhdC1hc3Npc3RhbnQtbWVzc2FnZVwiO1xuZXhwb3J0ICogZnJvbSBcIi4vbGliL2NvbXBvbmVudHMvY2hhdC9jb3BpbG90LWNoYXQtYXNzaXN0YW50LW1lc3NhZ2UtYnV0dG9uc1wiO1xuZXhwb3J0ICogZnJvbSBcIi4vbGliL2NvbXBvbmVudHMvY2hhdC9jb3BpbG90LWNoYXQtYXNzaXN0YW50LW1lc3NhZ2UtcmVuZGVyZXJcIjtcbmV4cG9ydCAqIGZyb20gXCIuL2xpYi9jb21wb25lbnRzL2NoYXQvY29waWxvdC1jaGF0LWFzc2lzdGFudC1tZXNzYWdlLXRvb2xiYXJcIjtcbmV4cG9ydCAqIGZyb20gXCIuL2xpYi9jb21wb25lbnRzL2NoYXQvY29waWxvdC1jaGF0LWFzc2lzdGFudC1tZXNzYWdlLnR5cGVzXCI7XG5leHBvcnQgKiBmcm9tIFwiLi9saWIvY29tcG9uZW50cy9jaGF0L2NvcGlsb3QtY2hhdC1hdWRpby1yZWNvcmRlclwiO1xuZXhwb3J0ICogZnJvbSBcIi4vbGliL2NvbXBvbmVudHMvY2hhdC9jb3BpbG90LWNoYXQtYnV0dG9uc1wiO1xuZXhwb3J0ICogZnJvbSBcIi4vbGliL2NvbXBvbmVudHMvY2hhdC9jb3BpbG90LWNoYXQtaW5wdXRcIjtcbmV4cG9ydCAqIGZyb20gXCIuL2xpYi9jb21wb25lbnRzL2NoYXQvY29waWxvdC1jaGF0LWlucHV0LWRlZmF1bHRzXCI7XG5leHBvcnQgKiBmcm9tIFwiLi9saWIvY29tcG9uZW50cy9jaGF0L2NvcGlsb3QtY2hhdC1pbnB1dC50eXBlc1wiO1xuZXhwb3J0ICogZnJvbSBcIi4vbGliL2NvbXBvbmVudHMvY2hhdC9jb3BpbG90LWNoYXQtbWVzc2FnZS12aWV3XCI7XG5leHBvcnQgKiBmcm9tIFwiLi9saWIvY29tcG9uZW50cy9jaGF0L2NvcGlsb3QtY2hhdC1tZXNzYWdlLXZpZXctY3Vyc29yXCI7XG5leHBvcnQgKiBmcm9tIFwiLi9saWIvY29tcG9uZW50cy9jaGF0L2NvcGlsb3QtY2hhdC1tZXNzYWdlLXZpZXcudHlwZXNcIjtcbmV4cG9ydCAqIGZyb20gXCIuL2xpYi9jb21wb25lbnRzL2NoYXQvY29waWxvdC1jaGF0LXRleHRhcmVhXCI7XG5leHBvcnQgKiBmcm9tIFwiLi9saWIvY29tcG9uZW50cy9jaGF0L2NvcGlsb3QtY2hhdC10b29sLWNhbGxzLXZpZXdcIjtcbmV4cG9ydCAqIGZyb20gXCIuL2xpYi9jb21wb25lbnRzL2NoYXQvY29waWxvdC1jaGF0LXRvb2xiYXJcIjtcbmV4cG9ydCAqIGZyb20gXCIuL2xpYi9jb21wb25lbnRzL2NoYXQvY29waWxvdC1jaGF0LXRvb2xzLW1lbnVcIjtcbmV4cG9ydCAqIGZyb20gXCIuL2xpYi9jb21wb25lbnRzL2NoYXQvY29waWxvdC1jaGF0LXVzZXItbWVzc2FnZVwiO1xuZXhwb3J0ICogZnJvbSBcIi4vbGliL2NvbXBvbmVudHMvY2hhdC9jb3BpbG90LWNoYXQtdXNlci1tZXNzYWdlLWJyYW5jaC1uYXZpZ2F0aW9uXCI7XG5leHBvcnQgKiBmcm9tIFwiLi9saWIvY29tcG9uZW50cy9jaGF0L2NvcGlsb3QtY2hhdC11c2VyLW1lc3NhZ2UtYnV0dG9uc1wiO1xuZXhwb3J0ICogZnJvbSBcIi4vbGliL2NvbXBvbmVudHMvY2hhdC9jb3BpbG90LWNoYXQtdXNlci1tZXNzYWdlLXJlbmRlcmVyXCI7XG5leHBvcnQgKiBmcm9tIFwiLi9saWIvY29tcG9uZW50cy9jaGF0L2NvcGlsb3QtY2hhdC11c2VyLW1lc3NhZ2UtdG9vbGJhclwiO1xuZXhwb3J0ICogZnJvbSBcIi4vbGliL2NvbXBvbmVudHMvY2hhdC9jb3BpbG90LWNoYXQtdXNlci1tZXNzYWdlLnR5cGVzXCI7XG5leHBvcnQgKiBmcm9tIFwiLi9saWIvY29tcG9uZW50cy9jaGF0L2NvcGlsb3QtY2hhdC12aWV3XCI7XG5leHBvcnQgKiBmcm9tIFwiLi9saWIvY29tcG9uZW50cy9jaGF0L2NvcGlsb3QtY2hhdC12aWV3LWRpc2NsYWltZXJcIjtcbmV4cG9ydCAqIGZyb20gXCIuL2xpYi9jb21wb25lbnRzL2NoYXQvY29waWxvdC1jaGF0LXZpZXctZmVhdGhlclwiO1xuZXhwb3J0ICogZnJvbSBcIi4vbGliL2NvbXBvbmVudHMvY2hhdC9jb3BpbG90LWNoYXQtdmlldy1oYW5kbGVyc1wiO1xuZXhwb3J0ICogZnJvbSBcIi4vbGliL2NvbXBvbmVudHMvY2hhdC9jb3BpbG90LWNoYXQtdmlldy1pbnB1dC1jb250YWluZXJcIjtcbmV4cG9ydCAqIGZyb20gXCIuL2xpYi9jb21wb25lbnRzL2NoYXQvY29waWxvdC1jaGF0LXZpZXctc2Nyb2xsLXRvLWJvdHRvbS1idXR0b25cIjtcbmV4cG9ydCAqIGZyb20gXCIuL2xpYi9jb21wb25lbnRzL2NoYXQvY29waWxvdC1jaGF0LXZpZXctc2Nyb2xsLXZpZXdcIjtcbmV4cG9ydCAqIGZyb20gXCIuL2xpYi9jb21wb25lbnRzL2NoYXQvY29waWxvdC1jaGF0LXZpZXcudHlwZXNcIjtcbiJdfQ==
|