{"version":3,"file":"c8y-ngx-components-protocol-lwm2m-components-configuration.mjs","sources":["../../protocol-lwm2m/components/configuration/lwm2m-configuration.component.ts","../../protocol-lwm2m/components/configuration/lwm2m-configuration.component.html","../../protocol-lwm2m/components/configuration/typed-forms/form-wrapper-base.component.ts","../../protocol-lwm2m/components/configuration/typed-forms/form-wrapper-base.component.html","../../protocol-lwm2m/components/configuration/typed-forms/bootstrap-settings.component.ts","../../protocol-lwm2m/components/configuration/typed-forms/connectivity-settings.component.ts","../../protocol-lwm2m/components/configuration/typed-forms/device-settings.component.ts","../../protocol-lwm2m/components/configuration/typed-forms/firmware-settings.component.ts","../../protocol-lwm2m/components/configuration/typed-forms/single-server-settings.component.ts","../../protocol-lwm2m/components/configuration/typed-forms/create-single-server-settings.component.ts","../../protocol-lwm2m/components/configuration/typed-forms/servers-settings.component.ts","../../protocol-lwm2m/components/configuration/typed-forms/server-settings.component.html","../../protocol-lwm2m/components/configuration/c8y-ngx-components-protocol-lwm2m-components-configuration.ts"],"sourcesContent":["import { Component } from '@angular/core';\nimport { LWM2MEndpoint, Settings } from '@c8y/ngx-components/protocol-lwm2m/model';\nimport { ActivatedRoute, RouterModule } from '@angular/router';\nimport { Lwm2mConfigurationService } from '@c8y/ngx-components/protocol-lwm2m/services';\nimport { Lwm2mUIThemeModule } from '@c8y/ngx-components/protocol-lwm2m/formly';\nimport { CdkTreeModule } from '@angular/cdk/tree';\nimport { CoreModule, Tab, gettext } from '@c8y/ngx-components';\nimport { IIdentified } from '@c8y/client';\nimport { Lwm2mFormWrapperBase } from './typed-forms';\n\n@Component({\n  selector: 'c8y-lwm2m-configuration',\n  templateUrl: './lwm2m-configuration.component.html',\n  imports: [CoreModule, Lwm2mUIThemeModule, CdkTreeModule, RouterModule],\n  standalone: true\n})\nexport class Lwm2mConfigurationComponent {\n  tabs: Tab[];\n  componentInstance: Lwm2mFormWrapperBase<Settings>;\n\n  constructor(\n    private lwm2mConfigService: Lwm2mConfigurationService<IIdentified>,\n    private route: ActivatedRoute\n  ) {\n    this.lwm2mConfigService.deviceId = this.route?.snapshot?.parent?.params?.id;\n\n    this.tabs = [\n      {\n        icon: 'cog',\n        label: gettext('Device settings'),\n        path: this.getPath(LWM2MEndpoint.deviceSettings)\n      },\n      {\n        icon: 'connected',\n        label: gettext('Connectivity'),\n        path: this.getPath(LWM2MEndpoint.connectivity)\n      },\n      {\n        icon: 'c8y-firmware',\n        label: gettext('Firmware update'),\n        path: this.getPath(LWM2MEndpoint.firmware)\n      },\n      {\n        icon: 'root-server',\n        label: gettext('Bootstrap'),\n        path: this.getPath(LWM2MEndpoint.bootstrap)\n      },\n      {\n        icon: 'stack',\n        label: gettext('Servers written during bootstrap'),\n        path: this.getPath(LWM2MEndpoint.servers)\n      }\n    ];\n\n    this.lwm2mConfigService.getSecurityModes();\n  }\n\n  onActivate(event) {\n    this.componentInstance = event;\n  }\n\n  private getPath(endpoint: LWM2MEndpoint) {\n    const { deviceId } = this.lwm2mConfigService;\n    return `/device/${deviceId}/lwm2m-configuration/${endpoint}`;\n  }\n}\n","<div class=\"card content-fullpage d-col\">\n  <div class=\"card-header p-0\">\n    <c8y-ui-tabs\n      class=\"card-has-tabs card-tabs\"\n      [tabs]=\"tabs\"\n      [orientation]=\"'horizontal'\"\n    ></c8y-ui-tabs>\n  </div>\n  <div class=\"inner-scroll bg-level-0 flex-grow\">\n    <form class=\"card-block--formly fit-h\">\n      <router-outlet (activate)=\"onActivate($event)\"></router-outlet>\n    </form>\n  </div>\n  <div\n    class=\"card-footer separator sticky-bottom\"\n    *ngIf=\"componentInstance?.fields?.length > 0\"\n  >\n    <button\n      class=\"btn btn-default\"\n      title=\"{{ 'Cancel' | translate }}\"\n      type=\"button\"\n      (click)=\"componentInstance.cancel()\"\n      [disabled]=\"!componentInstance.form.dirty\"\n    >\n      {{ 'Cancel' | translate }}\n    </button>\n    <button\n      class=\"btn btn-primary\"\n      title=\"{{ 'Save' | translate }}\"\n      type=\"button\"\n      [disabled]=\"componentInstance.form.invalid || !componentInstance.form.dirty\"\n      (click)=\"componentInstance.save()\"\n    >\n      {{ 'Save' | translate }}\n    </button>\n  </div>\n</div>\n","import { Component, OnDestroy, OnInit, inject } from '@angular/core';\nimport { AlertService, CoreModule, Permissions } from '@c8y/ngx-components';\nimport { Lwm2mUIThemeModule } from '@c8y/ngx-components/protocol-lwm2m/formly';\nimport { FormlyFieldConfig, FormlyFormBuilder, FormlyFormOptions } from '@ngx-formly/core';\nimport { LWM2MEndpoint, permissionAlert } from '@c8y/ngx-components/protocol-lwm2m/model';\nimport { FormGroup } from '@angular/forms';\nimport { Subject } from 'rxjs';\nimport { takeUntil } from 'rxjs/operators';\nimport { Lwm2mConfigurationService } from '@c8y/ngx-components/protocol-lwm2m/services';\n\n@Component({\n  templateUrl: './form-wrapper-base.component.html',\n  imports: [CoreModule, Lwm2mUIThemeModule],\n  standalone: true,\n  selector: 'c8y-lwm2m-form-wrapper-base'\n})\nexport abstract class Lwm2mFormWrapperBase<T> implements OnInit, OnDestroy {\n  private alertService: AlertService;\n  protected abstract endpoint: LWM2MEndpoint;\n  protected destroy$: Subject<void> = new Subject();\n\n  model = {} as T;\n  form = new FormGroup({});\n  fields: FormlyFieldConfig[] = [];\n  buttons = {};\n  options: FormlyFormOptions = {\n    formState: { disabled: false }\n  };\n\n  constructor(protected service: Lwm2mConfigurationService<T>) {\n    this.fields = this.createForm();\n\n    inject(FormlyFormBuilder)?.buildForm(this.form, this.fields, this.model, this.options);\n\n    if (!inject(Permissions)?.hasRole(Permissions.ROLE_INVENTORY_ADMIN)) {\n      this.alertService = inject(AlertService);\n      this.alertService.info(permissionAlert.text as string);\n      this.form.disable();\n      this.options.formState.disabled = true;\n    }\n  }\n\n  abstract createForm(): FormlyFieldConfig[];\n\n  ngOnInit(): void {\n    this.service.settings$.pipe(takeUntil(this.destroy$)).subscribe(next => (this.model = next));\n    this.service.getSettingsFor({ endpoint: this.endpoint });\n  }\n\n  ngOnDestroy(): void {\n    this.alertService?.remove(permissionAlert);\n    this.destroy$.next();\n    this.destroy$.complete();\n  }\n\n  save() {\n    this.form.markAsPristine();\n    this.form.markAsUntouched();\n    this.service.updateConfig(this.model, this.endpoint);\n  }\n\n  cancel = () => {\n    this.options.resetModel();\n    this.service.getSettingsFor({ endpoint: this.endpoint });\n  };\n}\n","<formly-form\n  *ngIf=\"fields?.length > 0; else empty\"\n  [model]=\"model\"\n  [form]=\"form\"\n  [fields]=\"fields\"\n  [options]=\"options\"\n  data-cy=\"lwm2m-device-configuration--formly-form\"\n></formly-form>\n<ng-template #empty>\n  <c8y-ui-empty-state\n    [icon]=\"'c8y-device-protocols'\"\n    title=\"{{ 'No configuration selected' | translate }}\"\n    subtitle=\"{{ 'Select a configuration on the left' | translate }}\"\n  ></c8y-ui-empty-state>\n</ng-template>\n","import { Component } from '@angular/core';\nimport { CoreModule, gettext } from '@c8y/ngx-components';\nimport { Lwm2mUIThemeModule } from '@c8y/ngx-components/protocol-lwm2m/formly';\nimport { BootstrapSettings, LWM2MEndpoint } from '@c8y/ngx-components/protocol-lwm2m/model';\nimport { Lwm2mFormWrapperBase } from './form-wrapper-base.component';\nimport { Lwm2mConfigurationService } from '@c8y/ngx-components/protocol-lwm2m/services';\n\n@Component({\n  templateUrl: './form-wrapper-base.component.html',\n  imports: [CoreModule, Lwm2mUIThemeModule],\n  standalone: true,\n  selector: 'c8y-lwm2m-form-bootstrap-settings'\n})\nexport class Lwm2mFormBootstrapSettings extends Lwm2mFormWrapperBase<BootstrapSettings> {\n  protected endpoint: LWM2MEndpoint = LWM2MEndpoint.bootstrap;\n  constructor(protected service: Lwm2mConfigurationService<BootstrapSettings>) {\n    super(service);\n  }\n\n  createForm() {\n    return [\n      {\n        fieldGroup: [\n          {\n            key: 'bootstrapServerId',\n            type: 'number',\n            props: {\n              label: gettext('Bootstrap Server ID'),\n              placeholder: '1',\n              min: 0\n            }\n          },\n          {\n            key: 'securityInstanceOffset',\n            type: 'number',\n            props: {\n              label: gettext('Security instance offset'),\n              placeholder: '1',\n              min: 0\n            }\n          }\n        ]\n      }\n    ];\n  }\n}\n","import { Component } from '@angular/core';\nimport { CoreModule, gettext } from '@c8y/ngx-components';\nimport { Lwm2mUIThemeModule } from '@c8y/ngx-components/protocol-lwm2m/formly';\nimport { ConnectivitySettings, LWM2MEndpoint } from '@c8y/ngx-components/protocol-lwm2m/model';\nimport { Lwm2mFormWrapperBase } from './form-wrapper-base.component';\nimport { Lwm2mConfigurationService } from '@c8y/ngx-components/protocol-lwm2m/services';\nimport { delay, map } from 'rxjs';\n\n@Component({\n  templateUrl: './form-wrapper-base.component.html',\n  imports: [CoreModule, Lwm2mUIThemeModule],\n  standalone: true,\n  selector: 'c8y-lwm2m-form-connectivity-settings'\n})\nexport class Lwm2mFormConnectivitySettings extends Lwm2mFormWrapperBase<ConnectivitySettings> {\n  protected endpoint: LWM2MEndpoint = LWM2MEndpoint.connectivity;\n  constructor(protected service: Lwm2mConfigurationService<ConnectivitySettings>) {\n    super(service);\n  }\n\n  createForm() {\n    const selects = [\n      {\n        key: 'bootstrapConnectivity',\n        label: gettext('Bootstrap server authentication'),\n        options: this.service.securityModesRaw$.pipe(\n          map(dictObjs => dictObjs.filter(o => o?.useInBootstrapConnectivity)),\n          delay(1)\n        )\n      },\n      {\n        key: 'serverConnectivity',\n        label: gettext('Server authentication'),\n        options: this.service.securityModesRaw$.pipe(\n          map(dictObjs => dictObjs.filter(o => o?.useInServerConnectivity)),\n          delay(1)\n        )\n      }\n    ];\n\n    return [\n      {\n        fieldGroup: [\n          ...selects.map(select => ({\n            key: select.key,\n            wrappers: ['legend'],\n            props: {\n              label: select.label\n            },\n            fieldGroup: [\n              {\n                type: '#securityMode',\n                props: {\n                  options: select.options\n                }\n              },\n              { type: '#pskId' },\n              { type: '#pskKey' }\n            ]\n          }))\n        ]\n      }\n    ];\n  }\n}\n","import { Component } from '@angular/core';\nimport { CoreModule, gettext } from '@c8y/ngx-components';\nimport { Lwm2mUIThemeModule } from '@c8y/ngx-components/protocol-lwm2m/formly';\nimport {\n  AutoManageAvailabilty,\n  BinaryEncoding,\n  DeviceSettings,\n  LWM2MEndpoint,\n  SerializationFormat\n} from '@c8y/ngx-components/protocol-lwm2m/model';\nimport { Lwm2mFormWrapperBase } from './form-wrapper-base.component';\nimport { Lwm2mConfigurationService } from '@c8y/ngx-components/protocol-lwm2m/services';\n\n@Component({\n  templateUrl: './form-wrapper-base.component.html',\n  imports: [CoreModule, Lwm2mUIThemeModule],\n  standalone: true,\n  selector: 'c8y-lwm2m-form-device-settings'\n})\nexport class Lwm2mFormDeviceSettings extends Lwm2mFormWrapperBase<DeviceSettings> {\n  protected endpoint: LWM2MEndpoint = LWM2MEndpoint.deviceSettings;\n  constructor(protected service: Lwm2mConfigurationService<DeviceSettings>) {\n    super(service);\n  }\n\n  createForm() {\n    return [\n      {\n        fieldGroup: [\n          {\n            key: 'endpointId',\n            type: 'string',\n            props: {\n              label: gettext('Endpoint client ID'),\n              required: true\n            }\n          },\n          {\n            key: 'awakeTime',\n            type: 'number',\n            props: {\n              label: gettext('Awake time registration parameter'),\n              description: gettext('in milliseconds, 0 means device is always online'),\n              placeholder: '0',\n              min: 0\n            }\n          },\n          {\n            key: 'requestTimeout',\n            type: 'number',\n            props: {\n              label: gettext('LWM2M request timeout'),\n              description: gettext('in milliseconds'),\n              placeholder: '180000',\n              min: 0\n            }\n          },\n          {\n            key: 'binaryEncoding',\n            type: 'select',\n            defaultValue: BinaryEncoding.OPAQUE,\n            props: {\n              label: gettext('Binary delivery encoding'),\n              options: Object.values(BinaryEncoding).map(value => ({ label: value, value }))\n            }\n          },\n          {\n            key: 'serializationFormat',\n            type: 'select',\n            props: {\n              label: gettext('Serialization format'),\n              placeholder: gettext('Default device value'),\n              options: [\n                ...Object.values(SerializationFormat).map(value => ({ label: value, value }))\n              ],\n              description: gettext(\n                'Indicates the preferred content format for LWM2M Agent to use to communicate with the device.'\n              ),\n              acceptUndefined: true,\n              removeExempliGratia: true\n            }\n          },\n          {\n            key: 'useTimestampResources',\n            type: 'switch',\n            defaultValue: false,\n            props: {\n              label: gettext('Use source timestamp'),\n              description: gettext(\n                'LWM2M offers various methods for associating timestamp information with data points, including resources 5518 and 6050, SenML, or resource 5 for the location object (6). When activated, the LWM2M agent utilizes this timestamp data source to generate measurements, events, or alarms. If deactivated, the LWM2M agent resorts to using its local time.'\n              )\n            }\n          },\n          {\n            key: 'keepOldValuesOnOperationFail',\n            type: 'switch',\n            defaultValue: false,\n            props: {\n              label: gettext('Keep old values'),\n              description: gettext('Keep old values in the objects tab if an operation fails')\n            }\n          },\n          {\n            key: 'disableObjectInstanceActions',\n            type: 'switch',\n            defaultValue: false,\n            props: {\n              label: gettext('Disable default behavior for object instances'),\n              description: gettext('Turns off the internal default handling of objects 3, 4 and 6')\n            }\n          },\n          {\n            key: 'autoManageAvailabilityRequiredInterval',\n            type: 'select',\n            defaultValue: null,\n            props: {\n              label: gettext('Set the required interval automatically'),\n              options: [\n                { label: gettext('Default'), value: null },\n                ...Object.entries(AutoManageAvailabilty).map(entry => {\n                  return { label: gettext(entry[0]), value: !!+entry[1] };\n                })\n              ],\n              description: gettext(\n                'When enabled, the LWM2M service automatically sets the interval to registration lifetime plus 2 minutes.'\n              )\n            }\n          }\n        ]\n      }\n    ];\n  }\n}\n","import { Component } from '@angular/core';\nimport { CoreModule, gettext } from '@c8y/ngx-components';\nimport { Lwm2mUIThemeModule } from '@c8y/ngx-components/protocol-lwm2m/formly';\nimport {\n  LWM2MEndpoint,\n  FWU_DeliveryMethod,\n  FWU_ResetMechanism,\n  FWU_SupportedDeviceProtocol,\n  FirmwareSettings\n} from '@c8y/ngx-components/protocol-lwm2m/model';\nimport { Lwm2mFormWrapperBase } from './form-wrapper-base.component';\nimport { Lwm2mConfigurationService } from '@c8y/ngx-components/protocol-lwm2m/services';\n\n@Component({\n  templateUrl: './form-wrapper-base.component.html',\n  imports: [CoreModule, Lwm2mUIThemeModule],\n  standalone: true,\n  selector: 'c8y-lwm2m-form-firmware-settings'\n})\nexport class Lwm2mFormFirmwareSettings extends Lwm2mFormWrapperBase<FirmwareSettings> {\n  protected endpoint = LWM2MEndpoint.firmware;\n  constructor(protected service: Lwm2mConfigurationService<FirmwareSettings>) {\n    super(service);\n  }\n\n  createForm() {\n    const selects = [\n      {\n        key: 'firmwareDeliveryMethod',\n        label: gettext('Update`verb` delivery method'),\n        _enum: FWU_DeliveryMethod\n      },\n      {\n        key: 'supportedDeviceProtocol',\n        label: gettext('Update`verb` supported device protocol'),\n        _enum: FWU_SupportedDeviceProtocol\n      },\n      {\n        key: 'resetMethod',\n        label: gettext('Update`verb` reset mechanism'),\n        _enum: FWU_ResetMechanism\n      }\n    ];\n    return [\n      {\n        fieldGroup: [\n          {\n            key: 'disableFirmwareStateMachine',\n            type: 'switch',\n            defaultValue: false,\n            props: {\n              label: gettext('Disable automated firmware update support'),\n              description: gettext('Turns off the internal firmware update state machine')\n            }\n          },\n          {\n            key: 'url',\n            type: 'string',\n            props: {\n              label: gettext('Update`noun` URL'),\n              placeholder: 'firmware-image-url',\n              description: gettext('If not specified, LWM2M Agent generates the URL')\n            },\n            expressions: {\n              hide: 'model.disableFirmwareStateMachine'\n            }\n          },\n          {\n            key: 'resetStateMachineOnStart',\n            type: 'switch',\n            defaultValue: false,\n            props: {\n              label: gettext('Always reset firmware state machine'),\n              description: gettext(\n                'Controls if the LWM2M Agent performs an initial state machine reset before it starts a firmware update'\n              )\n            },\n            expressions: {\n              hide: 'model.disableFirmwareStateMachine'\n            }\n          },\n          ...selects.map(select => ({\n            key: select.key,\n            type: 'select',\n            props: {\n              label: select.label,\n              placeholder: gettext('Default device value'),\n              options: Object.values(select._enum).map(value => ({ label: value, value })),\n              acceptUndefined: true,\n              removeExempliGratia: true\n            },\n            expressions: {\n              hide: 'model.disableFirmwareStateMachine'\n            }\n          })),\n          {\n            key: 'failOnStateAndResultIncompatibility',\n            type: 'switch',\n            defaultValue: false,\n            props: {\n              label: gettext('Fail device firmware update on unexpected result'),\n              description: gettext(\n                'If the configuration is enabled, the firmware update operation will fail if the update result (resource 5) is not as expected based on the LWM2M firmware state machine.'\n              )\n            }\n          }\n        ]\n      }\n    ];\n  }\n}\n","import { Component, OnInit, inject } from '@angular/core';\nimport { AlertService, CoreModule, DroppedFile, gettext } from '@c8y/ngx-components';\nimport { Lwm2mUIThemeModule } from '@c8y/ngx-components/protocol-lwm2m/formly';\nimport { Lwm2mConfigurationService } from '@c8y/ngx-components/protocol-lwm2m/services';\nimport { FormlyFieldConfig } from '@ngx-formly/core';\nimport {\n  BindingMode,\n  CertificateUsage,\n  LWM2MEndpoint,\n  Mode,\n  Security,\n  ServerSettings,\n  ValidationType\n} from '@c8y/ngx-components/protocol-lwm2m/model';\nimport { Lwm2mFormWrapperBase } from './form-wrapper-base.component';\nimport { catchError, delay, filter, map, takeUntil } from 'rxjs/operators';\nimport { ActivatedRoute, Router, RouterModule } from '@angular/router';\nimport { of } from 'rxjs';\n\n@Component({\n  templateUrl: './form-wrapper-base.component.html',\n  imports: [CoreModule, Lwm2mUIThemeModule, RouterModule],\n  standalone: true,\n  selector: 'c8y-lwm2m-form-single-server-settings'\n})\nexport class Lwm2mFormSingleServerSettings\n  extends Lwm2mFormWrapperBase<ServerSettings>\n  implements OnInit\n{\n  id: string;\n  protected endpoint: LWM2MEndpoint = LWM2MEndpoint.servers;\n  protected alert: AlertService;\n  private readonly COAP = 'coap://';\n  private readonly COAPS = 'coaps://';\n  private router: Router;\n  private route: ActivatedRoute;\n\n  constructor(protected service: Lwm2mConfigurationService<ServerSettings>) {\n    super(service);\n    this.router = inject(Router);\n    this.route = inject(ActivatedRoute);\n    this.alert = inject(AlertService);\n  }\n\n  ngOnInit(): void {\n    this.service.settings$.pipe(takeUntil(this.destroy$)).subscribe(data => (this.model = data));\n    this.service.getSettingsFor({ endpoint: this.endpoint, id: this.id });\n  }\n\n  createForm() {\n    return [\n      {\n        wrappers: ['legend'],\n        fieldGroup: [\n          {\n            key: 'bootstrap',\n            type: 'switch',\n            defaultValue: false,\n            props: {\n              label: gettext('Bootstrap server'),\n              description: gettext('This configuration is for a bootstrap server')\n            }\n          },\n          {\n            key: 'uri',\n            type: 'input-addon',\n            props: {\n              label: gettext('Server URI'),\n              addonLabel: this.COAP,\n              required: true,\n              placeholder: '<LWM2M-server-domain>:<coap(s)-port>'\n            },\n            hooks: {\n              onInit: (field: FormlyFieldConfig) => {\n                field.props.addonLabel = this.COAP;\n                return field.options.fieldChanges.pipe(\n                  filter(\n                    e => e.type === 'valueChanges' && (e.field === field || e.field.key === 'mode')\n                  ),\n                  map(e => {\n                    if (e.field.key === 'uri')\n                      field.formControl.setValue(\n                        ((e.value as string) || '').replace(/^.*:\\/\\//i, '')\n                      );\n                    field.props.addonLabel =\n                      field.model?.security?.mode === Mode.NO_SEC ? this.COAP : this.COAPS;\n                    return e;\n                  })\n                );\n              }\n            }\n          },\n          {\n            key: 'security',\n            wrappers: ['legend'],\n            props: {\n              label: 'Security'\n            },\n            fieldGroup: [\n              {\n                type: '#securityMode',\n                hooks: {\n                  onInit: (field: FormlyFieldConfig) => {\n                    field.props.options = this.service.securityModesByScope$.pipe(delay(1));\n                    this.service.getSecurityModeByScope('useInServerConnectivity');\n                    return field.options.fieldChanges.pipe(\n                      filter(e => e.type === 'valueChanges' && e.field.key === 'bootstrap'),\n                      map(e => {\n                        if (e.value) {\n                          this.service.getSecurityModeByScope('useInBootstrapConnectivity');\n                          if (field.model?.mode === Mode.X509_EST) {\n                            field.formControl.setValue(Mode.NO_SEC);\n                          }\n                        } else {\n                          this.service.getSecurityModeByScope('useInServerConnectivity');\n                        }\n                        return e;\n                      })\n                    );\n                  }\n                }\n              },\n              { type: '#pskId' },\n              { type: '#pskKey' },\n              {\n                key: 'x509ServerCertificateName',\n                type: 'select',\n                props: {\n                  label: gettext('Server certificate'),\n                  placeholder: gettext('Not written`setting`'),\n                  acceptUndefined: true,\n                  removeExempliGratia: true,\n                  options: this.service.certificates$.pipe(\n                    map(certs => certs.map(value => ({ label: value, value })))\n                  )\n                },\n                expressions: {\n                  'props.disabled': (field: FormlyFieldConfig) =>\n                    field?.options?.formState?.disabled,\n                  hide: (field: FormlyFieldConfig) => {\n                    return field.model?.mode !== Mode.X509 && field.model?.mode !== Mode.X509_EST;\n                  }\n                }\n              },\n              {\n                key: 'certificateUsage',\n                type: 'select',\n                props: {\n                  label: gettext('Certificate usage'),\n                  placeholder: gettext('Not written`setting`'),\n                  acceptUndefined: true,\n                  removeExempliGratia: true,\n                  options: Object.values(CertificateUsage).map(value => ({ label: value, value }))\n                },\n                expressions: {\n                  'props.disabled': (field: FormlyFieldConfig) =>\n                    field?.options?.formState?.disabled,\n                  hide: (field: FormlyFieldConfig) => {\n                    return field.model?.mode !== Mode.X509 && field.model?.mode !== Mode.X509_EST;\n                  }\n                }\n              },\n              {\n                key: 'certificateDropArea',\n                type: 'file',\n                props: {\n                  accept: 'pem',\n                  label: gettext('Certificate'),\n                  description: gettext('One .pem file may be uploaded'),\n                  forceHideList: true,\n                  dropped: async (files: DroppedFile[]) =>\n                    this.patchCommonName(\n                      this.service.cleanUpBase64Data(\n                        (await files?.pop()?.readAsDataURL()) as string\n                      )\n                    )\n                },\n                expressions: {\n                  hide: (field: FormlyFieldConfig) => {\n                    return (\n                      field.model?.mode !== Mode.X509 || !!field.model?.x509CertificateCommonName\n                    );\n                  }\n                }\n              },\n              {\n                key: 'x509CertificateCommonName',\n                type: 'file-pick-replace',\n                props: {\n                  label: gettext('Certificate Common Name'),\n                  remove: () => this.removeCertificateAndCommonName(),\n                  onPick: certificate => this.patchCommonName(certificate)\n                },\n                expressions: {\n                  'props.disabled': (field: FormlyFieldConfig) =>\n                    field?.options?.formState?.disabled,\n                  hide: (field: FormlyFieldConfig) => {\n                    return (\n                      field.model?.mode !== Mode.X509 || !field.model?.x509CertificateCommonName\n                    );\n                  }\n                }\n              },\n              {\n                key: 'privateKeyDropArea',\n                type: 'file',\n                props: {\n                  accept: 'pem',\n                  label: gettext('Private key'),\n                  description: gettext('One .pem file may be uploaded'),\n                  forceHideList: true,\n                  disabled: true,\n                  dropped: async (files: DroppedFile[]) =>\n                    this.patchFingerprint(\n                      this.service.cleanUpBase64Data(\n                        (await files?.pop()?.readAsDataURL()) as string\n                      )\n                    )\n                },\n                expressions: {\n                  'props.disabled': (field: FormlyFieldConfig) =>\n                    field?.options?.formState?.disabled,\n                  hide: (field: FormlyFieldConfig) => {\n                    return (\n                      field.model?.mode !== Mode.X509 || !!field.model?.x509PrivateKeyFingerPrint\n                    );\n                  }\n                }\n              },\n              {\n                key: 'x509PrivateKeyFingerPrint',\n                type: 'file-pick-replace',\n                props: {\n                  label: gettext('Fingerprint of the private key'),\n                  remove: () => this.removePrivateKeyAndFingerprint(),\n                  onPick: privateKey => this.patchFingerprint(privateKey)\n                },\n                expressions: {\n                  'props.disabled': (field: FormlyFieldConfig) =>\n                    field?.options?.formState?.disabled,\n                  hide: (field: FormlyFieldConfig) => {\n                    return (\n                      field.model?.mode !== Mode.X509 || !field.model?.x509PrivateKeyFingerPrint\n                    );\n                  }\n                }\n              }\n            ]\n          },\n          {\n            wrappers: ['legend'],\n            props: {\n              label: gettext('Server object configuration')\n            },\n            fieldGroup: [\n              {\n                key: 'storeNotifications',\n                type: 'switch',\n                defaultValue: false,\n                props: {\n                  label: gettext('Store notifications'),\n                  description: gettext(\n                    'LWM2M Client to store notify operations when client is offline or LWM2M Server is disabled. Also used to forward them to the LWM2M Server when the client is able to connect.'\n                  )\n                }\n              },\n              {\n                key: 'shortServerId',\n                type: 'number',\n                props: {\n                  label: gettext('Short Server ID'),\n                  description: gettext('in numbers'),\n                  placeholder: '1',\n                  min: 0\n                }\n              },\n              {\n                key: 'registrationLifetime',\n                type: 'number',\n                props: {\n                  label: gettext('Registration lifetime'),\n                  description: gettext('in seconds'),\n                  placeholder: '600',\n                  min: 0\n                }\n              },\n              {\n                key: 'defaultMinPeriod',\n                type: 'number',\n                props: {\n                  label: gettext('Default minimum period'),\n                  description: gettext('in seconds'),\n                  placeholder: '10',\n                  min: 0\n                }\n              },\n              {\n                key: 'defaultMaxPeriod',\n                type: 'number',\n                props: {\n                  label: gettext('Default maximum period'),\n                  description: gettext('in seconds'),\n                  placeholder: '60',\n                  min: 0\n                }\n              },\n              {\n                key: 'bindingMode',\n                type: 'select',\n                defaultValue: BindingMode.U,\n                props: {\n                  label: gettext('Binding mode'),\n                  options: Object.values(BindingMode).map(value => ({\n                    label:\n                      value === BindingMode.U ? gettext('UDP') : gettext('UDP with queue mode'),\n                    value\n                  }))\n                }\n              },\n              {\n                key: 'disableTimeout',\n                type: 'number',\n                props: {\n                  label: gettext('Disable timeout'),\n                  description: gettext('in seconds'),\n                  placeholder: '86400',\n                  min: 0\n                }\n              }\n            ]\n          }\n        ]\n      }\n    ];\n  }\n\n  save() {\n    this.service\n      .update$({\n        ...this.model,\n        uri: this.getFullURI(),\n        endpoint: LWM2MEndpoint.servers\n      })\n      .pipe(\n        catchError(err => {\n          this.alert.addServerFailure(err);\n          return of(null);\n        })\n      )\n      .subscribe(_next => this.cancel());\n  }\n\n  delete() {\n    this.service\n      .deleteServer$(this.model)\n      .pipe(\n        catchError(err => {\n          this.alert.addServerFailure(err);\n          return of(null);\n        })\n      )\n      .subscribe(_next => this.cancel());\n  }\n\n  cancel = () => this.router.navigate(['../servers'], { relativeTo: this.route });\n\n  protected getFullURI() {\n    const {\n      uri,\n      security: { mode = Mode.NO_SEC }\n    } = this.model;\n    return (mode === Mode.NO_SEC ? this.COAP : this.COAPS).concat(uri);\n  }\n\n  private patchFingerprint(privateKey: string) {\n    if (privateKey?.length > 0) {\n      this.service\n        .validate(privateKey, ValidationType.PRIVATE_KEY)\n        .pipe(takeUntil(this.destroy$))\n        .subscribe(\n          fingerprint => {\n            this.model.security.x509PrivateKey = privateKey;\n            this.model.security.x509PrivateKeyFingerPrint = fingerprint;\n            this.form.patchValue(this.model);\n            this.form.markAsDirty();\n          },\n          _error => {\n            // already catched\n          }\n        );\n    }\n  }\n\n  private patchCommonName(certificate: string) {\n    if (certificate?.length > 0) {\n      this.service\n        .validate(certificate, ValidationType.X509)\n        .pipe(takeUntil(this.destroy$))\n        .subscribe(\n          commonName => {\n            this.model.security.x509Certificate = certificate;\n            this.model.security.x509CertificateCommonName = commonName;\n            this.form.patchValue(this.model);\n            this.form.markAsDirty();\n          },\n          _error => {\n            // already catched\n          }\n        );\n    }\n  }\n\n  private removePrivateKeyAndFingerprint() {\n    this.form.patchValue({\n      security: {\n        x509PrivateKey: null,\n        x509PrivateKeyFingerPrint: null\n      } as Partial<Security>\n    });\n    delete this.model?.security?.x509PrivateKey;\n    delete this.model?.security?.x509PrivateKeyFingerPrint;\n    this.form.markAsDirty();\n  }\n\n  private removeCertificateAndCommonName() {\n    this.form.patchValue({\n      security: {\n        x509Certificate: null,\n        x509CertificateCommonName: null\n      } as Partial<Security>\n    });\n    delete this.model?.security?.x509CertificateCommonName;\n    delete this.model?.security?.x509Certificate;\n    this.form.markAsDirty();\n  }\n}\n","import { Component, OnInit } from '@angular/core';\nimport { CoreModule } from '@c8y/ngx-components';\nimport { Lwm2mUIThemeModule } from '@c8y/ngx-components/protocol-lwm2m/formly';\nimport { ServerSettings } from '@c8y/ngx-components/protocol-lwm2m/model';\nimport { Lwm2mConfigurationService } from '@c8y/ngx-components/protocol-lwm2m/services';\nimport { Lwm2mFormSingleServerSettings } from './single-server-settings.component';\nimport { catchError } from 'rxjs/operators';\nimport { of } from 'rxjs';\n\n@Component({\n  templateUrl: './form-wrapper-base.component.html',\n  imports: [CoreModule, Lwm2mUIThemeModule],\n  standalone: true,\n  selector: 'c8y-lwm2m-form-create-single-server-settings'\n})\nexport class Lwm2mFormCreateSingleServerSettings\n  extends Lwm2mFormSingleServerSettings\n  implements OnInit\n{\n  constructor(protected service: Lwm2mConfigurationService<ServerSettings>) {\n    super(service);\n  }\n\n  ngOnInit() {\n    // override by design\n  }\n\n  create() {\n    this.service\n      .createServer$({\n        ...this.model,\n        uri: this.getFullURI()\n      })\n      .pipe(\n        catchError(err => {\n          this.alert.addServerFailure(err);\n          return of(null);\n        })\n      )\n      .subscribe(_next => this.cancel());\n  }\n}\n","import { Component, ComponentRef, OnInit, ViewChild, ViewContainerRef } from '@angular/core';\nimport { CoreModule, gettext } from '@c8y/ngx-components';\nimport { Lwm2mUIThemeModule } from '@c8y/ngx-components/protocol-lwm2m/formly';\nimport { ServerSettings } from '@c8y/ngx-components/protocol-lwm2m/model';\nimport { Lwm2mConfigurationService } from '@c8y/ngx-components/protocol-lwm2m/services';\nimport { Lwm2mFormSingleServerSettings } from './single-server-settings.component';\nimport { map, takeUntil } from 'rxjs/operators';\nimport { ActivatedRoute, Router, RouterModule } from '@angular/router';\nimport { Lwm2mFormCreateSingleServerSettings } from './create-single-server-settings.component';\nimport { Subject } from 'rxjs';\n\n@Component({\n  templateUrl: './server-settings.component.html',\n  imports: [CoreModule, Lwm2mUIThemeModule, Lwm2mFormSingleServerSettings, RouterModule],\n  standalone: true,\n  selector: 'c8y-lwm2m-form-server-settings'\n})\nexport class Lwm2mFormServerSettings implements OnInit {\n  private componentRef: ComponentRef<\n    Lwm2mFormSingleServerSettings | Lwm2mFormCreateSingleServerSettings\n  >;\n  private destroy$: Subject<void> = new Subject();\n  @ViewChild('singleServerForm', { read: ViewContainerRef, static: true })\n  formContainer: ViewContainerRef;\n  cmp: Lwm2mFormSingleServerSettings;\n  id: string;\n\n  listelements$ = this.service.servers$.pipe(\n    map(servers =>\n      servers.map(server => ({\n        title: server.uri || gettext('Invalid server configuration'),\n        icon: 'server',\n        id: server.id\n      }))\n    )\n  );\n\n  constructor(\n    protected service: Lwm2mConfigurationService<ServerSettings>,\n    protected route: ActivatedRoute,\n    protected router: Router\n  ) {}\n\n  ngOnInit() {\n    this.route.queryParams.pipe(takeUntil(this.destroy$)).subscribe(({ id }) => {\n      this.id = id;\n      this.service.listServers();\n      this.createComponent(id);\n    });\n  }\n\n  ngOnDestroy() {\n    this.destroy$.next();\n    this.destroy$.complete();\n  }\n\n  select(id) {\n    this.router.navigate([], {\n      relativeTo: this.route,\n      queryParams: { id },\n      queryParamsHandling: 'merge'\n    });\n  }\n\n  createComponent(id) {\n    this.formContainer.clear();\n    this.cmp = null;\n\n    if (!id) return;\n\n    this.componentRef = this.formContainer.createComponent(\n      id !== 'create' ? Lwm2mFormSingleServerSettings : Lwm2mFormCreateSingleServerSettings\n    );\n    this.cmp = this.componentRef?.instance;\n    this.cmp.id = id;\n  }\n}\n","<div class=\"split-view--5-7 grid__row--1 fit-h\">\n  <div class=\"inner-scroll split-view__list\">\n    <div class=\"bg-level-1 flex-grow\">\n      <ng-container *ngIf=\"listelements$ | async as list\">\n        <ng-container *ngIf=\"list.length > 0 || id === 'create'; else empty\">\n          <c8y-list-group class=\"c8y-list__group nav c8y-nav-stacked\">\n            <c8y-li\n              class=\"c8y-stacked-item p-0 active\"\n              *ngIf=\"id === 'create'\"\n            >\n              <c8y-li-icon icon=\"server\"></c8y-li-icon>\n              <span title=\"{{ 'New server' | translate }}\">\n                {{ 'New server' | translate }}\n              </span>\n            </c8y-li>\n            <c8y-li\n              class=\"c8y-stacked-item p-0\"\n              [class.active]=\"el.id === id\"\n              *ngFor=\"let el of list\"\n              (click)=\"select(el.id)\"\n            >\n              <c8y-li-icon [icon]=\"el.icon\"></c8y-li-icon>\n              <span title=\"{{ el.title }}\">\n                {{ el.title }}\n              </span>\n            </c8y-li>\n          </c8y-list-group>\n        </ng-container>\n        <ng-template #empty>\n          <div class=\"card-block\">\n            <c8y-ui-empty-state\n              [icon]=\"'stack'\"\n              [title]=\"'No servers found.' | translate\"\n              [subtitle]=\"'Click below to add a new server.' | translate\"\n            ></c8y-ui-empty-state>\n          </div>\n        </ng-template>\n      </ng-container>\n    </div>\n    <div class=\"card-footer separator-top\">\n      <button\n        class=\"btn btn-default\"\n        title=\"{{ 'Add server' | translate }}\"\n        [disabled]=\"id === 'create'\"\n        (click)=\"select('create')\"\n      >\n        <i [c8yIcon]=\"'plus-circle'\"></i>\n        {{ 'Add server' | translate }}\n      </button>\n    </div>\n  </div>\n  <form class=\"d-contents\">\n    <div\n      class=\"inner-scroll split-view__detail\"\n      [ngClass]=\"{ 'split-view__detail--selected': cmp?.fields?.length > 0 }\"\n    >\n      <div class=\"card-header separator visible-sm visible-xs fit-w sticky-top\">\n        <button\n          class=\"btn btn-clean text-primary\"\n          title=\"{{ 'Back' | translate }}\"\n          type=\"button\"\n          (click)=\"cmp?.cancel()\"\n        >\n          <i c8y-icon=\"chevron-left\"></i>\n          <span>{{ 'Back' | translate }}</span>\n        </button>\n      </div>\n      <div class=\"card-block flex-grow overflow-visible\">\n        <ng-container *ngIf=\"!cmp?.fields?.length\">\n          <c8y-ui-empty-state\n            [icon]=\"'stack'\"\n            title=\"{{ 'No server to display.' | translate }}\"\n            subtitle=\"{{ 'Add or select a server.' | translate }}\"\n          ></c8y-ui-empty-state>\n          <div\n            class=\"alert alert-info\"\n            role=\"alert\"\n          >\n            <strong>{{ 'Info' | translate }}</strong>\n            {{\n              'Configured servers are written as soon as the device does a bootstrap connection.'\n                | translate\n            }}\n          </div>\n        </ng-container>\n        <ng-container #singleServerForm></ng-container>\n      </div>\n      <div\n        class=\"card-footer separator sticky-bottom bg-level-0\"\n        *ngIf=\"cmp?.fields?.length > 0\"\n      >\n        <button\n          class=\"btn btn-default\"\n          title=\"{{ 'Cancel' | translate }}\"\n          type=\"button\"\n          (click)=\"cmp.cancel()\"\n        >\n          {{ 'Cancel' | translate }}\n        </button>\n\n        <ng-container *ngIf=\"id !== 'create'; else createServer\">\n          <button\n            class=\"btn btn-danger\"\n            title=\"{{ 'Delete' | translate }}\"\n            type=\"button\"\n            [disabled]=\"cmp.options?.formState?.disabled || false\"\n            (click)=\"cmp.delete()\"\n          >\n            {{ 'Delete' | translate }}\n          </button>\n          <button\n            class=\"btn btn-primary\"\n            title=\"{{ 'Save' | translate }}\"\n            type=\"button\"\n            [disabled]=\"cmp.form?.invalid || !cmp.form?.dirty\"\n            (click)=\"cmp.save()\"\n          >\n            {{ 'Save' | translate }}\n          </button>\n        </ng-container>\n        <ng-template #createServer>\n          <button\n            class=\"btn btn-primary\"\n            title=\"{{ 'Create' | translate }}\"\n            type=\"button\"\n            [disabled]=\"cmp.form?.invalid || !cmp.form?.dirty\"\n            (click)=\"cmp.create()\"\n          >\n            {{ 'Create' | translate }}\n          </button>\n        </ng-template>\n      </div>\n    </div>\n  </form>\n</div>\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["map","delay","i2","i3","i4"],"mappings":"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"}