{"version":3,"file":"c8y-ngx-components-events-events-timeline.mjs","sources":["../../events/events-timeline/events-timeline.component.ts","../../events/events-timeline/events-timeline.component.html","../../events/events-timeline/c8y-ngx-components-events-events-timeline.ts"],"sourcesContent":["import { JsonPipe, KeyValuePipe, NgTemplateOutlet } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, input, TemplateRef } from '@angular/core';\nimport { IEvent, IResultList } from '@c8y/client';\nimport {\n  C8yTranslatePipe,\n  DatePipe,\n  EmptyStateComponent,\n  EventRealtimeService,\n  ForOfDirective,\n  ForOfFilterPipe,\n  HumanizePipe,\n  IconDirective,\n  ListGroupComponent,\n  ListItemBodyComponent,\n  ListItemCollapseComponent,\n  ListItemComponent,\n  ListItemIconComponent,\n  ListItemTimelineComponent,\n  LoadMoreMode\n} from '@c8y/ngx-components';\nimport { EventsService } from '@c8y/ngx-components/events';\nimport { CollapseModule } from 'ngx-bootstrap/collapse';\nimport { TooltipModule } from 'ngx-bootstrap/tooltip';\nimport { pipe } from 'rxjs';\nimport { tap } from 'rxjs/operators';\n\n@Component({\n  selector: 'c8y-events-timeline',\n  templateUrl: 'events-timeline.component.html',\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  imports: [\n    JsonPipe,\n    KeyValuePipe,\n    NgTemplateOutlet,\n    C8yTranslatePipe,\n    DatePipe,\n    EmptyStateComponent,\n    ForOfDirective,\n    HumanizePipe,\n    IconDirective,\n    ListGroupComponent,\n    ListItemBodyComponent,\n    ListItemCollapseComponent,\n    ListItemComponent,\n    ListItemIconComponent,\n    ListItemTimelineComponent,\n    CollapseModule,\n    TooltipModule\n  ],\n  providers: [EventRealtimeService]\n})\nexport class EventsTimelineComponent<B, F> {\n  events = input<IResultList<IEvent>>();\n  sourceId = input.required<string | number>();\n  filterPipe = input<ForOfFilterPipe<IEvent>>(pipe(tap()));\n  bodyTemplate = input<TemplateRef<B>>();\n  footerTemplates = input<Array<TemplateRef<F>>>([]);\n  propertiesToHide = input<string[]>([]);\n  loadMoreMode = input<LoadMoreMode>('auto');\n\n  constructor(\n    public realtime: EventRealtimeService,\n    public eventsService: EventsService\n  ) {}\n}\n","@if (!events()?.data || !events()?.data?.length) {\n  <c8y-ui-empty-state\n    [icon]=\"'online'\"\n    [title]=\"'No recent events found.' | translate\"\n    [horizontal]=\"true\"\n  ></c8y-ui-empty-state>\n}\n\n<c8y-list-group>\n  <c8y-li-timeline\n    *c8yFor=\"\n      let event of events();\n      pipe: filterPipe();\n      realtime: realtime;\n      realtimeOptions: { entityOrId: sourceId() };\n      loadMore: loadMoreMode()\n    \"\n  >\n    {{ event.creationTime | c8yDate: 'medium' }}\n\n    <c8y-li>\n      <c8y-li-icon>\n        <i [c8yIcon]=\"'online'\"></i>\n      </c8y-li-icon>\n\n      <c8y-li-body>\n        <div class=\"d-flex text-break-word\">\n          <div data-cy=\"c8y-events-timeline--body-template\">\n            @if (bodyTemplate(); as tmpl) {\n              <ng-container\n                [ngTemplateOutlet]=\"tmpl\"\n                [ngTemplateOutletContext]=\"$any({ $implicit: event })\"\n              ></ng-container>\n            } @else {\n              <small>{{ event.text }}</small>\n            }\n          </div>\n        </div>\n      </c8y-li-body>\n\n      <c8y-li-collapse #collapseEl>\n        <div\n          class=\"legend form-block\"\n          translate\n        >\n          Details\n        </div>\n\n        <ul class=\"list-unstyled small\">\n          @for (prop of eventsService.getStandardKeys(event) | keyvalue; track prop.key) {\n            <li class=\"p-t-4 p-b-4 d-flex separator-bottom\">\n              <label class=\"small m-b-0 m-r-8 a-s-start\">\n                {{ $any(prop).value | translate }}\n              </label>\n              <span class=\"m-l-auto text-break-word\">\n                {{ $any(event)[$any(prop).key] | translate }}\n              </span>\n            </li>\n          }\n\n          @for (key of eventsService.getNonStandardKeys(event, propertiesToHide()); track key) {\n            <li class=\"p-t-4 p-b-4 d-flex separator-bottom\">\n              <label class=\"small m-b-0 m-r-8 a-s-start\">\n                {{ key | humanize | translate }}\n              </label>\n              <span class=\"m-l-auto text-code\">\n                {{ event[key] | json }}\n              </span>\n            </li>\n          }\n        </ul>\n\n        @for (footer of footerTemplates(); track footer) {\n          <ng-container\n            [ngTemplateOutlet]=\"footer\"\n            [ngTemplateOutletContext]=\"$any({ $implicit: event })\"\n          ></ng-container>\n        }\n      </c8y-li-collapse>\n    </c8y-li>\n  </c8y-li-timeline>\n</c8y-list-group>\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;;;;;;;;;;MAmDa,uBAAuB,CAAA;IASlC,WAAA,CACS,QAA8B,EAC9B,aAA4B,EAAA;QAD5B,IAAA,CAAA,QAAQ,GAAR,QAAQ;QACR,IAAA,CAAA,aAAa,GAAb,aAAa;QAVtB,IAAA,CAAA,MAAM,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,QAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAuB;AACrC,QAAA,IAAA,CAAA,QAAQ,GAAG,KAAK,CAAC,QAAQ,mDAAmB;QAC5C,IAAA,CAAA,UAAU,GAAG,KAAK,CAA0B,IAAI,CAAC,GAAG,EAAE,CAAC,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,YAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAC;QACxD,IAAA,CAAA,YAAY,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,cAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAkB;AACtC,QAAA,IAAA,CAAA,eAAe,GAAG,KAAK,CAAwB,EAAE,2DAAC;AAClD,QAAA,IAAA,CAAA,gBAAgB,GAAG,KAAK,CAAW,EAAE,4DAAC;AACtC,QAAA,IAAA,CAAA,YAAY,GAAG,KAAK,CAAe,MAAM,wDAAC;IAKvC;+GAZQ,uBAAuB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,oBAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,aAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAvB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,uBAAuB,yhCAFvB,CAAC,oBAAoB,CAAC,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECjDnC,2/EAkFA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EDjDI,gBAAgB,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,yBAAA,EAAA,kBAAA,EAAA,0BAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAGhB,mBAAmB,oHACnB,cAAc,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,gBAAA,EAAA,YAAA,EAAA,gBAAA,EAAA,qBAAA,EAAA,uBAAA,EAAA,qBAAA,EAAA,oBAAA,EAAA,gBAAA,EAAA,uBAAA,EAAA,kBAAA,EAAA,2BAAA,EAAA,gCAAA,EAAA,6BAAA,EAAA,oCAAA,CAAA,EAAA,OAAA,EAAA,CAAA,aAAA,EAAA,cAAA,EAAA,yBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAEd,aAAa,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACb,kBAAkB,2DAClB,qBAAqB,EAAA,QAAA,EAAA,iCAAA,EAAA,MAAA,EAAA,CAAA,MAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACrB,yBAAyB,EAAA,QAAA,EAAA,yCAAA,EAAA,MAAA,EAAA,CAAA,aAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACzB,iBAAiB,EAAA,QAAA,EAAA,uBAAA,EAAA,MAAA,EAAA,CAAA,QAAA,EAAA,aAAA,EAAA,cAAA,EAAA,OAAA,EAAA,WAAA,EAAA,YAAA,CAAA,EAAA,OAAA,EAAA,CAAA,iBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACjB,qBAAqB,wGACrB,yBAAyB,EAAA,QAAA,EAAA,yCAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EACzB,cAAc,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EACd,aAAa,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAhBb,QAAQ,wCACR,YAAY,EAAA,IAAA,EAAA,UAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAEZ,gBAAgB,EAAA,IAAA,EAAA,WAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAChB,QAAQ,2CAGR,YAAY,EAAA,IAAA,EAAA,UAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;;4FAaH,uBAAuB,EAAA,UAAA,EAAA,CAAA;kBAzBnC,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,qBAAqB,EAAA,eAAA,EAEd,uBAAuB,CAAC,MAAM,EAAA,OAAA,EACtC;wBACP,QAAQ;wBACR,YAAY;wBACZ,gBAAgB;wBAChB,gBAAgB;wBAChB,QAAQ;wBACR,mBAAmB;wBACnB,cAAc;wBACd,YAAY;wBACZ,aAAa;wBACb,kBAAkB;wBAClB,qBAAqB;wBACrB,yBAAyB;wBACzB,iBAAiB;wBACjB,qBAAqB;wBACrB,yBAAyB;wBACzB,cAAc;wBACd;qBACD,EAAA,SAAA,EACU,CAAC,oBAAoB,CAAC,EAAA,QAAA,EAAA,2/EAAA,EAAA;;;AEjDnC;;AAEG;;;;"}