@memberjunction/ng-conversations 6.2.0-edge.5 → 6.2.0-edge.7
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/lib/components/attachment/image-viewer.component.d.ts +3 -1
- package/dist/lib/components/attachment/image-viewer.component.d.ts.map +1 -1
- package/dist/lib/components/attachment/image-viewer.component.js +5 -1
- package/dist/lib/components/attachment/image-viewer.component.js.map +1 -1
- package/dist/lib/components/collection/collection-view.component.d.ts.map +1 -1
- package/dist/lib/components/collection/collection-view.component.js +1 -0
- package/dist/lib/components/collection/collection-view.component.js.map +1 -1
- package/dist/lib/components/conversation/conversation-chat-area.component.d.ts +188 -9
- package/dist/lib/components/conversation/conversation-chat-area.component.d.ts.map +1 -1
- package/dist/lib/components/conversation/conversation-chat-area.component.js +1333 -464
- package/dist/lib/components/conversation/conversation-chat-area.component.js.map +1 -1
- package/dist/lib/components/conversation/conversation-mode-picker.component.js +2 -2
- package/dist/lib/components/conversation/conversation-mode-picker.component.js.map +1 -1
- package/dist/lib/components/conversation/conversation-remote-browser-controller.d.ts +109 -0
- package/dist/lib/components/conversation/conversation-remote-browser-controller.d.ts.map +1 -0
- package/dist/lib/components/conversation/conversation-remote-browser-controller.js +298 -0
- package/dist/lib/components/conversation/conversation-remote-browser-controller.js.map +1 -0
- package/dist/lib/components/message/agent-handoff-card.component.d.ts +102 -0
- package/dist/lib/components/message/agent-handoff-card.component.d.ts.map +1 -0
- package/dist/lib/components/message/agent-handoff-card.component.js +439 -0
- package/dist/lib/components/message/agent-handoff-card.component.js.map +1 -0
- package/dist/lib/components/message/message-input.component.d.ts +126 -59
- package/dist/lib/components/message/message-input.component.d.ts.map +1 -1
- package/dist/lib/components/message/message-input.component.js +559 -554
- package/dist/lib/components/message/message-input.component.js.map +1 -1
- package/dist/lib/components/message/message-item.component.d.ts +34 -2
- package/dist/lib/components/message/message-item.component.d.ts.map +1 -1
- package/dist/lib/components/message/message-item.component.js +678 -520
- package/dist/lib/components/message/message-item.component.js.map +1 -1
- package/dist/lib/components/message/message-list.component.d.ts +13 -1
- package/dist/lib/components/message/message-list.component.d.ts.map +1 -1
- package/dist/lib/components/message/message-list.component.js +92 -39
- package/dist/lib/components/message/message-list.component.js.map +1 -1
- package/dist/lib/components/overlay/chat-overlay.component.d.ts +19 -0
- package/dist/lib/components/overlay/chat-overlay.component.d.ts.map +1 -1
- package/dist/lib/components/overlay/chat-overlay.component.js +125 -13
- package/dist/lib/components/overlay/chat-overlay.component.js.map +1 -1
- package/dist/lib/components/project/project-form-modal.component.js +2 -2
- package/dist/lib/components/project/project-form-modal.component.js.map +1 -1
- package/dist/lib/components/realtime/interactive-component/run-view-component-artifact-source.js +1 -1
- package/dist/lib/components/realtime/interactive-component/run-view-component-artifact-source.js.map +1 -1
- package/dist/lib/components/realtime/media/media-channel-state.d.ts +5 -0
- package/dist/lib/components/realtime/media/media-channel-state.d.ts.map +1 -1
- package/dist/lib/components/realtime/media/media-channel-state.js +27 -1
- package/dist/lib/components/realtime/media/media-channel-state.js.map +1 -1
- package/dist/lib/components/realtime/media/media-channel.d.ts.map +1 -1
- package/dist/lib/components/realtime/media/media-channel.js +7 -2
- package/dist/lib/components/realtime/media/media-channel.js.map +1 -1
- package/dist/lib/components/realtime/media/realtime-media-surface.component.d.ts +19 -2
- package/dist/lib/components/realtime/media/realtime-media-surface.component.d.ts.map +1 -1
- package/dist/lib/components/realtime/media/realtime-media-surface.component.js +59 -10
- package/dist/lib/components/realtime/media/realtime-media-surface.component.js.map +1 -1
- package/dist/lib/components/realtime/realtime-agent-banner.component.d.ts +22 -6
- package/dist/lib/components/realtime/realtime-agent-banner.component.d.ts.map +1 -1
- package/dist/lib/components/realtime/realtime-agent-banner.component.js +160 -98
- package/dist/lib/components/realtime/realtime-agent-banner.component.js.map +1 -1
- package/dist/lib/components/realtime/realtime-call-failure-notice.d.ts +13 -0
- package/dist/lib/components/realtime/realtime-call-failure-notice.d.ts.map +1 -0
- package/dist/lib/components/realtime/realtime-call-failure-notice.js +21 -0
- package/dist/lib/components/realtime/realtime-call-failure-notice.js.map +1 -0
- package/dist/lib/components/realtime/realtime-composer.component.d.ts +26 -3
- package/dist/lib/components/realtime/realtime-composer.component.d.ts.map +1 -1
- package/dist/lib/components/realtime/realtime-composer.component.js +226 -120
- package/dist/lib/components/realtime/realtime-composer.component.js.map +1 -1
- package/dist/lib/components/realtime/realtime-session-overlay.component.d.ts +73 -16
- package/dist/lib/components/realtime/realtime-session-overlay.component.d.ts.map +1 -1
- package/dist/lib/components/realtime/realtime-session-overlay.component.js +219 -108
- package/dist/lib/components/realtime/realtime-session-overlay.component.js.map +1 -1
- package/dist/lib/components/realtime/realtime-ui-config.d.ts +9 -12
- package/dist/lib/components/realtime/realtime-ui-config.d.ts.map +1 -1
- package/dist/lib/components/realtime/realtime-ui-config.js +38 -18
- package/dist/lib/components/realtime/realtime-ui-config.js.map +1 -1
- package/dist/lib/components/realtime/remote-browser/remote-browser-channel.d.ts.map +1 -1
- package/dist/lib/components/realtime/remote-browser/remote-browser-channel.js +34 -5
- package/dist/lib/components/realtime/remote-browser/remote-browser-channel.js.map +1 -1
- package/dist/lib/components/realtime/remote-browser/remote-browser-tools.d.ts +8 -2
- package/dist/lib/components/realtime/remote-browser/remote-browser-tools.d.ts.map +1 -1
- package/dist/lib/components/realtime/remote-browser/remote-browser-tools.js +51 -10
- package/dist/lib/components/realtime/remote-browser/remote-browser-tools.js.map +1 -1
- package/dist/lib/components/realtime/whiteboard/whiteboard-channel-config.d.ts +46 -0
- package/dist/lib/components/realtime/whiteboard/whiteboard-channel-config.d.ts.map +1 -0
- package/dist/lib/components/realtime/whiteboard/whiteboard-channel-config.js +64 -0
- package/dist/lib/components/realtime/whiteboard/whiteboard-channel-config.js.map +1 -0
- package/dist/lib/components/realtime/whiteboard/whiteboard-channel.d.ts +131 -9
- package/dist/lib/components/realtime/whiteboard/whiteboard-channel.d.ts.map +1 -1
- package/dist/lib/components/realtime/whiteboard/whiteboard-channel.js +347 -38
- package/dist/lib/components/realtime/whiteboard/whiteboard-channel.js.map +1 -1
- package/dist/lib/conversations.module.d.ts +2 -1
- package/dist/lib/conversations.module.d.ts.map +1 -1
- package/dist/lib/conversations.module.js +9 -4
- package/dist/lib/conversations.module.js.map +1 -1
- package/dist/lib/events/chat-events.d.ts +5 -4
- package/dist/lib/events/chat-events.d.ts.map +1 -1
- package/dist/lib/events/chat-events.js +2 -2
- package/dist/lib/events/chat-events.js.map +1 -1
- package/dist/lib/models/agent-turn.model.d.ts +11 -7
- package/dist/lib/models/agent-turn.model.d.ts.map +1 -1
- package/dist/lib/models/agent-turn.model.js.map +1 -1
- package/dist/lib/services/active-tasks.service.d.ts +5 -0
- package/dist/lib/services/active-tasks.service.d.ts.map +1 -1
- package/dist/lib/services/active-tasks.service.js +16 -0
- package/dist/lib/services/active-tasks.service.js.map +1 -1
- package/dist/lib/services/agent-state.service.d.ts.map +1 -1
- package/dist/lib/services/agent-state.service.js +7 -1
- package/dist/lib/services/agent-state.service.js.map +1 -1
- package/dist/lib/services/artifact-permission.service.d.ts.map +1 -1
- package/dist/lib/services/artifact-permission.service.js +2 -0
- package/dist/lib/services/artifact-permission.service.js.map +1 -1
- package/dist/lib/services/artifact-state.service.d.ts.map +1 -1
- package/dist/lib/services/artifact-state.service.js +1 -0
- package/dist/lib/services/artifact-state.service.js.map +1 -1
- package/dist/lib/services/collection-permission.service.d.ts.map +1 -1
- package/dist/lib/services/collection-permission.service.js +1 -0
- package/dist/lib/services/collection-permission.service.js.map +1 -1
- package/dist/lib/services/conversation-agent.service.d.ts +38 -16
- package/dist/lib/services/conversation-agent.service.d.ts.map +1 -1
- package/dist/lib/services/conversation-agent.service.js +57 -71
- package/dist/lib/services/conversation-agent.service.js.map +1 -1
- package/dist/lib/services/conversation-detail-window.store.d.ts +5 -0
- package/dist/lib/services/conversation-detail-window.store.d.ts.map +1 -1
- package/dist/lib/services/conversation-detail-window.store.js +52 -5
- package/dist/lib/services/conversation-detail-window.store.js.map +1 -1
- package/dist/lib/services/realtime-session-review.service.d.ts +2 -1
- package/dist/lib/services/realtime-session-review.service.d.ts.map +1 -1
- package/dist/lib/services/realtime-session-review.service.js.map +1 -1
- package/dist/lib/services/realtime-session.service.d.ts.map +1 -1
- package/dist/lib/services/realtime-session.service.js +2 -1
- package/dist/lib/services/realtime-session.service.js.map +1 -1
- package/dist/lib/services/search.service.d.ts.map +1 -1
- package/dist/lib/services/search.service.js +1 -0
- package/dist/lib/services/search.service.js.map +1 -1
- package/dist/lib/utils/agent-failure-display.d.ts +14 -0
- package/dist/lib/utils/agent-failure-display.d.ts.map +1 -0
- package/dist/lib/utils/agent-failure-display.js +26 -0
- package/dist/lib/utils/agent-failure-display.js.map +1 -0
- package/dist/lib/utils/agent-handoff-map.d.ts +52 -0
- package/dist/lib/utils/agent-handoff-map.d.ts.map +1 -0
- package/dist/lib/utils/agent-handoff-map.js +270 -0
- package/dist/lib/utils/agent-handoff-map.js.map +1 -0
- package/dist/lib/utils/agent-turn-routing.d.ts +62 -7
- package/dist/lib/utils/agent-turn-routing.d.ts.map +1 -1
- package/dist/lib/utils/agent-turn-routing.js +147 -6
- package/dist/lib/utils/agent-turn-routing.js.map +1 -1
- package/dist/lib/utils/decision-routing.d.ts +17 -9
- package/dist/lib/utils/decision-routing.d.ts.map +1 -1
- package/dist/lib/utils/decision-routing.js +23 -14
- package/dist/lib/utils/decision-routing.js.map +1 -1
- package/dist/lib/utils/message-list-order.d.ts +13 -0
- package/dist/lib/utils/message-list-order.d.ts.map +1 -0
- package/dist/lib/utils/message-list-order.js +31 -0
- package/dist/lib/utils/message-list-order.js.map +1 -0
- package/dist/lib/utils/pin-state.d.ts +11 -0
- package/dist/lib/utils/pin-state.d.ts.map +1 -0
- package/dist/lib/utils/pin-state.js +9 -0
- package/dist/lib/utils/pin-state.js.map +1 -0
- package/dist/lib/utils/thread-replies.d.ts +34 -0
- package/dist/lib/utils/thread-replies.d.ts.map +1 -0
- package/dist/lib/utils/thread-replies.js +49 -0
- package/dist/lib/utils/thread-replies.js.map +1 -0
- package/dist/public-api.d.ts +6 -0
- package/dist/public-api.d.ts.map +1 -1
- package/dist/public-api.js +6 -0
- package/dist/public-api.js.map +1 -1
- package/package.json +36 -36
|
@@ -28,6 +28,20 @@ export interface OverlayConversationSwitchedEvent {
|
|
|
28
28
|
PreviousConversationID: string | null;
|
|
29
29
|
NewConversationID: string | null;
|
|
30
30
|
}
|
|
31
|
+
/** Summary of the active record context extracted from `AppContext.AdditionalContext.Form` */
|
|
32
|
+
export interface OverlayActiveRecordContextSummary {
|
|
33
|
+
Entity: string;
|
|
34
|
+
RecordPrimaryKey: string | null;
|
|
35
|
+
RecordDisplayName: string | null;
|
|
36
|
+
EditMode: boolean;
|
|
37
|
+
Dirty: boolean;
|
|
38
|
+
DirtyFieldNames: readonly string[];
|
|
39
|
+
HasExternalUpdateConflict: boolean;
|
|
40
|
+
PreviewingHistoricalChangeID: string | null;
|
|
41
|
+
TotalLinksCount: number;
|
|
42
|
+
OutgoingLinksCount: number;
|
|
43
|
+
IncomingLinksCount: number;
|
|
44
|
+
}
|
|
31
45
|
export declare class ChatAgentsOverlayComponent extends BaseAngularComponent implements OnInit, OnDestroy {
|
|
32
46
|
private cdr;
|
|
33
47
|
private bridge;
|
|
@@ -224,6 +238,11 @@ export declare class ChatAgentsOverlayComponent extends BaseAngularComponent imp
|
|
|
224
238
|
* chat interface stays visible" behavior.
|
|
225
239
|
*/
|
|
226
240
|
get PanelBottomPx(): number;
|
|
241
|
+
/**
|
|
242
|
+
* Extracts a structured summary of the currently open record form from
|
|
243
|
+
* `AppContext.AdditionalContext.Form` when the user is viewing a record.
|
|
244
|
+
*/
|
|
245
|
+
get ActiveRecordContext(): OverlayActiveRecordContextSummary | null;
|
|
227
246
|
/** Auto-resolve CurrentUser and EnvironmentId from Metadata when not provided as inputs */
|
|
228
247
|
private resolveDefaults;
|
|
229
248
|
/** Load saved panel size and bubble position from UserInfoEngine */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"chat-overlay.component.d.ts","sourceRoot":"","sources":["../../../../src/lib/components/overlay/chat-overlay.component.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"chat-overlay.component.d.ts","sourceRoot":"","sources":["../../../../src/lib/components/overlay/chat-overlay.component.ts"],"names":[],"mappings":"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"}
|
|
@@ -72,23 +72,100 @@ function ChatAgentsOverlayComponent_Conditional_0_Conditional_1_Template(rf, ctx
|
|
|
72
72
|
} }
|
|
73
73
|
function ChatAgentsOverlayComponent_Conditional_0_Conditional_2_Conditional_1_Template(rf, ctx) { if (rf & 1) {
|
|
74
74
|
const _r5 = i0.ɵɵgetCurrentView();
|
|
75
|
-
i0.ɵɵelementStart(0, "div",
|
|
75
|
+
i0.ɵɵelementStart(0, "div", 28);
|
|
76
76
|
i0.ɵɵlistener("mousedown", function ChatAgentsOverlayComponent_Conditional_0_Conditional_2_Conditional_1_Template_div_mousedown_0_listener($event) { i0.ɵɵrestoreView(_r5); const ctx_r1 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r1.OnResizeStart($event, "left")); });
|
|
77
77
|
i0.ɵɵelementEnd();
|
|
78
|
-
i0.ɵɵelementStart(1, "div",
|
|
78
|
+
i0.ɵɵelementStart(1, "div", 29);
|
|
79
79
|
i0.ɵɵlistener("mousedown", function ChatAgentsOverlayComponent_Conditional_0_Conditional_2_Conditional_1_Template_div_mousedown_1_listener($event) { i0.ɵɵrestoreView(_r5); const ctx_r1 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r1.OnResizeStart($event, "top")); });
|
|
80
80
|
i0.ɵɵelementEnd();
|
|
81
|
-
i0.ɵɵelementStart(2, "div",
|
|
81
|
+
i0.ɵɵelementStart(2, "div", 30);
|
|
82
82
|
i0.ɵɵlistener("mousedown", function ChatAgentsOverlayComponent_Conditional_0_Conditional_2_Conditional_1_Template_div_mousedown_2_listener($event) { i0.ɵɵrestoreView(_r5); const ctx_r1 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r1.OnResizeStart($event, "top-left")); });
|
|
83
83
|
i0.ɵɵelementEnd();
|
|
84
84
|
} }
|
|
85
85
|
function ChatAgentsOverlayComponent_Conditional_0_Conditional_2_Conditional_10_Template(rf, ctx) { if (rf & 1) {
|
|
86
86
|
const _r6 = i0.ɵɵgetCurrentView();
|
|
87
|
-
i0.ɵɵelementStart(0, "button",
|
|
87
|
+
i0.ɵɵelementStart(0, "button", 31);
|
|
88
88
|
i0.ɵɵlistener("click", function ChatAgentsOverlayComponent_Conditional_0_Conditional_2_Conditional_10_Template_button_click_0_listener() { i0.ɵɵrestoreView(_r6); const ctx_r1 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r1.OnOpenFullChatWorkspace()); });
|
|
89
|
-
i0.ɵɵelement(1, "i",
|
|
89
|
+
i0.ɵɵelement(1, "i", 32);
|
|
90
90
|
i0.ɵɵelementEnd();
|
|
91
91
|
} }
|
|
92
|
+
function ChatAgentsOverlayComponent_Conditional_0_Conditional_2_Conditional_15_Conditional_5_Template(rf, ctx) { if (rf & 1) {
|
|
93
|
+
i0.ɵɵelementStart(0, "span", 41);
|
|
94
|
+
i0.ɵɵtext(1, "\u00B7");
|
|
95
|
+
i0.ɵɵelementEnd();
|
|
96
|
+
i0.ɵɵelementStart(2, "span", 42);
|
|
97
|
+
i0.ɵɵtext(3);
|
|
98
|
+
i0.ɵɵelementEnd();
|
|
99
|
+
} if (rf & 2) {
|
|
100
|
+
const ctx_ir7 = i0.ɵɵnextContext();
|
|
101
|
+
i0.ɵɵadvance(2);
|
|
102
|
+
i0.ɵɵproperty("title", ctx_ir7.RecordDisplayName);
|
|
103
|
+
i0.ɵɵadvance();
|
|
104
|
+
i0.ɵɵtextInterpolate(ctx_ir7.RecordDisplayName);
|
|
105
|
+
} }
|
|
106
|
+
function ChatAgentsOverlayComponent_Conditional_0_Conditional_2_Conditional_15_Conditional_7_Template(rf, ctx) { if (rf & 1) {
|
|
107
|
+
i0.ɵɵelementStart(0, "span", 37);
|
|
108
|
+
i0.ɵɵelement(1, "i", 43);
|
|
109
|
+
i0.ɵɵtext(2);
|
|
110
|
+
i0.ɵɵelementEnd();
|
|
111
|
+
} if (rf & 2) {
|
|
112
|
+
const ctx_ir7 = i0.ɵɵnextContext();
|
|
113
|
+
i0.ɵɵproperty("title", "Unsaved edits: " + ctx_ir7.DirtyFieldNames.join(", "));
|
|
114
|
+
i0.ɵɵadvance(2);
|
|
115
|
+
i0.ɵɵtextInterpolate1(" ", ctx_ir7.DirtyFieldNames.length, " unsaved ");
|
|
116
|
+
} }
|
|
117
|
+
function ChatAgentsOverlayComponent_Conditional_0_Conditional_2_Conditional_15_Conditional_8_Template(rf, ctx) { if (rf & 1) {
|
|
118
|
+
i0.ɵɵelementStart(0, "span", 38);
|
|
119
|
+
i0.ɵɵelement(1, "i", 44);
|
|
120
|
+
i0.ɵɵtext(2, " Conflict ");
|
|
121
|
+
i0.ɵɵelementEnd();
|
|
122
|
+
} }
|
|
123
|
+
function ChatAgentsOverlayComponent_Conditional_0_Conditional_2_Conditional_15_Conditional_9_Template(rf, ctx) { if (rf & 1) {
|
|
124
|
+
i0.ɵɵelementStart(0, "span", 39);
|
|
125
|
+
i0.ɵɵelement(1, "i", 45);
|
|
126
|
+
i0.ɵɵtext(2, " Time-Travel ");
|
|
127
|
+
i0.ɵɵelementEnd();
|
|
128
|
+
} }
|
|
129
|
+
function ChatAgentsOverlayComponent_Conditional_0_Conditional_2_Conditional_15_Conditional_10_Template(rf, ctx) { if (rf & 1) {
|
|
130
|
+
i0.ɵɵelementStart(0, "span", 40);
|
|
131
|
+
i0.ɵɵelement(1, "i", 46);
|
|
132
|
+
i0.ɵɵtext(2);
|
|
133
|
+
i0.ɵɵelementEnd();
|
|
134
|
+
} if (rf & 2) {
|
|
135
|
+
const ctx_ir7 = i0.ɵɵnextContext();
|
|
136
|
+
i0.ɵɵproperty("title", ctx_ir7.OutgoingLinksCount + " on this record \u00B7 " + ctx_ir7.IncomingLinksCount + " linked to this");
|
|
137
|
+
i0.ɵɵadvance(2);
|
|
138
|
+
i0.ɵɵtextInterpolate2(" ", ctx_ir7.TotalLinksCount, " ", ctx_ir7.TotalLinksCount === 1 ? "link" : "links", " ");
|
|
139
|
+
} }
|
|
140
|
+
function ChatAgentsOverlayComponent_Conditional_0_Conditional_2_Conditional_15_Template(rf, ctx) { if (rf & 1) {
|
|
141
|
+
i0.ɵɵelementStart(0, "div", 25)(1, "div", 33);
|
|
142
|
+
i0.ɵɵelement(2, "i", 34);
|
|
143
|
+
i0.ɵɵelementStart(3, "span", 35);
|
|
144
|
+
i0.ɵɵtext(4);
|
|
145
|
+
i0.ɵɵelementEnd();
|
|
146
|
+
i0.ɵɵconditionalCreate(5, ChatAgentsOverlayComponent_Conditional_0_Conditional_2_Conditional_15_Conditional_5_Template, 4, 2);
|
|
147
|
+
i0.ɵɵelementEnd();
|
|
148
|
+
i0.ɵɵelementStart(6, "div", 36);
|
|
149
|
+
i0.ɵɵconditionalCreate(7, ChatAgentsOverlayComponent_Conditional_0_Conditional_2_Conditional_15_Conditional_7_Template, 3, 2, "span", 37);
|
|
150
|
+
i0.ɵɵconditionalCreate(8, ChatAgentsOverlayComponent_Conditional_0_Conditional_2_Conditional_15_Conditional_8_Template, 3, 0, "span", 38);
|
|
151
|
+
i0.ɵɵconditionalCreate(9, ChatAgentsOverlayComponent_Conditional_0_Conditional_2_Conditional_15_Conditional_9_Template, 3, 0, "span", 39);
|
|
152
|
+
i0.ɵɵconditionalCreate(10, ChatAgentsOverlayComponent_Conditional_0_Conditional_2_Conditional_15_Conditional_10_Template, 3, 3, "span", 40);
|
|
153
|
+
i0.ɵɵelementEnd()();
|
|
154
|
+
} if (rf & 2) {
|
|
155
|
+
const ctx_ir7 = ctx;
|
|
156
|
+
i0.ɵɵadvance(4);
|
|
157
|
+
i0.ɵɵtextInterpolate(ctx_ir7.Entity);
|
|
158
|
+
i0.ɵɵadvance();
|
|
159
|
+
i0.ɵɵconditional(ctx_ir7.RecordDisplayName ? 5 : -1);
|
|
160
|
+
i0.ɵɵadvance(2);
|
|
161
|
+
i0.ɵɵconditional(ctx_ir7.Dirty ? 7 : -1);
|
|
162
|
+
i0.ɵɵadvance();
|
|
163
|
+
i0.ɵɵconditional(ctx_ir7.HasExternalUpdateConflict ? 8 : -1);
|
|
164
|
+
i0.ɵɵadvance();
|
|
165
|
+
i0.ɵɵconditional(ctx_ir7.PreviewingHistoricalChangeID ? 9 : -1);
|
|
166
|
+
i0.ɵɵadvance();
|
|
167
|
+
i0.ɵɵconditional(ctx_ir7.TotalLinksCount > 0 ? 10 : -1);
|
|
168
|
+
} }
|
|
92
169
|
function ChatAgentsOverlayComponent_Conditional_0_Conditional_2_Template(rf, ctx) { if (rf & 1) {
|
|
93
170
|
const _r4 = i0.ɵɵgetCurrentView();
|
|
94
171
|
i0.ɵɵelementStart(0, "div", 13);
|
|
@@ -111,10 +188,12 @@ function ChatAgentsOverlayComponent_Conditional_0_Conditional_2_Template(rf, ctx
|
|
|
111
188
|
i0.ɵɵlistener("click", function ChatAgentsOverlayComponent_Conditional_0_Conditional_2_Template_button_click_13_listener() { i0.ɵɵrestoreView(_r4); const ctx_r1 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r1.Collapse()); });
|
|
112
189
|
i0.ɵɵelement(14, "i", 24);
|
|
113
190
|
i0.ɵɵelementEnd()()();
|
|
114
|
-
i0.ɵɵ
|
|
115
|
-
i0.ɵɵ
|
|
191
|
+
i0.ɵɵconditionalCreate(15, ChatAgentsOverlayComponent_Conditional_0_Conditional_2_Conditional_15_Template, 11, 6, "div", 25);
|
|
192
|
+
i0.ɵɵelementStart(16, "div", 26)(17, "mj-conversation-chat-area", 27);
|
|
193
|
+
i0.ɵɵlistener("conversationCreated", function ChatAgentsOverlayComponent_Conditional_0_Conditional_2_Template_mj_conversation_chat_area_conversationCreated_17_listener($event) { i0.ɵɵrestoreView(_r4); const ctx_r1 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r1.OnConversationCreated($event)); })("conversationRenamed", function ChatAgentsOverlayComponent_Conditional_0_Conditional_2_Template_mj_conversation_chat_area_conversationRenamed_17_listener($event) { i0.ɵɵrestoreView(_r4); const ctx_r1 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r1.OnConversationRenamed($event)); })("pendingMessageConsumed", function ChatAgentsOverlayComponent_Conditional_0_Conditional_2_Template_mj_conversation_chat_area_pendingMessageConsumed_17_listener() { i0.ɵɵrestoreView(_r4); const ctx_r1 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r1.OnPendingMessageConsumed()); })("openEntityRecord", function ChatAgentsOverlayComponent_Conditional_0_Conditional_2_Template_mj_conversation_chat_area_openEntityRecord_17_listener($event) { i0.ɵɵrestoreView(_r4); const ctx_r1 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r1.OnOpenEntityRecord($event)); })("navigationRequest", function ChatAgentsOverlayComponent_Conditional_0_Conditional_2_Template_mj_conversation_chat_area_navigationRequest_17_listener($event) { i0.ɵɵrestoreView(_r4); const ctx_r1 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r1.OnNavigationRequest($event)); })("taskClicked", function ChatAgentsOverlayComponent_Conditional_0_Conditional_2_Template_mj_conversation_chat_area_taskClicked_17_listener($event) { i0.ɵɵrestoreView(_r4); const ctx_r1 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r1.OnTaskClicked($event)); });
|
|
116
194
|
i0.ɵɵelementEnd()()();
|
|
117
195
|
} if (rf & 2) {
|
|
196
|
+
let tmp_11_0;
|
|
118
197
|
const ctx_r1 = i0.ɵɵnextContext(2);
|
|
119
198
|
i0.ɵɵstyleProp("width", ctx_r1.State === "maximized" ? null : ctx_r1.PanelWidth, "px")("height", ctx_r1.State === "maximized" ? null : ctx_r1.PanelHeight, "px")("bottom", ctx_r1.State === "maximized" ? null : ctx_r1.PanelBottomPx, "px");
|
|
120
199
|
i0.ɵɵclassProp("maximized", ctx_r1.State === "maximized");
|
|
@@ -126,13 +205,15 @@ function ChatAgentsOverlayComponent_Conditional_0_Conditional_2_Template(rf, ctx
|
|
|
126
205
|
i0.ɵɵproperty("title", ctx_r1.State === "maximized" ? "Restore size" : "Maximize");
|
|
127
206
|
i0.ɵɵadvance();
|
|
128
207
|
i0.ɵɵclassProp("fa-expand", ctx_r1.State !== "maximized")("fa-compress", ctx_r1.State === "maximized");
|
|
129
|
-
i0.ɵɵadvance(
|
|
208
|
+
i0.ɵɵadvance(3);
|
|
209
|
+
i0.ɵɵconditional((tmp_11_0 = ctx_r1.ActiveRecordContext) ? 15 : -1, tmp_11_0);
|
|
210
|
+
i0.ɵɵadvance(2);
|
|
130
211
|
i0.ɵɵproperty("environmentId", ctx_r1.EnvironmentId)("currentUser", ctx_r1.CurrentUser)("conversationId", ctx_r1.ConversationId)("conversation", ctx_r1.Conversation)("isNewConversation", ctx_r1.IsNewConversation)("pendingMessage", ctx_r1.PendingMessage)("pendingAttachments", ctx_r1.PendingAttachments)("pendingMessageConversationId", ctx_r1.PendingMessageConversationId)("overlayMode", true)("showExportButton", false)("showShareButton", false)("showArtifactIndicator", false)("appContext", ctx_r1.AppContext)("emptyStateGreeting", ctx_r1.EmptyStateGreeting);
|
|
131
212
|
} }
|
|
132
213
|
function ChatAgentsOverlayComponent_Conditional_0_Template(rf, ctx) { if (rf & 1) {
|
|
133
214
|
i0.ɵɵconditionalCreate(0, ChatAgentsOverlayComponent_Conditional_0_Conditional_0_Template, 7, 7, "div", 0);
|
|
134
215
|
i0.ɵɵconditionalCreate(1, ChatAgentsOverlayComponent_Conditional_0_Conditional_1_Template, 3, 3, "button", 1);
|
|
135
|
-
i0.ɵɵconditionalCreate(2, ChatAgentsOverlayComponent_Conditional_0_Conditional_2_Template,
|
|
216
|
+
i0.ɵɵconditionalCreate(2, ChatAgentsOverlayComponent_Conditional_0_Conditional_2_Template, 18, 30, "div", 2);
|
|
136
217
|
} if (rf & 2) {
|
|
137
218
|
const ctx_r1 = i0.ɵɵnextContext();
|
|
138
219
|
i0.ɵɵconditional(ctx_r1.State === "collapsed" && !ctx_r1.IsHidden ? 0 : -1);
|
|
@@ -569,6 +650,37 @@ export class ChatAgentsOverlayComponent extends BaseAngularComponent {
|
|
|
569
650
|
- this.topReservedPx;
|
|
570
651
|
return Math.max(ChatAgentsOverlayComponent.BASE_BOTTOM_PX, Math.min(ideal, maxBottomForVisibility));
|
|
571
652
|
}
|
|
653
|
+
/**
|
|
654
|
+
* Extracts a structured summary of the currently open record form from
|
|
655
|
+
* `AppContext.AdditionalContext.Form` when the user is viewing a record.
|
|
656
|
+
*/
|
|
657
|
+
get ActiveRecordContext() {
|
|
658
|
+
const additional = this.AppContext?.['AdditionalContext'];
|
|
659
|
+
const form = additional?.['Form'];
|
|
660
|
+
if (!form || typeof form['Entity'] !== 'string' || !form['Entity']) {
|
|
661
|
+
return null;
|
|
662
|
+
}
|
|
663
|
+
const recordState = form['RecordState'];
|
|
664
|
+
const links = form['Links'];
|
|
665
|
+
const dirtyFieldNames = Array.isArray(recordState?.['DirtyFieldNames'])
|
|
666
|
+
? recordState['DirtyFieldNames'].filter((f) => typeof f === 'string')
|
|
667
|
+
: [];
|
|
668
|
+
return {
|
|
669
|
+
Entity: form['Entity'],
|
|
670
|
+
RecordPrimaryKey: typeof form['RecordPrimaryKey'] === 'string' ? form['RecordPrimaryKey'] : null,
|
|
671
|
+
RecordDisplayName: typeof recordState?.['RecordDisplayName'] === 'string' ? recordState['RecordDisplayName'] : null,
|
|
672
|
+
EditMode: recordState?.['EditMode'] === true,
|
|
673
|
+
Dirty: recordState?.['Dirty'] === true,
|
|
674
|
+
DirtyFieldNames: dirtyFieldNames,
|
|
675
|
+
HasExternalUpdateConflict: recordState?.['HasExternalUpdateConflict'] === true,
|
|
676
|
+
PreviewingHistoricalChangeID: typeof recordState?.['PreviewingHistoricalChangeID'] === 'string'
|
|
677
|
+
? recordState['PreviewingHistoricalChangeID']
|
|
678
|
+
: null,
|
|
679
|
+
TotalLinksCount: typeof links?.['TotalCount'] === 'number' ? links['TotalCount'] : 0,
|
|
680
|
+
OutgoingLinksCount: typeof links?.['OutgoingCount'] === 'number' ? links['OutgoingCount'] : 0,
|
|
681
|
+
IncomingLinksCount: typeof links?.['IncomingCount'] === 'number' ? links['IncomingCount'] : 0,
|
|
682
|
+
};
|
|
683
|
+
}
|
|
572
684
|
// --- Private Methods ---
|
|
573
685
|
/** Auto-resolve CurrentUser and EnvironmentId from Metadata when not provided as inputs */
|
|
574
686
|
resolveDefaults() {
|
|
@@ -669,15 +781,15 @@ export class ChatAgentsOverlayComponent extends BaseAngularComponent {
|
|
|
669
781
|
});
|
|
670
782
|
}
|
|
671
783
|
static ɵfac = /*@__PURE__*/ (() => { let ɵChatAgentsOverlayComponent_BaseFactory; return function ChatAgentsOverlayComponent_Factory(__ngFactoryType__) { return (ɵChatAgentsOverlayComponent_BaseFactory || (ɵChatAgentsOverlayComponent_BaseFactory = i0.ɵɵgetInheritedFactory(ChatAgentsOverlayComponent)))(__ngFactoryType__ || ChatAgentsOverlayComponent); }; })();
|
|
672
|
-
static ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: ChatAgentsOverlayComponent, selectors: [["mj-chat-agents-overlay"]], inputs: { IsVisible: "IsVisible", CurrentUser: "CurrentUser", EnvironmentId: "EnvironmentId", AppContext: "AppContext", EmptyStateGreeting: "EmptyStateGreeting", TopBoundaryPx: "TopBoundaryPx" }, outputs: { VisibilityChanged: "VisibilityChanged", ToolExecuted: "ToolExecuted", ConversationSwitched: "ConversationSwitched", OpenFullChatWorkspace: "OpenFullChatWorkspace", NavigationRequested: "NavigationRequested", OpenEntityRecord: "OpenEntityRecord", TaskClicked: "TaskClicked" }, standalone: false, features: [i0.ɵɵInheritDefinitionFeature], decls: 1, vars: 1, consts: [[1, "chat-overlay-bubble", 3, "is-pressed", "is-dragging", "bottom"], ["type", "button", "title", "Open chat", "aria-label", "Open chat", 1, "chat-overlay-sliver", 3, "bottom"], [1, "chat-overlay-panel", 3, "maximized", "width", "height", "bottom"], [1, "chat-overlay-bubble", 3, "pointerdown"], ["aria-hidden", "true", 1, "fa-solid", "fa-chevron-up", "chat-overlay-bubble-arrow", "chat-overlay-bubble-arrow-up"], ["aria-hidden", "true", 1, "fa-solid", "fa-chevron-down", "chat-overlay-bubble-arrow", "chat-overlay-bubble-arrow-down"], [1, "fa-solid", "fa-comments", "chat-overlay-bubble-icon"], [1, "chat-overlay-badge"], ["type", "button", "title", "Hide chat \u2014 a thin sliver will remain on the right edge", "aria-label", "Hide chat overlay", 1, "chat-overlay-bubble-close", 3, "pointerdown", "click"], ["aria-hidden", "true", 1, "fa-solid", "fa-times"], ["type", "button", "title", "Open chat", "aria-label", "Open chat", 1, "chat-overlay-sliver", 3, "click"], ["aria-hidden", "true", 1, "fa-solid", "fa-comments", "chat-overlay-sliver-icon"], [1, "chat-overlay-badge", "chat-overlay-sliver-badge"], [1, "chat-overlay-panel"], [1, "chat-overlay-header"], [1, "chat-overlay-title"], [1, "fa-solid", "fa-robot"], [1, "chat-overlay-header-actions"], ["title", "New conversation", 1, "chat-overlay-header-btn", 3, "click"], [1, "fa-solid", "fa-plus"], ["title", "Open in full chat workspace", 1, "chat-overlay-header-btn"], [1, "chat-overlay-header-btn", 3, "click", "title"], [1, "fa-solid"], ["title", "Minimize", 1, "chat-overlay-header-btn", 3, "click"], [1, "fa-solid", "fa-minus"], [1, "chat-overlay-body"], [3, "conversationCreated", "conversationRenamed", "pendingMessageConsumed", "openEntityRecord", "navigationRequest", "taskClicked", "environmentId", "currentUser", "conversationId", "conversation", "isNewConversation", "pendingMessage", "pendingAttachments", "pendingMessageConversationId", "overlayMode", "showExportButton", "showShareButton", "showArtifactIndicator", "appContext", "emptyStateGreeting"], [1, "resize-handle", "resize-left", 3, "mousedown"], [1, "resize-handle", "resize-top", 3, "mousedown"], [1, "resize-handle", "resize-top-left", 3, "mousedown"], ["title", "Open in full chat workspace", 1, "chat-overlay-header-btn", 3, "click"], [1, "fa-solid", "fa-up-right-from-square"]], template: function ChatAgentsOverlayComponent_Template(rf, ctx) { if (rf & 1) {
|
|
784
|
+
static ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: ChatAgentsOverlayComponent, selectors: [["mj-chat-agents-overlay"]], inputs: { IsVisible: "IsVisible", CurrentUser: "CurrentUser", EnvironmentId: "EnvironmentId", AppContext: "AppContext", EmptyStateGreeting: "EmptyStateGreeting", TopBoundaryPx: "TopBoundaryPx" }, outputs: { VisibilityChanged: "VisibilityChanged", ToolExecuted: "ToolExecuted", ConversationSwitched: "ConversationSwitched", OpenFullChatWorkspace: "OpenFullChatWorkspace", NavigationRequested: "NavigationRequested", OpenEntityRecord: "OpenEntityRecord", TaskClicked: "TaskClicked" }, standalone: false, features: [i0.ɵɵInheritDefinitionFeature], decls: 1, vars: 1, consts: [[1, "chat-overlay-bubble", 3, "is-pressed", "is-dragging", "bottom"], ["type", "button", "title", "Open chat", "aria-label", "Open chat", 1, "chat-overlay-sliver", 3, "bottom"], [1, "chat-overlay-panel", 3, "maximized", "width", "height", "bottom"], [1, "chat-overlay-bubble", 3, "pointerdown"], ["aria-hidden", "true", 1, "fa-solid", "fa-chevron-up", "chat-overlay-bubble-arrow", "chat-overlay-bubble-arrow-up"], ["aria-hidden", "true", 1, "fa-solid", "fa-chevron-down", "chat-overlay-bubble-arrow", "chat-overlay-bubble-arrow-down"], [1, "fa-solid", "fa-comments", "chat-overlay-bubble-icon"], [1, "chat-overlay-badge"], ["type", "button", "title", "Hide chat \u2014 a thin sliver will remain on the right edge", "aria-label", "Hide chat overlay", 1, "chat-overlay-bubble-close", 3, "pointerdown", "click"], ["aria-hidden", "true", 1, "fa-solid", "fa-times"], ["type", "button", "title", "Open chat", "aria-label", "Open chat", 1, "chat-overlay-sliver", 3, "click"], ["aria-hidden", "true", 1, "fa-solid", "fa-comments", "chat-overlay-sliver-icon"], [1, "chat-overlay-badge", "chat-overlay-sliver-badge"], [1, "chat-overlay-panel"], [1, "chat-overlay-header"], [1, "chat-overlay-title"], [1, "fa-solid", "fa-robot"], [1, "chat-overlay-header-actions"], ["title", "New conversation", 1, "chat-overlay-header-btn", 3, "click"], [1, "fa-solid", "fa-plus"], ["title", "Open in full chat workspace", 1, "chat-overlay-header-btn"], [1, "chat-overlay-header-btn", 3, "click", "title"], [1, "fa-solid"], ["title", "Minimize", 1, "chat-overlay-header-btn", 3, "click"], [1, "fa-solid", "fa-minus"], ["role", "status", "aria-live", "polite", 1, "chat-overlay-record-context-bar"], [1, "chat-overlay-body"], [3, "conversationCreated", "conversationRenamed", "pendingMessageConsumed", "openEntityRecord", "navigationRequest", "taskClicked", "environmentId", "currentUser", "conversationId", "conversation", "isNewConversation", "pendingMessage", "pendingAttachments", "pendingMessageConversationId", "overlayMode", "showExportButton", "showShareButton", "showArtifactIndicator", "appContext", "emptyStateGreeting"], [1, "resize-handle", "resize-left", 3, "mousedown"], [1, "resize-handle", "resize-top", 3, "mousedown"], [1, "resize-handle", "resize-top-left", 3, "mousedown"], ["title", "Open in full chat workspace", 1, "chat-overlay-header-btn", 3, "click"], [1, "fa-solid", "fa-up-right-from-square"], [1, "chat-overlay-context-main"], ["aria-hidden", "true", 1, "fa-solid", "fa-wand-magic-sparkles", "chat-overlay-context-icon"], [1, "chat-overlay-context-entity"], [1, "chat-overlay-context-chips"], [1, "chat-overlay-context-chip", "chat-overlay-context-chip-dirty", 3, "title"], ["title", "Record has an external update conflict", 1, "chat-overlay-context-chip", "chat-overlay-context-chip-conflict"], ["title", "Previewing a historical version in form", 1, "chat-overlay-context-chip", "chat-overlay-context-chip-timetravel"], [1, "chat-overlay-context-chip", "chat-overlay-context-chip-links", 3, "title"], ["aria-hidden", "true", 1, "chat-overlay-context-sep"], [1, "chat-overlay-context-record-name", 3, "title"], ["aria-hidden", "true", 1, "fa-solid", "fa-pen"], ["aria-hidden", "true", 1, "fa-solid", "fa-triangle-exclamation"], ["aria-hidden", "true", 1, "fa-solid", "fa-clock-rotate-left"], ["aria-hidden", "true", 1, "fa-solid", "fa-diagram-project"]], template: function ChatAgentsOverlayComponent_Template(rf, ctx) { if (rf & 1) {
|
|
673
785
|
i0.ɵɵconditionalCreate(0, ChatAgentsOverlayComponent_Conditional_0_Template, 3, 3);
|
|
674
786
|
} if (rf & 2) {
|
|
675
787
|
i0.ɵɵconditional(ctx.IsVisible ? 0 : -1);
|
|
676
|
-
} }, dependencies: [i1.ConversationChatAreaComponent], styles: ["\n\n\n\n\n\n\n.chat-overlay-bubble[_ngcontent-%COMP%] {\n position: fixed;\n bottom: 1.5rem;\n right: 1.5rem;\n width: 3.5rem;\n height: 3.5rem;\n border-radius: 50%;\n background: var(--mj-brand-primary);\n color: var(--mj-text-inverse);\n display: flex;\n align-items: center;\n justify-content: center;\n cursor: pointer;\n box-shadow: 0 4px 16px rgba(0, 0, 0, 0.2);\n z-index: 2147483647;\n transition: transform 0.2s ease, box-shadow 0.2s ease;\n animation: _ngcontent-%COMP%_overlayBubbleIn 0.3s ease;\n \n\n touch-action: none;\n user-select: none;\n -webkit-user-select: none;\n}\n\n\n\n\n\n\n.chat-overlay-bubble-arrow[_ngcontent-%COMP%] {\n position: absolute;\n left: 50%;\n transform: translateX(-50%);\n color: var(--mj-text-muted);\n font-size: 0.65rem;\n opacity: 0;\n pointer-events: none;\n transition: opacity 0.18s ease;\n}\n\n.chat-overlay-bubble-arrow-up[_ngcontent-%COMP%] {\n top: -0.85rem;\n}\n\n.chat-overlay-bubble-arrow-down[_ngcontent-%COMP%] {\n bottom: -0.85rem;\n}\n\n\n.chat-overlay-bubble[_ngcontent-%COMP%]:hover .chat-overlay-bubble-arrow[_ngcontent-%COMP%], \n.chat-overlay-bubble.is-pressed[_ngcontent-%COMP%] .chat-overlay-bubble-arrow[_ngcontent-%COMP%], \n.chat-overlay-bubble.is-dragging[_ngcontent-%COMP%] .chat-overlay-bubble-arrow[_ngcontent-%COMP%] {\n opacity: 0.85;\n}\n\n\n\n\n@media (hover: none) {\n .chat-overlay-bubble-arrow[_ngcontent-%COMP%] {\n opacity: 0.5;\n }\n}\n\n.chat-overlay-bubble[_ngcontent-%COMP%]:hover {\n transform: scale(1.08);\n box-shadow: 0 6px 24px rgba(0, 0, 0, 0.3);\n}\n\n\n\n.chat-overlay-bubble.is-pressed[_ngcontent-%COMP%] {\n cursor: grabbing;\n transform: scale(0.94);\n transition: transform 0.08s ease;\n box-shadow:\n 0 2px 6px rgba(0, 0, 0, 0.25),\n 0 0 0 4px color-mix(in srgb, var(--mj-brand-primary) 25%, transparent);\n}\n\n\n.chat-overlay-bubble.is-dragging[_ngcontent-%COMP%] {\n cursor: grabbing;\n transform: scale(1.04);\n transition: none;\n box-shadow:\n 0 8px 28px rgba(0, 0, 0, 0.35),\n 0 0 0 4px color-mix(in srgb, var(--mj-brand-primary) 40%, transparent);\n}\n\n@keyframes _ngcontent-%COMP%_overlayBubbleIn {\n from {\n transform: scale(0);\n opacity: 0;\n }\n to {\n transform: scale(1);\n opacity: 1;\n }\n}\n\n.chat-overlay-bubble-icon[_ngcontent-%COMP%] {\n font-size: 1.3rem;\n}\n\n.chat-overlay-badge[_ngcontent-%COMP%] {\n position: absolute;\n top: -4px;\n right: -4px;\n min-width: 1.2rem;\n height: 1.2rem;\n border-radius: 9999px;\n background: var(--mj-status-error);\n color: var(--mj-text-inverse);\n font-size: 0.65rem;\n font-weight: 700;\n display: flex;\n align-items: center;\n justify-content: center;\n padding: 0 0.25rem;\n border: 2px solid var(--mj-bg-page);\n}\n\n\n\n\n.chat-overlay-bubble-close[_ngcontent-%COMP%] {\n position: absolute;\n top: 50%;\n \n\n\n right: 100%;\n transform: translateY(-50%);\n width: 1.25rem;\n height: 1.25rem;\n padding: 0;\n border-radius: 9999px;\n background: var(--mj-bg-surface-card);\n border: 1px solid var(--mj-border-strong);\n color: var(--mj-text-secondary);\n cursor: pointer;\n display: flex;\n align-items: center;\n justify-content: center;\n font-size: 0.65rem;\n box-shadow: 0 2px 6px rgba(0, 0, 0, 0.25);\n opacity: 0;\n pointer-events: none;\n transition: opacity 0.15s ease, color 0.15s ease, border-color 0.15s ease, transform 0.15s ease;\n}\n\n.chat-overlay-bubble[_ngcontent-%COMP%]:hover .chat-overlay-bubble-close[_ngcontent-%COMP%] {\n opacity: 1;\n pointer-events: auto;\n}\n\n.chat-overlay-bubble-close[_ngcontent-%COMP%]:hover {\n color: var(--mj-text-primary);\n border-color: var(--mj-brand-primary);\n transform: translateY(-50%) scale(1.08);\n}\n\n\n@media (hover: none) {\n .chat-overlay-bubble-close[_ngcontent-%COMP%] {\n opacity: 0.7;\n pointer-events: auto;\n }\n}\n\n\n.chat-overlay-bubble.is-dragging[_ngcontent-%COMP%] .chat-overlay-bubble-close[_ngcontent-%COMP%], \n.chat-overlay-bubble.is-pressed[_ngcontent-%COMP%] .chat-overlay-bubble-close[_ngcontent-%COMP%] {\n opacity: 0;\n pointer-events: none;\n}\n\n\n\n.chat-overlay-sliver[_ngcontent-%COMP%] {\n position: fixed;\n right: 0;\n width: 0.875rem; \n height: 5rem; \n padding: 0;\n background: var(--mj-brand-primary);\n border: none;\n border-radius: 8px 0 0 8px;\n color: var(--mj-text-inverse);\n cursor: pointer;\n display: flex;\n align-items: center;\n justify-content: center;\n box-shadow: 0 4px 12px rgba(0, 0, 0, 0.3);\n z-index: 2147483647;\n transition: width 0.18s ease, background 0.15s ease;\n animation: _ngcontent-%COMP%_overlayBubbleIn 0.25s ease;\n}\n\n.chat-overlay-sliver[_ngcontent-%COMP%]:hover {\n width: 1.5rem; \n background: color-mix(in srgb, var(--mj-brand-primary) 85%, white);\n}\n\n.chat-overlay-sliver-icon[_ngcontent-%COMP%] {\n font-size: 0.55rem;\n opacity: 0.95;\n}\n\n.chat-overlay-sliver[_ngcontent-%COMP%]:hover .chat-overlay-sliver-icon[_ngcontent-%COMP%] {\n font-size: 0.7rem;\n}\n\n.chat-overlay-sliver-badge[_ngcontent-%COMP%] {\n \n top: -6px;\n right: -6px;\n}\n\n\n\n.chat-overlay-panel[_ngcontent-%COMP%] {\n position: fixed;\n bottom: 1.5rem;\n right: 1.5rem;\n border-radius: 12px;\n background: var(--mj-bg-surface);\n border: 2px solid color-mix(in srgb, var(--mj-brand-primary) 50%, var(--mj-border-strong));\n box-shadow:\n 0 8px 32px rgba(0, 0, 0, 0.3),\n 0 2px 8px rgba(0, 0, 0, 0.15);\n z-index: 2147483647;\n display: flex;\n flex-direction: column;\n overflow: hidden;\n animation: _ngcontent-%COMP%_overlayPanelIn 0.25s ease;\n max-height: calc(100vh - 3rem);\n max-width: calc(100vw - 3rem);\n}\n\n.chat-overlay-panel.maximized[_ngcontent-%COMP%] {\n bottom: 1rem;\n right: 1rem;\n width: calc(100vw - 2rem) !important;\n height: calc(100vh - 2rem) !important;\n max-height: none;\n max-width: none;\n border-radius: 12px;\n}\n\n@keyframes _ngcontent-%COMP%_overlayPanelIn {\n from {\n opacity: 0;\n transform: scale(0.9) translateY(10px);\n }\n to {\n opacity: 1;\n transform: scale(1) translateY(0);\n }\n}\n\n\n\n.resize-handle[_ngcontent-%COMP%] {\n position: absolute;\n z-index: 2;\n}\n\n.resize-left[_ngcontent-%COMP%] {\n left: -3px;\n top: 20px;\n bottom: 20px;\n width: 6px;\n cursor: ew-resize;\n}\n\n.resize-top[_ngcontent-%COMP%] {\n top: -3px;\n left: 20px;\n right: 20px;\n height: 6px;\n cursor: ns-resize;\n}\n\n.resize-top-left[_ngcontent-%COMP%] {\n top: -4px;\n left: -4px;\n width: 16px;\n height: 16px;\n cursor: nwse-resize;\n}\n\n.resize-handle[_ngcontent-%COMP%]:hover {\n background: color-mix(in srgb, var(--mj-brand-primary) 30%, transparent);\n border-radius: 3px;\n}\n\n\n\n.chat-overlay-header[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n justify-content: space-between;\n padding: 0.6rem 0.75rem;\n border-bottom: 1px solid var(--mj-border-default);\n background: var(--mj-bg-surface-card);\n flex-shrink: 0;\n}\n\n.chat-overlay-title[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 0.5rem;\n font-weight: 600;\n font-size: 0.9rem;\n color: var(--mj-text-primary);\n}\n\n.chat-overlay-title[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n color: var(--mj-brand-primary);\n}\n\n.chat-overlay-header-actions[_ngcontent-%COMP%] {\n display: flex;\n gap: 0.25rem;\n}\n\n.chat-overlay-header-btn[_ngcontent-%COMP%] {\n width: 1.75rem;\n height: 1.75rem;\n border-radius: 6px;\n border: none;\n background: transparent;\n color: var(--mj-text-muted);\n cursor: pointer;\n display: flex;\n align-items: center;\n justify-content: center;\n font-size: 0.75rem;\n transition: all 0.15s ease;\n}\n\n.chat-overlay-header-btn[_ngcontent-%COMP%]:hover {\n background: var(--mj-bg-surface-hover);\n color: var(--mj-text-primary);\n}\n\n\n\n.chat-overlay-body[_ngcontent-%COMP%] {\n flex: 1;\n overflow: hidden;\n display: flex;\n flex-direction: column;\n min-height: 0;\n}\n\n.chat-overlay-body[_ngcontent-%COMP%] mj-conversation-chat-area[_ngcontent-%COMP%] {\n flex: 1;\n display: flex;\n flex-direction: column;\n height: 100%;\n}\n\n\n\n\n\n\n@media (max-width: 640px) {\n .chat-overlay-panel[_ngcontent-%COMP%] {\n bottom: 0 !important;\n right: 0;\n width: 100% !important;\n height: 100vh !important;\n max-height: 100vh;\n border-radius: 0;\n }\n\n .chat-overlay-bubble[_ngcontent-%COMP%] {\n \n\n\n\n width: 2.75rem;\n height: 2.75rem;\n right: 1rem;\n }\n\n .chat-overlay-bubble-icon[_ngcontent-%COMP%] {\n font-size: 1.1rem;\n }\n\n .chat-overlay-badge[_ngcontent-%COMP%] {\n min-width: 1rem;\n height: 1rem;\n font-size: 0.6rem;\n top: -3px;\n right: -3px;\n }\n\n .resize-handle[_ngcontent-%COMP%] {\n display: none;\n }\n\n \n .chat-overlay-sliver[_ngcontent-%COMP%] {\n width: 1.25rem;\n height: 4.5rem;\n }\n}"] });
|
|
788
|
+
} }, dependencies: [i1.ConversationChatAreaComponent], styles: ["\n\n\n\n\n\n\n.chat-overlay-bubble[_ngcontent-%COMP%] {\n position: fixed;\n bottom: 1.5rem;\n right: 1.5rem;\n width: 3.5rem;\n height: 3.5rem;\n border-radius: 50%;\n background: var(--mj-brand-primary);\n color: var(--mj-text-inverse);\n display: flex;\n align-items: center;\n justify-content: center;\n cursor: pointer;\n box-shadow: 0 4px 16px rgba(0, 0, 0, 0.2);\n z-index: 2147483647;\n transition: transform 0.2s ease, box-shadow 0.2s ease;\n animation: _ngcontent-%COMP%_overlayBubbleIn 0.3s ease;\n \n\n touch-action: none;\n user-select: none;\n -webkit-user-select: none;\n}\n\n\n\n\n\n\n.chat-overlay-bubble-arrow[_ngcontent-%COMP%] {\n position: absolute;\n left: 50%;\n transform: translateX(-50%);\n color: var(--mj-text-muted);\n font-size: 0.65rem;\n opacity: 0;\n pointer-events: none;\n transition: opacity 0.18s ease;\n}\n\n.chat-overlay-bubble-arrow-up[_ngcontent-%COMP%] {\n top: -0.85rem;\n}\n\n.chat-overlay-bubble-arrow-down[_ngcontent-%COMP%] {\n bottom: -0.85rem;\n}\n\n\n.chat-overlay-bubble[_ngcontent-%COMP%]:hover .chat-overlay-bubble-arrow[_ngcontent-%COMP%], \n.chat-overlay-bubble.is-pressed[_ngcontent-%COMP%] .chat-overlay-bubble-arrow[_ngcontent-%COMP%], \n.chat-overlay-bubble.is-dragging[_ngcontent-%COMP%] .chat-overlay-bubble-arrow[_ngcontent-%COMP%] {\n opacity: 0.85;\n}\n\n\n\n\n@media (hover: none) {\n .chat-overlay-bubble-arrow[_ngcontent-%COMP%] {\n opacity: 0.5;\n }\n}\n\n.chat-overlay-bubble[_ngcontent-%COMP%]:hover {\n transform: scale(1.08);\n box-shadow: 0 6px 24px rgba(0, 0, 0, 0.3);\n}\n\n\n\n.chat-overlay-bubble.is-pressed[_ngcontent-%COMP%] {\n cursor: grabbing;\n transform: scale(0.94);\n transition: transform 0.08s ease;\n box-shadow:\n 0 2px 6px rgba(0, 0, 0, 0.25),\n 0 0 0 4px color-mix(in srgb, var(--mj-brand-primary) 25%, transparent);\n}\n\n\n.chat-overlay-bubble.is-dragging[_ngcontent-%COMP%] {\n cursor: grabbing;\n transform: scale(1.04);\n transition: none;\n box-shadow:\n 0 8px 28px rgba(0, 0, 0, 0.35),\n 0 0 0 4px color-mix(in srgb, var(--mj-brand-primary) 40%, transparent);\n}\n\n@keyframes _ngcontent-%COMP%_overlayBubbleIn {\n from {\n transform: scale(0);\n opacity: 0;\n }\n to {\n transform: scale(1);\n opacity: 1;\n }\n}\n\n.chat-overlay-bubble-icon[_ngcontent-%COMP%] {\n font-size: 1.3rem;\n}\n\n.chat-overlay-badge[_ngcontent-%COMP%] {\n position: absolute;\n top: -4px;\n right: -4px;\n min-width: 1.2rem;\n height: 1.2rem;\n border-radius: 9999px;\n background: var(--mj-status-error);\n color: var(--mj-text-inverse);\n font-size: 0.65rem;\n font-weight: 700;\n display: flex;\n align-items: center;\n justify-content: center;\n padding: 0 0.25rem;\n border: 2px solid var(--mj-bg-page);\n}\n\n\n\n\n.chat-overlay-bubble-close[_ngcontent-%COMP%] {\n position: absolute;\n top: 50%;\n \n\n\n right: 100%;\n transform: translateY(-50%);\n width: 1.25rem;\n height: 1.25rem;\n padding: 0;\n border-radius: 9999px;\n background: var(--mj-bg-surface-card);\n border: 1px solid var(--mj-border-strong);\n color: var(--mj-text-secondary);\n cursor: pointer;\n display: flex;\n align-items: center;\n justify-content: center;\n font-size: 0.65rem;\n box-shadow: 0 2px 6px rgba(0, 0, 0, 0.25);\n opacity: 0;\n pointer-events: none;\n transition: opacity 0.15s ease, color 0.15s ease, border-color 0.15s ease, transform 0.15s ease;\n}\n\n.chat-overlay-bubble[_ngcontent-%COMP%]:hover .chat-overlay-bubble-close[_ngcontent-%COMP%] {\n opacity: 1;\n pointer-events: auto;\n}\n\n.chat-overlay-bubble-close[_ngcontent-%COMP%]:hover {\n color: var(--mj-text-primary);\n border-color: var(--mj-brand-primary);\n transform: translateY(-50%) scale(1.08);\n}\n\n\n@media (hover: none) {\n .chat-overlay-bubble-close[_ngcontent-%COMP%] {\n opacity: 0.7;\n pointer-events: auto;\n }\n}\n\n\n.chat-overlay-bubble.is-dragging[_ngcontent-%COMP%] .chat-overlay-bubble-close[_ngcontent-%COMP%], \n.chat-overlay-bubble.is-pressed[_ngcontent-%COMP%] .chat-overlay-bubble-close[_ngcontent-%COMP%] {\n opacity: 0;\n pointer-events: none;\n}\n\n\n\n.chat-overlay-sliver[_ngcontent-%COMP%] {\n position: fixed;\n right: 0;\n width: 0.875rem; \n height: 5rem; \n padding: 0;\n background: var(--mj-brand-primary);\n border: none;\n border-radius: 8px 0 0 8px;\n color: var(--mj-text-inverse);\n cursor: pointer;\n display: flex;\n align-items: center;\n justify-content: center;\n box-shadow: 0 4px 12px rgba(0, 0, 0, 0.3);\n z-index: 2147483647;\n transition: width 0.18s ease, background 0.15s ease;\n animation: _ngcontent-%COMP%_overlayBubbleIn 0.25s ease;\n}\n\n.chat-overlay-sliver[_ngcontent-%COMP%]:hover {\n width: 1.5rem; \n background: color-mix(in srgb, var(--mj-brand-primary) 85%, white);\n}\n\n.chat-overlay-sliver-icon[_ngcontent-%COMP%] {\n font-size: 0.55rem;\n opacity: 0.95;\n}\n\n.chat-overlay-sliver[_ngcontent-%COMP%]:hover .chat-overlay-sliver-icon[_ngcontent-%COMP%] {\n font-size: 0.7rem;\n}\n\n.chat-overlay-sliver-badge[_ngcontent-%COMP%] {\n \n top: -6px;\n right: -6px;\n}\n\n\n\n.chat-overlay-panel[_ngcontent-%COMP%] {\n position: fixed;\n bottom: 1.5rem;\n right: 1.5rem;\n border-radius: 12px;\n background: var(--mj-bg-surface);\n border: 2px solid color-mix(in srgb, var(--mj-brand-primary) 50%, var(--mj-border-strong));\n box-shadow:\n 0 8px 32px rgba(0, 0, 0, 0.3),\n 0 2px 8px rgba(0, 0, 0, 0.15);\n z-index: 2147483647;\n display: flex;\n flex-direction: column;\n overflow: hidden;\n animation: _ngcontent-%COMP%_overlayPanelIn 0.25s ease;\n max-height: calc(100vh - 3rem);\n max-width: calc(100vw - 3rem);\n}\n\n.chat-overlay-panel.maximized[_ngcontent-%COMP%] {\n bottom: 1rem;\n right: 1rem;\n width: calc(100vw - 2rem) !important;\n height: calc(100vh - 2rem) !important;\n max-height: none;\n max-width: none;\n border-radius: 12px;\n}\n\n@keyframes _ngcontent-%COMP%_overlayPanelIn {\n from {\n opacity: 0;\n transform: scale(0.9) translateY(10px);\n }\n to {\n opacity: 1;\n transform: scale(1) translateY(0);\n }\n}\n\n\n\n.resize-handle[_ngcontent-%COMP%] {\n position: absolute;\n z-index: 2;\n}\n\n.resize-left[_ngcontent-%COMP%] {\n left: -3px;\n top: 20px;\n bottom: 20px;\n width: 6px;\n cursor: ew-resize;\n}\n\n.resize-top[_ngcontent-%COMP%] {\n top: -3px;\n left: 20px;\n right: 20px;\n height: 6px;\n cursor: ns-resize;\n}\n\n.resize-top-left[_ngcontent-%COMP%] {\n top: -4px;\n left: -4px;\n width: 16px;\n height: 16px;\n cursor: nwse-resize;\n}\n\n.resize-handle[_ngcontent-%COMP%]:hover {\n background: color-mix(in srgb, var(--mj-brand-primary) 30%, transparent);\n border-radius: 3px;\n}\n\n\n\n.chat-overlay-header[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n justify-content: space-between;\n padding: 0.6rem 0.75rem;\n border-bottom: 1px solid var(--mj-border-default);\n background: var(--mj-bg-surface-card);\n flex-shrink: 0;\n}\n\n.chat-overlay-title[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 0.5rem;\n font-weight: 600;\n font-size: 0.9rem;\n color: var(--mj-text-primary);\n}\n\n.chat-overlay-title[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n color: var(--mj-brand-primary);\n}\n\n.chat-overlay-header-actions[_ngcontent-%COMP%] {\n display: flex;\n gap: 0.25rem;\n}\n\n.chat-overlay-header-btn[_ngcontent-%COMP%] {\n width: 1.75rem;\n height: 1.75rem;\n border-radius: 6px;\n border: none;\n background: transparent;\n color: var(--mj-text-muted);\n cursor: pointer;\n display: flex;\n align-items: center;\n justify-content: center;\n font-size: 0.75rem;\n transition: all 0.15s ease;\n}\n\n.chat-overlay-header-btn[_ngcontent-%COMP%]:hover {\n background: var(--mj-bg-surface-hover);\n color: var(--mj-text-primary);\n}\n\n\n\n.chat-overlay-record-context-bar[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n justify-content: space-between;\n gap: 0.5rem;\n padding: 0.4rem 0.75rem;\n background: color-mix(in srgb, var(--mj-brand-primary) 7%, var(--mj-bg-surface-card));\n border-bottom: 1px solid color-mix(in srgb, var(--mj-brand-primary) 22%, var(--mj-border-default));\n font-size: 0.75rem;\n color: var(--mj-text-secondary);\n flex-shrink: 0;\n flex-wrap: wrap;\n}\n\n.chat-overlay-context-main[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 0.35rem;\n min-width: 0;\n flex: 1;\n}\n\n.chat-overlay-context-icon[_ngcontent-%COMP%] {\n color: var(--mj-brand-primary);\n font-size: 0.75rem;\n flex-shrink: 0;\n}\n\n.chat-overlay-context-entity[_ngcontent-%COMP%] {\n font-weight: 600;\n color: var(--mj-text-primary);\n white-space: nowrap;\n}\n\n.chat-overlay-context-sep[_ngcontent-%COMP%] {\n color: var(--mj-text-muted);\n flex-shrink: 0;\n}\n\n.chat-overlay-context-record-name[_ngcontent-%COMP%] {\n color: var(--mj-text-secondary);\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n}\n\n.chat-overlay-context-chips[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 0.25rem;\n flex-shrink: 0;\n flex-wrap: wrap;\n}\n\n.chat-overlay-context-chip[_ngcontent-%COMP%] {\n display: inline-flex;\n align-items: center;\n gap: 0.25rem;\n padding: 0.1rem 0.4rem;\n border-radius: 999px;\n font-size: 0.68rem;\n font-weight: 600;\n white-space: nowrap;\n border: 1px solid var(--mj-border-default);\n background: var(--mj-bg-surface);\n color: var(--mj-text-secondary);\n}\n\n.chat-overlay-context-chip-dirty[_ngcontent-%COMP%] {\n color: var(--mj-status-warning);\n border-color: color-mix(in srgb, var(--mj-status-warning) 35%, var(--mj-border-default));\n background: color-mix(in srgb, var(--mj-status-warning) 10%, var(--mj-bg-surface));\n}\n\n.chat-overlay-context-chip-conflict[_ngcontent-%COMP%] {\n color: var(--mj-status-error);\n border-color: color-mix(in srgb, var(--mj-status-error) 35%, var(--mj-border-default));\n background: color-mix(in srgb, var(--mj-status-error) 10%, var(--mj-bg-surface));\n}\n\n.chat-overlay-context-chip-timetravel[_ngcontent-%COMP%] {\n color: var(--mj-brand-primary);\n border-color: color-mix(in srgb, var(--mj-brand-primary) 35%, var(--mj-border-default));\n background: color-mix(in srgb, var(--mj-brand-primary) 10%, var(--mj-bg-surface));\n}\n\n.chat-overlay-context-chip-links[_ngcontent-%COMP%] {\n color: var(--mj-brand-primary);\n border-color: color-mix(in srgb, var(--mj-brand-primary) 28%, var(--mj-border-default));\n background: color-mix(in srgb, var(--mj-brand-primary) 8%, var(--mj-bg-surface));\n}\n\n\n\n.chat-overlay-body[_ngcontent-%COMP%] {\n flex: 1;\n overflow: hidden;\n display: flex;\n flex-direction: column;\n min-height: 0;\n}\n\n.chat-overlay-body[_ngcontent-%COMP%] mj-conversation-chat-area[_ngcontent-%COMP%] {\n flex: 1;\n display: flex;\n flex-direction: column;\n height: 100%;\n}\n\n\n\n\n\n\n@media (max-width: 640px) {\n .chat-overlay-panel[_ngcontent-%COMP%] {\n bottom: 0 !important;\n right: 0;\n width: 100% !important;\n height: 100vh !important;\n max-height: 100vh;\n border-radius: 0;\n }\n\n .chat-overlay-bubble[_ngcontent-%COMP%] {\n \n\n\n\n width: 2.75rem;\n height: 2.75rem;\n right: 1rem;\n }\n\n .chat-overlay-bubble-icon[_ngcontent-%COMP%] {\n font-size: 1.1rem;\n }\n\n .chat-overlay-badge[_ngcontent-%COMP%] {\n min-width: 1rem;\n height: 1rem;\n font-size: 0.6rem;\n top: -3px;\n right: -3px;\n }\n\n .resize-handle[_ngcontent-%COMP%] {\n display: none;\n }\n\n \n .chat-overlay-sliver[_ngcontent-%COMP%] {\n width: 1.25rem;\n height: 4.5rem;\n }\n}"] });
|
|
677
789
|
}
|
|
678
790
|
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(ChatAgentsOverlayComponent, [{
|
|
679
791
|
type: Component,
|
|
680
|
-
args: [{ standalone: false, selector: 'mj-chat-agents-overlay', template: "@if (IsVisible) {\n <!-- Floating Button (collapsed state, not hidden) -->\n @if (State === 'collapsed' && !IsHidden) {\n <div class=\"chat-overlay-bubble\"\n [class.is-pressed]=\"IsBubblePressed\"\n [class.is-dragging]=\"IsBubbleDragging\"\n [style.bottom.px]=\"BubbleBottomPx\"\n (pointerdown)=\"OnBubblePointerDown($event)\">\n <i class=\"fa-solid fa-chevron-up chat-overlay-bubble-arrow chat-overlay-bubble-arrow-up\" aria-hidden=\"true\"></i>\n <i class=\"fa-solid fa-chevron-down chat-overlay-bubble-arrow chat-overlay-bubble-arrow-down\" aria-hidden=\"true\"></i>\n <i class=\"fa-solid fa-comments chat-overlay-bubble-icon\"></i>\n @if (UnreadCount > 0) {\n <span class=\"chat-overlay-badge\">{{ UnreadCount > 9 ? '9+' : UnreadCount }}</span>\n }\n <!-- Hide affordance: revealed on hover. pointerdown stops drag from starting; click hides the bubble. -->\n <button type=\"button\"\n class=\"chat-overlay-bubble-close\"\n title=\"Hide chat \u2014 a thin sliver will remain on the right edge\"\n aria-label=\"Hide chat overlay\"\n (pointerdown)=\"$event.stopPropagation()\"\n (click)=\"Hide($event)\">\n <i class=\"fa-solid fa-times\" aria-hidden=\"true\"></i>\n </button>\n </div>\n }\n\n <!-- Collapsed sliver \u2014 flush with the right edge when the bubble is hidden.\n Click opens the chat directly; closing returns to the bubble (not the\n sliver). To re-enter hidden mode the user clicks the \u00D7 pill again. -->\n @if (State === 'collapsed' && IsHidden) {\n <button type=\"button\"\n class=\"chat-overlay-sliver\"\n title=\"Open chat\"\n aria-label=\"Open chat\"\n [style.bottom.px]=\"BubbleBottomPx\"\n (click)=\"Expand()\">\n <i class=\"fa-solid fa-comments chat-overlay-sliver-icon\" aria-hidden=\"true\"></i>\n @if (UnreadCount > 0) {\n <span class=\"chat-overlay-badge chat-overlay-sliver-badge\">{{ UnreadCount > 9 ? '9+' : UnreadCount }}</span>\n }\n </button>\n }\n\n <!-- Expanded / Maximized Chat Panel -->\n @if (State === 'expanded' || State === 'maximized') {\n <div class=\"chat-overlay-panel\"\n [class.maximized]=\"State === 'maximized'\"\n [style.width.px]=\"State === 'maximized' ? null : PanelWidth\"\n [style.height.px]=\"State === 'maximized' ? null : PanelHeight\"\n [style.bottom.px]=\"State === 'maximized' ? null : PanelBottomPx\">\n\n <!-- Resize handles (only in expanded, not maximized) -->\n @if (State === 'expanded') {\n <div class=\"resize-handle resize-left\"\n (mousedown)=\"OnResizeStart($event, 'left')\"></div>\n <div class=\"resize-handle resize-top\"\n (mousedown)=\"OnResizeStart($event, 'top')\"></div>\n <div class=\"resize-handle resize-top-left\"\n (mousedown)=\"OnResizeStart($event, 'top-left')\"></div>\n }\n\n <!-- Panel Header -->\n <div class=\"chat-overlay-header\">\n <div class=\"chat-overlay-title\">\n <i class=\"fa-solid fa-robot\"></i>\n <span>AI Assistant</span>\n </div>\n <div class=\"chat-overlay-header-actions\">\n <button\n class=\"chat-overlay-header-btn\"\n title=\"New conversation\"\n (click)=\"StartNewConversation()\">\n <i class=\"fa-solid fa-plus\"></i>\n </button>\n @if (ConversationId) {\n <button\n class=\"chat-overlay-header-btn\"\n title=\"Open in full chat workspace\"\n (click)=\"OnOpenFullChatWorkspace()\">\n <i class=\"fa-solid fa-up-right-from-square\"></i>\n </button>\n }\n <button\n class=\"chat-overlay-header-btn\"\n [title]=\"State === 'maximized' ? 'Restore size' : 'Maximize'\"\n (click)=\"ToggleMaximize()\">\n <i class=\"fa-solid\" [class.fa-expand]=\"State !== 'maximized'\" [class.fa-compress]=\"State === 'maximized'\"></i>\n </button>\n <button\n class=\"chat-overlay-header-btn\"\n title=\"Minimize\"\n (click)=\"Collapse()\">\n <i class=\"fa-solid fa-minus\"></i>\n </button>\n </div>\n </div>\n\n <!-- Chat Content \u2014 wraps conversation-chat-area -->\n <div class=\"chat-overlay-body\">\n <mj-conversation-chat-area\n [environmentId]=\"EnvironmentId\"\n [currentUser]=\"CurrentUser\"\n [conversationId]=\"ConversationId\"\n [conversation]=\"Conversation\"\n [isNewConversation]=\"IsNewConversation\"\n [pendingMessage]=\"PendingMessage\"\n [pendingAttachments]=\"PendingAttachments\"\n [pendingMessageConversationId]=\"PendingMessageConversationId\"\n [overlayMode]=\"true\"\n [showExportButton]=\"false\"\n [showShareButton]=\"false\"\n [showArtifactIndicator]=\"false\"\n [appContext]=\"AppContext\"\n [emptyStateGreeting]=\"EmptyStateGreeting\"\n (conversationCreated)=\"OnConversationCreated($event)\"\n (conversationRenamed)=\"OnConversationRenamed($event)\"\n (pendingMessageConsumed)=\"OnPendingMessageConsumed()\"\n (openEntityRecord)=\"OnOpenEntityRecord($event)\"\n (navigationRequest)=\"OnNavigationRequest($event)\"\n (taskClicked)=\"OnTaskClicked($event)\"\n ></mj-conversation-chat-area>\n </div>\n </div>\n }\n}\n", styles: ["/* ============================================================\n Chat Overlay \u2014 Floating Bubble + Expanding Panel\n All colors use MJ design tokens (--mj-* CSS variables).\n ============================================================ */\n\n/* --- Floating Bubble (collapsed state) --- */\n\n.chat-overlay-bubble {\n position: fixed;\n bottom: 1.5rem;\n right: 1.5rem;\n width: 3.5rem;\n height: 3.5rem;\n border-radius: 50%;\n background: var(--mj-brand-primary);\n color: var(--mj-text-inverse);\n display: flex;\n align-items: center;\n justify-content: center;\n cursor: pointer;\n box-shadow: 0 4px 16px rgba(0, 0, 0, 0.2);\n z-index: 2147483647;\n transition: transform 0.2s ease, box-shadow 0.2s ease;\n animation: overlayBubbleIn 0.3s ease;\n /* Required for touch drag: blocks browser pan/zoom so pointermove fires\n continuously instead of being swallowed by scroll-handling. */\n touch-action: none;\n user-select: none;\n -webkit-user-select: none;\n}\n\n/* Subtle up/down chevrons just outside the bubble, hinting that it can be\n dragged vertically. On hover-capable devices (mouse/pen) they stay hidden\n in the resting state and reveal on hover/press/drag \u2014 keeps the corner\n visually clean. On touch-only devices (no hover) they're always visible at\n low opacity so the affordance is discoverable without needing a hover. */\n.chat-overlay-bubble-arrow {\n position: absolute;\n left: 50%;\n transform: translateX(-50%);\n color: var(--mj-text-muted);\n font-size: 0.65rem;\n opacity: 0;\n pointer-events: none;\n transition: opacity 0.18s ease;\n}\n\n.chat-overlay-bubble-arrow-up {\n top: -0.85rem;\n}\n\n.chat-overlay-bubble-arrow-down {\n bottom: -0.85rem;\n}\n\n/* Hover-capable devices: reveal on hover, press, or active drag. */\n.chat-overlay-bubble:hover .chat-overlay-bubble-arrow,\n.chat-overlay-bubble.is-pressed .chat-overlay-bubble-arrow,\n.chat-overlay-bubble.is-dragging .chat-overlay-bubble-arrow {\n opacity: 0.85;\n}\n\n/* Touch-only devices (no hover): always show at subtle opacity. The\n :hover/.is-pressed/.is-dragging rules above still apply via higher\n specificity, so touching the bubble briefly bumps them to 0.85. */\n@media (hover: none) {\n .chat-overlay-bubble-arrow {\n opacity: 0.5;\n }\n}\n\n.chat-overlay-bubble:hover {\n transform: scale(1.08);\n box-shadow: 0 6px 24px rgba(0, 0, 0, 0.3);\n}\n\n/* Immediate press feedback \u2014 fires on mousedown before the drag threshold is crossed,\n so the user sees \"I'm being held\" right away and learns the bubble is draggable. */\n.chat-overlay-bubble.is-pressed {\n cursor: grabbing;\n transform: scale(0.94);\n transition: transform 0.08s ease;\n box-shadow:\n 0 2px 6px rgba(0, 0, 0, 0.25),\n 0 0 0 4px color-mix(in srgb, var(--mj-brand-primary) 25%, transparent);\n}\n\n/* Active drag \u2014 overrides the press state once movement passes the threshold. */\n.chat-overlay-bubble.is-dragging {\n cursor: grabbing;\n transform: scale(1.04);\n transition: none;\n box-shadow:\n 0 8px 28px rgba(0, 0, 0, 0.35),\n 0 0 0 4px color-mix(in srgb, var(--mj-brand-primary) 40%, transparent);\n}\n\n@keyframes overlayBubbleIn {\n from {\n transform: scale(0);\n opacity: 0;\n }\n to {\n transform: scale(1);\n opacity: 1;\n }\n}\n\n.chat-overlay-bubble-icon {\n font-size: 1.3rem;\n}\n\n.chat-overlay-badge {\n position: absolute;\n top: -4px;\n right: -4px;\n min-width: 1.2rem;\n height: 1.2rem;\n border-radius: 9999px;\n background: var(--mj-status-error);\n color: var(--mj-text-inverse);\n font-size: 0.65rem;\n font-weight: 700;\n display: flex;\n align-items: center;\n justify-content: center;\n padding: 0 0.25rem;\n border: 2px solid var(--mj-bg-page);\n}\n\n/* --- Hide-bubble affordance (\"\u00D7\" pill on the outer-left edge of the bubble) ---\n Revealed on hover. Touch-only devices (no hover) get a permanent low-opacity\n render so the affordance is reachable without a hover gesture. */\n.chat-overlay-bubble-close {\n position: absolute;\n top: 50%;\n /* Sits flush with the bubble's left bounding-box edge \u2014 no dead-zone gap that\n would drop the :hover state mid-reach. The bubble's circular shape means the\n visible space between the circle and the pill still reads as a gap. */\n right: 100%;\n transform: translateY(-50%);\n width: 1.25rem;\n height: 1.25rem;\n padding: 0;\n border-radius: 9999px;\n background: var(--mj-bg-surface-card);\n border: 1px solid var(--mj-border-strong);\n color: var(--mj-text-secondary);\n cursor: pointer;\n display: flex;\n align-items: center;\n justify-content: center;\n font-size: 0.65rem;\n box-shadow: 0 2px 6px rgba(0, 0, 0, 0.25);\n opacity: 0;\n pointer-events: none;\n transition: opacity 0.15s ease, color 0.15s ease, border-color 0.15s ease, transform 0.15s ease;\n}\n\n.chat-overlay-bubble:hover .chat-overlay-bubble-close {\n opacity: 1;\n pointer-events: auto;\n}\n\n.chat-overlay-bubble-close:hover {\n color: var(--mj-text-primary);\n border-color: var(--mj-brand-primary);\n transform: translateY(-50%) scale(1.08);\n}\n\n/* Touch devices: keep the pill reachable without a hover gesture. */\n@media (hover: none) {\n .chat-overlay-bubble-close {\n opacity: 0.7;\n pointer-events: auto;\n }\n}\n\n/* While actively dragging, suppress the close pill \u2014 it shouldn't compete with the drag affordance. */\n.chat-overlay-bubble.is-dragging .chat-overlay-bubble-close,\n.chat-overlay-bubble.is-pressed .chat-overlay-bubble-close {\n opacity: 0;\n pointer-events: none;\n}\n\n/* --- Collapsed sliver (right edge, replaces bubble when hidden) --- */\n\n.chat-overlay-sliver {\n position: fixed;\n right: 0;\n width: 0.875rem; /* 14px sliver */\n height: 5rem; /* 80px tall */\n padding: 0;\n background: var(--mj-brand-primary);\n border: none;\n border-radius: 8px 0 0 8px;\n color: var(--mj-text-inverse);\n cursor: pointer;\n display: flex;\n align-items: center;\n justify-content: center;\n box-shadow: 0 4px 12px rgba(0, 0, 0, 0.3);\n z-index: 2147483647;\n transition: width 0.18s ease, background 0.15s ease;\n animation: overlayBubbleIn 0.25s ease;\n}\n\n.chat-overlay-sliver:hover {\n width: 1.5rem; /* widens slightly to invite the click */\n background: color-mix(in srgb, var(--mj-brand-primary) 85%, white);\n}\n\n.chat-overlay-sliver-icon {\n font-size: 0.55rem;\n opacity: 0.95;\n}\n\n.chat-overlay-sliver:hover .chat-overlay-sliver-icon {\n font-size: 0.7rem;\n}\n\n.chat-overlay-sliver-badge {\n /* Pull the badge a hair outside the sliver so it isn't clipped by the narrow width. */\n top: -6px;\n right: -6px;\n}\n\n/* --- Expanded Panel --- */\n\n.chat-overlay-panel {\n position: fixed;\n bottom: 1.5rem;\n right: 1.5rem;\n border-radius: 12px;\n background: var(--mj-bg-surface);\n border: 2px solid color-mix(in srgb, var(--mj-brand-primary) 50%, var(--mj-border-strong));\n box-shadow:\n 0 8px 32px rgba(0, 0, 0, 0.3),\n 0 2px 8px rgba(0, 0, 0, 0.15);\n z-index: 2147483647;\n display: flex;\n flex-direction: column;\n overflow: hidden;\n animation: overlayPanelIn 0.25s ease;\n max-height: calc(100vh - 3rem);\n max-width: calc(100vw - 3rem);\n}\n\n.chat-overlay-panel.maximized {\n bottom: 1rem;\n right: 1rem;\n width: calc(100vw - 2rem) !important;\n height: calc(100vh - 2rem) !important;\n max-height: none;\n max-width: none;\n border-radius: 12px;\n}\n\n@keyframes overlayPanelIn {\n from {\n opacity: 0;\n transform: scale(0.9) translateY(10px);\n }\n to {\n opacity: 1;\n transform: scale(1) translateY(0);\n }\n}\n\n/* --- Resize Handles --- */\n\n.resize-handle {\n position: absolute;\n z-index: 2;\n}\n\n.resize-left {\n left: -3px;\n top: 20px;\n bottom: 20px;\n width: 6px;\n cursor: ew-resize;\n}\n\n.resize-top {\n top: -3px;\n left: 20px;\n right: 20px;\n height: 6px;\n cursor: ns-resize;\n}\n\n.resize-top-left {\n top: -4px;\n left: -4px;\n width: 16px;\n height: 16px;\n cursor: nwse-resize;\n}\n\n.resize-handle:hover {\n background: color-mix(in srgb, var(--mj-brand-primary) 30%, transparent);\n border-radius: 3px;\n}\n\n/* --- Panel Header --- */\n\n.chat-overlay-header {\n display: flex;\n align-items: center;\n justify-content: space-between;\n padding: 0.6rem 0.75rem;\n border-bottom: 1px solid var(--mj-border-default);\n background: var(--mj-bg-surface-card);\n flex-shrink: 0;\n}\n\n.chat-overlay-title {\n display: flex;\n align-items: center;\n gap: 0.5rem;\n font-weight: 600;\n font-size: 0.9rem;\n color: var(--mj-text-primary);\n}\n\n.chat-overlay-title i {\n color: var(--mj-brand-primary);\n}\n\n.chat-overlay-header-actions {\n display: flex;\n gap: 0.25rem;\n}\n\n.chat-overlay-header-btn {\n width: 1.75rem;\n height: 1.75rem;\n border-radius: 6px;\n border: none;\n background: transparent;\n color: var(--mj-text-muted);\n cursor: pointer;\n display: flex;\n align-items: center;\n justify-content: center;\n font-size: 0.75rem;\n transition: all 0.15s ease;\n}\n\n.chat-overlay-header-btn:hover {\n background: var(--mj-bg-surface-hover);\n color: var(--mj-text-primary);\n}\n\n/* --- Panel Body --- */\n\n.chat-overlay-body {\n flex: 1;\n overflow: hidden;\n display: flex;\n flex-direction: column;\n min-height: 0;\n}\n\n.chat-overlay-body mj-conversation-chat-area {\n flex: 1;\n display: flex;\n flex-direction: column;\n height: 100%;\n}\n\n/* --- Mobile / Small-Screen Responsive ---\n 640px = small-screen cutoff (covers all phones in both orientations). Tablets\n in portrait (\u2265768px) keep the floating-panel treatment because they have the\n real estate for it. */\n\n@media (max-width: 640px) {\n .chat-overlay-panel {\n bottom: 0 !important;\n right: 0;\n width: 100% !important;\n height: 100vh !important;\n max-height: 100vh;\n border-radius: 0;\n }\n\n .chat-overlay-bubble {\n /* No !important on `bottom` \u2014 the inline [style.bottom.px] binding owns it\n so users can drag the bubble out of the way of underlying app buttons.\n Smaller diameter on small screens: 2.75rem (44px) hits the WCAG minimum\n touch target while ~38% less occluding than the desktop 3.5rem. */\n width: 2.75rem;\n height: 2.75rem;\n right: 1rem;\n }\n\n .chat-overlay-bubble-icon {\n font-size: 1.1rem;\n }\n\n .chat-overlay-badge {\n min-width: 1rem;\n height: 1rem;\n font-size: 0.6rem;\n top: -3px;\n right: -3px;\n }\n\n .resize-handle {\n display: none;\n }\n\n /* Slightly wider sliver on touch so it meets the WCAG minimum touch target. */\n .chat-overlay-sliver {\n width: 1.25rem;\n height: 4.5rem;\n }\n}\n"] }]
|
|
792
|
+
args: [{ standalone: false, selector: 'mj-chat-agents-overlay', template: "@if (IsVisible) {\n <!-- Floating Button (collapsed state, not hidden) -->\n @if (State === 'collapsed' && !IsHidden) {\n <div class=\"chat-overlay-bubble\"\n [class.is-pressed]=\"IsBubblePressed\"\n [class.is-dragging]=\"IsBubbleDragging\"\n [style.bottom.px]=\"BubbleBottomPx\"\n (pointerdown)=\"OnBubblePointerDown($event)\">\n <i class=\"fa-solid fa-chevron-up chat-overlay-bubble-arrow chat-overlay-bubble-arrow-up\" aria-hidden=\"true\"></i>\n <i class=\"fa-solid fa-chevron-down chat-overlay-bubble-arrow chat-overlay-bubble-arrow-down\" aria-hidden=\"true\"></i>\n <i class=\"fa-solid fa-comments chat-overlay-bubble-icon\"></i>\n @if (UnreadCount > 0) {\n <span class=\"chat-overlay-badge\">{{ UnreadCount > 9 ? '9+' : UnreadCount }}</span>\n }\n <!-- Hide affordance: revealed on hover. pointerdown stops drag from starting; click hides the bubble. -->\n <button type=\"button\"\n class=\"chat-overlay-bubble-close\"\n title=\"Hide chat \u2014 a thin sliver will remain on the right edge\"\n aria-label=\"Hide chat overlay\"\n (pointerdown)=\"$event.stopPropagation()\"\n (click)=\"Hide($event)\">\n <i class=\"fa-solid fa-times\" aria-hidden=\"true\"></i>\n </button>\n </div>\n }\n\n <!-- Collapsed sliver \u2014 flush with the right edge when the bubble is hidden.\n Click opens the chat directly; closing returns to the bubble (not the\n sliver). To re-enter hidden mode the user clicks the \u00D7 pill again. -->\n @if (State === 'collapsed' && IsHidden) {\n <button type=\"button\"\n class=\"chat-overlay-sliver\"\n title=\"Open chat\"\n aria-label=\"Open chat\"\n [style.bottom.px]=\"BubbleBottomPx\"\n (click)=\"Expand()\">\n <i class=\"fa-solid fa-comments chat-overlay-sliver-icon\" aria-hidden=\"true\"></i>\n @if (UnreadCount > 0) {\n <span class=\"chat-overlay-badge chat-overlay-sliver-badge\">{{ UnreadCount > 9 ? '9+' : UnreadCount }}</span>\n }\n </button>\n }\n\n <!-- Expanded / Maximized Chat Panel -->\n @if (State === 'expanded' || State === 'maximized') {\n <div class=\"chat-overlay-panel\"\n [class.maximized]=\"State === 'maximized'\"\n [style.width.px]=\"State === 'maximized' ? null : PanelWidth\"\n [style.height.px]=\"State === 'maximized' ? null : PanelHeight\"\n [style.bottom.px]=\"State === 'maximized' ? null : PanelBottomPx\">\n\n <!-- Resize handles (only in expanded, not maximized) -->\n @if (State === 'expanded') {\n <div class=\"resize-handle resize-left\"\n (mousedown)=\"OnResizeStart($event, 'left')\"></div>\n <div class=\"resize-handle resize-top\"\n (mousedown)=\"OnResizeStart($event, 'top')\"></div>\n <div class=\"resize-handle resize-top-left\"\n (mousedown)=\"OnResizeStart($event, 'top-left')\"></div>\n }\n\n <!-- Panel Header -->\n <div class=\"chat-overlay-header\">\n <div class=\"chat-overlay-title\">\n <i class=\"fa-solid fa-robot\"></i>\n <span>AI Assistant</span>\n </div>\n <div class=\"chat-overlay-header-actions\">\n <button\n class=\"chat-overlay-header-btn\"\n title=\"New conversation\"\n (click)=\"StartNewConversation()\">\n <i class=\"fa-solid fa-plus\"></i>\n </button>\n @if (ConversationId) {\n <button\n class=\"chat-overlay-header-btn\"\n title=\"Open in full chat workspace\"\n (click)=\"OnOpenFullChatWorkspace()\">\n <i class=\"fa-solid fa-up-right-from-square\"></i>\n </button>\n }\n <button\n class=\"chat-overlay-header-btn\"\n [title]=\"State === 'maximized' ? 'Restore size' : 'Maximize'\"\n (click)=\"ToggleMaximize()\">\n <i class=\"fa-solid\" [class.fa-expand]=\"State !== 'maximized'\" [class.fa-compress]=\"State === 'maximized'\"></i>\n </button>\n <button\n class=\"chat-overlay-header-btn\"\n title=\"Minimize\"\n (click)=\"Collapse()\">\n <i class=\"fa-solid fa-minus\"></i>\n </button>\n </div>\n </div>\n\n <!-- Active Record Context Bar (when viewing an entity record form) -->\n @if (ActiveRecordContext; as ctx) {\n <div class=\"chat-overlay-record-context-bar\" role=\"status\" aria-live=\"polite\">\n <div class=\"chat-overlay-context-main\">\n <i class=\"fa-solid fa-wand-magic-sparkles chat-overlay-context-icon\" aria-hidden=\"true\"></i>\n <span class=\"chat-overlay-context-entity\">{{ ctx.Entity }}</span>\n @if (ctx.RecordDisplayName) {\n <span class=\"chat-overlay-context-sep\" aria-hidden=\"true\">\u00B7</span>\n <span class=\"chat-overlay-context-record-name\" [title]=\"ctx.RecordDisplayName\">{{ ctx.RecordDisplayName }}</span>\n }\n </div>\n <div class=\"chat-overlay-context-chips\">\n @if (ctx.Dirty) {\n <span class=\"chat-overlay-context-chip chat-overlay-context-chip-dirty\"\n [title]=\"'Unsaved edits: ' + ctx.DirtyFieldNames.join(', ')\">\n <i class=\"fa-solid fa-pen\" aria-hidden=\"true\"></i>\n {{ ctx.DirtyFieldNames.length }} unsaved\n </span>\n }\n @if (ctx.HasExternalUpdateConflict) {\n <span class=\"chat-overlay-context-chip chat-overlay-context-chip-conflict\"\n title=\"Record has an external update conflict\">\n <i class=\"fa-solid fa-triangle-exclamation\" aria-hidden=\"true\"></i>\n Conflict\n </span>\n }\n @if (ctx.PreviewingHistoricalChangeID) {\n <span class=\"chat-overlay-context-chip chat-overlay-context-chip-timetravel\"\n title=\"Previewing a historical version in form\">\n <i class=\"fa-solid fa-clock-rotate-left\" aria-hidden=\"true\"></i>\n Time-Travel\n </span>\n }\n @if (ctx.TotalLinksCount > 0) {\n <span class=\"chat-overlay-context-chip chat-overlay-context-chip-links\"\n [title]=\"ctx.OutgoingLinksCount + ' on this record \u00B7 ' + ctx.IncomingLinksCount + ' linked to this'\">\n <i class=\"fa-solid fa-diagram-project\" aria-hidden=\"true\"></i>\n {{ ctx.TotalLinksCount }} {{ ctx.TotalLinksCount === 1 ? 'link' : 'links' }}\n </span>\n }\n </div>\n </div>\n }\n\n <!-- Chat Content \u2014 wraps conversation-chat-area -->\n <div class=\"chat-overlay-body\">\n <mj-conversation-chat-area\n [environmentId]=\"EnvironmentId\"\n [currentUser]=\"CurrentUser\"\n [conversationId]=\"ConversationId\"\n [conversation]=\"Conversation\"\n [isNewConversation]=\"IsNewConversation\"\n [pendingMessage]=\"PendingMessage\"\n [pendingAttachments]=\"PendingAttachments\"\n [pendingMessageConversationId]=\"PendingMessageConversationId\"\n [overlayMode]=\"true\"\n [showExportButton]=\"false\"\n [showShareButton]=\"false\"\n [showArtifactIndicator]=\"false\"\n [appContext]=\"AppContext\"\n [emptyStateGreeting]=\"EmptyStateGreeting\"\n (conversationCreated)=\"OnConversationCreated($event)\"\n (conversationRenamed)=\"OnConversationRenamed($event)\"\n (pendingMessageConsumed)=\"OnPendingMessageConsumed()\"\n (openEntityRecord)=\"OnOpenEntityRecord($event)\"\n (navigationRequest)=\"OnNavigationRequest($event)\"\n (taskClicked)=\"OnTaskClicked($event)\"\n ></mj-conversation-chat-area>\n </div>\n </div>\n }\n}\n", styles: ["/* ============================================================\n Chat Overlay \u2014 Floating Bubble + Expanding Panel\n All colors use MJ design tokens (--mj-* CSS variables).\n ============================================================ */\n\n/* --- Floating Bubble (collapsed state) --- */\n\n.chat-overlay-bubble {\n position: fixed;\n bottom: 1.5rem;\n right: 1.5rem;\n width: 3.5rem;\n height: 3.5rem;\n border-radius: 50%;\n background: var(--mj-brand-primary);\n color: var(--mj-text-inverse);\n display: flex;\n align-items: center;\n justify-content: center;\n cursor: pointer;\n box-shadow: 0 4px 16px rgba(0, 0, 0, 0.2);\n z-index: 2147483647;\n transition: transform 0.2s ease, box-shadow 0.2s ease;\n animation: overlayBubbleIn 0.3s ease;\n /* Required for touch drag: blocks browser pan/zoom so pointermove fires\n continuously instead of being swallowed by scroll-handling. */\n touch-action: none;\n user-select: none;\n -webkit-user-select: none;\n}\n\n/* Subtle up/down chevrons just outside the bubble, hinting that it can be\n dragged vertically. On hover-capable devices (mouse/pen) they stay hidden\n in the resting state and reveal on hover/press/drag \u2014 keeps the corner\n visually clean. On touch-only devices (no hover) they're always visible at\n low opacity so the affordance is discoverable without needing a hover. */\n.chat-overlay-bubble-arrow {\n position: absolute;\n left: 50%;\n transform: translateX(-50%);\n color: var(--mj-text-muted);\n font-size: 0.65rem;\n opacity: 0;\n pointer-events: none;\n transition: opacity 0.18s ease;\n}\n\n.chat-overlay-bubble-arrow-up {\n top: -0.85rem;\n}\n\n.chat-overlay-bubble-arrow-down {\n bottom: -0.85rem;\n}\n\n/* Hover-capable devices: reveal on hover, press, or active drag. */\n.chat-overlay-bubble:hover .chat-overlay-bubble-arrow,\n.chat-overlay-bubble.is-pressed .chat-overlay-bubble-arrow,\n.chat-overlay-bubble.is-dragging .chat-overlay-bubble-arrow {\n opacity: 0.85;\n}\n\n/* Touch-only devices (no hover): always show at subtle opacity. The\n :hover/.is-pressed/.is-dragging rules above still apply via higher\n specificity, so touching the bubble briefly bumps them to 0.85. */\n@media (hover: none) {\n .chat-overlay-bubble-arrow {\n opacity: 0.5;\n }\n}\n\n.chat-overlay-bubble:hover {\n transform: scale(1.08);\n box-shadow: 0 6px 24px rgba(0, 0, 0, 0.3);\n}\n\n/* Immediate press feedback \u2014 fires on mousedown before the drag threshold is crossed,\n so the user sees \"I'm being held\" right away and learns the bubble is draggable. */\n.chat-overlay-bubble.is-pressed {\n cursor: grabbing;\n transform: scale(0.94);\n transition: transform 0.08s ease;\n box-shadow:\n 0 2px 6px rgba(0, 0, 0, 0.25),\n 0 0 0 4px color-mix(in srgb, var(--mj-brand-primary) 25%, transparent);\n}\n\n/* Active drag \u2014 overrides the press state once movement passes the threshold. */\n.chat-overlay-bubble.is-dragging {\n cursor: grabbing;\n transform: scale(1.04);\n transition: none;\n box-shadow:\n 0 8px 28px rgba(0, 0, 0, 0.35),\n 0 0 0 4px color-mix(in srgb, var(--mj-brand-primary) 40%, transparent);\n}\n\n@keyframes overlayBubbleIn {\n from {\n transform: scale(0);\n opacity: 0;\n }\n to {\n transform: scale(1);\n opacity: 1;\n }\n}\n\n.chat-overlay-bubble-icon {\n font-size: 1.3rem;\n}\n\n.chat-overlay-badge {\n position: absolute;\n top: -4px;\n right: -4px;\n min-width: 1.2rem;\n height: 1.2rem;\n border-radius: 9999px;\n background: var(--mj-status-error);\n color: var(--mj-text-inverse);\n font-size: 0.65rem;\n font-weight: 700;\n display: flex;\n align-items: center;\n justify-content: center;\n padding: 0 0.25rem;\n border: 2px solid var(--mj-bg-page);\n}\n\n/* --- Hide-bubble affordance (\"\u00D7\" pill on the outer-left edge of the bubble) ---\n Revealed on hover. Touch-only devices (no hover) get a permanent low-opacity\n render so the affordance is reachable without a hover gesture. */\n.chat-overlay-bubble-close {\n position: absolute;\n top: 50%;\n /* Sits flush with the bubble's left bounding-box edge \u2014 no dead-zone gap that\n would drop the :hover state mid-reach. The bubble's circular shape means the\n visible space between the circle and the pill still reads as a gap. */\n right: 100%;\n transform: translateY(-50%);\n width: 1.25rem;\n height: 1.25rem;\n padding: 0;\n border-radius: 9999px;\n background: var(--mj-bg-surface-card);\n border: 1px solid var(--mj-border-strong);\n color: var(--mj-text-secondary);\n cursor: pointer;\n display: flex;\n align-items: center;\n justify-content: center;\n font-size: 0.65rem;\n box-shadow: 0 2px 6px rgba(0, 0, 0, 0.25);\n opacity: 0;\n pointer-events: none;\n transition: opacity 0.15s ease, color 0.15s ease, border-color 0.15s ease, transform 0.15s ease;\n}\n\n.chat-overlay-bubble:hover .chat-overlay-bubble-close {\n opacity: 1;\n pointer-events: auto;\n}\n\n.chat-overlay-bubble-close:hover {\n color: var(--mj-text-primary);\n border-color: var(--mj-brand-primary);\n transform: translateY(-50%) scale(1.08);\n}\n\n/* Touch devices: keep the pill reachable without a hover gesture. */\n@media (hover: none) {\n .chat-overlay-bubble-close {\n opacity: 0.7;\n pointer-events: auto;\n }\n}\n\n/* While actively dragging, suppress the close pill \u2014 it shouldn't compete with the drag affordance. */\n.chat-overlay-bubble.is-dragging .chat-overlay-bubble-close,\n.chat-overlay-bubble.is-pressed .chat-overlay-bubble-close {\n opacity: 0;\n pointer-events: none;\n}\n\n/* --- Collapsed sliver (right edge, replaces bubble when hidden) --- */\n\n.chat-overlay-sliver {\n position: fixed;\n right: 0;\n width: 0.875rem; /* 14px sliver */\n height: 5rem; /* 80px tall */\n padding: 0;\n background: var(--mj-brand-primary);\n border: none;\n border-radius: 8px 0 0 8px;\n color: var(--mj-text-inverse);\n cursor: pointer;\n display: flex;\n align-items: center;\n justify-content: center;\n box-shadow: 0 4px 12px rgba(0, 0, 0, 0.3);\n z-index: 2147483647;\n transition: width 0.18s ease, background 0.15s ease;\n animation: overlayBubbleIn 0.25s ease;\n}\n\n.chat-overlay-sliver:hover {\n width: 1.5rem; /* widens slightly to invite the click */\n background: color-mix(in srgb, var(--mj-brand-primary) 85%, white);\n}\n\n.chat-overlay-sliver-icon {\n font-size: 0.55rem;\n opacity: 0.95;\n}\n\n.chat-overlay-sliver:hover .chat-overlay-sliver-icon {\n font-size: 0.7rem;\n}\n\n.chat-overlay-sliver-badge {\n /* Pull the badge a hair outside the sliver so it isn't clipped by the narrow width. */\n top: -6px;\n right: -6px;\n}\n\n/* --- Expanded Panel --- */\n\n.chat-overlay-panel {\n position: fixed;\n bottom: 1.5rem;\n right: 1.5rem;\n border-radius: 12px;\n background: var(--mj-bg-surface);\n border: 2px solid color-mix(in srgb, var(--mj-brand-primary) 50%, var(--mj-border-strong));\n box-shadow:\n 0 8px 32px rgba(0, 0, 0, 0.3),\n 0 2px 8px rgba(0, 0, 0, 0.15);\n z-index: 2147483647;\n display: flex;\n flex-direction: column;\n overflow: hidden;\n animation: overlayPanelIn 0.25s ease;\n max-height: calc(100vh - 3rem);\n max-width: calc(100vw - 3rem);\n}\n\n.chat-overlay-panel.maximized {\n bottom: 1rem;\n right: 1rem;\n width: calc(100vw - 2rem) !important;\n height: calc(100vh - 2rem) !important;\n max-height: none;\n max-width: none;\n border-radius: 12px;\n}\n\n@keyframes overlayPanelIn {\n from {\n opacity: 0;\n transform: scale(0.9) translateY(10px);\n }\n to {\n opacity: 1;\n transform: scale(1) translateY(0);\n }\n}\n\n/* --- Resize Handles --- */\n\n.resize-handle {\n position: absolute;\n z-index: 2;\n}\n\n.resize-left {\n left: -3px;\n top: 20px;\n bottom: 20px;\n width: 6px;\n cursor: ew-resize;\n}\n\n.resize-top {\n top: -3px;\n left: 20px;\n right: 20px;\n height: 6px;\n cursor: ns-resize;\n}\n\n.resize-top-left {\n top: -4px;\n left: -4px;\n width: 16px;\n height: 16px;\n cursor: nwse-resize;\n}\n\n.resize-handle:hover {\n background: color-mix(in srgb, var(--mj-brand-primary) 30%, transparent);\n border-radius: 3px;\n}\n\n/* --- Panel Header --- */\n\n.chat-overlay-header {\n display: flex;\n align-items: center;\n justify-content: space-between;\n padding: 0.6rem 0.75rem;\n border-bottom: 1px solid var(--mj-border-default);\n background: var(--mj-bg-surface-card);\n flex-shrink: 0;\n}\n\n.chat-overlay-title {\n display: flex;\n align-items: center;\n gap: 0.5rem;\n font-weight: 600;\n font-size: 0.9rem;\n color: var(--mj-text-primary);\n}\n\n.chat-overlay-title i {\n color: var(--mj-brand-primary);\n}\n\n.chat-overlay-header-actions {\n display: flex;\n gap: 0.25rem;\n}\n\n.chat-overlay-header-btn {\n width: 1.75rem;\n height: 1.75rem;\n border-radius: 6px;\n border: none;\n background: transparent;\n color: var(--mj-text-muted);\n cursor: pointer;\n display: flex;\n align-items: center;\n justify-content: center;\n font-size: 0.75rem;\n transition: all 0.15s ease;\n}\n\n.chat-overlay-header-btn:hover {\n background: var(--mj-bg-surface-hover);\n color: var(--mj-text-primary);\n}\n\n/* --- Active Record Context Bar --- */\n\n.chat-overlay-record-context-bar {\n display: flex;\n align-items: center;\n justify-content: space-between;\n gap: 0.5rem;\n padding: 0.4rem 0.75rem;\n background: color-mix(in srgb, var(--mj-brand-primary) 7%, var(--mj-bg-surface-card));\n border-bottom: 1px solid color-mix(in srgb, var(--mj-brand-primary) 22%, var(--mj-border-default));\n font-size: 0.75rem;\n color: var(--mj-text-secondary);\n flex-shrink: 0;\n flex-wrap: wrap;\n}\n\n.chat-overlay-context-main {\n display: flex;\n align-items: center;\n gap: 0.35rem;\n min-width: 0;\n flex: 1;\n}\n\n.chat-overlay-context-icon {\n color: var(--mj-brand-primary);\n font-size: 0.75rem;\n flex-shrink: 0;\n}\n\n.chat-overlay-context-entity {\n font-weight: 600;\n color: var(--mj-text-primary);\n white-space: nowrap;\n}\n\n.chat-overlay-context-sep {\n color: var(--mj-text-muted);\n flex-shrink: 0;\n}\n\n.chat-overlay-context-record-name {\n color: var(--mj-text-secondary);\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n}\n\n.chat-overlay-context-chips {\n display: flex;\n align-items: center;\n gap: 0.25rem;\n flex-shrink: 0;\n flex-wrap: wrap;\n}\n\n.chat-overlay-context-chip {\n display: inline-flex;\n align-items: center;\n gap: 0.25rem;\n padding: 0.1rem 0.4rem;\n border-radius: 999px;\n font-size: 0.68rem;\n font-weight: 600;\n white-space: nowrap;\n border: 1px solid var(--mj-border-default);\n background: var(--mj-bg-surface);\n color: var(--mj-text-secondary);\n}\n\n.chat-overlay-context-chip-dirty {\n color: var(--mj-status-warning);\n border-color: color-mix(in srgb, var(--mj-status-warning) 35%, var(--mj-border-default));\n background: color-mix(in srgb, var(--mj-status-warning) 10%, var(--mj-bg-surface));\n}\n\n.chat-overlay-context-chip-conflict {\n color: var(--mj-status-error);\n border-color: color-mix(in srgb, var(--mj-status-error) 35%, var(--mj-border-default));\n background: color-mix(in srgb, var(--mj-status-error) 10%, var(--mj-bg-surface));\n}\n\n.chat-overlay-context-chip-timetravel {\n color: var(--mj-brand-primary);\n border-color: color-mix(in srgb, var(--mj-brand-primary) 35%, var(--mj-border-default));\n background: color-mix(in srgb, var(--mj-brand-primary) 10%, var(--mj-bg-surface));\n}\n\n.chat-overlay-context-chip-links {\n color: var(--mj-brand-primary);\n border-color: color-mix(in srgb, var(--mj-brand-primary) 28%, var(--mj-border-default));\n background: color-mix(in srgb, var(--mj-brand-primary) 8%, var(--mj-bg-surface));\n}\n\n/* --- Panel Body --- */\n\n.chat-overlay-body {\n flex: 1;\n overflow: hidden;\n display: flex;\n flex-direction: column;\n min-height: 0;\n}\n\n.chat-overlay-body mj-conversation-chat-area {\n flex: 1;\n display: flex;\n flex-direction: column;\n height: 100%;\n}\n\n/* --- Mobile / Small-Screen Responsive ---\n 640px = small-screen cutoff (covers all phones in both orientations). Tablets\n in portrait (\u2265768px) keep the floating-panel treatment because they have the\n real estate for it. */\n\n@media (max-width: 640px) {\n .chat-overlay-panel {\n bottom: 0 !important;\n right: 0;\n width: 100% !important;\n height: 100vh !important;\n max-height: 100vh;\n border-radius: 0;\n }\n\n .chat-overlay-bubble {\n /* No !important on `bottom` \u2014 the inline [style.bottom.px] binding owns it\n so users can drag the bubble out of the way of underlying app buttons.\n Smaller diameter on small screens: 2.75rem (44px) hits the WCAG minimum\n touch target while ~38% less occluding than the desktop 3.5rem. */\n width: 2.75rem;\n height: 2.75rem;\n right: 1rem;\n }\n\n .chat-overlay-bubble-icon {\n font-size: 1.1rem;\n }\n\n .chat-overlay-badge {\n min-width: 1rem;\n height: 1rem;\n font-size: 0.6rem;\n top: -3px;\n right: -3px;\n }\n\n .resize-handle {\n display: none;\n }\n\n /* Slightly wider sliver on touch so it meets the WCAG minimum touch target. */\n .chat-overlay-sliver {\n width: 1.25rem;\n height: 4.5rem;\n }\n}\n"] }]
|
|
681
793
|
}], null, { IsVisible: [{
|
|
682
794
|
type: Input
|
|
683
795
|
}], CurrentUser: [{
|
|
@@ -705,5 +817,5 @@ export class ChatAgentsOverlayComponent extends BaseAngularComponent {
|
|
|
705
817
|
}], TaskClicked: [{
|
|
706
818
|
type: Output
|
|
707
819
|
}] }); })();
|
|
708
|
-
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(ChatAgentsOverlayComponent, { className: "ChatAgentsOverlayComponent", filePath: "src/lib/components/overlay/chat-overlay.component.ts", lineNumber:
|
|
820
|
+
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(ChatAgentsOverlayComponent, { className: "ChatAgentsOverlayComponent", filePath: "src/lib/components/overlay/chat-overlay.component.ts", lineNumber: 78 }); })();
|
|
709
821
|
//# sourceMappingURL=chat-overlay.component.js.map
|