{"version":3,"file":"c8y-ngx-components-alarm-event-selector.mjs","sources":["../../alarm-event-selector/alarm-event-attributes-form/alarm-event-attributes-form.service.ts","../../alarm-event-selector/alarm-event-attributes-form/alarm-event-attributes-form.component.ts","../../alarm-event-selector/alarm-event-attributes-form/alarm-event-attributes-form.component.html","../../alarm-event-selector/alarm-event-selector.model.ts","../../alarm-event-selector/alarm-event-selector.service.ts","../../alarm-event-selector/custom-alarm-event-form/custom-alarm-event-form.component.ts","../../alarm-event-selector/custom-alarm-event-form/custom-alarm-event-form.component.html","../../alarm-event-selector/alarm-event-selector-list-item/alarm-event-selector-list-item.component.ts","../../alarm-event-selector/alarm-event-selector-list-item/alarm-event-selector-list-item.component.html","../../alarm-event-selector/pipes/includes-alarm.pipe.ts","../../alarm-event-selector/alarm-event-selector.component.ts","../../alarm-event-selector/alarm-event-selector.component.html","../../alarm-event-selector/alarm-event-selector-modal/alarm-event-selector-modal.component.ts","../../alarm-event-selector/alarm-event-selector-modal/alarm-event-selector-modal.component.html","../../alarm-event-selector/alarm-event-selector-modal/alarm-event-selector-modal.service.ts","../../alarm-event-selector/alarm-event-selection-list/alarm-event-selection-list.component.ts","../../alarm-event-selector/alarm-event-selection-list/alarm-event-selection-list.component.html","../../alarm-event-selector/alarm-event-selector.module.ts","../../alarm-event-selector/widget-event-selector.component.ts","../../alarm-event-selector/widget-alarm-selector.component.ts","../../alarm-event-selector/c8y-ngx-components-alarm-event-selector.ts"],"sourcesContent":["import { Injectable } from '@angular/core';\nimport { AbstractControl, ValidationErrors } from '@angular/forms';\nimport { AlarmOrEvent } from '../alarm-event-selector.model';\n\n@Injectable({ providedIn: 'root' })\nexport class AlarmEventAttributesFormService {\n  duplicateTypeValidator(selectedItems: AlarmOrEvent[]) {\n    return (control: AbstractControl): ValidationErrors | null => {\n      if (!control.value || !selectedItems?.length) {\n        return null;\n      }\n      const isDuplicate = selectedItems.some(\n        item => item.filters?.type?.toLowerCase() === control.value.toLowerCase()\n      );\n      return isDuplicate ? { duplicateType: true } : null;\n    };\n  }\n}\n","import { Component, forwardRef, Input, OnInit } from '@angular/core';\nimport {\n  AbstractControl,\n  ControlValueAccessor,\n  FormBuilder,\n  FormControl,\n  FormGroup,\n  NG_VALIDATORS,\n  NG_VALUE_ACCESSOR,\n  ValidationErrors,\n  Validator,\n  Validators,\n  FormsModule,\n  ReactiveFormsModule\n} from '@angular/forms';\nimport { take } from 'rxjs/operators';\nimport { AlarmEventAttributesFormService } from './alarm-event-attributes-form.service';\nimport {\n  AlarmOrEvent,\n  OmitSelectorProperties,\n  SelectedDatapoint,\n  TimelineType\n} from '../alarm-event-selector.model';\nimport { IIdentified } from '@c8y/client';\nimport { KPIDetails } from '@c8y/ngx-components/datapoint-selector';\nimport { AlarmEventAttributeForm } from './alarm-event-attributes-form.model';\nimport { NgIf, NgFor } from '@angular/common';\nimport {\n  FormGroupComponent,\n  RequiredInputPlaceholderDirective,\n  MessagesComponent,\n  MessageDirective,\n  C8yTranslatePipe\n} from '@c8y/ngx-components';\n\n@Component({\n  selector: 'c8y-alarm-event-attributes-form',\n  templateUrl: './alarm-event-attributes-form.component.html',\n  providers: [\n    {\n      provide: NG_VALUE_ACCESSOR,\n      useExisting: forwardRef(() => AlarmEventAttributesFormComponent),\n      multi: true\n    },\n    {\n      provide: NG_VALIDATORS,\n      useExisting: forwardRef(() => AlarmEventAttributesFormComponent),\n      multi: true\n    }\n  ],\n  imports: [\n    FormsModule,\n    ReactiveFormsModule,\n    NgIf,\n    FormGroupComponent,\n    RequiredInputPlaceholderDirective,\n    MessagesComponent,\n    MessageDirective,\n    NgFor,\n    C8yTranslatePipe\n  ]\n})\nexport class AlarmEventAttributesFormComponent implements ControlValueAccessor, Validator, OnInit {\n  @Input() timelineType: TimelineType;\n  @Input() omitProperties: OmitSelectorProperties = {};\n  @Input() selectedItems: AlarmOrEvent[] = [];\n  @Input() target: IIdentified;\n  @Input() datapoints: KPIDetails[] = [];\n  formGroup: FormGroup<AlarmEventAttributeForm>;\n\n  constructor(\n    private formBuilder: FormBuilder,\n    private alarmEventAttributesFormService: AlarmEventAttributesFormService\n  ) {}\n\n  ngOnInit() {\n    this.formGroup = this.formBuilder.group({\n      filters: this.formBuilder.group({\n        type: new FormControl<string>('', [\n          Validators.required,\n          this.alarmEventAttributesFormService.duplicateTypeValidator(this.selectedItems)\n        ])\n      }),\n      timelineType: new FormControl<TimelineType>('' as TimelineType),\n      selectedDatapoint: new FormControl<null | SelectedDatapoint>(null)\n    });\n\n    if (!this.omitProperties.label) {\n      this.formGroup.addControl('label', new FormControl('', Validators.required));\n    }\n    if (this.datapoints?.length > 0) {\n      this.filterKpis();\n    }\n  }\n\n  validate(_control: AbstractControl): ValidationErrors {\n    return this.formGroup?.valid ? null : { formInvalid: {} };\n  }\n\n  writeValue(obj: any): void {\n    this.formGroup.patchValue(obj);\n  }\n\n  registerOnChange(fn: any): void {\n    this.formGroup.valueChanges.subscribe(fn);\n  }\n\n  registerOnTouched(fn: any): void {\n    this.formGroup.valueChanges.pipe(take(1)).subscribe(fn);\n  }\n\n  setDisabledState(isDisabled: boolean): void {\n    isDisabled ? this.formGroup.disable() : this.formGroup.enable();\n  }\n\n  changeDatapointSelection(event: Event) {\n    const selectElement = event.target as HTMLSelectElement;\n    const selectedIndex = selectElement.selectedIndex;\n    const selectedDatapoint = this.datapoints[selectedIndex];\n    const trimmedDatapoint = {\n      target: selectedDatapoint.__target.id as string,\n      fragment: selectedDatapoint.fragment,\n      series: selectedDatapoint.series\n    };\n\n    this.formGroup.patchValue({ selectedDatapoint: trimmedDatapoint });\n  }\n\n  trackByFn(_index: number, item: KPIDetails) {\n    return `${item.fragment}-${item.series}-${item.__target?.id}`;\n  }\n\n  private filterKpis() {\n    if (this.target && this.target.id) {\n      this.datapoints = this.datapoints.filter(dp => dp.__target?.id === this.target.id);\n    }\n  }\n}\n","<div [formGroup]=\"formGroup\">\n  <c8y-form-group\n    class=\"form-group-sm\"\n    *ngIf=\"formGroup.controls.label\"\n  >\n    <label class=\"m-0\">{{ 'Label' | translate }}</label>\n    <input\n      class=\"form-control flex-grow\"\n      name=\"label\"\n      formControlName=\"label\"\n      [placeholder]=\"\n        'e.g. {{ example }}'\n          | translate\n            : {\n                example: timelineType === 'ALARM' ? 'Unavailability alarm' : 'Location update'\n              }\n      \"\n    />\n  </c8y-form-group>\n\n  <div formGroupName=\"filters\">\n    <c8y-form-group class=\"form-group-sm\">\n      <label class=\"m-0\">{{ 'Type' | translate }}</label>\n      <input\n        class=\"form-control flex-grow\"\n        name=\"type\"\n        formControlName=\"type\"\n        [placeholder]=\"\n          'e.g. {{ example }}'\n            | translate\n              : {\n                  example:\n                    timelineType === 'ALARM' ? 'c8y_UnavailabilityAlarm' : 'c8y_LocationUpdate'\n                }\n        \"\n      />\n      <c8y-messages>\n        <c8y-message\n          name=\"duplicateType\"\n          [text]=\"'Type already used.' | translate\"\n        ></c8y-message>\n      </c8y-messages>\n    </c8y-form-group>\n  </div>\n\n  <c8y-form-group\n    class=\"form-group-sm\"\n    *ngIf=\"datapoints?.length > 0\"\n  >\n    <label>{{ 'Select data point' | translate }}</label>\n    <div class=\"c8y-select-wrapper\">\n      <select\n        class=\"form-control input-sm\"\n        (change)=\"changeDatapointSelection($event)\"\n      >\n        <option\n          *ngFor=\"let datapoint of datapoints; trackBy: trackByFn\"\n          [ngValue]=\"{\n            target: datapoint.__target.id,\n            fragment: datapoint.fragment,\n            series: datapoint.series\n          }\"\n          [selected]=\"\n            datapoint.__target.id === formGroup.value.selectedDatapoint?.target &&\n            datapoint.fragment === formGroup.value.selectedDatapoint?.fragment &&\n            datapoint.series === formGroup.value.selectedDatapoint?.series\n          \"\n        >\n          {{ datapoint?.label }}\n        </option>\n      </select>\n    </div>\n  </c8y-form-group>\n</div>\n","import { IIdentified } from '@c8y/client';\nimport { gettext } from '@c8y/ngx-components/gettext';\n\nexport type TimelineType = 'ALARM' | 'EVENT';\n\ntype AlarmOrEventBase = {\n  timelineType: TimelineType;\n  color: string;\n  __active?: boolean;\n  label: string;\n  filters: {\n    type: string;\n  };\n  __target: IIdentified;\n};\n\nexport type AlarmDetails = AlarmOrEventBase & {\n  timelineType: 'ALARM';\n  filters: {\n    type: string;\n  };\n  selectedDatapoint?: SelectedDatapoint;\n};\n\nexport type EventDetails = AlarmOrEventBase & {\n  timelineType: 'EVENT';\n  filters: {\n    type: string;\n  };\n  selectedDatapoint?: SelectedDatapoint;\n};\n\nexport type SelectedDatapoint = {\n  target?: string;\n  series?: string;\n  fragment?: string;\n};\n\nexport type AlarmOrEvent = AlarmDetails | EventDetails;\n\nexport type TimelineTypeTexts = {\n  listTitle: string;\n  emptyStateIcon: string;\n  emptyStateTitle: string;\n  emptyStateSubtitle: string;\n  addButtonLabel: string;\n  addCustomItemButtonLabel: string;\n  selectorTitle: string;\n  availableItemsTitle: string;\n  assetWithNoItemsEmptyStateSubtitle: string;\n  largeNumberOfItemsInfo: string;\n  selectedItemsTitle: string;\n  noSelectedItemsTitle: string;\n  recentItemsWarningTitle: string;\n  recentItemsWarningText: string;\n  addCustomText: string;\n};\n\nexport const EVENT_TEXTS: TimelineTypeTexts = {\n  listTitle: gettext('Events'),\n  emptyStateIcon: 'online1',\n  emptyStateTitle: gettext('No events to display.'),\n  emptyStateSubtitle: gettext('Add your first event.'),\n  addButtonLabel: gettext('Add event'),\n  addCustomItemButtonLabel: gettext('Add custom event'),\n  selectorTitle: gettext('Events selector'),\n  availableItemsTitle: gettext('Available events'),\n  assetWithNoItemsEmptyStateSubtitle: gettext('Select an asset with events from the list.'),\n  largeNumberOfItemsInfo: gettext(\n    'Due to the large number, only a subset of events are displayed. Use search to narrow down the number of results.'\n  ),\n  selectedItemsTitle: gettext('Selected events'),\n  noSelectedItemsTitle: gettext('No events selected.'),\n  recentItemsWarningTitle: gettext('The list below may not be complete.'),\n  recentItemsWarningText: gettext(\n    'Recent events are displayed below. Past events might not be shown.'\n  ),\n  addCustomText: gettext('Optionally you can add a custom event.')\n};\n\nexport const ALARM_TEXTS: TimelineTypeTexts = {\n  listTitle: gettext('Alarms'),\n  emptyStateIcon: 'c8y-alarm',\n  emptyStateTitle: gettext('No alarms to display.'),\n  emptyStateSubtitle: gettext('Add your first alarm.'),\n  addButtonLabel: gettext('Add alarm'),\n  addCustomItemButtonLabel: gettext('Add custom alarm'),\n  selectorTitle: gettext('Alarms selector'),\n  availableItemsTitle: gettext('Available alarms'),\n  assetWithNoItemsEmptyStateSubtitle: gettext('Select an asset with alarms from the list.'),\n  largeNumberOfItemsInfo: gettext(\n    'Due to the large number, only a subset of alarms are displayed. Use search to narrow down the number of results.'\n  ),\n  selectedItemsTitle: gettext('Selected alarms'),\n  noSelectedItemsTitle: gettext('No alarms selected.'),\n  recentItemsWarningTitle: gettext('The list below may not be complete.'),\n  recentItemsWarningText: gettext(\n    'Recent alarms are displayed below but older ones may not be shown.'\n  ),\n  addCustomText: gettext('Optionally, you can add a custom alarm.')\n};\n\n/**\n * The configuration for the alarms-events selector modal if some properties should be omitted.\n */\nexport type OmitSelectorProperties = {\n  color?: boolean;\n  label?: boolean;\n};\n\nexport type ConfigStoreMode = 'ISOLATED' | 'MIXED';\n","import { Injectable } from '@angular/core';\nimport { AlarmService, EventService, IAlarm, IEvent, IIdentified } from '@c8y/client';\nimport { ColorService } from '@c8y/ngx-components';\nimport { uniqBy } from 'lodash-es';\nimport {\n  ALARM_TEXTS,\n  AlarmDetails,\n  AlarmOrEvent,\n  EVENT_TEXTS,\n  EventDetails,\n  TimelineType,\n  TimelineTypeTexts\n} from './alarm-event-selector.model';\n\n@Injectable({ providedIn: 'root' })\nexport class AlarmEventSelectorService {\n  private timelineTypeTextsMap: Map<TimelineType, TimelineTypeTexts> = new Map([\n    ['ALARM', ALARM_TEXTS],\n    ['EVENT', EVENT_TEXTS]\n  ]);\n\n  constructor(\n    private alarmService: AlarmService,\n    private eventsService: EventService,\n    private color: ColorService\n  ) {}\n\n  /**\n   * This method returns the texts for the timeline type.\n   * @param timelineType The timeline type.\n   * @returns The texts for the timeline type.\n   */\n  timelineTypeTexts(timelineType: TimelineType): TimelineTypeTexts {\n    return this.timelineTypeTextsMap.get(timelineType)!;\n  }\n\n  /**\n   * This method returns all alarms or events of the platform based on the timeline type\n   * @param timelineType The timeline type.\n   * @returns The alarms or events of the asset.\n   */\n  async getItems(timelineType: TimelineType): Promise<AlarmOrEvent[]> {\n    const filters = {\n      pageSize: 1000\n    };\n\n    return timelineType === 'ALARM'\n      ? await this.getAlarmsOfAsset(filters)\n      : await this.getEventsOfAsset(filters);\n  }\n\n  /**\n   * This method returns the items of the asset based on the timeline type.\n   * @param parentReference The parent reference.\n   * @param timelineType The timeline type.\n   * @returns The alarms or events of the asset.\n   */\n  async getAlarmsOrEvents(\n    parentReference: IIdentified,\n    timelineType: TimelineType\n  ): Promise<AlarmOrEvent[]> {\n    const filters = { source: parentReference.id, pageSize: 1000 };\n\n    return timelineType === 'ALARM'\n      ? await this.getAlarmsOfAsset(filters)\n      : await this.getEventsOfAsset(filters);\n  }\n\n  async getUniqueAlarmsOnly(data: IAlarm[]): Promise<AlarmDetails[]> {\n    return Promise.all(\n      uniqBy(data, 'type').map(async (alarm: IAlarm) => this.createItem('ALARM', alarm))\n    );\n  }\n\n  async getUniqueEventsOnly(data: IEvent[]): Promise<EventDetails[]> {\n    return Promise.all(\n      uniqBy(data, 'type').map(async (event: IEvent) => this.createItem('EVENT', event))\n    );\n  }\n\n  async createItem(timelineType: 'ALARM' & TimelineType, item: IAlarm): Promise<AlarmDetails>;\n  async createItem(timelineType: 'EVENT' & TimelineType, item: IEvent): Promise<EventDetails>;\n  async createItem(timelineType: TimelineType, item: IAlarm | IEvent): Promise<any> {\n    const color = await this.color.generateColor(item.type);\n    if (item.source && !item.source.name) {\n      item.source.name = `Device ${item.source.id}`;\n    }\n    return {\n      timelineType,\n      color,\n      label: item.type,\n      filters: {\n        type: item.type\n      },\n      __target: item.source\n    };\n  }\n\n  private async getAlarmsOfAsset(filters: {\n    pageSize: number;\n    dateTo?: string;\n    dateFrom?: string;\n    source?: string | number;\n  }): Promise<AlarmDetails[]> {\n    const res = await this.alarmService.list({\n      ...filters,\n      withSourceAssets: !!filters.source,\n      withSourceDevices: !!filters.source,\n      pageSize: 1000\n    });\n    const alarms = await this.getUniqueAlarmsOnly(res.data);\n    return alarms;\n  }\n\n  private async getEventsOfAsset(filters: {\n    pageSize: number;\n    dateTo?: string;\n    dateFrom?: string;\n    source?: string | number;\n  }): Promise<EventDetails[]> {\n    const res = await this.eventsService.list(filters);\n    const events = this.getUniqueEventsOnly(res.data);\n    return events;\n  }\n}\n","import { Component, EventEmitter, Input, OnDestroy, OnInit, Output } from '@angular/core';\nimport { FormBuilder, FormGroup, FormsModule, ReactiveFormsModule } from '@angular/forms';\nimport { AlarmOrEvent, OmitSelectorProperties, TimelineType } from '../alarm-event-selector.model';\nimport { map, startWith, takeUntil } from 'rxjs/operators';\nimport { Observable, Subject } from 'rxjs';\nimport { IIdentified } from '@c8y/client';\nimport { NgIf, NgClass, AsyncPipe } from '@angular/common';\nimport {\n  RequiredInputPlaceholderDirective,\n  IconDirective,\n  C8yTranslatePipe\n} from '@c8y/ngx-components';\nimport { AlarmEventAttributesFormComponent } from '../alarm-event-attributes-form/alarm-event-attributes-form.component';\n\n@Component({\n  selector: 'c8y-custom-alarm-event-form',\n  templateUrl: './custom-alarm-event-form.component.html',\n  imports: [\n    FormsModule,\n    ReactiveFormsModule,\n    NgIf,\n    NgClass,\n    RequiredInputPlaceholderDirective,\n    IconDirective,\n    AlarmEventAttributesFormComponent,\n    C8yTranslatePipe,\n    AsyncPipe\n  ]\n})\nexport class CustomAlarmEventFormComponent implements OnInit, OnDestroy {\n  @Input() timelineType: TimelineType;\n  @Input() target: IIdentified;\n  @Input() omitProperties: OmitSelectorProperties = {};\n  @Input() selectedItems: AlarmOrEvent[] = [];\n  @Input() defaultColor: string;\n  @Output() added = new EventEmitter<AlarmOrEvent>();\n  @Output() cancel = new EventEmitter<void>();\n\n  formGroup: FormGroup;\n  valid$: Observable<boolean>;\n  private destroy$ = new Subject<void>();\n\n  constructor(private formBuilder: FormBuilder) {\n    this.formGroup = this.formBuilder.group({\n      details: [],\n      color: [],\n      __active: [],\n      __target: []\n    });\n\n    this.valid$ = this.formGroup.statusChanges.pipe(\n      takeUntil(this.destroy$),\n      map(val => val === 'VALID'),\n      startWith(false)\n    );\n  }\n\n  ngOnInit() {\n    this.formGroup.patchValue({\n      color: this.defaultColor,\n      __target: this.target,\n      details: { timelineType: this.timelineType }\n    });\n  }\n\n  ngOnDestroy() {\n    this.destroy$.next();\n    this.destroy$.complete();\n  }\n\n  add() {\n    if (this.formGroup.valid) {\n      const formValue = this.transformFormValue(this.formGroup.value);\n      this.added.emit(formValue);\n    }\n  }\n\n  private transformFormValue(formValue: any) {\n    const obj = Object.assign({}, formValue.details || {}, formValue);\n    delete obj.details;\n    return obj;\n  }\n}\n","<form [formGroup]=\"formGroup\" class=\"p-16\">\n  <div\n    *ngIf=\"!omitProperties.color\"\n    class=\"form-group d-flex a-i-center gap-8\"\n    [title]=\"'Change color' | translate\"\n  >\n    <label class=\"m-0\">{{ 'Color' | translate }}</label>\n    <div class=\"c8y-colorpicker\"\n      [ngClass]=\"{\n        'c8y-colorpicker--event': timelineType === 'EVENT',\n        'c8y-colorpicker--alarm': timelineType !== 'EVENT'\n      }\"\n    >\n      <input\n        type=\"color\"\n        formControlName=\"color\"\n        (click)=\"$event.stopPropagation()\"\n      />\n      <span [style.background-color]=\"formGroup.value.color\">\n        <i [c8yIcon]=\"timelineType === 'EVENT' ? 'online1' : 'bell'\"></i>\n      </span>\n    </div>\n  </div>\n\n  <c8y-alarm-event-attributes-form\n    formControlName=\"details\"\n    [timelineType]=\"timelineType\"\n    [omitProperties]=\"omitProperties\"\n    [selectedItems]=\"selectedItems\"\n  ></c8y-alarm-event-attributes-form>\n\n  <div class=\"d-flex p-t-16 gap-8\">\n    <button class=\"btn btn-default btn-sm\" (click)=\"cancel.emit()\">\n      {{ 'Cancel' | translate }}\n    </button>\n    <button\n      class=\"btn btn-primary btn-sm\"\n      [disabled]=\"(valid$ | async) === false\"\n      (click)=\"add()\"\n    >\n      <i c8yIcon=\"plus-circle\"></i>\n      {{ 'Select' | translate }}\n    </button>\n  </div>\n</form>\n","import {\n  Component,\n  EventEmitter,\n  forwardRef,\n  Input,\n  OnDestroy,\n  OnInit,\n  Output\n} from '@angular/core';\nimport {\n  AbstractControl,\n  ControlValueAccessor,\n  FormBuilder,\n  FormGroup,\n  NG_VALIDATORS,\n  NG_VALUE_ACCESSOR,\n  ValidationErrors,\n  Validator,\n  FormsModule,\n  ReactiveFormsModule\n} from '@angular/forms';\nimport { AlarmOrEvent, OmitSelectorProperties, TimelineType } from '../alarm-event-selector.model';\nimport { map, take, takeUntil } from 'rxjs/operators';\nimport { Observable, Subject } from 'rxjs';\nimport { gettext } from '@c8y/ngx-components/gettext';\nimport {\n  ListItemComponent,\n  ListItemDragHandleComponent,\n  ListItemIconComponent,\n  IconDirective,\n  ListItemCheckboxComponent,\n  RequiredInputPlaceholderDirective,\n  HighlightComponent,\n  ListItemActionComponent,\n  ListItemCollapseComponent,\n  C8yTranslatePipe\n} from '@c8y/ngx-components';\nimport { KPIDetails } from '@c8y/ngx-components/datapoint-selector';\nimport { NgIf, NgClass, NgStyle, AsyncPipe } from '@angular/common';\nimport { PopoverDirective } from 'ngx-bootstrap/popover';\nimport { AlarmEventAttributesFormComponent } from '../alarm-event-attributes-form/alarm-event-attributes-form.component';\n\n@Component({\n  selector: 'c8y-alarm-event-selector-list-item',\n  templateUrl: './alarm-event-selector-list-item.component.html',\n  providers: [\n    {\n      provide: NG_VALUE_ACCESSOR,\n      useExisting: forwardRef(() => AlarmEventSelectorListItemComponent),\n      multi: true\n    },\n    {\n      provide: NG_VALIDATORS,\n      useExisting: forwardRef(() => AlarmEventSelectorListItemComponent),\n      multi: true\n    }\n  ],\n  imports: [\n    ListItemComponent,\n    FormsModule,\n    ReactiveFormsModule,\n    ListItemDragHandleComponent,\n    NgIf,\n    ListItemIconComponent,\n    IconDirective,\n    ListItemCheckboxComponent,\n    NgClass,\n    RequiredInputPlaceholderDirective,\n    NgStyle,\n    HighlightComponent,\n    PopoverDirective,\n    ListItemActionComponent,\n    ListItemCollapseComponent,\n    AlarmEventAttributesFormComponent,\n    C8yTranslatePipe,\n    AsyncPipe\n  ]\n})\nexport class AlarmEventSelectorListItemComponent\n  implements OnInit, ControlValueAccessor, Validator, OnDestroy\n{\n  @Input() timelineType: TimelineType;\n  @Input() datapoints: KPIDetails[] | undefined;\n  @Input() highlightText: string;\n  @Input() showAddRemoveButton = true;\n  @Input() isSelected = false;\n  @Input() optionToRemove = false;\n  @Input() showActiveToggle = false;\n  @Input() allowItemEdit = false;\n  @Input() hideSource = false;\n  @Input() displayAsSwitch = false;\n  @Input() omitProperties: OmitSelectorProperties = {};\n\n  colorPickerTitle: string;\n  @Output() added = new EventEmitter<AlarmOrEvent>();\n  @Output() removed = new EventEmitter<AlarmOrEvent>();\n\n  formGroup: FormGroup;\n  valid$: Observable<boolean>;\n  private destroy$ = new Subject<void>();\n\n  constructor(private formBuilder: FormBuilder) {\n    this.formGroup = this.formBuilder.group({\n      details: [],\n      color: [],\n      __active: [],\n      __target: []\n    });\n    this.valid$ = this.formGroup.statusChanges.pipe(\n      takeUntil(this.destroy$),\n      map(val => val === 'VALID')\n    );\n  }\n\n  ngOnInit() {\n    this.colorPickerTitle = this.allowItemEdit ? gettext('Change color') : '';\n  }\n\n  ngOnDestroy() {\n    this.destroy$.next();\n    this.destroy$.complete();\n  }\n\n  toggleActive() {\n    this.formGroup.controls.__active.setValue(!this.formGroup.value.__active);\n  }\n\n  validate(_control: AbstractControl): ValidationErrors {\n    return this.formGroup?.valid ? null : { formInvalid: {} };\n  }\n\n  writeValue(obj: any): void {\n    this.formGroup.patchValue({ ...obj, details: obj });\n  }\n\n  registerOnChange(fn: any): void {\n    this.formGroup.valueChanges\n      .pipe(\n        map(tmp => this.transformFormValue(tmp)),\n        takeUntil(this.destroy$)\n      )\n      .subscribe(fn);\n  }\n\n  registerOnTouched(fn: any): void {\n    this.formGroup.valueChanges.pipe(take(1)).subscribe(fn);\n  }\n\n  setDisabledState(isDisabled: boolean): void {\n    isDisabled ? this.formGroup.disable() : this.formGroup.enable();\n  }\n\n  addOrRemoveItem() {\n    const value = this.transformFormValue(this.formGroup.value);\n    if (this.isSelected) {\n      this.removed.emit(value);\n    } else {\n      this.added.emit(value);\n    }\n  }\n\n  remove() {\n    this.removed.emit(this.transformFormValue(this.formGroup.value));\n  }\n\n  private transformFormValue(formValue: any) {\n    const obj = Object.assign({}, formValue.details || {}, formValue);\n    delete obj.details;\n    return obj;\n  }\n}\n","<c8y-li\n  class=\"c8y-list__item__collapse--container-small\"\n  [formGroup]=\"formGroup\"\n  #li\n>\n  <c8y-li-drag-handle><ng-content select=\"c8y-li-drag-handle\"></ng-content></c8y-li-drag-handle>\n  <c8y-li-checkbox\n    class=\"a-s-center m-t-4 p-r-0\"\n    *ngIf=\"showActiveToggle\"\n    [displayAsSwitch]=\"displayAsSwitch\"\n    formControlName=\"__active\"\n    (click)=\"$event.stopPropagation()\"\n  ></c8y-li-checkbox>\n\n  <div class=\"d-flex a-i-center p-l-0\">\n    <div\n      class=\"c8y-list__item__colorpicker p-t-0 p-b-0 p-l-16\"\n      [title]=\"colorPickerTitle | translate\"\n    >\n      <div\n        class=\"c8y-colorpicker\"\n        [ngClass]=\"{\n          'c8y-colorpicker--alarm': timelineType === 'ALARM',\n          'c8y-colorpicker--event': timelineType === 'EVENT'\n        }\"\n      >\n        <input\n          [ngStyle]=\"{ 'pointer-events': allowItemEdit && !omitProperties.color ? 'auto' : 'none' }\"\n          type=\"color\"\n          formControlName=\"color\"\n          (click)=\"$event.stopPropagation()\"\n        />\n        <span\n          class=\"circle-icon-wrapper circle-icon-wrapper--medium\"\n          [ngStyle]=\"{ 'background-color': formGroup.value.color }\"\n        >\n          <i\n            class=\"stroked-icon\"\n            [c8yIcon]=\"timelineType === 'EVENT' ? 'online1' : 'bell'\"\n          ></i>\n        </span>\n      </div>\n    </div>\n    <button\n      class=\"btn-clean text-truncate\"\n      [title]=\"formGroup.value.details?.label\"\n      (click)=\"\n        allowItemEdit\n          ? (li.collapsed = !li.collapsed)\n          : showActiveToggle\n            ? toggleActive()\n            : addOrRemoveItem()\n      \"\n    >\n      <span class=\"text-truncate\">\n        <c8y-highlight\n          [text]=\"\n            omitProperties.label\n              ? formGroup.value.details?.filters?.type\n              : formGroup.value.details?.label\n          \"\n          [pattern]=\"highlightText\"\n          [shouldTrimPattern]=\"true\"\n        ></c8y-highlight>\n      </span>\n      <small\n        class=\"text-truncate text-muted icon-flex\"\n        *ngIf=\"formGroup.value.__target && !hideSource\"\n      >\n        <i c8yIcon=\"exchange\"></i>\n        <span class=\"text-truncate\">{{ formGroup.value.__target.name }}</span>\n      </small>\n    </button>\n\n    <button\n      class=\"btn-dot btn-dot--danger m-l-auto\"\n      title=\"{{ 'Invalid entries' | translate }}\"\n      [popover]=\"'Some entries are invalid. Check the required input fields.' | translate\"\n      container=\"body\"\n      *ngIf=\"(valid$ | async) === false && li.collapsed\"\n      [outsideClick]=\"true\"\n    >\n      <i c8yIcon=\"exclamation-circle\" class=\"icon-20\" ></i>\n    </button>\n     <span class=\"m-l-auto\" *ngIf=\"showAddRemoveButton\">\n    <button\n      class=\"btn btn-dot text-danger\"\n      [title]=\"'Remove' | translate\"\n      *ngIf=\"isSelected\"\n      (click)=\"addOrRemoveItem()\"\n    >\n      <i\n        class=\"icon-20\"\n        c8yIcon=\"minus-circle\"\n      ></i>\n    </button>\n    <button\n      class=\"btn btn-dot text-primary\"\n      [title]=\"'Select' | translate\"\n      *ngIf=\"!isSelected\"\n      (click)=\"addOrRemoveItem()\"\n      [disabled]=\"(valid$ | async) === false\"\n    >\n      <i\n        class=\"icon-20\"\n        c8yIcon=\"plus-circle\"\n      ></i>\n    </button>\n  </span>\n  </div>\n\n  <c8y-li-action\n    [icon]=\"'minus-circle'\"\n    *ngIf=\"optionToRemove\"\n    [label]=\"'Remove from list' | translate\"\n    (click)=\"remove()\"\n  ></c8y-li-action>\n  <c8y-li-collapse *ngIf=\"allowItemEdit\">\n    <div class=\"data-point-details\">\n      <c8y-alarm-event-attributes-form\n        formControlName=\"details\"\n        [timelineType]=\"timelineType\"\n        [omitProperties]=\"omitProperties\"\n        [datapoints]=\"datapoints\"\n        [target]=\"formGroup.value.__target\"\n      ></c8y-alarm-event-attributes-form>\n    </div>\n  </c8y-li-collapse>\n</c8y-li>\n","import { Pipe, PipeTransform } from '@angular/core';\nimport { AlarmDetails, EventDetails } from '../alarm-event-selector.model';\n\n@Pipe({ name: 'includesAlarmOrEvent' })\nexport class IncludesAlarmOrEventPipe implements PipeTransform {\n  transform<T extends AlarmDetails | EventDetails>(itemList: T[], item?: T): boolean {\n    if (!Array.isArray(itemList) || !item) {\n      return false;\n    }\n    return itemList.some(\n      tmp =>\n        tmp.label === item.label &&\n        tmp.filters.type === item.filters.type &&\n        tmp.__target?.id === item.__target?.id\n    );\n  }\n}\n","import { Component, EventEmitter, forwardRef, Input, OnInit, Output } from '@angular/core';\nimport { NG_VALUE_ACCESSOR, FormsModule } from '@angular/forms';\nimport { IIdentified } from '@c8y/client';\nimport {\n  AssetSelectionChangeEvent,\n  MillerViewComponent\n} from '@c8y/ngx-components/assets-navigator';\nimport { BehaviorSubject, combineLatest, Observable } from 'rxjs';\nimport {\n  debounceTime,\n  distinctUntilChanged,\n  map,\n  shareReplay,\n  switchMap,\n  tap\n} from 'rxjs/operators';\nimport {\n  AlarmOrEvent,\n  OmitSelectorProperties,\n  TimelineType,\n  TimelineTypeTexts\n} from './alarm-event-selector.model';\nimport { AlarmEventSelectorService } from './alarm-event-selector.service';\nimport { NgClass, NgIf, NgFor, AsyncPipe } from '@angular/common';\nimport {\n  EmptyStateComponent,\n  LoadingComponent,\n  IconDirective,\n  ListGroupComponent,\n  ListItemComponent,\n  C8yTranslatePipe\n} from '@c8y/ngx-components';\nimport { CollapseDirective } from 'ngx-bootstrap/collapse';\nimport { CustomAlarmEventFormComponent } from './custom-alarm-event-form/custom-alarm-event-form.component';\nimport { AlarmEventSelectorListItemComponent } from './alarm-event-selector-list-item/alarm-event-selector-list-item.component';\nimport { IncludesAlarmOrEventPipe } from './pipes/includes-alarm.pipe';\n\n@Component({\n  selector: 'c8y-alarm-event-selector',\n  templateUrl: './alarm-event-selector.component.html',\n  providers: [\n    {\n      provide: NG_VALUE_ACCESSOR,\n      multi: true,\n      useExisting: forwardRef(() => AlarmEventSelectorComponent)\n    }\n  ],\n  imports: [\n    NgClass,\n    NgIf,\n    MillerViewComponent,\n    FormsModule,\n    EmptyStateComponent,\n    LoadingComponent,\n    IconDirective,\n    CollapseDirective,\n    CustomAlarmEventFormComponent,\n    ListGroupComponent,\n    ListItemComponent,\n    NgFor,\n    AlarmEventSelectorListItemComponent,\n    C8yTranslatePipe,\n    AsyncPipe,\n    IncludesAlarmOrEventPipe\n  ]\n})\nexport class AlarmEventSelectorComponent implements OnInit {\n  @Input() timelineType: TimelineType = 'ALARM';\n  @Input() contextAsset: IIdentified;\n  @Input() allowChangingContext = true;\n  @Input() selectedItems = new Array<AlarmOrEvent>();\n  @Input() allowSearch = true;\n  @Input() groupsSelectable = true;\n  @Input() hideSource = false;\n  @Input() omitProperties: OmitSelectorProperties = {};\n\n  @Output() selectionChange = new EventEmitter<AlarmOrEvent[]>();\n  filterString = '';\n  maxNumberOfItems = 50;\n\n  loadingItems$ = new BehaviorSubject(false);\n  assetSelection = new BehaviorSubject<IIdentified>({});\n  items$: Observable<AlarmOrEvent[]>;\n  filteredItems$: Observable<AlarmOrEvent[]>;\n  filterStringChanges$: Observable<string>;\n  timelineTypeTexts: TimelineTypeTexts;\n  isExpanded = false;\n  defaultColor =\n    getComputedStyle(document.documentElement).getPropertyValue('--brand-primary') ||\n    getComputedStyle(document.documentElement).getPropertyValue('--c8y-brand-primary') ||\n    '#1776BF';\n  private filterString$ = new BehaviorSubject('');\n\n  constructor(private alarmEventSelectorService: AlarmEventSelectorService) {}\n\n  ngOnInit(): void {\n    this.timelineTypeTexts = this.alarmEventSelectorService.timelineTypeTexts(this.timelineType);\n    this.setupObservables();\n    if (this.contextAsset) {\n      this.selectAsset(this.contextAsset);\n    }\n  }\n\n  itemAdded(item: AlarmOrEvent): void {\n    item.__active = true;\n    this.selectedItems = [...this.selectedItems, item];\n    this.emitCurrentSelection();\n  }\n\n  itemRemoved(alarm: AlarmOrEvent): void {\n    this.selectedItems = this.selectedItems.filter(\n      tmp =>\n        tmp.label !== alarm.label ||\n        tmp.filters.type !== alarm.filters.type ||\n        tmp.__target?.id !== alarm.__target?.id\n    );\n    this.emitCurrentSelection();\n  }\n\n  assetSelectionChanged(evt: AssetSelectionChangeEvent): void {\n    if (evt.items) {\n      return this.selectAsset(evt.items.length ? evt.items[0] : evt.items);\n    }\n    // reset selection\n    this.assetSelection.next(null);\n  }\n\n  trackByFn(_index: number, item: AlarmOrEvent): string {\n    return `${item.filters.type}-${item.__target?.id}`;\n  }\n\n  filterStringChanged(newValue = ''): void {\n    this.filterString$.next(newValue);\n    this.filterString = newValue;\n  }\n\n  private setLoadingState(state: boolean) {\n    queueMicrotask(() => this.loadingItems$.next(state));\n  }\n\n  private setupObservables(): void {\n    this.items$ = this.assetSelection.pipe(\n      tap(() => this.setLoadingState(true)),\n      switchMap((asset: IIdentified) =>\n        asset?.id\n          ? this.alarmEventSelectorService.getAlarmsOrEvents(asset, this.timelineType)\n          : this.alarmEventSelectorService.getItems(this.timelineType)\n      ),\n      tap(() => this.setLoadingState(false)),\n      map(items => {\n        if (this.omitProperties.color) {\n          items.forEach(i => (i.color = this.defaultColor));\n        }\n        return items;\n      }),\n      shareReplay(1)\n    );\n\n    this.filterStringChanges$ = this.filterString$.pipe(\n      distinctUntilChanged(),\n      debounceTime(500),\n      shareReplay(1)\n    );\n\n    this.filteredItems$ = combineLatest([this.filterStringChanges$, this.items$]).pipe(\n      map(([filterString, items]) => {\n        if (!filterString) {\n          return items;\n        }\n        const lowerCaseFilterString = filterString.toLowerCase();\n        return items.filter(item => this.includesFilterString(item, lowerCaseFilterString));\n      }),\n      map(filtered => filtered.slice(0, this.maxNumberOfItems))\n    );\n  }\n\n  private selectAsset(asset: IIdentified) {\n    this.assetSelection.next(asset);\n    this.filterStringChanged();\n  }\n\n  private emitCurrentSelection() {\n    this.selectionChange.emit(this.selectedItems);\n  }\n\n  private includesFilterString(alarm: AlarmOrEvent, lowerCaseFilterString: string): boolean {\n    const label = alarm.label?.toLowerCase();\n    if (label && label.includes(lowerCaseFilterString)) {\n      return true;\n    }\n\n    const type = alarm.filters.type?.toLowerCase();\n    if (type && type.includes(lowerCaseFilterString)) {\n      return true;\n    }\n\n    return false;\n  }\n}\n","<div\n  class=\"d-grid grid__row--1 fit-h\"\n  [ngClass]=\"{\n    'grid__col--3-6-3--md': allowChangingContext,\n    'grid__col--8-4--md': !allowChangingContext\n  }\"\n>\n  <div\n    class=\"d-flex d-col p-relative bg-level-1\"\n    *ngIf=\"allowChangingContext\"\n  >\n    <c8y-asset-selector-miller\n      class=\"d-contents\"\n      [(ngModel)]=\"contextAsset\"\n      [asset]=\"contextAsset\"\n      (onSelected)=\"assetSelectionChanged($event)\"\n      [container]=\"''\"\n      [config]=\"{\n        view: 'miller',\n        groupsSelectable: groupsSelectable,\n        columnHeaders: true,\n        showChildDevices: true,\n        showUnassignedDevices: true,\n        singleColumn: true,\n        search: allowSearch,\n        showFilter: true\n      }\"\n    ></c8y-asset-selector-miller>\n  </div>\n  <!-- center column -->\n  <div class=\"inner-scroll bg-component\" data-cy=\"c8y-alarm-event-selector--inner-column\">\n    <ng-template #noDeviceEmptyState>\n      <div class=\"p-16\">\n        <c8y-ui-empty-state\n          [icon]=\"timelineTypeTexts.emptyStateIcon\"\n          [title]=\"timelineTypeTexts.emptyStateTitle | translate\"\n          [subtitle]=\"timelineTypeTexts.assetWithNoItemsEmptyStateSubtitle | translate\"\n          [horizontal]=\"true\"\n        ></c8y-ui-empty-state>\n      </div>\n    </ng-template>\n\n    <ng-template #loadingData>\n      <div class=\"p-16 text-center\">\n        <c8y-loading></c8y-loading>\n      </div>\n    </ng-template>\n\n    <div\n      class=\"bg-inherit\"\n      *ngIf=\"assetSelection | async as asset; else noDeviceEmptyState\"\n    >\n      <div class=\"p-l-16 p-r-16 p-t-8 p-b-8 sticky-top bg-inherit separator-bottom\">\n        <p\n          class=\"text-medium text-truncate\"\n          [title]=\"timelineTypeTexts.availableItemsTitle | translate\"\n        >\n          {{ timelineTypeTexts.availableItemsTitle | translate }}\n        </p>\n        <div class=\"d-flex\">\n          <div\n            class=\"input-group input-group-search m-t-4\"\n            id=\"search\"\n            *ngIf=\"!(loadingItems$ | async)\"\n          >\n            <input\n              class=\"form-control\"\n              placeholder=\"Filter…\"\n              type=\"search\"\n              [ngModel]=\"filterString\"\n              (ngModelChange)=\"filterStringChanged($event)\"\n            />\n            <span class=\"input-group-addon\">\n              <i\n                c8yIcon=\"search\"\n                *ngIf=\"!filterString; else clearFilterString\"\n              ></i>\n              <ng-template #clearFilterString>\n                <i\n                  class=\"text-muted\"\n                  c8yIcon=\"times\"\n                  *ngIf=\"filterString\"\n                  (click)=\"filterStringChanged()\"\n                ></i>\n              </ng-template>\n            </span>\n          </div>\n        </div>\n      </div>\n\n      <ng-container *ngIf=\"filteredItems$ | async as filteredItems; else loadingData\">\n        <ng-container *ngIf=\"!(loadingItems$ | async); else loadingData\">\n          <ng-container *ngIf=\"items$ | async as items\">\n            <div class=\"p-16 bg-level-2 separator-bottom\">\n              <div>\n                <p>\n                  <i\n                    class=\"text-info m-r-4\"\n                    c8yIcon=\"info-circle\"\n                  ></i>\n                  <strong>{{ timelineTypeTexts.recentItemsWarningTitle | translate }}</strong>\n                </p>\n                <p>\n                  {{ timelineTypeTexts.recentItemsWarningText | translate }}\n                  {{ timelineTypeTexts.addCustomText | translate }}\n                </p>\n              </div>\n              <div class=\"p-t-16\">\n                <button\n                  class=\"btn btn-default btn-sm\"\n                  aria-controls=\"collapseCustomItemForm\"\n                  [attr.aria-expanded]=\"isExpanded\"\n                  *ngIf=\"!isExpanded\"\n                  (click)=\"isExpanded = true\"\n                >\n                  {{ timelineTypeTexts.addCustomItemButtonLabel | translate }}\n                </button>\n                <div\n                  class=\"collapse\"\n                  id=\"collapseCustomItemForm\"\n                  [collapse]=\"!isExpanded\"\n                  [isAnimated]=\"true\"\n                >\n                  <div [style.min-height]=\"'230px'\">\n                    <c8y-custom-alarm-event-form\n                      class=\"d-block\"\n                      *ngIf=\"isExpanded\"\n                      [timelineType]=\"timelineType\"\n                      [target]=\"assetSelection | async\"\n                      [omitProperties]=\"omitProperties\"\n                      [defaultColor]=\"defaultColor\"\n                      (added)=\"itemAdded($event); isExpanded = false\"\n                      (cancel)=\"isExpanded = false\"\n                      [selectedItems]=\"selectedItems\"\n                    ></c8y-custom-alarm-event-form>\n                  </div>\n                </div>\n              </div>\n            </div>\n\n            <div\n              class=\"p-16\"\n              *ngIf=\"!filteredItems.length\"\n            >\n              <c8y-ui-empty-state\n                [icon]=\"timelineTypeTexts.emptyStateIcon\"\n                [title]=\"timelineTypeTexts.emptyStateTitle | translate\"\n                [subtitle]=\"\n                  items.length\n                    ? ('Try another filter term.' | translate)\n                    : (timelineTypeTexts.assetWithNoItemsEmptyStateSubtitle | translate)\n                \"\n                [horizontal]=\"true\"\n              ></c8y-ui-empty-state>\n            </div>\n\n            <c8y-list-group>\n              <c8y-list-item\n                class=\"sticky-top\"\n                style=\"top: 72px\"\n                *ngIf=\"items.length > maxNumberOfItems && filteredItems.length >= maxNumberOfItems\"\n              >\n                <div class=\"alert alert-warning m-b-0\">\n                  {{ timelineTypeTexts.largeNumberOfItemsInfo | translate }}\n                </div>\n              </c8y-list-item>\n              <c8y-alarm-event-selector-list-item\n                class=\"d-contents\"\n                [ngModel]=\"item\"\n                [isSelected]=\"selectedItems | includesAlarmOrEvent: item\"\n                (added)=\"itemAdded($event)\"\n                (removed)=\"itemRemoved($event)\"\n                [highlightText]=\"filterStringChanges$ | async\"\n                [timelineType]=\"timelineType\"\n                [hideSource]=\"hideSource\"\n                *ngFor=\"let item of filteredItems; trackBy: trackByFn\"\n              ></c8y-alarm-event-selector-list-item>\n            </c8y-list-group>\n          </ng-container>\n        </ng-container>\n      </ng-container>\n    </div>\n  </div>\n\n  <!-- last column  -->\n  <div class=\"inner-scroll bg-level-1\">\n    <p\n      class=\"text-medium m-b-4 p-l-16 p-r-16 p-t-8 p-b-8 separator-bottom sticky-top text-truncate\"\n      [title]=\"timelineTypeTexts.selectedItemsTitle | translate\"\n    >\n      {{ timelineTypeTexts.selectedItemsTitle | translate }}\n    </p>\n    <div class=\"d-flex flex-wrap gap-8 p-l-16 p-r-16 p-b-16\">\n      <c8y-ui-empty-state\n        [icon]=\"timelineTypeTexts.emptyStateIcon\"\n        [title]=\"timelineTypeTexts.noSelectedItemsTitle | translate\"\n        *ngIf=\"!selectedItems || !selectedItems.length\"\n        [horizontal]=\"true\"\n      ></c8y-ui-empty-state>\n\n      <div\n        [ngClass]=\"{\n          'c8y-alarm-pill': timelineType === 'ALARM',\n          'c8y-event-pill': timelineType === 'EVENT'\n        }\"\n        *ngFor=\"let selectedItem of selectedItems\"\n      >\n        <button\n          [title]=\"'Remove' | translate\"\n          type=\"button\"\n          [ngClass]=\"{\n            'c8y-alarm-pill__btn': timelineType === 'ALARM',\n            'c8y-event-pill__btn': timelineType === 'EVENT'\n          }\"\n          (click)=\"itemRemoved(selectedItem)\"\n        >\n          <i\n            class=\"icon-14\"\n            c8yIcon=\"remove\"\n          ></i>\n        </button>\n        <div\n          class=\"c8y-datapoint-pill__label\"\n          [title]=\"selectedItem.label || selectedItem.filters.type\"\n        >\n          <span\n            class=\"circle-icon-wrapper circle-icon-wrapper--small m-r-4\"\n            [style.background-color]=\"selectedItem.color || defaultColor\"\n          >\n            <i\n              class=\"stroked-icon\"\n              [c8yIcon]=\"timelineType === 'ALARM' ? 'bell' : 'online1'\"\n            ></i>\n          </span>\n          <span class=\"text-truncate\">\n            <span class=\"text-truncate\">{{ selectedItem.label || selectedItem.filters.type }}</span>\n            <small\n              class=\"text-muted text-10\"\n              *ngIf=\"!hideSource && selectedItem?.__target?.name\"\n            >\n              {{ selectedItem?.__target?.name }}\n            </small>\n          </span>\n        </div>\n      </div>\n    </div>\n  </div>\n</div>\n","import { Component } from '@angular/core';\nimport { IIdentified } from '@c8y/client';\nimport { BsModalRef } from 'ngx-bootstrap/modal';\nimport { AlarmOrEvent, OmitSelectorProperties, TimelineType } from '../alarm-event-selector.model';\nimport { AlarmEventSelectorComponent } from '../alarm-event-selector.component';\nimport { C8yTranslateDirective, C8yTranslatePipe } from '@c8y/ngx-components';\n\n@Component({\n  selector: 'c8y-alarm-event-selector-modal',\n  templateUrl: './alarm-event-selector-modal.component.html',\n  imports: [AlarmEventSelectorComponent, C8yTranslateDirective, C8yTranslatePipe]\n})\nexport class AlarmEventSelectorModalComponent {\n  selectType: TimelineType = 'ALARM';\n  contextAsset: IIdentified;\n  allowChangingContext = true;\n  allowSearch = true;\n  selectedItems = new Array<AlarmOrEvent>();\n  title: string;\n  groupsSelectable = true;\n  hideSource = false;\n  saveButtonLabel: string;\n  omitProperties: OmitSelectorProperties = {};\n  readonly result: Promise<AlarmOrEvent[]> = new Promise((resolve, reject) => {\n    this.save = resolve;\n    this.cancel = reject;\n  });\n\n  private save: (value: AlarmOrEvent[]) => void;\n  private cancel: (reason?: any) => void;\n\n  constructor(private bsModal: BsModalRef) {}\n\n  saveChanges(): void {\n    this.bsModal.hide();\n    this.save(this.selectedItems);\n  }\n\n  close() {\n    this.bsModal.hide();\n    this.cancel();\n  }\n\n  selectionChange(selection: Array<AlarmOrEvent>) {\n    this.selectedItems = selection;\n  }\n}\n","<div class=\"modal-header separator\">\n  <h4 class=\"text-medium\">{{ title | translate }}</h4>\n</div>\n<div class=\"modal-inner-scroll modal-inner-scroll--fixed\">\n  <c8y-alarm-event-selector\n    [selectedItems]=\"selectedItems\"\n    [contextAsset]=\"contextAsset\"\n    [timelineType]=\"selectType\"\n    [groupsSelectable]=\"groupsSelectable\"\n    [hideSource]=\"hideSource\"\n    [allowChangingContext]=\"allowChangingContext\"\n    [omitProperties]=\"omitProperties\"\n    (selectionChange)=\"selectionChange($event)\"\n  ></c8y-alarm-event-selector>\n</div>\n<div class=\"modal-footer\">\n  <button\n    type=\"button\"\n    [title]=\"'Cancel' | translate\"\n    class=\"btn btn-default\"\n    (click)=\"close()\"\n    translate\n  >\n    Cancel\n  </button>\n  <button\n    [title]=\"saveButtonLabel | translate\"\n    class=\"btn btn-primary\"\n    [disabled]=\"!this.selectedItems?.length\"\n    (click)=\"saveChanges()\"\n  >\n    {{ saveButtonLabel | translate }}\n  </button>\n</div>\n","import { Injectable } from '@angular/core';\nimport { AlarmOrEvent } from '../alarm-event-selector.model';\nimport { AlarmEventSelectorModalComponent } from './alarm-event-selector-modal.component';\nimport { BsModalService } from 'ngx-bootstrap/modal';\nimport { AlarmEventSelectorModalOptions } from './alarm-event-selector-modal.model';\n\n/**\n * Service to open the alarm event selector modal.\n */\n@Injectable({ providedIn: 'root' })\nexport class AlarmEventSelectorModalService {\n  constructor(private modal: BsModalService) {}\n  /**\n   * Opents the alarm or event selector modal.\n   * @param initialState Initial state of the modal.\n   * @returns Promise that resolves with the selected alarms or events.\n   */\n  selectItems(initialState: Partial<AlarmEventSelectorModalOptions> = {}): Promise<AlarmOrEvent[]> {\n    const modal = this.modal.show(AlarmEventSelectorModalComponent, {\n      ignoreBackdropClick: true,\n      keyboard: false,\n      initialState,\n      class: 'modal-lg'\n    });\n    const content = modal.content as AlarmEventSelectorModalComponent;\n    return content.result;\n  }\n}\n","import {\n  CdkDragDrop,\n  moveItemInArray,\n  CdkDropList,\n  CdkDrag,\n  CdkDragHandle\n} from '@angular/cdk/drag-drop';\nimport {\n  Component,\n  ContentChild,\n  forwardRef,\n  Input,\n  OnDestroy,\n  OnInit,\n  Optional\n} from '@angular/core';\nimport {\n  AbstractControl,\n  ControlValueAccessor,\n  FormArray,\n  FormBuilder,\n  NG_VALIDATORS,\n  NG_VALUE_ACCESSOR,\n  ValidationErrors,\n  Validator,\n  FormsModule,\n  ReactiveFormsModule,\n  FormGroup\n} from '@angular/forms';\nimport {\n  ContextRouteService,\n  EmptyStateComponent,\n  ViewContext,\n  ListGroupComponent,\n  ListItemDragHandleComponent,\n  IconDirective,\n  C8yTranslatePipe\n} from '@c8y/ngx-components';\nimport { WidgetConfigComponent } from '@c8y/ngx-components/context-dashboard';\nimport { debounceTime, map, take, takeUntil } from 'rxjs/operators';\nimport { AlarmEventSelectorModalOptions } from '../alarm-event-selector-modal/alarm-event-selector-modal.model';\nimport { AlarmEventSelectorModalService } from '../alarm-event-selector-modal/alarm-event-selector-modal.service';\nimport {\n  AlarmOrEvent,\n  OmitSelectorProperties,\n  TimelineType,\n  TimelineTypeTexts\n} from '../alarm-event-selector.model';\nimport { AlarmEventSelectorService } from '../alarm-event-selector.service';\nimport { Subject } from 'rxjs';\nimport { ActivatedRoute } from '@angular/router';\nimport { NgClass } from '@angular/common';\n\nimport { AlarmEventSelectorListItemComponent } from '../alarm-event-selector-list-item/alarm-event-selector-list-item.component';\n\n@Component({\n  selector: 'c8y-alarm-event-selection-list',\n  templateUrl: './alarm-event-selection-list.component.html',\n  providers: [\n    {\n      provide: NG_VALUE_ACCESSOR,\n      multi: true,\n      useExisting: forwardRef(() => AlarmEventSelectionListComponent)\n    },\n    {\n      provide: NG_VALIDATORS,\n      useExisting: forwardRef(() => AlarmEventSelectionListComponent),\n      multi: true\n    }\n  ],\n  imports: [\n    ListGroupComponent,\n    CdkDropList,\n    EmptyStateComponent,\n    FormsModule,\n    ReactiveFormsModule,\n    AlarmEventSelectorListItemComponent,\n    CdkDrag,\n    ListItemDragHandleComponent,\n    CdkDragHandle,\n    IconDirective,\n    NgClass,\n    C8yTranslatePipe\n  ]\n})\nexport class AlarmEventSelectionListComponent\n  implements ControlValueAccessor, Validator, OnInit, OnDestroy\n{\n  /**\n   * The type of timeline to be displayed.\n   * Can be either 'ALARM' or 'EVENT'.\n   */\n  @Input() timelineType: TimelineType = 'ALARM';\n\n  /**\n   * Whether the user can remove items from the list.\n   */\n  @Input() canRemove = true;\n\n  /**\n   * Whether the user can edit items in the alarm/event list.\n   */\n  @Input() canEdit = true;\n\n  @Input() canDragAndDrop = true;\n  @Input() title: string;\n\n  /**\n   * The label for the button to add items to the list.\n   * If not provided, a default label will be used based on the timeline type.\n   */\n  @Input() addButtonLabel: string;\n\n  /**\n   * Hide or show the source of the alarm or event.\n   */\n  @Input() hideSource = false;\n\n  /**\n   * Display the list inline or as a dropdown.\n   * If set to true, the list will be displayed inline.\n   */\n  @Input() inline = false; // TODO: @janhommes we should rename this to `isDropdownContained` or similar to make it more clear\n\n  /**\n   * Display the alarm/events as switch. If disabled it is displayed as checkbox instead.\n   */\n  @Input() activeToggleAsSwitch = true;\n\n  @Input() omitProperties: OmitSelectorProperties = { color: false, label: false };\n  @Input() datapoints = [];\n  @ContentChild(EmptyStateComponent) emptyState: EmptyStateComponent;\n\n  /**\n   * The configuration for the alarms-events selector modal.\n   */\n  @Input() config: Partial<AlarmEventSelectorModalOptions> = {};\n\n  formArray: FormArray;\n  timelineTypeTexts: TimelineTypeTexts;\n  contextSourceId: number | string | null;\n\n  private destroy$ = new Subject<void>();\n\n  constructor(\n    private alarmEventModalService: AlarmEventSelectorModalService,\n    private alarmEventSelectService: AlarmEventSelectorService,\n    private formBuilder: FormBuilder,\n    @Optional() private activatedRoute: ActivatedRoute,\n    @Optional() private contextRouteService: ContextRouteService,\n    @Optional() private widgetComponent: WidgetConfigComponent\n  ) {\n    this.formArray = this.formBuilder.array([]);\n  }\n\n  ngOnInit(): void {\n    this.timelineTypeTexts = this.alarmEventSelectService.timelineTypeTexts(this.timelineType);\n    this.title ??= this.timelineTypeTexts.listTitle;\n    this.addButtonLabel ??= this.timelineTypeTexts.addButtonLabel;\n    this.contextSourceId = this.initializeContextSourceId();\n    const context = this.widgetComponent?.context;\n    if (context?.id) {\n      const { name, id, c8y_IsDevice } = context;\n      this.config.contextAsset = { name, id, c8y_IsDevice };\n    }\n  }\n\n  ngOnDestroy(): void {\n    this.destroy$.next();\n    this.destroy$.complete();\n  }\n\n  registerOnTouched(fn: any): void {\n    this.formArray.valueChanges.pipe(take(1)).subscribe(fn);\n  }\n\n  validate(_control: AbstractControl): ValidationErrors {\n    return this.formArray.valid ? null : { formInvalid: {} };\n  }\n\n  get formGroups(): FormGroup[] {\n    return this.formArray.controls as FormGroup[];\n  }\n\n  writeValue(alarmsOrEvents: AlarmOrEvent[]): void {\n    this.formArray.clear();\n    if (alarmsOrEvents?.length) {\n      alarmsOrEvents.forEach(val => {\n        const formgroup = this.formBuilder.group({ details: [] });\n        formgroup.patchValue({ details: val });\n        this.formArray.push(formgroup);\n      });\n    }\n  }\n\n  registerOnChange(fn: any): void {\n    this.formArray.valueChanges\n      .pipe(\n        debounceTime(100), // debounce to avoid emitting of this.formArray.clear()\n        map(res => this.transformValue(res)),\n        takeUntil(this.destroy$)\n      )\n      .subscribe(fn);\n  }\n\n  add() {\n    const allowChangingContext =\n      !this.widgetComponent?.isDeviceTypeDashboard && this.config?.allowChangingContext !== false;\n    this.alarmEventModalService\n      .selectItems({\n        allowChangingContext,\n        selectType: this.timelineType,\n        selectedItems: this.transformValue(this.formArray.value),\n        allowSearch: !this.config?.contextAsset,\n        title: this.timelineTypeTexts.selectorTitle,\n        saveButtonLabel: this.timelineTypeTexts.addButtonLabel,\n        omitProperties: this.omitProperties,\n        contextAsset: this.config?.contextAsset\n          ? this.config.contextAsset\n          : this.contextSourceId\n            ? { id: this.contextSourceId }\n            : null,\n        ...(this.config || {})\n      })\n      .then(\n        result => {\n          this.writeValue(result);\n        },\n        () => {\n          // nothing to do, modal was closed\n        }\n      );\n  }\n\n  onItemRemoved(index: number) {\n    this.formArray.removeAt(index);\n  }\n\n  drop(event: CdkDragDrop<AlarmOrEvent[]>) {\n    const currentSorting = this.formArray.value;\n    moveItemInArray(currentSorting, event.previousIndex, event.currentIndex);\n    this.formArray.setValue(currentSorting);\n  }\n\n  private transformValue(formArrayValue: any[]) {\n    if (!formArrayValue) {\n      return [];\n    }\n    return formArrayValue.map(tmp => Object.assign({}, ...Object.values(tmp)));\n  }\n\n  private initializeContextSourceId(): number | string | null {\n    const routeContext = this.contextRouteService.getContextData(this.activatedRoute);\n    if (!routeContext) {\n      return;\n    }\n    const { context, contextData } = routeContext;\n    if ([ViewContext.Device, ViewContext.Group].includes(context)) {\n      return contextData?.id;\n    }\n  }\n}\n","@if (!inline) {\n  <div class=\"card-header separator-top-bottom sticky-top bg-inherit\">\n    <span class=\"card-title h4\">{{ title | translate }}</span>\n  </div>\n}\n\n<c8y-list-group\n  class=\"flex-grow ff-scroll-fix cdk-droplist\"\n  cdkDropList\n  (cdkDropListDropped)=\"drop($event)\"\n  [cdkDropListDisabled]=\"formArray.controls?.length < 2\"\n>\n  @if (!formArray.controls?.length) {\n    <div class=\"p-t-8\">\n      <ng-content select=\"c8y-ui-empty-state\"></ng-content>\n      @if (!emptyState) {\n        <c8y-ui-empty-state\n          class=\"p-t-8\"\n          [icon]=\"timelineTypeTexts.emptyStateIcon\"\n          [title]=\"timelineTypeTexts.emptyStateTitle | translate\"\n          [subtitle]=\"timelineTypeTexts.emptyStateSubtitle | translate\"\n          [horizontal]=\"true\"\n        ></c8y-ui-empty-state>\n      }\n    </div>\n  }\n\n  @for (formGroup of formGroups; track formGroup; let index = $index) {\n    <div [formGroup]=\"formGroup\">\n      <c8y-alarm-event-selector-list-item\n        class=\"d-block\"\n        cdkDrag\n        [cdkDragDisabled]=\"!canDragAndDrop\"\n        formControlName=\"details\"\n        [showAddRemoveButton]=\"false\"\n        [datapoints]=\"datapoints\"\n        [optionToRemove]=\"canRemove\"\n        [showActiveToggle]=\"true\"\n        [timelineType]=\"timelineType\"\n        [allowItemEdit]=\"canEdit\"\n        [hideSource]=\"hideSource\"\n        [displayAsSwitch]=\"activeToggleAsSwitch\"\n        [omitProperties]=\"omitProperties\"\n        (removed)=\"onItemRemoved(index)\"\n      >\n        @if (canDragAndDrop) {\n          <c8y-li-drag-handle\n            title=\"{{ 'Click and drag to reorder' | translate }}\"\n            cdkDragHandle\n          >\n            <i c8yIcon=\"drag-reorder\"></i>\n          </c8y-li-drag-handle>\n        }\n      </c8y-alarm-event-selector-list-item>\n    </div>\n  }\n</c8y-list-group>\n\n<div class=\"card-footer bg-inherit\">\n  <button\n    class=\"btn btn-default btn-sm\"\n    [title]=\"addButtonLabel | translate\"\n    type=\"button\"\n    (click)=\"add()\"\n  >\n    @if (canDragAndDrop) {\n      <i c8yIcon=\"plus-circle\"></i>\n    }\n    {{ addButtonLabel | translate }}\n  </button>\n</div>\n","import { NgModule } from '@angular/core';\nimport { RouterModule } from '@angular/router';\nimport { DragDropModule } from '@angular/cdk/drag-drop';\nimport { AlarmEventSelectionListComponent } from './alarm-event-selection-list/alarm-event-selection-list.component';\nimport { AlarmEventSelectorListItemComponent } from './alarm-event-selector-list-item/alarm-event-selector-list-item.component';\nimport { PopoverModule } from 'ngx-bootstrap/popover';\nimport { TooltipModule } from 'ngx-bootstrap/tooltip';\nimport { CollapseModule } from 'ngx-bootstrap/collapse';\nimport { AlarmEventAttributesFormComponent } from './alarm-event-attributes-form/alarm-event-attributes-form.component';\nimport { AlarmEventSelectorModalComponent } from './alarm-event-selector-modal/alarm-event-selector-modal.component';\nimport { AlarmEventSelectorComponent } from './alarm-event-selector.component';\nimport { IncludesAlarmOrEventPipe } from './pipes/includes-alarm.pipe';\nimport { CustomAlarmEventFormComponent } from './custom-alarm-event-form/custom-alarm-event-form.component';\nimport { AssetSelectorModule } from '@c8y/ngx-components/assets-navigator';\nimport { CommonModule, CoreModule } from '@c8y/ngx-components';\n\n@NgModule({\n  imports: [\n    CommonModule,\n    CoreModule,\n    DragDropModule,\n    PopoverModule,\n    TooltipModule,\n    AssetSelectorModule,\n    CollapseModule,\n    RouterModule.forChild([]),\n    AlarmEventSelectionListComponent,\n    AlarmEventSelectorListItemComponent,\n    AlarmEventAttributesFormComponent,\n    AlarmEventSelectorModalComponent,\n    AlarmEventSelectorComponent,\n    IncludesAlarmOrEventPipe,\n    CustomAlarmEventFormComponent\n  ],\n  exports: [AlarmEventSelectionListComponent, AlarmEventSelectorComponent]\n})\nexport class AlarmEventSelectorModule {}\n","import { Component, inject, Input, OnInit } from '@angular/core';\nimport { ControlContainer, FormsModule, NgForm } from '@angular/forms';\nimport { AsyncPipe } from '@angular/common';\nimport { WidgetConfigService } from '@c8y/ngx-components/context-dashboard';\nimport { AlarmEventSelectionListComponent } from './alarm-event-selection-list/alarm-event-selection-list.component';\nimport {\n  AlarmOrEvent,\n  ConfigStoreMode,\n  EventDetails,\n  TimelineType\n} from './alarm-event-selector.model';\n\n@Component({\n  selector: 'c8y-widget-event-selector',\n  template: `\n    <c8y-alarm-event-selection-list\n      class=\"bg-inherit\"\n      name=\"eventsConfigs\"\n      [(ngModel)]=\"events\"\n      (ngModelChange)=\"onEventsChange($event)\"\n      [timelineType]=\"timelineType\"\n      [inline]=\"true\"\n      [datapoints]=\"(widgetConfigService.currentConfig$ | async)?.datapoints\"\n    ></c8y-alarm-event-selection-list>\n  `,\n  host: { class: 'bg-level-1' },\n  standalone: true,\n  imports: [FormsModule, AlarmEventSelectionListComponent, AsyncPipe],\n  viewProviders: [{ provide: ControlContainer, useExisting: NgForm }]\n})\nexport class WidgetEventSelectorComponent implements OnInit {\n  /**\n   * The name of the control in the widget configuration where\n   * the selected events will be stored.\n   */\n  @Input() controlName = 'alarmsEventsConfigs';\n\n  /**\n   * Determines how the config is updated:\n   * - ISOLATED: Only stores items matching the events timelineType\n   * - MIXED: Stores both alarms and events together\n   */\n  @Input() configStoreMode: ConfigStoreMode = 'ISOLATED';\n\n  events: EventDetails[];\n\n  readonly widgetConfigService = inject(WidgetConfigService);\n  readonly timelineType: TimelineType = 'EVENT';\n\n  ngOnInit(): void {\n    this.events = this.getEvents();\n  }\n\n  onEventsChange(events: EventDetails[]): void {\n    this.updateEventsConfig(events ?? []);\n  }\n\n  private getEvents(): EventDetails[] {\n    return this.getAlarmsOrEventsFromWidgetConfig().filter(\n      ae => ae.timelineType === this.timelineType\n    ) as EventDetails[];\n  }\n\n  private updateEventsConfig(events: EventDetails[]): void {\n    if (this.configStoreMode === 'ISOLATED') {\n      this.widgetConfigService.updateConfig({ [this.controlName]: events });\n      return;\n    }\n\n    const alarmDetails = this.getAlarmsOrEventsFromWidgetConfig().filter(\n      config => config.timelineType !== this.timelineType\n    );\n\n    this.widgetConfigService.updateConfig({\n      [this.controlName]: [...alarmDetails, ...events]\n    });\n  }\n\n  private getAlarmsOrEventsFromWidgetConfig(): AlarmOrEvent[] {\n    const alarmOrEvents = this.widgetConfigService.currentConfig?.[\n      this.controlName\n    ] as AlarmOrEvent[];\n\n    return alarmOrEvents ?? [];\n  }\n}\n","import { Component, inject, Input, OnInit } from '@angular/core';\nimport { ControlContainer, FormsModule, NgForm } from '@angular/forms';\nimport { AsyncPipe } from '@angular/common';\nimport { WidgetConfigService } from '@c8y/ngx-components/context-dashboard';\nimport { AlarmEventSelectionListComponent } from './alarm-event-selection-list/alarm-event-selection-list.component';\nimport {\n  AlarmDetails,\n  AlarmOrEvent,\n  ConfigStoreMode,\n  TimelineType\n} from './alarm-event-selector.model';\n\n@Component({\n  selector: 'c8y-widget-alarm-selector',\n  template: `\n    <c8y-alarm-event-selection-list\n      class=\"bg-inherit\"\n      name=\"alarmsConfigs\"\n      [(ngModel)]=\"alarms\"\n      (ngModelChange)=\"onAlarmsChange($event)\"\n      [timelineType]=\"timelineType\"\n      [inline]=\"true\"\n      [datapoints]=\"(widgetConfigService.currentConfig$ | async)?.datapoints\"\n    ></c8y-alarm-event-selection-list>\n  `,\n  host: { class: 'bg-level-1' },\n  standalone: true,\n  imports: [FormsModule, AlarmEventSelectionListComponent, AsyncPipe],\n  viewProviders: [{ provide: ControlContainer, useExisting: NgForm }]\n})\nexport class WidgetAlarmSelectorComponent implements OnInit {\n  /**\n   * The name of the control in the widget configuration where\n   * the selected alarms will be stored.\n   */\n  @Input() controlName = 'alarmsEventsConfigs';\n\n  /**\n   * Determines how the config is updated:\n   * - ISOLATED: Only stores items matching the alarms timelineType\n   * - MIXED: Stores both alarms and events together\n   */\n  @Input() configStoreMode: ConfigStoreMode = 'ISOLATED';\n\n  alarms: AlarmDetails[];\n\n  readonly widgetConfigService = inject(WidgetConfigService);\n  readonly timelineType: TimelineType = 'ALARM';\n\n  ngOnInit(): void {\n    this.alarms = this.getAlarms();\n  }\n\n  onAlarmsChange(alarms: AlarmDetails[]): void {\n    this.updateAlarmsConfig(alarms ?? []);\n  }\n\n  private getAlarms(): AlarmDetails[] {\n    return this.getAlarmsOrEventsFromWidgetConfig().filter(\n      ae => ae.timelineType === this.timelineType\n    ) as AlarmDetails[];\n  }\n\n  private updateAlarmsConfig(alarms: AlarmDetails[]): void {\n    if (this.configStoreMode === 'ISOLATED') {\n      this.widgetConfigService.updateConfig({ [this.controlName]: alarms });\n      return;\n    }\n\n    const eventDetails = this.getAlarmsOrEventsFromWidgetConfig().filter(\n      config => config.timelineType !== this.timelineType\n    );\n\n    this.widgetConfigService.updateConfig({\n      [this.controlName]: [...eventDetails, ...alarms]\n    });\n  }\n\n  private getAlarmsOrEventsFromWidgetConfig(): AlarmOrEvent[] {\n    const alarmsOrEvents = this.widgetConfigService.currentConfig?.[\n      this.controlName\n    ] as AlarmOrEvent[];\n\n    return alarmsOrEvents ?? [];\n  }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i2.AlarmEventAttributesFormService","i1","i1.AlarmEventSelectorService","i2","i1.AlarmEventSelectorModalService","i2.AlarmEventSelectorService","i3","i5"],"mappings":"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"}