@memberjunction/ng-conversations 6.1.0-edge.6 → 6.1.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.
Files changed (34) hide show
  1. package/dist/lib/components/dialogs/input-dialog.component.d.ts.map +1 -1
  2. package/dist/lib/components/dialogs/input-dialog.component.js +3 -3
  3. package/dist/lib/components/dialogs/input-dialog.component.js.map +1 -1
  4. package/dist/lib/components/message/message-input.component.js +4 -4
  5. package/dist/lib/components/message/message-input.component.js.map +1 -1
  6. package/dist/lib/components/realtime/realtime-activity-rail.component.d.ts +1 -1
  7. package/dist/lib/components/realtime/realtime-activity-rail.component.d.ts.map +1 -1
  8. package/dist/lib/components/realtime/realtime-activity-rail.component.js +2 -2
  9. package/dist/lib/components/realtime/realtime-activity-rail.component.js.map +1 -1
  10. package/dist/lib/components/realtime/realtime-agent-picker.component.d.ts +16 -1
  11. package/dist/lib/components/realtime/realtime-agent-picker.component.d.ts.map +1 -1
  12. package/dist/lib/components/realtime/realtime-agent-picker.component.js +39 -7
  13. package/dist/lib/components/realtime/realtime-agent-picker.component.js.map +1 -1
  14. package/dist/lib/components/realtime/realtime-delegation-card.component.d.ts +2 -2
  15. package/dist/lib/components/realtime/realtime-delegation-card.component.d.ts.map +1 -1
  16. package/dist/lib/components/realtime/realtime-delegation-card.component.js +159 -107
  17. package/dist/lib/components/realtime/realtime-delegation-card.component.js.map +1 -1
  18. package/dist/lib/components/realtime/realtime-session-state.d.ts +9 -4
  19. package/dist/lib/components/realtime/realtime-session-state.d.ts.map +1 -1
  20. package/dist/lib/components/realtime/realtime-session-state.js +95 -19
  21. package/dist/lib/components/realtime/realtime-session-state.js.map +1 -1
  22. package/dist/lib/services/delegation-result-parser.d.ts +5 -0
  23. package/dist/lib/services/delegation-result-parser.d.ts.map +1 -1
  24. package/dist/lib/services/delegation-result-parser.js +12 -0
  25. package/dist/lib/services/delegation-result-parser.js.map +1 -1
  26. package/dist/lib/services/realtime-session-review.service.d.ts +31 -1
  27. package/dist/lib/services/realtime-session-review.service.d.ts.map +1 -1
  28. package/dist/lib/services/realtime-session-review.service.js +63 -8
  29. package/dist/lib/services/realtime-session-review.service.js.map +1 -1
  30. package/dist/lib/services/realtime-session.service.d.ts +15 -8
  31. package/dist/lib/services/realtime-session.service.d.ts.map +1 -1
  32. package/dist/lib/services/realtime-session.service.js +62 -14
  33. package/dist/lib/services/realtime-session.service.js.map +1 -1
  34. package/package.json +31 -31
@@ -1 +1 @@
1
- {"version":3,"file":"input-dialog.component.d.ts","sourceRoot":"","sources":["../../../../src/lib/components/dialogs/input-dialog.component.ts"],"names":[],"mappings":";AAEA,qBA4Fa,oBAAoB;IACtB,OAAO,EAAE,MAAM,CAAM;IACrB,UAAU,EAAE,MAAM,CAAM;IACxB,SAAS,EAAE,MAAM,GAAG,UAAU,GAAG,QAAQ,GAAG,OAAO,CAAU;IAC7D,WAAW,EAAE,MAAM,CAAM;IACzB,QAAQ,EAAE,OAAO,CAAS;IAC1B,KAAK,EAAE,MAAM,CAAM;IACnB,gBAAgB,EAAE,MAAM,CAAM;IAC9B,sBAAsB,EAAE,MAAM,CAAM;IACpC,mBAAmB,EAAE,OAAO,CAAS;IACrC,WAAW,EAAE,MAAM,CAAM;IAElC,UAAU,CAAC,KAAK,EAAE,KAAK,GAAG,IAAI;IAY9B,QAAQ,IAAI,MAAM;IAIlB,cAAc,IAAI,MAAM;yCA5Bb,oBAAoB;2CAApB,oBAAoB;CA+BhC"}
1
+ {"version":3,"file":"input-dialog.component.d.ts","sourceRoot":"","sources":["../../../../src/lib/components/dialogs/input-dialog.component.ts"],"names":[],"mappings":";AAEA,qBAsGa,oBAAoB;IACtB,OAAO,EAAE,MAAM,CAAM;IACrB,UAAU,EAAE,MAAM,CAAM;IACxB,SAAS,EAAE,MAAM,GAAG,UAAU,GAAG,QAAQ,GAAG,OAAO,CAAU;IAC7D,WAAW,EAAE,MAAM,CAAM;IACzB,QAAQ,EAAE,OAAO,CAAS;IAC1B,KAAK,EAAE,MAAM,CAAM;IACnB,gBAAgB,EAAE,MAAM,CAAM;IAC9B,sBAAsB,EAAE,MAAM,CAAM;IACpC,mBAAmB,EAAE,OAAO,CAAS;IACrC,WAAW,EAAE,MAAM,CAAM;IAElC,UAAU,CAAC,KAAK,EAAE,KAAK,GAAG,IAAI;IAY9B,QAAQ,IAAI,MAAM;IAIlB,cAAc,IAAI,MAAM;yCA5Bb,oBAAoB;2CAApB,oBAAoB;CA+BhC"}
@@ -108,7 +108,7 @@ export class InputDialogComponent {
108
108
  i0.ɵɵconditional(ctx.inputType !== "textarea" ? 8 : -1);
109
109
  i0.ɵɵadvance();
110
110
  i0.ɵɵconditional(ctx.secondInputLabel ? 9 : -1);
111
- } }, dependencies: [i1.DefaultValueAccessor, i1.NgControlStatus, i1.NgModel], styles: [".input-dialog-content[_ngcontent-%COMP%] {\n padding: 8px 0;\n }\n .dialog-message[_ngcontent-%COMP%] {\n margin: 0 0 16px 0;\n color: var(--mj-text-primary);\n font-size: 14px;\n }\n .input-field[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n gap: 8px;\n }\n .input-label[_ngcontent-%COMP%] {\n font-weight: 500;\n font-size: 13px;\n color: var(--mj-text-secondary);\n }\n .required-mark[_ngcontent-%COMP%] {\n color: var(--mj-status-error);\n margin-left: 2px;\n }\n .mj-input[_ngcontent-%COMP%], \n .mj-textarea[_ngcontent-%COMP%] {\n width: 100%;\n padding: 8px 12px;\n border: 1px solid var(--mj-border-default);\n border-radius: 4px;\n font-size: 14px;\n font-family: inherit;\n background: var(--mj-bg-surface);\n color: var(--mj-text-primary);\n }\n .mj-input[_ngcontent-%COMP%]:focus, \n .mj-textarea[_ngcontent-%COMP%]:focus {\n outline: none;\n border-color: var(--mj-brand-primary);\n box-shadow: 0 0 0 3px color-mix(in srgb, var(--mj-brand-primary) 15%, transparent);\n }\n .mj-textarea[_ngcontent-%COMP%] {\n min-height: 80px;\n resize: vertical;\n }"] });
111
+ } }, dependencies: [i1.DefaultValueAccessor, i1.NgControlStatus, i1.NgModel], styles: [".input-dialog-content[_ngcontent-%COMP%] {\n \n\n\n\n padding: 4px 20px 8px;\n \n\n box-sizing: border-box;\n }\n .input-dialog-content[_ngcontent-%COMP%] *[_ngcontent-%COMP%] {\n box-sizing: border-box;\n }\n .dialog-message[_ngcontent-%COMP%] {\n margin: 0 0 16px 0;\n color: var(--mj-text-primary);\n font-size: 14px;\n }\n .input-field[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n gap: 8px;\n }\n .input-label[_ngcontent-%COMP%] {\n font-weight: 500;\n font-size: 13px;\n color: var(--mj-text-secondary);\n }\n .required-mark[_ngcontent-%COMP%] {\n color: var(--mj-status-error);\n margin-left: 2px;\n }\n .mj-input[_ngcontent-%COMP%], \n .mj-textarea[_ngcontent-%COMP%] {\n width: 100%;\n padding: 8px 12px;\n border: 1px solid var(--mj-border-default);\n border-radius: 4px;\n font-size: 14px;\n font-family: inherit;\n background: var(--mj-bg-surface);\n color: var(--mj-text-primary);\n }\n .mj-input[_ngcontent-%COMP%]:focus, \n .mj-textarea[_ngcontent-%COMP%]:focus {\n outline: none;\n border-color: var(--mj-brand-primary);\n box-shadow: 0 0 0 3px color-mix(in srgb, var(--mj-brand-primary) 15%, transparent);\n }\n .mj-textarea[_ngcontent-%COMP%] {\n min-height: 80px;\n resize: vertical;\n }"] });
112
112
  }
113
113
  (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(InputDialogComponent, [{
114
114
  type: Component,
@@ -154,7 +154,7 @@ export class InputDialogComponent {
154
154
  </div>
155
155
  }
156
156
  </div>
157
- `, styles: ["\n .input-dialog-content {\n padding: 8px 0;\n }\n .dialog-message {\n margin: 0 0 16px 0;\n color: var(--mj-text-primary);\n font-size: 14px;\n }\n .input-field {\n display: flex;\n flex-direction: column;\n gap: 8px;\n }\n .input-label {\n font-weight: 500;\n font-size: 13px;\n color: var(--mj-text-secondary);\n }\n .required-mark {\n color: var(--mj-status-error);\n margin-left: 2px;\n }\n .mj-input,\n .mj-textarea {\n width: 100%;\n padding: 8px 12px;\n border: 1px solid var(--mj-border-default);\n border-radius: 4px;\n font-size: 14px;\n font-family: inherit;\n background: var(--mj-bg-surface);\n color: var(--mj-text-primary);\n }\n .mj-input:focus,\n .mj-textarea:focus {\n outline: none;\n border-color: var(--mj-brand-primary);\n box-shadow: 0 0 0 3px color-mix(in srgb, var(--mj-brand-primary) 15%, transparent);\n }\n .mj-textarea {\n min-height: 80px;\n resize: vertical;\n }\n "] }]
157
+ `, styles: ["\n .input-dialog-content {\n /* MJDialogContainerComponent pads only string content (.mj-dialog-body > p); a component\n body arrives with no horizontal padding at all, so the message, labels and inputs sat flush\n against the dialog edges while the header and footer were padded. Same inset as the sibling\n rating dialog, which already compensates for this. */\n padding: 4px 20px 8px;\n /* Parity with the rating dialog: the Explorer shell's global reset makes this redundant, but a host\n without that reset would let the 100%-wide inputs (padding + border, no local box-sizing) overflow. */\n box-sizing: border-box;\n }\n .input-dialog-content * {\n box-sizing: border-box;\n }\n .dialog-message {\n margin: 0 0 16px 0;\n color: var(--mj-text-primary);\n font-size: 14px;\n }\n .input-field {\n display: flex;\n flex-direction: column;\n gap: 8px;\n }\n .input-label {\n font-weight: 500;\n font-size: 13px;\n color: var(--mj-text-secondary);\n }\n .required-mark {\n color: var(--mj-status-error);\n margin-left: 2px;\n }\n .mj-input,\n .mj-textarea {\n width: 100%;\n padding: 8px 12px;\n border: 1px solid var(--mj-border-default);\n border-radius: 4px;\n font-size: 14px;\n font-family: inherit;\n background: var(--mj-bg-surface);\n color: var(--mj-text-primary);\n }\n .mj-input:focus,\n .mj-textarea:focus {\n outline: none;\n border-color: var(--mj-brand-primary);\n box-shadow: 0 0 0 3px color-mix(in srgb, var(--mj-brand-primary) 15%, transparent);\n }\n .mj-textarea {\n min-height: 80px;\n resize: vertical;\n }\n "] }]
158
158
  }], null, { message: [{
159
159
  type: Input
160
160
  }], inputLabel: [{
@@ -176,5 +176,5 @@ export class InputDialogComponent {
176
176
  }], secondValue: [{
177
177
  type: Input
178
178
  }] }); })();
179
- (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(InputDialogComponent, { className: "InputDialogComponent", filePath: "src/lib/components/dialogs/input-dialog.component.ts", lineNumber: 95 }); })();
179
+ (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(InputDialogComponent, { className: "InputDialogComponent", filePath: "src/lib/components/dialogs/input-dialog.component.ts", lineNumber: 105 }); })();
180
180
  //# sourceMappingURL=input-dialog.component.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"input-dialog.component.js","sourceRoot":"","sources":["../../../../src/lib/components/dialogs/input-dialog.component.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,eAAe,CAAC;;;;IAYrC,+BAA4B;IAAA,iBAAC;IAAA,iBAAO;;;;IAItC,mCAGsB;IAFpB,ySAAmB;IAGrB,0BAAA;IAAA,iBAAW;;;IAHT,4CAAmB;IACnB,gDAA2B;;;;IAK7B,gCAKuC;IAJrC,sSAAmB;IAInB,6MAAiB,yBAAkB,KAAC;IALtC,iBAKuC;;;IAJrC,4CAAmB;IAEnB,AADA,iDAA4B,mCACD;;;IAUzB,+BAA4B;IAAA,iBAAC;IAAA,iBAAO;;;;IAHxC,AADF,8BAAyB,eACI;IACzB,YACA;IAAA,qGAA2B;IAG7B,iBAAQ;IACR,mCAGsB;IAFpB,qTAAyB;IAG3B,0BAAA;IACF,AADE,iBAAW,EACP;;;IAVF,eACA;IADA,wDACA;IAAA,cAEC;IAFD,qDAEC;IAGD,cAAyB;IAAzB,kDAAyB;IACzB,2DAAsC;;AAqDlD,MAAM,OAAO,oBAAoB;IACtB,OAAO,GAAW,EAAE,CAAC;IACrB,UAAU,GAAW,EAAE,CAAC;IACxB,SAAS,GAA6C,MAAM,CAAC;IAC7D,WAAW,GAAW,EAAE,CAAC;IACzB,QAAQ,GAAY,KAAK,CAAC;IAC1B,KAAK,GAAW,EAAE,CAAC;IACnB,gBAAgB,GAAW,EAAE,CAAC;IAC9B,sBAAsB,GAAW,EAAE,CAAC;IACpC,mBAAmB,GAAY,KAAK,CAAC;IACrC,WAAW,GAAW,EAAE,CAAC;IAElC,UAAU,CAAC,KAAY;QACrB,MAAM,QAAQ,GAAG,KAAsB,CAAC;QACxC,IAAI,IAAI,CAAC,SAAS,KAAK,UAAU,EAAE,CAAC;YAClC,QAAQ,CAAC,cAAc,EAAE,CAAC;YAC1B,mDAAmD;YACnD,MAAM,QAAQ,GAAG,QAAQ,CAAC,aAAa,CAAC,qCAAqC,CAAsB,CAAC;YACpG,IAAI,QAAQ,EAAE,CAAC;gBACb,QAAQ,CAAC,KAAK,EAAE,CAAC;YACnB,CAAC;QACH,CAAC;IACH,CAAC;IAED,QAAQ;QACN,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC;IAC3B,CAAC;IAED,cAAc;QACZ,OAAO,IAAI,CAAC,WAAW,CAAC,IAAI,EAAE,CAAC;IACjC,CAAC;8GA9BU,oBAAoB;6DAApB,oBAAoB;YAvF3B,AADF,8BAAkC,WACN;YAAA,YAAa;YAAA,iBAAI;YAEzC,AADF,8BAAyB,eACI;YACzB,YACA;YAAA,uFAAgB;YAGlB,iBAAQ;YACR,2FAAgC;YAOhC,wFAAgC;YAQlC,iBAAM;YACN,sFAAwB;YAe1B,iBAAM;;YAvCsB,eAAa;YAAb,iCAAa;YAGnC,eACA;YADA,+CACA;YAAA,cAEC;YAFD,uCAEC;YAEH,cAMC;YAND,uDAMC;YACD,cAOC;YAPD,uDAOC;YAEH,cAcC;YAdD,+CAcC;;;iFAiDM,oBAAoB;cA5FhC,SAAS;6BACI,KAAK,YACP,iBAAiB,YACjB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;KA0CP;;kBAgDF,KAAK;;kBACL,KAAK;;kBACL,KAAK;;kBACL,KAAK;;kBACL,KAAK;;kBACL,KAAK;;kBACL,KAAK;;kBACL,KAAK;;kBACL,KAAK;;kBACL,KAAK;;kFAVK,oBAAoB","sourcesContent":["import { Component, Input } from '@angular/core';\n\n@Component({\n standalone: false,\n selector: 'mj-input-dialog',\n template: `\n <div class=\"input-dialog-content\">\n <p class=\"dialog-message\">{{ message }}</p>\n <div class=\"input-field\">\n <label class=\"input-label\">\n {{ inputLabel }}\n @if (required) {\n <span class=\"required-mark\">*</span>\n }\n </label>\n @if (inputType === 'textarea') {\n <textarea\n [(ngModel)]=\"value\"\n [placeholder]=\"placeholder\"\n class=\"mj-textarea\">\n </textarea>\n }\n @if (inputType !== 'textarea') {\n <input\n [(ngModel)]=\"value\"\n [type]=\"inputType || 'text'\"\n [placeholder]=\"placeholder\"\n class=\"mj-input\"\n (keydown.enter)=\"onEnterKey($event)\">\n }\n </div>\n @if (secondInputLabel) {\n <div class=\"input-field\">\n <label class=\"input-label\">\n {{ secondInputLabel }}\n @if (secondInputRequired) {\n <span class=\"required-mark\">*</span>\n }\n </label>\n <textarea\n [(ngModel)]=\"secondValue\"\n [placeholder]=\"secondInputPlaceholder\"\n class=\"mj-textarea\">\n </textarea>\n </div>\n }\n </div>\n `,\n styles: [`\n .input-dialog-content {\n padding: 8px 0;\n }\n .dialog-message {\n margin: 0 0 16px 0;\n color: var(--mj-text-primary);\n font-size: 14px;\n }\n .input-field {\n display: flex;\n flex-direction: column;\n gap: 8px;\n }\n .input-label {\n font-weight: 500;\n font-size: 13px;\n color: var(--mj-text-secondary);\n }\n .required-mark {\n color: var(--mj-status-error);\n margin-left: 2px;\n }\n .mj-input,\n .mj-textarea {\n width: 100%;\n padding: 8px 12px;\n border: 1px solid var(--mj-border-default);\n border-radius: 4px;\n font-size: 14px;\n font-family: inherit;\n background: var(--mj-bg-surface);\n color: var(--mj-text-primary);\n }\n .mj-input:focus,\n .mj-textarea:focus {\n outline: none;\n border-color: var(--mj-brand-primary);\n box-shadow: 0 0 0 3px color-mix(in srgb, var(--mj-brand-primary) 15%, transparent);\n }\n .mj-textarea {\n min-height: 80px;\n resize: vertical;\n }\n `]\n})\nexport class InputDialogComponent {\n @Input() message: string = '';\n @Input() inputLabel: string = '';\n @Input() inputType: 'text' | 'textarea' | 'number' | 'email' = 'text';\n @Input() placeholder: string = '';\n @Input() required: boolean = false;\n @Input() value: string = '';\n @Input() secondInputLabel: string = '';\n @Input() secondInputPlaceholder: string = '';\n @Input() secondInputRequired: boolean = false;\n @Input() secondValue: string = '';\n\n onEnterKey(event: Event): void {\n const keyEvent = event as KeyboardEvent;\n if (this.inputType !== 'textarea') {\n keyEvent.preventDefault();\n // Trigger OK/primary button click in the MJ dialog\n const okButton = document.querySelector('.mj-dialog-actions .mj-btn--primary') as HTMLButtonElement;\n if (okButton) {\n okButton.click();\n }\n }\n }\n\n getValue(): string {\n return this.value.trim();\n }\n\n getSecondValue(): string {\n return this.secondValue.trim();\n }\n}\n"]}
1
+ {"version":3,"file":"input-dialog.component.js","sourceRoot":"","sources":["../../../../src/lib/components/dialogs/input-dialog.component.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,eAAe,CAAC;;;;IAYrC,+BAA4B;IAAA,iBAAC;IAAA,iBAAO;;;;IAItC,mCAGsB;IAFpB,ySAAmB;IAGrB,0BAAA;IAAA,iBAAW;;;IAHT,4CAAmB;IACnB,gDAA2B;;;;IAK7B,gCAKuC;IAJrC,sSAAmB;IAInB,6MAAiB,yBAAkB,KAAC;IALtC,iBAKuC;;;IAJrC,4CAAmB;IAEnB,AADA,iDAA4B,mCACD;;;IAUzB,+BAA4B;IAAA,iBAAC;IAAA,iBAAO;;;;IAHxC,AADF,8BAAyB,eACI;IACzB,YACA;IAAA,qGAA2B;IAG7B,iBAAQ;IACR,mCAGsB;IAFpB,qTAAyB;IAG3B,0BAAA;IACF,AADE,iBAAW,EACP;;;IAVF,eACA;IADA,wDACA;IAAA,cAEC;IAFD,qDAEC;IAGD,cAAyB;IAAzB,kDAAyB;IACzB,2DAAsC;;AA+DlD,MAAM,OAAO,oBAAoB;IACtB,OAAO,GAAW,EAAE,CAAC;IACrB,UAAU,GAAW,EAAE,CAAC;IACxB,SAAS,GAA6C,MAAM,CAAC;IAC7D,WAAW,GAAW,EAAE,CAAC;IACzB,QAAQ,GAAY,KAAK,CAAC;IAC1B,KAAK,GAAW,EAAE,CAAC;IACnB,gBAAgB,GAAW,EAAE,CAAC;IAC9B,sBAAsB,GAAW,EAAE,CAAC;IACpC,mBAAmB,GAAY,KAAK,CAAC;IACrC,WAAW,GAAW,EAAE,CAAC;IAElC,UAAU,CAAC,KAAY;QACrB,MAAM,QAAQ,GAAG,KAAsB,CAAC;QACxC,IAAI,IAAI,CAAC,SAAS,KAAK,UAAU,EAAE,CAAC;YAClC,QAAQ,CAAC,cAAc,EAAE,CAAC;YAC1B,mDAAmD;YACnD,MAAM,QAAQ,GAAG,QAAQ,CAAC,aAAa,CAAC,qCAAqC,CAAsB,CAAC;YACpG,IAAI,QAAQ,EAAE,CAAC;gBACb,QAAQ,CAAC,KAAK,EAAE,CAAC;YACnB,CAAC;QACH,CAAC;IACH,CAAC;IAED,QAAQ;QACN,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC;IAC3B,CAAC;IAED,cAAc;QACZ,OAAO,IAAI,CAAC,WAAW,CAAC,IAAI,EAAE,CAAC;IACjC,CAAC;8GA9BU,oBAAoB;6DAApB,oBAAoB;YAjG3B,AADF,8BAAkC,WACN;YAAA,YAAa;YAAA,iBAAI;YAEzC,AADF,8BAAyB,eACI;YACzB,YACA;YAAA,uFAAgB;YAGlB,iBAAQ;YACR,2FAAgC;YAOhC,wFAAgC;YAQlC,iBAAM;YACN,sFAAwB;YAe1B,iBAAM;;YAvCsB,eAAa;YAAb,iCAAa;YAGnC,eACA;YADA,+CACA;YAAA,cAEC;YAFD,uCAEC;YAEH,cAMC;YAND,uDAMC;YACD,cAOC;YAPD,uDAOC;YAEH,cAcC;YAdD,+CAcC;;;iFA2DM,oBAAoB;cAtGhC,SAAS;6BACI,KAAK,YACP,iBAAiB,YACjB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;KA0CP;;kBA0DF,KAAK;;kBACL,KAAK;;kBACL,KAAK;;kBACL,KAAK;;kBACL,KAAK;;kBACL,KAAK;;kBACL,KAAK;;kBACL,KAAK;;kBACL,KAAK;;kBACL,KAAK;;kFAVK,oBAAoB","sourcesContent":["import { Component, Input } from '@angular/core';\n\n@Component({\n standalone: false,\n selector: 'mj-input-dialog',\n template: `\n <div class=\"input-dialog-content\">\n <p class=\"dialog-message\">{{ message }}</p>\n <div class=\"input-field\">\n <label class=\"input-label\">\n {{ inputLabel }}\n @if (required) {\n <span class=\"required-mark\">*</span>\n }\n </label>\n @if (inputType === 'textarea') {\n <textarea\n [(ngModel)]=\"value\"\n [placeholder]=\"placeholder\"\n class=\"mj-textarea\">\n </textarea>\n }\n @if (inputType !== 'textarea') {\n <input\n [(ngModel)]=\"value\"\n [type]=\"inputType || 'text'\"\n [placeholder]=\"placeholder\"\n class=\"mj-input\"\n (keydown.enter)=\"onEnterKey($event)\">\n }\n </div>\n @if (secondInputLabel) {\n <div class=\"input-field\">\n <label class=\"input-label\">\n {{ secondInputLabel }}\n @if (secondInputRequired) {\n <span class=\"required-mark\">*</span>\n }\n </label>\n <textarea\n [(ngModel)]=\"secondValue\"\n [placeholder]=\"secondInputPlaceholder\"\n class=\"mj-textarea\">\n </textarea>\n </div>\n }\n </div>\n `,\n styles: [`\n .input-dialog-content {\n /* MJDialogContainerComponent pads only string content (.mj-dialog-body > p); a component\n body arrives with no horizontal padding at all, so the message, labels and inputs sat flush\n against the dialog edges while the header and footer were padded. Same inset as the sibling\n rating dialog, which already compensates for this. */\n padding: 4px 20px 8px;\n /* Parity with the rating dialog: the Explorer shell's global reset makes this redundant, but a host\n without that reset would let the 100%-wide inputs (padding + border, no local box-sizing) overflow. */\n box-sizing: border-box;\n }\n .input-dialog-content * {\n box-sizing: border-box;\n }\n .dialog-message {\n margin: 0 0 16px 0;\n color: var(--mj-text-primary);\n font-size: 14px;\n }\n .input-field {\n display: flex;\n flex-direction: column;\n gap: 8px;\n }\n .input-label {\n font-weight: 500;\n font-size: 13px;\n color: var(--mj-text-secondary);\n }\n .required-mark {\n color: var(--mj-status-error);\n margin-left: 2px;\n }\n .mj-input,\n .mj-textarea {\n width: 100%;\n padding: 8px 12px;\n border: 1px solid var(--mj-border-default);\n border-radius: 4px;\n font-size: 14px;\n font-family: inherit;\n background: var(--mj-bg-surface);\n color: var(--mj-text-primary);\n }\n .mj-input:focus,\n .mj-textarea:focus {\n outline: none;\n border-color: var(--mj-brand-primary);\n box-shadow: 0 0 0 3px color-mix(in srgb, var(--mj-brand-primary) 15%, transparent);\n }\n .mj-textarea {\n min-height: 80px;\n resize: vertical;\n }\n `]\n})\nexport class InputDialogComponent {\n @Input() message: string = '';\n @Input() inputLabel: string = '';\n @Input() inputType: 'text' | 'textarea' | 'number' | 'email' = 'text';\n @Input() placeholder: string = '';\n @Input() required: boolean = false;\n @Input() value: string = '';\n @Input() secondInputLabel: string = '';\n @Input() secondInputPlaceholder: string = '';\n @Input() secondInputRequired: boolean = false;\n @Input() secondValue: string = '';\n\n onEnterKey(event: Event): void {\n const keyEvent = event as KeyboardEvent;\n if (this.inputType !== 'textarea') {\n keyEvent.preventDefault();\n // Trigger OK/primary button click in the MJ dialog\n const okButton = document.querySelector('.mj-dialog-actions .mj-btn--primary') as HTMLButtonElement;\n if (okButton) {\n okButton.click();\n }\n }\n }\n\n getValue(): string {\n return this.value.trim();\n }\n\n getSecondValue(): string {\n return this.secondValue.trim();\n }\n}\n"]}
@@ -44,7 +44,7 @@ function MessageInputComponent_ng_template_5_Template(rf, ctx) { if (rf & 1) {
44
44
  i0.ɵɵelementEnd();
45
45
  } if (rf & 2) {
46
46
  const ctx_r0 = i0.ɵɵnextContext();
47
- i0.ɵɵproperty("Provider", ctx_r0.Provider)("Agents", ctx_r0.voicePickerAgents)("DefaultAgentId", ctx_r0.voicePickerDefaultAgentId)("CoAgents", ctx_r0.voicePickerCoAgents)("DefaultCoAgentId", ctx_r0.voicePickerDefaultCoAgentId);
47
+ i0.ɵɵproperty("Provider", ctx_r0.ProviderToUse)("CurrentUser", ctx_r0.currentUser)("Agents", ctx_r0.voicePickerAgents)("DefaultAgentId", ctx_r0.voicePickerDefaultAgentId)("CoAgents", ctx_r0.voicePickerCoAgents)("DefaultCoAgentId", ctx_r0.voicePickerDefaultCoAgentId);
48
48
  } }
49
49
  export class MessageInputComponent extends BaseAngularComponent {
50
50
  dialogService;
@@ -2482,13 +2482,13 @@ export class MessageInputComponent extends BaseAngularComponent {
2482
2482
  } if (rf & 2) {
2483
2483
  let _t;
2484
2484
  i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.inputBox = _t.first);
2485
- } }, inputs: { conversationId: "conversationId", conversationName: "conversationName", currentUser: "currentUser", disabled: "disabled", placeholder: "placeholder", parentMessageId: "parentMessageId", enableAttachments: "enableAttachments", enableMentions: "enableMentions", enableAgentMentions: "enableAgentMentions", enableEntityMentions: "enableEntityMentions", enableSkillCommands: "enableSkillCommands", enablePlanMode: "enablePlanMode", enableRealtime: "enableRealtime", maxAttachments: "maxAttachments", maxAttachmentSizeBytes: "maxAttachmentSizeBytes", acceptedFileTypes: "acceptedFileTypes", artifactsByDetailId: "artifactsByDetailId", systemArtifactsByDetailId: "systemArtifactsByDetailId", agentRunsByDetailId: "agentRunsByDetailId", emptyStateMode: "emptyStateMode", appContext: "appContext", defaultAgentId: "defaultAgentId", conversationDefaultAgentId: "conversationDefaultAgentId", agentConfigurationPresetId: "agentConfigurationPresetId", initialMessage: "initialMessage", initialAttachments: "initialAttachments", conversationHistory: "conversationHistory", inProgressMessageIds: "inProgressMessageIds", applicationId: "applicationId", initialDraft: "initialDraft" }, outputs: { messageSent: "messageSent", agentResponse: "agentResponse", beforeAgentTurn: "beforeAgentTurn", afterAgentTurn: "afterAgentTurn", agentRunDetected: "agentRunDetected", agentRunUpdate: "agentRunUpdate", messageComplete: "messageComplete", artifactCreated: "artifactCreated", conversationRenamed: "conversationRenamed", intentCheckStarted: "intentCheckStarted", intentCheckCompleted: "intentCheckCompleted", initialMessageAutoSendStarted: "initialMessageAutoSendStarted", initialMessageAutoSendFailed: "initialMessageAutoSendFailed", emptyStateSubmit: "emptyStateSubmit", uploadStateChanged: "uploadStateChanged", initialDraftApplied: "initialDraftApplied", DraftStateChanged: "DraftStateChanged", ComposerBlurred: "ComposerBlurred" }, standalone: false, features: [i0.ɵɵInheritDefinitionFeature, i0.ɵɵNgOnChangesFeature], decls: 6, vars: 27, consts: [["pickerOrigin", "cdkOverlayOrigin"], ["inputBox", ""], ["cdkOverlayOrigin", "", 1, "message-input-wrapper"], [1, "processing-indicator"], [3, "valueChange", "blurred", "textSubmitted", "attachmentsChanged", "attachmentError", "voiceRequested", "voiceOptionsRequested", "planModeToggle", "placeholder", "disabled", "showCharacterCount", "enableMentions", "EnableAgentMentions", "EnableEntityMentions", "EnableSkillCommands", "TargetAgentId", "enableAttachments", "maxAttachments", "maxAttachmentSizeBytes", "acceptedFileTypes", "currentUser", "Provider", "rows", "enableRealtime", "voiceActive", "canStartRealtime", "enablePlanMode", "planModeActive", "value"], ["cdkConnectedOverlay", "", "cdkConnectedOverlayBackdropClass", "cdk-overlay-transparent-backdrop", 3, "backdropClick", "detach", "cdkConnectedOverlayOrigin", "cdkConnectedOverlayOpen", "cdkConnectedOverlayPositions", "cdkConnectedOverlayPush", "cdkConnectedOverlayHasBackdrop"], [1, "fas", "fa-circle-notch", "fa-spin"], [3, "AgentPicked", "Cancelled", "Provider", "Agents", "DefaultAgentId", "CoAgents", "DefaultCoAgentId"]], template: function MessageInputComponent_Template(rf, ctx) { if (rf & 1) {
2485
+ } }, inputs: { conversationId: "conversationId", conversationName: "conversationName", currentUser: "currentUser", disabled: "disabled", placeholder: "placeholder", parentMessageId: "parentMessageId", enableAttachments: "enableAttachments", enableMentions: "enableMentions", enableAgentMentions: "enableAgentMentions", enableEntityMentions: "enableEntityMentions", enableSkillCommands: "enableSkillCommands", enablePlanMode: "enablePlanMode", enableRealtime: "enableRealtime", maxAttachments: "maxAttachments", maxAttachmentSizeBytes: "maxAttachmentSizeBytes", acceptedFileTypes: "acceptedFileTypes", artifactsByDetailId: "artifactsByDetailId", systemArtifactsByDetailId: "systemArtifactsByDetailId", agentRunsByDetailId: "agentRunsByDetailId", emptyStateMode: "emptyStateMode", appContext: "appContext", defaultAgentId: "defaultAgentId", conversationDefaultAgentId: "conversationDefaultAgentId", agentConfigurationPresetId: "agentConfigurationPresetId", initialMessage: "initialMessage", initialAttachments: "initialAttachments", conversationHistory: "conversationHistory", inProgressMessageIds: "inProgressMessageIds", applicationId: "applicationId", initialDraft: "initialDraft" }, outputs: { messageSent: "messageSent", agentResponse: "agentResponse", beforeAgentTurn: "beforeAgentTurn", afterAgentTurn: "afterAgentTurn", agentRunDetected: "agentRunDetected", agentRunUpdate: "agentRunUpdate", messageComplete: "messageComplete", artifactCreated: "artifactCreated", conversationRenamed: "conversationRenamed", intentCheckStarted: "intentCheckStarted", intentCheckCompleted: "intentCheckCompleted", initialMessageAutoSendStarted: "initialMessageAutoSendStarted", initialMessageAutoSendFailed: "initialMessageAutoSendFailed", emptyStateSubmit: "emptyStateSubmit", uploadStateChanged: "uploadStateChanged", initialDraftApplied: "initialDraftApplied", DraftStateChanged: "DraftStateChanged", ComposerBlurred: "ComposerBlurred" }, standalone: false, features: [i0.ɵɵInheritDefinitionFeature, i0.ɵɵNgOnChangesFeature], decls: 6, vars: 27, consts: [["pickerOrigin", "cdkOverlayOrigin"], ["inputBox", ""], ["cdkOverlayOrigin", "", 1, "message-input-wrapper"], [1, "processing-indicator"], [3, "valueChange", "blurred", "textSubmitted", "attachmentsChanged", "attachmentError", "voiceRequested", "voiceOptionsRequested", "planModeToggle", "placeholder", "disabled", "showCharacterCount", "enableMentions", "EnableAgentMentions", "EnableEntityMentions", "EnableSkillCommands", "TargetAgentId", "enableAttachments", "maxAttachments", "maxAttachmentSizeBytes", "acceptedFileTypes", "currentUser", "Provider", "rows", "enableRealtime", "voiceActive", "canStartRealtime", "enablePlanMode", "planModeActive", "value"], ["cdkConnectedOverlay", "", "cdkConnectedOverlayBackdropClass", "cdk-overlay-transparent-backdrop", 3, "backdropClick", "detach", "cdkConnectedOverlayOrigin", "cdkConnectedOverlayOpen", "cdkConnectedOverlayPositions", "cdkConnectedOverlayPush", "cdkConnectedOverlayHasBackdrop"], [1, "fas", "fa-circle-notch", "fa-spin"], [3, "AgentPicked", "Cancelled", "Provider", "CurrentUser", "Agents", "DefaultAgentId", "CoAgents", "DefaultCoAgentId"]], template: function MessageInputComponent_Template(rf, ctx) { if (rf & 1) {
2486
2486
  i0.ɵɵelementStart(0, "div", 2, 0);
2487
2487
  i0.ɵɵconditionalCreate(2, MessageInputComponent_Conditional_2_Template, 4, 1, "div", 3);
2488
2488
  i0.ɵɵelementStart(3, "mj-ai-composer", 4, 1);
2489
2489
  i0.ɵɵlistener("valueChange", function MessageInputComponent_Template_mj_ai_composer_valueChange_3_listener($event) { return ctx.OnComposerValueChanged($event); })("blurred", function MessageInputComponent_Template_mj_ai_composer_blurred_3_listener() { return ctx.ComposerBlurred.emit(); })("textSubmitted", function MessageInputComponent_Template_mj_ai_composer_textSubmitted_3_listener($event) { return ctx.onTextSubmitted($event); })("attachmentsChanged", function MessageInputComponent_Template_mj_ai_composer_attachmentsChanged_3_listener($event) { return ctx.onAttachmentsChanged($event); })("attachmentError", function MessageInputComponent_Template_mj_ai_composer_attachmentError_3_listener($event) { return ctx.onAttachmentError($event); })("voiceRequested", function MessageInputComponent_Template_mj_ai_composer_voiceRequested_3_listener() { return ctx.onStartRealtime(); })("voiceOptionsRequested", function MessageInputComponent_Template_mj_ai_composer_voiceOptionsRequested_3_listener() { return ctx.onRealtimeOptions(); })("planModeToggle", function MessageInputComponent_Template_mj_ai_composer_planModeToggle_3_listener() { return ctx.TogglePlanMode(); });
2490
2490
  i0.ɵɵelementEnd();
2491
- i0.ɵɵtemplate(5, MessageInputComponent_ng_template_5_Template, 1, 5, "ng-template", 5);
2491
+ i0.ɵɵtemplate(5, MessageInputComponent_ng_template_5_Template, 1, 6, "ng-template", 5);
2492
2492
  i0.ɵɵlistener("backdropClick", function MessageInputComponent_Template_ng_template_backdropClick_5_listener() { return ctx.onRealtimeAgentPickerCancelled(); })("detach", function MessageInputComponent_Template_ng_template_detach_5_listener() { return ctx.onRealtimeAgentPickerCancelled(); });
2493
2493
  i0.ɵɵelementEnd();
2494
2494
  } if (rf & 2) {
@@ -2503,7 +2503,7 @@ export class MessageInputComponent extends BaseAngularComponent {
2503
2503
  }
2504
2504
  (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(MessageInputComponent, [{
2505
2505
  type: Component,
2506
- args: [{ standalone: false, selector: 'mj-message-input', template: "<div class=\"message-input-wrapper\" cdkOverlayOrigin #pickerOrigin=\"cdkOverlayOrigin\">\n <!-- Processing Indicator Overlay -->\n @if (isProcessing) {\n <div class=\"processing-indicator\">\n <i class=\"fas fa-circle-notch fa-spin\"></i>\n <span>{{ processingMessage }}</span>\n </div>\n }\n\n <!-- AI composer (mic + Plan Mode buttons live in its in-composer toolbar): wraps the\n generic mj-message-input-box with the '@' agent / '#' record / '/' skill trigger\n plugins built in \u2014 all three on by default, preserving the standard chat behavior. -->\n <mj-ai-composer\n #inputBox\n [placeholder]=\"placeholder\"\n [disabled]=\"disabled || isProcessing\"\n [showCharacterCount]=\"false\"\n [enableMentions]=\"enableMentions\"\n [EnableAgentMentions]=\"enableAgentMentions\"\n [EnableEntityMentions]=\"enableEntityMentions\"\n [EnableSkillCommands]=\"enableSkillCommands\"\n [TargetAgentId]=\"pickerTargetAgentId\"\n [enableAttachments]=\"enableAttachments\"\n [maxAttachments]=\"maxAttachments\"\n [maxAttachmentSizeBytes]=\"maxAttachmentSizeBytes\"\n [acceptedFileTypes]=\"acceptedFileTypes\"\n [currentUser]=\"currentUser\"\n [Provider]=\"Provider\"\n [rows]=\"3\"\n [enableRealtime]=\"enableRealtime\"\n [voiceActive]=\"voiceActive\"\n [canStartRealtime]=\"canStartRealtime\"\n [enablePlanMode]=\"enablePlanMode\"\n [planModeActive]=\"PlanModeEnabled\"\n [value]=\"messageText\"\n (valueChange)=\"OnComposerValueChanged($event)\"\n (blurred)=\"ComposerBlurred.emit()\"\n (textSubmitted)=\"onTextSubmitted($event)\"\n (attachmentsChanged)=\"onAttachmentsChanged($event)\"\n (attachmentError)=\"onAttachmentError($event)\"\n (voiceRequested)=\"onStartRealtime()\"\n (voiceOptionsRequested)=\"onRealtimeOptions()\"\n (planModeToggle)=\"TogglePlanMode()\">\n </mj-ai-composer>\n\n <!-- Voice agent/co-agent/model picker \u2014 shown when starting a call on a conversation\n with NO prior agent participation, or on demand via the caret next to the phone\n button (any conversation). Rendered in a body-level CDK overlay anchored above the\n composer so it POPS OUT of the chat overlay's clipping border instead of being cut\n off at the top of a narrow (~390px) overlay. -->\n <ng-template\n cdkConnectedOverlay\n [cdkConnectedOverlayOrigin]=\"pickerOrigin\"\n [cdkConnectedOverlayOpen]=\"showRealtimeAgentPicker\"\n [cdkConnectedOverlayPositions]=\"pickerOverlayPositions\"\n [cdkConnectedOverlayPush]=\"true\"\n [cdkConnectedOverlayHasBackdrop]=\"true\"\n cdkConnectedOverlayBackdropClass=\"cdk-overlay-transparent-backdrop\"\n (backdropClick)=\"onRealtimeAgentPickerCancelled()\"\n (detach)=\"onRealtimeAgentPickerCancelled()\">\n <mj-realtime-agent-picker\n [Provider]=\"Provider\"\n [Agents]=\"voicePickerAgents\"\n [DefaultAgentId]=\"voicePickerDefaultAgentId\"\n [CoAgents]=\"voicePickerCoAgents\"\n [DefaultCoAgentId]=\"voicePickerDefaultCoAgentId\"\n (AgentPicked)=\"onRealtimeAgentPicked($event)\"\n (Cancelled)=\"onRealtimeAgentPickerCancelled()\">\n </mj-realtime-agent-picker>\n </ng-template>\n</div>\n\n<!-- The voice \"call mode\" overlay is hosted by <mj-conversation-chat-area> (it fills the\n whole conversation panel in place); this component only owns the trigger wiring. -->\n", styles: [".message-input-wrapper {\n position: relative;\n width: 100%;\n}\n\n/* Plan Mode moved into the in-composer toolbar (message-input-box) as a toggle icon button\n next to the attachment/voice buttons \u2014 see .plan-mode-button-icon there. */\n\n.processing-indicator {\n position: absolute;\n top: 50%;\n left: 50%;\n transform: translate(-50%, -50%);\n display: flex;\n align-items: center;\n gap: 0.5rem;\n padding: 0.75rem 1.25rem;\n background: color-mix(in srgb, var(--mj-bg-surface-card) 95%, transparent);\n border-radius: 8px;\n box-shadow: var(--mj-shadow-sm);\n z-index: 10;\n pointer-events: none;\n}\n.processing-indicator i {\n color: var(--mj-brand-primary);\n}\n.processing-indicator span {\n font-size: 0.9rem;\n color: var(--mj-text-primary);\n}\n"] }]
2506
+ args: [{ standalone: false, selector: 'mj-message-input', template: "<div class=\"message-input-wrapper\" cdkOverlayOrigin #pickerOrigin=\"cdkOverlayOrigin\">\n <!-- Processing Indicator Overlay -->\n @if (isProcessing) {\n <div class=\"processing-indicator\">\n <i class=\"fas fa-circle-notch fa-spin\"></i>\n <span>{{ processingMessage }}</span>\n </div>\n }\n\n <!-- AI composer (mic + Plan Mode buttons live in its in-composer toolbar): wraps the\n generic mj-message-input-box with the '@' agent / '#' record / '/' skill trigger\n plugins built in \u2014 all three on by default, preserving the standard chat behavior. -->\n <mj-ai-composer\n #inputBox\n [placeholder]=\"placeholder\"\n [disabled]=\"disabled || isProcessing\"\n [showCharacterCount]=\"false\"\n [enableMentions]=\"enableMentions\"\n [EnableAgentMentions]=\"enableAgentMentions\"\n [EnableEntityMentions]=\"enableEntityMentions\"\n [EnableSkillCommands]=\"enableSkillCommands\"\n [TargetAgentId]=\"pickerTargetAgentId\"\n [enableAttachments]=\"enableAttachments\"\n [maxAttachments]=\"maxAttachments\"\n [maxAttachmentSizeBytes]=\"maxAttachmentSizeBytes\"\n [acceptedFileTypes]=\"acceptedFileTypes\"\n [currentUser]=\"currentUser\"\n [Provider]=\"Provider\"\n [rows]=\"3\"\n [enableRealtime]=\"enableRealtime\"\n [voiceActive]=\"voiceActive\"\n [canStartRealtime]=\"canStartRealtime\"\n [enablePlanMode]=\"enablePlanMode\"\n [planModeActive]=\"PlanModeEnabled\"\n [value]=\"messageText\"\n (valueChange)=\"OnComposerValueChanged($event)\"\n (blurred)=\"ComposerBlurred.emit()\"\n (textSubmitted)=\"onTextSubmitted($event)\"\n (attachmentsChanged)=\"onAttachmentsChanged($event)\"\n (attachmentError)=\"onAttachmentError($event)\"\n (voiceRequested)=\"onStartRealtime()\"\n (voiceOptionsRequested)=\"onRealtimeOptions()\"\n (planModeToggle)=\"TogglePlanMode()\">\n </mj-ai-composer>\n\n <!-- Voice agent/co-agent/model picker \u2014 shown when starting a call on a conversation\n with NO prior agent participation, or on demand via the caret next to the phone\n button (any conversation). Rendered in a body-level CDK overlay anchored above the\n composer so it POPS OUT of the chat overlay's clipping border instead of being cut\n off at the top of a narrow (~390px) overlay. -->\n <ng-template\n cdkConnectedOverlay\n [cdkConnectedOverlayOrigin]=\"pickerOrigin\"\n [cdkConnectedOverlayOpen]=\"showRealtimeAgentPicker\"\n [cdkConnectedOverlayPositions]=\"pickerOverlayPositions\"\n [cdkConnectedOverlayPush]=\"true\"\n [cdkConnectedOverlayHasBackdrop]=\"true\"\n cdkConnectedOverlayBackdropClass=\"cdk-overlay-transparent-backdrop\"\n (backdropClick)=\"onRealtimeAgentPickerCancelled()\"\n (detach)=\"onRealtimeAgentPickerCancelled()\">\n <mj-realtime-agent-picker\n [Provider]=\"ProviderToUse\"\n [CurrentUser]=\"currentUser\"\n [Agents]=\"voicePickerAgents\"\n [DefaultAgentId]=\"voicePickerDefaultAgentId\"\n [CoAgents]=\"voicePickerCoAgents\"\n [DefaultCoAgentId]=\"voicePickerDefaultCoAgentId\"\n (AgentPicked)=\"onRealtimeAgentPicked($event)\"\n (Cancelled)=\"onRealtimeAgentPickerCancelled()\">\n </mj-realtime-agent-picker>\n </ng-template>\n</div>\n\n<!-- The voice \"call mode\" overlay is hosted by <mj-conversation-chat-area> (it fills the\n whole conversation panel in place); this component only owns the trigger wiring. -->\n", styles: [".message-input-wrapper {\n position: relative;\n width: 100%;\n}\n\n/* Plan Mode moved into the in-composer toolbar (message-input-box) as a toggle icon button\n next to the attachment/voice buttons \u2014 see .plan-mode-button-icon there. */\n\n.processing-indicator {\n position: absolute;\n top: 50%;\n left: 50%;\n transform: translate(-50%, -50%);\n display: flex;\n align-items: center;\n gap: 0.5rem;\n padding: 0.75rem 1.25rem;\n background: color-mix(in srgb, var(--mj-bg-surface-card) 95%, transparent);\n border-radius: 8px;\n box-shadow: var(--mj-shadow-sm);\n z-index: 10;\n pointer-events: none;\n}\n.processing-indicator i {\n color: var(--mj-brand-primary);\n}\n.processing-indicator span {\n font-size: 0.9rem;\n color: var(--mj-text-primary);\n}\n"] }]
2507
2507
  }], () => [{ type: i1.DialogService }, { type: i2.ToastService }, { type: i3.ConversationAgentService }, { type: i4.DataCacheService }, { type: i5.ActiveTasksService }, { type: i6.ConversationStreamingService }, { type: i7.MentionParserService }, { type: i8.ConversationAttachmentService }, { type: i9.ConversationBridgeService }, { type: i10.RealtimeSessionService }], { conversationId: [{
2508
2508
  type: Input
2509
2509
  }], conversationName: [{