{"version":3,"file":"c8y-ngx-components-translation-editor-lazy.mjs","sources":["../../translation-editor/lazy/manage-translation-cell-renderer/manage-translation-cell-renderer.component.ts","../../translation-editor/lazy/manage-translation-cell-renderer/manage-translation-cell-renderer.component.html","../../translation-editor/lazy/add-translation-modal/add-translation-modal.component.ts","../../translation-editor/lazy/add-translation-modal/add-translation-modal.component.html","../../translation-editor/lazy/translation-editor/translation-editor.component.ts","../../translation-editor/lazy/translation-editor/translation-editor.component.html","../../translation-editor/lazy/advanced-translation-editor/advanced-translation-editor.component.ts","../../translation-editor/lazy/advanced-translation-editor/advanced-translation-editor.component.html","../../translation-editor/lazy/c8y-ngx-components-translation-editor-lazy.ts"],"sourcesContent":["import { NgIf } from '@angular/common';\nimport { Component, ElementRef, Optional, ViewChild } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport {\n  CellRendererContext,\n  Permissions,\n  C8yTranslatePipe,\n  IconDirective\n} from '@c8y/ngx-components';\nimport { TranslationEditorComponent } from '../translation-editor/translation-editor.component';\n\n@Component({\n  selector: 'c8y-manage-translation-cell-renderer',\n  templateUrl: 'manage-translation-cell-renderer.component.html',\n  standalone: true,\n  imports: [NgIf, C8yTranslatePipe, IconDirective, FormsModule]\n})\nexport class ManageTranslationCellRendererComponent {\n  private readonly FOCUS_RENDER_WAIT_TIME_IN_MS = 100;\n  isCellEditable = false;\n  cellValue = '';\n  @ViewChild('cellInput') cellInput: ElementRef;\n  isCreateDisabled = false;\n\n  constructor(\n    public context: CellRendererContext,\n    private permissions: Permissions,\n    @Optional() private grid: TranslationEditorComponent\n  ) {}\n\n  ngOnInit() {\n    this.isCreateDisabled = !this.permissions.hasRole('ROLE_APPLICATION_MANAGEMENT_ADMIN');\n  }\n\n  async save(): Promise<void> {\n    this.isCellEditable = false;\n    const cellValueTrimed = this.cellValue.trim();\n    this.context.value = cellValueTrimed;\n    this.context.item[this.context.property.path] = cellValueTrimed;\n    this.grid?.valueChanged();\n  }\n\n  cancel(): void {\n    this.isCellEditable = false;\n  }\n\n  editCell(): void {\n    this.cellValue = this.context.value;\n    this.isCellEditable = true;\n\n    // Focuses the input box after the input text box is visible\n    setTimeout(() => {\n      this.cellInput.nativeElement.focus();\n    }, this.FOCUS_RENDER_WAIT_TIME_IN_MS);\n  }\n}\n","<div\n  class=\"text-truncate pointer d-flex\"\n  title=\"{{ context.value }}\"\n  data-cy=\"c8y-manage-translation-cell-renderer--edit\"\n  (click)=\"!isCreateDisabled ? editCell() : ''\"\n  *ngIf=\"!isCellEditable\"\n>\n  <span\n    class=\"text-truncate\"\n    *ngIf=\"!isCellEditable && context.value !== ''\"\n  >\n    {{ context.value }}\n  </span>\n  <span\n    class=\"text-truncate\"\n    title=\"{{ 'Add translation' | translate }}\"\n    *ngIf=\"!isCellEditable && context.value === ''\"\n  >\n    <em class=\"text-muted\">{{ 'Add translation' | translate }}</em>\n  </span>\n  <i\n    class=\"showOnHover text-primary m-l-4\"\n    c8yIcon=\"pencil\"\n    title=\"{{ 'Edit translation' | translate }}\"\n    *ngIf=\"!isCreateDisabled\"\n  ></i>\n</div>\n\n<div\n  class=\"input-group input-group-sm\"\n  *ngIf=\"isCellEditable && !isCreateDisabled\"\n>\n  <input\n    class=\"form-control\"\n    placeholder=\"{{ 'Add translation' | translate }}\"\n    type=\"text\"\n    #cellInput\n    data-cy=\"c8y-manage-translation-cell-renderer--input\"\n    [(ngModel)]=\"cellValue\"\n  />\n  <div class=\"input-group-btn\">\n    <button\n      class=\"btn btn-clean\"\n      title=\"{{ 'Cancel' | translate }}\"\n      type=\"button\"\n      (click)=\"cancel()\"\n      data-cy=\"c8y-manage-translation-cell-renderer--cancel\"\n    >\n      <i\n        class=\"text-danger\"\n        c8yIcon=\"times\"\n      ></i>\n    </button>\n    <button\n      class=\"btn btn-clean\"\n      title=\"{{ 'Save' | translate }}\"\n      type=\"button\"\n      (click)=\"save()\"\n      data-cy=\"c8y-manage-translation-cell-renderer--save\"\n    >\n      <i\n        class=\"text-primary\"\n        c8yIcon=\"check\"\n      ></i>\n    </button>\n  </div>\n</div>\n","import { NgForOf } from '@angular/common';\nimport { Component, OnInit } from '@angular/core';\nimport {\n  AbstractControl,\n  FormBuilder,\n  ReactiveFormsModule,\n  ValidatorFn,\n  Validators\n} from '@angular/forms';\nimport {\n  C8yTranslateDirective,\n  C8yTranslatePipe,\n  FormGroupComponent,\n  IconDirective,\n  MessageDirective,\n  MessagesComponent,\n  ModalModule\n} from '@c8y/ngx-components';\nimport { gettext } from '@c8y/ngx-components/gettext';\n\n@Component({\n  selector: 'c8y-add-translation-modal',\n  templateUrl: './add-translation-modal.component.html',\n  standalone: true,\n  imports: [\n    ModalModule,\n    IconDirective,\n    MessagesComponent,\n    MessageDirective,\n    C8yTranslatePipe,\n    C8yTranslateDirective,\n    ReactiveFormsModule,\n    NgForOf,\n    FormGroupComponent\n  ]\n})\nexport class AddTranslationModalComponent implements OnInit {\n  readonly title = gettext('Add translation');\n  form: ReturnType<typeof this.initForm>;\n\n  result = new Promise<ReturnType<typeof this.initForm>['value']>((resolve, reject) => {\n    this._resovle = resolve;\n    this._reject = reject;\n  });\n  alreadyTakenMsg = gettext('The provided translation key has already been defined.');\n  alreadyDefinedKeys: string[] = [];\n  availableLangs: {\n    lang: string;\n    nativeLanguage: string;\n  }[] = [];\n\n  private _resovle: (value: ReturnType<typeof this.initForm>['value']) => void;\n  private _reject: (reason?: any) => void;\n\n  constructor(private formBuilder: FormBuilder) {}\n\n  ngOnInit(): void {\n    this.form = this.initForm();\n  }\n\n  initForm() {\n    return this.formBuilder.group({\n      key: ['', [Validators.required, this.ensureNotExistingKey()]],\n      ...this.availableLangs\n        .map(language => {\n          return {\n            [language.lang]: ['']\n          };\n        })\n        .reduceRight((acc, curr) => ({ ...curr, ...acc }), {})\n    });\n  }\n\n  cancel() {\n    this._reject();\n  }\n\n  save() {\n    this._resovle(this.form.value);\n  }\n\n  private ensureNotExistingKey(): ValidatorFn {\n    return (control: AbstractControl) => {\n      if (typeof control.value === 'string') {\n        const keyAlreadyTaken = this.alreadyDefinedKeys.some(name => name === control.value);\n        if (keyAlreadyTaken) {\n          return { keyAlreadyTaken: {} };\n        }\n      }\n      return null;\n    };\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: 'Add' }\"\n>\n<ng-container c8y-modal-title>\n  <span [c8yIcon]=\"'language1'\"></span>\n</ng-container>\n  <div [formGroup]=\"form\" class=\"p-24\">\n    <c8y-form-group>\n      <label\n        for=\"label\"\n        translate\n      >\n        Translation key\n      </label>\n      <input\n        class=\"form-control\"\n        name=\"key\"\n        id=\"key\"\n        type=\"text\"\n        formControlName=\"key\"\n        placeholder=\"{{'e.g. {{ example }}' | translate : { example: 'Home' } }}\"\n      />\n      <c8y-messages>\n        <c8y-message\n          name=\"keyAlreadyTaken\"\n          [text]=\"alreadyTakenMsg | translate\"\n        ></c8y-message>\n      </c8y-messages>\n    </c8y-form-group>\n\n    <c8y-form-group *ngFor=\"let language of availableLangs\">\n      <label\n        [for]=\"language.lang\"\n      >\n        {{ language.nativeLanguage }} ({{ language.lang }})\n      </label>\n      <input\n        class=\"form-control\"\n        [name]=\"language.lang\"\n        [id]=\"language.lang\"\n        type=\"text\"\n        [formControlName]=\"language.lang\"\n      />\n    </c8y-form-group>\n  </div>\n</c8y-modal>\n","import { Component, OnInit } from '@angular/core';\nimport { gettext } from '@c8y/ngx-components/gettext';\nimport {\n  ActionBarItemComponent,\n  ActionControl,\n  AlertService,\n  AppStateService,\n  BuiltInActionType,\n  C8yTranslateDirective,\n  C8yTranslatePipe,\n  Column,\n  DataGridModule,\n  DisplayOptions,\n  HelpComponent,\n  IconDirective,\n  LoadingComponent,\n  Pagination,\n  TitleComponent,\n  TranslateService\n} from '@c8y/ngx-components';\nimport { TranslationStoreService } from '@c8y/ngx-components/translation-editor/data';\nimport { ManageTranslationCellRendererComponent } from '../manage-translation-cell-renderer/manage-translation-cell-renderer.component';\nimport { BsModalService } from 'ngx-bootstrap/modal';\nimport { AddTranslationModalComponent } from '../add-translation-modal/add-translation-modal.component';\n\n@Component({\n  selector: 'c8y-translation-editor',\n  templateUrl: './translation-editor.component.html',\n  standalone: true,\n  imports: [\n    TitleComponent,\n    DataGridModule,\n    LoadingComponent,\n    C8yTranslatePipe,\n    ActionBarItemComponent,\n    IconDirective,\n    C8yTranslateDirective,\n    HelpComponent\n  ]\n})\nexport class TranslationEditorComponent implements OnInit {\n  pagination: Pagination = {\n    pageSize: 10,\n    currentPage: 1\n  };\n  displayOptions: DisplayOptions = {\n    bordered: false,\n    striped: true,\n    filter: true,\n    gridHeader: true,\n    hover: true\n  };\n  actionControls: ActionControl[] = [\n    {\n      type: BuiltInActionType.Delete,\n      callback: item => {\n        this.items = this.items.filter(i => i.key !== item.key);\n      }\n    }\n  ];\n  columns: Column[] = [];\n  isLoading = true;\n  items: Awaited<ReturnType<TranslationStoreService['getCombinedListOfTranslationsForPerKey']>> =\n    new Array<any>();\n  isHavingChanges = false;\n  availableLangs: {\n    lang: string;\n    nativeLanguage: string;\n  }[] = [];\n\n  constructor(\n    private translationStore: TranslationStoreService,\n    private modalService: BsModalService,\n    private alert: AlertService,\n    private appState: AppStateService,\n    private translate: TranslateService\n  ) {\n    this.availableLangs = (this.appState.state.langs as string[])\n      .sort((a, b) => a.localeCompare(b))\n      .map(l => ({\n        lang: l,\n        nativeLanguage: this.translate.getNativeLanguage(l)\n      }));\n  }\n\n  async ngOnInit() {\n    this.refresh();\n  }\n\n  async refresh() {\n    this.isLoading = true;\n    this.refreshColumns();\n\n    const translations = await this.translationStore.getCombinedListOfTranslationsForPerKey(\n      this.availableLangs.map(l => l.lang)\n    );\n\n    this.items = translations;\n\n    this.isLoading = false;\n  }\n\n  async addEntry() {\n    const currentKeys = this.items.map(item => item.key);\n    const modalRef = this.modalService.show(AddTranslationModalComponent, {\n      initialState: { alreadyDefinedKeys: currentKeys, availableLangs: this.availableLangs }\n    });\n    try {\n      const result = await modalRef.content.result;\n      this.items = [...this.items, result as any];\n    } catch (e) {\n      // do nothing, modal was closed.\n    }\n  }\n\n  refreshColumns() {\n    this.columns = this.getColumnsForLocales();\n  }\n\n  valueChanged() {\n    this.isHavingChanges = true;\n  }\n\n  async saveTranslations() {\n    try {\n      await this.translationStore.updateTranslations(this.items);\n      await this.refresh();\n      this.alert.success(gettext('Translations saved'));\n    } catch (e) {\n      this.alert.danger(gettext('Failed to save translations'));\n      this.alert.addServerFailure(e);\n    }\n  }\n\n  private getColumnsForLocales() {\n    const columns = new Array<Column>();\n    columns.push({\n      name: 'key',\n      header: gettext('Translation key'),\n      path: 'key',\n      filterable: true\n    });\n\n    columns.push(\n      ...this.availableLangs.map(\n        (language, index) =>\n          ({\n            name: language.lang,\n            header: `${language.nativeLanguage} (${language.lang})`,\n            path: language.lang,\n            filterable: false,\n            visible: index < 5,\n            cellRendererComponent: ManageTranslationCellRendererComponent\n          }) as Column\n      )\n    );\n\n    return columns;\n  }\n}\n","<c8y-title>{{ 'Localization' | translate }}</c8y-title>\n\n@if (isLoading) {\n  <c8y-loading></c8y-loading>\n} @else {\n  <c8y-action-bar-item placement=\"right\">\n    <button\n      class=\"btn btn-link\"\n      (click)=\"addEntry()\"\n      data-cy=\"c8y-translation-editor--add-translation\"\n    >\n      <i c8yIcon=\"plus-circle\"></i>\n      <span translate>Add translation</span>\n    </button>\n  </c8y-action-bar-item>\n\n  <c8y-action-bar-item placement=\"right\">\n    <button\n      class=\"btn btn-link\"\n      (click)=\"saveTranslations()\"\n      data-cy=\"c8y-translation-editor--save-and-apply\"\n    >\n      <i c8yIcon=\"save\"></i>\n      <span translate>Save and apply</span>\n    </button>\n  </c8y-action-bar-item>\n\n  <c8y-help src=\"/docs/standard-tenant/changing-settings/#localization\"></c8y-help>\n\n  <c8y-data-grid\n    class=\"content-fullpage d-flex d-col\"\n    [title]=\"'Translations' | translate\"\n    [columns]=\"columns\"\n    [actionControls]=\"actionControls\"\n    [pagination]=\"pagination\"\n    [displayOptions]=\"displayOptions\"\n    (onReload)=\"refresh()\"\n    [rows]=\"items\"\n  ></c8y-data-grid>\n}\n","import { Component, signal, ViewChild, computed } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport {\n  ActionBarItemComponent,\n  AlertService,\n  AppStateService,\n  IconDirective,\n  LoadingComponent,\n  TitleComponent,\n  C8yTranslatePipe,\n  C8yTranslateDirective\n} from '@c8y/ngx-components';\nimport { EditorComponent, MonacoEditorMarkerValidatorDirective } from '@c8y/ngx-components/editor';\nimport { TranslationStoreService } from '@c8y/ngx-components/translation-editor/data';\nimport { gettext } from '@c8y/ngx-components/gettext';\nimport type * as Monaco from 'monaco-editor';\nimport { TranslateService } from '@ngx-translate/core';\n\n@Component({\n  selector: 'c8y-advanced-translation-editor',\n  templateUrl: './advanced-translation-editor.component.html',\n  standalone: true,\n  imports: [\n    EditorComponent,\n    MonacoEditorMarkerValidatorDirective,\n    FormsModule,\n    TitleComponent,\n    LoadingComponent,\n    ActionBarItemComponent,\n    IconDirective,\n    C8yTranslatePipe,\n    C8yTranslateDirective\n  ]\n})\nexport class AdvancedTranslationEditorComponent {\n  valueString = signal('');\n  editorOptions: EditorComponent['editorOptions'] = {\n    language: 'json'\n  };\n  isLoading = signal(false);\n  isValidJSON = computed(() => {\n    const data = this.valueString();\n    try {\n      JSON.parse(data);\n      return true;\n    } catch (e) {\n      return false;\n    }\n  });\n  JSONSchema: any;\n  @ViewChild(EditorComponent) editorComponent!: EditorComponent;\n  availableLangs: string[] = [];\n\n  constructor(\n    private appState: AppStateService,\n    private translationStore: TranslationStoreService,\n    private alert: AlertService,\n    private translation: TranslateService\n  ) {\n    this.availableLangs = (this.appState.state.langs as string[]).sort((a, b) =>\n      a.localeCompare(b)\n    );\n    this.refresh();\n  }\n\n  onValueChange(data: string) {\n    this.valueString.set(data);\n  }\n\n  onEditorInit(_data: Monaco.editor.IStandaloneCodeEditor) {\n    this.editorComponent.monaco.languages.json.jsonDefaults.setDiagnosticsOptions({\n      validate: true,\n      schemas: [{ schema: this.JSONSchema, fileMatch: ['*'], uri: 'translation' }],\n      enableSchemaRequest: false,\n      allowComments: false\n    });\n  }\n\n  async refresh() {\n    this.isLoading.set(true);\n\n    const translationProperties: { key: { type: 'string' }; [key: string]: { type: 'string' } } =\n      this.availableLangs.reduceRight(\n        (acc, lang) => {\n          acc[lang] = {\n            type: 'string',\n            description: this.translation.instant(\n              gettext('Translation for \"{{ languageCode }}\" language.'),\n              { languageCode: lang }\n            )\n          };\n          return acc;\n        },\n        {\n          key: {\n            type: 'string',\n            description: this.translation.instant(gettext('The key to be translated.'))\n          }\n        }\n      );\n    this.JSONSchema = {\n      $schema: 'http://json-schema.org/draft-04/schema#',\n\n      type: 'array',\n      items: {\n        type: 'object',\n        properties: translationProperties,\n        required: ['key'],\n        minProperties: 2\n      }\n    };\n\n    const translations = await this.translationStore.getCombinedListOfTranslationsForPerKey(\n      this.availableLangs\n    );\n\n    this.valueString.set(JSON.stringify(translations, undefined, 2));\n\n    this.isLoading.set(false);\n  }\n\n  async importTranslationKeys() {\n    try {\n      this.alert.info(\n        gettext(\n          'Importing translation from available Web SDK based applications. This may take a while...'\n        )\n      );\n\n      // since we are only interested in the keys, we only need to retrieve the translations for one (well supported) language\n      // we assume that the keys are the same for all other languages, otherwise we would need to perform a lot more requests.\n      const data = await this.translationStore.getAvailableTranslations(['de']);\n      const valueString = this.valueString();\n      const values: Array<{ key: string }> = JSON.parse(valueString);\n      const previousNumberOfEntries = values.length;\n      const retrievedKeys = Object.keys(data);\n      for (const key of retrievedKeys) {\n        const foundKey = values.find(value => value.key === key);\n        if (!foundKey) {\n          values.push({ key });\n        }\n      }\n      const newpreviousNumberOfEntries = values.length;\n      this.valueString.set(JSON.stringify(values, undefined, 2));\n      this.alert.success(\n        this.translation.instant(\n          gettext(\n            'Retrieved {{ numberOfRetrievedKeys }} keys from available applications. {{ numberOfNewKeys }} new translation keys were added.'\n          ),\n          {\n            numberOfRetrievedKeys: retrievedKeys.length,\n            numberOfNewKeys: newpreviousNumberOfEntries - previousNumberOfEntries\n          }\n        )\n      );\n    } catch (e) {\n      this.alert.danger(gettext('Failed to import translation keys'));\n      this.alert.addServerFailure(e);\n    }\n  }\n\n  async saveTranslations() {\n    try {\n      await this.translationStore.updateTranslations(JSON.parse(this.valueString()));\n      await this.refresh();\n      this.alert.success(gettext('Translations saved'));\n    } catch (e) {\n      this.alert.danger(gettext('Failed to save translations'));\n      this.alert.addServerFailure(e);\n    }\n  }\n}\n","<c8y-title>{{ 'Localization' | translate }}</c8y-title>\n\n@if (isLoading()) {\n  <c8y-loading></c8y-loading>\n} @else {\n  <c8y-action-bar-item placement=\"right\">\n    <button\n      class=\"btn btn-link\"\n      [disabled]=\"!isValidJSON()\"\n      (click)=\"saveTranslations()\"\n      data-cy=\"c8y-translation-editor--save-and-apply\"\n    >\n      <i c8yIcon=\"save\"></i>\n      <span translate>Save and apply</span>\n    </button>\n  </c8y-action-bar-item>\n\n  <c8y-action-bar-item placement=\"right\">\n    <button\n      class=\"btn btn-link\"\n      [disabled]=\"!isValidJSON()\"\n      (click)=\"importTranslationKeys()\"\n      data-cy=\"c8y-translation-editor--import-translation-keys\"\n    >\n      <i [c8yIcon]=\"'import'\"></i>\n      <span translate>Import translation keys from apps</span>\n    </button>\n  </c8y-action-bar-item>\n\n  <div class=\"card card--fullpage content-fullpage\">\n    <c8y-editor\n      class=\"flex-grow\"\n      [editorOptions]=\"editorOptions\"\n      [ngModel]=\"valueString()\"\n      (ngModelChange)=\"onValueChange($event)\"\n      (editorInit)=\"onEditorInit($event)\"\n      monacoEditorMarkerValidator\n    ></c8y-editor>\n  </div>\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i2.TranslationEditorComponent","i3","i1","i2"],"mappings":"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"}