{"version":3,"file":"c8y-ngx-components-remote-access-vnc-remote-access-vnc-endpoint-modal.mjs","sources":["../../remote-access/vnc/remote-access-vnc-endpoint-modal/remote-access-vnc-endpoint-modal.component.ts","../../remote-access/vnc/remote-access-vnc-endpoint-modal/remote-access-vnc-endpoint-modal.component.html","../../remote-access/vnc/remote-access-vnc-endpoint-modal/c8y-ngx-components-remote-access-vnc-remote-access-vnc-endpoint-modal.ts"],"sourcesContent":["import { NgForOf } from '@angular/common';\nimport { Component, OnInit } from '@angular/core';\nimport { FormBuilder, Validators } from '@angular/forms';\nimport { CoreModule } from '@c8y/ngx-components';\nimport { gettext } from '@c8y/ngx-components/gettext';\nimport {\n  CREDENTIALS_TYPES,\n  RemoteAccessConfiguration\n} from '@c8y/ngx-components/remote-access/data';\n\n@Component({\n  selector: 'c8y-remote-access-vnc-endpoint-modal',\n  templateUrl: './remote-access-vnc-endpoint-modal.component.html',\n  standalone: true,\n  imports: [CoreModule, NgForOf]\n})\nexport class RemoteAccessVncEndpointModalComponent implements OnInit {\n  credentialTypes = [CREDENTIALS_TYPES.NONE, CREDENTIALS_TYPES.PASS_ONLY];\n  title = gettext('Remote access endpoint');\n  form: ReturnType<typeof this.initForm>;\n\n  currentValue: Partial<RemoteAccessConfiguration>;\n\n  result = new Promise<ReturnType<typeof this.initForm>['value']>((resolve, reject) => {\n    this._resolve = resolve;\n    this._reject = reject;\n  });\n\n  private _resolve: (value: ReturnType<typeof this.initForm>['value']) => void;\n  private _reject: (reason?: any) => void;\n\n  constructor(private formBuilder: FormBuilder) {\n    this.form = this.initForm();\n  }\n\n  ngOnInit() {\n    if (this.currentValue) {\n      const { credentials, ...rest } = this.currentValue;\n      const credentialsType = credentials?.type || 'NONE';\n      const attributesToAdd = { credentialsType };\n      if (credentials) {\n        const { username, password } = credentials;\n        Object.assign(attributesToAdd, { username, password });\n      }\n      const patchedValue = { ...rest, ...attributesToAdd };\n      this.form.patchValue(patchedValue);\n    }\n  }\n\n  initForm() {\n    return this.formBuilder.group({\n      id: ['', []],\n      name: ['', [Validators.required, Validators.minLength(1)]],\n      hostname: ['127.0.0.1', [Validators.required, Validators.minLength(1)]],\n      port: [5900, [Validators.required, Validators.min(1), Validators.max(65535)]],\n      protocol: ['VNC', [Validators.required, Validators.minLength(1)]],\n      password: [undefined as string, []],\n      credentialsType: ['NONE' as 'NONE' | 'PASS_ONLY', [Validators.required]]\n    });\n  }\n\n  cancel() {\n    this._reject();\n  }\n\n  save() {\n    this._resolve(this.form.value);\n  }\n}\n","<c8y-modal\n  [title]=\"title\"\n  [headerClasses]=\"'dialog-header'\"\n  (onDismiss)=\"cancel()\"\n  (onClose)=\"save()\"\n  [disabled]=\"form.invalid\"\n  [labels]=\"{ cancel: 'Cancel', ok: 'Save' }\"\n>\n  <ng-container c8y-modal-title>\n    <span [c8yIcon]=\"'laptop'\"></span>\n  </ng-container>\n  <div\n    class=\"p-24\"\n    [formGroup]=\"form\"\n  >\n    <c8y-form-group>\n      <label\n        for=\"name\"\n        translate\n      >\n        Name\n      </label>\n      <input\n        class=\"form-control\"\n        id=\"name\"\n        name=\"name\"\n        type=\"text\"\n        [placeholder]=\"'e.g. {{ example }}' | translate: { example: 'My remote access endpoint' }\"\n        formControlName=\"name\"\n        [attr.data-cy]=\"'remoteAccessEndpointModal--name'\"\n      />\n      <c8y-messages></c8y-messages>\n    </c8y-form-group>\n\n    <c8y-form-group>\n      <label\n        for=\"protocol\"\n        translate\n      >\n        Protocol\n      </label>\n      <input\n        class=\"form-control\"\n        id=\"protocol\"\n        name=\"protocol\"\n        type=\"text\"\n        readonly\n        formControlName=\"protocol\"\n      />\n      <c8y-messages></c8y-messages>\n    </c8y-form-group>\n\n    <c8y-form-group>\n      <label\n        for=\"hostname\"\n        translate\n      >\n        Host\n      </label>\n      <input\n        class=\"form-control\"\n        id=\"hostname\"\n        placeholder=\"{{'e.g. {{ example }}' | translate : { example: '127.0.0.1' } }}\"\n        name=\"hostname\"\n        type=\"text\"\n        formControlName=\"hostname\"\n        [attr.data-cy]=\"'remoteAccessEndpointModal--hostname'\"\n      />\n      <c8y-messages></c8y-messages>\n    </c8y-form-group>\n\n    <c8y-form-group>\n      <label\n        for=\"port\"\n        translate\n      >\n        Port\n      </label>\n      <input\n        class=\"form-control\"\n        id=\"port\"\n        placeholder=\"{{'e.g. {{ example }}' | translate : { example: '5900' } }}\"\n        name=\"port\"\n        type=\"number\"\n        formControlName=\"port\"\n        [attr.data-cy]=\"'remoteAccessEndpointModal--port'\"\n      />\n      <c8y-messages></c8y-messages>\n    </c8y-form-group>\n\n    <div>\n      <c8y-form-group>\n        <label\n          for=\"credentialsType\"\n          translate\n        >\n          Sign-in method\n        </label>\n        <div class=\"c8y-select-wrapper\">\n          <select\n            class=\"form-control\"\n            id=\"credentialsType\"\n            formControlName=\"credentialsType\"\n            [attr.data-cy]=\"'remoteAccessEndpointModal--credentials-type'\"\n          >\n            <option\n              *ngFor=\"let type of credentialTypes\"\n              [value]=\"type.value\"\n            >\n              {{ type.label | translate }}\n            </option>\n          </select>\n        </div>\n      </c8y-form-group>\n\n      <c8y-form-group *ngIf=\"form.value.credentialsType === 'PASS_ONLY'\">\n        <label\n          for=\"password\"\n          translate\n        >\n          Password\n        </label>\n        <input\n          class=\"form-control\"\n          id=\"password\"\n          placeholder=\"{{'e.g. {{ example }}' | translate : { example: 'my_password' } }}\"\n          name=\"password\"\n          type=\"password\"\n          autocomplete=\"off\"\n          formControlName=\"password\"\n        />\n        <c8y-messages></c8y-messages>\n      </c8y-form-group>\n    </div>\n  </div>\n</c8y-modal>\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}