{"version":3,"file":"hslayers-ng-common-widgets.mjs","sources":["../../../projects/hslayers/common/widgets/recursive-dd.component.ts","../../../projects/hslayers/common/widgets/recursive-dd.component.html","../../../projects/hslayers/common/widgets/hslayers-ng-common-widgets.ts"],"sourcesContent":["import {\n  ChangeDetectionStrategy,\n  Component,\n  computed,\n  inject,\n  input,\n} from '@angular/core';\nimport {transform} from 'ol/proj';\n\nimport {HsClipboardTextComponent} from 'hslayers-ng/common/clipboard-text';\nimport {HsMapService} from 'hslayers-ng/services/map';\n\n@Component({\n  selector: 'hs-widgets-recursive-dd',\n  templateUrl: './recursive-dd.component.html',\n  styleUrls: ['./recursive-dd.component.scss'],\n  imports: [HsClipboardTextComponent],\n  changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class HsUiExtensionsRecursiveDdComponent {\n  value = input<any>();\n  excludeKeys = input<string[]>([]);\n  firstLevel = input<boolean>(false);\n\n  private hsMapService = inject(HsMapService);\n\n  isIterable = computed(() => {\n    return this.value() && typeof this.value() === 'object';\n  });\n\n  entries = computed(() => {\n    if (!this.isIterable()) {\n      return [];\n    }\n\n    if (this.firstLevel()) {\n      // If this is the first level, filter out excluded keys\n      return Object.entries(this.value()).filter(\n        ([key]) => !this.excludeKeys().includes(key),\n      );\n    }\n    return Object.entries(this.value());\n  });\n\n  /**\n   *\n   *\n   * FIXME: duplicity with HsAddDataCatalogueMapService\n   * however it would be necessary to move many services to shared in case this is imported from\n   * components/add-data\n   *\n   * ZoomTo / MoveTo to selected layer overview\n   * @param bbox - Bounding box of selected layer\n   */\n  zoomTo(bboxValue: unknown): void {\n    // Type guard to ensure we have a valid bbox\n    if (!bboxValue) {\n      return;\n    }\n\n    const bbox = bboxValue as string | number[];\n\n    let b: string[] | number[] = null;\n    if (typeof bbox === 'string') {\n      b = bbox.split(' ');\n    } else if (Array.isArray(bbox)) {\n      b = bbox;\n    } else {\n      // Not a valid bbox format\n      return;\n    }\n    let firstPair = [parseFloat(b[0] as string), parseFloat(b[1] as string)];\n    let secondPair = [parseFloat(b[2] as string), parseFloat(b[3] as string)];\n\n    const map = this.hsMapService.getMap();\n    const projection = map.getView().getProjection();\n\n    firstPair = transform(firstPair, 'EPSG:4326', projection);\n    secondPair = transform(secondPair, 'EPSG:4326', projection);\n\n    if (firstPair.some(isNaN) || secondPair.some(isNaN)) {\n      return;\n    }\n\n    const extent = [firstPair[0], firstPair[1], secondPair[0], secondPair[1]];\n    this.hsMapService.fitExtent(extent);\n  }\n}\n","@if (!isIterable()) {\n  <dd class=\"ms-2 text-break\">\n    <hs-clipboard-text [text]=\"value()\" />\n  </dd>\n}\n@for (item of entries(); track item) {\n  <dl class=\"border-start ps-3 ms-2 mb-3\">\n    <dt class=\"fw-bold text-primary\">{{ item[0] }}</dt>\n    <hs-widgets-recursive-dd [value]=\"item[1]\"></hs-widgets-recursive-dd>\n    @if (item[0] === \"bbox\") {\n      <div class=\"mt-1 mb-2 d-flex justify-content-end\">\n        <button\n          (click)=\"zoomTo(item[1])\"\n          class=\"btn btn-sm btn-outline-primary\"\n          i18n\n        >\n          <i class=\"fa-solid fa-magnifying-glass-location me-1\"></i>Zoom to\n        </button>\n      </div>\n    }\n  </dl>\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":";;;;;;MAmBa,kCAAkC,CAAA;AAP/C,IAAA,WAAA,GAAA;QAQE,IAAA,CAAA,KAAK,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,OAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAO;AACpB,QAAA,IAAA,CAAA,WAAW,GAAG,KAAK,CAAW,EAAE,uDAAC;AACjC,QAAA,IAAA,CAAA,UAAU,GAAG,KAAK,CAAU,KAAK,sDAAC;AAE1B,QAAA,IAAA,CAAA,YAAY,GAAG,MAAM,CAAC,YAAY,CAAC;AAE3C,QAAA,IAAA,CAAA,UAAU,GAAG,QAAQ,CAAC,MAAK;AACzB,YAAA,OAAO,IAAI,CAAC,KAAK,EAAE,IAAI,OAAO,IAAI,CAAC,KAAK,EAAE,KAAK,QAAQ;AACzD,QAAA,CAAC,sDAAC;AAEF,QAAA,IAAA,CAAA,OAAO,GAAG,QAAQ,CAAC,MAAK;AACtB,YAAA,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,EAAE;AACtB,gBAAA,OAAO,EAAE;YACX;AAEA,YAAA,IAAI,IAAI,CAAC,UAAU,EAAE,EAAE;;AAErB,gBAAA,OAAO,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC,MAAM,CACxC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,GAAG,CAAC,CAC7C;YACH;YACA,OAAO,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC;AACrC,QAAA,CAAC,mDAAC;AA6CH,IAAA;AA3CC;;;;;;;;;AASG;AACH,IAAA,MAAM,CAAC,SAAkB,EAAA;;QAEvB,IAAI,CAAC,SAAS,EAAE;YACd;QACF;QAEA,MAAM,IAAI,GAAG,SAA8B;QAE3C,IAAI,CAAC,GAAwB,IAAI;AACjC,QAAA,IAAI,OAAO,IAAI,KAAK,QAAQ,EAAE;AAC5B,YAAA,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC;QACrB;AAAO,aAAA,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE;YAC9B,CAAC,GAAG,IAAI;QACV;aAAO;;YAEL;QACF;AACA,QAAA,IAAI,SAAS,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAW,CAAC,EAAE,UAAU,CAAC,CAAC,CAAC,CAAC,CAAW,CAAC,CAAC;AACxE,QAAA,IAAI,UAAU,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAW,CAAC,EAAE,UAAU,CAAC,CAAC,CAAC,CAAC,CAAW,CAAC,CAAC;QAEzE,MAAM,GAAG,GAAG,IAAI,CAAC,YAAY,CAAC,MAAM,EAAE;QACtC,MAAM,UAAU,GAAG,GAAG,CAAC,OAAO,EAAE,CAAC,aAAa,EAAE;QAEhD,SAAS,GAAG,SAAS,CAAC,SAAS,EAAE,WAAW,EAAE,UAAU,CAAC;QACzD,UAAU,GAAG,SAAS,CAAC,UAAU,EAAE,WAAW,EAAE,UAAU,CAAC;AAE3D,QAAA,IAAI,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE;YACnD;QACF;QAEA,MAAM,MAAM,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC,CAAC,EAAE,UAAU,CAAC,CAAC,CAAC,EAAE,UAAU,CAAC,CAAC,CAAC,CAAC;AACzE,QAAA,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,MAAM,CAAC;IACrC;+GAnEW,kCAAkC,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAlC,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,kCAAkC,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,yBAAA,EAAA,MAAA,EAAA,EAAA,KAAA,EAAA,EAAA,iBAAA,EAAA,OAAA,EAAA,UAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,WAAA,EAAA,EAAA,iBAAA,EAAA,aAAA,EAAA,UAAA,EAAA,aAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,iBAAA,EAAA,YAAA,EAAA,UAAA,EAAA,YAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECnB/C,2rBAsBA,EAAA,MAAA,EAAA,CAAA,ujBAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EDHa,kCAAkC,oHAHnC,wBAAwB,EAAA,QAAA,EAAA,mBAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,QAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;;4FAGvB,kCAAkC,EAAA,UAAA,EAAA,CAAA;kBAP9C,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,yBAAyB,WAG1B,CAAC,wBAAwB,CAAC,EAAA,eAAA,EAClB,uBAAuB,CAAC,MAAM,EAAA,QAAA,EAAA,2rBAAA,EAAA,MAAA,EAAA,CAAA,ujBAAA,CAAA,EAAA;;;AEjBjD;;AAEG;;;;"}