@net7/boilerplate-muruca 5.5.25 → 5.5.27
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"net7-boilerplate-muruca.mjs","sources":["../../../projects/n7-boilerplate-muruca/src/lib/helpers/search-helper.ts","../../../projects/n7-boilerplate-muruca/src/lib/services/search.service.ts","../../../projects/n7-boilerplate-muruca/src/lib/services/layout-state.service.ts","../../../projects/n7-boilerplate-muruca/src/lib/services/resource-modal.service.ts","../../../projects/n7-boilerplate-muruca/src/lib/services/locale.service.ts","../../../projects/n7-boilerplate-muruca/src/lib/pipes/keep-html.pipe.ts","../../../projects/n7-boilerplate-muruca/src/lib/layouts/advanced-results-layout/advanced-results-layout.ds.ts","../../../projects/n7-boilerplate-muruca/src/lib/layouts/advanced-results-layout/advanced-results-layout.eh.ts","../../../projects/n7-boilerplate-muruca/src/lib/helpers/links-helper.ts","../../../projects/n7-boilerplate-muruca/src/lib/data-sources/breadcrumbs.ds.ts","../../../projects/n7-boilerplate-muruca/src/lib/data-sources/button.ds.ts","../../../projects/n7-boilerplate-muruca/src/lib/data-sources/collection.ds.ts","../../../projects/n7-boilerplate-muruca/src/lib/data-sources/content.ds.ts","../../../projects/n7-boilerplate-muruca/src/lib/data-sources/filters.ds.ts","../../../projects/n7-boilerplate-muruca/src/lib/data-sources/hero.ds.ts","../../../projects/n7-boilerplate-muruca/src/lib/models/image-viewer-overlay.model.ts","../../../projects/n7-boilerplate-muruca/src/lib/data-sources/image-viewer.ds.ts","../../../projects/n7-boilerplate-muruca/src/lib/data-sources/image-viewer-tools.ds.ts","../../../projects/n7-boilerplate-muruca/src/lib/data-sources/image-viewer-overlay-details.ds.ts","../../../projects/n7-boilerplate-muruca/src/lib/data-sources/info-box.ds.ts","../../../projects/n7-boilerplate-muruca/src/lib/data-sources/inner-title.ds.ts","../../../projects/n7-boilerplate-muruca/src/lib/data-sources/item-preview.ds.ts","../../../projects/n7-boilerplate-muruca/src/lib/data-sources/item-previews.ds.ts","../../../projects/n7-boilerplate-muruca/src/lib/data-sources/map.ds.ts","../../../projects/n7-boilerplate-muruca/src/lib/data-sources/metadata.ds.ts","../../../projects/n7-boilerplate-muruca/src/lib/data-sources/nav.ds.ts","../../../projects/n7-boilerplate-muruca/src/lib/data-sources/resource-tabs.ds.ts","../../../projects/n7-boilerplate-muruca/src/lib/data-sources/text-viewer.ds.ts","../../../projects/n7-boilerplate-muruca/src/lib/data-sources/timeline.ds.ts","../../../projects/n7-boilerplate-muruca/src/lib/data-sources/year-header.ds.ts","../../../projects/n7-boilerplate-muruca/src/lib/data-sources/gallery.ds.ts","../../../projects/n7-boilerplate-muruca/src/lib/data-sources/network.ds.ts","../../../projects/n7-boilerplate-muruca/src/lib/data-sources/network-resource.ds.ts","../../../projects/n7-boilerplate-muruca/src/lib/data-sources/parallel-text-viewer.ds.ts","../../../projects/n7-boilerplate-muruca/src/lib/data-sources/embedded-content.ds.ts","../../../projects/n7-boilerplate-muruca/src/lib/data-sources/search/search-page-title.ds.ts","../../../projects/n7-boilerplate-muruca/src/lib/data-sources/search/search-results-title.ds.ts","../../../projects/n7-boilerplate-muruca/src/lib/data-sources/search/search-results.ds.ts","../../../projects/n7-boilerplate-muruca/src/lib/data-sources/search/search-tags.ds.ts","../../../projects/n7-boilerplate-muruca/src/lib/data-sources/search/search-page-description.ds.ts","../../../projects/n7-boilerplate-muruca/src/lib/helpers/date-helper.ts","../../../projects/n7-boilerplate-muruca/src/lib/data-sources/static-metadata.ds.ts","../../../projects/n7-boilerplate-muruca/src/lib/data-sources/form-wrapper-accordion.ds.ts","../../../projects/n7-boilerplate-muruca/src/lib/data-sources/search/advanced-search-tags.ds.ts","../../../projects/n7-boilerplate-muruca/src/lib/data-sources/metadata-dynamic.ds.ts","../../../projects/n7-boilerplate-muruca/src/lib/data-sources/image-viewer-iiif.ds.ts","../../../projects/n7-boilerplate-muruca/src/lib/event-handlers/dummy.eh.ts","../../../projects/n7-boilerplate-muruca/src/lib/event-handlers/filters.eh.ts","../../../projects/n7-boilerplate-muruca/src/lib/event-handlers/nav.eh.ts","../../../projects/n7-boilerplate-muruca/src/lib/event-handlers/timeline.eh.ts","../../../projects/n7-boilerplate-muruca/src/lib/event-handlers/year-header.eh.ts","../../../projects/n7-boilerplate-muruca/src/lib/event-handlers/gallery.eh.ts","../../../projects/n7-boilerplate-muruca/src/lib/event-handlers/collection.eh.ts","../../../projects/n7-boilerplate-muruca/src/lib/event-handlers/text-viewer.eh.ts","../../../projects/n7-boilerplate-muruca/src/lib/event-handlers/button.eh.ts","../../../projects/n7-boilerplate-muruca/src/lib/event-handlers/network.eh.ts","../../../projects/n7-boilerplate-muruca/src/lib/event-handlers/network-resource.eh.ts","../../../projects/n7-boilerplate-muruca/src/lib/event-handlers/parallel-text-viewer.eh.ts","../../../projects/n7-boilerplate-muruca/src/lib/event-handlers/search/search-tags.eh.ts","../../../projects/n7-boilerplate-muruca/src/lib/event-handlers/search/search-results-title.eh.ts","../../../projects/n7-boilerplate-muruca/src/lib/event-handlers/search/search-page-title.eh.ts","../../../projects/n7-boilerplate-muruca/src/lib/event-handlers/search/search-page-description.eh.ts","../../../projects/n7-boilerplate-muruca/src/lib/event-handlers/search/search-results.eh.ts","../../../projects/n7-boilerplate-muruca/src/lib/event-handlers/form-wrapper-accordion.eh.ts","../../../projects/n7-boilerplate-muruca/src/lib/event-handlers/metadata-dynamic.eh.ts","../../../projects/n7-boilerplate-muruca/src/lib/event-handlers/map.eh.ts","../../../projects/n7-boilerplate-muruca/src/lib/layouts/advanced-results-layout/advanced-results-layout.config.ts","../../../projects/n7-boilerplate-muruca/src/lib/components/advanced-result/advanced-result.ts","../../../projects/n7-boilerplate-muruca/src/lib/components/advanced-result/advanced-result.html","../../../projects/n7-boilerplate-muruca/src/lib/layouts/advanced-results-layout/advanced-results-layout.ts","../../../projects/n7-boilerplate-muruca/src/lib/layouts/advanced-results-layout/advanced-results-layout.html","../../../projects/n7-boilerplate-muruca/src/lib/data-sources/form/input-text.ds.ts","../../../projects/n7-boilerplate-muruca/src/lib/event-handlers/form/input-text.eh.ts","../../../projects/n7-boilerplate-muruca/src/lib/data-sources/form/input-select.ds.ts","../../../projects/n7-boilerplate-muruca/src/lib/event-handlers/form/input-select.eh.ts","../../../projects/n7-boilerplate-muruca/src/lib/data-sources/form/input-checkbox.ds.ts","../../../projects/n7-boilerplate-muruca/src/lib/event-handlers/form/input-checkbox.eh.ts","../../../projects/n7-boilerplate-muruca/src/lib/data-sources/form/input-typeahead.ds.ts","../../../projects/n7-boilerplate-muruca/src/lib/event-handlers/form/input-typeahead.eh.ts","../../../projects/n7-boilerplate-muruca/src/lib/models/form.model.ts","../../../projects/n7-boilerplate-muruca/src/lib/layouts/advanced-search-layout/advanced-search-layout.ds.ts","../../../projects/n7-boilerplate-muruca/src/lib/layouts/advanced-search-layout/advanced-search-layout.eh.ts","../../../projects/n7-boilerplate-muruca/src/lib/layouts/advanced-search-layout/advanced-search-layout.config.ts","../../../projects/n7-boilerplate-muruca/src/lib/components/input-typeahead/input-typeahead.ts","../../../projects/n7-boilerplate-muruca/src/lib/components/input-typeahead/input-typeahead.html","../../../projects/n7-boilerplate-muruca/src/lib/components/form/form.ts","../../../projects/n7-boilerplate-muruca/src/lib/components/form/form.html","../../../projects/n7-boilerplate-muruca/src/lib/components/form-wrapper-accordion/form-wrapper-accordion.ts","../../../projects/n7-boilerplate-muruca/src/lib/components/form-wrapper-accordion/form-wrapper-accordion.html","../../../projects/n7-boilerplate-muruca/src/lib/layouts/advanced-search-layout/advanced-search-layout.ts","../../../projects/n7-boilerplate-muruca/src/lib/layouts/advanced-search-layout/advanced-search-layout.html","../../../projects/n7-boilerplate-muruca/src/lib/layouts/home-layout/home-layout.ds.ts","../../../projects/n7-boilerplate-muruca/src/lib/layouts/home-layout/home-layout.eh.ts","../../../projects/n7-boilerplate-muruca/src/lib/layouts/home-layout/home-layout.config.ts","../../../projects/n7-boilerplate-muruca/src/lib/data-sources/slider.ds.ts","../../../projects/n7-boilerplate-muruca/src/lib/event-handlers/slider.eh.ts","../../../projects/n7-boilerplate-muruca/src/lib/event-handlers/hero.eh.ts","../../../projects/n7-boilerplate-muruca/src/lib/layouts/home-layout/home-layout.ts","../../../projects/n7-boilerplate-muruca/src/lib/layouts/home-layout/home-layout.html","../../../projects/n7-boilerplate-muruca/src/lib/layouts/itinerary-layout/itinerary-layout.ds.ts","../../../projects/n7-boilerplate-muruca/src/lib/layouts/itinerary-layout/itinerary-layout.eh.ts","../../../projects/n7-boilerplate-muruca/src/lib/layouts/itinerary-layout/itinerary-layout.config.ts","../../../projects/n7-boilerplate-muruca/src/lib/components/read-more/read-more.ts","../../../projects/n7-boilerplate-muruca/src/lib/components/read-more/read-more.html","../../../projects/n7-boilerplate-muruca/src/lib/components/gallery/gallery.ts","../../../projects/n7-boilerplate-muruca/src/lib/components/gallery/gallery.html","../../../projects/n7-boilerplate-muruca/src/lib/layouts/itinerary-layout/itinerary-layout.ts","../../../projects/n7-boilerplate-muruca/src/lib/layouts/itinerary-layout/itinerary-layout.html","../../../projects/n7-boilerplate-muruca/src/lib/layouts/map-layout/map-layout.ds.ts","../../../projects/n7-boilerplate-muruca/src/lib/layouts/map-layout/map-layout.eh.ts","../../../projects/n7-boilerplate-muruca/src/lib/layouts/map-layout/map-layout.config.ts","../../../projects/n7-boilerplate-muruca/src/lib/layouts/map-layout/map-layout.ts","../../../projects/n7-boilerplate-muruca/src/lib/layouts/map-layout/map-layout.html","../../../projects/n7-boilerplate-muruca/src/lib/layouts/network-layout/network-layout.ds.ts","../../../projects/n7-boilerplate-muruca/src/lib/layouts/network-layout/network-layout.eh.ts","../../../projects/n7-boilerplate-muruca/src/lib/layouts/network-layout/network-layout.config.ts","../../../projects/n7-boilerplate-muruca/src/lib/layouts/network-layout/network-layout.ts","../../../projects/n7-boilerplate-muruca/src/lib/layouts/network-layout/network-layout.html","../../../projects/n7-boilerplate-muruca/src/lib/layouts/posts-layout/posts-layout.ds.ts","../../../projects/n7-boilerplate-muruca/src/lib/layouts/posts-layout/posts-layout.eh.ts","../../../projects/n7-boilerplate-muruca/src/lib/layouts/posts-layout/posts-layout.config.ts","../../../projects/n7-boilerplate-muruca/src/lib/layouts/posts-layout/posts-layout.ts","../../../projects/n7-boilerplate-muruca/src/lib/layouts/posts-layout/posts-layout.html","../../../projects/n7-boilerplate-muruca/src/lib/layouts/resource-layout/resource-layout.ds.ts","../../../projects/n7-boilerplate-muruca/src/lib/layouts/resource-layout/resource-layout.eh.ts","../../../projects/n7-boilerplate-muruca/src/lib/layouts/resource-layout/resource-layout.config.ts","../../../projects/n7-boilerplate-muruca/src/lib/event-handlers/image-viewer.eh.ts","../../../projects/n7-boilerplate-muruca/src/lib/event-handlers/image-viewer-tools.eh.ts","../../../projects/n7-boilerplate-muruca/src/lib/event-handlers/image-viewer-overlay-details.eh.ts","../../../projects/n7-boilerplate-muruca/src/lib/components/metadata-with-readmore/metadata-with-readmore.ts","../../../projects/n7-boilerplate-muruca/src/lib/components/metadata-with-readmore/metadata-with-readmore.html","../../../projects/n7-boilerplate-muruca/src/lib/components/metadata-dynamic/metadata-dynamic.ts","../../../projects/n7-boilerplate-muruca/src/lib/components/metadata-dynamic/metadata-dynamic.html","../../../projects/n7-boilerplate-muruca/src/lib/layouts/resource-layout/resource-layout.ts","../../../projects/n7-boilerplate-muruca/src/lib/layouts/resource-layout/resource-layout.html","../../../projects/n7-boilerplate-muruca/src/lib/layouts/search-facets-layout/search-facets-layout.ds.ts","../../../projects/n7-boilerplate-muruca/src/lib/layouts/search-facets-layout/search-facets-layout.eh.ts","../../../projects/n7-boilerplate-muruca/src/lib/layouts/search-facets-layout/search-facets-layout.config.ts","../../../projects/n7-boilerplate-muruca/src/lib/data-sources/facets/facet-text.ds.ts","../../../projects/n7-boilerplate-muruca/src/lib/data-sources/facets/facet-checkbox.ds.ts","../../../projects/n7-boilerplate-muruca/src/lib/data-sources/facets/facet-select.ds.ts","../../../projects/n7-boilerplate-muruca/src/lib/data-sources/facets/facet-link.ds.ts","../../../projects/n7-boilerplate-muruca/src/lib/data-sources/facets/facet-header.ds.ts","../../../projects/n7-boilerplate-muruca/src/lib/event-handlers/facets/facet-header.eh.ts","../../../projects/n7-boilerplate-muruca/src/lib/event-handlers/facets/facet-text.eh.ts","../../../projects/n7-boilerplate-muruca/src/lib/event-handlers/facets/facet-checkbox.eh.ts","../../../projects/n7-boilerplate-muruca/src/lib/event-handlers/facets/facet-select.eh.ts","../../../projects/n7-boilerplate-muruca/src/lib/event-handlers/facets/facet-link.eh.ts","../../../projects/n7-boilerplate-muruca/src/lib/data-sources/facets/facet-link-multiple.ds.ts","../../../projects/n7-boilerplate-muruca/src/lib/event-handlers/facets/facet-link-multiple.eh.ts","../../../projects/n7-boilerplate-muruca/src/lib/helpers/map-helper.ts","../../../projects/n7-boilerplate-muruca/src/lib/data-sources/facets/facet-map.ds.ts","../../../projects/n7-boilerplate-muruca/src/lib/event-handlers/facets/facet-map.eh.ts","../../../projects/n7-boilerplate-muruca/src/lib/event-handlers/facets/facet-histogram.eh.ts","../../../projects/n7-boilerplate-muruca/src/lib/data-sources/facets/facet-histogram.ds.ts","../../../projects/n7-boilerplate-muruca/src/lib/layouts/search-facets-layout/search-facets-layout.ts","../../../projects/n7-boilerplate-muruca/src/lib/layouts/search-facets-layout/search-facets-layout.html","../../../projects/n7-boilerplate-muruca/src/lib/helpers/local-storage-helper.ts","../../../projects/n7-boilerplate-muruca/src/lib/layouts/search-layout/search-layout.ds.ts","../../../projects/n7-boilerplate-muruca/src/lib/layouts/search-layout/search-layout.eh.ts","../../../projects/n7-boilerplate-muruca/src/lib/layouts/search-layout/search-layout.config.ts","../../../projects/n7-boilerplate-muruca/src/lib/components/search-page-description/search-page-description.ts","../../../projects/n7-boilerplate-muruca/src/lib/components/search-page-description/search-page-description.html","../../../projects/n7-boilerplate-muruca/src/lib/layouts/search-layout/search-layout.ts","../../../projects/n7-boilerplate-muruca/src/lib/layouts/search-layout/search-layout.html","../../../projects/n7-boilerplate-muruca/src/lib/layouts/static-layout/static-layout.ds.ts","../../../projects/n7-boilerplate-muruca/src/lib/layouts/static-layout/static-layout.eh.ts","../../../projects/n7-boilerplate-muruca/src/lib/layouts/static-layout/static-layout.config.ts","../../../projects/n7-boilerplate-muruca/src/lib/layouts/static-layout/static-layout.ts","../../../projects/n7-boilerplate-muruca/src/lib/layouts/static-layout/static-layout.html","../../../projects/n7-boilerplate-muruca/src/lib/layouts/timeline-layout/timeline-layout.ds.ts","../../../projects/n7-boilerplate-muruca/src/lib/layouts/timeline-layout/timeline-layout.eh.ts","../../../projects/n7-boilerplate-muruca/src/lib/layouts/timeline-layout/timeline-layout.config.ts","../../../projects/n7-boilerplate-muruca/src/lib/layouts/timeline-layout/timeline-layout.ts","../../../projects/n7-boilerplate-muruca/src/lib/layouts/timeline-layout/timeline-layout.html","../../../projects/n7-boilerplate-muruca/src/lib/components/resource-modal/resource-modal.ts","../../../projects/n7-boilerplate-muruca/src/lib/components/resource-modal/resource-modal.html","../../../projects/n7-boilerplate-muruca/src/lib/n7-boilerplate-muruca.module.ts","../../../projects/n7-boilerplate-muruca/src/lib/config-types/muruca/advanced-search.ts","../../../projects/n7-boilerplate-muruca/src/lib/layouts/index.ts","../../../projects/n7-boilerplate-muruca/src/lib/services/footer.service.ts","../../../projects/n7-boilerplate-muruca/src/lib/services/menu.service.ts","../../../projects/n7-boilerplate-muruca/src/lib/services/translations-loader.service.ts","../../../projects/n7-boilerplate-muruca/src/lib/services/copy-protection.service.ts","../../../projects/n7-boilerplate-muruca/src/lib/guards/dynamic-path.guard.ts","../../../projects/n7-boilerplate-muruca/src/lib/guards/locale-dependencies.guard.ts","../../../projects/n7-boilerplate-muruca/src/public-api.ts","../../../projects/n7-boilerplate-muruca/src/net7-boilerplate-muruca.ts"],"sourcesContent":["import { MrInputSchema } from '../interfaces/search.interface';\n\nconst hasValue = (value) => {\n if (Array.isArray(value)) {\n return value.length > 0;\n }\n return !!(value || value === 0);\n};\n\nexport default {\n stateToQueryParams(state, schemas: { [key: string]: MrInputSchema }) {\n const queryParams = {};\n\n Object.keys(state).forEach((key) => {\n const schema = schemas[key];\n const { multiple, valueType } = schema;\n const value = state[key];\n if (hasValue(value)) {\n let encodedValue;\n switch (valueType) {\n case 'number':\n queryParams[key] = multiple ? value.join(',') : value;\n break;\n case 'string':\n if (Array.isArray(value)) {\n encodedValue = value.map((element) => element.replace(/,/g, '%2c'));\n } else {\n encodedValue = value.replace(/,/g, '%2c');\n }\n queryParams[key] = multiple ? encodedValue.join(',') : encodedValue;\n break;\n\n case 'boolean':\n queryParams[key] = multiple ? value.map((v) => +v).join(',') : +value;\n break;\n\n default:\n break;\n }\n }\n });\n return queryParams;\n },\n queryParamsToState(queryParams, schemas: { [key: string]: MrInputSchema }) {\n const state = {};\n\n Object.keys(queryParams).forEach((key) => {\n const value = queryParams[key];\n const schema = schemas[key];\n const { multiple, valueType } = schema;\n if (hasValue(value)) {\n if (hasValue(value)) {\n switch (valueType) {\n case 'number':\n state[key] = multiple ? value.split(',').map((v) => +v) : +value;\n break;\n\n case 'string':\n state[key] = multiple ? value.split(',').map((v) => `${v.replace(/%2c/g, ',')}`) : `${value}`.replace(/%2c/g, ',');\n break;\n\n case 'boolean':\n state[key] = multiple ? value.split(',').map((v) => !!v) : !!value;\n break;\n\n default:\n break;\n }\n }\n }\n });\n return state;\n }\n};\n","/* eslint-disable camelcase */\nimport { Injectable } from '@angular/core';\nimport { ActivatedRoute, Router } from '@angular/router';\nimport {\n fromEvent, Observable, of, Subject\n} from 'rxjs';\nimport {\n filter,\n switchMap,\n map,\n debounceTime,\n delay,\n tap,\n takeUntil,\n switchMapTo\n} from 'rxjs/operators';\nimport { isEmpty, xor } from 'lodash';\nimport { _t } from '@net7/core';\nimport { CommunicationService } from '@net7/boilerplate-common';\nimport searchHelper from '../helpers/search-helper';\nimport { MrInputSchema } from '../interfaces/search.interface';\n\nexport const INPUT_STATE_CONTEXT = 'input';\nexport const FACET_STATE_CONTEXT = 'facet';\nexport const SECTION_STATE_CONTEXT = 'section';\nexport const RESULTS_REQUEST_STATE_CONTEXT = 'resultsRequest';\nexport const FACETS_REQUEST_STATE_CONTEXT = 'facetsRequest';\n\n@Injectable()\nexport class MrSearchService {\n private destroyed$: Subject<void> = new Subject();\n\n private searchId: string | number;\n\n private locale: string | null;\n\n private config;\n\n private queryParamKeys: string[] = [];\n\n private initializeKeys: string[] = [];\n\n private initializeValues: {\n [id: string]: any;\n } = {};\n\n private inputSchemas: {\n [key: string]: MrInputSchema;\n } = {};\n\n private contextState: {\n [key: string]: any;\n } = {};\n\n private internalFilterKeys: string[] = [];\n\n private internalFilterState: {\n globalParams: any;\n facets: {\n [key: string]: any;\n };\n } = {\n globalParams: {},\n facets: {}\n };\n\n private state$: {\n [key: string]: Subject<any>;\n } = {};\n\n private beforeHook: {\n [key: string]: (value: any) => any;\n } = {};\n\n constructor(\n private router: Router,\n private activatedRoute: ActivatedRoute,\n private communication: CommunicationService,\n ) { }\n\n public init(searchId, config, locale = null) {\n this.searchId = searchId;\n this.config = config;\n this.locale = locale;\n\n // first clear\n this.clear();\n\n // initial states\n this.initInputState();\n this.initFacetState();\n this.initSectionState();\n\n // listeners\n this.onInputsChange();\n this.onInternalInputsChange();\n this.onRouteChange();\n this.onResultsLoading();\n this.onFacetsScroll();\n }\n\n public getConfig = () => this.config;\n\n public getState$(context: string, id?: string): Subject<any> {\n const stateId = id ? `${context}.${id}` : context;\n if (!this.state$[stateId]) {\n throw Error(`Key \"${stateId}\" does not exist`);\n }\n\n return this.state$[stateId];\n }\n\n public addStateContext(context: string) {\n if (this.state$[context]) {\n throw Error(`State key \"${context}\" already exists`);\n }\n\n // initial state\n this.contextState[context] = {};\n // create stream\n this.state$[context] = new Subject();\n }\n\n public addState(context: string, id: string) {\n const stateId = `${context}.${id}`;\n if (!this.state$[context]) {\n throw Error(`\n State context \"${context}\" does not exist.\n You must add context first\n `);\n }\n if (this.state$[stateId]) {\n throw Error(`State key \"${stateId}\" already exists`);\n }\n\n // create stream\n this.state$[stateId] = new Subject();\n }\n\n public setState(context: string, id: string, newValue: any) {\n const stateId = `${context}.${id}`;\n if (!this.state$[stateId]) {\n throw Error(`Key \"${stateId}\" does not exist`);\n }\n\n let value = newValue;\n // hook control\n if (this.beforeHook[stateId]) {\n value = this.beforeHook[stateId](value);\n }\n\n // update stream\n this.state$[stateId].next(value);\n // update context\n this.setContextState(context, id, value);\n }\n\n public setBeforeHook(context: string, id: string, hook) {\n const stateId = `${context}.${id}`;\n if (!this.state$[stateId]) {\n throw Error(`Key \"${stateId}\" does not exist`);\n }\n\n this.beforeHook[stateId] = hook;\n }\n\n public reset() {\n // clear input states\n Object.keys(this.contextState[INPUT_STATE_CONTEXT])\n .filter((id) => !this.internalFilterKeys.includes(id))\n .forEach((id) => {\n this.setState(INPUT_STATE_CONTEXT, id, null);\n });\n }\n\n public destroy() {\n this.destroyed$.next();\n }\n\n private clear() {\n this.contextState = {};\n this.state$ = {};\n this.beforeHook = {};\n }\n\n private setContextState(context: string, id: string, newValue: any) {\n this.contextState[context] = {\n ...this.contextState[context],\n [`${id}`]: newValue\n };\n this.state$[context].next({\n lastUpdated: id,\n state: this.contextState[context]\n });\n }\n\n private initInputState() {\n const { facets, layoutInputs } = this.config;\n // add context state\n this.addStateContext(INPUT_STATE_CONTEXT);\n\n // set facets input state\n facets.sections.forEach(({ header, inputs }) => {\n [header, ...inputs]\n .filter((input) => input)\n .forEach(({\n id, queryParam, schema, limit, type, target, initialize\n }) => {\n if (!id) {\n return;\n }\n this.addState(INPUT_STATE_CONTEXT, id);\n\n // is query param?\n if (queryParam) {\n this.queryParamKeys.push(id);\n }\n\n // input has initial values request\n if (initialize) {\n this.initializeKeys.push(id);\n }\n\n // schemas\n if (schema) {\n this.inputSchemas[id] = schema;\n }\n\n // links internal state\n if (['link', 'map', 'histogram'].includes(type)) {\n this.internalFilterState.facets[id] = {\n id,\n limit,\n offset: 0,\n query: '',\n loading: false,\n values: []\n };\n }\n\n // internal filters\n if (target) {\n this.internalFilterKeys.push(id);\n }\n });\n });\n\n // set layout input state\n layoutInputs.forEach(({ id, queryParam, schema }) => {\n this.addState(INPUT_STATE_CONTEXT, id);\n\n if (queryParam) {\n this.queryParamKeys.push(id);\n }\n\n // schemas\n if (schema) {\n this.inputSchemas[id] = schema;\n }\n });\n }\n\n private initFacetState() {\n const { facets } = this.config;\n // add context state\n this.addStateContext(FACET_STATE_CONTEXT);\n\n // set input state\n facets.sections.forEach(({ header, inputs }) => {\n [header, ...inputs]\n .filter((input) => input)\n .forEach((input) => {\n this.addState(FACET_STATE_CONTEXT, input.id);\n });\n });\n }\n\n private initSectionState() {\n const { facets } = this.config;\n // add context state\n this.addStateContext(SECTION_STATE_CONTEXT);\n\n // set input state\n facets.sections.forEach(({ id }) => {\n this.addState(SECTION_STATE_CONTEXT, id);\n });\n }\n\n private onRouteChange() {\n const { results } = this.config.request;\n\n // add context state\n this.addStateContext(RESULTS_REQUEST_STATE_CONTEXT);\n\n // default states\n ['loading', 'request', 'success', 'error'].forEach((id) => {\n this.addState(RESULTS_REQUEST_STATE_CONTEXT, id);\n });\n\n this.activatedRoute.queryParams.pipe(\n takeUntil(this.destroyed$),\n // fix initial listeners (symbolic timeout)\n delay(1),\n // query params to state\n map((params) => searchHelper.queryParamsToState(params, this.inputSchemas)),\n // state != queryParams control\n tap((params) => {\n if (isEmpty(params)) {\n this.reset();\n }\n\n // update state\n if (!isEmpty(params)) {\n const inputContext = this.contextState[INPUT_STATE_CONTEXT];\n if (isEmpty(inputContext)) {\n Object.keys(params)\n .filter((inputId) => this.queryParamKeys.includes(inputId))\n .forEach((inputId) => {\n this.setState(INPUT_STATE_CONTEXT, inputId, params[inputId]);\n });\n } else {\n Object.keys(params)\n .filter((inputId) => this.queryParamKeys.includes(inputId))\n .filter((inputId) => this.notEquals(inputContext[inputId], params[inputId]))\n .forEach((inputId) => {\n this.setState(\n INPUT_STATE_CONTEXT,\n inputId,\n (params[inputId] || params[inputId] === 0)\n ? params[inputId]\n : null\n );\n });\n }\n }\n }),\n map((params) => {\n this.setState(RESULTS_REQUEST_STATE_CONTEXT, 'loading', params);\n return params;\n }),\n debounceTime(results.delay || 1),\n map((params) => {\n this.setState(RESULTS_REQUEST_STATE_CONTEXT, 'request', params);\n return params;\n }),\n switchMap((state) => this.communication.request$(results.id, {\n params: { ...state, searchId: this.searchId },\n urlParams: this.locale ? `?locale=${this.locale}` : '',\n method: 'POST',\n onError: (error) => {\n this.setState(RESULTS_REQUEST_STATE_CONTEXT, 'error', error);\n }\n }, results.provider || null))\n ).subscribe((response) => {\n this.setState(RESULTS_REQUEST_STATE_CONTEXT, 'success', response);\n });\n }\n\n private onInputsChange() {\n this.getState$(INPUT_STATE_CONTEXT).pipe(\n filter(({ lastUpdated }) => this.queryParamKeys.indexOf(lastUpdated) !== -1)\n ).subscribe(({ state }) => {\n const filteredState = {};\n Object.keys(state).forEach((id) => {\n if (this.queryParamKeys.indexOf(id) !== -1) {\n filteredState[id] = state[id];\n }\n });\n const queryParams = searchHelper.stateToQueryParams(filteredState, this.inputSchemas);\n this.router.navigate([], {\n queryParams\n });\n });\n }\n\n private onInternalInputsChange() {\n this.getState$(INPUT_STATE_CONTEXT).pipe(\n filter(({ lastUpdated }) => this.queryParamKeys.indexOf(lastUpdated) === -1),\n map(({ lastUpdated, state }) => {\n const { sections } = this.config.facets;\n let inputConfig;\n sections.forEach((section) => {\n section.inputs.forEach((input) => {\n if (input.id === lastUpdated) {\n inputConfig = input;\n }\n });\n });\n if (inputConfig && inputConfig.target) {\n return {\n inputConfig,\n value: state[lastUpdated]\n };\n }\n return null;\n }),\n filter((data) => data !== null),\n ).subscribe((data) => {\n if (!data) throw Error('inputChange data is null');\n const { inputConfig, value } = data;\n const { target } = inputConfig;\n // update internal filters\n this.internalFilterState.facets[target].query = value;\n this.internalFilterState.facets[target].offset = 0;\n this.doSingleFacetRequest(target);\n });\n }\n\n private doSingleFacetRequest(target) {\n const { facets } = this.config.request;\n const { globalParams } = this.internalFilterState;\n const {\n id, limit, offset, query\n } = this.internalFilterState.facets[target];\n this.communication.request$(facets.id, {\n params: {\n ...globalParams,\n facets: [{\n id, limit, offset, query\n }],\n searchId: this.searchId\n },\n urlParams: this.locale ? `?locale=${this.locale}` : '',\n method: 'POST',\n onError: (error) => {\n this.setState(FACETS_REQUEST_STATE_CONTEXT, 'error', error);\n }\n }, facets.provider || null).subscribe((response) => {\n this.onFacetsRequestSuccess(response);\n\n // reset loading\n this.internalFilterState.facets[target].loading = false;\n });\n }\n\n private onResultsLoading() {\n const { facets } = this.config.request;\n\n if (!facets) {\n return;\n }\n\n // add context state\n this.addStateContext(FACETS_REQUEST_STATE_CONTEXT);\n\n // default states\n ['loading', 'request', 'success', 'error'].forEach((id) => {\n this.addState(FACETS_REQUEST_STATE_CONTEXT, id);\n });\n\n this.getState$(RESULTS_REQUEST_STATE_CONTEXT, 'loading').pipe(\n map((params) => {\n const facetsParams = { ...params };\n this.setState(FACETS_REQUEST_STATE_CONTEXT, 'loading', facetsParams);\n // updated internal filter state\n this.internalFilterState.globalParams = { ...facetsParams };\n return facetsParams;\n }),\n debounceTime(facets.delay || 1),\n map((params) => {\n params.facets = [];\n this.config.facets.sections.forEach(({ inputs }) => {\n inputs.filter(({ type }) => ['link', 'map', 'histogram'].includes(type))\n .forEach(({ id }) => {\n // reset offset\n this.internalFilterState.facets[id].offset = 0;\n const { limit, query, offset } = this.internalFilterState.facets[id];\n params.facets.push({\n id, limit, offset, query\n });\n });\n });\n this.setState(FACETS_REQUEST_STATE_CONTEXT, 'request', params);\n return params;\n }),\n switchMap((state) => {\n let initializeRequest$: Observable<any> = of(true);\n if (this.initializeKeys.length && isEmpty(this.initializeValues)) {\n initializeRequest$ = this.communication.request$(facets.id, {\n params: {\n facets: state.facets,\n searchId: this.searchId\n },\n urlParams: this.locale ? `?locale=${this.locale}` : '',\n method: 'POST',\n onError: (error) => {\n this.setState(FACETS_REQUEST_STATE_CONTEXT, 'error', error);\n }\n }, facets.provider || null);\n }\n return initializeRequest$.pipe(\n tap((response) => {\n if (response.facets) {\n Object.keys(response.facets)\n .filter((inputKey) => this.initializeKeys.includes(inputKey))\n .forEach((inputKey) => {\n this.initializeValues[inputKey] = response.facets[inputKey];\n });\n }\n }),\n switchMapTo(of(state))\n );\n }),\n switchMap((state) => this.communication.request$(facets.id, {\n params: {\n ...state,\n searchId: this.searchId\n },\n urlParams: this.locale ? `?locale=${this.locale}` : '',\n method: 'POST',\n onError: (error) => {\n this.setState(FACETS_REQUEST_STATE_CONTEXT, 'error', error);\n }\n }, facets.provider || null))\n ).subscribe((response: any) => {\n this.onFacetsRequestSuccess(response);\n });\n\n // update facet links\n this.getState$(FACETS_REQUEST_STATE_CONTEXT, 'success').subscribe((response) => {\n const { facets: responseFacets } = response;\n Object.keys(responseFacets).forEach((id) => {\n const { values: responseValues, filtered_total_count } = responseFacets[id];\n const { limit, offset, values: stateValues } = this.internalFilterState.facets[id];\n const filterState = this.internalFilterState.facets[id];\n if (offset > 0) {\n // delete loading element\n filterState.values.pop();\n // merge new results\n filterState.values = [\n ...stateValues,\n ...responseValues\n ];\n } else {\n filterState.values = [\n ...responseValues\n ];\n }\n if ((offset + limit) < filtered_total_count) {\n filterState.values.push({\n text: _t('global#facet_loading_text'),\n classes: 'loading-text-link',\n payload: null,\n });\n }\n this.setState(FACET_STATE_CONTEXT, id, {\n links: filterState.values\n });\n });\n });\n }\n\n private onFacetsRequestSuccess(response) {\n const { facets: responseFacets } = response;\n if (!isEmpty(this.initializeValues)) {\n // intialValues and responseFacets merge strategy\n Object.keys(responseFacets).forEach((inputKey) => {\n if (this.initializeValues[inputKey]) {\n const updatedValues = this.initializeValues[inputKey].values.map((initialValue) => {\n const singleValue = responseFacets[inputKey].values.find(\n ({ payload }) => payload === initialValue.payload\n );\n return {\n ...initialValue,\n counter: singleValue?.counter || 0\n };\n });\n // sort by counter\n updatedValues.sort((a, b) => b.counter - a.counter);\n responseFacets[inputKey].values = updatedValues;\n }\n });\n }\n Object.keys(responseFacets).forEach((inputKey) => {\n // update internal filter state\n const { filtered_total_count } = responseFacets[inputKey];\n this.internalFilterState.facets[inputKey].filtered_total_count = filtered_total_count;\n });\n this.setState(FACETS_REQUEST_STATE_CONTEXT, 'success', {\n ...response,\n facets: responseFacets\n });\n }\n\n private onFacetsScroll() {\n setTimeout(() => {\n const { facets } = this.config;\n facets.sections.forEach(({ inputs }) => {\n inputs\n .filter((input) => input)\n .filter((input) => input.type === 'link')\n .forEach(({ id }) => {\n const scrollEl = document.querySelector(`#facet-container-${id} .n7-input-link`);\n if (!scrollEl) throw Error(`Element with id \"facet-container-${id}\" not found`);\n const scroll$ = fromEvent(scrollEl, 'scroll');\n scroll$.pipe(\n debounceTime(300)\n ).subscribe(({ target }) => {\n const {\n limit,\n offset,\n loading,\n filtered_total_count,\n } = this.internalFilterState.facets[id];\n const { scrollTop, clientHeight, scrollHeight } = target as HTMLElement;\n if (\n // checks if the user has scrolled to the bottom of a container\n (scrollTop + clientHeight + 1 >= Math.ceil(scrollHeight))\n // checks if there are more items to load\n && (offset + limit < filtered_total_count)\n // checks if the application is not currently loading more items\n && loading === false\n ) {\n this.internalFilterState.facets[id].loading = true;\n this.internalFilterState.facets[id].offset = offset + limit;\n this.doSingleFacetRequest(id);\n }\n });\n });\n });\n });\n }\n\n isQueryParamKey = (input) => this.queryParamKeys.includes(input);\n\n notEquals(val1, val2) {\n if (Array.isArray(val1) && Array.isArray(val2)) {\n return !!xor(val1, val2).length;\n }\n return val1 !== val2;\n }\n}\n","import { Injectable } from '@angular/core';\nimport { ReplaySubject } from 'rxjs';\n\nexport enum LayoutState {\n IDLE = 'IDLE',\n LOADING = 'LOADING',\n SUCCESS = 'SUCCESS',\n EMPTY = 'EMPTY',\n ERROR = 'ERROR',\n}\n\n@Injectable()\nexport class MrLayoutStateService {\n private stateContainers: {\n [key: string]: ReplaySubject<LayoutState>;\n } = {};\n\n add(id: string | string[]) {\n const ids = Array.isArray(id) ? id : [id];\n ids.forEach((key) => {\n this.stateContainers[key] = new ReplaySubject();\n // initial state\n this.stateContainers[key].next(LayoutState.IDLE);\n });\n }\n\n get$(id: string) {\n if (!this.stateContainers[id]) {\n throw Error(`Layout state id '${id}' does not exists`);\n }\n return this.stateContainers[id];\n }\n\n set(id: string, newState: LayoutState) {\n if (!this.stateContainers[id]) {\n throw Error(`Layout state id '${id}' does not exists`);\n }\n this.stateContainers[id].next(newState);\n }\n}\n","import { Injectable } from '@angular/core';\nimport { Subject, Observable } from 'rxjs';\nimport { _t } from '@net7/core';\nimport { ConfigurationService, CommunicationService } from '@net7/boilerplate-common';\n\nexport type ModalStatus = 'LOADING' | 'ERROR' | 'SUCCESS' | 'EMPTY' | 'IDLE';\n\nexport type ModalState = {\n status: ModalStatus;\n response?: any;\n config?: any;\n};\n\n@Injectable()\nexport class MrResourceModalService {\n state$: Subject<ModalState> = new Subject();\n\n constructor(\n private configuration: ConfigurationService,\n private communication: CommunicationService,\n ) {\n // default state\n this.state$.next({ status: 'IDLE' });\n }\n\n open(resourceId: string | number, configId: string) {\n this.state$.next({ status: 'LOADING' });\n const config = this.configuration.get(`resource-modal-${configId}`);\n // add translations\n ['top', 'content'].forEach((type) => {\n config.sections[type] = config.sections[type].map((section) => ({\n ...section,\n title: _t(section.title)\n }));\n });\n\n this.pageRequest$(resourceId, config, (err) => {\n console.warn(`Error loading resource modal for ${resourceId}`, err.message);\n this.state$.next({ status: 'ERROR' });\n }).subscribe((response) => {\n this.state$.next({ response, config, status: 'SUCCESS', });\n });\n }\n\n close() {\n this.state$.next({ status: 'IDLE' });\n }\n\n pageRequest$(id, config, onError: (err: any) => void): Observable<any> {\n const { top, content } = config.sections;\n const sections = top.concat(content);\n return this.communication.request$('resource', {\n onError,\n method: 'POST',\n params: {\n id,\n type: config.type,\n sections: sections.map((s) => s.id),\n }\n });\n }\n}\n","import { Injectable } from '@angular/core';\nimport { Router, RoutesRecognized } from '@angular/router';\nimport { ReplaySubject } from 'rxjs';\nimport { filter, map } from 'rxjs/operators';\n\nexport type LocaleResourceConfig = {\n [locale: string]: {\n id: string;\n slug: string;\n };\n};\n\n@Injectable()\nexport class MrLocaleService {\n private routeId: string;\n\n private locale: string;\n\n private resourceConfig: LocaleResourceConfig = null;\n\n public changed$: ReplaySubject<{ routeId: string; locale: string; }> = new ReplaySubject();\n\n constructor(\n private router: Router\n ) {\n this.router.events.pipe(\n filter((event) => event instanceof RoutesRecognized),\n map((event: RoutesRecognized) => event.state.root.firstChild.data)\n ).subscribe(({ routeId, locale }) => {\n this.routeId = routeId;\n this.locale = locale;\n\n this.changed$.next({\n routeId: this.routeId,\n locale: this.locale\n });\n\n // remove previous config\n this.resourceConfig = null;\n });\n }\n\n getRouteId = () => this.routeId;\n\n getLocale = () => this.locale;\n\n getLink = (locale: string, routeId: string, id?: string, slug?: string) => {\n const routeConfig = this.router.config.find((config) => {\n const { routeId: currentRouteId, locale: currentRouteLocale } = config?.data || {};\n return routeId === currentRouteId && locale === currentRouteLocale;\n });\n if (typeof routeConfig?.path === 'string') {\n const resourceLocaleConfig = this.resourceConfig && this.resourceConfig[locale]\n ? this.resourceConfig[locale]\n : { id: null, slug: null };\n let idParam = '';\n let slugParam = '';\n if (id) {\n idParam = `/${id}`;\n } else if (resourceLocaleConfig.id) {\n idParam = `/${resourceLocaleConfig.id}`;\n }\n if (slug) {\n slugParam = `/${slug}`;\n } else if (resourceLocaleConfig.slug) {\n slugParam = `/${resourceLocaleConfig.slug}`;\n }\n const href = routeConfig.path\n .replace('/:id', idParam)\n .replace('/:slug', slugParam);\n return href.indexOf('/') === 0 ? `${href}` : `/${href}`;\n }\n console.warn('LocaleService link not found', locale, routeId);\n return '';\n };\n\n getLinkByLocale = (\n locale: string,\n id?: string,\n slug?: string\n ) => this.getLink(locale, this.routeId, id, slug);\n\n getLinkByRouteId = (\n routeId: string,\n id?: string,\n slug?: string\n ) => this.getLink(this.locale, routeId, id, slug);\n\n setResourceConfig = (config: LocaleResourceConfig) => {\n this.resourceConfig = config;\n };\n}\n","import { Pipe, PipeTransform } from '@angular/core';\nimport { DomSanitizer } from '@angular/platform-browser';\n\n@Pipe({ name: 'keepHtml', pure: false })\nexport class EscapeHtmlPipe implements PipeTransform {\n constructor(private sanitizer: DomSanitizer) {\n }\n\n transform(content) {\n return this.sanitizer.bypassSecurityTrustHtml(content);\n }\n}\n","import { Data } from '@angular/router';\nimport { LayoutDataSource, _t } from '@net7/core';\nimport { Observable } from 'rxjs';\nimport {\n ConfigurationService,\n CommunicationService,\n MainStateService\n} from '@net7/boilerplate-common';\nimport { MrLocaleService } from '../../services/locale.service';\n\nexport class MrAdvancedResultsLayoutDS extends LayoutDataSource {\n protected configuration: ConfigurationService;\n\n protected communication: CommunicationService;\n\n protected mainState: MainStateService;\n\n protected localeService: MrLocaleService;\n\n protected routeData: Data;\n\n public pageConfig;\n\n onInit(payload) {\n this.configuration = payload.configuration;\n this.mainState = payload.mainState;\n this.routeData = payload.routeData;\n this.communication = payload.communication;\n this.localeService = payload.localeService;\n this.pageConfig = this.configuration.get(this.routeData.configId);\n\n // config\n this.all().updateOptions({ config: this.pageConfig, localeService: this.localeService });\n\n // manual updates\n this.one('mr-search-page-title').update({});\n\n // update head title\n this.updateHeadTitle();\n\n // update translations\n this.addTranslations(this.pageConfig);\n }\n\n updateSearchTags(params) {\n if (!this.pageConfig.filters) {\n return;\n }\n\n const { labels } = this.pageConfig.filters;\n const tags = [];\n Object.keys(labels)\n .filter((key) => !!params[key])\n .forEach((key) => {\n tags[key] = params[key];\n });\n\n this.one('mr-advanced-search-tags').updateOptions({ labels });\n this.one('mr-advanced-search-tags').update(tags);\n }\n\n request$(params, onError): Observable<any> {\n const { locale } = this.routeData;\n const { searchId } = this.pageConfig;\n const searchParams = {\n ...params\n };\n Object.keys(searchParams)\n .filter((key) => ['page', 'limit', 'sort'].includes(key))\n .forEach((key) => {\n searchParams.results = searchParams.results || {};\n searchParams.results[key] = searchParams[key];\n delete searchParams[key];\n });\n // normalize results filters\n const resultsParams = {} as {\n limit: number;\n offset: number;\n sort: string;\n };\n const results = searchParams.results || {};\n const page = results.page ? +results.page : 1;\n resultsParams.limit = results.limit ? +results.limit : 12;\n resultsParams.offset = page === 1 ? 0 : resultsParams.limit * (page - 1);\n resultsParams.sort = results.sort || 'sort_ASC';\n return this.communication.request$('advancedSearch', {\n method: 'POST',\n params: {\n ...searchParams,\n searchId,\n results: {\n ...resultsParams\n }\n },\n urlParams: locale ? `?locale=${locale}` : '',\n onError\n });\n }\n\n handleResponse(response) {\n this.some([\n 'mr-search-results-title',\n 'mr-search-results',\n ]).update(response);\n\n // pagination\n this.one('n7-smart-pagination').updateOptions({ mode: 'payload' });\n this.one('n7-smart-pagination').update(this.getPaginationParams(response));\n }\n\n protected updateHeadTitle() {\n const appName = this.configuration.get('name');\n const pageTitle = this.pageConfig.title;\n this.mainState.update('headTitle', [appName, _t(pageTitle)].join(' > '));\n }\n\n private addTranslations(config) {\n if (config?.sort?.label) {\n config.sort.label = _t(config.sort.label);\n config.sort.options = config.sort.options.map((option) => ({\n ...option,\n label: _t(option.label)\n }));\n }\n ['text', 'button'].forEach((key) => {\n if (config.fallback) {\n config.fallback[key] = _t(config.fallback[key]);\n }\n if (config.ko) {\n config.ko[key] = _t(config.ko[key]);\n }\n });\n\n // filters\n const { filters } = this.pageConfig;\n if (filters) {\n filters.title = _t(filters.title);\n Object.keys(filters.labels).forEach((key) => {\n filters.labels[key] = _t(filters.labels[key]);\n });\n }\n }\n\n protected getPaginationParams(response) {\n const { total_count: totalCount, offset, limit } = response;\n const { pagination: paginationConfig } = this.pageConfig;\n\n return {\n totalPages: Math.ceil(totalCount / limit),\n currentPage: (offset + limit) / limit,\n pageLimit: paginationConfig.limit,\n sizes: {\n label: paginationConfig.selectLabel ? _t(paginationConfig.selectLabel) : null,\n list: paginationConfig.options,\n active: limit,\n },\n };\n }\n}\n","import { ActivatedRoute, Router } from '@angular/router';\nimport { EventHandler } from '@net7/core';\nimport { Subject } from 'rxjs';\nimport { switchMap, takeUntil, tap } from 'rxjs/operators';\nimport { isEmpty } from 'lodash';\nimport { helpers } from '@net7/boilerplate-common';\nimport { MrAdvancedResultsLayoutDS } from './advanced-results-layout.ds';\nimport { MrLayoutStateService, LayoutState } from '../../services/layout-state.service';\nimport { MrResourceModalService } from '../../services/resource-modal.service';\n\nexport class MrAdvancedResultsLayoutEH extends EventHandler {\n protected activatedRoute: ActivatedRoute;\n\n protected router: Router;\n\n private layoutState: MrLayoutStateService;\n\n private modalService: MrResourceModalService;\n\n protected destroy$: Subject<void> = new Subject();\n\n protected scrollRefElement: HTMLElement;\n\n dataSource: MrAdvancedResultsLayoutDS;\n\n public listen() {\n this.innerEvents$.subscribe(({ type, payload }) => {\n switch (type) {\n case 'mr-advanced-results-layout.init':\n this.activatedRoute = payload.activatedRoute;\n this.router = payload.router;\n this.layoutState = payload.layoutState;\n this.modalService = payload.modalService;\n this.dataSource.onInit(payload);\n\n // listen route changes\n this.listenToRouterChanges();\n // scroll top\n window.scrollTo(0, 0);\n break;\n\n case 'mr-advanced-results-layout.destroy':\n this.destroy$.next();\n break;\n case 'mr-advanced-results-layout.searchreset':\n if (payload && payload?.action === 'redirect') {\n this.router.navigate([payload.url], {});\n }\n break;\n default:\n console.warn('unhandled inner event of type', type);\n break;\n }\n });\n\n this.outerEvents$.subscribe(({ type, payload }) => {\n switch (type) {\n case 'n7-smart-pagination.click':\n this.updateRouter({ page: payload.page });\n break;\n\n case 'n7-smart-pagination.change':\n this.updateRouter({ limit: payload.value, page: 1 });\n break;\n\n case 'mr-search-results-title.change':\n this.updateRouter({ sort: payload.value, page: 1 });\n break;\n\n case 'mr-search-results.openresourcemodal': {\n const { id, type: resourceType } = payload;\n this.modalService.open(id, resourceType);\n break;\n }\n\n default:\n console.warn('unhandled inner event of type', type);\n break;\n }\n });\n }\n\n /** URL changes */\n protected listenToRouterChanges() {\n this.activatedRoute.queryParams.pipe(\n takeUntil(this.destroy$),\n tap(() => {\n this.layoutState.set('results', LayoutState.LOADING);\n }),\n switchMap((params) => {\n this.dataSource.updateSearchTags(params);\n return this.dataSource.request$(params, (error) => {\n console.warn('Advanced search error', error);\n this.layoutState.set('results', LayoutState.ERROR);\n });\n })\n ).subscribe((response) => {\n this.dataSource.handleResponse(response);\n this.layoutState.set('results', isEmpty(response.results) ? LayoutState.EMPTY : LayoutState.SUCCESS);\n // scroll to ref element\n if (!this.scrollRefElement) {\n this.scrollRefElement = document.querySelector('.scroll-ref');\n } else if (!helpers.isElementInViewport(this.scrollRefElement)) {\n this.scrollRefElement.scrollIntoView();\n }\n });\n }\n\n protected updateRouter(queryParams) {\n this.router.navigate([], {\n queryParams,\n queryParamsHandling: 'merge'\n });\n }\n}\n","const extractQueryParams = (queryParams: string) => {\n const params = {};\n queryParams.split('&').forEach((param) => {\n const [key, value] = param.split('=');\n params[key] = value;\n });\n return params;\n};\n\nexport default {\n getQueryParams(href: string) {\n const queryParams = href.split('?')[1] ? extractQueryParams(href.split('?')[1]) : null;\n return this.isExternalLink(href) ? null : queryParams;\n },\n getRouterLink(href: string) {\n return this.isExternalLink(href) ? href : href.split('?')[0];\n },\n isExternalLink(href: string) {\n return /^http(?:s)?:\\/{2}\\S+$/.test(href);\n },\n joinQueryParams(href: string, queryParams: string[]) {\n let params = '';\n queryParams.forEach((par) => {\n params += params === '' ? par.replace('?', '') : `&${par.replace('?', '')}`;\n });\n\n if (params !== '') {\n return href.split('?')[1] ? `${href}&${params}` : `${href}?${params}`;\n }\n return href;\n }\n};\n","import { DataSource, _t } from '@net7/core';\nimport { BreadcrumbsData } from '@net7/components';\nimport { MrLocaleService } from '../services/locale.service';\nimport linksHelper from '../helpers/links-helper';\n\nexport class MrBreadcrumbsDS extends DataSource {\n protected transform(data: any): BreadcrumbsData {\n if (!data) return null;\n let items = [];\n if (Array.isArray(data) && data.length) {\n let { base } = this.options || {};\n base = Array.isArray(base) ? base : [];\n items = [\n ...base.map((item) => ({\n label: _t(item.title),\n anchor: this.getAnchor(item),\n })),\n ...data.map((item) => ({\n label: item.title,\n anchor: this.getAnchor(item),\n }))\n ];\n }\n\n // remove last link\n if (items.length) {\n items[items.length - 1].anchor = null;\n }\n return { items };\n }\n\n private getAnchor({\n link, routeId, slug, id\n }) {\n const { localeService }: { localeService: MrLocaleService } = this.options;\n // link\n let anchor;\n if (routeId) {\n const routeLink = localeService.getLinkByRouteId(routeId, id, slug);\n anchor = {\n href: routeLink\n };\n } else if (link) {\n anchor = {\n href: linksHelper.getRouterLink(link)\n };\n }\n return anchor;\n }\n}\n","import { DataSource } from '@net7/core';\nimport { ButtonData } from '@net7/components';\n\nexport class MrButtonDS extends DataSource {\n protected transform(): ButtonData {\n const {\n iconLeft, iconRight\n } = this.options;\n return {\n text: 'Scarica PDF',\n iconLeft,\n iconRight,\n classes: 'n7-btn',\n anchor: {\n payload: 'get-pdf-click',\n }\n };\n }\n}\n","import { DataSource, _t } from '@net7/core';\nimport { merge } from 'lodash';\nimport { helpers } from '@net7/boilerplate-common';\nimport { MetadataGroup } from '@net7/components';\nimport linksHelper from '../helpers/links-helper';\nimport { MrLocaleService } from '../services/locale.service';\n\nconst ITEM_PREVIEW_DEFAULTS = {\n limit: 100,\n striptags: true\n};\n\ntype collectionResponse = {\n header: {\n title?: string;\n subtitle?: string;\n button?: any;\n };\n items: {\n id?: string;\n text?: string;\n link?: string;\n routeId?: string;\n params?: string;\n slug?: string;\n title?: string;\n type?: string;\n payload?: any;\n metadata?: MetadataGroup[];\n }[];\n}\n\nexport class MrCollectionDS extends DataSource {\n id: string;\n\n protected transform(data: collectionResponse): any {\n if (!data) return null;\n\n const { localeService }: { localeService: MrLocaleService } = this.options;\n\n const { header, items } = data;\n\n // items check\n if (Array.isArray(items) && !items.length) {\n return null;\n }\n\n const { classes, itemPreview, linkTarget } = this.options;\n const itemPreviewOptions = merge(ITEM_PREVIEW_DEFAULTS, (itemPreview || {}));\n\n if ((header || {}).button) {\n const { link, text } = header.button;\n header.button = [{\n text,\n anchor: {\n href: linksHelper.getRouterLink(link),\n queryParams: linksHelper.getQueryParams(link)\n }\n }];\n }\n\n return {\n header: header ? {\n title: {\n main: {\n text: header.title,\n classes: 'bold'\n },\n secondary: header.subtitle ? {\n text: header.subtitle,\n } : null\n },\n actions: {\n buttons: header.button\n }\n } : null,\n items: items.map((item) => {\n let anchor = null;\n if (item.text) {\n // Sanitize HTML tags from the text content\n if (itemPreviewOptions.striptags) {\n item.text = helpers.striptags(item.text);\n }\n // Limit the length of the item preview text content\n if (itemPreviewOptions.limit && (item.text.length > itemPreviewOptions.limit)) {\n item.text = `${item.text.substring(0, itemPreviewOptions.limit)}...`;\n }\n }\n // metadata\n const metadata: MetadataGroup[] = [];\n if (Array.isArray(item.metadata)) {\n item.metadata.forEach((group) => {\n const metadataItems = [];\n (group.items || []).forEach((metadataItem) => {\n metadataItems.push({\n ...metadataItem,\n label: _t(metadataItem.label)\n });\n });\n metadata.push({ items: metadataItems });\n });\n }\n\n // link\n if (item.routeId) {\n const routeLink = localeService.getLinkByRouteId(item.routeId, item.id, item.slug);\n anchor = {\n href: routeLink,\n queryParams: item.params || null,\n };\n } else if (item.link) {\n anchor = {\n href: linksHelper.getRouterLink(item.link),\n queryParams: linksHelper.getQueryParams(item.link),\n };\n }\n if (anchor && linkTarget) {\n anchor.target = linkTarget;\n }\n if (item.payload) {\n anchor = {\n payload: {\n ...item.payload\n }\n };\n }\n return {\n ...item,\n metadata,\n anchor,\n classes: classes || ''\n };\n })\n };\n }\n}\n","import { DataSource } from '@net7/core';\n\nexport class MrContentDS extends DataSource {\n id: string;\n\n protected transform(data: any): any {\n return data;\n }\n}\n","import { DataSource } from '@net7/core';\n\nexport class MrFiltersDS extends DataSource {\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n protected transform(data: any): any {\n return data;\n }\n}\n","import { DataSource } from '@net7/core';\nimport linksHelper from '../helpers/links-helper';\nimport { MrLocaleService } from '../services/locale.service';\n\nexport class MrHeroDS extends DataSource {\n id: string;\n\n public currentInputValue = '';\n\n protected transform(data: any): any {\n const { classes, background, input } = this.options;\n\n const { localeService }: { localeService: MrLocaleService } = this.options;\n\n const {\n text, image, title, button\n } = data;\n const backgroundImage = background ? image : null;\n\n // link\n let anchor = null;\n if (button?.routeId) {\n const routeLink = localeService.getLinkByRouteId(button.routeId, button.id, button.slug);\n anchor = {\n href: routeLink,\n queryParams: button.params || null,\n };\n } else if (button?.link) {\n anchor = {\n href: linksHelper.getRouterLink(button.link),\n queryParams: linksHelper.getQueryParams(button.link),\n };\n }\n\n // Search input\n if (button && input) {\n anchor.payload = { route: anchor.href, payloadId: 'hero-search' };\n anchor.href = null;\n }\n\n return {\n text,\n title,\n classes,\n backgroundImage,\n image: !backgroundImage ? image : null,\n button: button && anchor ? {\n ...button,\n anchor,\n } : null,\n input\n };\n }\n}\n","/* eslint-disable import/no-extraneous-dependencies */\n/* eslint-disable max-classes-per-file */\nimport OpenSeadragon from 'openseadragon';\n\nconst svgNS = 'http://www.w3.org/2000/svg';\n\n// based on https://github.com/openseadragon/svg-overlay\nclass Overlay {\n private _viewer;\n\n private _containerWidth = 0;\n\n private _containerHeight = 0;\n\n private _node;\n\n private _svg;\n\n constructor(viewer) {\n this._viewer = viewer;\n\n this._svg = document.createElementNS(svgNS, 'svg');\n this._svg.style.position = 'absolute';\n this._svg.style.left = 0;\n this._svg.style.top = 0;\n this._svg.style.width = '100%';\n this._svg.style.height = '100%';\n this._viewer.canvas.appendChild(this._svg);\n\n this._node = document.createElementNS(svgNS, 'g');\n this._svg.appendChild(this._node);\n\n this._viewer.addHandler('animation', () => {\n this.resize();\n });\n\n this._viewer.addHandler('open', () => {\n this.resize();\n });\n\n this._viewer.addHandler('rotate', () => {\n this.resize();\n });\n\n this._viewer.addHandler('flip', () => {\n this.resize();\n });\n\n this._viewer.addHandler('resize', () => {\n this.resize();\n });\n\n this.resize();\n }\n\n node = () => this._node;\n\n svg = () => this._svg;\n\n resize = () => {\n if (this._containerWidth !== this._viewer.container.clientWidth) {\n this._containerWidth = this._viewer.container.clientWidth;\n this._svg.setAttribute('width', this._containerWidth);\n }\n\n if (this._containerHeight !== this._viewer.container.clientHeight) {\n this._containerHeight = this._viewer.container.clientHeight;\n this._svg.setAttribute('height', this._containerHeight);\n }\n\n const p = this._viewer.viewport.pixelFromPoint(new OpenSeadragon.Point(0, 0), true);\n const zoom = this._viewer.viewport.getZoom(true);\n const rotation = this._viewer.viewport.getRotation();\n const flipped = this._viewer.viewport.getFlip();\n const containerSizeX = this._viewer.viewport._containerInnerSize.x;\n let scaleX = containerSizeX * zoom;\n const scaleY = scaleX;\n\n if (flipped) {\n // Makes the x component of the scale negative to flip the svg\n scaleX = -scaleX;\n // Translates svg back into the correct coordinates when the x scale is made negative.\n p.x = -p.x + containerSizeX;\n }\n\n this._node.setAttribute(\n 'transform',\n `translate(${p.x},${p.y}) scale(${scaleX},${scaleY}) rotate(${rotation})`\n );\n };\n\n onClick = (node, handler) => {\n new OpenSeadragon.MouseTracker({\n element: node,\n clickHandler: handler\n }).setTracking(true);\n };\n}\n\nexport class MrImageViewerOverlayModel {\n private _viewer;\n\n private _config;\n\n private _page = 0;\n\n private _overlay;\n\n private _overlayEvents$;\n\n private _children = [];\n\n private _stylesDefaults = {\n highlight_color: 'red',\n highlight_opacity: 0.5,\n border_color: 'gray',\n border_opacity: 1,\n border_width: 2,\n };\n\n private _selectedStylesDefaults = {\n border_color: 'gray',\n border_opacity: 1,\n border_width: 5,\n };\n\n constructor({ viewer, config, overlayEvents$ }) {\n if (this._viewer) return;\n\n this._viewer = viewer;\n this._config = config;\n this._overlayEvents$ = overlayEvents$;\n }\n\n public init() {\n // listen viewer change\n this._viewer.addHandler('page', this.onPageChange);\n\n // load first overlay\n this.load();\n }\n\n public destroy() {\n this._viewer.removeHandler('page', this.onPageChange);\n }\n\n public resetStyles() {\n this._children.forEach((child) => {\n this.loadStyles(child);\n });\n }\n\n private onPageChange = ({ page }) => {\n this._page = page;\n\n // emit signal\n this._overlayEvents$.next({ type: 'pagechange' });\n\n // load when image finish loading\n const onTileDrawn = () => {\n this.load();\n this._viewer.removeHandler('tile-drawn', onTileDrawn);\n };\n this._viewer.addHandler('tile-drawn', onTileDrawn);\n };\n\n private load() {\n // clear first\n this.clear();\n // config\n const currentConfig = this._config.overlay_images[this._page];\n // set overlay\n if (currentConfig?.hotspots) {\n this._overlay = new Overlay(this._viewer);\n currentConfig.hotspots.forEach((itemConfig) => {\n switch (itemConfig.shape) {\n case 'polygon':\n case 'rectangle':\n this.loadPolygon(itemConfig);\n break;\n case 'circle':\n this.loadCircle(itemConfig);\n break;\n default:\n console.warn(`Overlay shape ${itemConfig.shape} does not exists`);\n break;\n }\n });\n }\n }\n\n private clear() {\n if (this._overlay) {\n // remove svg overlay\n this._overlay.svg().remove();\n this._overlay = null;\n this._children = [];\n }\n }\n\n private loadPolygon(config) {\n const child = document.createElementNS('http://www.w3.org/2000/svg', 'polygon');\n child.setAttribute('points', config.coordinates);\n this.loadStyles(child);\n child.addEventListener('click', () => {\n this.onClick(child, config);\n });\n this._children.push(child);\n\n this._overlay.node().appendChild(child);\n }\n\n private loadCircle(config) {\n const child = document.createElementNS('http://www.w3.org/2000/svg', 'circle');\n const [cx, cy, r] = config.coordinates.split(',');\n child.setAttribute('cx', cx);\n child.setAttribute('cy', cy);\n child.setAttribute('r', r);\n this.loadStyles(child);\n child.addEventListener('click', () => {\n this.onClick(child, config);\n });\n this._children.push(child);\n\n this._overlay.node().appendChild(child);\n }\n\n private onClick(child, config) {\n if (config.action === 'url' && config['action-url-url']) {\n document.location.href = config['action-url-url'];\n return;\n }\n this.setSelected(child);\n this._overlayEvents$.next({\n type: 'click',\n payload: config\n });\n }\n\n private setSelected(selectedChild) {\n // reset\n this.resetStyles();\n\n // selected styles\n this.loadStyles(selectedChild, this._selectedStylesDefaults);\n }\n\n private loadStyles(child, selectedStyles?) {\n const currentConfig = this._config.overlay_images[this._page];\n const styles = {\n ...this._stylesDefaults,\n ...(currentConfig?.style || {})\n };\n child.setAttribute('fill', styles.highlight_color);\n child.setAttribute('stroke', selectedStyles?.border_color || styles.border_color);\n child.setAttribute('stroke-width', selectedStyles?.border_width || styles.border_width);\n child.setAttribute('style', `\n fill-opacity: ${styles.highlight_opacity}; \n stroke-opacity: ${selectedStyles?.border_opacity || styles.border_opacity};\n `);\n }\n}\n","/* eslint-disable camelcase */\nimport { DataSource } from '@net7/core';\nimport { Subject } from 'rxjs';\nimport { MrImageViewerOverlayModel } from '../models/image-viewer-overlay.model';\n\nexport class MrImageViewerDS extends DataSource {\n id: string;\n\n viewer: any;\n\n overlayModel: MrImageViewerOverlayModel;\n\n viewerLoaded$: Subject<void> = new Subject();\n\n overlayEvents$: Subject<{ type: string; payload?: any }> = new Subject();\n\n protected transform(data: any): any {\n if (!data) return null;\n const { images, thumbs, overlay_images } = data;\n const { tools } = (this.options || {});\n return {\n images,\n thumbs,\n viewerId: this.id,\n hideNavigation: !(data.images.length > 1),\n libOptions: {\n /* SHOW GROUP */\n showNavigator: false, // shows the mini-map\n autoHideControls: false,\n // showNavigationControl: false,\n\n /* SHOW BUTTONS */\n showRotationControl: false,\n showSequenceControl: true,\n showHomeControl: true,\n showZoomControl: true,\n\n /* SEQUENCE */\n sequenceMode: true, // allows having multiple images (as in array of images + zoomed image)\n showReferenceStrip: tools !== true, // shows the images array (default: horizontally)\n\n navigationControlAnchor: 'TOP_RIGHT',\n },\n _setViewer: (viewer) => {\n this.viewer = viewer;\n this.viewerLoaded$.next();\n\n // overlay test\n if (overlay_images) {\n // FIXME: togliere mock\n this.loadOverlays(data);\n }\n }\n };\n }\n\n public changePage(index) {\n this.viewer.goToPage(index); // call to OpenSeadragon APIs\n }\n\n public overlayCloseClick() {\n this.overlayModel.resetStyles();\n }\n\n public loadOverlays(data) {\n this.overlayModel = new MrImageViewerOverlayModel({\n viewer: this.viewer,\n config: data,\n overlayEvents$: this.overlayEvents$\n });\n this.overlayModel.init();\n }\n}\n","import { ImageViewerToolsData } from '@net7/components';\nimport { DataSource } from '@net7/core';\n\ntype ImageViewerResponse = {\n thumbs: string[];\n images: {\n url: string;\n type: string;\n caption?: string;\n }[];\n};\n\nexport class MrImageViewerToolsDS extends DataSource {\n id: string;\n\n protected transform(data: ImageViewerResponse): ImageViewerToolsData {\n if (!data) return null;\n\n const { thumbs } = data;\n const images = data.images.map(({ caption }, thumbindex) => ({\n caption,\n thumb: thumbs[thumbindex],\n payload: { thumbindex }\n }));\n\n return {\n images,\n classes: '',\n navigation: data.images.length > 7 ? {\n prev: {\n payload: 'prev',\n classes: 'n7-image-viewer-tools__thumbs-scroll-left'\n },\n next: {\n payload: 'next', // 'next'\n classes: 'n7-image-viewer-tools__thumbs-scroll-right'\n },\n } : null,\n controls: {\n description: images[0].caption ? {\n icon: 'n7-icon-info1',\n anchor: { payload: 'toggle-description' },\n isActive: false,\n } : null,\n thumbs: {\n icon: 'n7-icon-images',\n anchor: { payload: 'toggle-thumbs' },\n isActive: false,\n },\n closedescription: {\n icon: 'n7-icon-close-circle',\n anchor: { payload: 'close-description' }\n }\n },\n\n isVisible: {\n description: false,\n thumbnails: false,\n },\n description: images[0].caption,\n initial: 0\n };\n }\n\n public toggleDescription() {\n this.output.isVisible.description = !this.output.isVisible.description;\n this.output.isVisible.thumbnails = false;\n this.output.controls.description.isActive = !this.output.controls.description.isActive;\n this.output.controls.thumbs.isActive = false;\n }\n\n public toggleThumbs() {\n this.output.isVisible.thumbnails = !this.output.isVisible.thumbnails;\n this.output.isVisible.description = false;\n this.output.controls.thumbs.isActive = !this.output.controls.thumbs.isActive;\n if (this.output.controls.description) {\n this.output.controls.description.isActive = false;\n }\n }\n\n public handleThumbs(index) {\n this.output.initial = index;\n this.updateDescription();\n }\n\n //\n\n public scrollRight() {\n const thumbsStrip = document.querySelectorAll<HTMLElement>('div.n7-image-viewer-tools__thumbs-strip')[0];\n const rightArrow = document.querySelectorAll<HTMLElement>(`div.${this.output.navigation.next.classes}`)[0];\n const leftArrow = document.querySelectorAll<HTMLElement>(`div.${this.output.navigation.prev.classes}`)[0];\n const maxStrip = thumbsStrip.scrollWidth - thumbsStrip.clientWidth;\n const { scrollLeft } = thumbsStrip;\n\n if ((scrollLeft + 400) >= maxStrip) { // mettere value da config e.g. scrollStrength\n thumbsStrip.scrollBy({\n top: 0,\n left: +400,\n behavior: 'smooth'\n });\n rightArrow.style.opacity = '0.5';\n } else {\n thumbsStrip.scrollBy({\n top: 0,\n left: +400,\n behavior: 'smooth'\n });\n }\n\n if (((scrollLeft + 400) > 0)) {\n leftArrow.style.opacity = '1.0';\n }\n }\n\n public scrollLeft() {\n const thumbsStrip = document.querySelectorAll<HTMLElement>('div.n7-image-viewer-tools__thumbs-strip')[0];\n const rightArrow = document.querySelectorAll<HTMLElement>(`div.${this.output.navigation.next.classes}`)[0];\n const leftArrow = document.querySelectorAll<HTMLElement>(`div.${this.output.navigation.prev.classes}`)[0];\n const maxStrip = thumbsStrip.scrollWidth - thumbsStrip.clientWidth;\n const { scrollLeft } = thumbsStrip;\n\n if ((scrollLeft - 400) <= 0) { // mettere value da config e.g. scrollStrength\n thumbsStrip.scrollBy({\n top: 0,\n left: -400,\n behavior: 'smooth'\n });\n leftArrow.style.opacity = '0.5';\n } else {\n thumbsStrip.scrollBy({\n top: 0,\n left: -400,\n behavior: 'smooth'\n });\n }\n\n if (((scrollLeft - 400) < maxStrip)) {\n rightArrow.style.opacity = '1.0';\n }\n }\n\n //\n\n public handlePageChange(payload) {\n this.handleThumbs(payload.page);\n }\n\n public updateDescription() {\n const index = this.output.initial;\n const { images } = this.output;\n this.output.description = images[index].caption;\n if (!this.output.description) {\n this.output.controls.description = null;\n } else {\n this.output.controls.description = {\n icon: 'n7-icon-info1',\n anchor: { payload: 'toggle-description' }\n };\n }\n }\n}\n","import { ItemPreviewData } from '@net7/components';\nimport { DataSource } from '@net7/core';\n\ntype OverlayDetails = {\n coordinates: string;\n shape: string;\n title: string;\n action: string;\n description: string;\n detail_image_id: string;\n detail_image: string;\n 'action-url-url': string;\n 'action-url-open-in-window': boolean;\n};\n\nexport class MrImageViewerOverlayDetailsDS extends DataSource {\n id: string;\n\n protected transform(data: OverlayDetails): ItemPreviewData {\n if (!data) return null;\n return {\n title: data.title,\n text: data.description,\n image: data.detail_image,\n classes: 'is-vertical'\n };\n }\n\n public show(data) {\n this.run(data);\n }\n\n public hide() {\n this.run(null);\n }\n}\n","import { DataSource } from '@net7/core';\n\nexport class MrInfoBoxDS extends DataSource {\n id: string;\n\n protected transform(data: any): any {\n return data;\n }\n}\n","import { DataSource } from '@net7/core';\nimport linksHelper from '../helpers/links-helper';\n\nexport class MrInnerTitleDS extends DataSource {\n protected transform(data: any): any {\n if (!data) return null;\n const { title, description, button } = data;\n return {\n title: {\n main: {\n text: title,\n classes: 'bold'\n },\n secondary: {\n text: description,\n classes: 'italic'\n }\n },\n actions: button && button.link ? {\n buttons: [\n {\n anchor: {\n href: linksHelper.getRouterLink(button.link),\n queryParams: linksHelper.getQueryParams(button.link)\n },\n text: button.text,\n classes: 'n7-btn-cta'\n }\n ]\n } : null\n };\n }\n}\n","import { ItemPreviewData } from '@net7/components';\nimport { DataSource } from '@net7/core';\nimport { merge } from 'lodash';\nimport { helpers } from '@net7/boilerplate-common';\nimport linksHelper from '../helpers/links-helper';\nimport { MrLocaleService } from '../services/locale.service';\n\nconst ITEM_PREVIEW_DEFAULTS = {\n limit: 100,\n striptags: true\n};\n\nexport class MrItemPreviewDS extends DataSource {\n id: string;\n\n protected transform(data: any): ItemPreviewData {\n if (!data) return null;\n const { classes, itemPreview } = this.options;\n const { localeService }: { localeService: MrLocaleService } = this.options;\n const itemPreviewOptions = merge(ITEM_PREVIEW_DEFAULTS, (itemPreview || {}));\n\n // striptags\n if (itemPreviewOptions.striptags) {\n data.text = helpers.striptags(data.text);\n }\n // limit\n if (itemPreviewOptions.limit && (data.text.length > itemPreviewOptions.limit)) {\n data.text = `${data.text.substring(0, itemPreviewOptions.limit)}...`;\n }\n\n // link\n let anchor;\n if (data.routeId) {\n const routeLink = localeService.getLinkByRouteId(data.routeId, data.id, data.slug);\n anchor = {\n href: routeLink,\n queryParams: data.params || null,\n };\n } else if (data.link) {\n anchor = {\n href: linksHelper.getRouterLink(data.link),\n queryParams: linksHelper.getQueryParams(data.link),\n };\n }\n return {\n ...data,\n anchor,\n classes: classes || ''\n };\n }\n}\n","import { DataSource } from '@net7/core';\n\nexport class MrItemPreviewsDS extends DataSource {\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n protected transform(data: string): string {\n return this.mock[this.options.source];\n }\n\n // ===== MOCK DATA =====\n private mock = {\n resources: [\n {\n image: 'https://i.imgur.com/8bNcgR6.png',\n title: 'Unattributed version',\n text: 'A japanese colored version',\n metadata: [{\n classes: 'metadata',\n items: [\n { label: 'Artista', value: 'Massimo Berruti' },\n { label: 'Tecnica', value: 'Fotografia' },\n { label: 'Galleria', value: 'Galleria Tonelli' },\n ]\n }]\n }, {\n image: 'https://i.imgur.com/52UFqca.png',\n title: 'Yudi Shanhai Quantu',\n text: 'Complete Map of all mountains and seas',\n }, {\n image: 'https://i.imgur.com/sLu7u2v.png',\n title: 'Reconstruction of D\\'Elia\\'s map',\n text: 'A digital collage of the map portions from Pasquale D\\'Elia \"mappamondo\"',\n metadata: [{\n classes: 'metadata',\n items: [\n { label: 'Artista', value: 'Massimo Berruti' },\n { label: 'Tecnica', value: 'Fotografia' },\n { label: 'Galleria', value: 'Galleria Tonelli' },\n ]\n }]\n }, {\n image: 'https://i.imgur.com/8bNcgR6.png',\n title: 'Unattributed version',\n text: 'A japanese colored version',\n }\n ],\n collections: [\n {\n image: 'https://i.imgur.com/8bNcgR6.png',\n title: 'Unattributed version',\n text: 'A japanese colored version',\n }, {\n image: 'https://i.imgur.com/52UFqca.png',\n title: 'Yudi Shanhai Quantu',\n text: 'Complete Map of all mountains and seas',\n }, {\n image: 'https://i.imgur.com/sLu7u2v.png',\n title: 'Reconstruction of D\\'Elia\\'s map',\n text: 'A digital collage of the map portions from Pasquale D\\'Elia \"mappamondo\"',\n }\n ],\n search: [\n {\n image: 'https://i.imgur.com/52UFqca.png',\n title: 'Yudi Shanhai Quantu',\n text: 'Complete Map of all mountains and seas',\n }, {\n image: 'https://i.imgur.com/52UFqca.png',\n title: 'World Map based on Matteo Ricci 1850',\n text: 'Complete Map fo all mountains and seas',\n }, {\n image: '',\n title: 'Reconstruction of D\\'Elia\\'s map',\n text: 'A digital collage of the map portions from Pasquale D\\'Elia \"mappamondo\"',\n }, {\n image: '',\n title: 'Unattributed version',\n text: 'A japanese colored version',\n }, {\n image: '',\n title: 'Matteo Ricci\\'s way from Macau to Beijing',\n text: 'A japanese colored version',\n }, {\n image: '',\n title: 'The 400-year-old map that shows China as the centre of the world',\n text: 'A japanese colored version',\n }, {\n image: 'https://i.imgur.com/52UFqca.png',\n title: 'Yudi Shanhai Quantu',\n text: 'Complete Map of all mountains and seas',\n }, {\n image: 'https://i.imgur.com/52UFqca.png',\n title: 'World Map based on Matteo Ricci 1850',\n text: 'Complete Map fo all mountains and seas',\n }, {\n image: '',\n title: 'Reconstruction of D\\'Elia\\'s map',\n text: 'A digital collage of the map portions from Pasquale D\\'Elia \"mappamondo\"',\n }, {\n image: '',\n title: 'Unattributed version',\n text: 'A japanese colored version',\n }, {\n image: '',\n title: 'Matteo Ricci\\'s way from Macau to Beijing',\n text: 'A japanese colored version',\n }, {\n image: '',\n title: 'The 400-year-old map that shows China as the centre of the world',\n text: 'A japanese colored version',\n }\n ]\n }\n}\n","import { MapData, MarkerData } from '@net7/components';\nimport { DataSource } from '@net7/core';\nimport * as L from 'leaflet';\nimport 'leaflet.markercluster';\nimport { Subject } from 'rxjs';\n// leaflet is already present in the window,\n// a double import results in errors with tooltips.\n// declare const L;\n\ninterface Coords { lat: number; lng: number }\n\ninterface Marker extends Coords {\n label: string;\n default_label: string;\n}\n\ntype TimelineResponse = {\n id?: number;\n title: string;\n slug: string;\n zoom: number;\n map_center: Coords;\n markers: Marker[];\n}[]\n\ninterface MarkerWithID extends MarkerData {\n id?: number;\n slug: string;\n}\n\nconst MARKER_ICON = L.icon({\n iconUrl: '/assets/pin.png',\n iconSize: [20, 30],\n popupAnchor: [0, -20],\n iconAnchor: [10, 30],\n className: 'marker-icon'\n});\n\nconst MARKER_ICON_SELECTED = L.icon({\n iconUrl: '/assets/pin-selected.png',\n iconSize: [20, 30],\n popupAnchor: [0, -20],\n className: 'marker-icon-selected'\n});\n\nexport class MrMapDS extends DataSource {\n id: string;\n\n /** Instance of the leaflet map */\n mapInstance;\n\n /** Instance of the marker layerGroup */\n markerLayer;\n\n mapLoaded$: Subject<L.Map> = new Subject();\n\n // eslint-disable-next-line consistent-return\n protected transform(data: TimelineResponse): MapData {\n let markers: MarkerWithID[];\n const d = data.find((z) => z.zoom);\n if (data.find((a) => a.markers)) {\n markers = data\n .map((area) => (area.markers\n .map((m) => ({\n // convert to leaflet marker format\n coords: [+m.lat, +m.lng] as [number, number],\n template: m.label ?? m.default_label,\n title: m.label ?? m.default_label,\n id: area.id,\n slug: area.slug,\n }))))\n // flatten the list of markers\n .reduce((acc, val) => acc.concat(val), []);\n }\n let mapCenter: [number, number];\n const mapCenterOptions = this.options?.libOptions?.map_center;\n if (mapCenterOptions) {\n mapCenter = mapCenterOptions;\n } else {\n mapCenter = d.map_center ? [d.map_center.lat, d.map_center.lng] : [54.5260, 15.2551];\n }\n const initialView: { center: [number, number]; zoom: number } = {\n // center of europe (only for initial load)\n center: mapCenter,\n zoom: d.zoom,\n };\n\n // if the map and the markers already exist\n // update the already existing layers.\n if (this.mapInstance && this.markerLayer) {\n this.buildMarkers(markers);\n if (!mapCenterOptions) {\n this.fitMapToBounds(markers.map((m) => m.coords), d.zoom);\n }\n }\n\n return {\n // only called once, on component init!\n _setInstance: (instance) => {\n this.mapInstance = instance;\n if (!mapCenterOptions) {\n // center the map on the markers\n this.fitMapToBounds(markers.map((m) => m.coords), d.zoom);\n }\n // load custom markers\n this.buildMarkers(markers);\n this.mapLoaded$.next({ map: instance, markers: this.markerLayer });\n },\n containerId: 'map-canvas',\n libOptions: {\n attributionControl: false,\n ...this.options.libOptions,\n },\n tileLayers: [{\n // url: 'https://cartodb-basemaps-{s}.global.ssl.fastly.net/light_all/{z}/{x}/{y}.png',\n // url: 'https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png',\n url: 'https://{s}.basemaps.cartocdn.com/rastertiles/voyager_labels_under/{z}/{x}/{y}{r}.png',\n options: {}\n }],\n initialView,\n };\n }\n\n public updateMarkersState(id: string) {\n if (id) {\n const marker = this.getMarkerById(id);\n if (marker) {\n marker.setIcon(MARKER_ICON_SELECTED);\n marker.openPopup();\n }\n } else {\n const marker = this.getSelectedMarker();\n if (marker) {\n marker.setIcon(MARKER_ICON);\n marker.closePopup();\n }\n }\n }\n\n private getMarkerById = (id: string) => {\n let marker = null;\n this.mapInstance.eachLayer((layer) => {\n if (layer instanceof L.Marker) {\n if (`${layer.id}` === id) {\n marker = layer;\n }\n }\n });\n return marker;\n };\n\n private getSelectedMarker = () => {\n let marker = null;\n this.mapInstance.eachLayer((layer) => {\n if (layer instanceof L.Marker) {\n const { icon } = layer.options || {};\n const className = icon?.options?.className || '';\n const isSelected = className.includes('selected');\n if (isSelected) {\n marker = layer;\n }\n }\n });\n return marker;\n };\n\n private fitMapToBounds(bounds, zoom = 10) {\n if (this.mapInstance) {\n this.mapInstance.fitBounds(bounds, {\n maxZoom: zoom,\n padding: [20, 20]\n });\n } else {\n console.warn('map instance is missing');\n }\n }\n\n /**\n * Builds markers with a custom icon and adds them to the map.\n * @param markers an array of markers\n */\n private buildMarkers(markers: MarkerWithID[]) {\n if (!markers) return;\n // remove all existing markers\n if (this.markerLayer) {\n this.markerLayer.clearLayers();\n this.mapInstance.removeLayer(this.markerLayer);\n }\n const markerGroup = L.markerClusterGroup(\n {\n maxClusterRadius: 10,\n disableClusteringAtZoom: 8\n }\n );\n markers.forEach(({\n coords, template, id, slug\n }) => {\n // create custom icon marker\n const newMarker = L.marker(coords, { icon: MARKER_ICON });\n if (id && slug) {\n newMarker.id = id;\n newMarker.slug = slug;\n }\n newMarker\n // add the marker to the group\n .addTo(markerGroup)\n // add the on-click tooltip\n .bindPopup(template, {\n closeButton: false\n });\n\n newMarker.getPopup().on('remove', ({ target }) => {\n target._source.setIcon(MARKER_ICON);\n });\n\n newMarker.getPopup().on('add', ({ target }) => {\n target._source.setIcon(MARKER_ICON_SELECTED);\n });\n });\n // add the markers to the map instance\n this.mapInstance.addLayer(markerGroup);\n // update the marker layer instance\n this.markerLayer = markerGroup;\n }\n}\n","import { DataSource, _t } from '@net7/core';\nimport { isObject, merge } from 'lodash';\nimport { GroupObject, MetadataOutput } from '../interfaces/metadata.interface';\n\nexport class MrMetadataDS extends DataSource {\n /** Test if a string is a valid URL */\n isUrl = /^(?:http(s)?:\\/\\/)[\\w.-]+(?:\\.[\\w.-]+)+[\\w\\-._~:/?#[\\]@!$&'()*+,;=.]+$/;\n\n /** Turn a string into an anchor element */\n toUrl = (string: string) => `<a href=\"${string}\" target=\"_blank\">${string}<a>`;\n\n defaultReadmore = {\n height: 300,\n labels: {\n more: _t('global#readmore'),\n less: _t('global#readless')\n }\n };\n\n public transform(data: GroupObject): MetadataOutput {\n if (!data) return null;\n\n // readmore applies to the whole metadata group, while\n // groupReadmore applies to the nested metadata sub-groups\n const { hideLabels, readmore, groupReadmore } = this.options;\n const { group } = data;\n\n if (!(group || []).length) {\n return null;\n }\n\n const result = { group: [] };\n group\n .filter(({ items }) => Array.isArray(items))\n .forEach(({ items }) => {\n items\n .filter((item) => isObject(item))\n .forEach(({ label, value, anchorId }) => {\n const itemLabel = label && !hideLabels ? label : null;\n const classLabel = label && !hideLabels ? label.replace(/ /g, '_').toLowerCase() : null;\n if (Array.isArray(value)) {\n result.group.push({\n group: [{\n title: _t(itemLabel),\n classes: `mrc-${classLabel}`,\n // use default values if not specified\n readmore: merge({ ...this.defaultReadmore }, readmore),\n groupReadmore,\n ...this.getItemGroup(value)\n }]\n });\n } else {\n result.group.push({\n group: [{\n // use default values if not specified\n readmore: merge({ ...this.defaultReadmore }, readmore),\n groupReadmore,\n classes: `mrc-${classLabel}`,\n items: value ? [{\n label: _t(itemLabel),\n value: this.getItemValue(value),\n anchorId: anchorId || ''\n }] : []\n }]\n });\n }\n });\n });\n return result;\n }\n\n private getItemGroup(value) {\n const { groupReadmore } = this.options;\n if (Array.isArray(value) && Array.isArray(value[0])) {\n return {\n group: value.map((val) => ({\n ...this.getItemGroup(val)\n }))\n };\n }\n return {\n items: value\n .filter((childItem) => !!childItem.value)\n .map((childItem) => ({\n label: _t(childItem.label),\n value: this.getItemValue(childItem.value),\n anchorId: childItem.anchorId || ''\n })),\n // load the optional \"readmore\" configuration\n groupReadmore,\n };\n }\n\n private getItemValue(value) {\n return this.isUrl.test(value) ? this.toUrl(value) : value;\n }\n}\n","import { DataSource } from '@net7/core';\n\nexport class MrNavDS extends DataSource {\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n protected transform(data) {\n const items = [];\n data.nav.forEach((el) => {\n items.push({\n text: el.title,\n anchor: {\n href: `http://localhost:4200/mr/static/${el.id}`,\n target: '_blank',\n payload: el.id\n }\n });\n });\n return {\n items,\n };\n }\n}\n","import { DataSource, _t } from '@net7/core';\nimport { MrLocaleService } from '../services/locale.service';\n\nexport class MrResourceTabsDS extends DataSource {\n protected transform(data: any): any {\n if (!data) return null;\n const {\n currentTab, root, slug, id: resourceId\n } = this.options;\n\n const { localeService }: { localeService: MrLocaleService } = this.options;\n let baseUrl = root;\n if (typeof root !== 'string') {\n const locale = localeService.getLocale();\n baseUrl = root[locale];\n }\n\n return data.map(({ id, label, hideTab }) => ({\n label: _t(label),\n classes: currentTab === id ? 'is-active' : '',\n anchor: {\n href: `/${baseUrl}/${resourceId}/${slug}/${id}`\n },\n hideTab\n }));\n }\n}\n","import { TextViewerData } from '@net7/components';\nimport { DataSource } from '@net7/core';\n\nexport class MrTextViewerDS extends DataSource {\n id: string;\n\n protected transform(data: TextViewerData): TextViewerData {\n if (!data) return null;\n\n if (this.options.facsimileOptions && data.facsimile) {\n if (!data.facsimile.options) {\n data.facsimile.options = {};\n }\n Object.keys(this.options.facsimileOptions).forEach((key) => {\n data.facsimile.options[key] = this.options.facsimileOptions[key];\n });\n }\n\n // Gestione libOptions\n if (this.options.libOptions) {\n if (!data.libOptions || typeof data.libOptions !== 'object') {\n data.libOptions = {};\n }\n Object.keys(this.options.libOptions).forEach((key) => {\n if (!data.libOptions[key] || typeof data.libOptions[key] !== 'object') {\n data.libOptions[key] = {};\n }\n Object.keys(this.options.libOptions[key]).forEach((subKey) => {\n data.libOptions[key][subKey] = this.options.libOptions[key][subKey];\n });\n });\n\n // Debug libOptions\n /* console.log(' DEBUG libOptions:', {\n 'this.options.libOptions': this.options.libOptions,\n 'data.libOptions': data.libOptions,\n 'data.libOptions.pbPage': data.libOptions.pbPage,\n 'urlIgnore': data.libOptions.pbPage?.urlIgnore\n }); */\n }\n\n const {\n enableClickOnEntities, toggleColumn, searchId, searchApi\n } = this.options || {};\n data.toggleColumn = toggleColumn;\n // force tei publisher endpoint value\n document.addEventListener(\n 'pb-page-ready',\n (ev: CustomEvent) => {\n const { detail } = ev;\n detail.endpoint = data.endpoint;\n },\n { once: true }\n );\n\n const params = new URLSearchParams(document.location.search);\n const id = params.get('id');\n\n // Nascondere tei-app e note-item se l'ODD non ha già l'elemento in display NONE\n /* const hideElements = () => {\n const apparatusView = document.querySelector('.n7-text-viewer #apparatus-view0');\n if (apparatusView?.shadowRoot) {\n const teiAppElements = apparatusView.shadowRoot.querySelectorAll('.tei-app');\n const teiNoteElements = apparatusView.shadowRoot.querySelectorAll('.note-item');\n console.log('Trovati elementi tei-app:', teiAppElements.length);\n console.log('Trovati elementi tei-note:', teiNoteElements.length);\n teiAppElements.forEach((element) => {\n (element as HTMLElement).style.display = 'none';\n });\n teiNoteElements.forEach((element) => {\n (element as HTMLElement).style.display = 'none';\n });\n }\n };\n document.addEventListener('pb-end-update', () => {\n console.log('Evento pb-end-update ricevuto');\n hideElements();\n }); */\n\n if (data.docs[0]?.view === 'page' && id) {\n data.docs[0].view = 'div';\n document.addEventListener(\n 'pb-end-update',\n () => {\n setTimeout(() => {\n document.dispatchEvent(\n new CustomEvent('pb-toggle', {\n detail: {\n properties: {\n view: 'page',\n },\n action: 'refresh',\n key: 'transcription',\n },\n })\n );\n document.dispatchEvent(\n new CustomEvent('pb-toggle', {\n detail: {\n properties: {\n view: 'single',\n },\n action: 'refresh',\n key: 'addChannel',\n },\n })\n );\n document.dispatchEvent(\n new CustomEvent('pb-toggle', {\n detail: {\n properties: {\n view: 'single',\n id: '',\n },\n action: 'refresh',\n key: 'index',\n },\n })\n );\n }, 500);\n },\n { once: true }\n );\n }\n\n if (enableClickOnEntities) {\n document.addEventListener('pb-end-update', (ev: any) => {\n this.scrollElementsIntoView(ev.detail, 'chapter', '#view1');\n });\n }\n\n if (params.get('hq')) {\n if (searchApi) {\n const xmlQueryUrl = `${searchApi.url\n }?resource-id=${searchApi['resource-id']\n }&searchId=${searchId\n }&xml=${data.docs[0]?.xml\n }&${params.toString()}`;\n data.docs[0].url = xmlQueryUrl;\n data.docs[0].rootPath = 'api/mrcparts';\n }\n document.addEventListener('pb-end-update', (ev: any) => {\n this.scrollElementsIntoView(ev.detail, 'hq', '#view0');\n });\n }\n return data;\n }\n\n displayIndex() {\n if (this.output.toggleColumn) {\n this.output.toggleColumn = false;\n } else {\n this.output.toggleColumn = true;\n }\n }\n\n onClick(payload) {\n let target = null;\n const clickPath = payload.path || payload.composedPath();\n\n // chiusura apparato con tasto\n const closeButton = clickPath.find((el) => el.className\n && typeof el.className === 'string'\n && el.className.includes('close_app'));\n\n if (closeButton) {\n // console.log('Click rilevato sul bottone di chiusura:', closeButton);\n\n const parentAppItem = closeButton.closest('.tei-app');\n if (parentAppItem && parentAppItem.style) {\n // console.log('Chiusura dell\\'elemento tei-app');\n parentAppItem.style.display = 'none';\n (parentAppItem as HTMLElement).style.transform = '';\n payload.stopPropagation();\n return;\n }\n }\n\n // Chiusura note con tasto\n const closeNoteButton = clickPath.find((el) => el.className\n && typeof el.className === 'string'\n && el.className.includes('close_note'));\n\n if (closeNoteButton) {\n // console.log('Click rilevato sul bottone di chiusura nota:', closeNoteButton);\n\n const parentNoteItem = closeNoteButton.closest('.note-item');\n if (parentNoteItem && parentNoteItem.style) {\n // console.log('Chiusura dell\\'elemento note-item');\n parentNoteItem.style.display = 'none';\n (parentNoteItem as HTMLElement).style.transform = '';\n payload.stopPropagation();\n return;\n }\n }\n\n if (payload.path) {\n target = payload.path.find(\n ({ tagName }) => tagName === 'PB-HIGHLIGHT'\n );\n } else {\n target = payload.composedPath().find(\n ({ tagName }) => tagName === 'PB-HIGHLIGHT'\n );\n }\n\n if (target && target.getAttribute('type') === 'app_lem') {\n const appId = target.getAttribute('key');\n // console.log('appId', appId);\n\n // Posizione elemento cliccato\n const clickedElementPosition = (target as HTMLElement).getBoundingClientRect().top;\n\n const apparatusView = document.querySelector('.n7-text-viewer #apparatus-view0');\n /* console.log('apparatusView', apparatusView);\n console.log('shadowRoot', apparatusView?.shadowRoot); */\n\n const anchorElement = apparatusView\n ?.shadowRoot\n ?.querySelector(`#${appId}`);\n\n const teiAppElement = anchorElement\n ? anchorElement.closest('.tei-app')\n : null;\n\n if (teiAppElement) {\n // Verifica se è visibile\n const isVisible = (teiAppElement as HTMLElement).style.display === 'block';\n\n if (isVisible) {\n (teiAppElement as HTMLElement).style.display = 'none';\n\n (teiAppElement as HTMLElement).style.transform = '';\n } else {\n (teiAppElement as HTMLElement).style.display = 'block';\n\n // posizione attuale\n const elementPosition = teiAppElement.getBoundingClientRect().top;\n\n // differenza\n const positionDifference = clickedElementPosition - elementPosition;\n\n // spostamento\n (teiAppElement as HTMLElement).style.transform = `translateY(${positionDifference}px)`;\n }\n }\n } else if (target && target.getAttribute('type') === 'note_line') {\n const noteId = target.getAttribute('key');\n // console.log('noteId', noteId);\n\n const clickedElementPosition = (target as HTMLElement).getBoundingClientRect().top;\n\n const apparatusView = document.querySelector('.n7-text-viewer #apparatus-view0');\n\n const anchorElement = apparatusView\n ?.shadowRoot\n ?.querySelector(`#${noteId}`);\n\n const teiNoteElement = anchorElement\n ? anchorElement.closest('.note-item')\n : null;\n if (teiNoteElement) {\n // Verifica se è visibile\n const isVisible = (teiNoteElement as HTMLElement).style.display === 'block';\n\n if (isVisible) {\n (teiNoteElement as HTMLElement).style.display = 'none';\n\n (teiNoteElement as HTMLElement).style.transform = '';\n } else {\n (teiNoteElement as HTMLElement).style.display = 'block';\n\n // posizione attuale\n const elementPosition = teiNoteElement.getBoundingClientRect().top;\n\n // differenza\n const positionDifference = clickedElementPosition - elementPosition;\n\n // spostamento\n (teiNoteElement as HTMLElement).style.transform = `translateY(${positionDifference}px)`;\n }\n }\n } else if (target && this.output.toggleColumn === false) {\n if (\n target.__key\n && (target.className.includes('person')\n || target.className.includes('place'))\n ) {\n this.output.toggleColumn = true;\n this.scrollElementsIntoView(target, 'entity', '#text-viewer-index');\n }\n } else this.output.toggleColumn = false;\n }\n\n viewListenerUpdate() {\n document.addEventListener(\n 'pb-start-update',\n function _listener() {\n document.removeEventListener('pb-start-update', _listener, true);\n },\n true\n );\n }\n\n changeView(view, refresh) {\n setTimeout(\n (v, r) => {\n // console.log(`TEST CHANGE VIEW: ${view}`);\n document.dispatchEvent(\n new CustomEvent('pb-toggle', {\n detail: {\n properties: {\n view: v,\n },\n action: r ? 'refresh' : '',\n key: 'transcription',\n },\n })\n );\n },\n 600,\n view,\n refresh\n );\n }\n\n scrollElementsIntoView(target, type, view) {\n setTimeout(() => {\n let element: any;\n if (type === 'chapter') {\n if (\n document\n .querySelector('.n7-text-viewer #view0')\n .shadowRoot.querySelector('pb-highlight')\n ) {\n const highlight = document\n .querySelector('.n7-text-viewer #view0')\n .shadowRoot.querySelectorAll('pb-highlight');\n\n const highlightId = highlight[highlight.length - 1].id; // s.x\n\n const fragmentNumber = highlightId.replace('.', '\\\\.');\n\n element = document\n .querySelector(view)\n .shadowRoot.querySelector(`#${fragmentNumber}`);\n }\n } else if (type === 'entity') {\n const key = target.__key;\n element = document\n .querySelector(`.n7-text-viewer ${view}`)\n .shadowRoot.querySelector(`#${key}`);\n } else if (type === 'hq') {\n element = document\n .querySelector(`.n7-text-viewer ${view}`)\n .shadowRoot.querySelector('.tei-em');\n }\n /*\n else if (type === 'apparatus') {\n const key = target.getAttribute(\"key\");\n element = document\n .querySelector(`.n7-text-viewer #apparatus-view0`)\n ?.shadowRoot\n ?.querySelector(`#${key}`);\n }\n */\n\n const container = document.querySelector(`.n7-text-viewer ${view}`);\n if (element) {\n container.scrollTop = element.offsetTop;\n }\n }, 600);\n }\n}\n","import { TimelineData } from '@net7/components';\nimport { DataSource } from '@net7/core';\nimport { Subject } from 'rxjs';\nimport { Timeline } from 'vis-timeline';\n\n// vis-timeline dataset type lookup\ntype DataSet = TimelineData['dataSet']\n\nexport class MrTimelineDS extends DataSource {\n id: string;\n\n /** timeline instance */\n timeline: Timeline;\n\n public timelineLoaded$: Subject<Timeline> = new Subject();\n\n protected transform(data: {\n dataSet: DataSet,\n groups?: Array<{ id: number; content: string;}>\n }): TimelineData {\n return {\n containerID: 'mr-timeline',\n libOptions: {\n height: '500px',\n locale: 'it_IT',\n align: 'left',\n showTooltips: false,\n tooltip: {\n followMouse: false,\n template: (d, element) => `<div class=\"tooltip\">${element.title}</div>`\n },\n width: '100%',\n minHeight: '350px',\n maxHeight: '800px',\n zoomFriction: 8,\n ...this.options.libOptions\n },\n\n dataSet: data.dataSet.map((d) => {\n // Show dates that have identical start and end dates as points\n if (d.end && d.end === d.start) {\n return { ...d, ...{ end: undefined } };\n } return d;\n }),\n ...(data.groups && { groups: data.groups }),\n _setInstance: (timeline) => {\n this.timeline = timeline;\n this.timelineLoaded$.next(timeline);\n }\n };\n }\n}\n","import { InnerTitleData } from '@net7/components';\nimport { DataSource } from '@net7/core';\n\nexport class MrYearHeaderDS extends DataSource {\n protected transform(data: InnerTitleData): InnerTitleData {\n return data;\n }\n}\n","import { DataSource } from '@net7/core';\nimport { GalleryData } from '../components/gallery/gallery';\n\ntype GalleryResponse = {\n id: string | number;\n title: string;\n thumbnail: string;\n image: string;\n}[];\n\nexport class MrGalleryDS extends DataSource {\n id: string;\n\n numImg = 0;\n\n protected transform(data: GalleryResponse): GalleryData {\n if (!data) {\n return null;\n }\n\n this.numImg = 0;\n let index = 0;\n return {\n selected: null,\n items: data.map(({\n id, title, thumbnail, image\n }) => {\n const item = {\n id,\n title,\n thumbSrc: thumbnail,\n fullSrc: image,\n payload: id,\n index\n };\n this.numImg += 1;\n index += 1;\n return item;\n })\n };\n }\n\n public setSelected(itemId: number | string) {\n this.output.selected = this.output.items.find(({ id }) => id === itemId);\n }\n\n public removeSelected() {\n this.output.selected = null;\n }\n\n public changeImg(rightImg) {\n const actualIndex = this.output.selected.index;\n let newIndex;\n if (actualIndex === (this.numImg - 1) && rightImg) {\n newIndex = 0;\n } else if (actualIndex === 0 && !rightImg) {\n newIndex = this.numImg - 1;\n } else {\n newIndex = (rightImg) ? (actualIndex + 1) : (actualIndex - 1);\n }\n this.output.selected = this.output.items.find(({ index }) => index === newIndex);\n }\n}\n","import { NetworkData } from '@net7/components';\nimport { DataSource } from '@net7/core';\n\nexport class MrNetworkDS extends DataSource {\n id: string;\n\n protected transform(data):NetworkData {\n return data;\n }\n}\n","import { NetworkData } from '@net7/components';\nimport { DataSource } from '@net7/core';\nimport { Subject } from 'rxjs';\nimport { Network } from 'vis-network';\n\nexport class MrNetworkResourceDS extends DataSource {\n id: string;\n\n public legend: Array<{key: string, label: string, color: string}> = [];\n\n public networkListener$: Subject<Network> = new Subject();\n\n protected transform(data): NetworkData {\n setTimeout(() => {\n const container = document.getElementById('demo-network');\n if (!container) {\n console.error('Container non trovato');\n return;\n }\n try {\n const { nodes } = data;\n const { edges } = data;\n const networkGroups = data?.groups || {};\n const options = data.libOptions;\n const mergedGroups = {\n ...networkGroups,\n ...(options?.groups || {})\n };\n\n // legenda\n this.legend = [];\n Object.keys(mergedGroups).forEach((key) => {\n const group = mergedGroups[key];\n this.legend.push({\n key,\n label: group.label || key,\n color: group.color || '#cccccc'\n });\n });\n\n const libOptions = {\n ...options,\n groups: mergedGroups\n };\n\n const network = new Network(container, { nodes, edges }, libOptions);\n this.networkListener$.next(network);\n } catch (error) {\n console.error('Errore inizializzazione', error);\n }\n }, 100);\n return data;\n }\n}\n","// import { ParallelTextViewerData } from '@net7/components';\nimport { DataSource } from '@net7/core';\n\nexport class MrParallelTextViewerDS extends DataSource {\n id: string;\n\n // protected transform(data: ParallelTextViewerData): ParallelTextViewerData {\n // ^^^^^^^^^^^^^se va buildare components --- 17-12-2025^^^^^^^^^^^^^^^^^\n protected transform(data: any): any {\n if (!data) return null;\n\n /*\n if (this.options.facsimileOptions && data.facsimile) {\n if (!data.facsimile.options) {\n data.facsimile.options = {};\n }\n Object.keys(this.options.facsimileOptions).forEach((key) => {\n data.facsimile.options[key] = this.options.facsimileOptions[key];\n });\n } */\n if (this.options) {\n // Gestione delle libOptions\n if (this.options.libOptions) {\n if (!data.libOptions || typeof data.libOptions !== 'object') {\n data.libOptions = {};\n }\n Object.keys(this.options.libOptions).forEach((key) => {\n if (!data.libOptions[key] || typeof data.libOptions[key] !== 'object') {\n data.libOptions[key] = {};\n }\n Object.keys(this.options.libOptions[key]).forEach((subKey) => {\n data.libOptions[key][subKey] = this.options.libOptions[key][subKey];\n });\n });\n // Debug libOptions\n /* console.log(' DEBUG libOptions:', {\n 'this.options.libOptions': this.options.libOptions,\n 'data.libOptions': data.libOptions,\n 'data.libOptions.pbPage': data.libOptions.pbPage,\n 'urlIgnore': data.libOptions.pbPage?.urlIgnore\n }); */\n }\n // Gestione della grid\n if (this.options.grid) {\n data.grid = this.options.grid;\n }\n // Gestione dei panels\n if (this.options.panels) {\n this.options.panels.forEach((panelProperties) => {\n const panelIndex = data.panels.findIndex(\n (panel) => panel.id === panelProperties.id\n );\n\n if (panelIndex !== -1) {\n const apiPanel = data.panels[panelIndex];\n const merged = { ...apiPanel, ...panelProperties };\n // Se l'API ha inviato un baseurl e la config statica ha uri vuoto popola facsimile.uri con il baseurl dinamico dell'API.\n if (merged.facsimile && !merged.facsimile.uri && apiPanel.baseurl) {\n merged.facsimile = {\n ...merged.facsimile,\n uri: apiPanel.baseurl,\n };\n }\n data.panels[panelIndex] = merged;\n }\n });\n }\n }\n const {\n enableClickOnEntities, toggleColumn,\n searchId,\n searchApi\n } = this.options || {};\n data.toggleColumn = toggleColumn;\n // force tei publisher endpoint value\n document.addEventListener(\n 'pb-page-ready',\n (ev: CustomEvent) => {\n const { detail } = ev;\n detail.endpoint = data.endpoint;\n },\n { once: true }\n );\n\n const params = new URLSearchParams(document.location.search);\n // const id = params.get('id');\n\n this.setupViewClickListeners();\n\n // Gestione della sezione di partenza degli XML \n const startSection = data.startSection || this.options?.startSection;\n if (startSection) {\n const handleFirstLoad = () => {\n document.removeEventListener('pb-end-update', handleFirstLoad);\n setTimeout(() => {\n document.querySelectorAll('.n7-parallel-text-viewer [id$=\"-view\"]').forEach((view: any) => {\n view.gotoId(startSection);\n });\n }, 200);\n };\n document.addEventListener('pb-end-update', handleFirstLoad);\n }\n\n /* if (data.docs[0]?.view === 'page' && id) {\n data.docs[0].view = 'div';\n document.addEventListener(\n 'pb-end-update',\n () => {\n setTimeout(() => {\n document.dispatchEvent(\n new CustomEvent('pb-toggle', {\n detail: {\n properties: {\n view: 'page',\n },\n action: 'refresh',\n key: 'transcription',\n },\n })\n );\n document.dispatchEvent(\n new CustomEvent('pb-toggle', {\n detail: {\n properties: {\n view: 'single',\n },\n action: 'refresh',\n key: 'addChannel',\n },\n })\n );\n document.dispatchEvent(\n new CustomEvent('pb-toggle', {\n detail: {\n properties: {\n view: 'single',\n id: '',\n },\n action: 'refresh',\n key: 'index',\n },\n })\n );\n }, 500);\n },\n { once: true }\n );\n } */\n\n if (enableClickOnEntities) {\n document.addEventListener('pb-end-update', (ev: any) => {\n this.scrollElementsIntoView(ev.detail, 'chapter', '#view1');\n });\n }\n\n /* if (params.get('hq')) {\n if (searchApi) {\n const xmlQueryUrl = `${searchApi.url\n }?resource-id=${searchApi['resource-id']\n }&searchId=${searchId\n }&xml=${data.docs[0]?.xml\n }&${params.toString()}`;\n\n data.docs[0].url = xmlQueryUrl;\n data.docs[0].rootPath = 'api/mrcparts';\n }\n */\n\n if (params.get('hq')) {\n if (searchApi) {\n const mainDoc = data.docs.find((doc) => doc.id === 'mainDoc');\n\n if (mainDoc) {\n const xmlQueryUrl = `${searchApi.url\n }?resource-id=${searchApi['resource-id']\n }&searchId=${searchId\n }&xml=${mainDoc.xml\n }&${params.toString()}`;\n\n data.mainDoc.url = xmlQueryUrl;\n data.mainDoc.rootPath = 'api/mrcparts';\n }\n }\n }\n document.addEventListener('pb-end-update', (ev: any) => {\n this.scrollElementsIntoView(ev.detail, 'hq', '#transcription-view');\n });\n /* } */\n return data;\n }\n\n displayIndex() {\n if (this.output.toggleColumn) {\n this.output.toggleColumn = false;\n } else {\n this.output.toggleColumn = true;\n }\n }\n\n setupViewClickListeners() {\n const attachListeners = () => {\n setTimeout(() => {\n const views = document.querySelectorAll('.n7-parallel-text-viewer [id$=\"-view\"]');\n\n views.forEach((view) => {\n if (view.id === 'transcription-view') {\n return;\n }\n\n if (view.shadowRoot) {\n if ((view as any).__clickListenerAttached) {\n return;\n }\n\n const clickListener = (event: Event) => {\n this.onClick(event);\n };\n\n // Salva il riferimento e marca come attaccato\n (view as any).__clickListener = clickListener;\n (view as any).__clickListenerAttached = true;\n\n // Attacca il listener in capture phase per catturare tutti i click\n view.shadowRoot.addEventListener('click', clickListener, true);\n }\n });\n }, 100);\n };\n\n // Attacca al primo caricamento\n document.addEventListener('pb-end-update', attachListeners);\n\n setTimeout(attachListeners, 500);\n\n // Cross-highlight per termini multi-@ana: quando un pb-highlight con doppia key emette pb-highlight-on \n // ri-emette pb-highlight-on per ogni token individuale così i termini correlati si evidenziano.\n document.addEventListener('pb-highlight-on', (ev: any) => {\n const key = ev.detail?.id;\n const channel = ev.detail?.key;\n if (!key || !channel) return;\n\n // Chiave composita (multi-@ana \"vox2_vox3\", ancore paired \"v1a1_v1a2\"): spezza e ri-emetti per ogni token su highlight-channel.\n if (key.includes('_')) {\n key.split('_').forEach((token: string) => {\n document.dispatchEvent(new CustomEvent('pb-highlight-on', {\n detail: { key: channel, id: token, source: ev.detail.source },\n }));\n });\n return;\n }\n\n if (ev.detail?.source === 'paired-anchor') return;\n\n // Token singolo: se corrisponde a un'ancora paired ri-emette con l'id composito del popup per attivarne l'highlight.\n document.querySelectorAll('[id$=\"-view\"]').forEach((view: any) => {\n if (!view.shadowRoot) return;\n const popup = view.shadowRoot.querySelector(`.tei-app[data-from=\"${key}\"]`)\n || view.shadowRoot.querySelector(`.tei-app[data-to=\"${key}\"]`);\n if (popup && popup.id) {\n document.dispatchEvent(new CustomEvent('pb-highlight-on', {\n detail: { key: channel, id: popup.id, source: 'paired-anchor' },\n }));\n }\n });\n });\n }\n\n onClick(payload) {\n let target = null;\n const clickPath = payload.path || payload.composedPath();\n\n // chiusura apparato con tasto\n const closeButton = clickPath.find((el) => el.className\n && typeof el.className === 'string'\n && el.className.includes('close_app'));\n\n if (closeButton) {\n const parentAppItem = closeButton.closest('.tei-app');\n if (parentAppItem && parentAppItem.style) {\n parentAppItem.style.display = 'none';\n (parentAppItem as HTMLElement).style.transform = '';\n this.resetHighlights();\n payload.stopPropagation();\n return;\n }\n }\n\n const insideTeiApp = clickPath.find((el) => el.className\n && typeof el.className === 'string'\n && el.className.includes('tei-app'));\n\n if (insideTeiApp && (insideTeiApp as HTMLElement).style.display === 'block') {\n return;\n }\n\n // Chiusura note con tasto\n const closeNoteButton = clickPath.find((el) => el.className\n && typeof el.className === 'string'\n && el.className.includes('close_note'));\n\n if (closeNoteButton) {\n const parentNoteItem = closeNoteButton.closest('.note-item');\n if (parentNoteItem && parentNoteItem.style) {\n parentNoteItem.style.display = 'none';\n (parentNoteItem as HTMLElement).style.transform = '';\n this.resetHighlights();\n payload.stopPropagation();\n return;\n }\n }\n\n if (payload.path) {\n target = payload.path.find(\n ({ tagName }) => tagName === 'PB-HIGHLIGHT'\n );\n } else {\n target = payload.composedPath().find(\n ({ tagName }) => tagName === 'PB-HIGHLIGHT'\n );\n }\n\n if (target && target.getAttribute('type') === 'app_lem') {\n const appId = target.getAttribute('key');\n\n // Posizione elemento cliccato\n const clickedElementPosition = (target as HTMLElement).getBoundingClientRect().top;\n\n const clickedView = clickPath.find((el) => el.id && el.id.endsWith('-view'));\n const clickedViewId = clickedView ? clickedView.id : null;\n\n const apparatusView = document.querySelectorAll('.n7-parallel-text-viewer [id$=\"-view\"]');\n\n let anchorElement = null;\n let teiAppElement = null;\n\n apparatusView.forEach((view) => {\n // Salta la view in cui è stato fatto il click\n if (view.id === clickedViewId) {\n return;\n }\n\n if (view.shadowRoot) {\n // Cerca prima per id esatto; se non trovato, cerca popup per ancora apertura (data-from)\n // o ancora di chiusura (data-to)\n const found = view.shadowRoot.querySelector(`[id=\"${appId}\"]`)\n || view.shadowRoot.querySelector(`.tei-app[data-from=\"${appId}\"]`)\n || view.shadowRoot.querySelector(`.tei-app[data-to=\"${appId}\"]`);\n if (found) {\n if (!anchorElement) {\n anchorElement = found;\n }\n\n const appElement = found.closest('.tei-app') || (found.classList.contains('tei-app') ? found : null);\n if (appElement && !teiAppElement) {\n teiAppElement = appElement;\n }\n }\n }\n });\n\n if (teiAppElement) {\n const isVisible = (teiAppElement as HTMLElement).style.display === 'block';\n\n // Determina se il pb-highlight cliccato è una cit esterna (contiene cit annidate).\n const nestedCits = (target as HTMLElement).querySelectorAll('span.quote');\n const isOuterCit = nestedCits.length > 0;\n const segElements = (target as HTMLElement).querySelectorAll('.seg-outer-inner');\n\n if (isVisible) {\n (teiAppElement as HTMLElement).style.display = 'none';\n (teiAppElement as HTMLElement).style.transform = '';\n this.resetHighlights();\n\n if (isOuterCit) {\n // Pannello esterno chiuso: ripristina il background dei seg annidati\n segElements.forEach((el) => {\n (el as HTMLElement).style.backgroundColor = '';\n });\n }\n } else {\n (teiAppElement as HTMLElement).style.display = 'block';\n\n // posizione attuale\n const elementPosition = teiAppElement.getBoundingClientRect().top;\n\n // differenza\n const positionDifference = clickedElementPosition - elementPosition;\n\n // spostamento\n (teiAppElement as HTMLElement).style.transform = `translateY(${positionDifference}px)`;\n\n if (isOuterCit) {\n // Pannello esterno aperto: dopo che pb-highlight si attiva (giallo),\n // imposta sfondo bianco sui seg che appartengono semanticamente alla cit esterna\n requestAnimationFrame(() => {\n segElements.forEach((el) => {\n (el as HTMLElement).style.backgroundColor = 'white';\n });\n });\n } else {\n // Pannello interno aperto: ripristina eventuali soppressioni sui seg interni\n requestAnimationFrame(() => {\n segElements.forEach((el) => {\n (el as HTMLElement).style.backgroundColor = '';\n });\n });\n }\n }\n } else {\n console.warn('teiAppElement non trovato!');\n }\n } else if (target && target.getAttribute('type') === 'note_line') {\n const noteId = target.getAttribute('key');\n\n const clickedElementPosition = (target as HTMLElement).getBoundingClientRect().top;\n\n const apparatusView = document.querySelector('.n7-text-viewer #apparato-view');\n\n const anchorElement = apparatusView\n ?.shadowRoot\n ?.querySelector(`#${noteId}`);\n\n const teiNoteElement = anchorElement\n ? anchorElement.closest('.note-item')\n : null;\n if (teiNoteElement) {\n // Verifica se è visibile\n const isVisible = (teiNoteElement as HTMLElement).style.display === 'block';\n\n if (isVisible) {\n (teiNoteElement as HTMLElement).style.display = 'none';\n\n (teiNoteElement as HTMLElement).style.transform = '';\n } else {\n (teiNoteElement as HTMLElement).style.display = 'block';\n\n // posizione attuale\n const elementPosition = teiNoteElement.getBoundingClientRect().top;\n\n // differenza\n const positionDifference = clickedElementPosition - elementPosition;\n\n // spostamento\n (teiNoteElement as HTMLElement).style.transform = `translateY(${positionDifference}px)`;\n }\n }\n } else if (target && target.getAttribute('type') === 'parallel_anchor') {\n const sectionId = target.getAttribute('key');\n if (sectionId) {\n document.querySelectorAll('.n7-parallel-text-viewer [id$=\"-view\"]').forEach((view: any) => {\n view.gotoId(sectionId);\n });\n }\n } else if (target && target.getAttribute('key') && target.getAttribute('scrollview') !== null) {\n // Per scroll su indice\n const key = target.getAttribute('key');\n if (key) {\n this.scrollToIndexElement(key);\n }\n } else if (target && this.output.toggleColumn === false) {\n if (\n target.__key\n && (target.className.includes('person')\n || target.className.includes('place'))\n ) {\n this.output.toggleColumn = true;\n this.scrollElementsIntoView(target, 'entity', '#text-viewer-index');\n }\n } else this.output.toggleColumn = false;\n }\n\n /**\n * Resetta tutti gli highlight attivi del testo \n */\n private resetHighlights() {\n document.querySelectorAll('[id$=\"-view\"]').forEach((view: any) => {\n if (!view.shadowRoot) return;\n const content = view.shadowRoot.getElementById('view') || view.shadowRoot;\n\n // console.log('[resetHighlights] processing view:', view.id, '| pb-highlights:', content.querySelectorAll('pb-highlight').length);\n\n // Rimuove il giallo e re-abilita tutti i pb-highlight\n content.querySelectorAll('pb-highlight').forEach((hl: any) => {\n hl._className = 'highlight-off';\n hl.disabled = false;\n });\n\n // Rimuove classe 'disable' da qualsiasi elemento (residuo da plain reading view)\n content.querySelectorAll('.disable').forEach((el: Element) => {\n el.classList.remove('disable');\n });\n\n // Ripristina il background dei seg-outer-inner (potrebbe essere rimasto 'white'\n content.querySelectorAll('.seg-outer-inner').forEach((el: Element) => {\n (el as HTMLElement).style.backgroundColor = '';\n });\n });\n }\n\n viewListenerUpdate() {\n document.addEventListener(\n 'pb-start-update',\n function _listener() {\n document.removeEventListener('pb-start-update', _listener, true);\n },\n true\n );\n }\n\n changeView(view, refresh) {\n setTimeout(\n (v, r) => {\n // console.log(`TEST CHANGE VIEW: ${view}`);\n document.dispatchEvent(\n new CustomEvent('pb-toggle', {\n detail: {\n properties: {\n view: v,\n },\n action: r ? 'refresh' : '',\n key: 'transcription',\n },\n })\n );\n },\n 600,\n view,\n refresh\n );\n }\n\n scrollElementsIntoView(target, type, view) {\n setTimeout(() => {\n let element: any;\n if (type === 'chapter') {\n if (\n document\n .querySelector('.n7-text-viewer #view0')\n .shadowRoot.querySelector('pb-highlight')\n ) {\n const highlight = document\n .querySelector('.n7-text-viewer #view0')\n .shadowRoot.querySelectorAll('pb-highlight');\n\n const highlightId = highlight[highlight.length - 1].id; // s.x\n\n const fragmentNumber = highlightId.replace('.', '\\\\.');\n\n element = document\n .querySelector(view)\n .shadowRoot.querySelector(`#${fragmentNumber}`);\n }\n } else if (type === 'entity') {\n const key = target.__key;\n element = document\n .querySelector(`.n7-text-viewer ${view}`)\n .shadowRoot.querySelector(`#${key}`);\n } else if (type === 'hq') {\n element = document\n .querySelector(`.n7-parallel-text-viewer ${view}`)\n .shadowRoot.querySelector('.tei-em');\n }\n\n const container = document.querySelector(`.n7-parallel-text-viewer ${view}`);\n if (element) {\n container.scrollTop = element.offsetTop;\n }\n }, 600);\n }\n\n /**\n * Scrolla all'elemento corrispondente nell'indice\n */\n scrollToIndexElement(key: string) {\n setTimeout(() => {\n const cleanKey = key.replace('#', '');\n const views = document.querySelectorAll('.n7-parallel-text-viewer [id$=\"-view\"]:not(#transcription-view)');\n\n Array.from(views).some((view) => {\n const target = view.shadowRoot?.querySelector(`#${cleanKey}`);\n if (target) {\n (target as HTMLElement).scrollIntoView({ behavior: 'smooth', block: 'center' });\n return true;\n }\n return false;\n });\n }, 300);\n }\n}\n","import { DataSource } from '@net7/core';\n\nexport class MrEmbeddedContentDS extends DataSource {\n id: string;\n\n protected transform(data: any): any {\n if (!data) return null;\n const iframe = `<iframe src=\"${data}\" width=\"100%\" height=\"600px\"></iframe>`;\n return iframe;\n }\n}\n","import { InnerTitleData } from '@net7/components';\nimport { DataSource, _t } from '@net7/core';\n\nexport class MrSearchPageTitleDS extends DataSource {\n protected transform(): InnerTitleData {\n const { title, description, searchId } = this.options.config;\n const data: InnerTitleData = {\n title: {\n main: {\n text: _t(title)\n }\n }\n };\n\n if (description && description.buttonText) {\n data.actions = {\n buttons: [{\n text: _t(description.buttonText),\n anchor: {\n payload: searchId\n }\n }]\n };\n }\n\n return data;\n }\n}\n","import { DataSource, _t } from '@net7/core';\n\nexport class MrSearchResultsTitleDS extends DataSource {\n protected transform(data) {\n const {\n totalResultsText,\n sort\n } = this.options.config;\n const { total_count: totalCount, sort: currentSort } = data;\n const mainText = _t(totalResultsText, { total: totalCount }, (key, { total }) => {\n if (total === 0) {\n return `${key}_0`;\n } if (total === 1) {\n return `${key}_1`;\n }\n return key;\n });\n\n return {\n title: {\n main: {\n text: mainText\n }\n },\n actions: {\n select: {\n label: sort.label,\n options: sort.options.map(({\n label, value, selected, disabled\n }) => ({\n value,\n disabled,\n selected: currentSort ? value === currentSort : selected,\n text: label\n })),\n payload: 'sort'\n }\n }\n };\n }\n\n OnInputQueryChange(value) {\n const { sort } = this.options.config;\n sort.options.forEach((option) => {\n if (option.value === '_score') {\n option.disabled = !value;\n }\n });\n if (this.input) {\n this.update(this.input);\n }\n }\n}\n","import { ItemPreviewData, MetadataGroup } from '@net7/components';\nimport { DataSource, _t } from '@net7/core';\nimport { merge, clone } from 'lodash';\nimport { helpers } from '@net7/boilerplate-common';\nimport linksHelper from '../../helpers/links-helper';\nimport { MrLocaleService } from '../../services/locale.service';\n\ntype HighlightItem = [string, [string]] | {\n link?: {\n /** from the baseUrl of the application */\n absolute?: string;\n /** path relative to the item preview url */\n relative?: string;\n /** url query params in format key=\"value\"&key2=\"value\" */\n params?: string;\n /** include current url query params */\n query_string?: boolean;\n };\n text?: string;\n label?: string;\n}\n\ninterface MrSearchResult extends ItemPreviewData {\n /** unique id for the search result entry */\n id: number;\n /** relative path */\n link?: string;\n /** route config id */\n routeId?: string;\n /** link query params */\n params?: object;\n /** link slug */\n slug?: string;\n /** items that matched the search input */\n highlights?: HighlightItem[];\n /** highlights title */\n highlightsTitle?: string;\n /** payload for item anchor */\n payload?: {\n action: string;\n id: string | number;\n type: string;\n };\n}\n\nconst ITEM_PREVIEW_DEFAULTS = {\n limit: 100,\n striptags: true\n};\n\ntype MrSearchResponse = {\n limit: number;\n offset: number;\n results: MrSearchResult[];\n sort: string;\n total_count: number;\n}\n\nexport class MrSearchResultsDS extends DataSource {\n protected transform(data: MrSearchResponse) {\n const { results } = data;\n const { itemPreview, highlights: highlightsOptions } = this.options.config;\n const itemPreviewOptions = merge(clone(ITEM_PREVIEW_DEFAULTS), (itemPreview || {}));\n\n return results.map((item) => {\n if (typeof item.text === 'string') {\n // striptags\n if (itemPreviewOptions.striptags) {\n item.text = helpers.striptags(item.text);\n }\n // limit\n if (itemPreviewOptions.limit && (item.text.length > itemPreviewOptions.limit)) {\n item.text = `${item.text.substring(0, itemPreviewOptions.limit)}...`;\n }\n }\n // metadata\n const metadata: MetadataGroup[] = [];\n if (Array.isArray(item.metadata)) {\n item.metadata.forEach((group) => {\n const items = [];\n (group.items || []).forEach((metadataItem) => {\n items.push({\n ...metadataItem,\n label: _t(metadataItem.label)\n });\n });\n metadata.push({ items });\n });\n }\n\n // link\n const anchor = this.getItemPreviewAnchor(item, itemPreview?.linkTarget);\n\n /*\n Add the highlights to the item's metadata with a custom group\n */\n const highlights = [];\n if (item.highlights) {\n const highlightGroup = {\n title: _t('advancedsearch#highlights_title'),\n items: [],\n classes: 'n7-item-preview__highlights'\n };\n item.highlights.forEach((highlight: HighlightItem) => {\n // if the item is an array interpret it as [label, [value]]\n if (Array.isArray(highlight)) {\n highlightGroup.items.push({\n label: _t(highlight[0]),\n value: _t(highlight[1][0])\n });\n // if it's an object then it should have a custom hyperlink\n } else {\n const href = this.getHighlightLink(highlight, anchor.href);\n\n highlightGroup.items.push({\n label: highlight.label ? _t(highlight.label) : undefined,\n value: highlight.text ?? '',\n target: itemPreview?.linkTarget || '_blank',\n href, // custom hyperlink\n });\n }\n });\n highlights.push(highlightGroup);\n }\n\n return {\n ...item,\n metadata,\n anchor,\n highlights,\n highlightsHidden: !!highlightsOptions?.hidden,\n highlightsHasToggle: !!highlightsOptions?.hasToggle,\n classes: itemPreviewOptions.classes,\n };\n });\n }\n\n public getItemPreviewAnchor(item, target = '') {\n const { localeService }: { localeService: MrLocaleService } = this.options;\n let anchor = null;\n if (item.routeId) {\n const routeLink = localeService.getLinkByRouteId(item.routeId, `${item.id}`, item.slug);\n anchor = {\n href: routeLink,\n queryParams: item.params || null,\n fragment: item.fragment || null,\n };\n } else if (item.link) {\n anchor = {\n href: linksHelper.getRouterLink(item.link),\n queryParams: linksHelper.getQueryParams(item.link),\n };\n } else if (item.payload) {\n anchor = {\n payload: {\n ...item.payload\n }\n };\n }\n\n if (item.routeId || item.link) {\n anchor.target = target || '_blank';\n }\n\n return anchor;\n }\n\n public getHighlightLink(highlight, itemLink) {\n let href = '';\n if (!highlight.link) {\n return href;\n }\n if (highlight.link.absolute) {\n // path is absolute\n href = `${highlight.link.absolute}`;\n } else {\n href = this.getHighlightRelativeUrl(highlight.link, itemLink);\n // path is relative to the item-preview url\n }\n return this.getHighlightParams(highlight.link, href);\n }\n\n private getHighlightRelativeUrl(highlightLink, href) {\n if (!highlightLink) {\n return '';\n }\n if (typeof highlightLink === 'string') {\n return `${href}${highlightLink}`;\n }\n if (highlightLink.relative) {\n return `${href}${highlightLink.relative}`;\n }\n return href;\n }\n\n private getHighlightParams(highlightLink, href) {\n const params = highlightLink.params ? [highlightLink.params] : [];\n // includes current query _string\n if (highlightLink.query_string) {\n params.push(document.location.search);\n }\n return linksHelper.joinQueryParams(href, params);\n }\n}\n","import { _t, DataSource } from '@net7/core';\nimport { TagData } from '@net7/components';\n\nexport class MrSearchTagsDS extends DataSource {\n public hasFilters = false;\n\n protected transform(data): TagData[] {\n const { state, linksResponse, facetsConfig } = data;\n const { facets } = linksResponse;\n const tags = [];\n\n // inputs config\n facetsConfig.sections.forEach(({ inputs }) => {\n inputs\n .filter(({ queryParam }) => queryParam)\n .forEach(({ id }) => {\n if (state[id] || state[id] === 0) {\n const values = Array.isArray(state[id]) ? state[id] : [state[id]];\n values\n .forEach((value) => {\n let text = `${value}`;\n if (facets[id]) {\n const selectedFacet = facets[id].values.find(({ payload }) => payload === value);\n const cachedTag = Array.isArray(this.output)\n ? this.output.find(({ payload }) => payload.value === value)\n : null;\n if (selectedFacet?.text) {\n text = selectedFacet.text;\n } else if (cachedTag?.text) {\n text = cachedTag?.text;\n }\n }\n tags.push({\n text: _t(text),\n icon: 'n7-icon-close',\n payload: {\n id,\n value\n }\n });\n });\n }\n });\n });\n\n this.hasFilters = !!tags.length;\n return tags;\n }\n}\n","import { DataSource, _t } from '@net7/core';\nimport { SearchPageDescriptionData } from '../../components/search-page-description/search-page-description';\n\nexport class MrSearchPageDescriptionDS extends DataSource {\n protected transform(data): SearchPageDescriptionData {\n const { description } = this.options.config;\n\n if (!description) {\n return null;\n }\n\n const { linkText } = description;\n const { text } = data;\n\n return {\n text,\n link: {\n text: _t(linkText),\n payload: true\n }\n };\n }\n}\n","import * as dayjs from 'dayjs';\n\nexport default {\n format(date, format) {\n return dayjs(date).format(format);\n }\n};\n","import { DataSource, _t } from '@net7/core';\nimport dateHelper from '../helpers/date-helper';\n\nexport class MrStaticMetadataDS extends DataSource {\n protected transform(data: any): any {\n const items = ['authors', 'author', 'date', 'doi', 'time_to_read']\n .filter((metakey) => data[metakey])\n .map((metakey) => {\n const itemValue = metakey === 'date' ? dateHelper.format(data[metakey], _t('global#date_human')) : data[metakey];\n return {\n group: [\n {\n items: [{\n label: _t(`resource#${metakey}`),\n value: itemValue\n }]\n }\n ]\n };\n });\n return { group: items };\n }\n}\n","import { DataSource } from '@net7/core';\nimport tippy from 'tippy.js';\nimport { MrFormWrapperAccordionData } from '../components/form-wrapper-accordion/form-wrapper-accordion';\n\nconst ICON_OPEN = 'n7-icon-angle-up';\nconst ICON_CLOSE = 'n7-icon-angle-down';\n\nexport class MrFormWrapperAccordionDS extends DataSource {\n protected transform(data: MrFormWrapperAccordionData): MrFormWrapperAccordionData {\n const { form } = data;\n const { groups } = form.config;\n\n // set accordion headers\n data.form.config.groups = groups.map((group) => ({\n ...group,\n options: {\n ...group.options,\n text: group.options.label,\n payload: group.id,\n iconRight: group.options.isOpen ? ICON_OPEN : ICON_CLOSE,\n isOpen: group.options.isOpen\n }\n }));\n return data;\n }\n\n toggleGroup(groupId) {\n this.output.form.config.groups.forEach((group) => {\n if (group.id === groupId) {\n const { isOpen } = group.options;\n group.options.iconRight = isOpen ? ICON_CLOSE : ICON_OPEN;\n group.options.isOpen = !group.options.isOpen;\n }\n });\n }\n\n checkInfoTooltips() {\n setTimeout(() => {\n tippy(document.querySelectorAll('.mr-input-info'), {\n content: (reference) => reference.getAttribute('alt'),\n });\n }, 1000);\n }\n}\n","import { DataSource, _t } from '@net7/core';\nimport { TagData } from '@net7/components';\n\nexport class MrAdvancedSearchTagsDS extends DataSource {\n protected transform(data): TagData[] {\n const { labels } = this.options;\n return Object.keys(data).map((key) => ({\n text: `${labels[key] || key}: ${_t(data[key])}`\n }));\n }\n}\n","import { DataSource } from '@net7/core';\nimport { MrMetadataDS } from './metadata.ds';\n\nconst ICON_OPEN = 'n7-icon-angle-up';\nconst ICON_CLOSE = 'n7-icon-angle-down';\n\nexport class MrMetadataDynamicDS extends DataSource {\n private metadataDS = new MrMetadataDS();\n\n id: string;\n\n protected transform(data: any): any {\n if (!data) return null;\n\n // set accordion headers and options\n data.data = data.data.map((group, index) => ({\n ...group,\n groupId: index,\n options: {\n ...group.options,\n text: group.title,\n label: group.title,\n payload: index,\n isOpen: group?.options?.isOpen ?? index === 0,\n showHeader: true,\n iconRight: (group?.options?.isOpen ?? index === 0) ? ICON_OPEN : ICON_CLOSE,\n }\n }));\n data.data.forEach((group, i) => {\n data.data[i].group = this.metadataDS.transform(data.data[i]);\n });\n\n // If a fragment (#id) is present in the url, open the related accordion\n this.options.route.fragment.subscribe((fragment) => {\n if (fragment) {\n const fragmentGroup = data.data.find((group) => group.accordionId === fragment);\n if (fragmentGroup) {\n fragmentGroup.options.isOpen = true;\n }\n }\n });\n\n return data;\n }\n\n public toggleGroup(payload) {\n this.output.data.forEach((group) => {\n if (group.groupId === payload) {\n const { options } = group;\n const { isOpen } = options;\n options.iconRight = isOpen ? ICON_CLOSE : ICON_OPEN;\n options.isOpen = !isOpen;\n }\n });\n }\n}\n","import { DataSource } from '@net7/core';\n\nexport class MrImageViewerIiifDS extends DataSource {\n protected transform(data: any): any {\n if (!data) return null;\n\n const urlParams = new URLSearchParams(window.location.search);\n const parCanvasId = urlParams.get('iiifCanvasId');\n const parCanvasIndex = urlParams.get('iiifCanvasIndex');\n const parAnnotationId = urlParams.get('iiifAnnotationId');\n\n const canvasId = parCanvasId || null;\n const canvasIndex = parCanvasIndex ? parseInt(parCanvasIndex, 10) : null;\n const annotationId = parAnnotationId || null;\n const { libOptions } = this.options;\n const iiifManifestsList = data['iiif-manifests'];\n const windows = iiifManifestsList.map((manifest) => ({\n manifestId: manifest.manifestUrl,\n canvasId,\n canvasIndex,\n annotationId,\n }));\n return {\n libOptions: {\n ...libOptions,\n windows\n },\n };\n }\n}\n","import { EventHandler } from '@net7/core';\n\nexport class MrDummyEH extends EventHandler {\n public listen() {\n // TODO\n }\n}\n","import { EventHandler } from '@net7/core';\n\nexport class MrFiltersEH extends EventHandler {\n public listen() {\n // TODO\n }\n}\n","import { EventHandler } from '@net7/core';\n\nexport class MrNavEH extends EventHandler {\n public listen() {\n this.innerEvents$.subscribe(({ type, payload }) => {\n switch (type) {\n case 'dv-nav.click':\n this.emitOuter('navclick', payload);\n break;\n default:\n console.warn('unhandled event of type', type);\n break;\n }\n });\n }\n}\n","import { EventHandler } from '@net7/core';\n\nexport class MrTimelineEH extends EventHandler {\n public listen() {\n // this.innerEvents$.subscribe(({ type, payload }) => {\n // switch (type) {\n // case `${this.dataSource.id}.<event-type>`:\n // // TODO\n // break;\n // default:\n // break;\n // }\n // });\n }\n}\n","import { EventHandler } from '@net7/core';\n\nexport class MrYearHeaderEH extends EventHandler {\n public listen() {\n this.innerEvents$.subscribe(({ type }) => {\n switch (type) {\n case 'mr-year-header.click':\n this.emitOuter('closeevent');\n break;\n default:\n break;\n }\n });\n }\n}\n","import { EventHandler } from '@net7/core';\nimport { MrGalleryDS } from '../data-sources';\n\nexport class MrGalleryEH extends EventHandler {\n public dataSource: MrGalleryDS;\n\n public listen() {\n this.innerEvents$.subscribe(({ type, payload }) => {\n switch (type) {\n case `${this.dataSource.id}.click`:\n case 'mr-gallery.click':\n this.dataSource.setSelected(payload);\n break;\n case `${this.dataSource.id}.close`:\n case 'mr-gallery.close':\n this.dataSource.removeSelected();\n break;\n case `${this.dataSource.id}.changeImg`:\n case 'mr-gallery.changeImg':\n this.dataSource.changeImg(payload);\n break;\n default:\n break;\n }\n });\n }\n}\n","import { EventHandler } from '@net7/core';\n\nexport class MrCollectionEH extends EventHandler {\n public listen() {\n this.innerEvents$.subscribe(({ type, payload }) => {\n switch (type) {\n case `${this.dataSource.id}.click`: {\n const { action } = payload;\n if (action === 'resource-modal') {\n this.emitOuter('openresourcemodal', payload);\n }\n break;\n }\n default:\n break;\n }\n });\n }\n}\n","import { EventHandler } from '@net7/core';\nimport { MrTextViewerDS } from '../data-sources/text-viewer.ds';\n\nexport class MrTextViewerEH extends EventHandler {\n layoutId: string;\n\n dataSource: MrTextViewerDS;\n\n public listen() {\n this.innerEvents$.subscribe(({ type, payload }) => {\n switch (type) {\n case `${this.hostId}.click`:\n this.dataSource.onClick(payload);\n break;\n case `${this.hostId}.togglecolumn`:\n this.dataSource.displayIndex();\n break;\n default:\n // console.warn('unhandled event of type', type);\n break;\n }\n });\n }\n}\n","import { EventHandler } from '@net7/core';\n\nexport class MrButtonEH extends EventHandler {\n public listen() {\n this.innerEvents$.subscribe(({ type, payload }) => {\n switch (type) {\n case `${this.dataSource.id}.click`:\n this.emitOuter('download-pdf', payload);\n break;\n default:\n // console.warn('unhandled event of type', type);\n break;\n }\n });\n }\n}\n","import { EventHandler } from '@net7/core';\n\nexport class MrNetworkEH extends EventHandler {\n public listen() {\n }\n}\n","import { EventHandler } from '@net7/core';\n// import { Network } from 'vis-network';\nimport { MrLocaleService, MrResourceModalService } from '../services';\n// import linksHelper from '../helpers/links-helper';\n\nexport class MrNetworkResourceEH extends EventHandler {\n private localeService: MrLocaleService;\n\n private modalService: MrResourceModalService;\n\n public listen() {\n this.outerEvents$.subscribe(({\n type,\n // payload,\n localeService\n }) => {\n switch (type) {\n case 'mr-resource-layout.init':\n this.localeService = localeService;\n\n // this.dataSource.networkListener$.subscribe((network: Network) => {\n // network.on('click', (props) => {\n // if (props.nodes && props.nodes.length > 0) {\n // const nodeId = props.nodes[0];\n // const node = this.dataSource.networkData.nodes.find((n) => n.id === nodeId);\n\n // // gestione payload\n // if (node?.payload) {\n // let anchor = null;\n\n // // Navigazione interna\n // if (node?.payload?.link?.routeId) {\n // const routeLink = this.localeService.getLinkByRouteId(\n // node.payload.link.routeId,\n // node.payload.link.id,\n // node.payload.link.slug\n // );\n // anchor = {\n // href: routeLink,\n // queryParams: node.payload.link.params || null,\n // };\n // // link semplice\n // } else if (node?.payload?.link && typeof node?.payload?.link === 'string') {\n // anchor = {\n // href: linksHelper.getRouterLink(node.payload.link),\n // queryParams: linksHelper.getQueryParams(node.payload.link),\n // };\n // // link complesso\n // } else if (node?.payload?.link && typeof node?.payload?.link === 'object') {\n // let href = '';\n // if (node.payload.link.absolute) {\n // href = `${node.payload.link.absolute}`;\n // } else if (node.payload.link.relative) {\n // href = node.payload.link.relative;\n // }\n\n // if (href && node.payload.link.params) {\n // href = linksHelper.joinQueryParams(href, [node.payload.link.params]);\n // }\n\n // if (href && node.payload.link.query_string) {\n // href = linksHelper.joinQueryParams(href, [document.location.search]);\n // }\n\n // anchor = {\n // href,\n // queryParams: null,\n // };\n // // altro\n // } else if (node.payload.payload) {\n // anchor = {\n // payload: {\n // ...node.payload.payload\n // }\n // };\n // }\n\n // if (anchor) {\n // if (anchor.href) {\n // window.open(anchor.href, '_blank');\n // } else if (anchor.payload) {\n // this.itemPreviewEmit('click', anchor.payload);\n // }\n // }\n // }\n // }\n // });\n // });\n break;\n default:\n break;\n }\n });\n }\n\n public itemPreviewEmit = (type, payload) => {\n if (type === 'click' && payload?.action === 'resource-modal') {\n const { id, type: resourceType } = payload;\n this.modalService.open(id, resourceType);\n }\n };\n}\n","import { EventHandler } from '@net7/core';\nimport { MrParallelTextViewerDS } from '../data-sources/parallel-text-viewer.ds';\n\nexport class MrParallelTextViewerEH extends EventHandler {\n layoutId: string;\n\n dataSource: MrParallelTextViewerDS;\n\n public listen() {\n this.innerEvents$.subscribe(({ type, payload }) => {\n switch (type) {\n case `${this.hostId}.click`:\n this.dataSource.onClick(payload);\n break;\n case `${this.hostId}.togglecolumn`:\n this.dataSource.displayIndex();\n break;\n default:\n // console.warn('unhandled event of type', type);\n break;\n }\n });\n }\n}\n","import { EventHandler } from '@net7/core';\n\nexport class MrSearchTagsEH extends EventHandler {\n public listen() {\n this.innerEvents$.subscribe(({ type, payload }) => {\n switch (type) {\n case 'mr-search-tags.click':\n this.emitOuter('click', payload);\n break;\n default:\n break;\n }\n });\n }\n}\n","import { EventHandler } from '@net7/core';\n\nexport class MrSearchResultsTitleEH extends EventHandler {\n public listen() {\n this.innerEvents$.subscribe(({ type, payload }) => {\n switch (type) {\n case 'mr-search-results-title.change':\n this.emitOuter('change', payload);\n break;\n default:\n break;\n }\n });\n\n this.outerEvents$.subscribe(({ type, payload }) => {\n switch (type) {\n case 'mr-search-layout.inputquerychange':\n this.dataSource.OnInputQueryChange(payload);\n break;\n default:\n break;\n }\n });\n }\n}\n","import { EventHandler } from '@net7/core';\n\nexport class MrSearchPageTitleEH extends EventHandler {\n public listen() {\n this.innerEvents$.subscribe(({ type, payload }) => {\n switch (type) {\n case 'mr-search-page-title.click':\n this.emitOuter('click', payload);\n break;\n default:\n break;\n }\n });\n }\n}\n","import { EventHandler } from '@net7/core';\n\nexport class MrSearchPageDescriptionEH extends EventHandler {\n public listen() {\n this.innerEvents$.subscribe(({ type, payload }) => {\n switch (type) {\n case 'mr-search-page-description.click':\n this.emitOuter('click', payload);\n break;\n default:\n break;\n }\n });\n }\n}\n","import { EventHandler } from '@net7/core';\n\nexport class MrSearchResultsEH extends EventHandler {\n public listen() {\n this.innerEvents$.subscribe(({ type, payload }) => {\n switch (type) {\n case 'mr-search-results.click': {\n const { action } = payload;\n if (action === 'resource-modal') {\n this.emitOuter('openresourcemodal', payload);\n }\n break;\n }\n default:\n break;\n }\n });\n }\n}\n","import { EventHandler } from '@net7/core';\nimport { fromEvent, Subject } from 'rxjs';\nimport { filter, takeUntil } from 'rxjs/operators';\nimport { MrFormWrapperAccordionDS } from '../data-sources';\n\nexport class MrFormWrapperAccordionEH extends EventHandler {\n private destroy$: Subject<void> = new Subject();\n\n dataSource: MrFormWrapperAccordionDS;\n\n public listen() {\n this.innerEvents$.subscribe(({ type, payload }) => {\n switch (type) {\n case 'mr-form-wrapper-accordion.init':\n this.listenKeyUpEvents();\n this.dataSource.checkInfoTooltips();\n break;\n case 'mr-form-wrapper-accordion.destroy':\n this.destroy$.next();\n break;\n case 'mr-form-wrapper-accordion.submit': {\n const { form } = this.dataSource.output;\n this.emitOuter('submit', {\n state: form.getState()\n });\n break;\n }\n case 'mr-form-wrapper-accordion.reset':\n this.emitOuter('reset');\n break;\n case 'mr-form-wrapper-accordion.click':\n this.dataSource.toggleGroup(payload);\n this.dataSource.checkInfoTooltips();\n break;\n default:\n break;\n }\n });\n }\n\n private listenKeyUpEvents() {\n const keyup$ = fromEvent(window, 'keyup');\n\n keyup$.pipe(\n filter((event: KeyboardEvent) => event.key === 'Enter'),\n takeUntil(this.destroy$)\n ).subscribe(() => {\n this.emitInner('submit');\n });\n }\n}\n","import { EventHandler } from '@net7/core';\nimport { MrMetadataDynamicDS } from '../data-sources';\n\nexport class MrMetadataDynamicEH extends EventHandler {\n dataSource: MrMetadataDynamicDS;\n\n public listen() {\n this.innerEvents$.subscribe(({ type, payload }) => {\n switch (type) {\n case `${this.dataSource.id}.click`:\n this.dataSource.toggleGroup(payload);\n break;\n default:\n break;\n }\n });\n }\n}\n","import { EventHandler } from '@net7/core';\nimport { delay, first } from 'rxjs/operators';\nimport { MrMapDS } from '../data-sources/map.ds';\n\nexport class MrMapEH extends EventHandler {\n dataSource: MrMapDS;\n\n public listen() {\n this.outerEvents$.subscribe(({ type, payload }) => {\n switch (type) {\n case 'mr-map-layout.routechanged':\n if (!this.dataSource.mapInstance) {\n this.dataSource.mapLoaded$.pipe(\n delay(1000), // markers loaded timeout\n first()\n ).subscribe(() => {\n this.dataSource.updateMarkersState(payload);\n });\n } else {\n this.dataSource.updateMarkersState(payload);\n }\n break;\n default:\n break;\n }\n });\n }\n}\n","import { SmartPaginationDS, SmartPaginationEH } from '@net7/boilerplate-common';\nimport { MrAdvancedResultsLayoutDS } from './advanced-results-layout.ds';\nimport { MrAdvancedResultsLayoutEH } from './advanced-results-layout.eh';\nimport * as DS from '../../data-sources';\nimport * as EH from '../../event-handlers';\n\nexport const MrAdvancedResultsLayoutConfig = {\n layoutId: 'mr-advanced-results-layout',\n widgets: [\n {\n id: 'mr-search-page-title'\n }, {\n id: 'mr-search-results-title'\n }, {\n id: 'mr-search-results'\n }, {\n id: 'n7-smart-pagination',\n dataSource: SmartPaginationDS,\n eventHandler: SmartPaginationEH,\n }, {\n id: 'mr-advanced-search-tags'\n }\n ],\n layoutDS: MrAdvancedResultsLayoutDS,\n layoutEH: MrAdvancedResultsLayoutEH,\n widgetsDataSources: DS,\n widgetsEventHandlers: EH,\n layoutOptions: {}\n};\n","import { Component, Input } from '@angular/core';\nimport { ItemPreviewData, MetadataData } from '@net7/components';\n\n/**\n * A hyperlinked metadata item\n */\nexport interface LinkedMetadataData extends MetadataData {\n /** href to use on the html element */\n href: string;\n /** list of highlights */\n items: string[];\n}\n\n/**\n * Data for Muruca's AdvancedResult component.\n */\ninterface AdvancedResultsData extends ItemPreviewData {\n highlights: LinkedMetadataData[];\n highlightsTitle?: string;\n highlightsHidden?: boolean;\n highlightsHasToggle?: boolean;\n}\n\n@Component({\n selector: 'mr-advanced-result',\n templateUrl: './advanced-result.html',\n})\nexport class MrAdvancedResultComponent {\n @Input() data: AdvancedResultsData;\n\n @Input() emit: any;\n\n /** Returns true if there are some highlights to render */\n hasHighlights = (): boolean => this.data\n ?.highlights\n // there is at least one group that has highlights\n ?.some((d) => d.items.length > 0);\n\n isHidden() {\n if (this.data.highlightsHasToggle) {\n if (!this.data.highlightsTitle) return false;\n return this.data.highlightsHidden;\n }\n return false;\n }\n\n onClick(payload) {\n if (!this.emit) return;\n this.emit('click', payload);\n }\n\n onHeaderClick(data) {\n if (!data.highlightsHasToggle) return;\n data.highlightsHidden = !data.highlightsHidden;\n }\n}\n","<div *ngIf=\"data\"\n class=\"mr-advanced-result\">\n <!-- RESULT MAIN CONTENT -->\n <n7-item-preview [data]=\"data\"></n7-item-preview>\n <!-- RESULT HIGHLIGHTS SECTION -->\n <ng-container *ngIf=\"hasHighlights()\">\n <div *ngIf=\"data?.highlightsTitle\" class=\"mr-advanced-result__header\"\n [ngClass]=\"{\n 'has-toggle': !!data.highlightsHasToggle\n }\"\n (click)=\"onHeaderClick(data)\">\n <span class=\"mr-advanced-result__header-label\">\n {{ data.highlightsTitle }}\n </span>\n <span class=\"mr-advanced-result__header-icon\"\n [ngClass]=\"{\n 'n7-icon-angle-down': data.highlightsHidden,\n 'n7-icon-angle-up': !data.highlightsHidden\n }\">\n </span>\n </div>\n <div [hidden]=\"isHidden()\" \n class=\"mr-advanced-result__content\"\n *ngFor=\"let highlightGroup of data.highlights\">\n <div class=\"mr-advanced-result__content-group\">\n <!-- METADATA ITEM -->\n <div class=\"mr-advanced-result__item {{ item.classes || '' }}\"\n *ngFor=\"let item of highlightGroup.items\">\n <!-- ICON -->\n <span class=\"mr-advanced-result__icon {{item.icon}}\"\n *ngIf=\"item.icon\">\n </span>\n <!-- LABEL -->\n <span class=\"mr-advanced-result__label\"\n *ngIf=\"item.label\"\n [innerHTML]=\"item.label\">\n </span>\n <!-- VALUE W/ HREF -->\n <a *ngIf=\"item.href\"\n [href]=\"item.href\"\n [target]=\"item.target\"\n >\n <span class=\"mr-advanced-result__value\"\n *ngIf=\"item.value\"\n [innerHTML]=\"item.value\">\n </span>\n </a>\n <!-- VALUE W/OUT HREF -->\n <span class=\"mr-advanced-result__value\"\n *ngIf=\"item.value && !item.href\"\n [innerHTML]=\"item.value\">\n </span>\n </div>\n </div>\n </div>\n </ng-container>\n</div>\n","import { Component, OnInit, OnDestroy } from '@angular/core';\nimport { ActivatedRoute, Data, Router } from '@angular/router';\nimport {\n AbstractLayout,\n LayoutsConfigurationService,\n MainStateService,\n ConfigurationService,\n CommunicationService\n} from '@net7/boilerplate-common';\nimport { MrResourceModalService } from '../../services/resource-modal.service';\nimport { MrAdvancedResultsLayoutConfig as config } from './advanced-results-layout.config';\nimport { MrLayoutStateService } from '../../services/layout-state.service';\nimport { MrLocaleService } from '../../services/locale.service';\n\n@Component({\n selector: 'mr-advanced-results-layout',\n templateUrl: './advanced-results-layout.html',\n})\nexport class MrAdvancedResultsLayoutComponent extends AbstractLayout implements OnInit, OnDestroy {\n private routeData: Data;\n\n constructor(\n private router: Router,\n private activatedRoute: ActivatedRoute,\n private mainState: MainStateService,\n private configuration: ConfigurationService,\n private communication: CommunicationService,\n public layoutState: MrLayoutStateService,\n public modalService: MrResourceModalService,\n public localeService: MrLocaleService,\n layoutsConfiguration: LayoutsConfigurationService,\n ) {\n super(layoutsConfiguration.get('MrAdvancedResultsLayoutConfig') || config);\n }\n\n protected initPayload() {\n return {\n routeData: this.routeData,\n configuration: this.configuration,\n communication: this.communication,\n mainState: this.mainState,\n router: this.router,\n activatedRoute: this.activatedRoute,\n layoutState: this.layoutState,\n modalService: this.modalService,\n localeService: this.localeService,\n options: this.config.options || {},\n };\n }\n\n ngOnInit() {\n this.activatedRoute.data.subscribe((routeData) => {\n this.routeData = routeData;\n // add layout states\n this.layoutState.add(['results']);\n this.onInit();\n });\n }\n\n ngOnDestroy() {\n this.onDestroy();\n }\n}\n","<div class=\"mr-advanced-results mr-layout\"\n *ngIf=\"lb.dataSource\">\n <section class=\"mr-layout__maxwidth mr-side-margin\">\n\n <div class=\"mr-advanced-results__title\">\n <n7-inner-title\n [data]=\"lb.widgets['mr-search-page-title'].ds.out$ | async\"\n [emit]=\"lb.widgets['mr-search-page-title'].emit\">\n </n7-inner-title>\n </div>\n \n <div class=\"mr-advanced-results__results-content\">\n <div class=\"scroll-ref\"> </div>\n <div class=\"mr-advanced-results__results-wrapper\">\n \n <div class=\"mr-advanced-results__results-info\">\n <n7-inner-title\n [data]=\"lb.widgets['mr-search-results-title'].ds.out$ | async\"\n [emit]=\"lb.widgets['mr-search-results-title'].emit\">\n </n7-inner-title>\n </div>\n \n <div *ngIf=\"lb.dataSource.pageConfig['filters'] \n && (lb.widgets['mr-advanced-search-tags'].ds.out$ | async)?.length\" \n class=\"mr-active-filters\">\n <span *ngIf=\"lb.dataSource.pageConfig['filters'].title\" \n class=\"mr-active-filters__label\">{{ lb.dataSource.pageConfig['filters'].title }}</span>\n <div class=\"mr-active-filters__tags-wrapper\">\n <n7-tag *ngFor=\"let tag of (lb.widgets['mr-advanced-search-tags'].ds.out$ | async)\"\n [data]=\"tag\">\n </n7-tag>\n </div>\n </div>\n\n <main class=\"mr-advanced-results__results\">\n \n <!-- SEARCH RESULTS -->\n <ng-container [ngSwitch]=\"layoutState.get$('results') | async\">\n \n <!-- loading -->\n <ng-container *ngSwitchCase=\"'LOADING'\">\n <div class=\"mr-advanced-results__results-loading n7-grid-{{ lb.dataSource.pageConfig.grid || 3 }}\">\n <n7-content-placeholder *ngFor=\"let n of [0,1,2,3,4,5,6,7,8,9]\" [data]=\"{\n blocks: [\n { classes: 'search-result-placeholder-title' },\n { classes: 'search-result-placeholder-metadata' },\n { classes: 'search-result-placeholder-metadata' },\n { classes: 'search-result-placeholder-metadata' }\n ]\n }\"></n7-content-placeholder>\n </div>\n </ng-container>\n \n <!-- success: items > 0 -->\n <ng-container *ngSwitchCase=\"'SUCCESS'\">\n <div class=\"n7-grid-{{ lb.dataSource.pageConfig.grid || 3 }}\">\n <!-- Use a custom item preview with clickable metadata items -->\n <mr-advanced-result\n *ngFor=\"let item of (lb.widgets['mr-search-results'].ds.out$ | async)\"\n [data]=\"item\" [emit]=\"lb.widgets['mr-search-results'].emit\">\n </mr-advanced-result>\n <!-- ../../components/advanced-result/advanced-result.html -->\n </div>\n </ng-container>\n\n <!-- empty: items === 0 -->\n <ng-container *ngSwitchCase=\"'EMPTY'\">\n <div *ngIf=\"lb.dataSource.pageConfig?.fallback?.text\" class=\"mr-advanced-results__results-fallback\">\n <p class=\"mr-advanced-results__feedback-text\">\n {{ lb.dataSource.pageConfig.fallback.text }}\n </p>\n <div class=\"mr-advanced-results__buttons\">\n <button class=\"n7-btn n7-btn-xl mr-advanced-results__results-fallback-button\"\n (click)=\"lb.eventHandler.emitInner('searchreset', lb.dataSource.pageConfig.fallback.payload)\">\n {{ lb.dataSource.pageConfig.fallback.button }}\n </button>\n </div>\n </div>\n </ng-container>\n\n <!-- error: request problem -->\n <ng-container *ngSwitchCase=\"'ERROR'\">\n <p *ngIf=\"lb.dataSource.pageConfig?.ko?.text\" class=\"mr-advanced-results__feedback-text\">\n {{ lb.dataSource.pageConfig.ko.text }}\n </p>\n <!-- <div class=\"mr-advanced-results__buttons\">\n <button class=\"n7-btn n7-btn-xl mr-advanced-results__results-ko-button\"\n (click)=\"lb.eventHandler.emitInner('searchreset')\">\n {{ lb.dataSource.pageConfig.ko.button }}\n </button>\n </div> -->\n </ng-container>\n \n </ng-container>\n </main> \n \n <n7-smart-pagination\n *ngIf=\"(layoutState.get$('results') | async) === 'SUCCESS'\"\n [data]=\"lb.widgets['n7-smart-pagination'].ds.out$ | async\"\n [emit]=\"lb.widgets['n7-smart-pagination'].emit\">\n </n7-smart-pagination>\n\n </div>\n </div>\n </section>\n</div>\n","import { DataSource, _t } from '@net7/core';\nimport { InputTextData } from '@net7/components';\nimport { MrFormInputState, MrInputDataSource } from '../../interfaces/form.interface';\n\nexport type MrInputTextValue = string | null;\n\nexport class MrInputTextDS extends DataSource implements MrInputDataSource<MrInputTextValue> {\n public id: string;\n\n public state: MrFormInputState<MrInputTextValue> = {\n value: null,\n disabled: false,\n hidden: false,\n };\n\n protected transform(data: InputTextData): InputTextData {\n return {\n ...data,\n placeholder: _t(data.placeholder)\n };\n }\n\n getState = () => this.state;\n\n setState(newState: MrFormInputState<MrInputTextValue>) {\n this.state = {\n ...this.state,\n ...newState\n };\n this.refresh();\n }\n\n clear() {\n this.setState({ value: null });\n }\n\n refresh() {\n const { value, hidden, disabled } = this.state;\n\n // render value\n this.output.value = value;\n // fix element update\n const el = document.getElementById(this.id) as HTMLInputElement;\n if (el) {\n el.value = value;\n }\n\n // render disabled\n this.output.disabled = disabled;\n\n // render hidden\n this.output.classes = hidden ? 'is-hidden' : '';\n }\n}\n","import { EventHandler } from '@net7/core';\nimport { Subject } from 'rxjs';\nimport { MrInputTextDS } from '../../data-sources/form/input-text.ds';\nimport { MrInputEventHandler, MrChangedParams } from '../../interfaces/form.interface';\n\nexport class MrInputTextEH extends EventHandler implements MrInputEventHandler {\n public changed$: Subject<MrChangedParams>;\n\n public dataSource: MrInputTextDS;\n\n public listen() {\n this.innerEvents$.subscribe(({ type, payload }) => {\n switch (type) {\n case `${this.dataSource.id}.change`: {\n const { value } = payload;\n // set new value\n this.dataSource.setState({ value });\n // emit changed signal\n this.changed$.next({\n id: this.dataSource.id,\n state: this.dataSource.getState()\n });\n break;\n }\n default:\n break;\n }\n });\n }\n}\n","import { DataSource, _t } from '@net7/core';\nimport { InputSelectData } from '@net7/components';\nimport { MrFormInputState, MrInputDataSource } from '../../interfaces/form.interface';\n\ntype MrInputSelectValue = string | null;\n\nexport class MrInputSelectDS extends DataSource implements MrInputDataSource<MrInputSelectValue> {\n public id: string;\n\n public state: MrFormInputState<MrInputSelectValue> = {\n value: null,\n disabled: false,\n hidden: false,\n };\n\n protected transform(data: InputSelectData): InputSelectData {\n return {\n ...data,\n options: this.getOptions(data.options)\n };\n }\n\n getState = () => this.state;\n\n setState(newState: MrFormInputState<MrInputSelectValue>) {\n this.state = {\n ...this.state,\n ...newState\n };\n this.refresh();\n }\n\n clear() {\n this.setState({ value: null });\n }\n\n refresh() {\n const { hidden, disabled } = this.state;\n\n // render value\n this.output.options = this.getOptions(this.output.options);\n\n // render disabled\n this.output.disabled = disabled;\n\n // render hidden\n this.output.classes = hidden ? 'is-hidden' : '';\n }\n\n private getOptions(options) {\n const { value } = this.state;\n return options.map((option) => ({\n ...option,\n label: _t(option.label),\n selected: value === option.value\n }));\n }\n}\n","import { EventHandler } from '@net7/core';\nimport { Subject } from 'rxjs';\nimport { MrInputSelectDS } from '../../data-sources/form/input-select.ds';\nimport { MrInputEventHandler, MrChangedParams } from '../../interfaces/form.interface';\n\nexport class MrInputSelectEH extends EventHandler implements MrInputEventHandler {\n public changed$: Subject<MrChangedParams>;\n\n public dataSource: MrInputSelectDS;\n\n public listen() {\n this.innerEvents$.subscribe(({ type, payload }) => {\n switch (type) {\n case `${this.dataSource.id}.change`: {\n const { value } = payload;\n // set new value\n this.dataSource.setState({ value });\n // emit changed signal\n this.changed$.next({\n id: this.dataSource.id,\n state: this.dataSource.getState()\n });\n break;\n }\n default:\n break;\n }\n });\n }\n}\n","import { DataSource, _t } from '@net7/core';\nimport { InputCheckboxData } from '@net7/components';\nimport { MrFormInputState, MrInputDataSource } from '../../interfaces/form.interface';\n\ntype MrInputCheckboxValue = string[];\n\n// eslint-disable-next-line max-len\nexport class MrInputCheckboxDS extends DataSource implements MrInputDataSource<MrInputCheckboxValue> {\n public id: string;\n\n public state: MrFormInputState<MrInputCheckboxValue> = {\n value: [],\n disabled: false,\n hidden: false,\n };\n\n protected transform(data: InputCheckboxData): InputCheckboxData {\n return {\n ...data,\n checkboxes: this.getCheckboxes(data.checkboxes)\n };\n }\n\n getState = () => this.state;\n\n setState(newState: MrFormInputState<MrInputCheckboxValue>) {\n this.state = {\n ...this.state,\n ...newState\n };\n this.refresh();\n }\n\n clear() {\n this.setState({ value: [] });\n }\n\n refresh() {\n const { hidden } = this.state;\n\n // render value\n this.output.checkboxes = this.getCheckboxes(this.output.checkboxes);\n\n // render hidden\n this.output.classes = hidden ? 'is-hidden' : '';\n }\n\n toggleValue({ inputPayload, value: isChecked }) {\n const { value } = this.state;\n const exists = !!(value.includes(inputPayload));\n if (isChecked && !exists) {\n value.push(inputPayload);\n } else if (!isChecked && exists) {\n value.splice(value.indexOf(inputPayload), 1);\n }\n this.setState({ value });\n }\n\n private getCheckboxes(checkboxes) {\n const { value, disabled } = this.state;\n return checkboxes.map((checkbox, index) => ({\n ...checkbox,\n id: `${this.id}-${index}`,\n disabled,\n label: _t(checkbox.label),\n checked: !!(value.includes(checkbox.payload))\n }));\n }\n}\n","import { EventHandler } from '@net7/core';\nimport { Subject } from 'rxjs';\nimport { MrInputCheckboxDS } from '../../data-sources/form/input-checkbox.ds';\nimport { MrInputEventHandler, MrChangedParams } from '../../interfaces/form.interface';\n\nexport class MrInputCheckboxEH extends EventHandler implements MrInputEventHandler {\n public changed$: Subject<MrChangedParams>;\n\n public dataSource: MrInputCheckboxDS;\n\n public listen() {\n this.innerEvents$.subscribe(({ type, payload }) => {\n switch (type) {\n case `${this.dataSource.id}.change`: {\n // update value\n this.dataSource.toggleValue(payload);\n // emit changed signal\n this.changed$.next({\n id: this.dataSource.id,\n state: this.dataSource.getState()\n });\n break;\n }\n default:\n break;\n }\n });\n }\n}\n","import { DataSource, _t } from '@net7/core';\nimport { MrFormInputState, MrInputDataSource } from '../../interfaces/form.interface';\n\nexport type MrInputTypeaheadValue = string | null;\n\nexport class MrInputTypeaheadDS extends DataSource implements MrInputDataSource<MrInputTypeaheadValue> {\n public id: string;\n\n public state: MrFormInputState<MrInputTypeaheadValue> = {\n value: null,\n disabled: false,\n hidden: false,\n };\n\n protected transform(data: any): any {\n return {\n ...data,\n placeholder: _t(data.placeholder)\n };\n }\n\n getState = () => this.state;\n\n setState(newState: MrFormInputState<MrInputTypeaheadValue>) {\n this.state = {\n ...this.state,\n ...newState\n };\n this.refresh();\n }\n\n clear() {\n this.setState({ value: null });\n }\n\n refresh() {\n const { value, hidden, disabled } = this.state;\n\n // render value\n this.output.value = value;\n // fix element update (same DOM hack as MrInputTextDS)\n const el = document.getElementById(this.id) as HTMLInputElement;\n if (el) {\n el.value = value;\n }\n\n // render disabled\n this.output.disabled = disabled;\n\n // render hidden\n this.output.classes = hidden ? 'is-hidden' : '';\n }\n}\n","import { EventHandler } from '@net7/core';\nimport { Subject } from 'rxjs';\nimport { MrInputTypeaheadDS } from '../../data-sources/form/input-typeahead.ds';\nimport { MrInputEventHandler, MrChangedParams } from '../../interfaces/form.interface';\n\nexport class MrInputTypeaheadEH extends EventHandler implements MrInputEventHandler {\n public changed$: Subject<MrChangedParams>;\n\n public dataSource: MrInputTypeaheadDS;\n\n public listen() {\n this.innerEvents$.subscribe(({ type, payload }) => {\n switch (type) {\n case `${this.dataSource.id}.change`: {\n const { value } = payload;\n // set new value\n this.dataSource.setState({ value });\n // emit changed signal\n this.changed$.next({\n id: this.dataSource.id,\n state: this.dataSource.getState()\n });\n break;\n }\n default:\n break;\n }\n });\n }\n}\n","import { Subject, ReplaySubject } from 'rxjs';\nimport { MrInputTextDS } from '../data-sources/form/input-text.ds';\nimport { MrInputTextEH } from '../event-handlers/form/input-text.eh';\nimport { MrInputSelectDS } from '../data-sources/form/input-select.ds';\nimport { MrInputSelectEH } from '../event-handlers/form/input-select.eh';\nimport { MrInputCheckboxDS } from '../data-sources/form/input-checkbox.ds';\nimport { MrInputCheckboxEH } from '../event-handlers/form/input-checkbox.eh';\nimport { MrInputTypeaheadDS } from '../data-sources/form/input-typeahead.ds';\nimport { MrInputTypeaheadEH } from '../event-handlers/form/input-typeahead.eh';\nimport {\n MrChangedParams,\n MrInputDataSource,\n MrFormConfig,\n} from '../interfaces/form.interface';\n\nexport class MrFormModel {\n public config: MrFormConfig;\n\n public loaded$: ReplaySubject<boolean> = new ReplaySubject();\n\n public inputs: {\n [id: string]: {\n ds: any;\n eh: any;\n emit: (t: string, p: any) => void;\n };\n } = {};\n\n private inputTypes: {\n [id: string]: {\n ds: any;\n eh: any;\n };\n } = {\n text: {\n ds: MrInputTextDS,\n eh: MrInputTextEH\n },\n select: {\n ds: MrInputSelectDS,\n eh: MrInputSelectEH\n },\n checkbox: {\n ds: MrInputCheckboxDS,\n eh: MrInputCheckboxEH\n },\n typeahead: {\n ds: MrInputTypeaheadDS,\n eh: MrInputTypeaheadEH\n }\n };\n\n changed$: Subject<MrChangedParams> = new Subject();\n\n init(config: MrFormConfig) {\n this.config = config;\n\n // init inputs\n this.initInputs();\n\n // emit signal\n this.loaded$.next(true);\n }\n\n getInput = (id: string): MrInputDataSource<any> => this.inputs[id].ds;\n\n getInputs = (): {\n [id: string]: MrInputDataSource<any>;\n } => {\n const inputs = {};\n Object.keys(this.inputs).forEach((id) => {\n inputs[id] = this.getInput(id);\n });\n return inputs;\n };\n\n getState() {\n const state = {};\n Object.keys(this.inputs).forEach((key) => {\n state[key] = this.inputs[key].ds.getState();\n });\n return state;\n }\n\n addInputType(type: string, ds: any, eh: any) {\n if (this.inputTypes[type]) {\n throw Error(`input type ${type} already exists!`);\n }\n\n this.inputTypes[type] = { ds, eh };\n }\n\n private initInputs() {\n const { sections } = this.config;\n sections.forEach((section) => {\n section.inputs.forEach(({\n id, type, options, state, data\n }) => {\n const DSClass = this.inputTypes[type].ds;\n const EHClass = this.inputTypes[type].eh;\n const DSInstance = new DSClass(options || {});\n const EHInstance = new EHClass();\n // set datasource id\n DSInstance.id = id;\n // set initial data\n if (data) {\n DSInstance.update(data);\n }\n // set state\n if (state) {\n DSInstance.setState(state);\n }\n // set eventhandler hostid\n EHInstance.hostId = id;\n // attach datasource to eventhandler\n EHInstance.dataSource = DSInstance;\n // attach changed$ to eventhandler\n EHInstance.changed$ = this.changed$;\n // listen to input events\n EHInstance.listen();\n // save it to input\n this.inputs[id] = {\n ds: DSInstance,\n eh: EHInstance,\n emit: (t: string, p: any) => EHInstance.emitInner(t, p)\n };\n });\n });\n }\n}\n","import { Data, Router } from '@angular/router';\nimport { LayoutDataSource, _t } from '@net7/core';\nimport { cloneDeep, isEmpty } from 'lodash';\nimport { CommunicationService, ConfigurationService, MainStateService } from '@net7/boilerplate-common';\nimport { InputCheckboxData, InputSelectData, InputTextData } from '@net7/components';\nimport { Observable, of } from 'rxjs';\nimport { tap } from 'rxjs/operators';\nimport { MrFormModel } from '../../models/form.model';\nimport { MrLocaleService } from '../../services/locale.service';\n\nexport class MrAdvancedSearchLayoutDS extends LayoutDataSource {\n protected router: Router;\n\n protected configuration: ConfigurationService;\n\n protected communication: CommunicationService;\n\n protected mainState: MainStateService;\n\n protected localeService: MrLocaleService;\n\n protected routeData: Data;\n\n protected initialState = {};\n\n public pageConfig;\n\n public form: MrFormModel;\n\n onInit(payload) {\n this.router = payload.router;\n this.configuration = payload.configuration;\n this.communication = payload.communication;\n this.mainState = payload.mainState;\n this.routeData = payload.routeData;\n this.localeService = payload.localeService;\n this.pageConfig = this.configuration.get(this.routeData.configId);\n\n // add translations\n this.addTranslations(this.pageConfig);\n\n let optionsReq$: Observable<unknown> = of(true);\n if (this.pageConfig.hasDynamicOptions) {\n const dynamicReq$ = this.communication.request$('advancedSearchOptions', {\n onError: (err) => {\n console.warn('Request error', err);\n }\n });\n optionsReq$ = dynamicReq$.pipe(\n tap(this.handleOptionsRequest)\n );\n }\n\n optionsReq$.subscribe({\n complete: () => {\n // init form\n this.form = new MrFormModel();\n // form init\n this.form.init(this.pageConfig.formConfig);\n // set initial state\n this.initialState = cloneDeep(this.form.getState());\n\n this.one('mr-form-wrapper-accordion').update({\n form: this.form\n });\n }\n });\n\n // update head title\n this.updateHeadTitle();\n }\n\n protected updateHeadTitle() {\n const appName = this.configuration.get('name');\n const pageTitle = this.pageConfig.title;\n this.mainState.update('headTitle', [appName, _t(pageTitle)].join(' > '));\n }\n\n onSubmit({ state }) {\n if (!isEmpty(state)) {\n const { resultsUrl } = this.pageConfig;\n let baseUrl = resultsUrl;\n if (typeof resultsUrl !== 'string') {\n const locale = this.localeService.getLocale();\n baseUrl = resultsUrl[locale];\n }\n const params = Object.keys(state)\n .filter((key) => !(state[key].disabled || isEmpty(state[key].value)))\n .map((key) => ({\n key,\n value: Array.isArray(state[key].value)\n ? state[key].value.join(',')\n : state[key].value\n }))\n .map(({ key, value }) => `${key}=${encodeURIComponent(value)}`);\n const url = `${baseUrl}?${params.join('&')}`;\n window.open(url, '_blank');\n }\n }\n\n onReset() {\n Object.keys(this.initialState).forEach((key) => {\n const inputState = cloneDeep(this.initialState[key]);\n this.form.getInput(key).setState(inputState);\n });\n }\n\n protected handleOptionsRequest = (response) => {\n const { formConfig } = this.pageConfig;\n Object.keys(response).forEach((key) => {\n formConfig.sections.forEach(({ inputs }) => {\n inputs.forEach((input) => {\n if (input.id === key) {\n input.data = {\n ...input.data,\n ...response[key]\n };\n }\n });\n });\n });\n };\n\n protected addTranslations(pageConfig) {\n const { formConfig } = pageConfig;\n // page title\n pageConfig.title = _t(pageConfig.title);\n // submit\n if (formConfig.submitButton) {\n formConfig.submitButton.label = _t(formConfig.submitButton.label);\n }\n // reset\n if (formConfig.resetButton) {\n formConfig.resetButton.label = _t(formConfig.resetButton.label);\n }\n // groups\n formConfig.groups.forEach((group) => {\n if (group.options?.label) {\n group.options.label = _t(group.options.label);\n }\n });\n // sections\n formConfig.sections.forEach((section) => {\n if (section.title) {\n section.title = _t(section.title);\n }\n if (section.description) {\n section.description = _t(section.description);\n }\n if (section.info) {\n section.info = _t(section.info);\n }\n section.inputs.forEach((input) => {\n if (input.data.label) {\n input.data.label = _t(input.data.label);\n }\n\n if (input.data.legend) {\n input.data.legend = _t(input.data.legend);\n }\n\n // input text / typeahead\n if (input.type === 'text' || input.type === 'typeahead') {\n if (input.data.placeholder) {\n input.data.placeholder = _t(input.data.placeholder);\n }\n }\n // input checkbox\n if (input.type === 'checkbox') {\n input.data.checkboxes.forEach((checkbox) => {\n checkbox.label = _t(checkbox.label);\n });\n }\n // input select\n if (input.type === 'select') {\n input.data.options.forEach((option) => {\n option.label = _t(option.label);\n });\n }\n\n // info tooltip\n if (input.info && input.data.label && ['text', 'select', 'typeahead'].includes(input.type)) {\n const inputData = input.data as InputTextData | InputSelectData;\n if (/n7-icon/.test(input.data.label)) return;\n (input.data as InputTextData | InputSelectData).label = [\n `<span>${inputData.label}</span>`,\n `<span class=\"mr-input-info n7-icon n7-icon-info-circle\" alt=\"${_t(input.info)}\"></span>`\n ].join('');\n }\n if (input.info && input.data.legend && input.type === 'checkbox') {\n const inputData = input.data as InputCheckboxData;\n if (/n7-icon/.test(input.data.legend)) return;\n (input.data as InputCheckboxData).legend = [\n `<span>${inputData.legend}</span>`,\n `<span class=\"mr-input-info n7-icon n7-icon-info-circle\" alt=\"${_t(input.info)}\"></span>`\n ].join('');\n }\n });\n });\n }\n}\n","import { EventHandler } from '@net7/core';\nimport { Subject } from 'rxjs';\nimport { MrAdvancedSearchLayoutDS } from './advanced-search-layout.ds';\n\nexport class MrAdvancedSearchLayoutEH extends EventHandler {\n dataSource: MrAdvancedSearchLayoutDS;\n\n protected destroy$: Subject<void> = new Subject();\n\n public listen() {\n this.innerEvents$.subscribe(({ type, payload }) => {\n switch (type) {\n case 'mr-advanced-search-layout.init':\n this.dataSource.onInit(payload);\n // init hook\n this.onInit();\n // scroll top\n window.scrollTo(0, 0);\n break;\n\n case 'mr-advanced-search-layout.destroy':\n this.destroy$.next();\n break;\n\n default:\n console.warn('unhandled inner event of type', type);\n break;\n }\n });\n\n this.outerEvents$.subscribe(({ type, payload }) => {\n switch (type) {\n case 'mr-form-wrapper-accordion.submit':\n this.dataSource.onSubmit(payload);\n break;\n case 'mr-form-wrapper-accordion.reset':\n this.dataSource.onReset();\n break;\n\n default:\n console.warn('unhandled inner event of type', type);\n break;\n }\n });\n }\n\n /**\n * @example\n * protected onInit() {\n * this.dataSource.form.changed$.subscribe(({ id, state }) => {\n * console.log('changed$', { id, state });\n * });\n * }\n */\n protected onInit() {\n // to be extended on project\n }\n}\n","import { MrAdvancedSearchLayoutDS } from './advanced-search-layout.ds';\nimport { MrAdvancedSearchLayoutEH } from './advanced-search-layout.eh';\nimport * as DS from '../../data-sources';\nimport * as EH from '../../event-handlers';\n\nexport const MrAdvancedSearchLayoutConfig = {\n layoutId: 'mr-advanced-search-layout',\n widgets: [{\n id: 'mr-form-wrapper-accordion'\n }],\n layoutDS: MrAdvancedSearchLayoutDS,\n layoutEH: MrAdvancedSearchLayoutEH,\n widgetsDataSources: DS,\n widgetsEventHandlers: EH,\n layoutOptions: {}\n};\n","/**\n * MrInputTypeaheadComponent\n *\n * A text input with an inline autocomplete dropdown. Supports two modes:\n *\n * 1. **Static (local) filtering** — provide a fixed list of strings via `data.options`.\n * No API call is made; suggestions are filtered client-side on every keystroke.\n *\n * ```ts\n * {\n * id: 'my-field',\n * type: 'typeahead',\n * data: {\n * id: 'my-field',\n * label: 'My Field',\n * options: ['Apple', 'Banana', 'Cherry'],\n * }\n * }\n * ```\n *\n * 2. **Dynamic (API) autocomplete** — omit `data.options` and provide\n * `data.communicationKey` instead. The component calls\n * `CommunicationService.request$(communicationKey, { queryParams: { q } })`\n * after a 200 ms debounce. The endpoint must return `string[]`.\n *\n * ```ts\n * {\n * id: 'my-field',\n * type: 'typeahead',\n * data: {\n * id: 'my-field',\n * label: 'My Field',\n * communicationKey: 'myAutocompleteEndpoint',\n * }\n * }\n * ```\n *\n * Suggestions appear after 2 characters are typed. Tab completes with the first\n * suggestion. Clicking outside dismisses the dropdown.\n */\nimport {\n Component, ElementRef, HostListener, Input, OnDestroy\n} from '@angular/core';\nimport { CommunicationService } from '@net7/boilerplate-common';\n\n@Component({\n selector: 'mr-input-typeahead',\n templateUrl: './input-typeahead.html',\n})\nexport class MrInputTypeaheadComponent implements OnDestroy {\n @Input() data: any;\n\n @Input() emit: (type: string, payload?: any) => void;\n\n suggestions: string[] = [];\n\n isLoading = false;\n\n currentQuery = '';\n\n private timer: any;\n\n constructor(\n private communication: CommunicationService,\n private el: ElementRef,\n ) {}\n\n /** Wraps the form emit to intercept change events for autocomplete fetching */\n localEmit = (type: string, payload?: any) => {\n this.emit(type, payload);\n if (type === 'change') {\n this.onValueChange(payload?.value || '');\n }\n };\n\n /** Wraps the first occurrence of `query` in `text` with a <strong> tag */\n highlight(text: string, query: string): string {\n if (!query) return text;\n const idx = text.toLowerCase().indexOf(query.toLowerCase());\n if (idx === -1) return text;\n return (\n text.slice(0, idx) +\n '<strong>' + text.slice(idx, idx + query.length) + '</strong>' +\n text.slice(idx + query.length)\n );\n }\n\n /** Completes with the first suggestion on Tab */\n onKeydown(event: KeyboardEvent) {\n if (event.key === 'Tab' && this.suggestions.length > 0) {\n event.preventDefault();\n this.onSelect(this.suggestions[0]);\n }\n }\n\n /** Selects a suggestion, updates the input and form state */\n onSelect(suggestion: string, event?: MouseEvent) {\n if (event) event.preventDefault();\n this.emit('change', { value: suggestion });\n this.suggestions = [];\n this.isLoading = false;\n const input: HTMLInputElement = this.el.nativeElement.querySelector('input');\n if (input) input.value = suggestion;\n }\n\n @HostListener('document:click', ['$event'])\n onDocumentClick(event: Event) {\n if (!this.el.nativeElement.contains(event.target)) {\n this.suggestions = [];\n this.isLoading = false;\n }\n }\n\n ngOnDestroy() {\n clearTimeout(this.timer);\n }\n\n private onValueChange(value: string) {\n clearTimeout(this.timer);\n this.currentQuery = value;\n if (!value || value.length < 2) {\n this.suggestions = [];\n this.isLoading = false;\n return;\n }\n // Static options: filter locally, no API call needed\n if (Array.isArray(this.data?.options)) {\n const q = value.toLowerCase();\n this.suggestions = (this.data.options as string[])\n .filter((o) => o.toLowerCase().includes(q))\n .slice(0, 20);\n return;\n }\n this.isLoading = true;\n this.timer = setTimeout(() => {\n this.communication.request$(this.data.communicationKey, {\n queryParams: { q: value },\n onError: () => {\n this.isLoading = false;\n this.suggestions = [];\n }\n }).subscribe((res: string[]) => {\n this.isLoading = false;\n this.suggestions = res || [];\n });\n }, 200);\n }\n}\n","<div class=\"mr-input-typeahead\" (keydown)=\"onKeydown($event)\">\n <n7-input-text\n [data]=\"data\"\n [emit]=\"localEmit\">\n </n7-input-text>\n <ul *ngIf=\"suggestions.length > 0\" class=\"mr-input-typeahead__dropdown\">\n <li *ngFor=\"let s of suggestions\"\n class=\"mr-input-typeahead__option\"\n (mousedown)=\"onSelect(s, $event)\">\n <span [innerHTML]=\"highlight(s, currentQuery)\"></span>\n </li>\n </ul>\n</div>\n","import {\n Component, ContentChild, Input, OnInit, TemplateRef\n} from '@angular/core';\nimport { _t } from '@net7/core';\nimport { MrFormConfigGroup, MrFormConfigSection } from '../../interfaces/form.interface';\nimport { MrFormModel } from '../../models/form.model';\n\n@Component({\n selector: 'mr-form',\n templateUrl: './form.html',\n})\nexport class MrFormComponent implements OnInit {\n @Input() form: MrFormModel;\n\n @Input() group?: MrFormConfigGroup;\n\n @ContentChild(TemplateRef)\n public templateRef: TemplateRef<any>;\n\n public sections: MrFormConfigSection[];\n\n ngOnInit() {\n if (this.group) {\n this.sections = this.form.config.sections\n .filter(({ id }) => this.group.sections.includes(id));\n } else {\n this.sections = this.form.config.sections;\n }\n\n // translations\n this.sections = this.sections.map((section) => ({\n ...section,\n title: _t(section.title),\n description: _t(section.description),\n info: _t(section.info)\n }));\n }\n}\n","<div *ngIf=\"form.loaded$ | async\" class=\"mr-form {{ group?.classes || '' }}\">\n <div *ngFor=\"let section of sections\" class=\"mr-form__section {{ section.classes || '' }}\" \n [ngClass]=\"{ 'mr-form__section-advanced' : section.advancedSection }\" >\n \n <div class=\"mr-form__section-header\">\n <h3 *ngIf=\"section.title\" class=\"mr-form__section-title\">\n {{ section.title }}\n <span *ngIf=\"section.info\" class=\"mr-input-info n7-icon n7-icon-info-circle\" [attr.alt]=\"section.info\"></span>\n </h3>\n <p *ngIf=\"section.description\" class=\"mr-form__section-description\">{{ section.description }}</p>\n </div>\n \n <div class=\"mr-form__section-content\">\n <div *ngFor=\"let input of section.inputs\" class=\"mr-form__element {{ input.options?.classes || '' }}\">\n <ng-container [ngSwitch]=\"input.type\">\n\n <!-- INPUT TEXT -->\n <n7-input-text *ngSwitchCase=\"'text'\" \n [data]=\"form.inputs[input.id].ds.out$ | async\"\n [emit]=\"form.inputs[input.id].emit\"></n7-input-text>\n\n <!-- INPUT CHECKBOX -->\n <n7-input-checkbox *ngSwitchCase=\"'checkbox'\" \n [data]=\"form.inputs[input.id].ds.out$ | async\"\n [emit]=\"form.inputs[input.id].emit\"></n7-input-checkbox>\n\n <!-- INPUT SELECT -->\n <n7-input-select *ngSwitchCase=\"'select'\"\n [data]=\"form.inputs[input.id].ds.out$ | async\"\n [emit]=\"form.inputs[input.id].emit\"></n7-input-select>\n\n <!-- INPUT TYPEAHEAD -->\n <mr-input-typeahead *ngSwitchCase=\"'typeahead'\"\n [data]=\"form.inputs[input.id].ds.out$ | async\"\n [emit]=\"form.inputs[input.id].emit\"></mr-input-typeahead>\n\n <!-- DEFAULT (external template) -->\n <ng-container *ngSwitchDefault>\n <ng-template *ngTemplateOutlet=\"\n templateRef; \n context: { \n type: input.type, \n input: form.inputs[input.id] \n }\"></ng-template>\n </ng-container>\n\n </ng-container>\n </div>\n </div>\n </div>\n</div>","import {\n Component, Input, OnInit, OnDestroy\n} from '@angular/core';\nimport { MrFormModel } from '../../models/form.model';\n\nexport type MrFormWrapperAccordionData = {\n form: MrFormModel;\n}\n\n@Component({\n selector: 'mr-form-wrapper-accordion',\n templateUrl: './form-wrapper-accordion.html',\n})\nexport class MrFormWrapperAccordionComponent implements OnInit, OnDestroy {\n @Input() data: MrFormWrapperAccordionData;\n\n @Input() emit: (type: string, payload?: any) => void;\n\n ngOnInit() {\n this.fakeEmit('init');\n }\n\n ngOnDestroy() {\n this.fakeEmit('destroy');\n }\n\n fakeEmit = (type, payload?) => {\n if (!this.emit) {\n return;\n }\n this.emit(type, payload);\n };\n\n onReset() {\n this.fakeEmit('reset');\n }\n\n onSubmit() {\n this.fakeEmit('submit');\n }\n}\n","<div *ngIf=\"data\" class=\"mr-form-wrapper-accordion\">\n <ng-container *ngFor=\"let group of data.form.config.groups; index as $i\">\n <div *ngIf=\"group.options && (group.options.showHeader !== false)\" \n class=\"mr-form-wrapper-accordion__header\">\n <n7-facet-header\n [data]=\"group.options\"\n [emit]=\"fakeEmit\"\n ></n7-facet-header>\n </div>\n\n <div *ngIf=\"group.options.isOpen\" class=\"mr-form-wrapper-accordion__content\" [attr.id]=\"group.id\">\n <mr-form [form]=\"data.form\" [group]=\"group\">\n <!-- CUSTOM INPUTS -->\n <!-- <ng-template let-type=\"type\" let-input=\"input\">\n <ng-container [ngSwitch]=\"type\">\n \n <n7-tag *ngSwitchCase=\"'tag'\" \n [data]=\"input.ds.out$ | async\"\n [emit]=\"input.emit\"></n7-tag>\n \n </ng-container>\n </ng-template> -->\n </mr-form>\n </div>\n </ng-container>\n \n <div class=\"mr-form-wrapper-accordion__actions\">\n <a *ngIf=\"data.form.config.resetButton\" \n class=\"n7-btn n7-btn-xl n7-btn-danger\" \n (click)=\"onReset()\">{{ data.form.config.resetButton.label }}</a>\n <a *ngIf=\"data.form.config.submitButton\" \n class=\"n7-btn n7-btn-cta n7-btn-xl n7-btn-info\" \n (click)=\"onSubmit()\">{{ data.form.config.submitButton.label }}</a>\n </div>\n</div>","import { Component, OnInit, OnDestroy } from '@angular/core';\nimport { ActivatedRoute, Data, Router } from '@angular/router';\nimport {\n AbstractLayout,\n LayoutsConfigurationService,\n MainStateService,\n ConfigurationService,\n CommunicationService\n} from '@net7/boilerplate-common';\nimport { MrLocaleService } from '../../services/locale.service';\nimport { MrAdvancedSearchLayoutConfig as config } from './advanced-search-layout.config';\n\n@Component({\n selector: 'mr-advanced-search-layout',\n templateUrl: './advanced-search-layout.html',\n})\nexport class MrAdvancedSearchLayoutComponent extends AbstractLayout implements OnInit, OnDestroy {\n private routeData: Data;\n\n constructor(\n private router: Router,\n private activatedRoute: ActivatedRoute,\n private mainState: MainStateService,\n private configuration: ConfigurationService,\n private communication: CommunicationService,\n public localeService: MrLocaleService,\n layoutsConfiguration: LayoutsConfigurationService,\n ) {\n super(layoutsConfiguration.get('MrAdvancedSearchLayoutConfig') || config);\n }\n\n protected initPayload() {\n return {\n routeData: this.routeData,\n configuration: this.configuration,\n communication: this.communication,\n mainState: this.mainState,\n router: this.router,\n activatedRoute: this.activatedRoute,\n localeService: this.localeService,\n options: this.config.options || {},\n };\n }\n\n ngOnInit() {\n this.activatedRoute.data.subscribe((routeData) => {\n this.routeData = routeData;\n this.onInit();\n });\n }\n\n ngOnDestroy() {\n this.onDestroy();\n }\n}\n","<div *ngIf=\"lb.dataSource\" class=\"mr-advanced-search mr-layout\">\n <div class=\"mr-layout__maxwidth mr-side-margin\">\n\n <n7-inner-title [data]=\"{\n title: {\n main: {\n text: lb.dataSource.pageConfig.title\n }\n }\n }\"></n7-inner-title>\n\n <mr-form-wrapper-accordion \n [data]=\"lb.widgets['mr-form-wrapper-accordion'].ds.out$ | async\"\n [emit]=\"lb.widgets['mr-form-wrapper-accordion'].emit\">\n </mr-form-wrapper-accordion>\n </div>\n</div>","import { LayoutDataSource, _t } from '@net7/core';\nimport { Data, Router } from '@angular/router';\nimport { isEmpty } from 'lodash';\nimport { ConfigurationService, CommunicationService, MainStateService } from '@net7/boilerplate-common';\nimport { MrLayoutStateService, LayoutState } from '../../services/layout-state.service';\n\nexport class MrHomeLayoutDS extends LayoutDataSource {\n protected router: Router;\n\n private configuration: ConfigurationService;\n\n private communication: CommunicationService;\n\n private mainState: MainStateService;\n\n private layoutState: MrLayoutStateService;\n\n private routeData: Data;\n\n private pageConfig;\n\n public errorTitle = _t('global#layout_error_title');\n\n public errorDescription = _t('global#layout_error_description');\n\n onInit(payload) {\n this.router = payload.router;\n this.configuration = payload.configuration;\n this.communication = payload.communication;\n this.mainState = payload.mainState;\n this.layoutState = payload.layoutState;\n this.routeData = payload.routeData;\n this.pageConfig = this.configuration.get(this.routeData.configId) || {};\n\n this.doRequest();\n\n // update head title\n this.updateHeadTitle();\n }\n\n doRequest() {\n const { sections } = this.pageConfig;\n const { configId, locale } = this.routeData;\n if (!isEmpty(sections)) {\n this.layoutState.set('content', LayoutState.LOADING);\n this.communication.request$('home', {\n method: 'POST',\n params: sections.map(({ id }) => id),\n urlParams: locale ? `?locale=${locale}` : '',\n onError: (err) => {\n console.warn(`Error loading ${configId} sections`, err.message);\n this.layoutState.set('content', LayoutState.ERROR);\n }\n }).subscribe((response) => {\n this.layoutState.set('content', LayoutState.SUCCESS);\n this.initSections(response);\n });\n } else {\n console.warn(`There are no sections configured for ${configId} layout`);\n }\n }\n\n initSections(response) {\n const { sections } = this.pageConfig;\n\n if (sections) {\n sections.forEach(({ id }) => {\n const widgetDataSource = this.getWidgetDataSource(id);\n const responseData = response[id];\n // set id\n widgetDataSource.id = id;\n // update data\n if (responseData) {\n this.one(id).update(responseData);\n }\n });\n }\n }\n\n private updateHeadTitle() {\n const appName = this.configuration.get('name');\n const pageTitle = this.pageConfig.title;\n this.mainState.update('headTitle', [appName, pageTitle].join(' > '));\n }\n\n searchRedirect(type, payload) {\n const configId = type.split('.')[0];\n const { input } = this.pageConfig.sections.find((section) => section.id === configId).options;\n const { queryId } = input;\n const { additionalQueryParams } = input;\n const queryParams = {};\n queryParams[queryId] = payload.inputValue;\n if (additionalQueryParams) {\n Object.keys(additionalQueryParams).forEach((paramKey) => {\n queryParams[paramKey] = additionalQueryParams[paramKey];\n });\n }\n this.router.navigate([payload.route], { queryParams });\n }\n}\n","import { EventHandler } from '@net7/core';\n\nexport class MrHomeLayoutEH extends EventHandler {\n public listen() {\n this.innerEvents$.subscribe(({ type, payload }) => {\n switch (type) {\n case 'mr-home-layout.init':\n this.dataSource.onInit(payload);\n // scroll top\n window.scrollTo(0, 0);\n break;\n default:\n break;\n }\n });\n this.outerEvents$.subscribe(({ type, payload }) => {\n if (type.indexOf('hero-search-enter') !== -1) {\n this.dataSource.searchRedirect(type, payload);\n }\n });\n }\n}\n","import { MrHomeLayoutDS } from './home-layout.ds';\nimport { MrHomeLayoutEH } from './home-layout.eh';\nimport * as DS from '../../data-sources';\nimport * as EH from '../../event-handlers';\n\nexport const MrHomeLayoutConfig = {\n layoutId: 'mr-home-layout',\n widgets: [],\n layoutDS: MrHomeLayoutDS,\n layoutEH: MrHomeLayoutEH,\n widgetsDataSources: DS,\n widgetsEventHandlers: EH,\n options: {\n // TODO\n },\n};\n","import { CarouselData } from '@net7/components';\nimport { DataSource } from '@net7/core';\n\nexport class MrSliderDS extends DataSource {\n id: string;\n\n protected transform(data: any): CarouselData {\n const { slides } = data;\n return {\n slides,\n containerId: `carousel-${this.id}`,\n // classes: 'demo',\n libOptions: {\n count: 1,\n move: 1,\n // touch: true,\n // mode: 'align',\n buttons: true,\n dots: true,\n rewind: true,\n autoplay: 0,\n animation: 500,\n // responsive: {\n // 0: { count: 1.5, buttons: false },\n // 480: { count: 2.5, buttons: false },\n // 768: { count: 3, touch: false },\n // 1440: { count: 4, touch: false },\n // },\n },\n };\n }\n}\n","import { EventHandler } from '@net7/core';\n\nexport class MrSliderEH extends EventHandler {\n public listen() {\n // this.innerEvents$.subscribe(({ type, payload }) => {\n // switch (type) {\n // case `${this.dataSource.id}.<event-type>`:\n // // TODO\n // break;\n // default:\n // break;\n // }\n // });\n }\n}\n","import { EventHandler } from '@net7/core';\n\nexport class MrHeroEH extends EventHandler {\n inputPayload: '';\n\n public listen() {\n this.innerEvents$.subscribe(({ type, payload }) => {\n switch (type) {\n case `${this.dataSource.id}.change`:\n if (payload.inputPayload && payload.inputPayload === 'input') {\n this.dataSource.currentInputValue = payload.value;\n }\n break;\n case `${this.dataSource.id}.click`:\n if (payload.payloadId === 'hero-search' && this.dataSource.currentInputValue) {\n this.emitOuter('hero-search-enter', { inputValue: this.dataSource.currentInputValue, route: payload.route });\n }\n break;\n default:\n break;\n }\n });\n }\n}\n","import { Component, OnInit, OnDestroy } from '@angular/core';\nimport { ActivatedRoute, Data, Router } from '@angular/router';\nimport {\n AbstractLayout,\n CommunicationService,\n LayoutsConfigurationService,\n ConfigurationService,\n MainStateService\n} from '@net7/boilerplate-common';\nimport { MrLayoutStateService } from '../../services/layout-state.service';\nimport { MrHomeLayoutConfig as config } from './home-layout.config';\nimport { MrSliderDS } from '../../data-sources/slider.ds';\nimport { MrCollectionDS } from '../../data-sources/collection.ds';\nimport { MrHeroDS } from '../../data-sources/hero.ds';\nimport { MrSliderEH } from '../../event-handlers/slider.eh';\nimport { MrCollectionEH } from '../../event-handlers/collection.eh';\nimport { MrHeroEH } from '../../event-handlers/hero.eh';\nimport { MrContentDS } from '../../data-sources/content.ds';\nimport { MrLocaleService } from '../../services/locale.service';\n\nconst DATASOURCE_MAP = {\n slider: MrSliderDS,\n collection: MrCollectionDS,\n hero: MrHeroDS,\n content: MrContentDS,\n};\n\nconst EVENTHANDLER_MAP = {\n slider: MrSliderEH,\n collection: MrCollectionEH,\n hero: MrHeroEH,\n};\n\n@Component({\n selector: 'mr-home-layout',\n templateUrl: './home-layout.html',\n})\nexport class MrHomeLayoutComponent extends AbstractLayout implements OnInit, OnDestroy {\n private routeData: Data;\n\n constructor(\n layoutsConfiguration: LayoutsConfigurationService,\n private router: Router,\n private activatedRoute: ActivatedRoute,\n private configuration: ConfigurationService,\n private communication: CommunicationService,\n private mainState: MainStateService,\n public layoutState: MrLayoutStateService,\n private localeService: MrLocaleService,\n ) {\n super(layoutsConfiguration.get('MrHomeLayoutConfig') || config);\n }\n\n protected initPayload() {\n return {\n router: this.router,\n routeData: this.routeData,\n mainState: this.mainState,\n configuration: this.configuration,\n communication: this.communication,\n layoutState: this.layoutState,\n options: this.config.options || {}\n };\n }\n\n ngOnInit() {\n this.activatedRoute.data.subscribe((routeData) => {\n this.routeData = routeData;\n this.layoutState.add('content');\n this.loadWidgets();\n this.onInit();\n });\n }\n\n ngOnDestroy() {\n this.onDestroy();\n }\n\n loadWidgets() {\n const { configId } = this.routeData;\n const homeConfig = this.configuration.get(configId) || {};\n const { sections } = homeConfig;\n\n this.widgets = [];\n if (sections) {\n sections.forEach(({ id, type, options }) => {\n const widgetOptions = options || {};\n widgetOptions.localeService = this.localeService;\n this.widgets.push({\n id,\n options: widgetOptions,\n dataSource: DATASOURCE_MAP[type],\n eventHandler: EVENTHANDLER_MAP[type]\n });\n });\n }\n }\n}\n","<div class=\"mr-home mr-layout\"\n *ngIf=\"lb.dataSource\"\n [ngClass]=\"{\n 'is-loading': ( layoutState.get$('content') | async ) == 'LOADING',\n 'is-error': ( layoutState.get$('content') | async ) == 'ERROR'\n }\">\n <!-- HOME CONTENT -->\n <ng-container [ngSwitch]=\"layoutState.get$('content') | async\">\n <!-- loading -->\n <ng-container *ngSwitchCase=\"'LOADING'\">\n <div class=\"mr-layout__loader\">\n <n7-loader></n7-loader>\n </div>\n </ng-container>\n\n <!-- error -->\n <ng-container *ngSwitchCase=\"'ERROR'\">\n <div class=\"mr-layout__error\">\n <h2>{{ lb.dataSource.errorTitle }}</h2>\n <p>{{ lb.dataSource.errorDescription }}</p>\n </div>\n </ng-container>\n\n <!-- success -->\n <ng-container *ngSwitchCase=\"'SUCCESS'\">\n <section *ngFor=\"let section of lb.dataSource.pageConfig.sections\" class=\"{{ 'mr-layout__' + section.type }}\" id=\"{{ section.id }}\">\n <ng-container [ngSwitch]=\"section.type\">\n \n <!-- SLIDER -->\n <ng-container *ngSwitchCase=\"'slider'\">\n <n7-carousel\n [data]=\"lb.widgets[section.id].ds.out$ | async\"\n [emit]=\"lb.widgets[section.id].emit\">\n </n7-carousel> \n </ng-container>\n \n <!-- COLLECTION -->\n <ng-container *ngSwitchCase=\"'collection'\">\n <div class=\"mr-layout__maxwidth mr-items-preview\">\n <n7-inner-title \n [data]=\"(lb.widgets[section.id].ds.out$ | async)?.header\"\n [emit]=\"lb.widgets[section.id].emit\">\n </n7-inner-title>\n <div class=\"{{ section.grid ? 'n7-grid-' + section.grid : '' }}\">\n <n7-item-preview\n *ngFor=\"let item of (lb.widgets[section.id].ds.out$ | async)?.items\"\n [data]=\"item\"\n [emit]=\"lb.widgets[section.id].emit\">\n </n7-item-preview>\n </div>\n </div>\n </ng-container>\n \n <!-- HERO -->\n <ng-container *ngSwitchCase=\"'hero'\">\n <n7-hero \n [data]=\"lb.widgets[section.id].ds.out$ | async\"\n [emit]=\"lb.widgets[section.id].emit\">\n </n7-hero> \n </ng-container>\n \n <!-- CONTENT -->\n <ng-container *ngSwitchCase=\"'content'\">\n <div [innerHTML]=\"lb.widgets[section.id].ds.out$ | async\"></div>\n </ng-container>\n \n </ng-container>\n </section>\n </ng-container>\n\n </ng-container>\n</div>\n","import { Data } from '@angular/router';\nimport { Observable } from 'rxjs';\nimport { LayoutDataSource, _t } from '@net7/core';\nimport {\n ConfigurationService,\n CommunicationService,\n MainStateService\n} from '@net7/boilerplate-common';\nimport { MrLocaleService } from '../../services/locale.service';\n\nexport class MrItineraryLayoutDS extends LayoutDataSource {\n private configuration: ConfigurationService;\n\n private communication: CommunicationService;\n\n private mainState: MainStateService;\n\n private routeData: Data;\n\n private pageConfig: any;\n\n private localeService: MrLocaleService;\n\n public content: string | null;\n\n public title: string | null;\n\n public errorTitle = _t('global#layout_error_title');\n\n public errorDescription = _t('global#layout_error_description');\n\n onInit(payload) {\n this.configuration = payload.configuration;\n this.communication = payload.communication;\n this.localeService = payload.localeService;\n this.mainState = payload.mainState;\n this.routeData = payload.routeData;\n this.pageConfig = this.configuration.get(this.routeData.configId);\n\n // add translations\n this.pageConfig.sections = this.pageConfig.sections.map((section) => ({\n ...section,\n title: _t(section.title)\n }));\n }\n\n pageRequest$(id, onError: (err: any) => void): Observable<any> {\n const { locale } = this.routeData;\n return this.communication.request$('itinerary', {\n onError,\n method: 'GET',\n urlParams: locale ? `${id}?locale=${locale}` : id\n });\n }\n\n handleResponse(response) {\n this.updateTitle(response);\n this.updateContent(response);\n this.updateMetadata(response);\n this.initSections(response);\n this.setLocaleResourceConfig(response);\n this.updateHeadTitle(response);\n }\n\n private updateTitle({ title }) {\n this.title = title;\n }\n\n private updateContent({ content }) {\n this.content = content;\n }\n\n private updateMetadata(response) {\n this.one('mr-static-metadata').update(response);\n }\n\n private initSections(response) {\n const { sections } = this.pageConfig;\n sections.forEach(({ id }) => {\n const widgetDataSource = this.getWidgetDataSource(id);\n if (!widgetDataSource) return;\n const responseSection = response.sections[id];\n // set id\n widgetDataSource.id = id;\n // update data\n if (responseSection) {\n this.one(id).update(responseSection);\n }\n });\n }\n\n private updateHeadTitle({ title: itineraryTitle }) {\n const appName = this.configuration.get('name');\n const pageTitle = this.pageConfig.title;\n this.mainState.update('headTitle', [appName, _t(pageTitle), itineraryTitle].join(' > '));\n }\n\n // set resource locale config\n // used by language switcher\n private setLocaleResourceConfig(response) {\n if (response?.locale) {\n this.localeService.setResourceConfig(response.locale);\n }\n }\n}\n","import { EventHandler } from '@net7/core';\nimport { ActivatedRoute, ParamMap, Router } from '@angular/router';\nimport { Subject } from 'rxjs';\nimport {\n takeUntil, switchMap, map, tap\n} from 'rxjs/operators';\nimport { MrLayoutStateService, LayoutState } from '../../services/layout-state.service';\nimport { MrResourceModalService } from '../../services/resource-modal.service';\nimport { MrItineraryLayoutDS } from './itinerary-layout.ds';\n\nexport class MrItineraryLayoutEH extends EventHandler {\n public dataSource: MrItineraryLayoutDS;\n\n private route: ActivatedRoute;\n\n private router: Router;\n\n private layoutState: MrLayoutStateService;\n\n private modalService: MrResourceModalService;\n\n private destroy$: Subject<void> = new Subject();\n\n public listen() {\n this.innerEvents$.subscribe(({ type, payload }) => {\n switch (type) {\n case 'mr-itinerary-layout.init':\n this.route = payload.route;\n this.router = payload.router;\n this.layoutState = payload.layoutState;\n this.modalService = payload.modalService;\n this.dataSource.onInit(payload);\n this.listenRoute();\n // scroll top\n window.scrollTo(0, 0);\n break;\n case 'mr-resource-layout.destroy':\n this.destroy$.next();\n break;\n default:\n console.warn('unhandled inner event of type', type);\n break;\n }\n });\n\n this.outerEvents$.subscribe(({ type, payload }) => {\n if (type.indexOf('openresourcemodal') !== -1) {\n const { id, type: resourceType } = payload;\n this.modalService.open(id, resourceType);\n }\n });\n }\n\n private listenRoute() {\n this.route.paramMap.pipe(\n takeUntil(this.destroy$),\n tap(() => {\n this.layoutState.set('content', LayoutState.LOADING);\n }),\n map((params: ParamMap) => params.get('id')),\n switchMap((id) => this.dataSource.pageRequest$(id, (err) => {\n if (err.status === 404) {\n // getting not found path\n const { config } = this.router;\n const route404 = config.find(({ data }) => data?.id === 'page-404');\n const path404 = route404?.path || 'page-404';\n this.router.navigate([path404]);\n }\n console.warn(`Error loading resource layout for ${id}`, err.message);\n this.layoutState.set('content', LayoutState.ERROR);\n }))\n ).subscribe((response) => {\n this.layoutState.set('content', LayoutState.SUCCESS);\n this.dataSource.handleResponse(response);\n // scroll top\n window.scrollTo(0, 0);\n });\n }\n}\n","import { MrItineraryLayoutDS } from './itinerary-layout.ds';\nimport { MrItineraryLayoutEH } from './itinerary-layout.eh';\nimport * as DS from '../../data-sources';\nimport * as EH from '../../event-handlers';\n\nexport const MrItineraryLayoutConfig = {\n layoutId: 'mr-itinerary-layout',\n widgets: [\n { id: 'mr-static-metadata' }\n ],\n layoutDS: MrItineraryLayoutDS,\n layoutEH: MrItineraryLayoutEH,\n widgetsDataSources: DS,\n widgetsEventHandlers: EH,\n options: {\n // TODO\n },\n};\n","//---------------------------\n// ReadMore.ts\n//---------------------------\n\nimport {\n Component, Input, AfterViewChecked, ViewChild, ElementRef\n} from '@angular/core';\nimport { _t } from '@net7/core';\n\nexport type ReadMoreData = {\n height: number;\n labels: {\n more: string;\n less: string;\n };\n};\n\nconst HEIGHT_MARGIN = 50;\n\n@Component({\n selector: 'mr-read-more',\n templateUrl: './read-more.html',\n})\nexport class ReadMoreComponent implements AfterViewChecked {\n @Input() data: ReadMoreData;\n\n // Root div\n @ViewChild('root', { read: ElementRef }) root: ElementRef;\n\n collapsed = true;\n\n hasReadmore = false;\n\n wrapperHeight: number;\n\n clientHeight: number;\n\n _loaded = false;\n\n /**\n * Determine if the view is taller than the given height limit,\n * if it is, render the \"Read-more\" button.\n */\n ngAfterViewChecked(): void {\n if (this._loaded || !this.data) return;\n if (this.root && this.root.nativeElement.clientHeight > 0) {\n this._loaded = true;\n this.clientHeight = (this.root.nativeElement as HTMLElement).clientHeight;\n const { height, labels } = this.data;\n\n // translate labels\n Object.keys(labels).forEach((key) => {\n this.data.labels[key] = _t(labels[key]);\n });\n\n if (this.clientHeight > (height + HEIGHT_MARGIN)) {\n setTimeout(() => {\n this.hasReadmore = true;\n this.updateWrapperHeight();\n });\n }\n }\n }\n\n handleToggle() {\n this.collapsed = !this.collapsed;\n this.updateWrapperHeight();\n }\n\n updateWrapperHeight() {\n this.wrapperHeight = this.collapsed\n ? this.data.height\n : this.clientHeight;\n }\n}\n","<div #root class=\"mr-read-more\"\n [ngClass]=\"{\n 'is-collapsed': !!(hasReadmore && collapsed),\n 'is-expanded': !!(hasReadmore && !collapsed)\n }\">\n <div class=\"mr-read-more__content\"\n [ngStyle]=\"{\n height: hasReadmore ? wrapperHeight + 'px' : false\n }\">\n <!-- Child component -->\n <ng-content class=\"content\"></ng-content>\n </div>\n <div *ngIf=\"hasReadmore\" class=\"mr-read-more__btn\" (click)=\"handleToggle()\">\n <span class=\"n7-icon-{{ collapsed ? 'plus' : 'minus' }}\"></span>\n <span class=\"mr-read-more__btn-text\">{{ collapsed ? data.labels.more : data.labels.less }}</span>\n </div>\n</div>\n","import { Component, Input } from '@angular/core';\n\nexport type GalleryItem = {\n id: string | number;\n thumbSrc: string;\n fullSrc: string;\n title: string;\n payload: any;\n index: number;\n};\n\nexport type GalleryData = {\n selected: null | GalleryItem;\n items: GalleryItem[];\n}\n\n@Component({\n selector: 'mr-gallery',\n templateUrl: './gallery.html',\n})\nexport class MrGalleryComponent {\n @Input() data: GalleryData;\n\n @Input() emit: (type: string, payload?: any) => void;\n\n @Input() grid: number | null;\n\n onClick(payload) {\n if (this.emit) {\n this.emit('click', payload);\n }\n }\n\n onClose() {\n if (this.emit) {\n this.emit('close');\n }\n }\n\n onChangeImg(rightImg) {\n this.emit('changeImg', rightImg);\n }\n}\n","<div *ngIf=\"data\" class=\"mr-gallery mr-wp-content\">\n <div class=\"mr-gallery__wrapper wp-block-gallery has-zoom\"> <!-- {{ grid ? 'columns-' + grid : '' }} -->\n <ul class=\"mr-gallery__items blocks-gallery-grid\">\n <li *ngFor=\"let item of data.items\" class=\"mr-gallery__item blocks-gallery-item\">\n <figure>\n <a (click)=\"onClick(item.payload)\" class=\"mr-gallery__link\">\n <img [src]=\"item.thumbSrc\" [alt]=\"item.title\" class=\"mr-gallery__image\">\n <figcaption class=\"timeline-gallery__description-text\" [innerHTML]=\"item.title\"></figcaption>\n </a>\n </figure>\n </li>\n </ul>\n </div>\n <div *ngIf=\"data.selected\" class=\"mr-modal mr-gallery-modal\">\n <div class=\"mr-modal__overlay\">\n <div class=\"mr-modal__window mr-gallery-modal__window\">\n <div class=\"mr-modal__header mr-gallery-modal__header\">\n <div class=\"mr-modal__close\">\n <a class=\"mr-modal__close-link\" (click)=\"onClose()\"><span class=\"n7-icon-close\"></span></a>\n </div>\n <div class=\"mr-modal__right\">\n <a class=\"mr-modal__arrow-link\" (click)=\"onChangeImg(true)\"><span class=\"n7-icon-angle-right\"></span></a>\n </div>\n <div class=\"mr-modal__left\">\n <a class=\"mr-modal__arrow-link\" (click)=\"onChangeImg(false)\"><span class=\"n7-icon-angle-left\"></span></a>\n </div>\n </div>\n <div class=\"mr-modal__content mr-gallery-modal__content\" (click)=\"onClose()\">\n <div class=\"mr-gallery__zoom-image-wrapper\">\n <img [src]=\"data.selected.fullSrc\" [alt]=\"data.selected.title\" class=\"mr-gallery__zoom-image\">\n <figcaption class=\"mr-gallery__zoom-figcaption\" [innerHTML]=\"data.selected.title\"></figcaption>\n </div>\n </div>\n </div>\n </div>\n </div>\n</div>","import { Component, OnInit, OnDestroy } from '@angular/core';\nimport { ActivatedRoute, Data, Router } from '@angular/router';\nimport {\n AbstractLayout,\n CommunicationService,\n LayoutsConfigurationService,\n ConfigurationService,\n MainStateService,\n} from '@net7/boilerplate-common';\nimport { MrLayoutStateService } from '../../services/layout-state.service';\nimport { MrResourceModalService } from '../../services/resource-modal.service';\nimport { MrItineraryLayoutConfig as config } from './itinerary-layout.config';\nimport {\n MrCollectionDS,\n MrGalleryDS,\n MrMetadataDS,\n} from '../../data-sources';\nimport {\n MrCollectionEH,\n MrGalleryEH\n} from '../../event-handlers';\nimport { MrLocaleService } from '../../services/locale.service';\n\nconst DATASOURCE_MAP = {\n collection: MrCollectionDS,\n metadata: MrMetadataDS,\n gallery: MrGalleryDS,\n};\n\nconst EVENTHANDLER_MAP = {\n collection: MrCollectionEH,\n gallery: MrGalleryEH,\n};\n\n@Component({\n selector: 'mr-itinerary-layout',\n templateUrl: './itinerary-layout.html',\n})\nexport class MrItineraryLayoutComponent extends AbstractLayout implements OnInit, OnDestroy {\n private routeData: Data;\n\n constructor(\n layoutsConfiguration: LayoutsConfigurationService,\n private activatedRoute: ActivatedRoute,\n private configuration: ConfigurationService,\n private communication: CommunicationService,\n private mainState: MainStateService,\n private route: ActivatedRoute,\n private router: Router,\n public layoutState: MrLayoutStateService,\n public modalService: MrResourceModalService,\n public localeService: MrLocaleService,\n ) {\n super(layoutsConfiguration.get('MrItineraryLayoutConfig') || config);\n }\n\n protected initPayload() {\n return {\n routeData: this.routeData,\n configuration: this.configuration,\n communication: this.communication,\n mainState: this.mainState,\n layoutState: this.layoutState,\n modalService: this.modalService,\n localeService: this.localeService,\n options: this.config.options || {},\n route: this.route,\n router: this.router\n };\n }\n\n ngOnInit() {\n this.activatedRoute.data.subscribe((routeData) => {\n this.layoutState.add('content');\n this.routeData = routeData;\n this.loadWidgets();\n this.onInit();\n });\n }\n\n ngOnDestroy() {\n this.onDestroy();\n }\n\n loadWidgets() {\n const { configId } = this.routeData;\n const { sections } = this.configuration.get(configId);\n if (sections) {\n sections.forEach(({ id, type, options }) => {\n const widgetOptions = options || {};\n widgetOptions.localeService = this.localeService;\n this.widgets.push({\n id,\n options: widgetOptions,\n dataSource: DATASOURCE_MAP[type],\n eventHandler: EVENTHANDLER_MAP[type]\n });\n });\n }\n }\n}\n","<div class=\"mr-static mr-layout\" \n *ngIf=\"lb.dataSource && lb.dataSource.pageConfig\"\n [ngClass]=\"{\n 'is-loading': ( layoutState.get$('content') | async ) == 'LOADING',\n 'is-error': ( layoutState.get$('content') | async ) == 'ERROR'\n }\">\n <!-- ITINERARY LAYOUT CONTENT -->\n <ng-container [ngSwitch]=\"layoutState.get$('content') | async\">\n <!-- loading -->\n <ng-container *ngSwitchCase=\"'LOADING'\">\n <div class=\"mr-layout__loader\">\n <n7-loader></n7-loader>\n </div>\n </ng-container>\n\n <!-- error -->\n <ng-container *ngSwitchCase=\"'ERROR'\">\n <div class=\"mr-layout__error\">\n <h2>{{ lb.dataSource.errorTitle }}</h2>\n <p>{{ lb.dataSource.errorDescription }}</p>\n </div>\n </ng-container>\n\n <!-- success -->\n <ng-container *ngSwitchCase=\"'SUCCESS'\">\n <div class=\"mr-static__top\">\n <h1 class=\"mr-static__title mr-generated-title-WP\">{{lb.dataSource.title}}</h1>\n <div class=\"mr-static__metadata\">\n <n7-metadata-viewer \n [data]=\"lb.widgets['mr-static-metadata'].ds.out$ | async\">\n </n7-metadata-viewer>\n </div>\n </div>\n\n <div class=\"mr-static__content mr-side-margin\">\n <!-- Page content html -->\n <div class=\"mr-wp-content\" [innerHTML]=\"lb.dataSource.content | keepHtml\"></div>\n \n <!-- Pass the list of blocks to render to the block template -->\n <div class=\"mr-static__related-resources\">\n <ng-container *ngTemplateOutlet=\"blocks; context: { $implicit: lb.dataSource.pageConfig.sections }\"></ng-container>\n </div>\n </div>\n </ng-container>\n\n </ng-container>\n</div>\n\n<ng-template #blocks let-list>\n <ng-container *ngFor=\"let section of list\">\n <section *ngIf=\"lb.widgets[section.id].ds.out$ | async\"\n class=\"{{ 'mr-resource__section mr-resource__' + section.type }}\">\n <ng-container [ngSwitch]=\"section.type\">\n \n <!-- METADATA VIEWER -->\n <ng-container *ngSwitchCase=\"'metadata'\">\n \n <div class=\"mr-content-block mr-content-block-metadata\">\n <h3 *ngIf=\"section.title\" class=\"mr-content-block__title\">\n {{ section.title }}\n </h3>\n <div class=\"mr-content-block__content\">\n <mr-read-more [data]=\"section.readmore\">\n <n7-metadata-viewer [data]=\"lb.widgets[section.id].ds.out$ | async\"\n [emit]=\"lb.widgets[section.id].emit\">\n </n7-metadata-viewer>\n </mr-read-more>\n </div>\n </div>\n\n </ng-container>\n \n <!-- COLLECTION -->\n <ng-container *ngSwitchCase=\"'collection'\">\n <ng-container *ngIf=\"lb.widgets[section.id].ds.out$ | async as collection$\">\n \n <div *ngIf=\"collection$.items?.length > 0\" class=\"mr-content-block mr-content-block-collection\">\n <h3 *ngIf=\"section.title\" class=\"mr-content-block__title\">\n {{ section.title }}\n </h3>\n <div class=\"mr-content-block__content {{ section.grid ? 'n7-grid-' + section.grid : '' }}\">\n <n7-item-preview *ngFor=\"let item of collection$?.items\"\n [data]=\"item\" [emit]=\"lb.widgets[section.id].emit\">\n </n7-item-preview>\n </div>\n </div>\n\n </ng-container>\n </ng-container>\n \n <!-- GALLERY -->\n <ng-container *ngSwitchCase=\"'gallery'\">\n <div class=\"mr-content-block mr-content-block-gallery\">\n <h3 *ngIf=\"section.title\" class=\"mr-content-block__title\">\n {{ section.title }}\n </h3>\n <div class=\"mr-content-block__content\">\n <mr-gallery [grid]=\"section.grid\" [data]=\"lb.widgets[section.id].ds.out$ | async\" [emit]=\"lb.widgets[section.id].emit\"> \n </mr-gallery>\n </div>\n </div>\n </ng-container>\n\n </ng-container>\n </section>\n </ng-container>\n</ng-template>\n","import { Data, Router } from '@angular/router';\nimport { LayoutDataSource, _t } from '@net7/core';\nimport { Anchor, ItemPreviewData } from '@net7/components';\nimport * as L from 'leaflet';\nimport { first } from 'rxjs/operators';\nimport { Subject } from 'rxjs';\nimport { ConfigurationService, CommunicationService, MainStateService } from '@net7/boilerplate-common';\nimport { Location } from '@angular/common';\nimport { MrLayoutStateService } from '../../services/layout-state.service';\nimport 'leaflet.markercluster';\nimport { CollectionItem, GetResourceResponse } from './map-layout.types';\nimport { MrLocaleService } from '../../services/locale.service';\n\nexport class MrMapLayoutDS extends LayoutDataSource {\n private configuration: ConfigurationService;\n\n private communication: CommunicationService;\n\n private mainState: MainStateService;\n\n private layoutState: MrLayoutStateService;\n\n private localeService: MrLocaleService;\n\n private location: Location;\n\n private routerData: Data;\n\n private pageConfig;\n\n public loading = {\n resourceDetails: true,\n timeline: true,\n };\n\n public eventHeader: string;\n\n public currentId: string;\n\n public eventDescription = '';\n\n public route;\n\n public router: Router;\n\n public mapListener$: Subject<L.Map> = new Subject();\n\n public bibliographyData: {\n header: { title: string };\n items: {\n payload?: {\n action: string;\n id: number;\n type: string;\n };\n text?: string;\n }[];\n };\n\n public collectionWorksData: {\n header: { title: string };\n items: ItemPreviewData[];\n };\n\n public collectionWitnessData: {\n header: { title: string };\n items: ItemPreviewData[];\n };\n\n public collectionGalleryData;\n\n public eventTitle: string;\n\n onInit(payload) {\n this.configuration = payload.configuration;\n this.communication = payload.communication;\n this.localeService = payload.localeService;\n this.location = payload.location;\n this.route = payload.route;\n this.router = payload.router;\n\n this.routerData = payload.routerData;\n this.pageConfig = this.configuration.get(this.routerData.configId) || {};\n // overwrite leaflet options with configuration.libOptions\n this.one('mr-map').updateOptions({ libOptions: this.pageConfig.libOptions });\n\n // update the map\n const { locale } = this.routerData;\n this.communication.request$('map', {\n method: 'GET',\n urlParams: locale ? `?locale=${locale}` : '',\n onError: (e) => console.error(e)\n }).subscribe(({ dataSet }) => {\n if (dataSet) { this.one('mr-map').update(dataSet); }\n });\n this.getWidgetDataSource('mr-map').mapLoaded$\n .pipe(first())\n .subscribe(({ map, markers }) => {\n this.mapListener$.next({ map, markers });\n });\n }\n\n loadDefaults(navigate?: boolean) {\n this.eventDescription = _t(this.pageConfig.defaultText);\n this.eventHeader = '';\n this.bibliographyData = undefined;\n this.collectionWitnessData = undefined;\n this.collectionWorksData = undefined;\n this.collectionGalleryData = undefined;\n if (navigate) {\n const href = this.localeService.getLinkByRouteId('map');\n this.location.go(href);\n }\n this.one('mr-year-header').update({\n title: { main: { text: _t(this.pageConfig.title) } },\n });\n }\n\n updatePageDetails(id) {\n const { locale } = this.routerData;\n this.communication.request$('resource', {\n onError: (e) => console.error(e),\n method: 'POST',\n params: {\n id, type: 'views/places'\n },\n urlParams: locale ? `?locale=${locale}` : '',\n }).subscribe((res: GetResourceResponse) => {\n if (!res || res == null) return;\n const {\n /* eslint-disable */\n 'collection-bibliography': bibData,\n 'collection-places': placesData,\n 'collection-witnesses': witnessData,\n 'collection-works': worksData,\n gallery,\n header,\n /* eslint-enable */\n } = res.sections;\n if (placesData) {\n // this.hasMap = true;\n this.one('mr-map').update(placesData);\n } else {\n // this.hasMap = false;\n }\n if (bibData) {\n this.bibliographyData = bibData;\n } else {\n this.bibliographyData = undefined;\n }\n if (witnessData) {\n this.collectionWitnessData = {\n items: witnessData.items.map((witness: {\n id: string;\n link: string;\n title: string;\n type: string;\n routeId?: string;\n slug?: string;\n }): ItemPreviewData => {\n let anchor: Anchor;\n if (witness.routeId) {\n const href = this.localeService\n .getLinkByRouteId(witness.routeId, witness.id, witness.slug);\n anchor = { href };\n } else if (witness.link) {\n anchor = { href: witness.link };\n }\n return {\n anchor,\n title: witness.title,\n };\n }),\n header: witnessData.header\n };\n } else {\n this.collectionWitnessData = undefined;\n }\n if (worksData?.items) {\n this.collectionWorksData = {\n header: worksData.header,\n items: worksData.items.map((item: CollectionItem) => {\n let anchor: Anchor;\n if (item.routeId) {\n const href = this.localeService\n .getLinkByRouteId(item.routeId, item.id, item.slug);\n anchor = { href };\n } else if (item.link) {\n anchor = { href: item.link };\n }\n return {\n anchor,\n image: item.image,\n title: item.title,\n text: item.text,\n };\n })\n };\n } else {\n this.collectionWorksData = undefined;\n }\n if (gallery) {\n this.collectionGalleryData = gallery;\n } else {\n this.collectionGalleryData = undefined;\n }\n if (header) {\n this.eventDescription = header.content;\n this.eventHeader = res.title;\n this.one('mr-year-header').update({\n title: { main: { text: res.title } },\n actions: {\n buttons: [{\n text: '',\n icon: 'n7-icon-close',\n anchor: {\n payload: 'closebutton'\n }\n }]\n }\n });\n }\n this.loading.resourceDetails = false;\n });\n }\n}\n","import { Location } from '@angular/common';\nimport { ActivatedRoute, Router } from '@angular/router';\nimport { EventHandler } from '@net7/core';\nimport { MrLocaleService } from '../../services/locale.service';\nimport { MrMapLayoutDS } from './map-layout.ds';\n\nexport class MrMapLayoutEH extends EventHandler {\n dataSource: MrMapLayoutDS;\n\n private route: ActivatedRoute;\n\n private router: Router;\n\n private localeService: MrLocaleService;\n\n private location: Location;\n\n public listen() {\n this.innerEvents$.subscribe(({ type, payload }) => {\n switch (type) {\n case 'mr-map-layout.init':\n this.dataSource.onInit(payload);\n this.route = payload.route;\n this.router = payload.router;\n this.localeService = payload.localeService;\n this.location = payload.location;\n this.listenRoute();\n // scroll top\n window.scrollTo(0, 0);\n\n // listen for clicks on the map markers\n this.dataSource.mapListener$\n .subscribe(({ markers }) => {\n markers.on('click', ({ layer: marker }) => {\n if (!marker.id) return;\n const isSelected = marker.getIcon().options.className.includes('selected');\n if (isSelected) {\n // navigate to the clicked resource / marker\n const href = this.localeService.getLinkByRouteId('mapItem', marker.id, marker.slug);\n this.location.go(href);\n this.dataSource.updatePageDetails(marker.id);\n } else {\n const href = this.localeService.getLinkByRouteId('map');\n this.location.go(href);\n this.dataSource.loadDefaults();\n }\n });\n });\n break;\n case 'mr-timeline-layout.destroy':\n break;\n default:\n console.warn('unhandled inner event of type', type);\n break;\n }\n });\n this.outerEvents$.subscribe(({ type }) => {\n switch (type) {\n case 'mr-year-header.closeevent':\n this.dataSource.loadDefaults(true);\n\n // emit signal\n this.emitOuter('routechanged', null);\n break;\n default:\n break;\n }\n });\n }\n\n private listenRoute() {\n this.route.paramMap.subscribe((params) => {\n const paramId = params.get('id');\n if (paramId) {\n this.dataSource.currentId = paramId;\n this.dataSource.updatePageDetails(paramId);\n\n // emit signal\n this.emitOuter('routechanged', paramId);\n } else {\n this.dataSource.loadDefaults(true);\n }\n });\n }\n}\n","import { MrMapLayoutDS } from './map-layout.ds';\nimport { MrMapLayoutEH } from './map-layout.eh';\nimport * as DS from '../../data-sources';\nimport * as EH from '../../event-handlers';\n\nexport const MrMapLayoutConfig = {\n layoutId: 'mr-map-layout',\n widgets: [\n { id: 'mr-map' },\n { id: 'mr-year-header' }\n ],\n layoutDS: MrMapLayoutDS,\n layoutEH: MrMapLayoutEH,\n widgetsDataSources: DS,\n widgetsEventHandlers: EH,\n options: {},\n};\n","import { Component, OnInit, OnDestroy } from '@angular/core';\nimport { ActivatedRoute, Data, Router } from '@angular/router';\nimport { Location } from '@angular/common';\nimport {\n AbstractLayout,\n CommunicationService,\n LayoutsConfigurationService,\n ConfigurationService,\n MainStateService\n} from '@net7/boilerplate-common';\nimport { first } from 'rxjs/operators';\nimport { MrLayoutStateService } from '../../services/layout-state.service';\nimport { MrMapLayoutConfig as config } from './map-layout.config';\nimport { MrLocaleService } from '../../services/locale.service';\n\n@Component({\n selector: 'mr-map-layout',\n templateUrl: './map-layout.html',\n})\nexport class MrMapLayoutComponent extends AbstractLayout implements OnInit, OnDestroy {\n private routerData: Data;\n\n constructor(\n layoutsConfiguration: LayoutsConfigurationService,\n private route: ActivatedRoute,\n private router: Router,\n private location: Location,\n private configuration: ConfigurationService,\n private communication: CommunicationService,\n private mainState: MainStateService,\n public layoutState: MrLayoutStateService,\n public localeService: MrLocaleService,\n ) {\n super(layoutsConfiguration.get('MrMapLayoutConfig') || config);\n }\n\n protected initPayload() {\n return {\n routerData: this.routerData,\n mainState: this.mainState,\n configuration: this.configuration,\n communication: this.communication,\n layoutState: this.layoutState,\n route: this.route,\n router: this.router,\n location: this.location,\n localeService: this.localeService,\n options: this.config.options || {}\n };\n }\n\n ngOnInit() {\n this.route.data.pipe(\n first()\n ).subscribe((routerData) => {\n this.routerData = routerData;\n this.layoutState.add('content');\n this.onInit();\n });\n }\n\n ngOnDestroy() {\n this.onDestroy();\n }\n}\n","<div class=\"mr-map-layout mr-layout\"\n *ngIf=\"lb.dataSource\">\n <div class=\"mr-map-layout__map\">\n <div class=\"mr-map-layout__map-loading\"\n *ngIf=\"lb.dataSource.loading.timeline\">\n </div>\n <n7-map [data]=\"lb.widgets['mr-map'].ds.out$ | async\"></n7-map>\n <!-- <n7-timeline [data]=\"lb.widgets['mr-timeline'].ds.out$ | async\"\n *ngIf=\"!lb.dataSource.loading.timeline\">\n </n7-timeline> -->\n </div>\n\n <div class=\"mr-map-layout__page mr-side-margin\">\n <div class=\"mr-map-layout__date\">\n <n7-inner-title [data]=\"lb.widgets['mr-year-header'].ds.out$ | async\"\n [emit]=\"lb.widgets['mr-year-header'].emit\">\n </n7-inner-title>\n </div>\n <!--\n <h1 class=\"mr-map-layout__title\"\n *ngIf=\"!lb.dataSource.loading.resourceDetails\">\n {{lb.dataSource.eventHeader}}\n </h1>\n -->\n <div class=\"mr-map-layout__content\">\n <!-- DESCRIZIONE -->\n <div class=\"mr-content-block mr-content-block-description\" *ngIf=\"lb.dataSource.eventDescription\">\n <p [innerHTML]=\"lb.dataSource.eventDescription\">\n <p>\n </div>\n <ng-container *ngIf=\"!lb.dataSource.loading.resourceDetails\">\n\n <!-- GALLERIA -->\n <div class=\"mr-content-block n7-grid-6\">\n <ng-container *ngFor=\"let image of lb.dataSource.collectionGalleryData\">\n <a [href]=\"image.image\" class=\"mr-gallery__image\">\n <img [src]=\"image.thumbnail\" alt=\"image.title\">\n </a>\n </ng-container>\n </div>\n\n <!-- BIBLIOGRAFIA -->\n <ng-container *ngIf=\"lb.dataSource.bibliographyData as biblio\">\n <ng-container *ngIf=\"biblio.items && biblio.items.length > 0\">\n <div class=\"mr-content-block mr-content-block-collection\">\n <h3 class=\"mr-content-block__title\">{{ biblio.header.title }}</h3>\n <div class=\"mr-content-block__content n7-grid-1\">\n <ng-container *ngFor=\"let item of biblio.items\">\n <div class=\"mr-map-layout__collection-content\">\n <n7-item-preview [data]=\"item\"></n7-item-preview>\n </div>\n </ng-container>\n </div>\n </div>\n </ng-container>\n </ng-container>\n\n <!-- TESTIMONI -->\n <ng-container *ngIf=\"lb.dataSource.collectionWitnessData as wit\">\n <ng-container *ngIf=\"wit.items && wit.items.length > 0\">\n <div class=\"mr-content-block-collection mr-content-block\">\n <h3 class=\"mr-content-block__title\">{{ wit.header.title }}</h3>\n <div class=\"mr-content-block__content n7-grid-3\">\n <n7-item-preview *ngFor=\"let item of wit.items\"\n [data]=\"item\">\n </n7-item-preview>\n </div>\n </div>\n </ng-container>\n </ng-container>\n\n <!-- OPERE -->\n <ng-container *ngIf=\"lb.dataSource.collectionWorksData as works\">\n <ng-container *ngIf=\"works.items && works.items.length > 0\">\n <div class=\"mr-content-block-collection mr-content-block\">\n <h3 class=\"mr-content-block__title\">{{ works.header.title }}</h3>\n <div class=\"mr-content-block__content n7-grid-3\">\n <n7-item-preview *ngFor=\"let item of works.items\"\n [data]=\"item\">\n </n7-item-preview>\n </div>\n </div>\n </ng-container>\n </ng-container>\n\n </ng-container>\n </div>\n </div>\n</div>\n","import { LayoutDataSource } from '@net7/core';\nimport { Network } from 'vis-network';\nimport { Observable, Subject } from 'rxjs';\nimport {\n ConfigurationService,\n CommunicationService,\n/* helpers */\n} from '@net7/boilerplate-common';\nimport { Data, Router } from '@angular/router';\nimport { Location } from '@angular/common';\nimport {\n NetworkData\n} from '@net7/components';\nimport 'leaflet.markercluster';\n// import { GetResourceResponse } from './network-layouts.types';\nimport { MrLocaleService } from '../../services/locale.service';\n// import { NETWORK_MOCK } from './network-layout-mock';\n\nexport class MrNetworkLayoutDS extends LayoutDataSource {\n private configuration: ConfigurationService;\n\n private communication: CommunicationService;\n\n private router: Router;\n\n private configId: string;\n\n private pageConfig;\n\n private localeService: MrLocaleService;\n\n private location: Location;\n\n public loading = {\n network: false,\n };\n\n public networkData: NetworkData;\n\n public legend: Array<{key: string, label: string, color: string}> = [];\n\n public showLegend: boolean = true;\n\n public route;\n\n public networkListener$: Subject<Network> = new Subject();\n\n private routeData: Data;\n\n public toggleLegend() {\n this.showLegend = !this.showLegend;\n }\n\n onInit(payload: any) {\n this.configuration = payload.configuration;\n this.communication = payload.communication;\n this.route = payload.route;\n this.router = payload.router;\n this.localeService = payload.localeService;\n this.location = payload.location;\n this.configId = payload.configId;\n this.routeData = payload.routeData;\n this.pageConfig = this.configuration.get(this.configId);\n\n // update the network\n /* this.loading.network = true;\n this.communication\n .request$('network', {\n method: 'GET',\n urlParams: locale ? `$?locale=${locale}` : '',\n onError: (e) => console.error(e),\n })\n .subscribe((d) => {\n this.networkData = d;\n this.loading.network = false;\n this.one('mr-network').updateOptions({\n libOptions: this.pageConfig.libOptions,\n });\n this.one('mr-network').update(d);\n this.loading.network = false;\n this.initializeNetwork();\n }); */\n }\n\n pageRequest$(id, onError: (err: any) => void): Observable<any> {\n const { locale } = this.routeData;\n this.loading.network = true;\n return this.communication.request$('network', {\n onError,\n method: 'GET',\n urlParams: locale ? `${id}?locale=${locale}` : id\n });\n }\n\n handleResponse(response) {\n this.networkData = response;\n this.loading.network = false;\n this.one('mr-network').updateOptions({\n libOptions: this.pageConfig.libOptions,\n });\n this.one('mr-network').update(response);\n this.loading.network = false;\n this.initializeNetwork();\n }\n\n public initializeNetwork() {\n setTimeout(() => {\n const container = document.getElementById('demo-network');\n if (!container) {\n console.error('Container non trovato');\n return;\n }\n try {\n const { nodes } = this.networkData;\n const { edges } = this.networkData;\n const networkGroups = this.networkData?.groups || {};\n const options = this.pageConfig.libOptions;\n const mergedGroups = {\n ...networkGroups,\n ...(options?.groups || {})\n };\n\n // legenda\n this.legend = [];\n Object.keys(mergedGroups).forEach((key) => {\n const group = mergedGroups[key];\n this.legend.push({\n key,\n label: group.label || key,\n color: group.color || '#cccccc'\n });\n });\n\n const libOptions = {\n ...options,\n groups: mergedGroups\n };\n\n const network = new Network(container, { nodes, edges }, libOptions);\n this.networkListener$.next(network);\n } catch (error) {\n console.error('Errore inizializzazione', error);\n }\n }, 100);\n }\n}\n","import { ActivatedRoute, ParamMap, Router } from '@angular/router';\nimport { EventHandler } from '@net7/core';\nimport { Network } from 'vis-network';\nimport { Location } from '@angular/common';\nimport { Subject } from 'rxjs';\nimport {\n takeUntil, switchMap, map, tap\n} from 'rxjs/operators';\nimport { MrResourceModalService } from '../../services/resource-modal.service';\nimport { MrLocaleService } from '../../services/locale.service';\nimport linksHelper from '../../helpers/links-helper';\nimport { MrLayoutStateService, LayoutState } from '../../services/layout-state.service';\n\nexport class MrNetworkLayoutEH extends EventHandler {\n private modalService: MrResourceModalService;\n\n private route: ActivatedRoute;\n\n private router: Router;\n\n private localeService: MrLocaleService;\n\n private location: Location;\n\n private destroy$: Subject<void> = new Subject();\n\n private layoutState: MrLayoutStateService;\n\n public listen() {\n this.innerEvents$.subscribe(({ type, payload }) => {\n switch (type) {\n case 'mr-network-layout.init':\n this.dataSource.onInit(payload);\n this.modalService = payload.modalService;\n this.route = payload.route;\n this.router = payload.router;\n this.localeService = payload.localeService;\n this.location = payload.location;\n this.layoutState = payload.layoutState;\n this.listenRoute();\n // scroll top\n window.scrollTo(0, 0);\n\n this.dataSource.networkListener$.subscribe((network: Network) => {\n network.on('click', (props) => {\n if (props.nodes && props.nodes.length > 0) {\n const nodeId = props.nodes[0];\n const node = this.dataSource.networkData.nodes.find((n) => n.id === nodeId);\n\n // gestione payload\n if (node?.payload) {\n let anchor = null;\n\n // Navigazione interna\n if (node?.payload?.link?.routeId) {\n const routeLink = this.localeService.getLinkByRouteId(\n node.payload.link.routeId,\n node.payload.link.id,\n node.payload.link.slug\n );\n anchor = {\n href: routeLink,\n queryParams: node.payload.link.params || null,\n };\n // link semplice\n } else if (node?.payload?.link && typeof node?.payload?.link === 'string') {\n anchor = {\n href: linksHelper.getRouterLink(node.payload.link),\n queryParams: linksHelper.getQueryParams(node.payload.link),\n };\n // link complesso\n } else if (node?.payload?.link && typeof node?.payload?.link === 'object') {\n let href = '';\n if (node.payload.link.absolute) {\n href = `${node.payload.link.absolute}`;\n } else if (node.payload.link.relative) {\n href = node.payload.link.relative;\n }\n\n if (href && node.payload.link.params) {\n href = linksHelper.joinQueryParams(href, [node.payload.link.params]);\n }\n\n if (href && node.payload.link.query_string) {\n href = linksHelper.joinQueryParams(href, [document.location.search]);\n }\n\n anchor = {\n href,\n queryParams: null,\n };\n // altro\n } else if (node.payload.payload) {\n anchor = {\n payload: {\n ...node.payload.payload\n }\n };\n }\n\n if (anchor) {\n if (anchor.href) {\n window.open(anchor.href, '_blank');\n } else if (anchor.payload) {\n this.itemPreviewEmit('click', anchor.payload);\n }\n }\n }\n }\n });\n });\n break;\n case 'mr-network-layout.destroy':\n break;\n default:\n console.warn('unhandled inner event of type', type);\n break;\n }\n });\n }\n\n public itemPreviewEmit = (type, payload) => {\n if (type === 'click' && payload?.action === 'resource-modal') {\n const { id, type: resourceType } = payload;\n this.modalService.open(id, resourceType);\n }\n };\n\n private listenRoute() {\n this.route.paramMap.pipe(\n takeUntil(this.destroy$),\n tap(() => {\n this.layoutState.set('content', LayoutState.LOADING);\n }),\n map((params: ParamMap) => params.get('id')),\n switchMap((id) => this.dataSource.pageRequest$(id, (err) => {\n if (err.status === 404) {\n // getting not found path\n const { config } = this.router;\n const route404 = config.find(({ data }) => data?.id === 'page-404');\n const path404 = route404?.path || 'page-404';\n this.router.navigate([path404]);\n }\n console.warn(`Error loading resource layout for ${id}`, err.message);\n this.layoutState.set('content', LayoutState.ERROR);\n }))\n ).subscribe((response) => {\n this.layoutState.set('content', LayoutState.SUCCESS);\n this.dataSource.handleResponse(response);\n // scroll top\n window.scrollTo(0, 0);\n });\n }\n}\n","import { MrNetworkLayoutDS } from './network-layout.ds';\nimport { MrNetworkLayoutEH } from './network-layout.eh';\nimport * as DS from '../../data-sources';\nimport * as EH from '../../event-handlers';\n\nexport const MrNetworkLayoutConfig = {\n layoutId: 'mr-network-layout',\n widgets: [],\n layoutDS: MrNetworkLayoutDS,\n layoutEH: MrNetworkLayoutEH,\n widgetsDataSources: DS,\n widgetsEventHandlers: EH,\n options: {\n },\n};\n","import { Component, OnInit, OnDestroy } from '@angular/core';\nimport { ActivatedRoute, Data, Router } from '@angular/router';\nimport {\n AbstractLayout,\n CommunicationService,\n LayoutsConfigurationService,\n ConfigurationService,\n MainStateService\n} from '@net7/boilerplate-common';\nimport { Location } from '@angular/common';\nimport { MrResourceModalService } from '../../services/resource-modal.service';\nimport { MrLayoutStateService } from '../../services/layout-state.service';\nimport { MrNetworkLayoutConfig as config } from './network-layout.config';\nimport { MrLocaleService } from '../../services/locale.service';\n\n@Component({\n selector: 'mr-network-layout',\n templateUrl: './network-layout.html',\n styleUrls: ['../../styles/muruca/layouts/_network.scss']\n})\nexport class MrNetworkLayoutComponent extends AbstractLayout implements OnInit, OnDestroy {\n private configId: string;\n\n private routeData: Data;\n\n constructor(\n layoutsConfiguration: LayoutsConfigurationService,\n private route: ActivatedRoute,\n private router: Router,\n private configuration: ConfigurationService,\n private communication: CommunicationService,\n private mainState: MainStateService,\n public layoutState: MrLayoutStateService,\n public modalService: MrResourceModalService,\n public localeService: MrLocaleService,\n public location: Location,\n ) {\n super(layoutsConfiguration.get('MrNetworkLayoutConfig') || config);\n }\n\n protected initPayload() {\n return {\n configId: this.configId,\n mainState: this.mainState,\n configuration: this.configuration,\n communication: this.communication,\n layoutState: this.layoutState,\n modalService: this.modalService,\n route: this.route,\n router: this.router,\n localeService: this.localeService,\n location: this.location,\n options: this.config.options || {},\n routeData: this.routeData,\n };\n }\n\n ngOnInit() {\n this.route.data.subscribe((data) => {\n this.layoutState.add('content');\n this.configId = data.configId;\n this.routeData = data;\n this.onInit();\n });\n }\n\n ngOnDestroy() {\n this.onDestroy();\n }\n}\n","<div class=\"network-layout-container\" *ngIf=\"lb.dataSource\">\n <div class=\"network-header\">\n <h2>{{ lb.dataSource.pageConfig?.title}}</h2>\n <p>{{ lb.dataSource.pageConfig?.mapHeader }}</p>\n </div>\n \n <div class=\"network-legend-section\" *ngIf=\"lb.dataSource.legend?.length\">\n <div class=\"legend-toggle\">\n <button \n class=\"legend-toggle-btn\" \n (click)=\"lb.dataSource.toggleLegend()\"\n [class.active]=\"lb.dataSource.showLegend\">\n <span class=\"toggle-icon\">{{ lb.dataSource.showLegend ? '-' : '+' }}</span>\n Legenda\n </button>\n </div>\n \n <div class=\"network-legend\" *ngIf=\"lb.dataSource.showLegend\">\n <div class=\"legend-item\" *ngFor=\"let item of lb.dataSource.legend\">\n <span class=\"legend-color\" [style.background-color]=\"item.color\"></span>\n <span>{{ item.label }}</span>\n </div>\n </div>\n </div>\n \n <div id=\"demo-network\" class=\"network-visualization\"></div>\n</div>","import { Data } from '@angular/router';\nimport { LayoutDataSource, _t } from '@net7/core';\nimport { Observable } from 'rxjs';\nimport { ConfigurationService, CommunicationService, MainStateService } from '@net7/boilerplate-common';\n\nexport class MrPostsLayoutDS extends LayoutDataSource {\n protected configuration: ConfigurationService;\n\n protected communication: CommunicationService;\n\n protected mainState: MainStateService;\n\n protected routerData: Data;\n\n public pageConfig;\n\n onInit(payload) {\n this.configuration = payload.configuration;\n this.mainState = payload.mainState;\n this.routerData = payload.routerData;\n this.communication = payload.communication;\n this.pageConfig = this.configuration.get(this.routerData.configId);\n\n // config\n this.all().updateOptions({ config: this.pageConfig });\n\n // manual updates\n this.one('mr-search-page-title').update({});\n\n // update head title\n this.updateHeadTitle();\n\n // update translations\n this.addTranslations(this.pageConfig);\n }\n\n updateSearchTags(params) {\n if (!this.pageConfig.filters) {\n return;\n }\n\n const { labels } = this.pageConfig.filters;\n const tags = [];\n Object.keys(labels)\n .filter((key) => !!params[key])\n .forEach((key) => {\n tags[key] = params[key];\n });\n\n this.one('mr-advanced-search-tags').updateOptions({ labels });\n this.one('mr-advanced-search-tags').update(tags);\n }\n\n request$(params, onError): Observable<any> {\n const { locale } = this.routerData;\n const { searchId } = this.pageConfig;\n const searchParams = {\n ...params\n };\n Object.keys(searchParams)\n .filter((key) => ['page', 'limit', 'sort'].includes(key))\n .forEach((key) => {\n searchParams.results = searchParams.results || {};\n searchParams.results[key] = searchParams[key];\n delete searchParams[key];\n });\n // normalize results filters\n const resultsParams = {} as {\n limit: number;\n offset: number;\n sort: string;\n };\n const results = searchParams.results || {};\n const page = results.page ? +results.page : 1;\n resultsParams.limit = results.limit ? +results.limit : 12;\n resultsParams.offset = page === 1 ? 0 : resultsParams.limit * (page - 1);\n resultsParams.sort = results.sort || 'sort_ASC';\n return this.communication.request$('posts', {\n method: 'POST',\n params: {\n ...searchParams,\n searchId,\n results: {\n ...resultsParams\n }\n },\n urlParams: locale ? `?locale=${locale}` : '',\n onError\n });\n }\n\n handleResponse(response) {\n this.some([\n 'mr-search-results-title',\n 'mr-search-results',\n ]).update(response);\n\n // pagination\n this.one('n7-smart-pagination').updateOptions({ mode: 'payload' });\n this.one('n7-smart-pagination').update(this.getPaginationParams(response));\n }\n\n protected updateHeadTitle() {\n const appName = this.configuration.get('name');\n const pageTitle = this.pageConfig.title;\n this.mainState.update('headTitle', [appName, _t(pageTitle)].join(' > '));\n }\n\n private addTranslations(config) {\n if (config?.sort?.label) {\n config.sort.label = _t(config.sort.label);\n config.sort.options = config.sort.options.map((option) => ({\n ...option,\n label: _t(option.label)\n }));\n }\n ['text', 'button'].forEach((key) => {\n if (config.fallback) {\n config.fallback[key] = _t(config.fallback[key]);\n }\n if (config.ko) {\n config.ko[key] = _t(config.ko[key]);\n }\n });\n\n // filters\n const { filters } = this.pageConfig;\n if (filters) {\n filters.title = _t(filters.title);\n Object.keys(filters.labels).forEach((key) => {\n filters.labels[key] = _t(filters.labels[key]);\n });\n }\n }\n\n protected getPaginationParams(response) {\n const { total_count: totalCount, offset, limit } = response;\n const { pagination: paginationConfig } = this.pageConfig;\n\n return {\n totalPages: Math.ceil(totalCount / limit),\n currentPage: (offset + limit) / limit,\n pageLimit: paginationConfig.limit,\n sizes: {\n label: paginationConfig.selectLabel ? _t(paginationConfig.selectLabel) : null,\n list: paginationConfig.options,\n active: limit,\n },\n };\n }\n}\n","import { ActivatedRoute, Router } from '@angular/router';\nimport { EventHandler } from '@net7/core';\nimport { Subject } from 'rxjs';\nimport { switchMap, takeUntil, tap } from 'rxjs/operators';\nimport { isEmpty } from 'lodash';\nimport { helpers } from '@net7/boilerplate-common';\nimport { MrPostsLayoutDS } from './posts-layout.ds';\nimport { MrLayoutStateService, LayoutState } from '../../services/layout-state.service';\n\nexport class MrPostsLayoutEH extends EventHandler {\n protected activatedRoute: ActivatedRoute;\n\n protected router: Router;\n\n private layoutState: MrLayoutStateService;\n\n protected destroy$: Subject<void> = new Subject();\n\n protected scrollRefElement: HTMLElement;\n\n dataSource: MrPostsLayoutDS;\n\n public listen() {\n this.innerEvents$.subscribe(({ type, payload }) => {\n switch (type) {\n case 'mr-posts-layout.init':\n this.activatedRoute = payload.activatedRoute;\n this.router = payload.router;\n this.layoutState = payload.layoutState;\n this.dataSource.onInit(payload);\n\n // listen route changes\n this.listenToRouterChanges();\n // scroll top\n window.scrollTo(0, 0);\n break;\n\n case 'mr-posts-layout.destroy':\n this.destroy$.next();\n break;\n\n default:\n console.warn('unhandled inner event of type', type);\n break;\n }\n });\n\n this.outerEvents$.subscribe(({ type, payload }) => {\n switch (type) {\n case 'n7-smart-pagination.click':\n this.updateRouter({ page: payload.page });\n break;\n\n case 'n7-smart-pagination.change':\n this.updateRouter({ limit: payload.value, page: 1 });\n break;\n\n case 'mr-search-results-title.change':\n this.updateRouter({ sort: payload.value, page: 1 });\n break;\n\n default:\n console.warn('unhandled inner event of type', type);\n break;\n }\n });\n }\n\n /** URL changes */\n protected listenToRouterChanges() {\n this.activatedRoute.queryParams.pipe(\n takeUntil(this.destroy$),\n tap(() => {\n this.layoutState.set('results', LayoutState.LOADING);\n }),\n switchMap((params) => {\n this.dataSource.updateSearchTags(params);\n return this.dataSource.request$(params, (error) => {\n console.warn('Posts search error', error);\n this.layoutState.set('results', LayoutState.ERROR);\n });\n })\n ).subscribe((response) => {\n this.dataSource.handleResponse(response);\n this.layoutState.set('results', isEmpty(response.results) ? LayoutState.EMPTY : LayoutState.SUCCESS);\n // scroll to ref element\n if (!this.scrollRefElement) {\n this.scrollRefElement = document.querySelector('.scroll-ref');\n } else if (!helpers.isElementInViewport(this.scrollRefElement)) {\n this.scrollRefElement.scrollIntoView();\n }\n });\n }\n\n protected updateRouter(queryParams) {\n this.router.navigate([], {\n queryParams,\n queryParamsHandling: 'merge'\n });\n }\n}\n","import { SmartPaginationDS, SmartPaginationEH } from '@net7/boilerplate-common';\nimport { MrPostsLayoutDS } from './posts-layout.ds';\nimport { MrPostsLayoutEH } from './posts-layout.eh';\nimport * as DS from '../../data-sources';\nimport * as EH from '../../event-handlers';\n\nexport const MrPostsLayoutConfig = {\n layoutId: 'mr-posts-layout',\n widgets: [\n {\n id: 'mr-search-page-title'\n }, {\n id: 'mr-search-results-title'\n }, {\n id: 'mr-search-results'\n }, {\n id: 'n7-smart-pagination',\n dataSource: SmartPaginationDS,\n eventHandler: SmartPaginationEH,\n }, {\n id: 'mr-advanced-search-tags'\n }\n ],\n layoutDS: MrPostsLayoutDS,\n layoutEH: MrPostsLayoutEH,\n widgetsDataSources: DS,\n widgetsEventHandlers: EH,\n layoutOptions: {}\n};\n","import { Component, OnInit, OnDestroy } from '@angular/core';\nimport { ActivatedRoute, Data, Router } from '@angular/router';\nimport {\n AbstractLayout,\n LayoutsConfigurationService,\n MainStateService,\n ConfigurationService,\n CommunicationService,\n} from '@net7/boilerplate-common';\nimport { MrPostsLayoutConfig as config } from './posts-layout.config';\nimport { MrLayoutStateService } from '../../services/layout-state.service';\n\n@Component({\n selector: 'mr-posts-layout',\n templateUrl: './posts-layout.html',\n})\nexport class MrPostsLayoutComponent extends AbstractLayout implements OnInit, OnDestroy {\n private routerData: Data;\n\n constructor(\n private router: Router,\n private activatedRoute: ActivatedRoute,\n private mainState: MainStateService,\n private configuration: ConfigurationService,\n private communication: CommunicationService,\n public layoutState: MrLayoutStateService,\n layoutsConfiguration: LayoutsConfigurationService,\n ) {\n super(layoutsConfiguration.get('MrPostsLayoutConfig') || config);\n }\n\n protected initPayload() {\n return {\n routerData: this.routerData,\n configuration: this.configuration,\n communication: this.communication,\n mainState: this.mainState,\n router: this.router,\n activatedRoute: this.activatedRoute,\n layoutState: this.layoutState,\n options: this.config.options || {},\n };\n }\n\n ngOnInit() {\n this.activatedRoute.data.subscribe((routerData) => {\n this.routerData = routerData;\n // add layout states\n this.layoutState.add(['results']);\n this.onInit();\n });\n }\n\n ngOnDestroy() {\n this.onDestroy();\n }\n}\n","<div class=\"mr-search mr-layout\"\n *ngIf=\"lb.dataSource\">\n <section class=\"mr-layout__maxwidth mr-side-margin\">\n\n <div class=\"mr-search__title\">\n <div class=\"scroll-ref\"> </div>\n <n7-inner-title\n [data]=\"lb.widgets['mr-search-page-title'].ds.out$ | async\"\n [emit]=\"lb.widgets['mr-search-page-title'].emit\">\n </n7-inner-title>\n </div>\n \n <div class=\"mr-search__results-content\">\n <div class=\"mr-search__results-wrapper\">\n <div class=\"mr-search__results-info\">\n <n7-inner-title\n [data]=\"lb.widgets['mr-search-results-title'].ds.out$ | async\"\n [emit]=\"lb.widgets['mr-search-results-title'].emit\">\n </n7-inner-title>\n </div>\n <div *ngIf=\"lb.dataSource.pageConfig['filters']\" class=\"mr-search__results-filters\">\n <span *ngIf=\"lb.dataSource.pageConfig['filters'].title\" \n class=\"mr-search__results-filters-title\">{{ lb.dataSource.pageConfig['filters'].title }}</span>\n <div class=\"mr-search__results-filters-wrapper\">\n <n7-tag *ngFor=\"let tag of (lb.widgets['mr-advanced-search-tags'].ds.out$ | async)\"\n [data]=\"tag\">\n </n7-tag>\n </div>\n </div>\n <main class=\"mr-search__results\">\n <!-- SEARCH RESULTS -->\n <ng-container [ngSwitch]=\"layoutState.get$('results') | async\">\n \n <!-- loading -->\n <ng-container *ngSwitchCase=\"'LOADING'\">\n <div class=\"mr-search__results-loading n7-grid-{{ lb.dataSource.pageConfig.grid || 3 }}\">\n <n7-content-placeholder *ngFor=\"let n of [0,1,2,3,4,5,6,7,8,9]\" [data]=\"{\n blocks: [\n { classes: 'search-result-placeholder-title' },\n { classes: 'search-result-placeholder-metadata' },\n { classes: 'search-result-placeholder-metadata' },\n { classes: 'search-result-placeholder-metadata' }\n ]\n }\"></n7-content-placeholder>\n </div>\n </ng-container>\n \n <!-- success: items > 0 -->\n <ng-container *ngSwitchCase=\"'SUCCESS'\">\n <div class=\"n7-grid-{{ lb.dataSource.pageConfig.grid || 3 }}\">\n <n7-item-preview *ngFor=\"let item of (lb.widgets['mr-search-results'].ds.out$ | async)\"\n [data]=\"item\">\n </n7-item-preview>\n </div>\n </ng-container>\n\n <!-- empty: items === 0 -->\n <ng-container *ngSwitchCase=\"'EMPTY'\">\n <div class=\"mr-search__results-fallback\">\n <p class=\"mr-search__results-fallback-string\">\n {{ lb.dataSource.pageConfig.fallback.text }}\n </p>\n <button class=\"n7-btn mr-search__results-fallback-button\"\n (click)=\"lb.eventHandler.emitInner('searchreset')\">\n {{ lb.dataSource.pageConfig.fallback.button }}\n </button>\n </div>\n </ng-container>\n\n <!-- error: request problem -->\n <ng-container *ngSwitchCase=\"'ERROR'\">\n <p class=\"mr-search__results-ko-string\">\n {{ lb.dataSource.pageConfig.ko.text }}\n </p>\n <button class=\"n7-btn mr-search__results-ko-button\"\n (click)=\"lb.eventHandler.emitInner('searchreset')\">\n {{ lb.dataSource.pageConfig.ko.button }}\n </button>\n </ng-container>\n \n </ng-container>\n </main> \n <n7-smart-pagination\n *ngIf=\"(layoutState.get$('results') | async) === 'SUCCESS'\"\n [data]=\"lb.widgets['n7-smart-pagination'].ds.out$ | async\"\n [emit]=\"lb.widgets['n7-smart-pagination'].emit\">\n </n7-smart-pagination>\n </div>\n </div>\n\n </section>\n</div>\n","import { Data } from '@angular/router';\nimport { LayoutDataSource, _t } from '@net7/core';\nimport { Observable } from 'rxjs';\nimport {\n ConfigurationService, CommunicationService, MainStateService, helpers\n} from '@net7/boilerplate-common';\nimport { MrLocaleService } from '../../services/locale.service';\nimport linksHelper from '../../helpers/links-helper';\n\nexport class MrResourceLayoutDS extends LayoutDataSource {\n private configuration: ConfigurationService;\n\n private communication: CommunicationService;\n\n private mainState: MainStateService;\n\n private localeService: MrLocaleService;\n\n private routerData: Data;\n\n private pageConfig: any;\n\n public tabConfig: any;\n\n public id: string;\n\n public tab: string;\n\n public slug: string;\n\n public title: string;\n\n public errorTitle = _t('global#layout_error_title');\n\n public errorDescription = _t('global#layout_error_description');\n\n public hasContextMenu: () => boolean;\n\n private tabsContent: any;\n\n onInit(payload) {\n this.configuration = payload.configuration;\n this.communication = payload.communication;\n this.mainState = payload.mainState;\n this.localeService = payload.localeService;\n this.routerData = payload.routerData;\n this.pageConfig = this.configuration.get(this.routerData.configId);\n\n // tabs config\n const tabs = this.configuration.get('tabs');\n const pageTabs = this.pageConfig.tabs;\n if (tabs && pageTabs) {\n this.tabConfig = tabs[pageTabs];\n }\n\n // add translations\n ['top', 'content'].forEach((type) => {\n this.pageConfig.sections[type] = this.pageConfig.sections[type].map((section) => ({\n ...section,\n title: _t(section.title)\n }));\n });\n }\n\n /** Request the configured widgets data */\n pageRequest$(id, onError: (err: any) => void): Observable<any> {\n const { locale } = this.routerData;\n const params = linksHelper.getQueryParams(document.location.search);\n const { top, content } = this.pageConfig.sections;\n const sections = top.concat(content);\n return this.communication.request$('resource', {\n onError,\n method: 'POST',\n params: {\n id,\n type: this.pageConfig.type,\n sections: sections.map((s) => s.id),\n },\n queryParams: params,\n urlParams: locale ? `?locale=${locale}` : '',\n });\n }\n\n /** Request the configured widgets data in PDF format */\n pdfRequest$(id): Observable<any> {\n const { locale } = this.routerData;\n const params = linksHelper.getQueryParams(document.location.search);\n let sections;\n if (this.tabsContent) {\n const { top } = this.pageConfig.sections;\n sections = top.map((s) => s.id).concat(this.tabsContent);\n } else {\n const { top, content } = this.pageConfig.sections;\n sections = top.concat(content).map((s) => s.id);\n }\n return this.communication.request$('getPdf', {\n onError: (e) => console.error('getPdf', e),\n method: 'POST',\n params: {\n id,\n type: this.pageConfig.type,\n sections\n },\n queryParams: params,\n urlParams: locale ? `?locale=${locale}` : '',\n httpOptions: {\n responseType: 'blob'\n }\n });\n }\n\n handleResponse(response) {\n this.initSections(response);\n this.setLocaleResourceConfig(response);\n this.updateHeadTitle(response);\n }\n\n /** Load all the configured widgets */\n private initSections(response) {\n const { top, content } = this.pageConfig.sections;\n const sections = top.concat(content);\n sections.forEach(({\n id, type, tools, options\n }) => {\n // update section datasource\n const widgetDataSource = this.getWidgetDataSource(id);\n if (!widgetDataSource) return;\n const responseSection = response.sections[id];\n // set id\n widgetDataSource.id = id;\n if (type === 'tabs') {\n this.tabConfig = this.tabConfig.map((tab: any) => ({\n id: tab.id,\n label: tab.label,\n hideTab: (responseSection && responseSection.includes(tab.id))\n }));\n }\n // check viewer tools\n if (type === 'viewer') {\n // update image viewer options\n this.one(id).updateOptions({ tools });\n }\n if (type === 'viewer-iiif') {\n // update image viewer iiif options\n const { libOptions } = options;\n this.hasContextMenu = () => !!libOptions['context-menu'];\n this.one(id).updateOptions({ libOptions });\n }\n\n if (type === 'text-viewer' || type === 'parallel-text-viewer') {\n let url;\n try {\n url = this.communication.getUrl('xmlSearch');\n } catch {\n url = '';\n }\n const searchApi = {\n url,\n 'resource-id': this.id\n };\n\n options.searchApi = searchApi;\n this.one(id).updateOptions(options);\n }\n // update data\n if (responseSection && !helpers.isEmpty(responseSection)) {\n this.one(id).update(responseSection);\n } else {\n // unload the component without data\n this.one(id).update(undefined);\n }\n\n // init viewer overlay details\n if (type === 'viewer') {\n const overlayDetailsId = `${id}-overlay-details`;\n const widgetOverlayDetailsDS = this.getWidgetDataSource(overlayDetailsId);\n if (!widgetOverlayDetailsDS) return;\n // set id\n widgetOverlayDetailsDS.id = overlayDetailsId;\n }\n // image viewer tools check\n if (type === 'viewer' && tools) {\n const toolsId = `${id}-tools`;\n // update image viewer tools datasource\n const widgetToolsDataSource = this.getWidgetDataSource(toolsId);\n if (!widgetToolsDataSource) return;\n // set id\n widgetToolsDataSource.id = toolsId;\n // update data\n if (responseSection && !helpers.isEmpty(responseSection)) {\n this.one(toolsId).update(responseSection);\n } else {\n // unload the component without data\n this.one(toolsId).update(undefined);\n }\n }\n });\n\n // update tabs\n if (this.tabConfig) {\n const tabSection = sections.find(({ type }) => type === 'tabs');\n if (tabSection?.options?.tabsContents) {\n this.tabsContent = tabSection.options.tabsContents;\n }\n this.one(tabSection.id).updateOptions({\n id: this.id,\n root: this.pageConfig.tabs,\n slug: this.slug,\n currentTab: this.tab,\n localeService: this.localeService\n });\n this.one(tabSection.id).update(this.tabConfig);\n }\n }\n\n // set resource locale config\n // used by language switcher\n private setLocaleResourceConfig(response) {\n if (response?.locale) {\n this.localeService.setResourceConfig(response.locale);\n }\n }\n\n private updateHeadTitle({ title: resourceTitle }) {\n this.title = resourceTitle;\n const appName = this.configuration.get('name');\n const pageTitle = this.pageConfig.title;\n this.mainState.update('headTitle', [appName, _t(pageTitle), resourceTitle].join(' > '));\n }\n}\n","import { EventHandler } from '@net7/core';\nimport { ActivatedRoute, ParamMap, Router } from '@angular/router';\nimport { Subject } from 'rxjs';\nimport {\n takeUntil, switchMap, map, tap\n} from 'rxjs/operators';\nimport { MrLayoutStateService, LayoutState } from '../../services/layout-state.service';\nimport { MrResourceModalService } from '../../services/resource-modal.service';\nimport { MrResourceLayoutDS } from './resource-layout.ds';\n// import mock from './resource-layout-mock-mirador';\n// import mock from './resource-layout-mock-cambridge';\n\nexport class MrResourceLayoutEH extends EventHandler {\n dataSource: MrResourceLayoutDS;\n\n private route: ActivatedRoute;\n\n private router: Router;\n\n private layoutState: MrLayoutStateService;\n\n private modalService: MrResourceModalService;\n\n private destroy$: Subject<void> = new Subject();\n\n public listen() {\n this.innerEvents$.subscribe(({ type, payload }) => {\n switch (type) {\n case 'mr-resource-layout.init': {\n this.route = payload.route;\n this.router = payload.router;\n this.modalService = payload.modalService;\n const { slug, id } = this.route.snapshot.params;\n const { url } = this.route.snapshot;\n this.dataSource.tab = url[url.length - 1].path;\n this.dataSource.slug = slug;\n this.dataSource.id = id;\n this.layoutState = payload.layoutState;\n this.dataSource.onInit(payload);\n this.listenRoute();\n // scroll top\n window.scrollTo(0, 0);\n\n // emit signal\n this.emitOuter('init');\n } break;\n case 'mr-resource-layout.destroy':\n this.destroy$.next();\n break;\n default:\n console.warn('unhandled inner event of type', type);\n break;\n }\n });\n\n this.outerEvents$.subscribe(({ type, payload }) => {\n if (type.indexOf('openresourcemodal') !== -1) {\n const { id, type: resourceType } = payload;\n this.modalService.open(id, resourceType);\n }\n if (type.indexOf('thumbclick') !== -1) {\n const [sourceId] = type.split('.');\n const targetId = sourceId.replace('-tools', '');\n this.emitOuter('thumbclick', {\n targetId,\n thumbindex: payload\n });\n }\n if (type.indexOf('pagechange') !== -1) {\n const [sourceId] = type.split('.');\n const targetId = `${sourceId}-tools`;\n this.emitOuter('pagechange', {\n targetId,\n eventData: payload\n });\n }\n if (type.indexOf('download-pdf') !== -1) {\n this.dataSource.pdfRequest$(this.dataSource.id).subscribe((pdf) => {\n const blobObj = pdf as Blob;\n const a = document.createElement('a');\n const objectURL = URL.createObjectURL(blobObj);\n a.href = objectURL;\n a.download = `${this.dataSource.title || this.dataSource.slug}`;\n a.click();\n URL.revokeObjectURL(objectURL);\n });\n }\n // image viewer overlay events\n if (type.includes('overlayclick')) {\n this.emitOuter('showoverlaydetails', payload);\n }\n if (type.includes('overlaypagechange')) {\n this.emitOuter('hideoverlaydetails', payload);\n }\n });\n }\n\n private listenRoute() {\n this.route.paramMap.pipe(\n takeUntil(this.destroy$),\n tap(() => {\n this.layoutState.set('content', LayoutState.LOADING);\n }),\n map((params: ParamMap) => params.get('id')),\n switchMap((id) => this.dataSource.pageRequest$(id, (err) => {\n if (err.status === 404) {\n // getting not found path\n const { config } = this.router;\n const route404 = config.find(({ data }) => data?.id === 'page-404');\n const path404 = route404?.path || 'page-404';\n this.router.navigate([path404]);\n }\n console.warn(`Error loading resource layout for ${id}`, err.message);\n this.dataSource.id = id;\n this.layoutState.set('content', LayoutState.ERROR);\n }))\n ).subscribe((response) => {\n this.layoutState.set('content', LayoutState.SUCCESS);\n this.dataSource.handleResponse(response);\n // this.dataSource.handleResponse(mock);\n // scroll top\n window.scrollTo(0, 0);\n });\n }\n}\n","import { MrResourceLayoutDS } from './resource-layout.ds';\nimport { MrResourceLayoutEH } from './resource-layout.eh';\nimport * as DS from '../../data-sources';\nimport * as EH from '../../event-handlers';\n\nexport const MrResourceLayoutConfig = {\n layoutId: 'mr-resource-layout',\n widgets: [\n { id: 'mr-read-more' },\n { id: 'mr-metadata-readmore' },\n { id: 'mr-metadata-dynamic' }\n ],\n layoutDS: MrResourceLayoutDS,\n layoutEH: MrResourceLayoutEH,\n widgetsDataSources: DS,\n widgetsEventHandlers: EH,\n options: {\n // TODO\n },\n};\n","import { EventHandler } from '@net7/core';\nimport { first } from 'rxjs/operators';\nimport { MrImageViewerDS } from '../data-sources/image-viewer.ds';\n\nexport class MrImageViewerEH extends EventHandler {\n layoutId: string;\n\n dataSource: MrImageViewerDS;\n\n public listen() {\n this.innerEvents$.subscribe(({ type, payload }) => {\n switch (type) {\n case `${this.dataSource.id}.click`:\n this.emitOuter('click', payload);\n break;\n case `${this.dataSource.id}.pagechange`:\n this.emitOuter('pagechange', payload);\n break;\n default:\n // console.warn('unhandled event of type', type);\n break;\n }\n });\n\n this.outerEvents$.subscribe(({ type, payload }) => {\n switch (type) {\n case 'mr-resource-layout.init':\n this.listenToViewer();\n break;\n case 'mr-resource-layout.thumbclick':\n if (payload.targetId === this.dataSource.id) {\n this.dataSource.changePage(payload.thumbindex);\n }\n break;\n case 'mr-resource-layout.overlaycloseclick':\n this.dataSource.overlayCloseClick();\n break;\n case 'mr-resource-layout.pagechange':\n // Silent\n break;\n default:\n // console.warn('unhandled event of type', type);\n break;\n }\n });\n }\n\n listenToViewer() {\n // loaded\n this.dataSource.viewerLoaded$.pipe(\n first()\n ).subscribe(() => {\n const { viewer } = this.dataSource;\n viewer.addHandler('page', (eventData) => {\n this.emitOuter('pagechange', eventData);\n });\n });\n\n this.dataSource.overlayEvents$.subscribe(({ type, payload }) => {\n this.emitOuter(`overlay${type}`, {\n targetId: this.dataSource.id,\n ...payload\n });\n });\n }\n}\n","import { EventHandler } from '@net7/core';\nimport { MrImageViewerToolsDS } from '../data-sources/image-viewer-tools.ds';\n\nexport class MrImageViewerToolsEH extends EventHandler {\n dataSource: MrImageViewerToolsDS;\n\n public listen() {\n this.innerEvents$.subscribe(({ type, payload }) => {\n switch (type) {\n case `${this.dataSource.id}.click`:\n if (payload.thumbindex !== undefined) {\n const index = payload.thumbindex;\n this.dataSource.handleThumbs(index);\n this.emitOuter('thumbclick', index);\n break;\n }\n if (payload === 'close-description') {\n this.dataSource.toggleDescription();\n break;\n }\n if (payload === 'toggle-description') {\n this.dataSource.toggleDescription();\n break;\n }\n if (payload === 'toggle-thumbs') {\n this.dataSource.toggleThumbs();\n break;\n }\n if (payload === 'next') {\n // let index = this.dataSource.retrieveIndex();\n // this.dataSource.handleThumbsNext(index);\n // let updatedIndex = this.dataSource.retrieveIndex();\n // this.emitOuter('thumbclick', updatedIndex);\n this.dataSource.scrollRight();\n break;\n }\n if (payload === 'prev') {\n // let index = this.dataSource.retrieveIndex();\n // this.dataSource.handleThumbsPrev(index);\n // let updatedIndex = this.dataSource.retrieveIndex();\n // this.emitOuter('thumbclick', updatedIndex);\n this.dataSource.scrollLeft();\n break;\n }\n break;\n default:\n // console.warn('unhandled event of type', type);\n break;\n }\n });\n\n this.outerEvents$.subscribe(({ type, payload }) => {\n // console.log(payload);\n switch (type) {\n case 'mr-resource-layout.init':\n case 'mr-resource-layout.thumbclick':\n // Silent\n break;\n case 'mr-resource-layout.pagechange':\n if (payload.targetId === this.dataSource.id) {\n this.dataSource.handlePageChange(payload.eventData);\n }\n break;\n default:\n // console.warn('unhandled event of type', type);\n break;\n }\n });\n }\n}\n","import { EventHandler } from '@net7/core';\nimport { MrImageViewerOverlayDetailsDS } from '../data-sources/image-viewer-overlay-details.ds';\n\nexport class MrImageViewerOverlayDetailsEH extends EventHandler {\n dataSource: MrImageViewerOverlayDetailsDS;\n\n public listen() {\n this.outerEvents$.subscribe(({ type, payload }) => {\n switch (type) {\n case 'mr-resource-layout.hideoverlaydetails':\n case 'mr-resource-layout.overlaycloseclick':\n this.dataSource.hide();\n break;\n case 'mr-resource-layout.showoverlaydetails': {\n const target = `${payload.targetId}-overlay-details`;\n if (target === this.dataSource.id) {\n this.dataSource.show(payload);\n }\n } break;\n default:\n // console.warn('unhandled event of type', type);\n break;\n }\n });\n }\n}\n","//---------------------------\n// METADATA-VIEWER.ts\n//---------------------------\n\nimport { Component, Input } from '@angular/core';\n\n/**\n * Interface for MetadataViewerComponent's \"items\"\n * @property label (optional)\n * @property value (optional)\n */\nexport interface MetadataViewerItems {\n /**\n * the item's label\n */\n label?: string;\n /**\n * the value for @property label\n */\n value?: string;\n /**\n * the anchorId of the metadata\n */\n anchorId?: string;\n}\n\n/**\n * Interface for MetadataViewerComponent's \"data\"\n *\n * @property title (optional)\n * @property items (optional)\n * @property group (optional)\n * @property classes (optional)\n */\nexport interface MetadataViewerChildGroups {\n /**\n * component header (if root)\n * or group title\n */\n title?: string;\n /**\n * the metadata items\n */\n items?: MetadataViewerItems[];\n /**\n * the CHILD metadata groups\n */\n group?: MetadataViewerChildGroups[];\n /**\n * additional html classes\n */\n classes?: any;\n}\n\n/**\n * Interface for MetadataViewerComponent's \"data\"\n *\n * @property group (required)\n * @property classes (optional)\n */\nexport interface MetadataViewerData {\n /**\n * the CHILD metadata groups\n */\n group: MetadataViewerChildGroups[];\n /**\n * additional html classes\n */\n classes?: any;\n}\n\n@Component({\n selector: 'mr-metadata-readmore',\n templateUrl: './metadata-with-readmore.html'\n})\nexport class MrMetadataReadmoreComponent {\n @Input() data: MetadataViewerData;\n\n @Input() emit: any;\n}\n","<div *ngIf=\"data\"\n class=\"n7-metadata-viewer\">\n <!-- Metadata groups wrapper -->\n <div class=\"n7-metadata-viewer__wrapper {{ data.classes || ''}}\"\n *ngFor=\"let grp of data.group\">\n <!-- For each data group, render it -->\n <ng-container *ngTemplateOutlet=\"group; context:{$implicit: grp}\"></ng-container>\n </div>\n</div>\n\n<!-- Template for Metadata.group -->\n<ng-template #group\n let-grp>\n <div *ngIf=\"grp.title || grp.items\"\n class=\"n7-metadata-viewer__group {{ grp.classes || '' }}\">\n <div class=\"n7-metadata-viewer__group-title\"\n *ngIf=\"grp.title\">{{grp.title}}</div>\n <div class=\"n7-metadata-viewer__group-content\"\n *ngIf=\"grp.items\">\n <!-- \"read more\" enabled on the metadata group -->\n <mr-read-more [data]=\"grp.groupReadmore\">\n <div class=\"n7-metadata-viewer__item\"\n *ngFor=\"let i of grp.items\">\n <span *ngIf=\"i.anchorId\" id=\"{{ i.anchorId }}\"></span>\n <span *ngIf=\"i.label\" class=\"n7-metadata-viewer__item-label\">\n {{ i.label }}\n </span>\n <!-- \"read more\" enabled on the metadata value field -->\n <mr-read-more [data]=\"grp.readmore\">\n <span *ngIf=\"i.value\"\n class=\"n7-metadata-viewer__item-value\"\n [innerHTML]=\"i.value\">\n </span>\n </mr-read-more>\n </div>\n </mr-read-more>\n </div>\n </div>\n <!-- Render all child groups -->\n <div *ngIf=\"grp.group\">\n <div class=\"n7-metadata-viewer__group-wrapper\"\n *ngFor=\"let grp of grp.group\">\n <ng-container *ngTemplateOutlet=\"group; context:{$implicit: grp}\"></ng-container>\n </div>\n </div>\n</ng-template>\n","import { Component, Input } from '@angular/core';\n\n@Component({\n selector: 'mr-metadata-dynamic',\n templateUrl: './metadata-dynamic.html'\n})\nexport class MrMetadataDynamicComponent {\n @Input() data: any;\n\n @Input() emit: (type: string, payload?: any) => void;\n\n fakeEmit = (type, payload?) => {\n if (!this.emit) {\n return;\n }\n this.emit(type, payload);\n };\n}\n","<ng-container *ngIf=\"data.data\">\n <ng-container *ngFor=\"let group of data.data; index as i\">\n <ng-container *ngTemplateOutlet=\"metadataViewer; context:{$implicit: group}\"></ng-container>\n </ng-container>\n</ng-container>\n\n<ng-template #metadataViewer let-group>\n <div class=\"mr-content-block mr-content-block-metadata\">\n <div *ngIf=\"group\" class=\"mr-metadata-dynamic\" [ngClass]=\"{'mr-metadata-dynamic-accordion' : group.title}\">\n \n <!-- Header accordion -->\n <div *ngIf=\"group.options && (group.options.showHeader !== false) && group.title\" class=\"mr-metadata-dynamic-accordion__header\">\n <span *ngIf=\"group.accordionId\" id=\"{{ group.accordionId }}\"></span>\n <n7-facet-header \n [data]=\"group.options\" \n [emit]=\"fakeEmit\"\n ></n7-facet-header>\n </div>\n\n <!-- Content -->\n <div *ngIf=\"group.options.isOpen\" class=\"mr-content-block__content\" [attr.id]=\"group.id\">\n <mr-read-more [data]=\"group.readmore\">\n <ng-container *ngIf=\" group?.options?.readmore || group?.options?.groupReadmore;\n else wihoutReadmore\">\n <mr-metadata-readmore\n [data]=\"group.group\">\n </mr-metadata-readmore>\n </ng-container>\n <ng-template #wihoutReadmore>\n <n7-metadata-viewer\n [data]=\"group.group\">\n </n7-metadata-viewer>\n </ng-template>\n </mr-read-more>\n </div>\n\n </div>\n </div>\n</ng-template>\n","import {\n Component, OnInit, OnDestroy, AfterViewInit\n} from '@angular/core';\nimport { ActivatedRoute, Data, Router } from '@angular/router';\nimport {\n AbstractLayout,\n CommunicationService,\n LayoutsConfigurationService,\n ConfigurationService,\n MainStateService\n} from '@net7/boilerplate-common';\nimport { MrLayoutStateService } from '../../services/layout-state.service';\nimport { MrResourceModalService } from '../../services/resource-modal.service';\nimport { MrResourceLayoutConfig as config } from './resource-layout.config';\nimport { MrImageViewerEH } from '../../event-handlers/image-viewer.eh';\nimport { MrTextViewerEH } from '../../event-handlers/text-viewer.eh';\nimport { MrParallelTextViewerEH } from '../../event-handlers/parallel-text-viewer.eh';\nimport { MrImageViewerToolsEH } from '../../event-handlers/image-viewer-tools.eh';\nimport { MrCollectionEH } from '../../event-handlers/collection.eh';\nimport { MrImageViewerOverlayDetailsEH } from '../../event-handlers/image-viewer-overlay-details.eh';\nimport { MrButtonEH, MrMetadataDynamicEH, MrNetworkResourceEH } from '../../event-handlers';\nimport {\n MrBreadcrumbsDS,\n MrButtonDS,\n MrCollectionDS,\n MrImageViewerDS,\n MrImageViewerToolsDS,\n MrInfoBoxDS,\n MrInnerTitleDS,\n MrItemPreviewDS,\n MrMetadataDS,\n MrTextViewerDS,\n MrParallelTextViewerDS,\n MrResourceTabsDS,\n MrImageViewerOverlayDetailsDS,\n MrMetadataDynamicDS,\n MrImageViewerIiifDS,\n MrNetworkResourceDS,\n MrEmbeddedContentDS,\n} from '../../data-sources';\nimport { MrMapDS } from '../../data-sources/map.ds';\nimport { MrLocaleService } from '../../services/locale.service';\n\nconst DATASOURCE_MAP = {\n breadcrumbs: MrBreadcrumbsDS,\n button: MrButtonDS,\n collection: MrCollectionDS,\n info: MrInfoBoxDS,\n map: MrMapDS,\n metadata: MrMetadataDS,\n preview: MrItemPreviewDS,\n tabs: MrResourceTabsDS,\n text: MrTextViewerDS,\n title: MrInnerTitleDS,\n viewer: MrImageViewerDS,\n 'viewer-tools': MrImageViewerToolsDS,\n 'viewer-overlay-details': MrImageViewerOverlayDetailsDS,\n 'text-viewer': MrTextViewerDS,\n 'parallel-text-viewer': MrParallelTextViewerDS,\n 'metadata-dynamic': MrMetadataDynamicDS,\n 'viewer-iiif': MrImageViewerIiifDS,\n 'network-resource': MrNetworkResourceDS,\n 'embedded-content': MrEmbeddedContentDS,\n};\n\nconst EVENTHANDLER_MAP = {\n viewer: MrImageViewerEH,\n 'viewer-tools': MrImageViewerToolsEH,\n 'viewer-overlay-details': MrImageViewerOverlayDetailsEH,\n 'text-viewer': MrTextViewerEH,\n 'parallel-text-viewer': MrParallelTextViewerEH,\n collection: MrCollectionEH,\n 'metadata-dynamic': MrMetadataDynamicEH,\n button: MrButtonEH,\n 'network-resource': MrNetworkResourceEH,\n // map: MrMapEH\n};\n\n@Component({\n selector: 'mr-resource-layout',\n templateUrl: './resource-layout.html',\n})\nexport class MrResourceLayoutComponent extends AbstractLayout implements OnInit, OnDestroy,\nAfterViewInit {\n private routerData: Data;\n\n constructor(\n layoutsConfiguration: LayoutsConfigurationService,\n private activatedRoute: ActivatedRoute,\n private configuration: ConfigurationService,\n private communication: CommunicationService,\n private mainState: MainStateService,\n private route: ActivatedRoute,\n private router: Router,\n public layoutState: MrLayoutStateService,\n public modalService: MrResourceModalService,\n public localeService: MrLocaleService,\n ) {\n super(layoutsConfiguration.get('MrResourceLayoutConfig') || config);\n }\n\n protected initPayload() {\n return {\n routerData: this.routerData,\n configuration: this.configuration,\n communication: this.communication,\n mainState: this.mainState,\n layoutState: this.layoutState,\n modalService: this.modalService,\n localeService: this.localeService,\n options: this.config.options || {},\n route: this.route,\n router: this.router\n };\n }\n\n ngOnInit() {\n this.activatedRoute.data.subscribe((routerData) => {\n this.layoutState.add('content');\n this.routerData = routerData;\n this.loadWidgets();\n this.onInit();\n });\n }\n\n ngAfterViewInit() {\n const { configId } = this.routerData;\n const timeout = this.configuration.get(configId).pageLoad || 1000;\n\n // If a fragment (#id) is present in the url, the page scroll to that fragment\n this.route.fragment.subscribe((fragment) => {\n if (fragment) {\n setTimeout(() => {\n const element = document.getElementById(fragment);\n if (element) {\n // Open read-more if present\n const readMoreElement = element\n ?.closest('.mr-read-more__content')\n ?.closest('.mr-read-more.is-collapsed');\n if (readMoreElement) {\n const readMoreButton = readMoreElement.querySelector(\n ':scope > .mr-read-more__btn'\n );\n if (readMoreButton instanceof HTMLElement) {\n readMoreButton.click();\n }\n // Scroll\n setTimeout(() => element.scrollIntoView({ behavior: 'smooth' }), 300);\n } else {\n // Scroll\n element.scrollIntoView({ behavior: 'smooth' });\n }\n }\n }, timeout);\n }\n });\n }\n\n ngOnDestroy() {\n this.onDestroy();\n }\n\n loadWidgets() {\n const { configId } = this.routerData;\n const { top, content } = this.configuration.get(configId).sections;\n const sections = top.concat(content);\n this.widgets = [];\n if (sections) {\n sections.forEach(({\n id, type, options, tools\n }) => {\n const widgetOptions = options || {};\n widgetOptions.localeService = this.localeService;\n // Add route to metadata-dynamic options\n if (type === 'metadata-dynamic') {\n options.route = this.route;\n }\n this.widgets.push({\n id,\n options: widgetOptions,\n dataSource: DATASOURCE_MAP[type],\n eventHandler: EVENTHANDLER_MAP[type]\n });\n // image viewer overlay details\n if (type === 'viewer') {\n this.widgets.push({\n id: `${id}-overlay-details`,\n options: widgetOptions,\n dataSource: DATASOURCE_MAP[`${type}-overlay-details`],\n eventHandler: EVENTHANDLER_MAP[`${type}-overlay-details`]\n });\n }\n // image viewer tools\n if (type === 'viewer' && tools) {\n this.widgets.push({\n id: `${id}-tools`,\n options: widgetOptions,\n dataSource: DATASOURCE_MAP[`${type}-tools`],\n eventHandler: EVENTHANDLER_MAP[`${type}-tools`]\n });\n }\n });\n }\n }\n}\n","<div class=\"mr-resource mr-layout\" \n *ngIf=\"lb.dataSource && lb.dataSource.pageConfig\"\n [ngClass]=\"{\n 'is-loading': ( layoutState.get$('content') | async ) == 'LOADING',\n 'is-error': ( layoutState.get$('content') | async ) == 'ERROR'\n }\">\n <!-- RESOURCE LAYOUT CONTENT -->\n <ng-container [ngSwitch]=\"layoutState.get$('content') | async\">\n <!-- loading -->\n <ng-container *ngSwitchCase=\"'LOADING'\">\n <div class=\"mr-layout__loader\">\n <n7-loader></n7-loader>\n </div>\n </ng-container>\n\n <!-- error -->\n <ng-container *ngSwitchCase=\"'ERROR'\">\n <div class=\"mr-layout__error\">\n <h2>{{ lb.dataSource.errorTitle }}</h2>\n <p>{{ lb.dataSource.errorDescription }}</p>\n </div>\n </ng-container>\n\n <!-- success -->\n <ng-container *ngSwitchCase=\"'SUCCESS'\">\n <ng-container *ngIf=\"lb.dataSource.pageConfig.sections as sections\">\n <!-- Pass the list of blocks to render to the block template -->\n <div class=\"mr-resource__top\">\n <ng-container *ngTemplateOutlet=\"blocks; context: { $implicit: sections.top }\"></ng-container>\n </div>\n <div class=\"mr-resource__content mr-side-margin\">\n <ng-container *ngTemplateOutlet=\"blocks; context: { $implicit: sections.content }\"></ng-container>\n </div>\n </ng-container>\n </ng-container>\n\n </ng-container>\n</div>\n\n<ng-template #blocks let-list>\n <ng-container *ngFor=\"let section of list\">\n <section *ngIf=\"lb.widgets[section.id].ds.out$ | async\"\n class=\"{{ 'mr-resource__section mr-resource__' + section.type }}\">\n <ng-container [ngSwitch]=\"section.type\">\n\n <!-- TABS -->\n <ng-container *ngSwitchCase=\"'tabs'\">\n <ng-container *ngFor=\"let tab of lb.widgets[section.id].ds.out$ | async\">\n <n7-anchor-wrapper [data]=\"tab.anchor\" [classes]=\"tab.classes\" *ngIf=\"!tab.hideTab\">\n <span class=\"mr-resource__tabs-item\">{{ tab.label }}</span>\n </n7-anchor-wrapper>\n </ng-container>\n </ng-container>\n\n <!-- INNER TITLE -->\n <ng-container *ngSwitchCase=\"'title'\">\n <div class=\"mr-resource__title-content mr-side-margin\">\n <n7-inner-title \n [data]=\"lb.widgets[section.id].ds.out$ | async\"\n [emit]=\"lb.widgets[section.id].emit\">\n </n7-inner-title>\n </div>\n </ng-container>\n\n <!-- CUSTOM BUTTON -->\n <ng-container *ngSwitchCase=\"'button'\">\n <div class=\"mr-resource__button\">\n <n7-button \n [data]=\"lb.widgets[section.id].ds.out$ | async\"\n [emit]=\"lb.widgets[section.id].emit\">\n </n7-button>\n </div>\n </ng-container>\n \n <!-- IMAGE VIEWER IIIF -->\n <ng-container *ngSwitchCase=\"'viewer-iiif'\">\n <n7-mirador\n (contextmenu)=\"lb.dataSource.hasContextMenu()\"\n [data]=\"lb.widgets[section.id].ds.out$ | async\">\n </n7-mirador>\n </ng-container>\n \n <!-- IMAGE VIEWER -->\n <ng-container *ngSwitchCase=\"'viewer'\">\n\n <n7-image-viewer \n [data]=\"lb.widgets[section.id].ds.out$ | async\" \n [emit]=\"lb.widgets[section.id].emit\">\n </n7-image-viewer>\n <!-- IMAGE VIEWER TOOLS -->\n <n7-image-viewer-tools *ngIf=\"section.tools\" \n [data]=\"lb.widgets[section.id + '-tools'].ds.out$ | async\" \n [emit]=\"lb.widgets[section.id + '-tools'].emit\">\n </n7-image-viewer-tools>\n <!-- IMAGE VIEWER OVERLAY DETAILS -->\n <div *ngIf=\"lb.widgets[section.id + '-overlay-details'].ds.out$ | async as viewerDetailsData\" \n class=\"mr-resource__viewer-overlay-details\">\n <div class=\"mr-resource__viewer-overlay-details__close\">\n <a class=\"mr-resource__viewer-overlay-details__close-link\" \n (click)=\"lb.eventHandler.emitOuter('overlaycloseclick')\">\n <span class=\"n7-icon-close\"></span>\n </a>\n </div>\n <n7-item-preview \n [data]=\"viewerDetailsData\" \n [emit]=\"lb.widgets[section.id + '-overlay-details'].emit\">\n </n7-item-preview>\n </div>\n\n </ng-container>\n \n <!-- METADATA VIEWER -->\n <ng-container *ngSwitchCase=\"'metadata'\">\n \n <div class=\"mr-content-block mr-content-block-metadata\">\n <h3 *ngIf=\"section.title\" class=\"mr-content-block__title\">\n {{ section.title }}\n </h3>\n <div class=\"mr-content-block__content\">\n <mr-read-more [data]=\"section.readmore\">\n <ng-container *ngIf=\" section?.options?.readmore || section?.options?.groupReadmore;\n else wihoutReadmore\">\n <mr-metadata-readmore\n [data]=\"lb.widgets[section.id].ds.out$ | async\"\n [emit]=\"lb.widgets[section.id].emit\">\n </mr-metadata-readmore>\n </ng-container>\n <ng-template #wihoutReadmore>\n <n7-metadata-viewer\n [data]=\"lb.widgets[section.id].ds.out$ | async\"\n [emit]=\"lb.widgets[section.id].emit\">\n </n7-metadata-viewer>\n </ng-template>\n </mr-read-more>\n </div>\n </div>\n \n </ng-container>\n \n <!-- METADATA DYNAMIC -->\n <ng-container *ngSwitchCase=\"'metadata-dynamic'\">\n <mr-metadata-dynamic \n [data]=\"lb.widgets[section.id].ds.out$ | async\"\n [emit]=\"lb.widgets[section.id].emit\">\n </mr-metadata-dynamic> \n </ng-container>\n \n <!-- COLLECTION -->\n <ng-container *ngSwitchCase=\"'collection'\">\n <ng-container *ngIf=\"lb.widgets[section.id].ds.out$ | async as collection$\">\n <div *ngIf=\"collection$.items?.length > 0\" class=\"mr-content-block mr-content-block-collection\">\n <h3 *ngIf=\"section.title\" class=\"mr-content-block__title\">\n {{ section.title }}\n </h3>\n <div class=\"mr-content-block__content {{ section.grid ? 'n7-grid-' + section.grid : '' }}\">\n <n7-item-preview *ngFor=\"let item of collection$?.items\"\n [data]=\"item\" [emit]=\"lb.widgets[section.id].emit\">\n </n7-item-preview>\n </div>\n </div>\n </ng-container>\n </ng-container>\n \n <!-- ITEM PREVIEW -->\n <ng-container *ngSwitchCase=\"'preview'\">\n <div class=\"mr-content-block mr-content-block-item-preview\">\n <h3 *ngIf=\"section.title\" class=\"mr-content-block__title\">\n {{ section.title }}\n </h3>\n <div class=\"mr-content-block__content\">\n <n7-item-preview [data]=\"lb.widgets[section.id].ds.out$ | async\" [emit]=\"lb.widgets[section.id].emit\"> \n </n7-item-preview>\n </div>\n </div>\n </ng-container>\n \n <!-- TEXT VIEWER -->\n <ng-container *ngSwitchCase=\"'text-viewer'\">\n <div class=\"mr-content-block mr-content-block-text-viewer\">\n <h3 *ngIf=\"section.title\" class=\"mr-content-block__title\">\n {{ section.title }}\n </h3>\n <div class=\"mr-content-block__content\">\n <n7-text-viewer [data]=\"lb.widgets[section.id].ds.out$ | async\" [emit]=\"lb.widgets[section.id].emit\">\n </n7-text-viewer>\n </div>\n </div>\n </ng-container>\n\n <!-- PARALLEL TEXT VIEWER -->\n <ng-container *ngSwitchCase=\"'parallel-text-viewer'\">\n <div class=\"mr-content-block mr-content-block-text-viewer mr-content-block-parallel-text-viewer\">\n <h3 *ngIf=\"section.title\" class=\"mr-content-block__title\">\n {{ section.title }}\n </h3>\n <div class=\"mr-content-block__content\">\n <n7-parallel-text-viewer [data]=\"lb.widgets[section.id].ds.out$ | async\" [emit]=\"lb.widgets[section.id].emit\">\n </n7-parallel-text-viewer>\n </div>\n </div>\n </ng-container>\n\n <!-- MAP -->\n <ng-container *ngSwitchCase=\"'map'\">\n <div class=\"mr-content-block mr-content-block-map\">\n <div class=\"mr-content-block__content\">\n <n7-map [data]=\"lb.widgets[section.id].ds.out$ | async\" [emit]=\"lb.widgets[section.id].emit\"></n7-map>\n </div>\n </div>\n </ng-container>\n\n <!-- NETWORK -->\n <ng-container *ngSwitchCase=\"'network-resource'\">\n <div class=\"mr-content-block mr-content-block-network\">\n <div class=\"mr-content-block__content\">\n <div id=\"demo-network\" class=\"network-visualization\"><p>Network</p></div>\n </div>\n </div>\n </ng-container>\n\n <!-- EMBEDDED CONTENT -->\n <ng-container *ngSwitchCase=\"'embedded-content'\">\n <div class=\"mr-content-block mr-content-block-embedded-content\">\n <div class=\"mr-content-block__content\">\n <div class=\"mr-wp-content\" [innerHTML]=\"lb.widgets[section.id].ds.out$ | async | keepHtml\"></div>\n </div>\n </div>\n </ng-container>\n \n <!-- INFO BOX -->\n <ng-container *ngSwitchCase=\"'info-box'\">\n <div class=\"mr-content-block mr-content-block-info-box\">\n <h3 *ngIf=\"section.title\" class=\"mr-content-block__title\">\n {{ section.title }}\n </h3>\n <div class=\"mr-content-block__content\">\n <div class=\"info-box__mock\">info-box</div> \n </div>\n </div>\n </ng-container>\n \n <!-- BREADCRUMBS -->\n <ng-container *ngSwitchCase=\"'breadcrumbs'\">\n <n7-breadcrumbs [data]=\"lb.widgets[section.id].ds.out$ | async\">\n </n7-breadcrumbs>\n </ng-container>\n\n </ng-container>\n </section>\n </ng-container>\n</ng-template>\n","import { _t, LayoutDataSource } from '@net7/core';\nimport { MrSearchService } from '../../services/search.service';\n\nexport class SearchFacetsLayoutDS extends LayoutDataSource {\n private searchService: MrSearchService;\n\n private inputsDS: {\n [key: string]: any;\n } = {};\n\n public searchConfig;\n\n public localeService;\n\n public facets;\n\n public redirectPath;\n\n public redirectLabel;\n\n onInit(payload) {\n this.searchService = payload.searchService;\n this.localeService = payload.localeService;\n this.searchConfig = this.searchService.getConfig();\n this.facets = this.searchConfig.facets;\n this.initInputs();\n\n if (this.searchConfig.facets.redirectLink) {\n this.initRedirectLink(this.searchConfig.facets.redirectLink);\n }\n }\n\n initInputs() {\n // set components data\n this.facets.sections.forEach(({ header, inputs }) => {\n [header, ...inputs]\n .filter((input) => input)\n .forEach((input) => {\n // set id\n const widgetDataSource = this.getWidgetDataSource(input.id);\n widgetDataSource.id = input.id;\n // caching DS for next updates\n this.inputsDS[input.id] = widgetDataSource;\n // first update\n if (input.data) {\n widgetDataSource.update(input.data);\n }\n });\n });\n }\n\n initRedirectLink(redirectData) {\n const locale = this.localeService.getLocale();\n this.redirectLabel = _t(redirectData.label);\n this.redirectPath = redirectData.paths[locale];\n }\n\n updateInputValue(id, newValue) {\n const ds = this.inputsDS[id];\n ds.setValue(newValue, ds.value !== newValue);\n }\n\n updateInputData(id: string, newData) {\n const ds = this.inputsDS[id];\n ds.update({\n ...ds.input,\n ...newData\n });\n // refresh selected\n ds.setValue(ds.value, true);\n }\n\n clearInput(id: string) {\n const ds = this.inputsDS[id];\n ds.clear();\n ds.setValue(ds.value, true);\n }\n\n clearInputs() {\n Object.keys(this.inputsDS).forEach((id) => {\n this.clearInput(id);\n });\n }\n}\n","import { EventHandler } from '@net7/core';\nimport { Subject } from 'rxjs';\nimport { debounceTime, takeUntil, filter } from 'rxjs/operators';\nimport {\n MrSearchService,\n INPUT_STATE_CONTEXT,\n FACET_STATE_CONTEXT,\n FACETS_REQUEST_STATE_CONTEXT,\n} from '../../services/search.service';\n\ninterface ChangedSubjects {\n [key: string]: Subject<any>;\n}\n\nexport class SearchFacetsLayoutEH extends EventHandler {\n changed$: ChangedSubjects = {};\n\n private destroyed$: Subject<void> = new Subject();\n\n private searchService: MrSearchService;\n\n public listen() {\n this.innerEvents$.subscribe(({ type, payload }) => {\n switch (type) {\n case 'mr-search-facets-layout.init':\n this.searchService = payload.searchService;\n // listeners\n this.initChangedListener(this.searchService.getConfig());\n this.initStateListener();\n // init\n this.dataSource.onInit(payload);\n this.emitOuter('facetloaded');\n break;\n\n case 'mr-search-facets-layout.destroy':\n this.destroyed$.next();\n break;\n\n default:\n break;\n }\n });\n\n this.outerEvents$.subscribe(({ type, payload }) => {\n if (type.indexOf('change')) {\n this.changed$[payload.id].next(payload);\n }\n });\n }\n\n initChangedListener({ facets }) {\n facets.sections.forEach((section) => {\n const sources: {\n id: string;\n delay: number;\n }[] = [];\n\n if (section.header) {\n const { id, delay } = section.header;\n sources.push({ id, delay });\n }\n section.inputs.forEach(({ id, delay }) => {\n sources.push({ id, delay });\n });\n sources.forEach((source) => {\n this.changed$[source.id] = new Subject();\n this.changed$[source.id].pipe(\n debounceTime(source.delay || 1)\n ).subscribe(({ id, value }) => {\n this.searchService.setState(INPUT_STATE_CONTEXT, id, value);\n });\n });\n });\n }\n\n initStateListener() {\n // listener for input updates\n this.searchService.getState$(INPUT_STATE_CONTEXT)\n .pipe(\n takeUntil(this.destroyed$),\n filter(({ lastUpdated }) => this.dataSource.inputsDS[lastUpdated])\n ).subscribe(({ lastUpdated, state }) => {\n const newValue = state[lastUpdated];\n if (newValue === null) {\n this.dataSource.clearInput(lastUpdated);\n } else {\n this.dataSource.updateInputValue(lastUpdated, newValue);\n }\n });\n\n // listener for facet updates\n this.searchService.getState$(FACET_STATE_CONTEXT)\n .pipe(\n takeUntil(this.destroyed$),\n filter(({ lastUpdated }) => this.dataSource.inputsDS[lastUpdated])\n ).subscribe(({ lastUpdated, state }) => {\n const newData = state[lastUpdated];\n this.dataSource.updateInputData(lastUpdated, newData);\n });\n\n // listener for facet header updates\n this.searchService.getState$(FACETS_REQUEST_STATE_CONTEXT, 'success')\n .pipe(\n takeUntil(this.destroyed$)\n ).subscribe((response) => {\n const { facets } = response;\n Object.keys(facets).forEach((id) => {\n const { total_count: totalCount } = facets[id];\n this.dataSource.updateInputValue(`header-${id}`, totalCount);\n });\n });\n }\n}\n","import { SearchFacetsLayoutDS } from './search-facets-layout.ds';\nimport { SearchFacetsLayoutEH } from './search-facets-layout.eh';\nimport * as DS from '../../data-sources';\nimport * as EH from '../../event-handlers';\n\nexport const SearchFacetsLayoutConfig = {\n layoutId: 'mr-search-facets-layout',\n widgets: [],\n layoutDS: SearchFacetsLayoutDS,\n layoutEH: SearchFacetsLayoutEH,\n widgetsDataSources: DS,\n widgetsEventHandlers: EH,\n layoutOptions: {}\n};\n","import { DataSource, _t } from '@net7/core';\nimport { InputTextData } from '@net7/components';\nimport { FacetDataSource } from './facet-datasource';\n\ntype FACET_VALUE = string | number | null;\n\nexport class FacetTextDS extends DataSource implements FacetDataSource {\n id: string;\n\n value: FACET_VALUE;\n\n protected transform(data: InputTextData): InputTextData {\n return {\n ...data,\n placeholder: _t(data.placeholder)\n };\n }\n\n setValue(value: FACET_VALUE, update = false) {\n this.value = value;\n\n if (update) {\n this.update({\n ...this.input,\n value: value || value === 0 ? `${value}` : null\n });\n\n // fix element update\n const el = document.getElementById(this.output.id) as HTMLInputElement;\n if (el) {\n el.value = value || value === 0 ? `${value}` : null;\n }\n }\n }\n\n getValue = (): FACET_VALUE => this.value;\n\n clear() {\n this.value = null;\n }\n}\n","import { DataSource } from '@net7/core';\nimport { InputCheckbox, InputCheckboxData } from '@net7/components';\nimport { FacetDataSource } from './facet-datasource';\n\ntype FACET_VALUE = string[];\n\nexport class FacetCheckboxDS extends DataSource implements FacetDataSource {\n id: string;\n\n value: FACET_VALUE = [];\n\n protected transform(data: InputCheckboxData): InputCheckboxData {\n return data;\n }\n\n setValue(value: FACET_VALUE, update = false) {\n this.value = Array.isArray(value) ? value : [value];\n\n if (update) {\n const { checkboxes } = this.input;\n const updatedCheckboxes = checkboxes.map((checkbox: InputCheckbox) => ({\n ...checkbox,\n checked: this.value.indexOf(checkbox.payload) !== -1\n }));\n this.update({\n ...this.input,\n checkboxes: updatedCheckboxes\n });\n }\n }\n\n toggleValue({ inputPayload, value: isChecked }) {\n const exists = this.value.indexOf(inputPayload) !== -1;\n if (isChecked && !exists) {\n this.value.push(inputPayload);\n } else if (!isChecked && exists) {\n this.value.splice(this.value.indexOf(inputPayload), 1);\n }\n }\n\n getValue = (): FACET_VALUE => this.value;\n\n clear() {\n this.value = [];\n }\n}\n","import { DataSource } from '@net7/core';\nimport { InputSelectData } from '@net7/components';\nimport { FacetDataSource } from './facet-datasource';\n\ntype FACET_VALUE = string | null;\n\nexport class FacetSelectDS extends DataSource implements FacetDataSource {\n id: string;\n\n value: FACET_VALUE;\n\n protected transform(data: InputSelectData): InputSelectData {\n return data;\n }\n\n setValue(value: FACET_VALUE, update = false) {\n this.value = value;\n\n if (update) {\n const { options } = this.input;\n const updatedOptions = options.map((option) => ({\n ...option,\n selected: value === option.value\n }));\n this.update({\n ...this.input,\n options: updatedOptions\n });\n }\n }\n\n getValue = (): FACET_VALUE => this.value;\n\n clear() {\n this.value = null;\n }\n}\n","import { DataSource, _t } from '@net7/core';\nimport { InputLink, InputLinkData } from '@net7/components';\nimport { FacetDataSource } from './facet-datasource';\n\nconst ACTIVE_CLASS = 'is-active';\n\nexport class FacetLinkDS extends DataSource implements FacetDataSource {\n id: string;\n\n value = null;\n\n private isUpdate = false;\n\n protected transform(data: InputLinkData): InputLinkData {\n const { links } = data;\n // empty state check\n if (this.isUpdate && !links.length) {\n return {\n links: [{\n text: _t('global#facet_empty_text'),\n classes: 'empty-text-link',\n payload: null,\n }]\n };\n }\n return data;\n }\n\n setValue(value, update = false) {\n this.value = value;\n this.isUpdate = update;\n\n if (update) {\n const { links } = this.input;\n const updatedLinks = links.map((link: InputLink) => ({\n ...link,\n classes: this.value && (this.value === link.payload) ? ACTIVE_CLASS : ''\n }));\n this.update({\n ...this.input,\n links: updatedLinks\n });\n }\n }\n\n toggleValue(linkValue) {\n // update\n this.setValue(this.value !== linkValue ? linkValue : null, true);\n }\n\n getValue = () => this.value;\n\n clear() {\n this.value = null;\n }\n}\n","import { DataSource, _t } from '@net7/core';\nimport { FacetHeaderData } from '@net7/components';\nimport { FacetDataSource } from './facet-datasource';\n\ntype FACET_VALUE = string | null;\nconst ICON_OPEN = 'n7-icon-angle-up';\nconst ICON_CLOSE = 'n7-icon-angle-down';\n\nexport class FacetHeaderDS extends DataSource implements FacetDataSource {\n id: string;\n\n value: FACET_VALUE;\n\n protected transform(data: FacetHeaderData): FacetHeaderData {\n return {\n ...data,\n text: _t(data.text),\n iconRight: data.iconRight || ICON_OPEN\n };\n }\n\n setValue(value: FACET_VALUE, update = false) {\n this.value = value;\n\n if (update) {\n this.update({\n ...this.input,\n additionalText: value\n });\n }\n }\n\n getValue = (): FACET_VALUE => this.value;\n\n toggle() {\n let { iconRight } = this.output;\n iconRight = iconRight === ICON_OPEN ? ICON_CLOSE : ICON_OPEN;\n this.update({\n ...this.input,\n iconRight\n });\n }\n\n isOpen() {\n return this.output.iconRight === ICON_OPEN;\n }\n\n clear() {\n this.value = null;\n }\n}\n","import { EventHandler } from '@net7/core';\n\nexport class FacetHeaderEH extends EventHandler {\n public listen() {\n this.innerEvents$.subscribe(({ type }) => {\n switch (type) {\n case `${this.dataSource.id}.click`:\n this.dataSource.toggle();\n this.emitOuter('change', {\n isOpen: this.dataSource.isOpen(),\n id: this.dataSource.id,\n value: this.dataSource.value\n });\n break;\n default:\n break;\n }\n });\n }\n}\n","import { EventHandler } from '@net7/core';\n\nexport class FacetTextEH extends EventHandler {\n public listen() {\n this.innerEvents$.subscribe(({ type, payload }) => {\n switch (type) {\n case `${this.dataSource.id}.change`:\n if (typeof payload.value === 'string') {\n payload.value = payload.value.trim();\n }\n this.dataSource.setValue(payload.value);\n this.emitOuter('change', {\n ...payload,\n id: this.dataSource.id\n });\n break;\n default:\n break;\n }\n });\n }\n}\n","import { EventHandler } from '@net7/core';\n\nexport class FacetCheckboxEH extends EventHandler {\n public listen() {\n this.innerEvents$.subscribe(({ type, payload }) => {\n switch (type) {\n case `${this.dataSource.id}.change`:\n this.dataSource.toggleValue(payload);\n this.emitOuter('change', {\n value: this.dataSource.getValue(),\n id: this.dataSource.id\n });\n break;\n default:\n break;\n }\n });\n }\n}\n","import { EventHandler } from '@net7/core';\n\nexport class FacetSelectEH extends EventHandler {\n public listen() {\n this.innerEvents$.subscribe(({ type, payload }) => {\n switch (type) {\n case `${this.dataSource.id}.change`:\n this.dataSource.setValue(payload.value);\n this.emitOuter('change', {\n ...payload,\n id: this.dataSource.id\n });\n break;\n default:\n break;\n }\n });\n }\n}\n","import { EventHandler } from '@net7/core';\nimport { FacetLinkDS } from '../../data-sources/facets/facet-link.ds';\n\nexport class FacetLinkEH extends EventHandler {\n dataSource: FacetLinkDS\n\n public listen() {\n this.innerEvents$.subscribe(({ type, payload }) => {\n switch (type) {\n case `${this.dataSource.id}.change`:\n if (payload) {\n this.dataSource.toggleValue(payload);\n this.emitOuter('change', {\n value: this.dataSource.getValue(),\n id: this.dataSource.id\n });\n }\n break;\n default:\n break;\n }\n });\n }\n}\n","import { DataSource, _t } from '@net7/core';\nimport { InputLink, InputLinkData } from '@net7/components';\nimport { FacetDataSource } from './facet-datasource';\n\nconst ACTIVE_CLASS = 'is-active';\n\nexport class FacetLinkMultipleDS extends DataSource implements FacetDataSource {\n id: string;\n\n value = [];\n\n private isUpdate = false;\n\n protected transform(data: InputLinkData): InputLinkData {\n const { links } = data;\n // empty state check\n if (this.isUpdate && !links.length) {\n return {\n links: [{\n text: _t('global#facet_empty_text'),\n classes: 'empty-text-link',\n payload: null,\n }]\n };\n }\n return data;\n }\n\n setValue(value, update = false) {\n this.value = value;\n this.isUpdate = update;\n\n if (update) {\n const { links } = this.input;\n const updatedLinks = links.map((link: InputLink) => ({\n ...link,\n classes: this.value.includes(link.payload) ? ACTIVE_CLASS : ''\n }));\n this.update({\n ...this.input,\n links: updatedLinks\n });\n }\n }\n\n toggleValue(linkValue) {\n const exists = this.value.includes(linkValue);\n if (!exists) {\n this.value.push(linkValue);\n } else if (exists) {\n this.value.splice(this.value.indexOf(linkValue), 1);\n }\n\n // update\n this.setValue(this.value, true);\n }\n\n getValue = () => this.value;\n\n clear() {\n this.value = [];\n }\n}\n","import { EventHandler } from '@net7/core';\n\nexport class FacetLinkMultipleEH extends EventHandler {\n public listen() {\n this.innerEvents$.subscribe(({ type, payload }) => {\n switch (type) {\n case `${this.dataSource.id}.change`:\n if (payload) {\n this.dataSource.toggleValue(payload);\n this.emitOuter('change', {\n value: this.dataSource.getValue(),\n id: this.dataSource.id\n });\n }\n break;\n default:\n break;\n }\n });\n }\n}\n","export default {\n\n /**\n * Performs validation for a leaflet marker data.\n * If the data is invalid displays an error.\n *\n * @param coords data for a leaflet marker as array with data[0]\n * @returns true if the marker data is valid\n */\n isValidMarker({ lat, lon }): boolean {\n const test = (\n lat\n && lon\n && /^-?\\d+\\.\\d*$/.test(lat)\n && /^-?\\d+\\.\\d*$/.test(lon)\n );\n if (test) return true;\n console.error(`${lat}, ${lon} is not a valid marker!`);\n return false;\n }\n};\n","import { DataSource } from '@net7/core';\nimport { MapData, MarkerData } from '@net7/components';\nimport * as L from 'leaflet';\nimport 'leaflet.markercluster';\nimport { Subject } from 'rxjs';\nimport { FacetDataSource } from './facet-datasource';\nimport mapHelper from '../../helpers/map-helper';\n// leaflet is already present in the window,\n// a double import results in errors with tooltips.\n// declare const L;\n\nconst ACTIVE_CLASS = 'is-active';\n\ntype FACET_VALUE = string[];\n\ntype CadastralUnit = {\n text: string;\n payload: string;\n counter: number;\n args: {\n lat: string | null;\n lon: string | null;\n };\n}\n\nexport interface MarkerEvent {\n type: string;\n id: string;\n}\n\ninterface MarkerWithID extends MarkerData {\n id?: string;\n counter: number;\n slug: string;\n}\n\nexport class FacetMapDS extends DataSource implements FacetDataSource {\n id: string;\n\n value: FACET_VALUE = [];\n\n mapInstance;\n\n markerLayer;\n\n markerEvents$ = new Subject<MarkerEvent>();\n\n isUpdate = false;\n\n iconSize = this.options.libOptions.iconSize ?? [13, 20];\n\n private MARKER_ICON = L.icon({\n iconUrl: '/assets/pin.png',\n iconSize: this.iconSize,\n popupAnchor: [0, -15],\n className: 'marker-icon'\n });\n\n private MARKER_ICON_UNAVAILABLE = L.icon({\n iconUrl: '/assets/pin-unavailable.png',\n iconSize: this.iconSize,\n popupAnchor: [0, -15],\n className: 'marker-icon'\n });\n\n private MARKER_ICON_SELECTED = L.icon({\n iconUrl: '/assets/pin-selected.png',\n iconSize: this.iconSize,\n popupAnchor: [0, -15],\n className: 'marker-icon-selected'\n });\n\n private linksToMarkers(links: CadastralUnit[]): MarkerWithID[] {\n const markers: MarkerWithID[] = [];\n links\n .filter((d) => d.args?.lat && d.args?.lon)\n .forEach((d) => {\n if (Array.isArray(d.args.lat)) {\n d.args.lat.forEach((element, i) => {\n markers.push({\n coords: [+d.args.lat[i], +d.args.lon[i]] as [number, number],\n template: d.text,\n title: d.text,\n id: d.payload,\n slug: d.payload,\n counter: d.counter,\n });\n });\n } else {\n markers.push({\n coords: [+d.args.lat, +d.args.lon] as [number, number],\n template: d.text,\n title: d.text,\n id: d.payload,\n slug: d.payload,\n counter: d.counter,\n });\n }\n });\n return markers;\n }\n\n protected transform({ links }: { links: CadastralUnit[] }): MapData {\n const markers = this.linksToMarkers(links);\n const mapConfig = this.options?.libOptions;\n return {\n containerId: 'map-canvas',\n libOptions: {\n attributionControl: false,\n minZoom: 8,\n ...mapConfig\n },\n tileLayers: [{\n // url: 'https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png',\n url: mapConfig.layerUrl ?? 'https://{s}.basemaps.cartocdn.com/rastertiles/voyager_labels_under/{z}/{x}/{y}{r}.png',\n // url: 'https://cartodb-basemaps-{s}.global.ssl.fastly.net/light_all/{z}/{x}/{y}.png',\n options: null\n }],\n initialView: {\n center: mapConfig.center ?? [46.06, 11.21],\n zoom: mapConfig.zoom ?? 9\n },\n _setInstance: (map) => {\n this.mapInstance = map;\n this.buildMarkers(markers);\n\n if (mapConfig.autoCenter) {\n const bounds = new L\n .LatLngBounds(markers\n .map((d) => ({ lat: d.coords[0], lon: d.coords[1] }))\n .filter((d) => mapHelper.isValidMarker(d)));\n this.mapInstance.fitBounds(bounds);\n }\n },\n };\n }\n\n /**\n * Builds markers with a custom icon and adds them to the map.\n * @param markers an array of markers\n */\n private buildMarkers(markers: MarkerWithID[]) {\n if (!markers) return;\n const mapConfig = this.options?.libOptions;\n // remove all existing markers\n if (this.markerLayer) {\n this.markerLayer.clearLayers();\n this.mapInstance.removeLayer(this.markerLayer);\n }\n const markerGroup = L.markerClusterGroup(\n {\n maxClusterRadius: mapConfig.maxClusterRadius ?? 10,\n disableClusteringAtZoom: mapConfig.disableClusteringAtZoom ?? 8\n }\n );\n markers.forEach(({\n coords, template, id, slug, counter\n }) => {\n // create custom icon marker\n const icon = this.getIcon(id, counter);\n if (!icon) return;\n const newMarker = L.marker(coords, {\n icon,\n zIndexOffset: this.getZindex(id, counter)\n });\n if (id && slug) {\n newMarker.id = id;\n newMarker.counter = counter;\n newMarker.slug = slug;\n }\n newMarker\n // add the marker to the group\n .addTo(markerGroup)\n // add the on-click tooltip\n .bindPopup(template);\n\n newMarker.on('click', ({ target }) => {\n this.markerEvents$.next({\n type: 'marker.click',\n id: target.id\n });\n });\n\n newMarker.on('mouseover', ({ target }) => {\n target.openPopup();\n });\n\n newMarker.on('mouseout', ({ target }) => {\n target.closePopup();\n });\n });\n // add the markers to the map instance\n this.mapInstance.addLayer(markerGroup);\n // update the marker layer instance\n this.markerLayer = markerGroup;\n }\n\n setValue(value: FACET_VALUE, update = false) {\n // prevent the search service from assigning a plain string\n // eslint-disable-next-line no-param-reassign\n if (typeof value === 'string') value = [value];\n\n if (this.value !== value) {\n this.value = value;\n }\n this.isUpdate = update || this.value?.length === 0;\n\n if (update && this.input) {\n const { links } = this.input;\n const updatedLinks = links.map((link: CadastralUnit) => ({\n ...link,\n classes: this.value.includes(link.payload) ? ACTIVE_CLASS : ''\n }));\n // update marker icons\n if (this.markerLayer) {\n if (this.options.libOptions?.hideUnavailablePin) {\n this.buildMarkers(this.linksToMarkers(links));\n } else {\n this.markerLayer.eachLayer((marker) => {\n const { id } = marker;\n const counter = links.find(({ payload }) => payload === id)?.counter || 0;\n marker.getPopup()._source.setIcon(this.getIcon(id, counter))\n .setZIndexOffset(this.getZindex(id, counter));\n });\n }\n }\n // ---\n this.update({\n ...this.input,\n links: updatedLinks\n });\n }\n }\n\n getIcon = (id: string, counter: number) => {\n if (this.value.includes(id)) return this.MARKER_ICON_SELECTED;\n if (counter > 0) return this.MARKER_ICON;\n if (this.options.libOptions?.hideUnavailablePin) return null;\n return this.MARKER_ICON_UNAVAILABLE;\n };\n\n getZindex = (id: string, counter: number) => {\n if (this.value.includes(id)) return 19999;\n if (counter > 0) return 9999;\n return null;\n };\n\n toggleValue(value: string) {\n const exists = this.value.includes(value);\n if (!exists) {\n this.value.push(value);\n } else if (exists) {\n this.value.splice(this.value.indexOf(value), 1);\n }\n\n // update\n this.setValue(this.value, true);\n }\n\n getValue = (): FACET_VALUE => this.value;\n\n clear() {\n this.value = [];\n }\n}\n","import { EventHandler } from '@net7/core';\nimport { FacetMapDS } from '../../data-sources/facets/facet-map.ds';\n\nexport class FacetMapEH extends EventHandler {\n dataSource: FacetMapDS;\n\n isMultiple: boolean;\n\n public listen() {\n this.outerEvents$.subscribe(({ type }) => {\n switch (type) {\n case 'mr-search-facets-layout.facetloaded':\n // Listen for incoming marker events\n this.dataSource.markerEvents$.subscribe((event) => {\n switch (event.type) {\n // trigger search facet logic\n case 'marker.click': {\n // detect \"multiple: true | false\" in config > facet > schema\n // and apply the correct logic.\n const { isMultiple } = this.dataSource.options;\n if (isMultiple) {\n this.dataSource.toggleValue(event.id);\n } else {\n const currentValue = this.dataSource.value;\n if (currentValue[0] === event.id) {\n this.dataSource.toggleValue(event.id);\n } else {\n this.dataSource.setValue([event.id]);\n }\n }\n // (make request and update component)\n this.emitOuter('change', {\n value: this.dataSource.getValue(),\n id: this.dataSource.id\n });\n } break;\n default:\n break;\n }\n });\n break;\n default:\n break;\n }\n });\n }\n}\n","import { EventHandler } from '@net7/core';\nimport { FacetHistogramDS } from '../../data-sources/facets/facet-histogram.ds';\n\nexport class FacetHistogramEH extends EventHandler {\n dataSource: FacetHistogramDS;\n\n public listen() {\n this.innerEvents$.subscribe(({ type, payload }) => {\n switch (type) {\n case `${this.dataSource.id}.rangeselected`:\n if (payload) {\n this.dataSource.setValue(payload.join('-'));\n this.emitOuter('change', {\n value: this.dataSource.getValue(),\n id: this.dataSource.id\n });\n }\n break;\n case `${this.dataSource.id}.loaded`:\n this.dataSource.loadTooltips();\n break;\n default:\n break;\n }\n });\n }\n}\n","import { HistogramRangeData } from '@net7/components';\nimport { DataSource } from '@net7/core';\nimport tippy from 'tippy.js';\nimport { FacetDataSource } from './facet-datasource';\n\ntype FACET_VALUE = string;\n\nexport class FacetHistogramDS extends DataSource implements FacetDataSource {\n id: string;\n\n value: FACET_VALUE = '';\n\n isUpdate = false;\n\n histogramApi: any;\n\n protected transform({ links }): HistogramRangeData {\n const items = this.parseLinks(links); // format data\n\n const histogramData: HistogramRangeData = {\n containerId: `container-for-histogram-${this.id}`,\n width: 450,\n height: 50,\n colours: {\n top: '#7091B3',\n bottom: '#96c2f2',\n accent: '#2F528B',\n },\n margin: {\n left: 30,\n right: 0,\n top: 10,\n bottom: 45\n },\n axis: {\n yAxis: {\n show: true,\n // tickAmount: 3\n values: [0, 5, 20, 60]\n }\n },\n items,\n setApi: (api) => {\n if (!this.histogramApi) this.histogramApi = api;\n if (this.value) {\n const [firstYear, lastYear] = this.value.split('-');\n const firstLabel = this.getFirstLabel(firstYear, items);\n const lastLabel = this.getLastLabel(lastYear, items);\n setTimeout(() => {\n // when the component loads, set the sliders and the bars\n // (necessary if search url has params)\n this.histogramApi.setSliders([firstLabel, lastLabel]);\n this.histogramApi.setBars(items);\n });\n }\n }\n };\n return histogramData;\n }\n\n setValue = (value, update = false) => {\n this.value = value;\n this.isUpdate = update;\n\n if (update && this.input) {\n const { links } = this.input;\n this.update({ ...this.input, links });\n if (!this.histogramApi) return;\n // format the new bars data\n const newBars = this.parseLinks(links);\n const [firstYear, lastYear] = this.value.split('-');\n // get years for slider positions\n const firstLabel = this.getFirstLabel(firstYear, newBars);\n const lastLabel = this.getLastLabel(lastYear, newBars);\n // update the histogram\n setTimeout(() => {\n this.histogramApi.setSliders(\n [`${firstLabel}`, `${lastLabel}`], // move the sliders\n false // do not emit\n );\n this.loadTooltips();\n });\n this.histogramApi.setBars(newBars);\n }\n // reload the tooltips\n this.loadTooltips();\n };\n\n /**\n * Returns the current facet value\n */\n getValue = (): FACET_VALUE => this.value;\n\n /**\n * Reset to the default facet value\n */\n clear() {\n this.value = '';\n }\n\n /**\n * Loads tippy tooltips and appends them to the histogram bars\n */\n loadTooltips() {\n const elements = document.querySelectorAll(`#container-for-histogram-${this.id} g.bars rect.bars`);\n tippy(elements, {\n content(reference) {\n const start = reference.getAttribute('data-start');\n const end = reference.getAttribute('data-end');\n return `<span class=\"tippy-template\">${start}<br>${end}</span>`;\n },\n allowHTML: true,\n appendTo: () => document.body,\n });\n }\n\n /**\n * Convert the links into the histogram component format\n */\n parseLinks(links) {\n return links.map((link) => ({\n label: `${link.text}`,\n value: link.counter,\n payload: link.payload,\n range: link.range ? {\n payload: link.range.payload,\n label: link.range.text\n } : undefined,\n })).sort((a, b) => +a.label - b.label);\n }\n\n /**\n * Get the left-most label\n */\n private getFirstLabel(year: string, items) {\n if (!year) return items[0].label;\n return items.find(({ label }) => +label === +year)?.label;\n }\n\n /**\n * Get the right-most label\n */\n private getLastLabel(year: string, items) {\n if (!year) return items[items.length - 1].label;\n return items.find(({ label, range }) => {\n if (range) {\n return +range.label === +year;\n }\n return +label === +year;\n })?.label;\n }\n}\n","import {\n Component,\n OnInit,\n OnDestroy,\n Input\n} from '@angular/core';\nimport { AbstractLayout } from '@net7/boilerplate-common';\nimport { MrLocaleService } from '../../services/locale.service';\nimport { SearchFacetsLayoutConfig as config } from './search-facets-layout.config';\nimport { FacetTextDS } from '../../data-sources/facets/facet-text.ds';\nimport { FacetCheckboxDS } from '../../data-sources/facets/facet-checkbox.ds';\nimport { FacetSelectDS } from '../../data-sources/facets/facet-select.ds';\nimport { FacetLinkDS } from '../../data-sources/facets/facet-link.ds';\nimport { FacetHeaderDS } from '../../data-sources/facets/facet-header.ds';\nimport { FacetHeaderEH } from '../../event-handlers/facets/facet-header.eh';\nimport { FacetTextEH } from '../../event-handlers/facets/facet-text.eh';\nimport { FacetCheckboxEH } from '../../event-handlers/facets/facet-checkbox.eh';\nimport { FacetSelectEH } from '../../event-handlers/facets/facet-select.eh';\nimport { FacetLinkEH } from '../../event-handlers/facets/facet-link.eh';\nimport { MrSearchService } from '../../services/search.service';\nimport { FacetLinkMultipleDS } from '../../data-sources/facets/facet-link-multiple.ds';\nimport { FacetLinkMultipleEH } from '../../event-handlers/facets/facet-link-multiple.eh';\nimport { FacetMapDS } from '../../data-sources/facets/facet-map.ds';\nimport { FacetMapEH } from '../../event-handlers/facets/facet-map.eh';\nimport { FacetHistogramEH } from '../../event-handlers/facets/facet-histogram.eh';\nimport { FacetHistogramDS } from '../../data-sources/facets/facet-histogram.ds';\n\nconst DATASOURCE_MAP = {\n header: FacetHeaderDS,\n text: FacetTextDS,\n checkbox: FacetCheckboxDS,\n select: FacetSelectDS,\n link: FacetLinkDS,\n map: FacetMapDS,\n // if the facet value is an array you MUST include it in the name\n 'map-multiple': FacetMapDS,\n 'link-multiple': FacetLinkMultipleDS,\n histogram: FacetHistogramDS,\n};\n\nconst EVENTHANDLER_MAP = {\n header: FacetHeaderEH,\n text: FacetTextEH,\n checkbox: FacetCheckboxEH,\n select: FacetSelectEH,\n link: FacetLinkEH,\n map: FacetMapEH,\n // if the facet value is an array you MUST include it in the name\n 'map-multiple': FacetMapEH,\n 'link-multiple': FacetLinkMultipleEH,\n histogram: FacetHistogramEH,\n};\n\n@Component({\n selector: 'mr-search-facets-layout',\n templateUrl: './search-facets-layout.html'\n})\nexport class MrSearchFacetsLayoutComponent extends AbstractLayout implements OnInit, OnDestroy {\n @Input() searchService: MrSearchService;\n\n @Input() localeService: MrLocaleService;\n\n constructor() {\n super(config);\n }\n\n protected initPayload() {\n return {\n searchService: this.searchService,\n localeService: this.localeService,\n };\n }\n\n ngOnInit() {\n this.loadWidgets();\n this.onInit();\n }\n\n ngOnDestroy() {\n this.onDestroy();\n }\n\n loadWidgets() {\n const { facets } = this.searchService.getConfig();\n this.widgets = [];\n facets.sections.forEach(({ header, inputs }) => {\n if (header) {\n this.widgets.push({\n id: header.id,\n dataSource: DATASOURCE_MAP.header,\n eventHandler: EVENTHANDLER_MAP.header\n });\n }\n inputs.forEach((input) => {\n let inputType = input.type;\n const { multiple } = input.schema;\n // multiple control\n if (multiple) {\n inputType += '-multiple';\n }\n this.widgets.push({\n id: input.id,\n options: {\n isMultiple: !!multiple,\n libOptions: input.libOptions ?? undefined,\n },\n dataSource: DATASOURCE_MAP[inputType],\n eventHandler: EVENTHANDLER_MAP[inputType]\n });\n });\n });\n }\n}\n","<div *ngIf=\"lb.dataSource.facets\" class=\"mr-facets__facets-wrapper {{ lb.dataSource.facets.classes || '' }}\">\n\n <div *ngIf=\"lb.dataSource.redirectPath && lb.dataSource.redirectLabel\" class=\"mr-facets__redirect-link\">\n <a href=\"{{ lb.dataSource.redirectPath }}\">{{ lb.dataSource.redirectLabel }}</a>\n </div>\n\n <div *ngFor=\"let section of lb.dataSource.facets.sections\" \n class=\"mr-facets__single-facet {{ section.classes || '' }}\"\n [ngClass]=\"lb.dataSource.searchService.getState$('section', section.id) | async\"\n id=\"{{ section.id }}\"\n >\n <n7-facet-header\n *ngIf=\"section.header\"\n [data]=\"lb.widgets[section.header.id].ds.out$ | async\"\n [emit]=\"lb.widgets[section.header.id].emit\"\n ></n7-facet-header>\n\n <div [hidden]=\"section.header && !lb.widgets[section.header.id].ds.isOpen()\" class=\"mr-facets__single-facet-content\">\n <div *ngFor=\"let input of section.inputs\" \n [attr.id]=\"'facet-container-' + input.id\"\n class=\"mr-facets__single-facet-inner-content {{ input.classes || '' }}\">\n <ng-container [ngSwitch]=\"input.type\">\n \n <!-- INPUT TEXT -->\n <n7-input-text \n *ngSwitchCase=\"'text'\"\n [data]=\"lb.widgets[input.id].ds.out$ | async\"\n [emit]=\"lb.widgets[input.id].emit\"></n7-input-text>\n \n <!-- INPUT CHECKBOX -->\n <n7-input-checkbox \n *ngSwitchCase=\"'checkbox'\"\n [data]=\"lb.widgets[input.id].ds.out$ | async\"\n [emit]=\"lb.widgets[input.id].emit\"></n7-input-checkbox>\n \n <!-- INPUT SELECT -->\n <n7-input-select \n *ngSwitchCase=\"'select'\"\n [data]=\"lb.widgets[input.id].ds.out$ | async\"\n [emit]=\"lb.widgets[input.id].emit\"></n7-input-select>\n \n <!-- INPUT LINK -->\n <n7-input-link \n *ngSwitchCase=\"'link'\"\n [data]=\"lb.widgets[input.id].ds.out$ | async\"\n [emit]=\"lb.widgets[input.id].emit\"></n7-input-link>\n\n <!-- INPUT LINKMULTI -->\n <n7-input-link \n *ngSwitchCase=\"'linkMulti'\"\n [data]=\"lb.widgets[input.id].ds.out$ | async\"\n [emit]=\"lb.widgets[input.id].emit\"></n7-input-link>\n \n <!-- INPUT MAP -->\n <n7-map \n *ngSwitchCase=\"'map'\"\n [data]=\"lb.widgets[input.id].ds.out$ | async\"\n [emit]=\"lb.widgets[input.id].emit\"></n7-map>\n\n <!-- INPUT HISTOGRAM -->\n <n7-histogram-range \n *ngSwitchCase=\"'histogram'\"\n [data]=\"lb.widgets[input.id].ds.out$ | async\"\n [emit]=\"lb.widgets[input.id].emit\"></n7-histogram-range>\n \n </ng-container>\n </div>\n </div>\n </div>\n</div>\n","export default {\n set(key: string, value: any): void {\n localStorage.setItem(key, value);\n },\n get(key: string): any {\n return localStorage.getItem(key);\n },\n remove(key: string): void {\n localStorage.removeItem(key);\n },\n toggle(key: string, value: any): void {\n if (!this.get(key)) {\n this.set(key, value);\n } else {\n this.remove(key);\n }\n }\n};\n","import { Data } from '@angular/router';\nimport { LayoutDataSource, _t } from '@net7/core';\nimport { ConfigurationService, CommunicationService, MainStateService } from '@net7/boilerplate-common';\nimport localStorageHelper from '../../helpers/local-storage-helper';\nimport { MrSearchService } from '../../services/search.service';\nimport { MrLocaleService } from '../../services/locale.service';\n\nexport class MrSearchLayoutDS extends LayoutDataSource {\n private configuration: ConfigurationService;\n\n private communication: CommunicationService;\n\n private mainState: MainStateService;\n\n private localeService: MrLocaleService;\n\n private routerData: Data;\n\n public searchService: MrSearchService;\n\n public facetsConfig;\n\n public pageConfig;\n\n public totalResultsText: string | null = null;\n\n private hideDescriptionKey: string;\n\n private descriptionLoaded = false;\n\n public showDescription = false;\n\n onInit(payload) {\n this.configuration = payload.configuration;\n this.communication = payload.communication;\n this.mainState = payload.mainState;\n this.localeService = payload.localeService;\n this.searchService = payload.searchService;\n this.routerData = payload.routerData;\n this.pageConfig = this.configuration.get(this.routerData.configId);\n this.hideDescriptionKey = `hide-description-${this.routerData.configId}`;\n\n // config\n this.all().updateOptions({\n config: this.pageConfig,\n localeService: this.localeService\n });\n\n // manual updates\n this.one('mr-search-page-title').update({});\n\n // update head title\n this.updateHeadTitle();\n\n // update translations\n this.addTranslations(this.pageConfig);\n\n // description\n this.getPageDescription();\n }\n\n handleResponse(response) {\n this.some([\n 'mr-search-results-title',\n 'mr-search-results',\n ]).update(response);\n\n // pagination\n this.one('n7-smart-pagination').updateOptions({ mode: 'payload' });\n this.one('n7-smart-pagination').update(this.getPaginationParams(response));\n }\n\n updateActiveFilters(state, linksResponse) {\n // active \"tags\" filters\n this.one('mr-search-tags').update({\n state,\n linksResponse,\n facetsConfig: this.searchService.getConfig().facets\n });\n }\n\n toggleDescription() {\n localStorageHelper.toggle(this.hideDescriptionKey, true);\n this.showDescription = !(localStorageHelper.get(this.hideDescriptionKey));\n\n if (this.showDescription && !this.descriptionLoaded) {\n this.getPageDescription();\n }\n }\n\n private getPaginationParams(response) {\n const { total_count: totalCount, offset, limit } = response;\n const { pagination: paginationConfig } = this.pageConfig;\n\n return {\n totalPages: Math.ceil(totalCount / limit),\n currentPage: (offset + limit) / limit,\n pageLimit: paginationConfig.limit,\n sizes: {\n label: paginationConfig.selectLabel ? _t(paginationConfig.selectLabel) : null,\n list: paginationConfig.options,\n active: limit,\n },\n };\n }\n\n private updateHeadTitle() {\n const appName = this.configuration.get('name');\n const pageTitle = this.pageConfig.title;\n this.mainState.update('headTitle', [appName, _t(pageTitle)].join(' > '));\n }\n\n private addTranslations(config) {\n if (config.facetsTitle) {\n config.facetsTitle = _t(config.facetsTitle);\n }\n if (config.filtersTitle) {\n config.filtersTitle = _t(config.filtersTitle);\n }\n if (config?.sort?.label) {\n config.sort.label = _t(config.sort.label);\n config.sort.options = config.sort.options.map((option) => ({\n ...option,\n label: _t(option.label)\n }));\n }\n ['text', 'button'].forEach((key) => {\n if (config.fallback) {\n config.fallback[key] = _t(config.fallback[key]);\n }\n if (config.ko) {\n config.ko[key] = _t(config.ko[key]);\n }\n });\n }\n\n getPageDescription() {\n if (this.pageConfig.description && !localStorageHelper.get(this.hideDescriptionKey)) {\n const { description } = this.pageConfig;\n const { locale } = this.routerData;\n this.communication.request$('searchDescription', {\n urlParams: locale ? `${description.id}?locale=${locale}` : description.id,\n }).subscribe((response) => {\n this.one('mr-search-page-description').update(response);\n this.descriptionLoaded = true;\n this.showDescription = true;\n });\n }\n }\n}\n","import { EventHandler } from '@net7/core';\nimport { Subject } from 'rxjs';\nimport { isEmpty } from 'lodash';\nimport { takeUntil, filter } from 'rxjs/operators';\nimport { helpers } from '@net7/boilerplate-common';\nimport { MrSearchLayoutDS } from './search-layout.ds';\nimport {\n MrSearchService,\n RESULTS_REQUEST_STATE_CONTEXT,\n INPUT_STATE_CONTEXT,\n FACETS_REQUEST_STATE_CONTEXT,\n SECTION_STATE_CONTEXT\n} from '../../services/search.service';\nimport { MrLayoutStateService, LayoutState } from '../../services/layout-state.service';\nimport { MrResourceModalService } from '../../services/resource-modal.service';\n\nexport class MrSearchLayoutEH extends EventHandler {\n public dataSource: MrSearchLayoutDS;\n\n private destroyed$: Subject<boolean> = new Subject();\n\n private searchService: MrSearchService;\n\n private layoutState: MrLayoutStateService;\n\n private modalService: MrResourceModalService;\n\n private searchState: {\n [key: string]: any;\n } = {};\n\n private linksResponse: any;\n\n private scrollRefElement: HTMLElement;\n\n public listen() {\n this.innerEvents$.subscribe(({ type, payload }) => {\n switch (type) {\n case 'mr-search-layout.init':\n this.searchService = payload.searchService;\n this.layoutState = payload.layoutState;\n this.modalService = payload.modalService;\n this.dataSource.onInit(payload);\n // listeners\n this.initStateListener();\n // scroll top\n window.scrollTo(0, 0);\n // reset scroll ref\n this.scrollRefElement = null;\n break;\n\n case 'mr-search-layout.destroy':\n this.searchService.destroy();\n this.destroyed$.next(true);\n break;\n\n case 'mr-search-layout.searchreset':\n this.searchService.reset();\n break;\n\n default:\n console.warn('unhandled inner event of type', type);\n break;\n }\n });\n\n this.outerEvents$.subscribe(({ type, payload }) => {\n switch (type) {\n case 'n7-smart-pagination.click':\n this.searchService.setState('input', 'page', payload.page);\n break;\n\n case 'n7-smart-pagination.change':\n this.searchService.setState('input', 'limit', payload.value);\n break;\n\n case 'mr-search-results-title.change':\n this.searchService.setState('input', 'sort', payload.value);\n break;\n\n case 'mr-search-page-description.click':\n case 'mr-search-page-title.click':\n this.dataSource.toggleDescription();\n break;\n\n case 'mr-search-tags.click': {\n const stateValue = this.searchState[payload.id];\n let newValue = null;\n if (Array.isArray(stateValue)) {\n newValue = stateValue.filter((value) => value !== payload.value);\n }\n this.searchService.setState('input', payload.id, newValue);\n break;\n }\n\n case 'mr-search-results.openresourcemodal': {\n const { id, type: resourceType } = payload;\n this.modalService.open(id, resourceType);\n break;\n }\n\n default:\n break;\n }\n });\n }\n\n initStateListener() {\n // default params\n const { pageConfig } = this.dataSource;\n const defaultLimit = pageConfig.pagination.options[0];\n const defaultSort = pageConfig.sort.options.find((option) => option.selected === true)?.value;\n // inputs listener\n this.searchService.getState$(INPUT_STATE_CONTEXT).pipe(\n filter(({ lastUpdated }) => this.searchService.isQueryParamKey(lastUpdated)),\n takeUntil(this.destroyed$)\n ).subscribe(({ lastUpdated, state }) => {\n this.searchState = state;\n\n if (lastUpdated !== 'page') {\n this.searchService.setState(INPUT_STATE_CONTEXT, 'page', 1);\n }\n });\n this.searchService.getState$(INPUT_STATE_CONTEXT, 'query').pipe(\n takeUntil(this.destroyed$)\n ).subscribe((val) => {\n this.emitOuter('inputquerychange', val);\n });\n this.searchService.getState$(FACETS_REQUEST_STATE_CONTEXT, 'success').pipe(\n takeUntil(this.destroyed$)\n ).subscribe((response) => {\n this.linksResponse = response;\n this.dataSource.updateActiveFilters(this.searchState, this.linksResponse);\n\n // update sections\n if (response) {\n const { facets } = response;\n Object.keys(facets).forEach((inputKey) => {\n const { total_count: totalCount } = facets[inputKey];\n this.searchService.setState(\n SECTION_STATE_CONTEXT,\n `section-${inputKey}`,\n totalCount ? 'is-not-empty' : 'is-empty'\n );\n });\n }\n });\n\n this.searchService.getState$(RESULTS_REQUEST_STATE_CONTEXT, 'loading').pipe(\n takeUntil(this.destroyed$)\n ).subscribe(() => {\n this.layoutState.set('results', LayoutState.LOADING);\n });\n\n // results params hook\n this.searchService.setBeforeHook(RESULTS_REQUEST_STATE_CONTEXT, 'loading', (params: any = {}) => {\n const results: {\n limit: number;\n offset: number;\n sort?: string;\n } = {\n limit: defaultLimit,\n offset: 0\n };\n\n const sortParam = params.sort || defaultSort;\n\n // sort check\n if (sortParam) {\n results.sort = sortParam;\n }\n\n // limit check\n if (params.limit) {\n results.limit = params.limit;\n }\n\n // offset check\n if (params.page && params.page > 1) {\n results.offset = results.limit * (params.page - 1);\n }\n\n params.results = results;\n\n // cleanup\n Object.keys(params)\n .filter((key) => ['sort', 'page', 'limit'].includes(key))\n .forEach((key) => {\n delete params[key];\n });\n\n return params;\n });\n\n // facets params hook\n this.searchService.setBeforeHook(FACETS_REQUEST_STATE_CONTEXT, 'loading', (params: any = {}) => {\n // clean up\n delete params.results;\n return params;\n });\n\n this.searchService.getState$(RESULTS_REQUEST_STATE_CONTEXT, 'success')\n .subscribe((response) => {\n this.dataSource.handleResponse(response);\n // update layout state\n this.layoutState.set('results', isEmpty(response.results) ? LayoutState.EMPTY : LayoutState.SUCCESS);\n // scroll to ref element\n if (!pageConfig.disableScroll) {\n if (!this.scrollRefElement) {\n this.scrollRefElement = document.querySelector('.scroll-ref');\n } else if (!helpers.isElementInViewport(this.scrollRefElement)) {\n this.scrollRefElement.scrollIntoView();\n }\n }\n });\n\n this.searchService.getState$(RESULTS_REQUEST_STATE_CONTEXT, 'error')\n .subscribe((error) => {\n console.warn(RESULTS_REQUEST_STATE_CONTEXT, error);\n this.layoutState.set('results', LayoutState.ERROR);\n });\n }\n}\n","import { SmartPaginationDS, SmartPaginationEH } from '@net7/boilerplate-common';\nimport { MrSearchLayoutDS } from './search-layout.ds';\nimport { MrSearchLayoutEH } from './search-layout.eh';\nimport * as DS from '../../data-sources';\nimport * as EH from '../../event-handlers';\n\nexport const MrSearchLayoutConfig = {\n layoutId: 'mr-search-layout',\n widgets: [{\n id: 'mr-search-page-title'\n }, {\n id: 'mr-search-page-description'\n }, {\n id: 'mr-search-results-title'\n }, {\n id: 'mr-search-results'\n }, {\n id: 'mr-search-tags'\n }, {\n id: 'mr-resources', dataSource: DS.MrItemPreviewsDS,\n }, {\n id: 'n7-smart-pagination',\n dataSource: SmartPaginationDS,\n eventHandler: SmartPaginationEH,\n }],\n layoutDS: MrSearchLayoutDS,\n layoutEH: MrSearchLayoutEH,\n widgetsDataSources: DS,\n widgetsEventHandlers: EH,\n layoutOptions: {}\n};\n","import { Component, Input } from '@angular/core';\n\nexport type SearchPageDescriptionData = {\n text: string;\n link: {\n text: string;\n payload: any;\n };\n}\n\n@Component({\n selector: 'mr-search-page-description',\n templateUrl: './search-page-description.html',\n})\nexport class MrSearchPageDescriptionComponent {\n @Input() data: SearchPageDescriptionData;\n\n @Input() emit: (type: string, payload: any) => void;\n\n onClick(payload) {\n if (this.emit) {\n this.emit('click', payload);\n }\n }\n}\n","<div *ngIf=\"data\" class=\"mr-search-page-description\">\n <div class=\"mr-search-page-description__text\" [innerHTML]=\"data.text\"></div>\n <a class=\"mr-search-page-description__link\" (click)=\"onClick(data.link.payload)\">{{ data.link.text }}</a>\n</div>","import { Component, OnInit, OnDestroy } from '@angular/core';\nimport { ActivatedRoute, Data, Router } from '@angular/router';\nimport {\n AbstractLayout,\n LayoutsConfigurationService,\n CommunicationService,\n ConfigurationService,\n MainStateService\n} from '@net7/boilerplate-common';\nimport { MrSearchLayoutConfig as config } from './search-layout.config';\nimport { MrSearchService } from '../../services/search.service';\nimport { MrLayoutStateService } from '../../services/layout-state.service';\nimport { MrResourceModalService } from '../../services/resource-modal.service';\nimport { MrLocaleService } from '../../services/locale.service';\n\n@Component({\n selector: 'mr-search-layout',\n templateUrl: './search-layout.html',\n})\nexport class MrSearchLayoutComponent extends AbstractLayout implements OnInit, OnDestroy {\n private routerData: Data;\n\n constructor(\n layoutsConfiguration: LayoutsConfigurationService,\n private router: Router,\n private activatedRoute: ActivatedRoute,\n private communication: CommunicationService,\n private configuration: ConfigurationService,\n private searchService: MrSearchService,\n public layoutState: MrLayoutStateService,\n private mainState: MainStateService,\n public modalService: MrResourceModalService,\n public localeService: MrLocaleService,\n\n ) {\n super(layoutsConfiguration.get('MrSearchLayoutConfig') || config);\n }\n\n protected initPayload() {\n return {\n routerData: this.routerData,\n configuration: this.configuration,\n mainState: this.mainState,\n router: this.router,\n activatedRoute: this.activatedRoute,\n communication: this.communication,\n searchService: this.searchService,\n layoutState: this.layoutState,\n modalService: this.modalService,\n localeService: this.localeService,\n options: this.config.options || {},\n };\n }\n\n ngOnInit() {\n this.activatedRoute.data.subscribe((routerData) => {\n this.routerData = routerData;\n const { configId, locale } = this.routerData;\n const { searchId, searchConfig } = this.configuration.get(configId);\n this.searchService.init(searchId, searchConfig, locale);\n // add layout states\n this.layoutState.add(['results']);\n this.onInit();\n });\n }\n\n ngOnDestroy() {\n this.onDestroy();\n }\n}\n","<div class=\"mr-search mr-layout\"\n *ngIf=\"lb.dataSource\">\n <section class=\"mr-layout__maxwidth mr-side-margin\">\n\n <div class=\"mr-search__title\">\n <n7-inner-title\n [data]=\"lb.widgets['mr-search-page-title'].ds.out$ | async\"\n [emit]=\"lb.widgets['mr-search-page-title'].emit\">\n </n7-inner-title>\n </div>\n\n <div *ngIf=\"lb.dataSource.showDescription\" class=\"mr-search__description\">\n <mr-search-page-description\n [data]=\"lb.widgets['mr-search-page-description'].ds.out$ | async\"\n [emit]=\"lb.widgets['mr-search-page-description'].emit\">\n </mr-search-page-description>\n </div>\n \n <div class=\"mr-search__results-content\">\n <aside class=\"mr-facets\"\n [ngStyle]=\"{\n width: lb.dataSource.pageConfig['facetsWidthPercentage'] ? lb.dataSource.pageConfig['facetsWidthPercentage'] + '%' : ''\n }\">\n <div class=\"scroll-ref\"> </div>\n <div class=\"mr-facets__contents\">\n <h2 class=\"mr-facets__title\" \n *ngIf=\"lb.dataSource.pageConfig['facetsTitle']\">\n {{ lb.dataSource.pageConfig['facetsTitle'] }}\n </h2>\n\n <mr-search-facets-layout \n [searchService]=\"lb.dataSource.searchService\"\n [localeService]=\"lb.dataSource.localeService\">\n </mr-search-facets-layout>\n </div>\n </aside>\n <div class=\"mr-search__results-wrapper\">\n <div class=\"mr-search__results-info\">\n <n7-inner-title\n [data]=\"lb.widgets['mr-search-results-title'].ds.out$ | async\"\n [emit]=\"lb.widgets['mr-search-results-title'].emit\">\n </n7-inner-title>\n </div>\n \n <div *ngIf=\"(\n lb.dataSource.pageConfig['filtersTitle'] && \n lb.widgets['mr-search-tags'].ds.hasFilters\n )\" \n class=\"mr-active-filters\">\n <span class=\"mr-active-filters__label\">{{ lb.dataSource.pageConfig['filtersTitle'] }}</span>\n <div class=\"mr-active-filters__tags-wrapper\">\n <n7-tag *ngFor=\"let tag of (lb.widgets['mr-search-tags'].ds.out$ | async)\"\n [data]=\"tag\"\n [emit]=\"lb.widgets['mr-search-tags'].emit\">\n </n7-tag>\n </div>\n </div>\n\n <main class=\"mr-search__results\">\n <!-- SEARCH RESULTS -->\n <ng-container [ngSwitch]=\"layoutState.get$('results') | async\">\n \n <!-- loading -->\n <ng-container *ngSwitchCase=\"'LOADING'\">\n <div class=\"mr-search__results-loading n7-grid-{{ lb.dataSource.pageConfig.grid || 3 }}\">\n <n7-content-placeholder *ngFor=\"let n of [0,1,2,3,4,5,6,7,8,9]\" [data]=\"{\n blocks: [\n { classes: 'search-result-placeholder-title' },\n { classes: 'search-result-placeholder-metadata' },\n { classes: 'search-result-placeholder-metadata' },\n { classes: 'search-result-placeholder-metadata' }\n ]\n }\"></n7-content-placeholder>\n </div>\n </ng-container>\n \n <!-- success: items > 0 -->\n <ng-container *ngSwitchCase=\"'SUCCESS'\">\n <div class=\"n7-grid-{{ lb.dataSource.pageConfig.grid || 3 }}\">\n <ng-container *ngIf=\"!lb.dataSource.pageConfig?.advancedResults\">\n <n7-item-preview *ngFor=\"let item of (lb.widgets['mr-search-results'].ds.out$ | async)\"\n [data]=\"item\" [emit]=\"lb.widgets['mr-search-results'].emit\">\n </n7-item-preview>\n </ng-container>\n <ng-container *ngIf=\"lb.dataSource.pageConfig?.advancedResults\">\n <mr-advanced-result\n *ngFor=\"let item of (lb.widgets['mr-search-results'].ds.out$ | async)\"\n [data]=\"item\" [emit]=\"lb.widgets['mr-search-results'].emit\">\n </mr-advanced-result>\n </ng-container>\n </div>\n </ng-container>\n\n <!-- empty: items === 0 -->\n <ng-container *ngSwitchCase=\"'EMPTY'\">\n <div class=\"mr-search__results-fallback\">\n <p class=\"mr-search__results-fallback-string\">\n {{ lb.dataSource.pageConfig.fallback.text }}\n </p>\n <button class=\"n7-btn mr-search__results-fallback-button\"\n (click)=\"lb.eventHandler.emitInner('searchreset')\">\n {{ lb.dataSource.pageConfig.fallback.button }}\n </button>\n </div>\n </ng-container>\n\n <!-- error: request problem -->\n <ng-container *ngSwitchCase=\"'ERROR'\">\n <p class=\"mr-search__results-ko-string\">\n {{ lb.dataSource.pageConfig.ko.text }}\n </p>\n <button class=\"n7-btn mr-search__results-ko-button\"\n (click)=\"lb.eventHandler.emitInner('searchreset')\">\n {{ lb.dataSource.pageConfig.ko.button }}\n </button>\n </ng-container>\n \n </ng-container>\n </main> \n <n7-smart-pagination\n *ngIf=\"(layoutState.get$('results') | async) === 'SUCCESS'\"\n [data]=\"lb.widgets['n7-smart-pagination'].ds.out$ | async\"\n [emit]=\"lb.widgets['n7-smart-pagination'].emit\">\n </n7-smart-pagination>\n </div>\n </div>\n\n </section>\n</div>","import { LayoutDataSource, _t } from '@net7/core';\nimport { Observable } from 'rxjs';\nimport { Data, Params, UrlSegment } from '@angular/router';\nimport { ConfigurationService, CommunicationService, MainStateService } from '@net7/boilerplate-common';\n\nexport class MrStaticLayoutDS extends LayoutDataSource {\n private configuration: ConfigurationService;\n\n private communication: CommunicationService;\n\n private mainState: MainStateService;\n\n private routerData: Data;\n\n public pageConfig;\n\n public content: string | null;\n\n public title: string | null;\n\n public errorTitle = _t('global#layout_error_title');\n\n public errorDescription = _t('global#layout_error_description');\n\n onInit(payload) {\n this.communication = payload.communication;\n this.configuration = payload.configuration;\n this.mainState = payload.mainState;\n this.routerData = payload.routerData;\n this.pageConfig = this.configuration.get(this.routerData.configId);\n }\n\n pageRequest$(\n { urlSegments, routerParams, onError }:\n { urlSegments: UrlSegment[], routerParams: Params; onError: (err: any) => void }\n ): Observable<any> {\n const { slug } = routerParams;\n const { apiPoint } = this.pageConfig || {};\n\n // no locale slug setup\n if (!slug) {\n if (urlSegments.length > 1) {\n return this.communication.request$(apiPoint || 'post', {\n onError,\n urlParams: urlSegments[1].path,\n });\n } return this.communication.request$(apiPoint || 'static', {\n onError,\n urlParams: urlSegments[0].path,\n });\n }\n return this.communication.request$(apiPoint || 'static', {\n onError,\n urlParams: slug,\n });\n }\n\n handleResponse(response: any) {\n this.setHtml(response);\n this.updateHeadTitle(response.title);\n }\n\n setHtml(response) {\n const { content, title } = response;\n this.title = title;\n this.content = content;\n this.one('mr-static-metadata').update(response);\n }\n\n updateHeadTitle(pageTitle: string) {\n const appName = this.configuration.get('name');\n this.mainState.update('headTitle', [appName, pageTitle].join(' > '));\n }\n}\n","import {\n ActivatedRoute, Data, Params, Router, UrlSegment\n} from '@angular/router';\nimport { HttpErrorResponse } from '@angular/common/http';\nimport { Subject } from 'rxjs';\nimport { EventHandler } from '@net7/core';\nimport {\n takeUntil, switchMap, tap, map\n} from 'rxjs/operators';\nimport { MrLayoutStateService, LayoutState } from '../../services/layout-state.service';\nimport { MrStaticLayoutDS } from './static-layout.ds';\n\nexport class MrStaticLayoutEH extends EventHandler {\n private route: ActivatedRoute;\n\n private router: Router;\n\n public dataSource: MrStaticLayoutDS;\n\n private layoutState: MrLayoutStateService;\n\n private destroy$: Subject<void> = new Subject();\n\n public listen() {\n this.innerEvents$.subscribe(({ type, payload }) => {\n switch (type) {\n case 'mr-static-layout.init':\n this.route = payload.route;\n this.router = payload.router;\n this.layoutState = payload.layoutState;\n this.dataSource.onInit(payload);\n\n // listen route\n this.listenRoute();\n // scroll top\n window.scrollTo(0, 0);\n break;\n\n case 'mr-static-layout.destroy':\n this.destroy$.next();\n break;\n\n default:\n console.warn('unhandled inner event of type', type);\n break;\n }\n });\n }\n\n private listenRoute() {\n this.route.url.pipe(\n takeUntil(this.destroy$),\n map((urlSegments: UrlSegment[]) => ({\n urlSegments,\n routerParams: this.route.snapshot.params,\n routerData: this.route.snapshot.data,\n })),\n tap(() => {\n this.layoutState.set('content', LayoutState.LOADING);\n }),\n switchMap((\n { urlSegments, routerParams, routerData }:\n { urlSegments: UrlSegment[]; routerParams: Params; routerData: Data }\n ) => this.dataSource.pageRequest$({\n urlSegments,\n routerParams,\n onError: (err: HttpErrorResponse) => {\n if (err.status === 404) {\n // getting not found path\n const { config } = this.router;\n let route404 = config.find(({ data }) => data?.id === 'page-404' && data.locale === routerData.locale);\n if (!route404) {\n route404 = config.find(({ data }) => data?.id === 'page-404');\n }\n const path404 = route404?.path || 'page-404';\n this.router.navigate([path404]);\n } else {\n console.warn(`Error loading static layout for ${urlSegments}`, err.message);\n this.layoutState.set('content', LayoutState.ERROR);\n }\n }\n }))\n ).subscribe((response) => {\n this.layoutState.set('content', LayoutState.SUCCESS);\n this.dataSource.handleResponse(response);\n });\n }\n}\n","import { MrStaticLayoutDS } from './static-layout.ds';\nimport { MrStaticLayoutEH } from './static-layout.eh';\nimport * as DS from '../../data-sources';\nimport * as EH from '../../event-handlers';\n\nexport const MrStaticLayoutConfig = {\n layoutId: 'mr-static-layout',\n widgets: [{\n id: 'mr-static-metadata'\n }],\n layoutDS: MrStaticLayoutDS,\n layoutEH: MrStaticLayoutEH,\n widgetsDataSources: DS,\n widgetsEventHandlers: EH,\n layoutOptions: {}\n};\n","import { Component, OnInit, OnDestroy } from '@angular/core';\nimport { ActivatedRoute, Data, Router } from '@angular/router';\nimport {\n AbstractLayout,\n CommunicationService,\n ConfigurationService,\n MainStateService,\n LayoutsConfigurationService,\n} from '@net7/boilerplate-common';\nimport { MrLayoutStateService } from '../../services/layout-state.service';\nimport { MrStaticLayoutConfig as config } from './static-layout.config';\n\n@Component({\n selector: 'mr-static-layout',\n templateUrl: './static-layout.html',\n})\nexport class MrStaticLayoutComponent extends AbstractLayout implements OnInit, OnDestroy {\n private routerData: Data;\n\n constructor(\n private communication: CommunicationService,\n private configuration: ConfigurationService,\n private mainState: MainStateService,\n private route: ActivatedRoute,\n private router: Router,\n public layoutState: MrLayoutStateService,\n layoutsConfiguration: LayoutsConfigurationService,\n ) {\n super(layoutsConfiguration.get('MrStaticLayoutConfig') || config);\n }\n\n protected initPayload() {\n return {\n routerData: this.routerData,\n communication: this.communication,\n configuration: this.configuration,\n mainState: this.mainState,\n layoutState: this.layoutState,\n route: this.route,\n router: this.router,\n options: this.config.options || {}\n };\n }\n\n ngOnInit() {\n this.route.data.subscribe((routerData) => {\n this.routerData = routerData;\n // add layout states\n this.layoutState.add('content');\n this.onInit();\n });\n }\n\n ngOnDestroy() {\n this.onDestroy();\n }\n}\n","<div class=\"mr-static mr-layout\"\n *ngIf=\"lb.dataSource\"\n [ngClass]=\"{\n 'is-loading': ( layoutState.get$('content') | async ) == 'LOADING',\n 'is-error': ( layoutState.get$('content') | async ) == 'ERROR'\n }\">\n <!-- STATIC LAYOUT CONTENT -->\n <ng-container [ngSwitch]=\"layoutState.get$('content') | async\">\n <!-- loading -->\n <ng-container *ngSwitchCase=\"'LOADING'\">\n <div class=\"mr-layout__loader\">\n <n7-loader></n7-loader>\n </div>\n </ng-container>\n\n <!-- error -->\n <ng-container *ngSwitchCase=\"'ERROR'\">\n <div class=\"mr-layout__error\">\n <h2>{{ lb.dataSource.errorTitle }}</h2>\n <p>{{ lb.dataSource.errorDescription }}</p>\n </div>\n </ng-container>\n\n <!-- success -->\n <ng-container *ngSwitchCase=\"'SUCCESS'\">\n <div class=\"mr-static__top\">\n <h1 class=\"mr-static__title mr-generated-title-WP\">{{lb.dataSource.title}}</h1>\n <div class=\"mr-static__metadata\">\n <n7-metadata-viewer \n [data]=\"lb.widgets['mr-static-metadata'].ds.out$ | async\">\n </n7-metadata-viewer>\n </div>\n </div>\n \n <div class=\"mr-static__content mr-wp-content\" [innerHTML]=\"lb.dataSource.content | keepHtml\"></div>\n </ng-container>\n \n </ng-container>\n</div>\n","import { LayoutDataSource, _t } from '@net7/core';\nimport {\n Anchor, ItemPreviewData, MetadataGroup, TimelineData\n} from '@net7/components';\nimport { Timeline } from 'vis-timeline';\nimport { Subject } from 'rxjs';\nimport { first } from 'rxjs/operators';\nimport {\n ConfigurationService,\n CommunicationService,\n MainStateService,\n helpers\n} from '@net7/boilerplate-common';\nimport { Router } from '@angular/router';\nimport { Location } from '@angular/common';\nimport { MrLayoutStateService } from '../../services/layout-state.service';\nimport 'leaflet.markercluster';\nimport { GetResourceResponse } from './timeline-layout.types';\nimport { MrLocaleService } from '../../services/locale.service';\nimport linksHelper from '../../helpers/links-helper';\n\n// demo page: http://localhost:4200/timeline/2992/missione-venezia\n\nexport class MrTimelineLayoutDS extends LayoutDataSource {\n private configuration: ConfigurationService;\n\n private communication: CommunicationService;\n\n private mainState: MainStateService;\n\n private layoutState: MrLayoutStateService;\n\n private router: Router;\n\n private configId: string;\n\n private pageConfig;\n\n private localeService: MrLocaleService;\n\n private location: Location;\n\n public loading = {\n resourceDetails: true,\n timeline: true,\n };\n\n public defaultDescription = '';\n\n public eventHeader: string;\n\n public eventDescription = '';\n\n public timelineData: TimelineData;\n\n public hasMap = false;\n\n public hasGallery = false;\n\n public route;\n\n public mapHeader;\n\n public timelineListener$: Subject<Timeline> = new Subject();\n\n public bibliographyData: {\n header: { title: string };\n items: {\n payload?: {\n action: string;\n id: number;\n type: string;\n };\n text?: string;\n }[];\n };\n\n public collectionWorksData: {\n header: { title: string };\n items: ItemPreviewData[];\n };\n\n public collectionWitnessData: {\n header: { title: string };\n items: ItemPreviewData[];\n };\n\n public collectionBooksData: {\n header: { title: string };\n items: ItemPreviewData[];\n };\n\n public collectionData: any;\n\n public collectionGalleryData;\n\n public eventTitle: string;\n\n onInit(payload) {\n this.configuration = payload.configuration;\n this.communication = payload.communication;\n this.route = payload.route;\n this.router = payload.router;\n this.localeService = payload.localeService;\n this.location = payload.location;\n\n this.configId = payload.configId;\n this.pageConfig = this.configuration.get(this.configId) || {};\n\n const locale = this.localeService.getLocale();\n\n // update the timeline\n this.loading.timeline = true;\n this.communication\n .request$('timeline', {\n method: 'GET',\n urlParams: locale ? `?locale=${locale}` : '',\n onError: (e) => console.error(e),\n })\n .subscribe((d) => {\n this.timelineData = d;\n this.loading.timeline = false;\n this.one('mr-timeline').updateOptions({\n libOptions: this.pageConfig.libOptions,\n });\n this.one('mr-timeline').update(d);\n this.loading.timeline = false;\n });\n this.getWidgetDataSource('mr-timeline')\n .timelineLoaded$.pipe(first())\n .subscribe((timeline: Timeline) => {\n this.timelineListener$.next(timeline);\n });\n\n // update the description\n this.communication\n .request$('timelineDescription', {\n method: 'GET',\n urlParams: locale ? `?locale=${locale}` : '',\n onError: (e) => console.error(e),\n })\n .subscribe((d) => {\n this.defaultDescription = d.text;\n this.loadDefaults(false);\n });\n\n // set map header\n this.mapHeader = _t(this.pageConfig.mapHeader);\n }\n\n loadDefaults(navigate: boolean) {\n const timelineInstance = this.getWidgetDataSource('mr-timeline')\n .timeline as Timeline;\n if (timelineInstance) {\n timelineInstance.setSelection([]);\n }\n this.eventDescription = this.defaultDescription;\n this.eventHeader = '';\n this.hasMap = false;\n this.bibliographyData = undefined;\n this.collectionWitnessData = undefined;\n this.collectionWorksData = undefined;\n this.collectionBooksData = undefined;\n this.collectionGalleryData = undefined;\n this.collectionData = [];\n if (navigate) {\n const href = this.localeService.getLinkByRouteId('timeline');\n this.location.go(href);\n }\n this.one('mr-year-header').update({\n title: { main: { text: _t(this.pageConfig.title) } },\n });\n }\n\n updatePageDetails(id) {\n const locale = this.localeService.getLocale();\n this.communication\n .request$('resource', {\n onError: (e) => console.error(e),\n method: 'POST',\n urlParams: locale ? `?locale=${locale}` : '',\n params: {\n id,\n type: 'views/time-events',\n },\n })\n .subscribe((res: GetResourceResponse) => {\n // any\n if (!res || res == null) return;\n\n const {\n /* eslint-disable */\n \"collection-bibliography\": bibData,\n \"collection-places\": placesData,\n gallery,\n header,\n /* eslint-enable */\n } = res.sections;\n\n if (res.sections['collection-bibliography']) {\n delete res.sections['collection-bibliography'];\n }\n if (res.sections['collection-places']) {\n delete res.sections['collection-places'];\n }\n const collections = [];\n const itemPreviewOptions = {\n limit: 100,\n striptags: true\n };\n Object.keys(res.sections).forEach((collection) => {\n if (String(collection).startsWith('collection-')) {\n if (res.sections[collection].items) {\n collections.push({\n items: res.sections[collection].items.map(\n (item: {\n id: string;\n link: string;\n title: string;\n text: string;\n metadata: any;\n type: string;\n routeId?: string;\n params?: object;\n slug?: string;\n }): ItemPreviewData => {\n let anchor: Anchor;\n if (item.text) {\n // Sanitize HTML tags from the text content\n if (itemPreviewOptions.striptags) {\n item.text = helpers.striptags(item.text);\n }\n // Limit the length of the item preview text content\n if (itemPreviewOptions.limit\n && (item.text.length > itemPreviewOptions.limit)) {\n item.text = `${item.text.substring(0, itemPreviewOptions.limit)}...`;\n }\n }\n const metadata: MetadataGroup[] = [];\n if (Array.isArray(item.metadata)) {\n item.metadata.forEach((group) => {\n const metadataItems = [];\n (group.items || []).forEach((metadataItem) => {\n metadataItems.push({\n ...metadataItem,\n label: _t(metadataItem.label)\n });\n });\n metadata.push({ items: metadataItems });\n });\n }\n if (item.routeId) {\n const routeLink = this.localeService\n .getLinkByRouteId(item.routeId, item.id, item.slug);\n anchor = {\n href: routeLink,\n queryParams: item.params || null,\n };\n } else if (item.link) {\n anchor = {\n href: linksHelper.getRouterLink(item.link),\n queryParams: linksHelper.getQueryParams(item.link),\n };\n }\n return {\n title: item.title,\n text: item.text,\n metadata,\n anchor\n };\n }\n ),\n header: res.sections[collection].header,\n grid: res.sections[collection].grid,\n });\n }\n this.collectionData = collections;\n }\n });\n\n if (gallery) {\n // this.collectionGalleryData = gallery;\n this.hasGallery = true;\n this.one('mr-gallery').update(gallery);\n } else {\n this.collectionGalleryData = undefined;\n }\n if (header) {\n this.eventDescription = header.content;\n this.eventHeader = res.title;\n this.one('mr-year-header').update({\n title: { main: { text: header.title } },\n actions: {\n buttons: [\n {\n text: '',\n icon: 'n7-icon-close',\n anchor: {\n payload: 'closebutton',\n },\n },\n ],\n },\n });\n }\n if (placesData) {\n this.hasMap = true;\n this.one('mr-map').update(placesData);\n } else {\n this.hasMap = false;\n }\n if (bibData) {\n this.bibliographyData = {\n header: bibData.header,\n items: bibData.items.map((item) => ({\n ...item,\n anchor: {\n payload: item.payload,\n },\n classes: 'mr-item-preview-bibliography',\n })),\n };\n } else {\n this.bibliographyData = undefined;\n }\n this.loading.resourceDetails = false;\n });\n }\n}\n","import { ActivatedRoute, Router } from '@angular/router';\nimport { EventHandler } from '@net7/core';\nimport { Timeline } from 'vis-timeline';\nimport { helpers } from '@net7/boilerplate-common';\nimport { Location } from '@angular/common';\nimport { MrResourceModalService } from '../../services/resource-modal.service';\nimport { MrLocaleService } from '../../services/locale.service';\n\nexport class MrTimelineLayoutEH extends EventHandler {\n private modalService: MrResourceModalService;\n\n private route: ActivatedRoute;\n\n private router: Router;\n\n private localeService: MrLocaleService;\n\n private location: Location;\n\n public listen() {\n this.innerEvents$.subscribe(({ type, payload }) => {\n switch (type) {\n case 'mr-timeline-layout.init':\n this.dataSource.onInit(payload);\n this.modalService = payload.modalService;\n this.route = payload.route;\n this.router = payload.router;\n this.localeService = payload.localeService;\n this.location = payload.location;\n this.listenRoute();\n // scroll top\n window.scrollTo(0, 0);\n\n this.dataSource.timelineListener$.subscribe((timeline: Timeline) => {\n timeline.on('click', (props) => {\n if (!props.item) return;\n // build URL slug\n const { content } = this.dataSource.timelineData.dataSet\n .find((d: { id: number; content: string }) => d.id === props.item);\n const slug = helpers.slugify(content);\n // navigate without reloading the layout\n const href = this.localeService.getLinkByRouteId('timelineItem', props.item, slug);\n this.location.go(href);\n this.dataSource.updatePageDetails(props.item);\n });\n });\n break;\n case 'mr-timeline-layout.destroy':\n break;\n default:\n console.warn('unhandled inner event of type', type);\n break;\n }\n });\n this.outerEvents$.subscribe(({ type }) => {\n switch (type) {\n case 'mr-year-header.closeevent':\n this.dataSource.loadDefaults(true);\n break;\n default:\n break;\n }\n });\n }\n\n private listenRoute() {\n this.route.paramMap.subscribe((params) => {\n const paramId = params.get('id');\n if (paramId) {\n this.dataSource.currentId = paramId;\n this.emitOuter('routechanged', paramId);\n this.dataSource.updatePageDetails(paramId);\n } else {\n this.dataSource.loadDefaults(true);\n }\n });\n }\n\n public itemPreviewEmit = (type, payload) => {\n if (type === 'click' && payload?.action === 'resource-modal') {\n const { id, type: resourceType } = payload;\n this.modalService.open(id, resourceType);\n }\n };\n}\n","import { MrTimelineLayoutDS } from './timeline-layout.ds';\nimport { MrTimelineLayoutEH } from './timeline-layout.eh';\nimport * as DS from '../../data-sources';\nimport * as EH from '../../event-handlers';\n\nexport const MrTimelineLayoutConfig = {\n layoutId: 'mr-timeline-layout',\n widgets: [\n { id: 'mr-timeline' },\n { id: 'mr-map' },\n { id: 'mr-year-header' }\n ],\n layoutDS: MrTimelineLayoutDS,\n layoutEH: MrTimelineLayoutEH,\n widgetsDataSources: DS,\n widgetsEventHandlers: EH,\n options: {\n // TODO\n },\n};\n","import { Component, OnInit, OnDestroy } from '@angular/core';\nimport { ActivatedRoute, Router } from '@angular/router';\nimport {\n AbstractLayout,\n CommunicationService,\n LayoutsConfigurationService,\n ConfigurationService,\n MainStateService\n} from '@net7/boilerplate-common';\nimport { Location } from '@angular/common';\nimport { MrResourceModalService } from '../../services/resource-modal.service';\nimport { MrLayoutStateService } from '../../services/layout-state.service';\nimport { MrTimelineLayoutConfig as config } from './timeline-layout.config';\nimport { MrLocaleService } from '../../services/locale.service';\nimport { MrGalleryDS } from '../../data-sources/gallery.ds';\nimport { MrGalleryEH } from '../../event-handlers/gallery.eh';\n\nconst DATASOURCE_MAP = {\n gallery: MrGalleryDS\n};\n\nconst EVENTHANDLER_MAP = {\n gallery: MrGalleryEH\n};\n\n@Component({\n selector: 'mr-timeline-layout',\n templateUrl: './timeline-layout.html',\n})\nexport class MrTimelineLayoutComponent extends AbstractLayout implements OnInit, OnDestroy {\n private configId: string;\n\n constructor(\n layoutsConfiguration: LayoutsConfigurationService,\n private route: ActivatedRoute,\n private router: Router,\n private configuration: ConfigurationService,\n private communication: CommunicationService,\n private mainState: MainStateService,\n public layoutState: MrLayoutStateService,\n public modalService: MrResourceModalService,\n public localeService: MrLocaleService,\n public location: Location,\n ) {\n super(layoutsConfiguration.get('MrTimelineLayoutConfig') || config);\n }\n\n protected initPayload() {\n return {\n configId: this.configId,\n mainState: this.mainState,\n configuration: this.configuration,\n communication: this.communication,\n layoutState: this.layoutState,\n modalService: this.modalService,\n route: this.route,\n router: this.router,\n localeService: this.localeService,\n location: this.location,\n options: this.config.options || {}\n };\n }\n\n ngOnInit() {\n this.route.data.subscribe((data) => {\n this.layoutState.add('content');\n this.configId = data.configId;\n this.loadWidgets();\n this.onInit();\n });\n }\n\n ngOnDestroy() {\n this.onDestroy();\n }\n\n loadWidgets() {\n this.widgets.push({\n id: 'mr-gallery',\n dataSource: DATASOURCE_MAP.gallery,\n eventHandler: EVENTHANDLER_MAP.gallery\n });\n }\n}\n","<div class=\"mr-timeline mr-layout\" *ngIf=\"lb.dataSource\">\n <div class=\"mr-timeline__timeline\">\n <div\n class=\"mr-timeline__timeline-loading\"\n *ngIf=\"lb.dataSource.loading.timeline\">\n <n7-loader></n7-loader>\n </div>\n <n7-timeline\n [data]=\"lb.widgets['mr-timeline'].ds.out$ | async\"\n *ngIf=\"!lb.dataSource.loading.timeline\"\n >\n </n7-timeline>\n </div>\n\n <div class=\"mr-timeline__page mr-side-margin\">\n <!-- Result header -->\n <div class=\"mr-timeline__page-header\">\n <p\n class=\"mr-timeline__date\"\n *ngIf=\"!lb.dataSource.loading.resourceDetails\"\n >\n {{lb.dataSource.eventHeader}}\n </p>\n <div class=\"mr-timeline__title\">\n <n7-inner-title\n [data]=\"lb.widgets['mr-year-header'].ds.out$ | async\"\n [emit]=\"lb.widgets['mr-year-header'].emit\"\n >\n </n7-inner-title>\n </div>\n </div>\n <!-- END // Result header -->\n\n <div class=\"mr-timeline__content\">\n <!-- DESCRIZIONE -->\n <div *ngIf=\"lb.dataSource.eventDescription\" class=\"mr-content-block mr-content-block-description\">\n <p [innerHTML]=\"lb.dataSource.eventDescription\"></p>\n <p></p>\n </div>\n\n <ng-container *ngIf=\"!lb.dataSource.loading.resourceDetails\">\n <!-- GALLERIA -->\n <mr-gallery *ngIf=\"lb.dataSource.hasGallery\" \n [grid]=\"4\" \n [data]=\"lb.widgets['mr-gallery'].ds.out$ | async\" \n [emit]=\"lb.widgets['mr-gallery'].emit\">\n </mr-gallery>\n\n <!-- MAPPA -->\n <div\n class=\"mr-content-block mr-content-block-map\"\n *ngIf=\"lb.dataSource.hasMap\"\n >\n <h3 class=\"mr-content-block__title\" *ngIf=\"lb.dataSource.mapHeader\">\n {{ lb.dataSource.mapHeader }}\n </h3>\n <div class=\"mr-content-block__content\">\n <n7-map [data]=\"lb.widgets['mr-map'].ds.out$ | async\"></n7-map>\n </div>\n </div>\n\n <!-- BIBLIOGRAFIA -->\n <ng-container *ngIf=\"lb.dataSource.bibliographyData as biblio\">\n <ng-container *ngIf=\"biblio.items && biblio.items.length > 0\">\n <div class=\"mr-content-block mr-content-block-collection\">\n <h3 class=\"mr-content-block__title\">{{ biblio.header.title }}</h3>\n <div class=\"mr-content-block__content n7-grid-1\">\n <ng-container *ngFor=\"let item of biblio.items\">\n <div class=\"mr-timeline__collection-content\">\n <n7-item-preview\n [emit]=\"lb.eventHandler.itemPreviewEmit\"\n [data]=\"item\"\n >\n </n7-item-preview>\n </div>\n </ng-container>\n </div>\n </div>\n </ng-container>\n </ng-container>\n\n <!-- COLLECTIONS -->\n <ng-container *ngFor=\"let coll of lb.dataSource.collectionData\">\n <ng-container *ngIf=\"coll.items && coll.items.length > 0\">\n <div class=\"mr-content-block-collection mr-content-block\">\n <h3 class=\"mr-content-block__title\">{{ coll.header.title }}</h3>\n <div class=\"mr-content-block__content {{ coll.grid ? 'n7-grid-' + coll.grid : 'n7-grid-3' }}\">\n <n7-item-preview *ngFor=\"let item of coll.items\" [data]=\"item\">\n </n7-item-preview>\n </div>\n </div>\n </ng-container>\n </ng-container>\n </ng-container>\n </div>\n </div>\n</div>\n","import {\n Component, OnDestroy, OnInit\n} from '@angular/core';\nimport { _t } from '@net7/core';\nimport { Subject } from 'rxjs';\nimport { filter, takeUntil } from 'rxjs/operators';\nimport { NavigationStart, Router } from '@angular/router';\nimport { isEmpty } from 'lodash';\nimport { MrLocaleService } from '../../services/locale.service';\nimport { ModalStatus, MrResourceModalService } from '../../services/resource-modal.service';\n\nimport {\n MrCollectionDS,\n MrInnerTitleDS,\n MrItemPreviewDS,\n MrMetadataDS,\n} from '../../data-sources';\n\nconst DATASOURCE_MAP = {\n collection: MrCollectionDS,\n metadata: MrMetadataDS,\n preview: MrItemPreviewDS,\n title: MrInnerTitleDS,\n};\n\n@Component({\n selector: 'mr-resource-modal',\n templateUrl: './resource-modal.html',\n})\nexport class MrResourceModalComponent implements OnInit, OnDestroy {\n private destroy$: Subject<void> = new Subject();\n\n public status: ModalStatus = 'IDLE';\n\n public config: any;\n\n public widgets: {\n [id: string]: {\n ds: any;\n };\n } = {};\n\n public errorTitle = _t('global#layout_error_title');\n\n public errorDescription = _t('global#layout_error_description');\n\n constructor(\n private router: Router,\n private modalService: MrResourceModalService,\n private localeService: MrLocaleService,\n ) { }\n\n ngOnInit() {\n this.modalService.state$\n .pipe(\n takeUntil(this.destroy$)\n )\n .subscribe(({ status, config, response }) => {\n this.status = status;\n this.config = config;\n\n if (status === 'SUCCESS') {\n this.loadWidgets(config, response);\n }\n });\n\n // on router change close\n this.router.events.pipe(\n takeUntil(this.destroy$),\n filter(() => !isEmpty(this.widgets)),\n filter((event) => event instanceof NavigationStart),\n ).subscribe(() => {\n this.onClose();\n });\n }\n\n ngOnDestroy() {\n // reset\n this.onClose();\n this.destroy$.next();\n }\n\n onClose(target?: { className: string }) {\n if (target && target.className !== 'mr-resource-modal__overlay') {\n return;\n }\n this.widgets = {};\n this.modalService.close();\n }\n\n private loadWidgets(config, response) {\n const { top, content } = config.sections;\n const sections = top.concat(content);\n if (sections) {\n sections.forEach(({ id, type, options }) => {\n const data = response.sections[id];\n this.widgets[id] = {\n ds: new DATASOURCE_MAP[type]()\n };\n\n // update options\n this.widgets[id].ds.options = {\n ...(options || {}),\n localeService: this.localeService\n };\n\n // update data\n if (data) {\n this.widgets[id].ds.update(data);\n }\n });\n }\n }\n}\n","<div *ngIf=\"status !== 'IDLE'\" class=\"mr-modal mr-resource-modal\" [ngClass]=\"{\n 'is-loading': status === 'LOADING',\n 'is-error': status === 'ERROR'\n }\">\n <div class=\"mr-modal__overlay\" (click)=\"onClose($event.target)\">\n <div class=\"mr-modal__window mr-resource-modal__window\">\n <ng-container [ngSwitch]=\"status\">\n\n <!-- Loading -->\n <ng-container *ngSwitchCase=\"'LOADING'\">\n <div class=\"mr-modal__loader\">\n <n7-loader></n7-loader>\n </div>\n </ng-container>\n\n <!-- Error -->\n <ng-container *ngSwitchCase=\"'ERROR'\">\n\n <div class=\"mr-modal__header mr-resource-modal__header\">\n <h2 class=\"mr-modal__header-title\">\n {{ errorTitle }}\n </h2>\n <div class=\"mr-modal__close\">\n <a class=\"mr-modal__close-link\" (click)=\"onClose()\"><span class=\"n7-icon-close\"></span></a>\n </div>\n </div>\n <div class=\"mr-modal__content\">\n <p class=\"mr-modal__error-text\">{{ errorDescription }}</p>\n </div>\n\n </ng-container>\n\n <!-- Success -->\n <ng-container *ngSwitchCase=\"'SUCCESS'\">\n \n <div class=\"mr-modal__header mr-resource-modal__header\">\n <ng-container *ngIf=\"config.sections as sections\">\n <ng-container *ngTemplateOutlet=\"blocks; context: { $implicit: sections.top }\"></ng-container>\n </ng-container>\n <div class=\"mr-modal__close\">\n <a class=\"mr-modal__close-link\" (click)=\"onClose()\"><span class=\"n7-icon-close\"></span></a>\n </div>\n </div>\n <div class=\"mr-modal__content mr-resource-modal__content\">\n <ng-container *ngIf=\"config.sections as sections\">\n <ng-container *ngTemplateOutlet=\"blocks; context: { $implicit: sections.content }\"></ng-container> \n </ng-container>\n </div>\n </ng-container>\n\n </ng-container>\n\n </div>\n </div>\n</div>\n\n<ng-template #blocks let-list>\n <ng-container *ngFor=\"let section of list\">\n <section *ngIf=\"widgets[section.id].ds && (widgets[section.id].ds.out$ | async)\"\n class=\"{{ 'mr-resource__section mr-resource__' + section.type }}\">\n <ng-container [ngSwitch]=\"section.type\">\n\n <!-- INNER TITLE -->\n <ng-container *ngSwitchCase=\"'title'\">\n <n7-inner-title [data]=\"widgets[section.id].ds.out$ | async\">\n </n7-inner-title>\n </ng-container>\n\n <!-- METADATA VIEWER -->\n <ng-container *ngSwitchCase=\"'metadata'\">\n <div class=\"mr-resource-modal__metadata-content\">\n <h3 *ngIf=\"section.title\" class=\"mr-resource-modal__section-title mr-resource__metadata-title\">\n {{ section.title }}\n </h3>\n <mr-read-more [data]=\"section.readmore\">\n <n7-metadata-viewer [data]=\"widgets[section.id].ds.out$ | async\">\n </n7-metadata-viewer>\n </mr-read-more>\n </div>\n </ng-container>\n\n <!-- COLLECTION -->\n <ng-container *ngSwitchCase=\"'collection'\">\n <ng-container *ngIf=\"widgets[section.id].ds.out$ | async as collection$\">\n <div *ngIf=\"collection$.items?.length > 0\" class=\"mr-resource__collection-content\">\n <h3 *ngIf=\"section.title\" class=\"mr-resource-modal__section-title\">\n {{ section.title }}\n </h3>\n <div\n class=\"mr-resource__collection-grid {{ section.grid ? 'n7-grid-' + section.grid : '' }}\">\n <n7-item-preview *ngFor=\"let item of collection$?.items\" [data]=\"item\">\n </n7-item-preview>\n </div>\n </div>\n </ng-container>\n </ng-container>\n\n <!-- ITEM PREVIEW -->\n <ng-container *ngSwitchCase=\"'preview'\">\n <h3 *ngIf=\"section.title\" class=\"mr-resource-modal__section-title\">\n {{ section.title }}\n </h3>\n <n7-item-preview [data]=\"widgets[section.id].ds.out$ | async\">\n </n7-item-preview>\n </ng-container>\n\n </ng-container>\n </section>\n </ng-container>\n</ng-template>\n","// MODULES\nimport { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { Router } from '@angular/router';\nimport { DvComponentsLibModule } from '@net7/components';\nimport { MainStateService, N7BoilerplateCommonModule } from '@net7/boilerplate-common';\n// SERVICES\nimport { MrSearchService } from './services/search.service';\nimport { MrLayoutStateService } from './services/layout-state.service';\nimport { MrResourceModalService } from './services/resource-modal.service';\nimport { MrLocaleService } from './services/locale.service';\n// PIPES\nimport { EscapeHtmlPipe } from './pipes/keep-html.pipe';\n// LAYOUTS\nimport { MrAdvancedResultsLayoutComponent } from './layouts/advanced-results-layout/advanced-results-layout';\nimport { MrAdvancedSearchLayoutComponent } from './layouts/advanced-search-layout/advanced-search-layout';\nimport { MrHomeLayoutComponent } from './layouts/home-layout/home-layout';\nimport { MrItineraryLayoutComponent } from './layouts/itinerary-layout/itinerary-layout';\nimport { MrMapLayoutComponent } from './layouts/map-layout/map-layout';\nimport { MrNetworkLayoutComponent } from './layouts/network-layout/network-layout';\nimport { MrPostsLayoutComponent } from './layouts/posts-layout/posts-layout';\nimport { MrResourceLayoutComponent } from './layouts/resource-layout/resource-layout';\nimport { MrSearchFacetsLayoutComponent } from './layouts/search-facets-layout/search-facets-layout';\nimport { MrSearchLayoutComponent } from './layouts/search-layout/search-layout';\nimport { MrStaticLayoutComponent } from './layouts/static-layout/static-layout';\nimport { MrTimelineLayoutComponent } from './layouts/timeline-layout/timeline-layout';\n// COMPONENTS\nimport { MrAdvancedResultComponent } from './components/advanced-result/advanced-result';\nimport { MrFormComponent } from './components/form/form';\nimport { MrFormWrapperAccordionComponent } from './components/form-wrapper-accordion/form-wrapper-accordion';\nimport { MrGalleryComponent } from './components/gallery/gallery';\nimport { MrMetadataReadmoreComponent } from './components/metadata-with-readmore/metadata-with-readmore';\nimport { MrResourceModalComponent } from './components/resource-modal/resource-modal';\nimport { MrSearchPageDescriptionComponent } from './components/search-page-description/search-page-description';\nimport { ReadMoreComponent } from './components/read-more/read-more';\nimport { MrMetadataDynamicComponent } from './components';\nimport { MrInputTypeaheadComponent } from './components/input-typeahead/input-typeahead';\n\nconst COMPONENTS = [\n // Layout components\n MrAdvancedResultsLayoutComponent,\n MrAdvancedSearchLayoutComponent,\n MrHomeLayoutComponent,\n MrItineraryLayoutComponent,\n MrMapLayoutComponent,\n MrNetworkLayoutComponent,\n MrMetadataReadmoreComponent,\n MrPostsLayoutComponent,\n MrResourceLayoutComponent,\n MrSearchFacetsLayoutComponent,\n MrSearchLayoutComponent,\n MrStaticLayoutComponent,\n MrTimelineLayoutComponent,\n // Custom components\n ReadMoreComponent,\n MrFormComponent,\n MrFormWrapperAccordionComponent,\n MrSearchPageDescriptionComponent,\n MrResourceModalComponent,\n MrGalleryComponent,\n MrAdvancedResultComponent,\n MrMetadataDynamicComponent,\n MrInputTypeaheadComponent,\n];\n\n@NgModule({\n declarations: [\n EscapeHtmlPipe,\n COMPONENTS\n ],\n imports: [\n CommonModule,\n DvComponentsLibModule,\n N7BoilerplateCommonModule,\n ],\n providers: [\n MrSearchService,\n MrLayoutStateService,\n MrResourceModalService,\n MrLocaleService\n ],\n exports: COMPONENTS\n})\nexport class N7BoilerplateMurucaModule {\n constructor(\n private localeService: MrLocaleService,\n private mainState: MainStateService,\n private router: Router,\n ) {\n // listen to locale (language select) change event\n this.mainState.get$('footerEvents').subscribe(({ type, payload }) => {\n if (type === 'footer.change' && payload?.inputPayload === 'locale') {\n const currentLocale = this.localeService.getLocale();\n const { value } = payload;\n if (currentLocale !== value) {\n const href = this.localeService.getLinkByLocale(value);\n if (href) {\n this.router.navigate([href]);\n }\n }\n }\n });\n }\n}\n","/* eslint-disable no-use-before-define */\nimport {\n InputCheckboxData, InputSelectData, InputTextData, MapData, HistogramRangeData\n} from '@net7/components';\nimport { ConfigMurucaLayout } from './layouts';\n\nexport interface ConfigMurucaAdvancedSearchLayout extends ConfigMurucaLayout {\n /** results page url */\n resultsUrl: string | {\n [locale: string]: string;\n };\n /** dynamic options (from API) */\n hasDynamicOptions?: boolean;\n formConfig: {\n /** form submit button */\n submitButton: {\n label: string;\n };\n /** form reset button */\n resetButton: {\n label: string;\n };\n /** form groups (form accordion section) */\n groups: {\n /** id (unique) */\n id: string;\n /** group sections (id) [section1, section2, ...] */\n sections: string[];\n /** aditional css classes */\n classes?: string;\n /** aditional options */\n options?: {\n /** group label */\n label: string;\n /** group is (visually) open? */\n isOpen?: boolean;\n /** show group header? */\n showHeader?: boolean;\n };\n }[];\n sections: ConfigMurucaAdvancedSearchSection[];\n };\n}\n\nexport interface ConfigMurucaAdvancedSearchSection {\n /** id (unique) */\n id: string;\n /** section title */\n title?: string;\n /** section description text */\n description?: string;\n /** section info tooltip */\n info?: string;\n /** is advanced? for css purposes */\n advancedSection?: boolean;\n /** section inputs */\n inputs: (\n ConfigMurucaAdvancedSearchInputText<unknown>\n | ConfigMurucaAdvancedSearchInputCheckbox<unknown>\n | ConfigMurucaAdvancedSearchInputSelect<unknown>\n | ConfigMurucaAdvancedSearchInputMap<unknown>\n // FIXME: custom inputs\n // | ConfigMurucaAdvancedSearchInputCustom<unknown>\n )[];\n}\n\nexport interface ConfigMurucaAdvancedSearchInput<T> {\n id: string;\n info?: string;\n /** input state */\n state?: {\n value: T;\n disabled?: boolean;\n hidden?: boolean;\n };\n}\n\nexport interface ConfigMurucaAdvancedSearchInputText<T>\n extends ConfigMurucaAdvancedSearchInput<T> {\n type: 'text';\n data: InputTextData;\n}\n\nexport interface AdvancedInputCheckboxData extends InputCheckboxData {\n id: string;\n}\n\nexport interface ConfigMurucaAdvancedSearchInputCheckbox<T>\n extends ConfigMurucaAdvancedSearchInput<T> {\n type: 'checkbox';\n data: AdvancedInputCheckboxData;\n}\n\nexport interface ConfigMurucaAdvancedSearchInputSelect<T>\n extends ConfigMurucaAdvancedSearchInput<T> {\n type: 'select';\n data: InputSelectData;\n}\n\n// Allow embedding of map-component into the search facets\nexport interface ConfigMurucaAdvancedSearchInputMap<T>\n extends ConfigMurucaAdvancedSearchInput<T> {\n type: 'map';\n data: MapData;\n}\n\n// Allow embedding of histogram-component into the search facets\nexport interface ConfigMurucaAdvancedSearchInputHistogram<T>\n extends ConfigMurucaAdvancedSearchInput<T> {\n type: 'histogram';\n data: HistogramRangeData;\n}\n\n// FIXME: custom inputs\n// export interface ConfigMurucaAdvancedSearchInputCustom<T>\n// extends ConfigMurucaAdvancedSearchInput<T> {\n// type: string;\n// data: object;\n// }\n","// home layout\nexport * from './home-layout/home-layout';\nexport * from './home-layout/home-layout.ds';\nexport * from './home-layout/home-layout.eh';\nexport * from './home-layout/home-layout.config';\n// search layout\nexport * from './search-layout/search-layout';\nexport * from './search-layout/search-layout.ds';\nexport * from './search-layout/search-layout.eh';\nexport * from './search-layout/search-layout.config';\n// search facets-layout\nexport * from './search-facets-layout/search-facets-layout';\nexport * from './search-facets-layout/search-facets-layout.ds';\nexport * from './search-facets-layout/search-facets-layout.eh';\nexport * from './search-facets-layout/search-facets-layout.config';\n// static layout\nexport * from './static-layout/static-layout';\nexport * from './static-layout/static-layout.ds';\nexport * from './static-layout/static-layout.eh';\nexport * from './static-layout/static-layout.config';\n// resource layout\nexport * from './resource-layout/resource-layout';\nexport * from './resource-layout/resource-layout.ds';\nexport * from './resource-layout/resource-layout.eh';\nexport * from './resource-layout/resource-layout.config';\n// advanced search layout\nexport * from './advanced-search-layout/advanced-search-layout';\nexport * from './advanced-search-layout/advanced-search-layout.ds';\nexport * from './advanced-search-layout/advanced-search-layout.eh';\nexport * from './advanced-search-layout/advanced-search-layout.config';\n// advanced results layout\nexport * from './advanced-results-layout/advanced-results-layout';\nexport * from './advanced-results-layout/advanced-results-layout.ds';\nexport * from './advanced-results-layout/advanced-results-layout.eh';\nexport * from './advanced-results-layout/advanced-results-layout.config';\n// posts layout\nexport * from './posts-layout/posts-layout';\nexport * from './posts-layout/posts-layout.ds';\nexport * from './posts-layout/posts-layout.eh';\nexport * from './posts-layout/posts-layout.config';\n// timeline layout\nexport * from './timeline-layout/timeline-layout';\nexport * from './timeline-layout/timeline-layout.ds';\nexport * from './timeline-layout/timeline-layout.eh';\nexport * from './timeline-layout/timeline-layout.config';\n// map layout\nexport * from './map-layout/map-layout';\nexport * from './map-layout/map-layout.ds';\nexport * from './map-layout/map-layout.eh';\nexport * from './map-layout/map-layout.config';\n// itinerary layout\nexport * from './itinerary-layout/itinerary-layout';\nexport * from './itinerary-layout/itinerary-layout.ds';\nexport * from './itinerary-layout/itinerary-layout.eh';\nexport * from './itinerary-layout/itinerary-layout.config';\n// network layout\nexport * from './network-layout/network-layout';\nexport * from './network-layout/network-layout.ds';\nexport * from './network-layout/network-layout.eh';\nexport * from './network-layout/network-layout.config';\n","import { Injectable } from '@angular/core';\nimport { HttpClient } from '@angular/common/http';\nimport { tap, catchError } from 'rxjs/operators';\nimport { of } from 'rxjs';\nimport { ConfigurationService, MainStateService } from '@net7/boilerplate-common';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class MrFooterService {\n private cache: {\n [locale: string]: object;\n } = {};\n\n constructor(\n private http: HttpClient,\n private configuration: ConfigurationService,\n private mainState: MainStateService,\n ) {}\n\n load(locale = null): Promise<any> {\n if (locale && this.cache[locale]) {\n this._handleResponse(this.cache[locale]);\n return Promise.resolve();\n }\n\n const { defaultProvider, providers } = this.configuration.get('communication');\n const currentProvider = providers[defaultProvider] || {};\n const { baseUrl } = currentProvider;\n const menuPath = currentProvider?.config?.footer;\n\n if (baseUrl && menuPath) {\n let url = baseUrl + menuPath;\n if (locale) {\n url += `?locale=${locale}`;\n }\n return this.http.get(url).pipe(\n catchError(() => of(null)),\n tap((response) => {\n this.cache[locale] = response;\n this._handleResponse(response);\n }),\n ).toPromise();\n }\n return of(null).toPromise();\n }\n\n private _handleResponse(response) {\n if (response) {\n this.configuration.set('footer', response);\n\n // update state\n this.mainState.update('footer', response);\n }\n }\n}\n","import { Injectable } from '@angular/core';\nimport { HttpClient } from '@angular/common/http';\nimport { tap, catchError } from 'rxjs/operators';\nimport { of } from 'rxjs';\nimport { Anchor } from '@net7/components';\nimport { ConfigurationService } from '@net7/boilerplate-common';\nimport linksHelper from '../helpers/links-helper';\nimport { MrLocaleService } from './locale.service';\n\ntype MenuItem = {\n text: string;\n anchor: Anchor;\n _meta: any;\n subnav?: MenuItem[];\n classes?: string;\n}\n\n@Injectable({\n providedIn: 'root',\n})\nexport class MrMenuService {\n private dynamicPaths: string[] = [];\n\n private cache: {\n [locale: string]: object;\n } = {};\n\n constructor(\n private http: HttpClient,\n private configuration: ConfigurationService,\n private localeService: MrLocaleService,\n ) {}\n\n load(locale = null): Promise<any> {\n if (locale && this.cache[locale]) {\n this._handleResponse(this.cache[locale]);\n return Promise.resolve();\n }\n\n const { defaultProvider, providers } = this.configuration.get('communication');\n const currentProvider = providers[defaultProvider] || {};\n const { baseUrl } = currentProvider;\n const menuPath = currentProvider?.config?.menu;\n\n if (baseUrl && menuPath) {\n let url = baseUrl + menuPath;\n if (locale) {\n url += `?locale=${locale}`;\n }\n return this.http.get(url).pipe(\n catchError(() => of(null)),\n tap((response) => {\n this.cache[locale] = response;\n this._handleResponse(response, locale);\n }),\n ).toPromise();\n }\n return of(null).toPromise();\n }\n\n private _handleResponse(response, locale?: string) {\n if (response) {\n const headerConfig = this.configuration.get('header');\n headerConfig.nav.items = response.map(({\n label, slug, isStatic, subpages, classes\n }) => {\n const href = this.getHref(slug);\n // dynamic path control\n if (!isStatic) {\n this.dynamicPaths.push(href);\n }\n\n const item = {\n classes,\n text: label,\n anchor: href ? {\n href: linksHelper.getRouterLink(href),\n queryParams: linksHelper.getQueryParams(href)\n } : null,\n _meta: {\n id: href\n }\n } as MenuItem;\n\n if (subpages !== undefined) {\n item.subnav = [];\n subpages.forEach((el) => {\n const subHref = this.getHref(el.slug);\n if (!el.isStatic) {\n this.dynamicPaths.push(subHref);\n }\n item.subnav.push({\n classes: el.classes || null,\n text: el.label,\n anchor: subHref ? {\n href: linksHelper.getRouterLink(subHref),\n queryParams: linksHelper.getQueryParams(subHref)\n } : null,\n _meta: {\n id: subHref\n }\n });\n });\n }\n return item;\n });\n if (locale) {\n const href = this.localeService.getLink(locale, 'home');\n if (href) {\n headerConfig.logo.anchor = { href };\n }\n }\n this.configuration.set('header', headerConfig);\n }\n }\n\n public isDynamicPath = (path: string) => this.dynamicPaths.includes(path);\n\n private getHref(link: string) {\n let href = link || null;\n if (href && !linksHelper.isExternalLink(href)) {\n href = `/${href}`;\n }\n return href;\n }\n}\n","import { Injectable } from '@angular/core';\nimport { HttpClient } from '@angular/common/http';\nimport { tap, catchError } from 'rxjs/operators';\nimport { of } from 'rxjs';\nimport { translate } from '@net7/core';\nimport { ConfigurationService } from '@net7/boilerplate-common';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class MrTranslationsLoaderService {\n private loaded: {\n [locale: string]: boolean;\n } = {};\n\n constructor(\n private http: HttpClient,\n private configuration: ConfigurationService,\n ) {}\n\n load(langCode: string): Promise<any> {\n // update translate module\n translate.setCurrentLang(langCode);\n\n // locale already loaded check\n if (this.loaded[langCode]) {\n this.loaded[langCode] = true;\n return Promise.resolve();\n }\n const { defaultProvider, providers } = this.configuration.get('communication');\n const currentProvider = providers[defaultProvider] || {};\n const { baseUrl } = currentProvider;\n const translationsPath = currentProvider?.config?.translation;\n\n if (baseUrl && translationsPath) {\n const url = baseUrl + translationsPath + langCode;\n return this.http.get(url).pipe(\n catchError(() => of(null)),\n tap((response) => this._handleResponse(response, langCode)),\n ).toPromise();\n }\n return of(null).toPromise();\n }\n\n private _handleResponse(response: object, langCode: string) {\n if (response) {\n Object.keys(response).forEach((key) => {\n translate.setLangTranslation(langCode, key, response[key]);\n });\n }\n }\n}\n","import { Injectable } from '@angular/core';\nimport { ConfigurationService } from '@net7/boilerplate-common';\n\n@Injectable({ providedIn: 'root' })\nexport class MrCopyProtectionService {\n constructor(private config: ConfigurationService) {}\n\n init() {\n const { enabled, message, htmlMessage } = this.config.get('copyProtection') || {};\n if (!enabled || !message) return;\n\n document.addEventListener('copy', (e: ClipboardEvent) => {\n const selection = window.getSelection();\n if (!selection?.toString()) return;\n\n e.clipboardData.setData('text/plain', selection.toString() + message);\n\n if (htmlMessage) {\n const container = document.createElement('div');\n for (let i = 0; i < selection.rangeCount; i++) {\n container.appendChild(selection.getRangeAt(i).cloneContents());\n }\n e.clipboardData.setData('text/html', container.innerHTML + htmlMessage);\n }\n\n e.preventDefault();\n });\n }\n}\n","import { Injectable } from '@angular/core';\nimport { ActivatedRouteSnapshot, RouterStateSnapshot, Router } from '@angular/router';\nimport { Observable } from 'rxjs';\nimport { MrMenuService } from '../services/menu.service';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class DynamicPathGuard {\n constructor(\n private menuService: MrMenuService,\n private router: Router\n ) {}\n\n canActivate(\n next: ActivatedRouteSnapshot,\n state: RouterStateSnapshot\n ): Observable<boolean> | Promise<boolean> | boolean {\n const { url } = state;\n if (!this.menuService.isDynamicPath(url)) {\n const { notFoundPath } = next.data;\n this.router.navigate([notFoundPath ? `/${notFoundPath}` : '/']);\n return false;\n }\n return true;\n }\n}\n","import { Injectable } from '@angular/core';\nimport { ActivatedRouteSnapshot, RouterStateSnapshot } from '@angular/router';\nimport { Observable } from 'rxjs';\nimport { MrTranslationsLoaderService } from '../services/translations-loader.service';\nimport { MrFooterService } from '../services/footer.service';\nimport { MrMenuService } from '../services/menu.service';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class LocaleDependenciesGuard {\n private prevRouteId: string;\n\n private prevLocale: string;\n\n constructor(\n private menuService: MrMenuService,\n private footerService: MrFooterService,\n private translationsLoader: MrTranslationsLoaderService,\n ) {}\n\n canActivate(\n route: ActivatedRouteSnapshot,\n state: RouterStateSnapshot\n ): Observable<boolean> | Promise<boolean> | boolean {\n const { locale, routeId } = route.data;\n // check routeId to force reload\n if (\n (routeId && this.prevRouteId === routeId)\n && (locale && this.prevLocale !== locale)\n ) {\n const { url } = state;\n document.location.href = url;\n return Promise.reject();\n }\n this.prevRouteId = routeId;\n this.prevLocale = locale;\n return Promise.all([\n this.menuService.load(locale),\n this.footerService.load(locale),\n this.translationsLoader.load(locale)\n ])\n .then(() => Promise.resolve(true))\n .catch((err) => {\n console.warn('Locale dependencies error:', err);\n return Promise.resolve(true);\n });\n }\n}\n","/*\n * Public API Surface of n7-boilerplate-muruca\n */\n\n// muruca\nexport * from './lib/n7-boilerplate-muruca.module';\nexport * from './lib/config-types';\nexport * from './lib/interfaces';\nexport * from './lib/data-sources';\nexport * from './lib/event-handlers';\nexport * from './lib/layouts';\nexport * from './lib/components';\nexport * from './lib/services';\nexport * from './lib/guards';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1","i2","ITEM_PREVIEW_DEFAULTS","ICON_OPEN","ICON_CLOSE","config","i3.MrLayoutStateService","i4.MrResourceModalService","i5.MrLocaleService","i6","i8.MrAdvancedResultComponent","i3","i3.MrInputTypeaheadComponent","i3.MrFormComponent","i3.MrLocaleService","i4","i5","i6.MrFormWrapperAccordionComponent","DATASOURCE_MAP","EVENTHANDLER_MAP","i4.MrLocaleService","i8.ReadMoreComponent","i9.MrGalleryComponent","i10.EscapeHtmlPipe","i4.MrLayoutStateService","i2.ReadMoreComponent","i3.MrMetadataReadmoreComponent","i4.ReadMoreComponent","i8.MrMetadataReadmoreComponent","i9.ReadMoreComponent","i10.MrMetadataDynamicComponent","i11.EscapeHtmlPipe","ACTIVE_CLASS","DS.MrItemPreviewsDS","i3.MrSearchService","i5.MrResourceModalService","i6.MrLocaleService","i7","i8","i9.MrSearchFacetsLayoutComponent","i10.MrSearchPageDescriptionComponent","i11.MrAdvancedResultComponent","i6.EscapeHtmlPipe","i8.MrGalleryComponent","i2.MrResourceModalService","i6.ReadMoreComponent","i1.MrLocaleService","i1.MrMenuService","i2.MrFooterService","i3.MrTranslationsLoaderService"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"net7-boilerplate-muruca.mjs","sources":["../../../projects/n7-boilerplate-muruca/src/lib/helpers/search-helper.ts","../../../projects/n7-boilerplate-muruca/src/lib/services/search.service.ts","../../../projects/n7-boilerplate-muruca/src/lib/services/layout-state.service.ts","../../../projects/n7-boilerplate-muruca/src/lib/services/resource-modal.service.ts","../../../projects/n7-boilerplate-muruca/src/lib/services/locale.service.ts","../../../projects/n7-boilerplate-muruca/src/lib/pipes/keep-html.pipe.ts","../../../projects/n7-boilerplate-muruca/src/lib/layouts/advanced-results-layout/advanced-results-layout.ds.ts","../../../projects/n7-boilerplate-muruca/src/lib/layouts/advanced-results-layout/advanced-results-layout.eh.ts","../../../projects/n7-boilerplate-muruca/src/lib/helpers/links-helper.ts","../../../projects/n7-boilerplate-muruca/src/lib/data-sources/breadcrumbs.ds.ts","../../../projects/n7-boilerplate-muruca/src/lib/data-sources/button.ds.ts","../../../projects/n7-boilerplate-muruca/src/lib/data-sources/collection.ds.ts","../../../projects/n7-boilerplate-muruca/src/lib/data-sources/content.ds.ts","../../../projects/n7-boilerplate-muruca/src/lib/data-sources/filters.ds.ts","../../../projects/n7-boilerplate-muruca/src/lib/data-sources/hero.ds.ts","../../../projects/n7-boilerplate-muruca/src/lib/models/image-viewer-overlay.model.ts","../../../projects/n7-boilerplate-muruca/src/lib/data-sources/image-viewer.ds.ts","../../../projects/n7-boilerplate-muruca/src/lib/data-sources/image-viewer-tools.ds.ts","../../../projects/n7-boilerplate-muruca/src/lib/data-sources/image-viewer-overlay-details.ds.ts","../../../projects/n7-boilerplate-muruca/src/lib/data-sources/info-box.ds.ts","../../../projects/n7-boilerplate-muruca/src/lib/data-sources/inner-title.ds.ts","../../../projects/n7-boilerplate-muruca/src/lib/data-sources/item-preview.ds.ts","../../../projects/n7-boilerplate-muruca/src/lib/data-sources/item-previews.ds.ts","../../../projects/n7-boilerplate-muruca/src/lib/data-sources/map.ds.ts","../../../projects/n7-boilerplate-muruca/src/lib/data-sources/metadata.ds.ts","../../../projects/n7-boilerplate-muruca/src/lib/data-sources/nav.ds.ts","../../../projects/n7-boilerplate-muruca/src/lib/data-sources/resource-tabs.ds.ts","../../../projects/n7-boilerplate-muruca/src/lib/data-sources/text-viewer.ds.ts","../../../projects/n7-boilerplate-muruca/src/lib/data-sources/timeline.ds.ts","../../../projects/n7-boilerplate-muruca/src/lib/data-sources/year-header.ds.ts","../../../projects/n7-boilerplate-muruca/src/lib/data-sources/gallery.ds.ts","../../../projects/n7-boilerplate-muruca/src/lib/data-sources/network.ds.ts","../../../projects/n7-boilerplate-muruca/src/lib/data-sources/network-resource.ds.ts","../../../projects/n7-boilerplate-muruca/src/lib/data-sources/parallel-text-viewer.ds.ts","../../../projects/n7-boilerplate-muruca/src/lib/data-sources/embedded-content.ds.ts","../../../projects/n7-boilerplate-muruca/src/lib/data-sources/search/search-page-title.ds.ts","../../../projects/n7-boilerplate-muruca/src/lib/data-sources/search/search-results-title.ds.ts","../../../projects/n7-boilerplate-muruca/src/lib/data-sources/search/search-results.ds.ts","../../../projects/n7-boilerplate-muruca/src/lib/data-sources/search/search-tags.ds.ts","../../../projects/n7-boilerplate-muruca/src/lib/data-sources/search/search-page-description.ds.ts","../../../projects/n7-boilerplate-muruca/src/lib/helpers/date-helper.ts","../../../projects/n7-boilerplate-muruca/src/lib/data-sources/static-metadata.ds.ts","../../../projects/n7-boilerplate-muruca/src/lib/data-sources/form-wrapper-accordion.ds.ts","../../../projects/n7-boilerplate-muruca/src/lib/data-sources/search/advanced-search-tags.ds.ts","../../../projects/n7-boilerplate-muruca/src/lib/data-sources/metadata-dynamic.ds.ts","../../../projects/n7-boilerplate-muruca/src/lib/data-sources/image-viewer-iiif.ds.ts","../../../projects/n7-boilerplate-muruca/src/lib/event-handlers/dummy.eh.ts","../../../projects/n7-boilerplate-muruca/src/lib/event-handlers/filters.eh.ts","../../../projects/n7-boilerplate-muruca/src/lib/event-handlers/nav.eh.ts","../../../projects/n7-boilerplate-muruca/src/lib/event-handlers/timeline.eh.ts","../../../projects/n7-boilerplate-muruca/src/lib/event-handlers/year-header.eh.ts","../../../projects/n7-boilerplate-muruca/src/lib/event-handlers/gallery.eh.ts","../../../projects/n7-boilerplate-muruca/src/lib/event-handlers/collection.eh.ts","../../../projects/n7-boilerplate-muruca/src/lib/event-handlers/text-viewer.eh.ts","../../../projects/n7-boilerplate-muruca/src/lib/event-handlers/button.eh.ts","../../../projects/n7-boilerplate-muruca/src/lib/event-handlers/network.eh.ts","../../../projects/n7-boilerplate-muruca/src/lib/event-handlers/network-resource.eh.ts","../../../projects/n7-boilerplate-muruca/src/lib/event-handlers/parallel-text-viewer.eh.ts","../../../projects/n7-boilerplate-muruca/src/lib/event-handlers/search/search-tags.eh.ts","../../../projects/n7-boilerplate-muruca/src/lib/event-handlers/search/search-results-title.eh.ts","../../../projects/n7-boilerplate-muruca/src/lib/event-handlers/search/search-page-title.eh.ts","../../../projects/n7-boilerplate-muruca/src/lib/event-handlers/search/search-page-description.eh.ts","../../../projects/n7-boilerplate-muruca/src/lib/event-handlers/search/search-results.eh.ts","../../../projects/n7-boilerplate-muruca/src/lib/event-handlers/form-wrapper-accordion.eh.ts","../../../projects/n7-boilerplate-muruca/src/lib/event-handlers/metadata-dynamic.eh.ts","../../../projects/n7-boilerplate-muruca/src/lib/event-handlers/map.eh.ts","../../../projects/n7-boilerplate-muruca/src/lib/layouts/advanced-results-layout/advanced-results-layout.config.ts","../../../projects/n7-boilerplate-muruca/src/lib/components/advanced-result/advanced-result.ts","../../../projects/n7-boilerplate-muruca/src/lib/components/advanced-result/advanced-result.html","../../../projects/n7-boilerplate-muruca/src/lib/layouts/advanced-results-layout/advanced-results-layout.ts","../../../projects/n7-boilerplate-muruca/src/lib/layouts/advanced-results-layout/advanced-results-layout.html","../../../projects/n7-boilerplate-muruca/src/lib/data-sources/form/input-text.ds.ts","../../../projects/n7-boilerplate-muruca/src/lib/event-handlers/form/input-text.eh.ts","../../../projects/n7-boilerplate-muruca/src/lib/data-sources/form/input-select.ds.ts","../../../projects/n7-boilerplate-muruca/src/lib/event-handlers/form/input-select.eh.ts","../../../projects/n7-boilerplate-muruca/src/lib/data-sources/form/input-checkbox.ds.ts","../../../projects/n7-boilerplate-muruca/src/lib/event-handlers/form/input-checkbox.eh.ts","../../../projects/n7-boilerplate-muruca/src/lib/data-sources/form/input-typeahead.ds.ts","../../../projects/n7-boilerplate-muruca/src/lib/event-handlers/form/input-typeahead.eh.ts","../../../projects/n7-boilerplate-muruca/src/lib/models/form.model.ts","../../../projects/n7-boilerplate-muruca/src/lib/layouts/advanced-search-layout/advanced-search-layout.ds.ts","../../../projects/n7-boilerplate-muruca/src/lib/layouts/advanced-search-layout/advanced-search-layout.eh.ts","../../../projects/n7-boilerplate-muruca/src/lib/layouts/advanced-search-layout/advanced-search-layout.config.ts","../../../projects/n7-boilerplate-muruca/src/lib/components/input-typeahead/input-typeahead.ts","../../../projects/n7-boilerplate-muruca/src/lib/components/input-typeahead/input-typeahead.html","../../../projects/n7-boilerplate-muruca/src/lib/components/form/form.ts","../../../projects/n7-boilerplate-muruca/src/lib/components/form/form.html","../../../projects/n7-boilerplate-muruca/src/lib/components/form-wrapper-accordion/form-wrapper-accordion.ts","../../../projects/n7-boilerplate-muruca/src/lib/components/form-wrapper-accordion/form-wrapper-accordion.html","../../../projects/n7-boilerplate-muruca/src/lib/layouts/advanced-search-layout/advanced-search-layout.ts","../../../projects/n7-boilerplate-muruca/src/lib/layouts/advanced-search-layout/advanced-search-layout.html","../../../projects/n7-boilerplate-muruca/src/lib/layouts/home-layout/home-layout.ds.ts","../../../projects/n7-boilerplate-muruca/src/lib/layouts/home-layout/home-layout.eh.ts","../../../projects/n7-boilerplate-muruca/src/lib/layouts/home-layout/home-layout.config.ts","../../../projects/n7-boilerplate-muruca/src/lib/data-sources/slider.ds.ts","../../../projects/n7-boilerplate-muruca/src/lib/event-handlers/slider.eh.ts","../../../projects/n7-boilerplate-muruca/src/lib/event-handlers/hero.eh.ts","../../../projects/n7-boilerplate-muruca/src/lib/layouts/home-layout/home-layout.ts","../../../projects/n7-boilerplate-muruca/src/lib/layouts/home-layout/home-layout.html","../../../projects/n7-boilerplate-muruca/src/lib/layouts/itinerary-layout/itinerary-layout.ds.ts","../../../projects/n7-boilerplate-muruca/src/lib/layouts/itinerary-layout/itinerary-layout.eh.ts","../../../projects/n7-boilerplate-muruca/src/lib/layouts/itinerary-layout/itinerary-layout.config.ts","../../../projects/n7-boilerplate-muruca/src/lib/components/read-more/read-more.ts","../../../projects/n7-boilerplate-muruca/src/lib/components/read-more/read-more.html","../../../projects/n7-boilerplate-muruca/src/lib/components/gallery/gallery.ts","../../../projects/n7-boilerplate-muruca/src/lib/components/gallery/gallery.html","../../../projects/n7-boilerplate-muruca/src/lib/layouts/itinerary-layout/itinerary-layout.ts","../../../projects/n7-boilerplate-muruca/src/lib/layouts/itinerary-layout/itinerary-layout.html","../../../projects/n7-boilerplate-muruca/src/lib/layouts/map-layout/map-layout.ds.ts","../../../projects/n7-boilerplate-muruca/src/lib/layouts/map-layout/map-layout.eh.ts","../../../projects/n7-boilerplate-muruca/src/lib/layouts/map-layout/map-layout.config.ts","../../../projects/n7-boilerplate-muruca/src/lib/layouts/map-layout/map-layout.ts","../../../projects/n7-boilerplate-muruca/src/lib/layouts/map-layout/map-layout.html","../../../projects/n7-boilerplate-muruca/src/lib/layouts/network-layout/network-layout.ds.ts","../../../projects/n7-boilerplate-muruca/src/lib/layouts/network-layout/network-layout.eh.ts","../../../projects/n7-boilerplate-muruca/src/lib/layouts/network-layout/network-layout.config.ts","../../../projects/n7-boilerplate-muruca/src/lib/layouts/network-layout/network-layout.ts","../../../projects/n7-boilerplate-muruca/src/lib/layouts/network-layout/network-layout.html","../../../projects/n7-boilerplate-muruca/src/lib/layouts/posts-layout/posts-layout.ds.ts","../../../projects/n7-boilerplate-muruca/src/lib/layouts/posts-layout/posts-layout.eh.ts","../../../projects/n7-boilerplate-muruca/src/lib/layouts/posts-layout/posts-layout.config.ts","../../../projects/n7-boilerplate-muruca/src/lib/layouts/posts-layout/posts-layout.ts","../../../projects/n7-boilerplate-muruca/src/lib/layouts/posts-layout/posts-layout.html","../../../projects/n7-boilerplate-muruca/src/lib/layouts/resource-layout/resource-layout.ds.ts","../../../projects/n7-boilerplate-muruca/src/lib/layouts/resource-layout/resource-layout.eh.ts","../../../projects/n7-boilerplate-muruca/src/lib/layouts/resource-layout/resource-layout.config.ts","../../../projects/n7-boilerplate-muruca/src/lib/event-handlers/image-viewer.eh.ts","../../../projects/n7-boilerplate-muruca/src/lib/event-handlers/image-viewer-tools.eh.ts","../../../projects/n7-boilerplate-muruca/src/lib/event-handlers/image-viewer-overlay-details.eh.ts","../../../projects/n7-boilerplate-muruca/src/lib/components/metadata-with-readmore/metadata-with-readmore.ts","../../../projects/n7-boilerplate-muruca/src/lib/components/metadata-with-readmore/metadata-with-readmore.html","../../../projects/n7-boilerplate-muruca/src/lib/components/metadata-dynamic/metadata-dynamic.ts","../../../projects/n7-boilerplate-muruca/src/lib/components/metadata-dynamic/metadata-dynamic.html","../../../projects/n7-boilerplate-muruca/src/lib/layouts/resource-layout/resource-layout.ts","../../../projects/n7-boilerplate-muruca/src/lib/layouts/resource-layout/resource-layout.html","../../../projects/n7-boilerplate-muruca/src/lib/layouts/search-facets-layout/search-facets-layout.ds.ts","../../../projects/n7-boilerplate-muruca/src/lib/layouts/search-facets-layout/search-facets-layout.eh.ts","../../../projects/n7-boilerplate-muruca/src/lib/layouts/search-facets-layout/search-facets-layout.config.ts","../../../projects/n7-boilerplate-muruca/src/lib/data-sources/facets/facet-text.ds.ts","../../../projects/n7-boilerplate-muruca/src/lib/data-sources/facets/facet-checkbox.ds.ts","../../../projects/n7-boilerplate-muruca/src/lib/data-sources/facets/facet-select.ds.ts","../../../projects/n7-boilerplate-muruca/src/lib/data-sources/facets/facet-link.ds.ts","../../../projects/n7-boilerplate-muruca/src/lib/data-sources/facets/facet-header.ds.ts","../../../projects/n7-boilerplate-muruca/src/lib/event-handlers/facets/facet-header.eh.ts","../../../projects/n7-boilerplate-muruca/src/lib/event-handlers/facets/facet-text.eh.ts","../../../projects/n7-boilerplate-muruca/src/lib/event-handlers/facets/facet-checkbox.eh.ts","../../../projects/n7-boilerplate-muruca/src/lib/event-handlers/facets/facet-select.eh.ts","../../../projects/n7-boilerplate-muruca/src/lib/event-handlers/facets/facet-link.eh.ts","../../../projects/n7-boilerplate-muruca/src/lib/data-sources/facets/facet-link-multiple.ds.ts","../../../projects/n7-boilerplate-muruca/src/lib/event-handlers/facets/facet-link-multiple.eh.ts","../../../projects/n7-boilerplate-muruca/src/lib/helpers/map-helper.ts","../../../projects/n7-boilerplate-muruca/src/lib/data-sources/facets/facet-map.ds.ts","../../../projects/n7-boilerplate-muruca/src/lib/event-handlers/facets/facet-map.eh.ts","../../../projects/n7-boilerplate-muruca/src/lib/event-handlers/facets/facet-histogram.eh.ts","../../../projects/n7-boilerplate-muruca/src/lib/data-sources/facets/facet-histogram.ds.ts","../../../projects/n7-boilerplate-muruca/src/lib/layouts/search-facets-layout/search-facets-layout.ts","../../../projects/n7-boilerplate-muruca/src/lib/layouts/search-facets-layout/search-facets-layout.html","../../../projects/n7-boilerplate-muruca/src/lib/helpers/local-storage-helper.ts","../../../projects/n7-boilerplate-muruca/src/lib/layouts/search-layout/search-layout.ds.ts","../../../projects/n7-boilerplate-muruca/src/lib/layouts/search-layout/search-layout.eh.ts","../../../projects/n7-boilerplate-muruca/src/lib/layouts/search-layout/search-layout.config.ts","../../../projects/n7-boilerplate-muruca/src/lib/components/search-page-description/search-page-description.ts","../../../projects/n7-boilerplate-muruca/src/lib/components/search-page-description/search-page-description.html","../../../projects/n7-boilerplate-muruca/src/lib/layouts/search-layout/search-layout.ts","../../../projects/n7-boilerplate-muruca/src/lib/layouts/search-layout/search-layout.html","../../../projects/n7-boilerplate-muruca/src/lib/layouts/static-layout/static-layout.ds.ts","../../../projects/n7-boilerplate-muruca/src/lib/layouts/static-layout/static-layout.eh.ts","../../../projects/n7-boilerplate-muruca/src/lib/layouts/static-layout/static-layout.config.ts","../../../projects/n7-boilerplate-muruca/src/lib/layouts/static-layout/static-layout.ts","../../../projects/n7-boilerplate-muruca/src/lib/layouts/static-layout/static-layout.html","../../../projects/n7-boilerplate-muruca/src/lib/layouts/timeline-layout/timeline-layout.ds.ts","../../../projects/n7-boilerplate-muruca/src/lib/layouts/timeline-layout/timeline-layout.eh.ts","../../../projects/n7-boilerplate-muruca/src/lib/layouts/timeline-layout/timeline-layout.config.ts","../../../projects/n7-boilerplate-muruca/src/lib/layouts/timeline-layout/timeline-layout.ts","../../../projects/n7-boilerplate-muruca/src/lib/layouts/timeline-layout/timeline-layout.html","../../../projects/n7-boilerplate-muruca/src/lib/components/resource-modal/resource-modal.ts","../../../projects/n7-boilerplate-muruca/src/lib/components/resource-modal/resource-modal.html","../../../projects/n7-boilerplate-muruca/src/lib/n7-boilerplate-muruca.module.ts","../../../projects/n7-boilerplate-muruca/src/lib/config-types/muruca/advanced-search.ts","../../../projects/n7-boilerplate-muruca/src/lib/layouts/index.ts","../../../projects/n7-boilerplate-muruca/src/lib/services/footer.service.ts","../../../projects/n7-boilerplate-muruca/src/lib/services/menu.service.ts","../../../projects/n7-boilerplate-muruca/src/lib/services/translations-loader.service.ts","../../../projects/n7-boilerplate-muruca/src/lib/services/copy-protection.service.ts","../../../projects/n7-boilerplate-muruca/src/lib/guards/dynamic-path.guard.ts","../../../projects/n7-boilerplate-muruca/src/lib/guards/locale-dependencies.guard.ts","../../../projects/n7-boilerplate-muruca/src/public-api.ts","../../../projects/n7-boilerplate-muruca/src/net7-boilerplate-muruca.ts"],"sourcesContent":["import { MrInputSchema } from '../interfaces/search.interface';\n\nconst hasValue = (value) => {\n if (Array.isArray(value)) {\n return value.length > 0;\n }\n return !!(value || value === 0);\n};\n\nexport default {\n stateToQueryParams(state, schemas: { [key: string]: MrInputSchema }) {\n const queryParams = {};\n\n Object.keys(state).forEach((key) => {\n const schema = schemas[key];\n const { multiple, valueType } = schema;\n const value = state[key];\n if (hasValue(value)) {\n let encodedValue;\n switch (valueType) {\n case 'number':\n queryParams[key] = multiple ? value.join(',') : value;\n break;\n case 'string':\n if (Array.isArray(value)) {\n encodedValue = value.map((element) => element.replace(/,/g, '%2c'));\n } else {\n encodedValue = value.replace(/,/g, '%2c');\n }\n queryParams[key] = multiple ? encodedValue.join(',') : encodedValue;\n break;\n\n case 'boolean':\n queryParams[key] = multiple ? value.map((v) => +v).join(',') : +value;\n break;\n\n default:\n break;\n }\n }\n });\n return queryParams;\n },\n queryParamsToState(queryParams, schemas: { [key: string]: MrInputSchema }) {\n const state = {};\n\n Object.keys(queryParams).forEach((key) => {\n const value = queryParams[key];\n const schema = schemas[key];\n const { multiple, valueType } = schema;\n if (hasValue(value)) {\n if (hasValue(value)) {\n switch (valueType) {\n case 'number':\n state[key] = multiple ? value.split(',').map((v) => +v) : +value;\n break;\n\n case 'string':\n state[key] = multiple ? value.split(',').map((v) => `${v.replace(/%2c/g, ',')}`) : `${value}`.replace(/%2c/g, ',');\n break;\n\n case 'boolean':\n state[key] = multiple ? value.split(',').map((v) => !!v) : !!value;\n break;\n\n default:\n break;\n }\n }\n }\n });\n return state;\n }\n};\n","/* eslint-disable camelcase */\nimport { Injectable } from '@angular/core';\nimport { ActivatedRoute, Router } from '@angular/router';\nimport {\n fromEvent, Observable, of, Subject\n} from 'rxjs';\nimport {\n filter,\n switchMap,\n map,\n debounceTime,\n delay,\n tap,\n takeUntil,\n switchMapTo\n} from 'rxjs/operators';\nimport { isEmpty, xor } from 'lodash';\nimport { _t } from '@net7/core';\nimport { CommunicationService } from '@net7/boilerplate-common';\nimport searchHelper from '../helpers/search-helper';\nimport { MrInputSchema } from '../interfaces/search.interface';\n\nexport const INPUT_STATE_CONTEXT = 'input';\nexport const FACET_STATE_CONTEXT = 'facet';\nexport const SECTION_STATE_CONTEXT = 'section';\nexport const RESULTS_REQUEST_STATE_CONTEXT = 'resultsRequest';\nexport const FACETS_REQUEST_STATE_CONTEXT = 'facetsRequest';\n\n@Injectable()\nexport class MrSearchService {\n private destroyed$: Subject<void> = new Subject();\n\n private searchId: string | number;\n\n private locale: string | null;\n\n private config;\n\n private queryParamKeys: string[] = [];\n\n private initializeKeys: string[] = [];\n\n private initializeValues: {\n [id: string]: any;\n } = {};\n\n private inputSchemas: {\n [key: string]: MrInputSchema;\n } = {};\n\n private contextState: {\n [key: string]: any;\n } = {};\n\n private internalFilterKeys: string[] = [];\n\n private internalFilterState: {\n globalParams: any;\n facets: {\n [key: string]: any;\n };\n } = {\n globalParams: {},\n facets: {}\n };\n\n private state$: {\n [key: string]: Subject<any>;\n } = {};\n\n private beforeHook: {\n [key: string]: (value: any) => any;\n } = {};\n\n constructor(\n private router: Router,\n private activatedRoute: ActivatedRoute,\n private communication: CommunicationService,\n ) { }\n\n public init(searchId, config, locale = null) {\n this.searchId = searchId;\n this.config = config;\n this.locale = locale;\n\n // first clear\n this.clear();\n\n // initial states\n this.initInputState();\n this.initFacetState();\n this.initSectionState();\n\n // listeners\n this.onInputsChange();\n this.onInternalInputsChange();\n this.onRouteChange();\n this.onResultsLoading();\n this.onFacetsScroll();\n }\n\n public getConfig = () => this.config;\n\n public getState$(context: string, id?: string): Subject<any> {\n const stateId = id ? `${context}.${id}` : context;\n if (!this.state$[stateId]) {\n throw Error(`Key \"${stateId}\" does not exist`);\n }\n\n return this.state$[stateId];\n }\n\n public addStateContext(context: string) {\n if (this.state$[context]) {\n throw Error(`State key \"${context}\" already exists`);\n }\n\n // initial state\n this.contextState[context] = {};\n // create stream\n this.state$[context] = new Subject();\n }\n\n public addState(context: string, id: string) {\n const stateId = `${context}.${id}`;\n if (!this.state$[context]) {\n throw Error(`\n State context \"${context}\" does not exist.\n You must add context first\n `);\n }\n if (this.state$[stateId]) {\n throw Error(`State key \"${stateId}\" already exists`);\n }\n\n // create stream\n this.state$[stateId] = new Subject();\n }\n\n public setState(context: string, id: string, newValue: any) {\n const stateId = `${context}.${id}`;\n if (!this.state$[stateId]) {\n throw Error(`Key \"${stateId}\" does not exist`);\n }\n\n let value = newValue;\n // hook control\n if (this.beforeHook[stateId]) {\n value = this.beforeHook[stateId](value);\n }\n\n // update stream\n this.state$[stateId].next(value);\n // update context\n this.setContextState(context, id, value);\n }\n\n public setBeforeHook(context: string, id: string, hook) {\n const stateId = `${context}.${id}`;\n if (!this.state$[stateId]) {\n throw Error(`Key \"${stateId}\" does not exist`);\n }\n\n this.beforeHook[stateId] = hook;\n }\n\n public reset() {\n // clear input states\n Object.keys(this.contextState[INPUT_STATE_CONTEXT])\n .filter((id) => !this.internalFilterKeys.includes(id))\n .forEach((id) => {\n this.setState(INPUT_STATE_CONTEXT, id, null);\n });\n }\n\n public destroy() {\n this.destroyed$.next();\n }\n\n private clear() {\n this.contextState = {};\n this.state$ = {};\n this.beforeHook = {};\n }\n\n private setContextState(context: string, id: string, newValue: any) {\n this.contextState[context] = {\n ...this.contextState[context],\n [`${id}`]: newValue\n };\n this.state$[context].next({\n lastUpdated: id,\n state: this.contextState[context]\n });\n }\n\n private initInputState() {\n const { facets, layoutInputs } = this.config;\n // add context state\n this.addStateContext(INPUT_STATE_CONTEXT);\n\n // set facets input state\n facets.sections.forEach(({ header, inputs }) => {\n [header, ...inputs]\n .filter((input) => input)\n .forEach(({\n id, queryParam, schema, limit, type, target, initialize\n }) => {\n if (!id) {\n return;\n }\n this.addState(INPUT_STATE_CONTEXT, id);\n\n // is query param?\n if (queryParam) {\n this.queryParamKeys.push(id);\n }\n\n // input has initial values request\n if (initialize) {\n this.initializeKeys.push(id);\n }\n\n // schemas\n if (schema) {\n this.inputSchemas[id] = schema;\n }\n\n // links internal state\n if (['link', 'map', 'histogram'].includes(type)) {\n this.internalFilterState.facets[id] = {\n id,\n limit,\n offset: 0,\n query: '',\n loading: false,\n values: []\n };\n }\n\n // internal filters\n if (target) {\n this.internalFilterKeys.push(id);\n }\n });\n });\n\n // set layout input state\n layoutInputs.forEach(({ id, queryParam, schema }) => {\n this.addState(INPUT_STATE_CONTEXT, id);\n\n if (queryParam) {\n this.queryParamKeys.push(id);\n }\n\n // schemas\n if (schema) {\n this.inputSchemas[id] = schema;\n }\n });\n }\n\n private initFacetState() {\n const { facets } = this.config;\n // add context state\n this.addStateContext(FACET_STATE_CONTEXT);\n\n // set input state\n facets.sections.forEach(({ header, inputs }) => {\n [header, ...inputs]\n .filter((input) => input)\n .forEach((input) => {\n this.addState(FACET_STATE_CONTEXT, input.id);\n });\n });\n }\n\n private initSectionState() {\n const { facets } = this.config;\n // add context state\n this.addStateContext(SECTION_STATE_CONTEXT);\n\n // set input state\n facets.sections.forEach(({ id }) => {\n this.addState(SECTION_STATE_CONTEXT, id);\n });\n }\n\n private onRouteChange() {\n const { results } = this.config.request;\n\n // add context state\n this.addStateContext(RESULTS_REQUEST_STATE_CONTEXT);\n\n // default states\n ['loading', 'request', 'success', 'error'].forEach((id) => {\n this.addState(RESULTS_REQUEST_STATE_CONTEXT, id);\n });\n\n this.activatedRoute.queryParams.pipe(\n takeUntil(this.destroyed$),\n // fix initial listeners (symbolic timeout)\n delay(1),\n // query params to state\n map((params) => searchHelper.queryParamsToState(params, this.inputSchemas)),\n // state != queryParams control\n tap((params) => {\n if (isEmpty(params)) {\n this.reset();\n }\n\n // update state\n if (!isEmpty(params)) {\n const inputContext = this.contextState[INPUT_STATE_CONTEXT];\n if (isEmpty(inputContext)) {\n Object.keys(params)\n .filter((inputId) => this.queryParamKeys.includes(inputId))\n .forEach((inputId) => {\n this.setState(INPUT_STATE_CONTEXT, inputId, params[inputId]);\n });\n } else {\n Object.keys(params)\n .filter((inputId) => this.queryParamKeys.includes(inputId))\n .filter((inputId) => this.notEquals(inputContext[inputId], params[inputId]))\n .forEach((inputId) => {\n this.setState(\n INPUT_STATE_CONTEXT,\n inputId,\n (params[inputId] || params[inputId] === 0)\n ? params[inputId]\n : null\n );\n });\n }\n }\n }),\n map((params) => {\n this.setState(RESULTS_REQUEST_STATE_CONTEXT, 'loading', params);\n return params;\n }),\n debounceTime(results.delay || 1),\n map((params) => {\n this.setState(RESULTS_REQUEST_STATE_CONTEXT, 'request', params);\n return params;\n }),\n switchMap((state) => this.communication.request$(results.id, {\n params: { ...state, searchId: this.searchId },\n urlParams: this.locale ? `?locale=${this.locale}` : '',\n method: 'POST',\n onError: (error) => {\n this.setState(RESULTS_REQUEST_STATE_CONTEXT, 'error', error);\n }\n }, results.provider || null))\n ).subscribe((response) => {\n this.setState(RESULTS_REQUEST_STATE_CONTEXT, 'success', response);\n });\n }\n\n private onInputsChange() {\n this.getState$(INPUT_STATE_CONTEXT).pipe(\n filter(({ lastUpdated }) => this.queryParamKeys.indexOf(lastUpdated) !== -1)\n ).subscribe(({ state }) => {\n const filteredState = {};\n Object.keys(state).forEach((id) => {\n if (this.queryParamKeys.indexOf(id) !== -1) {\n filteredState[id] = state[id];\n }\n });\n const queryParams = searchHelper.stateToQueryParams(filteredState, this.inputSchemas);\n this.router.navigate([], {\n queryParams\n });\n });\n }\n\n private onInternalInputsChange() {\n this.getState$(INPUT_STATE_CONTEXT).pipe(\n filter(({ lastUpdated }) => this.queryParamKeys.indexOf(lastUpdated) === -1),\n map(({ lastUpdated, state }) => {\n const { sections } = this.config.facets;\n let inputConfig;\n sections.forEach((section) => {\n section.inputs.forEach((input) => {\n if (input.id === lastUpdated) {\n inputConfig = input;\n }\n });\n });\n if (inputConfig && inputConfig.target) {\n return {\n inputConfig,\n value: state[lastUpdated]\n };\n }\n return null;\n }),\n filter((data) => data !== null),\n ).subscribe((data) => {\n if (!data) throw Error('inputChange data is null');\n const { inputConfig, value } = data;\n const { target } = inputConfig;\n // update internal filters\n this.internalFilterState.facets[target].query = value;\n this.internalFilterState.facets[target].offset = 0;\n this.doSingleFacetRequest(target);\n });\n }\n\n private doSingleFacetRequest(target) {\n const { facets } = this.config.request;\n const { globalParams } = this.internalFilterState;\n const {\n id, limit, offset, query\n } = this.internalFilterState.facets[target];\n this.communication.request$(facets.id, {\n params: {\n ...globalParams,\n facets: [{\n id, limit, offset, query\n }],\n searchId: this.searchId\n },\n urlParams: this.locale ? `?locale=${this.locale}` : '',\n method: 'POST',\n onError: (error) => {\n this.setState(FACETS_REQUEST_STATE_CONTEXT, 'error', error);\n }\n }, facets.provider || null).subscribe((response) => {\n this.onFacetsRequestSuccess(response);\n\n // reset loading\n this.internalFilterState.facets[target].loading = false;\n });\n }\n\n private onResultsLoading() {\n const { facets } = this.config.request;\n\n if (!facets) {\n return;\n }\n\n // add context state\n this.addStateContext(FACETS_REQUEST_STATE_CONTEXT);\n\n // default states\n ['loading', 'request', 'success', 'error'].forEach((id) => {\n this.addState(FACETS_REQUEST_STATE_CONTEXT, id);\n });\n\n this.getState$(RESULTS_REQUEST_STATE_CONTEXT, 'loading').pipe(\n map((params) => {\n const facetsParams = { ...params };\n this.setState(FACETS_REQUEST_STATE_CONTEXT, 'loading', facetsParams);\n // updated internal filter state\n this.internalFilterState.globalParams = { ...facetsParams };\n return facetsParams;\n }),\n debounceTime(facets.delay || 1),\n map((params) => {\n params.facets = [];\n this.config.facets.sections.forEach(({ inputs }) => {\n inputs.filter(({ type }) => ['link', 'map', 'histogram'].includes(type))\n .forEach(({ id }) => {\n // reset offset\n this.internalFilterState.facets[id].offset = 0;\n const { limit, query, offset } = this.internalFilterState.facets[id];\n params.facets.push({\n id, limit, offset, query\n });\n });\n });\n this.setState(FACETS_REQUEST_STATE_CONTEXT, 'request', params);\n return params;\n }),\n switchMap((state) => {\n let initializeRequest$: Observable<any> = of(true);\n if (this.initializeKeys.length && isEmpty(this.initializeValues)) {\n initializeRequest$ = this.communication.request$(facets.id, {\n params: {\n facets: state.facets,\n searchId: this.searchId\n },\n urlParams: this.locale ? `?locale=${this.locale}` : '',\n method: 'POST',\n onError: (error) => {\n this.setState(FACETS_REQUEST_STATE_CONTEXT, 'error', error);\n }\n }, facets.provider || null);\n }\n return initializeRequest$.pipe(\n tap((response) => {\n if (response.facets) {\n Object.keys(response.facets)\n .filter((inputKey) => this.initializeKeys.includes(inputKey))\n .forEach((inputKey) => {\n this.initializeValues[inputKey] = response.facets[inputKey];\n });\n }\n }),\n switchMapTo(of(state))\n );\n }),\n switchMap((state) => this.communication.request$(facets.id, {\n params: {\n ...state,\n searchId: this.searchId\n },\n urlParams: this.locale ? `?locale=${this.locale}` : '',\n method: 'POST',\n onError: (error) => {\n this.setState(FACETS_REQUEST_STATE_CONTEXT, 'error', error);\n }\n }, facets.provider || null))\n ).subscribe((response: any) => {\n this.onFacetsRequestSuccess(response);\n });\n\n // update facet links\n this.getState$(FACETS_REQUEST_STATE_CONTEXT, 'success').subscribe((response) => {\n const { facets: responseFacets } = response;\n Object.keys(responseFacets).forEach((id) => {\n const { values: responseValues, filtered_total_count } = responseFacets[id];\n const { limit, offset, values: stateValues } = this.internalFilterState.facets[id];\n const filterState = this.internalFilterState.facets[id];\n if (offset > 0) {\n // delete loading element\n filterState.values.pop();\n // merge new results\n filterState.values = [\n ...stateValues,\n ...responseValues\n ];\n } else {\n filterState.values = [\n ...responseValues\n ];\n }\n if ((offset + limit) < filtered_total_count) {\n filterState.values.push({\n text: _t('global#facet_loading_text'),\n classes: 'loading-text-link',\n payload: null,\n });\n }\n this.setState(FACET_STATE_CONTEXT, id, {\n links: filterState.values\n });\n });\n });\n }\n\n private onFacetsRequestSuccess(response) {\n const { facets: responseFacets } = response;\n if (!isEmpty(this.initializeValues)) {\n // intialValues and responseFacets merge strategy\n Object.keys(responseFacets).forEach((inputKey) => {\n if (this.initializeValues[inputKey]) {\n const updatedValues = this.initializeValues[inputKey].values.map((initialValue) => {\n const singleValue = responseFacets[inputKey].values.find(\n ({ payload }) => payload === initialValue.payload\n );\n return {\n ...initialValue,\n counter: singleValue?.counter || 0\n };\n });\n // sort by counter\n updatedValues.sort((a, b) => b.counter - a.counter);\n responseFacets[inputKey].values = updatedValues;\n }\n });\n }\n Object.keys(responseFacets).forEach((inputKey) => {\n // update internal filter state\n const { filtered_total_count } = responseFacets[inputKey];\n this.internalFilterState.facets[inputKey].filtered_total_count = filtered_total_count;\n });\n this.setState(FACETS_REQUEST_STATE_CONTEXT, 'success', {\n ...response,\n facets: responseFacets\n });\n }\n\n private onFacetsScroll() {\n setTimeout(() => {\n const { facets } = this.config;\n facets.sections.forEach(({ inputs }) => {\n inputs\n .filter((input) => input)\n .filter((input) => input.type === 'link')\n .forEach(({ id }) => {\n const scrollEl = document.querySelector(`#facet-container-${id} .n7-input-link`);\n if (!scrollEl) throw Error(`Element with id \"facet-container-${id}\" not found`);\n const scroll$ = fromEvent(scrollEl, 'scroll');\n scroll$.pipe(\n debounceTime(300)\n ).subscribe(({ target }) => {\n const {\n limit,\n offset,\n loading,\n filtered_total_count,\n } = this.internalFilterState.facets[id];\n const { scrollTop, clientHeight, scrollHeight } = target as HTMLElement;\n if (\n // checks if the user has scrolled to the bottom of a container\n (scrollTop + clientHeight + 1 >= Math.ceil(scrollHeight))\n // checks if there are more items to load\n && (offset + limit < filtered_total_count)\n // checks if the application is not currently loading more items\n && loading === false\n ) {\n this.internalFilterState.facets[id].loading = true;\n this.internalFilterState.facets[id].offset = offset + limit;\n this.doSingleFacetRequest(id);\n }\n });\n });\n });\n });\n }\n\n isQueryParamKey = (input) => this.queryParamKeys.includes(input);\n\n notEquals(val1, val2) {\n if (Array.isArray(val1) && Array.isArray(val2)) {\n return !!xor(val1, val2).length;\n }\n return val1 !== val2;\n }\n}\n","import { Injectable } from '@angular/core';\nimport { ReplaySubject } from 'rxjs';\n\nexport enum LayoutState {\n IDLE = 'IDLE',\n LOADING = 'LOADING',\n SUCCESS = 'SUCCESS',\n EMPTY = 'EMPTY',\n ERROR = 'ERROR',\n}\n\n@Injectable()\nexport class MrLayoutStateService {\n private stateContainers: {\n [key: string]: ReplaySubject<LayoutState>;\n } = {};\n\n add(id: string | string[]) {\n const ids = Array.isArray(id) ? id : [id];\n ids.forEach((key) => {\n this.stateContainers[key] = new ReplaySubject();\n // initial state\n this.stateContainers[key].next(LayoutState.IDLE);\n });\n }\n\n get$(id: string) {\n if (!this.stateContainers[id]) {\n throw Error(`Layout state id '${id}' does not exists`);\n }\n return this.stateContainers[id];\n }\n\n set(id: string, newState: LayoutState) {\n if (!this.stateContainers[id]) {\n throw Error(`Layout state id '${id}' does not exists`);\n }\n this.stateContainers[id].next(newState);\n }\n}\n","import { Injectable } from '@angular/core';\nimport { Subject, Observable } from 'rxjs';\nimport { _t } from '@net7/core';\nimport { ConfigurationService, CommunicationService } from '@net7/boilerplate-common';\n\nexport type ModalStatus = 'LOADING' | 'ERROR' | 'SUCCESS' | 'EMPTY' | 'IDLE';\n\nexport type ModalState = {\n status: ModalStatus;\n response?: any;\n config?: any;\n};\n\n@Injectable()\nexport class MrResourceModalService {\n state$: Subject<ModalState> = new Subject();\n\n constructor(\n private configuration: ConfigurationService,\n private communication: CommunicationService,\n ) {\n // default state\n this.state$.next({ status: 'IDLE' });\n }\n\n open(resourceId: string | number, configId: string) {\n this.state$.next({ status: 'LOADING' });\n const config = this.configuration.get(`resource-modal-${configId}`);\n // add translations\n ['top', 'content'].forEach((type) => {\n config.sections[type] = config.sections[type].map((section) => ({\n ...section,\n title: _t(section.title)\n }));\n });\n\n this.pageRequest$(resourceId, config, (err) => {\n console.warn(`Error loading resource modal for ${resourceId}`, err.message);\n this.state$.next({ status: 'ERROR' });\n }).subscribe((response) => {\n this.state$.next({ response, config, status: 'SUCCESS', });\n });\n }\n\n close() {\n this.state$.next({ status: 'IDLE' });\n }\n\n pageRequest$(id, config, onError: (err: any) => void): Observable<any> {\n const { top, content } = config.sections;\n const sections = top.concat(content);\n return this.communication.request$('resource', {\n onError,\n method: 'POST',\n params: {\n id,\n type: config.type,\n sections: sections.map((s) => s.id),\n }\n });\n }\n}\n","import { Injectable } from '@angular/core';\nimport { Router, RoutesRecognized } from '@angular/router';\nimport { ReplaySubject } from 'rxjs';\nimport { filter, map } from 'rxjs/operators';\n\nexport type LocaleResourceConfig = {\n [locale: string]: {\n id: string;\n slug: string;\n };\n};\n\n@Injectable()\nexport class MrLocaleService {\n private routeId: string;\n\n private locale: string;\n\n private resourceConfig: LocaleResourceConfig = null;\n\n public changed$: ReplaySubject<{ routeId: string; locale: string; }> = new ReplaySubject();\n\n constructor(\n private router: Router\n ) {\n this.router.events.pipe(\n filter((event) => event instanceof RoutesRecognized),\n map((event: RoutesRecognized) => event.state.root.firstChild.data)\n ).subscribe(({ routeId, locale }) => {\n this.routeId = routeId;\n this.locale = locale;\n\n this.changed$.next({\n routeId: this.routeId,\n locale: this.locale\n });\n\n // remove previous config\n this.resourceConfig = null;\n });\n }\n\n getRouteId = () => this.routeId;\n\n getLocale = () => this.locale;\n\n getLink = (locale: string, routeId: string, id?: string, slug?: string) => {\n const routeConfig = this.router.config.find((config) => {\n const { routeId: currentRouteId, locale: currentRouteLocale } = config?.data || {};\n return routeId === currentRouteId && locale === currentRouteLocale;\n });\n if (typeof routeConfig?.path === 'string') {\n const resourceLocaleConfig = this.resourceConfig && this.resourceConfig[locale]\n ? this.resourceConfig[locale]\n : { id: null, slug: null };\n let idParam = '';\n let slugParam = '';\n if (id) {\n idParam = `/${id}`;\n } else if (resourceLocaleConfig.id) {\n idParam = `/${resourceLocaleConfig.id}`;\n }\n if (slug) {\n slugParam = `/${slug}`;\n } else if (resourceLocaleConfig.slug) {\n slugParam = `/${resourceLocaleConfig.slug}`;\n }\n const href = routeConfig.path\n .replace('/:id', idParam)\n .replace('/:slug', slugParam);\n return href.indexOf('/') === 0 ? `${href}` : `/${href}`;\n }\n console.warn('LocaleService link not found', locale, routeId);\n return '';\n };\n\n getLinkByLocale = (\n locale: string,\n id?: string,\n slug?: string\n ) => this.getLink(locale, this.routeId, id, slug);\n\n getLinkByRouteId = (\n routeId: string,\n id?: string,\n slug?: string\n ) => this.getLink(this.locale, routeId, id, slug);\n\n setResourceConfig = (config: LocaleResourceConfig) => {\n this.resourceConfig = config;\n };\n}\n","import { Pipe, PipeTransform } from '@angular/core';\nimport { DomSanitizer } from '@angular/platform-browser';\n\n@Pipe({ name: 'keepHtml', pure: false })\nexport class EscapeHtmlPipe implements PipeTransform {\n constructor(private sanitizer: DomSanitizer) {\n }\n\n transform(content) {\n return this.sanitizer.bypassSecurityTrustHtml(content);\n }\n}\n","import { Data } from '@angular/router';\nimport { LayoutDataSource, _t } from '@net7/core';\nimport { Observable } from 'rxjs';\nimport {\n ConfigurationService,\n CommunicationService,\n MainStateService\n} from '@net7/boilerplate-common';\nimport { MrLocaleService } from '../../services/locale.service';\n\nexport class MrAdvancedResultsLayoutDS extends LayoutDataSource {\n protected configuration: ConfigurationService;\n\n protected communication: CommunicationService;\n\n protected mainState: MainStateService;\n\n protected localeService: MrLocaleService;\n\n protected routeData: Data;\n\n public pageConfig;\n\n onInit(payload) {\n this.configuration = payload.configuration;\n this.mainState = payload.mainState;\n this.routeData = payload.routeData;\n this.communication = payload.communication;\n this.localeService = payload.localeService;\n this.pageConfig = this.configuration.get(this.routeData.configId);\n\n // config\n this.all().updateOptions({ config: this.pageConfig, localeService: this.localeService });\n\n // manual updates\n this.one('mr-search-page-title').update({});\n\n // update head title\n this.updateHeadTitle();\n\n // update translations\n this.addTranslations(this.pageConfig);\n }\n\n updateSearchTags(params) {\n if (!this.pageConfig.filters) {\n return;\n }\n\n const { labels } = this.pageConfig.filters;\n const tags = [];\n Object.keys(labels)\n .filter((key) => !!params[key])\n .forEach((key) => {\n tags[key] = params[key];\n });\n\n this.one('mr-advanced-search-tags').updateOptions({ labels });\n this.one('mr-advanced-search-tags').update(tags);\n }\n\n request$(params, onError): Observable<any> {\n const { locale } = this.routeData;\n const { searchId } = this.pageConfig;\n const searchParams = {\n ...params\n };\n Object.keys(searchParams)\n .filter((key) => ['page', 'limit', 'sort'].includes(key))\n .forEach((key) => {\n searchParams.results = searchParams.results || {};\n searchParams.results[key] = searchParams[key];\n delete searchParams[key];\n });\n // normalize results filters\n const resultsParams = {} as {\n limit: number;\n offset: number;\n sort: string;\n };\n const results = searchParams.results || {};\n const page = results.page ? +results.page : 1;\n resultsParams.limit = results.limit ? +results.limit : 12;\n resultsParams.offset = page === 1 ? 0 : resultsParams.limit * (page - 1);\n resultsParams.sort = results.sort || 'sort_ASC';\n return this.communication.request$('advancedSearch', {\n method: 'POST',\n params: {\n ...searchParams,\n searchId,\n results: {\n ...resultsParams\n }\n },\n urlParams: locale ? `?locale=${locale}` : '',\n onError\n });\n }\n\n handleResponse(response) {\n this.some([\n 'mr-search-results-title',\n 'mr-search-results',\n ]).update(response);\n\n // pagination\n this.one('n7-smart-pagination').updateOptions({ mode: 'payload' });\n this.one('n7-smart-pagination').update(this.getPaginationParams(response));\n }\n\n protected updateHeadTitle() {\n const appName = this.configuration.get('name');\n const pageTitle = this.pageConfig.title;\n this.mainState.update('headTitle', [appName, _t(pageTitle)].join(' > '));\n }\n\n private addTranslations(config) {\n if (config?.sort?.label) {\n config.sort.label = _t(config.sort.label);\n config.sort.options = config.sort.options.map((option) => ({\n ...option,\n label: _t(option.label)\n }));\n }\n ['text', 'button'].forEach((key) => {\n if (config.fallback) {\n config.fallback[key] = _t(config.fallback[key]);\n }\n if (config.ko) {\n config.ko[key] = _t(config.ko[key]);\n }\n });\n\n // filters\n const { filters } = this.pageConfig;\n if (filters) {\n filters.title = _t(filters.title);\n Object.keys(filters.labels).forEach((key) => {\n filters.labels[key] = _t(filters.labels[key]);\n });\n }\n }\n\n protected getPaginationParams(response) {\n const { total_count: totalCount, offset, limit } = response;\n const { pagination: paginationConfig } = this.pageConfig;\n\n return {\n totalPages: Math.ceil(totalCount / limit),\n currentPage: (offset + limit) / limit,\n pageLimit: paginationConfig.limit,\n sizes: {\n label: paginationConfig.selectLabel ? _t(paginationConfig.selectLabel) : null,\n list: paginationConfig.options,\n active: limit,\n },\n };\n }\n}\n","import { ActivatedRoute, Router } from '@angular/router';\nimport { EventHandler } from '@net7/core';\nimport { Subject } from 'rxjs';\nimport { switchMap, takeUntil, tap } from 'rxjs/operators';\nimport { isEmpty } from 'lodash';\nimport { helpers } from '@net7/boilerplate-common';\nimport { MrAdvancedResultsLayoutDS } from './advanced-results-layout.ds';\nimport { MrLayoutStateService, LayoutState } from '../../services/layout-state.service';\nimport { MrResourceModalService } from '../../services/resource-modal.service';\n\nexport class MrAdvancedResultsLayoutEH extends EventHandler {\n protected activatedRoute: ActivatedRoute;\n\n protected router: Router;\n\n private layoutState: MrLayoutStateService;\n\n private modalService: MrResourceModalService;\n\n protected destroy$: Subject<void> = new Subject();\n\n protected scrollRefElement: HTMLElement;\n\n dataSource: MrAdvancedResultsLayoutDS;\n\n public listen() {\n this.innerEvents$.subscribe(({ type, payload }) => {\n switch (type) {\n case 'mr-advanced-results-layout.init':\n this.activatedRoute = payload.activatedRoute;\n this.router = payload.router;\n this.layoutState = payload.layoutState;\n this.modalService = payload.modalService;\n this.dataSource.onInit(payload);\n\n // listen route changes\n this.listenToRouterChanges();\n // scroll top\n window.scrollTo(0, 0);\n break;\n\n case 'mr-advanced-results-layout.destroy':\n this.destroy$.next();\n break;\n case 'mr-advanced-results-layout.searchreset':\n if (payload && payload?.action === 'redirect') {\n this.router.navigate([payload.url], {});\n }\n break;\n default:\n console.warn('unhandled inner event of type', type);\n break;\n }\n });\n\n this.outerEvents$.subscribe(({ type, payload }) => {\n switch (type) {\n case 'n7-smart-pagination.click':\n this.updateRouter({ page: payload.page });\n break;\n\n case 'n7-smart-pagination.change':\n this.updateRouter({ limit: payload.value, page: 1 });\n break;\n\n case 'mr-search-results-title.change':\n this.updateRouter({ sort: payload.value, page: 1 });\n break;\n\n case 'mr-search-results.openresourcemodal': {\n const { id, type: resourceType } = payload;\n this.modalService.open(id, resourceType);\n break;\n }\n\n default:\n console.warn('unhandled inner event of type', type);\n break;\n }\n });\n }\n\n /** URL changes */\n protected listenToRouterChanges() {\n this.activatedRoute.queryParams.pipe(\n takeUntil(this.destroy$),\n tap(() => {\n this.layoutState.set('results', LayoutState.LOADING);\n }),\n switchMap((params) => {\n this.dataSource.updateSearchTags(params);\n return this.dataSource.request$(params, (error) => {\n console.warn('Advanced search error', error);\n this.layoutState.set('results', LayoutState.ERROR);\n });\n })\n ).subscribe((response) => {\n this.dataSource.handleResponse(response);\n this.layoutState.set('results', isEmpty(response.results) ? LayoutState.EMPTY : LayoutState.SUCCESS);\n // scroll to ref element\n if (!this.scrollRefElement) {\n this.scrollRefElement = document.querySelector('.scroll-ref');\n } else if (!helpers.isElementInViewport(this.scrollRefElement)) {\n this.scrollRefElement.scrollIntoView();\n }\n });\n }\n\n protected updateRouter(queryParams) {\n this.router.navigate([], {\n queryParams,\n queryParamsHandling: 'merge'\n });\n }\n}\n","const extractQueryParams = (queryParams: string) => {\n const params = {};\n queryParams.split('&').forEach((param) => {\n const [key, value] = param.split('=');\n params[key] = value;\n });\n return params;\n};\n\nexport default {\n getQueryParams(href: string) {\n const queryParams = href.split('?')[1] ? extractQueryParams(href.split('?')[1]) : null;\n return this.isExternalLink(href) ? null : queryParams;\n },\n getRouterLink(href: string) {\n return this.isExternalLink(href) ? href : href.split('?')[0];\n },\n isExternalLink(href: string) {\n return /^http(?:s)?:\\/{2}\\S+$/.test(href);\n },\n joinQueryParams(href: string, queryParams: string[]) {\n let params = '';\n queryParams.forEach((par) => {\n params += params === '' ? par.replace('?', '') : `&${par.replace('?', '')}`;\n });\n\n if (params !== '') {\n return href.split('?')[1] ? `${href}&${params}` : `${href}?${params}`;\n }\n return href;\n }\n};\n","import { DataSource, _t } from '@net7/core';\nimport { BreadcrumbsData } from '@net7/components';\nimport { MrLocaleService } from '../services/locale.service';\nimport linksHelper from '../helpers/links-helper';\n\nexport class MrBreadcrumbsDS extends DataSource {\n protected transform(data: any): BreadcrumbsData {\n if (!data) return null;\n let items = [];\n if (Array.isArray(data) && data.length) {\n let { base } = this.options || {};\n base = Array.isArray(base) ? base : [];\n items = [\n ...base.map((item) => ({\n label: _t(item.title),\n anchor: this.getAnchor(item),\n })),\n ...data.map((item) => ({\n label: item.title,\n anchor: this.getAnchor(item),\n }))\n ];\n }\n\n // remove last link\n if (items.length) {\n items[items.length - 1].anchor = null;\n }\n return { items };\n }\n\n private getAnchor({\n link, routeId, slug, id\n }) {\n const { localeService }: { localeService: MrLocaleService } = this.options;\n // link\n let anchor;\n if (routeId) {\n const routeLink = localeService.getLinkByRouteId(routeId, id, slug);\n anchor = {\n href: routeLink\n };\n } else if (link) {\n anchor = {\n href: linksHelper.getRouterLink(link)\n };\n }\n return anchor;\n }\n}\n","import { DataSource } from '@net7/core';\nimport { ButtonData } from '@net7/components';\n\nexport class MrButtonDS extends DataSource {\n protected transform(): ButtonData {\n const {\n iconLeft, iconRight, text\n } = this.options;\n return {\n text: text || 'Scarica PDF',\n iconLeft,\n iconRight,\n classes: 'n7-btn',\n anchor: {\n payload: 'get-pdf-click',\n }\n };\n }\n}\n","import { DataSource, _t } from '@net7/core';\nimport { merge } from 'lodash';\nimport { helpers } from '@net7/boilerplate-common';\nimport { MetadataGroup } from '@net7/components';\nimport linksHelper from '../helpers/links-helper';\nimport { MrLocaleService } from '../services/locale.service';\n\nconst ITEM_PREVIEW_DEFAULTS = {\n limit: 100,\n striptags: true\n};\n\ntype collectionResponse = {\n header: {\n title?: string;\n subtitle?: string;\n button?: any;\n };\n items: {\n id?: string;\n text?: string;\n link?: string;\n routeId?: string;\n params?: string;\n slug?: string;\n title?: string;\n type?: string;\n payload?: any;\n metadata?: MetadataGroup[];\n }[];\n}\n\nexport class MrCollectionDS extends DataSource {\n id: string;\n\n protected transform(data: collectionResponse): any {\n if (!data) return null;\n\n const { localeService }: { localeService: MrLocaleService } = this.options;\n\n const { header, items } = data;\n\n // items check\n if (Array.isArray(items) && !items.length) {\n return null;\n }\n\n const { classes, itemPreview, linkTarget } = this.options;\n const itemPreviewOptions = merge(ITEM_PREVIEW_DEFAULTS, (itemPreview || {}));\n\n if ((header || {}).button) {\n const { link, text } = header.button;\n header.button = [{\n text,\n anchor: {\n href: linksHelper.getRouterLink(link),\n queryParams: linksHelper.getQueryParams(link)\n }\n }];\n }\n\n return {\n header: header ? {\n title: {\n main: {\n text: header.title,\n classes: 'bold'\n },\n secondary: header.subtitle ? {\n text: header.subtitle,\n } : null\n },\n actions: {\n buttons: header.button\n }\n } : null,\n items: items.map((item) => {\n let anchor = null;\n if (item.text) {\n // Sanitize HTML tags from the text content\n if (itemPreviewOptions.striptags) {\n item.text = helpers.striptags(item.text);\n }\n // Limit the length of the item preview text content\n if (itemPreviewOptions.limit && (item.text.length > itemPreviewOptions.limit)) {\n item.text = `${item.text.substring(0, itemPreviewOptions.limit)}...`;\n }\n }\n // metadata\n const metadata: MetadataGroup[] = [];\n if (Array.isArray(item.metadata)) {\n item.metadata.forEach((group) => {\n const metadataItems = [];\n (group.items || []).forEach((metadataItem) => {\n metadataItems.push({\n ...metadataItem,\n label: _t(metadataItem.label)\n });\n });\n metadata.push({ items: metadataItems });\n });\n }\n\n // link\n if (item.routeId) {\n const routeLink = localeService.getLinkByRouteId(item.routeId, item.id, item.slug);\n anchor = {\n href: routeLink,\n queryParams: item.params || null,\n };\n } else if (item.link) {\n anchor = {\n href: linksHelper.getRouterLink(item.link),\n queryParams: linksHelper.getQueryParams(item.link),\n };\n }\n if (anchor && linkTarget) {\n anchor.target = linkTarget;\n }\n if (item.payload) {\n anchor = {\n payload: {\n ...item.payload\n }\n };\n }\n return {\n ...item,\n metadata,\n anchor,\n classes: classes || ''\n };\n })\n };\n }\n}\n","import { DataSource } from '@net7/core';\n\nexport class MrContentDS extends DataSource {\n id: string;\n\n protected transform(data: any): any {\n return data;\n }\n}\n","import { DataSource } from '@net7/core';\n\nexport class MrFiltersDS extends DataSource {\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n protected transform(data: any): any {\n return data;\n }\n}\n","import { DataSource } from '@net7/core';\nimport linksHelper from '../helpers/links-helper';\nimport { MrLocaleService } from '../services/locale.service';\n\nexport class MrHeroDS extends DataSource {\n id: string;\n\n public currentInputValue = '';\n\n protected transform(data: any): any {\n const { classes, background, input } = this.options;\n\n const { localeService }: { localeService: MrLocaleService } = this.options;\n\n const {\n text, image, title, button\n } = data;\n const backgroundImage = background ? image : null;\n\n // link\n let anchor = null;\n if (button?.routeId) {\n const routeLink = localeService.getLinkByRouteId(button.routeId, button.id, button.slug);\n anchor = {\n href: routeLink,\n queryParams: button.params || null,\n };\n } else if (button?.link) {\n anchor = {\n href: linksHelper.getRouterLink(button.link),\n queryParams: linksHelper.getQueryParams(button.link),\n };\n }\n\n // Search input\n if (button && input) {\n anchor.payload = { route: anchor.href, payloadId: 'hero-search' };\n anchor.href = null;\n }\n\n return {\n text,\n title,\n classes,\n backgroundImage,\n image: !backgroundImage ? image : null,\n button: button && anchor ? {\n ...button,\n anchor,\n } : null,\n input\n };\n }\n}\n","/* eslint-disable import/no-extraneous-dependencies */\n/* eslint-disable max-classes-per-file */\nimport OpenSeadragon from 'openseadragon';\n\nconst svgNS = 'http://www.w3.org/2000/svg';\n\n// based on https://github.com/openseadragon/svg-overlay\nclass Overlay {\n private _viewer;\n\n private _containerWidth = 0;\n\n private _containerHeight = 0;\n\n private _node;\n\n private _svg;\n\n constructor(viewer) {\n this._viewer = viewer;\n\n this._svg = document.createElementNS(svgNS, 'svg');\n this._svg.style.position = 'absolute';\n this._svg.style.left = 0;\n this._svg.style.top = 0;\n this._svg.style.width = '100%';\n this._svg.style.height = '100%';\n this._viewer.canvas.appendChild(this._svg);\n\n this._node = document.createElementNS(svgNS, 'g');\n this._svg.appendChild(this._node);\n\n this._viewer.addHandler('animation', () => {\n this.resize();\n });\n\n this._viewer.addHandler('open', () => {\n this.resize();\n });\n\n this._viewer.addHandler('rotate', () => {\n this.resize();\n });\n\n this._viewer.addHandler('flip', () => {\n this.resize();\n });\n\n this._viewer.addHandler('resize', () => {\n this.resize();\n });\n\n this.resize();\n }\n\n node = () => this._node;\n\n svg = () => this._svg;\n\n resize = () => {\n if (this._containerWidth !== this._viewer.container.clientWidth) {\n this._containerWidth = this._viewer.container.clientWidth;\n this._svg.setAttribute('width', this._containerWidth);\n }\n\n if (this._containerHeight !== this._viewer.container.clientHeight) {\n this._containerHeight = this._viewer.container.clientHeight;\n this._svg.setAttribute('height', this._containerHeight);\n }\n\n const p = this._viewer.viewport.pixelFromPoint(new OpenSeadragon.Point(0, 0), true);\n const zoom = this._viewer.viewport.getZoom(true);\n const rotation = this._viewer.viewport.getRotation();\n const flipped = this._viewer.viewport.getFlip();\n const containerSizeX = this._viewer.viewport._containerInnerSize.x;\n let scaleX = containerSizeX * zoom;\n const scaleY = scaleX;\n\n if (flipped) {\n // Makes the x component of the scale negative to flip the svg\n scaleX = -scaleX;\n // Translates svg back into the correct coordinates when the x scale is made negative.\n p.x = -p.x + containerSizeX;\n }\n\n this._node.setAttribute(\n 'transform',\n `translate(${p.x},${p.y}) scale(${scaleX},${scaleY}) rotate(${rotation})`\n );\n };\n\n onClick = (node, handler) => {\n new OpenSeadragon.MouseTracker({\n element: node,\n clickHandler: handler\n }).setTracking(true);\n };\n}\n\nexport class MrImageViewerOverlayModel {\n private _viewer;\n\n private _config;\n\n private _page = 0;\n\n private _overlay;\n\n private _overlayEvents$;\n\n private _children = [];\n\n private _stylesDefaults = {\n highlight_color: 'red',\n highlight_opacity: 0.5,\n border_color: 'gray',\n border_opacity: 1,\n border_width: 2,\n };\n\n private _selectedStylesDefaults = {\n border_color: 'gray',\n border_opacity: 1,\n border_width: 5,\n };\n\n constructor({ viewer, config, overlayEvents$ }) {\n if (this._viewer) return;\n\n this._viewer = viewer;\n this._config = config;\n this._overlayEvents$ = overlayEvents$;\n }\n\n public init() {\n // listen viewer change\n this._viewer.addHandler('page', this.onPageChange);\n\n // load first overlay\n this.load();\n }\n\n public destroy() {\n this._viewer.removeHandler('page', this.onPageChange);\n }\n\n public resetStyles() {\n this._children.forEach((child) => {\n this.loadStyles(child);\n });\n }\n\n private onPageChange = ({ page }) => {\n this._page = page;\n\n // emit signal\n this._overlayEvents$.next({ type: 'pagechange' });\n\n // load when image finish loading\n const onTileDrawn = () => {\n this.load();\n this._viewer.removeHandler('tile-drawn', onTileDrawn);\n };\n this._viewer.addHandler('tile-drawn', onTileDrawn);\n };\n\n private load() {\n // clear first\n this.clear();\n // config\n const currentConfig = this._config.overlay_images[this._page];\n // set overlay\n if (currentConfig?.hotspots) {\n this._overlay = new Overlay(this._viewer);\n currentConfig.hotspots.forEach((itemConfig) => {\n switch (itemConfig.shape) {\n case 'polygon':\n case 'rectangle':\n this.loadPolygon(itemConfig);\n break;\n case 'circle':\n this.loadCircle(itemConfig);\n break;\n default:\n console.warn(`Overlay shape ${itemConfig.shape} does not exists`);\n break;\n }\n });\n }\n }\n\n private clear() {\n if (this._overlay) {\n // remove svg overlay\n this._overlay.svg().remove();\n this._overlay = null;\n this._children = [];\n }\n }\n\n private loadPolygon(config) {\n const child = document.createElementNS('http://www.w3.org/2000/svg', 'polygon');\n child.setAttribute('points', config.coordinates);\n this.loadStyles(child);\n child.addEventListener('click', () => {\n this.onClick(child, config);\n });\n this._children.push(child);\n\n this._overlay.node().appendChild(child);\n }\n\n private loadCircle(config) {\n const child = document.createElementNS('http://www.w3.org/2000/svg', 'circle');\n const [cx, cy, r] = config.coordinates.split(',');\n child.setAttribute('cx', cx);\n child.setAttribute('cy', cy);\n child.setAttribute('r', r);\n this.loadStyles(child);\n child.addEventListener('click', () => {\n this.onClick(child, config);\n });\n this._children.push(child);\n\n this._overlay.node().appendChild(child);\n }\n\n private onClick(child, config) {\n if (config.action === 'url' && config['action-url-url']) {\n document.location.href = config['action-url-url'];\n return;\n }\n this.setSelected(child);\n this._overlayEvents$.next({\n type: 'click',\n payload: config\n });\n }\n\n private setSelected(selectedChild) {\n // reset\n this.resetStyles();\n\n // selected styles\n this.loadStyles(selectedChild, this._selectedStylesDefaults);\n }\n\n private loadStyles(child, selectedStyles?) {\n const currentConfig = this._config.overlay_images[this._page];\n const styles = {\n ...this._stylesDefaults,\n ...(currentConfig?.style || {})\n };\n child.setAttribute('fill', styles.highlight_color);\n child.setAttribute('stroke', selectedStyles?.border_color || styles.border_color);\n child.setAttribute('stroke-width', selectedStyles?.border_width || styles.border_width);\n child.setAttribute('style', `\n fill-opacity: ${styles.highlight_opacity}; \n stroke-opacity: ${selectedStyles?.border_opacity || styles.border_opacity};\n `);\n }\n}\n","/* eslint-disable camelcase */\nimport { DataSource } from '@net7/core';\nimport { Subject } from 'rxjs';\nimport { MrImageViewerOverlayModel } from '../models/image-viewer-overlay.model';\n\nexport class MrImageViewerDS extends DataSource {\n id: string;\n\n viewer: any;\n\n overlayModel: MrImageViewerOverlayModel;\n\n viewerLoaded$: Subject<void> = new Subject();\n\n overlayEvents$: Subject<{ type: string; payload?: any }> = new Subject();\n\n protected transform(data: any): any {\n if (!data) return null;\n const { images, thumbs, overlay_images } = data;\n const { tools } = (this.options || {});\n return {\n images,\n thumbs,\n viewerId: this.id,\n hideNavigation: !(data.images.length > 1),\n libOptions: {\n /* SHOW GROUP */\n showNavigator: false, // shows the mini-map\n autoHideControls: false,\n // showNavigationControl: false,\n\n /* SHOW BUTTONS */\n showRotationControl: false,\n showSequenceControl: true,\n showHomeControl: true,\n showZoomControl: true,\n\n /* SEQUENCE */\n sequenceMode: true, // allows having multiple images (as in array of images + zoomed image)\n showReferenceStrip: tools !== true, // shows the images array (default: horizontally)\n\n navigationControlAnchor: 'TOP_RIGHT',\n },\n _setViewer: (viewer) => {\n this.viewer = viewer;\n this.viewerLoaded$.next();\n\n // overlay test\n if (overlay_images) {\n // FIXME: togliere mock\n this.loadOverlays(data);\n }\n }\n };\n }\n\n public changePage(index) {\n this.viewer.goToPage(index); // call to OpenSeadragon APIs\n }\n\n public overlayCloseClick() {\n this.overlayModel.resetStyles();\n }\n\n public loadOverlays(data) {\n this.overlayModel = new MrImageViewerOverlayModel({\n viewer: this.viewer,\n config: data,\n overlayEvents$: this.overlayEvents$\n });\n this.overlayModel.init();\n }\n}\n","import { ImageViewerToolsData } from '@net7/components';\nimport { DataSource } from '@net7/core';\n\ntype ImageViewerResponse = {\n thumbs: string[];\n images: {\n url: string;\n type: string;\n caption?: string;\n }[];\n};\n\nexport class MrImageViewerToolsDS extends DataSource {\n id: string;\n\n protected transform(data: ImageViewerResponse): ImageViewerToolsData {\n if (!data) return null;\n\n const { thumbs } = data;\n const images = data.images.map(({ caption }, thumbindex) => ({\n caption,\n thumb: thumbs[thumbindex],\n payload: { thumbindex }\n }));\n\n return {\n images,\n classes: '',\n navigation: data.images.length > 7 ? {\n prev: {\n payload: 'prev',\n classes: 'n7-image-viewer-tools__thumbs-scroll-left'\n },\n next: {\n payload: 'next', // 'next'\n classes: 'n7-image-viewer-tools__thumbs-scroll-right'\n },\n } : null,\n controls: {\n description: images[0].caption ? {\n icon: 'n7-icon-info1',\n anchor: { payload: 'toggle-description' },\n isActive: false,\n } : null,\n thumbs: {\n icon: 'n7-icon-images',\n anchor: { payload: 'toggle-thumbs' },\n isActive: false,\n },\n closedescription: {\n icon: 'n7-icon-close-circle',\n anchor: { payload: 'close-description' }\n }\n },\n\n isVisible: {\n description: false,\n thumbnails: false,\n },\n description: images[0].caption,\n initial: 0\n };\n }\n\n public toggleDescription() {\n this.output.isVisible.description = !this.output.isVisible.description;\n this.output.isVisible.thumbnails = false;\n this.output.controls.description.isActive = !this.output.controls.description.isActive;\n this.output.controls.thumbs.isActive = false;\n }\n\n public toggleThumbs() {\n this.output.isVisible.thumbnails = !this.output.isVisible.thumbnails;\n this.output.isVisible.description = false;\n this.output.controls.thumbs.isActive = !this.output.controls.thumbs.isActive;\n if (this.output.controls.description) {\n this.output.controls.description.isActive = false;\n }\n }\n\n public handleThumbs(index) {\n this.output.initial = index;\n this.updateDescription();\n }\n\n //\n\n public scrollRight() {\n const thumbsStrip = document.querySelectorAll<HTMLElement>('div.n7-image-viewer-tools__thumbs-strip')[0];\n const rightArrow = document.querySelectorAll<HTMLElement>(`div.${this.output.navigation.next.classes}`)[0];\n const leftArrow = document.querySelectorAll<HTMLElement>(`div.${this.output.navigation.prev.classes}`)[0];\n const maxStrip = thumbsStrip.scrollWidth - thumbsStrip.clientWidth;\n const { scrollLeft } = thumbsStrip;\n\n if ((scrollLeft + 400) >= maxStrip) { // mettere value da config e.g. scrollStrength\n thumbsStrip.scrollBy({\n top: 0,\n left: +400,\n behavior: 'smooth'\n });\n rightArrow.style.opacity = '0.5';\n } else {\n thumbsStrip.scrollBy({\n top: 0,\n left: +400,\n behavior: 'smooth'\n });\n }\n\n if (((scrollLeft + 400) > 0)) {\n leftArrow.style.opacity = '1.0';\n }\n }\n\n public scrollLeft() {\n const thumbsStrip = document.querySelectorAll<HTMLElement>('div.n7-image-viewer-tools__thumbs-strip')[0];\n const rightArrow = document.querySelectorAll<HTMLElement>(`div.${this.output.navigation.next.classes}`)[0];\n const leftArrow = document.querySelectorAll<HTMLElement>(`div.${this.output.navigation.prev.classes}`)[0];\n const maxStrip = thumbsStrip.scrollWidth - thumbsStrip.clientWidth;\n const { scrollLeft } = thumbsStrip;\n\n if ((scrollLeft - 400) <= 0) { // mettere value da config e.g. scrollStrength\n thumbsStrip.scrollBy({\n top: 0,\n left: -400,\n behavior: 'smooth'\n });\n leftArrow.style.opacity = '0.5';\n } else {\n thumbsStrip.scrollBy({\n top: 0,\n left: -400,\n behavior: 'smooth'\n });\n }\n\n if (((scrollLeft - 400) < maxStrip)) {\n rightArrow.style.opacity = '1.0';\n }\n }\n\n //\n\n public handlePageChange(payload) {\n this.handleThumbs(payload.page);\n }\n\n public updateDescription() {\n const index = this.output.initial;\n const { images } = this.output;\n this.output.description = images[index].caption;\n if (!this.output.description) {\n this.output.controls.description = null;\n } else {\n this.output.controls.description = {\n icon: 'n7-icon-info1',\n anchor: { payload: 'toggle-description' }\n };\n }\n }\n}\n","import { ItemPreviewData } from '@net7/components';\nimport { DataSource } from '@net7/core';\n\ntype OverlayDetails = {\n coordinates: string;\n shape: string;\n title: string;\n action: string;\n description: string;\n detail_image_id: string;\n detail_image: string;\n 'action-url-url': string;\n 'action-url-open-in-window': boolean;\n};\n\nexport class MrImageViewerOverlayDetailsDS extends DataSource {\n id: string;\n\n protected transform(data: OverlayDetails): ItemPreviewData {\n if (!data) return null;\n return {\n title: data.title,\n text: data.description,\n image: data.detail_image,\n classes: 'is-vertical'\n };\n }\n\n public show(data) {\n this.run(data);\n }\n\n public hide() {\n this.run(null);\n }\n}\n","import { DataSource } from '@net7/core';\n\nexport class MrInfoBoxDS extends DataSource {\n id: string;\n\n protected transform(data: any): any {\n return data;\n }\n}\n","import { DataSource } from '@net7/core';\nimport linksHelper from '../helpers/links-helper';\n\nexport class MrInnerTitleDS extends DataSource {\n protected transform(data: any): any {\n if (!data) return null;\n const { title, description, button } = data;\n return {\n title: {\n main: {\n text: title,\n classes: 'bold'\n },\n secondary: {\n text: description,\n classes: 'italic'\n }\n },\n actions: button && button.link ? {\n buttons: [\n {\n anchor: {\n href: linksHelper.getRouterLink(button.link),\n queryParams: linksHelper.getQueryParams(button.link)\n },\n text: button.text,\n classes: 'n7-btn-cta'\n }\n ]\n } : null\n };\n }\n}\n","import { ItemPreviewData } from '@net7/components';\nimport { DataSource } from '@net7/core';\nimport { merge } from 'lodash';\nimport { helpers } from '@net7/boilerplate-common';\nimport linksHelper from '../helpers/links-helper';\nimport { MrLocaleService } from '../services/locale.service';\n\nconst ITEM_PREVIEW_DEFAULTS = {\n limit: 100,\n striptags: true\n};\n\nexport class MrItemPreviewDS extends DataSource {\n id: string;\n\n protected transform(data: any): ItemPreviewData {\n if (!data) return null;\n const { classes, itemPreview } = this.options;\n const { localeService }: { localeService: MrLocaleService } = this.options;\n const itemPreviewOptions = merge(ITEM_PREVIEW_DEFAULTS, (itemPreview || {}));\n\n // striptags\n if (itemPreviewOptions.striptags) {\n data.text = helpers.striptags(data.text);\n }\n // limit\n if (itemPreviewOptions.limit && (data.text.length > itemPreviewOptions.limit)) {\n data.text = `${data.text.substring(0, itemPreviewOptions.limit)}...`;\n }\n\n // link\n let anchor;\n if (data.routeId) {\n const routeLink = localeService.getLinkByRouteId(data.routeId, data.id, data.slug);\n anchor = {\n href: routeLink,\n queryParams: data.params || null,\n };\n } else if (data.link) {\n anchor = {\n href: linksHelper.getRouterLink(data.link),\n queryParams: linksHelper.getQueryParams(data.link),\n };\n }\n return {\n ...data,\n anchor,\n classes: classes || ''\n };\n }\n}\n","import { DataSource } from '@net7/core';\n\nexport class MrItemPreviewsDS extends DataSource {\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n protected transform(data: string): string {\n return this.mock[this.options.source];\n }\n\n // ===== MOCK DATA =====\n private mock = {\n resources: [\n {\n image: 'https://i.imgur.com/8bNcgR6.png',\n title: 'Unattributed version',\n text: 'A japanese colored version',\n metadata: [{\n classes: 'metadata',\n items: [\n { label: 'Artista', value: 'Massimo Berruti' },\n { label: 'Tecnica', value: 'Fotografia' },\n { label: 'Galleria', value: 'Galleria Tonelli' },\n ]\n }]\n }, {\n image: 'https://i.imgur.com/52UFqca.png',\n title: 'Yudi Shanhai Quantu',\n text: 'Complete Map of all mountains and seas',\n }, {\n image: 'https://i.imgur.com/sLu7u2v.png',\n title: 'Reconstruction of D\\'Elia\\'s map',\n text: 'A digital collage of the map portions from Pasquale D\\'Elia \"mappamondo\"',\n metadata: [{\n classes: 'metadata',\n items: [\n { label: 'Artista', value: 'Massimo Berruti' },\n { label: 'Tecnica', value: 'Fotografia' },\n { label: 'Galleria', value: 'Galleria Tonelli' },\n ]\n }]\n }, {\n image: 'https://i.imgur.com/8bNcgR6.png',\n title: 'Unattributed version',\n text: 'A japanese colored version',\n }\n ],\n collections: [\n {\n image: 'https://i.imgur.com/8bNcgR6.png',\n title: 'Unattributed version',\n text: 'A japanese colored version',\n }, {\n image: 'https://i.imgur.com/52UFqca.png',\n title: 'Yudi Shanhai Quantu',\n text: 'Complete Map of all mountains and seas',\n }, {\n image: 'https://i.imgur.com/sLu7u2v.png',\n title: 'Reconstruction of D\\'Elia\\'s map',\n text: 'A digital collage of the map portions from Pasquale D\\'Elia \"mappamondo\"',\n }\n ],\n search: [\n {\n image: 'https://i.imgur.com/52UFqca.png',\n title: 'Yudi Shanhai Quantu',\n text: 'Complete Map of all mountains and seas',\n }, {\n image: 'https://i.imgur.com/52UFqca.png',\n title: 'World Map based on Matteo Ricci 1850',\n text: 'Complete Map fo all mountains and seas',\n }, {\n image: '',\n title: 'Reconstruction of D\\'Elia\\'s map',\n text: 'A digital collage of the map portions from Pasquale D\\'Elia \"mappamondo\"',\n }, {\n image: '',\n title: 'Unattributed version',\n text: 'A japanese colored version',\n }, {\n image: '',\n title: 'Matteo Ricci\\'s way from Macau to Beijing',\n text: 'A japanese colored version',\n }, {\n image: '',\n title: 'The 400-year-old map that shows China as the centre of the world',\n text: 'A japanese colored version',\n }, {\n image: 'https://i.imgur.com/52UFqca.png',\n title: 'Yudi Shanhai Quantu',\n text: 'Complete Map of all mountains and seas',\n }, {\n image: 'https://i.imgur.com/52UFqca.png',\n title: 'World Map based on Matteo Ricci 1850',\n text: 'Complete Map fo all mountains and seas',\n }, {\n image: '',\n title: 'Reconstruction of D\\'Elia\\'s map',\n text: 'A digital collage of the map portions from Pasquale D\\'Elia \"mappamondo\"',\n }, {\n image: '',\n title: 'Unattributed version',\n text: 'A japanese colored version',\n }, {\n image: '',\n title: 'Matteo Ricci\\'s way from Macau to Beijing',\n text: 'A japanese colored version',\n }, {\n image: '',\n title: 'The 400-year-old map that shows China as the centre of the world',\n text: 'A japanese colored version',\n }\n ]\n }\n}\n","import { MapData, MarkerData } from '@net7/components';\nimport { DataSource } from '@net7/core';\nimport * as L from 'leaflet';\nimport 'leaflet.markercluster';\nimport { Subject } from 'rxjs';\n// leaflet is already present in the window,\n// a double import results in errors with tooltips.\n// declare const L;\n\ninterface Coords { lat: number; lng: number }\n\ninterface Marker extends Coords {\n label: string;\n default_label: string;\n}\n\ntype TimelineResponse = {\n id?: number;\n title: string;\n slug: string;\n zoom: number;\n map_center: Coords;\n markers: Marker[];\n}[]\n\ninterface MarkerWithID extends MarkerData {\n id?: number;\n slug: string;\n}\n\nconst MARKER_ICON = L.icon({\n iconUrl: '/assets/pin.png',\n iconSize: [20, 30],\n popupAnchor: [0, -20],\n iconAnchor: [10, 30],\n className: 'marker-icon'\n});\n\nconst MARKER_ICON_SELECTED = L.icon({\n iconUrl: '/assets/pin-selected.png',\n iconSize: [20, 30],\n popupAnchor: [0, -20],\n className: 'marker-icon-selected'\n});\n\nexport class MrMapDS extends DataSource {\n id: string;\n\n /** Instance of the leaflet map */\n mapInstance;\n\n /** Instance of the marker layerGroup */\n markerLayer;\n\n mapLoaded$: Subject<L.Map> = new Subject();\n\n // eslint-disable-next-line consistent-return\n protected transform(data: TimelineResponse): MapData {\n let markers: MarkerWithID[];\n const d = data.find((z) => z.zoom);\n if (data.find((a) => a.markers)) {\n markers = data\n .map((area) => (area.markers\n .map((m) => ({\n // convert to leaflet marker format\n coords: [+m.lat, +m.lng] as [number, number],\n template: m.label ?? m.default_label,\n title: m.label ?? m.default_label,\n id: area.id,\n slug: area.slug,\n }))))\n // flatten the list of markers\n .reduce((acc, val) => acc.concat(val), []);\n }\n let mapCenter: [number, number];\n const mapCenterOptions = this.options?.libOptions?.map_center;\n if (mapCenterOptions) {\n mapCenter = mapCenterOptions;\n } else {\n mapCenter = d.map_center ? [d.map_center.lat, d.map_center.lng] : [54.5260, 15.2551];\n }\n const initialView: { center: [number, number]; zoom: number } = {\n // center of europe (only for initial load)\n center: mapCenter,\n zoom: d.zoom,\n };\n\n // if the map and the markers already exist\n // update the already existing layers.\n if (this.mapInstance && this.markerLayer) {\n this.buildMarkers(markers);\n if (!mapCenterOptions) {\n this.fitMapToBounds(markers.map((m) => m.coords), d.zoom);\n }\n }\n\n return {\n // only called once, on component init!\n _setInstance: (instance) => {\n this.mapInstance = instance;\n if (!mapCenterOptions) {\n // center the map on the markers\n this.fitMapToBounds(markers.map((m) => m.coords), d.zoom);\n }\n // load custom markers\n this.buildMarkers(markers);\n this.mapLoaded$.next({ map: instance, markers: this.markerLayer });\n },\n containerId: 'map-canvas',\n libOptions: {\n attributionControl: false,\n ...this.options.libOptions,\n },\n tileLayers: [{\n // url: 'https://cartodb-basemaps-{s}.global.ssl.fastly.net/light_all/{z}/{x}/{y}.png',\n // url: 'https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png',\n url: 'https://{s}.basemaps.cartocdn.com/rastertiles/voyager_labels_under/{z}/{x}/{y}{r}.png',\n options: {}\n }],\n initialView,\n };\n }\n\n public updateMarkersState(id: string) {\n if (id) {\n const marker = this.getMarkerById(id);\n if (marker) {\n marker.setIcon(MARKER_ICON_SELECTED);\n marker.openPopup();\n }\n } else {\n const marker = this.getSelectedMarker();\n if (marker) {\n marker.setIcon(MARKER_ICON);\n marker.closePopup();\n }\n }\n }\n\n private getMarkerById = (id: string) => {\n let marker = null;\n this.mapInstance.eachLayer((layer) => {\n if (layer instanceof L.Marker) {\n if (`${layer.id}` === id) {\n marker = layer;\n }\n }\n });\n return marker;\n };\n\n private getSelectedMarker = () => {\n let marker = null;\n this.mapInstance.eachLayer((layer) => {\n if (layer instanceof L.Marker) {\n const { icon } = layer.options || {};\n const className = icon?.options?.className || '';\n const isSelected = className.includes('selected');\n if (isSelected) {\n marker = layer;\n }\n }\n });\n return marker;\n };\n\n private fitMapToBounds(bounds, zoom = 10) {\n if (this.mapInstance) {\n this.mapInstance.fitBounds(bounds, {\n maxZoom: zoom,\n padding: [20, 20]\n });\n } else {\n console.warn('map instance is missing');\n }\n }\n\n /**\n * Builds markers with a custom icon and adds them to the map.\n * @param markers an array of markers\n */\n private buildMarkers(markers: MarkerWithID[]) {\n if (!markers) return;\n // remove all existing markers\n if (this.markerLayer) {\n this.markerLayer.clearLayers();\n this.mapInstance.removeLayer(this.markerLayer);\n }\n const markerGroup = L.markerClusterGroup(\n {\n maxClusterRadius: 10,\n disableClusteringAtZoom: 8\n }\n );\n markers.forEach(({\n coords, template, id, slug\n }) => {\n // create custom icon marker\n const newMarker = L.marker(coords, { icon: MARKER_ICON });\n if (id && slug) {\n newMarker.id = id;\n newMarker.slug = slug;\n }\n newMarker\n // add the marker to the group\n .addTo(markerGroup)\n // add the on-click tooltip\n .bindPopup(template, {\n closeButton: false\n });\n\n newMarker.getPopup().on('remove', ({ target }) => {\n target._source.setIcon(MARKER_ICON);\n });\n\n newMarker.getPopup().on('add', ({ target }) => {\n target._source.setIcon(MARKER_ICON_SELECTED);\n });\n });\n // add the markers to the map instance\n this.mapInstance.addLayer(markerGroup);\n // update the marker layer instance\n this.markerLayer = markerGroup;\n }\n}\n","import { DataSource, _t } from '@net7/core';\nimport { isObject, merge } from 'lodash';\nimport { GroupObject, MetadataOutput } from '../interfaces/metadata.interface';\n\nexport class MrMetadataDS extends DataSource {\n /** Test if a string is a valid URL */\n isUrl = /^(?:http(s)?:\\/\\/)[\\w.-]+(?:\\.[\\w.-]+)+[\\w\\-._~:/?#[\\]@!$&'()*+,;=.]+$/;\n\n /** Turn a string into an anchor element */\n toUrl = (string: string) => `<a href=\"${string}\" target=\"_blank\">${string}<a>`;\n\n defaultReadmore = {\n height: 300,\n labels: {\n more: _t('global#readmore'),\n less: _t('global#readless')\n }\n };\n\n public transform(data: GroupObject): MetadataOutput {\n if (!data) return null;\n\n // readmore applies to the whole metadata group, while\n // groupReadmore applies to the nested metadata sub-groups\n const { hideLabels, readmore, groupReadmore } = this.options;\n const { group } = data;\n\n if (!(group || []).length) {\n return null;\n }\n\n const result = { group: [] };\n group\n .filter(({ items }) => Array.isArray(items))\n .forEach(({ items }) => {\n items\n .filter((item) => isObject(item))\n .forEach(({ label, value, anchorId }) => {\n const itemLabel = label && !hideLabels ? label : null;\n const classLabel = label && !hideLabels ? label.replace(/ /g, '_').toLowerCase() : null;\n if (Array.isArray(value)) {\n result.group.push({\n group: [{\n title: _t(itemLabel),\n classes: `mrc-${classLabel}`,\n // use default values if not specified\n readmore: merge({ ...this.defaultReadmore }, readmore),\n groupReadmore,\n ...this.getItemGroup(value)\n }]\n });\n } else {\n result.group.push({\n group: [{\n // use default values if not specified\n readmore: merge({ ...this.defaultReadmore }, readmore),\n groupReadmore,\n classes: `mrc-${classLabel}`,\n items: value ? [{\n label: _t(itemLabel),\n value: this.getItemValue(value),\n anchorId: anchorId || ''\n }] : []\n }]\n });\n }\n });\n });\n return result;\n }\n\n private getItemGroup(value) {\n const { groupReadmore } = this.options;\n if (Array.isArray(value) && Array.isArray(value[0])) {\n return {\n group: value.map((val) => ({\n ...this.getItemGroup(val)\n }))\n };\n }\n return {\n items: value\n .filter((childItem) => !!childItem.value)\n .map((childItem) => ({\n label: _t(childItem.label),\n value: this.getItemValue(childItem.value),\n anchorId: childItem.anchorId || ''\n })),\n // load the optional \"readmore\" configuration\n groupReadmore,\n };\n }\n\n private getItemValue(value) {\n return this.isUrl.test(value) ? this.toUrl(value) : value;\n }\n}\n","import { DataSource } from '@net7/core';\n\nexport class MrNavDS extends DataSource {\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n protected transform(data) {\n const items = [];\n data.nav.forEach((el) => {\n items.push({\n text: el.title,\n anchor: {\n href: `http://localhost:4200/mr/static/${el.id}`,\n target: '_blank',\n payload: el.id\n }\n });\n });\n return {\n items,\n };\n }\n}\n","import { DataSource, _t } from '@net7/core';\nimport { MrLocaleService } from '../services/locale.service';\n\nexport class MrResourceTabsDS extends DataSource {\n protected transform(data: any): any {\n if (!data) return null;\n const {\n currentTab, root, slug, id: resourceId\n } = this.options;\n\n const { localeService }: { localeService: MrLocaleService } = this.options;\n let baseUrl = root;\n if (typeof root !== 'string') {\n const locale = localeService.getLocale();\n baseUrl = root[locale];\n }\n\n return data.map(({ id, label, hideTab }) => ({\n label: _t(label),\n classes: currentTab === id ? 'is-active' : '',\n anchor: {\n href: `/${baseUrl}/${resourceId}/${slug}/${id}`\n },\n hideTab\n }));\n }\n}\n","import { TextViewerData } from '@net7/components';\nimport { DataSource } from '@net7/core';\n\nexport class MrTextViewerDS extends DataSource {\n id: string;\n\n protected transform(data: TextViewerData): TextViewerData {\n if (!data) return null;\n\n if (this.options.facsimileOptions && data.facsimile) {\n if (!data.facsimile.options) {\n data.facsimile.options = {};\n }\n Object.keys(this.options.facsimileOptions).forEach((key) => {\n data.facsimile.options[key] = this.options.facsimileOptions[key];\n });\n }\n\n // Gestione libOptions\n if (this.options.libOptions) {\n if (!data.libOptions || typeof data.libOptions !== 'object') {\n data.libOptions = {};\n }\n Object.keys(this.options.libOptions).forEach((key) => {\n if (!data.libOptions[key] || typeof data.libOptions[key] !== 'object') {\n data.libOptions[key] = {};\n }\n Object.keys(this.options.libOptions[key]).forEach((subKey) => {\n data.libOptions[key][subKey] = this.options.libOptions[key][subKey];\n });\n });\n\n // Debug libOptions\n /* console.log(' DEBUG libOptions:', {\n 'this.options.libOptions': this.options.libOptions,\n 'data.libOptions': data.libOptions,\n 'data.libOptions.pbPage': data.libOptions.pbPage,\n 'urlIgnore': data.libOptions.pbPage?.urlIgnore\n }); */\n }\n\n const {\n enableClickOnEntities, toggleColumn, searchId, searchApi\n } = this.options || {};\n data.toggleColumn = toggleColumn;\n // force tei publisher endpoint value\n document.addEventListener(\n 'pb-page-ready',\n (ev: CustomEvent) => {\n const { detail } = ev;\n detail.endpoint = data.endpoint;\n },\n { once: true }\n );\n\n const params = new URLSearchParams(document.location.search);\n const id = params.get('id');\n\n // Nascondere tei-app e note-item se l'ODD non ha già l'elemento in display NONE\n /* const hideElements = () => {\n const apparatusView = document.querySelector('.n7-text-viewer #apparatus-view0');\n if (apparatusView?.shadowRoot) {\n const teiAppElements = apparatusView.shadowRoot.querySelectorAll('.tei-app');\n const teiNoteElements = apparatusView.shadowRoot.querySelectorAll('.note-item');\n console.log('Trovati elementi tei-app:', teiAppElements.length);\n console.log('Trovati elementi tei-note:', teiNoteElements.length);\n teiAppElements.forEach((element) => {\n (element as HTMLElement).style.display = 'none';\n });\n teiNoteElements.forEach((element) => {\n (element as HTMLElement).style.display = 'none';\n });\n }\n };\n document.addEventListener('pb-end-update', () => {\n console.log('Evento pb-end-update ricevuto');\n hideElements();\n }); */\n\n if (data.docs[0]?.view === 'page' && id) {\n data.docs[0].view = 'div';\n document.addEventListener(\n 'pb-end-update',\n () => {\n setTimeout(() => {\n document.dispatchEvent(\n new CustomEvent('pb-toggle', {\n detail: {\n properties: {\n view: 'page',\n },\n action: 'refresh',\n key: 'transcription',\n },\n })\n );\n document.dispatchEvent(\n new CustomEvent('pb-toggle', {\n detail: {\n properties: {\n view: 'single',\n },\n action: 'refresh',\n key: 'addChannel',\n },\n })\n );\n document.dispatchEvent(\n new CustomEvent('pb-toggle', {\n detail: {\n properties: {\n view: 'single',\n id: '',\n },\n action: 'refresh',\n key: 'index',\n },\n })\n );\n }, 500);\n },\n { once: true }\n );\n }\n\n if (enableClickOnEntities) {\n document.addEventListener('pb-end-update', (ev: any) => {\n this.scrollElementsIntoView(ev.detail, 'chapter', '#view1');\n });\n }\n\n if (params.get('hq')) {\n if (searchApi) {\n const xmlQueryUrl = `${searchApi.url\n }?resource-id=${searchApi['resource-id']\n }&searchId=${searchId\n }&xml=${data.docs[0]?.xml\n }&${params.toString()}`;\n data.docs[0].url = xmlQueryUrl;\n data.docs[0].rootPath = 'api/mrcparts';\n }\n document.addEventListener('pb-end-update', (ev: any) => {\n this.scrollElementsIntoView(ev.detail, 'hq', '#view0');\n });\n }\n return data;\n }\n\n displayIndex() {\n if (this.output.toggleColumn) {\n this.output.toggleColumn = false;\n } else {\n this.output.toggleColumn = true;\n }\n }\n\n onClick(payload) {\n let target = null;\n const clickPath = payload.path || payload.composedPath();\n\n // chiusura apparato con tasto\n const closeButton = clickPath.find((el) => el.className\n && typeof el.className === 'string'\n && el.className.includes('close_app'));\n\n if (closeButton) {\n // console.log('Click rilevato sul bottone di chiusura:', closeButton);\n\n const parentAppItem = closeButton.closest('.tei-app');\n if (parentAppItem && parentAppItem.style) {\n // console.log('Chiusura dell\\'elemento tei-app');\n parentAppItem.style.display = 'none';\n (parentAppItem as HTMLElement).style.transform = '';\n payload.stopPropagation();\n return;\n }\n }\n\n // Chiusura note con tasto\n const closeNoteButton = clickPath.find((el) => el.className\n && typeof el.className === 'string'\n && el.className.includes('close_note'));\n\n if (closeNoteButton) {\n // console.log('Click rilevato sul bottone di chiusura nota:', closeNoteButton);\n\n const parentNoteItem = closeNoteButton.closest('.note-item');\n if (parentNoteItem && parentNoteItem.style) {\n // console.log('Chiusura dell\\'elemento note-item');\n parentNoteItem.style.display = 'none';\n (parentNoteItem as HTMLElement).style.transform = '';\n payload.stopPropagation();\n return;\n }\n }\n\n if (payload.path) {\n target = payload.path.find(\n ({ tagName }) => tagName === 'PB-HIGHLIGHT'\n );\n } else {\n target = payload.composedPath().find(\n ({ tagName }) => tagName === 'PB-HIGHLIGHT'\n );\n }\n\n if (target && target.getAttribute('type') === 'app_lem') {\n const appId = target.getAttribute('key');\n // console.log('appId', appId);\n\n // Posizione elemento cliccato\n const clickedElementPosition = (target as HTMLElement).getBoundingClientRect().top;\n\n const apparatusView = document.querySelector('.n7-text-viewer #apparatus-view0');\n /* console.log('apparatusView', apparatusView);\n console.log('shadowRoot', apparatusView?.shadowRoot); */\n\n const anchorElement = apparatusView\n ?.shadowRoot\n ?.querySelector(`#${appId}`);\n\n const teiAppElement = anchorElement\n ? anchorElement.closest('.tei-app')\n : null;\n\n if (teiAppElement) {\n // Verifica se è visibile\n const isVisible = (teiAppElement as HTMLElement).style.display === 'block';\n\n if (isVisible) {\n (teiAppElement as HTMLElement).style.display = 'none';\n\n (teiAppElement as HTMLElement).style.transform = '';\n } else {\n (teiAppElement as HTMLElement).style.display = 'block';\n\n // posizione attuale\n const elementPosition = teiAppElement.getBoundingClientRect().top;\n\n // differenza\n const positionDifference = clickedElementPosition - elementPosition;\n\n // spostamento\n (teiAppElement as HTMLElement).style.transform = `translateY(${positionDifference}px)`;\n }\n }\n } else if (target && target.getAttribute('type') === 'note_line') {\n const noteId = target.getAttribute('key');\n // console.log('noteId', noteId);\n\n const clickedElementPosition = (target as HTMLElement).getBoundingClientRect().top;\n\n const apparatusView = document.querySelector('.n7-text-viewer #apparatus-view0');\n\n const anchorElement = apparatusView\n ?.shadowRoot\n ?.querySelector(`#${noteId}`);\n\n const teiNoteElement = anchorElement\n ? anchorElement.closest('.note-item')\n : null;\n if (teiNoteElement) {\n // Verifica se è visibile\n const isVisible = (teiNoteElement as HTMLElement).style.display === 'block';\n\n if (isVisible) {\n (teiNoteElement as HTMLElement).style.display = 'none';\n\n (teiNoteElement as HTMLElement).style.transform = '';\n } else {\n (teiNoteElement as HTMLElement).style.display = 'block';\n\n // posizione attuale\n const elementPosition = teiNoteElement.getBoundingClientRect().top;\n\n // differenza\n const positionDifference = clickedElementPosition - elementPosition;\n\n // spostamento\n (teiNoteElement as HTMLElement).style.transform = `translateY(${positionDifference}px)`;\n }\n }\n } else if (target && this.output.toggleColumn === false) {\n if (\n target.__key\n && (target.className.includes('person')\n || target.className.includes('place'))\n ) {\n this.output.toggleColumn = true;\n this.scrollElementsIntoView(target, 'entity', '#text-viewer-index');\n }\n } else this.output.toggleColumn = false;\n }\n\n viewListenerUpdate() {\n document.addEventListener(\n 'pb-start-update',\n function _listener() {\n document.removeEventListener('pb-start-update', _listener, true);\n },\n true\n );\n }\n\n changeView(view, refresh) {\n setTimeout(\n (v, r) => {\n // console.log(`TEST CHANGE VIEW: ${view}`);\n document.dispatchEvent(\n new CustomEvent('pb-toggle', {\n detail: {\n properties: {\n view: v,\n },\n action: r ? 'refresh' : '',\n key: 'transcription',\n },\n })\n );\n },\n 600,\n view,\n refresh\n );\n }\n\n scrollElementsIntoView(target, type, view) {\n setTimeout(() => {\n let element: any;\n if (type === 'chapter') {\n if (\n document\n .querySelector('.n7-text-viewer #view0')\n .shadowRoot.querySelector('pb-highlight')\n ) {\n const highlight = document\n .querySelector('.n7-text-viewer #view0')\n .shadowRoot.querySelectorAll('pb-highlight');\n\n const highlightId = highlight[highlight.length - 1].id; // s.x\n\n const fragmentNumber = highlightId.replace('.', '\\\\.');\n\n element = document\n .querySelector(view)\n .shadowRoot.querySelector(`#${fragmentNumber}`);\n }\n } else if (type === 'entity') {\n const key = target.__key;\n element = document\n .querySelector(`.n7-text-viewer ${view}`)\n .shadowRoot.querySelector(`#${key}`);\n } else if (type === 'hq') {\n element = document\n .querySelector(`.n7-text-viewer ${view}`)\n .shadowRoot.querySelector('.tei-em');\n }\n /*\n else if (type === 'apparatus') {\n const key = target.getAttribute(\"key\");\n element = document\n .querySelector(`.n7-text-viewer #apparatus-view0`)\n ?.shadowRoot\n ?.querySelector(`#${key}`);\n }\n */\n\n const container = document.querySelector(`.n7-text-viewer ${view}`);\n if (element) {\n container.scrollTop = element.offsetTop;\n }\n }, 600);\n }\n}\n","import { TimelineData } from '@net7/components';\nimport { DataSource } from '@net7/core';\nimport { Subject } from 'rxjs';\nimport { Timeline } from 'vis-timeline';\n\n// vis-timeline dataset type lookup\ntype DataSet = TimelineData['dataSet']\n\nexport class MrTimelineDS extends DataSource {\n id: string;\n\n /** timeline instance */\n timeline: Timeline;\n\n public timelineLoaded$: Subject<Timeline> = new Subject();\n\n protected transform(data: {\n dataSet: DataSet,\n groups?: Array<{ id: number; content: string;}>\n }): TimelineData {\n return {\n containerID: 'mr-timeline',\n libOptions: {\n height: '500px',\n locale: 'it_IT',\n align: 'left',\n showTooltips: false,\n tooltip: {\n followMouse: false,\n template: (d, element) => `<div class=\"tooltip\">${element.title}</div>`\n },\n width: '100%',\n minHeight: '350px',\n maxHeight: '800px',\n zoomFriction: 8,\n ...this.options.libOptions\n },\n\n dataSet: data.dataSet.map((d) => {\n // Show dates that have identical start and end dates as points\n if (d.end && d.end === d.start) {\n return { ...d, ...{ end: undefined } };\n } return d;\n }),\n ...(data.groups && { groups: data.groups }),\n _setInstance: (timeline) => {\n this.timeline = timeline;\n this.timelineLoaded$.next(timeline);\n }\n };\n }\n}\n","import { InnerTitleData } from '@net7/components';\nimport { DataSource } from '@net7/core';\n\nexport class MrYearHeaderDS extends DataSource {\n protected transform(data: InnerTitleData): InnerTitleData {\n return data;\n }\n}\n","import { DataSource } from '@net7/core';\nimport { GalleryData } from '../components/gallery/gallery';\n\ntype GalleryResponse = {\n id: string | number;\n title: string;\n thumbnail: string;\n image: string;\n}[];\n\nexport class MrGalleryDS extends DataSource {\n id: string;\n\n numImg = 0;\n\n protected transform(data: GalleryResponse): GalleryData {\n if (!data) {\n return null;\n }\n\n this.numImg = 0;\n let index = 0;\n return {\n selected: null,\n items: data.map(({\n id, title, thumbnail, image\n }) => {\n const item = {\n id,\n title,\n thumbSrc: thumbnail,\n fullSrc: image,\n payload: id,\n index\n };\n this.numImg += 1;\n index += 1;\n return item;\n })\n };\n }\n\n public setSelected(itemId: number | string) {\n this.output.selected = this.output.items.find(({ id }) => id === itemId);\n }\n\n public removeSelected() {\n this.output.selected = null;\n }\n\n public changeImg(rightImg) {\n const actualIndex = this.output.selected.index;\n let newIndex;\n if (actualIndex === (this.numImg - 1) && rightImg) {\n newIndex = 0;\n } else if (actualIndex === 0 && !rightImg) {\n newIndex = this.numImg - 1;\n } else {\n newIndex = (rightImg) ? (actualIndex + 1) : (actualIndex - 1);\n }\n this.output.selected = this.output.items.find(({ index }) => index === newIndex);\n }\n}\n","import { NetworkData } from '@net7/components';\nimport { DataSource } from '@net7/core';\n\nexport class MrNetworkDS extends DataSource {\n id: string;\n\n protected transform(data):NetworkData {\n return data;\n }\n}\n","import { NetworkData } from '@net7/components';\nimport { DataSource } from '@net7/core';\nimport { Subject } from 'rxjs';\nimport { Network } from 'vis-network';\n\nexport class MrNetworkResourceDS extends DataSource {\n id: string;\n\n public legend: Array<{key: string, label: string, color: string}> = [];\n\n public networkListener$: Subject<Network> = new Subject();\n\n protected transform(data): NetworkData {\n setTimeout(() => {\n const container = document.getElementById('demo-network');\n if (!container) {\n console.error('Container non trovato');\n return;\n }\n try {\n const { nodes } = data;\n const { edges } = data;\n const networkGroups = data?.groups || {};\n const options = data.libOptions;\n const mergedGroups = {\n ...networkGroups,\n ...(options?.groups || {})\n };\n\n // legenda\n this.legend = [];\n Object.keys(mergedGroups).forEach((key) => {\n const group = mergedGroups[key];\n this.legend.push({\n key,\n label: group.label || key,\n color: group.color || '#cccccc'\n });\n });\n\n const libOptions = {\n ...options,\n groups: mergedGroups\n };\n\n const network = new Network(container, { nodes, edges }, libOptions);\n this.networkListener$.next(network);\n } catch (error) {\n console.error('Errore inizializzazione', error);\n }\n }, 100);\n return data;\n }\n}\n","// import { ParallelTextViewerData } from '@net7/components';\nimport { DataSource } from '@net7/core';\n\nexport class MrParallelTextViewerDS extends DataSource {\n id: string;\n\n // protected transform(data: ParallelTextViewerData): ParallelTextViewerData {\n // ^^^^^^^^^^^^^se va buildare components --- 17-12-2025^^^^^^^^^^^^^^^^^\n protected transform(data: any): any {\n if (!data) return null;\n\n /*\n if (this.options.facsimileOptions && data.facsimile) {\n if (!data.facsimile.options) {\n data.facsimile.options = {};\n }\n Object.keys(this.options.facsimileOptions).forEach((key) => {\n data.facsimile.options[key] = this.options.facsimileOptions[key];\n });\n } */\n if (this.options) {\n // Gestione delle libOptions\n if (this.options.libOptions) {\n if (!data.libOptions || typeof data.libOptions !== 'object') {\n data.libOptions = {};\n }\n Object.keys(this.options.libOptions).forEach((key) => {\n if (!data.libOptions[key] || typeof data.libOptions[key] !== 'object') {\n data.libOptions[key] = {};\n }\n Object.keys(this.options.libOptions[key]).forEach((subKey) => {\n data.libOptions[key][subKey] = this.options.libOptions[key][subKey];\n });\n });\n // Debug libOptions\n /* console.log(' DEBUG libOptions:', {\n 'this.options.libOptions': this.options.libOptions,\n 'data.libOptions': data.libOptions,\n 'data.libOptions.pbPage': data.libOptions.pbPage,\n 'urlIgnore': data.libOptions.pbPage?.urlIgnore\n }); */\n }\n // Gestione della grid\n if (this.options.grid) {\n data.grid = this.options.grid;\n }\n // Gestione dei panels\n if (this.options.panels) {\n this.options.panels.forEach((panelProperties) => {\n const panelIndex = data.panels.findIndex(\n (panel) => panel.id === panelProperties.id\n );\n\n if (panelIndex !== -1) {\n const apiPanel = data.panels[panelIndex];\n const merged = { ...apiPanel, ...panelProperties };\n // Se l'API ha inviato un baseurl e la config statica ha uri vuoto popola facsimile.uri con il baseurl dinamico dell'API.\n if (merged.facsimile && !merged.facsimile.uri && apiPanel.baseurl) {\n merged.facsimile = {\n ...merged.facsimile,\n uri: apiPanel.baseurl,\n };\n }\n data.panels[panelIndex] = merged;\n }\n });\n }\n }\n const {\n enableClickOnEntities, toggleColumn,\n searchId,\n searchApi\n } = this.options || {};\n data.toggleColumn = toggleColumn;\n // force tei publisher endpoint value\n document.addEventListener(\n 'pb-page-ready',\n (ev: CustomEvent) => {\n const { detail } = ev;\n detail.endpoint = data.endpoint;\n },\n { once: true }\n );\n\n const params = new URLSearchParams(document.location.search);\n // const id = params.get('id');\n\n this.setupViewClickListeners();\n\n // Gestione della sezione di partenza degli XML \n const startSection = data.startSection || this.options?.startSection;\n if (startSection) {\n const handleFirstLoad = () => {\n document.removeEventListener('pb-end-update', handleFirstLoad);\n setTimeout(() => {\n document.querySelectorAll('.n7-parallel-text-viewer [id$=\"-view\"]').forEach((view: any) => {\n view.gotoId(startSection);\n });\n }, 200);\n };\n document.addEventListener('pb-end-update', handleFirstLoad);\n }\n\n /* if (data.docs[0]?.view === 'page' && id) {\n data.docs[0].view = 'div';\n document.addEventListener(\n 'pb-end-update',\n () => {\n setTimeout(() => {\n document.dispatchEvent(\n new CustomEvent('pb-toggle', {\n detail: {\n properties: {\n view: 'page',\n },\n action: 'refresh',\n key: 'transcription',\n },\n })\n );\n document.dispatchEvent(\n new CustomEvent('pb-toggle', {\n detail: {\n properties: {\n view: 'single',\n },\n action: 'refresh',\n key: 'addChannel',\n },\n })\n );\n document.dispatchEvent(\n new CustomEvent('pb-toggle', {\n detail: {\n properties: {\n view: 'single',\n id: '',\n },\n action: 'refresh',\n key: 'index',\n },\n })\n );\n }, 500);\n },\n { once: true }\n );\n } */\n\n if (enableClickOnEntities) {\n document.addEventListener('pb-end-update', (ev: any) => {\n this.scrollElementsIntoView(ev.detail, 'chapter', '#view1');\n });\n }\n\n /* if (params.get('hq')) {\n if (searchApi) {\n const xmlQueryUrl = `${searchApi.url\n }?resource-id=${searchApi['resource-id']\n }&searchId=${searchId\n }&xml=${data.docs[0]?.xml\n }&${params.toString()}`;\n\n data.docs[0].url = xmlQueryUrl;\n data.docs[0].rootPath = 'api/mrcparts';\n }\n */\n\n if (params.get('hq')) {\n if (searchApi) {\n const mainDoc = data.docs.find((doc) => doc.id === 'mainDoc');\n\n if (mainDoc) {\n const xmlQueryUrl = `${searchApi.url\n }?resource-id=${searchApi['resource-id']\n }&searchId=${searchId\n }&xml=${mainDoc.xml\n }&${params.toString()}`;\n\n data.mainDoc.url = xmlQueryUrl;\n data.mainDoc.rootPath = 'api/mrcparts';\n }\n }\n }\n document.addEventListener('pb-end-update', (ev: any) => {\n this.scrollElementsIntoView(ev.detail, 'hq', '#transcription-view');\n });\n /* } */\n return data;\n }\n\n displayIndex() {\n if (this.output.toggleColumn) {\n this.output.toggleColumn = false;\n } else {\n this.output.toggleColumn = true;\n }\n }\n\n setupViewClickListeners() {\n const attachListeners = () => {\n setTimeout(() => {\n const views = document.querySelectorAll('.n7-parallel-text-viewer [id$=\"-view\"]');\n\n views.forEach((view) => {\n if (view.id === 'transcription-view') {\n return;\n }\n\n if (view.shadowRoot) {\n if ((view as any).__clickListenerAttached) {\n return;\n }\n\n const clickListener = (event: Event) => {\n this.onClick(event);\n };\n\n // Salva il riferimento e marca come attaccato\n (view as any).__clickListener = clickListener;\n (view as any).__clickListenerAttached = true;\n\n // Attacca il listener in capture phase per catturare tutti i click\n view.shadowRoot.addEventListener('click', clickListener, true);\n }\n });\n }, 100);\n };\n\n // Attacca al primo caricamento\n document.addEventListener('pb-end-update', attachListeners);\n\n setTimeout(attachListeners, 500);\n\n // Cross-highlight per termini multi-@ana: quando un pb-highlight con doppia key emette pb-highlight-on \n // ri-emette pb-highlight-on per ogni token individuale così i termini correlati si evidenziano.\n document.addEventListener('pb-highlight-on', (ev: any) => {\n const key = ev.detail?.id;\n const channel = ev.detail?.key;\n if (!key || !channel) return;\n\n // Chiave composita (multi-@ana \"vox2_vox3\", ancore paired \"v1a1_v1a2\"): spezza e ri-emetti per ogni token su highlight-channel.\n if (key.includes('_')) {\n key.split('_').forEach((token: string) => {\n document.dispatchEvent(new CustomEvent('pb-highlight-on', {\n detail: { key: channel, id: token, source: ev.detail.source },\n }));\n });\n return;\n }\n\n if (ev.detail?.source === 'paired-anchor') return;\n\n // Token singolo: se corrisponde a un'ancora paired ri-emette con l'id composito del popup per attivarne l'highlight.\n document.querySelectorAll('[id$=\"-view\"]').forEach((view: any) => {\n if (!view.shadowRoot) return;\n const popup = view.shadowRoot.querySelector(`.tei-app[data-from=\"${key}\"]`)\n || view.shadowRoot.querySelector(`.tei-app[data-to=\"${key}\"]`);\n if (popup && popup.id) {\n document.dispatchEvent(new CustomEvent('pb-highlight-on', {\n detail: { key: channel, id: popup.id, source: 'paired-anchor' },\n }));\n }\n });\n });\n }\n\n onClick(payload) {\n let target = null;\n const clickPath = payload.path || payload.composedPath();\n\n // chiusura apparato con tasto\n const closeButton = clickPath.find((el) => el.className\n && typeof el.className === 'string'\n && el.className.includes('close_app'));\n\n if (closeButton) {\n const parentAppItem = closeButton.closest('.tei-app');\n if (parentAppItem && parentAppItem.style) {\n parentAppItem.style.display = 'none';\n (parentAppItem as HTMLElement).style.transform = '';\n this.resetHighlights();\n payload.stopPropagation();\n return;\n }\n }\n\n const insideTeiApp = clickPath.find((el) => el.className\n && typeof el.className === 'string'\n && el.className.includes('tei-app'));\n\n if (insideTeiApp && (insideTeiApp as HTMLElement).style.display === 'block') {\n return;\n }\n\n // Chiusura note con tasto\n const closeNoteButton = clickPath.find((el) => el.className\n && typeof el.className === 'string'\n && el.className.includes('close_note'));\n\n if (closeNoteButton) {\n const parentNoteItem = closeNoteButton.closest('.note-item');\n if (parentNoteItem && parentNoteItem.style) {\n parentNoteItem.style.display = 'none';\n (parentNoteItem as HTMLElement).style.transform = '';\n this.resetHighlights();\n payload.stopPropagation();\n return;\n }\n }\n\n if (payload.path) {\n target = payload.path.find(\n ({ tagName }) => tagName === 'PB-HIGHLIGHT'\n );\n } else {\n target = payload.composedPath().find(\n ({ tagName }) => tagName === 'PB-HIGHLIGHT'\n );\n }\n\n if (target && target.getAttribute('type') === 'app_lem') {\n const appId = target.getAttribute('key');\n\n // Posizione elemento cliccato\n const clickedElementPosition = (target as HTMLElement).getBoundingClientRect().top;\n\n const clickedView = clickPath.find((el) => el.id && el.id.endsWith('-view'));\n const clickedViewId = clickedView ? clickedView.id : null;\n\n const apparatusView = document.querySelectorAll('.n7-parallel-text-viewer [id$=\"-view\"]');\n\n let anchorElement = null;\n let teiAppElement = null;\n\n apparatusView.forEach((view) => {\n // Salta la view in cui è stato fatto il click\n if (view.id === clickedViewId) {\n return;\n }\n\n if (view.shadowRoot) {\n // Cerca prima per id esatto; se non trovato, cerca popup per ancora apertura (data-from)\n // o ancora di chiusura (data-to)\n const found = view.shadowRoot.querySelector(`[id=\"${appId}\"]`)\n || view.shadowRoot.querySelector(`.tei-app[data-from=\"${appId}\"]`)\n || view.shadowRoot.querySelector(`.tei-app[data-to=\"${appId}\"]`);\n if (found) {\n if (!anchorElement) {\n anchorElement = found;\n }\n\n const appElement = found.closest('.tei-app') || (found.classList.contains('tei-app') ? found : null);\n if (appElement && !teiAppElement) {\n teiAppElement = appElement;\n }\n }\n }\n });\n\n if (teiAppElement) {\n const isVisible = (teiAppElement as HTMLElement).style.display === 'block';\n\n // Determina se il pb-highlight cliccato è una cit esterna (contiene cit annidate).\n const nestedCits = (target as HTMLElement).querySelectorAll('span.quote');\n const isOuterCit = nestedCits.length > 0;\n const segElements = (target as HTMLElement).querySelectorAll('.seg-outer-inner');\n\n if (isVisible) {\n (teiAppElement as HTMLElement).style.display = 'none';\n (teiAppElement as HTMLElement).style.transform = '';\n this.resetHighlights();\n\n if (isOuterCit) {\n // Pannello esterno chiuso: ripristina il background dei seg annidati\n segElements.forEach((el) => {\n (el as HTMLElement).style.backgroundColor = '';\n });\n }\n } else {\n (teiAppElement as HTMLElement).style.display = 'block';\n\n // posizione attuale\n const elementPosition = teiAppElement.getBoundingClientRect().top;\n\n // differenza\n const positionDifference = clickedElementPosition - elementPosition;\n\n // spostamento\n (teiAppElement as HTMLElement).style.transform = `translateY(${positionDifference}px)`;\n\n if (isOuterCit) {\n // Pannello esterno aperto: dopo che pb-highlight si attiva (giallo),\n // imposta sfondo bianco sui seg che appartengono semanticamente alla cit esterna\n requestAnimationFrame(() => {\n segElements.forEach((el) => {\n (el as HTMLElement).style.backgroundColor = 'white';\n });\n });\n } else {\n // Pannello interno aperto: ripristina eventuali soppressioni sui seg interni\n requestAnimationFrame(() => {\n segElements.forEach((el) => {\n (el as HTMLElement).style.backgroundColor = '';\n });\n });\n }\n }\n } else {\n console.warn('teiAppElement non trovato!');\n }\n } else if (target && target.getAttribute('type') === 'note_line') {\n const noteId = target.getAttribute('key');\n\n const clickedElementPosition = (target as HTMLElement).getBoundingClientRect().top;\n\n const apparatusView = document.querySelector('.n7-text-viewer #apparato-view');\n\n const anchorElement = apparatusView\n ?.shadowRoot\n ?.querySelector(`#${noteId}`);\n\n const teiNoteElement = anchorElement\n ? anchorElement.closest('.note-item')\n : null;\n if (teiNoteElement) {\n // Verifica se è visibile\n const isVisible = (teiNoteElement as HTMLElement).style.display === 'block';\n\n if (isVisible) {\n (teiNoteElement as HTMLElement).style.display = 'none';\n\n (teiNoteElement as HTMLElement).style.transform = '';\n } else {\n (teiNoteElement as HTMLElement).style.display = 'block';\n\n // posizione attuale\n const elementPosition = teiNoteElement.getBoundingClientRect().top;\n\n // differenza\n const positionDifference = clickedElementPosition - elementPosition;\n\n // spostamento\n (teiNoteElement as HTMLElement).style.transform = `translateY(${positionDifference}px)`;\n }\n }\n } else if (target && target.getAttribute('type') === 'parallel_anchor') {\n const sectionId = target.getAttribute('key');\n if (sectionId) {\n document.querySelectorAll('.n7-parallel-text-viewer [id$=\"-view\"]').forEach((view: any) => {\n view.gotoId(sectionId);\n });\n }\n } else if (target && target.getAttribute('key') && target.getAttribute('scrollview') !== null) {\n // Per scroll su indice\n const key = target.getAttribute('key');\n if (key) {\n this.scrollToIndexElement(key);\n }\n } else if (target && this.output.toggleColumn === false) {\n if (\n target.__key\n && (target.className.includes('person')\n || target.className.includes('place'))\n ) {\n this.output.toggleColumn = true;\n this.scrollElementsIntoView(target, 'entity', '#text-viewer-index');\n }\n } else this.output.toggleColumn = false;\n }\n\n /**\n * Resetta tutti gli highlight attivi del testo \n */\n private resetHighlights() {\n document.querySelectorAll('[id$=\"-view\"]').forEach((view: any) => {\n if (!view.shadowRoot) return;\n const content = view.shadowRoot.getElementById('view') || view.shadowRoot;\n\n // console.log('[resetHighlights] processing view:', view.id, '| pb-highlights:', content.querySelectorAll('pb-highlight').length);\n\n // Rimuove il giallo e re-abilita tutti i pb-highlight\n content.querySelectorAll('pb-highlight').forEach((hl: any) => {\n hl._className = 'highlight-off';\n hl.disabled = false;\n });\n\n // Rimuove classe 'disable' da qualsiasi elemento (residuo da plain reading view)\n content.querySelectorAll('.disable').forEach((el: Element) => {\n el.classList.remove('disable');\n });\n\n // Ripristina il background dei seg-outer-inner (potrebbe essere rimasto 'white'\n content.querySelectorAll('.seg-outer-inner').forEach((el: Element) => {\n (el as HTMLElement).style.backgroundColor = '';\n });\n });\n }\n\n viewListenerUpdate() {\n document.addEventListener(\n 'pb-start-update',\n function _listener() {\n document.removeEventListener('pb-start-update', _listener, true);\n },\n true\n );\n }\n\n changeView(view, refresh) {\n setTimeout(\n (v, r) => {\n // console.log(`TEST CHANGE VIEW: ${view}`);\n document.dispatchEvent(\n new CustomEvent('pb-toggle', {\n detail: {\n properties: {\n view: v,\n },\n action: r ? 'refresh' : '',\n key: 'transcription',\n },\n })\n );\n },\n 600,\n view,\n refresh\n );\n }\n\n scrollElementsIntoView(target, type, view) {\n setTimeout(() => {\n let element: any;\n if (type === 'chapter') {\n if (\n document\n .querySelector('.n7-text-viewer #view0')\n .shadowRoot.querySelector('pb-highlight')\n ) {\n const highlight = document\n .querySelector('.n7-text-viewer #view0')\n .shadowRoot.querySelectorAll('pb-highlight');\n\n const highlightId = highlight[highlight.length - 1].id; // s.x\n\n const fragmentNumber = highlightId.replace('.', '\\\\.');\n\n element = document\n .querySelector(view)\n .shadowRoot.querySelector(`#${fragmentNumber}`);\n }\n } else if (type === 'entity') {\n const key = target.__key;\n element = document\n .querySelector(`.n7-text-viewer ${view}`)\n .shadowRoot.querySelector(`#${key}`);\n } else if (type === 'hq') {\n element = document\n .querySelector(`.n7-parallel-text-viewer ${view}`)\n .shadowRoot.querySelector('.tei-em');\n }\n\n const container = document.querySelector(`.n7-parallel-text-viewer ${view}`);\n if (element) {\n container.scrollTop = element.offsetTop;\n }\n }, 600);\n }\n\n /**\n * Scrolla all'elemento corrispondente nell'indice\n */\n scrollToIndexElement(key: string) {\n setTimeout(() => {\n const cleanKey = key.replace('#', '');\n const views = document.querySelectorAll('.n7-parallel-text-viewer [id$=\"-view\"]:not(#transcription-view)');\n\n Array.from(views).some((view) => {\n const target = view.shadowRoot?.querySelector(`#${cleanKey}`);\n if (target) {\n (target as HTMLElement).scrollIntoView({ behavior: 'smooth', block: 'center' });\n return true;\n }\n return false;\n });\n }, 300);\n }\n}\n","import { DataSource } from '@net7/core';\n\nexport class MrEmbeddedContentDS extends DataSource {\n id: string;\n\n protected transform(data: any): any {\n if (!data) return null;\n const iframe = `<iframe src=\"${data}\" width=\"100%\" height=\"600px\"></iframe>`;\n return iframe;\n }\n}\n","import { InnerTitleData } from '@net7/components';\nimport { DataSource, _t } from '@net7/core';\n\nexport class MrSearchPageTitleDS extends DataSource {\n protected transform(): InnerTitleData {\n const { title, description, searchId } = this.options.config;\n const data: InnerTitleData = {\n title: {\n main: {\n text: _t(title)\n }\n }\n };\n\n if (description && description.buttonText) {\n data.actions = {\n buttons: [{\n text: _t(description.buttonText),\n anchor: {\n payload: searchId\n }\n }]\n };\n }\n\n return data;\n }\n}\n","import { DataSource, _t } from '@net7/core';\n\nexport class MrSearchResultsTitleDS extends DataSource {\n protected transform(data) {\n const {\n totalResultsText,\n sort\n } = this.options.config;\n const { total_count: totalCount, sort: currentSort } = data;\n const mainText = _t(totalResultsText, { total: totalCount }, (key, { total }) => {\n if (total === 0) {\n return `${key}_0`;\n } if (total === 1) {\n return `${key}_1`;\n }\n return key;\n });\n\n return {\n title: {\n main: {\n text: mainText\n }\n },\n actions: {\n select: {\n label: sort.label,\n options: sort.options.map(({\n label, value, selected, disabled\n }) => ({\n value,\n disabled,\n selected: currentSort ? value === currentSort : selected,\n text: label\n })),\n payload: 'sort'\n }\n }\n };\n }\n\n OnInputQueryChange(value) {\n const { sort } = this.options.config;\n sort.options.forEach((option) => {\n if (option.value === '_score') {\n option.disabled = !value;\n }\n });\n if (this.input) {\n this.update(this.input);\n }\n }\n}\n","import { ItemPreviewData, MetadataGroup } from '@net7/components';\nimport { DataSource, _t } from '@net7/core';\nimport { merge, clone } from 'lodash';\nimport { helpers } from '@net7/boilerplate-common';\nimport linksHelper from '../../helpers/links-helper';\nimport { MrLocaleService } from '../../services/locale.service';\n\ntype HighlightItem = [string, [string]] | {\n link?: {\n /** from the baseUrl of the application */\n absolute?: string;\n /** path relative to the item preview url */\n relative?: string;\n /** url query params in format key=\"value\"&key2=\"value\" */\n params?: string;\n /** include current url query params */\n query_string?: boolean;\n };\n text?: string;\n label?: string;\n}\n\ninterface MrSearchResult extends ItemPreviewData {\n /** unique id for the search result entry */\n id: number;\n /** relative path */\n link?: string;\n /** route config id */\n routeId?: string;\n /** link query params */\n params?: object;\n /** link slug */\n slug?: string;\n /** items that matched the search input */\n highlights?: HighlightItem[];\n /** highlights title */\n highlightsTitle?: string;\n /** payload for item anchor */\n payload?: {\n action: string;\n id: string | number;\n type: string;\n };\n}\n\nconst ITEM_PREVIEW_DEFAULTS = {\n limit: 100,\n striptags: true\n};\n\ntype MrSearchResponse = {\n limit: number;\n offset: number;\n results: MrSearchResult[];\n sort: string;\n total_count: number;\n}\n\nexport class MrSearchResultsDS extends DataSource {\n protected transform(data: MrSearchResponse) {\n const { results } = data;\n const { itemPreview, highlights: highlightsOptions } = this.options.config;\n const itemPreviewOptions = merge(clone(ITEM_PREVIEW_DEFAULTS), (itemPreview || {}));\n\n return results.map((item) => {\n if (typeof item.text === 'string') {\n // striptags\n if (itemPreviewOptions.striptags) {\n item.text = helpers.striptags(item.text);\n }\n // limit\n if (itemPreviewOptions.limit && (item.text.length > itemPreviewOptions.limit)) {\n item.text = `${item.text.substring(0, itemPreviewOptions.limit)}...`;\n }\n }\n // metadata\n const metadata: MetadataGroup[] = [];\n if (Array.isArray(item.metadata)) {\n item.metadata.forEach((group) => {\n const items = [];\n (group.items || []).forEach((metadataItem) => {\n items.push({\n ...metadataItem,\n label: _t(metadataItem.label)\n });\n });\n metadata.push({ items });\n });\n }\n\n // link\n const anchor = this.getItemPreviewAnchor(item, itemPreview?.linkTarget);\n\n /*\n Add the highlights to the item's metadata with a custom group\n */\n const highlights = [];\n if (item.highlights) {\n const highlightGroup = {\n title: _t('advancedsearch#highlights_title'),\n items: [],\n classes: 'n7-item-preview__highlights'\n };\n item.highlights.forEach((highlight: HighlightItem) => {\n // if the item is an array interpret it as [label, [value]]\n if (Array.isArray(highlight)) {\n highlightGroup.items.push({\n label: _t(highlight[0]),\n value: _t(highlight[1][0])\n });\n // if it's an object then it should have a custom hyperlink\n } else {\n const href = this.getHighlightLink(highlight, anchor.href);\n\n highlightGroup.items.push({\n label: highlight.label ? _t(highlight.label) : undefined,\n value: highlight.text ?? '',\n target: itemPreview?.linkTarget || '_blank',\n href, // custom hyperlink\n });\n }\n });\n highlights.push(highlightGroup);\n }\n\n return {\n ...item,\n metadata,\n anchor,\n highlights,\n highlightsHidden: !!highlightsOptions?.hidden,\n highlightsHasToggle: !!highlightsOptions?.hasToggle,\n classes: itemPreviewOptions.classes,\n };\n });\n }\n\n public getItemPreviewAnchor(item, target = '') {\n const { localeService }: { localeService: MrLocaleService } = this.options;\n let anchor = null;\n if (item.routeId) {\n const routeLink = localeService.getLinkByRouteId(item.routeId, `${item.id}`, item.slug);\n anchor = {\n href: routeLink,\n queryParams: item.params || null,\n fragment: item.fragment || null,\n };\n } else if (item.link) {\n anchor = {\n href: linksHelper.getRouterLink(item.link),\n queryParams: linksHelper.getQueryParams(item.link),\n };\n } else if (item.payload) {\n anchor = {\n payload: {\n ...item.payload\n }\n };\n }\n\n if (item.routeId || item.link) {\n anchor.target = target || '_blank';\n }\n\n return anchor;\n }\n\n public getHighlightLink(highlight, itemLink) {\n let href = '';\n if (!highlight.link) {\n return href;\n }\n if (highlight.link.absolute) {\n // path is absolute\n href = `${highlight.link.absolute}`;\n } else {\n href = this.getHighlightRelativeUrl(highlight.link, itemLink);\n // path is relative to the item-preview url\n }\n return this.getHighlightParams(highlight.link, href);\n }\n\n private getHighlightRelativeUrl(highlightLink, href) {\n if (!highlightLink) {\n return '';\n }\n if (typeof highlightLink === 'string') {\n return `${href}${highlightLink}`;\n }\n if (highlightLink.relative) {\n return `${href}${highlightLink.relative}`;\n }\n return href;\n }\n\n private getHighlightParams(highlightLink, href) {\n const params = highlightLink.params ? [highlightLink.params] : [];\n // includes current query _string\n if (highlightLink.query_string) {\n params.push(document.location.search);\n }\n return linksHelper.joinQueryParams(href, params);\n }\n}\n","import { _t, DataSource } from '@net7/core';\nimport { TagData } from '@net7/components';\n\nexport class MrSearchTagsDS extends DataSource {\n public hasFilters = false;\n\n protected transform(data): TagData[] {\n const { state, linksResponse, facetsConfig } = data;\n const { facets } = linksResponse;\n const tags = [];\n\n // inputs config\n facetsConfig.sections.forEach(({ inputs }) => {\n inputs\n .filter(({ queryParam }) => queryParam)\n .forEach(({ id }) => {\n if (state[id] || state[id] === 0) {\n const values = Array.isArray(state[id]) ? state[id] : [state[id]];\n values\n .forEach((value) => {\n let text = `${value}`;\n if (facets[id]) {\n const selectedFacet = facets[id].values.find(({ payload }) => payload === value);\n const cachedTag = Array.isArray(this.output)\n ? this.output.find(({ payload }) => payload.value === value)\n : null;\n if (selectedFacet?.text) {\n text = selectedFacet.text;\n } else if (cachedTag?.text) {\n text = cachedTag?.text;\n }\n }\n tags.push({\n text: _t(text),\n icon: 'n7-icon-close',\n payload: {\n id,\n value\n }\n });\n });\n }\n });\n });\n\n this.hasFilters = !!tags.length;\n return tags;\n }\n}\n","import { DataSource, _t } from '@net7/core';\nimport { SearchPageDescriptionData } from '../../components/search-page-description/search-page-description';\n\nexport class MrSearchPageDescriptionDS extends DataSource {\n protected transform(data): SearchPageDescriptionData {\n const { description } = this.options.config;\n\n if (!description) {\n return null;\n }\n\n const { linkText } = description;\n const { text } = data;\n\n return {\n text,\n link: {\n text: _t(linkText),\n payload: true\n }\n };\n }\n}\n","import * as dayjs from 'dayjs';\n\nexport default {\n format(date, format) {\n return dayjs(date).format(format);\n }\n};\n","import { DataSource, _t } from '@net7/core';\nimport dateHelper from '../helpers/date-helper';\n\nexport class MrStaticMetadataDS extends DataSource {\n protected transform(data: any): any {\n const items = ['authors', 'author', 'date', 'doi', 'time_to_read']\n .filter((metakey) => data[metakey])\n .map((metakey) => {\n const itemValue = metakey === 'date' ? dateHelper.format(data[metakey], _t('global#date_human')) : data[metakey];\n return {\n group: [\n {\n items: [{\n label: _t(`resource#${metakey}`),\n value: itemValue\n }]\n }\n ]\n };\n });\n return { group: items };\n }\n}\n","import { DataSource } from '@net7/core';\nimport tippy from 'tippy.js';\nimport { MrFormWrapperAccordionData } from '../components/form-wrapper-accordion/form-wrapper-accordion';\n\nconst ICON_OPEN = 'n7-icon-angle-up';\nconst ICON_CLOSE = 'n7-icon-angle-down';\n\nexport class MrFormWrapperAccordionDS extends DataSource {\n protected transform(data: MrFormWrapperAccordionData): MrFormWrapperAccordionData {\n const { form } = data;\n const { groups } = form.config;\n\n // set accordion headers\n data.form.config.groups = groups.map((group) => ({\n ...group,\n options: {\n ...group.options,\n text: group.options.label,\n payload: group.id,\n iconRight: group.options.isOpen ? ICON_OPEN : ICON_CLOSE,\n isOpen: group.options.isOpen\n }\n }));\n return data;\n }\n\n toggleGroup(groupId) {\n this.output.form.config.groups.forEach((group) => {\n if (group.id === groupId) {\n const { isOpen } = group.options;\n group.options.iconRight = isOpen ? ICON_CLOSE : ICON_OPEN;\n group.options.isOpen = !group.options.isOpen;\n }\n });\n }\n\n checkInfoTooltips() {\n setTimeout(() => {\n tippy(document.querySelectorAll('.mr-input-info'), {\n content: (reference) => reference.getAttribute('alt'),\n });\n }, 1000);\n }\n}\n","import { DataSource, _t } from '@net7/core';\nimport { TagData } from '@net7/components';\n\nexport class MrAdvancedSearchTagsDS extends DataSource {\n protected transform(data): TagData[] {\n const { labels } = this.options;\n return Object.keys(data).map((key) => ({\n text: `${labels[key] || key}: ${_t(data[key])}`\n }));\n }\n}\n","import { DataSource } from '@net7/core';\nimport { MrMetadataDS } from './metadata.ds';\n\nconst ICON_OPEN = 'n7-icon-angle-up';\nconst ICON_CLOSE = 'n7-icon-angle-down';\n\nexport class MrMetadataDynamicDS extends DataSource {\n private metadataDS = new MrMetadataDS();\n\n id: string;\n\n protected transform(data: any): any {\n if (!data) return null;\n\n // set accordion headers and options\n data.data = data.data.map((group, index) => ({\n ...group,\n groupId: index,\n options: {\n ...group.options,\n text: group.title,\n label: group.title,\n payload: index,\n isOpen: group?.options?.isOpen ?? index === 0,\n showHeader: true,\n iconRight: (group?.options?.isOpen ?? index === 0) ? ICON_OPEN : ICON_CLOSE,\n }\n }));\n data.data.forEach((group, i) => {\n data.data[i].group = this.metadataDS.transform(data.data[i]);\n });\n\n // If a fragment (#id) is present in the url, open the related accordion\n this.options.route.fragment.subscribe((fragment) => {\n if (fragment) {\n const fragmentGroup = data.data.find((group) => group.accordionId === fragment);\n if (fragmentGroup) {\n fragmentGroup.options.isOpen = true;\n }\n }\n });\n\n return data;\n }\n\n public toggleGroup(payload) {\n this.output.data.forEach((group) => {\n if (group.groupId === payload) {\n const { options } = group;\n const { isOpen } = options;\n options.iconRight = isOpen ? ICON_CLOSE : ICON_OPEN;\n options.isOpen = !isOpen;\n }\n });\n }\n}\n","import { DataSource } from '@net7/core';\n\nexport class MrImageViewerIiifDS extends DataSource {\n protected transform(data: any): any {\n if (!data) return null;\n\n const urlParams = new URLSearchParams(window.location.search);\n const parCanvasId = urlParams.get('iiifCanvasId');\n const parCanvasIndex = urlParams.get('iiifCanvasIndex');\n const parAnnotationId = urlParams.get('iiifAnnotationId');\n\n const canvasId = parCanvasId || null;\n const canvasIndex = parCanvasIndex ? parseInt(parCanvasIndex, 10) : null;\n const annotationId = parAnnotationId || null;\n const { libOptions } = this.options;\n const iiifManifestsList = data['iiif-manifests'];\n const windows = iiifManifestsList.map((manifest) => ({\n manifestId: manifest.manifestUrl,\n canvasId,\n canvasIndex,\n annotationId,\n }));\n return {\n libOptions: {\n ...libOptions,\n windows\n },\n };\n }\n}\n","import { EventHandler } from '@net7/core';\n\nexport class MrDummyEH extends EventHandler {\n public listen() {\n // TODO\n }\n}\n","import { EventHandler } from '@net7/core';\n\nexport class MrFiltersEH extends EventHandler {\n public listen() {\n // TODO\n }\n}\n","import { EventHandler } from '@net7/core';\n\nexport class MrNavEH extends EventHandler {\n public listen() {\n this.innerEvents$.subscribe(({ type, payload }) => {\n switch (type) {\n case 'dv-nav.click':\n this.emitOuter('navclick', payload);\n break;\n default:\n console.warn('unhandled event of type', type);\n break;\n }\n });\n }\n}\n","import { EventHandler } from '@net7/core';\n\nexport class MrTimelineEH extends EventHandler {\n public listen() {\n // this.innerEvents$.subscribe(({ type, payload }) => {\n // switch (type) {\n // case `${this.dataSource.id}.<event-type>`:\n // // TODO\n // break;\n // default:\n // break;\n // }\n // });\n }\n}\n","import { EventHandler } from '@net7/core';\n\nexport class MrYearHeaderEH extends EventHandler {\n public listen() {\n this.innerEvents$.subscribe(({ type }) => {\n switch (type) {\n case 'mr-year-header.click':\n this.emitOuter('closeevent');\n break;\n default:\n break;\n }\n });\n }\n}\n","import { EventHandler } from '@net7/core';\nimport { MrGalleryDS } from '../data-sources';\n\nexport class MrGalleryEH extends EventHandler {\n public dataSource: MrGalleryDS;\n\n public listen() {\n this.innerEvents$.subscribe(({ type, payload }) => {\n switch (type) {\n case `${this.dataSource.id}.click`:\n case 'mr-gallery.click':\n this.dataSource.setSelected(payload);\n break;\n case `${this.dataSource.id}.close`:\n case 'mr-gallery.close':\n this.dataSource.removeSelected();\n break;\n case `${this.dataSource.id}.changeImg`:\n case 'mr-gallery.changeImg':\n this.dataSource.changeImg(payload);\n break;\n default:\n break;\n }\n });\n }\n}\n","import { EventHandler } from '@net7/core';\n\nexport class MrCollectionEH extends EventHandler {\n public listen() {\n this.innerEvents$.subscribe(({ type, payload }) => {\n switch (type) {\n case `${this.dataSource.id}.click`: {\n const { action } = payload;\n if (action === 'resource-modal') {\n this.emitOuter('openresourcemodal', payload);\n }\n break;\n }\n default:\n break;\n }\n });\n }\n}\n","import { EventHandler } from '@net7/core';\nimport { MrTextViewerDS } from '../data-sources/text-viewer.ds';\n\nexport class MrTextViewerEH extends EventHandler {\n layoutId: string;\n\n dataSource: MrTextViewerDS;\n\n public listen() {\n this.innerEvents$.subscribe(({ type, payload }) => {\n switch (type) {\n case `${this.hostId}.click`:\n this.dataSource.onClick(payload);\n break;\n case `${this.hostId}.togglecolumn`:\n this.dataSource.displayIndex();\n break;\n default:\n // console.warn('unhandled event of type', type);\n break;\n }\n });\n }\n}\n","import { EventHandler } from '@net7/core';\n\nexport class MrButtonEH extends EventHandler {\n public listen() {\n this.innerEvents$.subscribe(({ type, payload }) => {\n switch (type) {\n case `${this.dataSource.id}.click`:\n this.emitOuter('download-pdf', payload);\n break;\n default:\n // console.warn('unhandled event of type', type);\n break;\n }\n });\n }\n}\n","import { EventHandler } from '@net7/core';\n\nexport class MrNetworkEH extends EventHandler {\n public listen() {\n }\n}\n","import { EventHandler } from '@net7/core';\n// import { Network } from 'vis-network';\nimport { MrLocaleService, MrResourceModalService } from '../services';\n// import linksHelper from '../helpers/links-helper';\n\nexport class MrNetworkResourceEH extends EventHandler {\n private localeService: MrLocaleService;\n\n private modalService: MrResourceModalService;\n\n public listen() {\n this.outerEvents$.subscribe(({\n type,\n // payload,\n localeService\n }) => {\n switch (type) {\n case 'mr-resource-layout.init':\n this.localeService = localeService;\n\n // this.dataSource.networkListener$.subscribe((network: Network) => {\n // network.on('click', (props) => {\n // if (props.nodes && props.nodes.length > 0) {\n // const nodeId = props.nodes[0];\n // const node = this.dataSource.networkData.nodes.find((n) => n.id === nodeId);\n\n // // gestione payload\n // if (node?.payload) {\n // let anchor = null;\n\n // // Navigazione interna\n // if (node?.payload?.link?.routeId) {\n // const routeLink = this.localeService.getLinkByRouteId(\n // node.payload.link.routeId,\n // node.payload.link.id,\n // node.payload.link.slug\n // );\n // anchor = {\n // href: routeLink,\n // queryParams: node.payload.link.params || null,\n // };\n // // link semplice\n // } else if (node?.payload?.link && typeof node?.payload?.link === 'string') {\n // anchor = {\n // href: linksHelper.getRouterLink(node.payload.link),\n // queryParams: linksHelper.getQueryParams(node.payload.link),\n // };\n // // link complesso\n // } else if (node?.payload?.link && typeof node?.payload?.link === 'object') {\n // let href = '';\n // if (node.payload.link.absolute) {\n // href = `${node.payload.link.absolute}`;\n // } else if (node.payload.link.relative) {\n // href = node.payload.link.relative;\n // }\n\n // if (href && node.payload.link.params) {\n // href = linksHelper.joinQueryParams(href, [node.payload.link.params]);\n // }\n\n // if (href && node.payload.link.query_string) {\n // href = linksHelper.joinQueryParams(href, [document.location.search]);\n // }\n\n // anchor = {\n // href,\n // queryParams: null,\n // };\n // // altro\n // } else if (node.payload.payload) {\n // anchor = {\n // payload: {\n // ...node.payload.payload\n // }\n // };\n // }\n\n // if (anchor) {\n // if (anchor.href) {\n // window.open(anchor.href, '_blank');\n // } else if (anchor.payload) {\n // this.itemPreviewEmit('click', anchor.payload);\n // }\n // }\n // }\n // }\n // });\n // });\n break;\n default:\n break;\n }\n });\n }\n\n public itemPreviewEmit = (type, payload) => {\n if (type === 'click' && payload?.action === 'resource-modal') {\n const { id, type: resourceType } = payload;\n this.modalService.open(id, resourceType);\n }\n };\n}\n","import { EventHandler } from '@net7/core';\nimport { MrParallelTextViewerDS } from '../data-sources/parallel-text-viewer.ds';\n\nexport class MrParallelTextViewerEH extends EventHandler {\n layoutId: string;\n\n dataSource: MrParallelTextViewerDS;\n\n public listen() {\n this.innerEvents$.subscribe(({ type, payload }) => {\n switch (type) {\n case `${this.hostId}.click`:\n this.dataSource.onClick(payload);\n break;\n case `${this.hostId}.togglecolumn`:\n this.dataSource.displayIndex();\n break;\n default:\n // console.warn('unhandled event of type', type);\n break;\n }\n });\n }\n}\n","import { EventHandler } from '@net7/core';\n\nexport class MrSearchTagsEH extends EventHandler {\n public listen() {\n this.innerEvents$.subscribe(({ type, payload }) => {\n switch (type) {\n case 'mr-search-tags.click':\n this.emitOuter('click', payload);\n break;\n default:\n break;\n }\n });\n }\n}\n","import { EventHandler } from '@net7/core';\n\nexport class MrSearchResultsTitleEH extends EventHandler {\n public listen() {\n this.innerEvents$.subscribe(({ type, payload }) => {\n switch (type) {\n case 'mr-search-results-title.change':\n this.emitOuter('change', payload);\n break;\n default:\n break;\n }\n });\n\n this.outerEvents$.subscribe(({ type, payload }) => {\n switch (type) {\n case 'mr-search-layout.inputquerychange':\n this.dataSource.OnInputQueryChange(payload);\n break;\n default:\n break;\n }\n });\n }\n}\n","import { EventHandler } from '@net7/core';\n\nexport class MrSearchPageTitleEH extends EventHandler {\n public listen() {\n this.innerEvents$.subscribe(({ type, payload }) => {\n switch (type) {\n case 'mr-search-page-title.click':\n this.emitOuter('click', payload);\n break;\n default:\n break;\n }\n });\n }\n}\n","import { EventHandler } from '@net7/core';\n\nexport class MrSearchPageDescriptionEH extends EventHandler {\n public listen() {\n this.innerEvents$.subscribe(({ type, payload }) => {\n switch (type) {\n case 'mr-search-page-description.click':\n this.emitOuter('click', payload);\n break;\n default:\n break;\n }\n });\n }\n}\n","import { EventHandler } from '@net7/core';\n\nexport class MrSearchResultsEH extends EventHandler {\n public listen() {\n this.innerEvents$.subscribe(({ type, payload }) => {\n switch (type) {\n case 'mr-search-results.click': {\n const { action } = payload;\n if (action === 'resource-modal') {\n this.emitOuter('openresourcemodal', payload);\n }\n break;\n }\n default:\n break;\n }\n });\n }\n}\n","import { EventHandler } from '@net7/core';\nimport { fromEvent, Subject } from 'rxjs';\nimport { filter, takeUntil } from 'rxjs/operators';\nimport { MrFormWrapperAccordionDS } from '../data-sources';\n\nexport class MrFormWrapperAccordionEH extends EventHandler {\n private destroy$: Subject<void> = new Subject();\n\n dataSource: MrFormWrapperAccordionDS;\n\n public listen() {\n this.innerEvents$.subscribe(({ type, payload }) => {\n switch (type) {\n case 'mr-form-wrapper-accordion.init':\n this.listenKeyUpEvents();\n this.dataSource.checkInfoTooltips();\n break;\n case 'mr-form-wrapper-accordion.destroy':\n this.destroy$.next();\n break;\n case 'mr-form-wrapper-accordion.submit': {\n const { form } = this.dataSource.output;\n this.emitOuter('submit', {\n state: form.getState()\n });\n break;\n }\n case 'mr-form-wrapper-accordion.reset':\n this.emitOuter('reset');\n break;\n case 'mr-form-wrapper-accordion.click':\n this.dataSource.toggleGroup(payload);\n this.dataSource.checkInfoTooltips();\n break;\n default:\n break;\n }\n });\n }\n\n private listenKeyUpEvents() {\n const keyup$ = fromEvent(window, 'keyup');\n\n keyup$.pipe(\n filter((event: KeyboardEvent) => event.key === 'Enter'),\n takeUntil(this.destroy$)\n ).subscribe(() => {\n this.emitInner('submit');\n });\n }\n}\n","import { EventHandler } from '@net7/core';\nimport { MrMetadataDynamicDS } from '../data-sources';\n\nexport class MrMetadataDynamicEH extends EventHandler {\n dataSource: MrMetadataDynamicDS;\n\n public listen() {\n this.innerEvents$.subscribe(({ type, payload }) => {\n switch (type) {\n case `${this.dataSource.id}.click`:\n this.dataSource.toggleGroup(payload);\n break;\n default:\n break;\n }\n });\n }\n}\n","import { EventHandler } from '@net7/core';\nimport { delay, first } from 'rxjs/operators';\nimport { MrMapDS } from '../data-sources/map.ds';\n\nexport class MrMapEH extends EventHandler {\n dataSource: MrMapDS;\n\n public listen() {\n this.outerEvents$.subscribe(({ type, payload }) => {\n switch (type) {\n case 'mr-map-layout.routechanged':\n if (!this.dataSource.mapInstance) {\n this.dataSource.mapLoaded$.pipe(\n delay(1000), // markers loaded timeout\n first()\n ).subscribe(() => {\n this.dataSource.updateMarkersState(payload);\n });\n } else {\n this.dataSource.updateMarkersState(payload);\n }\n break;\n default:\n break;\n }\n });\n }\n}\n","import { SmartPaginationDS, SmartPaginationEH } from '@net7/boilerplate-common';\nimport { MrAdvancedResultsLayoutDS } from './advanced-results-layout.ds';\nimport { MrAdvancedResultsLayoutEH } from './advanced-results-layout.eh';\nimport * as DS from '../../data-sources';\nimport * as EH from '../../event-handlers';\n\nexport const MrAdvancedResultsLayoutConfig = {\n layoutId: 'mr-advanced-results-layout',\n widgets: [\n {\n id: 'mr-search-page-title'\n }, {\n id: 'mr-search-results-title'\n }, {\n id: 'mr-search-results'\n }, {\n id: 'n7-smart-pagination',\n dataSource: SmartPaginationDS,\n eventHandler: SmartPaginationEH,\n }, {\n id: 'mr-advanced-search-tags'\n }\n ],\n layoutDS: MrAdvancedResultsLayoutDS,\n layoutEH: MrAdvancedResultsLayoutEH,\n widgetsDataSources: DS,\n widgetsEventHandlers: EH,\n layoutOptions: {}\n};\n","import { Component, Input } from '@angular/core';\nimport { ItemPreviewData, MetadataData } from '@net7/components';\n\n/**\n * A hyperlinked metadata item\n */\nexport interface LinkedMetadataData extends MetadataData {\n /** href to use on the html element */\n href: string;\n /** list of highlights */\n items: string[];\n}\n\n/**\n * Data for Muruca's AdvancedResult component.\n */\ninterface AdvancedResultsData extends ItemPreviewData {\n highlights: LinkedMetadataData[];\n highlightsTitle?: string;\n highlightsHidden?: boolean;\n highlightsHasToggle?: boolean;\n}\n\n@Component({\n selector: 'mr-advanced-result',\n templateUrl: './advanced-result.html',\n})\nexport class MrAdvancedResultComponent {\n @Input() data: AdvancedResultsData;\n\n @Input() emit: any;\n\n /** Returns true if there are some highlights to render */\n hasHighlights = (): boolean => this.data\n ?.highlights\n // there is at least one group that has highlights\n ?.some((d) => d.items.length > 0);\n\n isHidden() {\n if (this.data.highlightsHasToggle) {\n if (!this.data.highlightsTitle) return false;\n return this.data.highlightsHidden;\n }\n return false;\n }\n\n onClick(payload) {\n if (!this.emit) return;\n this.emit('click', payload);\n }\n\n onHeaderClick(data) {\n if (!data.highlightsHasToggle) return;\n data.highlightsHidden = !data.highlightsHidden;\n }\n}\n","<div *ngIf=\"data\"\n class=\"mr-advanced-result\">\n <!-- RESULT MAIN CONTENT -->\n <n7-item-preview [data]=\"data\"></n7-item-preview>\n <!-- RESULT HIGHLIGHTS SECTION -->\n <ng-container *ngIf=\"hasHighlights()\">\n <div *ngIf=\"data?.highlightsTitle\" class=\"mr-advanced-result__header\"\n [ngClass]=\"{\n 'has-toggle': !!data.highlightsHasToggle\n }\"\n (click)=\"onHeaderClick(data)\">\n <span class=\"mr-advanced-result__header-label\">\n {{ data.highlightsTitle }}\n </span>\n <span class=\"mr-advanced-result__header-icon\"\n [ngClass]=\"{\n 'n7-icon-angle-down': data.highlightsHidden,\n 'n7-icon-angle-up': !data.highlightsHidden\n }\">\n </span>\n </div>\n <div [hidden]=\"isHidden()\" \n class=\"mr-advanced-result__content\"\n *ngFor=\"let highlightGroup of data.highlights\">\n <div class=\"mr-advanced-result__content-group\">\n <!-- METADATA ITEM -->\n <div class=\"mr-advanced-result__item {{ item.classes || '' }}\"\n *ngFor=\"let item of highlightGroup.items\">\n <!-- ICON -->\n <span class=\"mr-advanced-result__icon {{item.icon}}\"\n *ngIf=\"item.icon\">\n </span>\n <!-- LABEL -->\n <span class=\"mr-advanced-result__label\"\n *ngIf=\"item.label\"\n [innerHTML]=\"item.label\">\n </span>\n <!-- VALUE W/ HREF -->\n <a *ngIf=\"item.href\"\n [href]=\"item.href\"\n [target]=\"item.target\"\n >\n <span class=\"mr-advanced-result__value\"\n *ngIf=\"item.value\"\n [innerHTML]=\"item.value\">\n </span>\n </a>\n <!-- VALUE W/OUT HREF -->\n <span class=\"mr-advanced-result__value\"\n *ngIf=\"item.value && !item.href\"\n [innerHTML]=\"item.value\">\n </span>\n </div>\n </div>\n </div>\n </ng-container>\n</div>\n","import { Component, OnInit, OnDestroy } from '@angular/core';\nimport { ActivatedRoute, Data, Router } from '@angular/router';\nimport {\n AbstractLayout,\n LayoutsConfigurationService,\n MainStateService,\n ConfigurationService,\n CommunicationService\n} from '@net7/boilerplate-common';\nimport { MrResourceModalService } from '../../services/resource-modal.service';\nimport { MrAdvancedResultsLayoutConfig as config } from './advanced-results-layout.config';\nimport { MrLayoutStateService } from '../../services/layout-state.service';\nimport { MrLocaleService } from '../../services/locale.service';\n\n@Component({\n selector: 'mr-advanced-results-layout',\n templateUrl: './advanced-results-layout.html',\n})\nexport class MrAdvancedResultsLayoutComponent extends AbstractLayout implements OnInit, OnDestroy {\n private routeData: Data;\n\n constructor(\n private router: Router,\n private activatedRoute: ActivatedRoute,\n private mainState: MainStateService,\n private configuration: ConfigurationService,\n private communication: CommunicationService,\n public layoutState: MrLayoutStateService,\n public modalService: MrResourceModalService,\n public localeService: MrLocaleService,\n layoutsConfiguration: LayoutsConfigurationService,\n ) {\n super(layoutsConfiguration.get('MrAdvancedResultsLayoutConfig') || config);\n }\n\n protected initPayload() {\n return {\n routeData: this.routeData,\n configuration: this.configuration,\n communication: this.communication,\n mainState: this.mainState,\n router: this.router,\n activatedRoute: this.activatedRoute,\n layoutState: this.layoutState,\n modalService: this.modalService,\n localeService: this.localeService,\n options: this.config.options || {},\n };\n }\n\n ngOnInit() {\n this.activatedRoute.data.subscribe((routeData) => {\n this.routeData = routeData;\n // add layout states\n this.layoutState.add(['results']);\n this.onInit();\n });\n }\n\n ngOnDestroy() {\n this.onDestroy();\n }\n}\n","<div class=\"mr-advanced-results mr-layout\"\n *ngIf=\"lb.dataSource\">\n <section class=\"mr-layout__maxwidth mr-side-margin\">\n\n <div class=\"mr-advanced-results__title\">\n <n7-inner-title\n [data]=\"lb.widgets['mr-search-page-title'].ds.out$ | async\"\n [emit]=\"lb.widgets['mr-search-page-title'].emit\">\n </n7-inner-title>\n </div>\n \n <div class=\"mr-advanced-results__results-content\">\n <div class=\"scroll-ref\"> </div>\n <div class=\"mr-advanced-results__results-wrapper\">\n \n <div class=\"mr-advanced-results__results-info\">\n <n7-inner-title\n [data]=\"lb.widgets['mr-search-results-title'].ds.out$ | async\"\n [emit]=\"lb.widgets['mr-search-results-title'].emit\">\n </n7-inner-title>\n </div>\n \n <div *ngIf=\"lb.dataSource.pageConfig['filters'] \n && (lb.widgets['mr-advanced-search-tags'].ds.out$ | async)?.length\" \n class=\"mr-active-filters\">\n <span *ngIf=\"lb.dataSource.pageConfig['filters'].title\" \n class=\"mr-active-filters__label\">{{ lb.dataSource.pageConfig['filters'].title }}</span>\n <div class=\"mr-active-filters__tags-wrapper\">\n <n7-tag *ngFor=\"let tag of (lb.widgets['mr-advanced-search-tags'].ds.out$ | async)\"\n [data]=\"tag\">\n </n7-tag>\n </div>\n </div>\n\n <main class=\"mr-advanced-results__results\">\n \n <!-- SEARCH RESULTS -->\n <ng-container [ngSwitch]=\"layoutState.get$('results') | async\">\n \n <!-- loading -->\n <ng-container *ngSwitchCase=\"'LOADING'\">\n <div class=\"mr-advanced-results__results-loading n7-grid-{{ lb.dataSource.pageConfig.grid || 3 }}\">\n <n7-content-placeholder *ngFor=\"let n of [0,1,2,3,4,5,6,7,8,9]\" [data]=\"{\n blocks: [\n { classes: 'search-result-placeholder-title' },\n { classes: 'search-result-placeholder-metadata' },\n { classes: 'search-result-placeholder-metadata' },\n { classes: 'search-result-placeholder-metadata' }\n ]\n }\"></n7-content-placeholder>\n </div>\n </ng-container>\n \n <!-- success: items > 0 -->\n <ng-container *ngSwitchCase=\"'SUCCESS'\">\n <div class=\"n7-grid-{{ lb.dataSource.pageConfig.grid || 3 }}\">\n <!-- Use a custom item preview with clickable metadata items -->\n <mr-advanced-result\n *ngFor=\"let item of (lb.widgets['mr-search-results'].ds.out$ | async)\"\n [data]=\"item\" [emit]=\"lb.widgets['mr-search-results'].emit\">\n </mr-advanced-result>\n <!-- ../../components/advanced-result/advanced-result.html -->\n </div>\n </ng-container>\n\n <!-- empty: items === 0 -->\n <ng-container *ngSwitchCase=\"'EMPTY'\">\n <div *ngIf=\"lb.dataSource.pageConfig?.fallback?.text\" class=\"mr-advanced-results__results-fallback\">\n <p class=\"mr-advanced-results__feedback-text\">\n {{ lb.dataSource.pageConfig.fallback.text }}\n </p>\n <div class=\"mr-advanced-results__buttons\">\n <button class=\"n7-btn n7-btn-xl mr-advanced-results__results-fallback-button\"\n (click)=\"lb.eventHandler.emitInner('searchreset', lb.dataSource.pageConfig.fallback.payload)\">\n {{ lb.dataSource.pageConfig.fallback.button }}\n </button>\n </div>\n </div>\n </ng-container>\n\n <!-- error: request problem -->\n <ng-container *ngSwitchCase=\"'ERROR'\">\n <p *ngIf=\"lb.dataSource.pageConfig?.ko?.text\" class=\"mr-advanced-results__feedback-text\">\n {{ lb.dataSource.pageConfig.ko.text }}\n </p>\n <!-- <div class=\"mr-advanced-results__buttons\">\n <button class=\"n7-btn n7-btn-xl mr-advanced-results__results-ko-button\"\n (click)=\"lb.eventHandler.emitInner('searchreset')\">\n {{ lb.dataSource.pageConfig.ko.button }}\n </button>\n </div> -->\n </ng-container>\n \n </ng-container>\n </main> \n \n <n7-smart-pagination\n *ngIf=\"(layoutState.get$('results') | async) === 'SUCCESS'\"\n [data]=\"lb.widgets['n7-smart-pagination'].ds.out$ | async\"\n [emit]=\"lb.widgets['n7-smart-pagination'].emit\">\n </n7-smart-pagination>\n\n </div>\n </div>\n </section>\n</div>\n","import { DataSource, _t } from '@net7/core';\nimport { InputTextData } from '@net7/components';\nimport { MrFormInputState, MrInputDataSource } from '../../interfaces/form.interface';\n\nexport type MrInputTextValue = string | null;\n\nexport class MrInputTextDS extends DataSource implements MrInputDataSource<MrInputTextValue> {\n public id: string;\n\n public state: MrFormInputState<MrInputTextValue> = {\n value: null,\n disabled: false,\n hidden: false,\n };\n\n protected transform(data: InputTextData): InputTextData {\n return {\n ...data,\n placeholder: _t(data.placeholder)\n };\n }\n\n getState = () => this.state;\n\n setState(newState: MrFormInputState<MrInputTextValue>) {\n this.state = {\n ...this.state,\n ...newState\n };\n this.refresh();\n }\n\n clear() {\n this.setState({ value: null });\n }\n\n refresh() {\n const { value, hidden, disabled } = this.state;\n\n // render value\n this.output.value = value;\n // fix element update\n const el = document.getElementById(this.id) as HTMLInputElement;\n if (el) {\n el.value = value;\n }\n\n // render disabled\n this.output.disabled = disabled;\n\n // render hidden\n this.output.classes = hidden ? 'is-hidden' : '';\n }\n}\n","import { EventHandler } from '@net7/core';\nimport { Subject } from 'rxjs';\nimport { MrInputTextDS } from '../../data-sources/form/input-text.ds';\nimport { MrInputEventHandler, MrChangedParams } from '../../interfaces/form.interface';\n\nexport class MrInputTextEH extends EventHandler implements MrInputEventHandler {\n public changed$: Subject<MrChangedParams>;\n\n public dataSource: MrInputTextDS;\n\n public listen() {\n this.innerEvents$.subscribe(({ type, payload }) => {\n switch (type) {\n case `${this.dataSource.id}.change`: {\n const { value } = payload;\n // set new value\n this.dataSource.setState({ value });\n // emit changed signal\n this.changed$.next({\n id: this.dataSource.id,\n state: this.dataSource.getState()\n });\n break;\n }\n default:\n break;\n }\n });\n }\n}\n","import { DataSource, _t } from '@net7/core';\nimport { InputSelectData } from '@net7/components';\nimport { MrFormInputState, MrInputDataSource } from '../../interfaces/form.interface';\n\ntype MrInputSelectValue = string | null;\n\nexport class MrInputSelectDS extends DataSource implements MrInputDataSource<MrInputSelectValue> {\n public id: string;\n\n public state: MrFormInputState<MrInputSelectValue> = {\n value: null,\n disabled: false,\n hidden: false,\n };\n\n protected transform(data: InputSelectData): InputSelectData {\n return {\n ...data,\n options: this.getOptions(data.options)\n };\n }\n\n getState = () => this.state;\n\n setState(newState: MrFormInputState<MrInputSelectValue>) {\n this.state = {\n ...this.state,\n ...newState\n };\n this.refresh();\n }\n\n clear() {\n this.setState({ value: null });\n }\n\n refresh() {\n const { hidden, disabled } = this.state;\n\n // render value\n this.output.options = this.getOptions(this.output.options);\n\n // render disabled\n this.output.disabled = disabled;\n\n // render hidden\n this.output.classes = hidden ? 'is-hidden' : '';\n }\n\n private getOptions(options) {\n const { value } = this.state;\n return options.map((option) => ({\n ...option,\n label: _t(option.label),\n selected: value === option.value\n }));\n }\n}\n","import { EventHandler } from '@net7/core';\nimport { Subject } from 'rxjs';\nimport { MrInputSelectDS } from '../../data-sources/form/input-select.ds';\nimport { MrInputEventHandler, MrChangedParams } from '../../interfaces/form.interface';\n\nexport class MrInputSelectEH extends EventHandler implements MrInputEventHandler {\n public changed$: Subject<MrChangedParams>;\n\n public dataSource: MrInputSelectDS;\n\n public listen() {\n this.innerEvents$.subscribe(({ type, payload }) => {\n switch (type) {\n case `${this.dataSource.id}.change`: {\n const { value } = payload;\n // set new value\n this.dataSource.setState({ value });\n // emit changed signal\n this.changed$.next({\n id: this.dataSource.id,\n state: this.dataSource.getState()\n });\n break;\n }\n default:\n break;\n }\n });\n }\n}\n","import { DataSource, _t } from '@net7/core';\nimport { InputCheckboxData } from '@net7/components';\nimport { MrFormInputState, MrInputDataSource } from '../../interfaces/form.interface';\n\ntype MrInputCheckboxValue = string[];\n\n// eslint-disable-next-line max-len\nexport class MrInputCheckboxDS extends DataSource implements MrInputDataSource<MrInputCheckboxValue> {\n public id: string;\n\n public state: MrFormInputState<MrInputCheckboxValue> = {\n value: [],\n disabled: false,\n hidden: false,\n };\n\n protected transform(data: InputCheckboxData): InputCheckboxData {\n return {\n ...data,\n checkboxes: this.getCheckboxes(data.checkboxes)\n };\n }\n\n getState = () => this.state;\n\n setState(newState: MrFormInputState<MrInputCheckboxValue>) {\n this.state = {\n ...this.state,\n ...newState\n };\n this.refresh();\n }\n\n clear() {\n this.setState({ value: [] });\n }\n\n refresh() {\n const { hidden } = this.state;\n\n // render value\n this.output.checkboxes = this.getCheckboxes(this.output.checkboxes);\n\n // render hidden\n this.output.classes = hidden ? 'is-hidden' : '';\n }\n\n toggleValue({ inputPayload, value: isChecked }) {\n const { value } = this.state;\n const exists = !!(value.includes(inputPayload));\n if (isChecked && !exists) {\n value.push(inputPayload);\n } else if (!isChecked && exists) {\n value.splice(value.indexOf(inputPayload), 1);\n }\n this.setState({ value });\n }\n\n private getCheckboxes(checkboxes) {\n const { value, disabled } = this.state;\n return checkboxes.map((checkbox, index) => ({\n ...checkbox,\n id: `${this.id}-${index}`,\n disabled,\n label: _t(checkbox.label),\n checked: !!(value.includes(checkbox.payload))\n }));\n }\n}\n","import { EventHandler } from '@net7/core';\nimport { Subject } from 'rxjs';\nimport { MrInputCheckboxDS } from '../../data-sources/form/input-checkbox.ds';\nimport { MrInputEventHandler, MrChangedParams } from '../../interfaces/form.interface';\n\nexport class MrInputCheckboxEH extends EventHandler implements MrInputEventHandler {\n public changed$: Subject<MrChangedParams>;\n\n public dataSource: MrInputCheckboxDS;\n\n public listen() {\n this.innerEvents$.subscribe(({ type, payload }) => {\n switch (type) {\n case `${this.dataSource.id}.change`: {\n // update value\n this.dataSource.toggleValue(payload);\n // emit changed signal\n this.changed$.next({\n id: this.dataSource.id,\n state: this.dataSource.getState()\n });\n break;\n }\n default:\n break;\n }\n });\n }\n}\n","import { DataSource, _t } from '@net7/core';\nimport { MrFormInputState, MrInputDataSource } from '../../interfaces/form.interface';\n\nexport type MrInputTypeaheadValue = string | null;\n\nexport class MrInputTypeaheadDS extends DataSource implements MrInputDataSource<MrInputTypeaheadValue> {\n public id: string;\n\n public state: MrFormInputState<MrInputTypeaheadValue> = {\n value: null,\n disabled: false,\n hidden: false,\n };\n\n protected transform(data: any): any {\n return {\n ...data,\n placeholder: _t(data.placeholder)\n };\n }\n\n getState = () => this.state;\n\n setState(newState: MrFormInputState<MrInputTypeaheadValue>) {\n this.state = {\n ...this.state,\n ...newState\n };\n this.refresh();\n }\n\n clear() {\n this.setState({ value: null });\n }\n\n refresh() {\n const { value, hidden, disabled } = this.state;\n\n // render value\n this.output.value = value;\n // fix element update (same DOM hack as MrInputTextDS)\n const el = document.getElementById(this.id) as HTMLInputElement;\n if (el) {\n el.value = value;\n }\n\n // render disabled\n this.output.disabled = disabled;\n\n // render hidden\n this.output.classes = hidden ? 'is-hidden' : '';\n }\n}\n","import { EventHandler } from '@net7/core';\nimport { Subject } from 'rxjs';\nimport { MrInputTypeaheadDS } from '../../data-sources/form/input-typeahead.ds';\nimport { MrInputEventHandler, MrChangedParams } from '../../interfaces/form.interface';\n\nexport class MrInputTypeaheadEH extends EventHandler implements MrInputEventHandler {\n public changed$: Subject<MrChangedParams>;\n\n public dataSource: MrInputTypeaheadDS;\n\n public listen() {\n this.innerEvents$.subscribe(({ type, payload }) => {\n switch (type) {\n case `${this.dataSource.id}.change`: {\n const { value } = payload;\n // set new value\n this.dataSource.setState({ value });\n // emit changed signal\n this.changed$.next({\n id: this.dataSource.id,\n state: this.dataSource.getState()\n });\n break;\n }\n default:\n break;\n }\n });\n }\n}\n","import { Subject, ReplaySubject } from 'rxjs';\nimport { MrInputTextDS } from '../data-sources/form/input-text.ds';\nimport { MrInputTextEH } from '../event-handlers/form/input-text.eh';\nimport { MrInputSelectDS } from '../data-sources/form/input-select.ds';\nimport { MrInputSelectEH } from '../event-handlers/form/input-select.eh';\nimport { MrInputCheckboxDS } from '../data-sources/form/input-checkbox.ds';\nimport { MrInputCheckboxEH } from '../event-handlers/form/input-checkbox.eh';\nimport { MrInputTypeaheadDS } from '../data-sources/form/input-typeahead.ds';\nimport { MrInputTypeaheadEH } from '../event-handlers/form/input-typeahead.eh';\nimport {\n MrChangedParams,\n MrInputDataSource,\n MrFormConfig,\n} from '../interfaces/form.interface';\n\nexport class MrFormModel {\n public config: MrFormConfig;\n\n public loaded$: ReplaySubject<boolean> = new ReplaySubject();\n\n public inputs: {\n [id: string]: {\n ds: any;\n eh: any;\n emit: (t: string, p: any) => void;\n };\n } = {};\n\n private inputTypes: {\n [id: string]: {\n ds: any;\n eh: any;\n };\n } = {\n text: {\n ds: MrInputTextDS,\n eh: MrInputTextEH\n },\n select: {\n ds: MrInputSelectDS,\n eh: MrInputSelectEH\n },\n checkbox: {\n ds: MrInputCheckboxDS,\n eh: MrInputCheckboxEH\n },\n typeahead: {\n ds: MrInputTypeaheadDS,\n eh: MrInputTypeaheadEH\n }\n };\n\n changed$: Subject<MrChangedParams> = new Subject();\n\n init(config: MrFormConfig) {\n this.config = config;\n\n // init inputs\n this.initInputs();\n\n // emit signal\n this.loaded$.next(true);\n }\n\n getInput = (id: string): MrInputDataSource<any> => this.inputs[id].ds;\n\n getInputs = (): {\n [id: string]: MrInputDataSource<any>;\n } => {\n const inputs = {};\n Object.keys(this.inputs).forEach((id) => {\n inputs[id] = this.getInput(id);\n });\n return inputs;\n };\n\n getState() {\n const state = {};\n Object.keys(this.inputs).forEach((key) => {\n state[key] = this.inputs[key].ds.getState();\n });\n return state;\n }\n\n addInputType(type: string, ds: any, eh: any) {\n if (this.inputTypes[type]) {\n throw Error(`input type ${type} already exists!`);\n }\n\n this.inputTypes[type] = { ds, eh };\n }\n\n private initInputs() {\n const { sections } = this.config;\n sections.forEach((section) => {\n section.inputs.forEach(({\n id, type, options, state, data\n }) => {\n const DSClass = this.inputTypes[type].ds;\n const EHClass = this.inputTypes[type].eh;\n const DSInstance = new DSClass(options || {});\n const EHInstance = new EHClass();\n // set datasource id\n DSInstance.id = id;\n // set initial data\n if (data) {\n DSInstance.update(data);\n }\n // set state\n if (state) {\n DSInstance.setState(state);\n }\n // set eventhandler hostid\n EHInstance.hostId = id;\n // attach datasource to eventhandler\n EHInstance.dataSource = DSInstance;\n // attach changed$ to eventhandler\n EHInstance.changed$ = this.changed$;\n // listen to input events\n EHInstance.listen();\n // save it to input\n this.inputs[id] = {\n ds: DSInstance,\n eh: EHInstance,\n emit: (t: string, p: any) => EHInstance.emitInner(t, p)\n };\n });\n });\n }\n}\n","import { Data, Router } from '@angular/router';\nimport { LayoutDataSource, _t } from '@net7/core';\nimport { cloneDeep, isEmpty } from 'lodash';\nimport { CommunicationService, ConfigurationService, MainStateService } from '@net7/boilerplate-common';\nimport { InputCheckboxData, InputSelectData, InputTextData } from '@net7/components';\nimport { Observable, of } from 'rxjs';\nimport { tap } from 'rxjs/operators';\nimport { MrFormModel } from '../../models/form.model';\nimport { MrLocaleService } from '../../services/locale.service';\n\nexport class MrAdvancedSearchLayoutDS extends LayoutDataSource {\n protected router: Router;\n\n protected configuration: ConfigurationService;\n\n protected communication: CommunicationService;\n\n protected mainState: MainStateService;\n\n protected localeService: MrLocaleService;\n\n protected routeData: Data;\n\n protected initialState = {};\n\n public pageConfig;\n\n public form: MrFormModel;\n\n onInit(payload) {\n this.router = payload.router;\n this.configuration = payload.configuration;\n this.communication = payload.communication;\n this.mainState = payload.mainState;\n this.routeData = payload.routeData;\n this.localeService = payload.localeService;\n this.pageConfig = this.configuration.get(this.routeData.configId);\n\n // add translations\n this.addTranslations(this.pageConfig);\n\n let optionsReq$: Observable<unknown> = of(true);\n if (this.pageConfig.hasDynamicOptions) {\n const dynamicReq$ = this.communication.request$('advancedSearchOptions', {\n onError: (err) => {\n console.warn('Request error', err);\n }\n });\n optionsReq$ = dynamicReq$.pipe(\n tap(this.handleOptionsRequest)\n );\n }\n\n optionsReq$.subscribe({\n complete: () => {\n // init form\n this.form = new MrFormModel();\n // form init\n this.form.init(this.pageConfig.formConfig);\n // set initial state\n this.initialState = cloneDeep(this.form.getState());\n\n this.one('mr-form-wrapper-accordion').update({\n form: this.form\n });\n }\n });\n\n // update head title\n this.updateHeadTitle();\n }\n\n protected updateHeadTitle() {\n const appName = this.configuration.get('name');\n const pageTitle = this.pageConfig.title;\n this.mainState.update('headTitle', [appName, _t(pageTitle)].join(' > '));\n }\n\n onSubmit({ state }) {\n if (!isEmpty(state)) {\n const { resultsUrl } = this.pageConfig;\n let baseUrl = resultsUrl;\n if (typeof resultsUrl !== 'string') {\n const locale = this.localeService.getLocale();\n baseUrl = resultsUrl[locale];\n }\n const params = Object.keys(state)\n .filter((key) => !(state[key].disabled || isEmpty(state[key].value)))\n .map((key) => ({\n key,\n value: Array.isArray(state[key].value)\n ? state[key].value.join(',')\n : state[key].value\n }))\n .map(({ key, value }) => `${key}=${encodeURIComponent(value)}`);\n const url = `${baseUrl}?${params.join('&')}`;\n window.open(url, '_blank');\n }\n }\n\n onReset() {\n Object.keys(this.initialState).forEach((key) => {\n const inputState = cloneDeep(this.initialState[key]);\n this.form.getInput(key).setState(inputState);\n });\n }\n\n protected handleOptionsRequest = (response) => {\n const { formConfig } = this.pageConfig;\n Object.keys(response).forEach((key) => {\n formConfig.sections.forEach(({ inputs }) => {\n inputs.forEach((input) => {\n if (input.id === key) {\n input.data = {\n ...input.data,\n ...response[key]\n };\n }\n });\n });\n });\n };\n\n protected addTranslations(pageConfig) {\n const { formConfig } = pageConfig;\n // page title\n pageConfig.title = _t(pageConfig.title);\n // submit\n if (formConfig.submitButton) {\n formConfig.submitButton.label = _t(formConfig.submitButton.label);\n }\n // reset\n if (formConfig.resetButton) {\n formConfig.resetButton.label = _t(formConfig.resetButton.label);\n }\n // groups\n formConfig.groups.forEach((group) => {\n if (group.options?.label) {\n group.options.label = _t(group.options.label);\n }\n });\n // sections\n formConfig.sections.forEach((section) => {\n if (section.title) {\n section.title = _t(section.title);\n }\n if (section.description) {\n section.description = _t(section.description);\n }\n if (section.info) {\n section.info = _t(section.info);\n }\n section.inputs.forEach((input) => {\n if (input.data.label) {\n input.data.label = _t(input.data.label);\n }\n\n if (input.data.legend) {\n input.data.legend = _t(input.data.legend);\n }\n\n // input text / typeahead\n if (input.type === 'text' || input.type === 'typeahead') {\n if (input.data.placeholder) {\n input.data.placeholder = _t(input.data.placeholder);\n }\n }\n // input checkbox\n if (input.type === 'checkbox') {\n input.data.checkboxes.forEach((checkbox) => {\n checkbox.label = _t(checkbox.label);\n });\n }\n // input select\n if (input.type === 'select') {\n input.data.options.forEach((option) => {\n option.label = _t(option.label);\n });\n }\n\n // info tooltip\n if (input.info && input.data.label && ['text', 'select', 'typeahead'].includes(input.type)) {\n const inputData = input.data as InputTextData | InputSelectData;\n if (/n7-icon/.test(input.data.label)) return;\n (input.data as InputTextData | InputSelectData).label = [\n `<span>${inputData.label}</span>`,\n `<span class=\"mr-input-info n7-icon n7-icon-info-circle\" alt=\"${_t(input.info)}\"></span>`\n ].join('');\n }\n if (input.info && input.data.legend && input.type === 'checkbox') {\n const inputData = input.data as InputCheckboxData;\n if (/n7-icon/.test(input.data.legend)) return;\n (input.data as InputCheckboxData).legend = [\n `<span>${inputData.legend}</span>`,\n `<span class=\"mr-input-info n7-icon n7-icon-info-circle\" alt=\"${_t(input.info)}\"></span>`\n ].join('');\n }\n });\n });\n }\n}\n","import { EventHandler } from '@net7/core';\nimport { Subject } from 'rxjs';\nimport { MrAdvancedSearchLayoutDS } from './advanced-search-layout.ds';\n\nexport class MrAdvancedSearchLayoutEH extends EventHandler {\n dataSource: MrAdvancedSearchLayoutDS;\n\n protected destroy$: Subject<void> = new Subject();\n\n public listen() {\n this.innerEvents$.subscribe(({ type, payload }) => {\n switch (type) {\n case 'mr-advanced-search-layout.init':\n this.dataSource.onInit(payload);\n // init hook\n this.onInit();\n // scroll top\n window.scrollTo(0, 0);\n break;\n\n case 'mr-advanced-search-layout.destroy':\n this.destroy$.next();\n break;\n\n default:\n console.warn('unhandled inner event of type', type);\n break;\n }\n });\n\n this.outerEvents$.subscribe(({ type, payload }) => {\n switch (type) {\n case 'mr-form-wrapper-accordion.submit':\n this.dataSource.onSubmit(payload);\n break;\n case 'mr-form-wrapper-accordion.reset':\n this.dataSource.onReset();\n break;\n\n default:\n console.warn('unhandled inner event of type', type);\n break;\n }\n });\n }\n\n /**\n * @example\n * protected onInit() {\n * this.dataSource.form.changed$.subscribe(({ id, state }) => {\n * console.log('changed$', { id, state });\n * });\n * }\n */\n protected onInit() {\n // to be extended on project\n }\n}\n","import { MrAdvancedSearchLayoutDS } from './advanced-search-layout.ds';\nimport { MrAdvancedSearchLayoutEH } from './advanced-search-layout.eh';\nimport * as DS from '../../data-sources';\nimport * as EH from '../../event-handlers';\n\nexport const MrAdvancedSearchLayoutConfig = {\n layoutId: 'mr-advanced-search-layout',\n widgets: [{\n id: 'mr-form-wrapper-accordion'\n }],\n layoutDS: MrAdvancedSearchLayoutDS,\n layoutEH: MrAdvancedSearchLayoutEH,\n widgetsDataSources: DS,\n widgetsEventHandlers: EH,\n layoutOptions: {}\n};\n","/**\n * MrInputTypeaheadComponent\n *\n * A text input with an inline autocomplete dropdown. Supports two modes:\n *\n * 1. **Static (local) filtering** — provide a fixed list of strings via `data.options`.\n * No API call is made; suggestions are filtered client-side on every keystroke.\n *\n * ```ts\n * {\n * id: 'my-field',\n * type: 'typeahead',\n * data: {\n * id: 'my-field',\n * label: 'My Field',\n * options: ['Apple', 'Banana', 'Cherry'],\n * }\n * }\n * ```\n *\n * 2. **Dynamic (API) autocomplete** — omit `data.options` and provide\n * `data.communicationKey` instead. The component calls\n * `CommunicationService.request$(communicationKey, { queryParams: { q } })`\n * after a 200 ms debounce. The endpoint must return `string[]`.\n *\n * ```ts\n * {\n * id: 'my-field',\n * type: 'typeahead',\n * data: {\n * id: 'my-field',\n * label: 'My Field',\n * communicationKey: 'myAutocompleteEndpoint',\n * }\n * }\n * ```\n *\n * Suggestions appear after 2 characters are typed. Tab completes with the first\n * suggestion. Clicking outside dismisses the dropdown.\n */\nimport {\n Component, ElementRef, HostListener, Input, OnDestroy\n} from '@angular/core';\nimport { CommunicationService } from '@net7/boilerplate-common';\n\n@Component({\n selector: 'mr-input-typeahead',\n templateUrl: './input-typeahead.html',\n})\nexport class MrInputTypeaheadComponent implements OnDestroy {\n @Input() data: any;\n\n @Input() emit: (type: string, payload?: any) => void;\n\n suggestions: string[] = [];\n\n isLoading = false;\n\n currentQuery = '';\n\n private timer: any;\n\n constructor(\n private communication: CommunicationService,\n private el: ElementRef,\n ) {}\n\n /** Wraps the form emit to intercept change events for autocomplete fetching */\n localEmit = (type: string, payload?: any) => {\n this.emit(type, payload);\n if (type === 'change') {\n this.onValueChange(payload?.value || '');\n }\n };\n\n /** Wraps the first occurrence of `query` in `text` with a <strong> tag */\n highlight(text: string, query: string): string {\n if (!query) return text;\n const idx = text.toLowerCase().indexOf(query.toLowerCase());\n if (idx === -1) return text;\n return (\n text.slice(0, idx) +\n '<strong>' + text.slice(idx, idx + query.length) + '</strong>' +\n text.slice(idx + query.length)\n );\n }\n\n /** Completes with the first suggestion on Tab */\n onKeydown(event: KeyboardEvent) {\n if (event.key === 'Tab' && this.suggestions.length > 0) {\n event.preventDefault();\n this.onSelect(this.suggestions[0]);\n }\n }\n\n /** Selects a suggestion, updates the input and form state */\n onSelect(suggestion: string, event?: MouseEvent) {\n if (event) event.preventDefault();\n this.emit('change', { value: suggestion });\n this.suggestions = [];\n this.isLoading = false;\n const input: HTMLInputElement = this.el.nativeElement.querySelector('input');\n if (input) input.value = suggestion;\n }\n\n @HostListener('document:click', ['$event'])\n onDocumentClick(event: Event) {\n if (!this.el.nativeElement.contains(event.target)) {\n this.suggestions = [];\n this.isLoading = false;\n }\n }\n\n ngOnDestroy() {\n clearTimeout(this.timer);\n }\n\n private onValueChange(value: string) {\n clearTimeout(this.timer);\n this.currentQuery = value;\n if (!value || value.length < 2) {\n this.suggestions = [];\n this.isLoading = false;\n return;\n }\n // Static options: filter locally, no API call needed\n if (Array.isArray(this.data?.options)) {\n const q = value.toLowerCase();\n this.suggestions = (this.data.options as string[])\n .filter((o) => o.toLowerCase().includes(q))\n .slice(0, 20);\n return;\n }\n this.isLoading = true;\n this.timer = setTimeout(() => {\n this.communication.request$(this.data.communicationKey, {\n queryParams: { q: value },\n onError: () => {\n this.isLoading = false;\n this.suggestions = [];\n }\n }).subscribe((res: string[]) => {\n this.isLoading = false;\n this.suggestions = res || [];\n });\n }, 200);\n }\n}\n","<div class=\"mr-input-typeahead\" (keydown)=\"onKeydown($event)\">\n <n7-input-text\n [data]=\"data\"\n [emit]=\"localEmit\">\n </n7-input-text>\n <ul *ngIf=\"suggestions.length > 0\" class=\"mr-input-typeahead__dropdown\">\n <li *ngFor=\"let s of suggestions\"\n class=\"mr-input-typeahead__option\"\n (mousedown)=\"onSelect(s, $event)\">\n <span [innerHTML]=\"highlight(s, currentQuery)\"></span>\n </li>\n </ul>\n</div>\n","import {\n Component, ContentChild, Input, OnInit, TemplateRef\n} from '@angular/core';\nimport { _t } from '@net7/core';\nimport { MrFormConfigGroup, MrFormConfigSection } from '../../interfaces/form.interface';\nimport { MrFormModel } from '../../models/form.model';\n\n@Component({\n selector: 'mr-form',\n templateUrl: './form.html',\n})\nexport class MrFormComponent implements OnInit {\n @Input() form: MrFormModel;\n\n @Input() group?: MrFormConfigGroup;\n\n @ContentChild(TemplateRef)\n public templateRef: TemplateRef<any>;\n\n public sections: MrFormConfigSection[];\n\n ngOnInit() {\n if (this.group) {\n this.sections = this.form.config.sections\n .filter(({ id }) => this.group.sections.includes(id));\n } else {\n this.sections = this.form.config.sections;\n }\n\n // translations\n this.sections = this.sections.map((section) => ({\n ...section,\n title: _t(section.title),\n description: _t(section.description),\n info: _t(section.info)\n }));\n }\n}\n","<div *ngIf=\"form.loaded$ | async\" class=\"mr-form {{ group?.classes || '' }}\">\n <div *ngFor=\"let section of sections\" class=\"mr-form__section {{ section.classes || '' }}\" \n [ngClass]=\"{ 'mr-form__section-advanced' : section.advancedSection }\" >\n \n <div class=\"mr-form__section-header\">\n <h3 *ngIf=\"section.title\" class=\"mr-form__section-title\">\n {{ section.title }}\n <span *ngIf=\"section.info\" class=\"mr-input-info n7-icon n7-icon-info-circle\" [attr.alt]=\"section.info\"></span>\n </h3>\n <p *ngIf=\"section.description\" class=\"mr-form__section-description\">{{ section.description }}</p>\n </div>\n \n <div class=\"mr-form__section-content\">\n <div *ngFor=\"let input of section.inputs\" class=\"mr-form__element {{ input.options?.classes || '' }}\">\n <ng-container [ngSwitch]=\"input.type\">\n\n <!-- INPUT TEXT -->\n <n7-input-text *ngSwitchCase=\"'text'\" \n [data]=\"form.inputs[input.id].ds.out$ | async\"\n [emit]=\"form.inputs[input.id].emit\"></n7-input-text>\n\n <!-- INPUT CHECKBOX -->\n <n7-input-checkbox *ngSwitchCase=\"'checkbox'\" \n [data]=\"form.inputs[input.id].ds.out$ | async\"\n [emit]=\"form.inputs[input.id].emit\"></n7-input-checkbox>\n\n <!-- INPUT SELECT -->\n <n7-input-select *ngSwitchCase=\"'select'\"\n [data]=\"form.inputs[input.id].ds.out$ | async\"\n [emit]=\"form.inputs[input.id].emit\"></n7-input-select>\n\n <!-- INPUT TYPEAHEAD -->\n <mr-input-typeahead *ngSwitchCase=\"'typeahead'\"\n [data]=\"form.inputs[input.id].ds.out$ | async\"\n [emit]=\"form.inputs[input.id].emit\"></mr-input-typeahead>\n\n <!-- DEFAULT (external template) -->\n <ng-container *ngSwitchDefault>\n <ng-template *ngTemplateOutlet=\"\n templateRef; \n context: { \n type: input.type, \n input: form.inputs[input.id] \n }\"></ng-template>\n </ng-container>\n\n </ng-container>\n </div>\n </div>\n </div>\n</div>","import {\n Component, Input, OnInit, OnDestroy\n} from '@angular/core';\nimport { MrFormModel } from '../../models/form.model';\n\nexport type MrFormWrapperAccordionData = {\n form: MrFormModel;\n}\n\n@Component({\n selector: 'mr-form-wrapper-accordion',\n templateUrl: './form-wrapper-accordion.html',\n})\nexport class MrFormWrapperAccordionComponent implements OnInit, OnDestroy {\n @Input() data: MrFormWrapperAccordionData;\n\n @Input() emit: (type: string, payload?: any) => void;\n\n ngOnInit() {\n this.fakeEmit('init');\n }\n\n ngOnDestroy() {\n this.fakeEmit('destroy');\n }\n\n fakeEmit = (type, payload?) => {\n if (!this.emit) {\n return;\n }\n this.emit(type, payload);\n };\n\n onReset() {\n this.fakeEmit('reset');\n }\n\n onSubmit() {\n this.fakeEmit('submit');\n }\n}\n","<div *ngIf=\"data\" class=\"mr-form-wrapper-accordion\">\n <ng-container *ngFor=\"let group of data.form.config.groups; index as $i\">\n <div *ngIf=\"group.options && (group.options.showHeader !== false)\" \n class=\"mr-form-wrapper-accordion__header\">\n <n7-facet-header\n [data]=\"group.options\"\n [emit]=\"fakeEmit\"\n ></n7-facet-header>\n </div>\n\n <div *ngIf=\"group.options.isOpen\" class=\"mr-form-wrapper-accordion__content\" [attr.id]=\"group.id\">\n <mr-form [form]=\"data.form\" [group]=\"group\">\n <!-- CUSTOM INPUTS -->\n <!-- <ng-template let-type=\"type\" let-input=\"input\">\n <ng-container [ngSwitch]=\"type\">\n \n <n7-tag *ngSwitchCase=\"'tag'\" \n [data]=\"input.ds.out$ | async\"\n [emit]=\"input.emit\"></n7-tag>\n \n </ng-container>\n </ng-template> -->\n </mr-form>\n </div>\n </ng-container>\n \n <div class=\"mr-form-wrapper-accordion__actions\">\n <a *ngIf=\"data.form.config.resetButton\" \n class=\"n7-btn n7-btn-xl n7-btn-danger\" \n (click)=\"onReset()\">{{ data.form.config.resetButton.label }}</a>\n <a *ngIf=\"data.form.config.submitButton\" \n class=\"n7-btn n7-btn-cta n7-btn-xl n7-btn-info\" \n (click)=\"onSubmit()\">{{ data.form.config.submitButton.label }}</a>\n </div>\n</div>","import { Component, OnInit, OnDestroy } from '@angular/core';\nimport { ActivatedRoute, Data, Router } from '@angular/router';\nimport {\n AbstractLayout,\n LayoutsConfigurationService,\n MainStateService,\n ConfigurationService,\n CommunicationService\n} from '@net7/boilerplate-common';\nimport { MrLocaleService } from '../../services/locale.service';\nimport { MrAdvancedSearchLayoutConfig as config } from './advanced-search-layout.config';\n\n@Component({\n selector: 'mr-advanced-search-layout',\n templateUrl: './advanced-search-layout.html',\n})\nexport class MrAdvancedSearchLayoutComponent extends AbstractLayout implements OnInit, OnDestroy {\n private routeData: Data;\n\n constructor(\n private router: Router,\n private activatedRoute: ActivatedRoute,\n private mainState: MainStateService,\n private configuration: ConfigurationService,\n private communication: CommunicationService,\n public localeService: MrLocaleService,\n layoutsConfiguration: LayoutsConfigurationService,\n ) {\n super(layoutsConfiguration.get('MrAdvancedSearchLayoutConfig') || config);\n }\n\n protected initPayload() {\n return {\n routeData: this.routeData,\n configuration: this.configuration,\n communication: this.communication,\n mainState: this.mainState,\n router: this.router,\n activatedRoute: this.activatedRoute,\n localeService: this.localeService,\n options: this.config.options || {},\n };\n }\n\n ngOnInit() {\n this.activatedRoute.data.subscribe((routeData) => {\n this.routeData = routeData;\n this.onInit();\n });\n }\n\n ngOnDestroy() {\n this.onDestroy();\n }\n}\n","<div *ngIf=\"lb.dataSource\" class=\"mr-advanced-search mr-layout\">\n <div class=\"mr-layout__maxwidth mr-side-margin\">\n\n <n7-inner-title [data]=\"{\n title: {\n main: {\n text: lb.dataSource.pageConfig.title\n }\n }\n }\"></n7-inner-title>\n\n <mr-form-wrapper-accordion \n [data]=\"lb.widgets['mr-form-wrapper-accordion'].ds.out$ | async\"\n [emit]=\"lb.widgets['mr-form-wrapper-accordion'].emit\">\n </mr-form-wrapper-accordion>\n </div>\n</div>","import { LayoutDataSource, _t } from '@net7/core';\nimport { Data, Router } from '@angular/router';\nimport { isEmpty } from 'lodash';\nimport { ConfigurationService, CommunicationService, MainStateService } from '@net7/boilerplate-common';\nimport { MrLayoutStateService, LayoutState } from '../../services/layout-state.service';\n\nexport class MrHomeLayoutDS extends LayoutDataSource {\n protected router: Router;\n\n private configuration: ConfigurationService;\n\n private communication: CommunicationService;\n\n private mainState: MainStateService;\n\n private layoutState: MrLayoutStateService;\n\n private routeData: Data;\n\n private pageConfig;\n\n public errorTitle = _t('global#layout_error_title');\n\n public errorDescription = _t('global#layout_error_description');\n\n onInit(payload) {\n this.router = payload.router;\n this.configuration = payload.configuration;\n this.communication = payload.communication;\n this.mainState = payload.mainState;\n this.layoutState = payload.layoutState;\n this.routeData = payload.routeData;\n this.pageConfig = this.configuration.get(this.routeData.configId) || {};\n\n this.doRequest();\n\n // update head title\n this.updateHeadTitle();\n }\n\n doRequest() {\n const { sections } = this.pageConfig;\n const { configId, locale } = this.routeData;\n if (!isEmpty(sections)) {\n this.layoutState.set('content', LayoutState.LOADING);\n this.communication.request$('home', {\n method: 'POST',\n params: sections.map(({ id }) => id),\n urlParams: locale ? `?locale=${locale}` : '',\n onError: (err) => {\n console.warn(`Error loading ${configId} sections`, err.message);\n this.layoutState.set('content', LayoutState.ERROR);\n }\n }).subscribe((response) => {\n this.layoutState.set('content', LayoutState.SUCCESS);\n this.initSections(response);\n });\n } else {\n console.warn(`There are no sections configured for ${configId} layout`);\n }\n }\n\n initSections(response) {\n const { sections } = this.pageConfig;\n\n if (sections) {\n sections.forEach(({ id }) => {\n const widgetDataSource = this.getWidgetDataSource(id);\n const responseData = response[id];\n // set id\n widgetDataSource.id = id;\n // update data\n if (responseData) {\n this.one(id).update(responseData);\n }\n });\n }\n }\n\n private updateHeadTitle() {\n const appName = this.configuration.get('name');\n const pageTitle = this.pageConfig.title;\n this.mainState.update('headTitle', [appName, pageTitle].join(' > '));\n }\n\n searchRedirect(type, payload) {\n const configId = type.split('.')[0];\n const { input } = this.pageConfig.sections.find((section) => section.id === configId).options;\n const { queryId } = input;\n const { additionalQueryParams } = input;\n const queryParams = {};\n queryParams[queryId] = payload.inputValue;\n if (additionalQueryParams) {\n Object.keys(additionalQueryParams).forEach((paramKey) => {\n queryParams[paramKey] = additionalQueryParams[paramKey];\n });\n }\n this.router.navigate([payload.route], { queryParams });\n }\n}\n","import { EventHandler } from '@net7/core';\n\nexport class MrHomeLayoutEH extends EventHandler {\n public listen() {\n this.innerEvents$.subscribe(({ type, payload }) => {\n switch (type) {\n case 'mr-home-layout.init':\n this.dataSource.onInit(payload);\n // scroll top\n window.scrollTo(0, 0);\n break;\n default:\n break;\n }\n });\n this.outerEvents$.subscribe(({ type, payload }) => {\n if (type.indexOf('hero-search-enter') !== -1) {\n this.dataSource.searchRedirect(type, payload);\n }\n });\n }\n}\n","import { MrHomeLayoutDS } from './home-layout.ds';\nimport { MrHomeLayoutEH } from './home-layout.eh';\nimport * as DS from '../../data-sources';\nimport * as EH from '../../event-handlers';\n\nexport const MrHomeLayoutConfig = {\n layoutId: 'mr-home-layout',\n widgets: [],\n layoutDS: MrHomeLayoutDS,\n layoutEH: MrHomeLayoutEH,\n widgetsDataSources: DS,\n widgetsEventHandlers: EH,\n options: {\n // TODO\n },\n};\n","import { CarouselData } from '@net7/components';\nimport { DataSource } from '@net7/core';\n\nexport class MrSliderDS extends DataSource {\n id: string;\n\n protected transform(data: any): CarouselData {\n const { slides } = data;\n return {\n slides,\n containerId: `carousel-${this.id}`,\n // classes: 'demo',\n libOptions: {\n count: 1,\n move: 1,\n // touch: true,\n // mode: 'align',\n buttons: true,\n dots: true,\n rewind: true,\n autoplay: 0,\n animation: 500,\n // responsive: {\n // 0: { count: 1.5, buttons: false },\n // 480: { count: 2.5, buttons: false },\n // 768: { count: 3, touch: false },\n // 1440: { count: 4, touch: false },\n // },\n },\n };\n }\n}\n","import { EventHandler } from '@net7/core';\n\nexport class MrSliderEH extends EventHandler {\n public listen() {\n // this.innerEvents$.subscribe(({ type, payload }) => {\n // switch (type) {\n // case `${this.dataSource.id}.<event-type>`:\n // // TODO\n // break;\n // default:\n // break;\n // }\n // });\n }\n}\n","import { EventHandler } from '@net7/core';\n\nexport class MrHeroEH extends EventHandler {\n inputPayload: '';\n\n public listen() {\n this.innerEvents$.subscribe(({ type, payload }) => {\n switch (type) {\n case `${this.dataSource.id}.change`:\n if (payload.inputPayload && payload.inputPayload === 'input') {\n this.dataSource.currentInputValue = payload.value;\n }\n break;\n case `${this.dataSource.id}.click`:\n if (payload.payloadId === 'hero-search' && this.dataSource.currentInputValue) {\n this.emitOuter('hero-search-enter', { inputValue: this.dataSource.currentInputValue, route: payload.route });\n }\n break;\n default:\n break;\n }\n });\n }\n}\n","import { Component, OnInit, OnDestroy } from '@angular/core';\nimport { ActivatedRoute, Data, Router } from '@angular/router';\nimport {\n AbstractLayout,\n CommunicationService,\n LayoutsConfigurationService,\n ConfigurationService,\n MainStateService\n} from '@net7/boilerplate-common';\nimport { MrLayoutStateService } from '../../services/layout-state.service';\nimport { MrHomeLayoutConfig as config } from './home-layout.config';\nimport { MrSliderDS } from '../../data-sources/slider.ds';\nimport { MrCollectionDS } from '../../data-sources/collection.ds';\nimport { MrHeroDS } from '../../data-sources/hero.ds';\nimport { MrSliderEH } from '../../event-handlers/slider.eh';\nimport { MrCollectionEH } from '../../event-handlers/collection.eh';\nimport { MrHeroEH } from '../../event-handlers/hero.eh';\nimport { MrContentDS } from '../../data-sources/content.ds';\nimport { MrLocaleService } from '../../services/locale.service';\n\nconst DATASOURCE_MAP = {\n slider: MrSliderDS,\n collection: MrCollectionDS,\n hero: MrHeroDS,\n content: MrContentDS,\n};\n\nconst EVENTHANDLER_MAP = {\n slider: MrSliderEH,\n collection: MrCollectionEH,\n hero: MrHeroEH,\n};\n\n@Component({\n selector: 'mr-home-layout',\n templateUrl: './home-layout.html',\n})\nexport class MrHomeLayoutComponent extends AbstractLayout implements OnInit, OnDestroy {\n private routeData: Data;\n\n constructor(\n layoutsConfiguration: LayoutsConfigurationService,\n private router: Router,\n private activatedRoute: ActivatedRoute,\n private configuration: ConfigurationService,\n private communication: CommunicationService,\n private mainState: MainStateService,\n public layoutState: MrLayoutStateService,\n private localeService: MrLocaleService,\n ) {\n super(layoutsConfiguration.get('MrHomeLayoutConfig') || config);\n }\n\n protected initPayload() {\n return {\n router: this.router,\n routeData: this.routeData,\n mainState: this.mainState,\n configuration: this.configuration,\n communication: this.communication,\n layoutState: this.layoutState,\n options: this.config.options || {}\n };\n }\n\n ngOnInit() {\n this.activatedRoute.data.subscribe((routeData) => {\n this.routeData = routeData;\n this.layoutState.add('content');\n this.loadWidgets();\n this.onInit();\n });\n }\n\n ngOnDestroy() {\n this.onDestroy();\n }\n\n loadWidgets() {\n const { configId } = this.routeData;\n const homeConfig = this.configuration.get(configId) || {};\n const { sections } = homeConfig;\n\n this.widgets = [];\n if (sections) {\n sections.forEach(({ id, type, options }) => {\n const widgetOptions = options || {};\n widgetOptions.localeService = this.localeService;\n this.widgets.push({\n id,\n options: widgetOptions,\n dataSource: DATASOURCE_MAP[type],\n eventHandler: EVENTHANDLER_MAP[type]\n });\n });\n }\n }\n}\n","<div class=\"mr-home mr-layout\"\n *ngIf=\"lb.dataSource\"\n [ngClass]=\"{\n 'is-loading': ( layoutState.get$('content') | async ) == 'LOADING',\n 'is-error': ( layoutState.get$('content') | async ) == 'ERROR'\n }\">\n <!-- HOME CONTENT -->\n <ng-container [ngSwitch]=\"layoutState.get$('content') | async\">\n <!-- loading -->\n <ng-container *ngSwitchCase=\"'LOADING'\">\n <div class=\"mr-layout__loader\">\n <n7-loader></n7-loader>\n </div>\n </ng-container>\n\n <!-- error -->\n <ng-container *ngSwitchCase=\"'ERROR'\">\n <div class=\"mr-layout__error\">\n <h2>{{ lb.dataSource.errorTitle }}</h2>\n <p>{{ lb.dataSource.errorDescription }}</p>\n </div>\n </ng-container>\n\n <!-- success -->\n <ng-container *ngSwitchCase=\"'SUCCESS'\">\n <section *ngFor=\"let section of lb.dataSource.pageConfig.sections\" class=\"{{ 'mr-layout__' + section.type }}\" id=\"{{ section.id }}\">\n <ng-container [ngSwitch]=\"section.type\">\n \n <!-- SLIDER -->\n <ng-container *ngSwitchCase=\"'slider'\">\n <n7-carousel\n [data]=\"lb.widgets[section.id].ds.out$ | async\"\n [emit]=\"lb.widgets[section.id].emit\">\n </n7-carousel> \n </ng-container>\n \n <!-- COLLECTION -->\n <ng-container *ngSwitchCase=\"'collection'\">\n <div class=\"mr-layout__maxwidth mr-items-preview\">\n <n7-inner-title \n [data]=\"(lb.widgets[section.id].ds.out$ | async)?.header\"\n [emit]=\"lb.widgets[section.id].emit\">\n </n7-inner-title>\n <div class=\"{{ section.grid ? 'n7-grid-' + section.grid : '' }}\">\n <n7-item-preview\n *ngFor=\"let item of (lb.widgets[section.id].ds.out$ | async)?.items\"\n [data]=\"item\"\n [emit]=\"lb.widgets[section.id].emit\">\n </n7-item-preview>\n </div>\n </div>\n </ng-container>\n \n <!-- HERO -->\n <ng-container *ngSwitchCase=\"'hero'\">\n <n7-hero \n [data]=\"lb.widgets[section.id].ds.out$ | async\"\n [emit]=\"lb.widgets[section.id].emit\">\n </n7-hero> \n </ng-container>\n \n <!-- CONTENT -->\n <ng-container *ngSwitchCase=\"'content'\">\n <div [innerHTML]=\"lb.widgets[section.id].ds.out$ | async\"></div>\n </ng-container>\n \n </ng-container>\n </section>\n </ng-container>\n\n </ng-container>\n</div>\n","import { Data } from '@angular/router';\nimport { Observable } from 'rxjs';\nimport { LayoutDataSource, _t } from '@net7/core';\nimport {\n ConfigurationService,\n CommunicationService,\n MainStateService\n} from '@net7/boilerplate-common';\nimport { MrLocaleService } from '../../services/locale.service';\n\nexport class MrItineraryLayoutDS extends LayoutDataSource {\n private configuration: ConfigurationService;\n\n private communication: CommunicationService;\n\n private mainState: MainStateService;\n\n private routeData: Data;\n\n private pageConfig: any;\n\n private localeService: MrLocaleService;\n\n public content: string | null;\n\n public title: string | null;\n\n public errorTitle = _t('global#layout_error_title');\n\n public errorDescription = _t('global#layout_error_description');\n\n onInit(payload) {\n this.configuration = payload.configuration;\n this.communication = payload.communication;\n this.localeService = payload.localeService;\n this.mainState = payload.mainState;\n this.routeData = payload.routeData;\n this.pageConfig = this.configuration.get(this.routeData.configId);\n\n // add translations\n this.pageConfig.sections = this.pageConfig.sections.map((section) => ({\n ...section,\n title: _t(section.title)\n }));\n }\n\n pageRequest$(id, onError: (err: any) => void): Observable<any> {\n const { locale } = this.routeData;\n return this.communication.request$('itinerary', {\n onError,\n method: 'GET',\n urlParams: locale ? `${id}?locale=${locale}` : id\n });\n }\n\n handleResponse(response) {\n this.updateTitle(response);\n this.updateContent(response);\n this.updateMetadata(response);\n this.initSections(response);\n this.setLocaleResourceConfig(response);\n this.updateHeadTitle(response);\n }\n\n private updateTitle({ title }) {\n this.title = title;\n }\n\n private updateContent({ content }) {\n this.content = content;\n }\n\n private updateMetadata(response) {\n this.one('mr-static-metadata').update(response);\n }\n\n private initSections(response) {\n const { sections } = this.pageConfig;\n sections.forEach(({ id }) => {\n const widgetDataSource = this.getWidgetDataSource(id);\n if (!widgetDataSource) return;\n const responseSection = response.sections[id];\n // set id\n widgetDataSource.id = id;\n // update data\n if (responseSection) {\n this.one(id).update(responseSection);\n }\n });\n }\n\n private updateHeadTitle({ title: itineraryTitle }) {\n const appName = this.configuration.get('name');\n const pageTitle = this.pageConfig.title;\n this.mainState.update('headTitle', [appName, _t(pageTitle), itineraryTitle].join(' > '));\n }\n\n // set resource locale config\n // used by language switcher\n private setLocaleResourceConfig(response) {\n if (response?.locale) {\n this.localeService.setResourceConfig(response.locale);\n }\n }\n}\n","import { EventHandler } from '@net7/core';\nimport { ActivatedRoute, ParamMap, Router } from '@angular/router';\nimport { Subject } from 'rxjs';\nimport {\n takeUntil, switchMap, map, tap\n} from 'rxjs/operators';\nimport { MrLayoutStateService, LayoutState } from '../../services/layout-state.service';\nimport { MrResourceModalService } from '../../services/resource-modal.service';\nimport { MrItineraryLayoutDS } from './itinerary-layout.ds';\n\nexport class MrItineraryLayoutEH extends EventHandler {\n public dataSource: MrItineraryLayoutDS;\n\n private route: ActivatedRoute;\n\n private router: Router;\n\n private layoutState: MrLayoutStateService;\n\n private modalService: MrResourceModalService;\n\n private destroy$: Subject<void> = new Subject();\n\n public listen() {\n this.innerEvents$.subscribe(({ type, payload }) => {\n switch (type) {\n case 'mr-itinerary-layout.init':\n this.route = payload.route;\n this.router = payload.router;\n this.layoutState = payload.layoutState;\n this.modalService = payload.modalService;\n this.dataSource.onInit(payload);\n this.listenRoute();\n // scroll top\n window.scrollTo(0, 0);\n break;\n case 'mr-resource-layout.destroy':\n this.destroy$.next();\n break;\n default:\n console.warn('unhandled inner event of type', type);\n break;\n }\n });\n\n this.outerEvents$.subscribe(({ type, payload }) => {\n if (type.indexOf('openresourcemodal') !== -1) {\n const { id, type: resourceType } = payload;\n this.modalService.open(id, resourceType);\n }\n });\n }\n\n private listenRoute() {\n this.route.paramMap.pipe(\n takeUntil(this.destroy$),\n tap(() => {\n this.layoutState.set('content', LayoutState.LOADING);\n }),\n map((params: ParamMap) => params.get('id')),\n switchMap((id) => this.dataSource.pageRequest$(id, (err) => {\n if (err.status === 404) {\n // getting not found path\n const { config } = this.router;\n const route404 = config.find(({ data }) => data?.id === 'page-404');\n const path404 = route404?.path || 'page-404';\n this.router.navigate([path404]);\n }\n console.warn(`Error loading resource layout for ${id}`, err.message);\n this.layoutState.set('content', LayoutState.ERROR);\n }))\n ).subscribe((response) => {\n this.layoutState.set('content', LayoutState.SUCCESS);\n this.dataSource.handleResponse(response);\n // scroll top\n window.scrollTo(0, 0);\n });\n }\n}\n","import { MrItineraryLayoutDS } from './itinerary-layout.ds';\nimport { MrItineraryLayoutEH } from './itinerary-layout.eh';\nimport * as DS from '../../data-sources';\nimport * as EH from '../../event-handlers';\n\nexport const MrItineraryLayoutConfig = {\n layoutId: 'mr-itinerary-layout',\n widgets: [\n { id: 'mr-static-metadata' }\n ],\n layoutDS: MrItineraryLayoutDS,\n layoutEH: MrItineraryLayoutEH,\n widgetsDataSources: DS,\n widgetsEventHandlers: EH,\n options: {\n // TODO\n },\n};\n","//---------------------------\n// ReadMore.ts\n//---------------------------\n\nimport {\n Component, Input, AfterViewChecked, ViewChild, ElementRef\n} from '@angular/core';\nimport { _t } from '@net7/core';\n\nexport type ReadMoreData = {\n height: number;\n labels: {\n more: string;\n less: string;\n };\n};\n\nconst HEIGHT_MARGIN = 50;\n\n@Component({\n selector: 'mr-read-more',\n templateUrl: './read-more.html',\n})\nexport class ReadMoreComponent implements AfterViewChecked {\n @Input() data: ReadMoreData;\n\n // Root div\n @ViewChild('root', { read: ElementRef }) root: ElementRef;\n\n collapsed = true;\n\n hasReadmore = false;\n\n wrapperHeight: number;\n\n clientHeight: number;\n\n _loaded = false;\n\n /**\n * Determine if the view is taller than the given height limit,\n * if it is, render the \"Read-more\" button.\n */\n ngAfterViewChecked(): void {\n if (this._loaded || !this.data) return;\n if (this.root && this.root.nativeElement.clientHeight > 0) {\n this._loaded = true;\n this.clientHeight = (this.root.nativeElement as HTMLElement).clientHeight;\n const { height, labels } = this.data;\n\n // translate labels\n Object.keys(labels).forEach((key) => {\n this.data.labels[key] = _t(labels[key]);\n });\n\n if (this.clientHeight > (height + HEIGHT_MARGIN)) {\n setTimeout(() => {\n this.hasReadmore = true;\n this.updateWrapperHeight();\n });\n }\n }\n }\n\n handleToggle() {\n this.collapsed = !this.collapsed;\n this.updateWrapperHeight();\n }\n\n updateWrapperHeight() {\n this.wrapperHeight = this.collapsed\n ? this.data.height\n : this.clientHeight;\n }\n}\n","<div #root class=\"mr-read-more\"\n [ngClass]=\"{\n 'is-collapsed': !!(hasReadmore && collapsed),\n 'is-expanded': !!(hasReadmore && !collapsed)\n }\">\n <div class=\"mr-read-more__content\"\n [ngStyle]=\"{\n height: hasReadmore ? wrapperHeight + 'px' : false\n }\">\n <!-- Child component -->\n <ng-content class=\"content\"></ng-content>\n </div>\n <div *ngIf=\"hasReadmore\" class=\"mr-read-more__btn\" (click)=\"handleToggle()\">\n <span class=\"n7-icon-{{ collapsed ? 'plus' : 'minus' }}\"></span>\n <span class=\"mr-read-more__btn-text\">{{ collapsed ? data.labels.more : data.labels.less }}</span>\n </div>\n</div>\n","import { Component, Input } from '@angular/core';\n\nexport type GalleryItem = {\n id: string | number;\n thumbSrc: string;\n fullSrc: string;\n title: string;\n payload: any;\n index: number;\n};\n\nexport type GalleryData = {\n selected: null | GalleryItem;\n items: GalleryItem[];\n}\n\n@Component({\n selector: 'mr-gallery',\n templateUrl: './gallery.html',\n})\nexport class MrGalleryComponent {\n @Input() data: GalleryData;\n\n @Input() emit: (type: string, payload?: any) => void;\n\n @Input() grid: number | null;\n\n onClick(payload) {\n if (this.emit) {\n this.emit('click', payload);\n }\n }\n\n onClose() {\n if (this.emit) {\n this.emit('close');\n }\n }\n\n onChangeImg(rightImg) {\n this.emit('changeImg', rightImg);\n }\n}\n","<div *ngIf=\"data\" class=\"mr-gallery mr-wp-content\">\n <div class=\"mr-gallery__wrapper wp-block-gallery has-zoom\"> <!-- {{ grid ? 'columns-' + grid : '' }} -->\n <ul class=\"mr-gallery__items blocks-gallery-grid\">\n <li *ngFor=\"let item of data.items\" class=\"mr-gallery__item blocks-gallery-item\">\n <figure>\n <a (click)=\"onClick(item.payload)\" class=\"mr-gallery__link\">\n <img [src]=\"item.thumbSrc\" [alt]=\"item.title\" class=\"mr-gallery__image\">\n <figcaption class=\"timeline-gallery__description-text\" [innerHTML]=\"item.title\"></figcaption>\n </a>\n </figure>\n </li>\n </ul>\n </div>\n <div *ngIf=\"data.selected\" class=\"mr-modal mr-gallery-modal\">\n <div class=\"mr-modal__overlay\">\n <div class=\"mr-modal__window mr-gallery-modal__window\">\n <div class=\"mr-modal__header mr-gallery-modal__header\">\n <div class=\"mr-modal__close\">\n <a class=\"mr-modal__close-link\" (click)=\"onClose()\"><span class=\"n7-icon-close\"></span></a>\n </div>\n <div class=\"mr-modal__right\">\n <a class=\"mr-modal__arrow-link\" (click)=\"onChangeImg(true)\"><span class=\"n7-icon-angle-right\"></span></a>\n </div>\n <div class=\"mr-modal__left\">\n <a class=\"mr-modal__arrow-link\" (click)=\"onChangeImg(false)\"><span class=\"n7-icon-angle-left\"></span></a>\n </div>\n </div>\n <div class=\"mr-modal__content mr-gallery-modal__content\" (click)=\"onClose()\">\n <div class=\"mr-gallery__zoom-image-wrapper\">\n <img [src]=\"data.selected.fullSrc\" [alt]=\"data.selected.title\" class=\"mr-gallery__zoom-image\">\n <figcaption class=\"mr-gallery__zoom-figcaption\" [innerHTML]=\"data.selected.title\"></figcaption>\n </div>\n </div>\n </div>\n </div>\n </div>\n</div>","import { Component, OnInit, OnDestroy } from '@angular/core';\nimport { ActivatedRoute, Data, Router } from '@angular/router';\nimport {\n AbstractLayout,\n CommunicationService,\n LayoutsConfigurationService,\n ConfigurationService,\n MainStateService,\n} from '@net7/boilerplate-common';\nimport { MrLayoutStateService } from '../../services/layout-state.service';\nimport { MrResourceModalService } from '../../services/resource-modal.service';\nimport { MrItineraryLayoutConfig as config } from './itinerary-layout.config';\nimport {\n MrCollectionDS,\n MrGalleryDS,\n MrMetadataDS,\n} from '../../data-sources';\nimport {\n MrCollectionEH,\n MrGalleryEH\n} from '../../event-handlers';\nimport { MrLocaleService } from '../../services/locale.service';\n\nconst DATASOURCE_MAP = {\n collection: MrCollectionDS,\n metadata: MrMetadataDS,\n gallery: MrGalleryDS,\n};\n\nconst EVENTHANDLER_MAP = {\n collection: MrCollectionEH,\n gallery: MrGalleryEH,\n};\n\n@Component({\n selector: 'mr-itinerary-layout',\n templateUrl: './itinerary-layout.html',\n})\nexport class MrItineraryLayoutComponent extends AbstractLayout implements OnInit, OnDestroy {\n private routeData: Data;\n\n constructor(\n layoutsConfiguration: LayoutsConfigurationService,\n private activatedRoute: ActivatedRoute,\n private configuration: ConfigurationService,\n private communication: CommunicationService,\n private mainState: MainStateService,\n private route: ActivatedRoute,\n private router: Router,\n public layoutState: MrLayoutStateService,\n public modalService: MrResourceModalService,\n public localeService: MrLocaleService,\n ) {\n super(layoutsConfiguration.get('MrItineraryLayoutConfig') || config);\n }\n\n protected initPayload() {\n return {\n routeData: this.routeData,\n configuration: this.configuration,\n communication: this.communication,\n mainState: this.mainState,\n layoutState: this.layoutState,\n modalService: this.modalService,\n localeService: this.localeService,\n options: this.config.options || {},\n route: this.route,\n router: this.router\n };\n }\n\n ngOnInit() {\n this.activatedRoute.data.subscribe((routeData) => {\n this.layoutState.add('content');\n this.routeData = routeData;\n this.loadWidgets();\n this.onInit();\n });\n }\n\n ngOnDestroy() {\n this.onDestroy();\n }\n\n loadWidgets() {\n const { configId } = this.routeData;\n const { sections } = this.configuration.get(configId);\n if (sections) {\n sections.forEach(({ id, type, options }) => {\n const widgetOptions = options || {};\n widgetOptions.localeService = this.localeService;\n this.widgets.push({\n id,\n options: widgetOptions,\n dataSource: DATASOURCE_MAP[type],\n eventHandler: EVENTHANDLER_MAP[type]\n });\n });\n }\n }\n}\n","<div class=\"mr-static mr-layout\" \n *ngIf=\"lb.dataSource && lb.dataSource.pageConfig\"\n [ngClass]=\"{\n 'is-loading': ( layoutState.get$('content') | async ) == 'LOADING',\n 'is-error': ( layoutState.get$('content') | async ) == 'ERROR'\n }\">\n <!-- ITINERARY LAYOUT CONTENT -->\n <ng-container [ngSwitch]=\"layoutState.get$('content') | async\">\n <!-- loading -->\n <ng-container *ngSwitchCase=\"'LOADING'\">\n <div class=\"mr-layout__loader\">\n <n7-loader></n7-loader>\n </div>\n </ng-container>\n\n <!-- error -->\n <ng-container *ngSwitchCase=\"'ERROR'\">\n <div class=\"mr-layout__error\">\n <h2>{{ lb.dataSource.errorTitle }}</h2>\n <p>{{ lb.dataSource.errorDescription }}</p>\n </div>\n </ng-container>\n\n <!-- success -->\n <ng-container *ngSwitchCase=\"'SUCCESS'\">\n <div class=\"mr-static__top\">\n <h1 class=\"mr-static__title mr-generated-title-WP\">{{lb.dataSource.title}}</h1>\n <div class=\"mr-static__metadata\">\n <n7-metadata-viewer \n [data]=\"lb.widgets['mr-static-metadata'].ds.out$ | async\">\n </n7-metadata-viewer>\n </div>\n </div>\n\n <div class=\"mr-static__content mr-side-margin\">\n <!-- Page content html -->\n <div class=\"mr-wp-content\" [innerHTML]=\"lb.dataSource.content | keepHtml\"></div>\n \n <!-- Pass the list of blocks to render to the block template -->\n <div class=\"mr-static__related-resources\">\n <ng-container *ngTemplateOutlet=\"blocks; context: { $implicit: lb.dataSource.pageConfig.sections }\"></ng-container>\n </div>\n </div>\n </ng-container>\n\n </ng-container>\n</div>\n\n<ng-template #blocks let-list>\n <ng-container *ngFor=\"let section of list\">\n <section *ngIf=\"lb.widgets[section.id].ds.out$ | async\"\n class=\"{{ 'mr-resource__section mr-resource__' + section.type }}\">\n <ng-container [ngSwitch]=\"section.type\">\n \n <!-- METADATA VIEWER -->\n <ng-container *ngSwitchCase=\"'metadata'\">\n \n <div class=\"mr-content-block mr-content-block-metadata\">\n <h3 *ngIf=\"section.title\" class=\"mr-content-block__title\">\n {{ section.title }}\n </h3>\n <div class=\"mr-content-block__content\">\n <mr-read-more [data]=\"section.readmore\">\n <n7-metadata-viewer [data]=\"lb.widgets[section.id].ds.out$ | async\"\n [emit]=\"lb.widgets[section.id].emit\">\n </n7-metadata-viewer>\n </mr-read-more>\n </div>\n </div>\n\n </ng-container>\n \n <!-- COLLECTION -->\n <ng-container *ngSwitchCase=\"'collection'\">\n <ng-container *ngIf=\"lb.widgets[section.id].ds.out$ | async as collection$\">\n \n <div *ngIf=\"collection$.items?.length > 0\" class=\"mr-content-block mr-content-block-collection\">\n <h3 *ngIf=\"section.title\" class=\"mr-content-block__title\">\n {{ section.title }}\n </h3>\n <div class=\"mr-content-block__content {{ section.grid ? 'n7-grid-' + section.grid : '' }}\">\n <n7-item-preview *ngFor=\"let item of collection$?.items\"\n [data]=\"item\" [emit]=\"lb.widgets[section.id].emit\">\n </n7-item-preview>\n </div>\n </div>\n\n </ng-container>\n </ng-container>\n \n <!-- GALLERY -->\n <ng-container *ngSwitchCase=\"'gallery'\">\n <div class=\"mr-content-block mr-content-block-gallery\">\n <h3 *ngIf=\"section.title\" class=\"mr-content-block__title\">\n {{ section.title }}\n </h3>\n <div class=\"mr-content-block__content\">\n <mr-gallery [grid]=\"section.grid\" [data]=\"lb.widgets[section.id].ds.out$ | async\" [emit]=\"lb.widgets[section.id].emit\"> \n </mr-gallery>\n </div>\n </div>\n </ng-container>\n\n </ng-container>\n </section>\n </ng-container>\n</ng-template>\n","import { Data, Router } from '@angular/router';\nimport { LayoutDataSource, _t } from '@net7/core';\nimport { Anchor, ItemPreviewData } from '@net7/components';\nimport * as L from 'leaflet';\nimport { first } from 'rxjs/operators';\nimport { Subject } from 'rxjs';\nimport { ConfigurationService, CommunicationService, MainStateService } from '@net7/boilerplate-common';\nimport { Location } from '@angular/common';\nimport { MrLayoutStateService } from '../../services/layout-state.service';\nimport 'leaflet.markercluster';\nimport { CollectionItem, GetResourceResponse } from './map-layout.types';\nimport { MrLocaleService } from '../../services/locale.service';\n\nexport class MrMapLayoutDS extends LayoutDataSource {\n private configuration: ConfigurationService;\n\n private communication: CommunicationService;\n\n private mainState: MainStateService;\n\n private layoutState: MrLayoutStateService;\n\n private localeService: MrLocaleService;\n\n private location: Location;\n\n private routerData: Data;\n\n private pageConfig;\n\n public loading = {\n resourceDetails: true,\n timeline: true,\n };\n\n public eventHeader: string;\n\n public currentId: string;\n\n public eventDescription = '';\n\n public route;\n\n public router: Router;\n\n public mapListener$: Subject<L.Map> = new Subject();\n\n public bibliographyData: {\n header: { title: string };\n items: {\n payload?: {\n action: string;\n id: number;\n type: string;\n };\n text?: string;\n }[];\n };\n\n public collectionWorksData: {\n header: { title: string };\n items: ItemPreviewData[];\n };\n\n public collectionWitnessData: {\n header: { title: string };\n items: ItemPreviewData[];\n };\n\n public collectionGalleryData;\n\n public eventTitle: string;\n\n onInit(payload) {\n this.configuration = payload.configuration;\n this.communication = payload.communication;\n this.localeService = payload.localeService;\n this.location = payload.location;\n this.route = payload.route;\n this.router = payload.router;\n\n this.routerData = payload.routerData;\n this.pageConfig = this.configuration.get(this.routerData.configId) || {};\n // overwrite leaflet options with configuration.libOptions\n this.one('mr-map').updateOptions({ libOptions: this.pageConfig.libOptions });\n\n // update the map\n const { locale } = this.routerData;\n this.communication.request$('map', {\n method: 'GET',\n urlParams: locale ? `?locale=${locale}` : '',\n onError: (e) => console.error(e)\n }).subscribe(({ dataSet }) => {\n if (dataSet) { this.one('mr-map').update(dataSet); }\n });\n this.getWidgetDataSource('mr-map').mapLoaded$\n .pipe(first())\n .subscribe(({ map, markers }) => {\n this.mapListener$.next({ map, markers });\n });\n }\n\n loadDefaults(navigate?: boolean) {\n this.eventDescription = _t(this.pageConfig.defaultText);\n this.eventHeader = '';\n this.bibliographyData = undefined;\n this.collectionWitnessData = undefined;\n this.collectionWorksData = undefined;\n this.collectionGalleryData = undefined;\n if (navigate) {\n const href = this.localeService.getLinkByRouteId('map');\n this.location.go(href);\n }\n this.one('mr-year-header').update({\n title: { main: { text: _t(this.pageConfig.title) } },\n });\n }\n\n updatePageDetails(id) {\n const { locale } = this.routerData;\n this.communication.request$('resource', {\n onError: (e) => console.error(e),\n method: 'POST',\n params: {\n id, type: 'views/places'\n },\n urlParams: locale ? `?locale=${locale}` : '',\n }).subscribe((res: GetResourceResponse) => {\n if (!res || res == null) return;\n const {\n /* eslint-disable */\n 'collection-bibliography': bibData,\n 'collection-places': placesData,\n 'collection-witnesses': witnessData,\n 'collection-works': worksData,\n gallery,\n header,\n /* eslint-enable */\n } = res.sections;\n if (placesData) {\n // this.hasMap = true;\n this.one('mr-map').update(placesData);\n } else {\n // this.hasMap = false;\n }\n if (bibData) {\n this.bibliographyData = bibData;\n } else {\n this.bibliographyData = undefined;\n }\n if (witnessData) {\n this.collectionWitnessData = {\n items: witnessData.items.map((witness: {\n id: string;\n link: string;\n title: string;\n type: string;\n routeId?: string;\n slug?: string;\n }): ItemPreviewData => {\n let anchor: Anchor;\n if (witness.routeId) {\n const href = this.localeService\n .getLinkByRouteId(witness.routeId, witness.id, witness.slug);\n anchor = { href };\n } else if (witness.link) {\n anchor = { href: witness.link };\n }\n return {\n anchor,\n title: witness.title,\n };\n }),\n header: witnessData.header\n };\n } else {\n this.collectionWitnessData = undefined;\n }\n if (worksData?.items) {\n this.collectionWorksData = {\n header: worksData.header,\n items: worksData.items.map((item: CollectionItem) => {\n let anchor: Anchor;\n if (item.routeId) {\n const href = this.localeService\n .getLinkByRouteId(item.routeId, item.id, item.slug);\n anchor = { href };\n } else if (item.link) {\n anchor = { href: item.link };\n }\n return {\n anchor,\n image: item.image,\n title: item.title,\n text: item.text,\n };\n })\n };\n } else {\n this.collectionWorksData = undefined;\n }\n if (gallery) {\n this.collectionGalleryData = gallery;\n } else {\n this.collectionGalleryData = undefined;\n }\n if (header) {\n this.eventDescription = header.content;\n this.eventHeader = res.title;\n this.one('mr-year-header').update({\n title: { main: { text: res.title } },\n actions: {\n buttons: [{\n text: '',\n icon: 'n7-icon-close',\n anchor: {\n payload: 'closebutton'\n }\n }]\n }\n });\n }\n this.loading.resourceDetails = false;\n });\n }\n}\n","import { Location } from '@angular/common';\nimport { ActivatedRoute, Router } from '@angular/router';\nimport { EventHandler } from '@net7/core';\nimport { MrLocaleService } from '../../services/locale.service';\nimport { MrMapLayoutDS } from './map-layout.ds';\n\nexport class MrMapLayoutEH extends EventHandler {\n dataSource: MrMapLayoutDS;\n\n private route: ActivatedRoute;\n\n private router: Router;\n\n private localeService: MrLocaleService;\n\n private location: Location;\n\n public listen() {\n this.innerEvents$.subscribe(({ type, payload }) => {\n switch (type) {\n case 'mr-map-layout.init':\n this.dataSource.onInit(payload);\n this.route = payload.route;\n this.router = payload.router;\n this.localeService = payload.localeService;\n this.location = payload.location;\n this.listenRoute();\n // scroll top\n window.scrollTo(0, 0);\n\n // listen for clicks on the map markers\n this.dataSource.mapListener$\n .subscribe(({ markers }) => {\n markers.on('click', ({ layer: marker }) => {\n if (!marker.id) return;\n const isSelected = marker.getIcon().options.className.includes('selected');\n if (isSelected) {\n // navigate to the clicked resource / marker\n const href = this.localeService.getLinkByRouteId('mapItem', marker.id, marker.slug);\n this.location.go(href);\n this.dataSource.updatePageDetails(marker.id);\n } else {\n const href = this.localeService.getLinkByRouteId('map');\n this.location.go(href);\n this.dataSource.loadDefaults();\n }\n });\n });\n break;\n case 'mr-timeline-layout.destroy':\n break;\n default:\n console.warn('unhandled inner event of type', type);\n break;\n }\n });\n this.outerEvents$.subscribe(({ type }) => {\n switch (type) {\n case 'mr-year-header.closeevent':\n this.dataSource.loadDefaults(true);\n\n // emit signal\n this.emitOuter('routechanged', null);\n break;\n default:\n break;\n }\n });\n }\n\n private listenRoute() {\n this.route.paramMap.subscribe((params) => {\n const paramId = params.get('id');\n if (paramId) {\n this.dataSource.currentId = paramId;\n this.dataSource.updatePageDetails(paramId);\n\n // emit signal\n this.emitOuter('routechanged', paramId);\n } else {\n this.dataSource.loadDefaults(true);\n }\n });\n }\n}\n","import { MrMapLayoutDS } from './map-layout.ds';\nimport { MrMapLayoutEH } from './map-layout.eh';\nimport * as DS from '../../data-sources';\nimport * as EH from '../../event-handlers';\n\nexport const MrMapLayoutConfig = {\n layoutId: 'mr-map-layout',\n widgets: [\n { id: 'mr-map' },\n { id: 'mr-year-header' }\n ],\n layoutDS: MrMapLayoutDS,\n layoutEH: MrMapLayoutEH,\n widgetsDataSources: DS,\n widgetsEventHandlers: EH,\n options: {},\n};\n","import { Component, OnInit, OnDestroy } from '@angular/core';\nimport { ActivatedRoute, Data, Router } from '@angular/router';\nimport { Location } from '@angular/common';\nimport {\n AbstractLayout,\n CommunicationService,\n LayoutsConfigurationService,\n ConfigurationService,\n MainStateService\n} from '@net7/boilerplate-common';\nimport { first } from 'rxjs/operators';\nimport { MrLayoutStateService } from '../../services/layout-state.service';\nimport { MrMapLayoutConfig as config } from './map-layout.config';\nimport { MrLocaleService } from '../../services/locale.service';\n\n@Component({\n selector: 'mr-map-layout',\n templateUrl: './map-layout.html',\n})\nexport class MrMapLayoutComponent extends AbstractLayout implements OnInit, OnDestroy {\n private routerData: Data;\n\n constructor(\n layoutsConfiguration: LayoutsConfigurationService,\n private route: ActivatedRoute,\n private router: Router,\n private location: Location,\n private configuration: ConfigurationService,\n private communication: CommunicationService,\n private mainState: MainStateService,\n public layoutState: MrLayoutStateService,\n public localeService: MrLocaleService,\n ) {\n super(layoutsConfiguration.get('MrMapLayoutConfig') || config);\n }\n\n protected initPayload() {\n return {\n routerData: this.routerData,\n mainState: this.mainState,\n configuration: this.configuration,\n communication: this.communication,\n layoutState: this.layoutState,\n route: this.route,\n router: this.router,\n location: this.location,\n localeService: this.localeService,\n options: this.config.options || {}\n };\n }\n\n ngOnInit() {\n this.route.data.pipe(\n first()\n ).subscribe((routerData) => {\n this.routerData = routerData;\n this.layoutState.add('content');\n this.onInit();\n });\n }\n\n ngOnDestroy() {\n this.onDestroy();\n }\n}\n","<div class=\"mr-map-layout mr-layout\"\n *ngIf=\"lb.dataSource\">\n <div class=\"mr-map-layout__map\">\n <div class=\"mr-map-layout__map-loading\"\n *ngIf=\"lb.dataSource.loading.timeline\">\n </div>\n <n7-map [data]=\"lb.widgets['mr-map'].ds.out$ | async\"></n7-map>\n <!-- <n7-timeline [data]=\"lb.widgets['mr-timeline'].ds.out$ | async\"\n *ngIf=\"!lb.dataSource.loading.timeline\">\n </n7-timeline> -->\n </div>\n\n <div class=\"mr-map-layout__page mr-side-margin\">\n <div class=\"mr-map-layout__date\">\n <n7-inner-title [data]=\"lb.widgets['mr-year-header'].ds.out$ | async\"\n [emit]=\"lb.widgets['mr-year-header'].emit\">\n </n7-inner-title>\n </div>\n <!--\n <h1 class=\"mr-map-layout__title\"\n *ngIf=\"!lb.dataSource.loading.resourceDetails\">\n {{lb.dataSource.eventHeader}}\n </h1>\n -->\n <div class=\"mr-map-layout__content\">\n <!-- DESCRIZIONE -->\n <div class=\"mr-content-block mr-content-block-description\" *ngIf=\"lb.dataSource.eventDescription\">\n <p [innerHTML]=\"lb.dataSource.eventDescription\">\n <p>\n </div>\n <ng-container *ngIf=\"!lb.dataSource.loading.resourceDetails\">\n\n <!-- GALLERIA -->\n <div class=\"mr-content-block n7-grid-6\">\n <ng-container *ngFor=\"let image of lb.dataSource.collectionGalleryData\">\n <a [href]=\"image.image\" class=\"mr-gallery__image\">\n <img [src]=\"image.thumbnail\" alt=\"image.title\">\n </a>\n </ng-container>\n </div>\n\n <!-- BIBLIOGRAFIA -->\n <ng-container *ngIf=\"lb.dataSource.bibliographyData as biblio\">\n <ng-container *ngIf=\"biblio.items && biblio.items.length > 0\">\n <div class=\"mr-content-block mr-content-block-collection\">\n <h3 class=\"mr-content-block__title\">{{ biblio.header.title }}</h3>\n <div class=\"mr-content-block__content n7-grid-1\">\n <ng-container *ngFor=\"let item of biblio.items\">\n <div class=\"mr-map-layout__collection-content\">\n <n7-item-preview [data]=\"item\"></n7-item-preview>\n </div>\n </ng-container>\n </div>\n </div>\n </ng-container>\n </ng-container>\n\n <!-- TESTIMONI -->\n <ng-container *ngIf=\"lb.dataSource.collectionWitnessData as wit\">\n <ng-container *ngIf=\"wit.items && wit.items.length > 0\">\n <div class=\"mr-content-block-collection mr-content-block\">\n <h3 class=\"mr-content-block__title\">{{ wit.header.title }}</h3>\n <div class=\"mr-content-block__content n7-grid-3\">\n <n7-item-preview *ngFor=\"let item of wit.items\"\n [data]=\"item\">\n </n7-item-preview>\n </div>\n </div>\n </ng-container>\n </ng-container>\n\n <!-- OPERE -->\n <ng-container *ngIf=\"lb.dataSource.collectionWorksData as works\">\n <ng-container *ngIf=\"works.items && works.items.length > 0\">\n <div class=\"mr-content-block-collection mr-content-block\">\n <h3 class=\"mr-content-block__title\">{{ works.header.title }}</h3>\n <div class=\"mr-content-block__content n7-grid-3\">\n <n7-item-preview *ngFor=\"let item of works.items\"\n [data]=\"item\">\n </n7-item-preview>\n </div>\n </div>\n </ng-container>\n </ng-container>\n\n </ng-container>\n </div>\n </div>\n</div>\n","import { LayoutDataSource } from '@net7/core';\nimport { Network } from 'vis-network';\nimport { Observable, Subject } from 'rxjs';\nimport {\n ConfigurationService,\n CommunicationService,\n/* helpers */\n} from '@net7/boilerplate-common';\nimport { Data, Router } from '@angular/router';\nimport { Location } from '@angular/common';\nimport {\n NetworkData\n} from '@net7/components';\nimport 'leaflet.markercluster';\n// import { GetResourceResponse } from './network-layouts.types';\nimport { MrLocaleService } from '../../services/locale.service';\n// import { NETWORK_MOCK } from './network-layout-mock';\n\nexport class MrNetworkLayoutDS extends LayoutDataSource {\n private configuration: ConfigurationService;\n\n private communication: CommunicationService;\n\n private router: Router;\n\n private configId: string;\n\n private pageConfig;\n\n private localeService: MrLocaleService;\n\n private location: Location;\n\n public loading = {\n network: false,\n };\n\n public networkData: NetworkData;\n\n public legend: Array<{key: string, label: string, color: string}> = [];\n\n public showLegend: boolean = true;\n\n public route;\n\n public networkListener$: Subject<Network> = new Subject();\n\n private routeData: Data;\n\n public toggleLegend() {\n this.showLegend = !this.showLegend;\n }\n\n onInit(payload: any) {\n this.configuration = payload.configuration;\n this.communication = payload.communication;\n this.route = payload.route;\n this.router = payload.router;\n this.localeService = payload.localeService;\n this.location = payload.location;\n this.configId = payload.configId;\n this.routeData = payload.routeData;\n this.pageConfig = this.configuration.get(this.configId);\n\n // update the network\n /* this.loading.network = true;\n this.communication\n .request$('network', {\n method: 'GET',\n urlParams: locale ? `$?locale=${locale}` : '',\n onError: (e) => console.error(e),\n })\n .subscribe((d) => {\n this.networkData = d;\n this.loading.network = false;\n this.one('mr-network').updateOptions({\n libOptions: this.pageConfig.libOptions,\n });\n this.one('mr-network').update(d);\n this.loading.network = false;\n this.initializeNetwork();\n }); */\n }\n\n pageRequest$(id, onError: (err: any) => void): Observable<any> {\n const { locale } = this.routeData;\n this.loading.network = true;\n return this.communication.request$('network', {\n onError,\n method: 'GET',\n urlParams: locale ? `${id}?locale=${locale}` : id\n });\n }\n\n handleResponse(response) {\n this.networkData = response;\n this.loading.network = false;\n this.one('mr-network').updateOptions({\n libOptions: this.pageConfig.libOptions,\n });\n this.one('mr-network').update(response);\n this.loading.network = false;\n this.initializeNetwork();\n }\n\n public initializeNetwork() {\n setTimeout(() => {\n const container = document.getElementById('demo-network');\n if (!container) {\n console.error('Container non trovato');\n return;\n }\n try {\n const { nodes } = this.networkData;\n const { edges } = this.networkData;\n const networkGroups = this.networkData?.groups || {};\n const options = this.pageConfig.libOptions;\n const mergedGroups = {\n ...networkGroups,\n ...(options?.groups || {})\n };\n\n // legenda\n this.legend = [];\n Object.keys(mergedGroups).forEach((key) => {\n const group = mergedGroups[key];\n this.legend.push({\n key,\n label: group.label || key,\n color: group.color || '#cccccc'\n });\n });\n\n const libOptions = {\n ...options,\n groups: mergedGroups\n };\n\n const network = new Network(container, { nodes, edges }, libOptions);\n this.networkListener$.next(network);\n } catch (error) {\n console.error('Errore inizializzazione', error);\n }\n }, 100);\n }\n}\n","import { ActivatedRoute, ParamMap, Router } from '@angular/router';\nimport { EventHandler } from '@net7/core';\nimport { Network } from 'vis-network';\nimport { Location } from '@angular/common';\nimport { Subject } from 'rxjs';\nimport {\n takeUntil, switchMap, map, tap\n} from 'rxjs/operators';\nimport { MrResourceModalService } from '../../services/resource-modal.service';\nimport { MrLocaleService } from '../../services/locale.service';\nimport linksHelper from '../../helpers/links-helper';\nimport { MrLayoutStateService, LayoutState } from '../../services/layout-state.service';\n\nexport class MrNetworkLayoutEH extends EventHandler {\n private modalService: MrResourceModalService;\n\n private route: ActivatedRoute;\n\n private router: Router;\n\n private localeService: MrLocaleService;\n\n private location: Location;\n\n private destroy$: Subject<void> = new Subject();\n\n private layoutState: MrLayoutStateService;\n\n public listen() {\n this.innerEvents$.subscribe(({ type, payload }) => {\n switch (type) {\n case 'mr-network-layout.init':\n this.dataSource.onInit(payload);\n this.modalService = payload.modalService;\n this.route = payload.route;\n this.router = payload.router;\n this.localeService = payload.localeService;\n this.location = payload.location;\n this.layoutState = payload.layoutState;\n this.listenRoute();\n // scroll top\n window.scrollTo(0, 0);\n\n this.dataSource.networkListener$.subscribe((network: Network) => {\n network.on('click', (props) => {\n if (props.nodes && props.nodes.length > 0) {\n const nodeId = props.nodes[0];\n const node = this.dataSource.networkData.nodes.find((n) => n.id === nodeId);\n\n // gestione payload\n if (node?.payload) {\n let anchor = null;\n\n // Navigazione interna\n if (node?.payload?.link?.routeId) {\n const routeLink = this.localeService.getLinkByRouteId(\n node.payload.link.routeId,\n node.payload.link.id,\n node.payload.link.slug\n );\n anchor = {\n href: routeLink,\n queryParams: node.payload.link.params || null,\n };\n // link semplice\n } else if (node?.payload?.link && typeof node?.payload?.link === 'string') {\n anchor = {\n href: linksHelper.getRouterLink(node.payload.link),\n queryParams: linksHelper.getQueryParams(node.payload.link),\n };\n // link complesso\n } else if (node?.payload?.link && typeof node?.payload?.link === 'object') {\n let href = '';\n if (node.payload.link.absolute) {\n href = `${node.payload.link.absolute}`;\n } else if (node.payload.link.relative) {\n href = node.payload.link.relative;\n }\n\n if (href && node.payload.link.params) {\n href = linksHelper.joinQueryParams(href, [node.payload.link.params]);\n }\n\n if (href && node.payload.link.query_string) {\n href = linksHelper.joinQueryParams(href, [document.location.search]);\n }\n\n anchor = {\n href,\n queryParams: null,\n };\n // altro\n } else if (node.payload.payload) {\n anchor = {\n payload: {\n ...node.payload.payload\n }\n };\n }\n\n if (anchor) {\n if (anchor.href) {\n window.open(anchor.href, '_blank');\n } else if (anchor.payload) {\n this.itemPreviewEmit('click', anchor.payload);\n }\n }\n }\n }\n });\n });\n break;\n case 'mr-network-layout.destroy':\n break;\n default:\n console.warn('unhandled inner event of type', type);\n break;\n }\n });\n }\n\n public itemPreviewEmit = (type, payload) => {\n if (type === 'click' && payload?.action === 'resource-modal') {\n const { id, type: resourceType } = payload;\n this.modalService.open(id, resourceType);\n }\n };\n\n private listenRoute() {\n this.route.paramMap.pipe(\n takeUntil(this.destroy$),\n tap(() => {\n this.layoutState.set('content', LayoutState.LOADING);\n }),\n map((params: ParamMap) => params.get('id')),\n switchMap((id) => this.dataSource.pageRequest$(id, (err) => {\n if (err.status === 404) {\n // getting not found path\n const { config } = this.router;\n const route404 = config.find(({ data }) => data?.id === 'page-404');\n const path404 = route404?.path || 'page-404';\n this.router.navigate([path404]);\n }\n console.warn(`Error loading resource layout for ${id}`, err.message);\n this.layoutState.set('content', LayoutState.ERROR);\n }))\n ).subscribe((response) => {\n this.layoutState.set('content', LayoutState.SUCCESS);\n this.dataSource.handleResponse(response);\n // scroll top\n window.scrollTo(0, 0);\n });\n }\n}\n","import { MrNetworkLayoutDS } from './network-layout.ds';\nimport { MrNetworkLayoutEH } from './network-layout.eh';\nimport * as DS from '../../data-sources';\nimport * as EH from '../../event-handlers';\n\nexport const MrNetworkLayoutConfig = {\n layoutId: 'mr-network-layout',\n widgets: [],\n layoutDS: MrNetworkLayoutDS,\n layoutEH: MrNetworkLayoutEH,\n widgetsDataSources: DS,\n widgetsEventHandlers: EH,\n options: {\n },\n};\n","import { Component, OnInit, OnDestroy } from '@angular/core';\nimport { ActivatedRoute, Data, Router } from '@angular/router';\nimport {\n AbstractLayout,\n CommunicationService,\n LayoutsConfigurationService,\n ConfigurationService,\n MainStateService\n} from '@net7/boilerplate-common';\nimport { Location } from '@angular/common';\nimport { MrResourceModalService } from '../../services/resource-modal.service';\nimport { MrLayoutStateService } from '../../services/layout-state.service';\nimport { MrNetworkLayoutConfig as config } from './network-layout.config';\nimport { MrLocaleService } from '../../services/locale.service';\n\n@Component({\n selector: 'mr-network-layout',\n templateUrl: './network-layout.html',\n styleUrls: ['../../styles/muruca/layouts/_network.scss']\n})\nexport class MrNetworkLayoutComponent extends AbstractLayout implements OnInit, OnDestroy {\n private configId: string;\n\n private routeData: Data;\n\n constructor(\n layoutsConfiguration: LayoutsConfigurationService,\n private route: ActivatedRoute,\n private router: Router,\n private configuration: ConfigurationService,\n private communication: CommunicationService,\n private mainState: MainStateService,\n public layoutState: MrLayoutStateService,\n public modalService: MrResourceModalService,\n public localeService: MrLocaleService,\n public location: Location,\n ) {\n super(layoutsConfiguration.get('MrNetworkLayoutConfig') || config);\n }\n\n protected initPayload() {\n return {\n configId: this.configId,\n mainState: this.mainState,\n configuration: this.configuration,\n communication: this.communication,\n layoutState: this.layoutState,\n modalService: this.modalService,\n route: this.route,\n router: this.router,\n localeService: this.localeService,\n location: this.location,\n options: this.config.options || {},\n routeData: this.routeData,\n };\n }\n\n ngOnInit() {\n this.route.data.subscribe((data) => {\n this.layoutState.add('content');\n this.configId = data.configId;\n this.routeData = data;\n this.onInit();\n });\n }\n\n ngOnDestroy() {\n this.onDestroy();\n }\n}\n","<div class=\"network-layout-container\" *ngIf=\"lb.dataSource\">\n <div class=\"network-header\">\n <h2>{{ lb.dataSource.pageConfig?.title}}</h2>\n <p>{{ lb.dataSource.pageConfig?.mapHeader }}</p>\n </div>\n \n <div class=\"network-legend-section\" *ngIf=\"lb.dataSource.legend?.length\">\n <div class=\"legend-toggle\">\n <button \n class=\"legend-toggle-btn\" \n (click)=\"lb.dataSource.toggleLegend()\"\n [class.active]=\"lb.dataSource.showLegend\">\n <span class=\"toggle-icon\">{{ lb.dataSource.showLegend ? '-' : '+' }}</span>\n Legenda\n </button>\n </div>\n \n <div class=\"network-legend\" *ngIf=\"lb.dataSource.showLegend\">\n <div class=\"legend-item\" *ngFor=\"let item of lb.dataSource.legend\">\n <span class=\"legend-color\" [style.background-color]=\"item.color\"></span>\n <span>{{ item.label }}</span>\n </div>\n </div>\n </div>\n \n <div id=\"demo-network\" class=\"network-visualization\"></div>\n</div>","import { Data } from '@angular/router';\nimport { LayoutDataSource, _t } from '@net7/core';\nimport { Observable } from 'rxjs';\nimport { ConfigurationService, CommunicationService, MainStateService } from '@net7/boilerplate-common';\n\nexport class MrPostsLayoutDS extends LayoutDataSource {\n protected configuration: ConfigurationService;\n\n protected communication: CommunicationService;\n\n protected mainState: MainStateService;\n\n protected routerData: Data;\n\n public pageConfig;\n\n onInit(payload) {\n this.configuration = payload.configuration;\n this.mainState = payload.mainState;\n this.routerData = payload.routerData;\n this.communication = payload.communication;\n this.pageConfig = this.configuration.get(this.routerData.configId);\n\n // config\n this.all().updateOptions({ config: this.pageConfig });\n\n // manual updates\n this.one('mr-search-page-title').update({});\n\n // update head title\n this.updateHeadTitle();\n\n // update translations\n this.addTranslations(this.pageConfig);\n }\n\n updateSearchTags(params) {\n if (!this.pageConfig.filters) {\n return;\n }\n\n const { labels } = this.pageConfig.filters;\n const tags = [];\n Object.keys(labels)\n .filter((key) => !!params[key])\n .forEach((key) => {\n tags[key] = params[key];\n });\n\n this.one('mr-advanced-search-tags').updateOptions({ labels });\n this.one('mr-advanced-search-tags').update(tags);\n }\n\n request$(params, onError): Observable<any> {\n const { locale } = this.routerData;\n const { searchId } = this.pageConfig;\n const searchParams = {\n ...params\n };\n Object.keys(searchParams)\n .filter((key) => ['page', 'limit', 'sort'].includes(key))\n .forEach((key) => {\n searchParams.results = searchParams.results || {};\n searchParams.results[key] = searchParams[key];\n delete searchParams[key];\n });\n // normalize results filters\n const resultsParams = {} as {\n limit: number;\n offset: number;\n sort: string;\n };\n const results = searchParams.results || {};\n const page = results.page ? +results.page : 1;\n resultsParams.limit = results.limit ? +results.limit : 12;\n resultsParams.offset = page === 1 ? 0 : resultsParams.limit * (page - 1);\n resultsParams.sort = results.sort || 'sort_ASC';\n return this.communication.request$('posts', {\n method: 'POST',\n params: {\n ...searchParams,\n searchId,\n results: {\n ...resultsParams\n }\n },\n urlParams: locale ? `?locale=${locale}` : '',\n onError\n });\n }\n\n handleResponse(response) {\n this.some([\n 'mr-search-results-title',\n 'mr-search-results',\n ]).update(response);\n\n // pagination\n this.one('n7-smart-pagination').updateOptions({ mode: 'payload' });\n this.one('n7-smart-pagination').update(this.getPaginationParams(response));\n }\n\n protected updateHeadTitle() {\n const appName = this.configuration.get('name');\n const pageTitle = this.pageConfig.title;\n this.mainState.update('headTitle', [appName, _t(pageTitle)].join(' > '));\n }\n\n private addTranslations(config) {\n if (config?.sort?.label) {\n config.sort.label = _t(config.sort.label);\n config.sort.options = config.sort.options.map((option) => ({\n ...option,\n label: _t(option.label)\n }));\n }\n ['text', 'button'].forEach((key) => {\n if (config.fallback) {\n config.fallback[key] = _t(config.fallback[key]);\n }\n if (config.ko) {\n config.ko[key] = _t(config.ko[key]);\n }\n });\n\n // filters\n const { filters } = this.pageConfig;\n if (filters) {\n filters.title = _t(filters.title);\n Object.keys(filters.labels).forEach((key) => {\n filters.labels[key] = _t(filters.labels[key]);\n });\n }\n }\n\n protected getPaginationParams(response) {\n const { total_count: totalCount, offset, limit } = response;\n const { pagination: paginationConfig } = this.pageConfig;\n\n return {\n totalPages: Math.ceil(totalCount / limit),\n currentPage: (offset + limit) / limit,\n pageLimit: paginationConfig.limit,\n sizes: {\n label: paginationConfig.selectLabel ? _t(paginationConfig.selectLabel) : null,\n list: paginationConfig.options,\n active: limit,\n },\n };\n }\n}\n","import { ActivatedRoute, Router } from '@angular/router';\nimport { EventHandler } from '@net7/core';\nimport { Subject } from 'rxjs';\nimport { switchMap, takeUntil, tap } from 'rxjs/operators';\nimport { isEmpty } from 'lodash';\nimport { helpers } from '@net7/boilerplate-common';\nimport { MrPostsLayoutDS } from './posts-layout.ds';\nimport { MrLayoutStateService, LayoutState } from '../../services/layout-state.service';\n\nexport class MrPostsLayoutEH extends EventHandler {\n protected activatedRoute: ActivatedRoute;\n\n protected router: Router;\n\n private layoutState: MrLayoutStateService;\n\n protected destroy$: Subject<void> = new Subject();\n\n protected scrollRefElement: HTMLElement;\n\n dataSource: MrPostsLayoutDS;\n\n public listen() {\n this.innerEvents$.subscribe(({ type, payload }) => {\n switch (type) {\n case 'mr-posts-layout.init':\n this.activatedRoute = payload.activatedRoute;\n this.router = payload.router;\n this.layoutState = payload.layoutState;\n this.dataSource.onInit(payload);\n\n // listen route changes\n this.listenToRouterChanges();\n // scroll top\n window.scrollTo(0, 0);\n break;\n\n case 'mr-posts-layout.destroy':\n this.destroy$.next();\n break;\n\n default:\n console.warn('unhandled inner event of type', type);\n break;\n }\n });\n\n this.outerEvents$.subscribe(({ type, payload }) => {\n switch (type) {\n case 'n7-smart-pagination.click':\n this.updateRouter({ page: payload.page });\n break;\n\n case 'n7-smart-pagination.change':\n this.updateRouter({ limit: payload.value, page: 1 });\n break;\n\n case 'mr-search-results-title.change':\n this.updateRouter({ sort: payload.value, page: 1 });\n break;\n\n default:\n console.warn('unhandled inner event of type', type);\n break;\n }\n });\n }\n\n /** URL changes */\n protected listenToRouterChanges() {\n this.activatedRoute.queryParams.pipe(\n takeUntil(this.destroy$),\n tap(() => {\n this.layoutState.set('results', LayoutState.LOADING);\n }),\n switchMap((params) => {\n this.dataSource.updateSearchTags(params);\n return this.dataSource.request$(params, (error) => {\n console.warn('Posts search error', error);\n this.layoutState.set('results', LayoutState.ERROR);\n });\n })\n ).subscribe((response) => {\n this.dataSource.handleResponse(response);\n this.layoutState.set('results', isEmpty(response.results) ? LayoutState.EMPTY : LayoutState.SUCCESS);\n // scroll to ref element\n if (!this.scrollRefElement) {\n this.scrollRefElement = document.querySelector('.scroll-ref');\n } else if (!helpers.isElementInViewport(this.scrollRefElement)) {\n this.scrollRefElement.scrollIntoView();\n }\n });\n }\n\n protected updateRouter(queryParams) {\n this.router.navigate([], {\n queryParams,\n queryParamsHandling: 'merge'\n });\n }\n}\n","import { SmartPaginationDS, SmartPaginationEH } from '@net7/boilerplate-common';\nimport { MrPostsLayoutDS } from './posts-layout.ds';\nimport { MrPostsLayoutEH } from './posts-layout.eh';\nimport * as DS from '../../data-sources';\nimport * as EH from '../../event-handlers';\n\nexport const MrPostsLayoutConfig = {\n layoutId: 'mr-posts-layout',\n widgets: [\n {\n id: 'mr-search-page-title'\n }, {\n id: 'mr-search-results-title'\n }, {\n id: 'mr-search-results'\n }, {\n id: 'n7-smart-pagination',\n dataSource: SmartPaginationDS,\n eventHandler: SmartPaginationEH,\n }, {\n id: 'mr-advanced-search-tags'\n }\n ],\n layoutDS: MrPostsLayoutDS,\n layoutEH: MrPostsLayoutEH,\n widgetsDataSources: DS,\n widgetsEventHandlers: EH,\n layoutOptions: {}\n};\n","import { Component, OnInit, OnDestroy } from '@angular/core';\nimport { ActivatedRoute, Data, Router } from '@angular/router';\nimport {\n AbstractLayout,\n LayoutsConfigurationService,\n MainStateService,\n ConfigurationService,\n CommunicationService,\n} from '@net7/boilerplate-common';\nimport { MrPostsLayoutConfig as config } from './posts-layout.config';\nimport { MrLayoutStateService } from '../../services/layout-state.service';\n\n@Component({\n selector: 'mr-posts-layout',\n templateUrl: './posts-layout.html',\n})\nexport class MrPostsLayoutComponent extends AbstractLayout implements OnInit, OnDestroy {\n private routerData: Data;\n\n constructor(\n private router: Router,\n private activatedRoute: ActivatedRoute,\n private mainState: MainStateService,\n private configuration: ConfigurationService,\n private communication: CommunicationService,\n public layoutState: MrLayoutStateService,\n layoutsConfiguration: LayoutsConfigurationService,\n ) {\n super(layoutsConfiguration.get('MrPostsLayoutConfig') || config);\n }\n\n protected initPayload() {\n return {\n routerData: this.routerData,\n configuration: this.configuration,\n communication: this.communication,\n mainState: this.mainState,\n router: this.router,\n activatedRoute: this.activatedRoute,\n layoutState: this.layoutState,\n options: this.config.options || {},\n };\n }\n\n ngOnInit() {\n this.activatedRoute.data.subscribe((routerData) => {\n this.routerData = routerData;\n // add layout states\n this.layoutState.add(['results']);\n this.onInit();\n });\n }\n\n ngOnDestroy() {\n this.onDestroy();\n }\n}\n","<div class=\"mr-search mr-layout\"\n *ngIf=\"lb.dataSource\">\n <section class=\"mr-layout__maxwidth mr-side-margin\">\n\n <div class=\"mr-search__title\">\n <div class=\"scroll-ref\"> </div>\n <n7-inner-title\n [data]=\"lb.widgets['mr-search-page-title'].ds.out$ | async\"\n [emit]=\"lb.widgets['mr-search-page-title'].emit\">\n </n7-inner-title>\n </div>\n \n <div class=\"mr-search__results-content\">\n <div class=\"mr-search__results-wrapper\">\n <div class=\"mr-search__results-info\">\n <n7-inner-title\n [data]=\"lb.widgets['mr-search-results-title'].ds.out$ | async\"\n [emit]=\"lb.widgets['mr-search-results-title'].emit\">\n </n7-inner-title>\n </div>\n <div *ngIf=\"lb.dataSource.pageConfig['filters']\" class=\"mr-search__results-filters\">\n <span *ngIf=\"lb.dataSource.pageConfig['filters'].title\" \n class=\"mr-search__results-filters-title\">{{ lb.dataSource.pageConfig['filters'].title }}</span>\n <div class=\"mr-search__results-filters-wrapper\">\n <n7-tag *ngFor=\"let tag of (lb.widgets['mr-advanced-search-tags'].ds.out$ | async)\"\n [data]=\"tag\">\n </n7-tag>\n </div>\n </div>\n <main class=\"mr-search__results\">\n <!-- SEARCH RESULTS -->\n <ng-container [ngSwitch]=\"layoutState.get$('results') | async\">\n \n <!-- loading -->\n <ng-container *ngSwitchCase=\"'LOADING'\">\n <div class=\"mr-search__results-loading n7-grid-{{ lb.dataSource.pageConfig.grid || 3 }}\">\n <n7-content-placeholder *ngFor=\"let n of [0,1,2,3,4,5,6,7,8,9]\" [data]=\"{\n blocks: [\n { classes: 'search-result-placeholder-title' },\n { classes: 'search-result-placeholder-metadata' },\n { classes: 'search-result-placeholder-metadata' },\n { classes: 'search-result-placeholder-metadata' }\n ]\n }\"></n7-content-placeholder>\n </div>\n </ng-container>\n \n <!-- success: items > 0 -->\n <ng-container *ngSwitchCase=\"'SUCCESS'\">\n <div class=\"n7-grid-{{ lb.dataSource.pageConfig.grid || 3 }}\">\n <n7-item-preview *ngFor=\"let item of (lb.widgets['mr-search-results'].ds.out$ | async)\"\n [data]=\"item\">\n </n7-item-preview>\n </div>\n </ng-container>\n\n <!-- empty: items === 0 -->\n <ng-container *ngSwitchCase=\"'EMPTY'\">\n <div class=\"mr-search__results-fallback\">\n <p class=\"mr-search__results-fallback-string\">\n {{ lb.dataSource.pageConfig.fallback.text }}\n </p>\n <button class=\"n7-btn mr-search__results-fallback-button\"\n (click)=\"lb.eventHandler.emitInner('searchreset')\">\n {{ lb.dataSource.pageConfig.fallback.button }}\n </button>\n </div>\n </ng-container>\n\n <!-- error: request problem -->\n <ng-container *ngSwitchCase=\"'ERROR'\">\n <p class=\"mr-search__results-ko-string\">\n {{ lb.dataSource.pageConfig.ko.text }}\n </p>\n <button class=\"n7-btn mr-search__results-ko-button\"\n (click)=\"lb.eventHandler.emitInner('searchreset')\">\n {{ lb.dataSource.pageConfig.ko.button }}\n </button>\n </ng-container>\n \n </ng-container>\n </main> \n <n7-smart-pagination\n *ngIf=\"(layoutState.get$('results') | async) === 'SUCCESS'\"\n [data]=\"lb.widgets['n7-smart-pagination'].ds.out$ | async\"\n [emit]=\"lb.widgets['n7-smart-pagination'].emit\">\n </n7-smart-pagination>\n </div>\n </div>\n\n </section>\n</div>\n","import { Data } from '@angular/router';\nimport { LayoutDataSource, _t } from '@net7/core';\nimport { Observable } from 'rxjs';\nimport {\n ConfigurationService, CommunicationService, MainStateService, helpers\n} from '@net7/boilerplate-common';\nimport { MrLocaleService } from '../../services/locale.service';\nimport linksHelper from '../../helpers/links-helper';\n\nexport class MrResourceLayoutDS extends LayoutDataSource {\n private configuration: ConfigurationService;\n\n private communication: CommunicationService;\n\n private mainState: MainStateService;\n\n private localeService: MrLocaleService;\n\n private routerData: Data;\n\n private pageConfig: any;\n\n public tabConfig: any;\n\n public id: string;\n\n public tab: string;\n\n public slug: string;\n\n public title: string;\n\n public errorTitle = _t('global#layout_error_title');\n\n public errorDescription = _t('global#layout_error_description');\n\n public hasContextMenu: () => boolean;\n\n private tabsContent: any;\n\n onInit(payload) {\n this.configuration = payload.configuration;\n this.communication = payload.communication;\n this.mainState = payload.mainState;\n this.localeService = payload.localeService;\n this.routerData = payload.routerData;\n this.pageConfig = this.configuration.get(this.routerData.configId);\n\n // tabs config\n const tabs = this.configuration.get('tabs');\n const pageTabs = this.pageConfig.tabs;\n if (tabs && pageTabs) {\n this.tabConfig = tabs[pageTabs];\n }\n\n // add translations\n ['top', 'content'].forEach((type) => {\n this.pageConfig.sections[type] = this.pageConfig.sections[type].map((section) => ({\n ...section,\n title: _t(section.title)\n }));\n });\n }\n\n /** Request the configured widgets data */\n pageRequest$(id, onError: (err: any) => void): Observable<any> {\n const { locale } = this.routerData;\n const params = linksHelper.getQueryParams(document.location.search);\n const { top, content } = this.pageConfig.sections;\n const sections = top.concat(content);\n return this.communication.request$('resource', {\n onError,\n method: 'POST',\n params: {\n id,\n type: this.pageConfig.type,\n sections: sections.map((s) => s.id),\n },\n queryParams: params,\n urlParams: locale ? `?locale=${locale}` : '',\n });\n }\n\n /** Request the configured widgets data in PDF format */\n pdfRequest$(id): Observable<any> {\n const { locale } = this.routerData;\n const params = linksHelper.getQueryParams(document.location.search);\n let sections;\n if (this.tabsContent) {\n const { top } = this.pageConfig.sections;\n sections = top.map((s) => s.id).concat(this.tabsContent);\n } else {\n const { top, content } = this.pageConfig.sections;\n sections = top.concat(content).map((s) => s.id);\n }\n return this.communication.request$('getPdf', {\n onError: (e) => console.error('getPdf', e),\n method: 'POST',\n params: {\n id,\n type: this.pageConfig.type,\n sections\n },\n queryParams: params,\n urlParams: locale ? `?locale=${locale}` : '',\n httpOptions: {\n responseType: 'blob'\n }\n });\n }\n\n handleResponse(response) {\n this.initSections(response);\n this.setLocaleResourceConfig(response);\n this.updateHeadTitle(response);\n }\n\n /** Load all the configured widgets */\n private initSections(response) {\n const { top, content } = this.pageConfig.sections;\n const sections = top.concat(content);\n sections.forEach(({\n id, type, tools, options\n }) => {\n // update section datasource\n const widgetDataSource = this.getWidgetDataSource(id);\n if (!widgetDataSource) return;\n const responseSection = response.sections[id];\n // set id\n widgetDataSource.id = id;\n if (type === 'tabs') {\n this.tabConfig = this.tabConfig.map((tab: any) => ({\n id: tab.id,\n label: tab.label,\n hideTab: (responseSection && responseSection.includes(tab.id))\n }));\n }\n // check viewer tools\n if (type === 'viewer') {\n // update image viewer options\n this.one(id).updateOptions({ tools });\n }\n if (type === 'viewer-iiif') {\n // update image viewer iiif options\n const { libOptions } = options;\n this.hasContextMenu = () => !!libOptions['context-menu'];\n this.one(id).updateOptions({ libOptions });\n }\n\n if (type === 'text-viewer' || type === 'parallel-text-viewer') {\n let url;\n try {\n url = this.communication.getUrl('xmlSearch');\n } catch {\n url = '';\n }\n const searchApi = {\n url,\n 'resource-id': this.id\n };\n\n options.searchApi = searchApi;\n this.one(id).updateOptions(options);\n }\n // update data\n if (responseSection && !helpers.isEmpty(responseSection)) {\n this.one(id).update(responseSection);\n } else {\n // unload the component without data\n this.one(id).update(undefined);\n }\n\n // init viewer overlay details\n if (type === 'viewer') {\n const overlayDetailsId = `${id}-overlay-details`;\n const widgetOverlayDetailsDS = this.getWidgetDataSource(overlayDetailsId);\n if (!widgetOverlayDetailsDS) return;\n // set id\n widgetOverlayDetailsDS.id = overlayDetailsId;\n }\n // image viewer tools check\n if (type === 'viewer' && tools) {\n const toolsId = `${id}-tools`;\n // update image viewer tools datasource\n const widgetToolsDataSource = this.getWidgetDataSource(toolsId);\n if (!widgetToolsDataSource) return;\n // set id\n widgetToolsDataSource.id = toolsId;\n // update data\n if (responseSection && !helpers.isEmpty(responseSection)) {\n this.one(toolsId).update(responseSection);\n } else {\n // unload the component without data\n this.one(toolsId).update(undefined);\n }\n }\n });\n\n // update tabs\n if (this.tabConfig) {\n const tabSection = sections.find(({ type }) => type === 'tabs');\n if (tabSection?.options?.tabsContents) {\n this.tabsContent = tabSection.options.tabsContents;\n }\n this.one(tabSection.id).updateOptions({\n id: this.id,\n root: this.pageConfig.tabs,\n slug: this.slug,\n currentTab: this.tab,\n localeService: this.localeService\n });\n this.one(tabSection.id).update(this.tabConfig);\n }\n }\n\n // set resource locale config\n // used by language switcher\n private setLocaleResourceConfig(response) {\n if (response?.locale) {\n this.localeService.setResourceConfig(response.locale);\n }\n }\n\n private updateHeadTitle({ title: resourceTitle }) {\n this.title = resourceTitle;\n const appName = this.configuration.get('name');\n const pageTitle = this.pageConfig.title;\n this.mainState.update('headTitle', [appName, _t(pageTitle), resourceTitle].join(' > '));\n }\n}\n","import { EventHandler } from '@net7/core';\nimport { ActivatedRoute, ParamMap, Router } from '@angular/router';\nimport { Subject } from 'rxjs';\nimport {\n takeUntil, switchMap, map, tap\n} from 'rxjs/operators';\nimport { MrLayoutStateService, LayoutState } from '../../services/layout-state.service';\nimport { MrResourceModalService } from '../../services/resource-modal.service';\nimport { MrResourceLayoutDS } from './resource-layout.ds';\n// import mock from './resource-layout-mock-mirador';\n// import mock from './resource-layout-mock-cambridge';\n\nexport class MrResourceLayoutEH extends EventHandler {\n dataSource: MrResourceLayoutDS;\n\n private route: ActivatedRoute;\n\n private router: Router;\n\n private layoutState: MrLayoutStateService;\n\n private modalService: MrResourceModalService;\n\n private destroy$: Subject<void> = new Subject();\n\n public listen() {\n this.innerEvents$.subscribe(({ type, payload }) => {\n switch (type) {\n case 'mr-resource-layout.init': {\n this.route = payload.route;\n this.router = payload.router;\n this.modalService = payload.modalService;\n const { slug, id } = this.route.snapshot.params;\n const { url } = this.route.snapshot;\n this.dataSource.tab = url[url.length - 1].path;\n this.dataSource.slug = slug;\n this.dataSource.id = id;\n this.layoutState = payload.layoutState;\n this.dataSource.onInit(payload);\n this.listenRoute();\n // scroll top\n window.scrollTo(0, 0);\n\n // emit signal\n this.emitOuter('init');\n } break;\n case 'mr-resource-layout.destroy':\n this.destroy$.next();\n break;\n default:\n console.warn('unhandled inner event of type', type);\n break;\n }\n });\n\n this.outerEvents$.subscribe(({ type, payload }) => {\n if (type.indexOf('openresourcemodal') !== -1) {\n const { id, type: resourceType } = payload;\n this.modalService.open(id, resourceType);\n }\n if (type.indexOf('thumbclick') !== -1) {\n const [sourceId] = type.split('.');\n const targetId = sourceId.replace('-tools', '');\n this.emitOuter('thumbclick', {\n targetId,\n thumbindex: payload\n });\n }\n if (type.indexOf('pagechange') !== -1) {\n const [sourceId] = type.split('.');\n const targetId = `${sourceId}-tools`;\n this.emitOuter('pagechange', {\n targetId,\n eventData: payload\n });\n }\n if (type.indexOf('download-pdf') !== -1) {\n this.dataSource.pdfRequest$(this.dataSource.id).subscribe((pdf) => {\n const blobObj = pdf as Blob;\n const a = document.createElement('a');\n const objectURL = URL.createObjectURL(blobObj);\n a.href = objectURL;\n a.download = `${this.dataSource.title || this.dataSource.slug}`;\n a.click();\n URL.revokeObjectURL(objectURL);\n });\n }\n // image viewer overlay events\n if (type.includes('overlayclick')) {\n this.emitOuter('showoverlaydetails', payload);\n }\n if (type.includes('overlaypagechange')) {\n this.emitOuter('hideoverlaydetails', payload);\n }\n });\n }\n\n private listenRoute() {\n this.route.paramMap.pipe(\n takeUntil(this.destroy$),\n tap(() => {\n this.layoutState.set('content', LayoutState.LOADING);\n }),\n map((params: ParamMap) => params.get('id')),\n switchMap((id) => this.dataSource.pageRequest$(id, (err) => {\n if (err.status === 404) {\n // getting not found path\n const { config } = this.router;\n const route404 = config.find(({ data }) => data?.id === 'page-404');\n const path404 = route404?.path || 'page-404';\n this.router.navigate([path404]);\n }\n console.warn(`Error loading resource layout for ${id}`, err.message);\n this.dataSource.id = id;\n this.layoutState.set('content', LayoutState.ERROR);\n }))\n ).subscribe((response) => {\n this.layoutState.set('content', LayoutState.SUCCESS);\n this.dataSource.handleResponse(response);\n // this.dataSource.handleResponse(mock);\n // scroll top\n window.scrollTo(0, 0);\n });\n }\n}\n","import { MrResourceLayoutDS } from './resource-layout.ds';\nimport { MrResourceLayoutEH } from './resource-layout.eh';\nimport * as DS from '../../data-sources';\nimport * as EH from '../../event-handlers';\n\nexport const MrResourceLayoutConfig = {\n layoutId: 'mr-resource-layout',\n widgets: [\n { id: 'mr-read-more' },\n { id: 'mr-metadata-readmore' },\n { id: 'mr-metadata-dynamic' }\n ],\n layoutDS: MrResourceLayoutDS,\n layoutEH: MrResourceLayoutEH,\n widgetsDataSources: DS,\n widgetsEventHandlers: EH,\n options: {\n // TODO\n },\n};\n","import { EventHandler } from '@net7/core';\nimport { first } from 'rxjs/operators';\nimport { MrImageViewerDS } from '../data-sources/image-viewer.ds';\n\nexport class MrImageViewerEH extends EventHandler {\n layoutId: string;\n\n dataSource: MrImageViewerDS;\n\n public listen() {\n this.innerEvents$.subscribe(({ type, payload }) => {\n switch (type) {\n case `${this.dataSource.id}.click`:\n this.emitOuter('click', payload);\n break;\n case `${this.dataSource.id}.pagechange`:\n this.emitOuter('pagechange', payload);\n break;\n default:\n // console.warn('unhandled event of type', type);\n break;\n }\n });\n\n this.outerEvents$.subscribe(({ type, payload }) => {\n switch (type) {\n case 'mr-resource-layout.init':\n this.listenToViewer();\n break;\n case 'mr-resource-layout.thumbclick':\n if (payload.targetId === this.dataSource.id) {\n this.dataSource.changePage(payload.thumbindex);\n }\n break;\n case 'mr-resource-layout.overlaycloseclick':\n this.dataSource.overlayCloseClick();\n break;\n case 'mr-resource-layout.pagechange':\n // Silent\n break;\n default:\n // console.warn('unhandled event of type', type);\n break;\n }\n });\n }\n\n listenToViewer() {\n // loaded\n this.dataSource.viewerLoaded$.pipe(\n first()\n ).subscribe(() => {\n const { viewer } = this.dataSource;\n viewer.addHandler('page', (eventData) => {\n this.emitOuter('pagechange', eventData);\n });\n });\n\n this.dataSource.overlayEvents$.subscribe(({ type, payload }) => {\n this.emitOuter(`overlay${type}`, {\n targetId: this.dataSource.id,\n ...payload\n });\n });\n }\n}\n","import { EventHandler } from '@net7/core';\nimport { MrImageViewerToolsDS } from '../data-sources/image-viewer-tools.ds';\n\nexport class MrImageViewerToolsEH extends EventHandler {\n dataSource: MrImageViewerToolsDS;\n\n public listen() {\n this.innerEvents$.subscribe(({ type, payload }) => {\n switch (type) {\n case `${this.dataSource.id}.click`:\n if (payload.thumbindex !== undefined) {\n const index = payload.thumbindex;\n this.dataSource.handleThumbs(index);\n this.emitOuter('thumbclick', index);\n break;\n }\n if (payload === 'close-description') {\n this.dataSource.toggleDescription();\n break;\n }\n if (payload === 'toggle-description') {\n this.dataSource.toggleDescription();\n break;\n }\n if (payload === 'toggle-thumbs') {\n this.dataSource.toggleThumbs();\n break;\n }\n if (payload === 'next') {\n // let index = this.dataSource.retrieveIndex();\n // this.dataSource.handleThumbsNext(index);\n // let updatedIndex = this.dataSource.retrieveIndex();\n // this.emitOuter('thumbclick', updatedIndex);\n this.dataSource.scrollRight();\n break;\n }\n if (payload === 'prev') {\n // let index = this.dataSource.retrieveIndex();\n // this.dataSource.handleThumbsPrev(index);\n // let updatedIndex = this.dataSource.retrieveIndex();\n // this.emitOuter('thumbclick', updatedIndex);\n this.dataSource.scrollLeft();\n break;\n }\n break;\n default:\n // console.warn('unhandled event of type', type);\n break;\n }\n });\n\n this.outerEvents$.subscribe(({ type, payload }) => {\n // console.log(payload);\n switch (type) {\n case 'mr-resource-layout.init':\n case 'mr-resource-layout.thumbclick':\n // Silent\n break;\n case 'mr-resource-layout.pagechange':\n if (payload.targetId === this.dataSource.id) {\n this.dataSource.handlePageChange(payload.eventData);\n }\n break;\n default:\n // console.warn('unhandled event of type', type);\n break;\n }\n });\n }\n}\n","import { EventHandler } from '@net7/core';\nimport { MrImageViewerOverlayDetailsDS } from '../data-sources/image-viewer-overlay-details.ds';\n\nexport class MrImageViewerOverlayDetailsEH extends EventHandler {\n dataSource: MrImageViewerOverlayDetailsDS;\n\n public listen() {\n this.outerEvents$.subscribe(({ type, payload }) => {\n switch (type) {\n case 'mr-resource-layout.hideoverlaydetails':\n case 'mr-resource-layout.overlaycloseclick':\n this.dataSource.hide();\n break;\n case 'mr-resource-layout.showoverlaydetails': {\n const target = `${payload.targetId}-overlay-details`;\n if (target === this.dataSource.id) {\n this.dataSource.show(payload);\n }\n } break;\n default:\n // console.warn('unhandled event of type', type);\n break;\n }\n });\n }\n}\n","//---------------------------\n// METADATA-VIEWER.ts\n//---------------------------\n\nimport { Component, Input } from '@angular/core';\n\n/**\n * Interface for MetadataViewerComponent's \"items\"\n * @property label (optional)\n * @property value (optional)\n */\nexport interface MetadataViewerItems {\n /**\n * the item's label\n */\n label?: string;\n /**\n * the value for @property label\n */\n value?: string;\n /**\n * the anchorId of the metadata\n */\n anchorId?: string;\n}\n\n/**\n * Interface for MetadataViewerComponent's \"data\"\n *\n * @property title (optional)\n * @property items (optional)\n * @property group (optional)\n * @property classes (optional)\n */\nexport interface MetadataViewerChildGroups {\n /**\n * component header (if root)\n * or group title\n */\n title?: string;\n /**\n * the metadata items\n */\n items?: MetadataViewerItems[];\n /**\n * the CHILD metadata groups\n */\n group?: MetadataViewerChildGroups[];\n /**\n * additional html classes\n */\n classes?: any;\n}\n\n/**\n * Interface for MetadataViewerComponent's \"data\"\n *\n * @property group (required)\n * @property classes (optional)\n */\nexport interface MetadataViewerData {\n /**\n * the CHILD metadata groups\n */\n group: MetadataViewerChildGroups[];\n /**\n * additional html classes\n */\n classes?: any;\n}\n\n@Component({\n selector: 'mr-metadata-readmore',\n templateUrl: './metadata-with-readmore.html'\n})\nexport class MrMetadataReadmoreComponent {\n @Input() data: MetadataViewerData;\n\n @Input() emit: any;\n}\n","<div *ngIf=\"data\"\n class=\"n7-metadata-viewer\">\n <!-- Metadata groups wrapper -->\n <div class=\"n7-metadata-viewer__wrapper {{ data.classes || ''}}\"\n *ngFor=\"let grp of data.group\">\n <!-- For each data group, render it -->\n <ng-container *ngTemplateOutlet=\"group; context:{$implicit: grp}\"></ng-container>\n </div>\n</div>\n\n<!-- Template for Metadata.group -->\n<ng-template #group\n let-grp>\n <div *ngIf=\"grp.title || grp.items\"\n class=\"n7-metadata-viewer__group {{ grp.classes || '' }}\">\n <div class=\"n7-metadata-viewer__group-title\"\n *ngIf=\"grp.title\">{{grp.title}}</div>\n <div class=\"n7-metadata-viewer__group-content\"\n *ngIf=\"grp.items\">\n <!-- \"read more\" enabled on the metadata group -->\n <mr-read-more [data]=\"grp.groupReadmore\">\n <div class=\"n7-metadata-viewer__item\"\n *ngFor=\"let i of grp.items\">\n <span *ngIf=\"i.anchorId\" id=\"{{ i.anchorId }}\"></span>\n <span *ngIf=\"i.label\" class=\"n7-metadata-viewer__item-label\">\n {{ i.label }}\n </span>\n <!-- \"read more\" enabled on the metadata value field -->\n <mr-read-more [data]=\"grp.readmore\">\n <span *ngIf=\"i.value\"\n class=\"n7-metadata-viewer__item-value\"\n [innerHTML]=\"i.value\">\n </span>\n </mr-read-more>\n </div>\n </mr-read-more>\n </div>\n </div>\n <!-- Render all child groups -->\n <div *ngIf=\"grp.group\">\n <div class=\"n7-metadata-viewer__group-wrapper\"\n *ngFor=\"let grp of grp.group\">\n <ng-container *ngTemplateOutlet=\"group; context:{$implicit: grp}\"></ng-container>\n </div>\n </div>\n</ng-template>\n","import { Component, Input } from '@angular/core';\n\n@Component({\n selector: 'mr-metadata-dynamic',\n templateUrl: './metadata-dynamic.html'\n})\nexport class MrMetadataDynamicComponent {\n @Input() data: any;\n\n @Input() emit: (type: string, payload?: any) => void;\n\n fakeEmit = (type, payload?) => {\n if (!this.emit) {\n return;\n }\n this.emit(type, payload);\n };\n}\n","<ng-container *ngIf=\"data.data\">\n <ng-container *ngFor=\"let group of data.data; index as i\">\n <ng-container *ngTemplateOutlet=\"metadataViewer; context:{$implicit: group}\"></ng-container>\n </ng-container>\n</ng-container>\n\n<ng-template #metadataViewer let-group>\n <div class=\"mr-content-block mr-content-block-metadata\">\n <div *ngIf=\"group\" class=\"mr-metadata-dynamic\" [ngClass]=\"{'mr-metadata-dynamic-accordion' : group.title}\">\n \n <!-- Header accordion -->\n <div *ngIf=\"group.options && (group.options.showHeader !== false) && group.title\" class=\"mr-metadata-dynamic-accordion__header\">\n <span *ngIf=\"group.accordionId\" id=\"{{ group.accordionId }}\"></span>\n <n7-facet-header \n [data]=\"group.options\" \n [emit]=\"fakeEmit\"\n ></n7-facet-header>\n </div>\n\n <!-- Content -->\n <div *ngIf=\"group.options.isOpen\" class=\"mr-content-block__content\" [attr.id]=\"group.id\">\n <mr-read-more [data]=\"group.readmore\">\n <ng-container *ngIf=\" group?.options?.readmore || group?.options?.groupReadmore;\n else wihoutReadmore\">\n <mr-metadata-readmore\n [data]=\"group.group\">\n </mr-metadata-readmore>\n </ng-container>\n <ng-template #wihoutReadmore>\n <n7-metadata-viewer\n [data]=\"group.group\">\n </n7-metadata-viewer>\n </ng-template>\n </mr-read-more>\n </div>\n\n </div>\n </div>\n</ng-template>\n","import {\n Component, OnInit, OnDestroy, AfterViewInit\n} from '@angular/core';\nimport { ActivatedRoute, Data, Router } from '@angular/router';\nimport {\n AbstractLayout,\n CommunicationService,\n LayoutsConfigurationService,\n ConfigurationService,\n MainStateService\n} from '@net7/boilerplate-common';\nimport { MrLayoutStateService } from '../../services/layout-state.service';\nimport { MrResourceModalService } from '../../services/resource-modal.service';\nimport { MrResourceLayoutConfig as config } from './resource-layout.config';\nimport { MrImageViewerEH } from '../../event-handlers/image-viewer.eh';\nimport { MrTextViewerEH } from '../../event-handlers/text-viewer.eh';\nimport { MrParallelTextViewerEH } from '../../event-handlers/parallel-text-viewer.eh';\nimport { MrImageViewerToolsEH } from '../../event-handlers/image-viewer-tools.eh';\nimport { MrCollectionEH } from '../../event-handlers/collection.eh';\nimport { MrImageViewerOverlayDetailsEH } from '../../event-handlers/image-viewer-overlay-details.eh';\nimport { MrButtonEH, MrMetadataDynamicEH, MrNetworkResourceEH } from '../../event-handlers';\nimport {\n MrBreadcrumbsDS,\n MrButtonDS,\n MrCollectionDS,\n MrImageViewerDS,\n MrImageViewerToolsDS,\n MrInfoBoxDS,\n MrInnerTitleDS,\n MrItemPreviewDS,\n MrMetadataDS,\n MrTextViewerDS,\n MrParallelTextViewerDS,\n MrResourceTabsDS,\n MrImageViewerOverlayDetailsDS,\n MrMetadataDynamicDS,\n MrImageViewerIiifDS,\n MrNetworkResourceDS,\n MrEmbeddedContentDS,\n} from '../../data-sources';\nimport { MrMapDS } from '../../data-sources/map.ds';\nimport { MrLocaleService } from '../../services/locale.service';\n\nconst DATASOURCE_MAP = {\n breadcrumbs: MrBreadcrumbsDS,\n button: MrButtonDS,\n collection: MrCollectionDS,\n info: MrInfoBoxDS,\n map: MrMapDS,\n metadata: MrMetadataDS,\n preview: MrItemPreviewDS,\n tabs: MrResourceTabsDS,\n text: MrTextViewerDS,\n title: MrInnerTitleDS,\n viewer: MrImageViewerDS,\n 'viewer-tools': MrImageViewerToolsDS,\n 'viewer-overlay-details': MrImageViewerOverlayDetailsDS,\n 'text-viewer': MrTextViewerDS,\n 'parallel-text-viewer': MrParallelTextViewerDS,\n 'metadata-dynamic': MrMetadataDynamicDS,\n 'viewer-iiif': MrImageViewerIiifDS,\n 'network-resource': MrNetworkResourceDS,\n 'embedded-content': MrEmbeddedContentDS,\n};\n\nconst EVENTHANDLER_MAP = {\n viewer: MrImageViewerEH,\n 'viewer-tools': MrImageViewerToolsEH,\n 'viewer-overlay-details': MrImageViewerOverlayDetailsEH,\n 'text-viewer': MrTextViewerEH,\n 'parallel-text-viewer': MrParallelTextViewerEH,\n collection: MrCollectionEH,\n 'metadata-dynamic': MrMetadataDynamicEH,\n button: MrButtonEH,\n 'network-resource': MrNetworkResourceEH,\n // map: MrMapEH\n};\n\n@Component({\n selector: 'mr-resource-layout',\n templateUrl: './resource-layout.html',\n})\nexport class MrResourceLayoutComponent extends AbstractLayout implements OnInit, OnDestroy,\nAfterViewInit {\n private routerData: Data;\n\n constructor(\n layoutsConfiguration: LayoutsConfigurationService,\n private activatedRoute: ActivatedRoute,\n private configuration: ConfigurationService,\n private communication: CommunicationService,\n private mainState: MainStateService,\n private route: ActivatedRoute,\n private router: Router,\n public layoutState: MrLayoutStateService,\n public modalService: MrResourceModalService,\n public localeService: MrLocaleService,\n ) {\n super(layoutsConfiguration.get('MrResourceLayoutConfig') || config);\n }\n\n protected initPayload() {\n return {\n routerData: this.routerData,\n configuration: this.configuration,\n communication: this.communication,\n mainState: this.mainState,\n layoutState: this.layoutState,\n modalService: this.modalService,\n localeService: this.localeService,\n options: this.config.options || {},\n route: this.route,\n router: this.router\n };\n }\n\n ngOnInit() {\n this.activatedRoute.data.subscribe((routerData) => {\n this.layoutState.add('content');\n this.routerData = routerData;\n this.loadWidgets();\n this.onInit();\n });\n }\n\n ngAfterViewInit() {\n const { configId } = this.routerData;\n const timeout = this.configuration.get(configId).pageLoad || 1000;\n\n // If a fragment (#id) is present in the url, the page scroll to that fragment\n this.route.fragment.subscribe((fragment) => {\n if (fragment) {\n setTimeout(() => {\n const element = document.getElementById(fragment);\n if (element) {\n // Open read-more if present\n const readMoreElement = element\n ?.closest('.mr-read-more__content')\n ?.closest('.mr-read-more.is-collapsed');\n if (readMoreElement) {\n const readMoreButton = readMoreElement.querySelector(\n ':scope > .mr-read-more__btn'\n );\n if (readMoreButton instanceof HTMLElement) {\n readMoreButton.click();\n }\n // Scroll\n setTimeout(() => element.scrollIntoView({ behavior: 'smooth' }), 300);\n } else {\n // Scroll\n element.scrollIntoView({ behavior: 'smooth' });\n }\n }\n }, timeout);\n }\n });\n }\n\n ngOnDestroy() {\n this.onDestroy();\n }\n\n loadWidgets() {\n const { configId } = this.routerData;\n const { top, content } = this.configuration.get(configId).sections;\n const sections = top.concat(content);\n this.widgets = [];\n if (sections) {\n sections.forEach(({\n id, type, options, tools\n }) => {\n const widgetOptions = options || {};\n widgetOptions.localeService = this.localeService;\n // Add route to metadata-dynamic options\n if (type === 'metadata-dynamic') {\n options.route = this.route;\n }\n this.widgets.push({\n id,\n options: widgetOptions,\n dataSource: DATASOURCE_MAP[type],\n eventHandler: EVENTHANDLER_MAP[type]\n });\n // image viewer overlay details\n if (type === 'viewer') {\n this.widgets.push({\n id: `${id}-overlay-details`,\n options: widgetOptions,\n dataSource: DATASOURCE_MAP[`${type}-overlay-details`],\n eventHandler: EVENTHANDLER_MAP[`${type}-overlay-details`]\n });\n }\n // image viewer tools\n if (type === 'viewer' && tools) {\n this.widgets.push({\n id: `${id}-tools`,\n options: widgetOptions,\n dataSource: DATASOURCE_MAP[`${type}-tools`],\n eventHandler: EVENTHANDLER_MAP[`${type}-tools`]\n });\n }\n });\n }\n }\n}\n","<div class=\"mr-resource mr-layout\" \n *ngIf=\"lb.dataSource && lb.dataSource.pageConfig\"\n [ngClass]=\"{\n 'is-loading': ( layoutState.get$('content') | async ) == 'LOADING',\n 'is-error': ( layoutState.get$('content') | async ) == 'ERROR'\n }\">\n <!-- RESOURCE LAYOUT CONTENT -->\n <ng-container [ngSwitch]=\"layoutState.get$('content') | async\">\n <!-- loading -->\n <ng-container *ngSwitchCase=\"'LOADING'\">\n <div class=\"mr-layout__loader\">\n <n7-loader></n7-loader>\n </div>\n </ng-container>\n\n <!-- error -->\n <ng-container *ngSwitchCase=\"'ERROR'\">\n <div class=\"mr-layout__error\">\n <h2>{{ lb.dataSource.errorTitle }}</h2>\n <p>{{ lb.dataSource.errorDescription }}</p>\n </div>\n </ng-container>\n\n <!-- success -->\n <ng-container *ngSwitchCase=\"'SUCCESS'\">\n <ng-container *ngIf=\"lb.dataSource.pageConfig.sections as sections\">\n <!-- Pass the list of blocks to render to the block template -->\n <div class=\"mr-resource__top\">\n <ng-container *ngTemplateOutlet=\"blocks; context: { $implicit: sections.top }\"></ng-container>\n </div>\n <div class=\"mr-resource__content mr-side-margin\">\n <ng-container *ngTemplateOutlet=\"blocks; context: { $implicit: sections.content }\"></ng-container>\n </div>\n </ng-container>\n </ng-container>\n\n </ng-container>\n</div>\n\n<ng-template #blocks let-list>\n <ng-container *ngFor=\"let section of list\">\n <section *ngIf=\"lb.widgets[section.id].ds.out$ | async\"\n class=\"{{ 'mr-resource__section mr-resource__' + section.type }}\">\n <ng-container [ngSwitch]=\"section.type\">\n\n <!-- TABS -->\n <ng-container *ngSwitchCase=\"'tabs'\">\n <ng-container *ngFor=\"let tab of lb.widgets[section.id].ds.out$ | async\">\n <n7-anchor-wrapper [data]=\"tab.anchor\" [classes]=\"tab.classes\" *ngIf=\"!tab.hideTab\">\n <span class=\"mr-resource__tabs-item\">{{ tab.label }}</span>\n </n7-anchor-wrapper>\n </ng-container>\n </ng-container>\n\n <!-- INNER TITLE -->\n <ng-container *ngSwitchCase=\"'title'\">\n <div class=\"mr-resource__title-content mr-side-margin\">\n <n7-inner-title \n [data]=\"lb.widgets[section.id].ds.out$ | async\"\n [emit]=\"lb.widgets[section.id].emit\">\n </n7-inner-title>\n </div>\n </ng-container>\n\n <!-- CUSTOM BUTTON -->\n <ng-container *ngSwitchCase=\"'button'\">\n <div class=\"mr-resource__button\">\n <n7-button \n [data]=\"lb.widgets[section.id].ds.out$ | async\"\n [emit]=\"lb.widgets[section.id].emit\">\n </n7-button>\n </div>\n </ng-container>\n \n <!-- IMAGE VIEWER IIIF -->\n <ng-container *ngSwitchCase=\"'viewer-iiif'\">\n <n7-mirador\n (contextmenu)=\"lb.dataSource.hasContextMenu()\"\n [data]=\"lb.widgets[section.id].ds.out$ | async\">\n </n7-mirador>\n </ng-container>\n \n <!-- IMAGE VIEWER -->\n <ng-container *ngSwitchCase=\"'viewer'\">\n\n <n7-image-viewer \n [data]=\"lb.widgets[section.id].ds.out$ | async\" \n [emit]=\"lb.widgets[section.id].emit\">\n </n7-image-viewer>\n <!-- IMAGE VIEWER TOOLS -->\n <n7-image-viewer-tools *ngIf=\"section.tools\" \n [data]=\"lb.widgets[section.id + '-tools'].ds.out$ | async\" \n [emit]=\"lb.widgets[section.id + '-tools'].emit\">\n </n7-image-viewer-tools>\n <!-- IMAGE VIEWER OVERLAY DETAILS -->\n <div *ngIf=\"lb.widgets[section.id + '-overlay-details'].ds.out$ | async as viewerDetailsData\" \n class=\"mr-resource__viewer-overlay-details\">\n <div class=\"mr-resource__viewer-overlay-details__close\">\n <a class=\"mr-resource__viewer-overlay-details__close-link\" \n (click)=\"lb.eventHandler.emitOuter('overlaycloseclick')\">\n <span class=\"n7-icon-close\"></span>\n </a>\n </div>\n <n7-item-preview \n [data]=\"viewerDetailsData\" \n [emit]=\"lb.widgets[section.id + '-overlay-details'].emit\">\n </n7-item-preview>\n </div>\n\n </ng-container>\n \n <!-- METADATA VIEWER -->\n <ng-container *ngSwitchCase=\"'metadata'\">\n \n <div class=\"mr-content-block mr-content-block-metadata\">\n <h3 *ngIf=\"section.title\" class=\"mr-content-block__title\">\n {{ section.title }}\n </h3>\n <div class=\"mr-content-block__content\">\n <mr-read-more [data]=\"section.readmore\">\n <ng-container *ngIf=\" section?.options?.readmore || section?.options?.groupReadmore;\n else wihoutReadmore\">\n <mr-metadata-readmore\n [data]=\"lb.widgets[section.id].ds.out$ | async\"\n [emit]=\"lb.widgets[section.id].emit\">\n </mr-metadata-readmore>\n </ng-container>\n <ng-template #wihoutReadmore>\n <n7-metadata-viewer\n [data]=\"lb.widgets[section.id].ds.out$ | async\"\n [emit]=\"lb.widgets[section.id].emit\">\n </n7-metadata-viewer>\n </ng-template>\n </mr-read-more>\n </div>\n </div>\n \n </ng-container>\n \n <!-- METADATA DYNAMIC -->\n <ng-container *ngSwitchCase=\"'metadata-dynamic'\">\n <mr-metadata-dynamic \n [data]=\"lb.widgets[section.id].ds.out$ | async\"\n [emit]=\"lb.widgets[section.id].emit\">\n </mr-metadata-dynamic> \n </ng-container>\n \n <!-- COLLECTION -->\n <ng-container *ngSwitchCase=\"'collection'\">\n <ng-container *ngIf=\"lb.widgets[section.id].ds.out$ | async as collection$\">\n <div *ngIf=\"collection$.items?.length > 0\" class=\"mr-content-block mr-content-block-collection\">\n <h3 *ngIf=\"section.title\" class=\"mr-content-block__title\">\n {{ section.title }}\n </h3>\n <div class=\"mr-content-block__content {{ section.grid ? 'n7-grid-' + section.grid : '' }}\">\n <n7-item-preview *ngFor=\"let item of collection$?.items\"\n [data]=\"item\" [emit]=\"lb.widgets[section.id].emit\">\n </n7-item-preview>\n </div>\n </div>\n </ng-container>\n </ng-container>\n \n <!-- ITEM PREVIEW -->\n <ng-container *ngSwitchCase=\"'preview'\">\n <div class=\"mr-content-block mr-content-block-item-preview\">\n <h3 *ngIf=\"section.title\" class=\"mr-content-block__title\">\n {{ section.title }}\n </h3>\n <div class=\"mr-content-block__content\">\n <n7-item-preview [data]=\"lb.widgets[section.id].ds.out$ | async\" [emit]=\"lb.widgets[section.id].emit\"> \n </n7-item-preview>\n </div>\n </div>\n </ng-container>\n \n <!-- TEXT VIEWER -->\n <ng-container *ngSwitchCase=\"'text-viewer'\">\n <div class=\"mr-content-block mr-content-block-text-viewer\">\n <h3 *ngIf=\"section.title\" class=\"mr-content-block__title\">\n {{ section.title }}\n </h3>\n <div class=\"mr-content-block__content\">\n <n7-text-viewer [data]=\"lb.widgets[section.id].ds.out$ | async\" [emit]=\"lb.widgets[section.id].emit\">\n </n7-text-viewer>\n </div>\n </div>\n </ng-container>\n\n <!-- PARALLEL TEXT VIEWER -->\n <ng-container *ngSwitchCase=\"'parallel-text-viewer'\">\n <div class=\"mr-content-block mr-content-block-text-viewer mr-content-block-parallel-text-viewer\">\n <h3 *ngIf=\"section.title\" class=\"mr-content-block__title\">\n {{ section.title }}\n </h3>\n <div class=\"mr-content-block__content\">\n <n7-parallel-text-viewer [data]=\"lb.widgets[section.id].ds.out$ | async\" [emit]=\"lb.widgets[section.id].emit\">\n </n7-parallel-text-viewer>\n </div>\n </div>\n </ng-container>\n\n <!-- MAP -->\n <ng-container *ngSwitchCase=\"'map'\">\n <div class=\"mr-content-block mr-content-block-map\">\n <div class=\"mr-content-block__content\">\n <n7-map [data]=\"lb.widgets[section.id].ds.out$ | async\" [emit]=\"lb.widgets[section.id].emit\"></n7-map>\n </div>\n </div>\n </ng-container>\n\n <!-- NETWORK -->\n <ng-container *ngSwitchCase=\"'network-resource'\">\n <div class=\"mr-content-block mr-content-block-network\">\n <div class=\"mr-content-block__content\">\n <div id=\"demo-network\" class=\"network-visualization\"><p>Network</p></div>\n </div>\n </div>\n </ng-container>\n\n <!-- EMBEDDED CONTENT -->\n <ng-container *ngSwitchCase=\"'embedded-content'\">\n <div class=\"mr-content-block mr-content-block-embedded-content\">\n <div class=\"mr-content-block__content\">\n <div class=\"mr-wp-content\" [innerHTML]=\"lb.widgets[section.id].ds.out$ | async | keepHtml\"></div>\n </div>\n </div>\n </ng-container>\n \n <!-- INFO BOX -->\n <ng-container *ngSwitchCase=\"'info-box'\">\n <div class=\"mr-content-block mr-content-block-info-box\">\n <h3 *ngIf=\"section.title\" class=\"mr-content-block__title\">\n {{ section.title }}\n </h3>\n <div class=\"mr-content-block__content\">\n <div class=\"info-box__mock\">info-box</div> \n </div>\n </div>\n </ng-container>\n \n <!-- BREADCRUMBS -->\n <ng-container *ngSwitchCase=\"'breadcrumbs'\">\n <n7-breadcrumbs [data]=\"lb.widgets[section.id].ds.out$ | async\">\n </n7-breadcrumbs>\n </ng-container>\n\n </ng-container>\n </section>\n </ng-container>\n</ng-template>\n","import { _t, LayoutDataSource } from '@net7/core';\nimport { MrSearchService } from '../../services/search.service';\n\nexport class SearchFacetsLayoutDS extends LayoutDataSource {\n private searchService: MrSearchService;\n\n private inputsDS: {\n [key: string]: any;\n } = {};\n\n public searchConfig;\n\n public localeService;\n\n public facets;\n\n public redirectPath;\n\n public redirectLabel;\n\n onInit(payload) {\n this.searchService = payload.searchService;\n this.localeService = payload.localeService;\n this.searchConfig = this.searchService.getConfig();\n this.facets = this.searchConfig.facets;\n this.initInputs();\n\n if (this.searchConfig.facets.redirectLink) {\n this.initRedirectLink(this.searchConfig.facets.redirectLink);\n }\n }\n\n initInputs() {\n // set components data\n this.facets.sections.forEach(({ header, inputs }) => {\n [header, ...inputs]\n .filter((input) => input)\n .forEach((input) => {\n // set id\n const widgetDataSource = this.getWidgetDataSource(input.id);\n widgetDataSource.id = input.id;\n // caching DS for next updates\n this.inputsDS[input.id] = widgetDataSource;\n // first update\n if (input.data) {\n widgetDataSource.update(input.data);\n }\n });\n });\n }\n\n initRedirectLink(redirectData) {\n const locale = this.localeService.getLocale();\n this.redirectLabel = _t(redirectData.label);\n this.redirectPath = redirectData.paths[locale];\n }\n\n updateInputValue(id, newValue) {\n const ds = this.inputsDS[id];\n ds.setValue(newValue, ds.value !== newValue);\n }\n\n updateInputData(id: string, newData) {\n const ds = this.inputsDS[id];\n ds.update({\n ...ds.input,\n ...newData\n });\n // refresh selected\n ds.setValue(ds.value, true);\n }\n\n clearInput(id: string) {\n const ds = this.inputsDS[id];\n ds.clear();\n ds.setValue(ds.value, true);\n }\n\n clearInputs() {\n Object.keys(this.inputsDS).forEach((id) => {\n this.clearInput(id);\n });\n }\n}\n","import { EventHandler } from '@net7/core';\nimport { Subject } from 'rxjs';\nimport { debounceTime, takeUntil, filter } from 'rxjs/operators';\nimport {\n MrSearchService,\n INPUT_STATE_CONTEXT,\n FACET_STATE_CONTEXT,\n FACETS_REQUEST_STATE_CONTEXT,\n} from '../../services/search.service';\n\ninterface ChangedSubjects {\n [key: string]: Subject<any>;\n}\n\nexport class SearchFacetsLayoutEH extends EventHandler {\n changed$: ChangedSubjects = {};\n\n private destroyed$: Subject<void> = new Subject();\n\n private searchService: MrSearchService;\n\n public listen() {\n this.innerEvents$.subscribe(({ type, payload }) => {\n switch (type) {\n case 'mr-search-facets-layout.init':\n this.searchService = payload.searchService;\n // listeners\n this.initChangedListener(this.searchService.getConfig());\n this.initStateListener();\n // init\n this.dataSource.onInit(payload);\n this.emitOuter('facetloaded');\n break;\n\n case 'mr-search-facets-layout.destroy':\n this.destroyed$.next();\n break;\n\n default:\n break;\n }\n });\n\n this.outerEvents$.subscribe(({ type, payload }) => {\n if (type.indexOf('change')) {\n this.changed$[payload.id].next(payload);\n }\n });\n }\n\n initChangedListener({ facets }) {\n facets.sections.forEach((section) => {\n const sources: {\n id: string;\n delay: number;\n }[] = [];\n\n if (section.header) {\n const { id, delay } = section.header;\n sources.push({ id, delay });\n }\n section.inputs.forEach(({ id, delay }) => {\n sources.push({ id, delay });\n });\n sources.forEach((source) => {\n this.changed$[source.id] = new Subject();\n this.changed$[source.id].pipe(\n debounceTime(source.delay || 1)\n ).subscribe(({ id, value }) => {\n this.searchService.setState(INPUT_STATE_CONTEXT, id, value);\n });\n });\n });\n }\n\n initStateListener() {\n // listener for input updates\n this.searchService.getState$(INPUT_STATE_CONTEXT)\n .pipe(\n takeUntil(this.destroyed$),\n filter(({ lastUpdated }) => this.dataSource.inputsDS[lastUpdated])\n ).subscribe(({ lastUpdated, state }) => {\n const newValue = state[lastUpdated];\n if (newValue === null) {\n this.dataSource.clearInput(lastUpdated);\n } else {\n this.dataSource.updateInputValue(lastUpdated, newValue);\n }\n });\n\n // listener for facet updates\n this.searchService.getState$(FACET_STATE_CONTEXT)\n .pipe(\n takeUntil(this.destroyed$),\n filter(({ lastUpdated }) => this.dataSource.inputsDS[lastUpdated])\n ).subscribe(({ lastUpdated, state }) => {\n const newData = state[lastUpdated];\n this.dataSource.updateInputData(lastUpdated, newData);\n });\n\n // listener for facet header updates\n this.searchService.getState$(FACETS_REQUEST_STATE_CONTEXT, 'success')\n .pipe(\n takeUntil(this.destroyed$)\n ).subscribe((response) => {\n const { facets } = response;\n Object.keys(facets).forEach((id) => {\n const { total_count: totalCount } = facets[id];\n this.dataSource.updateInputValue(`header-${id}`, totalCount);\n });\n });\n }\n}\n","import { SearchFacetsLayoutDS } from './search-facets-layout.ds';\nimport { SearchFacetsLayoutEH } from './search-facets-layout.eh';\nimport * as DS from '../../data-sources';\nimport * as EH from '../../event-handlers';\n\nexport const SearchFacetsLayoutConfig = {\n layoutId: 'mr-search-facets-layout',\n widgets: [],\n layoutDS: SearchFacetsLayoutDS,\n layoutEH: SearchFacetsLayoutEH,\n widgetsDataSources: DS,\n widgetsEventHandlers: EH,\n layoutOptions: {}\n};\n","import { DataSource, _t } from '@net7/core';\nimport { InputTextData } from '@net7/components';\nimport { FacetDataSource } from './facet-datasource';\n\ntype FACET_VALUE = string | number | null;\n\nexport class FacetTextDS extends DataSource implements FacetDataSource {\n id: string;\n\n value: FACET_VALUE;\n\n protected transform(data: InputTextData): InputTextData {\n return {\n ...data,\n placeholder: _t(data.placeholder)\n };\n }\n\n setValue(value: FACET_VALUE, update = false) {\n this.value = value;\n\n if (update) {\n this.update({\n ...this.input,\n value: value || value === 0 ? `${value}` : null\n });\n\n // fix element update\n const el = document.getElementById(this.output.id) as HTMLInputElement;\n if (el) {\n el.value = value || value === 0 ? `${value}` : null;\n }\n }\n }\n\n getValue = (): FACET_VALUE => this.value;\n\n clear() {\n this.value = null;\n }\n}\n","import { DataSource } from '@net7/core';\nimport { InputCheckbox, InputCheckboxData } from '@net7/components';\nimport { FacetDataSource } from './facet-datasource';\n\ntype FACET_VALUE = string[];\n\nexport class FacetCheckboxDS extends DataSource implements FacetDataSource {\n id: string;\n\n value: FACET_VALUE = [];\n\n protected transform(data: InputCheckboxData): InputCheckboxData {\n return data;\n }\n\n setValue(value: FACET_VALUE, update = false) {\n this.value = Array.isArray(value) ? value : [value];\n\n if (update) {\n const { checkboxes } = this.input;\n const updatedCheckboxes = checkboxes.map((checkbox: InputCheckbox) => ({\n ...checkbox,\n checked: this.value.indexOf(checkbox.payload) !== -1\n }));\n this.update({\n ...this.input,\n checkboxes: updatedCheckboxes\n });\n }\n }\n\n toggleValue({ inputPayload, value: isChecked }) {\n const exists = this.value.indexOf(inputPayload) !== -1;\n if (isChecked && !exists) {\n this.value.push(inputPayload);\n } else if (!isChecked && exists) {\n this.value.splice(this.value.indexOf(inputPayload), 1);\n }\n }\n\n getValue = (): FACET_VALUE => this.value;\n\n clear() {\n this.value = [];\n }\n}\n","import { DataSource } from '@net7/core';\nimport { InputSelectData } from '@net7/components';\nimport { FacetDataSource } from './facet-datasource';\n\ntype FACET_VALUE = string | null;\n\nexport class FacetSelectDS extends DataSource implements FacetDataSource {\n id: string;\n\n value: FACET_VALUE;\n\n protected transform(data: InputSelectData): InputSelectData {\n return data;\n }\n\n setValue(value: FACET_VALUE, update = false) {\n this.value = value;\n\n if (update) {\n const { options } = this.input;\n const updatedOptions = options.map((option) => ({\n ...option,\n selected: value === option.value\n }));\n this.update({\n ...this.input,\n options: updatedOptions\n });\n }\n }\n\n getValue = (): FACET_VALUE => this.value;\n\n clear() {\n this.value = null;\n }\n}\n","import { DataSource, _t } from '@net7/core';\nimport { InputLink, InputLinkData } from '@net7/components';\nimport { FacetDataSource } from './facet-datasource';\n\nconst ACTIVE_CLASS = 'is-active';\n\nexport class FacetLinkDS extends DataSource implements FacetDataSource {\n id: string;\n\n value = null;\n\n private isUpdate = false;\n\n protected transform(data: InputLinkData): InputLinkData {\n const { links } = data;\n // empty state check\n if (this.isUpdate && !links.length) {\n return {\n links: [{\n text: _t('global#facet_empty_text'),\n classes: 'empty-text-link',\n payload: null,\n }]\n };\n }\n return data;\n }\n\n setValue(value, update = false) {\n this.value = value;\n this.isUpdate = update;\n\n if (update) {\n const { links } = this.input;\n const updatedLinks = links.map((link: InputLink) => ({\n ...link,\n classes: this.value && (this.value === link.payload) ? ACTIVE_CLASS : ''\n }));\n this.update({\n ...this.input,\n links: updatedLinks\n });\n }\n }\n\n toggleValue(linkValue) {\n // update\n this.setValue(this.value !== linkValue ? linkValue : null, true);\n }\n\n getValue = () => this.value;\n\n clear() {\n this.value = null;\n }\n}\n","import { DataSource, _t } from '@net7/core';\nimport { FacetHeaderData } from '@net7/components';\nimport { FacetDataSource } from './facet-datasource';\n\ntype FACET_VALUE = string | null;\nconst ICON_OPEN = 'n7-icon-angle-up';\nconst ICON_CLOSE = 'n7-icon-angle-down';\n\nexport class FacetHeaderDS extends DataSource implements FacetDataSource {\n id: string;\n\n value: FACET_VALUE;\n\n protected transform(data: FacetHeaderData): FacetHeaderData {\n return {\n ...data,\n text: _t(data.text),\n iconRight: data.iconRight || ICON_OPEN\n };\n }\n\n setValue(value: FACET_VALUE, update = false) {\n this.value = value;\n\n if (update) {\n this.update({\n ...this.input,\n additionalText: value\n });\n }\n }\n\n getValue = (): FACET_VALUE => this.value;\n\n toggle() {\n let { iconRight } = this.output;\n iconRight = iconRight === ICON_OPEN ? ICON_CLOSE : ICON_OPEN;\n this.update({\n ...this.input,\n iconRight\n });\n }\n\n isOpen() {\n return this.output.iconRight === ICON_OPEN;\n }\n\n clear() {\n this.value = null;\n }\n}\n","import { EventHandler } from '@net7/core';\n\nexport class FacetHeaderEH extends EventHandler {\n public listen() {\n this.innerEvents$.subscribe(({ type }) => {\n switch (type) {\n case `${this.dataSource.id}.click`:\n this.dataSource.toggle();\n this.emitOuter('change', {\n isOpen: this.dataSource.isOpen(),\n id: this.dataSource.id,\n value: this.dataSource.value\n });\n break;\n default:\n break;\n }\n });\n }\n}\n","import { EventHandler } from '@net7/core';\n\nexport class FacetTextEH extends EventHandler {\n public listen() {\n this.innerEvents$.subscribe(({ type, payload }) => {\n switch (type) {\n case `${this.dataSource.id}.change`:\n if (typeof payload.value === 'string') {\n payload.value = payload.value.trim();\n }\n this.dataSource.setValue(payload.value);\n this.emitOuter('change', {\n ...payload,\n id: this.dataSource.id\n });\n break;\n default:\n break;\n }\n });\n }\n}\n","import { EventHandler } from '@net7/core';\n\nexport class FacetCheckboxEH extends EventHandler {\n public listen() {\n this.innerEvents$.subscribe(({ type, payload }) => {\n switch (type) {\n case `${this.dataSource.id}.change`:\n this.dataSource.toggleValue(payload);\n this.emitOuter('change', {\n value: this.dataSource.getValue(),\n id: this.dataSource.id\n });\n break;\n default:\n break;\n }\n });\n }\n}\n","import { EventHandler } from '@net7/core';\n\nexport class FacetSelectEH extends EventHandler {\n public listen() {\n this.innerEvents$.subscribe(({ type, payload }) => {\n switch (type) {\n case `${this.dataSource.id}.change`:\n this.dataSource.setValue(payload.value);\n this.emitOuter('change', {\n ...payload,\n id: this.dataSource.id\n });\n break;\n default:\n break;\n }\n });\n }\n}\n","import { EventHandler } from '@net7/core';\nimport { FacetLinkDS } from '../../data-sources/facets/facet-link.ds';\n\nexport class FacetLinkEH extends EventHandler {\n dataSource: FacetLinkDS\n\n public listen() {\n this.innerEvents$.subscribe(({ type, payload }) => {\n switch (type) {\n case `${this.dataSource.id}.change`:\n if (payload) {\n this.dataSource.toggleValue(payload);\n this.emitOuter('change', {\n value: this.dataSource.getValue(),\n id: this.dataSource.id\n });\n }\n break;\n default:\n break;\n }\n });\n }\n}\n","import { DataSource, _t } from '@net7/core';\nimport { InputLink, InputLinkData } from '@net7/components';\nimport { FacetDataSource } from './facet-datasource';\n\nconst ACTIVE_CLASS = 'is-active';\n\nexport class FacetLinkMultipleDS extends DataSource implements FacetDataSource {\n id: string;\n\n value = [];\n\n private isUpdate = false;\n\n protected transform(data: InputLinkData): InputLinkData {\n const { links } = data;\n // empty state check\n if (this.isUpdate && !links.length) {\n return {\n links: [{\n text: _t('global#facet_empty_text'),\n classes: 'empty-text-link',\n payload: null,\n }]\n };\n }\n return data;\n }\n\n setValue(value, update = false) {\n this.value = value;\n this.isUpdate = update;\n\n if (update) {\n const { links } = this.input;\n const updatedLinks = links.map((link: InputLink) => ({\n ...link,\n classes: this.value.includes(link.payload) ? ACTIVE_CLASS : ''\n }));\n this.update({\n ...this.input,\n links: updatedLinks\n });\n }\n }\n\n toggleValue(linkValue) {\n const exists = this.value.includes(linkValue);\n if (!exists) {\n this.value.push(linkValue);\n } else if (exists) {\n this.value.splice(this.value.indexOf(linkValue), 1);\n }\n\n // update\n this.setValue(this.value, true);\n }\n\n getValue = () => this.value;\n\n clear() {\n this.value = [];\n }\n}\n","import { EventHandler } from '@net7/core';\n\nexport class FacetLinkMultipleEH extends EventHandler {\n public listen() {\n this.innerEvents$.subscribe(({ type, payload }) => {\n switch (type) {\n case `${this.dataSource.id}.change`:\n if (payload) {\n this.dataSource.toggleValue(payload);\n this.emitOuter('change', {\n value: this.dataSource.getValue(),\n id: this.dataSource.id\n });\n }\n break;\n default:\n break;\n }\n });\n }\n}\n","export default {\n\n /**\n * Performs validation for a leaflet marker data.\n * If the data is invalid displays an error.\n *\n * @param coords data for a leaflet marker as array with data[0]\n * @returns true if the marker data is valid\n */\n isValidMarker({ lat, lon }): boolean {\n const test = (\n lat\n && lon\n && /^-?\\d+\\.\\d*$/.test(lat)\n && /^-?\\d+\\.\\d*$/.test(lon)\n );\n if (test) return true;\n console.error(`${lat}, ${lon} is not a valid marker!`);\n return false;\n }\n};\n","import { DataSource } from '@net7/core';\nimport { MapData, MarkerData } from '@net7/components';\nimport * as L from 'leaflet';\nimport 'leaflet.markercluster';\nimport { Subject } from 'rxjs';\nimport { FacetDataSource } from './facet-datasource';\nimport mapHelper from '../../helpers/map-helper';\n// leaflet is already present in the window,\n// a double import results in errors with tooltips.\n// declare const L;\n\nconst ACTIVE_CLASS = 'is-active';\n\ntype FACET_VALUE = string[];\n\ntype CadastralUnit = {\n text: string;\n payload: string;\n counter: number;\n args: {\n lat: string | null;\n lon: string | null;\n };\n}\n\nexport interface MarkerEvent {\n type: string;\n id: string;\n}\n\ninterface MarkerWithID extends MarkerData {\n id?: string;\n counter: number;\n slug: string;\n}\n\nexport class FacetMapDS extends DataSource implements FacetDataSource {\n id: string;\n\n value: FACET_VALUE = [];\n\n mapInstance;\n\n markerLayer;\n\n markerEvents$ = new Subject<MarkerEvent>();\n\n isUpdate = false;\n\n iconSize = this.options.libOptions.iconSize ?? [13, 20];\n\n private MARKER_ICON = L.icon({\n iconUrl: '/assets/pin.png',\n iconSize: this.iconSize,\n popupAnchor: [0, -15],\n className: 'marker-icon'\n });\n\n private MARKER_ICON_UNAVAILABLE = L.icon({\n iconUrl: '/assets/pin-unavailable.png',\n iconSize: this.iconSize,\n popupAnchor: [0, -15],\n className: 'marker-icon'\n });\n\n private MARKER_ICON_SELECTED = L.icon({\n iconUrl: '/assets/pin-selected.png',\n iconSize: this.iconSize,\n popupAnchor: [0, -15],\n className: 'marker-icon-selected'\n });\n\n private linksToMarkers(links: CadastralUnit[]): MarkerWithID[] {\n const markers: MarkerWithID[] = [];\n links\n .filter((d) => d.args?.lat && d.args?.lon)\n .forEach((d) => {\n if (Array.isArray(d.args.lat)) {\n d.args.lat.forEach((element, i) => {\n markers.push({\n coords: [+d.args.lat[i], +d.args.lon[i]] as [number, number],\n template: d.text,\n title: d.text,\n id: d.payload,\n slug: d.payload,\n counter: d.counter,\n });\n });\n } else {\n markers.push({\n coords: [+d.args.lat, +d.args.lon] as [number, number],\n template: d.text,\n title: d.text,\n id: d.payload,\n slug: d.payload,\n counter: d.counter,\n });\n }\n });\n return markers;\n }\n\n protected transform({ links }: { links: CadastralUnit[] }): MapData {\n const markers = this.linksToMarkers(links);\n const mapConfig = this.options?.libOptions;\n return {\n containerId: 'map-canvas',\n libOptions: {\n attributionControl: false,\n minZoom: 8,\n ...mapConfig\n },\n tileLayers: [{\n // url: 'https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png',\n url: mapConfig.layerUrl ?? 'https://{s}.basemaps.cartocdn.com/rastertiles/voyager_labels_under/{z}/{x}/{y}{r}.png',\n // url: 'https://cartodb-basemaps-{s}.global.ssl.fastly.net/light_all/{z}/{x}/{y}.png',\n options: null\n }],\n initialView: {\n center: mapConfig.center ?? [46.06, 11.21],\n zoom: mapConfig.zoom ?? 9\n },\n _setInstance: (map) => {\n this.mapInstance = map;\n this.buildMarkers(markers);\n\n if (mapConfig.autoCenter) {\n const bounds = new L\n .LatLngBounds(markers\n .map((d) => ({ lat: d.coords[0], lon: d.coords[1] }))\n .filter((d) => mapHelper.isValidMarker(d)));\n this.mapInstance.fitBounds(bounds);\n }\n },\n };\n }\n\n /**\n * Builds markers with a custom icon and adds them to the map.\n * @param markers an array of markers\n */\n private buildMarkers(markers: MarkerWithID[]) {\n if (!markers) return;\n const mapConfig = this.options?.libOptions;\n // remove all existing markers\n if (this.markerLayer) {\n this.markerLayer.clearLayers();\n this.mapInstance.removeLayer(this.markerLayer);\n }\n const markerGroup = L.markerClusterGroup(\n {\n maxClusterRadius: mapConfig.maxClusterRadius ?? 10,\n disableClusteringAtZoom: mapConfig.disableClusteringAtZoom ?? 8\n }\n );\n markers.forEach(({\n coords, template, id, slug, counter\n }) => {\n // create custom icon marker\n const icon = this.getIcon(id, counter);\n if (!icon) return;\n const newMarker = L.marker(coords, {\n icon,\n zIndexOffset: this.getZindex(id, counter)\n });\n if (id && slug) {\n newMarker.id = id;\n newMarker.counter = counter;\n newMarker.slug = slug;\n }\n newMarker\n // add the marker to the group\n .addTo(markerGroup)\n // add the on-click tooltip\n .bindPopup(template);\n\n newMarker.on('click', ({ target }) => {\n this.markerEvents$.next({\n type: 'marker.click',\n id: target.id\n });\n });\n\n newMarker.on('mouseover', ({ target }) => {\n target.openPopup();\n });\n\n newMarker.on('mouseout', ({ target }) => {\n target.closePopup();\n });\n });\n // add the markers to the map instance\n this.mapInstance.addLayer(markerGroup);\n // update the marker layer instance\n this.markerLayer = markerGroup;\n }\n\n setValue(value: FACET_VALUE, update = false) {\n // prevent the search service from assigning a plain string\n // eslint-disable-next-line no-param-reassign\n if (typeof value === 'string') value = [value];\n\n if (this.value !== value) {\n this.value = value;\n }\n this.isUpdate = update || this.value?.length === 0;\n\n if (update && this.input) {\n const { links } = this.input;\n const updatedLinks = links.map((link: CadastralUnit) => ({\n ...link,\n classes: this.value.includes(link.payload) ? ACTIVE_CLASS : ''\n }));\n // update marker icons\n if (this.markerLayer) {\n if (this.options.libOptions?.hideUnavailablePin) {\n this.buildMarkers(this.linksToMarkers(links));\n } else {\n this.markerLayer.eachLayer((marker) => {\n const { id } = marker;\n const counter = links.find(({ payload }) => payload === id)?.counter || 0;\n marker.getPopup()._source.setIcon(this.getIcon(id, counter))\n .setZIndexOffset(this.getZindex(id, counter));\n });\n }\n }\n // ---\n this.update({\n ...this.input,\n links: updatedLinks\n });\n }\n }\n\n getIcon = (id: string, counter: number) => {\n if (this.value.includes(id)) return this.MARKER_ICON_SELECTED;\n if (counter > 0) return this.MARKER_ICON;\n if (this.options.libOptions?.hideUnavailablePin) return null;\n return this.MARKER_ICON_UNAVAILABLE;\n };\n\n getZindex = (id: string, counter: number) => {\n if (this.value.includes(id)) return 19999;\n if (counter > 0) return 9999;\n return null;\n };\n\n toggleValue(value: string) {\n const exists = this.value.includes(value);\n if (!exists) {\n this.value.push(value);\n } else if (exists) {\n this.value.splice(this.value.indexOf(value), 1);\n }\n\n // update\n this.setValue(this.value, true);\n }\n\n getValue = (): FACET_VALUE => this.value;\n\n clear() {\n this.value = [];\n }\n}\n","import { EventHandler } from '@net7/core';\nimport { FacetMapDS } from '../../data-sources/facets/facet-map.ds';\n\nexport class FacetMapEH extends EventHandler {\n dataSource: FacetMapDS;\n\n isMultiple: boolean;\n\n public listen() {\n this.outerEvents$.subscribe(({ type }) => {\n switch (type) {\n case 'mr-search-facets-layout.facetloaded':\n // Listen for incoming marker events\n this.dataSource.markerEvents$.subscribe((event) => {\n switch (event.type) {\n // trigger search facet logic\n case 'marker.click': {\n // detect \"multiple: true | false\" in config > facet > schema\n // and apply the correct logic.\n const { isMultiple } = this.dataSource.options;\n if (isMultiple) {\n this.dataSource.toggleValue(event.id);\n } else {\n const currentValue = this.dataSource.value;\n if (currentValue[0] === event.id) {\n this.dataSource.toggleValue(event.id);\n } else {\n this.dataSource.setValue([event.id]);\n }\n }\n // (make request and update component)\n this.emitOuter('change', {\n value: this.dataSource.getValue(),\n id: this.dataSource.id\n });\n } break;\n default:\n break;\n }\n });\n break;\n default:\n break;\n }\n });\n }\n}\n","import { EventHandler } from '@net7/core';\nimport { FacetHistogramDS } from '../../data-sources/facets/facet-histogram.ds';\n\nexport class FacetHistogramEH extends EventHandler {\n dataSource: FacetHistogramDS;\n\n public listen() {\n this.innerEvents$.subscribe(({ type, payload }) => {\n switch (type) {\n case `${this.dataSource.id}.rangeselected`:\n if (payload) {\n this.dataSource.setValue(payload.join('-'));\n this.emitOuter('change', {\n value: this.dataSource.getValue(),\n id: this.dataSource.id\n });\n }\n break;\n case `${this.dataSource.id}.loaded`:\n this.dataSource.loadTooltips();\n break;\n default:\n break;\n }\n });\n }\n}\n","import { HistogramRangeData } from '@net7/components';\nimport { DataSource } from '@net7/core';\nimport tippy from 'tippy.js';\nimport { FacetDataSource } from './facet-datasource';\n\ntype FACET_VALUE = string;\n\nexport class FacetHistogramDS extends DataSource implements FacetDataSource {\n id: string;\n\n value: FACET_VALUE = '';\n\n isUpdate = false;\n\n histogramApi: any;\n\n protected transform({ links }): HistogramRangeData {\n const items = this.parseLinks(links); // format data\n\n const histogramData: HistogramRangeData = {\n containerId: `container-for-histogram-${this.id}`,\n width: 450,\n height: 50,\n colours: {\n top: '#7091B3',\n bottom: '#96c2f2',\n accent: '#2F528B',\n },\n margin: {\n left: 30,\n right: 0,\n top: 10,\n bottom: 45\n },\n axis: {\n yAxis: {\n show: true,\n // tickAmount: 3\n values: [0, 5, 20, 60]\n }\n },\n items,\n setApi: (api) => {\n if (!this.histogramApi) this.histogramApi = api;\n if (this.value) {\n const [firstYear, lastYear] = this.value.split('-');\n const firstLabel = this.getFirstLabel(firstYear, items);\n const lastLabel = this.getLastLabel(lastYear, items);\n setTimeout(() => {\n // when the component loads, set the sliders and the bars\n // (necessary if search url has params)\n this.histogramApi.setSliders([firstLabel, lastLabel]);\n this.histogramApi.setBars(items);\n });\n }\n }\n };\n return histogramData;\n }\n\n setValue = (value, update = false) => {\n this.value = value;\n this.isUpdate = update;\n\n if (update && this.input) {\n const { links } = this.input;\n this.update({ ...this.input, links });\n if (!this.histogramApi) return;\n // format the new bars data\n const newBars = this.parseLinks(links);\n const [firstYear, lastYear] = this.value.split('-');\n // get years for slider positions\n const firstLabel = this.getFirstLabel(firstYear, newBars);\n const lastLabel = this.getLastLabel(lastYear, newBars);\n // update the histogram\n setTimeout(() => {\n this.histogramApi.setSliders(\n [`${firstLabel}`, `${lastLabel}`], // move the sliders\n false // do not emit\n );\n this.loadTooltips();\n });\n this.histogramApi.setBars(newBars);\n }\n // reload the tooltips\n this.loadTooltips();\n };\n\n /**\n * Returns the current facet value\n */\n getValue = (): FACET_VALUE => this.value;\n\n /**\n * Reset to the default facet value\n */\n clear() {\n this.value = '';\n }\n\n /**\n * Loads tippy tooltips and appends them to the histogram bars\n */\n loadTooltips() {\n const elements = document.querySelectorAll(`#container-for-histogram-${this.id} g.bars rect.bars`);\n tippy(elements, {\n content(reference) {\n const start = reference.getAttribute('data-start');\n const end = reference.getAttribute('data-end');\n return `<span class=\"tippy-template\">${start}<br>${end}</span>`;\n },\n allowHTML: true,\n appendTo: () => document.body,\n });\n }\n\n /**\n * Convert the links into the histogram component format\n */\n parseLinks(links) {\n return links.map((link) => ({\n label: `${link.text}`,\n value: link.counter,\n payload: link.payload,\n range: link.range ? {\n payload: link.range.payload,\n label: link.range.text\n } : undefined,\n })).sort((a, b) => +a.label - b.label);\n }\n\n /**\n * Get the left-most label\n */\n private getFirstLabel(year: string, items) {\n if (!year) return items[0].label;\n return items.find(({ label }) => +label === +year)?.label;\n }\n\n /**\n * Get the right-most label\n */\n private getLastLabel(year: string, items) {\n if (!year) return items[items.length - 1].label;\n return items.find(({ label, range }) => {\n if (range) {\n return +range.label === +year;\n }\n return +label === +year;\n })?.label;\n }\n}\n","import {\n Component,\n OnInit,\n OnDestroy,\n Input\n} from '@angular/core';\nimport { AbstractLayout } from '@net7/boilerplate-common';\nimport { MrLocaleService } from '../../services/locale.service';\nimport { SearchFacetsLayoutConfig as config } from './search-facets-layout.config';\nimport { FacetTextDS } from '../../data-sources/facets/facet-text.ds';\nimport { FacetCheckboxDS } from '../../data-sources/facets/facet-checkbox.ds';\nimport { FacetSelectDS } from '../../data-sources/facets/facet-select.ds';\nimport { FacetLinkDS } from '../../data-sources/facets/facet-link.ds';\nimport { FacetHeaderDS } from '../../data-sources/facets/facet-header.ds';\nimport { FacetHeaderEH } from '../../event-handlers/facets/facet-header.eh';\nimport { FacetTextEH } from '../../event-handlers/facets/facet-text.eh';\nimport { FacetCheckboxEH } from '../../event-handlers/facets/facet-checkbox.eh';\nimport { FacetSelectEH } from '../../event-handlers/facets/facet-select.eh';\nimport { FacetLinkEH } from '../../event-handlers/facets/facet-link.eh';\nimport { MrSearchService } from '../../services/search.service';\nimport { FacetLinkMultipleDS } from '../../data-sources/facets/facet-link-multiple.ds';\nimport { FacetLinkMultipleEH } from '../../event-handlers/facets/facet-link-multiple.eh';\nimport { FacetMapDS } from '../../data-sources/facets/facet-map.ds';\nimport { FacetMapEH } from '../../event-handlers/facets/facet-map.eh';\nimport { FacetHistogramEH } from '../../event-handlers/facets/facet-histogram.eh';\nimport { FacetHistogramDS } from '../../data-sources/facets/facet-histogram.ds';\n\nconst DATASOURCE_MAP = {\n header: FacetHeaderDS,\n text: FacetTextDS,\n checkbox: FacetCheckboxDS,\n select: FacetSelectDS,\n link: FacetLinkDS,\n map: FacetMapDS,\n // if the facet value is an array you MUST include it in the name\n 'map-multiple': FacetMapDS,\n 'link-multiple': FacetLinkMultipleDS,\n histogram: FacetHistogramDS,\n};\n\nconst EVENTHANDLER_MAP = {\n header: FacetHeaderEH,\n text: FacetTextEH,\n checkbox: FacetCheckboxEH,\n select: FacetSelectEH,\n link: FacetLinkEH,\n map: FacetMapEH,\n // if the facet value is an array you MUST include it in the name\n 'map-multiple': FacetMapEH,\n 'link-multiple': FacetLinkMultipleEH,\n histogram: FacetHistogramEH,\n};\n\n@Component({\n selector: 'mr-search-facets-layout',\n templateUrl: './search-facets-layout.html'\n})\nexport class MrSearchFacetsLayoutComponent extends AbstractLayout implements OnInit, OnDestroy {\n @Input() searchService: MrSearchService;\n\n @Input() localeService: MrLocaleService;\n\n constructor() {\n super(config);\n }\n\n protected initPayload() {\n return {\n searchService: this.searchService,\n localeService: this.localeService,\n };\n }\n\n ngOnInit() {\n this.loadWidgets();\n this.onInit();\n }\n\n ngOnDestroy() {\n this.onDestroy();\n }\n\n loadWidgets() {\n const { facets } = this.searchService.getConfig();\n this.widgets = [];\n facets.sections.forEach(({ header, inputs }) => {\n if (header) {\n this.widgets.push({\n id: header.id,\n dataSource: DATASOURCE_MAP.header,\n eventHandler: EVENTHANDLER_MAP.header\n });\n }\n inputs.forEach((input) => {\n let inputType = input.type;\n const { multiple } = input.schema;\n // multiple control\n if (multiple) {\n inputType += '-multiple';\n }\n this.widgets.push({\n id: input.id,\n options: {\n isMultiple: !!multiple,\n libOptions: input.libOptions ?? undefined,\n },\n dataSource: DATASOURCE_MAP[inputType],\n eventHandler: EVENTHANDLER_MAP[inputType]\n });\n });\n });\n }\n}\n","<div *ngIf=\"lb.dataSource.facets\" class=\"mr-facets__facets-wrapper {{ lb.dataSource.facets.classes || '' }}\">\n\n <div *ngIf=\"lb.dataSource.redirectPath && lb.dataSource.redirectLabel\" class=\"mr-facets__redirect-link\">\n <a href=\"{{ lb.dataSource.redirectPath }}\">{{ lb.dataSource.redirectLabel }}</a>\n </div>\n\n <div *ngFor=\"let section of lb.dataSource.facets.sections\" \n class=\"mr-facets__single-facet {{ section.classes || '' }}\"\n [ngClass]=\"lb.dataSource.searchService.getState$('section', section.id) | async\"\n id=\"{{ section.id }}\"\n >\n <n7-facet-header\n *ngIf=\"section.header\"\n [data]=\"lb.widgets[section.header.id].ds.out$ | async\"\n [emit]=\"lb.widgets[section.header.id].emit\"\n ></n7-facet-header>\n\n <div [hidden]=\"section.header && !lb.widgets[section.header.id].ds.isOpen()\" class=\"mr-facets__single-facet-content\">\n <div *ngFor=\"let input of section.inputs\" \n [attr.id]=\"'facet-container-' + input.id\"\n class=\"mr-facets__single-facet-inner-content {{ input.classes || '' }}\">\n <ng-container [ngSwitch]=\"input.type\">\n \n <!-- INPUT TEXT -->\n <n7-input-text \n *ngSwitchCase=\"'text'\"\n [data]=\"lb.widgets[input.id].ds.out$ | async\"\n [emit]=\"lb.widgets[input.id].emit\"></n7-input-text>\n \n <!-- INPUT CHECKBOX -->\n <n7-input-checkbox \n *ngSwitchCase=\"'checkbox'\"\n [data]=\"lb.widgets[input.id].ds.out$ | async\"\n [emit]=\"lb.widgets[input.id].emit\"></n7-input-checkbox>\n \n <!-- INPUT SELECT -->\n <n7-input-select \n *ngSwitchCase=\"'select'\"\n [data]=\"lb.widgets[input.id].ds.out$ | async\"\n [emit]=\"lb.widgets[input.id].emit\"></n7-input-select>\n \n <!-- INPUT LINK -->\n <n7-input-link \n *ngSwitchCase=\"'link'\"\n [data]=\"lb.widgets[input.id].ds.out$ | async\"\n [emit]=\"lb.widgets[input.id].emit\"></n7-input-link>\n\n <!-- INPUT LINKMULTI -->\n <n7-input-link \n *ngSwitchCase=\"'linkMulti'\"\n [data]=\"lb.widgets[input.id].ds.out$ | async\"\n [emit]=\"lb.widgets[input.id].emit\"></n7-input-link>\n \n <!-- INPUT MAP -->\n <n7-map \n *ngSwitchCase=\"'map'\"\n [data]=\"lb.widgets[input.id].ds.out$ | async\"\n [emit]=\"lb.widgets[input.id].emit\"></n7-map>\n\n <!-- INPUT HISTOGRAM -->\n <n7-histogram-range \n *ngSwitchCase=\"'histogram'\"\n [data]=\"lb.widgets[input.id].ds.out$ | async\"\n [emit]=\"lb.widgets[input.id].emit\"></n7-histogram-range>\n \n </ng-container>\n </div>\n </div>\n </div>\n</div>\n","export default {\n set(key: string, value: any): void {\n localStorage.setItem(key, value);\n },\n get(key: string): any {\n return localStorage.getItem(key);\n },\n remove(key: string): void {\n localStorage.removeItem(key);\n },\n toggle(key: string, value: any): void {\n if (!this.get(key)) {\n this.set(key, value);\n } else {\n this.remove(key);\n }\n }\n};\n","import { Data } from '@angular/router';\nimport { LayoutDataSource, _t } from '@net7/core';\nimport { ConfigurationService, CommunicationService, MainStateService } from '@net7/boilerplate-common';\nimport localStorageHelper from '../../helpers/local-storage-helper';\nimport { MrSearchService } from '../../services/search.service';\nimport { MrLocaleService } from '../../services/locale.service';\n\nexport class MrSearchLayoutDS extends LayoutDataSource {\n private configuration: ConfigurationService;\n\n private communication: CommunicationService;\n\n private mainState: MainStateService;\n\n private localeService: MrLocaleService;\n\n private routerData: Data;\n\n public searchService: MrSearchService;\n\n public facetsConfig;\n\n public pageConfig;\n\n public totalResultsText: string | null = null;\n\n private hideDescriptionKey: string;\n\n private descriptionLoaded = false;\n\n public showDescription = false;\n\n onInit(payload) {\n this.configuration = payload.configuration;\n this.communication = payload.communication;\n this.mainState = payload.mainState;\n this.localeService = payload.localeService;\n this.searchService = payload.searchService;\n this.routerData = payload.routerData;\n this.pageConfig = this.configuration.get(this.routerData.configId);\n this.hideDescriptionKey = `hide-description-${this.routerData.configId}`;\n\n // config\n this.all().updateOptions({\n config: this.pageConfig,\n localeService: this.localeService\n });\n\n // manual updates\n this.one('mr-search-page-title').update({});\n\n // update head title\n this.updateHeadTitle();\n\n // update translations\n this.addTranslations(this.pageConfig);\n\n // description\n this.getPageDescription();\n }\n\n handleResponse(response) {\n this.some([\n 'mr-search-results-title',\n 'mr-search-results',\n ]).update(response);\n\n // pagination\n this.one('n7-smart-pagination').updateOptions({ mode: 'payload' });\n this.one('n7-smart-pagination').update(this.getPaginationParams(response));\n }\n\n updateActiveFilters(state, linksResponse) {\n // active \"tags\" filters\n this.one('mr-search-tags').update({\n state,\n linksResponse,\n facetsConfig: this.searchService.getConfig().facets\n });\n }\n\n toggleDescription() {\n localStorageHelper.toggle(this.hideDescriptionKey, true);\n this.showDescription = !(localStorageHelper.get(this.hideDescriptionKey));\n\n if (this.showDescription && !this.descriptionLoaded) {\n this.getPageDescription();\n }\n }\n\n private getPaginationParams(response) {\n const { total_count: totalCount, offset, limit } = response;\n const { pagination: paginationConfig } = this.pageConfig;\n\n return {\n totalPages: Math.ceil(totalCount / limit),\n currentPage: (offset + limit) / limit,\n pageLimit: paginationConfig.limit,\n sizes: {\n label: paginationConfig.selectLabel ? _t(paginationConfig.selectLabel) : null,\n list: paginationConfig.options,\n active: limit,\n },\n };\n }\n\n private updateHeadTitle() {\n const appName = this.configuration.get('name');\n const pageTitle = this.pageConfig.title;\n this.mainState.update('headTitle', [appName, _t(pageTitle)].join(' > '));\n }\n\n private addTranslations(config) {\n if (config.facetsTitle) {\n config.facetsTitle = _t(config.facetsTitle);\n }\n if (config.filtersTitle) {\n config.filtersTitle = _t(config.filtersTitle);\n }\n if (config?.sort?.label) {\n config.sort.label = _t(config.sort.label);\n config.sort.options = config.sort.options.map((option) => ({\n ...option,\n label: _t(option.label)\n }));\n }\n ['text', 'button'].forEach((key) => {\n if (config.fallback) {\n config.fallback[key] = _t(config.fallback[key]);\n }\n if (config.ko) {\n config.ko[key] = _t(config.ko[key]);\n }\n });\n }\n\n getPageDescription() {\n if (this.pageConfig.description && !localStorageHelper.get(this.hideDescriptionKey)) {\n const { description } = this.pageConfig;\n const { locale } = this.routerData;\n this.communication.request$('searchDescription', {\n urlParams: locale ? `${description.id}?locale=${locale}` : description.id,\n }).subscribe((response) => {\n this.one('mr-search-page-description').update(response);\n this.descriptionLoaded = true;\n this.showDescription = true;\n });\n }\n }\n}\n","import { EventHandler } from '@net7/core';\nimport { Subject } from 'rxjs';\nimport { isEmpty } from 'lodash';\nimport { takeUntil, filter } from 'rxjs/operators';\nimport { helpers } from '@net7/boilerplate-common';\nimport { MrSearchLayoutDS } from './search-layout.ds';\nimport {\n MrSearchService,\n RESULTS_REQUEST_STATE_CONTEXT,\n INPUT_STATE_CONTEXT,\n FACETS_REQUEST_STATE_CONTEXT,\n SECTION_STATE_CONTEXT\n} from '../../services/search.service';\nimport { MrLayoutStateService, LayoutState } from '../../services/layout-state.service';\nimport { MrResourceModalService } from '../../services/resource-modal.service';\n\nexport class MrSearchLayoutEH extends EventHandler {\n public dataSource: MrSearchLayoutDS;\n\n private destroyed$: Subject<boolean> = new Subject();\n\n private searchService: MrSearchService;\n\n private layoutState: MrLayoutStateService;\n\n private modalService: MrResourceModalService;\n\n private searchState: {\n [key: string]: any;\n } = {};\n\n private linksResponse: any;\n\n private scrollRefElement: HTMLElement;\n\n public listen() {\n this.innerEvents$.subscribe(({ type, payload }) => {\n switch (type) {\n case 'mr-search-layout.init':\n this.searchService = payload.searchService;\n this.layoutState = payload.layoutState;\n this.modalService = payload.modalService;\n this.dataSource.onInit(payload);\n // listeners\n this.initStateListener();\n // scroll top\n window.scrollTo(0, 0);\n // reset scroll ref\n this.scrollRefElement = null;\n break;\n\n case 'mr-search-layout.destroy':\n this.searchService.destroy();\n this.destroyed$.next(true);\n break;\n\n case 'mr-search-layout.searchreset':\n this.searchService.reset();\n break;\n\n default:\n console.warn('unhandled inner event of type', type);\n break;\n }\n });\n\n this.outerEvents$.subscribe(({ type, payload }) => {\n switch (type) {\n case 'n7-smart-pagination.click':\n this.searchService.setState('input', 'page', payload.page);\n break;\n\n case 'n7-smart-pagination.change':\n this.searchService.setState('input', 'limit', payload.value);\n break;\n\n case 'mr-search-results-title.change':\n this.searchService.setState('input', 'sort', payload.value);\n break;\n\n case 'mr-search-page-description.click':\n case 'mr-search-page-title.click':\n this.dataSource.toggleDescription();\n break;\n\n case 'mr-search-tags.click': {\n const stateValue = this.searchState[payload.id];\n let newValue = null;\n if (Array.isArray(stateValue)) {\n newValue = stateValue.filter((value) => value !== payload.value);\n }\n this.searchService.setState('input', payload.id, newValue);\n break;\n }\n\n case 'mr-search-results.openresourcemodal': {\n const { id, type: resourceType } = payload;\n this.modalService.open(id, resourceType);\n break;\n }\n\n default:\n break;\n }\n });\n }\n\n initStateListener() {\n // default params\n const { pageConfig } = this.dataSource;\n const defaultLimit = pageConfig.pagination.options[0];\n const defaultSort = pageConfig.sort.options.find((option) => option.selected === true)?.value;\n // inputs listener\n this.searchService.getState$(INPUT_STATE_CONTEXT).pipe(\n filter(({ lastUpdated }) => this.searchService.isQueryParamKey(lastUpdated)),\n takeUntil(this.destroyed$)\n ).subscribe(({ lastUpdated, state }) => {\n this.searchState = state;\n\n if (lastUpdated !== 'page') {\n this.searchService.setState(INPUT_STATE_CONTEXT, 'page', 1);\n }\n });\n this.searchService.getState$(INPUT_STATE_CONTEXT, 'query').pipe(\n takeUntil(this.destroyed$)\n ).subscribe((val) => {\n this.emitOuter('inputquerychange', val);\n });\n this.searchService.getState$(FACETS_REQUEST_STATE_CONTEXT, 'success').pipe(\n takeUntil(this.destroyed$)\n ).subscribe((response) => {\n this.linksResponse = response;\n this.dataSource.updateActiveFilters(this.searchState, this.linksResponse);\n\n // update sections\n if (response) {\n const { facets } = response;\n Object.keys(facets).forEach((inputKey) => {\n const { total_count: totalCount } = facets[inputKey];\n this.searchService.setState(\n SECTION_STATE_CONTEXT,\n `section-${inputKey}`,\n totalCount ? 'is-not-empty' : 'is-empty'\n );\n });\n }\n });\n\n this.searchService.getState$(RESULTS_REQUEST_STATE_CONTEXT, 'loading').pipe(\n takeUntil(this.destroyed$)\n ).subscribe(() => {\n this.layoutState.set('results', LayoutState.LOADING);\n });\n\n // results params hook\n this.searchService.setBeforeHook(RESULTS_REQUEST_STATE_CONTEXT, 'loading', (params: any = {}) => {\n const results: {\n limit: number;\n offset: number;\n sort?: string;\n } = {\n limit: defaultLimit,\n offset: 0\n };\n\n const sortParam = params.sort || defaultSort;\n\n // sort check\n if (sortParam) {\n results.sort = sortParam;\n }\n\n // limit check\n if (params.limit) {\n results.limit = params.limit;\n }\n\n // offset check\n if (params.page && params.page > 1) {\n results.offset = results.limit * (params.page - 1);\n }\n\n params.results = results;\n\n // cleanup\n Object.keys(params)\n .filter((key) => ['sort', 'page', 'limit'].includes(key))\n .forEach((key) => {\n delete params[key];\n });\n\n return params;\n });\n\n // facets params hook\n this.searchService.setBeforeHook(FACETS_REQUEST_STATE_CONTEXT, 'loading', (params: any = {}) => {\n // clean up\n delete params.results;\n return params;\n });\n\n this.searchService.getState$(RESULTS_REQUEST_STATE_CONTEXT, 'success')\n .subscribe((response) => {\n this.dataSource.handleResponse(response);\n // update layout state\n this.layoutState.set('results', isEmpty(response.results) ? LayoutState.EMPTY : LayoutState.SUCCESS);\n // scroll to ref element\n if (!pageConfig.disableScroll) {\n if (!this.scrollRefElement) {\n this.scrollRefElement = document.querySelector('.scroll-ref');\n } else if (!helpers.isElementInViewport(this.scrollRefElement)) {\n this.scrollRefElement.scrollIntoView();\n }\n }\n });\n\n this.searchService.getState$(RESULTS_REQUEST_STATE_CONTEXT, 'error')\n .subscribe((error) => {\n console.warn(RESULTS_REQUEST_STATE_CONTEXT, error);\n this.layoutState.set('results', LayoutState.ERROR);\n });\n }\n}\n","import { SmartPaginationDS, SmartPaginationEH } from '@net7/boilerplate-common';\nimport { MrSearchLayoutDS } from './search-layout.ds';\nimport { MrSearchLayoutEH } from './search-layout.eh';\nimport * as DS from '../../data-sources';\nimport * as EH from '../../event-handlers';\n\nexport const MrSearchLayoutConfig = {\n layoutId: 'mr-search-layout',\n widgets: [{\n id: 'mr-search-page-title'\n }, {\n id: 'mr-search-page-description'\n }, {\n id: 'mr-search-results-title'\n }, {\n id: 'mr-search-results'\n }, {\n id: 'mr-search-tags'\n }, {\n id: 'mr-resources', dataSource: DS.MrItemPreviewsDS,\n }, {\n id: 'n7-smart-pagination',\n dataSource: SmartPaginationDS,\n eventHandler: SmartPaginationEH,\n }],\n layoutDS: MrSearchLayoutDS,\n layoutEH: MrSearchLayoutEH,\n widgetsDataSources: DS,\n widgetsEventHandlers: EH,\n layoutOptions: {}\n};\n","import { Component, Input } from '@angular/core';\n\nexport type SearchPageDescriptionData = {\n text: string;\n link: {\n text: string;\n payload: any;\n };\n}\n\n@Component({\n selector: 'mr-search-page-description',\n templateUrl: './search-page-description.html',\n})\nexport class MrSearchPageDescriptionComponent {\n @Input() data: SearchPageDescriptionData;\n\n @Input() emit: (type: string, payload: any) => void;\n\n onClick(payload) {\n if (this.emit) {\n this.emit('click', payload);\n }\n }\n}\n","<div *ngIf=\"data\" class=\"mr-search-page-description\">\n <div class=\"mr-search-page-description__text\" [innerHTML]=\"data.text\"></div>\n <a class=\"mr-search-page-description__link\" (click)=\"onClick(data.link.payload)\">{{ data.link.text }}</a>\n</div>","import { Component, OnInit, OnDestroy } from '@angular/core';\nimport { ActivatedRoute, Data, Router } from '@angular/router';\nimport {\n AbstractLayout,\n LayoutsConfigurationService,\n CommunicationService,\n ConfigurationService,\n MainStateService\n} from '@net7/boilerplate-common';\nimport { MrSearchLayoutConfig as config } from './search-layout.config';\nimport { MrSearchService } from '../../services/search.service';\nimport { MrLayoutStateService } from '../../services/layout-state.service';\nimport { MrResourceModalService } from '../../services/resource-modal.service';\nimport { MrLocaleService } from '../../services/locale.service';\n\n@Component({\n selector: 'mr-search-layout',\n templateUrl: './search-layout.html',\n})\nexport class MrSearchLayoutComponent extends AbstractLayout implements OnInit, OnDestroy {\n private routerData: Data;\n\n constructor(\n layoutsConfiguration: LayoutsConfigurationService,\n private router: Router,\n private activatedRoute: ActivatedRoute,\n private communication: CommunicationService,\n private configuration: ConfigurationService,\n private searchService: MrSearchService,\n public layoutState: MrLayoutStateService,\n private mainState: MainStateService,\n public modalService: MrResourceModalService,\n public localeService: MrLocaleService,\n\n ) {\n super(layoutsConfiguration.get('MrSearchLayoutConfig') || config);\n }\n\n protected initPayload() {\n return {\n routerData: this.routerData,\n configuration: this.configuration,\n mainState: this.mainState,\n router: this.router,\n activatedRoute: this.activatedRoute,\n communication: this.communication,\n searchService: this.searchService,\n layoutState: this.layoutState,\n modalService: this.modalService,\n localeService: this.localeService,\n options: this.config.options || {},\n };\n }\n\n ngOnInit() {\n this.activatedRoute.data.subscribe((routerData) => {\n this.routerData = routerData;\n const { configId, locale } = this.routerData;\n const { searchId, searchConfig } = this.configuration.get(configId);\n this.searchService.init(searchId, searchConfig, locale);\n // add layout states\n this.layoutState.add(['results']);\n this.onInit();\n });\n }\n\n ngOnDestroy() {\n this.onDestroy();\n }\n}\n","<div class=\"mr-search mr-layout\"\n *ngIf=\"lb.dataSource\">\n <section class=\"mr-layout__maxwidth mr-side-margin\">\n\n <div class=\"mr-search__title\">\n <n7-inner-title\n [data]=\"lb.widgets['mr-search-page-title'].ds.out$ | async\"\n [emit]=\"lb.widgets['mr-search-page-title'].emit\">\n </n7-inner-title>\n </div>\n\n <div *ngIf=\"lb.dataSource.showDescription\" class=\"mr-search__description\">\n <mr-search-page-description\n [data]=\"lb.widgets['mr-search-page-description'].ds.out$ | async\"\n [emit]=\"lb.widgets['mr-search-page-description'].emit\">\n </mr-search-page-description>\n </div>\n \n <div class=\"mr-search__results-content\">\n <aside class=\"mr-facets\"\n [ngStyle]=\"{\n width: lb.dataSource.pageConfig['facetsWidthPercentage'] ? lb.dataSource.pageConfig['facetsWidthPercentage'] + '%' : ''\n }\">\n <div class=\"scroll-ref\"> </div>\n <div class=\"mr-facets__contents\">\n <h2 class=\"mr-facets__title\" \n *ngIf=\"lb.dataSource.pageConfig['facetsTitle']\">\n {{ lb.dataSource.pageConfig['facetsTitle'] }}\n </h2>\n\n <mr-search-facets-layout \n [searchService]=\"lb.dataSource.searchService\"\n [localeService]=\"lb.dataSource.localeService\">\n </mr-search-facets-layout>\n </div>\n </aside>\n <div class=\"mr-search__results-wrapper\">\n <div class=\"mr-search__results-info\">\n <n7-inner-title\n [data]=\"lb.widgets['mr-search-results-title'].ds.out$ | async\"\n [emit]=\"lb.widgets['mr-search-results-title'].emit\">\n </n7-inner-title>\n </div>\n \n <div *ngIf=\"(\n lb.dataSource.pageConfig['filtersTitle'] && \n lb.widgets['mr-search-tags'].ds.hasFilters\n )\" \n class=\"mr-active-filters\">\n <span class=\"mr-active-filters__label\">{{ lb.dataSource.pageConfig['filtersTitle'] }}</span>\n <div class=\"mr-active-filters__tags-wrapper\">\n <n7-tag *ngFor=\"let tag of (lb.widgets['mr-search-tags'].ds.out$ | async)\"\n [data]=\"tag\"\n [emit]=\"lb.widgets['mr-search-tags'].emit\">\n </n7-tag>\n </div>\n </div>\n\n <main class=\"mr-search__results\">\n <!-- SEARCH RESULTS -->\n <ng-container [ngSwitch]=\"layoutState.get$('results') | async\">\n \n <!-- loading -->\n <ng-container *ngSwitchCase=\"'LOADING'\">\n <div class=\"mr-search__results-loading n7-grid-{{ lb.dataSource.pageConfig.grid || 3 }}\">\n <n7-content-placeholder *ngFor=\"let n of [0,1,2,3,4,5,6,7,8,9]\" [data]=\"{\n blocks: [\n { classes: 'search-result-placeholder-title' },\n { classes: 'search-result-placeholder-metadata' },\n { classes: 'search-result-placeholder-metadata' },\n { classes: 'search-result-placeholder-metadata' }\n ]\n }\"></n7-content-placeholder>\n </div>\n </ng-container>\n \n <!-- success: items > 0 -->\n <ng-container *ngSwitchCase=\"'SUCCESS'\">\n <div class=\"n7-grid-{{ lb.dataSource.pageConfig.grid || 3 }}\">\n <ng-container *ngIf=\"!lb.dataSource.pageConfig?.advancedResults\">\n <n7-item-preview *ngFor=\"let item of (lb.widgets['mr-search-results'].ds.out$ | async)\"\n [data]=\"item\" [emit]=\"lb.widgets['mr-search-results'].emit\">\n </n7-item-preview>\n </ng-container>\n <ng-container *ngIf=\"lb.dataSource.pageConfig?.advancedResults\">\n <mr-advanced-result\n *ngFor=\"let item of (lb.widgets['mr-search-results'].ds.out$ | async)\"\n [data]=\"item\" [emit]=\"lb.widgets['mr-search-results'].emit\">\n </mr-advanced-result>\n </ng-container>\n </div>\n </ng-container>\n\n <!-- empty: items === 0 -->\n <ng-container *ngSwitchCase=\"'EMPTY'\">\n <div class=\"mr-search__results-fallback\">\n <p class=\"mr-search__results-fallback-string\">\n {{ lb.dataSource.pageConfig.fallback.text }}\n </p>\n <button class=\"n7-btn mr-search__results-fallback-button\"\n (click)=\"lb.eventHandler.emitInner('searchreset')\">\n {{ lb.dataSource.pageConfig.fallback.button }}\n </button>\n </div>\n </ng-container>\n\n <!-- error: request problem -->\n <ng-container *ngSwitchCase=\"'ERROR'\">\n <p class=\"mr-search__results-ko-string\">\n {{ lb.dataSource.pageConfig.ko.text }}\n </p>\n <button class=\"n7-btn mr-search__results-ko-button\"\n (click)=\"lb.eventHandler.emitInner('searchreset')\">\n {{ lb.dataSource.pageConfig.ko.button }}\n </button>\n </ng-container>\n \n </ng-container>\n </main> \n <n7-smart-pagination\n *ngIf=\"(layoutState.get$('results') | async) === 'SUCCESS'\"\n [data]=\"lb.widgets['n7-smart-pagination'].ds.out$ | async\"\n [emit]=\"lb.widgets['n7-smart-pagination'].emit\">\n </n7-smart-pagination>\n </div>\n </div>\n\n </section>\n</div>","import { LayoutDataSource, _t } from '@net7/core';\nimport { Observable } from 'rxjs';\nimport { Data, Params, UrlSegment } from '@angular/router';\nimport { ConfigurationService, CommunicationService, MainStateService } from '@net7/boilerplate-common';\n\nexport class MrStaticLayoutDS extends LayoutDataSource {\n private configuration: ConfigurationService;\n\n private communication: CommunicationService;\n\n private mainState: MainStateService;\n\n private routerData: Data;\n\n public pageConfig;\n\n public content: string | null;\n\n public title: string | null;\n\n public errorTitle = _t('global#layout_error_title');\n\n public errorDescription = _t('global#layout_error_description');\n\n onInit(payload) {\n this.communication = payload.communication;\n this.configuration = payload.configuration;\n this.mainState = payload.mainState;\n this.routerData = payload.routerData;\n this.pageConfig = this.configuration.get(this.routerData.configId);\n }\n\n pageRequest$(\n { urlSegments, routerParams, onError }:\n { urlSegments: UrlSegment[], routerParams: Params; onError: (err: any) => void }\n ): Observable<any> {\n const { slug } = routerParams;\n const { apiPoint } = this.pageConfig || {};\n\n // no locale slug setup\n if (!slug) {\n if (urlSegments.length > 1) {\n return this.communication.request$(apiPoint || 'post', {\n onError,\n urlParams: urlSegments[1].path,\n });\n } return this.communication.request$(apiPoint || 'static', {\n onError,\n urlParams: urlSegments[0].path,\n });\n }\n return this.communication.request$(apiPoint || 'static', {\n onError,\n urlParams: slug,\n });\n }\n\n handleResponse(response: any) {\n this.setHtml(response);\n this.updateHeadTitle(response.title);\n }\n\n setHtml(response) {\n const { content, title } = response;\n this.title = title;\n this.content = content;\n this.one('mr-static-metadata').update(response);\n }\n\n updateHeadTitle(pageTitle: string) {\n const appName = this.configuration.get('name');\n this.mainState.update('headTitle', [appName, pageTitle].join(' > '));\n }\n}\n","import {\n ActivatedRoute, Data, Params, Router, UrlSegment\n} from '@angular/router';\nimport { HttpErrorResponse } from '@angular/common/http';\nimport { Subject } from 'rxjs';\nimport { EventHandler } from '@net7/core';\nimport {\n takeUntil, switchMap, tap, map\n} from 'rxjs/operators';\nimport { MrLayoutStateService, LayoutState } from '../../services/layout-state.service';\nimport { MrStaticLayoutDS } from './static-layout.ds';\n\nexport class MrStaticLayoutEH extends EventHandler {\n private route: ActivatedRoute;\n\n private router: Router;\n\n public dataSource: MrStaticLayoutDS;\n\n private layoutState: MrLayoutStateService;\n\n private destroy$: Subject<void> = new Subject();\n\n public listen() {\n this.innerEvents$.subscribe(({ type, payload }) => {\n switch (type) {\n case 'mr-static-layout.init':\n this.route = payload.route;\n this.router = payload.router;\n this.layoutState = payload.layoutState;\n this.dataSource.onInit(payload);\n\n // listen route\n this.listenRoute();\n // scroll top\n window.scrollTo(0, 0);\n break;\n\n case 'mr-static-layout.destroy':\n this.destroy$.next();\n break;\n\n default:\n console.warn('unhandled inner event of type', type);\n break;\n }\n });\n }\n\n private listenRoute() {\n this.route.url.pipe(\n takeUntil(this.destroy$),\n map((urlSegments: UrlSegment[]) => ({\n urlSegments,\n routerParams: this.route.snapshot.params,\n routerData: this.route.snapshot.data,\n })),\n tap(() => {\n this.layoutState.set('content', LayoutState.LOADING);\n }),\n switchMap((\n { urlSegments, routerParams, routerData }:\n { urlSegments: UrlSegment[]; routerParams: Params; routerData: Data }\n ) => this.dataSource.pageRequest$({\n urlSegments,\n routerParams,\n onError: (err: HttpErrorResponse) => {\n if (err.status === 404) {\n // getting not found path\n const { config } = this.router;\n let route404 = config.find(({ data }) => data?.id === 'page-404' && data.locale === routerData.locale);\n if (!route404) {\n route404 = config.find(({ data }) => data?.id === 'page-404');\n }\n const path404 = route404?.path || 'page-404';\n this.router.navigate([path404]);\n } else {\n console.warn(`Error loading static layout for ${urlSegments}`, err.message);\n this.layoutState.set('content', LayoutState.ERROR);\n }\n }\n }))\n ).subscribe((response) => {\n this.layoutState.set('content', LayoutState.SUCCESS);\n this.dataSource.handleResponse(response);\n });\n }\n}\n","import { MrStaticLayoutDS } from './static-layout.ds';\nimport { MrStaticLayoutEH } from './static-layout.eh';\nimport * as DS from '../../data-sources';\nimport * as EH from '../../event-handlers';\n\nexport const MrStaticLayoutConfig = {\n layoutId: 'mr-static-layout',\n widgets: [{\n id: 'mr-static-metadata'\n }],\n layoutDS: MrStaticLayoutDS,\n layoutEH: MrStaticLayoutEH,\n widgetsDataSources: DS,\n widgetsEventHandlers: EH,\n layoutOptions: {}\n};\n","import { Component, OnInit, OnDestroy } from '@angular/core';\nimport { ActivatedRoute, Data, Router } from '@angular/router';\nimport {\n AbstractLayout,\n CommunicationService,\n ConfigurationService,\n MainStateService,\n LayoutsConfigurationService,\n} from '@net7/boilerplate-common';\nimport { MrLayoutStateService } from '../../services/layout-state.service';\nimport { MrStaticLayoutConfig as config } from './static-layout.config';\n\n@Component({\n selector: 'mr-static-layout',\n templateUrl: './static-layout.html',\n})\nexport class MrStaticLayoutComponent extends AbstractLayout implements OnInit, OnDestroy {\n private routerData: Data;\n\n constructor(\n private communication: CommunicationService,\n private configuration: ConfigurationService,\n private mainState: MainStateService,\n private route: ActivatedRoute,\n private router: Router,\n public layoutState: MrLayoutStateService,\n layoutsConfiguration: LayoutsConfigurationService,\n ) {\n super(layoutsConfiguration.get('MrStaticLayoutConfig') || config);\n }\n\n protected initPayload() {\n return {\n routerData: this.routerData,\n communication: this.communication,\n configuration: this.configuration,\n mainState: this.mainState,\n layoutState: this.layoutState,\n route: this.route,\n router: this.router,\n options: this.config.options || {}\n };\n }\n\n ngOnInit() {\n this.route.data.subscribe((routerData) => {\n this.routerData = routerData;\n // add layout states\n this.layoutState.add('content');\n this.onInit();\n });\n }\n\n ngOnDestroy() {\n this.onDestroy();\n }\n}\n","<div class=\"mr-static mr-layout\"\n *ngIf=\"lb.dataSource\"\n [ngClass]=\"{\n 'is-loading': ( layoutState.get$('content') | async ) == 'LOADING',\n 'is-error': ( layoutState.get$('content') | async ) == 'ERROR'\n }\">\n <!-- STATIC LAYOUT CONTENT -->\n <ng-container [ngSwitch]=\"layoutState.get$('content') | async\">\n <!-- loading -->\n <ng-container *ngSwitchCase=\"'LOADING'\">\n <div class=\"mr-layout__loader\">\n <n7-loader></n7-loader>\n </div>\n </ng-container>\n\n <!-- error -->\n <ng-container *ngSwitchCase=\"'ERROR'\">\n <div class=\"mr-layout__error\">\n <h2>{{ lb.dataSource.errorTitle }}</h2>\n <p>{{ lb.dataSource.errorDescription }}</p>\n </div>\n </ng-container>\n\n <!-- success -->\n <ng-container *ngSwitchCase=\"'SUCCESS'\">\n <div class=\"mr-static__top\">\n <h1 class=\"mr-static__title mr-generated-title-WP\">{{lb.dataSource.title}}</h1>\n <div class=\"mr-static__metadata\">\n <n7-metadata-viewer \n [data]=\"lb.widgets['mr-static-metadata'].ds.out$ | async\">\n </n7-metadata-viewer>\n </div>\n </div>\n \n <div class=\"mr-static__content mr-wp-content\" [innerHTML]=\"lb.dataSource.content | keepHtml\"></div>\n </ng-container>\n \n </ng-container>\n</div>\n","import { LayoutDataSource, _t } from '@net7/core';\nimport {\n Anchor, ItemPreviewData, MetadataGroup, TimelineData\n} from '@net7/components';\nimport { Timeline } from 'vis-timeline';\nimport { Subject } from 'rxjs';\nimport { first } from 'rxjs/operators';\nimport {\n ConfigurationService,\n CommunicationService,\n MainStateService,\n helpers\n} from '@net7/boilerplate-common';\nimport { Router } from '@angular/router';\nimport { Location } from '@angular/common';\nimport { MrLayoutStateService } from '../../services/layout-state.service';\nimport 'leaflet.markercluster';\nimport { GetResourceResponse } from './timeline-layout.types';\nimport { MrLocaleService } from '../../services/locale.service';\nimport linksHelper from '../../helpers/links-helper';\n\n// demo page: http://localhost:4200/timeline/2992/missione-venezia\n\nexport class MrTimelineLayoutDS extends LayoutDataSource {\n private configuration: ConfigurationService;\n\n private communication: CommunicationService;\n\n private mainState: MainStateService;\n\n private layoutState: MrLayoutStateService;\n\n private router: Router;\n\n private configId: string;\n\n private pageConfig;\n\n private localeService: MrLocaleService;\n\n private location: Location;\n\n public loading = {\n resourceDetails: true,\n timeline: true,\n };\n\n public defaultDescription = '';\n\n public eventHeader: string;\n\n public eventDescription = '';\n\n public timelineData: TimelineData;\n\n public hasMap = false;\n\n public hasGallery = false;\n\n public route;\n\n public mapHeader;\n\n public timelineListener$: Subject<Timeline> = new Subject();\n\n public bibliographyData: {\n header: { title: string };\n items: {\n payload?: {\n action: string;\n id: number;\n type: string;\n };\n text?: string;\n }[];\n };\n\n public collectionWorksData: {\n header: { title: string };\n items: ItemPreviewData[];\n };\n\n public collectionWitnessData: {\n header: { title: string };\n items: ItemPreviewData[];\n };\n\n public collectionBooksData: {\n header: { title: string };\n items: ItemPreviewData[];\n };\n\n public collectionData: any;\n\n public collectionGalleryData;\n\n public eventTitle: string;\n\n onInit(payload) {\n this.configuration = payload.configuration;\n this.communication = payload.communication;\n this.route = payload.route;\n this.router = payload.router;\n this.localeService = payload.localeService;\n this.location = payload.location;\n\n this.configId = payload.configId;\n this.pageConfig = this.configuration.get(this.configId) || {};\n\n const locale = this.localeService.getLocale();\n\n // update the timeline\n this.loading.timeline = true;\n this.communication\n .request$('timeline', {\n method: 'GET',\n urlParams: locale ? `?locale=${locale}` : '',\n onError: (e) => console.error(e),\n })\n .subscribe((d) => {\n this.timelineData = d;\n this.loading.timeline = false;\n this.one('mr-timeline').updateOptions({\n libOptions: this.pageConfig.libOptions,\n });\n this.one('mr-timeline').update(d);\n this.loading.timeline = false;\n });\n this.getWidgetDataSource('mr-timeline')\n .timelineLoaded$.pipe(first())\n .subscribe((timeline: Timeline) => {\n this.timelineListener$.next(timeline);\n });\n\n // update the description\n this.communication\n .request$('timelineDescription', {\n method: 'GET',\n urlParams: locale ? `?locale=${locale}` : '',\n onError: (e) => console.error(e),\n })\n .subscribe((d) => {\n this.defaultDescription = d.text;\n this.loadDefaults(false);\n });\n\n // set map header\n this.mapHeader = _t(this.pageConfig.mapHeader);\n }\n\n loadDefaults(navigate: boolean) {\n const timelineInstance = this.getWidgetDataSource('mr-timeline')\n .timeline as Timeline;\n if (timelineInstance) {\n timelineInstance.setSelection([]);\n }\n this.eventDescription = this.defaultDescription;\n this.eventHeader = '';\n this.hasMap = false;\n this.bibliographyData = undefined;\n this.collectionWitnessData = undefined;\n this.collectionWorksData = undefined;\n this.collectionBooksData = undefined;\n this.collectionGalleryData = undefined;\n this.collectionData = [];\n if (navigate) {\n const href = this.localeService.getLinkByRouteId('timeline');\n this.location.go(href);\n }\n this.one('mr-year-header').update({\n title: { main: { text: _t(this.pageConfig.title) } },\n });\n }\n\n updatePageDetails(id) {\n const locale = this.localeService.getLocale();\n this.communication\n .request$('resource', {\n onError: (e) => console.error(e),\n method: 'POST',\n urlParams: locale ? `?locale=${locale}` : '',\n params: {\n id,\n type: 'views/time-events',\n },\n })\n .subscribe((res: GetResourceResponse) => {\n // any\n if (!res || res == null) return;\n\n const {\n /* eslint-disable */\n \"collection-bibliography\": bibData,\n \"collection-places\": placesData,\n gallery,\n header,\n /* eslint-enable */\n } = res.sections;\n\n if (res.sections['collection-bibliography']) {\n delete res.sections['collection-bibliography'];\n }\n if (res.sections['collection-places']) {\n delete res.sections['collection-places'];\n }\n const collections = [];\n const itemPreviewOptions = {\n limit: 100,\n striptags: true\n };\n Object.keys(res.sections).forEach((collection) => {\n if (String(collection).startsWith('collection-')) {\n if (res.sections[collection].items) {\n collections.push({\n items: res.sections[collection].items.map(\n (item: {\n id: string;\n link: string;\n title: string;\n text: string;\n metadata: any;\n type: string;\n routeId?: string;\n params?: object;\n slug?: string;\n }): ItemPreviewData => {\n let anchor: Anchor;\n if (item.text) {\n // Sanitize HTML tags from the text content\n if (itemPreviewOptions.striptags) {\n item.text = helpers.striptags(item.text);\n }\n // Limit the length of the item preview text content\n if (itemPreviewOptions.limit\n && (item.text.length > itemPreviewOptions.limit)) {\n item.text = `${item.text.substring(0, itemPreviewOptions.limit)}...`;\n }\n }\n const metadata: MetadataGroup[] = [];\n if (Array.isArray(item.metadata)) {\n item.metadata.forEach((group) => {\n const metadataItems = [];\n (group.items || []).forEach((metadataItem) => {\n metadataItems.push({\n ...metadataItem,\n label: _t(metadataItem.label)\n });\n });\n metadata.push({ items: metadataItems });\n });\n }\n if (item.routeId) {\n const routeLink = this.localeService\n .getLinkByRouteId(item.routeId, item.id, item.slug);\n anchor = {\n href: routeLink,\n queryParams: item.params || null,\n };\n } else if (item.link) {\n anchor = {\n href: linksHelper.getRouterLink(item.link),\n queryParams: linksHelper.getQueryParams(item.link),\n };\n }\n return {\n title: item.title,\n text: item.text,\n metadata,\n anchor\n };\n }\n ),\n header: res.sections[collection].header,\n grid: res.sections[collection].grid,\n });\n }\n this.collectionData = collections;\n }\n });\n\n if (gallery) {\n // this.collectionGalleryData = gallery;\n this.hasGallery = true;\n this.one('mr-gallery').update(gallery);\n } else {\n this.collectionGalleryData = undefined;\n }\n if (header) {\n this.eventDescription = header.content;\n this.eventHeader = res.title;\n this.one('mr-year-header').update({\n title: { main: { text: header.title } },\n actions: {\n buttons: [\n {\n text: '',\n icon: 'n7-icon-close',\n anchor: {\n payload: 'closebutton',\n },\n },\n ],\n },\n });\n }\n if (placesData) {\n this.hasMap = true;\n this.one('mr-map').update(placesData);\n } else {\n this.hasMap = false;\n }\n if (bibData) {\n this.bibliographyData = {\n header: bibData.header,\n items: bibData.items.map((item) => ({\n ...item,\n anchor: {\n payload: item.payload,\n },\n classes: 'mr-item-preview-bibliography',\n })),\n };\n } else {\n this.bibliographyData = undefined;\n }\n this.loading.resourceDetails = false;\n });\n }\n}\n","import { ActivatedRoute, Router } from '@angular/router';\nimport { EventHandler } from '@net7/core';\nimport { Timeline } from 'vis-timeline';\nimport { helpers } from '@net7/boilerplate-common';\nimport { Location } from '@angular/common';\nimport { MrResourceModalService } from '../../services/resource-modal.service';\nimport { MrLocaleService } from '../../services/locale.service';\n\nexport class MrTimelineLayoutEH extends EventHandler {\n private modalService: MrResourceModalService;\n\n private route: ActivatedRoute;\n\n private router: Router;\n\n private localeService: MrLocaleService;\n\n private location: Location;\n\n public listen() {\n this.innerEvents$.subscribe(({ type, payload }) => {\n switch (type) {\n case 'mr-timeline-layout.init':\n this.dataSource.onInit(payload);\n this.modalService = payload.modalService;\n this.route = payload.route;\n this.router = payload.router;\n this.localeService = payload.localeService;\n this.location = payload.location;\n this.listenRoute();\n // scroll top\n window.scrollTo(0, 0);\n\n this.dataSource.timelineListener$.subscribe((timeline: Timeline) => {\n timeline.on('click', (props) => {\n if (!props.item) return;\n // build URL slug\n const { content } = this.dataSource.timelineData.dataSet\n .find((d: { id: number; content: string }) => d.id === props.item);\n const slug = helpers.slugify(content);\n // navigate without reloading the layout\n const href = this.localeService.getLinkByRouteId('timelineItem', props.item, slug);\n this.location.go(href);\n this.dataSource.updatePageDetails(props.item);\n });\n });\n break;\n case 'mr-timeline-layout.destroy':\n break;\n default:\n console.warn('unhandled inner event of type', type);\n break;\n }\n });\n this.outerEvents$.subscribe(({ type }) => {\n switch (type) {\n case 'mr-year-header.closeevent':\n this.dataSource.loadDefaults(true);\n break;\n default:\n break;\n }\n });\n }\n\n private listenRoute() {\n this.route.paramMap.subscribe((params) => {\n const paramId = params.get('id');\n if (paramId) {\n this.dataSource.currentId = paramId;\n this.emitOuter('routechanged', paramId);\n this.dataSource.updatePageDetails(paramId);\n } else {\n this.dataSource.loadDefaults(true);\n }\n });\n }\n\n public itemPreviewEmit = (type, payload) => {\n if (type === 'click' && payload?.action === 'resource-modal') {\n const { id, type: resourceType } = payload;\n this.modalService.open(id, resourceType);\n }\n };\n}\n","import { MrTimelineLayoutDS } from './timeline-layout.ds';\nimport { MrTimelineLayoutEH } from './timeline-layout.eh';\nimport * as DS from '../../data-sources';\nimport * as EH from '../../event-handlers';\n\nexport const MrTimelineLayoutConfig = {\n layoutId: 'mr-timeline-layout',\n widgets: [\n { id: 'mr-timeline' },\n { id: 'mr-map' },\n { id: 'mr-year-header' }\n ],\n layoutDS: MrTimelineLayoutDS,\n layoutEH: MrTimelineLayoutEH,\n widgetsDataSources: DS,\n widgetsEventHandlers: EH,\n options: {\n // TODO\n },\n};\n","import { Component, OnInit, OnDestroy } from '@angular/core';\nimport { ActivatedRoute, Router } from '@angular/router';\nimport {\n AbstractLayout,\n CommunicationService,\n LayoutsConfigurationService,\n ConfigurationService,\n MainStateService\n} from '@net7/boilerplate-common';\nimport { Location } from '@angular/common';\nimport { MrResourceModalService } from '../../services/resource-modal.service';\nimport { MrLayoutStateService } from '../../services/layout-state.service';\nimport { MrTimelineLayoutConfig as config } from './timeline-layout.config';\nimport { MrLocaleService } from '../../services/locale.service';\nimport { MrGalleryDS } from '../../data-sources/gallery.ds';\nimport { MrGalleryEH } from '../../event-handlers/gallery.eh';\n\nconst DATASOURCE_MAP = {\n gallery: MrGalleryDS\n};\n\nconst EVENTHANDLER_MAP = {\n gallery: MrGalleryEH\n};\n\n@Component({\n selector: 'mr-timeline-layout',\n templateUrl: './timeline-layout.html',\n})\nexport class MrTimelineLayoutComponent extends AbstractLayout implements OnInit, OnDestroy {\n private configId: string;\n\n constructor(\n layoutsConfiguration: LayoutsConfigurationService,\n private route: ActivatedRoute,\n private router: Router,\n private configuration: ConfigurationService,\n private communication: CommunicationService,\n private mainState: MainStateService,\n public layoutState: MrLayoutStateService,\n public modalService: MrResourceModalService,\n public localeService: MrLocaleService,\n public location: Location,\n ) {\n super(layoutsConfiguration.get('MrTimelineLayoutConfig') || config);\n }\n\n protected initPayload() {\n return {\n configId: this.configId,\n mainState: this.mainState,\n configuration: this.configuration,\n communication: this.communication,\n layoutState: this.layoutState,\n modalService: this.modalService,\n route: this.route,\n router: this.router,\n localeService: this.localeService,\n location: this.location,\n options: this.config.options || {}\n };\n }\n\n ngOnInit() {\n this.route.data.subscribe((data) => {\n this.layoutState.add('content');\n this.configId = data.configId;\n this.loadWidgets();\n this.onInit();\n });\n }\n\n ngOnDestroy() {\n this.onDestroy();\n }\n\n loadWidgets() {\n this.widgets.push({\n id: 'mr-gallery',\n dataSource: DATASOURCE_MAP.gallery,\n eventHandler: EVENTHANDLER_MAP.gallery\n });\n }\n}\n","<div class=\"mr-timeline mr-layout\" *ngIf=\"lb.dataSource\">\n <div class=\"mr-timeline__timeline\">\n <div\n class=\"mr-timeline__timeline-loading\"\n *ngIf=\"lb.dataSource.loading.timeline\">\n <n7-loader></n7-loader>\n </div>\n <n7-timeline\n [data]=\"lb.widgets['mr-timeline'].ds.out$ | async\"\n *ngIf=\"!lb.dataSource.loading.timeline\"\n >\n </n7-timeline>\n </div>\n\n <div class=\"mr-timeline__page mr-side-margin\">\n <!-- Result header -->\n <div class=\"mr-timeline__page-header\">\n <p\n class=\"mr-timeline__date\"\n *ngIf=\"!lb.dataSource.loading.resourceDetails\"\n >\n {{lb.dataSource.eventHeader}}\n </p>\n <div class=\"mr-timeline__title\">\n <n7-inner-title\n [data]=\"lb.widgets['mr-year-header'].ds.out$ | async\"\n [emit]=\"lb.widgets['mr-year-header'].emit\"\n >\n </n7-inner-title>\n </div>\n </div>\n <!-- END // Result header -->\n\n <div class=\"mr-timeline__content\">\n <!-- DESCRIZIONE -->\n <div *ngIf=\"lb.dataSource.eventDescription\" class=\"mr-content-block mr-content-block-description\">\n <p [innerHTML]=\"lb.dataSource.eventDescription\"></p>\n <p></p>\n </div>\n\n <ng-container *ngIf=\"!lb.dataSource.loading.resourceDetails\">\n <!-- GALLERIA -->\n <mr-gallery *ngIf=\"lb.dataSource.hasGallery\" \n [grid]=\"4\" \n [data]=\"lb.widgets['mr-gallery'].ds.out$ | async\" \n [emit]=\"lb.widgets['mr-gallery'].emit\">\n </mr-gallery>\n\n <!-- MAPPA -->\n <div\n class=\"mr-content-block mr-content-block-map\"\n *ngIf=\"lb.dataSource.hasMap\"\n >\n <h3 class=\"mr-content-block__title\" *ngIf=\"lb.dataSource.mapHeader\">\n {{ lb.dataSource.mapHeader }}\n </h3>\n <div class=\"mr-content-block__content\">\n <n7-map [data]=\"lb.widgets['mr-map'].ds.out$ | async\"></n7-map>\n </div>\n </div>\n\n <!-- BIBLIOGRAFIA -->\n <ng-container *ngIf=\"lb.dataSource.bibliographyData as biblio\">\n <ng-container *ngIf=\"biblio.items && biblio.items.length > 0\">\n <div class=\"mr-content-block mr-content-block-collection\">\n <h3 class=\"mr-content-block__title\">{{ biblio.header.title }}</h3>\n <div class=\"mr-content-block__content n7-grid-1\">\n <ng-container *ngFor=\"let item of biblio.items\">\n <div class=\"mr-timeline__collection-content\">\n <n7-item-preview\n [emit]=\"lb.eventHandler.itemPreviewEmit\"\n [data]=\"item\"\n >\n </n7-item-preview>\n </div>\n </ng-container>\n </div>\n </div>\n </ng-container>\n </ng-container>\n\n <!-- COLLECTIONS -->\n <ng-container *ngFor=\"let coll of lb.dataSource.collectionData\">\n <ng-container *ngIf=\"coll.items && coll.items.length > 0\">\n <div class=\"mr-content-block-collection mr-content-block\">\n <h3 class=\"mr-content-block__title\">{{ coll.header.title }}</h3>\n <div class=\"mr-content-block__content {{ coll.grid ? 'n7-grid-' + coll.grid : 'n7-grid-3' }}\">\n <n7-item-preview *ngFor=\"let item of coll.items\" [data]=\"item\">\n </n7-item-preview>\n </div>\n </div>\n </ng-container>\n </ng-container>\n </ng-container>\n </div>\n </div>\n</div>\n","import {\n Component, OnDestroy, OnInit\n} from '@angular/core';\nimport { _t } from '@net7/core';\nimport { Subject } from 'rxjs';\nimport { filter, takeUntil } from 'rxjs/operators';\nimport { NavigationStart, Router } from '@angular/router';\nimport { isEmpty } from 'lodash';\nimport { MrLocaleService } from '../../services/locale.service';\nimport { ModalStatus, MrResourceModalService } from '../../services/resource-modal.service';\n\nimport {\n MrCollectionDS,\n MrInnerTitleDS,\n MrItemPreviewDS,\n MrMetadataDS,\n} from '../../data-sources';\n\nconst DATASOURCE_MAP = {\n collection: MrCollectionDS,\n metadata: MrMetadataDS,\n preview: MrItemPreviewDS,\n title: MrInnerTitleDS,\n};\n\n@Component({\n selector: 'mr-resource-modal',\n templateUrl: './resource-modal.html',\n})\nexport class MrResourceModalComponent implements OnInit, OnDestroy {\n private destroy$: Subject<void> = new Subject();\n\n public status: ModalStatus = 'IDLE';\n\n public config: any;\n\n public widgets: {\n [id: string]: {\n ds: any;\n };\n } = {};\n\n public errorTitle = _t('global#layout_error_title');\n\n public errorDescription = _t('global#layout_error_description');\n\n constructor(\n private router: Router,\n private modalService: MrResourceModalService,\n private localeService: MrLocaleService,\n ) { }\n\n ngOnInit() {\n this.modalService.state$\n .pipe(\n takeUntil(this.destroy$)\n )\n .subscribe(({ status, config, response }) => {\n this.status = status;\n this.config = config;\n\n if (status === 'SUCCESS') {\n this.loadWidgets(config, response);\n }\n });\n\n // on router change close\n this.router.events.pipe(\n takeUntil(this.destroy$),\n filter(() => !isEmpty(this.widgets)),\n filter((event) => event instanceof NavigationStart),\n ).subscribe(() => {\n this.onClose();\n });\n }\n\n ngOnDestroy() {\n // reset\n this.onClose();\n this.destroy$.next();\n }\n\n onClose(target?: { className: string }) {\n if (target && target.className !== 'mr-resource-modal__overlay') {\n return;\n }\n this.widgets = {};\n this.modalService.close();\n }\n\n private loadWidgets(config, response) {\n const { top, content } = config.sections;\n const sections = top.concat(content);\n if (sections) {\n sections.forEach(({ id, type, options }) => {\n const data = response.sections[id];\n this.widgets[id] = {\n ds: new DATASOURCE_MAP[type]()\n };\n\n // update options\n this.widgets[id].ds.options = {\n ...(options || {}),\n localeService: this.localeService\n };\n\n // update data\n if (data) {\n this.widgets[id].ds.update(data);\n }\n });\n }\n }\n}\n","<div *ngIf=\"status !== 'IDLE'\" class=\"mr-modal mr-resource-modal\" [ngClass]=\"{\n 'is-loading': status === 'LOADING',\n 'is-error': status === 'ERROR'\n }\">\n <div class=\"mr-modal__overlay\" (click)=\"onClose($event.target)\">\n <div class=\"mr-modal__window mr-resource-modal__window\">\n <ng-container [ngSwitch]=\"status\">\n\n <!-- Loading -->\n <ng-container *ngSwitchCase=\"'LOADING'\">\n <div class=\"mr-modal__loader\">\n <n7-loader></n7-loader>\n </div>\n </ng-container>\n\n <!-- Error -->\n <ng-container *ngSwitchCase=\"'ERROR'\">\n\n <div class=\"mr-modal__header mr-resource-modal__header\">\n <h2 class=\"mr-modal__header-title\">\n {{ errorTitle }}\n </h2>\n <div class=\"mr-modal__close\">\n <a class=\"mr-modal__close-link\" (click)=\"onClose()\"><span class=\"n7-icon-close\"></span></a>\n </div>\n </div>\n <div class=\"mr-modal__content\">\n <p class=\"mr-modal__error-text\">{{ errorDescription }}</p>\n </div>\n\n </ng-container>\n\n <!-- Success -->\n <ng-container *ngSwitchCase=\"'SUCCESS'\">\n \n <div class=\"mr-modal__header mr-resource-modal__header\">\n <ng-container *ngIf=\"config.sections as sections\">\n <ng-container *ngTemplateOutlet=\"blocks; context: { $implicit: sections.top }\"></ng-container>\n </ng-container>\n <div class=\"mr-modal__close\">\n <a class=\"mr-modal__close-link\" (click)=\"onClose()\"><span class=\"n7-icon-close\"></span></a>\n </div>\n </div>\n <div class=\"mr-modal__content mr-resource-modal__content\">\n <ng-container *ngIf=\"config.sections as sections\">\n <ng-container *ngTemplateOutlet=\"blocks; context: { $implicit: sections.content }\"></ng-container> \n </ng-container>\n </div>\n </ng-container>\n\n </ng-container>\n\n </div>\n </div>\n</div>\n\n<ng-template #blocks let-list>\n <ng-container *ngFor=\"let section of list\">\n <section *ngIf=\"widgets[section.id].ds && (widgets[section.id].ds.out$ | async)\"\n class=\"{{ 'mr-resource__section mr-resource__' + section.type }}\">\n <ng-container [ngSwitch]=\"section.type\">\n\n <!-- INNER TITLE -->\n <ng-container *ngSwitchCase=\"'title'\">\n <n7-inner-title [data]=\"widgets[section.id].ds.out$ | async\">\n </n7-inner-title>\n </ng-container>\n\n <!-- METADATA VIEWER -->\n <ng-container *ngSwitchCase=\"'metadata'\">\n <div class=\"mr-resource-modal__metadata-content\">\n <h3 *ngIf=\"section.title\" class=\"mr-resource-modal__section-title mr-resource__metadata-title\">\n {{ section.title }}\n </h3>\n <mr-read-more [data]=\"section.readmore\">\n <n7-metadata-viewer [data]=\"widgets[section.id].ds.out$ | async\">\n </n7-metadata-viewer>\n </mr-read-more>\n </div>\n </ng-container>\n\n <!-- COLLECTION -->\n <ng-container *ngSwitchCase=\"'collection'\">\n <ng-container *ngIf=\"widgets[section.id].ds.out$ | async as collection$\">\n <div *ngIf=\"collection$.items?.length > 0\" class=\"mr-resource__collection-content\">\n <h3 *ngIf=\"section.title\" class=\"mr-resource-modal__section-title\">\n {{ section.title }}\n </h3>\n <div\n class=\"mr-resource__collection-grid {{ section.grid ? 'n7-grid-' + section.grid : '' }}\">\n <n7-item-preview *ngFor=\"let item of collection$?.items\" [data]=\"item\">\n </n7-item-preview>\n </div>\n </div>\n </ng-container>\n </ng-container>\n\n <!-- ITEM PREVIEW -->\n <ng-container *ngSwitchCase=\"'preview'\">\n <h3 *ngIf=\"section.title\" class=\"mr-resource-modal__section-title\">\n {{ section.title }}\n </h3>\n <n7-item-preview [data]=\"widgets[section.id].ds.out$ | async\">\n </n7-item-preview>\n </ng-container>\n\n </ng-container>\n </section>\n </ng-container>\n</ng-template>\n","// MODULES\nimport { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { Router } from '@angular/router';\nimport { DvComponentsLibModule } from '@net7/components';\nimport { MainStateService, N7BoilerplateCommonModule } from '@net7/boilerplate-common';\n// SERVICES\nimport { MrSearchService } from './services/search.service';\nimport { MrLayoutStateService } from './services/layout-state.service';\nimport { MrResourceModalService } from './services/resource-modal.service';\nimport { MrLocaleService } from './services/locale.service';\n// PIPES\nimport { EscapeHtmlPipe } from './pipes/keep-html.pipe';\n// LAYOUTS\nimport { MrAdvancedResultsLayoutComponent } from './layouts/advanced-results-layout/advanced-results-layout';\nimport { MrAdvancedSearchLayoutComponent } from './layouts/advanced-search-layout/advanced-search-layout';\nimport { MrHomeLayoutComponent } from './layouts/home-layout/home-layout';\nimport { MrItineraryLayoutComponent } from './layouts/itinerary-layout/itinerary-layout';\nimport { MrMapLayoutComponent } from './layouts/map-layout/map-layout';\nimport { MrNetworkLayoutComponent } from './layouts/network-layout/network-layout';\nimport { MrPostsLayoutComponent } from './layouts/posts-layout/posts-layout';\nimport { MrResourceLayoutComponent } from './layouts/resource-layout/resource-layout';\nimport { MrSearchFacetsLayoutComponent } from './layouts/search-facets-layout/search-facets-layout';\nimport { MrSearchLayoutComponent } from './layouts/search-layout/search-layout';\nimport { MrStaticLayoutComponent } from './layouts/static-layout/static-layout';\nimport { MrTimelineLayoutComponent } from './layouts/timeline-layout/timeline-layout';\n// COMPONENTS\nimport { MrAdvancedResultComponent } from './components/advanced-result/advanced-result';\nimport { MrFormComponent } from './components/form/form';\nimport { MrFormWrapperAccordionComponent } from './components/form-wrapper-accordion/form-wrapper-accordion';\nimport { MrGalleryComponent } from './components/gallery/gallery';\nimport { MrMetadataReadmoreComponent } from './components/metadata-with-readmore/metadata-with-readmore';\nimport { MrResourceModalComponent } from './components/resource-modal/resource-modal';\nimport { MrSearchPageDescriptionComponent } from './components/search-page-description/search-page-description';\nimport { ReadMoreComponent } from './components/read-more/read-more';\nimport { MrMetadataDynamicComponent } from './components';\nimport { MrInputTypeaheadComponent } from './components/input-typeahead/input-typeahead';\n\nconst COMPONENTS = [\n // Layout components\n MrAdvancedResultsLayoutComponent,\n MrAdvancedSearchLayoutComponent,\n MrHomeLayoutComponent,\n MrItineraryLayoutComponent,\n MrMapLayoutComponent,\n MrNetworkLayoutComponent,\n MrMetadataReadmoreComponent,\n MrPostsLayoutComponent,\n MrResourceLayoutComponent,\n MrSearchFacetsLayoutComponent,\n MrSearchLayoutComponent,\n MrStaticLayoutComponent,\n MrTimelineLayoutComponent,\n // Custom components\n ReadMoreComponent,\n MrFormComponent,\n MrFormWrapperAccordionComponent,\n MrSearchPageDescriptionComponent,\n MrResourceModalComponent,\n MrGalleryComponent,\n MrAdvancedResultComponent,\n MrMetadataDynamicComponent,\n MrInputTypeaheadComponent,\n];\n\n@NgModule({\n declarations: [\n EscapeHtmlPipe,\n COMPONENTS\n ],\n imports: [\n CommonModule,\n DvComponentsLibModule,\n N7BoilerplateCommonModule,\n ],\n providers: [\n MrSearchService,\n MrLayoutStateService,\n MrResourceModalService,\n MrLocaleService\n ],\n exports: COMPONENTS\n})\nexport class N7BoilerplateMurucaModule {\n constructor(\n private localeService: MrLocaleService,\n private mainState: MainStateService,\n private router: Router,\n ) {\n // listen to locale (language select) change event\n this.mainState.get$('footerEvents').subscribe(({ type, payload }) => {\n if (type === 'footer.change' && payload?.inputPayload === 'locale') {\n const currentLocale = this.localeService.getLocale();\n const { value } = payload;\n if (currentLocale !== value) {\n const href = this.localeService.getLinkByLocale(value);\n if (href) {\n this.router.navigate([href]);\n }\n }\n }\n });\n }\n}\n","/* eslint-disable no-use-before-define */\nimport {\n InputCheckboxData, InputSelectData, InputTextData, MapData, HistogramRangeData\n} from '@net7/components';\nimport { ConfigMurucaLayout } from './layouts';\n\nexport interface ConfigMurucaAdvancedSearchLayout extends ConfigMurucaLayout {\n /** results page url */\n resultsUrl: string | {\n [locale: string]: string;\n };\n /** dynamic options (from API) */\n hasDynamicOptions?: boolean;\n formConfig: {\n /** form submit button */\n submitButton: {\n label: string;\n };\n /** form reset button */\n resetButton: {\n label: string;\n };\n /** form groups (form accordion section) */\n groups: {\n /** id (unique) */\n id: string;\n /** group sections (id) [section1, section2, ...] */\n sections: string[];\n /** aditional css classes */\n classes?: string;\n /** aditional options */\n options?: {\n /** group label */\n label: string;\n /** group is (visually) open? */\n isOpen?: boolean;\n /** show group header? */\n showHeader?: boolean;\n };\n }[];\n sections: ConfigMurucaAdvancedSearchSection[];\n };\n}\n\nexport interface ConfigMurucaAdvancedSearchSection {\n /** id (unique) */\n id: string;\n /** section title */\n title?: string;\n /** section description text */\n description?: string;\n /** section info tooltip */\n info?: string;\n /** is advanced? for css purposes */\n advancedSection?: boolean;\n /** section inputs */\n inputs: (\n ConfigMurucaAdvancedSearchInputText<unknown>\n | ConfigMurucaAdvancedSearchInputCheckbox<unknown>\n | ConfigMurucaAdvancedSearchInputSelect<unknown>\n | ConfigMurucaAdvancedSearchInputMap<unknown>\n // FIXME: custom inputs\n // | ConfigMurucaAdvancedSearchInputCustom<unknown>\n )[];\n}\n\nexport interface ConfigMurucaAdvancedSearchInput<T> {\n id: string;\n info?: string;\n /** input state */\n state?: {\n value: T;\n disabled?: boolean;\n hidden?: boolean;\n };\n}\n\nexport interface ConfigMurucaAdvancedSearchInputText<T>\n extends ConfigMurucaAdvancedSearchInput<T> {\n type: 'text';\n data: InputTextData;\n}\n\nexport interface AdvancedInputCheckboxData extends InputCheckboxData {\n id: string;\n}\n\nexport interface ConfigMurucaAdvancedSearchInputCheckbox<T>\n extends ConfigMurucaAdvancedSearchInput<T> {\n type: 'checkbox';\n data: AdvancedInputCheckboxData;\n}\n\nexport interface ConfigMurucaAdvancedSearchInputSelect<T>\n extends ConfigMurucaAdvancedSearchInput<T> {\n type: 'select';\n data: InputSelectData;\n}\n\n// Allow embedding of map-component into the search facets\nexport interface ConfigMurucaAdvancedSearchInputMap<T>\n extends ConfigMurucaAdvancedSearchInput<T> {\n type: 'map';\n data: MapData;\n}\n\n// Allow embedding of histogram-component into the search facets\nexport interface ConfigMurucaAdvancedSearchInputHistogram<T>\n extends ConfigMurucaAdvancedSearchInput<T> {\n type: 'histogram';\n data: HistogramRangeData;\n}\n\n// FIXME: custom inputs\n// export interface ConfigMurucaAdvancedSearchInputCustom<T>\n// extends ConfigMurucaAdvancedSearchInput<T> {\n// type: string;\n// data: object;\n// }\n","// home layout\nexport * from './home-layout/home-layout';\nexport * from './home-layout/home-layout.ds';\nexport * from './home-layout/home-layout.eh';\nexport * from './home-layout/home-layout.config';\n// search layout\nexport * from './search-layout/search-layout';\nexport * from './search-layout/search-layout.ds';\nexport * from './search-layout/search-layout.eh';\nexport * from './search-layout/search-layout.config';\n// search facets-layout\nexport * from './search-facets-layout/search-facets-layout';\nexport * from './search-facets-layout/search-facets-layout.ds';\nexport * from './search-facets-layout/search-facets-layout.eh';\nexport * from './search-facets-layout/search-facets-layout.config';\n// static layout\nexport * from './static-layout/static-layout';\nexport * from './static-layout/static-layout.ds';\nexport * from './static-layout/static-layout.eh';\nexport * from './static-layout/static-layout.config';\n// resource layout\nexport * from './resource-layout/resource-layout';\nexport * from './resource-layout/resource-layout.ds';\nexport * from './resource-layout/resource-layout.eh';\nexport * from './resource-layout/resource-layout.config';\n// advanced search layout\nexport * from './advanced-search-layout/advanced-search-layout';\nexport * from './advanced-search-layout/advanced-search-layout.ds';\nexport * from './advanced-search-layout/advanced-search-layout.eh';\nexport * from './advanced-search-layout/advanced-search-layout.config';\n// advanced results layout\nexport * from './advanced-results-layout/advanced-results-layout';\nexport * from './advanced-results-layout/advanced-results-layout.ds';\nexport * from './advanced-results-layout/advanced-results-layout.eh';\nexport * from './advanced-results-layout/advanced-results-layout.config';\n// posts layout\nexport * from './posts-layout/posts-layout';\nexport * from './posts-layout/posts-layout.ds';\nexport * from './posts-layout/posts-layout.eh';\nexport * from './posts-layout/posts-layout.config';\n// timeline layout\nexport * from './timeline-layout/timeline-layout';\nexport * from './timeline-layout/timeline-layout.ds';\nexport * from './timeline-layout/timeline-layout.eh';\nexport * from './timeline-layout/timeline-layout.config';\n// map layout\nexport * from './map-layout/map-layout';\nexport * from './map-layout/map-layout.ds';\nexport * from './map-layout/map-layout.eh';\nexport * from './map-layout/map-layout.config';\n// itinerary layout\nexport * from './itinerary-layout/itinerary-layout';\nexport * from './itinerary-layout/itinerary-layout.ds';\nexport * from './itinerary-layout/itinerary-layout.eh';\nexport * from './itinerary-layout/itinerary-layout.config';\n// network layout\nexport * from './network-layout/network-layout';\nexport * from './network-layout/network-layout.ds';\nexport * from './network-layout/network-layout.eh';\nexport * from './network-layout/network-layout.config';\n","import { Injectable } from '@angular/core';\nimport { HttpClient } from '@angular/common/http';\nimport { tap, catchError } from 'rxjs/operators';\nimport { of } from 'rxjs';\nimport { ConfigurationService, MainStateService } from '@net7/boilerplate-common';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class MrFooterService {\n private cache: {\n [locale: string]: object;\n } = {};\n\n constructor(\n private http: HttpClient,\n private configuration: ConfigurationService,\n private mainState: MainStateService,\n ) {}\n\n load(locale = null): Promise<any> {\n if (locale && this.cache[locale]) {\n this._handleResponse(this.cache[locale]);\n return Promise.resolve();\n }\n\n const { defaultProvider, providers } = this.configuration.get('communication');\n const currentProvider = providers[defaultProvider] || {};\n const { baseUrl } = currentProvider;\n const menuPath = currentProvider?.config?.footer;\n\n if (baseUrl && menuPath) {\n let url = baseUrl + menuPath;\n if (locale) {\n url += `?locale=${locale}`;\n }\n return this.http.get(url).pipe(\n catchError(() => of(null)),\n tap((response) => {\n this.cache[locale] = response;\n this._handleResponse(response);\n }),\n ).toPromise();\n }\n return of(null).toPromise();\n }\n\n private _handleResponse(response) {\n if (response) {\n this.configuration.set('footer', response);\n\n // update state\n this.mainState.update('footer', response);\n }\n }\n}\n","import { Injectable } from '@angular/core';\nimport { HttpClient } from '@angular/common/http';\nimport { tap, catchError } from 'rxjs/operators';\nimport { of } from 'rxjs';\nimport { Anchor } from '@net7/components';\nimport { ConfigurationService } from '@net7/boilerplate-common';\nimport linksHelper from '../helpers/links-helper';\nimport { MrLocaleService } from './locale.service';\n\ntype MenuItem = {\n text: string;\n anchor: Anchor;\n _meta: any;\n subnav?: MenuItem[];\n classes?: string;\n}\n\n@Injectable({\n providedIn: 'root',\n})\nexport class MrMenuService {\n private dynamicPaths: string[] = [];\n\n private cache: {\n [locale: string]: object;\n } = {};\n\n constructor(\n private http: HttpClient,\n private configuration: ConfigurationService,\n private localeService: MrLocaleService,\n ) {}\n\n load(locale = null): Promise<any> {\n if (locale && this.cache[locale]) {\n this._handleResponse(this.cache[locale]);\n return Promise.resolve();\n }\n\n const { defaultProvider, providers } = this.configuration.get('communication');\n const currentProvider = providers[defaultProvider] || {};\n const { baseUrl } = currentProvider;\n const menuPath = currentProvider?.config?.menu;\n\n if (baseUrl && menuPath) {\n let url = baseUrl + menuPath;\n if (locale) {\n url += `?locale=${locale}`;\n }\n return this.http.get(url).pipe(\n catchError(() => of(null)),\n tap((response) => {\n this.cache[locale] = response;\n this._handleResponse(response, locale);\n }),\n ).toPromise();\n }\n return of(null).toPromise();\n }\n\n private _handleResponse(response, locale?: string) {\n if (response) {\n const headerConfig = this.configuration.get('header');\n headerConfig.nav.items = response.map(({\n label, slug, isStatic, subpages, classes\n }) => {\n const href = this.getHref(slug);\n // dynamic path control\n if (!isStatic) {\n this.dynamicPaths.push(href);\n }\n\n const item = {\n classes,\n text: label,\n anchor: href ? {\n href: linksHelper.getRouterLink(href),\n queryParams: linksHelper.getQueryParams(href)\n } : null,\n _meta: {\n id: href\n }\n } as MenuItem;\n\n if (subpages !== undefined) {\n item.subnav = [];\n subpages.forEach((el) => {\n const subHref = this.getHref(el.slug);\n if (!el.isStatic) {\n this.dynamicPaths.push(subHref);\n }\n item.subnav.push({\n classes: el.classes || null,\n text: el.label,\n anchor: subHref ? {\n href: linksHelper.getRouterLink(subHref),\n queryParams: linksHelper.getQueryParams(subHref)\n } : null,\n _meta: {\n id: subHref\n }\n });\n });\n }\n return item;\n });\n if (locale) {\n const href = this.localeService.getLink(locale, 'home');\n if (href) {\n headerConfig.logo.anchor = { href };\n }\n }\n this.configuration.set('header', headerConfig);\n }\n }\n\n public isDynamicPath = (path: string) => this.dynamicPaths.includes(path);\n\n private getHref(link: string) {\n let href = link || null;\n if (href && !linksHelper.isExternalLink(href)) {\n href = `/${href}`;\n }\n return href;\n }\n}\n","import { Injectable } from '@angular/core';\nimport { HttpClient } from '@angular/common/http';\nimport { tap, catchError } from 'rxjs/operators';\nimport { of } from 'rxjs';\nimport { translate } from '@net7/core';\nimport { ConfigurationService } from '@net7/boilerplate-common';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class MrTranslationsLoaderService {\n private loaded: {\n [locale: string]: boolean;\n } = {};\n\n constructor(\n private http: HttpClient,\n private configuration: ConfigurationService,\n ) {}\n\n load(langCode: string): Promise<any> {\n // update translate module\n translate.setCurrentLang(langCode);\n\n // locale already loaded check\n if (this.loaded[langCode]) {\n this.loaded[langCode] = true;\n return Promise.resolve();\n }\n const { defaultProvider, providers } = this.configuration.get('communication');\n const currentProvider = providers[defaultProvider] || {};\n const { baseUrl } = currentProvider;\n const translationsPath = currentProvider?.config?.translation;\n\n if (baseUrl && translationsPath) {\n const url = baseUrl + translationsPath + langCode;\n return this.http.get(url).pipe(\n catchError(() => of(null)),\n tap((response) => this._handleResponse(response, langCode)),\n ).toPromise();\n }\n return of(null).toPromise();\n }\n\n private _handleResponse(response: object, langCode: string) {\n if (response) {\n Object.keys(response).forEach((key) => {\n translate.setLangTranslation(langCode, key, response[key]);\n });\n }\n }\n}\n","import { Injectable } from '@angular/core';\nimport { ConfigurationService } from '@net7/boilerplate-common';\n\n@Injectable({ providedIn: 'root' })\nexport class MrCopyProtectionService {\n constructor(private config: ConfigurationService) {}\n\n init() {\n const { enabled, message, htmlMessage } = this.config.get('copyProtection') || {};\n if (!enabled || !message) return;\n\n document.addEventListener('copy', (e: ClipboardEvent) => {\n const selection = window.getSelection();\n if (!selection?.toString()) return;\n\n e.clipboardData.setData('text/plain', selection.toString() + message);\n\n if (htmlMessage) {\n const container = document.createElement('div');\n for (let i = 0; i < selection.rangeCount; i++) {\n container.appendChild(selection.getRangeAt(i).cloneContents());\n }\n e.clipboardData.setData('text/html', container.innerHTML + htmlMessage);\n }\n\n e.preventDefault();\n });\n }\n}\n","import { Injectable } from '@angular/core';\nimport { ActivatedRouteSnapshot, RouterStateSnapshot, Router } from '@angular/router';\nimport { Observable } from 'rxjs';\nimport { MrMenuService } from '../services/menu.service';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class DynamicPathGuard {\n constructor(\n private menuService: MrMenuService,\n private router: Router\n ) {}\n\n canActivate(\n next: ActivatedRouteSnapshot,\n state: RouterStateSnapshot\n ): Observable<boolean> | Promise<boolean> | boolean {\n const { url } = state;\n if (!this.menuService.isDynamicPath(url)) {\n const { notFoundPath } = next.data;\n this.router.navigate([notFoundPath ? `/${notFoundPath}` : '/']);\n return false;\n }\n return true;\n }\n}\n","import { Injectable } from '@angular/core';\nimport { ActivatedRouteSnapshot, RouterStateSnapshot } from '@angular/router';\nimport { Observable } from 'rxjs';\nimport { MrTranslationsLoaderService } from '../services/translations-loader.service';\nimport { MrFooterService } from '../services/footer.service';\nimport { MrMenuService } from '../services/menu.service';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class LocaleDependenciesGuard {\n private prevRouteId: string;\n\n private prevLocale: string;\n\n constructor(\n private menuService: MrMenuService,\n private footerService: MrFooterService,\n private translationsLoader: MrTranslationsLoaderService,\n ) {}\n\n canActivate(\n route: ActivatedRouteSnapshot,\n state: RouterStateSnapshot\n ): Observable<boolean> | Promise<boolean> | boolean {\n const { locale, routeId } = route.data;\n // check routeId to force reload\n if (\n (routeId && this.prevRouteId === routeId)\n && (locale && this.prevLocale !== locale)\n ) {\n const { url } = state;\n document.location.href = url;\n return Promise.reject();\n }\n this.prevRouteId = routeId;\n this.prevLocale = locale;\n return Promise.all([\n this.menuService.load(locale),\n this.footerService.load(locale),\n this.translationsLoader.load(locale)\n ])\n .then(() => Promise.resolve(true))\n .catch((err) => {\n console.warn('Locale dependencies error:', err);\n return Promise.resolve(true);\n });\n }\n}\n","/*\n * Public API Surface of n7-boilerplate-muruca\n */\n\n// muruca\nexport * from './lib/n7-boilerplate-muruca.module';\nexport * from './lib/config-types';\nexport * from './lib/interfaces';\nexport * from './lib/data-sources';\nexport * from './lib/event-handlers';\nexport * from './lib/layouts';\nexport * from './lib/components';\nexport * from './lib/services';\nexport * from './lib/guards';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1","i2","ITEM_PREVIEW_DEFAULTS","ICON_OPEN","ICON_CLOSE","config","i3.MrLayoutStateService","i4.MrResourceModalService","i5.MrLocaleService","i6","i8.MrAdvancedResultComponent","i3","i3.MrInputTypeaheadComponent","i3.MrFormComponent","i3.MrLocaleService","i4","i5","i6.MrFormWrapperAccordionComponent","DATASOURCE_MAP","EVENTHANDLER_MAP","i4.MrLocaleService","i8.ReadMoreComponent","i9.MrGalleryComponent","i10.EscapeHtmlPipe","i4.MrLayoutStateService","i2.ReadMoreComponent","i3.MrMetadataReadmoreComponent","i4.ReadMoreComponent","i8.MrMetadataReadmoreComponent","i9.ReadMoreComponent","i10.MrMetadataDynamicComponent","i11.EscapeHtmlPipe","ACTIVE_CLASS","DS.MrItemPreviewsDS","i3.MrSearchService","i5.MrResourceModalService","i6.MrLocaleService","i7","i8","i9.MrSearchFacetsLayoutComponent","i10.MrSearchPageDescriptionComponent","i11.MrAdvancedResultComponent","i6.EscapeHtmlPipe","i8.MrGalleryComponent","i2.MrResourceModalService","i6.ReadMoreComponent","i1.MrLocaleService","i1.MrMenuService","i2.MrFooterService","i3.MrTranslationsLoaderService"],"mappings":"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"}
|