@c8y/ngx-components 1023.85.1 → 1023.88.2

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 (84) hide show
  1. package/ai/agent-chat/index.d.ts.map +1 -1
  2. package/alarm-event-selector/index.d.ts +6 -0
  3. package/alarm-event-selector/index.d.ts.map +1 -1
  4. package/context-dashboard/index.d.ts +11 -1
  5. package/context-dashboard/index.d.ts.map +1 -1
  6. package/data-preparation/index.d.ts +10 -0
  7. package/data-preparation/index.d.ts.map +1 -0
  8. package/datapoint-selector/index.d.ts +2 -1
  9. package/datapoint-selector/index.d.ts.map +1 -1
  10. package/echart/index.d.ts +1 -0
  11. package/echart/index.d.ts.map +1 -1
  12. package/echart/models/index.d.ts +1 -0
  13. package/echart/models/index.d.ts.map +1 -1
  14. package/fesm2022/c8y-ngx-components-ai-agent-chat.mjs +12 -2
  15. package/fesm2022/c8y-ngx-components-ai-agent-chat.mjs.map +1 -1
  16. package/fesm2022/c8y-ngx-components-alarm-event-selector.mjs +90 -21
  17. package/fesm2022/c8y-ngx-components-alarm-event-selector.mjs.map +1 -1
  18. package/fesm2022/c8y-ngx-components-context-dashboard.mjs +10 -10
  19. package/fesm2022/c8y-ngx-components-context-dashboard.mjs.map +1 -1
  20. package/fesm2022/c8y-ngx-components-data-preparation.mjs +63 -0
  21. package/fesm2022/c8y-ngx-components-data-preparation.mjs.map +1 -0
  22. package/fesm2022/c8y-ngx-components-datapoint-selector.mjs +14 -12
  23. package/fesm2022/c8y-ngx-components-datapoint-selector.mjs.map +1 -1
  24. package/fesm2022/c8y-ngx-components-echart-models.mjs.map +1 -1
  25. package/fesm2022/c8y-ngx-components-echart.mjs +102 -44
  26. package/fesm2022/c8y-ngx-components-echart.mjs.map +1 -1
  27. package/fesm2022/c8y-ngx-components-global-context.mjs +2 -2
  28. package/fesm2022/c8y-ngx-components-global-context.mjs.map +1 -1
  29. package/fesm2022/c8y-ngx-components-icon-selector.mjs +2 -2
  30. package/fesm2022/c8y-ngx-components-icon-selector.mjs.map +1 -1
  31. package/fesm2022/c8y-ngx-components-widgets-definitions-alarms-alarm-list.mjs +1 -1
  32. package/fesm2022/c8y-ngx-components-widgets-definitions-alarms-alarm-list.mjs.map +1 -1
  33. package/fesm2022/c8y-ngx-components-widgets-definitions-datapoints-graph.mjs +6 -6
  34. package/fesm2022/c8y-ngx-components-widgets-definitions-datapoints-graph.mjs.map +1 -1
  35. package/fesm2022/c8y-ngx-components-widgets-definitions-datapoints-list.mjs +3 -3
  36. package/fesm2022/c8y-ngx-components-widgets-definitions-datapoints-list.mjs.map +1 -1
  37. package/fesm2022/c8y-ngx-components-widgets-definitions-datapoints-table.mjs +1 -1
  38. package/fesm2022/c8y-ngx-components-widgets-definitions-datapoints-table.mjs.map +1 -1
  39. package/fesm2022/c8y-ngx-components-widgets-definitions-event-list.mjs +2 -2
  40. package/fesm2022/c8y-ngx-components-widgets-definitions-event-list.mjs.map +1 -1
  41. package/fesm2022/c8y-ngx-components-widgets-definitions-html-widget.mjs +1 -1
  42. package/fesm2022/c8y-ngx-components-widgets-definitions-html-widget.mjs.map +1 -1
  43. package/fesm2022/c8y-ngx-components-widgets-definitions-info-gauge.mjs +30 -6
  44. package/fesm2022/c8y-ngx-components-widgets-definitions-info-gauge.mjs.map +1 -1
  45. package/fesm2022/c8y-ngx-components-widgets-definitions-kpi.mjs +4 -4
  46. package/fesm2022/c8y-ngx-components-widgets-definitions-kpi.mjs.map +1 -1
  47. package/fesm2022/c8y-ngx-components-widgets-definitions-linear-gauge.mjs +3 -3
  48. package/fesm2022/c8y-ngx-components-widgets-definitions-linear-gauge.mjs.map +1 -1
  49. package/fesm2022/c8y-ngx-components-widgets-definitions-map.mjs +2 -2
  50. package/fesm2022/c8y-ngx-components-widgets-definitions-map.mjs.map +1 -1
  51. package/fesm2022/c8y-ngx-components-widgets-definitions-markdown.mjs +1 -1
  52. package/fesm2022/c8y-ngx-components-widgets-definitions-markdown.mjs.map +1 -1
  53. package/fesm2022/c8y-ngx-components-widgets-definitions-pie-chart.mjs +3 -3
  54. package/fesm2022/c8y-ngx-components-widgets-definitions-pie-chart.mjs.map +1 -1
  55. package/fesm2022/c8y-ngx-components-widgets-definitions-radial-gauge.mjs +3 -3
  56. package/fesm2022/c8y-ngx-components-widgets-definitions-radial-gauge.mjs.map +1 -1
  57. package/fesm2022/c8y-ngx-components-widgets-definitions-silo.mjs +3 -3
  58. package/fesm2022/c8y-ngx-components-widgets-definitions-silo.mjs.map +1 -1
  59. package/fesm2022/c8y-ngx-components-widgets-implementations-alarms.mjs +2 -2
  60. package/fesm2022/c8y-ngx-components-widgets-implementations-alarms.mjs.map +1 -1
  61. package/fesm2022/c8y-ngx-components-widgets-implementations-datapoints-graph.mjs +2 -2
  62. package/fesm2022/c8y-ngx-components-widgets-implementations-datapoints-graph.mjs.map +1 -1
  63. package/fesm2022/c8y-ngx-components-widgets-implementations-events.mjs +2 -2
  64. package/fesm2022/c8y-ngx-components-widgets-implementations-events.mjs.map +1 -1
  65. package/fesm2022/c8y-ngx-components-widgets-implementations-info-gauge.mjs +3 -3
  66. package/fesm2022/c8y-ngx-components-widgets-implementations-info-gauge.mjs.map +1 -1
  67. package/fesm2022/c8y-ngx-components-widgets-implementations-kpi.mjs +2 -2
  68. package/fesm2022/c8y-ngx-components-widgets-implementations-kpi.mjs.map +1 -1
  69. package/fesm2022/c8y-ngx-components-widgets-implementations-linear-gauge.mjs +2 -2
  70. package/fesm2022/c8y-ngx-components-widgets-implementations-linear-gauge.mjs.map +1 -1
  71. package/fesm2022/c8y-ngx-components-widgets-implementations-markdown.mjs +2 -2
  72. package/fesm2022/c8y-ngx-components-widgets-implementations-markdown.mjs.map +1 -1
  73. package/fesm2022/c8y-ngx-components-widgets-implementations-pie-chart.mjs +10 -9
  74. package/fesm2022/c8y-ngx-components-widgets-implementations-pie-chart.mjs.map +1 -1
  75. package/fesm2022/c8y-ngx-components-widgets-implementations-three-d-rotation.mjs +2 -2
  76. package/fesm2022/c8y-ngx-components-widgets-implementations-three-d-rotation.mjs.map +1 -1
  77. package/fesm2022/c8y-ngx-components.mjs +32 -10
  78. package/fesm2022/c8y-ngx-components.mjs.map +1 -1
  79. package/index.d.ts +1 -0
  80. package/index.d.ts.map +1 -1
  81. package/locales/locales.pot +39 -0
  82. package/package.json +1 -1
  83. package/widgets/definitions/info-gauge/index.d.ts.map +1 -1
  84. package/widgets/implementations/pie-chart/index.d.ts.map +1 -1
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sources":["../../../ai/agent-chat/agent-chat.component.ts","../../../ai/agent-chat/widget-ai-chat-section.component.ts"],"sourcesContent":[null,null],"names":[],"mappings":";;;;;;AAiEA,cAAA,kBAAA,YAAA,MAAA,EAAA,SAAA,EAAA,SAAA;;AA0BE;AACA;;AAGA;AAMA;;;;;;;;AAQG;oBACW,aAAA,CAAA,WAAA,UAAA,qBAAA;;AAMd,2BAAA,qBAAA;AAKA;;;;;AAKG;0BACiB,aAAA,CAAA,WAAA,CAAA,UAAA;;yBAGD,aAAA,CAAA,WAAA,CAAA,OAAA,CAAA,eAAA;;8BAGK,aAAA,CAAA,WAAA,CAAA,WAAA;;0BAGJ,aAAA,CAAA,MAAA;AAEpB;;;AAGG;+BACsB,aAAA,CAAA,WAAA;;wBAGP,aAAA,CAAA,WAAA,CAAA,MAAA;AAElB;;;;;;;;;AASG;wCAC+B,aAAA,CAAA,WAAA,CAAA,IAAA;AAElC;;;;;;AAMG;4CACmC,aAAA,CAAA,WAAA,CAAA,6BAAA;AAEtC;;;;;;;;;;;AAWG;qCAC4B,aAAA,CAAA,WAAA,WAAA,kBAAA,gBAAA,gBAAA,oBAAA,kBAAA;AAQ/B;;;;;AAKG;oCAC2B,aAAA,CAAA,WAAA,CAAA,qBAAA;AAE9B;;AAE4D;8BACpC,aAAA,CAAA,WAAA;;AAGxB,iCAA2B,aAAA,CAAA,WAAA;;;;;;;;;;;;;;;;;;;;;;;;AAAwB;;AAEnD,oCAAA,UAAA;AAEA;;;;;;;;;AASG;AACH,uCAAiC,aAAA,CAAA,WAAA;AAEjC;;;;;AAKG;mCAC0B,aAAA,CAAA,WAAA,CAAA,MAAA;8BAEL,aAAA,CAAA,gBAAA,CAAA,SAAA;AAExB;;;;;;;AAOG;2BACkB,aAAA,CAAA,gBAAA,CAAA,YAAA,CAAA,MAAA;;AAGrB,yBAAmB,aAAA,CAAA,gBAAA;;;;AAId;;AAGL;;AAEA,6BAAA,KAAA;;;AAA6D;AAE7D;;;AAGG;+BACsB,aAAA,CAAA,gBAAA,CAAA,SAAA;AAEzB,mCAA6B,aAAA,CAAA,cAAA;;AAE7B,+BAAuB,aAAA,CAAA,MAAA;AAIvB;;AAGA,0CAAoC,aAAA,CAAA,cAAA;;AAKpC;;AAEA;;AAKA,oDAA8C,aAAA,CAAA,cAAA;AAE9C;;;;;AAKG;gCACuB,aAAA,CAAA,cAAA;uBAKT,aAAA,CAAA,cAAA,CAAA,SAAA;;AAGjB,8BAAwB,aAAA,CAAA,MAAA;;;;AAarB;AAEH;;;AAGG;oDAC2C,aAAA,CAAA,MAAA;;;;;AAc3C;;AAGH;AACA;AAEA;AACA;AACA;AACA;;;;;AAMA;;AAMA;;;AAGG;;AAGG,gBAAA,OAAA;;AAWN;;;;;;;;AAQG;AACH,6BAAA,qBAAA,GAAA,WAAA;;;AAsDA;;;AAsCM,2BAAA,kBAAA,sBAAA,OAAA;;;;;;;AA+EN;;;;;;;AAOG;AACH;;;;;;;AA+FA;AAyDA;;;;;;AAMG;;AA4EH;;;AA4HA;;AAEG;;;;AA6DJ;;AC57BD,cAAA,4BAAA,YAAA,MAAA;AAOE;;;AAGG;;AAMH,yCAAmC,aAAA,CAAA,cAAA,CAAA,kCAAA;;;;AAGiB;AAEpD,oBAAA,qBAAA;AAEA,iBAAA,OAAA,CAAA,eAAA;;AAGA;AAEA;;AAGA;;;;;;;;;;;;;;;;AAgBG;AACH,uBAAA,UAAA;AACgC;AAAoB;AAAM;;;AAO5B;AAAoB;AAIlD;AACA;AACA;AACA;AAEA;;;;AAIG;;AAIH;;AAEG;AACG,gBAAA,OAAA;AAaN;;;AAGG;;;;AAoBJ;;;;"}
1
+ {"version":3,"file":"index.d.ts","sources":["../../../ai/agent-chat/agent-chat.component.ts","../../../ai/agent-chat/widget-ai-chat-section.component.ts"],"sourcesContent":[null,null],"names":[],"mappings":";;;;;;AAiEA,cAAA,kBAAA,YAAA,MAAA,EAAA,SAAA,EAAA,SAAA;;AA0BE;AACA;;AAGA;AAMA;;;;;;;;AAQG;oBACW,aAAA,CAAA,WAAA,UAAA,qBAAA;;AAMd,2BAAA,qBAAA;AAKA;;;;;AAKG;0BACiB,aAAA,CAAA,WAAA,CAAA,UAAA;;yBAGD,aAAA,CAAA,WAAA,CAAA,OAAA,CAAA,eAAA;;8BAGK,aAAA,CAAA,WAAA,CAAA,WAAA;;0BAGJ,aAAA,CAAA,MAAA;AAEpB;;;AAGG;+BACsB,aAAA,CAAA,WAAA;;wBAGP,aAAA,CAAA,WAAA,CAAA,MAAA;AAElB;;;;;;;;;AASG;wCAC+B,aAAA,CAAA,WAAA,CAAA,IAAA;AAElC;;;;;;AAMG;4CACmC,aAAA,CAAA,WAAA,CAAA,6BAAA;AAEtC;;;;;;;;;;;AAWG;qCAC4B,aAAA,CAAA,WAAA,WAAA,kBAAA,gBAAA,gBAAA,oBAAA,kBAAA;AAQ/B;;;;;AAKG;oCAC2B,aAAA,CAAA,WAAA,CAAA,qBAAA;AAE9B;;AAE4D;8BACpC,aAAA,CAAA,WAAA;;AAGxB,iCAA2B,aAAA,CAAA,WAAA;;;;;;;;;;;;;;;;;;;;;;;;AAAwB;;AAEnD,oCAAA,UAAA;AAEA;;;;;;;;;AASG;AACH,uCAAiC,aAAA,CAAA,WAAA;AAEjC;;;;;AAKG;mCAC0B,aAAA,CAAA,WAAA,CAAA,MAAA;8BAEL,aAAA,CAAA,gBAAA,CAAA,SAAA;AAExB;;;;;;;AAOG;2BACkB,aAAA,CAAA,gBAAA,CAAA,YAAA,CAAA,MAAA;;AAGrB,yBAAmB,aAAA,CAAA,gBAAA;;;;AAId;;AAGL;;AAEA,6BAAA,KAAA;;;AAA6D;AAE7D;;;AAGG;+BACsB,aAAA,CAAA,gBAAA,CAAA,SAAA;AAEzB,mCAA6B,aAAA,CAAA,cAAA;;AAE7B,+BAAuB,aAAA,CAAA,MAAA;AAIvB;;AAGA,0CAAoC,aAAA,CAAA,cAAA;;AAKpC;;AAEA;;AAKA,oDAA8C,aAAA,CAAA,cAAA;AAE9C;;;;;AAKG;gCACuB,aAAA,CAAA,cAAA;uBAKT,aAAA,CAAA,cAAA,CAAA,SAAA;;AAGjB,8BAAwB,aAAA,CAAA,MAAA;;;;AAarB;AAEH;;;AAGG;oDAC2C,aAAA,CAAA,MAAA;;;;;AAc3C;;AAGH;AACA;AAEA;AACA;AACA;AACA;;;;;AAMA;;AAMA;;;AAGG;;AAGG,gBAAA,OAAA;;AAWN;;;;;;;;AAQG;AACH,6BAAA,qBAAA,GAAA,WAAA;;;AAsDA;;;AAsCM,2BAAA,kBAAA,sBAAA,OAAA;;;;;;;AA+EN;;;;;;;AAOG;AACH;;;;;;;AA+FA;AAyDA;;;;;;AAMG;;AA4EH;;;AA8IA;;AAEG;;;;AA6DJ;;AC98BD,cAAA,4BAAA,YAAA,MAAA;AAOE;;;AAGG;;AAMH,yCAAmC,aAAA,CAAA,cAAA,CAAA,kCAAA;;;;AAGiB;AAEpD,oBAAA,qBAAA;AAEA,iBAAA,OAAA,CAAA,eAAA;;AAGA;AAEA;;AAGA;;;;;;;;;;;;;;;;AAgBG;AACH,uBAAA,UAAA;AACgC;AAAoB;AAAM;;;AAO5B;AAAoB;AAIlD;AACA;AACA;AACA;AAEA;;;;AAIG;;AAIH;;AAEG;AACG,gBAAA,OAAA;AAaN;;;AAGG;;;;AAoBJ;;;;"}
@@ -378,8 +378,11 @@ declare class WidgetEventSelectorComponent implements OnInit {
378
378
  */
379
379
  configStoreMode: ConfigStoreMode;
380
380
  events: EventDetails[];
381
+ readonly eventsSignal: i0.WritableSignal<EventDetails[]>;
382
+ readonly eventsCount: i0.Signal<number>;
381
383
  readonly widgetConfigService: WidgetConfigService;
382
384
  readonly timelineType: TimelineType;
385
+ readonly noneSelectedText: "None selected`event`";
383
386
  ngOnInit(): void;
384
387
  onEventsChange(events: EventDetails[]): void;
385
388
  private getEvents;
@@ -402,8 +405,11 @@ declare class WidgetAlarmSelectorComponent implements OnInit {
402
405
  */
403
406
  configStoreMode: ConfigStoreMode;
404
407
  alarms: AlarmDetails[];
408
+ readonly alarmsSignal: i0.WritableSignal<AlarmDetails[]>;
409
+ readonly alarmsCount: i0.Signal<number>;
405
410
  readonly widgetConfigService: WidgetConfigService;
406
411
  readonly timelineType: TimelineType;
412
+ readonly noneSelectedText: "None selected`alarm`";
407
413
  ngOnInit(): void;
408
414
  onAlarmsChange(alarms: AlarmDetails[]): void;
409
415
  private getAlarms;
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sources":["../../alarm-event-selector/alarm-event-selector.model.ts","../../alarm-event-selector/alarm-event-attributes-form/alarm-event-attributes-form.service.ts","../../alarm-event-selector/alarm-event-attributes-form/alarm-event-attributes-form.model.ts","../../alarm-event-selector/alarm-event-attributes-form/alarm-event-attributes-form.component.ts","../../alarm-event-selector/alarm-event-selector-modal/alarm-event-selector-modal.component.ts","../../alarm-event-selector/alarm-event-selector-modal/alarm-event-selector-modal.model.ts","../../alarm-event-selector/alarm-event-selector-modal/alarm-event-selector-modal.service.ts","../../alarm-event-selector/alarm-event-selector.service.ts","../../alarm-event-selector/alarm-event-selection-list/alarm-event-selection-list.component.ts","../../alarm-event-selector/alarm-event-selector-list-item/alarm-event-selector-list-item.component.ts","../../alarm-event-selector/alarm-event-selector.component.ts","../../alarm-event-selector/pipes/includes-alarm.pipe.ts","../../alarm-event-selector/custom-alarm-event-form/custom-alarm-event-form.component.ts","../../alarm-event-selector/alarm-event-selector.module.ts","../../alarm-event-selector/widget-event-selector.component.ts","../../alarm-event-selector/widget-alarm-selector.component.ts"],"sourcesContent":[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;AAKA;;;;;AAKE;;;;;AAMI;;AAEJ;;;;;AAMI;;AAEJ;;;;;AAMI;;;;;;AAQA;;;;;;;;;;;;;;;;;AAkBN;AAsBA;AAsBA;;AAEG;AACG;;;;;;ACrGN;;;;AAaC;;;;ACZG;AACD;AACD;AACA;AACA;AACD;;ACyBD;AAoCI;AACA;;;;;;AAJF;AAGU;;AAwBV;AAIA;AAIA;AAIA;AAIA;;AAiBA;AAIA;;;AAKD;;AClID;AAwBc;;;AAhBZ;AACA;AACA;;AAEA;AACA;;;;;;AAWoB;AAEpB;;AAUA;;;AAGD;;AC5CK;;ACIN;;AAEG;AACH;AAEc;AAAQ;AACpB;;;;AAIG;AACH;;;AAUD;;ACbD;AAQI;AACA;AACA;;;AAGF;;;;AAIG;AACH;AAIA;;;;AAIG;;AAWH;;;;;AAKG;AACG;;;AAuBA;AACA;;;;;AA2CP;;ACrED;AA0FI;AACA;AACA;AACY;AACA;AACA;AA9Dd;;;AAGG;;AAGH;;AAEG;AACM;AAET;;AAEG;AACM;AAEA;;AAGT;;;AAGG;;AAGH;;AAEG;AACM;AAET;;;AAGG;AACM;AAET;;AAEG;AACM;;AAGA;;AAGT;;AAEG;AACM;;;AAIT;;;AAeA;AAYA;AAKA;AAIA;AAIA;AAIA;AAWA;;;AA2CA;AAMA;AAOA;;;AAUD;;AC3ND;AA2Dc;;AAnBH;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAIC;AACA;;AAGV;;AAGoB;;;;AA0BpB;AAIA;AAIA;AASA;AAIA;;;AAiBA;;;AAKD;;ACrID;AAwDc;;;AAxBH;AACA;AACA;AACA;AACA;;AAGC;AACV;AACA;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAMoB;AAEpB;AAQA;AAMA;AAUA;;AAYA;AAKA;AAIA;AAoCA;AAKA;AAIA;;;AAaD;;ACnMD;AAEE;;;AAWD;;ACFD;AA4Bc;;;;;;AAPF;AACA;;AAGV;;AAGoB;;;;AAmCpB;;;AAKD;;AClED;;;;AAoBwC;;ACxBxC;AAmBE;;;AAGG;AACM;AAET;;;;AAIG;;;;AAMH;AAEA;AAIA;AAIA;AAMA;AAeA;;;AAOD;;ACzED;AAmBE;;;AAGG;AACM;AAET;;;;AAIG;;;;AAMH;AAEA;AAIA;AAIA;AAMA;AAeA;;;AAOD;;;"}
1
+ {"version":3,"file":"index.d.ts","sources":["../../alarm-event-selector/alarm-event-selector.model.ts","../../alarm-event-selector/alarm-event-attributes-form/alarm-event-attributes-form.service.ts","../../alarm-event-selector/alarm-event-attributes-form/alarm-event-attributes-form.model.ts","../../alarm-event-selector/alarm-event-attributes-form/alarm-event-attributes-form.component.ts","../../alarm-event-selector/alarm-event-selector-modal/alarm-event-selector-modal.component.ts","../../alarm-event-selector/alarm-event-selector-modal/alarm-event-selector-modal.model.ts","../../alarm-event-selector/alarm-event-selector-modal/alarm-event-selector-modal.service.ts","../../alarm-event-selector/alarm-event-selector.service.ts","../../alarm-event-selector/alarm-event-selection-list/alarm-event-selection-list.component.ts","../../alarm-event-selector/alarm-event-selector-list-item/alarm-event-selector-list-item.component.ts","../../alarm-event-selector/alarm-event-selector.component.ts","../../alarm-event-selector/pipes/includes-alarm.pipe.ts","../../alarm-event-selector/custom-alarm-event-form/custom-alarm-event-form.component.ts","../../alarm-event-selector/alarm-event-selector.module.ts","../../alarm-event-selector/widget-event-selector.component.ts","../../alarm-event-selector/widget-alarm-selector.component.ts"],"sourcesContent":[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;AAKA;;;;;AAKE;;;;;AAMI;;AAEJ;;;;;AAMI;;AAEJ;;;;;AAMI;;;;;;AAQA;;;;;;;;;;;;;;;;;AAkBN;AAsBA;AAsBA;;AAEG;AACG;;;;;;ACrGN;;;;AAaC;;;;ACZG;AACD;AACD;AACA;AACA;AACD;;ACyBD;AAoCI;AACA;;;;;;AAJF;AAGU;;AAwBV;AAIA;AAIA;AAIA;AAIA;;AAiBA;AAIA;;;AAKD;;AClID;AAwBc;;;AAhBZ;AACA;AACA;;AAEA;AACA;;;;;;AAWoB;AAEpB;;AAUA;;;AAGD;;AC5CK;;ACIN;;AAEG;AACH;AAEc;AAAQ;AACpB;;;;AAIG;AACH;;;AAUD;;ACbD;AAQI;AACA;AACA;;;AAGF;;;;AAIG;AACH;AAIA;;;;AAIG;;AAWH;;;;;AAKG;AACG;;;AAuBA;AACA;;;;;AA2CP;;ACrED;AA0FI;AACA;AACA;AACY;AACA;AACA;AA9Dd;;;AAGG;;AAGH;;AAEG;AACM;AAET;;AAEG;AACM;AAEA;;AAGT;;;AAGG;;AAGH;;AAEG;AACM;AAET;;;AAGG;AACM;AAET;;AAEG;AACM;;AAGA;;AAGT;;AAEG;AACM;;;AAIT;;;AAeA;AAYA;AAKA;AAIA;AAIA;AAIA;AAWA;;;AA2CA;AAMA;AAOA;;;AAUD;;AC5ND;AAuDc;;AAnBH;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAIC;AACA;;AAGV;;AAGoB;;;;AA0BpB;AAIA;AAIA;AAUA;AAIA;;;AAkBA;;;AAKD;;AClID;AAwDc;;;AAxBH;AACA;AACA;AACA;AACA;;AAGC;AACV;AACA;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAMoB;AAEpB;AAQA;AAMA;AAUA;;AAYA;AAKA;AAIA;AAoCA;AAKA;AAIA;;;AAaD;;ACnMD;AAEE;;;AAWD;;ACFD;AA4Bc;;;;;;AAPF;AACA;;AAGV;;AAGoB;;;;AAmCpB;;;AAKD;;AClED;;;;AAoBwC;;ACnBxC;AAqCE;;;AAGG;AACM;AAET;;;;AAIG;;;;;;AAQH;;AAGA;AAKA;AAKA;AAMA;AAeA;;;AAOD;;AChGD;AAqCE;;;AAGG;AACM;AAET;;;;AAIG;;;;;;AAQH;;AAGA;AAKA;AAKA;AAMA;AAeA;;;AAOD;;;"}
@@ -1236,7 +1236,17 @@ interface WidgetConfigSectionBase<T> {
1236
1236
  */
1237
1237
  label: string;
1238
1238
  /**
1239
- * The priority. Default settings from hookWidget will have priority 0.
1239
+ * The priority of this section. Higher values appear first (sorted descending).
1240
+ * Default settings from `hookWidget` (legacy `loadConfigComponent`) have priority 0.
1241
+ *
1242
+ * Standard priority scheme for consistent section ordering:
1243
+ * - **100** — Asset selection
1244
+ * - **90** — Time context
1245
+ * - **80** — Data point selection
1246
+ * - **70** — Alarm selection
1247
+ * - **60** — Event selection
1248
+ * - **50** — Asset properties
1249
+ * - **0** — Settings (legacy config component, always last)
1240
1250
  */
1241
1251
  priority?: number;
1242
1252
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sources":["../../context-dashboard/add-dashboard.component.ts","../../context-dashboard/add-dashboard.factory.ts","../../context-dashboard/context-dashboard.model.ts","../../context-dashboard/context-dashboard.service.ts","../../context-dashboard/dashboard-detail.service.ts","../../context-dashboard/dashboard-detail.component.ts","../../context-dashboard/memento/dashboard-originator.service.ts","../../context-dashboard/memento/dashboard-caretaker.service.ts","../../context-dashboard/memento/dashboard-edit-mode.service.ts","../../context-dashboard/widget.service.ts","../../context-dashboard/context-dashboard.component.ts","../../context-dashboard/widget-config/appearance-settings.component.ts","../../context-dashboard/type-dashboard-info/type-dashboard-info.component.ts","../../context-dashboard/widget-config/asset-property-mappings.model.ts","../../context-dashboard/widget-config.model.ts","../../context-dashboard/widget-config-hook/widget-config-hook.model.ts","../../context-dashboard/widget-config-hook/widget-config-hook.service.ts","../../context-dashboard/widget-config.service.ts","../../context-dashboard/widget-config/widget-config-root.component.ts","../../context-dashboard/widget-config.component.ts","../../context-dashboard/widget-config/widget-preview.component.ts","../../context-dashboard/widget-config/widget-config-section.component.ts","../../context-dashboard/widget-config/widget-preview-wrapper.component.ts","../../context-dashboard/paste-dashboard-action.component.ts","../../context-dashboard/context-dashboard.module.ts","../../context-dashboard/dashboard-action-bar.factory.ts","../../context-dashboard/device-info-dashboard/device-info-dashboard.component.ts","../../context-dashboard/device-info-dashboard/device-info-dashboard.module.ts","../../context-dashboard/device-management-home-dashboard/device-management-home-dashboard.component.ts","../../context-dashboard/device-management-home-dashboard/device-management-home-dashboard.module.ts","../../context-dashboard/widget-config/widget-config-appearance.component.ts","../../context-dashboard/widget-config/widget-config-general.component.ts","../../context-dashboard/widget-config/widget-asset-selector.component.ts","../../context-dashboard/new-dashboard.guard.ts","../../context-dashboard/widget-config/global-context-section.component.ts","../../context-dashboard/widget-config/widget-config-feedback.component.ts","../../context-dashboard/widget-config/asset-property-mappings.service.ts","../../context-dashboard/widget-config/asset-property-mappings.component.ts","../../context-dashboard/widget-config/asset-property-mappings.utils.ts"],"sourcesContent":[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sources":["../../context-dashboard/add-dashboard.component.ts","../../context-dashboard/add-dashboard.factory.ts","../../context-dashboard/context-dashboard.model.ts","../../context-dashboard/context-dashboard.service.ts","../../context-dashboard/dashboard-detail.service.ts","../../context-dashboard/dashboard-detail.component.ts","../../context-dashboard/memento/dashboard-originator.service.ts","../../context-dashboard/memento/dashboard-caretaker.service.ts","../../context-dashboard/memento/dashboard-edit-mode.service.ts","../../context-dashboard/widget.service.ts","../../context-dashboard/context-dashboard.component.ts","../../context-dashboard/widget-config/appearance-settings.component.ts","../../context-dashboard/type-dashboard-info/type-dashboard-info.component.ts","../../context-dashboard/widget-config/asset-property-mappings.model.ts","../../context-dashboard/widget-config.model.ts","../../context-dashboard/widget-config-hook/widget-config-hook.model.ts","../../context-dashboard/widget-config-hook/widget-config-hook.service.ts","../../context-dashboard/widget-config.service.ts","../../context-dashboard/widget-config/widget-config-root.component.ts","../../context-dashboard/widget-config.component.ts","../../context-dashboard/widget-config/widget-preview.component.ts","../../context-dashboard/widget-config/widget-config-section.component.ts","../../context-dashboard/widget-config/widget-preview-wrapper.component.ts","../../context-dashboard/paste-dashboard-action.component.ts","../../context-dashboard/context-dashboard.module.ts","../../context-dashboard/dashboard-action-bar.factory.ts","../../context-dashboard/device-info-dashboard/device-info-dashboard.component.ts","../../context-dashboard/device-info-dashboard/device-info-dashboard.module.ts","../../context-dashboard/device-management-home-dashboard/device-management-home-dashboard.component.ts","../../context-dashboard/device-management-home-dashboard/device-management-home-dashboard.module.ts","../../context-dashboard/widget-config/widget-config-appearance.component.ts","../../context-dashboard/widget-config/widget-config-general.component.ts","../../context-dashboard/widget-config/widget-asset-selector.component.ts","../../context-dashboard/new-dashboard.guard.ts","../../context-dashboard/widget-config/global-context-section.component.ts","../../context-dashboard/widget-config/widget-config-feedback.component.ts","../../context-dashboard/widget-config/asset-property-mappings.service.ts","../../context-dashboard/widget-config/asset-property-mappings.component.ts","../../context-dashboard/widget-config/asset-property-mappings.utils.ts"],"sourcesContent":[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],"names":[],"mappings":"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"}
@@ -0,0 +1,10 @@
1
+ import * as i0 from '@angular/core';
2
+
3
+ declare class DataPrepPreviewModule {
4
+ static ɵfac: i0.ɵɵFactoryDeclaration<DataPrepPreviewModule, never>;
5
+ static ɵmod: i0.ɵɵNgModuleDeclaration<DataPrepPreviewModule, never, never, never>;
6
+ static ɵinj: i0.ɵɵInjectorDeclaration<DataPrepPreviewModule>;
7
+ }
8
+
9
+ export { DataPrepPreviewModule };
10
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sources":["../../data-preparation/data-prep.module.ts"],"sourcesContent":[null],"names":[],"mappings":";;AAIA,cAAA,qBAAA;;;;AAGqC;;;;"}
@@ -529,8 +529,9 @@ declare class WidgetDatapointsSelectorComponent implements OnInit {
529
529
  * Defaults to `false`.
530
530
  */
531
531
  useAdvancedChartOptions: boolean;
532
- datapoints: KPIDetails[];
533
532
  differentUnits: boolean;
533
+ readonly datapoints: i0.WritableSignal<KPIDetails[]>;
534
+ readonly activeDatapointsCount: i0.Signal<number>;
534
535
  differentUnitsMessageError: "Selected data points have different units.";
535
536
  readonly widgetConfigService: WidgetConfigService;
536
537
  private readonly widgetComponent;
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sources":["../../datapoint-selector/datapoint-attributes-form/datapoint-attributes.model.ts","../../datapoint-selector/datapoint-selection.model.ts","../../datapoint-selector/datapoint-library.service.ts","../../datapoint-selector/datapoint-selector.component.ts","../../datapoint-selector/datapoint-selector-modal/datapoint-selector-modal.component.ts","../../datapoint-selector/datapoint-selector-list-item/datapoint-selector-list-item.component.ts","../../datapoint-selector/datapoint-selector-modal/datapoint-selector-modal.model.ts","../../datapoint-selector/datapoint-selector.service.ts","../../datapoint-selector/datapoint-selection-list/datapoint-selection-list.component.ts","../../datapoint-selector/datapoint-template-popover/datapoint-template-popover.component.ts","../../datapoint-selector/pipes/includes-datapoint.pipe.ts","../../datapoint-selector/pipes/datapoint-label.pipe.ts","../../datapoint-selector/pipes/filter-datapoints.pipe.ts","../../datapoint-selector/datapoint-attributes-form/datapoint-attributes-form-validation.service.ts","../../datapoint-selector/datapoint-attributes-form/datapoint-attributes-form.component.ts","../../datapoint-selector/datapoint-selector.module.ts","../../datapoint-selector/widget-datapoints-selector.component.ts"],"sourcesContent":[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;AAEA;;;;;;;;;;AAMM;AAEN;;;;;;;;;;;;;;;;;;;AASM;AAEN;;;;;;;;;;;;;;;;;;;AASM;;ACrBN;;;;AAKE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACD;AAEK;AACJ;AACD;;;AAIC;;AAED;;;;;;;;;;;;AAaA;AAEK;;ACzCN;AAII;AACA;AACA;AACA;;AAHQ;;AAoBJ;AAUA;AAQA;AA4CA;AAwBN;;;;AAIG;AACG;AA+BU;;;;;AA4CA;AAsBhB;;;AA0BgB;;;AAqBjB;;ACpPD;AAgEc;;AAlCH;AACA;AACT;AACS;AACA;AACA;AACA;AACA;AACA;AACA;AACT;AACA;;;;;;;;AAIgC;AAEhC;AACA;AACA;AACA;AACA;;AAGA;AACA;;;;;AASoB;AAEpB;AAoBA;AAIA;AAIA;AAIA;AAYA;;;AAgCA;AAKA;AAsCA;AAQA;AAKA;AAIA;AAOA;;;AAkBD;;ACrPD;AA6BI;AACA;;AAvBF;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;;;;AAUU;AAIV;AAIA;;AAUA;AAOA;;;;AAIG;AACH;;;AAOD;;AClCD;;;;;AAKM;AAEN;AAiEc;;AAzBH;AACA;AACA;;AAEA;AACA;AACA;AACA;;;AAGA;AACA;AACC;AACA;AACD;AACA;;;AAIT;AACA;AACA;;;;;;AAEgC;AAEZ;AAgBpB;AAeA;AAIA;AAIA;AAIA;;;;;AAiCA;;AAoCA;AAgBA;AAUA;;;AAKD;;ACnQK;;ACIN;;AAEwB;AAEtB;;;AAcD;;ACkCD;AAoEI;AACA;AACA;AACY;;AAtCd;;AAEG;AACM;AACA;AACA;AACT;;AAEG;;AAEH;;AAEG;AACM;AACA;AACA;AACA;;;AAGT;;;;;AACgC;AAEhC;AAGA;AAGA;AAEU;AACA;;AAIA;AAaV;AAQA;AAUA;AAIA;AAUA;AAYA;;;AAqCA;AAIA;AAMA;AAOA;AASA;;;AAaD;;AC9PD;;;;;;AAWG;;;AAwBF;;ACrCD;;;;AAaC;;ACbD;AAEE;;;AAE0D;;;AAmB3D;;ACvBD;;AAYE;;;AAqBD;;ACvBD;AAEc;AAAQ;AAEpB;AA4BA;;;;;;;;;;;AAyJA;AAOA;AAQA;AAMA;AAOA;;;AAWD;;AC5MD;AAkEc;;;;AA9BH;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;;AAaT;;AAEI;;;AAGJ;;;AAIoB;AAKpB;AAKA;AAMA;AAMA;AAOA;AAeA;AASA;AAIA;AAOA;AAYA;AAYA;AAMA;AAcA;AAQA;;;AAOD;;AC3MD;;;;AA+BuC;;AChCvC;;AAEG;AACH;AAgBE;;AAEG;AACM;AAET;;AAEG;;AAGH;;;AAGG;AACM;AAET;;;;AAIG;AACM;AAET;;AAEG;AACM;AAET;;;;;AAKG;AACM;AAET;;;;;AAKG;AACM;AAET;;;;AAIG;AACM;AAET;;;;;;;AAOG;AACM;;AAGT;AAEA;;AAGA;AACA;AAGA;AACA;AAEA;AA0BA;AAKA;AAWA;AAYA;;;;;;AAMG;;AAgBH;;;;;AAKG;AACH;;;AAgBD;;;"}
1
+ {"version":3,"file":"index.d.ts","sources":["../../datapoint-selector/datapoint-attributes-form/datapoint-attributes.model.ts","../../datapoint-selector/datapoint-selection.model.ts","../../datapoint-selector/datapoint-library.service.ts","../../datapoint-selector/datapoint-selector.component.ts","../../datapoint-selector/datapoint-selector-modal/datapoint-selector-modal.component.ts","../../datapoint-selector/datapoint-selector-list-item/datapoint-selector-list-item.component.ts","../../datapoint-selector/datapoint-selector-modal/datapoint-selector-modal.model.ts","../../datapoint-selector/datapoint-selector.service.ts","../../datapoint-selector/datapoint-selection-list/datapoint-selection-list.component.ts","../../datapoint-selector/datapoint-template-popover/datapoint-template-popover.component.ts","../../datapoint-selector/pipes/includes-datapoint.pipe.ts","../../datapoint-selector/pipes/datapoint-label.pipe.ts","../../datapoint-selector/pipes/filter-datapoints.pipe.ts","../../datapoint-selector/datapoint-attributes-form/datapoint-attributes-form-validation.service.ts","../../datapoint-selector/datapoint-attributes-form/datapoint-attributes-form.component.ts","../../datapoint-selector/datapoint-selector.module.ts","../../datapoint-selector/widget-datapoints-selector.component.ts"],"sourcesContent":[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;AAEA;;;;;;;;;;AAMM;AAEN;;;;;;;;;;;;;;;;;;;AASM;AAEN;;;;;;;;;;;;;;;;;;;AASM;;ACrBN;;;;AAKE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACD;AAEK;AACJ;AACD;;;AAIC;;AAED;;;;;;;;;;;;AAaA;AAEK;;ACzCN;AAII;AACA;AACA;AACA;;AAHQ;;AAoBJ;AAUA;AAQA;AA4CA;AAwBN;;;;AAIG;AACG;AA+BU;;;;;AA4CA;AAsBhB;;;AA0BgB;;;AAqBjB;;ACpPD;AAgEc;;AAlCH;AACA;AACT;AACS;AACA;AACA;AACA;AACA;AACA;AACA;AACT;AACA;;;;;;;;AAIgC;AAEhC;AACA;AACA;AACA;AACA;;AAGA;AACA;;;;;AASoB;AAEpB;AAoBA;AAIA;AAIA;AAIA;AAYA;;;AAgCA;AAKA;AAsCA;AAQA;AAKA;AAIA;AAOA;;;AAkBD;;ACrPD;AA6BI;AACA;;AAvBF;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;;;;AAUU;AAIV;AAIA;;AAUA;AAOA;;;;AAIG;AACH;;;AAOD;;AClCD;;;;;AAKM;AAEN;AAiEc;;AAzBH;AACA;AACA;;AAEA;AACA;AACA;AACA;;;AAGA;AACA;AACC;AACA;AACD;AACA;;;AAIT;AACA;AACA;;;;;;AAEgC;AAEZ;AAgBpB;AAeA;AAIA;AAIA;AAIA;;;;;AAiCA;;AAoCA;AAgBA;AAUA;;;AAKD;;ACnQK;;ACIN;;AAEwB;AAEtB;;;AAcD;;ACkCD;AAoEI;AACA;AACA;AACY;;AAtCd;;AAEG;AACM;AACA;AACA;AACT;;AAEG;;AAEH;;AAEG;AACM;AACA;AACA;AACA;;;AAGT;;;;;AACgC;AAEhC;AAGA;AAGA;AAEU;AACA;;AAIA;AAaV;AAQA;AAUA;AAIA;AAUA;AAYA;;;AAqCA;AAIA;AAMA;AAOA;AASA;;;AAaD;;AC9PD;;;;;;AAWG;;;AAwBF;;ACrCD;;;;AAaC;;ACbD;AAEE;;;AAE0D;;;AAmB3D;;ACvBD;;AAYE;;;AAqBD;;ACvBD;AAEc;AAAQ;AAEpB;AA4BA;;;;;;;;;;;AAyJA;AAOA;AAQA;AAMA;AAOA;;;AAWD;;AC5MD;AAkEc;;;;AA9BH;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;;AAaT;;AAEI;;;AAGJ;;;AAIoB;AAKpB;AAKA;AAMA;AAMA;AAOA;AAeA;AASA;AAIA;AAOA;AAYA;AAYA;AAMA;AAcA;AAQA;;;AAOD;;AC3MD;;;;AA+BuC;;AChCvC;;AAEG;AACH;AAgBE;;AAEG;AACM;AAET;;AAEG;;AAGH;;;AAGG;AACM;AAET;;;;AAIG;AACM;AAET;;AAEG;AACM;AAET;;;;;AAKG;AACM;AAET;;;;;AAKG;AACM;AAET;;;;AAIG;AACM;AAET;;;;;;;AAOG;AACM;AAET;;;AAMA;;AAGA;AACA;AAGA;AACA;AAEA;AA0BA;AAMA;AAWA;AAYA;;;;;;AAMG;;AAgBH;;;;;AAKG;AACH;;;AAgBD;;;"}
package/echart/index.d.ts CHANGED
@@ -69,6 +69,7 @@ type GraphDisplayOptions = {
69
69
  sliderPositionMode?: 'compact' | 'default';
70
70
  smoothLines?: boolean;
71
71
  axisColor?: string;
72
+ showCompactTooltip?: boolean;
72
73
  };
73
74
  declare const CHART_DISPLAY_OPTION_DEFAULTS: Required<Pick<GraphDisplayOptions, 'displayMarkedLine' | 'displayMarkedPoint' | 'mergeMatchingDatapoints' | 'forceMergeDatapoints' | 'setYaxisStartToZero' | 'showLabelAndUnit' | 'showSlider' | 'smoothLines' | 'numberOfDecimalPlaces'>>;
74
75
  type AlarmDetailsExtended = AlarmDetails & {
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sources":["../../echart/models/datapoints-graph-widget.model.ts","../../echart/models/chart.model.ts","../../echart/models/svg-icons.model.ts","../../echart/charts.component.ts","../../echart/services/chart-alarms.service.ts","../../echart/services/chart-events.service.ts","../../echart/services/chart-helpers.service.ts","../../echart/chart-alerts/chart-alerts.component.ts","../../echart/select-aggregated-datapoint/select-aggregated-datapoint.component.ts"],"sourcesContent":[null,null,null,null,null,null,null,null,null],"names":[],"mappings":";;;;;;;;;;;;;;;AAoBM;;;;AAKA;AACJ;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;;;;;;;;AASA;;AAEA;AACA;AACA;AACA;AACA;;;AAGA;;;;;;;;;;AAWI;;;;;;;;;;AAUJ;;;;AAKF;AAyBM;;AAEJ;AACA;;AAGI;;;AAIN;;AAEG;;AAGG;AAIN;AACE;AACA;AACD;AAED;AACM;;AAEL;AAED;;;;AAIM;;;;;;;AAQL;AAED;;;;;AAUE;;;;;AAGD;;AAGC;;AAEA;;AAEE;;AAEF;;;AACD;;;;;;;AAQC;AACA;AACD;AAEK;AACA;AAEA;AAEA;AAEN;;;;AAKA;;;;;;;;;;;;;AAcM;AACA;AAEA;;;;AAKA;;;;;;;;;;;;AAaL;AAED;;;;;;;;AAUE;AACA;AACD;;AChPD;;;;;;AAMG;AACH;AACE;;;;AAIA;;;AACD;;;AAIA;;;AAIA;AAEK;AACA;AACJ;AACE;AACD;AACF;;AAGC;AACA;AACD;AAED;AACE;AACA;AACA;AACD;;AC3CD;AACE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACD;AAED;;;;;;;;;;;AC8DA;AA4BE;;AAEA;;;;;;;;AAQA;;;;;;AAMK;AACK;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEV;;;;;AAgBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;AAoEA;;;;;AA4JE;;;;;AAGD;AAuDD;AAOA;AAIA;AAwBA;AA6BA;AAWA;;;;;;AAMG;AACH;AAoCA;;;;;AAKG;AACH;AAgCA;AAeA;;;;;AAKG;AACH;AAYA;;;AAGG;AACH;AAaA;AA0BA;;AA2BA;AAeA;AA0BA;;AA8DA;;;AAuNA;AAyEA;AAwDA;AAmBA;AAWA;AAYA;;;AA6BD;;ACvrCD;AAEc;AAAQ;AAEpB;;;;;AAKG;AACG;;;AAqCP;;AC/CD;AAEc;AAAQ;AAEpB;;;;;AAKG;AACG;;;AAuBP;;AChCD;AAEE;;;;AAIG;;;;;;;;;;;AAcH;AAcA;;;AAGD;;AC9BD;;AAQmC;AAEjC;;;;AAQD;;ACVD;;AAqBW;AACC;AAEV;;AAGA;;;AAiBA;;;AAgBD;;;"}
1
+ {"version":3,"file":"index.d.ts","sources":["../../echart/models/datapoints-graph-widget.model.ts","../../echart/models/chart.model.ts","../../echart/models/svg-icons.model.ts","../../echart/charts.component.ts","../../echart/services/chart-alarms.service.ts","../../echart/services/chart-events.service.ts","../../echart/services/chart-helpers.service.ts","../../echart/chart-alerts/chart-alerts.component.ts","../../echart/select-aggregated-datapoint/select-aggregated-datapoint.component.ts"],"sourcesContent":[null,null,null,null,null,null,null,null,null],"names":[],"mappings":";;;;;;;;;;;;;;;AAoBM;;;;AAKA;AACJ;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;;;;;;;;AASA;;AAEA;AACA;AACA;AACA;AACA;;;AAGA;;;;;;;;;;AAWI;;;;;;;;;;AAUJ;;;;;AAMF;AAyBM;;AAEJ;AACA;;AAGI;;;AAIN;;AAEG;;AAGG;AAIN;AACE;AACA;AACD;AAED;AACM;;AAEL;AAED;;;;AAIM;;;;;;;AAQL;AAED;;;;;AAUE;;;;;AAGD;;AAGC;;AAEA;;AAEE;;AAEF;;;AACD;;;;;;;AAQC;AACA;AACD;AAEK;AACA;AAEA;AAEA;AAEN;;;;AAKA;;;;;;;;;;;;;AAcM;AACA;AAEA;;;;AAKA;;;;;;;;;;;;AAaL;AAED;;;;;;;;AAUE;AACA;AACD;;ACjPD;;;;;;AAMG;AACH;AACE;;;;AAIA;;;AACD;;;AAIA;;;AAIA;AAEK;AACA;AACJ;AACE;AACD;AACF;;AAGC;AACA;AACD;AAED;AACE;AACA;AACA;AACD;;AC3CD;AACE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACD;AAED;;;;;;;;;;;AC8DA;AA4BE;;AAEA;;;;;;;;AAQA;;;;;;AAMK;AACK;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEV;;;;;AAgBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;AAoEA;;;;;AA4JE;;;;;AAGD;AAuDD;AAOA;AAIA;AAwBA;AA6BA;AAWA;;;;;;AAMG;AACH;AAoCA;;;;;AAKG;AACH;AAgCA;AAeA;;;;;AAKG;AACH;AAYA;;;AAGG;AACH;AAaA;AA0BA;;AA2BA;AAeA;AA0BA;;AA8DA;;;AAuNA;AAyEA;AAwDA;AAmBA;AAWA;AAYA;;;AA6BD;;ACvrCD;AAEc;AAAQ;AAEpB;;;;;AAKG;AACG;;;AAqCP;;AC/CD;AAEc;AAAQ;AAEpB;;;;;AAKG;AACG;;;AAuBP;;AChCD;AAEE;;;;AAIG;;;;;;;;;;;AAcH;AAcA;;;AAGD;;AC9BD;;AAQmC;AAEjC;;;;AAQD;;ACVD;;AAqBW;AACC;AAEV;;AAGA;;;AAiBA;;;AAgBD;;;"}
@@ -63,6 +63,7 @@ type GraphDisplayOptions = {
63
63
  sliderPositionMode?: 'compact' | 'default';
64
64
  smoothLines?: boolean;
65
65
  axisColor?: string;
66
+ showCompactTooltip?: boolean;
66
67
  };
67
68
  declare const CHART_DISPLAY_OPTION_DEFAULTS: Required<Pick<GraphDisplayOptions, 'displayMarkedLine' | 'displayMarkedPoint' | 'mergeMatchingDatapoints' | 'forceMergeDatapoints' | 'setYaxisStartToZero' | 'showLabelAndUnit' | 'showSlider' | 'smoothLines' | 'numberOfDecimalPlaces'>>;
68
69
  type AlarmDetailsExtended = AlarmDetails & {
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sources":["../../../echart/models/datapoints-graph-widget.model.ts","../../../echart/models/chart.model.ts","../../../echart/models/svg-icons.model.ts"],"sourcesContent":[null,null,null],"names":[],"mappings":";;;;;;;;;AAoBM;;;;AAKA;AACJ;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;;;;;;;;AASA;;AAEA;AACA;AACA;AACA;AACA;;;AAGA;;;;;;;;;;AAWI;;;;;;;;;;AAUJ;;;;AAKF;AAyBM;;AAEJ;AACA;;AAGI;;;AAIN;;AAEG;;AAGG;AAIN;AACE;AACA;AACD;AAED;AACM;;AAEL;AAED;;;;AAIM;;;;;;;AAQL;AAED;;;;;AAUE;;;;;AAGD;;AAGC;;AAEA;;AAEE;;AAEF;;;AACD;;;;;;;AAQC;AACA;AACD;AAEK;AACA;AAEA;AAEA;AAEN;;;;AAKA;;;;;;;;;;;;;AAcM;AACA;AAEA;;;;AAKA;;;;;;;;;;;;AAaL;AAED;;;;;;;;AAUE;AACA;AACD;;AChPD;;;;;;AAMG;AACH;AACE;;;;AAIA;;;AACD;;;AAIA;;;AAIA;AAEK;AACA;AACJ;AACE;AACD;AACF;;AAGC;AACA;AACD;AAED;AACE;AACA;AACA;AACD;;AC3CD;AACE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACD;AAED;;;;;;;;;;;;"}
1
+ {"version":3,"file":"index.d.ts","sources":["../../../echart/models/datapoints-graph-widget.model.ts","../../../echart/models/chart.model.ts","../../../echart/models/svg-icons.model.ts"],"sourcesContent":[null,null,null],"names":[],"mappings":";;;;;;;;;AAoBM;;;;AAKA;AACJ;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;;;;;;;;AASA;;AAEA;AACA;AACA;AACA;AACA;;;AAGA;;;;;;;;;;AAWI;;;;;;;;;;AAUJ;;;;;AAMF;AAyBM;;AAEJ;AACA;;AAGI;;;AAIN;;AAEG;;AAGG;AAIN;AACE;AACA;AACD;AAED;AACM;;AAEL;AAED;;;;AAIM;;;;;;;AAQL;AAED;;;;;AAUE;;;;;AAGD;;AAGC;;AAEA;;AAEE;;AAEF;;;AACD;;;;;;;AAQC;AACA;AACD;AAEK;AACA;AAEA;AAEA;AAEN;;;;AAKA;;;;;;;;;;;;;AAcM;AACA;AAEA;;;;AAKA;;;;;;;;;;;;AAaL;AAED;;;;;;;;AAUE;AACA;AACD;;ACjPD;;;;;;AAMG;AACH;AACE;;;;AAIA;;;AACD;;;AAIA;;;AAIA;AAEK;AACA;AACJ;AACE;AACD;AACF;;AAGC;AACA;AACD;AAED;AACE;AACA;AACA;AACD;;AC3CD;AACE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACD;AAED;;;;;;;;;;;;"}
@@ -889,6 +889,16 @@ class AgentChatComponent {
889
889
  console.warn('Received finish reason "stop" but assistant message content is empty. This may indicate an issue with the AI service or agent configuration.', currentAssistantMsg);
890
890
  }
891
891
  }
892
+ else if (updatedAssistantMsg.finishReason === 'length') {
893
+ currentAssistantMsg.usage = updatedAssistantMsg.usage;
894
+ this.onMessagesChange.emit(this.messages());
895
+ this.onMessageFinish.emit(currentAssistantMsg);
896
+ const maxOutputTokens = this.agentDefinition?.definition.agent.maxOutputTokens;
897
+ const message = maxOutputTokens
898
+ ? this.translateService.instant(gettext('The response was truncated because the maximum output tokens limit ({{ maxOutputTokens }}) configured by this application for a single assistant response was reached.'), { maxOutputTokens })
899
+ : this.translateService.instant(gettext('The response was truncated because the maximum output tokens limit configured by this application for a single assistant response was reached.'));
900
+ this.agentRequestError.set(message);
901
+ }
892
902
  else if (updatedAssistantMsg.finishReason === 'error') {
893
903
  if (currentAssistantMsg.content.length === 0) {
894
904
  // Should be impossible, but adding this as a debugging aid, as it was seen once by a user
@@ -1001,7 +1011,7 @@ class AgentChatComponent {
1001
1011
  }
1002
1012
  }
1003
1013
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.19", ngImport: i0, type: AgentChatComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
1004
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.19", type: AgentChatComponent, isStandalone: true, selector: "c8y-agent-chat", inputs: { agent: { classPropertyName: "agent", publicName: "agent", isSignal: true, isRequired: true, transformFunction: null }, suggestions: { classPropertyName: "suggestions", publicName: "suggestions", isSignal: true, isRequired: false, transformFunction: null }, chatConfig: { classPropertyName: "chatConfig", publicName: "chatConfig", isSignal: true, isRequired: false, transformFunction: null }, welcomeTemplate: { classPropertyName: "welcomeTemplate", publicName: "welcomeTemplate", isSignal: true, isRequired: false, transformFunction: null }, autoCreateAgents: { classPropertyName: "autoCreateAgents", publicName: "autoCreateAgents", isSignal: true, isRequired: false, transformFunction: null }, variables: { classPropertyName: "variables", publicName: "variables", isSignal: true, isRequired: false, transformFunction: null }, assistantMessageComponent: { classPropertyName: "assistantMessageComponent", publicName: "assistantMessageComponent", isSignal: true, isRequired: false, transformFunction: null }, assistantMessageDisplayConfig: { classPropertyName: "assistantMessageDisplayConfig", publicName: "assistantMessageDisplayConfig", isSignal: true, isRequired: false, transformFunction: null }, preprocessAgentMessage: { classPropertyName: "preprocessAgentMessage", publicName: "preprocessAgentMessage", isSignal: true, isRequired: false, transformFunction: null }, pruneMessagesForAgent: { classPropertyName: "pruneMessagesForAgent", publicName: "pruneMessagesForAgent", isSignal: true, isRequired: false, transformFunction: null }, skipHealthCheck: { classPropertyName: "skipHealthCheck", publicName: "skipHealthCheck", isSignal: true, isRequired: false, transformFunction: null }, initialChatHistory: { classPropertyName: "initialChatHistory", publicName: "initialChatHistory", isSignal: true, isRequired: false, transformFunction: null }, groundingContextProvider: { classPropertyName: "groundingContextProvider", publicName: "groundingContextProvider", isSignal: true, isRequired: false, transformFunction: null }, userAnalyticsContext: { classPropertyName: "userAnalyticsContext", publicName: "userAnalyticsContext", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { onMessageFinish: "onMessageFinish", onToolResult: "onToolResult", onFeedback: "onFeedback", onMessagesChange: "onMessagesChange" }, viewQueries: [{ propertyName: "assistantMessageComponents", predicate: AiChatAssistantMessageComponent, descendants: true, isSignal: true }], usesOnChanges: true, ngImport: i0, template: "@let agentHealthErrorMsg = _agentHealthError();\n@if (agentHealthErrorMsg) {\n @if (isLoadingAiResponse()) {\n <c8y-loading class=\"m-auto\"></c8y-loading>\n } @else {\n <c8y-ui-empty-state\n class=\"m-auto\"\n [icon]=\"'settings'\"\n [title]=\"'AI agent is not available.' | translate\"\n >\n <span>{{ agentHealthErrorMsg }}</span>\n\n @if (canCreate) {\n <div class=\"text-center m-t-16 m-b-16\">\n <button\n class=\"btn btn-primary\"\n (click)=\"createAgent()\"\n >\n {{ 'Create agent' | translate }}\n </button>\n </div>\n } @else {\n <p\n class=\"text-pre-wrap m-t-8\"\n data-cy=\"agent-health-detailed-messages\"\n >\n <small>{{ agentHealthDetailedMessages() }}</small>\n </p>\n }\n\n <p c8y-guide-docs>\n <small\n translate\n ngNonBindable\n >\n Find out more in the\n <a c8y-guide-href=\"/docs/ai\">user documentation</a>.\n </small>\n </p>\n </c8y-ui-empty-state>\n }\n}\n\n@if (!agentHealthErrorMsg) {\n <c8y-ai-chat\n (onMessage)=\"sendMessage($event)\"\n [isLoading]=\"isLoadingAiResponse()\"\n (onCancel)=\"cancel()\"\n [config]=\"chatConfig() ?? {}\"\n [prompt]=\"prompt\"\n [suggestionsTemplate]=\"suggestionsRef\"\n [welcomeTemplate]=\"welcomeTemplate()\"\n [cumulativeUsage]=\"cumulativeUsage()\"\n >\n @let messages$ = messages();\n @for (message of messages$; track $index; let i = $index) {\n <c8y-ai-chat-message [message]=\"message\">\n @if (message.role !== 'user' && model) {\n <!-- Visually hidden label included when users copy-paste from the chat, e.g. to report issues. It's quite helpful to know the model. -->\n <span\n class=\"hidden-copy-label\"\n aria-hidden=\"true\"\n >\n {{ `(Using model: ${model})` }}</span\n >\n }\n\n @if (message.role === 'user') {\n <div\n class=\"message-content\"\n data-cy=\"user-message-content\"\n [innerHTML]=\"message.content | markdownToHtml | async\"\n ></div>\n } @else if (\n message.role === 'assistant' && isLoadingAiResponse() && i === messages$.length - 1\n ) {\n <div>\n <!-- Last assistant message uses reactive computed context -->\n <ng-container\n [ngComponentOutlet]=\"assistantMessageComponent()\"\n [ngComponentOutletInputs]=\"{ assistantMessageContext: lastAssistantMessageContext() }\"\n ></ng-container>\n </div>\n } @else {\n <ng-container\n [ngComponentOutlet]=\"assistantMessageComponent()\"\n [ngComponentOutletInputs]=\"{\n assistantMessageContext: {\n message: message,\n config: assistantMessageDisplayConfig(),\n isMessageLoading: isLoadingAiResponse() && i === messages$.length - 1,\n messageDisplayIndex: messages$.length - 1 - i\n }\n }\"\n ></ng-container>\n }\n\n @let isLastMessage = i === messages$.length - 1;\n\n @if (message.role === 'user') {\n <c8y-ai-chat-message-action\n icon=\"pencil\"\n [tooltip]=\"'Edit and resend this message' | translate\"\n [disabled]=\"isLoadingAiResponse()\"\n (click)=\"reprompt(message)\"\n ></c8y-ai-chat-message-action>\n }\n\n @if (\n message.role === 'assistant' &&\n i > 0 &&\n chatConfig()?.showUsagePerMessage &&\n message.usage\n ) {\n <c8y-ai-chat-message-action [custom]=\"true\">\n <span\n class=\"tag tag--info m-l-auto\"\n [tooltip]=\"\n 'Input tokens: {{ input }} \\nOutput tokens: {{ output }}'\n | translate\n : {\n input: message.usage.inputTokens || 0 | c8yNumber: 'floor' : '1.0-0',\n output: message.usage.outputTokens || 0 | c8yNumber: 'floor' : '1.0-0'\n }\n \"\n >\n {{ 'Tokens used: {{total}}' | translate: { total: message.usage.totalTokens || 0 |\n c8yNumber: 'floor' : '1.0-0' } }}\n </span>\n </c8y-ai-chat-message-action>\n }\n\n @if (message.role === 'assistant' && i > 0 && !isLoadingAiResponse()) {\n <c8y-ai-chat-message-action\n icon=\"thumbs-up\"\n [tooltip]=\"'This is useful' | translate\"\n [disabled]=\"isLoadingAiResponse()\"\n (click)=\"rate(message, true)\"\n ></c8y-ai-chat-message-action>\n }\n\n @if (message.role === 'assistant' && i > 0 && !isLoadingAiResponse()) {\n <c8y-ai-chat-message-action\n icon=\"thumbs-down\"\n [tooltip]=\"'This is not useful' | translate\"\n [disabled]=\"isLoadingAiResponse()\"\n (click)=\"rate(message, false)\"\n ></c8y-ai-chat-message-action>\n }\n\n @if (\n message.role === 'assistant' &&\n !isLoadingAiResponse() &&\n chatConfig()?.showDeleteAction &&\n isLastMessage\n ) {\n <c8y-ai-chat-message-action\n icon=\"delete-bin\"\n [tooltip]=\"'Delete last exchange' | translate\"\n [disabled]=\"isLoadingAiResponse()\"\n (click)=\"deleteLastExchange()\"\n ></c8y-ai-chat-message-action>\n }\n\n <!-- Only allow regenerating the last message, otherwise we could be deleting a lot of useful message history -->\n @if (message.role === 'assistant' && i > 0 && isLastMessage && !isLoadingAiResponse()) {\n <c8y-ai-chat-message-action\n icon=\"refresh\"\n [tooltip]=\"'Regenerate this response' | translate\"\n [disabled]=\"isLoadingAiResponse()\"\n (click)=\"reload(message)\"\n ></c8y-ai-chat-message-action>\n }\n </c8y-ai-chat-message>\n }\n\n @let agentErrorMsg = agentRequestError();\n @if (agentErrorMsg) {\n <c8y-ai-chat-message [message]=\"{ role: 'assistant', content: agentErrorMsg }\">\n <div\n class=\"alert alert-danger d-flex a-i-center gap-8\"\n role=\"alert\"\n >\n <i\n class=\"c8y-icon c8y-icon-warning text-danger\"\n aria-hidden=\"true\"\n ></i>\n <!-- Since errors come from the backend the only translation is for the fallback error message supplied by the UI. -->\n <div class=\"flex-grow text-pre-wrap\">{{ agentErrorMsg | translate }}</div>\n </div>\n </c8y-ai-chat-message>\n }\n\n <ng-template #suggestionsRef>\n @if (!isLoadingAiResponse()) {\n <!-- As soon as we have any suggestions (even empty) these take priority over what we restored from history -->\n @let activeSuggestions = suggestions() === undefined ? _restoredSuggestions : suggestions();\n @for (suggestion of activeSuggestions; track $index) {\n <c8y-ai-chat-suggestion\n [icon]=\"suggestion.icon || 'c8y-bulb'\"\n [useAiButtons]=\"true\"\n [prompt]=\"suggestion.prompt\"\n [label]=\"suggestion.label ?? suggestion.prompt\"\n (suggestionClicked)=\"sendMessage($event)\"\n [disabled]=\"isLoadingAiResponse()\"\n ></c8y-ai-chat-suggestion>\n }\n }\n </ng-template>\n </c8y-ai-chat>\n}\n", styles: ["@keyframes fadeIn{0%{opacity:0}to{opacity:1}}@keyframes fadeOut{0%{opacity:1}to{opacity:0}}.fade-in-out{animation:fadeIn .2s ease-in}.fade-in-out.ng-leave-active{animation:fadeOut .2s ease-out}.hidden-copy-label{display:block;font-size:0;line-height:0;-webkit-user-select:text;user-select:text}\n"], dependencies: [{ kind: "component", type: AiChatComponent, selector: "c8y-ai-chat", inputs: ["isLoading", "disabled", "prompt", "suggestionsTemplate", "welcomeTemplate", "cumulativeUsage", "config"], outputs: ["onMessage", "onCancel"] }, { kind: "component", type: AiChatSuggestionComponent, selector: "c8y-ai-chat-suggestion", inputs: ["label", "prompt", "icon", "useAiButtons", "disabled"], outputs: ["suggestionClicked"] }, { kind: "component", type: AiChatMessageComponent, selector: "c8y-ai-chat-message", inputs: ["role", "message"] }, { kind: "component", type: AiChatMessageActionComponent, selector: "c8y-ai-chat-message-action", inputs: ["custom", "disabled", "tooltip", "icon"], outputs: ["actionClicked"] }, { kind: "component", type: LoadingComponent, selector: "c8y-loading", inputs: ["layout", "progress", "message"] }, { kind: "directive", type: NgComponentOutlet, selector: "[ngComponentOutlet]", inputs: ["ngComponentOutlet", "ngComponentOutletInputs", "ngComponentOutletInjector", "ngComponentOutletEnvironmentInjector", "ngComponentOutletContent", "ngComponentOutletNgModule", "ngComponentOutletNgModuleFactory"], exportAs: ["ngComponentOutlet"] }, { kind: "component", type: EmptyStateComponent, selector: "c8y-ui-empty-state", inputs: ["icon", "title", "subtitle", "horizontal"] }, { kind: "ngmodule", type: CollapseModule }, { kind: "directive", type: C8yTranslateDirective, selector: "[translate],[ngx-translate]" }, { kind: "component", type: GuideDocsComponent, selector: "[c8y-guide-docs]" }, { kind: "directive", type: GuideHrefDirective, selector: "[c8y-guide-href]", inputs: ["c8y-guide-href"] }, { kind: "ngmodule", type: TooltipModule }, { kind: "directive", type: i1.TooltipDirective, selector: "[tooltip], [tooltipHtml]", inputs: ["adaptivePosition", "tooltip", "placement", "triggers", "container", "containerClass", "boundariesElement", "isOpen", "isDisabled", "delay", "tooltipHtml", "tooltipPlacement", "tooltipIsOpen", "tooltipEnable", "tooltipAppendToBody", "tooltipAnimation", "tooltipClass", "tooltipContext", "tooltipPopupDelay", "tooltipFadeDuration", "tooltipTrigger"], outputs: ["tooltipChange", "onShown", "onHidden", "tooltipStateChanged"], exportAs: ["bs-tooltip"] }, { kind: "pipe", type: MarkdownToHtmlPipe, name: "markdownToHtml" }, { kind: "pipe", type: AsyncPipe, name: "async" }, { kind: "pipe", type: C8yTranslatePipe, name: "translate" }, { kind: "pipe", type: NumberPipe, name: "c8yNumber" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
1014
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.19", type: AgentChatComponent, isStandalone: true, selector: "c8y-agent-chat", inputs: { agent: { classPropertyName: "agent", publicName: "agent", isSignal: true, isRequired: true, transformFunction: null }, suggestions: { classPropertyName: "suggestions", publicName: "suggestions", isSignal: true, isRequired: false, transformFunction: null }, chatConfig: { classPropertyName: "chatConfig", publicName: "chatConfig", isSignal: true, isRequired: false, transformFunction: null }, welcomeTemplate: { classPropertyName: "welcomeTemplate", publicName: "welcomeTemplate", isSignal: true, isRequired: false, transformFunction: null }, autoCreateAgents: { classPropertyName: "autoCreateAgents", publicName: "autoCreateAgents", isSignal: true, isRequired: false, transformFunction: null }, variables: { classPropertyName: "variables", publicName: "variables", isSignal: true, isRequired: false, transformFunction: null }, assistantMessageComponent: { classPropertyName: "assistantMessageComponent", publicName: "assistantMessageComponent", isSignal: true, isRequired: false, transformFunction: null }, assistantMessageDisplayConfig: { classPropertyName: "assistantMessageDisplayConfig", publicName: "assistantMessageDisplayConfig", isSignal: true, isRequired: false, transformFunction: null }, preprocessAgentMessage: { classPropertyName: "preprocessAgentMessage", publicName: "preprocessAgentMessage", isSignal: true, isRequired: false, transformFunction: null }, pruneMessagesForAgent: { classPropertyName: "pruneMessagesForAgent", publicName: "pruneMessagesForAgent", isSignal: true, isRequired: false, transformFunction: null }, skipHealthCheck: { classPropertyName: "skipHealthCheck", publicName: "skipHealthCheck", isSignal: true, isRequired: false, transformFunction: null }, initialChatHistory: { classPropertyName: "initialChatHistory", publicName: "initialChatHistory", isSignal: true, isRequired: false, transformFunction: null }, groundingContextProvider: { classPropertyName: "groundingContextProvider", publicName: "groundingContextProvider", isSignal: true, isRequired: false, transformFunction: null }, userAnalyticsContext: { classPropertyName: "userAnalyticsContext", publicName: "userAnalyticsContext", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { onMessageFinish: "onMessageFinish", onToolResult: "onToolResult", onFeedback: "onFeedback", onMessagesChange: "onMessagesChange" }, viewQueries: [{ propertyName: "assistantMessageComponents", predicate: AiChatAssistantMessageComponent, descendants: true, isSignal: true }], usesOnChanges: true, ngImport: i0, template: "@let agentHealthErrorMsg = _agentHealthError();\n@if (agentHealthErrorMsg) {\n @if (isLoadingAiResponse()) {\n <c8y-loading class=\"m-auto\"></c8y-loading>\n } @else {\n <c8y-ui-empty-state\n class=\"m-auto\"\n [icon]=\"'settings'\"\n [title]=\"'AI agent is not available.' | translate\"\n >\n <span>{{ agentHealthErrorMsg }}</span>\n\n @if (canCreate) {\n <div class=\"text-center m-t-16 m-b-16\">\n <button\n class=\"btn btn-primary\"\n (click)=\"createAgent()\"\n >\n {{ 'Create agent' | translate }}\n </button>\n </div>\n } @else {\n <p\n class=\"text-pre-wrap m-t-8\"\n data-cy=\"agent-health-detailed-messages\"\n >\n <small>{{ agentHealthDetailedMessages() }}</small>\n </p>\n }\n\n <p c8y-guide-docs>\n <small\n translate\n ngNonBindable\n >\n Find out more in the\n <a c8y-guide-href=\"/docs/ai\">user documentation</a>.\n </small>\n </p>\n </c8y-ui-empty-state>\n }\n}\n\n@if (!agentHealthErrorMsg) {\n <c8y-ai-chat\n (onMessage)=\"sendMessage($event)\"\n [isLoading]=\"isLoadingAiResponse()\"\n (onCancel)=\"cancel()\"\n [config]=\"chatConfig() ?? {}\"\n [prompt]=\"prompt\"\n [suggestionsTemplate]=\"suggestionsRef\"\n [welcomeTemplate]=\"welcomeTemplate()\"\n [cumulativeUsage]=\"cumulativeUsage()\"\n >\n @let messages$ = messages();\n @for (message of messages$; track $index; let i = $index) {\n <c8y-ai-chat-message [message]=\"message\">\n @if (message.role !== 'user' && model) {\n <!-- Visually hidden label included when users copy-paste from the chat, e.g. to report issues. It's quite helpful to know the model. -->\n <span\n class=\"hidden-copy-label\"\n aria-hidden=\"true\"\n >\n {{ `(Using model: ${model})` }}</span\n >\n }\n\n @if (message.role === 'user') {\n <div\n class=\"message-content\"\n data-cy=\"user-message-content\"\n [innerHTML]=\"message.content | markdownToHtml | async\"\n ></div>\n } @else if (\n message.role === 'assistant' && isLoadingAiResponse() && i === messages$.length - 1\n ) {\n <div>\n <!-- Last assistant message uses reactive computed context -->\n <ng-container\n [ngComponentOutlet]=\"assistantMessageComponent()\"\n [ngComponentOutletInputs]=\"{ assistantMessageContext: lastAssistantMessageContext() }\"\n ></ng-container>\n </div>\n } @else {\n <ng-container\n [ngComponentOutlet]=\"assistantMessageComponent()\"\n [ngComponentOutletInputs]=\"{\n assistantMessageContext: {\n message: message,\n config: assistantMessageDisplayConfig(),\n isMessageLoading: isLoadingAiResponse() && i === messages$.length - 1,\n messageDisplayIndex: messages$.length - 1 - i\n }\n }\"\n ></ng-container>\n }\n\n @let isLastMessage = i === messages$.length - 1;\n\n @if (message.role === 'user') {\n <c8y-ai-chat-message-action\n icon=\"pencil\"\n [tooltip]=\"'Edit and resend this message' | translate\"\n [disabled]=\"isLoadingAiResponse()\"\n (click)=\"reprompt(message)\"\n ></c8y-ai-chat-message-action>\n }\n\n @if (\n message.role === 'assistant' &&\n i > 0 &&\n chatConfig()?.showUsagePerMessage &&\n message.usage\n ) {\n <c8y-ai-chat-message-action [custom]=\"true\">\n <span\n class=\"tag tag--info m-l-auto\"\n [tooltip]=\"\n 'Input tokens: {{ input }} \\nOutput tokens: {{ output }}'\n | translate\n : {\n input: message.usage.inputTokens || 0 | c8yNumber: 'floor' : '1.0-0',\n output: message.usage.outputTokens || 0 | c8yNumber: 'floor' : '1.0-0'\n }\n \"\n >\n {{ 'Tokens used: {{total}}' | translate: { total: message.usage.totalTokens || 0 |\n c8yNumber: 'floor' : '1.0-0' } }}\n </span>\n </c8y-ai-chat-message-action>\n }\n\n @if (message.role === 'assistant' && i > 0 && !isLoadingAiResponse()) {\n <c8y-ai-chat-message-action\n icon=\"thumbs-up\"\n [tooltip]=\"'This is useful' | translate\"\n [disabled]=\"isLoadingAiResponse()\"\n (click)=\"rate(message, true)\"\n ></c8y-ai-chat-message-action>\n }\n\n @if (message.role === 'assistant' && i > 0 && !isLoadingAiResponse()) {\n <c8y-ai-chat-message-action\n icon=\"thumbs-down\"\n [tooltip]=\"'This is not useful' | translate\"\n [disabled]=\"isLoadingAiResponse()\"\n (click)=\"rate(message, false)\"\n ></c8y-ai-chat-message-action>\n }\n\n @if (\n message.role === 'assistant' &&\n !isLoadingAiResponse() &&\n chatConfig()?.showDeleteAction &&\n isLastMessage\n ) {\n <c8y-ai-chat-message-action\n icon=\"delete-bin\"\n [tooltip]=\"'Delete last exchange' | translate\"\n [disabled]=\"isLoadingAiResponse()\"\n (click)=\"deleteLastExchange()\"\n ></c8y-ai-chat-message-action>\n }\n\n <!-- Only allow regenerating the last message, otherwise we could be deleting a lot of useful message history -->\n @if (message.role === 'assistant' && i > 0 && isLastMessage && !isLoadingAiResponse()) {\n <c8y-ai-chat-message-action\n icon=\"refresh\"\n [tooltip]=\"'Regenerate this response' | translate\"\n [disabled]=\"isLoadingAiResponse()\"\n (click)=\"reload(message)\"\n ></c8y-ai-chat-message-action>\n }\n </c8y-ai-chat-message>\n }\n\n @let agentErrorMsg = agentRequestError();\n @if (agentErrorMsg) {\n <c8y-ai-chat-message [message]=\"{ role: 'assistant', content: agentErrorMsg }\">\n <div\n class=\"alert alert-danger d-flex a-i-center gap-8\"\n role=\"alert\"\n >\n <!-- Since errors come from the backend the only translation is for the fallback error message supplied by the UI. -->\n <div class=\"flex-grow text-pre-wrap\">{{ agentErrorMsg | translate }}</div>\n </div>\n </c8y-ai-chat-message>\n }\n\n <ng-template #suggestionsRef>\n @if (!isLoadingAiResponse()) {\n <!-- As soon as we have any suggestions (even empty) these take priority over what we restored from history -->\n @let activeSuggestions = suggestions() === undefined ? _restoredSuggestions : suggestions();\n @for (suggestion of activeSuggestions; track $index) {\n <c8y-ai-chat-suggestion\n [icon]=\"suggestion.icon || 'c8y-bulb'\"\n [useAiButtons]=\"true\"\n [prompt]=\"suggestion.prompt\"\n [label]=\"suggestion.label ?? suggestion.prompt\"\n (suggestionClicked)=\"sendMessage($event)\"\n [disabled]=\"isLoadingAiResponse()\"\n ></c8y-ai-chat-suggestion>\n }\n }\n </ng-template>\n </c8y-ai-chat>\n}\n", styles: ["@keyframes fadeIn{0%{opacity:0}to{opacity:1}}@keyframes fadeOut{0%{opacity:1}to{opacity:0}}.fade-in-out{animation:fadeIn .2s ease-in}.fade-in-out.ng-leave-active{animation:fadeOut .2s ease-out}.hidden-copy-label{display:block;font-size:0;line-height:0;-webkit-user-select:text;user-select:text}\n"], dependencies: [{ kind: "component", type: AiChatComponent, selector: "c8y-ai-chat", inputs: ["isLoading", "disabled", "prompt", "suggestionsTemplate", "welcomeTemplate", "cumulativeUsage", "config"], outputs: ["onMessage", "onCancel"] }, { kind: "component", type: AiChatSuggestionComponent, selector: "c8y-ai-chat-suggestion", inputs: ["label", "prompt", "icon", "useAiButtons", "disabled"], outputs: ["suggestionClicked"] }, { kind: "component", type: AiChatMessageComponent, selector: "c8y-ai-chat-message", inputs: ["role", "message"] }, { kind: "component", type: AiChatMessageActionComponent, selector: "c8y-ai-chat-message-action", inputs: ["custom", "disabled", "tooltip", "icon"], outputs: ["actionClicked"] }, { kind: "component", type: LoadingComponent, selector: "c8y-loading", inputs: ["layout", "progress", "message"] }, { kind: "directive", type: NgComponentOutlet, selector: "[ngComponentOutlet]", inputs: ["ngComponentOutlet", "ngComponentOutletInputs", "ngComponentOutletInjector", "ngComponentOutletEnvironmentInjector", "ngComponentOutletContent", "ngComponentOutletNgModule", "ngComponentOutletNgModuleFactory"], exportAs: ["ngComponentOutlet"] }, { kind: "component", type: EmptyStateComponent, selector: "c8y-ui-empty-state", inputs: ["icon", "title", "subtitle", "horizontal"] }, { kind: "ngmodule", type: CollapseModule }, { kind: "directive", type: C8yTranslateDirective, selector: "[translate],[ngx-translate]" }, { kind: "component", type: GuideDocsComponent, selector: "[c8y-guide-docs]" }, { kind: "directive", type: GuideHrefDirective, selector: "[c8y-guide-href]", inputs: ["c8y-guide-href"] }, { kind: "ngmodule", type: TooltipModule }, { kind: "directive", type: i1.TooltipDirective, selector: "[tooltip], [tooltipHtml]", inputs: ["adaptivePosition", "tooltip", "placement", "triggers", "container", "containerClass", "boundariesElement", "isOpen", "isDisabled", "delay", "tooltipHtml", "tooltipPlacement", "tooltipIsOpen", "tooltipEnable", "tooltipAppendToBody", "tooltipAnimation", "tooltipClass", "tooltipContext", "tooltipPopupDelay", "tooltipFadeDuration", "tooltipTrigger"], outputs: ["tooltipChange", "onShown", "onHidden", "tooltipStateChanged"], exportAs: ["bs-tooltip"] }, { kind: "pipe", type: MarkdownToHtmlPipe, name: "markdownToHtml" }, { kind: "pipe", type: AsyncPipe, name: "async" }, { kind: "pipe", type: C8yTranslatePipe, name: "translate" }, { kind: "pipe", type: NumberPipe, name: "c8yNumber" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
1005
1015
  }
1006
1016
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.19", ngImport: i0, type: AgentChatComponent, decorators: [{
1007
1017
  type: Component,
@@ -1022,7 +1032,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.19", ngImpo
1022
1032
  GuideHrefDirective,
1023
1033
  TooltipModule,
1024
1034
  NumberPipe
1025
- ], template: "@let agentHealthErrorMsg = _agentHealthError();\n@if (agentHealthErrorMsg) {\n @if (isLoadingAiResponse()) {\n <c8y-loading class=\"m-auto\"></c8y-loading>\n } @else {\n <c8y-ui-empty-state\n class=\"m-auto\"\n [icon]=\"'settings'\"\n [title]=\"'AI agent is not available.' | translate\"\n >\n <span>{{ agentHealthErrorMsg }}</span>\n\n @if (canCreate) {\n <div class=\"text-center m-t-16 m-b-16\">\n <button\n class=\"btn btn-primary\"\n (click)=\"createAgent()\"\n >\n {{ 'Create agent' | translate }}\n </button>\n </div>\n } @else {\n <p\n class=\"text-pre-wrap m-t-8\"\n data-cy=\"agent-health-detailed-messages\"\n >\n <small>{{ agentHealthDetailedMessages() }}</small>\n </p>\n }\n\n <p c8y-guide-docs>\n <small\n translate\n ngNonBindable\n >\n Find out more in the\n <a c8y-guide-href=\"/docs/ai\">user documentation</a>.\n </small>\n </p>\n </c8y-ui-empty-state>\n }\n}\n\n@if (!agentHealthErrorMsg) {\n <c8y-ai-chat\n (onMessage)=\"sendMessage($event)\"\n [isLoading]=\"isLoadingAiResponse()\"\n (onCancel)=\"cancel()\"\n [config]=\"chatConfig() ?? {}\"\n [prompt]=\"prompt\"\n [suggestionsTemplate]=\"suggestionsRef\"\n [welcomeTemplate]=\"welcomeTemplate()\"\n [cumulativeUsage]=\"cumulativeUsage()\"\n >\n @let messages$ = messages();\n @for (message of messages$; track $index; let i = $index) {\n <c8y-ai-chat-message [message]=\"message\">\n @if (message.role !== 'user' && model) {\n <!-- Visually hidden label included when users copy-paste from the chat, e.g. to report issues. It's quite helpful to know the model. -->\n <span\n class=\"hidden-copy-label\"\n aria-hidden=\"true\"\n >\n {{ `(Using model: ${model})` }}</span\n >\n }\n\n @if (message.role === 'user') {\n <div\n class=\"message-content\"\n data-cy=\"user-message-content\"\n [innerHTML]=\"message.content | markdownToHtml | async\"\n ></div>\n } @else if (\n message.role === 'assistant' && isLoadingAiResponse() && i === messages$.length - 1\n ) {\n <div>\n <!-- Last assistant message uses reactive computed context -->\n <ng-container\n [ngComponentOutlet]=\"assistantMessageComponent()\"\n [ngComponentOutletInputs]=\"{ assistantMessageContext: lastAssistantMessageContext() }\"\n ></ng-container>\n </div>\n } @else {\n <ng-container\n [ngComponentOutlet]=\"assistantMessageComponent()\"\n [ngComponentOutletInputs]=\"{\n assistantMessageContext: {\n message: message,\n config: assistantMessageDisplayConfig(),\n isMessageLoading: isLoadingAiResponse() && i === messages$.length - 1,\n messageDisplayIndex: messages$.length - 1 - i\n }\n }\"\n ></ng-container>\n }\n\n @let isLastMessage = i === messages$.length - 1;\n\n @if (message.role === 'user') {\n <c8y-ai-chat-message-action\n icon=\"pencil\"\n [tooltip]=\"'Edit and resend this message' | translate\"\n [disabled]=\"isLoadingAiResponse()\"\n (click)=\"reprompt(message)\"\n ></c8y-ai-chat-message-action>\n }\n\n @if (\n message.role === 'assistant' &&\n i > 0 &&\n chatConfig()?.showUsagePerMessage &&\n message.usage\n ) {\n <c8y-ai-chat-message-action [custom]=\"true\">\n <span\n class=\"tag tag--info m-l-auto\"\n [tooltip]=\"\n 'Input tokens: {{ input }} \\nOutput tokens: {{ output }}'\n | translate\n : {\n input: message.usage.inputTokens || 0 | c8yNumber: 'floor' : '1.0-0',\n output: message.usage.outputTokens || 0 | c8yNumber: 'floor' : '1.0-0'\n }\n \"\n >\n {{ 'Tokens used: {{total}}' | translate: { total: message.usage.totalTokens || 0 |\n c8yNumber: 'floor' : '1.0-0' } }}\n </span>\n </c8y-ai-chat-message-action>\n }\n\n @if (message.role === 'assistant' && i > 0 && !isLoadingAiResponse()) {\n <c8y-ai-chat-message-action\n icon=\"thumbs-up\"\n [tooltip]=\"'This is useful' | translate\"\n [disabled]=\"isLoadingAiResponse()\"\n (click)=\"rate(message, true)\"\n ></c8y-ai-chat-message-action>\n }\n\n @if (message.role === 'assistant' && i > 0 && !isLoadingAiResponse()) {\n <c8y-ai-chat-message-action\n icon=\"thumbs-down\"\n [tooltip]=\"'This is not useful' | translate\"\n [disabled]=\"isLoadingAiResponse()\"\n (click)=\"rate(message, false)\"\n ></c8y-ai-chat-message-action>\n }\n\n @if (\n message.role === 'assistant' &&\n !isLoadingAiResponse() &&\n chatConfig()?.showDeleteAction &&\n isLastMessage\n ) {\n <c8y-ai-chat-message-action\n icon=\"delete-bin\"\n [tooltip]=\"'Delete last exchange' | translate\"\n [disabled]=\"isLoadingAiResponse()\"\n (click)=\"deleteLastExchange()\"\n ></c8y-ai-chat-message-action>\n }\n\n <!-- Only allow regenerating the last message, otherwise we could be deleting a lot of useful message history -->\n @if (message.role === 'assistant' && i > 0 && isLastMessage && !isLoadingAiResponse()) {\n <c8y-ai-chat-message-action\n icon=\"refresh\"\n [tooltip]=\"'Regenerate this response' | translate\"\n [disabled]=\"isLoadingAiResponse()\"\n (click)=\"reload(message)\"\n ></c8y-ai-chat-message-action>\n }\n </c8y-ai-chat-message>\n }\n\n @let agentErrorMsg = agentRequestError();\n @if (agentErrorMsg) {\n <c8y-ai-chat-message [message]=\"{ role: 'assistant', content: agentErrorMsg }\">\n <div\n class=\"alert alert-danger d-flex a-i-center gap-8\"\n role=\"alert\"\n >\n <i\n class=\"c8y-icon c8y-icon-warning text-danger\"\n aria-hidden=\"true\"\n ></i>\n <!-- Since errors come from the backend the only translation is for the fallback error message supplied by the UI. -->\n <div class=\"flex-grow text-pre-wrap\">{{ agentErrorMsg | translate }}</div>\n </div>\n </c8y-ai-chat-message>\n }\n\n <ng-template #suggestionsRef>\n @if (!isLoadingAiResponse()) {\n <!-- As soon as we have any suggestions (even empty) these take priority over what we restored from history -->\n @let activeSuggestions = suggestions() === undefined ? _restoredSuggestions : suggestions();\n @for (suggestion of activeSuggestions; track $index) {\n <c8y-ai-chat-suggestion\n [icon]=\"suggestion.icon || 'c8y-bulb'\"\n [useAiButtons]=\"true\"\n [prompt]=\"suggestion.prompt\"\n [label]=\"suggestion.label ?? suggestion.prompt\"\n (suggestionClicked)=\"sendMessage($event)\"\n [disabled]=\"isLoadingAiResponse()\"\n ></c8y-ai-chat-suggestion>\n }\n }\n </ng-template>\n </c8y-ai-chat>\n}\n", styles: ["@keyframes fadeIn{0%{opacity:0}to{opacity:1}}@keyframes fadeOut{0%{opacity:1}to{opacity:0}}.fade-in-out{animation:fadeIn .2s ease-in}.fade-in-out.ng-leave-active{animation:fadeOut .2s ease-out}.hidden-copy-label{display:block;font-size:0;line-height:0;-webkit-user-select:text;user-select:text}\n"] }]
1035
+ ], template: "@let agentHealthErrorMsg = _agentHealthError();\n@if (agentHealthErrorMsg) {\n @if (isLoadingAiResponse()) {\n <c8y-loading class=\"m-auto\"></c8y-loading>\n } @else {\n <c8y-ui-empty-state\n class=\"m-auto\"\n [icon]=\"'settings'\"\n [title]=\"'AI agent is not available.' | translate\"\n >\n <span>{{ agentHealthErrorMsg }}</span>\n\n @if (canCreate) {\n <div class=\"text-center m-t-16 m-b-16\">\n <button\n class=\"btn btn-primary\"\n (click)=\"createAgent()\"\n >\n {{ 'Create agent' | translate }}\n </button>\n </div>\n } @else {\n <p\n class=\"text-pre-wrap m-t-8\"\n data-cy=\"agent-health-detailed-messages\"\n >\n <small>{{ agentHealthDetailedMessages() }}</small>\n </p>\n }\n\n <p c8y-guide-docs>\n <small\n translate\n ngNonBindable\n >\n Find out more in the\n <a c8y-guide-href=\"/docs/ai\">user documentation</a>.\n </small>\n </p>\n </c8y-ui-empty-state>\n }\n}\n\n@if (!agentHealthErrorMsg) {\n <c8y-ai-chat\n (onMessage)=\"sendMessage($event)\"\n [isLoading]=\"isLoadingAiResponse()\"\n (onCancel)=\"cancel()\"\n [config]=\"chatConfig() ?? {}\"\n [prompt]=\"prompt\"\n [suggestionsTemplate]=\"suggestionsRef\"\n [welcomeTemplate]=\"welcomeTemplate()\"\n [cumulativeUsage]=\"cumulativeUsage()\"\n >\n @let messages$ = messages();\n @for (message of messages$; track $index; let i = $index) {\n <c8y-ai-chat-message [message]=\"message\">\n @if (message.role !== 'user' && model) {\n <!-- Visually hidden label included when users copy-paste from the chat, e.g. to report issues. It's quite helpful to know the model. -->\n <span\n class=\"hidden-copy-label\"\n aria-hidden=\"true\"\n >\n {{ `(Using model: ${model})` }}</span\n >\n }\n\n @if (message.role === 'user') {\n <div\n class=\"message-content\"\n data-cy=\"user-message-content\"\n [innerHTML]=\"message.content | markdownToHtml | async\"\n ></div>\n } @else if (\n message.role === 'assistant' && isLoadingAiResponse() && i === messages$.length - 1\n ) {\n <div>\n <!-- Last assistant message uses reactive computed context -->\n <ng-container\n [ngComponentOutlet]=\"assistantMessageComponent()\"\n [ngComponentOutletInputs]=\"{ assistantMessageContext: lastAssistantMessageContext() }\"\n ></ng-container>\n </div>\n } @else {\n <ng-container\n [ngComponentOutlet]=\"assistantMessageComponent()\"\n [ngComponentOutletInputs]=\"{\n assistantMessageContext: {\n message: message,\n config: assistantMessageDisplayConfig(),\n isMessageLoading: isLoadingAiResponse() && i === messages$.length - 1,\n messageDisplayIndex: messages$.length - 1 - i\n }\n }\"\n ></ng-container>\n }\n\n @let isLastMessage = i === messages$.length - 1;\n\n @if (message.role === 'user') {\n <c8y-ai-chat-message-action\n icon=\"pencil\"\n [tooltip]=\"'Edit and resend this message' | translate\"\n [disabled]=\"isLoadingAiResponse()\"\n (click)=\"reprompt(message)\"\n ></c8y-ai-chat-message-action>\n }\n\n @if (\n message.role === 'assistant' &&\n i > 0 &&\n chatConfig()?.showUsagePerMessage &&\n message.usage\n ) {\n <c8y-ai-chat-message-action [custom]=\"true\">\n <span\n class=\"tag tag--info m-l-auto\"\n [tooltip]=\"\n 'Input tokens: {{ input }} \\nOutput tokens: {{ output }}'\n | translate\n : {\n input: message.usage.inputTokens || 0 | c8yNumber: 'floor' : '1.0-0',\n output: message.usage.outputTokens || 0 | c8yNumber: 'floor' : '1.0-0'\n }\n \"\n >\n {{ 'Tokens used: {{total}}' | translate: { total: message.usage.totalTokens || 0 |\n c8yNumber: 'floor' : '1.0-0' } }}\n </span>\n </c8y-ai-chat-message-action>\n }\n\n @if (message.role === 'assistant' && i > 0 && !isLoadingAiResponse()) {\n <c8y-ai-chat-message-action\n icon=\"thumbs-up\"\n [tooltip]=\"'This is useful' | translate\"\n [disabled]=\"isLoadingAiResponse()\"\n (click)=\"rate(message, true)\"\n ></c8y-ai-chat-message-action>\n }\n\n @if (message.role === 'assistant' && i > 0 && !isLoadingAiResponse()) {\n <c8y-ai-chat-message-action\n icon=\"thumbs-down\"\n [tooltip]=\"'This is not useful' | translate\"\n [disabled]=\"isLoadingAiResponse()\"\n (click)=\"rate(message, false)\"\n ></c8y-ai-chat-message-action>\n }\n\n @if (\n message.role === 'assistant' &&\n !isLoadingAiResponse() &&\n chatConfig()?.showDeleteAction &&\n isLastMessage\n ) {\n <c8y-ai-chat-message-action\n icon=\"delete-bin\"\n [tooltip]=\"'Delete last exchange' | translate\"\n [disabled]=\"isLoadingAiResponse()\"\n (click)=\"deleteLastExchange()\"\n ></c8y-ai-chat-message-action>\n }\n\n <!-- Only allow regenerating the last message, otherwise we could be deleting a lot of useful message history -->\n @if (message.role === 'assistant' && i > 0 && isLastMessage && !isLoadingAiResponse()) {\n <c8y-ai-chat-message-action\n icon=\"refresh\"\n [tooltip]=\"'Regenerate this response' | translate\"\n [disabled]=\"isLoadingAiResponse()\"\n (click)=\"reload(message)\"\n ></c8y-ai-chat-message-action>\n }\n </c8y-ai-chat-message>\n }\n\n @let agentErrorMsg = agentRequestError();\n @if (agentErrorMsg) {\n <c8y-ai-chat-message [message]=\"{ role: 'assistant', content: agentErrorMsg }\">\n <div\n class=\"alert alert-danger d-flex a-i-center gap-8\"\n role=\"alert\"\n >\n <!-- Since errors come from the backend the only translation is for the fallback error message supplied by the UI. -->\n <div class=\"flex-grow text-pre-wrap\">{{ agentErrorMsg | translate }}</div>\n </div>\n </c8y-ai-chat-message>\n }\n\n <ng-template #suggestionsRef>\n @if (!isLoadingAiResponse()) {\n <!-- As soon as we have any suggestions (even empty) these take priority over what we restored from history -->\n @let activeSuggestions = suggestions() === undefined ? _restoredSuggestions : suggestions();\n @for (suggestion of activeSuggestions; track $index) {\n <c8y-ai-chat-suggestion\n [icon]=\"suggestion.icon || 'c8y-bulb'\"\n [useAiButtons]=\"true\"\n [prompt]=\"suggestion.prompt\"\n [label]=\"suggestion.label ?? suggestion.prompt\"\n (suggestionClicked)=\"sendMessage($event)\"\n [disabled]=\"isLoadingAiResponse()\"\n ></c8y-ai-chat-suggestion>\n }\n }\n </ng-template>\n </c8y-ai-chat>\n}\n", styles: ["@keyframes fadeIn{0%{opacity:0}to{opacity:1}}@keyframes fadeOut{0%{opacity:1}to{opacity:0}}.fade-in-out{animation:fadeIn .2s ease-in}.fade-in-out.ng-leave-active{animation:fadeOut .2s ease-out}.hidden-copy-label{display:block;font-size:0;line-height:0;-webkit-user-select:text;user-select:text}\n"] }]
1026
1036
  }], propDecorators: { agent: [{ type: i0.Input, args: [{ isSignal: true, alias: "agent", required: true }] }], suggestions: [{ type: i0.Input, args: [{ isSignal: true, alias: "suggestions", required: false }] }], chatConfig: [{ type: i0.Input, args: [{ isSignal: true, alias: "chatConfig", required: false }] }], welcomeTemplate: [{ type: i0.Input, args: [{ isSignal: true, alias: "welcomeTemplate", required: false }] }], autoCreateAgents: [{ type: i0.Input, args: [{ isSignal: true, alias: "autoCreateAgents", required: false }] }], variables: [{ type: i0.Input, args: [{ isSignal: true, alias: "variables", required: false }] }], assistantMessageComponent: [{ type: i0.Input, args: [{ isSignal: true, alias: "assistantMessageComponent", required: false }] }], assistantMessageDisplayConfig: [{ type: i0.Input, args: [{ isSignal: true, alias: "assistantMessageDisplayConfig", required: false }] }], preprocessAgentMessage: [{ type: i0.Input, args: [{ isSignal: true, alias: "preprocessAgentMessage", required: false }] }], pruneMessagesForAgent: [{ type: i0.Input, args: [{ isSignal: true, alias: "pruneMessagesForAgent", required: false }] }], skipHealthCheck: [{ type: i0.Input, args: [{ isSignal: true, alias: "skipHealthCheck", required: false }] }], initialChatHistory: [{ type: i0.Input, args: [{ isSignal: true, alias: "initialChatHistory", required: false }] }], groundingContextProvider: [{ type: i0.Input, args: [{ isSignal: true, alias: "groundingContextProvider", required: false }] }], userAnalyticsContext: [{ type: i0.Input, args: [{ isSignal: true, alias: "userAnalyticsContext", required: false }] }], onMessageFinish: [{ type: i0.Output, args: ["onMessageFinish"] }], onToolResult: [{ type: i0.Output, args: ["onToolResult"] }], onFeedback: [{ type: i0.Output, args: ["onFeedback"] }], onMessagesChange: [{ type: i0.Output, args: ["onMessagesChange"] }], assistantMessageComponents: [{ type: i0.ViewChildren, args: [i0.forwardRef(() => AiChatAssistantMessageComponent), { isSignal: true }] }] } });
1027
1037
 
1028
1038
  class WidgetAiChatSectionComponent {