{"version":3,"file":"js/main.b0d667126fed8e138301.bundle.js","mappings":"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","sources":["webpack://@geo/geo-map/webpack/runtime/chunk loaded","webpack://@geo/geo-map/webpack/runtime/load script","webpack://@geo/geo-map/./node_modules/@stencil/core/internal/client/ lazy ^\\.\\/.*\\.entry\\.js.*$ include: \\.entry\\.js$ exclude: \\.system\\.entry\\.js$ strict namespace object","webpack://@geo/geo-map/./src/components/app/app-mobx.ts","webpack://@geo/geo-map/./src/components/app/app.tsx","webpack://@geo/geo-map/./src/components/app/footer/footer.tsx","webpack://@geo/geo-map/./src/components/app/header/header.tsx","webpack://@geo/geo-map/./src/components/app/index.ts","webpack://@geo/geo-map/./src/components/app/sidebar/legend/legend-item-list/legend-item-list.tsx","webpack://@geo/geo-map/./src/components/app/sidebar/legend/legend-item-list/legend-layer/legend-item-group/legend-item-group.tsx","webpack://@geo/geo-map/./src/components/app/sidebar/legend/legend-item-list/legend-layer/legend-item-group/legend-list-item/legend-list-item.tsx","webpack://@geo/geo-map/./src/components/app/sidebar/legend/legend-item-list/legend-layer/legend-layer.tsx","webpack://@geo/geo-map/./src/components/app/sidebar/legend/legend.tsx","webpack://@geo/geo-map/./src/components/app/sidebar/np-docs/np-docs.tsx","webpack://@geo/geo-map/./src/components/app/sidebar/sidebar.tsx","webpack://@geo/geo-map/./src/config/legend-configuration.ts","webpack://@geo/geo-map/./src/config/map-viewer-configuration.ts","webpack://@geo/geo-map/./src/config/sidebar-configuration.ts","webpack://@geo/geo-map/./src/config/topic-configuration.ts","webpack://@geo/geo-map/./src/core/components/attribution/attribution.tsx","webpack://@geo/geo-map/./src/core/components/basemap-gallery/basemap-gallery-button/basemap-gallery-button.tsx","webpack://@geo/geo-map/./src/core/components/basemap-gallery/basemap-gallery-item/basemap-gallery-item.data.ts","webpack://@geo/geo-map/./src/core/components/basemap-gallery/basemap-gallery-item/basemap-gallery-item.tsx","webpack://@geo/geo-map/./src/core/components/basemap-gallery/basemap-gallery-toggle/basemap-gallery-toggle.tsx","webpack://@geo/geo-map/./src/core/components/basemap-gallery/basemap-gallery.tsx","webpack://@geo/geo-map/./src/core/components/compare/compare-select/compare-select.tsx","webpack://@geo/geo-map/./src/core/components/compare/compare.tsx","webpack://@geo/geo-map/./src/core/components/cookie-banner/cookie-banner.tsx","webpack://@geo/geo-map/./src/core/components/coordinate/coordinate.tsx","webpack://@geo/geo-map/./src/core/components/error-boundary/error-boundary.tsx","webpack://@geo/geo-map/./src/core/components/icon/icon.tsx","webpack://@geo/geo-map/./src/core/components/layer-list/layer-list-list/layer-list-item/layer-list-item.tsx","webpack://@geo/geo-map/./src/core/components/layer-list/layer-list-list/layer-list-list.tsx","webpack://@geo/geo-map/./src/core/components/layer-list/layer-list.tsx","webpack://@geo/geo-map/./src/core/components/layer-selector/layer-selector-matrix/layer-selector-matrix.tsx","webpack://@geo/geo-map/./src/core/components/layer-selector/layer-selector.tsx","webpack://@geo/geo-map/./src/core/components/legend/legend.tsx","webpack://@geo/geo-map/./src/core/components/legend/legendPatch.tsx","webpack://@geo/geo-map/./src/core/components/maintenance/maintenance.tsx","webpack://@geo/geo-map/./src/core/components/map-finder/map-finder.tsx","webpack://@geo/geo-map/./src/core/components/message-block/message-block.tsx","webpack://@geo/geo-map/./src/core/components/message-box/message-box.tsx","webpack://@geo/geo-map/./src/core/components/message-startup/message-startup.tsx","webpack://@geo/geo-map/./src/core/components/not-found/not-found.tsx","webpack://@geo/geo-map/./src/core/components/popup/popup-panel/popup-panel-actions/popup-panel-action-oea.tsx","webpack://@geo/geo-map/./src/core/components/popup/popup-panel/popup-panel-item/popup-panel-item-chart.ts","webpack://@geo/geo-map/./src/core/components/popup/popup-panel/popup-panel-item/popup-panel-item.tsx","webpack://@geo/geo-map/./src/core/components/popup/popup-panel/popup-panel.tsx","webpack://@geo/geo-map/./src/core/components/popup/popup.tsx","webpack://@geo/geo-map/./src/core/components/printing/printing.tsx","webpack://@geo/geo-map/./src/core/components/scalebar/scalebar.tsx","webpack://@geo/geo-map/./src/core/components/search/search.tsx","webpack://@geo/geo-map/./src/core/components/sharing/sharing.tsx","webpack://@geo/geo-map/./src/core/components/title/title.tsx","webpack://@geo/geo-map/./src/core/components/tools/elevation-profile/elevation-profile-button.tsx","webpack://@geo/geo-map/./src/core/components/tools/elevation-profile/elevation-profile.tsx","webpack://@geo/geo-map/./src/core/components/tools/measurement/measurement-buttons.tsx","webpack://@geo/geo-map/./src/core/components/tools/measurement/measurement.tsx","webpack://@geo/geo-map/./src/core/components/tools/tools.tsx","webpack://@geo/geo-map/./src/core/components/topic-switcher/topic-switcher-button.tsx","webpack://@geo/geo-map/./src/core/components/topic-switcher/topic-switcher.tsx","webpack://@geo/geo-map/./src/core/components/topic-toggle/topic-toggle.tsx","webpack://@geo/geo-map/./src/core/components/view-manager/view-manager.tsx","webpack://@geo/geo-map/./src/core/config/action-configuration.ts","webpack://@geo/geo-map/./src/core/config/app-configuration.ts","webpack://@geo/geo-map/./src/core/config/attribution-configuration.ts","webpack://@geo/geo-map/./src/core/config/authoring-info-configuration.ts","webpack://@geo/geo-map/./src/core/config/basemap-gallery-configuration.ts","webpack://@geo/geo-map/./src/core/config/basemap-toggle-configuration.ts","webpack://@geo/geo-map/./src/core/config/callout-configuration.ts","webpack://@geo/geo-map/./src/core/config/color-configuration.ts","webpack://@geo/geo-map/./src/core/config/compare-configuration.ts","webpack://@geo/geo-map/./src/core/config/content-configuration.ts","webpack://@geo/geo-map/./src/core/config/editor-configuration.ts","webpack://@geo/geo-map/./src/core/config/editor-visible-elements-configuration.ts","webpack://@geo/geo-map/./src/core/config/feature-filter-configuration.ts","webpack://@geo/geo-map/./src/core/config/font-configuration.ts","webpack://@geo/geo-map/./src/core/config/form-template-configuration.ts","webpack://@geo/geo-map/./src/core/config/geometry-configuration.ts","webpack://@geo/geo-map/./src/core/config/graphic-configuration.ts","webpack://@geo/geo-map/./src/core/config/layer-configuration.ts","webpack://@geo/geo-map/./src/core/config/layer-list-configuration.ts","webpack://@geo/geo-map/./src/core/config/legend-configuration.ts","webpack://@geo/geo-map/./src/core/config/link-configuration.ts","webpack://@geo/geo-map/./src/core/config/maintenance-configuration.ts","webpack://@geo/geo-map/./src/core/config/map-configuration.ts","webpack://@geo/geo-map/./src/core/config/metadata-configuration.ts","webpack://@geo/geo-map/./src/core/config/module-configuration.ts","webpack://@geo/geo-map/./src/core/config/popup-configuration.ts","webpack://@geo/geo-map/./src/core/config/portal-configuration.ts","webpack://@geo/geo-map/./src/core/config/portal-item-configuration.ts","webpack://@geo/geo-map/./src/core/config/print-configuration.ts","webpack://@geo/geo-map/./src/core/config/proxy-configuration.ts","webpack://@geo/geo-map/./src/core/config/renderer-configuration.ts","webpack://@geo/geo-map/./src/core/config/scalebar-configuration.ts","webpack://@geo/geo-map/./src/core/config/search-configuration.ts","webpack://@geo/geo-map/./src/core/config/sketch-configuration.ts","webpack://@geo/geo-map/./src/core/config/sketch-label-options-properties-configuration.ts","webpack://@geo/geo-map/./src/core/config/sketch-tooltip-options-properties-configuration.ts","webpack://@geo/geo-map/./src/core/config/snapping-options-properties-configuration.ts","webpack://@geo/geo-map/./src/core/config/spatial-reference-configuration.ts","webpack://@geo/geo-map/./src/core/config/symbol-configuration.ts","webpack://@geo/geo-map/./src/core/config/time-info-configration.ts","webpack://@geo/geo-map/./src/core/config/tools-configuration.ts","webpack://@geo/geo-map/./src/core/config/topic-switcher-configuration.ts","webpack://@geo/geo-map/./src/core/config/view-configuration.ts","webpack://@geo/geo-map/./src/core/config/visible-elements-snapping-controls-elements-configuration.ts","webpack://@geo/geo-map/./src/core/config/visual-variable-configuration.ts","webpack://@geo/geo-map/./src/core/config/web-map-configuration.ts","webpack://@geo/geo-map/./src/core/config/widget-configuration.ts","webpack://@geo/geo-map/./src/core/geo-proxy.ts","webpack://@geo/geo-map/./src/core/map-state.ts","webpack://@geo/geo-map/./src/core/stores/abstract-app-store.tsx","webpack://@geo/geo-map/./src/core/stores/compare-store-mobx.ts","webpack://@geo/geo-map/./src/core/stores/layer-list-store-mobx.ts","webpack://@geo/geo-map/./src/core/stores/layer-selector-store-mobx.ts","webpack://@geo/geo-map/./src/core/stores/map-finder-store-mobx.ts","webpack://@geo/geo-map/./src/core/stores/popup-store-mobx.ts","webpack://@geo/geo-map/./src/core/stores/search-store-mobx.ts","webpack://@geo/geo-map/./src/core/stores/topic-switcher-store-mobx.ts","webpack://@geo/geo-map/./src/core/ui-state.ts","webpack://@geo/geo-map/./src/index.tsx","webpack://@geo/geo-map/./src/search/search-station.ts","webpack://@geo/geo-map/./src/stores/map-viewer-store-mobx.ts","webpack://@geo/geo-map/./src/utils/evaluate.ts","webpack://@geo/geo-map/./src/utils/format-utils.ts","webpack://@geo/geo-map/./src/utils/map-utils.ts","webpack://@geo/geo-map/./src/utils/object-utils.ts","webpack://@geo/geo-map/./src/utils/path-utils.ts","webpack://@geo/geo-map/./src/assets/stylesheets/global.scss?c0c4","webpack://@geo/geo-map/./src/assets/stylesheets/main.scss?ebdc","webpack://@geo/geo-map/./src/assets/stylesheets/topics/wkbodbel.scss?82c3","webpack://@geo/geo-map/./src/assets/stylesheets/topics/wkbodenx.scss?20da","webpack://@geo/geo-map/./src/assets/stylesheets/topics/wkenplan.scss?1caa","webpack://@geo/geo-map/./src/assets/stylesheets/topics/wkfaunax.scss?1a0e","webpack://@geo/geo-map/./src/assets/stylesheets/topics/wkfrucht.scss?0dca","webpack://@geo/geo-map/./src/assets/stylesheets/topics/wkgbener.scss?41bd","webpack://@geo/geo-map/./src/assets/stylesheets/topics/wkgplanx.scss?2838","webpack://@geo/geo-map/./src/assets/stylesheets/topics/wkhiskar.scss?9512","webpack://@geo/geo-map/./src/assets/stylesheets/topics/wkinfras.scss?6ff4","webpack://@geo/geo-map/./src/assets/stylesheets/topics/wkklimax.scss?138e","webpack://@geo/geo-map/./src/assets/stylesheets/topics/wkkulden.scss?3c8e","webpack://@geo/geo-map/./src/assets/stylesheets/topics/wklaermx.scss?c9ab","webpack://@geo/geo-map/./src/assets/stylesheets/topics/wklandwi.scss?3a23","webpack://@geo/geo-map/./src/assets/stylesheets/topics/wklawert.scss?dee1","webpack://@geo/geo-map/./src/assets/stylesheets/topics/wklunccs.scss?78d3","webpack://@geo/geo-map/./src/assets/stylesheets/topics/wknatinv.scss?ae86","webpack://@geo/geo-map/./src/assets/stylesheets/topics/wknatris.scss?d9ae","webpack://@geo/geo-map/./src/assets/stylesheets/topics/wknuplan.scss?0cf5","webpack://@geo/geo-map/./src/assets/stylesheets/topics/wkregrip.scss?236d","webpack://@geo/geo-map/./src/assets/stylesheets/topics/wkrivoso.scss?2262","webpack://@geo/geo-map/./src/assets/stylesheets/topics/wkschutz.scss?23ec","webpack://@geo/geo-map/./src/assets/stylesheets/topics/wkschuve.scss?5074","webpack://@geo/geo-map/./src/assets/stylesheets/topics/wksicher.scss?300c","webpack://@geo/geo-map/./src/assets/stylesheets/topics/wksportx.scss?8031","webpack://@geo/geo-map/./src/assets/stylesheets/topics/wkstrass.scss?03a0","webpack://@geo/geo-map/./src/assets/stylesheets/topics/wkverkeh.scss?5996","webpack://@geo/geo-map/./src/assets/stylesheets/topics/wkwaldxx.scss?a76c","webpack://@geo/geo-map/./src/assets/stylesheets/topics/wkwasser.scss?9f93","webpack://@geo/geo-map/./src/components/app/app.scss?43f6","webpack://@geo/geo-map/./src/components/app/footer/footer.scss?ca48","webpack://@geo/geo-map/./src/components/app/header/header.scss?9fc5","webpack://@geo/geo-map/./src/components/app/sidebar/legend/legend-item-list/legend-item-list.scss","webpack://@geo/geo-map/./src/components/app/sidebar/legend/legend-item-list/legend-layer/legend-item-group/legend-item-group.scss?683e","webpack://@geo/geo-map/./src/components/app/sidebar/legend/legend-item-list/legend-layer/legend-item-group/legend-list-item/legend-list-item.scss?87dd","webpack://@geo/geo-map/./src/components/app/sidebar/legend/legend-item-list/legend-layer/legend-layer.scss","webpack://@geo/geo-map/./src/components/app/sidebar/legend/legend.scss?6eda","webpack://@geo/geo-map/./src/components/app/sidebar/np-docs/np-docs.scss?e5e0","webpack://@geo/geo-map/./src/components/app/sidebar/sidebar.scss?7f02","webpack://@geo/geo-map/./src/core/components/attribution/attribution.scss?3fd8","webpack://@geo/geo-map/./src/core/components/basemap-gallery/basemap-gallery-button/basemap-gallery-button.scss?36f8","webpack://@geo/geo-map/./src/core/components/basemap-gallery/basemap-gallery-item/basemap-gallery-item.scss?df0e","webpack://@geo/geo-map/./src/core/components/basemap-gallery/basemap-gallery-toggle/basemap-gallery-toggle.scss?2e87","webpack://@geo/geo-map/./src/core/components/basemap-gallery/basemap-gallery.scss?859e","webpack://@geo/geo-map/./src/core/components/compare/compare.scss?764e","webpack://@geo/geo-map/./src/core/components/cookie-banner/cookie-banner.scss?ba0e","webpack://@geo/geo-map/./src/core/components/coordinate/coordinate.scss?9c58","webpack://@geo/geo-map/./src/core/components/layer-list/layer-list-list/layer-list-item/layer-list-item.scss?4f97","webpack://@geo/geo-map/./src/core/components/layer-list/layer-list-list/layer-list-list.scss?748a","webpack://@geo/geo-map/./src/core/components/layer-list/layer-list.scss?74ff","webpack://@geo/geo-map/./src/core/components/layer-selector/layer-selector.scss?63d2","webpack://@geo/geo-map/./src/core/components/legend/legend.scss?9b68","webpack://@geo/geo-map/./src/core/components/maintenance/maintenance.scss?0caa","webpack://@geo/geo-map/./src/core/components/map-finder/map-finder.scss?502b","webpack://@geo/geo-map/./src/core/components/message-block/message-block.scss?9170","webpack://@geo/geo-map/./src/core/components/message-box/message-box.scss?13fc","webpack://@geo/geo-map/./src/core/components/not-found/not-found.scss?a151","webpack://@geo/geo-map/./src/core/components/popup/popup-panel/popup-panel-actions/popup-panel-action-oea.scss?ec0a","webpack://@geo/geo-map/./src/core/components/popup/popup.scss?eb04","webpack://@geo/geo-map/./src/core/components/printing/printing.scss?ad18","webpack://@geo/geo-map/./src/core/components/search/search.scss?79c0","webpack://@geo/geo-map/./src/core/components/sharing/sharing.scss?d61c","webpack://@geo/geo-map/./src/core/components/tools/tools.scss?0d82","webpack://@geo/geo-map/./src/core/components/topic-switcher/topic-switcher.scss?f257","webpack://@geo/geo-map/./src/core/components/topic-toggle/topic-toggle.scss?f70a","webpack://@geo/geo-map/./src/core/components/view-manager/view-manager.scss?8dc4","webpack://@geo/geo-map/./src/index.scss?9853","webpack://@geo/geo-map/webpack/bootstrap","webpack://@geo/geo-map/webpack/runtime/compat get default export","webpack://@geo/geo-map/webpack/runtime/define property getters","webpack://@geo/geo-map/webpack/runtime/ensure chunk","webpack://@geo/geo-map/webpack/runtime/get javascript chunk filename","webpack://@geo/geo-map/webpack/runtime/get javascript update chunk filename","webpack://@geo/geo-map/webpack/runtime/get mini-css chunk filename","webpack://@geo/geo-map/webpack/runtime/get update manifest filename","webpack://@geo/geo-map/webpack/runtime/getFullHash","webpack://@geo/geo-map/webpack/runtime/hasOwnProperty shorthand","webpack://@geo/geo-map/webpack/runtime/make namespace object","webpack://@geo/geo-map/webpack/runtime/node module decorator","webpack://@geo/geo-map/webpack/runtime/hot module replacement","webpack://@geo/geo-map/webpack/runtime/publicPath","webpack://@geo/geo-map/webpack/runtime/compat","webpack://@geo/geo-map/webpack/runtime/css loading","webpack://@geo/geo-map/webpack/runtime/jsonp chunk loading","webpack://@geo/geo-map/webpack/startup"],"sourcesContent":["var deferred = [];\n__webpack_require__.O = (result, chunkIds, fn, priority) => {\n\tif(chunkIds) {\n\t\tpriority = priority || 0;\n\t\tfor(var i = deferred.length; i > 0 && deferred[i - 1][2] > priority; i--) deferred[i] = deferred[i - 1];\n\t\tdeferred[i] = [chunkIds, fn, priority];\n\t\treturn;\n\t}\n\tvar notFulfilled = Infinity;\n\tfor (var i = 0; i < deferred.length; i++) {\n\t\tvar [chunkIds, fn, priority] = deferred[i];\n\t\tvar fulfilled = true;\n\t\tfor (var j = 0; j < chunkIds.length; j++) {\n\t\t\tif ((priority & 1 === 0 || notFulfilled >= priority) && Object.keys(__webpack_require__.O).every((key) => (__webpack_require__.O[key](chunkIds[j])))) {\n\t\t\t\tchunkIds.splice(j--, 1);\n\t\t\t} else {\n\t\t\t\tfulfilled = false;\n\t\t\t\tif(priority < notFulfilled) notFulfilled = priority;\n\t\t\t}\n\t\t}\n\t\tif(fulfilled) {\n\t\t\tdeferred.splice(i--, 1)\n\t\t\tvar r = fn();\n\t\t\tif (r !== undefined) result = r;\n\t\t}\n\t}\n\treturn result;\n};","var inProgress = {};\nvar dataWebpackPrefix = \"@geo/geo-map:\";\n// loadScript function to load a script via script tag\n__webpack_require__.l = (url, done, key, chunkId) => {\n\tif(inProgress[url]) { inProgress[url].push(done); return; }\n\tvar script, needAttach;\n\tif(key !== undefined) {\n\t\tvar scripts = document.getElementsByTagName(\"script\");\n\t\tfor(var i = 0; i < scripts.length; i++) {\n\t\t\tvar s = scripts[i];\n\t\t\tif(s.getAttribute(\"src\") == url || s.getAttribute(\"data-webpack\") == dataWebpackPrefix + key) { script = s; break; }\n\t\t}\n\t}\n\tif(!script) {\n\t\tneedAttach = true;\n\t\tscript = document.createElement('script');\n\n\t\tscript.charset = 'utf-8';\n\t\tscript.timeout = 120;\n\t\tif (__webpack_require__.nc) {\n\t\t\tscript.setAttribute(\"nonce\", __webpack_require__.nc);\n\t\t}\n\t\tscript.setAttribute(\"data-webpack\", dataWebpackPrefix + key);\n\n\t\tscript.src = url;\n\t\tif (script.src.indexOf(window.location.origin + '/') !== 0) {\n\t\t\tscript.crossOrigin = \"anonymous\";\n\t\t}\n\t\tscript.integrity = __webpack_require__.sriHashes[chunkId];\n\t\tscript.crossOrigin = \"anonymous\";\n\t}\n\tinProgress[url] = [done];\n\tvar onScriptComplete = (prev, event) => {\n\t\t// avoid mem leaks in IE.\n\t\tscript.onerror = script.onload = null;\n\t\tclearTimeout(timeout);\n\t\tvar doneFns = inProgress[url];\n\t\tdelete inProgress[url];\n\t\tscript.parentNode && script.parentNode.removeChild(script);\n\t\tdoneFns && doneFns.forEach((fn) => (fn(event)));\n\t\tif(prev) return prev(event);\n\t}\n\tvar timeout = setTimeout(onScriptComplete.bind(null, undefined, { type: 'timeout', target: script }), 120000);\n\tscript.onerror = onScriptComplete.bind(null, script.onerror);\n\tscript.onload = onScriptComplete.bind(null, script.onload);\n\tneedAttach && document.head.appendChild(script);\n};","function webpackEmptyAsyncContext(req) {\n\t// Here Promise.resolve().then() is used instead of new Promise() to prevent\n\t// uncaught exception popping up in devtools\n\treturn Promise.resolve().then(() => {\n\t\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\t\te.code = 'MODULE_NOT_FOUND';\n\t\tthrow e;\n\t});\n}\nwebpackEmptyAsyncContext.keys = () => ([]);\nwebpackEmptyAsyncContext.resolve = webpackEmptyAsyncContext;\nwebpackEmptyAsyncContext.id = 54140;\nmodule.exports = webpackEmptyAsyncContext;","import {action, makeObservable, observable} from \"mobx\";\r\nimport {TopicConfiguration, TopicLayersConfiguration} from \"../../config/topic-configuration\";\r\nimport {MapViewerConfiguration} from \"../../config/map-viewer-configuration\";\r\nimport MatomoTracker from \"@datapunt/matomo-tracker-js\";\r\nimport {NavigateFunction} from \"react-router\";\r\nimport {Authentication} from \"../../core/authentication\";\r\nimport _ from \"lodash\";\r\n\r\n// eslint-disable-next-line no-shadow\r\nexport enum MessageBoxType {\r\n Standard = \"standard\",\r\n Info = \"info\",\r\n Success = \"success\",\r\n Warning = \"warning\",\r\n Error = \"error\"\r\n}\r\n\r\nexport interface MessageBoxProps {\r\n type?: MessageBoxType;\r\n title: string;\r\n message: string;\r\n subTitle?: string;\r\n hasProgress?: boolean;\r\n percent?: number;\r\n okButton?: boolean;\r\n cancelButton?: boolean;\r\n}\r\n\r\nexport class AppState {\r\n // The currently activated topic\r\n topic: TopicConfiguration;\r\n location: Location;\r\n match = {};\r\n navigate: NavigateFunction;\r\n subtopic?: TopicConfiguration;\r\n subtopicId?: string;\r\n subtopicLabel?: string;\r\n objectId?: string;\r\n objectLabel?: string;\r\n\r\n authentication: Authentication;\r\n /**\r\n * If user is logged in to portal\r\n * is checked at application startup with IdentityManager\r\n */\r\n loggedIn: boolean;\r\n esriCredential: __esri.Credential | null;\r\n messageBox = {\r\n type: MessageBoxType.Standard,\r\n show: false,\r\n title: \"\",\r\n message: \"\",\r\n subTitle: \"\",\r\n hasProgress: false,\r\n percent: 0,\r\n okButton: true,\r\n cancelButton: false,\r\n };\r\n mapViewerConfig: MapViewerConfiguration;\r\n tracker: MatomoTracker | undefined;\r\n\r\n constructor(mapViewerConfig: MapViewerConfiguration, tracker?: MatomoTracker) {\r\n this.mapViewerConfig = mapViewerConfig;\r\n this.tracker = tracker;\r\n makeObservable(this, {\r\n topic: observable,\r\n location: observable,\r\n match: observable,\r\n navigate: observable,\r\n subtopic: observable,\r\n subtopicId: observable,\r\n subtopicLabel: observable,\r\n objectId: observable,\r\n objectLabel: observable,\r\n authentication: observable,\r\n loggedIn: observable,\r\n esriCredential: observable,\r\n messageBox: observable,\r\n\r\n setRoute: action,\r\n removeRouteHash: action,\r\n setRoutePath: action,\r\n setTopic: action,\r\n setTopicById: action,\r\n setTopicByRoute: action,\r\n setSubtopic: action,\r\n setSubtopicId: action,\r\n setSubtopicLabel: action,\r\n setSubtopicLayers: action,\r\n setObjectId: action,\r\n setObjectLabel: action,\r\n setAuthentication: action,\r\n setLoggedIn: action,\r\n showMessageBox: action,\r\n closeMessageBox: action,\r\n progressMessageBox: action\r\n });\r\n }\r\n\r\n setRoute(location: Location, match: object, navigate: NavigateFunction): void {\r\n const previousPathname = this.location?.pathname;\r\n this.location = location;\r\n this.match = match;\r\n this.navigate = navigate;\r\n if (this.tracker !== undefined && this.location.pathname !== previousPathname) {\r\n // TODO: Timeout durch zuverlässigere Lösung ersetzten\r\n setTimeout(() => {\r\n if (this.tracker !== undefined) { this.tracker.trackPageView();}\r\n }, 200);\r\n }\r\n }\r\n\r\n removeRouteHash(): void {\r\n if (this.tracker !== undefined) {\r\n this.tracker.trackPageView();\r\n }\r\n this.location.hash = \"\";\r\n this.navigate(this.location.pathname);\r\n }\r\n\r\n setRoutePath(pathname: string): void {\r\n if (this.location.pathname !== pathname) {\r\n this.navigate(pathname);\r\n this.location.pathname = pathname;\r\n if (this.tracker !== undefined) {\r\n // TODO: Timeout durch zuverlässigere Lösung ersetzten\r\n setTimeout(() => {\r\n if (this.tracker !== undefined) { this.tracker.trackPageView();}\r\n }, 200);\r\n }\r\n }\r\n }\r\n\r\n getRoute(): string {\r\n return this.location.pathname;\r\n }\r\n\r\n setTopic(topic: TopicConfiguration): void {\r\n this.topic = topic;\r\n }\r\n\r\n setTopicById(topicId: string): void {\r\n const topic = this.mapViewerConfig.getTopic(topicId);\r\n if (topic) {\r\n this.topic = topic;\r\n }\r\n }\r\n\r\n setTopicByRoute(route: string): TopicConfiguration | void {\r\n const topic = this.mapViewerConfig.getTopicByRoute(`/${route}`);\r\n if (topic) {\r\n this.topic = topic;\r\n }\r\n return topic;\r\n }\r\n\r\n setSubtopic(subtopic?: TopicConfiguration | null): void {\r\n if (subtopic) {\r\n subtopic.revision = Math.random().toString(); // Neues Subtopic erzwingen\r\n this.subtopic = subtopic;\r\n this.subtopicId = subtopic.id;\r\n this.subtopicLabel = subtopic.label? subtopic.label: subtopic.name;\r\n } else {\r\n this.subtopic = undefined;\r\n this.subtopicId = undefined;\r\n this.subtopicLabel = undefined;\r\n }\r\n }\r\n\r\n setSubtopicId(subtopicId: string, subtopicLabel?: string): void {\r\n this.subtopicId = subtopicId;\r\n if (typeof subtopicLabel === \"string\") {\r\n this.subtopicLabel = subtopicLabel;\r\n }\r\n }\r\n\r\n setSubtopicLabel(subtopicLabel?: string): void {\r\n this.subtopicLabel = subtopicLabel;\r\n }\r\n\r\n setSubtopicLayers(subtopicLayers: TopicLayersConfiguration): void {\r\n if(this.subtopic && !_.isEqual(this.subtopic.layers, subtopicLayers)){\r\n this.subtopic.layers = subtopicLayers;\r\n this.subtopic.revision = Math.random().toString(); // Neues Subtopic erzwingen\r\n }\r\n }\r\n\r\n setObjectId(objectId: string, objectLabel?: string): void {\r\n this.objectId = objectId;\r\n if (typeof objectLabel === \"string\") {\r\n this.objectLabel = objectLabel;\r\n }\r\n }\r\n\r\n setObjectLabel(objectLabel?: string): void {\r\n this.objectLabel = objectLabel;\r\n }\r\n\r\n setAuthentication(authentication: Authentication): void {\r\n this.authentication = authentication;\r\n }\r\n\r\n setLoggedIn(loggedIn: boolean, credential?: __esri.Credential): void {\r\n this.loggedIn = loggedIn;\r\n this.esriCredential = credential ? credential : null;\r\n }\r\n /**\r\n * Show a message box\r\n *\r\n * @param props MessageBoxProps\r\n */\r\n showMessageBox(props: MessageBoxProps): void {\r\n this.messageBox.show = true;\r\n\r\n const {title, message, subTitle, hasProgress, percent} = props;\r\n this.messageBox.title = title;\r\n this.messageBox.message = message;\r\n if (subTitle) {\r\n this.messageBox.subTitle = subTitle;\r\n }\r\n this.messageBox.hasProgress = hasProgress || false;\r\n if (percent) {\r\n this.messageBox.percent = percent;\r\n }\r\n\r\n if (props.hasOwnProperty(\"type\") && props.type !== undefined) {\r\n this.messageBox.type = props.type;\r\n }\r\n if (props.hasOwnProperty(\"okButton\") && props.okButton !== undefined) {\r\n this.messageBox.okButton = props.okButton;\r\n }\r\n if (props.hasOwnProperty(\"cancelButton\") && props.cancelButton !== undefined) {\r\n this.messageBox.cancelButton = props.cancelButton;\r\n }\r\n }\r\n\r\n /**\r\n * Close the message box\r\n */\r\n closeMessageBox(): void {\r\n this.messageBox.type = MessageBoxType.Standard;\r\n this.messageBox.show = false;\r\n this.messageBox.title = \"\";\r\n this.messageBox.message = \"\";\r\n this.messageBox.subTitle = \"\";\r\n this.messageBox.hasProgress = false;\r\n this.messageBox.percent = 0;\r\n this.messageBox.okButton = true;\r\n this.messageBox.cancelButton = false;\r\n }\r\n\r\n /**\r\n * Update progress on message box\r\n * Use 'hasProgress = true' to show progress bar on message box\r\n *\r\n * @param percent\r\n */\r\n progressMessageBox(percent: number): void {\r\n if (percent < 0) {\r\n percent = 0;\r\n }\r\n if (percent > 100) {\r\n percent = 100;\r\n }\r\n this.messageBox.percent = percent;\r\n }\r\n}\r\n","import * as React from \"react\";\r\nimport MediaQuery from \"react-responsive\";\r\n\r\nimport {observer} from \"mobx-react\";\r\nimport {autorun, configure, reaction} from \"mobx\";\r\nimport \"./app.scss\";\r\n\r\nimport {AppConfiguration} from \"../../core/config/app-configuration\";\r\nimport {ModuleConfiguration} from \"../../core/config/module-configuration\";\r\nimport {MapViewerConfiguration, MapViewerTopicConfiguration} from \"../../config/map-viewer-configuration\";\r\n\r\nimport {ErrorBoundary} from \"../../core/components/error-boundary/error-boundary\";\r\nimport esriConfig from \"@arcgis/core/config\";\r\n\r\nimport {MapState} from \"../../core/map-state\";\r\nimport {UiState} from \"../../core/ui-state\";\r\nimport {AppState} from \"./app-mobx\";\r\n\r\nimport {Header} from \"./header/header\";\r\nimport {Footer} from \"./footer/footer\";\r\nimport Maintenance from \"../../core/components/maintenance/maintenance\";\r\n\r\nimport {GeoProxy} from \"../../core/geo-proxy\";\r\nimport {MessageProps, Sidebar as SemanticSidebar} from \"semantic-ui-react\";\r\n\r\nimport {BasemapGallery} from \"../../core/components/basemap-gallery/basemap-gallery\";\r\nimport {Sidebar} from \"./sidebar/sidebar\";\r\n\r\nimport {TopicConfiguration} from \"../../config/topic-configuration\";\r\nimport {MessageConfiguration} from \"../../core/config/message-configuration\";\r\nimport {MessageBox} from \"../../core/components/message-box/message-box\";\r\nimport MessageBlock from \"../../core/components/message-block/message-block\";\r\nimport MessageStartup from \"../../core/components/message-startup/message-startup\";\r\nimport {JsonSerializer} from \"typescript-json-serializer\";\r\nimport {Popup} from \"../../core/components/popup/popup\";\r\nimport IdentityManager from \"@arcgis/core/identity/IdentityManager\";\r\nimport {NavigateFunction} from \"react-router\";\r\nimport CookieBanner from \"../../core/components/cookie-banner/cookie-banner\";\r\nimport SVG from \"react-inlinesvg\";\r\n\r\nimport EsriCompass from \"@arcgis/core/widgets/Compass\";\r\nimport esriRequest from \"@arcgis/core/request\";\r\nimport EsriLocate from \"@arcgis/core/widgets/Locate\";\r\n\r\nimport {Measurement} from \"../../core/components/tools/measurement/measurement\";\r\nimport {ElevationProfile} from \"../../core/components/tools/elevation-profile/elevation-profile\";\r\nimport {ObjectUtils} from \"../../utils/object-utils\";\r\nimport {PathUtils} from \"../../utils/path-utils\";\r\nimport {Navigate} from \"react-router-dom\";\r\nimport {Notfound} from \"../../core/components/not-found/not-found\";\r\nimport SpatialReference from \"@arcgis/core/geometry/SpatialReference\";\r\nimport {TopicSwitcher} from \"../../core/components/topic-switcher/topic-switcher\";\r\nimport * as arcade from \"@arcgis/core/arcade\";\r\nimport {MapViewConfiguration} from \"../../core/config/view-configuration\";\r\n\r\nimport {Compare} from \"../../core/components/compare/compare\";\r\nimport {SidebarControlsConfiguration} from \"../../config/sidebar-configuration\";\r\nimport {MapViewerStore} from \"../../stores/map-viewer-store-mobx\";\r\nimport {AppStoreProvider} from \"../../core/stores/abstract-app-store\";\r\n\r\nconfigure({ enforceActions: \"never\" });\r\n\r\n/* Lazy load Webmap to show loader while importing */\r\nconst WebMap = React.lazy(() =>\r\n import(\"../../core/geo\").then((module) => ({ default: module.WebMap }))\r\n);\r\n\r\nexport interface AppProps {\r\n config: AppConfiguration;\r\n moduleConfig: ModuleConfiguration;\r\n appStore: AppState;\r\n location: Location;\r\n navigate: NavigateFunction;\r\n params: any;\r\n searchParams: URLSearchParams;\r\n setSearchParams: () => void;\r\n}\r\n\r\n/**\r\n * Anwendungsklasse\r\n */\r\n@observer\r\nexport class App extends React.Component {\r\n mapViewerStore: MapViewerStore;\r\n\r\n autorunDisposers: any[] = [];\r\n tocReadyAutorunDisposers: any;\r\n appStore: AppState;\r\n uiStore: UiState;\r\n mapStore: MapState;\r\n\r\n mapViewerConfig: MapViewerConfiguration;\r\n appConfig: AppConfiguration;\r\n\r\n appUiRef = React.createRef();\r\n\r\n stopBrowserNavigationListener: any;\r\n\r\n constructor(props: AppProps) {\r\n super(props);\r\n this.appStore = this.props.appStore;\r\n this.uiStore = new UiState();\r\n this.mapStore = new MapState();\r\n this.state = {\r\n northFacing: true,\r\n alertMessage: [],\r\n startupMessage: [],\r\n addClass: []\r\n };\r\n\r\n this.uiStore.setUiSize(window.innerWidth, window.innerHeight);\r\n\r\n this.mapViewerConfig = this.props.moduleConfig as MapViewerConfiguration;\r\n this.appConfig = props.config as AppConfiguration;\r\n\r\n // initialize the core application store\r\n this.mapViewerStore = new MapViewerStore({\r\n appConfig: this.appConfig,\r\n mapViewerConfig: this.mapViewerConfig,\r\n appStore: this.appStore,\r\n mapStore: this.mapStore,\r\n uiStore: this.uiStore\r\n });\r\n\r\n // configure proxy page\r\n const geoProxy = new GeoProxy(this.appConfig.proxy);\r\n geoProxy.loadRules();\r\n esriConfig.request.proxyUrl = this.appConfig.proxy.url;\r\n\r\n // configure assets path\r\n if (this.appConfig.assetsPath) {\r\n esriConfig.assetsPath = this.appConfig.assetsPath;\r\n }\r\n // configure fonts URL\r\n if (this.appConfig.fontsUrl) {\r\n esriConfig.fontsUrl = this.appConfig.fontsUrl;\r\n }\r\n // configure GeometryService URL\r\n if (this.appConfig.geometryServiceUrl) {\r\n esriConfig.geometryServiceUrl = this.appConfig.geometryServiceUrl;\r\n }\r\n // configure portal\r\n if (this.appConfig.portalUrl) {\r\n esriConfig.portalUrl = this.appConfig.portalUrl;\r\n // Esri Anmeldedialog unterdrücken\r\n // eslint-disable-next-line max-len\r\n // https://community.esri.com/t5/arcgis-api-for-javascript-questions/detect-or-prevent-the-arcgis-authentication-dialog/td-p/1047565\r\n IdentityManager.on(\"dialog-create\", () => {\r\n // eslint-disable-next-line no-console\r\n console.warn(\"Ungenügende Berechtigung (IdentityManager dialog-create)\");\r\n IdentityManager.dialog.destroy();\r\n });\r\n } else {\r\n // eslint-disable-next-line no-console\r\n console.warn(\"No portal connection defined.\");\r\n }\r\n this.mapStore.setAppConfig(this.appConfig);\r\n\r\n this.handleMapLoad = this.handleMapLoad.bind(this);\r\n this.handleBrowserNavigation = this.handleBrowserNavigation.bind(this);\r\n this.handleResize = this.handleResize.bind(this);\r\n }\r\n\r\n /**\r\n * Load the default topic\r\n */\r\n getDefaultTopic(): React.ReactElement {\r\n // invalid topic id set on url --> start with default\r\n const defaultTopic = this.mapViewerConfig.getDefaultTopic();\r\n if (!defaultTopic) {\r\n const msg = \"No default topic found in config. Please add at least one topic\";\r\n // eslint-disable-next-line no-console\r\n console.error(msg);\r\n throw new Error(msg);\r\n }\r\n return ;\r\n }\r\n\r\n /**\r\n * Extract route from url and find topic by route\r\n * Set topic when route matches a topic\r\n */\r\n setTopicFromUrl(): void {\r\n if (this.props.params && this.props.params.topic) {\r\n const topicRoute = this.props.params.topic;\r\n // get topicId from url and set to mobx store\r\n const topic = this.mapViewerConfig.getTopicByRoute(`/${topicRoute}`);\r\n if(topic) {\r\n this.setTopic(topic);\r\n }\r\n }\r\n }\r\n\r\n setTopic(topic: TopicConfiguration): void {\r\n const {location, params} = this.props;\r\n\r\n esriRequest(__CONFIG_ROOT__ + \"/topics/\" + topic.id + \".json\", {\r\n responseType: \"json\"\r\n }).then((topicJson) => {\r\n const defaultSerializer = new JsonSerializer();\r\n const topicConfig: MapViewerTopicConfiguration | null =\r\n defaultSerializer.deserializeObject(topicJson.data, MapViewerTopicConfiguration) || null;\r\n if (!topicConfig) {\r\n return;\r\n }\r\n\r\n this.mapViewerConfig.updateConfig(topicConfig as MapViewerConfiguration);\r\n this.mapStore.setWebMap(this.mapViewerConfig.webMap);\r\n if (\"maintenance\" in this.mapViewerConfig\r\n && Array.isArray(this.mapViewerConfig.maintenance)) {\r\n this.appConfig.maintenance =\r\n this.appConfig.maintenance.concat(this.mapViewerConfig.maintenance);\r\n }\r\n if (topicConfig.hasOwnProperty(\"basemapGallery\") && topicConfig.basemapGallery) {\r\n this.appConfig.basemapGallery = ObjectUtils.mergeDeep(this.appConfig.basemapGallery,\r\n topicConfig.basemapGallery);\r\n }\r\n if (\"basemap\" in topicConfig && topicConfig.basemap) {\r\n if (\"opacity\" in topicConfig.basemap) {\r\n this.appConfig.basemapGallery.opacity = topicConfig.basemap.opacity;\r\n }\r\n if (\"default\" in topicConfig.basemap && topicConfig.basemap.default) {\r\n this.appConfig.basemapGallery.default = topicConfig.basemap.default;\r\n }\r\n }\r\n if (\"mapView\" in topicConfig && topicConfig.mapView) {\r\n if (\"extent\" in topicConfig.mapView && topicConfig.mapView.extent) {\r\n // center, scale und zoom löschen, falls extent definiert ist\r\n delete this.appConfig.mapView.center;\r\n delete (this.appConfig.mapView as any).scale;\r\n delete this.appConfig.mapView.zoom;\r\n // falls nötig, fehlende spatialReference ergänzen\r\n if(!(\"spatialReference\" in topicConfig.mapView.extent)){\r\n topicConfig.mapView.extent.spatialReference = new SpatialReference({ wkid: 2056});\r\n }\r\n }\r\n if (\"center\" in topicConfig.mapView && topicConfig.mapView.center) {\r\n // falls nötig, fehlende spatialReference ergänzen\r\n if (!(\"spatialReference\" in topicConfig.mapView.center)){\r\n (topicConfig.mapView.center as __esri.Point).spatialReference\r\n = new SpatialReference({ wkid: 2056});\r\n }\r\n }\r\n this.appConfig.mapView = ObjectUtils.mergeDeep(this.appConfig.mapView, topicConfig.mapView);\r\n }\r\n // Scale und Basemap aus Subtopic übernehmen, falls definiert\r\n if (params?.subtopic) {\r\n const subtopic: TopicConfiguration | undefined = topicConfig.subtopics.find((s)=>\r\n s.routes && s.routes.includes(`/${this.props.params.subtopic}`));\r\n if (subtopic) {\r\n // TODO: Subtopic spezifischer Extent ermöglichen\r\n if (\"mapView\" in subtopic && subtopic.mapView) {\r\n if (\"center\" in subtopic.mapView && subtopic.mapView.center) {\r\n // falls nötig, fehlende spatialReference ergänzen\r\n if (!(\"spatialReference\" in subtopic.mapView.center)) {\r\n (subtopic.mapView.center as __esri.Point).spatialReference\r\n = new SpatialReference({wkid: 2056});\r\n }\r\n }\r\n this.appConfig.mapView = ObjectUtils.mergeDeep(this.appConfig.mapView, subtopic.mapView);\r\n if (subtopic.mapView?.scale) {\r\n if (!topicConfig.mapView) {\r\n topicConfig.mapView = new MapViewConfiguration();\r\n }\r\n topicConfig.mapView.scale = subtopic.mapView.scale;\r\n }\r\n }\r\n // TODO: Subtopic Basemap ermöglichen\r\n if (\"basemap\" in subtopic && subtopic.basemap) {\r\n if (\"opacity\" in subtopic.basemap) {\r\n this.appConfig.basemapGallery.opacity = subtopic.basemap.opacity;\r\n }\r\n if (\"default\" in subtopic.basemap && subtopic.basemap.default) {\r\n this.appConfig.basemapGallery.default = subtopic.basemap.default;\r\n }\r\n }\r\n }\r\n }\r\n // Zufälliger Extent aus Bookmarks, falls weder center noch extent definiert wurde\r\n if(!this.appConfig.mapView.center && !this.appConfig.mapView.extent\r\n && !this.appConfig.mapView.viewpoint) {\r\n const {bookmarks} = this.mapViewerConfig;\r\n const bookmark = bookmarks[Math.floor(Math.random() * bookmarks.length)];\r\n if(bookmark?.viewpoint) {\r\n delete this.appConfig.mapView.center;\r\n delete (this.appConfig.mapView as any).scale;\r\n delete this.appConfig.mapView.zoom;\r\n this.appConfig.mapView.viewpoint = bookmark.viewpoint;\r\n if(\"mapView\" in topicConfig && \"scale\" in topicConfig.mapView && topicConfig.mapView.scale) {\r\n this.appConfig.mapView.viewpoint.scale = topicConfig.mapView.scale;\r\n }\r\n }\r\n }\r\n if (topicConfig.hasOwnProperty(\"search\") && topicConfig.search) {\r\n const newSearch =\r\n ObjectUtils.mergeDeep(this.appConfig.search, topicConfig.search);\r\n if (topicConfig.search.hasOwnProperty(\"sources\")) {\r\n newSearch.sources = newSearch.sources.concat(this.appConfig.search.sources);\r\n }\r\n this.appConfig.search = newSearch;\r\n }\r\n this.handleSubtopicBrowserNavigation(location, params);\r\n });\r\n this.appStore.setTopic(topic);\r\n }\r\n\r\n /**\r\n * Extract station ID from url\r\n * Select station when station ID is present\r\n */\r\n selectObjectFromUrl(): void {\r\n const {params} = this.props;\r\n if (!params || !params.objectId) {\r\n return;\r\n }\r\n\r\n const objectId = params.objectId;\r\n this.appStore.setObjectId(objectId);\r\n }\r\n handleResize(): void {\r\n this.checkUiSize();\r\n }\r\n checkUiSize(): void {\r\n const uiHeight = this.appUiRef.current?.clientHeight;\r\n const uiWidth = this.appUiRef.current?.clientWidth;\r\n const isSmallDevice = (window.innerWidth <= this.mapViewerConfig.breakpoints.md);\r\n this.uiStore.setUiSize(uiWidth, uiHeight, isSmallDevice);\r\n }\r\n componentDidMount(): void {\r\n const { location, navigate, params, searchParams } = this.props;\r\n\r\n // store route information to mobx store\r\n this.appStore.setRoute(this.props.location, this.props.params, this.props.navigate);\r\n this.setTopicFromUrl();\r\n this.selectObjectFromUrl();\r\n // rerun until navigate is available\r\n autorun((navigationReaction: any) => {\r\n const appStoreLocation = this.appStore.location;\r\n if (!appStoreLocation) {\r\n return;\r\n }\r\n this.handleBrowserNavigation(location, navigate, params);\r\n this.checkUiSize();\r\n navigationReaction.dispose(); // stop autorun\r\n });\r\n autorun((paramsReaction: any) => {\r\n const view = this.mapStore.view;\r\n if (!view) {\r\n return;\r\n }\r\n this.mapViewerStore.processAdditionalParams(searchParams);\r\n this.checkUiSize();\r\n paramsReaction.dispose(); // stop autorun\r\n });\r\n this.checkUiSize();\r\n window.addEventListener(\"resize\", this.handleResize);\r\n this.updateMessages();\r\n this.autorunDisposers.push(reaction(() => this.mapStore.activeLayerMetauids, () => {\r\n this.updateMessages();\r\n }));\r\n }\r\n componentDidUpdate(prevProps: AppProps): void {\r\n const { location, navigate, params } = this.props;\r\n if(prevProps.location.pathname !== this.props.location.pathname\r\n || (this.props.location.hash && prevProps.location.hash!==this.props.location.hash)){\r\n this.appStore = this.props.appStore;\r\n this.handleBrowserNavigation(location, navigate, params);\r\n }\r\n }\r\n componentWillUnmount(): void {\r\n // dispose reactions\r\n this.stopBrowserNavigationListener();\r\n window.removeEventListener(\"resize\", this.handleResize);\r\n this.autorunDisposers.forEach((disposer: any) => {\r\n disposer();\r\n });\r\n this.autorunDisposers.length = 0;\r\n if (this.tocReadyAutorunDisposers){\r\n this.tocReadyAutorunDisposers.dispose();\r\n }\r\n }\r\n\r\n setSidebarVisible(visible: boolean): void {\r\n this.uiStore.setSidebarVisible(visible);\r\n }\r\n\r\n render(): React.ReactElement | null {\r\n let mapProperties: __esri.WebMapProperties | undefined;\r\n const {maintenance, search} = this.appConfig;\r\n const {menuVisible, isSidebarVisible, isSmallDevice, uiHeight, uiOffsetTop} = this.uiStore;\r\n const topicswitcherVisible = this.mapViewerStore.TopicSwitcherStore.visible;\r\n const {basemapOpacity, status, webMap} = this.mapStore;\r\n const {params} = this.props;\r\n const {northFacing, alertMessages, startupMessage} = this.state;\r\n if(!params.topic){\r\n return this.getDefaultTopic();\r\n }else if(!this.appStore.topic){\r\n return ;\r\n }\r\n if (webMap){\r\n mapProperties = webMap as __esri.WebMapProperties;\r\n }\r\n let addClass = \"geo-menu-\" + ((menuVisible && !topicswitcherVisible)? \"visible\": \"hidden\");\r\n addClass += \" geo-subtopic-menu-\" + (topicswitcherVisible? \"visible\": \"hidden\");\r\n addClass += (this.appStore.topic)? \" topic-\" + this.appStore.topic.id : \"\";\r\n addClass += (this.appStore.subtopic)? \" subtopic-\" + this.appStore.subtopic.id : \"\";\r\n addClass += \" \" + status;\r\n addClass += (northFacing? \" geo-north-facing\": \" geo-not-north-facing\");\r\n addClass += (this.uiStore.sidebarHigh)? \" geo-sidebar-is_high\" : \"\";\r\n addClass += \" \"+this.state.addClass.join(\" \");\r\n addClass += isSmallDevice? \" geo-small_device\" : \"\";\r\n addClass += (basemapOpacity <= 5)? \" show-grid\": \"\";\r\n const cssProperties = { \"--uiHeight\": uiHeight + \"px\", \"--uiOffsetTop\": uiOffsetTop + \"px\" };\r\n const loadingLabel = (\r\n Anwendung \r\n {this.appStore.topic.label? this.appStore.topic.label : \"\"}\r\n  wird geladen …\r\n );\r\n return(\r\n \r\n \r\n \r\n this.setSidebarVisible(false)}\r\n visible={isSidebarVisible}\r\n >\r\n \r\n
\r\n \r\n
\r\n \r\n
\r\n \r\n \r\n \r\n
{loadingLabel}
\r\n \r\n }>\r\n
\r\n
{loadingLabel}
\r\n
\r\n \r\n \r\n
\r\n
\r\n \r\n
\r\n
\r\n
\r\n
\r\n {!this.mapViewerConfig.popup.disabled &&\r\n \r\n }\r\n {!this.mapViewerConfig.sidebar.enabledPanels.includes(\"compare\") &&\r\n !!this.mapViewerConfig.compare &&\r\n \r\n }\r\n
\r\n
\r\n \r\n \r\n \r\n \r\n
\r\n \r\n \r\n
\r\n
\r\n
\r\n \r\n
\r\n
\r\n { alertMessages?.length > 0 &&\r\n
{alertMessages}
}\r\n
\r\n {startupMessage}\r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n );\r\n }\r\n\r\n handleMapLoad(map: __esri.Map, view: __esri.MapView | __esri.SceneView): void {\r\n // TODO: AppState status erst auf complete schalten, wenn alle Widgets geladen sind\r\n // this.appStore.setState({ status: \"complete\" });\r\n if (this.mapViewerConfig.locateButtonEnabled) {\r\n const locateWidget = new EsriLocate({\r\n view\r\n });\r\n view.ui.add(locateWidget, \"top-right\");\r\n }\r\n // mode zoom buttons to top right\r\n view.ui.move(\"zoom\", \"top-right\");\r\n const compassWidget = new EsriCompass({\r\n view\r\n });\r\n view.ui.add(compassWidget, \"top-right\");\r\n view.watch(\"rotation\", (newValue: number)=>{\r\n this.setState({northFacing: newValue === 0});\r\n });\r\n\r\n view.closePopup();\r\n }\r\n\r\n /**\r\n * Register listener to set topic, when navigation is done with browser back/forward buttons\r\n */\r\n handleBrowserNavigation(location: Location, navigate: NavigateFunction,params: any): void {\r\n // store route information to mobx store\r\n this.appStore.setRoute(location, params, navigate);\r\n if(!this.appStore.topic || !this.appStore.topic.routes.includes(\"/\"+params.topic)){\r\n const topic = this.appStore.setTopicByRoute(params.topic);\r\n if(topic) {\r\n this.setTopic(topic);\r\n }\r\n }\r\n this.handleLocationHash(location.hash);\r\n }\r\n handleSubtopicBrowserNavigation(location: Location, params: any): void {\r\n if(!this.appStore.subtopic || !this.appStore.subtopic.routes.includes(\"/\" + params.subtopic)){\r\n const subtopic = this.mapViewerConfig.getTopicByRoute(\r\n \"/\" + params.subtopic, this.mapViewerConfig.subtopics);\r\n if(subtopic) {\r\n this.appStore.setSubtopic(subtopic);\r\n } else {\r\n if (this.mapViewerConfig.subtopics) {\r\n // \"forwarden\" zu default Subtopic\r\n const defaultView = this.mapViewerConfig.topicSwitcher?.default;\r\n if (!defaultView) {\r\n // eslint-disable-next-line no-console\r\n console.warn(\"Default Subtopic nicht konfiguriert! (topicSwitcher.default)\");\r\n }\r\n const currentView = this.mapViewerConfig.subtopics?.find((v) => v.id === defaultView);\r\n if (!currentView) {\r\n // eslint-disable-next-line no-console\r\n console.warn(`Default Subtopic \"${defaultView}\" nicht gefunden!`);\r\n } else {\r\n this.appStore.setSubtopic(currentView);\r\n this.appStore.setRoutePath(\r\n PathUtils.joinPath(this.appStore.topic?.routes[0], currentView?.routes[0]));\r\n }\r\n }\r\n }\r\n }\r\n if(params.objectId !== this.appStore.objectId){\r\n this.appStore.setObjectId(this.props.params.objectId);\r\n }\r\n this.handleLocationHash(location.hash);\r\n }\r\n handleLocationHash(hash: string): void {\r\n if (hash) {\r\n hash = location.hash.replace(\"#\", \"\");\r\n hash = decodeURIComponent(hash);\r\n if(hash.indexOf(\"more-\")===0 || hash.indexOf(\"less-\")===0) {\r\n this.handleLessMore(hash);\r\n }else{\r\n if(this.mapStore.tocReady){\r\n this.mapViewerStore.showObject(hash);\r\n }else if(!this.tocReadyAutorunDisposers){\r\n this.tocReadyAutorunDisposers = autorun((r)=>{\r\n if(this.mapStore.tocReady){\r\n r.dispose();\r\n this.mapViewerStore.showObject(hash);\r\n }\r\n });\r\n }\r\n }\r\n this.appStore.removeRouteHash();\r\n }\r\n }\r\n handleLessMore(hash: string): void {\r\n const {addClass} = this.state;\r\n const target = hash.substring(5);\r\n if(addClass.indexOf(\"less-\" + target) > -1){\r\n addClass.splice(addClass.indexOf(\"less-\" + target),1);\r\n }\r\n if(addClass.indexOf(\"more-\" + target) > -1){\r\n addClass.splice(addClass.indexOf(\"more-\" + target),1);\r\n }\r\n addClass.push(hash);\r\n this.setState({addClass});\r\n }\r\n\r\n updateMessages(){\r\n const startupMessage = this.prepareMessagesContent(\r\n this.mapViewerConfig.meta?.startupMessage?\r\n (Array.isArray(this.mapViewerConfig.meta.startupMessage)?\r\n this.mapViewerConfig.meta.startupMessage: [this.mapViewerConfig.meta.startupMessage]):\r\n undefined, true);\r\n Promise.all(startupMessage).then((msgs) => {\r\n this.setState({startupMessage: msgs.filter((m) => m)});\r\n });\r\n const alertMessages = this.prepareMessagesContent(this.mapViewerConfig.meta.alerts);\r\n Promise.all(alertMessages).then((msgs) => {\r\n this.setState({alertMessages: msgs.filter((m) => m)});\r\n });\r\n }\r\n prepareMessagesContent(messagesConfig?: MessageConfiguration[], startup=false):\r\n Array> {\r\n const messagePromises: Array> = [];\r\n if (messagesConfig && Array.isArray(messagesConfig)) {\r\n const profile: __esri.Profile = {\r\n variables: [{\r\n name: \"$subtopicId\",\r\n type: \"text\"\r\n }, {\r\n name: \"$activeLayers\",\r\n type: \"array\",\r\n elementType: {\r\n type: \"text\"\r\n }\r\n }, {\r\n name: \"$activeLayersMeta\",\r\n type: \"array\",\r\n elementType: {\r\n type: \"text\"\r\n }\r\n }]\r\n };\r\n messagesConfig.forEach((message, index) => {\r\n if (typeof message.condition === \"undefined\") {\r\n messagePromises.push(new Promise((resolve) => {\r\n resolve(this.prepareMessageContent(message, index, startup));\r\n }));\r\n } else {\r\n if(this.mapStore.activeLayerMetauids) {\r\n const activeLayers: string[] = [];\r\n this.mapStore.activeLayers.forEach((layerNumbers: number[], layerMeta) => {\r\n layerNumbers?.forEach((lNo: number)=>{\r\n activeLayers.push(layerMeta + \"-\" + lNo.toString());\r\n });\r\n });\r\n const arcadeExecutor = arcade.createArcadeExecutor(message.condition, profile);\r\n messagePromises.push(new Promise((resolve) => {\r\n arcadeExecutor.then((ae) => {\r\n const condition = ae.execute({\r\n $activeLayers: activeLayers,\r\n $activeLayersMeta: this.mapStore.activeLayerMetauids,\r\n $subtopicId: (this.appStore.subtopicId? this.appStore.subtopicId: \"\")\r\n });\r\n let m: React.ReactElement | undefined;\r\n if (condition) {\r\n m = this.prepareMessageContent(message, index, startup);\r\n }\r\n resolve(m);\r\n });\r\n }));\r\n }\r\n }\r\n });\r\n }\r\n return messagePromises;\r\n }\r\n prepareMessageContent(messageConfig: MessageConfiguration, index: number, startup=false): React.ReactElement {\r\n let message: React.ReactElement;\r\n if (startup){\r\n message = ;\r\n } else {\r\n message = ;\r\n }\r\n return message;\r\n }\r\n}\r\n","import * as React from \"react\";\r\nimport {Component } from \"react\";\r\n\r\nimport \"./footer.scss\";\r\n\r\nimport {observer} from \"mobx-react\";\r\nimport {ScaleBar} from \"../../../core/components/scalebar/scalebar\";\r\nimport {Attribution} from \"../../../core/components/attribution/attribution\";\r\nimport {Coordinate} from \"../../../core/components/coordinate/coordinate\";\r\nimport MediaQuery from \"react-responsive\";\r\nimport {IAppStore, withStore} from \"../../../core/stores/abstract-app-store\";\r\n\r\nexport interface FooterProps {\r\n store?: IAppStore; // this is injected by withStore\r\n}\r\n\r\n@observer\r\nclass FooterBase extends Component {\r\n\r\n constructor(props: FooterProps) {\r\n super(props);\r\n this.state = {\r\n search: null\r\n };\r\n }\r\n\r\n render(): React.ReactElement | null {\r\n const {store} = this.props;\r\n if (!store) {\r\n return null;\r\n }\r\n const topic = store.appStore.topic;\r\n if (!topic) {\r\n return null;\r\n }\r\n return(\r\n
\r\n
\r\n \r\n \r\n \r\n \r\n
\r\n \r\n
\r\n );\r\n }\r\n}\r\n\r\nexport const Footer = withStore(FooterBase);\r\n","import * as React from \"react\";\r\nimport {Component } from \"react\";\r\n\r\nimport \"./header.scss\";\r\n\r\nimport {Search} from \"../../../core/components/search/search\";\r\nimport {SearchConfiguration} from \"../../../core/config/search-configuration\";\r\n\r\nimport {Button, Menu, Popup as SemanticPopup} from \"semantic-ui-react\";\r\n\r\nimport {Title} from \"../../../core/components/title/title\";\r\nimport {observer} from \"mobx-react\";\r\nimport {MapFinder} from \"../../../core/components/map-finder/map-finder\";\r\nimport {Icon} from \"../../../core/components/icon/icon\";\r\nimport MediaQuery from \"react-responsive\";\r\nimport {runInAction} from \"mobx\";\r\nimport {TopicSwitcherButton} from \"../../../core/components/topic-switcher/topic-switcher-button\";\r\nimport logo from \"../../../assets/images/kt_logo_white_inverted.svg\";\r\nimport SVG from \"react-inlinesvg\";\r\nimport {IAppStore, withStore} from \"../../../core/stores/abstract-app-store\";\r\n\r\nexport interface HeaderProps {\r\n capabilities: string[];\r\n searchConfig?: SearchConfiguration; // widgetsSearch is also the type for configuration object\r\n store?: IAppStore; // this is injected by withStore\r\n}\r\n\r\n@observer\r\nexport class HeaderBase extends Component {\r\n\r\n constructor(props: HeaderProps) {\r\n super(props);\r\n this.state = {\r\n search: null\r\n };\r\n }\r\n toggleSidebarVisible(): void {\r\n const {store} = this.props;\r\n runInAction(()=> {\r\n store?.uiStore.setSidebarVisible(!store?.uiStore.sidebarVisible);\r\n });\r\n }\r\n render(): React.ReactElement | null {\r\n const {searchConfig, store} = this.props;\r\n if (!store) {\r\n return null;\r\n }\r\n\r\n const mode = store.appConfig.mode;\r\n const {topic, subtopic, objectLabel} = store.appStore;\r\n if (!topic) {\r\n return null;\r\n }\r\n\r\n let aboutLink: React.ReactElement | undefined;\r\n if (store.mapViewerConfig.aboutLink) {\r\n aboutLink = (\r\n \r\n {store.mapViewerConfig.aboutLink.title}\r\n );\r\n }\r\n let helpLink: React.ReactElement | undefined;\r\n if (store.mapViewerConfig.helpLink) {\r\n helpLink = (
\r\n \r\n }\r\n on={\"hover\"}/>
\r\n );\r\n }\r\n return(\r\n
\r\n \r\n \r\n
\r\n \r\n \r\n \r\n {(mode !== \"production\") ? (\r\n Test) : \"\"}}\r\n on={\"hover\"}/>\r\n \r\n
\r\n \r\n \r\n \r\n \r\n \r\n {(store.mapViewerConfig.subtopics\r\n && Array.isArray(store.mapViewerConfig.topicSwitcher?.visible)\r\n && store.mapViewerConfig.topicSwitcher.visible.includes(\"header\"))?:

{(store.mapViewerConfig.subtopics?.length===1?\r\n (subtopic?.label? subtopic.label : subtopic?.name): topic.label )}{aboutLink}

}\r\n \r\n \r\n {helpLink}\r\n \r\n \r\n \r\n \r\n {this.props.capabilities.map((cap) => {\r\n if (cap === \"search\" && searchConfig) {\r\n return (\r\n \r\n );\r\n }\r\n })}\r\n \r\n
\r\n
\r\n );\r\n }\r\n}\r\n\r\nexport const Header = withStore(HeaderBase);\r\n","export {App} from \"./app\";\r\n","import React from \"react\";\r\nimport {observer} from \"mobx-react\";\r\n\r\nimport \"./legend-item-list.scss\";\r\n\r\nimport {LegendLayerInfoConfiguration} from \"../../../../../config/legend-configuration\";\r\nimport {TopicConfiguration} from \"../../../../../config/topic-configuration\";\r\nimport {LegendLayer} from \"./legend-layer/legend-layer\";\r\n\r\n\r\ninterface LegendItemListProps {\r\n topic: TopicConfiguration;\r\n layerInfos: LegendLayerInfoConfiguration[];\r\n}\r\n\r\n@observer\r\nexport class LegendItemList extends React.Component {\r\n\r\n constructor(props: LegendItemListProps) {\r\n super(props);\r\n }\r\n\r\n componentDidMount(): void {\r\n }\r\n\r\n componentWillUnmount(): void {\r\n }\r\n\r\n render(): React.ReactElement | null {\r\n const legendLayers = this.props.layerInfos.map((layer: LegendLayerInfoConfiguration) => {\r\n return ();\r\n });\r\n\r\n return (\r\n
\r\n {legendLayers}\r\n
\r\n );\r\n\r\n }\r\n}\r\n","import React from \"react\";\r\nimport {observer} from \"mobx-react\";\r\n\r\nimport \"./legend-item-group.scss\";\r\n\r\nimport {Header, Icon, Table} from \"semantic-ui-react\";\r\nimport {LegendItemGroupConfiguration} from \"../../../../../../../config/legend-configuration\";\r\nimport {LegendListItem} from \"./legend-list-item/legend-list-item\";\r\n\r\ninterface LegendItemGroupProps {\r\n config: LegendItemGroupConfiguration;\r\n}\r\n\r\n@observer\r\nexport class LegendItemGroup extends React.Component {\r\n\r\n constructor(props: LegendItemGroupProps) {\r\n super(props);\r\n }\r\n\r\n componentDidMount(): void {\r\n }\r\n\r\n componentWillUnmount(): void {\r\n }\r\n\r\n render(): React.ReactElement | null {\r\n if (!this.props.config.items) {\r\n return null;\r\n }\r\n\r\n const items = this.props.config.items.map((item) =>\r\n \r\n );\r\n const {link} = this.props.config;\r\n const hasLink = link != null && link.title != null && link.url != null;\r\n\r\n return (\r\n
\r\n
\r\n \r\n {this.props.config.title}\r\n \r\n {hasLink &&\r\n \r\n \r\n {link?.title}\r\n \r\n \r\n \r\n }\r\n
\r\n \r\n \r\n {items}\r\n \r\n
\r\n
\r\n );\r\n\r\n }\r\n}\r\n","import React from \"react\";\r\nimport {observer} from \"mobx-react\";\r\n\r\nimport \"./legend-list-item.scss\";\r\n\r\nimport {Table, Image, Icon} from \"semantic-ui-react\";\r\nimport {LegendItemConfiguration, LegendItemType} from \"../../../../../../../../config/legend-configuration\";\r\nimport SimpleLineSymbolProperties = __esri.SimpleLineSymbolProperties;\r\nimport { SimpleLineSymbol } from \"@arcgis/core/symbols\";\r\n\r\n\r\ninterface LegendItemListProps {\r\n config: LegendItemConfiguration;\r\n}\r\n\r\n@observer\r\nexport class LegendListItem extends React.Component {\r\n\r\n constructor(props: LegendItemListProps) {\r\n super(props);\r\n }\r\n\r\n /**\r\n * Convert \\n line breaks to
html breaks\r\n *\r\n * @param text\r\n */\r\n static addLineBreaks(text: string): React.ReactElement[] {\r\n return text.split(\"\\n\").map((txt, index) => (\r\n \r\n {txt}\r\n
\r\n
\r\n )\r\n );\r\n }\r\n\r\n componentDidMount(): void {\r\n }\r\n\r\n componentWillUnmount(): void {\r\n }\r\n\r\n render(): React.ReactElement | null {\r\n let symbol;\r\n if (this.props.config.type === LegendItemType.Icon) {\r\n symbol = (\r\n
\r\n {this.props.config.url &&\r\n \r\n }\r\n {this.props.config.iconName &&\r\n \r\n }\r\n
\r\n );\r\n } else if (this.props.config.type === LegendItemType.Path) {\r\n // svg path\r\n symbol = this.svgPath();\r\n } else if (this.props.config.type === LegendItemType.Circle) {\r\n symbol = this.svgCircle();\r\n } else {\r\n symbol = (\r\n
\r\n  \r\n
\r\n );\r\n }\r\n\r\n return (\r\n \r\n \r\n {symbol}\r\n \r\n {this.props.config.class &&\r\n \r\n {this.props.config.class}\r\n \r\n }\r\n \r\n {LegendListItem.addLineBreaks(this.props.config.description)}\r\n \r\n \r\n );\r\n\r\n }\r\n\r\n private svgPath() {\r\n // svg path\r\n const transformation = this.props.config.angle ? `rotate(${this.props.config.angle})` : undefined;\r\n const outline = new SimpleLineSymbol(this.props.config.outline as SimpleLineSymbolProperties);\r\n return (\r\n
\r\n \r\n \r\n \r\n \r\n \r\n
\r\n );\r\n }\r\n\r\n private svgCircle() {\r\n // svg path\r\n const transformation = this.props.config.angle ? `rotate(${this.props.config.angle})` : undefined;\r\n const outline = new SimpleLineSymbol(this.props.config.outline as SimpleLineSymbolProperties);\r\n return (\r\n
\r\n \r\n \r\n \r\n \r\n \r\n
\r\n );\r\n }\r\n}\r\n","import React from \"react\";\r\nimport {observer} from \"mobx-react\";\r\n\r\nimport \"./legend-layer.scss\";\r\n\r\n\r\nimport {TopicConfiguration} from \"../../../../../../config/topic-configuration\";\r\nimport {LegendLayerInfoConfiguration} from \"../../../../../../config/legend-configuration\";\r\nimport {Header} from \"semantic-ui-react\";\r\nimport {LegendItemGroup} from \"./legend-item-group/legend-item-group\";\r\n\r\ninterface LegendLayerProps {\r\n topic: TopicConfiguration;\r\n config: LegendLayerInfoConfiguration;\r\n}\r\n\r\n@observer\r\nexport class LegendLayer extends React.Component {\r\n\r\n constructor(props: LegendLayerProps) {\r\n super(props);\r\n }\r\n\r\n componentDidMount(): void {\r\n }\r\n\r\n componentWillUnmount(): void {\r\n }\r\n\r\n render(): React.ReactElement | null {\r\n if (!this.props.topic) {\r\n // no topic selected\r\n return Kein Fachgebiet gewählt...;\r\n }\r\n\r\n const itemGroups = this.props.config.itemGroups.filter((group) =>\r\n group.topics.includes(this.props.topic.id));\r\n\r\n if (!itemGroups.length) {\r\n return null;\r\n }\r\n\r\n const groups = itemGroups.map((group) => );\r\n\r\n return (\r\n
\r\n {groups.length &&\r\n
\r\n {this.props.config.title}\r\n
\r\n }\r\n {groups}\r\n
\r\n );\r\n\r\n }\r\n}\r\n","import React from \"react\";\r\nimport {observer} from \"mobx-react\";\r\n\r\nimport \"./legend.scss\";\r\n\r\nimport {LegendConfiguration, LegendStyleType} from \"../../../../config/legend-configuration\";\r\nimport {LegendItemList} from \"./legend-item-list/legend-item-list\";\r\nimport {TopicConfiguration} from \"../../../../config/topic-configuration\";\r\nimport {IAppStore, withStore} from \"../../../../core/stores/abstract-app-store\";\r\n\r\n\r\ninterface LegendProps {\r\n config: LegendConfiguration;\r\n store?: IAppStore; // this is injected by withStore\r\n}\r\n\r\n@observer\r\nclass LegendBase extends React.Component {\r\n widgetKey = \"legend\";\r\n constructor(props: LegendProps) {\r\n super(props);\r\n this.state = {\r\n visible: true\r\n };\r\n }\r\n\r\n render(): React.ReactElement | null {\r\n if (!this.state.visible) {\r\n return null;\r\n }\r\n\r\n const {store} = this.props;\r\n if (!store) {\r\n return null;\r\n }\r\n\r\n const topic = store.appStore.subtopic as TopicConfiguration;\r\n let content;\r\n if (!topic) {\r\n content = Fachbereich auswählen...;\r\n }\r\n\r\n if (!this.props.config.style || this.props.config.style.type === LegendStyleType.List) {\r\n content = (\r\n );\r\n }\r\n // TODO: Implement legend in card layout\r\n\r\n return (\r\n
\r\n
\r\n
\r\n {content}\r\n
\r\n
\r\n
\r\n
\r\n );\r\n\r\n }\r\n componentDidMount(): void {\r\n const {store} = this.props;\r\n if (!store?.uiStore.widgets.has(this.widgetKey)) {\r\n store?.uiStore.addWidget(this.widgetKey, this);\r\n }\r\n }\r\n componentWillUnmount(): void {\r\n const {store} = this.props;\r\n store?.uiStore.removeWidget(this.widgetKey);\r\n }\r\n}\r\n\r\nexport const Legend = withStore(LegendBase);\r\n","import * as React from \"react\";\r\nimport {Dropdown, FormField, Message} from \"semantic-ui-react\";\r\nimport {observer} from \"mobx-react\";\r\n\r\nimport \"./np-docs.scss\";\r\nimport esriRequest from \"@arcgis/core/request\";\r\nimport {IAppStore, withStore} from \"../../../../core/stores/abstract-app-store\";\r\n\r\nexport interface NpDocsProps {\r\n config: any;\r\n small?: boolean;\r\n store?: IAppStore; // this is injected by withStore\r\n}\r\n\r\n@observer\r\nexport class NpDocsBase extends React.Component {\r\n url: string;\r\n constructor(props: NpDocsProps) {\r\n super(props);\r\n this.state = {\r\n isFetching: false,\r\n search: true,\r\n searchQuery: null,\r\n selectOpen: true,\r\n value: null,\r\n options: [],\r\n files: []\r\n };\r\n this.url = props.config.npDocs;\r\n this.handleChange = this.handleChange.bind(this);\r\n this.handleSearchChange = this.handleSearchChange.bind(this);\r\n this.handleSelectOpen = this.handleSelectOpen.bind(this);\r\n this.handleSelectClose = this.handleSelectClose.bind(this);\r\n }\r\n componentDidMount() {\r\n this.fetchOptions();\r\n }\r\n\r\n handleChange(e, { value }): void {\r\n this.setState({ value });\r\n this.setState({ isFetching: true });\r\n esriRequest(this.url+\"?VAL=\"+value, {\r\n responseType: \"json\"\r\n }).then((response) => {\r\n this.setState({\r\n isFetching: false,\r\n files: response.data\r\n });\r\n });\r\n }\r\n handleSearchChange(e, { searchQuery }): void {\r\n this.setState({searchQuery});\r\n }\r\n handleSelectOpen(): void {\r\n const {store} = this.props;\r\n this.setState({selectOpen: true});\r\n store?.uiStore.setSidebarSelectOpen(true);\r\n }\r\n handleSelectClose(): void {\r\n const {store} = this.props;\r\n this.setState({selectOpen: false});\r\n store?.uiStore.setSidebarSelectOpen(false);\r\n }\r\n fetchOptions(): void {\r\n this.setState({ isFetching: true });\r\n esriRequest(this.url, {\r\n responseType: \"json\"\r\n }).then((response) => {\r\n this.setState({\r\n isFetching: false,\r\n options: response.data[\"municipalities\"]\r\n });\r\n });\r\n }\r\n render() {\r\n const { options, isFetching, search, value, files, selectOpen } = this.state;\r\n const className= \"geo-np-docs\";\r\n const zpList: React.ReactElement[]=[];\r\n const bbplaList: React.ReactElement[]=[];\r\n const srlList: React.ReactElement[]=[];\r\n if(files[\"zp\"]) {\r\n files[\"zp\"].forEach((link: any, index: number) => {\r\n zpList.push(
  • \r\n \r\n {link.name}\r\n
  • );\r\n });\r\n }\r\n if(files[\"bbpla\"]) {\r\n files[\"bbpla\"].forEach((link: any, index: number) => {\r\n bbplaList.push(
  • \r\n \r\n {link.name}\r\n
  • );\r\n });\r\n }\r\n if(files[\"srl\"]) {\r\n files[\"srl\"].forEach((link: any, index: number) => {\r\n srlList.push(
  • \r\n \r\n {link.name}\r\n
  • );\r\n });\r\n }\r\n return (\r\n
    \r\n \r\n \r\n \r\n \r\n {(zpList.length>0)?
    \r\n

    Zonenpläne

    \r\n
      {zpList}
    \r\n
    :null}\r\n {(bbplaList.length>0)?
    \r\n

    Spezialpläne und Konzepte

    \r\n
      {bbplaList}
    \r\n
    : null}\r\n {(srlList.length>0)?
    \r\n

    Weiterführende Informationen

    \r\n
      {srlList}
    \r\n
    : null}\r\n
    \r\n );\r\n }\r\n}\r\nexport const NpDocs = withStore(NpDocsBase);","import React from \"react\";\r\n\r\nimport \"./sidebar.scss\";\r\n\r\nimport {\r\n Accordion,\r\n AccordionPanelProps,\r\n AccordionTitleProps,\r\n Button,\r\n Divider,\r\n Menu,\r\n Sidebar as SemanticSidebar\r\n} from \"semantic-ui-react\";\r\n\r\nimport {SidebarConfiguration, SidebarControlsConfiguration} from \"../../../config/sidebar-configuration\";\r\nimport {Legend} from \"./legend/legend\";\r\nimport {Legend as CoreLegend} from \"../../../core/components/legend/legend\";\r\nimport {LayerList} from \"../../../core/components/layer-list/layer-list\";\r\nimport {ViewManager} from \"../../../core/components/view-manager/view-manager\";\r\nimport {Compare} from \"../../../core/components/compare/compare\";\r\nimport {Printing} from \"../../../core/components/printing/printing\";\r\nimport {Sharing} from \"../../../core/components/sharing/sharing\";\r\nimport {Icon} from \"../../../core/components/icon/icon\";\r\n\r\nimport {observer} from \"mobx-react\";\r\nimport {MapFinder} from \"../../../core/components/map-finder/map-finder\";\r\nimport {autorun, runInAction} from \"mobx\";\r\nimport {Tools} from \"../../../core/components/tools/tools\";\r\nimport {TopicSwitcher} from \"../../../core/components/topic-switcher/topic-switcher\";\r\nimport {TopicSwitcherButton} from \"../../../core/components/topic-switcher/topic-switcher-button\";\r\nimport {NpDocs} from \"./np-docs/np-docs\";\r\nimport {IAppStore, withStore} from \"../../../core/stores/abstract-app-store\";\r\nimport {LayerSelector} from \"../../../core/components/layer-selector/layer-selector\";\r\n\r\ninterface CollapseButtonProps {\r\n onClick: any;\r\n visible: boolean;\r\n}\r\n\r\nconst CollapseButton = (props: CollapseButtonProps) => (\r\n \r\n);\r\n\r\nexport enum DockPosition {\r\n TopLeft = \"docked-top-left\",\r\n TopRight = \"docked-top-right\",\r\n BottomLeft = \"docked-bottom-left\",\r\n BottomRight = \"docked-bottom-right\",\r\n None = \"\"\r\n}\r\n\r\nexport enum WindowMode {\r\n Normal = \"normal\",\r\n Fullscreen = \"fullscreen\",\r\n Docked = \"docked\"\r\n}\r\n\r\ninterface SidebarProps {\r\n config: SidebarConfiguration;\r\n small?: boolean;\r\n store?: IAppStore; // this is injected by withStore\r\n}\r\n\r\n@observer\r\nclass SidebarBase extends React.Component{\r\n breakToDocked = 510; // break point where to switch to docked mode\r\n autorunDisposers: any[] = [];\r\n lastActiveIndex: string[] = [];\r\n resizeObserver: ResizeObserver;\r\n\r\n widgetKey = \"sidebar\";\r\n sidebarRef = React.createRef();\r\n constructor(props: SidebarProps) {\r\n super(props);\r\n // noinspection PointlessBooleanExpressionJS,RedundantConditionalExpressionJS\r\n this.state = {\r\n activeIndex: props.config.activeIndex || [\"toc\"],\r\n width: this.props.small? \"100%\" : props.config.width\r\n };\r\n this.lastActiveIndex = props.config.activeIndex || [\"toc\"];\r\n this.checkHeight = this.checkHeight.bind(this);\r\n this.handleClick = this.handleClick.bind(this);\r\n this.handleResize = this.handleResize.bind(this);\r\n this.hide = this.hide.bind(this);\r\n this.toggleVisibility = this.toggleVisibility.bind(this);\r\n }\r\n handleResize(): void {\r\n this.checkHeight();\r\n }\r\n checkHeight(): void {\r\n const {store} = this.props;\r\n const sHeight = this.sidebarRef.current?.clientHeight;\r\n const isHigh = (store?.uiStore.uiHeight && sHeight && (store?.uiStore.uiHeight - 95 < sHeight)) as boolean;\r\n if (store?.uiStore.sidebarHigh !== isHigh) {\r\n store?.uiStore.setSidebarHigh(isHigh);\r\n }\r\n }\r\n componentDidMount(): void {\r\n const {config, small, store} = this.props;\r\n if (!store) {\r\n return;\r\n }\r\n\r\n runInAction(() => {\r\n if (!store.uiStore.widgets.has(this.widgetKey)) {\r\n store.uiStore.addWidget(this.widgetKey, this);\r\n store.uiStore.setMenuVisible(!config.collapsed);\r\n store.uiStore.setSidebarSelectOpen(false);\r\n }\r\n });\r\n if (small){\r\n this.autorunDisposers.push(autorun(() => {\r\n const {visible} = store.TopicSwitcherStore;\r\n this.toggleTopicMenu(visible, store);\r\n }));\r\n } else {\r\n this.checkHeight();\r\n this.resizeObserver = new ResizeObserver(() => {\r\n this.checkHeight();\r\n });\r\n if (this.sidebarRef.current){\r\n this.resizeObserver.observe(this.sidebarRef.current);\r\n }\r\n window.addEventListener(\"resize\", this.handleResize);\r\n }\r\n }\r\n componentDidUpdate(prevProps: SidebarProps): void {\r\n const {store} = this.props;\r\n if(prevProps.config.activeIndex !== this.props.config.activeIndex){\r\n this.setState({activeIndex: this.props.config.activeIndex || [\"toc\"]});\r\n this.lastActiveIndex = this.props.config.activeIndex || [\"toc\"];\r\n }\r\n if(prevProps.config.collapsed !== this.props.config.collapsed){\r\n store?.uiStore.setMenuVisible(!this.props.config.collapsed);\r\n }\r\n }\r\n componentWillUnmount(): void {\r\n const {small, store} = this.props;\r\n store?.uiStore.removeWidget(this.widgetKey);\r\n this.autorunDisposers.forEach((disposer: any) => {\r\n disposer();\r\n });\r\n this.autorunDisposers.length = 0;\r\n if(!small){\r\n window.removeEventListener(\"resize\", this.handleResize);\r\n }\r\n if (this.resizeObserver) {\r\n this.resizeObserver.disconnect();\r\n }\r\n }\r\n\r\n /**\r\n * Handle clicks to accordion titles\r\n *\r\n * @param e\r\n * @param titleProps\r\n */\r\n handleClick(e: React.MouseEvent, titleProps: AccordionTitleProps): void {\r\n const {store} = this.props;\r\n runInAction(()=> {\r\n const { activeIndex } = this.state;\r\n let newIndex: string[] = [];\r\n const index = titleProps.index as \"basemap_gallery\" | \"legend\" | \"map_finder\" | \"print\"\r\n | \"sharing\" | \"toc\" | \"topic_menu\" | \"tools\" | \"tools_sharing\" | \"np-docs\" | \"layer_selector\";\r\n const isSmallDevice = window.matchMedia(\r\n \"(max-width: \"+ store?.mapViewerConfig.breakpoints.md + \"px)\"\r\n ).matches;\r\n if (activeIndex.includes(index)) {\r\n // hide tab by removing index from list\r\n newIndex = activeIndex.filter((item: string) => item !== index);\r\n } else {\r\n // show panel by adding to list\r\n if (isSmallDevice || this.props.config.exclusivePanels?.includes(index)) {\r\n // only open the exclusive tab\r\n newIndex = [index as string];\r\n } else {\r\n newIndex = [...activeIndex, index];\r\n }\r\n }\r\n if(!newIndex.includes(\"topic_menu\")) {\r\n this.lastActiveIndex = newIndex;\r\n }\r\n this.setState( { activeIndex: newIndex });\r\n if(this.props.small) {\r\n store?.TopicSwitcherStore.setVisible(newIndex.includes(\"topic_menu\"));\r\n }\r\n });\r\n }\r\n toggleTopicMenu(visible: boolean, store: IAppStore): void {\r\n runInAction(()=> {\r\n store?.TopicSwitcherStore.setVisible(visible);\r\n if(visible){\r\n this.setState({\r\n activeIndex: [\"topic_menu\"]\r\n });\r\n }else{\r\n if(this.lastActiveIndex.length > 0) {\r\n this.setState({activeIndex: this.lastActiveIndex});\r\n }\r\n }\r\n });\r\n }\r\n\r\n hide(): void {\r\n const {store} = this.props;\r\n store?.uiStore.setMenuVisible(false);\r\n }\r\n\r\n dock(): void {\r\n this.setState((state: any) => {\r\n if (state.currentMode !== WindowMode.Docked) {\r\n return {\r\n currentMode: WindowMode.Docked,\r\n dockPosition: DockPosition.TopRight,\r\n width: \"100vw\"\r\n };\r\n }\r\n });\r\n }\r\n\r\n undock(): void {\r\n this.setState((state: any) => {\r\n if (state.currentMode !== WindowMode.Normal) {\r\n // go back to original size and position\r\n return {\r\n currentMode: WindowMode.Normal,\r\n dockPosition: DockPosition.None,\r\n width: this.props.config.width\r\n };\r\n }\r\n });\r\n }\r\n\r\n toggleVisibility(): void {\r\n const {store} = this.props;\r\n const currentVisible = store?.uiStore.menuVisible;\r\n store?.uiStore.setMenuVisible(!currentVisible);\r\n }\r\n\r\n render(): React.ReactElement | null {\r\n const {activeIndex, width, currentMode} = this.state;\r\n const {config, small, store} = this.props;\r\n if (!store) {\r\n return null;\r\n }\r\n\r\n const {menuVisible, sidebarSelectOpen} = store.uiStore;\r\n const topicswitcherVisible = store.TopicSwitcherStore.visible;\r\n const controlsConfig = store.mapViewerConfig as SidebarControlsConfiguration;\r\n const panels: AccordionPanelProps[] = [];\r\n if(store.CompareStore.enabled && store.mapViewerConfig.compare.style===\"slider\" && !small){\r\n return null;\r\n }\r\n if (config.enabledPanels.includes(\"toc\")) {\r\n let content;\r\n if(store.mapViewerConfig.subtopics){\r\n content = (\r\n \r\n );\r\n } else {\r\n content = (\r\n \r\n );\r\n }\r\n panels.push({\r\n key: \"toc\",\r\n active: activeIndex.includes(\"toc\"),\r\n title: {\r\n content: (\r\n \r\n \r\n \r\n Karteninhalt\r\n ),\r\n icon: false,\r\n index: \"toc\",\r\n onClick: this.handleClick\r\n },\r\n content: {\r\n content,\r\n }\r\n });\r\n }else{\r\n // Falls TOC nicht vorhanden gleich auf tocReady auf true setzten. Funktioniert nur für Karten ohne Inhalt\r\n // korrekt.\r\n // TODO: Funktionieren von Karten mit Inhalt ohne TOC\r\n store?.mapStore.setTocReady();\r\n }\r\n if (config.enabledPanels.includes(\"layer_selector\")) {\r\n const content = (\r\n \r\n );\r\n const activeCompare = (\r\n \r\n  \r\n \r\n );\r\n panels.push({\r\n key: \"layer-selector\",\r\n active: activeIndex.includes(\"layer-selector\"),\r\n title: {\r\n content: (\r\n \r\n \r\n \r\n Karteninhalt\r\n {store.LayerSelectorStore.comparisonEnabled &&\r\n activeCompare\r\n }\r\n ),\r\n icon: false,\r\n index: \"layer-selector\",\r\n onClick: this.handleClick\r\n },\r\n content: {\r\n content\r\n }\r\n });\r\n }\r\n if (config.enabledPanels.includes(\"legend\")) {\r\n let topicSwitcher: React.ReactElement | null = null;\r\n if(store.mapViewerConfig.topicSwitcher?.visible?.includes(\"legend\")){\r\n topicSwitcher = ;\r\n }\r\n panels.push({\r\n key: \"legend\",\r\n active: activeIndex.includes(\"legend\"),\r\n title: {\r\n content: (\r\n \r\n \r\n Legende\r\n ),\r\n icon: false,\r\n index: \"legend\",\r\n onClick: this.handleClick\r\n },\r\n content: {\r\n content: (controlsConfig.legend.useEsri && controlsConfig.legend.esriConfig)?(\r\n \r\n ) :(\r\n \r\n ),\r\n }\r\n });\r\n }\r\n if (config.enabledPanels.includes(\"compare\") && store.mapViewerConfig.compare) {\r\n let topicSwitcher: React.ReactElement | null = null;\r\n if(store.mapViewerConfig.topicSwitcher?.visible?.includes(\"compare\")){\r\n topicSwitcher = ;\r\n }\r\n const content =\r\n \r\n ;\r\n panels.push({\r\n key: \"compare\",\r\n active: activeIndex.includes(\"compare\"),\r\n title: {\r\n content: (\r\n \r\n \r\n \r\n Karteninhalt\r\n ),\r\n icon: false,\r\n index: \"compare\",\r\n onClick: this.handleClick\r\n },\r\n content: {\r\n content,\r\n }\r\n });\r\n }\r\n if (config.enabledPanels.includes(\"print\") && !store.CompareStore.enabled) {\r\n panels.push({\r\n key: \"print\",\r\n active: activeIndex.includes(\"print\"),\r\n title: {\r\n content: (\r\n \r\n \r\n \r\n Drucken\r\n ),\r\n icon: false,\r\n index: \"print\",\r\n onClick: this.handleClick\r\n },\r\n content: {\r\n content: (\r\n \r\n )\r\n }\r\n });\r\n }\r\n if ((config.enabledPanels.includes(\"sharing\") || config.enabledPanels.includes(\"tools\"))\r\n && !store.CompareStore.enabled) {\r\n const panelContent: React.JSX.Element[] = [];\r\n if (config.enabledPanels.includes(\"sharing\")){\r\n panelContent.push();\r\n }\r\n if (config.enabledPanels.includes(\"sharing\") && config.enabledPanels.includes(\"tools\")) {\r\n panelContent.push();\r\n }\r\n if (config.enabledPanels.includes(\"tools\")) {\r\n panelContent.push(
    );\r\n }\r\n panels.push({\r\n key: \"tools_sharing\",\r\n active: activeIndex.includes(\"sharing\") || activeIndex.includes(\"tools\")\r\n || activeIndex.includes(\"tools_sharing\"),\r\n title: {\r\n content: (\r\n \r\n \r\n \r\n Teilen & Tools\r\n ),\r\n icon: false,\r\n index: \"tools_sharing\",\r\n onClick: this.handleClick\r\n },\r\n content: {\r\n content: panelContent\r\n }\r\n });\r\n }\r\n if (config.customPanels?.includes(\"np-docs\")) {\r\n panels.push({\r\n key: \"np-docs\",\r\n active: activeIndex.includes(\"np-docs\"),\r\n title: {\r\n content: (\r\n \r\n \r\n \r\n Download Planungsdokumente\r\n ),\r\n icon: false,\r\n index: \"np-docs\",\r\n onClick: this.handleClick\r\n },\r\n content: {\r\n content: (\r\n \r\n )\r\n }\r\n });\r\n }\r\n // in sidebar mode\r\n if (small){\r\n if (store.mapViewerConfig.meta?.mapFinder) {\r\n panels.push({\r\n key: \"map_finder\",\r\n active: activeIndex.includes(\"map_finder\"),\r\n title: {\r\n content: (\r\n \r\n \r\n weitere Karten\r\n ),\r\n icon: false,\r\n index: \"map_finder\",\r\n onClick: this.handleClick\r\n },\r\n content: {\r\n content: (\r\n \r\n )\r\n }\r\n });\r\n }\r\n if (store.mapViewerConfig.topicSwitcher && store.mapViewerConfig.subtopics) {\r\n panels.unshift({\r\n key: \"topic_menu\",\r\n active: activeIndex.includes(\"topic_menu\"),\r\n title: {\r\n content: (\r\n \r\n \r\n \r\n {store.mapViewerConfig.topicSwitcher.title}\r\n \r\n ),\r\n icon: false,\r\n index: \"topic_menu\",\r\n onClick: this.handleClick\r\n },\r\n content: {\r\n content: (\r\n \r\n )\r\n }\r\n });\r\n }\r\n }\r\n\r\n const cssProperties: any = { width };\r\n cssProperties[\"--panels\"] = panels.length;\r\n if(small) {\r\n return \r\n \r\n
    ;\r\n }\r\n return \r\n \r\n
    \r\n \r\n
    \r\n \r\n \r\n
    ;\r\n\r\n }\r\n}\r\n\r\nexport const Sidebar = withStore(SidebarBase);\r\n","import {JsonObject, JsonProperty} from \"typescript-json-serializer\";\r\nimport {SemanticICONS} from \"semantic-ui-react\";\r\nimport {ConditionalLinkConfiguration, LinkConfiguration} from \"../core/config/link-configuration\";\r\nimport { SimpleLineSymbolConfiguration} from \"../core/config/symbol-configuration\";\r\nimport {LegendConfiguration as EsriLegendConfiguration} from \"../core/config/legend-configuration\";\r\nimport {MessageConfiguration} from \"../core/config/message-configuration\";\r\n\r\nexport enum LegendStyleType {\r\n List = \"list\",\r\n Card = \"card\"\r\n}\r\n\r\nexport enum LegendLayoutType {\r\n Stack = \"stack\",\r\n SideBySide = \"side-by-side\"\r\n}\r\n\r\nexport enum LegendItemType {\r\n Icon = \"icon\",\r\n Path = \"path\",\r\n PatchRect = \"patch-rect\",\r\n CircleHalfTop = \"circle-half-top\",\r\n CircleHalfBottom = \"circle-half-bottom\",\r\n Circle = \"circle\"\r\n}\r\n\r\n@JsonObject()\r\nexport class LegendStyleConfiguration {\r\n\r\n /**\r\n * Type of style\r\n */\r\n @JsonProperty()\r\n declare type: LegendStyleType;\r\n\r\n /**\r\n * Layout\r\n */\r\n @JsonProperty()\r\n declare layout: LegendLayoutType;\r\n\r\n constructor() {}\r\n}\r\n\r\n@JsonObject()\r\nexport class LegendItemConfiguration {\r\n\r\n /**\r\n * Item ID\r\n */\r\n @JsonProperty()\r\n declare id: string;\r\n\r\n /**\r\n * Item type. The type defines how th item is rendered.\r\n */\r\n @JsonProperty()\r\n declare type: LegendItemType;\r\n\r\n /**\r\n * Class name\r\n */\r\n @JsonProperty()\r\n declare class: string;\r\n\r\n /**\r\n * Description of the item\r\n */\r\n @JsonProperty()\r\n declare description: string;\r\n\r\n /**\r\n * Color as HEX string\r\n */\r\n @JsonProperty()\r\n declare color: string;\r\n\r\n /**\r\n * URL (for type icon only)\r\n */\r\n @JsonProperty()\r\n declare url: string;\r\n\r\n /**\r\n * Semantic UI Icon Name\r\n * See https://react.semantic-ui.com/elements/icon/\r\n */\r\n @JsonProperty()\r\n declare iconName: SemanticICONS;\r\n\r\n /**\r\n * Icon as SVG path\r\n * Set LegendItemType.Path to use it\r\n */\r\n @JsonProperty()\r\n declare svgPath: string;\r\n\r\n /**\r\n * The angle (in °) of the patch/icon\r\n * Only applied to svgPath\r\n */\r\n @JsonProperty()\r\n declare angle: number;\r\n\r\n /**\r\n * The outline color\r\n */\r\n @JsonProperty()\r\n declare outline: SimpleLineSymbolConfiguration;\r\n\r\n constructor() {}\r\n}\r\n\r\n@JsonObject()\r\nexport class LegendItemGroupConfiguration {\r\n\r\n /**\r\n * Group ID\r\n */\r\n @JsonProperty()\r\n declare id: string;\r\n\r\n /**\r\n * Group title\r\n */\r\n @JsonProperty()\r\n declare title: string;\r\n\r\n /**\r\n * Belongs to this topics\r\n */\r\n @JsonProperty()\r\n declare topics: string[];\r\n\r\n /**\r\n * Link to external web page\r\n * @example: page with additional information\r\n */\r\n @JsonProperty()\r\n declare link: LinkConfiguration;\r\n\r\n /**\r\n * Legend items\r\n */\r\n @JsonProperty()\r\n declare items: LegendItemConfiguration[];\r\n\r\n constructor() {}\r\n}\r\n\r\n@JsonObject()\r\nexport class LegendLayerInfoConfiguration {\r\n\r\n /**\r\n * Layer ID\r\n */\r\n @JsonProperty()\r\n declare id: string;\r\n\r\n /**\r\n * Title for layer legend\r\n */\r\n @JsonProperty()\r\n declare title: string;\r\n\r\n /**\r\n * Group of items. To divide legend of a layer in sub sections.\r\n * E.g. to represent filters.\r\n */\r\n @JsonProperty()\r\n declare itemGroups: LegendItemGroupConfiguration[];\r\n\r\n constructor() {}\r\n}\r\n\r\n@JsonObject()\r\nexport class LegendConfiguration {\r\n /**\r\n * Use Esri legend or a custom\r\n */\r\n @JsonProperty()\r\n declare useEsri: boolean;\r\n\r\n /**\r\n * Legend definitions for layers\r\n */\r\n @JsonProperty()\r\n declare esriConfig: EsriLegendConfiguration | undefined;\r\n /**\r\n * Link zu PDF Version\r\n */\r\n @JsonProperty()\r\n declare links?: ConditionalLinkConfiguration[];\r\n /**\r\n * Legend position\r\n * Possible Values: \"panel\": Separate legend panel\r\n * \"toc\": in TOC panel\r\n * \"layer\": in TOC after the corresponding layer\r\n * \"compare\": in compare panel\r\n */\r\n @JsonProperty()\r\n declare position: \"panel\" | \"toc\" | \"layer\" | \"compare\";\r\n\r\n /**\r\n * Initial width of popup window\r\n */\r\n @JsonProperty()\r\n declare width: number;\r\n\r\n /**\r\n * Initial height of popup window\r\n */\r\n @JsonProperty()\r\n declare height: number;\r\n\r\n /**\r\n * Minimum height in fixed position\r\n */\r\n @JsonProperty()\r\n declare fixedMinHeight: number;\r\n\r\n /**\r\n * Heading title\r\n */\r\n @JsonProperty()\r\n declare title: string;\r\n\r\n /**\r\n * Style of legend\r\n */\r\n @JsonProperty()\r\n declare style: LegendStyleConfiguration;\r\n\r\n /**\r\n * Legend definitions for layers\r\n */\r\n @JsonProperty()\r\n declare layerInfos: LegendLayerInfoConfiguration[];\r\n /**\r\n * Metadata for Legend\r\n */\r\n @JsonProperty()\r\n declare preContent?: MessageConfiguration[];\r\n /**\r\n * Metadata for Legend\r\n */\r\n @JsonProperty()\r\n declare postContent?: MessageConfiguration[];\r\n\r\n @JsonProperty()\r\n declare noLegendText?: string;\r\n\r\n constructor() {}\r\n}\r\n","/*\r\n Module configuration file\r\n */\r\nimport { JsonObject, JsonProperty } from \"typescript-json-serializer\";\r\nimport {ModuleConfiguration} from \"../core/config/module-configuration\";\r\nimport {TopicConfiguration, TopicBasemapConfiguration} from \"./topic-configuration\";\r\nimport {FeatureLayerConfiguration} from \"../core/config/layer-configuration\";\r\nimport {LayerTemplate, PopupConfiguration} from \"../core/config/popup-configuration\";\r\nimport {LegendConfiguration} from \"./legend-configuration\";\r\nimport {SidebarConfiguration} from \"./sidebar-configuration\";\r\nimport {LayerListConfiguration} from \"../core/config/layer-list-configuration\";\r\nimport {WebMapConfiguration} from \"../core/config/web-map-configuration\";\r\nimport {\r\n FillSymbolConfiguration,\r\n PictureMarkerSymbolConfiguration,\r\n SimpleMarkerSymbolConfiguration\r\n} from \"../core/config/symbol-configuration\";\r\nimport {MaintenanceConfiguration} from \"../core/config/maintenance-configuration\";\r\nimport {PrintConfiguration} from \"../core/config/print-configuration\";\r\nimport {MessageConfiguration} from \"../core/config/message-configuration\";\r\nimport {LinkConfiguration} from \"../core/config/link-configuration\";\r\nimport {ToolsConfiguration} from \"../core/config/tools-configuration\";\r\nimport {SearchConfiguration} from \"../core/config/search-configuration\";\r\nimport {MapViewConfiguration} from \"../core/config/view-configuration\";\r\nimport {BasemapGalleryConfiguration} from \"../core/config/basemap-gallery-configuration\";\r\nimport {BookmarkConfiguration} from \"../core/config/bookmark-configuration\";\r\nimport {TopicSwitcherConfiguration} from \"../core/config/topic-switcher-configuration\";\r\nimport {CompareConfiguration} from \"../core/config/compare-configuration\";\r\nimport {LayerSelectorConfiguration} from \"../core/config/layer-selector-configuration\";\r\n\r\n\r\n@JsonObject()\r\nexport class MapFinderMapConfiguration {\r\n @JsonProperty()\r\n declare id: string;\r\n @JsonProperty()\r\n declare title: string;\r\n @JsonProperty()\r\n declare titleFull: string;\r\n @JsonProperty()\r\n declare keywords?: string[];\r\n @JsonProperty()\r\n declare url: string;\r\n @JsonProperty()\r\n declare login?: boolean;\r\n}\r\n@JsonObject()\r\nexport class MapFinderConfiguration {\r\n @JsonProperty()\r\n declare id: string;\r\n @JsonProperty()\r\n declare maps: MapFinderMapConfiguration[];\r\n @JsonProperty()\r\n declare apps?: MapFinderMapConfiguration[];\r\n}\r\n@JsonObject()\r\nexport class WebMapMetaConfiguration extends ModuleConfiguration {\r\n @JsonProperty()\r\n declare alerts?: MessageConfiguration[];\r\n @JsonProperty()\r\n declare startupMessage?: MessageConfiguration | MessageConfiguration[];\r\n @JsonProperty()\r\n declare mapFinder?: MapFinderConfiguration[];\r\n constructor() {\r\n super();\r\n }\r\n}\r\n@JsonObject()\r\nexport class TrackerConfiguration {\r\n @JsonProperty()\r\n declare urlBase: string;\r\n @JsonProperty()\r\n declare siteId: number;\r\n constructor() {\r\n }\r\n}\r\n@JsonObject()\r\nexport class MapViewerConfiguration extends ModuleConfiguration {\r\n @JsonProperty()\r\n declare additionalParameter?: {\r\n basemap: { [key: string]: string};\r\n marker: { [key: string]: SimpleMarkerSymbolConfiguration };\r\n };\r\n @JsonProperty()\r\n declare bookmarks: BookmarkConfiguration[];\r\n\r\n @JsonProperty()\r\n declare breakpoints: {\r\n [key: string]: number;\r\n };\r\n @JsonProperty()\r\n declare compare: CompareConfiguration;\r\n\r\n // the topic activated on application's start\r\n @JsonProperty()\r\n declare initialTopic: string;\r\n\r\n /**\r\n * Layer list configuration\r\n */\r\n @JsonProperty()\r\n declare layerList: LayerListConfiguration;\r\n\r\n /**\r\n * Layer configurations (e.g. station layer)\r\n */\r\n @JsonProperty()\r\n declare layers: FeatureLayerConfiguration[];\r\n\r\n /**\r\n * Layer list configuration when using layer selector\r\n */\r\n @JsonProperty()\r\n declare layerSelector: LayerSelectorConfiguration[];\r\n\r\n /**\r\n * \"über diese Karte\" Link\r\n */\r\n @JsonProperty()\r\n declare aboutLink?: LinkConfiguration;\r\n\r\n /**\r\n * \"über diese Karte\" Link\r\n */\r\n @JsonProperty()\r\n declare helpLink?: LinkConfiguration;\r\n /**\r\n * legend\r\n */\r\n @JsonProperty()\r\n declare legend: LegendConfiguration;\r\n\r\n /**\r\n * Printing\r\n */\r\n @JsonProperty()\r\n declare print: PrintConfiguration;\r\n\r\n /**\r\n * Information about maintenance work on the application\r\n */\r\n @JsonProperty({ type: MaintenanceConfiguration})\r\n declare maintenance?: MaintenanceConfiguration[];\r\n\r\n // Objektabfrage Popup\r\n @JsonProperty()\r\n declare popup: PopupConfiguration;\r\n\r\n @JsonProperty()\r\n declare tools: ToolsConfiguration;\r\n\r\n // Topics (Themen)\r\n @JsonProperty()\r\n declare topics: TopicConfiguration[];\r\n\r\n // Topics (Themen)\r\n @JsonProperty()\r\n declare subtopics: TopicConfiguration[];\r\n\r\n @JsonProperty()\r\n declare topicSwitcher: TopicSwitcherConfiguration;\r\n\r\n // Objektabfrage Highlight\r\n @JsonProperty()\r\n declare highlightSymbol: FillSymbolConfiguration;\r\n\r\n @JsonProperty()\r\n declare pointerSymbols?: HashMap;\r\n\r\n @JsonProperty()\r\n declare sidebar: SidebarConfiguration;\r\n\r\n @JsonProperty()\r\n declare tracker?: TrackerConfiguration;\r\n\r\n @JsonProperty()\r\n declare urls?: any;\r\n\r\n @JsonProperty()\r\n declare webMap: WebMapConfiguration;\r\n\r\n @JsonProperty()\r\n declare meta: WebMapMetaConfiguration;\r\n /**\r\n * Enable or disable search field in locate button\r\n *\r\n * @default true\r\n */\r\n @JsonProperty()\r\n locateButtonEnabled = true;\r\n\r\n constructor() {\r\n super();\r\n }\r\n\r\n /**\r\n * Get topic configuration by ID\r\n *\r\n * @param topicId\r\n */\r\n getTopic(topicId: string): TopicConfiguration | undefined {\r\n return this.topics.find((topic) => topic.id === topicId);\r\n }\r\n\r\n /**\r\n * Get topic configuration by route\r\n *\r\n * @param route\r\n */\r\n getTopicByRoute(route: string, topics: TopicConfiguration[] = []): TopicConfiguration | undefined {\r\n if(topics.length === 0) {\r\n topics = this.topics;\r\n }\r\n return topics.find((topic) => topic.routes && topic.routes.includes(route));\r\n }\r\n /**\r\n * Get topic configuration by route\r\n *\r\n * @param route\r\n */\r\n getDefaultTopic(): TopicConfiguration | undefined {\r\n return this.topics[0];\r\n }\r\n\r\n /**\r\n * Get first selectable subtopic (used when a parent topic is selected)\r\n *\r\n * @param topic\r\n * @param topics optional\r\n */\r\n getFirstSubtopic(topic: TopicConfiguration, topics: TopicConfiguration[] = []): TopicConfiguration {\r\n if (!this.topics.length && !topics.length) {\r\n throw new Error(\"No topics configured.\");\r\n }\r\n if(topics.length === 0) {\r\n topics = this.topics;\r\n }\r\n const firstSubtopic = topics.find((item) => item.parentId === topic.id && item.routes);\r\n if (!firstSubtopic) {\r\n throw new Error(\"No subtopic for id \"+topic.id+\" found\");\r\n }\r\n\r\n return firstSubtopic;\r\n }\r\n\r\n /**\r\n * Get layer template\r\n * @param metauid\r\n * @param layerId\r\n */\r\n getLayerTemplate(metauid: string, layerId?: number): LayerTemplate | undefined {\r\n const layerTemplates: LayerTemplate[] | undefined = this.popup.layerTemplates;\r\n\r\n if (layerTemplates && metauid) {\r\n // `${metauid}-${layer.id}`\r\n let layerTemplate = layerTemplates.find((t: LayerTemplate) => {\r\n return t.metauid === metauid && (!t.layerIds || t.layerIds.length === 0 ||\r\n (typeof layerId !== \"undefined\" && t.layerIds.includes(layerId)));\r\n });\r\n if (typeof layerTemplate?.template === \"string\") {\r\n layerTemplate = this.getLayerTemplate(layerTemplate.template);\r\n }\r\n return layerTemplate;\r\n }\r\n return;\r\n }\r\n}\r\n@JsonObject()\r\nexport class MapViewerTopicConfiguration extends MapViewerConfiguration {\r\n /**\r\n * View settings\r\n */\r\n @JsonProperty()\r\n declare basemap?: TopicBasemapConfiguration;\r\n\r\n @JsonProperty()\r\n declare basemapGallery?: BasemapGalleryConfiguration;\r\n /**\r\n * View settings\r\n */\r\n @JsonProperty()\r\n declare mapView: MapViewConfiguration;\r\n\r\n /**\r\n * search widget\r\n */\r\n @JsonProperty({ type: SearchConfiguration})\r\n declare search?: SearchConfiguration;\r\n\r\n constructor() {\r\n super();\r\n }\r\n}\r\n","import {JsonObject, JsonProperty} from \"typescript-json-serializer\";\r\nimport {LegendConfiguration} from \"./legend-configuration\";\r\nimport {LayerListConfiguration} from \"../core/config/layer-list-configuration\";\r\nimport {PrintConfiguration} from \"../core/config/print-configuration\";\r\nimport {TopicSwitcherConfiguration} from \"../core/config/topic-switcher-configuration\";\r\n\r\nexport interface SidebarControlsConfiguration {\r\n legend: LegendConfiguration;\r\n layerList: LayerListConfiguration;\r\n breakpoints: { [key: string]: number };\r\n print: PrintConfiguration;\r\n topicSwitcher?: TopicSwitcherConfiguration;\r\n}\r\n\r\n@JsonObject()\r\nexport class SidebarConfiguration {\r\n /**\r\n * Visibility of siedbar\r\n */\r\n @JsonProperty()\r\n declare collapsed: boolean;\r\n\r\n /**\r\n * Initial width of popup window\r\n */\r\n @JsonProperty()\r\n declare width: number;\r\n\r\n /**\r\n * The active accordion tab (index)\r\n *\r\n * @default [\"toc\"]\r\n */\r\n @JsonProperty()\r\n declare activeIndex: Array<\"basemap_gallery\" | \"compare\" | \"legend\" | \"map_finder\" | \"print\"\r\n | \"sharing\" | \"toc\" | \"topic_menu\" | \"tools\" | \"tools_sharing\" | \"layer_selector\">;\r\n\r\n /**\r\n * Exclusive panels open exclusively, all other panels are closed\r\n */\r\n @JsonProperty()\r\n declare exclusivePanels: Array<\"basemap_gallery\" | \"compare\" | \"legend\" | \"map_finder\" | \"print\"\r\n | \"sharing\" | \"toc\" | \"topic_menu\" | \"tools\" | \"tools_sharing\" | \"np-docs\" | \"layer_selector\">;\r\n\r\n /**\r\n * Index of disabled panels, which are not displayed.\r\n */\r\n @JsonProperty()\r\n declare enabledPanels: Array<\"basemap_gallery\" | \"compare\" | \"legend\" | \"map_finder\" | \"print\"\r\n | \"sharing\" | \"toc\" | \"topic_menu\" | \"tools\" | \"layer_selector\">;\r\n\r\n /**\r\n * Index of disabled panels, which are not displayed.\r\n */\r\n @JsonProperty()\r\n declare customPanels?: Array<\"np-docs\">;\r\n\r\n /**\r\n * Object containing semantic-ui-react icon names to get by key.\r\n * Use station parameter name as key\r\n */\r\n @JsonProperty()\r\n declare icons: { [stationParameterName: string]: string };\r\n\r\n constructor() {}\r\n}\r\n","import {JsonObject, JsonProperty} from \"typescript-json-serializer\";\r\nimport {FeatureFilterConfiguration} from \"../core/config/feature-filter-configuration\";\r\nimport {GeoICONS} from \"../core/components/icon/icon\";\r\nimport {MapViewConfiguration} from \"../core/config/view-configuration\";\r\n\r\n@JsonObject()\r\nexport class TopicLayerConfiguration {\r\n @JsonProperty()\r\n declare id: string;\r\n @JsonProperty()\r\n declare layerId?: number;\r\n @JsonProperty()\r\n declare layerIds?: number[];\r\n constructor() {\r\n }\r\n}\r\nexport class TopicLayersConfiguration {\r\n @JsonProperty()\r\n declare open?: TopicLayerConfiguration[];\r\n @JsonProperty()\r\n declare visible: TopicLayerConfiguration[];\r\n @JsonProperty()\r\n declare hide: TopicLayerConfiguration[];\r\n @JsonProperty()\r\n declare ignore?: TopicLayerConfiguration[];\r\n constructor() {\r\n }\r\n}\r\n@JsonObject()\r\nexport class TopicBasemapConfiguration {\r\n @JsonProperty()\r\n declare default?: string;\r\n @JsonProperty()\r\n declare opacity?: number;\r\n constructor() {\r\n }\r\n}\r\n@JsonObject() // \"LayerConfiguration\"\r\nexport class TopicConfiguration {\r\n\r\n /**\r\n * Identifier\r\n */\r\n @JsonProperty()\r\n declare id: string;\r\n\r\n @JsonProperty()\r\n declare parentId?: string;\r\n /**\r\n * Short name ( used in site title)\r\n */\r\n @JsonProperty()\r\n declare name?: string;\r\n\r\n /**\r\n * Label for displaying\r\n */\r\n @JsonProperty()\r\n declare label: string;\r\n\r\n /**\r\n * Website Meta description\r\n */\r\n @JsonProperty()\r\n declare description: string;\r\n\r\n /**\r\n * Icon type\r\n */\r\n @JsonProperty()\r\n declare icon: GeoICONS;\r\n\r\n /**\r\n * If topic is hidden in menu\r\n */\r\n @JsonProperty()\r\n declare hidden: boolean;\r\n\r\n /**\r\n * Ids of layers to apply the filter\r\n */\r\n @JsonProperty()\r\n declare layers: TopicLayersConfiguration;\r\n\r\n /**\r\n * filter to use for this topic\r\n */\r\n @JsonProperty()\r\n declare filter: FeatureFilterConfiguration;\r\n\r\n /**\r\n * Base IDs contained within this topic\r\n * Used to find stations when addressed by url (station no is not unique)\r\n */\r\n @JsonProperty()\r\n declare baseIds: number[];\r\n\r\n /**\r\n * BasemapConfiguration\r\n */\r\n @JsonProperty()\r\n declare basemap?: TopicBasemapConfiguration;\r\n /**\r\n * View settings\r\n */\r\n @JsonProperty()\r\n declare mapView?: MapViewConfiguration;\r\n\r\n /**\r\n * Routes to access this topic\r\n * Add \"/\" to load the topic at startup\r\n */\r\n @JsonProperty()\r\n declare routes: string[];\r\n\r\n revision = \"initial\";\r\n\r\n constructor() {}\r\n}\r\n","import React from \"react\";\r\nimport {autorun} from \"mobx\";\r\nimport {observer} from \"mobx-react\";\r\n\r\nimport \"./attribution.scss\";\r\n\r\nimport EsriAttributionViewModel from \"@arcgis/core/widgets/Attribution/AttributionViewModel\";\r\nimport {AttributionConfiguration, AttributionTextItemConfiguration} from \"../../config/attribution-configuration\";\r\n\r\nimport {Icon} from \"../icon/icon\";\r\nimport {IAppStore, withStore} from \"../../stores/abstract-app-store\";\r\n\r\ninterface AttributionProps {\r\n config: AttributionConfiguration;\r\n onLoad?: (attributionViewModel: EsriAttributionViewModel) => any;\r\n store?: IAppStore; // this is injected by withStore\r\n}\r\n\r\n@observer\r\nclass AttributionBase extends React.Component {\r\n watchHandles: any[] = [];\r\n mainCopyright: string[] = [];\r\n\r\n constructor(props: AttributionProps) {\r\n super(props);\r\n this.state = {\r\n viewModel: null,\r\n items: null,\r\n attributionText: \"\",\r\n isLoading: true,\r\n mapLoading: true\r\n };\r\n const mainCopyrightItem = this.props.config.textItems.find((item) => item.id === \"copyright\");\r\n if (mainCopyrightItem) {\r\n this.mainCopyright.push(mainCopyrightItem.text);\r\n if(mainCopyrightItem.title) {\r\n this.mainCopyright.push(mainCopyrightItem.title);\r\n }\r\n }\r\n }\r\n\r\n componentDidMount(): void {\r\n const {config, onLoad, store} = this.props;\r\n\r\n // rerun until map view is ready and layer list view model is loaded\r\n autorun((reaction: any) => {\r\n if (store?.uiStore.widgets.has(\"attribution\")) {\r\n reaction.dispose(); // stop autorun\r\n return;\r\n }\r\n\r\n if (!store?.mapStore.view) {\r\n return;\r\n }\r\n\r\n const viewModel = this.loadViewModel(config, store?.mapStore.view);\r\n if (!viewModel) {\r\n return;\r\n }\r\n\r\n this.watchHandles.push(\r\n viewModel.watch(\"items.length\",\r\n (newValue: any, oldValue: any, propertyName: string, target: any) => {\r\n const {items} = target;\r\n const textItems: string[] = [];\r\n const pattern = RegExp(\"^©(| )(\\\\d{0,4})(|,)(|Daten:) \"\r\n + this.mainCopyright.join(\"$|^©(| )(\\\\d{0,4})(|,)(|Daten:) \") + \"$\", \"ui\");\r\n // jeder Text nur einmal und er darf nicht mit dem copyright aus der config übereinstimmen\r\n items.forEach((item: __esri.AttributionItem) => {\r\n if (!textItems.includes(item.text) && !pattern.test(item.text)) {\r\n textItems.push(item.text);\r\n }\r\n });\r\n this.setState({\r\n items: textItems\r\n });\r\n })\r\n );\r\n\r\n this.watchHandles.push(\r\n viewModel.watch(\"attributionText\", (attributionText: any) => {\r\n this.setState({attributionText});\r\n })\r\n );\r\n this.watchHandles.push(store?.mapStore.view.watch(\"updating\", (newValue: any) => {\r\n this.setState({mapLoading: newValue});\r\n }));\r\n\r\n this.setState({\r\n isLoading: false,\r\n viewModel\r\n });\r\n store?.uiStore.addWidget(\"attribution\", this);\r\n\r\n if (onLoad) {\r\n // call the hook\r\n onLoad(viewModel);\r\n }\r\n reaction.dispose();\r\n });\r\n }\r\n\r\n componentWillUnmount(): void {\r\n // TODO remove watches\r\n this.watchHandles.forEach((handle: any) => {\r\n handle.remove();\r\n });\r\n this.watchHandles.length = 0;\r\n }\r\n\r\n loadViewModel(attrConfig: AttributionConfiguration,\r\n view: __esri.MapView | __esri.SceneView): EsriAttributionViewModel {\r\n\r\n const config = attrConfig as __esri.AttributionProperties;\r\n const props = {\r\n view,\r\n ...config\r\n };\r\n return new EsriAttributionViewModel(props);\r\n }\r\n\r\n render(): React.ReactElement | null {\r\n const {config, store} = this.props;\r\n if (!config) {\r\n return null;\r\n }\r\n\r\n const {items, mapLoading} = this.state;\r\n\r\n let layerItems;\r\n if (items) {\r\n layerItems = items.join(config.itemDelimiter);\r\n }\r\n\r\n const year = new Date().getFullYear();\r\n const textItems = config.textItems.map((textItem: AttributionTextItemConfiguration, index: number) => {\r\n let href = textItem.url;\r\n if(store?.appStore.topic) {\r\n href = href.replace(\"{topic_label}\", store?.appStore.topic.label);\r\n href = href.replace(\"{topic_name}\", store?.appStore.topic.name ? store?.appStore.topic.name : \"\");\r\n href = href.replace(\"{subtopic_label}\", store?.appStore.subtopic?.label ? store?.appStore.subtopic.label : \"\");\r\n href = href.replace(\"{subtopic_name}\", store?.appStore.subtopic?.name ? store?.appStore.subtopic.name : \"\");\r\n }\r\n return \r\n {index === 0 &&\r\n © {year}\r\n }\r\n {textItem.text}\r\n {index !== config.textItems.length - 1 &&\r\n config.textDelimiter\r\n }\r\n ;\r\n });\r\n\r\n return (\r\n
    \r\n
    {layerItems}
    \r\n
    {textItems}
    \r\n \r\n
    \r\n );\r\n }\r\n\r\n}\r\n\r\nexport const Attribution = withStore(AttributionBase);\r\n","import * as React from \"react\";\r\n\r\nimport \"./basemap-gallery-button.scss\";\r\nimport {Button, Image, Transition} from \"semantic-ui-react\";\r\nimport {Icon} from \"../../icon/icon\";\r\n\r\nexport interface BasemapGalleryButtonProps {\r\n isExpanded: boolean; // widgetsSearch is also the type for configuration object\r\n isLoading: boolean;\r\n isOrthophoto: boolean | null;\r\n mapToggle: string[];\r\n duration: number;\r\n onClick: any;\r\n}\r\n\r\nexport class BasemapGalleryButton extends React.Component {\r\n\r\n constructor(props: BasemapGalleryButtonProps) {\r\n super(props);\r\n }\r\n\r\n render(): React.ReactElement {\r\n if(this.props.isLoading){\r\n return (\r\n \r\n );\r\n }\r\n let btnImage;\r\n let btnClass = \"geo-component geo-widget geo-popup--shadow geo-basemap-gallery-expand\";\r\n if (this.props.isOrthophoto !== null) {\r\n btnImage = (\r\n \r\n );\r\n if (this.props.isOrthophoto) {\r\n btnClass += \" geo-button-orthophoto\";\r\n }\r\n } else {\r\n btnImage = (\r\n \r\n );\r\n }\r\n return (\r\n \r\n \r\n
    {btnImage}
    \r\n \r\n
    \r\n );\r\n }\r\n}\r\n","export class BasemapGalleryItemDataProps {\r\n id: string;\r\n title: string;\r\n tags: string[];\r\n thumbnailUrl?: string;\r\n isOrthophoto?: boolean;\r\n}\r\n\r\nexport class BasemapGalleryItemData {\r\n id: string;\r\n title: string;\r\n tags: string[];\r\n thumbnailUrl: string;\r\n isOrthophoto: boolean;\r\n isPlaceholder: boolean;\r\n\r\n constructor(props?: BasemapGalleryItemDataProps) {\r\n if (props) {\r\n Object.assign(this, props);\r\n }\r\n }\r\n}\r\n","import * as React from \"react\";\r\nimport {BasemapGalleryItemData} from \"./basemap-gallery-item.data\";\r\n\r\nimport \"./basemap-gallery-item.scss\";\r\nimport {FormatUtils} from \"../../../../utils/format-utils\";\r\nimport {Image} from \"semantic-ui-react\";\r\nimport {Icon} from \"../../icon/icon\";\r\n\r\nexport interface BasemapGalleryItemProps {\r\n isSelected: boolean; // widgetsSearch is also the type for configuration object\r\n data: BasemapGalleryItemData;\r\n onClick: () => any;\r\n}\r\n\r\nexport class BasemapGalleryItem extends React.Component {\r\n\r\n constructor(props: BasemapGalleryItemProps) {\r\n super(props);\r\n }\r\n\r\n render() {\r\n const {data, isSelected} = this.props;\r\n const css = `basemap-gallery-item${isSelected ? \" selected\" : \"\"}${data.isPlaceholder ? \" placeholder\" : \"\"}`;\r\n const itemTitle = FormatUtils.formatTitle(data.title);\r\n return (\r\n this.props.onClick()}>\r\n
    \r\n {data.thumbnailUrl? {itemTitle}:\r\n }\r\n
    \r\n
    \r\n {itemTitle}\r\n
    \r\n \r\n );\r\n }\r\n}\r\n","import * as React from \"react\";\r\n\r\nimport \"./basemap-gallery-toggle.scss\";\r\nimport {Button, Header, Image} from \"semantic-ui-react\";\r\nimport {BasemapGalleryItemData} from \"../basemap-gallery-item/basemap-gallery-item.data\";\r\nimport {Icon} from \"../../icon/icon\";\r\n\r\nexport interface BasemapGalleryToggleProps {\r\n activeBasemapId: string;\r\n isLoading: boolean;\r\n mapToggle: BasemapGalleryItemData[];\r\n onClick: any;\r\n}\r\n\r\nexport class BasemapGalleryToggle extends React.Component {\r\n\r\n constructor(props: BasemapGalleryToggleProps) {\r\n super(props);\r\n }\r\n\r\n render(): React.ReactElement {\r\n const {activeBasemapId, isLoading, mapToggle, onClick} = this.props;\r\n if(isLoading){\r\n return (\r\n \r\n );\r\n }\r\n const btnClass = \"geo-component geo-widget geo-basemap-gallery-toggle\"\r\n + \" geo-basemap-\" + ((activeBasemapId === mapToggle[1].id)? \"second\": \"first\");\r\n return (\r\n \r\n
    \r\n
    \r\n {mapToggle[0].thumbnailUrl? : }\r\n
    Hintergrund
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n {mapToggle[1].thumbnailUrl? : }\r\n
    Hintergrund
    \r\n
    \r\n
    \r\n \r\n );\r\n }\r\n}\r\n","import * as React from \"react\";\r\nimport {autorun, runInAction} from \"mobx\";\r\nimport {observer} from \"mobx-react\";\r\n\r\nimport \"./basemap-gallery.scss\";\r\n\r\nimport EsriBasemapGallery from \"@arcgis/core/widgets/BasemapGallery\";\r\nimport EsriBasemapGalleryViewModel from \"@arcgis/core/widgets/BasemapGallery/BasemapGalleryViewModel\";\r\n\r\nimport {BasemapGalleryConfiguration} from \"../../config/basemap-gallery-configuration\";\r\nimport {BasemapGalleryItemData} from \"./basemap-gallery-item/basemap-gallery-item.data\";\r\nimport {BasemapGalleryItem} from \"./basemap-gallery-item/basemap-gallery-item\";\r\nimport {BasemapGalleryButton} from \"./basemap-gallery-button/basemap-gallery-button\";\r\nimport {Icon} from \"../icon/icon\";\r\nimport {Input, TransitionablePortal} from \"semantic-ui-react\";\r\nimport { Slider } from \"react-semantic-ui-range\";\r\nimport {FormatUtils} from \"../../../utils/format-utils\";\r\nimport {BasemapGalleryToggle} from \"./basemap-gallery-toggle/basemap-gallery-toggle\";\r\nimport {IAppStore, withStore} from \"../../stores/abstract-app-store\";\r\n\r\nexport interface BasemapGalleryProps {\r\n config: BasemapGalleryConfiguration; // widgetsSearch is also the type for configuration object\r\n onLoad?: (basemapGalleryViewModel: EsriBasemapGalleryViewModel) => any;\r\n proxyUrl?: string;\r\n small?: boolean;\r\n store?: IAppStore; // this is injected by withStore\r\n}\r\n\r\n@observer\r\nclass BasemapGalleryBase extends React.Component {\r\n autorunDisposers: any[] = [];\r\n watchHandles: any[] = [];\r\n mapToggle: string[] = [];\r\n widgetKey = \"basemap-gallery\";\r\n viewModel: EsriBasemapGalleryViewModel;\r\n activeBasemapId?: string;\r\n constructor(props: BasemapGalleryProps) {\r\n super(props);\r\n\r\n this.state = {\r\n animation: \"slide up\",\r\n duration: 200,\r\n filterValue: \"\",\r\n isLoading: true,\r\n isExpanded: (typeof this.props.small === \"boolean\" && this.props.small),\r\n viewModel: null,\r\n dataAll: null, // gallery data items\r\n dataShown: null,\r\n activeBasemapId: null,\r\n orthophotoTag: \"Orthophoto\",\r\n isOrthophoto: null,\r\n timer: null,\r\n transparency: 0,\r\n showSlider: false,\r\n sliderWorkaroundWait: 200,\r\n visible: true\r\n };\r\n if (typeof this.props.small === \"boolean\" && this.props.small) {\r\n this.widgetKey += \"-small\";\r\n }\r\n this.handleItemClick = this.handleItemClick.bind(this);\r\n this.handleFilterChange = this.handleFilterChange.bind(this);\r\n this.clearFilterInputField = this.clearFilterInputField.bind(this);\r\n this.handleExpandButtonClick = this.handleExpandButtonClick.bind(this);\r\n this.handleToggleButtonClick = this.handleToggleButtonClick.bind(this);\r\n this.setTransparency = this.setTransparency.bind(this);\r\n this.close = this.close.bind(this);\r\n }\r\n\r\n showSlider(): void {\r\n this.setState({showSlider : true});\r\n }\r\n\r\n hideSlider(): void {\r\n this.setState({showSlider : false});\r\n }\r\n\r\n render(): React.ReactElement | null {\r\n const {config, small} = this.props;\r\n const {\r\n viewModel,\r\n animation,\r\n duration,\r\n dataAll,\r\n dataShown,\r\n filterValue,\r\n isExpanded,\r\n isLoading,\r\n activeBasemapId,\r\n isOrthophoto,\r\n showSlider,\r\n transparency,\r\n visible\r\n } = this.state;\r\n\r\n if (isLoading) {\r\n return (\r\n \r\n );\r\n }\r\n\r\n if(viewModel){\r\n this.setLayerOpacity(viewModel.activeBasemap.baseLayers);\r\n }\r\n if (!visible) {\r\n return null;\r\n }\r\n { /* Basemap Gallery*/\r\n }\r\n let menuGallery =
    ;\r\n if (isExpanded) {\r\n // workaround to show correct start position on slider\r\n // see https://github.com/iozbeyli/react-semantic-ui-range/issues/13\r\n if (!showSlider) {\r\n setTimeout(() => {\r\n this.showSlider();\r\n }, this.state.sliderWorkaroundWait);\r\n }\r\n\r\n const sliderSettings = {\r\n min: 0,\r\n max: 100,\r\n step: 1,\r\n onChange: (value: number) => {\r\n this.setTransparency(value);\r\n }\r\n };\r\n let addClass = \"geo-component geo-basemap-gallery\";\r\n if (!small) {\r\n addClass += \" geo-widget geo-popup--shadow\";\r\n }\r\n menuGallery = \r\n
    \r\n {(!small)?(\r\n
    \r\n {config.searchEnabled ?\r\n
    \r\n this.handleFilterChange(event.target.value)}/>\r\n \r\n \r\n
    \r\n :\r\n

    Hintergrund

    }\r\n \r\n
    ): null}\r\n
    \r\n
    Transparenz / Helligkeit: {transparency}%
    \r\n {showSlider &&\r\n \r\n }\r\n
    \r\n
    \r\n
      \r\n {dataShown.map((data: BasemapGalleryItemData) =>\r\n this.handleItemClick(data)}\r\n />\r\n )}\r\n
    \r\n
    \r\n
    \r\n
    ;\r\n }\r\n const btnExpand = (\r\n \r\n );\r\n if (small) {\r\n return (<>{menuGallery});\r\n } else {\r\n if(dataAll.length > 2) {\r\n return (\r\n \r\n {menuGallery}\r\n \r\n );\r\n } else if(dataAll.length === 2) {\r\n return (\r\n \r\n );\r\n }\r\n return null;\r\n }\r\n }\r\n\r\n open(): void {\r\n const {store} = this.props;\r\n this.setState({isExpanded: true});\r\n store?.PopupStore.setVisible(false);\r\n }\r\n\r\n close(): void {\r\n this.setState({\r\n isExpanded: false,\r\n showSlider: false\r\n });\r\n }\r\n handleToggleButtonClick(event: React.MouseEvent): void {\r\n const {store} = this.props;\r\n const {activeBasemapId, dataAll} = this.state;\r\n event.preventDefault();\r\n if (this.state.isLoading) {\r\n return;\r\n }\r\n const current = dataAll.find((b: BasemapGalleryItemData) => b.id !== activeBasemapId);\r\n const nextBasemap = this.getBasemap(current.id);\r\n\r\n this.setActiveBasemap(nextBasemap);\r\n store?.mapStore.setBasemapById({id: current.id, title: current.title, tags: current.tags});\r\n }\r\n handleExpandButtonClick(event: React.MouseEvent): void {\r\n event.preventDefault();\r\n\r\n if (this.state.isLoading) {\r\n return;\r\n }\r\n\r\n if (this.state.isExpanded) {\r\n this.resetFilter();\r\n this.close();\r\n } else {\r\n this.open();\r\n }\r\n }\r\n\r\n handleFilterChange(filterText: string): void {\r\n\r\n // reset list if no filter is defined\r\n if (!filterText) {\r\n this.resetFilter();\r\n return;\r\n }\r\n this.setState({filterValue: filterText});\r\n // defer applying filter to list\r\n this.handleDeferred(this.applyFilter, [this.state.dataAll, filterText], 100);\r\n }\r\n clearFilterInputField(): void {\r\n this.resetFilter();\r\n }\r\n\r\n handleDeferred(target: any, args: any[], timeout: number): void {\r\n\r\n // reset timer\r\n if (this.state.timer) {\r\n clearTimeout(this.state.timer);\r\n }\r\n\r\n // bind deferred method\r\n target = target.bind(this);\r\n\r\n // set up timer\r\n this.setState({\r\n timer: setTimeout(() => {\r\n target(...args);\r\n }, timeout)\r\n });\r\n }\r\n\r\n applyFilter(items: BasemapGalleryItemData[], filterText: string): void {\r\n\r\n const filterNormalized = filterText.trim().toLowerCase();\r\n\r\n const filteredItems = items.filter((item: BasemapGalleryItemData) => {\r\n\r\n const itemTextNormalized = item.title.trim().toLowerCase();\r\n\r\n return itemTextNormalized.search(filterNormalized) >= 0;\r\n });\r\n\r\n // add a placeholder if no result was found\r\n const itemsToShow = filteredItems.length ? filteredItems : [{\r\n id: 0,\r\n title: \"Keine Grundkarten gefunden\",\r\n isPlaceholder: true\r\n }];\r\n\r\n this.setState({dataShown: itemsToShow});\r\n }\r\n\r\n resetFilter(): void {\r\n this.setState((state: any) => ({\r\n dataShown: state.dataAll,\r\n filterValue: \"\"\r\n }));\r\n }\r\n\r\n handleItemClick(item: BasemapGalleryItemData): void {\r\n const {small, store} = this.props;\r\n // ignore click on placeholder item\r\n if (item.isPlaceholder) {\r\n return;\r\n }\r\n\r\n const selectedBasemap = this.getBasemap(item.id);\r\n\r\n this.setActiveBasemap(selectedBasemap);\r\n store?.mapStore.setBasemapById({id: item.id, title: item.title, tags: item.tags});\r\n if (small) {\r\n store?.uiStore.setSidebarVisible(false);\r\n }else {\r\n this.close();\r\n }\r\n }\r\n\r\n getBasemap(basemapId: string): any {\r\n if (!this.viewModel) {\r\n return null;\r\n }\r\n return this.viewModel.source.basemaps.find((basemap: any) => basemap.portalItem.id === basemapId) || null;\r\n }\r\n\r\n setActiveBasemap(basemap: any): void {\r\n if (!basemap) {\r\n return;\r\n }\r\n const {orthophotoTag, viewModel} = this.state;\r\n if (!viewModel) {\r\n return;\r\n }\r\n viewModel.activeBasemap = basemap;\r\n this.activeBasemapId = basemap.portalItem.id;\r\n this.setState({\r\n activeBasemapId: this.activeBasemapId,\r\n isOrthophoto: basemap.portalItem.tags.includes(orthophotoTag),\r\n viewModel\r\n });\r\n }\r\n\r\n /**\r\n * Set opacity to layers of base map\r\n *\r\n * @param layers\r\n */\r\n setLayerOpacity(layers: __esri.Collection<__esri.Layer>): void {\r\n const {transparency} = this.state;\r\n layers.forEach((layer: __esri.Layer) => {\r\n // Layer welche im Namen \"Maske\" enthalten ignorieren\r\n if(layer.title.toLowerCase().indexOf(\"maske\")===-1) {\r\n layer.opacity = (100 - transparency) / 100;\r\n }\r\n });\r\n }\r\n setTransparency(transparency: number){\r\n const {store} = this.props;\r\n store?.mapStore.setBasemapOpacity(100 - transparency);\r\n this.setState(() => ({ transparency }));\r\n }\r\n\r\n componentDidMount(): void {\r\n const { onLoad, store} = this.props;\r\n // rerun until map view is ready and search view model is loaded\r\n autorun((reaction: any) => {\r\n if (store?.uiStore.widgets.has(this.widgetKey)) {\r\n reaction.dispose(); // stop autorun\r\n return;\r\n }\r\n if(!store){\r\n return;\r\n }\r\n const config = store?.appConfig.basemapGallery;\r\n if(!config){\r\n return;\r\n }\r\n const basemapGallery = this.loadBasemapGallery(config, store?.mapStore.view);\r\n if (!basemapGallery) {\r\n return;\r\n }\r\n if (store?.mapStore.basemapOpacity) {\r\n this.setState({\r\n transparency: (100 - store?.mapStore.basemapOpacity)\r\n });\r\n }\r\n // filter the Basemaps\r\n const applicationBasemaps = config?.applicationBasemaps;\r\n if(applicationBasemaps===\"none\"){\r\n store?.mapStore.removeBasemap();\r\n this.setState({\r\n isLoading: false,\r\n visible: false\r\n });\r\n reaction.dispose(); // stop autorun\r\n return;\r\n }\r\n const excludeApplicationBasemaps = config?.excludeApplicationBasemaps;\r\n const excludeTags = config?.excludeTags;\r\n if (\"filterFunction\" in basemapGallery.source) {\r\n if (applicationBasemaps && applicationBasemaps.length) {\r\n if (excludeTags && excludeTags.length) {\r\n basemapGallery.source.filterFunction = (basemap: any) =>\r\n applicationBasemaps.includes(FormatUtils.formatTitle(basemap.portalItem.title))\r\n && basemap.portalItem.tags.findIndex((tag: string) => excludeTags.includes(tag)) === -1;\r\n }else{\r\n basemapGallery.source.filterFunction = (basemap: any) =>\r\n applicationBasemaps.includes(FormatUtils.formatTitle(basemap.portalItem.title));\r\n }\r\n } else {\r\n if (excludeApplicationBasemaps && excludeApplicationBasemaps.length\r\n && excludeTags && excludeTags.length) {\r\n basemapGallery.source.filterFunction = (basemap: any) =>\r\n !excludeApplicationBasemaps.includes(FormatUtils.formatTitle(basemap.portalItem.title))\r\n && basemap.portalItem.tags.findIndex((tag: string) => excludeTags.includes(tag)) === -1;\r\n } else if (excludeApplicationBasemaps && excludeApplicationBasemaps.length) {\r\n basemapGallery.source.filterFunction = (basemap: any) =>\r\n !excludeApplicationBasemaps.includes(FormatUtils.formatTitle(basemap.portalItem.title));\r\n } else if (excludeTags && excludeTags.length) {\r\n basemapGallery.source.filterFunction = (basemap: any) =>\r\n basemap.portalItem.tags.findIndex((tag: string) => excludeTags.includes(tag)) === -1;\r\n }\r\n }\r\n }\r\n this.watchHandles.push(\r\n basemapGallery.watch(\"viewModel.items.length\",\r\n (newValue: any, oldValue: any, propertyName: string, target: any) => {\r\n const viewModel = target.viewModel;\r\n if (viewModel) {\r\n\r\n const items = target.viewModel.items.items;\r\n const portalItems = items.map((item: any) => {\r\n item.basemap.watch(\"baseLayers.length\",\r\n (newLength: any, oldLength: any, propName: any, basemap: any) => {\r\n if (newLength > 0) {\r\n runInAction(()=> {\r\n const titleFormated = FormatUtils.formatTitle(basemap.title);\r\n if (store?.mapStore.defaultBasemapTitle\r\n === titleFormated){\r\n store?.mapStore.setDefaultBasemap({\r\n id: basemap.portalItem.id,\r\n title: basemap.portalItem.title,\r\n tags: basemap.portalItem.tags\r\n });\r\n }\r\n if (this.activeBasemapId === undefined) {\r\n if (store?.mapStore.defaultBasemapTitle\r\n === titleFormated) {\r\n this.activeBasemapId = basemap.portalItem.id;\r\n this.setState((state: any) => ({\r\n activeBasemapId: this.activeBasemapId,\r\n isOrthophoto: basemap.portalItem.tags.includes(\r\n state.orthophotoTag)\r\n }));\r\n this.mapToggle[(this.state.isOrthophoto ? 1 : 0)] =\r\n this.appendProxyUrl(basemap.portalItem.thumbnailUrl);\r\n }\r\n } else if (this.state.isOrthophoto === null) {\r\n if (this.state.activeBasemapId\r\n === basemap.portalItem.id) {\r\n this.setState((state: any) => ({\r\n isOrthophoto: basemap.portalItem.tags.includes(\r\n state.orthophotoTag)\r\n }));\r\n this.mapToggle[(this.state.isOrthophoto ? 1 : 0)] =\r\n this.appendProxyUrl(basemap.portalItem.thumbnailUrl);\r\n }\r\n }\r\n // Nach Themenspezifischen Styles überprüfen\r\n if(config?.styles && config?.styles.has(titleFormated)) {\r\n config.styles.get(titleFormated)?.forEach(((style)=> {\r\n basemap.baseLayers.find((l: __esri.VectorTileLayer) =>\r\n l.portalItem.id === style.itemId).loadStyle(style.url);\r\n }));\r\n // Basemap neu laden, falls dies die aktuell ausgewählt ist\r\n if (store?.mapStore.defaultBasemapTitle === titleFormated){\r\n target.viewModel.activeBasemap = basemap;\r\n }\r\n }\r\n });\r\n }\r\n });\r\n return item.basemap.portalItem;\r\n });\r\n const firstThumbnail = portalItems.find((element: any) =>\r\n !element.tags.includes(this.state.orthophotoTag));\r\n const secondThumbnail = portalItems.find((element: any) =>\r\n element.tags.includes(this.state.orthophotoTag));\r\n // Make sure that value is present\r\n if (typeof firstThumbnail !== \"undefined\") {\r\n this.mapToggle[0] = this.appendProxyUrl(firstThumbnail.thumbnailUrl);\r\n } else {\r\n this.mapToggle[0] = this.appendProxyUrl(secondThumbnail.thumbnailUrl);\r\n }\r\n if (typeof secondThumbnail !== \"undefined\") {\r\n this.mapToggle[1] = this.appendProxyUrl(secondThumbnail.thumbnailUrl);\r\n } else {\r\n this.mapToggle[1] = this.mapToggle[0];\r\n }\r\n\r\n const dataAll = portalItems.map((portalItem: any) => new BasemapGalleryItemData({\r\n id: portalItem.id,\r\n title: portalItem.title,\r\n tags: portalItem.tags,\r\n isOrthophoto: portalItem.tags.includes(this.state.orthophotoTag),\r\n thumbnailUrl: this.appendProxyUrl(portalItem.thumbnailUrl)\r\n }));\r\n // Hide if there are less than two basemaps\r\n const visible = (dataAll.length > 1);\r\n\r\n this.activeBasemapId = basemapGallery.view.map.basemap.portalItem?.id;\r\n this.setState({\r\n isLoading: false,\r\n viewModel,\r\n dataAll,\r\n dataShown: dataAll,\r\n activeBasemapId: this.activeBasemapId,\r\n visible\r\n });\r\n this.viewModel = viewModel;\r\n store?.uiStore.addWidget(this.widgetKey, this);\r\n\r\n if (onLoad) {\r\n // call the hook\r\n onLoad(viewModel);\r\n }\r\n }\r\n })\r\n );\r\n\r\n });\r\n this.autorunDisposers.push(autorun(() => {\r\n if (!store) {\r\n return;\r\n }\r\n const {basemap} = store.mapStore;\r\n if (!basemap || !basemap.id) {\r\n return;\r\n }\r\n const selectedBasemap = this.getBasemap(basemap.id);\r\n if (selectedBasemap && selectedBasemap.portalItem.id !== this.activeBasemapId) {\r\n this.activeBasemapId = selectedBasemap.portalItem.id;\r\n this.setState({\r\n activeBasemapId: this.activeBasemapId,\r\n isOrthophoto: selectedBasemap.portalItem.tags.includes(this.state.orthophotoTag),\r\n });\r\n }\r\n }));\r\n }\r\n\r\n componentWillUnmount(): void {\r\n const {store} = this.props;\r\n this.watchHandles.forEach((handle: any) => {\r\n handle.remove();\r\n });\r\n this.watchHandles.length = 0;\r\n this.autorunDisposers.forEach((disposer: any) => {\r\n disposer();\r\n });\r\n this.autorunDisposers.length = 0;\r\n store?.uiStore.removeWidget(this.widgetKey);\r\n }\r\n\r\n loadBasemapGallery(galleryConfig: BasemapGalleryConfiguration,\r\n view: __esri.MapView | __esri.SceneView | undefined): EsriBasemapGallery | null {\r\n if (!view) {\r\n return null;\r\n }\r\n\r\n const config = galleryConfig as __esri.BasemapGalleryProperties;\r\n const props = {\r\n view,\r\n ...config\r\n };\r\n return new EsriBasemapGallery(props);\r\n }\r\n\r\n appendProxyUrl(url: string): string {\r\n if (!this.props.proxyUrl) {\r\n return url;\r\n }\r\n\r\n return `${this.props.proxyUrl}?${url}`;\r\n }\r\n\r\n}\r\n\r\nexport const BasemapGallery = withStore(BasemapGalleryBase);\r\n","import React, {SyntheticEvent} from \"react\";\r\nimport {observer} from \"mobx-react\";\r\n\r\nimport {CompareConfiguration} from \"../../../config/compare-configuration\";\r\n\r\nimport {Checkbox, Form, Radio} from \"semantic-ui-react\";\r\n\r\nimport RCSlider from \"rc-slider\";\r\nimport \"rc-slider/assets/index.css\";\r\nimport {PathUtils} from \"../../../../utils/path-utils\";\r\nimport {IAppStore, withStore} from \"../../../stores/abstract-app-store\";\r\n\r\nexport interface CompareSelectProps {\r\n compare: boolean;\r\n config: CompareConfiguration;\r\n onSelect: (event?: SyntheticEvent | string, eventData?: object | number | number[]) => any | undefined;\r\n small?: boolean;\r\n standalone?: boolean;\r\n trailing?: boolean;\r\n store?: IAppStore; // this is injected by withStore\r\n}\r\n\r\n@observer\r\nexport class CompareSelectBase extends React.Component {\r\n watchHandles: any[] = [];\r\n autorunDisposers: any[] = [];\r\n autorunCompareDisposers: any[] = [];\r\n constructor(props: CompareSelectProps) {\r\n super(props);\r\n\r\n }\r\n getTitle(metauid: string): string{\r\n const {store} = this.props;\r\n const layer = store?.mapStore.map?.allLayers.flatten((subL: __esri.Layer) =>\r\n (subL as __esri.MapImageLayer).allSublayers as unknown as __esri.Collection<__esri.Layer>\r\n ).find((l) => (l as any).metauid === metauid || PathUtils.getMetaId(PathUtils.getLayerPath(l))===metauid);\r\n if(layer){\r\n return layer.title;\r\n }else{\r\n return metauid;\r\n }\r\n }\r\n\r\n render(): React.ReactElement {\r\n const {compare, config, trailing, store} = this.props;\r\n const {matrixSelect, matrixSelectTrailing} = store?.CompareStore;\r\n const {activeLayerMetauids} = store?.mapStore;\r\n const selected = trailing? matrixSelectTrailing: matrixSelect;\r\n const buttons: React.ReactElement[] = [];\r\n if (config.style===\"slider\") {\r\n for (const layerMatrixKey in config.layerMatrix) {\r\n const values: number[] = [];\r\n const marks: any = {};\r\n for (const layerMatrixValueKey in config.layerMatrix[layerMatrixKey]) {\r\n values.push(parseInt(layerMatrixValueKey, 10));\r\n marks[parseInt(layerMatrixValueKey, 10)]=layerMatrixValueKey;\r\n if (config.slider && config.slider[layerMatrixKey][layerMatrixValueKey]) {\r\n marks[parseInt(layerMatrixValueKey, 10)]=\r\n config.slider[layerMatrixKey][layerMatrixValueKey].label;\r\n }\r\n }\r\n buttons.push(\r\n {\r\n this.props.onSelect(layerMatrixKey+\"_tailing\",v);\r\n }: (v) => {\r\n this.props.onSelect(layerMatrixKey,v);\r\n }}\r\n defaultValue={parseInt(selected[1],10)}\r\n value={parseInt(selected[1],10)}\r\n />\r\n );\r\n }\r\n } else {\r\n let content = [];\r\n for (const layerMatrixKey in config.layerMatrix) {\r\n content = [];\r\n for (const layerMatrixValueKey in config.layerMatrix[layerMatrixKey]) {\r\n content.push(\r\n \r\n {\r\n this.props.onSelect(event, eventData);\r\n }}\r\n checked={selected.includes(layerMatrixValueKey)}\r\n disabled={!selected.includes(layerMatrixKey)}\r\n />\r\n \r\n );\r\n }\r\n buttons.push(\r\n \r\n \r\n {content}\r\n \r\n );\r\n }\r\n }\r\n if (!trailing && config.optional) {\r\n const selectOptional: any[] =[];\r\n config.optional.forEach((o, index)=> {\r\n selectOptional.push( {\r\n this.props.onSelect(event, eventData);\r\n }}\r\n name={\"optional_\"+o}\r\n />);\r\n });\r\n buttons.push(\r\n \r\n {selectOptional}\r\n \r\n );\r\n }\r\n return
    \r\n {buttons}\r\n
    ;\r\n }\r\n}\r\n\r\nexport const CompareSelect = withStore(CompareSelectBase);\r\n","import React, {SyntheticEvent} from \"react\";\r\nimport {reaction, runInAction} from \"mobx\";\r\nimport {observer} from \"mobx-react\";\r\n\r\nimport \"./compare.scss\";\r\nimport {CompareConfiguration} from \"../../config/compare-configuration\";\r\nimport EsriLegendViewModel from \"@arcgis/core/widgets/Legend/LegendViewModel\";\r\nimport _ from \"lodash\";\r\nimport {SidebarControlsConfiguration} from \"../../../config/sidebar-configuration\";\r\nimport {ViewManager} from \"../view-manager/view-manager\";\r\nimport {Legend as CoreLegend} from \"../legend/legend\";\r\nimport {Legend as CustomLegend} from \"../../../components/app/sidebar/legend/legend\";\r\nimport {Button, Form} from \"semantic-ui-react\";\r\nimport {Icon} from \"../icon/icon\";\r\nimport Swipe from \"@arcgis/core/widgets/Swipe\";\r\nimport {PathUtils} from \"../../../utils/path-utils\";\r\nimport EsriFeatureLayer from \"@arcgis/core/layers/FeatureLayer\";\r\nimport EsriGroupLayer from \"@arcgis/core/layers/GroupLayer\";\r\nimport EsriImageryTileLayer from \"@arcgis/core/layers/ImageryTileLayer\";\r\nimport EsriMapImageLayer from \"@arcgis/core/layers/MapImageLayer\";\r\nimport EsriVectorTileLayer from \"@arcgis/core/layers/VectorTileLayer\";\r\nimport {LayerList} from \"../layer-list/layer-list\";\r\nimport {TopicConfiguration, TopicLayerConfiguration} from \"../../../config/topic-configuration\";\r\nimport {CompareSelect} from \"./compare-select/compare-select\";\r\nimport {IAppStore, withStore} from \"../../stores/abstract-app-store\";\r\n\r\nexport interface CompareProps {\r\n config: CompareConfiguration;\r\n controlsConfig: SidebarControlsConfiguration;\r\n keyAppend?: string | number | undefined;\r\n onLoad?: (legendViewModel: EsriLegendViewModel) => any | undefined;\r\n small?: boolean;\r\n standalone?: boolean;\r\n topicSwitcher?: React.ReactElement | null;\r\n store?: IAppStore; // this is injected by withStore\r\n}\r\n\r\n\r\n@observer\r\nclass CompareBase extends React.Component {\r\n watchHandles: any[] = [];\r\n autorunDisposers: any[] = [];\r\n autorunCompareDisposers: any[] = [];\r\n widget: Swipe;\r\n widgetKey = \"compare\";\r\n optionalLayers: any[];\r\n permanetLayers: any[];\r\n leadingLayers: any[];\r\n trailingLayers: EsriGroupLayer;\r\n timeoutID: number;\r\n constructor(props: CompareProps) {\r\n super(props);\r\n this.state = {\r\n compare: props.store?.CompareStore.enabled,\r\n subtopic: props.store?.appStore.subtopic?.id\r\n };\r\n this.handleSelect = this.handleSelect.bind(this);\r\n this.handleSelectTrailing = this.handleSelectTrailing.bind(this);\r\n this.handleSliderSelect = this.handleSliderSelect.bind(this);\r\n this.handleSliderSelectTrailing = this.handleSliderSelectTrailing.bind(this);\r\n if (typeof this.props.keyAppend === \"string\" || typeof this.props.keyAppend === \"number\") {\r\n this.widgetKey += \"-\" + this.props.keyAppend.toString();\r\n }\r\n if (typeof this.props.small === \"boolean\" && this.props.small) {\r\n this.widgetKey += \"-small\";\r\n }\r\n }\r\n private handleSliderSelect(value: string, sliderKey: string): void {\r\n this.select(value, sliderKey);\r\n }\r\n private handleSelect(event?: SyntheticEvent | string, eventData?: object | number | number[]): void {\r\n if(event && typeof event !== \"string\") {\r\n event.preventDefault();\r\n }\r\n if(typeof eventData !== \"undefined\") {\r\n if (typeof eventData !== \"number\" && !Array.isArray(eventData)) {\r\n if((eventData as any).name.indexOf(\"optional_\") === 0){\r\n this.selectOptional((eventData as any).name.substring(9));\r\n } else {\r\n this.select((eventData as any).value, (eventData as any).name);\r\n }\r\n } else if (typeof event === \"string\") {\r\n const value = Array.isArray(eventData) ? eventData[0] : eventData;\r\n this.select(value, event);\r\n }\r\n }\r\n }\r\n private select(value: string, matrixKey: string): void {\r\n const {config, store} = this.props;\r\n if (!store) {\r\n return;\r\n }\r\n const {subtopic} = store?.appStore;\r\n const {matrixSelect} = store?.CompareStore;\r\n const possibleLayers = [];\r\n if (config.subtopics && subtopic?.id) {\r\n possibleLayers.push(config.subtopics[subtopic.id]);\r\n }\r\n let parentDisableNext = false;\r\n for (const layerMatrixKey in config.layerMatrix) {\r\n if(matrixKey === layerMatrixKey){\r\n if(config.layerMatrix[layerMatrixKey][value][\"disableNext\"]){\r\n parentDisableNext = true;\r\n }\r\n const ids = config.layerMatrix[layerMatrixKey][value][\"layers\"];\r\n if(ids){\r\n possibleLayers.push(ids);\r\n }\r\n } else {\r\n if (!parentDisableNext) {\r\n if (!matrixSelect.includes(layerMatrixKey)){\r\n for (const k in config.layerMatrix[layerMatrixKey]){\r\n if (config.layerMatrix[layerMatrixKey][k].default){\r\n const ids = config.layerMatrix[layerMatrixKey][k][\"layers\"];\r\n possibleLayers.push(ids);\r\n break;\r\n }\r\n }\r\n } else {\r\n const ids = config.layerMatrix[layerMatrixKey][\r\n matrixSelect[matrixSelect.indexOf(layerMatrixKey)+1]][\"layers\"];\r\n possibleLayers.push(ids);\r\n }\r\n }\r\n }\r\n }\r\n const activeLayers = this.intersectLayers(possibleLayers);\r\n if(activeLayers?.length > 0){\r\n if (config.subtopics && subtopic?.id) {\r\n const subtopicConfig = store.mapViewerConfig.subtopics?.find(\r\n (view) => (view.id === subtopic.id)\r\n );\r\n const mapActiveLayers = subtopicConfig?.layers;\r\n if (mapActiveLayers) {\r\n mapActiveLayers.visible = activeLayers;\r\n store.appStore.setSubtopicLayers(mapActiveLayers);\r\n }\r\n } else {\r\n this.prepareLeadingLayers();\r\n this.leadingLayers.forEach((layer)=> {\r\n layer.visible = this.permanetLayers?.some((l)=> l.metauid === (layer as any)?.metauid)\r\n || activeLayers.some((l)=> l.id === (layer as any)?.metauid);\r\n if (layer.visible && layer.sublayers){\r\n layer.sublayerIds = activeLayers.find((l)=> l.id === (layer as any)?.metauid)?.layerIds;\r\n }\r\n });\r\n if (store.mapViewerConfig.subtopics?.length > 0) {\r\n // find topic including the active layers as visible layers\r\n const topic: TopicConfiguration | undefined = this.getTopicByActiveLayers(activeLayers);\r\n if (topic && value !== store.appStore.subtopic?.id) {\r\n runInAction(()=> {\r\n store.appStore.setSubtopic(topic);\r\n store.appStore.setRoutePath(\r\n PathUtils.joinPath(store.appStore.topic?.routes[0], topic?.routes[0])\r\n );\r\n });\r\n }\r\n }\r\n }\r\n }\r\n store.CompareStore.setLayersLeading(activeLayers);\r\n }\r\n\r\n private getTopicByActiveLayers(activeLayers: TopicLayerConfiguration[]) {\r\n const {store} = this.props;\r\n if (!store) {\r\n return;\r\n }\r\n return store.mapViewerConfig.subtopics.find((topicConfig: TopicConfiguration) =>\r\n topicConfig.hasOwnProperty(\"layers\") &&\r\n topicConfig.layers.visible.some((l: TopicLayerConfiguration) =>\r\n activeLayers.some((al) =>\r\n l.id === al.id\r\n )\r\n )\r\n );\r\n }\r\n\r\n private handleSliderSelectTrailing(value: string, sliderKey: string): void {\r\n this.selectTrailing(value, sliderKey);\r\n }\r\n private handleSelectTrailing(event?: SyntheticEvent | string, eventData?: object | number | number[]): void {\r\n if(event && typeof event !== \"string\") {\r\n event.preventDefault();\r\n }\r\n if(typeof eventData !== \"undefined\") {\r\n if (typeof eventData !== \"number\" && !Array.isArray(eventData)) {\r\n this.selectTrailing((eventData as any).value, (eventData as any).name);\r\n } else if(typeof event === \"string\") {\r\n const value = Array.isArray(eventData)? eventData[0]: eventData;\r\n this.selectTrailing(value, event);\r\n }\r\n } else {\r\n this.selectTrailing();\r\n }\r\n }\r\n private selectTrailing(value?: string, matrixKey?: string): void {\r\n const {config, store} = this.props;\r\n if (!store) {\r\n return;\r\n }\r\n const {subtopic} = store.appStore;\r\n const {matrixSelectTrailing} = store.CompareStore;\r\n const newTrailing = [];\r\n const possibleLayers = [];\r\n if(config.subtopics && subtopic?.id) {\r\n possibleLayers.push(config.subtopics[subtopic.id]);\r\n }\r\n let parentDisableNext = false;\r\n for (const layerMatrixKey in config.layerMatrix) {\r\n if(!parentDisableNext) {\r\n newTrailing.push(layerMatrixKey);\r\n }\r\n if (matrixKey === layerMatrixKey + \"_tailing\" && value) {\r\n if (config.layerMatrix[layerMatrixKey][value][\"disableNext\"]){\r\n parentDisableNext = true;\r\n }\r\n const ids = config.layerMatrix[layerMatrixKey][value][\"layers\"];\r\n if (ids){\r\n possibleLayers.push(ids);\r\n }\r\n newTrailing.push(value);\r\n } else {\r\n if (!parentDisableNext) {\r\n if (!matrixSelectTrailing.includes(layerMatrixKey)) {\r\n for (const k in config.layerMatrix[layerMatrixKey]) {\r\n if (config.layerMatrix[layerMatrixKey][k].defaultTrailing) {\r\n const ids = config.layerMatrix[layerMatrixKey][k][\"layers\"];\r\n possibleLayers.push(ids);\r\n newTrailing.push(k);\r\n }\r\n }\r\n } else {\r\n const ids = config.layerMatrix[layerMatrixKey][\r\n matrixSelectTrailing[matrixSelectTrailing.indexOf(layerMatrixKey) + 1]][\"layers\"];\r\n possibleLayers.push(ids);\r\n newTrailing.push(matrixSelectTrailing[matrixSelectTrailing.indexOf(layerMatrixKey) + 1]);\r\n }\r\n }\r\n }\r\n }\r\n store.CompareStore.setMatrixSelectTrailing(newTrailing);\r\n\r\n const layersTrailing: TopicLayerConfiguration[] = this.intersectLayers(possibleLayers);\r\n store.CompareStore.setLayersTrailing(layersTrailing);\r\n if(layersTrailing.length>0 && this.trailingLayers){\r\n this.trailingLayers.allLayers.forEach((layer) => {\r\n const metauid = PathUtils.getMetaId(PathUtils.getLayerPath(layer) as string);\r\n layer.visible=this.permanetLayers?.some((v) => v.metauid === metauid)\r\n || layersTrailing.some((v) => v.id === metauid)\r\n || !!this.optionalLayers?.find((v)=> v.metauid === metauid)?.visible;\r\n if(layer.type===\"map-image\"){\r\n (layer as __esri.MapImageLayer).sublayers.forEach((s)=> {\r\n s.visible = !!layersTrailing.find((v)=> v.id === metauid)?.layerIds?.includes(s.id);\r\n });\r\n }\r\n });\r\n }\r\n }\r\n private selectOptional(metauid: string): void {\r\n const {store} = this.props;\r\n const visible = !store?.mapStore.activeLayerMetauids.includes(metauid);\r\n const allLayers = store?.mapStore.map?.allLayers.flatten((subL: __esri.Layer) =>\r\n (subL as __esri.MapImageLayer).allSublayers as unknown as __esri.Collection<__esri.Layer>\r\n );\r\n allLayers?.forEach((layer)=> {\r\n if ((layer as any).metauid === metauid || PathUtils.getMetaId(PathUtils.getLayerPath(layer)) === metauid){\r\n layer.visible = visible;\r\n }\r\n });\r\n }\r\n private handleCompare(event: SyntheticEvent): void {\r\n const {store} = this.props;\r\n event.preventDefault();\r\n event.currentTarget.blur();\r\n const {compare} = this.state;\r\n if (!compare) {\r\n this.enableCompare();\r\n } else {\r\n this.disableCompare();\r\n }\r\n store?.CompareStore.setEnabled(!this.state.compare);\r\n this.setState({compare: !this.state.compare});\r\n }\r\n private enableCompare(): void {\r\n const {config, store} = this.props;\r\n if (!store || !store.mapStore.view) {\r\n return;\r\n }\r\n const view = store.mapStore.view as __esri.MapView;\r\n const {subtopic} = store.appStore;\r\n const {layersTrailing} = store.CompareStore;\r\n\r\n store.PopupStore.setVisible(false);\r\n store.PopupStore.setDisabled(true);\r\n this.prepareLeadingLayers();\r\n this.trailingLayers = new EsriGroupLayer({\r\n title:\"[compare]\", visible: true,\r\n blendMode: this.leadingLayers[0].blendMode? this.leadingLayers[0].blendMode: \"normal\",\r\n });\r\n this.trailingLayers.set(\"metauid\", \"[compare]\");\r\n let possibleLayers: TopicLayerConfiguration[] = [];\r\n if (config.subtopics && subtopic?.id) {\r\n possibleLayers = config.subtopics[subtopic.id];\r\n }\r\n // add group layer to the map\r\n store.mapStore.view?.map.layers.add(this.trailingLayers);\r\n const layerPromises: Array> = [];\r\n let copyLayers= this.leadingLayers;\r\n if (this.optionalLayers) {\r\n copyLayers = this.optionalLayers.concat(copyLayers);\r\n }\r\n if (this.permanetLayers) {\r\n copyLayers = this.permanetLayers.concat(copyLayers);\r\n }\r\n copyLayers.forEach((layer)=> {\r\n let trailingLayer: __esri.Layer | null = null;\r\n const visible = this.permanetLayers?.some((p) => p.metauid === layer.metauid)\r\n || !!this.optionalLayers?.find((o)=> o.metauid === layer.metauid)?.visible;\r\n if (layer.type === \"map-image\"){\r\n const layerTrailing: TopicLayerConfiguration | undefined = layersTrailing.find((l) => l.id === layer.metauid);\r\n const possibleLayer = possibleLayers.find((l) => l.id === layer.metauid);\r\n const tConfig = {\r\n blendMode: layer.blendMode ? layer.blendMode : \"normal\", // blendMode aus Webmap übernehmen\r\n url: PathUtils.getLayerPath(layer),\r\n sublayers: possibleLayer && possibleLayer.layerIds? possibleLayer.layerIds.map((lId) => ({\r\n id: lId,\r\n visible: !!layerTrailing?.layerIds?.includes(lId)\r\n })): [],\r\n legendEnabled: false,\r\n visible: !!layerTrailing || visible\r\n };\r\n trailingLayer = new EsriMapImageLayer(tConfig as __esri.MapImageLayerProperties);\r\n } else if (layer.type === \"imagery-tile\" || layer.type === \"feature\" || layer.type === \"vector-tile\") {\r\n const tConfig = {\r\n blendMode: layer.blendMode ? layer.blendMode : \"normal\", // blendMode aus Webmap übernehmen\r\n url: PathUtils.getLayerPath(layer),\r\n legendEnabled: false,\r\n visible: visible || layersTrailing.some((v) => v.id === layer.metauid)\r\n };\r\n if (layer.type===\"imagery-tile\") {\r\n trailingLayer = new EsriImageryTileLayer(tConfig as __esri.ImageryTileLayerProperties);\r\n } else if (layer.type===\"feature\") {\r\n trailingLayer = new EsriFeatureLayer(tConfig as __esri.FeatureLayerProperties);\r\n } else if (layer.type===\"vector-tile\") {\r\n trailingLayer = new EsriVectorTileLayer(tConfig as __esri.VectorTileLayerProperties);\r\n }\r\n\r\n }\r\n if (trailingLayer) {\r\n layerPromises.push(\r\n trailingLayer.load().then(() => {\r\n trailingLayer.set(\"metauid\", \"[compare]\");\r\n if ((trailingLayer as any).sublayers) {\r\n (trailingLayer as any).sublayers.forEach((l: any) => {\r\n l.set(\"metauid\", \"[compare]\");\r\n });\r\n }\r\n this.trailingLayers.add(trailingLayer);\r\n })\r\n );\r\n }\r\n });\r\n Promise.all(layerPromises).then(()=>{\r\n const usableWidth = store.uiStore.uiWidth - 360; // Browserfenster minus Seitenliste (360px)\r\n const swipeProps: __esri.SwipeViewModelProperties = {\r\n // @ts-expect-error invalid id\r\n id: \"compare-widget\",\r\n view,\r\n leadingLayers: this.leadingLayers,\r\n trailingLayers: [this.trailingLayers],\r\n direction: store.uiStore.uiOrientation === \"portrait\"? \"vertical\": \"horizontal\",\r\n // Platz für die Sidebare im \"landscape\" Format\r\n position: ((store.uiStore.uiOrientation === \"landscape\" && config.style !== \"slider\")?\r\n 100 / store.uiStore.uiWidth * (360 + usableWidth / 2): 50)\r\n };\r\n this.widget = new Swipe(swipeProps);\r\n store.mapStore.view?.ui.add(this.widget);\r\n });\r\n this.addOnCompareHandles();\r\n }\r\n private disableCompare(): void {\r\n const {store} = this.props;\r\n store?.PopupStore.setDisabled(false);\r\n this.removeOnCompareHandles();\r\n if (this.widget) {\r\n if (this.trailingLayers) {\r\n store?.mapStore.map?.remove(this.trailingLayers);\r\n this.trailingLayers.destroy();\r\n }\r\n store?.mapStore.view?.ui.remove(this.widget);\r\n this.widget.destroy();\r\n }\r\n }\r\n private updateLayers(): void {\r\n const {config, store} = this.props;\r\n const {subtopic, compare} = this.state;\r\n const appStoreSubtopic = store?.appStore.subtopic?.id;\r\n if (store?.mapStore.activeLayers) {\r\n const layers: Map = new Map();\r\n config.layerMetauids.forEach((metauid)=>{\r\n const l = store?.mapStore.activeLayers.get(metauid);\r\n if (l) {\r\n layers.set(metauid, l);\r\n }\r\n });\r\n const matrixSelect = [];\r\n for (const layerMatrixKey in config.layerMatrix) {\r\n for (const layerMatrixValueKey in config.layerMatrix[layerMatrixKey]) {\r\n if (config.layerMatrix[layerMatrixKey][layerMatrixValueKey][\"layers\"].filter(\r\n (layerConfig: TopicLayerConfiguration) =>\r\n layerConfig &&\r\n layers.has(layerConfig.id) &&\r\n layers.get(layerConfig.id) !== undefined &&\r\n (\r\n !layerConfig.layerIds ||\r\n !Array.isArray(layerConfig.layerIds) ||\r\n // @ts-expect-error undefined. Copilot is not able to resolve\r\n layers.get(layerConfig.id).filter((v: number) =>\r\n layerConfig.layerIds?.includes(v) ).length > 0\r\n )\r\n ).length > 0) {\r\n matrixSelect.push(layerMatrixKey);\r\n matrixSelect.push(layerMatrixValueKey);\r\n }\r\n }\r\n }\r\n const subtopicChange = appStoreSubtopic!==subtopic;\r\n store?.CompareStore.setLayers(layers);\r\n store?.CompareStore.setMatrixSelect(matrixSelect);\r\n this.setState({subtopic: appStoreSubtopic});\r\n if (subtopicChange && config.subtopics) {\r\n this.handleSelectTrailing();\r\n if(compare) {\r\n // Quick & dirty: Mehrfachauslösung verhindern\r\n if (this.timeoutID) {\r\n clearTimeout(this.timeoutID);\r\n }\r\n this.timeoutID = window.setTimeout(() => {\r\n this.disableCompare();\r\n this.enableCompare();\r\n }, 100);\r\n }\r\n }\r\n }\r\n }\r\n private prepareLeadingLayers(): void {\r\n const {config, store} = this.props;\r\n if (!this.leadingLayers) {\r\n this.leadingLayers = [];\r\n const allLayers = store?.mapStore.map?.allLayers.flatten((subL: __esri.Layer) =>\r\n (subL as __esri.MapImageLayer).allSublayers as unknown as __esri.Collection<__esri.Layer>\r\n );\r\n config.layerMetauids.forEach((metauid) => {\r\n const layer = allLayers?.find((l) => {\r\n const url = PathUtils.getLayerPath(l);\r\n if (typeof url === \"string\") {\r\n if (metauid === PathUtils.getMetaId(url)) {\r\n return true;\r\n }\r\n }\r\n return false;\r\n });\r\n if (layer) {\r\n (layer as any).metauid = metauid;\r\n this.leadingLayers.push(layer);\r\n }\r\n });\r\n if (config.optional) {\r\n this.optionalLayers = [];\r\n config.optional.forEach((metauid) => {\r\n const layer = allLayers?.find((l) => {\r\n const url = PathUtils.getLayerPath(l);\r\n if (typeof url === \"string\") {\r\n if (metauid === PathUtils.getMetaId(url)) {\r\n return true;\r\n }\r\n }\r\n return false;\r\n });\r\n if (layer) {\r\n (layer as any).metauid = metauid;\r\n this.optionalLayers.push(layer);\r\n }\r\n });\r\n }\r\n if (config.permanent) {\r\n this.permanetLayers = [];\r\n config.permanent.forEach((metauid) => {\r\n const layer = allLayers?.find((l) => {\r\n const url = PathUtils.getLayerPath(l);\r\n if (typeof url === \"string\") {\r\n if (metauid === PathUtils.getMetaId(url)) {\r\n return true;\r\n }\r\n }\r\n return false;\r\n });\r\n if (layer) {\r\n (layer as any).metauid = metauid;\r\n this.permanetLayers.push(layer);\r\n }\r\n });\r\n }\r\n }\r\n }\r\n private defaultLayersTrailing(): void {\r\n const {config, store} = this.props;\r\n const matrixSelectTrailing = [];\r\n let parentDisableNext = false;\r\n for (const layerMatrixKey in config.layerMatrix) {\r\n for (const layerMatrixValueKey in config.layerMatrix[layerMatrixKey]){\r\n if(!parentDisableNext && config.layerMatrix[layerMatrixKey][layerMatrixValueKey].defaultTrailing){\r\n matrixSelectTrailing.push(layerMatrixKey);\r\n matrixSelectTrailing.push(layerMatrixValueKey);\r\n if(config.layerMatrix[layerMatrixKey][layerMatrixValueKey].disableNext){\r\n parentDisableNext = true;\r\n }\r\n break;\r\n }\r\n }\r\n }\r\n store?.CompareStore.setMatrixSelectTrailing(matrixSelectTrailing);\r\n this.handleSelectTrailing();\r\n }\r\n private intersectLayers(layers: TopicLayerConfiguration[][]): TopicLayerConfiguration[]{\r\n let activeLayers: any[]=[];\r\n // Mögliche Layer via \"Intersect\" filtern\r\n if (layers.length === 1) {\r\n activeLayers=layers[0];\r\n } else if (layers.length>1) {\r\n const activeIDs = _.intersection(...layers.map((l) => l.map((v) => v.id)));\r\n layers = layers.filter((l) => l.find((v) => activeIDs.includes(v.id) ));\r\n activeIDs.forEach((lID)=> {\r\n let layerIds: number[]=[];\r\n layers.forEach((pL, index)=>{\r\n const l: TopicLayerConfiguration | undefined = pL.find((v: TopicLayerConfiguration) => v.id === lID);\r\n if(l && l.layerIds) {\r\n if (index === 0) {\r\n layerIds = l.layerIds;\r\n } else {\r\n layerIds = _.intersection(layerIds, l.layerIds);\r\n }\r\n }\r\n });\r\n if (layerIds.length>0) {\r\n activeLayers.push({id:lID, layerIds});\r\n } else {\r\n activeLayers.push({id:lID});\r\n }\r\n });\r\n }\r\n return activeLayers;\r\n }\r\n private updateOrientation(): void {\r\n const {store} = this.props;\r\n if(this.state.compare){\r\n this.widget.direction = store?.uiStore.uiOrientation===\"portrait\"? \"vertical\": \"horizontal\";\r\n }\r\n }\r\n private addOnCompareHandles(): void {\r\n const {store} = this.props;\r\n this.autorunCompareDisposers.push(reaction(() => store?.uiStore.uiOrientation, () => {\r\n this.updateOrientation();\r\n }));\r\n }\r\n private removeOnCompareHandles(): void {\r\n this.autorunCompareDisposers.forEach((disposer: any) => {\r\n disposer();\r\n });\r\n this.autorunCompareDisposers.length = 0;\r\n }\r\n componentDidMount(): void {\r\n const {store} = this.props;\r\n if (!store) {\r\n return;\r\n }\r\n store.uiStore.addWidget(this.widgetKey, this);\r\n if(!store?.CompareStore.matrixSelectTrailing){\r\n this.defaultLayersTrailing();\r\n }\r\n this.autorunDisposers.push(reaction(() => [...store.mapStore.activeLayers.values()], () => {\r\n this.updateLayers();\r\n }));\r\n if(store.mapStore.view && store.CompareStore.enabled) {\r\n this.widget = store.mapStore.view.ui.find(\"compare-widget\") as Swipe;\r\n this.trailingLayers = this.widget.trailingLayers.at(0) as EsriGroupLayer;\r\n }\r\n }\r\n componentWillUnmount(): void {\r\n const {store} = this.props;\r\n this.watchHandles.forEach((handle: any) => {\r\n handle.remove();\r\n });\r\n this.watchHandles.length = 0;\r\n this.autorunDisposers.forEach((disposer: any) => {\r\n disposer();\r\n });\r\n this.autorunDisposers.length = 0;\r\n store?.uiStore.removeWidget(this.widgetKey);\r\n }\r\n\r\n render(): React.ReactElement | null {\r\n const {\r\n config,\r\n controlsConfig,\r\n small,\r\n topicSwitcher,\r\n store\r\n } = this.props;\r\n if (!store) {\r\n return null;\r\n }\r\n const {layers} = store.CompareStore;\r\n const {compare} = this.state;\r\n let legend;\r\n if (controlsConfig.legend.position === \"compare\") {\r\n if (controlsConfig.legend.useEsri && controlsConfig.legend.esriConfig) {\r\n legend = ();\r\n } else {\r\n legend = ();\r\n }\r\n }\r\n let selects: React.ReactElement[] = [];\r\n let compareButton;\r\n if(layers?.size>0) {\r\n selects.push();\r\n if(this.props.standalone){\r\n compareButton = ( this.handleCompare(e)}\r\n size={\"mini\"}> {compare? \"Vergleichen beenden\": \"Vergleichen\"}\r\n );\r\n }else{\r\n compareButton = ( this.handleCompare(e)}\r\n size={\"mini\"}> {compare? \"Vergleichen beenden\": \"Vergleichen\"}\r\n );\r\n }\r\n if(compare){\r\n selects.push();\r\n }\r\n }\r\n return (\r\n
    \r\n
    {topicSwitcher}{compareButton}
    \r\n
    \r\n
    {selects}
    \r\n
    \r\n
    {(store.mapViewerConfig.subtopics)?:}
    \r\n {legend}\r\n
    \r\n );\r\n }\r\n}\r\n\r\nexport const Compare = withStore(CompareBase);\r\n","import React from \"react\";\r\nimport { instanceOf } from \"prop-types\";\r\nimport { withCookies, Cookies, ReactCookieProps } from \"react-cookie\";\r\n\r\nimport \"./cookie-banner.scss\";\r\nimport {IAppStore, withStore} from \"../../stores/abstract-app-store\";\r\n\r\nexport interface CookieBannerProps extends ReactCookieProps {\r\n className?: string;\r\n store?: IAppStore; // this is injected by withStore\r\n}\r\n\r\n\r\nclass CookieBanner extends React.Component {\r\n static propTypes = {\r\n cookies: instanceOf(Cookies).isRequired\r\n };\r\n state = { visible: true};\r\n constructor(props: CookieBannerProps) {\r\n super(props);\r\n const { cookies } = this.props;\r\n this.state = {\r\n visible: !cookies?.get(\"Cookie.Overlay.Accepted\")\r\n };\r\n this.handleDismiss = this.handleDismiss.bind(this);\r\n }\r\n handleDismiss = (accepted: boolean): void => {\r\n const { cookies } = this.props;\r\n this.setState({ visible: false });\r\n if (cookies) {\r\n cookies.set(\"Cookie.Overlay.Accepted\", accepted ? \"True\" : \"False\",\r\n {path: \"/\", sameSite: \"lax\", maxAge: (365 * 24 * 60 * 60),\r\n domain: (window.location.hostname.indexOf(\".lu.ch\") > 0)? \".lu.ch\": window.location.hostname});\r\n }\r\n };\r\n\r\n render(): React.ReactElement | null {\r\n const { store } = this.props;\r\n if (this.state.visible) {\r\n let className = \"cookieoverlay geo-component\";\r\n if (this.props.className) {\r\n className += \" \" + this.props.className;\r\n }\r\n return (\r\n
    \r\n
    \r\n
    \r\n Auf dieser Webseite werden zur Verbesserung der Funktionalität und des Leistungsverhaltens\r\n Cookies eingesetzt. Durch Klicken auf den OK-Button stimmen Sie der Verwendung von Cookies\r\n auf dieser Webseite zu.
    \r\n Weitere Informationen\r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n );\r\n }\r\n\r\n return null;\r\n }\r\n}\r\nexport default withCookies(withStore(CookieBanner));\r\n","import React from \"react\";\r\nimport {autorun} from \"mobx\";\r\nimport {observer} from \"mobx-react\";\r\n\r\nimport \"./coordinate.scss\";\r\n\r\nimport { Icon } from \"../icon/icon\";\r\n\r\nimport * as reactiveUtils from \"@arcgis/core/core/reactiveUtils\";\r\nimport Extent from \"@arcgis/core/geometry/Extent\";\r\nimport {IAppStore, withStore} from \"../../stores/abstract-app-store\";\r\n\r\ninterface CoordinateProps {\r\n store?: IAppStore; // this is injected by withStore\r\n}\r\n\r\n@observer\r\nclass CoordinateBase extends React.Component {\r\n autorunDisposers: any[] = [];\r\n elevationLayerIndex = -1;\r\n elevationSampler: Promise<__esri.ElevationSampler> | null = null;\r\n watchHandles: any[] = [];\r\n widgetKey = \"coordinate\";\r\n cursorTimeout = 250;\r\n cursorTimeoutId: number | null = null;\r\n titleElevationLayer: string;\r\n constructor(props: CoordinateProps) {\r\n super(props);\r\n this.state = {\r\n isLoading: true,\r\n coordinate: null,\r\n titleElevationLayer: null\r\n };\r\n }\r\n resetCursorTimer(): void {\r\n if (this.cursorTimeoutId) {\r\n window.clearTimeout(this.cursorTimeoutId);\r\n }\r\n }\r\n loadElevationLayer(view: __esri.MapView | __esri.SceneView | undefined, store: IAppStore): void {\r\n if (!view) {\r\n return;\r\n }\r\n if (view.map.ground.layers.length > 0) {\r\n // Suche Layer mit der id \"dom\", ansonsten erster Layer in der ground Liste\r\n this.elevationLayerIndex =\r\n Math.max(0, view.map.ground.layers.findIndex((e)=> e.id===\"dom\" ));\r\n if (view.map.ground.layers.getItemAt(this.elevationLayerIndex).title\r\n !== this.titleElevationLayer) {\r\n this.updateElevationSampler(store);\r\n }\r\n }\r\n }\r\n componentDidMount(): void {\r\n const {store} = this.props;\r\n\r\n // rerun until map view is ready and layer list view model is loaded\r\n this.autorunDisposers.push(autorun((reaction: any) => {\r\n if (store?.uiStore.widgets.has(this.widgetKey)) {\r\n reaction.dispose(); // stop autorun\r\n return;\r\n }\r\n\r\n if (!store?.mapStore.view) {\r\n return;\r\n }\r\n this.setState({\r\n coordinate: null,\r\n elevation: null\r\n });\r\n this.watchHandles.push(\r\n store?.mapStore.view.watch(\"stationary\",\r\n () => {\r\n this.resetCursorTimer();\r\n this.setState({\r\n coordinate: null,\r\n elevation: null\r\n });\r\n })\r\n );\r\n this.watchHandles.push(\r\n reactiveUtils.when(\r\n () => store?.mapStore.view?.stationary === true,\r\n () => {\r\n if (this.elevationLayerIndex >= 0) {\r\n this.updateElevationSampler(store);\r\n }\r\n })\r\n );\r\n this.loadElevationLayer(store?.mapStore.view, store);\r\n this.watchHandles.push(\r\n store?.mapStore.view.watch(\"map.ground.layers.length\",\r\n () => {\r\n this.loadElevationLayer(store?.mapStore.view, store);\r\n })\r\n );\r\n this.watchHandles.push(\r\n store?.mapStore.view.on(\"pointer-move\", (evt) => {\r\n this.resetCursorTimer();\r\n this.setState({\r\n coordinate: store?.mapStore.view?.toMap({ x: evt.x, y: evt.y }),\r\n elevation: store?.mapStore.view?.map.ground? -1: null\r\n });\r\n const mapPoint = store?.mapStore.view?.toMap(evt);\r\n if (this.elevationSampler && mapPoint) {\r\n this.elevationSampler.then((elevationSampler)=> {\r\n const mapPointZ = elevationSampler.queryElevation(mapPoint) as __esri.Point;\r\n this.setState({elevation: mapPointZ.z});\r\n });\r\n }\r\n\r\n })\r\n );\r\n this.watchHandles.push(\r\n store?.mapStore.view.on(\"pointer-leave\", () => {\r\n this.resetCursorTimer();\r\n this.setState({\r\n coordinate: null,\r\n elevation: store?.mapStore.view?.map.ground? -1: null\r\n });\r\n })\r\n );\r\n this.setState({\r\n isLoading: false\r\n });\r\n store?.uiStore.addWidget(this.widgetKey, this);\r\n\r\n reaction.dispose();\r\n }));\r\n }\r\n updateElevationSampler(store: IAppStore) {\r\n if (!store?.mapStore.view) {\r\n return;\r\n }\r\n this.titleElevationLayer = store?.mapStore.view.map.ground.layers.getItemAt(this.elevationLayerIndex).title;\r\n this.setState({\r\n titleElevationLayer: this.titleElevationLayer\r\n });\r\n if(store?.mapStore.view.extent){\r\n // Extent als kopie übergeben damit veränderungen innerhalb des ElevationSampler keinen Einfluss auf die\r\n // Karte haben. Ansonsten funktioniert die Druckfunktion in der Grenzregion nicht korrekt.\r\n this.elevationSampler =\r\n store?.mapStore.view.map.ground.layers.getItemAt(this.elevationLayerIndex)\r\n .createElevationSampler(new Extent(store?.mapStore.view.extent.toJSON()));\r\n }else{\r\n this.elevationSampler = null;\r\n }\r\n }\r\n\r\n componentWillUnmount() {\r\n const {store} = this.props;\r\n this.watchHandles.forEach((handle: any) => {\r\n handle.remove();\r\n });\r\n this.watchHandles.length = 0;\r\n this.autorunDisposers.forEach((disposer: any) => {\r\n disposer();\r\n });\r\n this.autorunDisposers.length = 0;\r\n store?.uiStore.removeWidget(this.widgetKey);\r\n }\r\n render(): React.ReactElement | null {\r\n const {coordinate, elevation, titleElevationLayer} = this.state;\r\n let coords = \"\";\r\n let elevationElement: React.ReactElement | null = null;\r\n let className: string;\r\n if(coordinate){\r\n className =\"show\";\r\n coords =\r\n \"E \" +\r\n new Intl.NumberFormat(\"de-CH\").format(Math.round(coordinate.x)) +\r\n \" / N \" +\r\n new Intl.NumberFormat(\"de-CH\").format(Math.round(coordinate.y));\r\n if (elevation !== null) {\r\n if (elevation === -1) {\r\n elevationElement = \r\n Höhe: \r\n m.ü.M\r\n \r\n ;\r\n } else {\r\n // coords += new Intl.NumberFormat(\"de-CH\").format(Math.round(elevation)) + \" m.ü.M\";\r\n elevationElement = \r\n Höhe: { (elevation === 0)? \"?\":\r\n new Intl.NumberFormat(\"de-CH\").format(Math.round(elevation))\r\n } m.ü.M ({titleElevationLayer});\r\n }\r\n }\r\n } else {\r\n className =\"hide\";\r\n }\r\n return (\r\n
    \r\n {coords}{elevationElement}
    \r\n );\r\n }\r\n}\r\n\r\nexport const Coordinate = withStore(CoordinateBase);\r\n","import * as React from \"react\";\r\n\r\nexport interface ErrorBoundaryProps {}\r\n\r\nexport interface ErrorInfo {\r\n componentStack: string;\r\n}\r\n\r\nexport interface State {\r\n error: Error | null;\r\n errorInfo: ErrorInfo | null;\r\n}\r\n\r\nexport class ErrorBoundary extends React.Component {\r\n constructor(props: ErrorBoundaryProps) {\r\n super(props);\r\n this.state = {\r\n error: null,\r\n errorInfo: null\r\n };\r\n }\r\n\r\n componentDidCatch(error: Error, errorInfo: ErrorInfo) {\r\n // Catch errors in any components below and re-render with error message\r\n this.setState({\r\n error,\r\n errorInfo\r\n });\r\n // You can also log error messages to an error reporting service here\r\n }\r\n\r\n render() {\r\n if (this.state.errorInfo) {\r\n // Error path\r\n return (\r\n
    \r\n

    Etwas ist schief gelaufen.

    \r\n
    \r\n {this.state.error && this.state.error.toString()}\r\n
    \r\n {this.state.errorInfo.componentStack}\r\n
    \r\n
    \r\n );\r\n }\r\n // Normally, just render children\r\n return this.props.children;\r\n }\r\n}\r\n","import * as React from \"react\";\r\nimport {MouseEventHandler} from \"react\";\r\n\r\nimport SVG from \"react-inlinesvg\";\r\n\r\nexport type GeoICONS =\r\n \"3d_glasses\" |\r\n \"about\" |\r\n \"add\" |\r\n \"address_book2\" |\r\n \"adhesive_tape\" |\r\n \"air_tube_carrier\" |\r\n \"airbrush\" |\r\n \"airplane\" |\r\n \"airplane2\" |\r\n \"airplane2_landing\" |\r\n \"airplane2_starting\" |\r\n \"airship\" |\r\n \"alarm\" |\r\n \"alarmclock\" |\r\n \"ambulance\" |\r\n \"ammunition_box_closed\" |\r\n \"ammunition_box_open\" |\r\n \"anchor\" |\r\n \"angel\" |\r\n \"antenna\" |\r\n \"apple\" |\r\n \"apple_bite\" |\r\n \"armour\" |\r\n \"army_knife\" |\r\n \"arrow_around\" |\r\n \"arrow_barrier\" |\r\n \"arrow_circle\" |\r\n \"arrow_circle2\" |\r\n \"arrow_cross\" |\r\n \"arrow_curve_left\" |\r\n \"arrow_down\" |\r\n \"arrow_down_left\" |\r\n \"arrow_down_right\" |\r\n \"arrow_fork\" |\r\n \"arrow_fork2\" |\r\n \"arrow_from\" |\r\n \"arrow_into\" |\r\n \"arrow_join\" |\r\n \"arrow_join2\" |\r\n \"arrow_junction\" |\r\n \"arrow_left\" |\r\n \"arrow_loop\" |\r\n \"arrow_loop2\" |\r\n \"arrow_loop3\" |\r\n \"arrow_merge\" |\r\n \"arrow_merge2\" |\r\n \"arrow_mix\" |\r\n \"arrow_out\" |\r\n \"arrow_over\" |\r\n \"arrow_right\" |\r\n \"arrow_shuffle\" |\r\n \"arrow_spread\" |\r\n \"arrow_spread2\" |\r\n \"arrow_squiggly\" |\r\n \"arrow_through\" |\r\n \"arrow_to\" |\r\n \"arrow_turn_left\" |\r\n \"arrow_u_turn\" |\r\n \"arrow_up\" |\r\n \"arrow_up_left\" |\r\n \"arrow_up_right\" |\r\n \"ashtray_cigarette\" |\r\n \"astrologer\" |\r\n \"astronaut\" |\r\n \"athlete\" |\r\n \"atm\" |\r\n \"atom\" |\r\n \"atom2\" |\r\n \"auction_hammer\" |\r\n \"audio_cassette\" |\r\n \"axe\" |\r\n \"baby\" |\r\n \"back\" |\r\n \"backpack\" |\r\n \"bacon\" |\r\n \"bacteria\" |\r\n \"badminton_racket\" |\r\n \"bag\" |\r\n \"bags\" |\r\n \"balloon\" |\r\n \"balloons\" |\r\n \"ballpen\" |\r\n \"banana\" |\r\n \"band_aid\" |\r\n \"bank_building\" |\r\n \"barcode\" |\r\n \"barcode_scanner\" |\r\n \"barrel\" |\r\n \"barrels\" |\r\n \"barrier_closed\" |\r\n \"barrier_open\" |\r\n \"baseball\" |\r\n \"baseball_bat\" |\r\n \"basketball\" |\r\n \"basketball_hoop\" |\r\n \"battery_charge\" |\r\n \"battery_plus_minus\" |\r\n \"battery_status0\" |\r\n \"battery_status1\" |\r\n \"battery_status2\" |\r\n \"battery_status3\" |\r\n \"battery_status4\" |\r\n \"battery_status5\" |\r\n \"beaker\" |\r\n \"beaker2\" |\r\n \"bear\" |\r\n \"bed\" |\r\n \"bed_empty\" |\r\n \"beer_bottle\" |\r\n \"beer_garden_table\" |\r\n \"beer_glass\" |\r\n \"beer_mug\" |\r\n \"bell\" |\r\n \"bell2\" |\r\n \"beverage_can\" |\r\n \"beverage_can_empty\" |\r\n \"bible\" |\r\n \"bicycle\" |\r\n \"bicyclist\" |\r\n \"billboard_empty\" |\r\n \"binocular\" |\r\n \"bird\" |\r\n \"blackboard\" |\r\n \"blender\" |\r\n \"blood_bag\" |\r\n \"blot\" |\r\n \"body_scale\" |\r\n \"bolt\" |\r\n \"bomb\" |\r\n \"bomb2\" |\r\n \"bone\" |\r\n \"book\" |\r\n \"book2\" |\r\n \"book_bookmark\" |\r\n \"book_headphones\" |\r\n \"book_open\" |\r\n \"book_telephone\" |\r\n \"bookkeeper\" |\r\n \"bookmark\" |\r\n \"bookmarks\" |\r\n \"books\" |\r\n \"boombox\" |\r\n \"bottle\" |\r\n \"bottle_bubbles\" |\r\n \"bottle_crate\" |\r\n \"bottle_of_pills\" |\r\n \"bow_tie\" |\r\n \"bowl\" |\r\n \"bowling_ball\" |\r\n \"bowling_pin\" |\r\n \"bowling_pins\" |\r\n \"box_closed\" |\r\n \"box_into\" |\r\n \"box_open\" |\r\n \"box_out\" |\r\n \"box_software\" |\r\n \"box_surprise\" |\r\n \"box_tall\" |\r\n \"boxing_glove\" |\r\n \"boy\" |\r\n \"brain\" |\r\n \"breakfast_egg\" |\r\n \"breakpoint\" |\r\n \"breakpoint_selection\" |\r\n \"breakpoints\" |\r\n \"breakpoints_selection\" |\r\n \"brick_trowel\" |\r\n \"brickwall\" |\r\n \"bridge\" |\r\n \"briefcase\" |\r\n \"briefcase2\" |\r\n \"briefcase2_document\" |\r\n \"briefcase_document\" |\r\n \"brush\" |\r\n \"bucket\" |\r\n \"bug\" |\r\n \"bug2\" |\r\n \"building_block\" |\r\n \"bull\" |\r\n \"bulldozer\" |\r\n \"bullet_train\" |\r\n \"bullets\" |\r\n \"buoy\" |\r\n \"bus\" |\r\n \"bus2\" |\r\n \"businessmen\" |\r\n \"businesspeople\" |\r\n \"businesspeople2\" |\r\n \"businessperson\" |\r\n \"businessperson2\" |\r\n \"businesswoman\" |\r\n \"businesswomen\" |\r\n \"button\" |\r\n \"c_clamp\" |\r\n \"cabinet\" |\r\n \"cabinet2\" |\r\n \"cabinet_flash\" |\r\n \"cabinet_open\" |\r\n \"cabinet_warning\" |\r\n \"cactus\" |\r\n \"caesar\" |\r\n \"cake\" |\r\n \"cake2\" |\r\n \"cake_slice\" |\r\n \"calculator\" |\r\n \"calendar\" |\r\n \"calendar_1\" |\r\n \"calendar_3\" |\r\n \"calendar_31\" |\r\n \"calendar_5\" |\r\n \"calendar_52\" |\r\n \"calendar_7\" |\r\n \"calendar_clock\" |\r\n \"calibration_mark\" |\r\n \"caliper\" |\r\n \"camera\" |\r\n \"can_closed\" |\r\n \"can_open\" |\r\n \"candle\" |\r\n \"candle_holder\" |\r\n \"cannon\" |\r\n \"car_compact\" |\r\n \"car_compact2\" |\r\n \"car_convertible2\" |\r\n \"car_sedan\" |\r\n \"car_sedan2\" |\r\n \"car_sports\" |\r\n \"carabiner\" |\r\n \"card_terminal\" |\r\n \"card_terminal2\" |\r\n \"cargo_container\" |\r\n \"cash_flow\" |\r\n \"cash_register\" |\r\n \"cashier\" |\r\n \"cask\" |\r\n \"castle\" |\r\n \"cd\" |\r\n \"cd_burn\" |\r\n \"cd_case\" |\r\n \"cd_drive\" |\r\n \"cd_music\" |\r\n \"cd_pirated\" |\r\n \"cd_window\" |\r\n \"central_bank\" |\r\n \"central_bank_dollar\" |\r\n \"central_bank_euro\" |\r\n \"central_bank_pound\" |\r\n \"central_bank_yen\" |\r\n \"central_bank_yuan\" |\r\n \"chainsaw\" |\r\n \"chalk\" |\r\n \"champagne_bottle\" |\r\n \"champagne_glass\" |\r\n \"chart_area\" |\r\n \"chart_bar\" |\r\n \"chart_bubble\" |\r\n \"chart_candlestick\" |\r\n \"chart_column\" |\r\n \"chart_column_stacked\" |\r\n \"chart_donut\" |\r\n \"chart_dot\" |\r\n \"chart_funnel\" |\r\n \"chart_gantt\" |\r\n \"chart_hi_lo\" |\r\n \"chart_line\" |\r\n \"chart_pie\" |\r\n \"chart_pyramid\" |\r\n \"chart_radar\" |\r\n \"chart_renko\" |\r\n \"chart_spline\" |\r\n \"chart_step\" |\r\n \"check\" |\r\n \"checkbook\" |\r\n \"checkbox\" |\r\n \"checkbox_selected\" |\r\n \"checkbox_unchecked\" |\r\n \"checkbox_unselected\" |\r\n \"checks\" |\r\n \"chess_piece_bishop\" |\r\n \"chess_piece_king\" |\r\n \"chess_piece_knight\" |\r\n \"chess_piece_pawn\" |\r\n \"chess_piece_queen\" |\r\n \"chess_piece_rook\" |\r\n \"chest\" |\r\n \"chest_into\" |\r\n \"chest_open\" |\r\n \"chest_open_full\" |\r\n \"chest_out\" |\r\n \"chocolate\" |\r\n \"christian_cross\" |\r\n \"christmas_ball\" |\r\n \"church\" |\r\n \"cigarette\" |\r\n \"cigarette_packet\" |\r\n \"cigarette_packet_empty\" |\r\n \"circus\" |\r\n \"clapperboard\" |\r\n \"clapperboard_closed\" |\r\n \"cleaver\" |\r\n \"clef\" |\r\n \"client_network\" |\r\n \"clients\" |\r\n \"clipboard\" |\r\n \"clipboard_check_edit\" |\r\n \"clipboard_checks\" |\r\n \"clipboard_empty\" |\r\n \"clipboard_paste\" |\r\n \"clipboard_paste_no_format\" |\r\n \"clock\" |\r\n \"clock_back\" |\r\n \"clock_forward\" |\r\n \"close\" |\r\n \"clothes_pin\" |\r\n \"cloud\" |\r\n \"cloud_dark\" |\r\n \"cloud_download\" |\r\n \"cloud_flash\" |\r\n \"cloud_hail\" |\r\n \"cloud_moon\" |\r\n \"cloud_network\" |\r\n \"cloud_rain\" |\r\n \"cloud_refresh\" |\r\n \"cloud_snow\" |\r\n \"cloud_sun\" |\r\n \"cloud_updown\" |\r\n \"cloud_upload\" |\r\n \"clown\" |\r\n \"coathanger\" |\r\n \"cocktail\" |\r\n \"cocktail2\" |\r\n \"code\" |\r\n \"code_beanshell\" |\r\n \"code_c\" |\r\n \"code_cplusplus\" |\r\n \"code_csharp\" |\r\n \"code_java\" |\r\n \"code_javascript\" |\r\n \"code_line\" |\r\n \"code_php\" |\r\n \"code_ruby\" |\r\n \"code_vbasic\" |\r\n \"codes_of_law\" |\r\n \"coffee_bean\" |\r\n \"coffee_beans\" |\r\n \"coffee_machine\" |\r\n \"coffin\" |\r\n \"comb\" |\r\n \"compact_camera\" |\r\n \"compass\" |\r\n \"compasses\" |\r\n \"compress\" |\r\n \"compress2\" |\r\n \"console\" |\r\n \"console_network\" |\r\n \"construction_barrier\" |\r\n \"containership\" |\r\n \"contract\" |\r\n \"contrast\" |\r\n \"contrast_low\" |\r\n \"control_panel\" |\r\n \"control_panel2\" |\r\n \"control_tower\" |\r\n \"cook\" |\r\n \"cookies\" |\r\n \"cooling_tower\" |\r\n \"cooling_tower_smoke\" |\r\n \"copy\" |\r\n \"corkscrew\" |\r\n \"correction_fluid\" |\r\n \"courthouse\" |\r\n \"cow\" |\r\n \"cpu\" |\r\n \"cpu2\" |\r\n \"cpu_flash\" |\r\n \"crack\" |\r\n \"crash_test_dummy\" |\r\n \"credit_card\" |\r\n \"credit_card2\" |\r\n \"credit_cards\" |\r\n \"criminal\" |\r\n \"crossbow\" |\r\n \"crown\" |\r\n \"cruise_ship\" |\r\n \"crutch\" |\r\n \"crystal_ball\" |\r\n \"cube_molecule\" |\r\n \"cube_molecule2\" |\r\n \"cubes\" |\r\n \"cup\" |\r\n \"currency_dollar\" |\r\n \"currency_euro\" |\r\n \"currency_plain\" |\r\n \"currency_won\" |\r\n \"currency_yen\" |\r\n \"currency_yuan\" |\r\n \"cut\" |\r\n \"dagger\" |\r\n \"dart\" |\r\n \"data\" |\r\n \"data_cloud\" |\r\n \"data_copy\" |\r\n \"data_floppy_disk\" |\r\n \"data_network\" |\r\n \"data_scroll\" |\r\n \"data_shared\" |\r\n \"data_table\" |\r\n \"debug\" |\r\n \"deck_chair\" |\r\n \"delete\" |\r\n \"delivery_man\" |\r\n \"delivery_note\" |\r\n \"delivery_truck\" |\r\n \"denture\" |\r\n \"desk\" |\r\n \"desk_lamp\" |\r\n \"desktop\" |\r\n \"detergent\" |\r\n \"devil\" |\r\n \"diamond\" |\r\n \"diamond_ring\" |\r\n \"dice\" |\r\n \"dictation_microphone\" |\r\n \"dictionary\" |\r\n \"die\" |\r\n \"disability\" |\r\n \"disinfection\" |\r\n \"diving_mask\" |\r\n \"dna\" |\r\n \"doctor\" |\r\n \"document_attachment\" |\r\n \"document_center\" |\r\n \"document_center_horizontal\" |\r\n \"document_center_vertical\" |\r\n \"document_chart\" |\r\n \"document_cup\" |\r\n \"document_empty\" |\r\n \"document_empty_landscape\" |\r\n \"document_footer\" |\r\n \"document_gear\" |\r\n \"document_header\" |\r\n \"document_heart\" |\r\n \"document_height\" |\r\n \"document_information\" |\r\n \"document_music\" |\r\n \"document_notebook\" |\r\n \"document_orientation_landscape\" |\r\n \"document_orientation_portrait\" |\r\n \"document_page_number\" |\r\n \"document_pinned\" |\r\n \"document_pulse\" |\r\n \"document_selection\" |\r\n \"document_size\" |\r\n \"document_stop\" |\r\n \"document_tag\" |\r\n \"document_text\" |\r\n \"document_width\" |\r\n \"document_zip\" |\r\n \"document_zoom_in\" |\r\n \"document_zoom_out\" |\r\n \"documents_empty\" |\r\n \"documents_exchange\" |\r\n \"dog\" |\r\n \"dome_camera\" |\r\n \"door_closed\" |\r\n \"door_exit\" |\r\n \"door_open\" |\r\n \"dot_matrix\" |\r\n \"download\" |\r\n \"dram\" |\r\n \"drink\" |\r\n \"drop\" |\r\n \"drop_down_list\" |\r\n \"drum\" |\r\n \"dude1\" |\r\n \"dude2\" |\r\n \"dude3\" |\r\n \"dude4\" |\r\n \"dude5\" |\r\n \"dude6\" |\r\n \"dug_well\" |\r\n \"dumbbell\" |\r\n \"dump_truck\" |\r\n \"dynamite\" |\r\n \"ear\" |\r\n \"earth\" |\r\n \"earth2\" |\r\n \"earth_link\" |\r\n \"earth_location\" |\r\n \"earth_music\" |\r\n \"earth_network\" |\r\n \"easel\" |\r\n \"easel_empty\" |\r\n \"edit\" |\r\n \"eightball\" |\r\n \"electric_iron\" |\r\n \"element\" |\r\n \"element_branch2\" |\r\n \"element_copy\" |\r\n \"element_selection\" |\r\n \"elements\" |\r\n \"elements2\" |\r\n \"elements3\" |\r\n \"elements4\" |\r\n \"elements_branch\" |\r\n \"elements_cascade\" |\r\n \"elements_hierarchy\" |\r\n \"elements_selection\" |\r\n \"elements_tree\" |\r\n \"emergency_stop_button\" |\r\n \"emoticon_angry\" |\r\n \"emoticon_blink\" |\r\n \"emoticon_clown\" |\r\n \"emoticon_confused\" |\r\n \"emoticon_cool\" |\r\n \"emoticon_cry\" |\r\n \"emoticon_frown\" |\r\n \"emoticon_grin\" |\r\n \"emoticon_kiss\" |\r\n \"emoticon_smile\" |\r\n \"emoticon_straight_face\" |\r\n \"emoticon_surprised\" |\r\n \"emoticon_tongue\" |\r\n \"engineer\" |\r\n \"envelope2\" |\r\n \"environment\" |\r\n \"environment_network\" |\r\n \"equalizer\" |\r\n \"erase\" |\r\n \"error\" |\r\n \"escalator\" |\r\n \"escalator_down\" |\r\n \"escalator_up\" |\r\n \"excavator\" |\r\n \"explosion\" |\r\n \"eye\" |\r\n \"eye_blind\" |\r\n \"eye_scan\" |\r\n \"eyeglasses\" |\r\n \"face_scan\" |\r\n \"factory\" |\r\n \"fan\" |\r\n \"fancy_cake\" |\r\n \"fax_machine\" |\r\n \"feeding_bottle\" |\r\n \"fence\" |\r\n \"film\" |\r\n \"film_cartridge\" |\r\n \"filter_and_sort\" |\r\n \"find_again\" |\r\n \"find_replace\" |\r\n \"find_text\" |\r\n \"fingerprint\" |\r\n \"fingerprint_scan\" |\r\n \"fire\" |\r\n \"fire_extinguisher\" |\r\n \"fire_hydrant\" |\r\n \"fire_truck\" |\r\n \"firefighter\" |\r\n \"firewall\" |\r\n \"firewall2\" |\r\n \"first_aid\" |\r\n \"first_aid_box\" |\r\n \"fish_bowl\" |\r\n \"fit_to_height\" |\r\n \"fit_to_size\" |\r\n \"fit_to_width\" |\r\n \"flame\" |\r\n \"flash\" |\r\n \"flashlight\" |\r\n \"flatscreen_tv\" |\r\n \"floppy_disk\" |\r\n \"floppy_disk_window\" |\r\n \"floppy_disks\" |\r\n \"floppy_drive\" |\r\n \"flower\" |\r\n \"folder\" |\r\n \"folder2\" |\r\n \"folder3\" |\r\n \"folder3_document\" |\r\n \"folder3_mail\" |\r\n \"folder3_movie\" |\r\n \"folder3_music\" |\r\n \"folder_cubes\" |\r\n \"folder_document\" |\r\n \"folder_document2\" |\r\n \"folder_into\" |\r\n \"folder_movie\" |\r\n \"folder_music\" |\r\n \"folder_network\" |\r\n \"folder_open\" |\r\n \"folder_out\" |\r\n \"folder_shared\" |\r\n \"folder_window\" |\r\n \"folder_zip\" |\r\n \"folders\" |\r\n \"folders2\" |\r\n \"folding_rule\" |\r\n \"font\" |\r\n \"font_style_bold\" |\r\n \"font_style_italics\" |\r\n \"font_style_normal\" |\r\n \"font_style_strikethrough\" |\r\n \"font_style_subscript\" |\r\n \"font_style_superscript\" |\r\n \"font_style_underline\" |\r\n \"football\" |\r\n \"forklift\" |\r\n \"form\" |\r\n \"formula\" |\r\n \"fortress_tower\" |\r\n \"fountain_pen\" |\r\n \"fried_egg\" |\r\n \"fried_egg_bacon\" |\r\n \"front\" |\r\n \"fuel_dispenser\" |\r\n \"funnel\" |\r\n \"gallows\" |\r\n \"gambling_chip\" |\r\n \"gambling_chips\" |\r\n \"gambling_chips2\" |\r\n \"gamepad\" |\r\n \"garbage\" |\r\n \"garbage2\" |\r\n \"garbage_can\" |\r\n \"garbage_container\" |\r\n \"garbage_full\" |\r\n \"garbage_half_full\" |\r\n \"garbage_make_empty\" |\r\n \"garbage_overflow\" |\r\n \"gas_cylinder\" |\r\n \"gauge\" |\r\n \"gauntlet\" |\r\n \"gauze_bandage\" |\r\n \"gearwheel\" |\r\n \"gearwheels\" |\r\n \"geiger_counter\" |\r\n \"genius\" |\r\n \"ghost\" |\r\n \"gift\" |\r\n \"girl\" |\r\n \"glass_cracked\" |\r\n \"glass_fork\" |\r\n \"globe\" |\r\n \"goal\" |\r\n \"goal_ball\" |\r\n \"goblet\" |\r\n \"gold_bar\" |\r\n \"gold_bars\" |\r\n \"goldfish\" |\r\n \"golf_ball\" |\r\n \"golf_club_iron\" |\r\n \"golf_club_putter\" |\r\n \"golf_club_wood\" |\r\n \"golf_flag\" |\r\n \"gps\" |\r\n \"graduate\" |\r\n \"graduation_hat\" |\r\n \"graduation_hat2\" |\r\n \"grand_piano\" |\r\n \"graph\" |\r\n \"graph_claw\" |\r\n \"graph_connection\" |\r\n \"graph_connection_directed\" |\r\n \"graph_fork\" |\r\n \"graph_fork2\" |\r\n \"graph_from\" |\r\n \"graph_node\" |\r\n \"graph_self_loop\" |\r\n \"graph_square\" |\r\n \"graph_star\" |\r\n \"graph_to\" |\r\n \"graph_triangle\" |\r\n \"graphics_tablet\" |\r\n \"grenade\" |\r\n \"guard\" |\r\n \"guillotine\" |\r\n \"guitar\" |\r\n \"gun\" |\r\n \"hair_dryer\" |\r\n \"hamburger\" |\r\n \"hammer\" |\r\n \"hammer2\" |\r\n \"hand_card\" |\r\n \"hand_count_four\" |\r\n \"hand_count_one\" |\r\n \"hand_count_three\" |\r\n \"hand_count_zero\" |\r\n \"hand_drill\" |\r\n \"hand_fist2\" |\r\n \"hand_four\" |\r\n \"hand_gun\" |\r\n \"hand_money\" |\r\n \"hand_offer\" |\r\n \"hand_paper\" |\r\n \"hand_point_left\" |\r\n \"hand_point_left2\" |\r\n \"hand_point_right\" |\r\n \"hand_point_right2\" |\r\n \"hand_point_up\" |\r\n \"hand_point_up2\" |\r\n \"hand_pump\" |\r\n \"hand_spread\" |\r\n \"hand_stop2\" |\r\n \"hand_thumb_down\" |\r\n \"hand_thumb_up\" |\r\n \"hand_touch\" |\r\n \"hand_truck\" |\r\n \"hand_truck_bag\" |\r\n \"hand_truck_box\" |\r\n \"hand_truck_suitcase\" |\r\n \"handbag\" |\r\n \"handcuffs\" |\r\n \"handheld_device\" |\r\n \"handsaw\" |\r\n \"handshake\" |\r\n \"hard_drive\" |\r\n \"hard_drive_network\" |\r\n \"hardhat\" |\r\n \"hat\" |\r\n \"hat2\" |\r\n \"headphones\" |\r\n \"headset\" |\r\n \"headstone\" |\r\n \"heart\" |\r\n \"heart_broken\" |\r\n \"heartbeat\" |\r\n \"helicopter\" |\r\n \"helmet\" |\r\n \"help_earth\" |\r\n \"history\" |\r\n \"history2\" |\r\n \"hockey_puck\" |\r\n \"hockey_stick\" |\r\n \"hole_punch\" |\r\n \"holmes\" |\r\n \"home\" |\r\n \"home_fire\" |\r\n \"home_lock\" |\r\n \"home_water\" |\r\n \"horse\" |\r\n \"hospital\" |\r\n \"hot_air_balloon\" |\r\n \"hotel\" |\r\n \"hourglass\" |\r\n \"house_framework\" |\r\n \"houses\" |\r\n \"html_tag\" |\r\n \"html_tag2\" |\r\n \"i-beam\" |\r\n \"i-beams\" |\r\n \"ice_cream\" |\r\n \"ice_cream2\" |\r\n \"icecube\" |\r\n \"id_badge\" |\r\n \"id_card\" |\r\n \"id_cards\" |\r\n \"igloo\" |\r\n \"inbox\" |\r\n \"inbox_empty\" |\r\n \"inbox_full\" |\r\n \"inbox_into\" |\r\n \"inbox_out\" |\r\n \"indent_decrease\" |\r\n \"indent_increase\" |\r\n \"index\" |\r\n \"index2\" |\r\n \"industrial_machine\" |\r\n \"industrial_robot\" |\r\n \"information\" |\r\n \"infusion_drip\" |\r\n \"injection\" |\r\n \"inkpot\" |\r\n \"install\" |\r\n \"invoice\" |\r\n \"invoice_dollar\" |\r\n \"invoice_euro\" |\r\n \"jackhammer\" |\r\n \"jar\" |\r\n \"jar_coffee_bean\" |\r\n \"jar_cookies\" |\r\n \"jar_earth\" |\r\n \"jerrycan\" |\r\n \"joystick\" |\r\n \"judge\" |\r\n \"key\" |\r\n \"key2\" |\r\n \"key3\" |\r\n \"keyboard\" |\r\n \"keyboard_key_0\" |\r\n \"keyboard_key_1\" |\r\n \"keyboard_key_2\" |\r\n \"keyboard_key_3\" |\r\n \"keyboard_key_4\" |\r\n \"keyboard_key_5\" |\r\n \"keyboard_key_6\" |\r\n \"keyboard_key_7\" |\r\n \"keyboard_key_8\" |\r\n \"keyboard_key_9\" |\r\n \"keyboard_key_a\" |\r\n \"keyboard_key_b\" |\r\n \"keyboard_key_c\" |\r\n \"keyboard_key_clock\" |\r\n \"keyboard_key_d\" |\r\n \"keyboard_key_down\" |\r\n \"keyboard_key_e\" |\r\n \"keyboard_key_empty\" |\r\n \"keyboard_key_enter\" |\r\n \"keyboard_key_f\" |\r\n \"keyboard_key_g\" |\r\n \"keyboard_key_h\" |\r\n \"keyboard_key_i\" |\r\n \"keyboard_key_j\" |\r\n \"keyboard_key_k\" |\r\n \"keyboard_key_l\" |\r\n \"keyboard_key_left\" |\r\n \"keyboard_key_m\" |\r\n \"keyboard_key_minus\" |\r\n \"keyboard_key_n\" |\r\n \"keyboard_key_o\" |\r\n \"keyboard_key_p\" |\r\n \"keyboard_key_plus\" |\r\n \"keyboard_key_q\" |\r\n \"keyboard_key_r\" |\r\n \"keyboard_key_right\" |\r\n \"keyboard_key_s\" |\r\n \"keyboard_key_shift\" |\r\n \"keyboard_key_speaker\" |\r\n \"keyboard_key_t\" |\r\n \"keyboard_key_u\" |\r\n \"keyboard_key_up\" |\r\n \"keyboard_key_v\" |\r\n \"keyboard_key_w\" |\r\n \"keyboard_key_x\" |\r\n \"keyboard_key_y\" |\r\n \"keyboard_key_z\" |\r\n \"keyboard_wireless\" |\r\n \"keyhole\" |\r\n \"keypad\" |\r\n \"keys\" |\r\n \"kidney_dish\" |\r\n \"knife\" |\r\n \"knife_fork\" |\r\n \"knife_fork_spoon\" |\r\n \"knot\" |\r\n \"ladder\" |\r\n \"lantern\" |\r\n \"lantern_on\" |\r\n \"laptop\" |\r\n \"laser_pointer\" |\r\n \"laundry_machine\" |\r\n \"laurel_wreath\" |\r\n \"layout\" |\r\n \"layout_center\" |\r\n \"layout_east\" |\r\n \"layout_horizontal\" |\r\n \"layout_north\" |\r\n \"layout_northeast\" |\r\n \"layout_northwest\" |\r\n \"layout_south\" |\r\n \"layout_southeast\" |\r\n \"layout_southwest\" |\r\n \"layout_vertical\" |\r\n \"layout_west\" |\r\n \"leaf\" |\r\n \"lectern\" |\r\n \"lecture\" |\r\n \"led\" |\r\n \"lemon\" |\r\n \"lemonade_glass\" |\r\n \"lifebelt\" |\r\n \"lightbulb_off\" |\r\n \"lightbulb_on\" |\r\n \"lighthouse\" |\r\n \"line_break\" |\r\n \"line_spacing_paragraph\" |\r\n \"line_spacing_text\" |\r\n \"link\" |\r\n \"link_broken\" |\r\n \"lipstick\" |\r\n \"list_style_bullets\" |\r\n \"list_style_numbered\" |\r\n \"list_style_roman\" |\r\n \"location_pin\" |\r\n \"lock\" |\r\n \"lock2\" |\r\n \"lock3\" |\r\n \"lock_open\" |\r\n \"log\" |\r\n \"log_in\" |\r\n \"log_out\" |\r\n \"logic_and\" |\r\n \"logic_not\" |\r\n \"logic_or\" |\r\n \"logic_xor\" |\r\n \"logs\" |\r\n \"lollipop\" |\r\n \"loudspeaker\" |\r\n \"loudspeaker2\" |\r\n \"loudspeaker3\" |\r\n \"loudspeaker4\" |\r\n \"loudspeaker_box\" |\r\n \"loudspeaker_network\" |\r\n \"loudspeaker_off\" |\r\n \"magazine_folder\" |\r\n \"magazine_folder_empty\" |\r\n \"magic_wand\" |\r\n \"magician\" |\r\n \"magnet\" |\r\n \"magnifying_glass\" |\r\n \"mail\" |\r\n \"mail2\" |\r\n \"mail_attachment\" |\r\n \"mail_bug\" |\r\n \"mail_cloud\" |\r\n \"mail_earth\" |\r\n \"mail_exchange\" |\r\n \"mail_filter\" |\r\n \"mail_forward\" |\r\n \"mail_into\" |\r\n \"mail_open\" |\r\n \"mail_open2\" |\r\n \"mail_out\" |\r\n \"mail_reply\" |\r\n \"mail_reply_all\" |\r\n \"mail_sealed\" |\r\n \"mail_virus\" |\r\n \"mail_write\" |\r\n \"mailbox_empty\" |\r\n \"mailbox_full\" |\r\n \"mails\" |\r\n \"maneki_neko\" |\r\n \"map\" |\r\n \"map_location\" |\r\n \"map_location2\" |\r\n \"map_roads\" |\r\n \"map_route\" |\r\n \"marionette\" |\r\n \"marker\" |\r\n \"market_stand\" |\r\n \"mask\" |\r\n \"masks\" |\r\n \"matryoshka\" |\r\n \"maximize\" |\r\n \"mda\" |\r\n \"measuring_cup\" |\r\n \"medal\" |\r\n \"medal2\" |\r\n \"media_beginning\" |\r\n \"media_eject\" |\r\n \"media_end\" |\r\n \"media_fast_forward\" |\r\n \"media_pause\" |\r\n \"media_play\" |\r\n \"media_record\" |\r\n \"media_rewind\" |\r\n \"media_step_back\" |\r\n \"media_step_forward\" |\r\n \"media_stop\" |\r\n \"medical_bag\" |\r\n \"megaphone\" |\r\n \"memory\" |\r\n \"memory_stick\" |\r\n \"menora\" |\r\n \"message\" |\r\n \"messages\" |\r\n \"microphone\" |\r\n \"microphone2\" |\r\n \"microscope\" |\r\n \"microwave_oven\" |\r\n \"milk\" |\r\n \"minibus\" |\r\n \"minimize\" |\r\n \"minus\" |\r\n \"mirror_horizontally\" |\r\n \"mirror_vertically\" |\r\n \"missile\" |\r\n \"missile2\" |\r\n \"mobile_crane\" |\r\n \"mobile_phone\" |\r\n \"mobilephone2\" |\r\n \"mobilephone3\" |\r\n \"modem\" |\r\n \"modem_earth\" |\r\n \"molecule_h2o\" |\r\n \"money\" |\r\n \"money2\" |\r\n \"money_bill_cut\" |\r\n \"money_bill_fire\" |\r\n \"money_bills\" |\r\n \"money_coin\" |\r\n \"money_coins\" |\r\n \"money_coins2\" |\r\n \"money_dollar\" |\r\n \"money_euro\" |\r\n \"money_interest\" |\r\n \"money_refund\" |\r\n \"moneybag\" |\r\n \"moneybag_coins\" |\r\n \"moneybag_dollar\" |\r\n \"moneybag_euro\" |\r\n \"monitor\" |\r\n \"monitor_brush\" |\r\n \"monitor_height\" |\r\n \"monitor_size\" |\r\n \"monitor_sleep\" |\r\n \"monitor_test_card\" |\r\n \"monitor_touch\" |\r\n \"monitor_width\" |\r\n \"moon\" |\r\n \"moon_half\" |\r\n \"mosque\" |\r\n \"mosquito\" |\r\n \"motor_scooter\" |\r\n \"motorbike\" |\r\n \"motorcycle_helmet\" |\r\n \"motorcyclist\" |\r\n \"mouse\" |\r\n \"mouse2\" |\r\n \"mouse2_left_button\" |\r\n \"mouse2_right_button\" |\r\n \"mouse_left_button\" |\r\n \"mouse_pointer\" |\r\n \"mouse_right_button\" |\r\n \"mousetrap\" |\r\n \"movie\" |\r\n \"movie_camera\" |\r\n \"movies\" |\r\n \"moving_truck\" |\r\n \"mug\" |\r\n \"mug_tea\" |\r\n \"multimeter\" |\r\n \"multimeter_analog\" |\r\n \"mushroom\" |\r\n \"music\" |\r\n \"nail\" |\r\n \"nav_down\" |\r\n \"nav_down_left\" |\r\n \"nav_down_right\" |\r\n \"nav_left\" |\r\n \"nav_plain\" |\r\n \"nav_redo\" |\r\n \"nav_refresh\" |\r\n \"nav_right\" |\r\n \"nav_undo\" |\r\n \"nav_up\" |\r\n \"nav_up_left\" |\r\n \"nav_up_right\" |\r\n \"navigate_beginning\" |\r\n \"navigate_check\" |\r\n \"navigate_close\" |\r\n \"navigate_cross\" |\r\n \"navigate_down\" |\r\n \"navigate_down2\" |\r\n \"navigate_end\" |\r\n \"navigate_left\" |\r\n \"navigate_left2\" |\r\n \"navigate_minus\" |\r\n \"navigate_open\" |\r\n \"navigate_plus\" |\r\n \"navigate_right\" |\r\n \"navigate_right2\" |\r\n \"navigate_up\" |\r\n \"navigate_up2\" |\r\n \"network_node\" |\r\n \"network_node2\" |\r\n \"newspaper\" |\r\n \"newtons_cradle\" |\r\n \"nonprofit\" |\r\n \"nose\" |\r\n \"note\" |\r\n \"note_block\" |\r\n \"note_pinned\" |\r\n \"note_text\" |\r\n \"notebook\" |\r\n \"notebook2\" |\r\n \"notebook3\" |\r\n \"numeric_keypad\" |\r\n \"object_alignment_bottom\" |\r\n \"object_alignment_center\" |\r\n \"object_alignment_horizontal\" |\r\n \"object_alignment_left\" |\r\n \"object_alignment_right\" |\r\n \"object_alignment_top\" |\r\n \"object_alignment_vertical\" |\r\n \"object_ball\" |\r\n \"object_cone\" |\r\n \"object_cube\" |\r\n \"object_cylinder\" |\r\n \"objects\" |\r\n \"objects2\" |\r\n \"objects3\" |\r\n \"objects4\" |\r\n \"objects_exchange\" |\r\n \"objects_transform\" |\r\n \"objects_transform2\" |\r\n \"odometer\" |\r\n \"office_building\" |\r\n \"office_building2\" |\r\n \"office_chair\" |\r\n \"oil_platform\" |\r\n \"oil_pump\" |\r\n \"ok\" |\r\n \"orange\" |\r\n \"pacemaker\" |\r\n \"pacifier\" |\r\n \"package\" |\r\n \"packaging_paper\" |\r\n \"packaging_tape\" |\r\n \"pager\" |\r\n \"pagoda\" |\r\n \"paint_brush\" |\r\n \"paint_bucket\" |\r\n \"paint_roller\" |\r\n \"painters_palette\" |\r\n \"painters_palette2\" |\r\n \"painters_palette_brush\" |\r\n \"painters_palette_empty\" |\r\n \"painting_landscape\" |\r\n \"painting_portrait\" |\r\n \"palm_tree\" |\r\n \"pan_flute\" |\r\n \"paper_fan\" |\r\n \"paper_jet\" |\r\n \"paper_jet2\" |\r\n \"paper_lantern\" |\r\n \"paper_roll\" |\r\n \"paperclip\" |\r\n \"paperclip2\" |\r\n \"parasol\" |\r\n \"parking_meter\" |\r\n \"passport\" |\r\n \"password_field\" |\r\n \"pastor\" |\r\n \"pawn\" |\r\n \"pci_card\" |\r\n \"pci_card_network\" |\r\n \"pda\" |\r\n \"pda_write\" |\r\n \"pencil\" |\r\n \"pens\" |\r\n \"pentagram\" |\r\n \"perfume\" |\r\n \"person\" |\r\n \"pet_bottle\" |\r\n \"petri_dish\" |\r\n \"phone_conference\" |\r\n \"phone_hang_up\" |\r\n \"phone_pick_up\" |\r\n \"phone_receiver\" |\r\n \"phone_receiver2\" |\r\n \"phone_speaker\" |\r\n \"phone_speech_bubble\" |\r\n \"photo_landscape\" |\r\n \"photo_portrait\" |\r\n \"photographic_filter\" |\r\n \"photographic_filters\" |\r\n \"photos\" |\r\n \"piece\" |\r\n \"piece2\" |\r\n \"pieces\" |\r\n \"pig\" |\r\n \"piggy_bank\" |\r\n \"pill\" |\r\n \"pill2\" |\r\n \"pilot\" |\r\n \"pin\" |\r\n \"pin2\" |\r\n \"pineapple\" |\r\n \"pipette\" |\r\n \"pipette_test\" |\r\n \"pirates_ship\" |\r\n \"plane_tool\" |\r\n \"planet\" |\r\n \"plank\" |\r\n \"planks\" |\r\n \"plant\" |\r\n \"platform_truck_box\" |\r\n \"platform_truck_empty\" |\r\n \"platform_truck_suitcase\" |\r\n \"playing_card_clubs\" |\r\n \"playing_card_diamonds\" |\r\n \"playing_card_hearts\" |\r\n \"playing_card_spades\" |\r\n \"playing_cards\" |\r\n \"playing_cards_deck\" |\r\n \"pliers\" |\r\n \"plug\" |\r\n \"plug2\" |\r\n \"plug_cinch\" |\r\n \"plug_lan\" |\r\n \"plug_usb\" |\r\n \"plus\" |\r\n \"podium\" |\r\n \"podium2\" |\r\n \"poison\" |\r\n \"police_car\" |\r\n \"policeman\" |\r\n \"policeman_bobby\" |\r\n \"pontifex\" |\r\n \"pool_balls\" |\r\n \"portable_barcode_scanner\" |\r\n \"portfolio_folder\" |\r\n \"post_horn\" |\r\n \"postage_stamp\" |\r\n \"power\" |\r\n \"power_drill\" |\r\n \"precision_knife\" |\r\n \"precision_square\" |\r\n \"presentation2\" |\r\n \"presentation_chart\" |\r\n \"presentation_empty\" |\r\n \"press\" |\r\n \"pressure_sprayer\" |\r\n \"pretzel\" |\r\n \"price_sticker\" |\r\n \"print_calculator\" |\r\n \"print_layout_continous\" |\r\n \"print_layout_single\" |\r\n \"printer\" |\r\n \"printer3\" |\r\n \"printer_network\" |\r\n \"progress_bar\" |\r\n \"projector\" |\r\n \"pumpkin\" |\r\n \"pumpkin_halloween\" |\r\n \"punching_bag\" |\r\n \"purchase_order\" |\r\n \"purse\" |\r\n \"pylon\" |\r\n \"quad\" |\r\n \"question\" |\r\n \"question_and_answer\" |\r\n \"quotation_mark\" |\r\n \"quotation_mark2\" |\r\n \"quotation_marks\" |\r\n \"rack_server\" |\r\n \"rack_server_network\" |\r\n \"rack_servers\" |\r\n \"radar\" |\r\n \"radiation\" |\r\n \"radio\" |\r\n \"radio_button_group\" |\r\n \"radio_button_selected\" |\r\n \"radio_button_unselected\" |\r\n \"rain_drops\" |\r\n \"razor\" |\r\n \"reactor\" |\r\n \"receipt\" |\r\n \"receipt_book\" |\r\n \"receipt_printer\" |\r\n \"record\" |\r\n \"record_player\" |\r\n \"recycle\" |\r\n \"redo\" |\r\n \"refresh\" |\r\n \"registry\" |\r\n \"remote_control\" |\r\n \"remotecontrol2\" |\r\n \"repeat\" |\r\n \"resize\" |\r\n \"reticle\" |\r\n \"rfid_chip\" |\r\n \"rfq\" |\r\n \"road_roller\" |\r\n \"robot\" |\r\n \"rocket\" |\r\n \"rocking_horse\" |\r\n \"rotate_left\" |\r\n \"rotate_right\" |\r\n \"roulette_wheel\" |\r\n \"route_sign\" |\r\n \"router\" |\r\n \"rss\" |\r\n \"rubber_stamp\" |\r\n \"safe\" |\r\n \"safe_into\" |\r\n \"safe_open_empty\" |\r\n \"safe_open_full\" |\r\n \"safe_out\" |\r\n \"safety_glasses\" |\r\n \"safety_pin\" |\r\n \"safety_pin_open\" |\r\n \"sailboat\" |\r\n \"sales_quotation\" |\r\n \"satellite\" |\r\n \"satellite_dish\" |\r\n \"sausage\" |\r\n \"save_as\" |\r\n \"scales\" |\r\n \"scalpel\" |\r\n \"scanner\" |\r\n \"school\" |\r\n \"schoolboy\" |\r\n \"schoolbus\" |\r\n \"schoolbus2\" |\r\n \"scientist\" |\r\n \"scooter\" |\r\n \"score_board\" |\r\n \"screwdriver\" |\r\n \"scroll\" |\r\n \"scroll2\" |\r\n \"scroll_bar_horizontal\" |\r\n \"scroll_bar_vertical\" |\r\n \"sd_card\" |\r\n \"security_agent\" |\r\n \"security_badge\" |\r\n \"selection\" |\r\n \"selection_delete\" |\r\n \"selection_find\" |\r\n \"selection_recycle\" |\r\n \"selection_refresh\" |\r\n \"selection_view\" |\r\n \"senior_citizen\" |\r\n \"senior_citizen2\" |\r\n \"server\" |\r\n \"server2\" |\r\n \"server_client\" |\r\n \"server_client_exchange\" |\r\n \"server_cloud\" |\r\n \"server_document\" |\r\n \"server_earth\" |\r\n \"server_from_client\" |\r\n \"server_id_card\" |\r\n \"server_into\" |\r\n \"server_mail\" |\r\n \"server_mail_download\" |\r\n \"server_mail_upload\" |\r\n \"server_network\" |\r\n \"server_out\" |\r\n \"server_to_client\" |\r\n \"service_bell\" |\r\n \"set_square\" |\r\n \"sewing_machine\" |\r\n \"shape_circle\" |\r\n \"shape_ellipse\" |\r\n \"shape_hexagon\" |\r\n \"shape_octagon\" |\r\n \"shape_pentagon\" |\r\n \"shape_rectangle\" |\r\n \"shape_rhomb\" |\r\n \"shape_square\" |\r\n \"shape_triangle\" |\r\n \"shapes\" |\r\n \"share\" |\r\n \"shelf_empty\" |\r\n \"shelf_full\" |\r\n \"shield\" |\r\n \"ship1\" |\r\n \"ship2\" |\r\n \"ships_wheel\" |\r\n \"shopping_bag\" |\r\n \"shopping_bag_full\" |\r\n \"shopping_basket\" |\r\n \"shopping_basket_full\" |\r\n \"shopping_cart\" |\r\n \"shopping_cart2\" |\r\n \"shopping_cart_full\" |\r\n \"shower_gel\" |\r\n \"shredder\" |\r\n \"shutter\" |\r\n \"shuttlecock\" |\r\n \"sickle\" |\r\n \"sign_forbidden\" |\r\n \"sign_stop\" |\r\n \"sign_warning\" |\r\n \"sign_warning_biohazard\" |\r\n \"sign_warning_flammable\" |\r\n \"sign_warning_harmful\" |\r\n \"sign_warning_radiation\" |\r\n \"sign_warning_toxic\" |\r\n \"sign_warning_voltage\" |\r\n \"sign_yield\" |\r\n \"signal_flag\" |\r\n \"signal_flag_checkered\" |\r\n \"signal_strength_0\" |\r\n \"signal_strength_1\" |\r\n \"signal_strength_2\" |\r\n \"signal_strength_3\" |\r\n \"signal_strength_4\" |\r\n \"signal_strength_5\" |\r\n \"signaling_disc\" |\r\n \"signboard_closed\" |\r\n \"signboard_empty\" |\r\n \"signboard_for_rent\" |\r\n \"signboard_for_sale\" |\r\n \"signboard_open\" |\r\n \"signboard_sold\" |\r\n \"signpost\" |\r\n \"signpost2\" |\r\n \"signpost3\" |\r\n \"sim_card\" |\r\n \"singer\" |\r\n \"sixpack_beer\" |\r\n \"sizes\" |\r\n \"skateboard\" |\r\n \"skin_cow\" |\r\n \"skin_tiger\" |\r\n \"skull\" |\r\n \"skull2\" |\r\n \"sledge\" |\r\n \"slider\" |\r\n \"slingshot\" |\r\n \"small_truck\" |\r\n \"smartcard\" |\r\n \"smartphone\" |\r\n \"smartphone_cloud\" |\r\n \"sms\" |\r\n \"snowflake\" |\r\n \"snowman\" |\r\n \"soap_dispenser\" |\r\n \"soccer_ball\" |\r\n \"solar_panel\" |\r\n \"sort_19_ascending\" |\r\n \"sort_19_descending\" |\r\n \"sort_ascending\" |\r\n \"sort_ascending2\" |\r\n \"sort_az_ascending\" |\r\n \"sort_az_ascending2\" |\r\n \"sort_az_descending\" |\r\n \"sort_az_descending2\" |\r\n \"sort_descending\" |\r\n \"sort_descending2\" |\r\n \"sort_down\" |\r\n \"sort_down_minus\" |\r\n \"sort_down_plus\" |\r\n \"sort_up\" |\r\n \"sort_up_down\" |\r\n \"sort_up_down2\" |\r\n \"sort_up_down_question\" |\r\n \"sort_up_minus\" |\r\n \"sort_up_plus\" |\r\n \"spade\" |\r\n \"spam\" |\r\n \"speech_balloon\" |\r\n \"speech_balloon_answer\" |\r\n \"speech_balloon_question\" |\r\n \"spellcheck\" |\r\n \"spellcheck2\" |\r\n \"spider\" |\r\n \"spirit_level\" |\r\n \"sponge\" |\r\n \"spray_can\" |\r\n \"spreadsheed\" |\r\n \"spreadsheed_cell\" |\r\n \"spreadsheed_chart\" |\r\n \"spreadsheed_column\" |\r\n \"spreadsheed_data\" |\r\n \"spreadsheed_row\" |\r\n \"spreadsheed_sort_ascending\" |\r\n \"spreadsheed_sort_descending\" |\r\n \"spreadsheed_sum\" |\r\n \"spy\" |\r\n \"ssd_drive\" |\r\n \"stairs_down\" |\r\n \"stairs_up\" |\r\n \"standby\" |\r\n \"stapler\" |\r\n \"star\" |\r\n \"star2\" |\r\n \"star_and_crescent\" |\r\n \"star_of_david\" |\r\n \"steering_wheel\" |\r\n \"step\" |\r\n \"stethoscope\" |\r\n \"sticky_note\" |\r\n \"sticky_note_text\" |\r\n \"stock_ticker\" |\r\n \"stockbroker\" |\r\n \"stockbroker2\" |\r\n \"stopwatch\" |\r\n \"stopwatch2\" |\r\n \"store\" |\r\n \"stroller\" |\r\n \"submarine\" |\r\n \"suitcase\" |\r\n \"suitcase2\" |\r\n \"sum\" |\r\n \"sun\" |\r\n \"sun_dimmed\" |\r\n \"sun_half\" |\r\n \"sunglasses\" |\r\n \"surgeon\" |\r\n \"surveillance_camera\" |\r\n \"surveillance_camera2\" |\r\n \"switch2_off\" |\r\n \"switch2_on\" |\r\n \"switch3_off\" |\r\n \"switch3_on\" |\r\n \"switch_off\" |\r\n \"switch_on\" |\r\n \"sword\" |\r\n \"symbol_at\" |\r\n \"symbol_copyright\" |\r\n \"symbol_dollar\" |\r\n \"symbol_dollar_euro\" |\r\n \"symbol_euro\" |\r\n \"symbol_female\" |\r\n \"symbol_hash\" |\r\n \"symbol_male\" |\r\n \"symbol_paragraph\" |\r\n \"symbol_percent\" |\r\n \"symbol_pound\" |\r\n \"symbol_q\" |\r\n \"symbol_questionmark\" |\r\n \"symbol_yen\" |\r\n \"symbol_yuan\" |\r\n \"synagogue\" |\r\n \"system\" |\r\n \"tab_pane\" |\r\n \"table\" |\r\n \"table_selection_all\" |\r\n \"table_selection_block\" |\r\n \"table_selection_cell\" |\r\n \"table_selection_column\" |\r\n \"table_selection_range\" |\r\n \"table_selection_row\" |\r\n \"table_tennis_racket\" |\r\n \"tables\" |\r\n \"tablet_computer\" |\r\n \"tablet_computer_touch\" |\r\n \"tag\" |\r\n \"tags\" |\r\n \"tank\" |\r\n \"tank_truck\" |\r\n \"tape_measure\" |\r\n \"tape_measure2\" |\r\n \"target\" |\r\n \"taxi\" |\r\n \"tea_bag\" |\r\n \"teacher\" |\r\n \"teddy_bear\" |\r\n \"telephone\" |\r\n \"telephone2\" |\r\n \"telephone_box\" |\r\n \"telescope\" |\r\n \"temple\" |\r\n \"tennis_ball\" |\r\n \"tennis_racket\" |\r\n \"tent\" |\r\n \"terrorist\" |\r\n \"test_card\" |\r\n \"text\" |\r\n \"text_align_center\" |\r\n \"text_align_justified\" |\r\n \"text_align_left\" |\r\n \"text_align_right\" |\r\n \"text_binary\" |\r\n \"text_braille\" |\r\n \"text_field\" |\r\n \"text_speaker\" |\r\n \"text_tree\" |\r\n \"thermometer\" |\r\n \"thermometer2\" |\r\n \"thought\" |\r\n \"thread\" |\r\n \"ticket\" |\r\n \"timer\" |\r\n \"toaster\" |\r\n \"tobacco_pipe\" |\r\n \"toilet\" |\r\n \"toilet_paper\" |\r\n \"tool_tip\" |\r\n \"toolbox\" |\r\n \"tools\" |\r\n \"tooth\" |\r\n \"tooth_carious\" |\r\n \"torii\" |\r\n \"torpedo\" |\r\n \"touch\" |\r\n \"tower_crane\" |\r\n \"tractor\" |\r\n \"trafficlight_green\" |\r\n \"trafficlight_off\" |\r\n \"trafficlight_on\" |\r\n \"trafficlight_red\" |\r\n \"trafficlight_red_yellow\" |\r\n \"trafficlight_yellow\" |\r\n \"tram\" |\r\n \"tree\" |\r\n \"trojan_horse\" |\r\n \"trophy\" |\r\n \"truck\" |\r\n \"truck2\" |\r\n \"truck_container\" |\r\n \"truck_trailer\" |\r\n \"tv\" |\r\n \"tweezers\" |\r\n \"typewriter\" |\r\n \"ufo\" |\r\n \"umbrella_closed\" |\r\n \"umbrella_open\" |\r\n \"undo\" |\r\n \"uninstall\" |\r\n \"university\" |\r\n \"upload\" |\r\n \"user\" |\r\n \"user_earth\" |\r\n \"user_glasses\" |\r\n \"user_headphones\" |\r\n \"user_headset\" |\r\n \"user_message\" |\r\n \"user_mobilephone\" |\r\n \"user_monitor\" |\r\n \"user_smartphone\" |\r\n \"user_telephone\" |\r\n \"users\" |\r\n \"users2\" |\r\n \"users3\" |\r\n \"users4\" |\r\n \"users5\" |\r\n \"users_crowd\" |\r\n \"users_family\" |\r\n \"users_meeting\" |\r\n \"users_relation\" |\r\n \"users_relation2\" |\r\n \"utility_knife\" |\r\n \"vacuum_cleaner\" |\r\n \"van\" |\r\n \"vector_circle\" |\r\n \"vector_curve_cubic\" |\r\n \"vector_curve_quadratic\" |\r\n \"vector_ellipse\" |\r\n \"vector_line\" |\r\n \"vector_square\" |\r\n \"vector_triangle\" |\r\n \"vending_machine\" |\r\n \"video_camera\" |\r\n \"video_chat\" |\r\n \"video_chat2\" |\r\n \"videotape\" |\r\n \"view_1_1\" |\r\n \"violin\" |\r\n \"virus\" |\r\n \"voice_recorder\" |\r\n \"voodoo_doll\" |\r\n \"walkie_talkie\" |\r\n \"wall_barbed_wire\" |\r\n \"wallet\" |\r\n \"wallet_empty\" |\r\n \"warehouse\" |\r\n \"washing_powder\" |\r\n \"water\" |\r\n \"water_fish\" |\r\n \"water_tap\" |\r\n \"watering_can\" |\r\n \"watering_can_half\" |\r\n \"wax_seal\" |\r\n \"wax_seal_broken\" |\r\n \"web\" |\r\n \"webcam\" |\r\n \"wedding_rings\" |\r\n \"weight\" |\r\n \"weight2\" |\r\n \"wheat\" |\r\n \"wheel\" |\r\n \"wheel_loader\" |\r\n \"wheelbarrow\" |\r\n \"wheelbarrow_full\" |\r\n \"wheelchair\" |\r\n \"whistle\" |\r\n \"whistle_noise\" |\r\n \"wind_engine\" |\r\n \"wind_engine_offshore\" |\r\n \"wind_engines\" |\r\n \"windmill\" |\r\n \"window\" |\r\n \"window_cd\" |\r\n \"window_close\" |\r\n \"window_dialog\" |\r\n \"window_earth\" |\r\n \"window_environment\" |\r\n \"window_equalizer\" |\r\n \"window_explorer\" |\r\n \"window_font\" |\r\n \"window_gear\" |\r\n \"window_height\" |\r\n \"window_information\" |\r\n \"window_key\" |\r\n \"window_logon\" |\r\n \"window_network\" |\r\n \"window_oscillograph\" |\r\n \"window_sidebar\" |\r\n \"window_size\" |\r\n \"window_split_hor\" |\r\n \"window_split_ver\" |\r\n \"window_star\" |\r\n \"window_test_card\" |\r\n \"window_time\" |\r\n \"window_touch\" |\r\n \"window_warning\" |\r\n \"window_width\" |\r\n \"windows\" |\r\n \"windows_close\" |\r\n \"windsock\" |\r\n \"windup_key\" |\r\n \"wine\" |\r\n \"wine_bottle\" |\r\n \"wine_glass\" |\r\n \"wlan_antenna\" |\r\n \"wlan_router\" |\r\n \"woman\" |\r\n \"woman2\" |\r\n \"woman3\" |\r\n \"wooden_pallet\" |\r\n \"wooden_pallet_box\" |\r\n \"worker\" |\r\n \"worker2\" |\r\n \"workplace\" |\r\n \"workstation\" |\r\n \"workstation_network\" |\r\n \"worm\" |\r\n \"wrench\" |\r\n \"wristwatch\" |\r\n \"x-ray\" |\r\n \"yinyang\" |\r\n \"zoom_in\" |\r\n \"zoom_out\";\r\n\r\nexport interface IconProps {\r\n name: GeoICONS;\r\n selected?: boolean | undefined;\r\n className?: string;\r\n onClick?: MouseEventHandler;\r\n title?: string;\r\n}\r\n\r\nexport class Icon extends React.Component {\r\n\r\n constructor(props: IconProps) {\r\n super(props);\r\n }\r\n\r\n render(): React.ReactElement | null {\r\n const {className, name, selected, title} = this.props;\r\n let iconFile = __CONFIG_APPBASE__ + \"images/icons/\";\r\n if (selected){\r\n iconFile += \"selected/\";\r\n } else {\r\n iconFile += \"plain/\";\r\n }\r\n iconFile += name + \".svg\";\r\n const titleString = (typeof title === \"string\")? title: \" \";\r\n return(\r\n \r\n );\r\n }\r\n}\r\n","import * as React from \"react\";\r\nimport {SyntheticEvent} from \"react\";\r\n\r\nimport \"./layer-list-item.scss\";\r\n\r\nimport {LayerListList} from \"../layer-list-list\";\r\nimport {LayerListConfiguration} from \"../../../../config/layer-list-configuration\";\r\n\r\nimport {Button, Checkbox, CheckboxProps, Radio} from \"semantic-ui-react\";\r\nimport {Icon} from \"../../../icon/icon\";\r\nimport {MetadataConfiguration} from \"../../../../config/metadata-configuration\";\r\nimport {SidebarControlsConfiguration} from \"../../../../../config/sidebar-configuration\";\r\nimport {Legend} from \"../../../legend/legend\";\r\nimport {Legend as CustomLegend} from \"../../../../../components/app/sidebar/legend/legend\";\r\nimport {PathUtils} from \"../../../../../utils/path-utils\";\r\nimport WatchHandle = __esri.WatchHandle;\r\nimport _ from \"lodash\";\r\nimport ListItem from \"@arcgis/core/widgets/LayerList/ListItem\";\r\nimport Collection from \"@arcgis/core/core/Collection\";\r\nimport {autorun} from \"mobx\";\r\nimport {IAppStore, withStore} from \"../../../../stores/abstract-app-store\";\r\n\r\n\r\nexport interface LayerListItemProps {\r\n config: LayerListConfiguration;\r\n subitems?: Collection;\r\n data: __esri.ListItem;\r\n metadata: MetadataConfiguration;\r\n isRoot: boolean;\r\n level: number;\r\n onClick: (event: SyntheticEvent, data: CheckboxProps, item: __esri.ListItem) => any;\r\n controlsConfig: SidebarControlsConfiguration;\r\n small?: boolean;\r\n store?: IAppStore;\r\n}\r\n\r\nclass LayerListItemBase extends React.Component {\r\n autorunDisposers: any[] = [];\r\n watchHandles: WatchHandle[] = [];\r\n metauid: string;\r\n constructor(props: LayerListItemProps) {\r\n super(props);\r\n\r\n this.state = {\r\n visible: props.data.layer.visible,\r\n visibleAtCurrentScale: props.data.visibleAtCurrentScale,\r\n open: props.data.open,\r\n metauid: null,\r\n hidden: props.data.hidden\r\n };\r\n this.handleLayerToggle = this.handleLayerToggle.bind(this);\r\n this.handleCheckboxChange = this.handleCheckboxChange.bind(this);\r\n }\r\n\r\n /**\r\n * Toggles visibility of sub layers\r\n */\r\n handleLayerToggle(): void {\r\n const {data} = this.props;\r\n this.setState((state: any) => {\r\n data.open = !state.open;\r\n return {\r\n open: !state.open\r\n };\r\n });\r\n\r\n }\r\n\r\n /**\r\n * Handle checkbox change\r\n *\r\n * @param event\r\n * @param eventData\r\n * @param item\r\n */\r\n handleCheckboxChange(event: SyntheticEvent, eventData: CheckboxProps, item: __esri.ListItem): void {\r\n event.preventDefault();\r\n // item is part of the top level state\r\n // --> call callback function to register changes on level of layer list\r\n if (this.props.onClick) {\r\n this.props.onClick(event, eventData, item);\r\n }\r\n\r\n const visible = eventData[\"checked\"];\r\n // set internal visibility state\r\n this.setState({\r\n visible\r\n });\r\n }\r\n\r\n handleItemChange(data: __esri.ListItem): void {\r\n const {metadata} = this.props;\r\n if (!data || !data.layer) {\r\n return;\r\n }\r\n const metauid = (data.layer as any)?.metauid;\r\n if (typeof metauid === \"string\") {\r\n this.setState({metauid});\r\n } else {\r\n const url = PathUtils.getLayerPath(data.layer);\r\n // metadate Configuration überprüfen\r\n if (typeof url === \"string\") {\r\n const pathUid: string | null = PathUtils.getMetaId(url);\r\n if (pathUid) {\r\n let uid: string | null = null;\r\n const metadateConfig = metadata.metauid[pathUid];\r\n if (typeof metadateConfig === \"string\") {\r\n uid = metadateConfig;\r\n } else if (Array.isArray(metadateConfig) || typeof metadateConfig === \"object\") {\r\n let layerId: number | undefined | null = (data.layer as any).layerId;\r\n if (!layerId) {\r\n layerId = PathUtils.getLayerId(url);\r\n }\r\n if (layerId && typeof metadateConfig[layerId] === \"string\") {\r\n uid = metadateConfig[layerId];\r\n }\r\n }\r\n if (uid === \"\") {\r\n uid = null;\r\n }\r\n this.setState({metauid: uid});\r\n }\r\n } else {\r\n if (typeof metadata.metauid[data.title] !== \"undefined\") {\r\n this.setState({metauid: metadata.metauid[data.title]});\r\n }\r\n }\r\n }\r\n }\r\n checkVisibility(): void {\r\n const { data, store, subitems } = this.props;\r\n // visibleAtCurrentScale wird nicht mehr korrekt aktualisiert, deswegen funktioniert folgendes nicht mehr:\r\n // let newValue = data.visibleAtCurrentScale;\r\n if(!store?.mapStore){\r\n return;\r\n }\r\n const layer = data.layer as __esri.Sublayer;\r\n let newValue = (!layer.hasOwnProperty(\"maxScale\") || (\r\n (layer.minScale === 0 || layer.minScale >= store.mapStore.view?.scale)\r\n && layer.maxScale <= store.mapStore.view?.scale));\r\n\r\n if(newValue && subitems?.length && store?.mapStore.view?.scale){\r\n // visibleAtCurrentScale wird nicht mehr korrekt aktualisiert, deswegen funktioniert folgendes nicht mehr:\r\n // newValue = subitems.findIndex((i) => i.visibleAtCurrentScale)>-1;\r\n newValue = subitems.findIndex((i) => {\r\n const l = i.layer as __esri.Sublayer;\r\n return (!l.hasOwnProperty(\"maxScale\") || (\r\n (l.minScale === 0 || l.minScale >= store.mapStore.view?.scale)\r\n && l.maxScale <= store.mapStore.view?.scale));\r\n })>-1;\r\n }\r\n if(this.state.visibleAtCurrentScale !== newValue) {\r\n this.setState(() => ({\r\n visibleAtCurrentScale: newValue\r\n }));\r\n }\r\n }\r\n componentDidMount(): void {\r\n const {data, store} = this.props;\r\n this.handleItemChange(data);\r\n this.checkVisibility();\r\n // rerun until map view is ready and layer list view model is loaded\r\n this.autorunDisposers.push(autorun((r: any) => {\r\n if (!store?.mapStore.view) {\r\n return;\r\n }\r\n this.watchHandles.push(\r\n store.mapStore.view.watch(\"scale\",()=> {\r\n this.checkVisibility();\r\n })\r\n );\r\n r.dispose();\r\n }));\r\n }\r\n\r\n componentWillUnmount(): void {\r\n this.autorunDisposers.forEach((disposer: any) => {\r\n disposer();\r\n });\r\n this.autorunDisposers.length = 0;\r\n this.watchHandles.forEach((handle: WatchHandle) => {\r\n handle.remove();\r\n });\r\n this.watchHandles.length = 0;\r\n }\r\n\r\n componentDidUpdate(prevProps: any) {\r\n const {data} = this.props;\r\n if (!_.isEqual(prevProps.data?.layer, data?.layer)){\r\n this.handleItemChange(data);\r\n }\r\n if (this.state.open !== data?.open){\r\n this.setState({open: data.open});\r\n }\r\n if (this.state.visible !== data?.layer.visible){\r\n this.setState({visible: data.layer.visible});\r\n }\r\n if (this.state.hidden !== data?.hidden){\r\n this.setState({hidden: data.hidden});\r\n }\r\n }\r\n\r\n render(): React.ReactElement {\r\n const {visible, visibleAtCurrentScale, open, metauid, hidden} = this.state;\r\n const {subitems, data, metadata, onClick, config,\r\n controlsConfig, level, small}\r\n = this.props;\r\n const nextLevel = level + 1;\r\n const showElement = (controlsConfig.layerList.startLevel <= level);\r\n const nextIsRoot = (controlsConfig.layerList.startLevel === nextLevel);\r\n const limitLevel = controlsConfig.layerList.limitLevel;\r\n const hasChildren = subitems && subitems.length > 0 && (limitLevel === 0 || limitLevel > nextLevel)\r\n && (data.layer as any)?.limitLevel !== 1;\r\n const metaUrl = metauid != null? metadata.urlTemplate.replace(\"{METAUID}\", this.state.metauid): null;\r\n const showLayers = hasChildren && open;\r\n const indeterminate = visible && subitems && subitems.flatten((ite: __esri.ListItem) =>\r\n ite.children\r\n ).some((child: __esri.ListItem) => !child.visible && !child.hidden);\r\n const inputType = ((data.parent?.layer as any)?.visibilityMode === \"exclusive\")? \"radio\": \"checkbox\";\r\n // Das Property uid ist für ListItem nicht dokumentiert!\r\n // const itemUid = (data as any).uid;\r\n let css = \"layer-list-item\";\r\n css += visible ? \" visible\" : \"\";\r\n css += open ? \" open\" : \"\";\r\n css += hidden ? \" hidden\" : \"\";\r\n css += hasChildren ? \" has-children\" : \"\";\r\n css += visibleAtCurrentScale ? \"\" : \" not-visible-at-scale\";\r\n let legend;\r\n if(subitems?.length && visibleAtCurrentScale){\r\n css += subitems.findIndex((i) => i.visibleAtCurrentScale)>-1 ? \"\" : \" not-visible-at-scale\";\r\n }\r\n if (controlsConfig.legend.position === \"layer\" && !hasChildren) {\r\n const legendConfig = controlsConfig.legend;\r\n if (controlsConfig.legend.useEsri && controlsConfig.legend.esriConfig) {\r\n legend = ();\r\n } else {\r\n legend = ();\r\n }\r\n }\r\n if (showElement) {\r\n return (\r\n
  • \r\n
    \r\n {hasChildren &&\r\n \r\n }\r\n {inputType===\"radio\"?\r\n {\r\n this.handleCheckboxChange(event, eventData, data);\r\n }} />:\r\n {\r\n this.handleCheckboxChange(event, eventData, data);\r\n }} />\r\n }\r\n {metaUrl &&\r\n \r\n \r\n \r\n }\r\n
    \r\n {legend}\r\n {showLayers &&\r\n \r\n }\r\n
  • \r\n );\r\n } else {\r\n return ();\r\n }\r\n }\r\n}\r\n\r\nexport const LayerListItem = withStore(LayerListItemBase);\r\n","import * as React from \"react\";\r\nimport {observer} from \"mobx-react\";\r\n\r\nimport \"./layer-list-list.scss\";\r\n\r\nimport {LayerListItem} from \"./layer-list-item/layer-list-item\";\r\nimport {LayerListConfiguration} from \"../../../config/layer-list-configuration\";\r\nimport {SyntheticEvent} from \"react\";\r\nimport {SidebarControlsConfiguration} from \"../../../../config/sidebar-configuration\";\r\nimport ListItem from \"@arcgis/core/widgets/LayerList/ListItem\";\r\nimport {IAppStore, withStore} from \"../../../stores/abstract-app-store\";\r\n\r\nexport interface LayerListListProps {\r\n listItems: ListItem[];\r\n isRoot: boolean; // the root list\r\n level: number;\r\n onListItemClick: (event: SyntheticEvent, data: object, item: ListItem) => any;\r\n config: LayerListConfiguration;\r\n controlsConfig: SidebarControlsConfiguration;\r\n small?: boolean;\r\n store?: IAppStore;\r\n}\r\n\r\n@observer\r\nclass LayerListListBase extends React.Component {\r\n constructor(props: LayerListListProps) {\r\n super(props);\r\n }\r\n\r\n render(): React.ReactElement | React.ReactElement[] {\r\n const {listItems} = this.props;\r\n const {onListItemClick, config, controlsConfig, level, isRoot, small}\r\n = this.props;\r\n const showElement = (controlsConfig.layerList.startLevel <= level);\r\n const listElements = listItems.map((oi: ListItem, index: number) =>\r\n \r\n );\r\n if (showElement) {\r\n return (\r\n
      \r\n {listElements}\r\n
    \r\n );\r\n } else {\r\n return listElements;\r\n }\r\n\r\n }\r\n\r\n componentDidMount(): void {\r\n }\r\n\r\n}\r\n\r\nexport const LayerListList = withStore(LayerListListBase);\r\n","import * as React from \"react\";\r\nimport {autorun, reaction} from \"mobx\";\r\nimport {observer} from \"mobx-react\";\r\n\r\nimport {CheckboxProps, Message} from \"semantic-ui-react\";\r\n\r\nimport \"./layer-list.scss\";\r\n\r\nimport EsriLayerListViewModel from \"@arcgis/core/widgets/LayerList/LayerListViewModel\";\r\n\r\nimport {LayerListConfiguration} from \"../../config/layer-list-configuration\";\r\n\r\nimport {SyntheticEvent} from \"react\";\r\nimport {LayerListList} from \"./layer-list-list/layer-list-list\";\r\nimport {SidebarControlsConfiguration} from \"../../../config/sidebar-configuration\";\r\nimport {Legend as CustomLegend} from \"../../../components/app/sidebar/legend/legend\";\r\nimport {Legend as CoreLegend} from \"../../../core/components/legend/legend\";\r\nimport {TopicLayersConfiguration} from \"../../../config/topic-configuration\";\r\nimport {PathUtils} from \"../../../utils/path-utils\";\r\nimport _ from \"lodash\";\r\nimport WatchHandle = __esri.WatchHandle;\r\nimport * as reactiveUtils from \"@arcgis/core/core/reactiveUtils\";\r\nimport * as arcade from \"@arcgis/core/arcade\";\r\nimport {ListItemConfiguration} from \"../../config/list-item-configuration\";\r\nimport {MessageConfiguration} from \"../../config/message-configuration\";\r\nimport ListItem from \"@arcgis/core/widgets/LayerList/ListItem\";\r\nimport GroupLayer from \"@arcgis/core/layers/GroupLayer\";\r\nimport Collection from \"@arcgis/core/core/Collection\";\r\nimport {Icon} from \"../icon/icon\";\r\nimport Sublayer from \"@arcgis/core/layers/support/Sublayer\";\r\nimport {IAppStore, withStore} from \"../../stores/abstract-app-store\";\r\nimport {LayerConfiguration} from \"../../config/layer-configuration\";\r\n\r\nexport interface LayerListProps {\r\n config: LayerListConfiguration;\r\n controlsConfig: SidebarControlsConfiguration;\r\n hideList: boolean; // If list is hidden (only shows legend and messages)\r\n onLoad?: (layerListViewModel: EsriLayerListViewModel) => any;\r\n layers?: TopicLayersConfiguration;\r\n small?: boolean;\r\n store?: IAppStore; // this is injected by withStore\r\n}\r\n// Layer um index und uid ergänzen. Der Index wird zum Sortierung verwendet\r\ninterface ExtendedLayer extends __esri.Layer {\r\n index: number;\r\n limitLevel?: number;\r\n uid: string;\r\n}\r\ninterface ExtendedSublayer extends Sublayer {\r\n index: number;\r\n children: number[];\r\n limitLevel?: number;\r\n uid: string;\r\n visibilityMode: string;\r\n}\r\n\r\n@observer\r\nclass LayerListBase extends React.Component {\r\n autorunDisposers: any[] = [];\r\n watchHandles: WatchHandle[] = [];\r\n widgetKey = \"layer-list\";\r\n itemsConfig: ListItemConfiguration[] = [];\r\n itemVisibility = new Map();\r\n operationalItems: Collection;\r\n groupOpenStatusSet: string[] = [];\r\n layerIds: string[] = []; // Layer IDs für Debug Konfiguration\r\n groupPromises: Array> = [];\r\n nextGroupId = 1000;\r\n constructor(props: LayerListProps) {\r\n super(props);\r\n\r\n this.state = {\r\n postMessages: Element,\r\n preMessages: Element,\r\n viewModel: null\r\n };\r\n if (typeof this.props.small === \"boolean\" && this.props.small) {\r\n this.widgetKey += \"-small\";\r\n }\r\n this.reformatListItemWhenCreated = this.reformatListItemWhenCreated.bind(this);\r\n this.handleListItemClick = this.handleListItemClick.bind(this);\r\n }\r\n\r\n /**\r\n * Remember the state of the list items, so changes can trigger re renderings on child components\r\n *\r\n * @param event\r\n * @param eventData\r\n * @param listItem\r\n */\r\n handleListItemClick(event: SyntheticEvent, eventData: CheckboxProps, listItem: __esri.ListItem): void {\r\n event.preventDefault();\r\n\r\n const {store} = this.props;\r\n\r\n const visible = !!eventData[\"checked\"];\r\n const allItems = this.operationalItems.flatten((ite: __esri.ListItem) =>\r\n ite.children\r\n );\r\n const oi = allItems.find((item: __esri.ListItem) =>\r\n item.layer.id === listItem.layer.id\r\n || (item.layer as ExtendedLayer).uid === (listItem.layer as ExtendedLayer).uid\r\n );\r\n if (!oi) {\r\n return;\r\n }\r\n const extendedLayer = oi.layer as unknown as ExtendedSublayer;\r\n const extendedSubLayer = oi.parent?.layer as unknown as ExtendedSublayer;\r\n\r\n // Nach Parent Layer überprüfen und für nicht GroupLayer visibilityMode implementieren\r\n if(extendedSubLayer && oi.parent?.layer.type!==\"group\") {\r\n const parentVisibilityMode = extendedSubLayer.visibilityMode;\r\n if (parentVisibilityMode === \"exclusive\") {\r\n // Im visibilityMode exclusive zuerst alle \"children\" der Gruppe auf invisible setzten\r\n if (visible) {\r\n oi.parent.children.forEach((i) => {\r\n if(extendedLayer.uid !== (i.layer as ExtendedLayer).uid) {\r\n i.layer.visible = false;\r\n // Allfällige dazugehörende \"children\" auf invisible setzten\r\n i.children.flatten((ite: __esri.ListItem) => ite.children).forEach((subI)=> {\r\n this.itemVisibility.set((subI.layer as ExtendedLayer).uid, subI.layer.visible);\r\n subI.layer.visible = false;\r\n });\r\n }\r\n });\r\n }\r\n } else if (parentVisibilityMode === \"inherited\") {\r\n // Im visibilityMode inherited \"parent\" und alle \"children\" der Gruppe auf den selben Wert setzen\r\n oi.parent.layer.visible = visible;\r\n oi.parent.children.forEach((i) => {\r\n if (!i.hidden) {\r\n i.layer.visible = visible;\r\n }\r\n });\r\n }\r\n if (extendedLayer.visibilityMode === \"inherited\") {\r\n\r\n // Im visibilityMode inherited alle \"children\" der Gruppe auf denselben Wert setzten\r\n oi.children.forEach((i) => {\r\n if (!i.hidden) {\r\n i.layer.visible = visible;\r\n this.itemVisibility.set((i.layer as ExtendedLayer).uid, visible);\r\n }\r\n });\r\n }\r\n }\r\n this.itemVisibility.set(extendedLayer.uid, visible);\r\n if (visible && extendedLayer?.visibilityMode === \"exclusive\" && oi.children.length > 0) {\r\n // Sicherstellen, dass im exclusive Modus jeweils nur ein \"Child\" aktive ist\r\n let visibleChildren=0;\r\n oi.children.forEach((i) => {\r\n if(typeof this.itemVisibility.get((i.layer as ExtendedLayer).uid) === \"boolean\"\r\n && this.itemVisibility.get((i.layer as ExtendedLayer).uid)) {\r\n visibleChildren++;\r\n }\r\n });\r\n if(visibleChildren!==1) {\r\n oi.children.forEach((i, index) => {\r\n this.itemVisibility.set((i.layer as ExtendedLayer).uid, index===0);\r\n });\r\n }\r\n }\r\n oi.children.flatten((ite: __esri.ListItem) => ite.children).forEach((i)=>{\r\n if (!i.hidden) {\r\n if (!visible) {\r\n this.itemVisibility.set((i.layer as ExtendedLayer).uid, i.layer.visible);\r\n i.layer.visible = visible;\r\n } else if (typeof this.itemVisibility.get((i.layer as ExtendedLayer).uid) === \"boolean\") {\r\n i.layer.visible = this.itemVisibility.get((i.layer as ExtendedLayer).uid) as boolean;\r\n } else {\r\n i.layer.visible = visible;\r\n }\r\n }\r\n });\r\n oi.visible = visible;\r\n oi.layer.visible = visible;\r\n // übergeordnete Layer auf sichtbar setzen\r\n if(visible && oi.parent) {\r\n let p = oi.parent;\r\n while (p) {\r\n if (p.layer.visible !== visible) {\r\n p.layer.visible = visible;\r\n p.visible = visible;\r\n }\r\n p = p.parent;\r\n }\r\n }\r\n const operationalItemsArray = this.operationalItems.flatten((ite: __esri.ListItem) =>\r\n ite.children\r\n ).toArray();\r\n store?.LayerListStore.setOperationalItemsArray(operationalItemsArray);\r\n }\r\n handleLayerChange(layers?: TopicLayersConfiguration): void {\r\n const {config, store} = this.props;\r\n if (!store) {\r\n return;\r\n }\r\n if(typeof layers === \"undefined\" ||\r\n !this.operationalItems ||\r\n !store.LayerListStore.operationalItemsArray) {\r\n return;\r\n }\r\n const allItems = this.operationalItems.flatten((ite: __esri.ListItem) =>\r\n ite.children\r\n );\r\n allItems.forEach((item: __esri.ListItem) => {\r\n // Layer aus CompareWidget ignorieren\r\n if((item.layer as any)?.metauid !== \"[compare]\" && item.layer.title !== \"[compare]\"){\r\n this.hideLayerItem(false, item);\r\n }\r\n });\r\n if(layers.hide && Array.isArray(layers.hide)) {\r\n // single layers\r\n allItems.forEach((item: __esri.ListItem) => {\r\n const url = PathUtils.getLayerPath(item.layer);\r\n if (typeof url === \"string\") {\r\n const metaId = PathUtils.getMetaId(url);\r\n const layerId = PathUtils.getLayerId(url);\r\n if (typeof layerId === \"number\") {\r\n if (layers.hide.some((layer) => layer.id === metaId\r\n && (layer.layerId === layerId || (layer.layerIds && layer.layerIds.includes(layerId))))) {\r\n this.hideLayerItem(true, item);\r\n }\r\n }\r\n }\r\n });\r\n // group layers\r\n if(Array.isArray(config.groups)){\r\n config.groups.forEach((itemConfig: ListItemConfiguration) => {\r\n const groupId = store?.uiStore.sublayerMap.get(itemConfig.layer.id as string);\r\n const groupItem = allItems.find((item: __esri.ListItem) =>\r\n (item.layer as ExtendedLayer).uid === groupId\r\n );\r\n if(groupItem && layers.hide?.some((o)=> o.id === itemConfig.layer.id)) {\r\n this.hideLayerItem(true, groupItem);\r\n }\r\n });\r\n }\r\n }\r\n if(layers.visible && layers.visible.length>0) {\r\n allItems.forEach((item: __esri.ListItem) => {\r\n const url = PathUtils.getLayerPath(item.layer);\r\n if (typeof url === \"string\") {\r\n // Layer aus CompareWidget ignorieren\r\n if((item.layer as any)?.metauid === \"[compare]\" || item.layer.title === \"[compare]\"){\r\n return;\r\n }\r\n const metaId = PathUtils.getMetaId(url);\r\n const layerId = PathUtils.getLayerId(url);\r\n if (layers.ignore?.some((layer) => layer.id === metaId\r\n && (typeof layerId !== \"number\"\r\n || (layer.layerId === layerId || (layer.layerIds && layer.layerIds.includes(layerId)))))) {\r\n if(!store?.mapStore.activeLayerMetauids){\r\n const layerConfig = config.items.find((l)=>l.layer.id===metaId);\r\n if(layerConfig){\r\n item.visible = !!layerConfig.layer?.visible;\r\n item.layer.visible = item.visible;\r\n }\r\n } else {\r\n item.visible = store.mapStore.activeLayerMetauids.includes(metaId);\r\n item.layer.visible = item.visible;\r\n }\r\n return;\r\n } else if (layers.visible.some((layer) => layer.id === metaId\r\n && (typeof layerId !== \"number\"\r\n || (layer.layerId === layerId || (layer.layerIds && layer.layerIds.includes(layerId)))))) {\r\n item.visible = true;\r\n item.layer.visible = true;\r\n let p = item.parent;\r\n while (p) {\r\n if (!p.layer.visible) {\r\n p.layer.visible = true;\r\n p.visible = true;\r\n }\r\n p = p.parent;\r\n }\r\n } else {\r\n item.visible = false;\r\n item.layer.visible = false;\r\n }\r\n }\r\n });\r\n }\r\n if(layers.open && Array.isArray(layers.open)) {\r\n if(Array.isArray(config.groups)){\r\n config.groups.forEach((itemConfig: ListItemConfiguration) => {\r\n const groupId = store.uiStore.sublayerMap.get(itemConfig.layer.id as string);\r\n const groupItem = allItems.find((item: __esri.ListItem) =>\r\n (item.layer as ExtendedLayer).uid === groupId\r\n );\r\n if(groupItem) {\r\n groupItem.open = layers.open?.some((o)=> o.id === itemConfig.layer.id) as boolean;\r\n }\r\n });\r\n }\r\n }\r\n this.reorder();\r\n }\r\n\r\n updateMessages(){\r\n const {controlsConfig} = this.props;\r\n const preMessages = this.prepareMessagesContent(controlsConfig.layerList.preContent);\r\n Promise.all(preMessages).then((msgs) => {\r\n this.setState( {preMessages: msgs.filter((m) => m)});\r\n });\r\n const messages = this.prepareMessagesContent(controlsConfig.layerList.postContent);\r\n Promise.all(messages).then((msgs) => {\r\n this.setState( {postMessages: msgs.filter((m) => m)});\r\n });\r\n }\r\n prepareMessagesContent(messagesConfig?: MessageConfiguration[]): Array> {\r\n const {store} = this.props;\r\n const messagePromises: Array> = [];\r\n if (messagesConfig && Array.isArray(messagesConfig)) {\r\n const profile: __esri.Profile = {\r\n variables: [{\r\n name: \"$subtopicId\",\r\n type: \"text\"\r\n }, {\r\n name: \"$activeLayers\",\r\n type: \"array\",\r\n elementType: {\r\n type: \"text\"\r\n }\r\n }, {\r\n name: \"$activeLayersMeta\",\r\n type: \"array\",\r\n elementType: {\r\n type: \"text\"\r\n }\r\n }]\r\n };\r\n messagesConfig.forEach((message, index) => {\r\n if (typeof message.condition === \"undefined\") {\r\n messagePromises.push(new Promise((resolve) => {\r\n resolve(this.prepareMessageContent(message, index));\r\n }));\r\n } else {\r\n if(store?.mapStore.activeLayerMetauids) {\r\n const activeLayers: string[] = [];\r\n store?.mapStore.activeLayers.forEach((layerNumbers: number[], layerMeta) => {\r\n layerNumbers?.forEach((lNo: number)=>{\r\n activeLayers.push(`${layerMeta}-${lNo.toString()}`);\r\n });\r\n });\r\n const arcadeExecutor = arcade.createArcadeExecutor(message.condition, profile);\r\n messagePromises.push(new Promise((resolve) => {\r\n arcadeExecutor.then((ae) => {\r\n const condition = ae.execute({\r\n $activeLayers: activeLayers,\r\n $activeLayersMeta: store?.mapStore.activeLayerMetauids,\r\n $subtopicId: (store?.appStore.subtopicId? store?.appStore.subtopicId: \"\")\r\n });\r\n let m: React.ReactElement | undefined | PromiseLike;\r\n if (condition) {\r\n m = this.prepareMessageContent(message, index);\r\n }\r\n resolve(m);\r\n });\r\n }));\r\n }\r\n }\r\n });\r\n }\r\n return messagePromises;\r\n }\r\n prepareMessageContent(messageConfig: MessageConfiguration, index: number): React.ReactElement {\r\n let message: React.ReactElement;\r\n // quick and dirty!\r\n const messageContent = ;\r\n if (messageConfig.class === \"blank\"){\r\n message = {messageContent};\r\n } else {\r\n message =
    ;\r\n }\r\n return message;\r\n }\r\n\r\n render(): React.ReactElement | null {\r\n const {config, controlsConfig, hideList, small, store} = this.props;\r\n if (store?.LayerListStore.isLoading === null || store?.LayerListStore.isLoading) {\r\n return
    ;\r\n }\r\n if (!store?.LayerListStore.viewModel) {\r\n return (\r\n \r\n Tut uns leid, der Karteninhalt konnte nicht ausgelesen werden.\r\n

    Fehler beim Laden des ViewModels.

    \r\n
    \r\n );\r\n }\r\n const {postMessages, preMessages} = this.state;\r\n const {hasGroups} = store?.LayerListStore;\r\n\r\n if (!store.LayerListStore.operationalItemsArray) {\r\n return null;\r\n }\r\n\r\n let legend;\r\n if (controlsConfig.legend.position === \"toc\") {\r\n if (controlsConfig.legend.useEsri && controlsConfig.legend.esriConfig) {\r\n legend = ();\r\n } else {\r\n legend = ();\r\n }\r\n }\r\n const isRoot = (controlsConfig.layerList.startLevel === 0);\r\n return (\r\n
    \r\n
    \r\n {preMessages}\r\n {this.operationalItems?.length > 0 && !hideList && !config.hideList &&\r\n \r\n }\r\n {legend}\r\n {postMessages}\r\n
    \r\n
    \r\n
    \r\n );\r\n }\r\n\r\n componentDidMount(): void {\r\n const { config, onLoad, store } = this.props;\r\n\r\n // rerun until map view is ready and layer list view model is loaded\r\n this.autorunDisposers.push(autorun((r: any) => {\r\n if (!store) {\r\n return;\r\n }\r\n\r\n if (store?.uiStore.widgets.has(this.widgetKey)) {\r\n r.dispose(); // stop autorun\r\n return;\r\n }\r\n this.itemsConfig = store.mapViewerConfig.layerList.items;\r\n const modelViewInStore = !!store?.LayerListStore.viewModel;\r\n const viewModel =\r\n modelViewInStore?\r\n store?.LayerListStore.viewModel :\r\n this.loadViewModel(store?.mapStore.view, config);\r\n\r\n if (!viewModel) {\r\n return;\r\n }\r\n\r\n if(!modelViewInStore) {\r\n store?.LayerListStore.setViewModel(viewModel);\r\n }\r\n this.operationalItems = viewModel.operationalItems;\r\n const operationalItemsArray = this.operationalItems.flatten((ite: __esri.ListItem) =>\r\n ite.children\r\n ).toArray();\r\n store?.LayerListStore.setOperationalItemsArray(operationalItemsArray);\r\n\r\n if (viewModel.state !== \"ready\") {\r\n store?.LayerListStore.setIsLoading(true);\r\n }\r\n\r\n if(!modelViewInStore || viewModel.state !== \"ready\") {\r\n this.addWatchForEsriLayerListReady(viewModel, store);\r\n }\r\n if (onLoad) {\r\n // call the hook\r\n onLoad(viewModel);\r\n }\r\n store?.uiStore.addWidget(this.widgetKey, this);\r\n r.dispose();\r\n }));\r\n this.updateMessages();\r\n this.autorunDisposers.push(reaction(() => store?.mapStore.activeLayerMetauids, () => {\r\n this.updateMessages();\r\n }));\r\n this.autorunDisposers.push(reaction(() => store?.appStore.subtopic?.revision, () => {\r\n if(!store?.LayerListStore.isLoading && store?.appStore.subtopic?.layers) {\r\n this.handleLayerChange(store?.appStore.subtopic.layers);\r\n }\r\n }));\r\n }\r\n\r\n componentWillUnmount(): void {\r\n const {store} = this.props;\r\n this.autorunDisposers.forEach((disposer: any) => {\r\n disposer();\r\n });\r\n this.autorunDisposers.length = 0;\r\n this.watchHandles.forEach((handle: WatchHandle) => {\r\n handle.remove();\r\n });\r\n this.watchHandles.length = 0;\r\n store?.uiStore.removeWidget(this.widgetKey);\r\n }\r\n componentDidUpdate(prevProps: any) {\r\n const {layers} = this.props;\r\n if (!_.isEqual(prevProps.layers, layers)){\r\n this.handleLayerChange(layers);\r\n }\r\n }\r\n\r\n // index in items ergänzen, falls keiner vorhanden ist.\r\n private addMissingIndex(): void {\r\n this.itemsConfig = this.itemsConfig.map((item, index) => {\r\n if(!item.hasOwnProperty(\"index\")) {\r\n item.index = index + 1;\r\n }\r\n return item;\r\n });\r\n }\r\n private addWatchForEsriLayerListReady(viewModel: __esri.LayerListViewModel, store: IAppStore) {\r\n this.watchHandles.push(reactiveUtils.when(\r\n () => viewModel.state === \"ready\" && viewModel.operationalItems.length > 0,\r\n () => {\r\n this.loadGroups(viewModel.operationalItems);\r\n Promise.all(this.groupPromises).then(() => {\r\n store?.LayerListStore.setIsLoading(false);\r\n store?.mapStore.setTocReady();\r\n this.addItemsToGroup(viewModel.operationalItems);\r\n this.handleLayerChange(store?.appStore.subtopic?.layers);\r\n this.watchHandles.push(viewModel.watch(\"operationalItems.length\",\r\n (nValue, oValue, pName: string, targetView: EsriLayerListViewModel) => {\r\n const {operationalItems} = targetView;\r\n this.operationalItems = operationalItems;\r\n store?.LayerListStore.setIsLoading(false);\r\n const operationalItemsArray = operationalItems.flatten((ite: __esri.ListItem) =>\r\n ite.children\r\n ).toArray();\r\n store.LayerListStore.setOperationalItemsArray(operationalItemsArray);\r\n\r\n // watch for visibility changes\r\n this.operationalItems.forEach((listItem) => {\r\n this.watchHandles.push(listItem.watch(\"layerView\",\r\n (newValue: any, oldValue: any, propertyName: string,\r\n target: __esri.ListItem) => {\r\n target.watch(\"visible\",\r\n () => {\r\n store?.LayerListStore.setIsLoading(false);\r\n });\r\n })\r\n );\r\n });\r\n\r\n this.addItemsToGroup(operationalItems);\r\n })\r\n );\r\n });\r\n },\r\n {initial: true, once: true}\r\n ));\r\n }\r\n private loadViewModel(view: __esri.MapView | __esri.SceneView | undefined,\r\n layerListConfig: LayerListConfiguration): EsriLayerListViewModel | null {\r\n\r\n if (!view) {\r\n return null;\r\n }\r\n\r\n const config = layerListConfig as __esri.LayerListProperties;\r\n const props = {\r\n view,\r\n listItemCreatedFunction: this.reformatListItemWhenCreated,\r\n ...config\r\n };\r\n return new EsriLayerListViewModel(props);\r\n }\r\n\r\n /**\r\n * Add custom groups\r\n */\r\n private loadGroups(operationalItems: Collection): void {\r\n // add groups\r\n const {config, store} = this.props;\r\n const {groups} = config;\r\n if(!groups || store?.LayerListStore.processing) {\r\n return;\r\n }\r\n store?.LayerListStore.setProcessing(true);\r\n if(config.rebuild && operationalItems.getItemAt(0).layer.type === \"map-image\"){\r\n const mapImageLayer = operationalItems.getItemAt(0).layer as __esri.MapImageLayer;\r\n this.addGroups(mapImageLayer, this.buildHierarchy(groups));\r\n } else {\r\n groups.forEach((groupConfig: ListItemConfiguration) => {\r\n if (!store?.mapStore.view?.map.layers.some(\r\n (l: __esri.Layer) => l.id === groupConfig.layer.id)) {\r\n if (groupConfig.hasOwnProperty(\"title\") && !groupConfig.layer.hasOwnProperty(\"title\")) {\r\n groupConfig.layer.title = groupConfig.title;\r\n }\r\n // create group layer\r\n const groupLayer = new GroupLayer(groupConfig.layer as __esri.GroupLayerProperties);\r\n // add group layer to the map\r\n store?.mapStore.view?.map.layers.add(groupLayer, groupConfig.index || 0);\r\n // register on mobx store to access it more easily\r\n store?.mapStore.addGroupLayer(groupLayer.id, groupLayer);\r\n // set reference to group layer on layer item\r\n groupConfig.layer = groupLayer as LayerConfiguration;\r\n // create list item\r\n let groupListItem;\r\n try {\r\n groupListItem = new ListItem(groupConfig as __esri.ListItemProperties);\r\n } catch (error) {\r\n // eslint-disable-next-line no-console\r\n console.error(error);\r\n }\r\n\r\n // add list item to the layer list\r\n if(groupListItem) {\r\n operationalItems.add(groupListItem);\r\n }\r\n if (groupConfig.layer.id) {\r\n store?.uiStore.sublayerMap.set(groupConfig.layer.id,\r\n (groupLayer as unknown as ExtendedLayer).uid);\r\n }\r\n\r\n // parent layer?\r\n if (groupConfig.hasOwnProperty(\"parent\") && groupListItem) {\r\n this.addToParent(groupConfig, groupListItem, operationalItems);\r\n }\r\n }\r\n });\r\n }\r\n }\r\n private addGroups(mapImageLayer: __esri.MapImageLayer | __esri.Sublayer, groups: any[]): void {\r\n const {store} = this.props;\r\n groups.forEach((l, index)=>{\r\n const copy = _.cloneDeep(l.layer);\r\n copy.sublayers = [];\r\n copy.title = l.title;\r\n copy.legendEnabled = false;\r\n // Nicht benötigte respektive problematische Attribute entfernen\r\n delete copy.id;\r\n // Hohe nummerische ID vergeben, damit diese nicht mit einer ID im Map-Service kollidiert\r\n copy.id = this.nextGroupId;\r\n this.nextGroupId++;\r\n const groupLayer = new Sublayer(copy) as ExtendedSublayer;\r\n if(l.hasOwnProperty(\"index\")) {\r\n groupLayer.index = l.index;\r\n } else {\r\n groupLayer.index = index;\r\n }\r\n if(l.hasOwnProperty(\"limitLevel\")) {\r\n groupLayer.limitLevel = l.limitLevel;\r\n }\r\n if(l.layer.hasOwnProperty(\"visibilityMode\")) {\r\n groupLayer.visibilityMode = l.layer.visibilityMode;\r\n }\r\n mapImageLayer.sublayers.add(groupLayer, l.index);\r\n this.groupPromises.push(groupLayer.load());\r\n groupLayer.children = [];\r\n store?.uiStore.sublayerMap.set(l.layer.id, groupLayer.uid);\r\n // register on mobx store to access it more easily\r\n store?.mapStore.addGroupLayer(l.layer.id, groupLayer as __esri.Layer);\r\n if(l.sublayers) {\r\n this.addGroups(groupLayer, l.sublayers);\r\n }\r\n });\r\n }\r\n private buildHierarchy(groups: ListItemConfiguration[]): [] {\r\n\r\n const sublayers: any = {};\r\n const roots: [] = [];\r\n\r\n // find the top level nodes and hash the children based on parent\r\n groups.forEach((groupConfig: ListItemConfiguration) => {\r\n const p = groupConfig.parent;\r\n (groupConfig as any).sublayers = [];\r\n let target: any;\r\n if (p && p.layer.id) {\r\n target = (sublayers[p.layer.id] || (sublayers[p.layer.id] = []));\r\n } else {\r\n target = roots;\r\n }\r\n target.push(groupConfig);\r\n });\r\n\r\n // function to recursively build the tree\r\n const findChildren: any = (parent: any) => {\r\n if (sublayers[parent.layer.id]) {\r\n parent.sublayers = sublayers[parent.layer.id];\r\n for (let i = 0, len = parent.sublayers.length; i < len; ++i) {\r\n findChildren(parent.sublayers[i]);\r\n }\r\n }\r\n };\r\n\r\n // enumerate through to handle the case where there are multiple roots\r\n for (let i = 0, len = roots.length; i < len; ++i) {\r\n findChildren(roots[i]);\r\n }\r\n\r\n return roots;\r\n }\r\n /**\r\n * Add custom groups\r\n */\r\n private addItemsToGroup(operationalItems: Collection): void {\r\n const {store} = this.props;\r\n const allItems = operationalItems.flatten((ite: __esri.ListItem) =>\r\n ite.children\r\n );\r\n this.addMissingIndex();\r\n // add groups (in umgekehrter Reihenfolge hinzufügen)\r\n this.itemsConfig.sort((a, b) => a.index - b.index).forEach((itemConfig: ListItemConfiguration) => {\r\n // check if layer has to be moved to a parent (group)\r\n if (itemConfig.hasOwnProperty(\"parent\")) {\r\n const oi = allItems.find((item: __esri.ListItem) =>\r\n item.layer.id === itemConfig.id\r\n );\r\n if (!oi) {\r\n return null;\r\n }\r\n if (store?.LayerListStore.regroupedItems.has(oi.layer.id)) {\r\n return oi;\r\n }\r\n\r\n this.addToParent(itemConfig, oi, operationalItems);\r\n\r\n // remember the regrouped item\r\n store?.LayerListStore.addRegroupedItem(oi.layer.id, oi);\r\n }\r\n });\r\n if(store?.appConfig.mode !== \"production\") {\r\n this.itemsConfig.forEach((itemConfig: ListItemConfiguration) => {\r\n if(!itemConfig.layer?.id){\r\n console.warn(\"Layer ID fehlt:\");\r\n console.warn(itemConfig.layer);\r\n }else if(!this.layerIds.includes(itemConfig.layer.id)\r\n && !store?.mapStore.layers.has(itemConfig.layer.id)){\r\n // Überprüfung via mapStore ist nicht zuverlässig,\r\n // besser wäre via Konfiguration (MapViewerConfiguration.layers)\r\n console.warn(`Die Layer ID \"${itemConfig.layer.id}\" wurde in der Karte nicht gefunden.`);\r\n }\r\n });\r\n }\r\n this.reorder();\r\n this.setOpenStatus();\r\n if(!store?.appStore.subtopic){\r\n this.setInitialVisibility();\r\n }\r\n const operationalItemsArray = operationalItems.flatten((ite: __esri.ListItem) =>\r\n ite.children\r\n ).toArray();\r\n store?.LayerListStore.setOperationalItemsArray(operationalItemsArray);\r\n }\r\n private setInitialVisibility(operationalItems?: Collection): void {\r\n if(typeof operationalItems === \"undefined\"){\r\n operationalItems = this.operationalItems;\r\n }\r\n operationalItems.forEach((item)=>{\r\n const layerUid = (item.layer as ExtendedLayer).uid;\r\n if(this.itemVisibility.has(layerUid)){\r\n item.visible = !!this.itemVisibility.get(layerUid);\r\n item.layer.visible = item.visible;\r\n if(item.visible && item.children.length>0){\r\n this.setInitialVisibility(item.children);\r\n }\r\n }\r\n });\r\n }\r\n\r\n /**\r\n * Add list item to a parent list item\r\n * Also moves referenced layer to the layers list of the layers list of parent list item layer\r\n *\r\n * @param config\r\n * @param item\r\n * @param operationalItems\r\n */\r\n private addToParent(config: ListItemConfiguration, item: ListItem, operationalItems: Collection): void {\r\n const {store} = this.props;\r\n if (config.hasOwnProperty(\"parent\")) {\r\n let parent;\r\n if (config.parent.hasOwnProperty(\"layer\")) {\r\n const parentId = store?.uiStore.sublayerMap.get(config.parent.layer.id as string);\r\n parent = operationalItems.flatten((ite: __esri.ListItem) =>\r\n ite.children\r\n ).find((listItem: ListItem) =>\r\n listItem.layer?.id === config.parent.layer.id\r\n || (listItem.layer as ExtendedLayer)?.uid === parentId);\r\n if (!parent) {\r\n console.error(`No list item found by layer ID: ${config.parent.layer.id}`);\r\n return;\r\n }\r\n } else if (config.parent.hasOwnProperty(\"title\")) {\r\n parent = operationalItems.find((listItem: ListItem) =>\r\n listItem.title === config.parent.title);\r\n if (!parent) {\r\n console.error(`No list item found by title: ${config.parent.title}`);\r\n return;\r\n }\r\n }\r\n if(!parent) {\r\n return;\r\n }\r\n\r\n item.parent = parent;\r\n if(\"limitLevel\" in parent.layer){\r\n // limitLevel von parent Layer erben.\r\n const limitLevel: number = (parent.layer as ExtendedLayer).limitLevel as number;\r\n if (limitLevel > 1) {\r\n (item.layer as ExtendedLayer).limitLevel = limitLevel - 1;\r\n }\r\n }\r\n if(parent.layer.hasOwnProperty(\"sublayers\")){\r\n parent.children.add(item, config.index);\r\n // Layer ID ergänzen, damit dieser auch in der Suche verwendet werden kann\r\n (parent.layer as any).children.push(parseInt(item.layer.id, 10));\r\n const layerUid = (item.layer as ExtendedLayer).uid;\r\n let layerVisible=item.layer.visible;\r\n if(this.itemVisibility.has(layerUid)){\r\n layerVisible=this.itemVisibility.has(layerUid);\r\n }else{\r\n this.itemVisibility.set(layerUid, item.layer.visible);\r\n }\r\n // alle parent Layer berücksichtigen\r\n if(item.layer.visible){\r\n let p = parent;\r\n while(p){\r\n this.itemVisibility.set((p.layer as any).uid, layerVisible);\r\n p = p.parent;\r\n }\r\n }\r\n if(!parent.layer.visible) {\r\n item.layer.visible = false;\r\n }\r\n operationalItems.getItemAt(0).children.remove(item);\r\n } else if (parent.layer.hasOwnProperty(\"layers\")) {\r\n if (parent.layer.type !== \"group\") {\r\n console.error(\"Referenced parent layer is not a group layer. Cannot add layer to this parent.\");\r\n return;\r\n }\r\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\r\n // @ts-ignore --> group layer has property 'layers'\r\n if (!parent.layer.layers.includes(item.layer)) {\r\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\r\n // @ts-ignore --> group layer has property 'layers'\r\n parent.layer.add(item.layer);\r\n parent.children.add(item);\r\n }\r\n }\r\n (item.layer as ExtendedLayer).index = config.index;\r\n if (config.hasOwnProperty(\"title\")) {\r\n item.title = config.title;\r\n item.layer.title = config.title;\r\n }\r\n }\r\n }\r\n private reorder(operationalItems?: Collection): void {\r\n const {config, store} = this.props;\r\n if(operationalItems === undefined) {\r\n operationalItems = this.operationalItems;\r\n } else if((config.limitLevel === 0 ||\r\n (config.limitLevel - config.startLevel) > 1) && !store?.LayerListStore.hasGroups){\r\n store?.LayerListStore.setHasGroups(true);\r\n }\r\n operationalItems.sort((a, b) =>\r\n (a.layer as ExtendedLayer).index - (b.layer as ExtendedLayer).index);\r\n operationalItems.forEach((item: __esri.ListItem) => {\r\n if(item.children.length > 0) {\r\n this.reorder(item.children);\r\n }\r\n });\r\n }\r\n private hideLayerItem(hide: boolean, layerItem: __esri.ListItem) {\r\n layerItem.hidden = hide;\r\n layerItem.visible = !hide;\r\n layerItem.layer.visible = !hide;\r\n if (layerItem.children && layerItem.children.length > 0) {\r\n layerItem.children.forEach((c: __esri.ListItem) => {\r\n this.hideLayerItem(hide, c);\r\n });\r\n }\r\n }\r\n private reformatListItemWhenCreated(event: any): void {\r\n // The event object contains an item property.\r\n // It is a ListItem referencing the associated layer\r\n // and other properties. You can control the visibility of the\r\n // item, its title, and actions using this object.\r\n\r\n const {store, config} = this.props;\r\n const item = event.item;\r\n // Layer aus CompareWidget ignorieren\r\n if(item.layer.metauid === \"[compare]\" || item.layer.title === \"[compare]\"){\r\n return;\r\n }\r\n const url = PathUtils.getLayerPath(item.layer);\r\n let meta = \"\";\r\n if (typeof url === \"string\") {\r\n const metaId = PathUtils.getMetaId(url);\r\n const layerId = PathUtils.getLayerId(url);\r\n if (typeof layerId === \"number\"){\r\n meta = metaId + \"-\" + layerId;\r\n } else {\r\n meta = metaId;\r\n }\r\n }\r\n if(store?.appConfig.mode !== \"production\"){\r\n this.layerIds.push(meta);\r\n this.layerIds.push(item.layer.id);\r\n }\r\n this.addMissingIndex();\r\n // is there a configuration for this item?\r\n const itemConfig = this.itemsConfig.find((lic: ListItemConfiguration) =>\r\n lic.layer?.id === item.layer.id || lic.layer?.id === meta\r\n );\r\n if (!itemConfig) {\r\n if(config.rebuild && item.layer.type !== \"map-image\"){\r\n if(typeof item.layer.index === \"undefined\") {\r\n item.layer.listMode = \"hide\";\r\n // Erkennen von Mosaic Layer (haben jeweils drei sublayer)\r\n // vor 4.28 war typeof item.parent.layer.type === \"undefined\"\r\n if(item.parent?.layer?.type === \"sublayer\" && item.parent.layer.sublayers?.length === 3){\r\n item.layer.visible = true;\r\n item.parent.layer.visibilityMode = \"inherited\";\r\n // _boundary, _footprint und _image in TOC ausblenden\r\n item.parent.layer.limitLevel =1;\r\n } else {\r\n // Nicht konfigurierte Layer ausblenden\r\n item.layer.visible = false;\r\n }\r\n }\r\n }\r\n this.itemVisibility.set(item.layer.uid, item.layer.visible);\r\n // nothing to do for this item\r\n return;\r\n }\r\n itemConfig.id = item.layer.id; // Layer an Konfiguration zuweisen.\r\n // see if layer item should be hidden\r\n if (itemConfig.hasOwnProperty(\"layer\")) {\r\n if (itemConfig.layer.hasOwnProperty(\"listMode\")) {\r\n item.layer.listMode = itemConfig.layer.listMode;\r\n if (itemConfig.layer.listMode === \"hide\") {\r\n // also hide layer in the map\r\n item.layer.visible = false;\r\n }\r\n // TODO: überprüfen, ob alle sublayers sichtbar geschaltet werden sollen, oder ob settings aus\r\n // webmap übernommen werden sollen\r\n // if (itemConfig.layer.listMode === \"hide-children\") {\r\n // item.children.forEach((child: __esri.ListItem) => {\r\n // child.layer.visible = true;\r\n // });\r\n // }\r\n }\r\n const visible = (itemConfig.hasOwnProperty(\"visible\") && itemConfig.visible);\r\n let layerVisible = !!(itemConfig.layer.hasOwnProperty(\"visible\") && itemConfig.layer.visible);\r\n if (itemConfig.hasOwnProperty(\"visible\")) {\r\n layerVisible = visible;\r\n }\r\n if(config.rebuild){\r\n this.itemVisibility.set(item.layer.uid, layerVisible);\r\n item.visible = false;\r\n item.layer.visible = false;\r\n } else {\r\n item.visible = visible;\r\n item.layer.visible = layerVisible;\r\n }\r\n if (\"metauid\" in itemConfig.layer) {\r\n item.metauid = itemConfig.layer.metauid;\r\n item.layer.metauid = itemConfig.layer.metauid;\r\n }\r\n if (\"anchorField\" in itemConfig.layer) {\r\n item.layer.anchorField = itemConfig.layer.anchorField;\r\n if (\"anchorFieldType\" in itemConfig.layer) {\r\n item.layer.anchorFieldType = itemConfig.layer.anchorFieldType;\r\n }\r\n }\r\n }\r\n // check if layer has a title\r\n if (itemConfig.hasOwnProperty(\"title\")) {\r\n item.title = itemConfig.title;\r\n item.layer.title = itemConfig.title;\r\n }\r\n if (itemConfig.hasOwnProperty(\"index\")) {\r\n item.index = itemConfig.index;\r\n item.layer.index = itemConfig.index;\r\n }\r\n\r\n // TODO: add actions to layers (e.g. transparency slider)\r\n }\r\n private setOpenStatus(): void {\r\n const {config, store} = this.props;\r\n const allItems = this.operationalItems.flatten((ite: __esri.ListItem) =>\r\n ite.children\r\n );\r\n this.operationalItems.getItemAt(0).open = true;\r\n if(config.groups){\r\n config.groups.forEach((itemConfig: ListItemConfiguration) => {\r\n const groupId = store?.uiStore.sublayerMap.get(itemConfig.layer.id as string);\r\n const groupItem = allItems.find((item: __esri.ListItem) =>\r\n (item.layer as ExtendedLayer).uid === groupId\r\n );\r\n if(groupItem && groupId) {\r\n // Status bleibt aus unerklärlichen Gründen nicht erhalten und muss mehrfach gesetzt werden\r\n groupItem.open = itemConfig.open;\r\n if(!this.groupOpenStatusSet.includes(groupId)) {\r\n this.groupOpenStatusSet.push(groupId);\r\n if (itemConfig.layer.hasOwnProperty(\"visible\")) {\r\n groupItem.visible = itemConfig.layer.visible as boolean;\r\n }\r\n }\r\n }\r\n });\r\n }\r\n }\r\n}\r\n\r\nexport const LayerList = withStore(LayerListBase);\r\n","import React, {SyntheticEvent} from \"react\";\r\nimport {observer} from \"mobx-react\";\r\n\r\n\r\nimport {Dropdown, Form, Loader, Radio} from \"semantic-ui-react\";\r\n\r\nimport {IAppStore, withStore} from \"../../../stores/abstract-app-store\";\r\nimport {\r\n LayerSelectorGroupConfiguration,\r\n LayerSelectorGroupOptionConfiguration\r\n} from \"../../../config/layer-selector-configuration\";\r\nimport {DropdownItemProps} from \"semantic-ui-react/dist/commonjs/modules/Dropdown/DropdownItem\";\r\n\r\nexport interface LayerSelectorMatrixProps {\r\n comparisonEnabled: boolean;\r\n config: LayerSelectorGroupConfiguration[];\r\n onSelect: (groupConfig: LayerSelectorGroupConfiguration, groupId: string, value: string, ) => void;\r\n small?: boolean;\r\n standalone?: boolean;\r\n trailing?: boolean;\r\n store?: IAppStore;\r\n}\r\n\r\n@observer\r\nclass LayerSelectorMatrixBase extends React.Component {\r\n constructor(props: LayerSelectorMatrixProps) {\r\n super(props);\r\n this.handleSelect = this.handleSelect.bind(this);\r\n }\r\n\r\n render(): React.ReactElement | null {\r\n const {\r\n config,\r\n trailing,\r\n store\r\n } = this.props;\r\n\r\n if (!store) {\r\n return null;\r\n }\r\n\r\n const groups: React.ReactElement[] = [];\r\n // get selected option of dropdowns that have a relation to other groups\r\n // store value for each related dropdown\r\n const relatedDropdownSelections: Map> = new Map();\r\n\r\n config.forEach((groupConfig: LayerSelectorGroupConfiguration) => {\r\n if (groupConfig.hidden) {\r\n // do not show controls for hidden groups\r\n return;\r\n }\r\n\r\n let dropdownOptions = store.LayerSelectorStore.dropdownOptionsForCurrentTopic?.get(groupConfig.id);\r\n\r\n // option selected before?\r\n const selectedOptions = store.LayerSelectorStore.getSelectedGroupOptions(groupConfig, !!trailing);\r\n\r\n // remember selected options for related dropdowns\r\n this.storeSelectionForRelatedControls(groupConfig, selectedOptions, relatedDropdownSelections);\r\n\r\n // filter the options with value selected in related dropdown\r\n dropdownOptions = this.filterValidOptions(dropdownOptions, relatedDropdownSelections, groupConfig);\r\n\r\n // TODO: find a way to reset the selected option of a related control when the selected value is not available anymore when parent control changes\r\n\r\n const content: any[] = [];\r\n if (groupConfig.formFieldType === \"dropdown\") {\r\n const key = `checkbox_${groupConfig.id}${!!trailing ? \"_tailing\" : \"\"}`;\r\n // options from configuration or loaded from data store\r\n const options: DropdownItemProps[] | undefined =\r\n groupConfig.store?\r\n dropdownOptions :\r\n groupConfig.options.map((optionConfig: LayerSelectorGroupOptionConfiguration) => {\r\n return {\r\n key: optionConfig.id,\r\n text: optionConfig.label,\r\n value: optionConfig.id\r\n } as DropdownItemProps;\r\n });\r\n\r\n if (!options || options.length === 0) {\r\n // loading options from data. show loader\r\n content.push(\r\n \r\n \r\n \r\n );\r\n } else {\r\n // on single selection dropdowns only a string is valid as value\r\n const selectedValue: string | string[] | undefined =\r\n selectedOptions && Array.isArray(selectedOptions) && !groupConfig.multiple ?\r\n selectedOptions[0] :\r\n selectedOptions;\r\n content.push(\r\n \r\n {\r\n this.handleSelect(groupConfig, event, eventData);\r\n }}\r\n options={options}/>\r\n \r\n );\r\n }\r\n }\r\n else {\r\n // radio or checkbox\r\n groupConfig.options.forEach((optionConfig: LayerSelectorGroupOptionConfiguration) => {\r\n const key = `radio_${optionConfig.id}_${groupConfig.id}${!!trailing ? \"_tailing\" : \"\"}`;\r\n content.push(\r\n \r\n {\r\n this.handleSelect(groupConfig, event, eventData);\r\n }}\r\n checked={selectedOptions?.includes(optionConfig.id)}\r\n />\r\n \r\n );\r\n });\r\n }\r\n\r\n const groupKey = `selector-option-group_${groupConfig.id}${!!trailing ? \"_tailing\" : \"\"}`;\r\n groups.push(\r\n \r\n \r\n {content}\r\n \r\n );\r\n });\r\n return (\r\n
    \r\n {groups}\r\n
    \r\n );\r\n }\r\n\r\n /**\r\n * Store the selected options for related dropdowns\r\n * @param groupConfig\r\n * @param selectedOptions\r\n * @param relatedDropdownSelections\r\n * @private\r\n */\r\n private storeSelectionForRelatedControls(groupConfig: LayerSelectorGroupConfiguration,\r\n selectedOptions: string[] | undefined,\r\n relatedDropdownSelections: Map>) {\r\n if (!selectedOptions || !groupConfig.dataFieldRelations || groupConfig.dataFieldRelations.length === 0) {\r\n return;\r\n }\r\n\r\n groupConfig.dataFieldRelations.forEach((relation: string) => {\r\n let v = selectedOptions;\r\n if (typeof v === \"string\") {\r\n v = [v];\r\n }\r\n // get code for this selected option\r\n const codes = v?.map((va) => {\r\n return groupConfig.options.find((oc: LayerSelectorGroupOptionConfiguration) => {\r\n return oc.id === va;\r\n })?.code;\r\n });\r\n relatedDropdownSelections.set(relation, codes);\r\n });\r\n }\r\n\r\n /**\r\n * Filter the options for the dropdown with the selected values of related dropdowns\r\n * @param dropdownOptions\r\n * @param relatedDropdownSelections\r\n * @param groupConfig\r\n * @private\r\n */\r\n private filterValidOptions(dropdownOptions: DropdownItemProps[] | undefined,\r\n relatedDropdownSelections: Map>,\r\n groupConfig: LayerSelectorGroupConfiguration): DropdownItemProps[] | undefined {\r\n if (!dropdownOptions) {\r\n return;\r\n }\r\n\r\n if (!relatedDropdownSelections.has(groupConfig.id)) {\r\n return dropdownOptions;\r\n }\r\n\r\n return dropdownOptions.filter((option: DropdownItemProps) => {\r\n const relatedDropdownValues = relatedDropdownSelections.get(groupConfig.id);\r\n return relatedDropdownValues?.includes(option.data);\r\n });\r\n }\r\n\r\n /**\r\n * Label specifying the orientation of the two comparable maps\r\n */\r\n private OrientationLabel(): JSX.Element {\r\n const {\r\n comparisonEnabled,\r\n trailing,\r\n store\r\n } = this.props;\r\n\r\n if (!comparisonEnabled) {\r\n return <>;\r\n }\r\n\r\n const orientationLabel = trailing ?\r\n (store?.uiStore.uiOrientation === \"portrait\" ? \"Karte unten: \" : \"Karte rechts: \") :\r\n (store?.uiStore.uiOrientation === \"portrait\" ? \"Karte oben: \" : \"Karte links: \");\r\n\r\n return {orientationLabel};\r\n }\r\n\r\n private handleSelect(groupConfig: LayerSelectorGroupConfiguration,\r\n event?: SyntheticEvent | string,\r\n eventData?: object | number | number[]): void {\r\n if (event && typeof event !== \"string\") {\r\n event.preventDefault();\r\n }\r\n if (typeof eventData !== \"undefined\") {\r\n const {onSelect} = this.props;\r\n let name;\r\n let value;\r\n if (typeof eventData !== \"number\" && !Array.isArray(eventData)) {\r\n name = (eventData as any).name?.replace(\"_tailing\", \"\");\r\n value = (eventData as any).value;\r\n } else if (typeof event === \"string\") {\r\n name = event?.replace(\"_tailing\", \"\");\r\n value = Array.isArray(eventData) ? eventData[0] : eventData;\r\n }\r\n onSelect(groupConfig, name, value);\r\n\r\n if (groupConfig.zoomToFeature) {\r\n this.zoomToFeature(groupConfig, value);\r\n }\r\n }\r\n }\r\n\r\n private zoomToFeature(groupConfig: LayerSelectorGroupConfiguration, itemGuid: string) {\r\n const {store} = this.props;\r\n\r\n if (!store) {\r\n return;\r\n }\r\n if (!groupConfig.store) {\r\n throw new Error(\"No store defined for dropdown options\");\r\n }\r\n\r\n const dataStore = store.geoDataStores.get(groupConfig.store);\r\n dataStore?.zoomToItem(itemGuid);\r\n }\r\n}\r\n\r\nexport const LayerSelectorMatrix = withStore(LayerSelectorMatrixBase);\r\n","import React from \"react\";\r\nimport {autorun, reaction} from \"mobx\";\r\nimport {observer} from \"mobx-react\";\r\n\r\nimport \"./layer-selector.scss\";\r\n\r\nimport {SidebarControlsConfiguration} from \"../../../config/sidebar-configuration\";\r\nimport {Legend as CoreLegend} from \"../legend/legend\";\r\nimport {Legend as CustomLegend} from \"../../../components/app/sidebar/legend/legend\";\r\nimport {Button, Divider, Form} from \"semantic-ui-react\";\r\n\r\nimport EsriLegendViewModel from \"@arcgis/core/widgets/Legend/LegendViewModel\";\r\n\r\nimport {LayerSelectorMatrix} from \"./layer-selector-matrix/layer-selector-matrix\";\r\n\r\nimport {\r\n LayerSelectorConfiguration, LayerSelectorGroupConfiguration\r\n} from \"../../config/layer-selector-configuration\";\r\nimport {IAppStore, withStore} from \"../../stores/abstract-app-store\";\r\nimport {LayerList} from \"../layer-list/layer-list\";\r\nimport {Icon} from \"../icon/icon\";\r\nimport {TopicSwitcherButton} from \"../topic-switcher/topic-switcher-button\";\r\nimport {TopicToggle} from \"../topic-toggle/topic-toggle\";\r\n\r\nexport interface LayerRules {\r\n filter?: string;\r\n visible?: boolean;\r\n renderField?: string;\r\n}\r\nexport type ServiceRules = Map>;\r\n\r\nexport interface LayerSelectorProps {\r\n config: LayerSelectorConfiguration[];\r\n controlsConfig: SidebarControlsConfiguration;\r\n keyAppend?: string | number | undefined;\r\n onLoad?: (legendViewModel: EsriLegendViewModel) => any | undefined;\r\n small?: boolean;\r\n standalone?: boolean;\r\n store?: IAppStore; // this is injected by withStore\r\n}\r\n\r\n\r\nconst LayerSelectorLegend = (controlsConfig: SidebarControlsConfiguration, small: boolean | undefined) => {\r\n if (controlsConfig.legend.position === \"compare\") {\r\n if (controlsConfig.legend.useEsri && controlsConfig.legend.esriConfig) {\r\n return ;\r\n } else {\r\n return ;\r\n }\r\n }\r\n return null;\r\n};\r\n\r\n@observer\r\nclass LayerSelectorBase extends React.Component {\r\n watchHandles: any[] = [];\r\n autorunDisposers: any[] = [];\r\n autorunLayerSelectorDisposers: any[] = [];\r\n widgetKey = \"layer-selector\";\r\n\r\n constructor(props: LayerSelectorProps) {\r\n super(props);\r\n this.state = {};\r\n\r\n this.toggleComparison = this.toggleComparison.bind(this);\r\n this.handleChange = this.handleChange.bind(this);\r\n\r\n if (typeof this.props.keyAppend === \"string\" || typeof this.props.keyAppend === \"number\") {\r\n this.widgetKey += `-${this.props.keyAppend.toString()}`;\r\n }\r\n if (typeof this.props.small === \"boolean\" && this.props.small) {\r\n this.widgetKey += \"-small\";\r\n }\r\n }\r\n\r\n componentDidMount(): void {\r\n const {store} = this.props;\r\n if (!store) {\r\n return;\r\n }\r\n store.uiStore.addWidget(this.widgetKey, this);\r\n\r\n // Update matrix and applied rules on topic changes\r\n this.autorunDisposers.push(\r\n autorun(() => {\r\n if (!store.mapStore.view || !store.appStore.subtopic) {\r\n return;\r\n }\r\n\r\n const {subtopic} = store.appStore;\r\n if (subtopic.id === store.LayerSelectorStore.subtopicId) {\r\n // do nothing if subtopic did not change\r\n return;\r\n }\r\n\r\n // matrix config is derived from subtopic\r\n // updates matrix rules on subtopic change\r\n store.LayerSelectorStore.setSubtopic(subtopic);\r\n\r\n // load dropdown options for new subtopic\r\n // do this after setting subtopic to avoid unnecessary loading\r\n store.LayerSelectorStore.loadDropdownOptions();\r\n\r\n if (store.LayerSelectorStore.isInitialized) {\r\n // do nothing if store is already initialized for this subtopic\r\n return;\r\n }\r\n\r\n // reapply matrix rules\r\n store.LayerSelectorStore.applyMatrixRules();\r\n })\r\n );\r\n }\r\n // noinspection DuplicatedCode\r\n componentWillUnmount(): void {\r\n const {store} = this.props;\r\n this.watchHandles.forEach((handle: any) => {\r\n handle.remove();\r\n });\r\n this.watchHandles.length = 0;\r\n this.autorunDisposers.forEach((disposer: any) => {\r\n disposer();\r\n });\r\n this.autorunDisposers.length = 0;\r\n store?.uiStore.removeWidget(this.widgetKey);\r\n }\r\n\r\n render(): React.ReactElement | null {\r\n const {\r\n controlsConfig,\r\n small,\r\n store\r\n } = this.props;\r\n\r\n if (!store) {\r\n return null;\r\n }\r\n\r\n const {subtopic} = store?.appStore;\r\n if (!subtopic) {\r\n return null;\r\n }\r\n const comparisonEnabled = store.LayerSelectorStore.comparisonEnabled;\r\n const matrixConfig = store.LayerSelectorStore.matrixConfig;\r\n\r\n const legend = LayerSelectorLegend(controlsConfig, small);\r\n const selects: React.ReactElement[] = [];\r\n\r\n if (matrixConfig && matrixConfig.layerMatrix) {\r\n selects.push(\r\n {\r\n this.handleChange(groupConfig, groupId, value);\r\n }}\r\n />\r\n );\r\n if (comparisonEnabled) {\r\n selects.push(\r\n vergleichen mit\r\n );\r\n selects.push(\r\n {\r\n this.handleChange(groupConfig, groupId, value, true);\r\n }}\r\n trailing={true}\r\n />\r\n );\r\n }\r\n }\r\n\r\n let cssClass = `geo-layer-selector-panel geo-orientation-${store.uiStore.uiOrientation}`;\r\n if (comparisonEnabled) {\r\n cssClass += \" geo-compare-enabled\";\r\n }\r\n return (\r\n
    \r\n
    \r\n \r\n {\r\n e.preventDefault();\r\n e.currentTarget.blur();\r\n this.toggleComparison();\r\n }}\r\n size={\"mini\"}>\r\n  \r\n {comparisonEnabled ? \"Vergleichen beenden\" : \"Vergleichen\"}\r\n \r\n
    \r\n
    \r\n
    \r\n \r\n {selects}\r\n \r\n
    \r\n
    0 ? \" with-selectors\" : \"\"}`}>\r\n \r\n
    \r\n {legend}\r\n
    \r\n );\r\n }\r\n\r\n private handleChange(groupConfig: LayerSelectorGroupConfiguration,\r\n groupId: string,\r\n value: string,\r\n trailing: boolean = false): void {\r\n const { store} = this.props;\r\n if (!store || !store.appStore.subtopic) {\r\n return;\r\n }\r\n\r\n store.LayerSelectorStore.setSelectedOption(groupId, value, trailing);\r\n store.LayerSelectorStore.applyMatrixRules(trailing);\r\n }\r\n\r\n private toggleComparison(): void {\r\n const {store} = this.props;\r\n\r\n if (!store?.LayerSelectorStore.comparisonEnabled) {\r\n this.enableComparison();\r\n } else {\r\n this.disableComparison();\r\n }\r\n }\r\n private enableComparison(): void {\r\n const {store} = this.props;\r\n if (!store || !store.mapStore.view || !store?.appStore.subtopic) {\r\n return;\r\n }\r\n\r\n store.LayerSelectorStore.enableComparison()\r\n .then(() => {\r\n this.addComparisonHandles();\r\n store.PopupStore.setVisible(false);\r\n store.PopupStore.setDisabled(true);\r\n });\r\n }\r\n private disableComparison(): void {\r\n const {store} = this.props;\r\n\r\n store?.LayerSelectorStore.disableComparison().then(() => {\r\n store?.PopupStore.setDisabled(false);\r\n this.removeComparisonHandles();\r\n });\r\n }\r\n\r\n private addComparisonHandles(): void {\r\n const {store} = this.props;\r\n this.autorunLayerSelectorDisposers.push(\r\n reaction(\r\n () => store?.uiStore.uiOrientation,\r\n () => {\r\n const direction = store?.uiStore.uiOrientation === \"portrait\" ? \"vertical\" : \"horizontal\";\r\n store?.LayerSelectorStore.updateOrientation(direction);\r\n }\r\n )\r\n );\r\n }\r\n private removeComparisonHandles(): void {\r\n this.autorunLayerSelectorDisposers.forEach((disposer: any) => {\r\n disposer();\r\n });\r\n this.autorunLayerSelectorDisposers.length = 0;\r\n }\r\n}\r\n\r\nexport const LayerSelector = withStore(LayerSelectorBase);\r\n","import React from \"react\";\r\nimport { observer } from \"mobx-react\";\r\nimport {autorun, reaction} from \"mobx\";\r\n\r\nimport \"./legend.scss\";\r\n\r\nimport EsriLegendViewModel from \"@arcgis/core/widgets/Legend/LegendViewModel\";\r\nimport EsriWidget from \"@arcgis/core/widgets/Widget\";\r\n\r\nimport Handles from \"@arcgis/core/core/Handles\";\r\nimport Collection from \"@arcgis/core/core/Collection\";\r\nimport ActiveLayerInfo from \"@arcgis/core/widgets/Legend/support/ActiveLayerInfo\";\r\nimport * as esriSymbolUtils from \"@arcgis/core/symbols/support/symbolUtils\";\r\nimport * as reactiveUtils from \"@arcgis/core/core/reactiveUtils\";\r\nimport * as arcade from \"@arcgis/core/arcade\";\r\nimport _ from \"lodash\";\r\n\r\nimport { PathUtils } from \"../../../utils/path-utils\";\r\n\r\nimport { LegendConfiguration } from \"../../config/legend-configuration\";\r\nimport {SidebarControlsConfiguration} from \"../../../config/sidebar-configuration\";\r\nimport {Message} from \"semantic-ui-react\";\r\nimport {MessageConfiguration} from \"../../config/message-configuration\";\r\nimport {LegendPatch} from \"./legendPatch\";\r\nimport {ListItemConfiguration} from \"../../config/list-item-configuration\";\r\nimport {ConditionalLinkConfiguration} from \"../../config/link-configuration\";\r\nimport {IAppStore, withStore} from \"../../stores/abstract-app-store\";\r\n\r\nconst CSS = {\r\n base: \"esri-legend\",\r\n widget: \"esri-widget\",\r\n panel: \"esri-widget--panel\",\r\n widgetIcon: \"esri-icon-layer-list\",\r\n service: \"esri-legend__service\",\r\n noLegend: \"esri-noLegend\",\r\n label: \"esri-legend__service-label\",\r\n layer: \"esri-legend__layer\",\r\n groupLayer: \"esri-legend__group-layer\",\r\n groupLayerChild: \"esri-legend__group-layer-child\",\r\n layerTable: \"esri-legend__layer-table\",\r\n layerTableSizeRamp: \"esri-legend__layer-table--size-ramp\",\r\n layerChildTable: \"esri-legend__layer-child-table\",\r\n layerCaption: \"esri-legend__layer-caption\",\r\n layerBody: \"esri-legend__layer-body\",\r\n layerRow: \"esri-legend__layer-row\",\r\n layerInfo: \"esri-legend__layer-cell esri-legend__layer-cell--info\",\r\n symbolContainer: \"esri-legend__layer-cell esri-legend__layer-cell--symbols\",\r\n symbol: \"esri-legend__symbol\",\r\n sizeRamp: \"esri-legend__size-ramp\",\r\n colorRamp: \"esri-legend__color-ramp\",\r\n opacityRamp: \"esri-legend__opacity-ramp\",\r\n // common\r\n header: \"esri-widget__heading\",\r\n hidden: \"esri-hidden\",\r\n // geo\r\n geoGroup: \"geo-group\",\r\n geoInvisible: \"geo-invisible\",\r\n geoHidden: \"geo-hidden\",\r\n geoLayerNotSelected: \"geo-legend-layer-not-selected\",\r\n geoLegendDisabled: \"geo-legend-disabled\"\r\n};\r\n\r\ninterface LegendProps {\r\n config: LegendConfiguration;\r\n controlsConfig: SidebarControlsConfiguration;\r\n keyAppend?: string | number | undefined;\r\n layerInfos?: any;\r\n onLoad?: (legendViewModel: EsriLegendViewModel) => any | undefined;\r\n small?: boolean;\r\n topicSwitcher?: React.ReactElement | null;\r\n store?: IAppStore; // this is injected by withStore\r\n}\r\n/* Basierend auf der Custom Legend von Sascha Brunner und der Esri Legend.\r\nEs wird nur der style.type classic unterstützt!\r\nhttps://github.com/Esri/arcgis-js-api/blob/4master/widgets/Legend.tsx\r\nhttps://github.com/Esri/arcgis-js-api/blob/4master/widgets/Legend/styles/Classic.tsx\r\n\r\n@todo elevation und AV Liegenschaften diff, projektiert machen zusammen Probleme. Vermutlich ein Problem welches alle\r\n ImageryLayer betrifft.\r\n*/\r\n\r\n@observer\r\nclass LegendBase extends React.Component {\r\n watchHandles: any[] = [];\r\n autorunDisposers: any[] = [];\r\n initialOrder: Map = new Map();\r\n _handles: Handles = new Handles();\r\n viewModel: EsriLegendViewModel;\r\n activeLayerInfos: Collection;\r\n widgetKey = \"legend\";\r\n constructor(props: LegendProps) {\r\n super(props);\r\n this.state = {\r\n activeLayerInfos: null,\r\n postMessages: [],\r\n preMessages: [],\r\n links: [],\r\n visible: true,\r\n isLoading: false,\r\n version: 0,\r\n layersReady: []\r\n };\r\n if (typeof this.props.keyAppend === \"string\" || typeof this.props.keyAppend === \"number\") {\r\n this.widgetKey += \"-\" + this.props.keyAppend.toString();\r\n }\r\n if (typeof this.props.small === \"boolean\" && this.props.small) {\r\n this.widgetKey += \"-small\";\r\n }\r\n }\r\n componentDidMount(): void {\r\n const { layerInfos, store } = this.props;\r\n\r\n // rerun until map view is ready and layer list view model is loaded\r\n this.autorunDisposers.push(autorun((r: any) => {\r\n if (store?.uiStore.widgets.has(this.widgetKey)) {\r\n r.dispose(); // stop autorun\r\n return;\r\n }\r\n if (!store?.mapStore.view) {\r\n return;\r\n }\r\n const controlsConfig = store.mapViewerConfig as SidebarControlsConfiguration;\r\n const config = store.mapViewerConfig.legend.esriConfig;\r\n if(!config){\r\n return;\r\n }\r\n this.viewModel = this.loadLegend(store.mapStore.view, config, layerInfos);\r\n this.setState({activeLayerInfos: this.reorder(this.viewModel.activeLayerInfos, config, controlsConfig)});\r\n this.watchHandles.push(\r\n this.viewModel.activeLayerInfos.on(\"change\",()=> {\r\n this.setState({activeLayerInfos: this.reorder(\r\n this.viewModel.activeLayerInfos, config, controlsConfig)});\r\n this._refreshActiveLayerInfos(this.viewModel.activeLayerInfos);\r\n })\r\n );\r\n this.watchHandles.push(\r\n // TODO: Sollte nur ausgelöst werden, wenn es auch tatsächlich eine Änderung gab\r\n store.mapStore.view.watch(\"scale\",()=> {\r\n this.scheduleRender();\r\n })\r\n );\r\n this.setState({\r\n isLoading: false\r\n });\r\n if (this.viewModel.activeLayerInfos) {\r\n this._refreshActiveLayerInfos(this.viewModel.activeLayerInfos);\r\n }\r\n store?.uiStore.addWidget(this.widgetKey, this);\r\n\r\n r.dispose();\r\n }));\r\n this.updateMessages();\r\n this.autorunDisposers.push(reaction(() => store?.mapStore.activeLayerMetauids, () => {\r\n this.updateMessages();\r\n }));\r\n }\r\n reorder(activeLayerInfos: any, config: LegendConfiguration, controlsConfig: SidebarControlsConfiguration){\r\n const layerListConfig = controlsConfig.layerList;\r\n if(activeLayerInfos){\r\n if(layerListConfig?.rebuild && activeLayerInfos.length > 0) {\r\n config.layerInfos = [];\r\n const subIds: number[] = [];\r\n // layer IDs aus Konfiguration lesen und für MapImageLayer aufbereiten\r\n layerListConfig.items.forEach((i) => {\r\n if(i.layer.id) {\r\n subIds.push(parseInt(i.layer.id?.split(/-/)[1] as string, 10));\r\n }\r\n });\r\n\r\n activeLayerInfos.forEach((activeLayerInfo: __esri.ActiveLayerInfo)=>{\r\n if(activeLayerInfo.layer.type === \"map-image\") {\r\n activeLayerInfo.sublayerIds = subIds.reverse();\r\n this.watchHandles.push(reactiveUtils.when(\r\n () => activeLayerInfo.ready,\r\n () => {\r\n activeLayerInfo.legendElements =\r\n this.groupLegendElements(activeLayerInfo.legendElements);\r\n },\r\n { initial: true, once: true }\r\n ));\r\n }\r\n });\r\n }\r\n // Layer mit ausgeschalteter Legende rausfiltern\r\n activeLayerInfos = activeLayerInfos.filter((item: any) =>\r\n item.layer?.legendEnabled\r\n // GroupLayer aus CompareWidget filtern (GroupLayer fehlt legendEnabled Property)\r\n && item.layer.title !== \"[compare]\"\r\n );\r\n activeLayerInfos = activeLayerInfos\r\n .toArray()\r\n .map((item: any, index: number) => {\r\n if (\"metauid\" in item.layer) { // TODO: Funktioniert eventuell nicht und muss noch getestet werden.\r\n item.metauid = item.layer.metauid;\r\n }else {\r\n const url = PathUtils.getLayerPath(item.layer);\r\n if (typeof url === \"string\") {\r\n item.metauid = PathUtils.getMetaId(url);\r\n }else {\r\n item.metauid = null;\r\n }\r\n }\r\n if (config.reorder) {\r\n item.sort = config.reorder.indexOf(item.metauid);\r\n if (item.sort < 0) {\r\n item.sort = index + activeLayerInfos.length;\r\n }\r\n } else {\r\n item.sort = index;\r\n }\r\n return item;\r\n });\r\n activeLayerInfos = _.sortBy(activeLayerInfos,[\"sort\"]);\r\n }\r\n return activeLayerInfos;\r\n }\r\n\r\n /**\r\n * Behält die ursprüngliche Legendenpatch-Sortierung bei. Das sich die Sortierung verändert ist mit hoher\r\n * Wahrscheinlichkeit ein Esri Bug\r\n *\r\n * @param activeLayerInfo\r\n * @param metauid\r\n */\r\n keepInitialOrder(activeLayerInfo: __esri.ActiveLayerInfo, metauid: string): __esri.ActiveLayerInfo {\r\n let order: string[][] | undefined;\r\n if(!this.initialOrder.get(metauid)){\r\n order = [];\r\n activeLayerInfo.legendElements.forEach((element: __esri.LegendElement) => {\r\n if(element.infos && typeof element.infos[0] !== \"undefined\"\r\n && typeof order !== \"undefined\"){\r\n if(typeof element.infos[0].infos !== \"undefined\"){\r\n order.push(element.infos[0].infos.map((info: __esri.SymbolTableElementInfo) =>\r\n (info.label)? info.label.toString(): \"\"));\r\n } else {\r\n order.push(element.infos.map((info) => (info.label)? info.label.toString(): \"\"));\r\n }\r\n\r\n }\r\n });\r\n if(order.length > 0){\r\n this.initialOrder.set(metauid, order);\r\n }\r\n this.initialOrder.set(metauid, order);\r\n } else {\r\n order = this.initialOrder.get(metauid);\r\n }\r\n if (typeof order !== \"undefined\" && order.length > 0){\r\n activeLayerInfo.legendElements.forEach((element: __esri.LegendElement, index) => {\r\n if(element.infos && typeof element.infos[0] !== \"undefined\"\r\n && typeof order !== \"undefined\" && typeof order[index] !== \"undefined\"){\r\n if(typeof element.infos[0].infos !== \"undefined\"){\r\n const infoLength = element.infos[0].infos.length;\r\n element.infos[0].infos.forEach((info: any, i: number) => {\r\n info.sort = order? order[index].indexOf(info.label?.toString()): -1;\r\n if (info.sort < 0) {\r\n info.sort = i + infoLength;\r\n }\r\n });\r\n element.infos[0].infos = _.sortBy(element.infos[0].infos,[\"sort\"]);\r\n } else {\r\n const infoLength = element.infos.length;\r\n element.infos.forEach((info: any, i: number) => {\r\n info.sort = order? order[index].indexOf(info.label): -1;\r\n if (info.sort < 0) {\r\n info.sort = i + infoLength;\r\n }\r\n });\r\n element.infos = _.sortBy(element.infos,[\"sort\"]);\r\n }\r\n }\r\n });\r\n }\r\n return activeLayerInfo;\r\n }\r\n loadLegend(view: __esri.MapView | __esri.SceneView, legendConfig: LegendConfiguration, layerInfos: any): EsriLegendViewModel {\r\n const config = legendConfig as __esri.LegendViewModelProperties;\r\n if (typeof layerInfos !== \"undefined\") {\r\n config.layerInfos = layerInfos.map((layerInfo: any) => {\r\n // Falls MapImageLayer entsprechend Aufbereiten\r\n if(layerInfo.layer.hasOwnProperty(\"layer\")){\r\n layerInfo.sublayerIds = [];\r\n if (layerInfo.layer.legendEnabled) {\r\n layerInfo.sublayerIds.push(layerInfo.layer.id);\r\n }\r\n if(layerInfo.layer.sublayers && layerInfo.sublayerIds.length === 0) {\r\n layerInfo.layer.sublayers.flatten(\r\n (sub: __esri.Sublayer) => sub.sublayers).forEach((sub: __esri.Sublayer) => {\r\n if(sub.legendEnabled){\r\n layerInfo.sublayerIds.push(sub.id);\r\n }\r\n });\r\n }\r\n layerInfo.layer = layerInfo.layer.layer;\r\n }\r\n return layerInfo;\r\n });\r\n }\r\n const props = {\r\n view,\r\n ...config\r\n };\r\n return new EsriLegendViewModel(props);\r\n }\r\n groupLegendElements(elements: __esri.LegendElement[]): __esri.LegendElement[] {\r\n const { store } = this.props;\r\n const layerListConfig = (store?.mapViewerConfig as SidebarControlsConfiguration).layerList;\r\n if(layerListConfig.rebuild && elements[0] && !(elements[0] as any).processed){\r\n elements.forEach((element: any) => {\r\n const item = layerListConfig.items.find((i) => i.title === element.title);\r\n if (item) {\r\n element.index = item.index;\r\n if(item.layer.id) {\r\n // ergänze Layer ID, falls diese vorhanden ist\r\n element.layerId = parseInt(item.layer.id?.split(/-/)[1] as string, 10);\r\n }\r\n if(item.parent) {\r\n const p = layerListConfig.groups.find((g) => g.layer.id === item.parent.layer.id);\r\n if (p) {\r\n element.group = {title: p.title, id: p.layer.id};\r\n }\r\n }\r\n }\r\n });\r\n const groups = this.buildHierarchy(layerListConfig.groups);\r\n return this.addGroups(groups, elements);\r\n\r\n }\r\n return elements;\r\n }\r\n addGroups(groups: any[], elements: __esri.LegendElement[], sub?: boolean): __esri.LegendElement[] {\r\n const { store } = this.props;\r\n const layerListConfig = (store?.mapViewerConfig as SidebarControlsConfiguration).layerList;\r\n const legendElements: __esri.LegendElement[] = [];\r\n groups.forEach((g, index)=>{\r\n const legendElement: __esri.LegendElement = {\r\n type: \"symbol-table\",\r\n title: g.title,\r\n infos: []\r\n };\r\n (legendElement as any).group = {title: g.title, id: g.layer.id, isGroup: true};\r\n (legendElement as any).processed = true;\r\n if(g.hasOwnProperty(\"index\")) {\r\n (legendElement as any).index = g.index;\r\n } else {\r\n (legendElement as any).index = index;\r\n }\r\n if(g.children) {\r\n (legendElement as any).infos = this.addGroups(g.children, elements, true);\r\n }\r\n if(elements) {\r\n elements.filter((e: any) => e.group?.id === g.layer.id)?.forEach((e) => {\r\n (e as any).processed = true;\r\n (legendElement as any).infos.push(e);\r\n });\r\n }\r\n legendElements.push(legendElement);\r\n });\r\n if(!sub) {\r\n // Ergänze Items welche zu keiner Gruppe gehören\r\n layerListConfig.items.filter((i) => !i.hasOwnProperty(\"parent\"))?.forEach((li, index) => {\r\n const legendElement: __esri.LegendElement = {\r\n type: \"symbol-table\",\r\n title: li.title,\r\n infos: []\r\n };\r\n (legendElement as any).processed = true;\r\n if (li.hasOwnProperty(\"index\")) {\r\n (legendElement as any).index = li.index;\r\n } else {\r\n (legendElement as any).index = index + groups.length;\r\n }\r\n if (elements) {\r\n const item = elements.find((e) => e.title === li.title);\r\n if (item) {\r\n (item as any).processed = true;\r\n (legendElement as any).infos.push(item);\r\n }\r\n }\r\n legendElements.push(legendElement);\r\n });\r\n }\r\n return legendElements;\r\n }\r\n buildHierarchy(groups: ListItemConfiguration[]): [] {\r\n const children: any = {};\r\n const roots: [] = [];\r\n\r\n // find the top level nodes and hash the children based on parent\r\n groups.forEach((groupConfig: ListItemConfiguration) => {\r\n const p = groupConfig.parent;\r\n (groupConfig as any).children = [];\r\n let target: any;\r\n if (p && p.layer.id) {\r\n target = (children[p.layer.id] || (children[p.layer.id] = []));\r\n } else {\r\n target = roots;\r\n }\r\n target.push(groupConfig);\r\n });\r\n\r\n // function to recursively build the tree\r\n const findChildren: any = (parent: any) => {\r\n if (children[parent.layer.id]) {\r\n parent.children = children[parent.layer.id];\r\n for (let i = 0, len = parent.children.length; i < len; ++i) {\r\n findChildren(parent.children[i]);\r\n }\r\n }\r\n };\r\n\r\n // enumerate through to handle the case where there are multiple roots\r\n for (let i = 0, len = roots.length; i < len; ++i) {\r\n findChildren(roots[i]);\r\n }\r\n\r\n return roots;\r\n }\r\n updateMessages(){\r\n const { store } = this.props;\r\n const controlsConfig = store?.mapViewerConfig as SidebarControlsConfiguration;\r\n const preMessages = this.prepareMessagesContent(controlsConfig.legend.preContent);\r\n if(preMessages.length>0) {\r\n Promise.all(preMessages).then((msgs) => {\r\n this.setState({preMessages: msgs.filter((m) => m)});\r\n });\r\n }\r\n const messages = this.prepareMessagesContent(controlsConfig.legend.postContent);\r\n if(messages.length>0) {\r\n Promise.all(messages).then((msgs) => {\r\n this.setState({postMessages: msgs.filter((m) => m)});\r\n });\r\n }\r\n const links = this.prepareMessagesContent(controlsConfig.legend.links);\r\n if(links.length>0) {\r\n Promise.all(links).then((msgs) => {\r\n this.setState({links: msgs.filter((m) => m)});\r\n });\r\n }\r\n }\r\n prepareMessagesContent(messagesConfig?: MessageConfiguration[] | ConditionalLinkConfiguration[]):\r\n Array> {\r\n\r\n const { store } = this.props;\r\n const messagePromises: Array> = [];\r\n if (messagesConfig && Array.isArray(messagesConfig)) {\r\n const profile: __esri.Profile = {\r\n variables: [{\r\n name: \"$subtopicId\",\r\n type: \"text\"\r\n }, {\r\n name: \"$activeLayers\",\r\n type: \"array\",\r\n elementType: {\r\n type: \"text\"\r\n }\r\n }, {\r\n name: \"$activeLayersMeta\",\r\n type: \"array\",\r\n elementType: {\r\n type: \"text\"\r\n }\r\n }]\r\n };\r\n messagesConfig.forEach((message, index) => {\r\n if (typeof message.condition === \"undefined\") {\r\n messagePromises.push(new Promise((resolve) => {\r\n if(message instanceof ConditionalLinkConfiguration\r\n || (message as unknown as ConditionalLinkConfiguration).url){\r\n resolve();\r\n }else{\r\n resolve(this.prepareMessageContent(message, index));\r\n }\r\n }));\r\n } else {\r\n if(store?.mapStore.activeLayerMetauids) {\r\n const activeLayers: string[] = [];\r\n store?.mapStore.activeLayers.forEach((layerNumbers: number[], layerMeta) => {\r\n layerNumbers?.forEach((lNo)=>{\r\n activeLayers.push(layerMeta + \"-\" + lNo.toString());\r\n });\r\n });\r\n const arcadeExecutor = arcade.createArcadeExecutor(message.condition, profile);\r\n messagePromises.push(new Promise((resolve) => {\r\n arcadeExecutor.then((ae) => {\r\n const condition = ae.execute({\r\n $activeLayers: activeLayers,\r\n $activeLayersMeta: store?.mapStore.activeLayerMetauids,\r\n $subtopicId: (store?.appStore.subtopicId? store?.appStore.subtopicId: \"\")\r\n });\r\n let m: React.ReactElement | undefined;\r\n if (condition) {\r\n if(message instanceof ConditionalLinkConfiguration\r\n || (message as unknown as ConditionalLinkConfiguration).url){\r\n m = ;\r\n }else{\r\n m = this.prepareMessageContent(message, index);\r\n }\r\n }\r\n resolve(m);\r\n });\r\n }));\r\n }\r\n }\r\n });\r\n }\r\n return messagePromises;\r\n }\r\n prepareMessageContent(messageConfig: MessageConfiguration, index: number): React.ReactElement {\r\n let message: React.ReactElement;\r\n // quick and dirty!\r\n const messageContent = ;\r\n if (messageConfig.class === \"blank\"){\r\n message = {messageContent}
    ;\r\n } else {\r\n message =
    ;\r\n }\r\n return message;\r\n }\r\n\r\n componentWillUnmount(): void {\r\n const { store } = this.props;\r\n this.watchHandles.forEach((handle: any) => {\r\n handle.remove();\r\n });\r\n this.watchHandles.length = 0;\r\n this.autorunDisposers.forEach((disposer: any) => {\r\n disposer();\r\n });\r\n this.autorunDisposers.length = 0;\r\n this._handles.removeAll();\r\n store?.uiStore.removeWidget(this.widgetKey);\r\n }\r\n render(): React.ReactElement | null {\r\n const { activeLayerInfos, links, postMessages, preMessages, version } = this.state;\r\n const { topicSwitcher, store } = this.props;\r\n if (!activeLayerInfos || !store) {\r\n return null;\r\n }\r\n const controlsConfig = store?.mapViewerConfig as SidebarControlsConfiguration;\r\n const filteredLayers =\r\n activeLayerInfos &&\r\n activeLayerInfos\r\n .map((activeLayerInfo: __esri.ActiveLayerInfo) => this._renderLegendForLayer(activeLayerInfo))\r\n .filter((layer: __esri.Layer) => !!layer);\r\n return (\r\n
    \r\n {topicSwitcher}\r\n {preMessages}\r\n
    \r\n {filteredLayers && filteredLayers.length ? (\r\n filteredLayers\r\n ) : (controlsConfig.legend.preContent || controlsConfig.legend.postContent? null:\r\n (
    {controlsConfig.legend.noLegendText}
    )\r\n )}\r\n
    \r\n {postMessages}\r\n {links}\r\n
    \r\n );\r\n }\r\n classes(className: string, classNames?: string | string[] | object): string {\r\n const widget = new EsriWidget();\r\n const classString = widget.classes(className, classNames);\r\n return classString;\r\n }\r\n prepareLegendElements( elements: any[], layer: __esri.Layer, rootMetauid?: string, overwrite?: any): any[] {\r\n const {config} = this.props;\r\n if (overwrite && overwrite.removeLabels) {\r\n elements = elements.filter((element) => overwrite.removeLabels.indexOf(element.label) === -1);\r\n }\r\n elements.forEach((element, index) => {\r\n if(typeof element.index !== \"number\"){\r\n element.index = index;\r\n }\r\n const titleObj = element.title;\r\n let title: string | null = null;\r\n if (typeof titleObj === \"string\") {\r\n title = titleObj;\r\n } else if (titleObj) {\r\n title = (titleObj as any).field;\r\n }\r\n // append für Sublayer in MapImageLayer ermöglichen\r\n let elementOverwrite = overwrite;\r\n if (rootMetauid && element.layerId && config.overwriteLayerInfos\r\n && config.overwriteLayerInfos[rootMetauid+\"-\"+element.layerId]) {\r\n elementOverwrite = config.overwriteLayerInfos[rootMetauid+\"-\"+element.layerId];\r\n }\r\n if (elementOverwrite && typeof elementOverwrite.append !== \"undefined\" && element.infos) {\r\n const append = elementOverwrite.append as __esri.SymbolTableElementInfo[];\r\n if(typeof element.infos !== \"undefined\" && Array.isArray(element.infos)){\r\n append.forEach((current: __esri.SymbolTableElementInfo) => {\r\n if(element.infos && Array.isArray(element.infos)) {\r\n const x = (element.infos as __esri.SymbolTableElementInfo[]).find(\r\n (item: __esri.SymbolTableElementInfo) => item.label === current.label);\r\n if (!x) {\r\n element.infos.push(current);\r\n }\r\n }\r\n });\r\n }\r\n }\r\n if (typeof element.label !== \"undefined\") {\r\n if (elementOverwrite && elementOverwrite.labels && elementOverwrite.labels[element.label]) {\r\n element.label = elementOverwrite.labels[element.label];\r\n }\r\n }\r\n if (typeof title !== \"undefined\") {\r\n if (elementOverwrite && title) {\r\n if (elementOverwrite.removeLabels && elementOverwrite.removeLabels.indexOf(title) > -1) {\r\n element.title = null; // Zum Ausblenden kennzeichnen\r\n } else if (elementOverwrite.labels && elementOverwrite.labels[title]) {\r\n element.title = elementOverwrite.labels[title];\r\n }\r\n }\r\n }\r\n if (layer.hasOwnProperty(\"maxScale\")) {\r\n element.maxScale = (layer as any).maxScale;\r\n element.minScale = (layer as any).minScale;\r\n }\r\n if (layer.hasOwnProperty(\"visible\")) {\r\n element.visible = (layer as any).visible;\r\n }\r\n if (layer.hasOwnProperty(\"allSublayers\")) {\r\n const tmpLayer = (layer as any).allSublayers.find((l: __esri.Layer) => {\r\n // Falls vorhanden prüfung auf Layer ID\r\n if(typeof element.layerId === \"number\") {\r\n return element.layerId === l.id;\r\n }else{\r\n return l.title === title;\r\n }\r\n });\r\n if (tmpLayer) {\r\n element.maxScale = tmpLayer.maxScale;\r\n element.minScale = tmpLayer.minScale;\r\n element.visible = tmpLayer.visible;\r\n if (elementOverwrite\r\n && tmpLayer.metauid\r\n && elementOverwrite.reorder\r\n && elementOverwrite.reorder.indexOf(tmpLayer.metauid) > -1) {\r\n element.index = elementOverwrite.reorder.indexOf(tmpLayer.metauid);\r\n }\r\n if(tmpLayer.metauid) {\r\n element.metauid = tmpLayer.metauid;\r\n }\r\n }\r\n }\r\n if (element.hasOwnProperty(\"infos\")){\r\n element.infos = this.prepareLegendElements(element.infos, layer, rootMetauid, overwrite);\r\n }\r\n });\r\n return elements.sort((a, b) => a.index - b.index);\r\n }\r\n scheduleRender(): void {\r\n this.setState((state: any) => ({version: state.version + 1}));\r\n }\r\n // -------------------------------------------------------------------\r\n //\r\n // Private methods\r\n //\r\n // -------------------------------------------------------------------\r\n\r\n // Important\r\n // watch for changes in each ActiveLayerInfo\r\n private _refreshActiveLayerInfos(activeLayerInfos: Collection): void {\r\n this._handles.removeAll();\r\n activeLayerInfos.forEach((activeLayerInfo) =>\r\n this._renderOnActiveLayerInfoChange(activeLayerInfo)\r\n );\r\n this.scheduleRender(); // This triggers widget's DOM refresh. calls \"render()\" method\r\n }\r\n\r\n // Important\r\n // watch for activeLayerInfo.version changes\r\n // Also watch for child activeLayerInfos if available\r\n private _renderOnActiveLayerInfoChange(activeLayerInfo: ActiveLayerInfo): void {\r\n const infoVersionHandle = reactiveUtils.watch(\r\n () => activeLayerInfo.version,\r\n () => {\r\n if(activeLayerInfo.ready && activeLayerInfo.layer.type === \"map-image\") {\r\n activeLayerInfo.legendElements =\r\n this.groupLegendElements(activeLayerInfo.legendElements);\r\n }\r\n this.scheduleRender();\r\n }, // This triggers widget's DOM refresh. calls \"render()\" method\r\n { initial: true }\r\n );\r\n this._handles.add(infoVersionHandle, `version_${(activeLayerInfo.layer)?(activeLayerInfo.layer as any).uid: \"1\"}`);\r\n\r\n activeLayerInfo.children.forEach((childActiveLayerInfo) =>\r\n this._renderOnActiveLayerInfoChange(childActiveLayerInfo)\r\n );\r\n }\r\n\r\n // render ActiveLayerInfo\r\n // This can be based on your UI requirement\r\n private _renderLegendForLayer(activeLayerInfo: ActiveLayerInfo): React.ReactElement | null {\r\n const {config} = this.props;\r\n if (!activeLayerInfo || !activeLayerInfo.ready) {\r\n return null;\r\n }\r\n const hasChildren = !!activeLayerInfo.children.length;\r\n const key = `legend-${activeLayerInfo.layer.id}-version-${activeLayerInfo.version}`;\r\n\r\n let labelNode = activeLayerInfo.title ? (\r\n

    {activeLayerInfo.title}

    \r\n ) : null;\r\n\r\n // title als slug in class ergänzen\r\n let addClass = \"\";\r\n if (activeLayerInfo.title) {\r\n addClass += \" \" + PathUtils.slug(activeLayerInfo.title);\r\n }\r\n let metauid = \"\";\r\n if (\"metauid\" in activeLayerInfo.layer) {\r\n metauid = (activeLayerInfo.layer as any).metauid;\r\n }else if (\"url\" in activeLayerInfo.layer) {\r\n const url = PathUtils.getLayerPath(activeLayerInfo.layer);\r\n if (typeof url === \"string\") {\r\n metauid = PathUtils.getMetaId(url);\r\n }\r\n }\r\n if(metauid){\r\n activeLayerInfo = this.keepInitialOrder(activeLayerInfo, metauid);\r\n addClass += \" \" + PathUtils.slug(metauid);\r\n if (config.overwriteLayerInfos && config.overwriteLayerInfos[metauid]) {\r\n const elementConfig = config.overwriteLayerInfos[metauid];\r\n activeLayerInfo.legendElements =\r\n this.prepareLegendElements(activeLayerInfo.legendElements, activeLayerInfo.layer,\r\n metauid, elementConfig);\r\n if (typeof elementConfig.append !== \"undefined\") {\r\n const append = elementConfig.append as __esri.SymbolTableElementInfo[];\r\n const element: __esri.LegendElement =\r\n activeLayerInfo.legendElements[activeLayerInfo.legendElements.length -1];\r\n if(typeof element !== \"undefined\" && Array.isArray(element.infos)){\r\n append.forEach((current: __esri.SymbolTableElementInfo) => {\r\n if(element.infos && Array.isArray(element.infos)) {\r\n const x = (element.infos as __esri.SymbolTableElementInfo[]).find(\r\n (item: __esri.SymbolTableElementInfo) => item.label === current.label);\r\n if (!x) {\r\n element.infos.push(current);\r\n }\r\n }\r\n });\r\n }\r\n }\r\n if (labelNode) {\r\n if(typeof elementConfig.removeLabels !== \"undefined\"\r\n && elementConfig.removeLabels.indexOf(activeLayerInfo.title) > -1) {\r\n labelNode = null;\r\n } else if (elementConfig.labels && elementConfig.labels[activeLayerInfo.title]) {\r\n labelNode =

    \r\n {elementConfig.labels[activeLayerInfo.title]}\r\n

    ;\r\n }\r\n }\r\n } else {\r\n this.prepareLegendElements(activeLayerInfo.legendElements, activeLayerInfo.layer);\r\n }\r\n }\r\n if (hasChildren) {\r\n const layers = activeLayerInfo.children\r\n .map((childActiveLayerInfo) => this._renderLegendForLayer(childActiveLayerInfo))\r\n .toArray();\r\n\r\n return (\r\n
    \r\n {labelNode}\r\n {layers}\r\n
    \r\n );\r\n }\r\n\r\n const legendElements = activeLayerInfo.legendElements;\r\n if (legendElements && !legendElements.length) {\r\n return null;\r\n }\r\n const filteredElements = legendElements\r\n .map((legendElement) => this._renderLegendForElement(legendElement, activeLayerInfo.layer))\r\n .filter((element) => !!element);\r\n\r\n if (!filteredElements.length) {\r\n return null;\r\n }\r\n\r\n const layerClasses = {\r\n [CSS.groupLayerChild]: !!activeLayerInfo.parent,\r\n // Layer mit deaktivierter Legende entsprechend markieren\r\n [CSS.geoLegendDisabled]: !(activeLayerInfo.layerView as any).legendEnabled\r\n };\r\n\r\n return (\r\n
    \r\n {labelNode}\r\n
    {filteredElements}
    \r\n
    \r\n );\r\n }\r\n\r\n // Render a LegendElement of ActiveLayerInfo\r\n private _renderLegendForElement(\r\n legendElement: any,\r\n layer: __esri.Layer,\r\n isChild?: boolean\r\n ): React.ReactElement | null {\r\n const { store } = this.props;\r\n if (!store?.mapStore.view) {\r\n return null;\r\n }\r\n const isColorRamp = legendElement.type === \"color-ramp\";\r\n const isOpacityRamp = legendElement.type === \"opacity-ramp\";\r\n const isSizeRamp = legendElement.type === \"size-ramp\";\r\n\r\n let content: any = null;\r\n const titleClasses = {\r\n [CSS.layerCaption]: true\r\n };\r\n // build symbol table or size ramp\r\n if (legendElement.type === \"symbol-table\" || isSizeRamp) {\r\n const removedSameLabel = (legendElement.infos as any).reduce((acc: any, current: any) => {\r\n if (typeof current.label === \"undefined\"){\r\n current.label = current.title;\r\n }\r\n const x = acc.find((item: any) => item.label === current.label);\r\n if (!x) {\r\n return acc.concat([current]);\r\n } else {\r\n return acc;\r\n }\r\n }, []);\r\n // Falls nur ein Childelement vorhanden ist, wird der Title versteckt.\r\n if (removedSameLabel.length === 1) {\r\n titleClasses[CSS.geoHidden] = true;\r\n // Falls das Child selber über keinen Titel verfühgt, wird dieser übertragen.\r\n if(typeof removedSameLabel[0].label === \"undefined\" || removedSameLabel[0].label === \"\"){\r\n removedSameLabel[0].title = legendElement.title;\r\n removedSameLabel[0].label = legendElement.title;\r\n }\r\n }\r\n const rows = removedSameLabel\r\n .map((info: any) =>\r\n this._renderLegendForElementInfo(\r\n info,\r\n layer,\r\n isSizeRamp,\r\n legendElement.type\r\n )\r\n )\r\n .filter((row: any) => !!row);\r\n if (rows.length) {\r\n content =
    {rows}
    ;\r\n }\r\n } else if (isColorRamp || isOpacityRamp) {\r\n content = this._renderLegendForRamp(legendElement, layer.opacity);\r\n }\r\n if (!content) {\r\n return null;\r\n }\r\n const titleObj = legendElement.title;\r\n let title: string | null = null;\r\n\r\n if (typeof titleObj === \"string\") {\r\n title = titleObj;\r\n } else if (titleObj) {\r\n title = (titleObj as any).field;\r\n }\r\n\r\n const tableClass = isChild ? CSS.layerChildTable : CSS.layerTable;\r\n const caption = title ?
    {title}
    : null;\r\n\r\n const tableClasses = {\r\n [CSS.layerTableSizeRamp]: isSizeRamp || !isChild,\r\n // in der View nicht sichtbare (in TOC nicht selektiert) Layer entsprechend markieren\r\n [CSS.geoLayerNotSelected]: !(!legendElement.hasOwnProperty(\"visible\") || legendElement.visible),\r\n // in der View nicht sichtbare Layer (minScale, maxScale) entsprechend markieren\r\n [CSS.geoInvisible]: !(!legendElement.hasOwnProperty(\"maxScale\") || (\r\n (legendElement.minScale === 0 || legendElement.minScale >= store.mapStore.view.scale)\r\n && legendElement.maxScale <= store.mapStore.view.scale))\r\n };\r\n // title als slug in class ergänzen\r\n if (title) {\r\n tableClasses[PathUtils.slug(title)] = true;\r\n }\r\n if(legendElement.metauid){\r\n tableClasses[PathUtils.slug(legendElement.metauid)] = true;\r\n }\r\n if(legendElement.group){\r\n tableClasses[PathUtils.slug(legendElement.group.id)] = true;\r\n if(legendElement.group.isGroup) {\r\n tableClasses[CSS.geoGroup] = true;\r\n }\r\n }\r\n const key = `legend-${layer.id}-type-${legendElement.type}-element-${legendElement.index}` + Math.random();\r\n return (\r\n
    \r\n {caption}\r\n {content}\r\n
    \r\n );\r\n }\r\n\r\n // Render an info of LegendElement\r\n private _renderLegendForElementInfo(\r\n elementInfo: any,\r\n layer: __esri.Layer,\r\n isSizeRamp: boolean,\r\n legendType: string\r\n ): React.ReactElement | null {\r\n // nested\r\n if (elementInfo.type) {\r\n return this._renderLegendForElement(elementInfo, layer, true);\r\n }\r\n\r\n let content: any = null;\r\n\r\n // Use symbol preview if available on the info\r\n if (elementInfo.symbol && elementInfo.preview) {\r\n content = ;\r\n } else if (elementInfo.src) {\r\n content = this._renderImage(elementInfo, layer);\r\n }\r\n\r\n if (!content) {\r\n return null;\r\n }\r\n // label als slug in class ergänzen\r\n let addClass = \"\";\r\n if (elementInfo.label) {\r\n addClass += \" \" + PathUtils.slug(\"label-\" + elementInfo.label);\r\n }\r\n const key = `legend-${(layer as any).uid}-value-${elementInfo.value}\r\n -lable-${(elementInfo.label? elementInfo.label: \"undefined\")}`;\r\n return (\r\n
    \r\n
    {content}
    \r\n
    \r\n {elementInfo.label || \"\"}\r\n
    \r\n\r\n
    \r\n );\r\n }\r\n\r\n private _renderImage(\r\n elementInfo: any,\r\n layer: __esri.Layer\r\n ): any {\r\n const { label, src, opacity } = elementInfo;\r\n\r\n const dynamicStyles = {\r\n opacity: `${opacity != null ? opacity : layer.opacity}`\r\n };\r\n\r\n return (\r\n \r\n );\r\n }\r\n\r\n // Color ramp customization\r\n private _renderLegendForRamp(\r\n legendElement: any,\r\n opacity: number\r\n ): any {\r\n const rampStops: any[] = legendElement.infos;\r\n const isOpacityRamp = legendElement.type === \"opacity-ramp\";\r\n\r\n const rampDiv = legendElement.preview;\r\n const opacityRampClass = isOpacityRamp ? CSS.opacityRamp : \"\";\r\n rampDiv.className = `${CSS.colorRamp} ${opacityRampClass}`;\r\n\r\n if (opacity != null) {\r\n rampDiv.style.opacity = opacity.toString();\r\n }\r\n\r\n const labelsContent = rampStops.map((stop) => (\r\n
    {stop.label}
    \r\n ));\r\n\r\n const colors: any[] = [];\r\n rampStops.forEach((stop) => {\r\n colors.push(stop.color.toHex());\r\n });\r\n\r\n // https://developers.arcgis.com/javascript/latest/api-reference/esri-symbols-support-symbolUtils.html#renderColorRampPreviewHTML\r\n const preview = esriSymbolUtils.renderColorRampPreviewHTML(colors, {\r\n align: \"horizontal\",\r\n gradient: true,\r\n width: 260,\r\n height: 10\r\n });\r\n const rampNode = (\r\n
    \r\n );\r\n\r\n return (\r\n
    \r\n {rampNode}\r\n
    \r\n {labelsContent}\r\n
    \r\n
    \r\n );\r\n }\r\n}\r\n\r\nexport const Legend = withStore(LegendBase);\r\n","import React from \"react\";\r\nimport * as esriSymbolUtils from \"@arcgis/core/symbols/support/symbolUtils\";\r\n\r\nconst CSS = {\r\n base: \"esri-legend\",\r\n widget: \"esri-widget\",\r\n panel: \"esri-widget--panel\",\r\n widgetIcon: \"esri-icon-layer-list\",\r\n service: \"esri-legend__service\",\r\n label: \"esri-legend__service-label\",\r\n layer: \"esri-legend__layer\",\r\n groupLayer: \"esri-legend__group-layer\",\r\n groupLayerChild: \"esri-legend__group-layer-child\",\r\n layerTable: \"esri-legend__layer-table\",\r\n layerTableSizeRamp: \"esri-legend__layer-table--size-ramp\",\r\n layerChildTable: \"esri-legend__layer-child-table\",\r\n layerCaption: \"esri-legend__layer-caption\",\r\n layerBody: \"esri-legend__layer-body\",\r\n layerRow: \"esri-legend__layer-row\",\r\n layerInfo: \"esri-legend__layer-cell esri-legend__layer-cell--info\",\r\n symbolContainer: \"esri-legend__layer-cell esri-legend__layer-cell--symbols\",\r\n symbol: \"esri-legend__symbol\",\r\n sizeRamp: \"esri-legend__size-ramp\",\r\n colorRamp: \"esri-legend__color-ramp\",\r\n opacityRamp: \"esri-legend__opacity-ramp\",\r\n // common\r\n header: \"esri-widget__heading\",\r\n hidden: \"esri-hidden\",\r\n // geo\r\n geoInvisible: \"geo-invisible\",\r\n geoLayerNotSelected: \"geo-legend-layer-not-selected\",\r\n geoLegendDisabled: \"geo-legend-disabled\"\r\n};\r\n\r\ninterface LegendPatchProps {\r\n elementInfo: __esri.SymbolTableElementInfo;\r\n}\r\nexport class LegendPatch extends React.Component {\r\n isMounted = false;\r\n watchHandles: any[] = [];\r\n autorunDisposers: any[] = [];\r\n symbolRef: React.RefObject;\r\n constructor(props: LegendPatchProps) {\r\n super(props);\r\n this.state = {\r\n preview: null\r\n };\r\n this.symbolRef = React.createRef();\r\n }\r\n componentDidMount(): void {\r\n this.isMounted = true;\r\n const {elementInfo} = this.props;\r\n const symbolOptions: any = {node: this.symbolRef.current};\r\n if (elementInfo.symbol.type === \"simple-line\") {\r\n symbolOptions[\"size\"] = { width: 25};\r\n } else if (elementInfo.symbol.type === \"simple-fill\") {\r\n symbolOptions[\"size\"] = 14;\r\n }\r\n esriSymbolUtils.renderPreviewHTML(elementInfo.symbol, symbolOptions)\r\n .then((element) => {\r\n if(this.isMounted) {\r\n this.setState({preview: element});\r\n }\r\n });\r\n }\r\n componentWillUnmount() {\r\n this.isMounted = false;\r\n }\r\n\r\n render(): React.ReactElement | null {\r\n const {preview} = this.state;\r\n return (
    \r\n \r\n
    \r\n );\r\n }\r\n}\r\n","import * as React from \"react\";\r\nimport {Cookies, withCookies} from \"react-cookie\";\r\n\r\nimport \"./maintenance.scss\";\r\n\r\nimport {MaintenanceConfiguration} from \"../../config/maintenance-configuration\";\r\nimport {Icon} from \"../icon/icon\";\r\nimport {instanceOf} from \"prop-types\";\r\nimport {IAppStore, withStore} from \"../../stores/abstract-app-store\";\r\n\r\nexport interface MaintenanceProps {\r\n config: MaintenanceConfiguration[];\r\n store?: IAppStore; // this is injected by withStore\r\n}\r\n\r\nclass Maintenance extends React.Component {\r\n static propTypes = {\r\n cookies: instanceOf(Cookies).isRequired\r\n };\r\n state = { visible: true};\r\n messageId;\r\n dismiss: string[] = [];\r\n maintenanceUiRef = React.createRef();\r\n\r\n constructor(props: MaintenanceProps) {\r\n super(props);\r\n const { cookies, config } = this.props;\r\n const cookieString = cookies.get(\"m-dismiss\");\r\n this.messageId = \"\"+Math.min(...config.map((m) => m.from.getTime()))\r\n +\"-\"+Math.max(...config.map((m) => m.to.getTime()));\r\n this.dismiss = cookieString? cookieString.split(\";\"): [];\r\n this.state = {\r\n visible: !this.dismiss.includes(this.messageId)\r\n };\r\n this.handleDismiss = this.handleDismiss.bind(this);\r\n }\r\n handleDismiss = () => {\r\n const { cookies, store } = this.props;\r\n this.setState({ visible: false });\r\n store?.uiStore.setUiOffsetTop();\r\n this.dismiss.push(this.messageId);\r\n cookies.set(\"m-dismiss\", this.dismiss.join(\";\"), { path: \"/\", sameSite: \"lax\" });\r\n };\r\n componentDidMount(): void {\r\n const {store} = this.props;\r\n store?.uiStore.setUiOffsetTop(this.maintenanceUiRef.current?.clientHeight);\r\n }\r\n render(): React.ReactElement | null {\r\n if (!this.state.visible) {\r\n return null;\r\n }\r\n const now = new Date();\r\n const maintenance = this.props.config.filter((m: MaintenanceConfiguration) =>\r\n // only display message in configured time frame\r\n now > m.from && now < m.to\r\n );\r\n\r\n const message: React.ReactElement[] = [];\r\n maintenance.forEach((m: MaintenanceConfiguration, index) => {\r\n message.push(

    );\r\n });\r\n\r\n if (message.length === 0) {\r\n return null;\r\n }\r\n return(\r\n

    \r\n {message}\r\n \r\n
    \r\n );\r\n }\r\n}\r\nexport default withCookies(withStore(Maintenance));\r\n","import * as React from \"react\";\r\n\r\nimport {\r\n MapFinderConfiguration,\r\n MapFinderMapConfiguration,\r\n} from \"../../../config/map-viewer-configuration\";\r\nimport {\r\n Button,\r\n Card,\r\n Image,\r\n Item,\r\n Icon as SemanticIcon,\r\n Input,\r\n Modal,\r\n Popup as SemanticPopup,\r\n Tab,\r\n TabPane\r\n} from \"semantic-ui-react\";\r\nimport {Icon} from \"../icon/icon\";\r\nimport {Link} from \"react-router-dom\";\r\n\r\nimport \"./map-finder.scss\";\r\nimport {observer} from \"mobx-react\";\r\nimport keyboardKey from \"keyboard-key\";\r\nimport {SyntheticEvent} from \"react\";\r\nimport {FormatUtils} from \"../../../utils/format-utils\";\r\nimport {autorun} from \"mobx\";\r\nimport {IAppStore, withStore} from \"../../stores/abstract-app-store\";\r\n\r\nexport interface MapFinderProps {\r\n small?: boolean;\r\n store?: IAppStore; // this is injected by withStore\r\n}\r\n\r\n@observer\r\nclass MapFinderBase extends React.Component {\r\n activeCard: React.RefObject | null = null;\r\n searchFieldRef: React.RefObject | null = null;\r\n autorunDisposers: any[] = [];\r\n constructor(props: MapFinderProps) {\r\n super(props);\r\n this.state = {\r\n activeIndex: 0,\r\n activeIndexBack: 0,\r\n searchTabIndex: -1,\r\n searchIsLoading: false,\r\n searchResults: [],\r\n searchResultIndex: 0,\r\n searchValue: \"\"\r\n };\r\n this.setOpen = this.setOpen.bind(this);\r\n this.addPane = this.addPane.bind(this);\r\n this.clearSearchInputField = this.clearSearchInputField.bind(this);\r\n this.handleSearchChange = this.handleSearchChange.bind(this);\r\n this.handleSearchKeyDown = this.handleSearchKeyDown.bind(this);\r\n this.handleTabChange = this.handleTabChange.bind(this);\r\n this.searchFieldRef = React.createRef();\r\n }\r\n componentDidMount(): void {\r\n const {store} = this.props;\r\n this.autorunDisposers.push(autorun(() => {\r\n if(store?.MapFinderStore.visible) {\r\n // Quick and Dirty: Timeout da Suchfeld nicht sofort vorhanden ist.\r\n setTimeout(() => this.searchFieldRef?.current?.focus(), 100);\r\n }\r\n }));\r\n }\r\n componentWillUnmount(): void {\r\n this.autorunDisposers.forEach((disposer: any) => {\r\n disposer();\r\n });\r\n this.autorunDisposers.length = 0;\r\n }\r\n setOpen(openFlag: boolean): void {\r\n const {store} = this.props;\r\n store?.MapFinderStore.setVisible(openFlag);\r\n }\r\n genSmall(addParam: string): React.ReactElement | undefined {\r\n const {store} = this.props;\r\n const groups: React.ReactElement[] = [];\r\n store?.mapViewerConfig.meta.mapFinder?.forEach((maps) => {\r\n const mapList = maps.maps.map((map) => {\r\n if (map.id !== store?.appStore.topic?.id) {\r\n let localFlag = true;\r\n if (map.url.indexOf(\"http\")===0) {\r\n localFlag = false;\r\n }\r\n if (localFlag) {\r\n return (
  • \r\n this.setOpen(false)}>\r\n {map.title}\r\n \r\n
  • );\r\n } else {\r\n return (
  • \r\n \r\n {map.title}\r\n \r\n
  • );\r\n }\r\n }else{\r\n return;\r\n }\r\n });\r\n const appList = maps.apps?.map((map) =>
  • \r\n \r\n {map.title}{(map.login)? : null}\r\n \r\n
  • );\r\n groups.push(

    {maps.id}

      {mapList}{appList}
    );\r\n });\r\n return (
    {groups}
    );\r\n }\r\n handleSearchChange(e: SyntheticEvent, { value }: {value: string}): void {\r\n if (value.length < 1) {\r\n this.setState((state: any) => (\r\n {\r\n activeIndex: state.activeIndexBack,\r\n searchResults: [],\r\n searchResultIndex: 0,\r\n searchValue: \"\"\r\n })\r\n );\r\n return;\r\n }\r\n const { store } = this.props;\r\n const newState = {\r\n activeIndex: store?.mapViewerConfig.meta.mapFinder?.length,\r\n searchValue: value,\r\n searchTabIndex: store?.mapViewerConfig.meta.mapFinder?.length\r\n };\r\n this.setState(newState);\r\n const re = new RegExp(FormatUtils.escapeRegExp(value), \"i\");\r\n const isMatch = (result: MapFinderMapConfiguration) => re.test(result.title) || re.test(result.titleFull)\r\n || (result.keywords && result.keywords.some((keyword)=>re.test(keyword)));\r\n\r\n const filteredResults: MapFinderConfiguration = {\r\n id: \"Suchresultate\",\r\n maps: [],\r\n apps: []\r\n };\r\n const ids: string[] = [];\r\n store?.mapViewerConfig.meta.mapFinder?.forEach((data) => {\r\n let results: MapFinderMapConfiguration[] | undefined = data.maps.filter((map) => {\r\n if (isMatch(map)) {\r\n if (!ids.includes(map.id)) {\r\n ids.push(map.id);\r\n return true;\r\n }\r\n }\r\n return false;\r\n });\r\n if (results.length) {\r\n filteredResults.maps =\r\n filteredResults.maps.concat(results);\r\n }\r\n results = data.apps?.filter((map) => {\r\n if (isMatch(map)) {\r\n if (!ids.includes(map.id)) {\r\n ids.push(map.id);\r\n return true;\r\n }\r\n }\r\n return false;\r\n });\r\n if (results?.length && filteredResults.apps) {\r\n filteredResults.apps =\r\n filteredResults.apps.concat(results);\r\n }\r\n });\r\n this.setState({\r\n searchIsLoading: false,\r\n searchResults: filteredResults,\r\n searchResultIndex: 0\r\n });\r\n }\r\n handleSearchKeyDown(e: KeyboardEvent) {\r\n const { searchResults, searchResultIndex } = this.state;\r\n const code = keyboardKey.getCode(e);\r\n\r\n if (code === keyboardKey.Enter) {\r\n e.preventDefault();\r\n this.activeCard?.current.handleClick();\r\n }\r\n\r\n if (code === keyboardKey.ArrowDown) {\r\n e.preventDefault();\r\n const next = Math.min(searchResultIndex + 1, searchResults.maps.length + searchResults.apps.length - 1);\r\n this.setState({ searchResultIndex: next });\r\n }\r\n\r\n if (code === keyboardKey.ArrowUp) {\r\n e.preventDefault();\r\n const next = Math.max(searchResultIndex - 1, 0);\r\n this.setState({ searchResultIndex: next });\r\n }\r\n }\r\n handleTabChange(e: SyntheticEvent, { activeIndex }: { activeIndex: number }): void {\r\n this.setState({ activeIndex, activeIndexBack: activeIndex });\r\n }\r\n handleCardClick(link?: string, e?: SyntheticEvent): void {\r\n if(e){\r\n e.preventDefault();\r\n }\r\n if (link) {\r\n window.open(link);\r\n }\r\n }\r\n clearSearchInputField(): void {\r\n this.setState((state: any) => (\r\n {\r\n activeIndex: state.activeIndexBack,\r\n searchResults: [],\r\n searchResultIndex: 0,\r\n searchValue: \"\"\r\n }\r\n ));\r\n }\r\n addPane(maps: MapFinderConfiguration,\r\n panes: Array<{ menuItem: string; render: () => React.ReactElement }>,\r\n addParam: string, activeItem = -9) {\r\n const {store} = this.props;\r\n let currentIndex = -1;\r\n const mapCards = maps.maps.map((map) => {\r\n if (map.id !== store?.appStore.topic?.id) {\r\n currentIndex++;\r\n let localFlag = true;\r\n if (map.url.indexOf(\"http\")===0) {\r\n localFlag = false;\r\n }\r\n let card: React.ReactElement;\r\n if (currentIndex === activeItem) {\r\n this.activeCard = React.createRef();\r\n }\r\n if (localFlag) {\r\n card = (this.setOpen(false)}>\r\n \r\n \r\n {map.title}\r\n \r\n );\r\n } else {\r\n card = (this.handleCardClick(data.href, e)}\r\n ref={(currentIndex === activeItem)? this.activeCard: undefined}\r\n target={\"_blank\"}>\r\n \r\n \r\n {map.title}\r\n \r\n );\r\n }\r\n return card;\r\n }else{\r\n return;\r\n }\r\n });\r\n const appCards = maps.apps?.map((map) => {\r\n currentIndex++;\r\n return this.handleCardClick(data.href, e)}\r\n ref={(currentIndex === activeItem)? this.activeCard: undefined}\r\n target={\"_blank\"}>\r\n \r\n \r\n {map.title}{(map.login) ? : null}\r\n \r\n ;\r\n });\r\n const render = () => (\r\n {(mapCards && mapCards.length > 0)? (\r\n \r\n \r\n Karten\r\n \r\n {mapCards}\r\n \r\n \r\n ): null}\r\n {(appCards && appCards?.length > 0)? (\r\n Anwendungen\r\n \r\n {appCards}\r\n \r\n Zugriff geschützt - Login benötigt\r\n ): null}\r\n {(mapCards.length === 0 && (!appCards || appCards.length === 0))? (\r\n \r\n \r\n Karten\r\n \r\n Keine Karte gefunden.\r\n \r\n \r\n ): null}\r\n );\r\n panes.push({ menuItem: maps.id, render });\r\n return panes;\r\n }\r\n render(): React.ReactElement | null {\r\n const { small, store } = this.props;\r\n const { activeIndex, searchResults, searchResultIndex, searchValue } = this.state;\r\n const open = store?.MapFinderStore.visible;\r\n let mapFinder: React.ReactElement | undefined;\r\n if (store?.mapViewerConfig.meta.mapFinder) {\r\n const panes: Array<{ menuItem: string; render: () => React.ReactElement }> = [];\r\n const addParam = new URLSearchParams();\r\n if (store?.mapStore.view?.center) {\r\n addParam.set(\"FOCUS\", Math.round(store?.mapStore.view.center.x)\r\n + \":\" + Math.round(store?.mapStore.view.center.y)\r\n // für Esri / Google / Bing tiling Schema Runden\r\n + \":\" + (Math.round(store?.mapStore.view.scale / 35) * 35));\r\n }\r\n if(store?.mapStore.basemap){\r\n const tag = store?.mapStore.basemap.tags?.find((t) => t.toLowerCase().indexOf(\"mv6:\")===0);\r\n if(tag){\r\n addParam.set(\"BASEMAP\", tag.substring(4).toUpperCase());\r\n }\r\n }\r\n let addParamString = addParam.toString();\r\n if (addParamString !== \"\") {\r\n addParamString = \"?\" + addParamString;\r\n }\r\n if (small) {\r\n mapFinder = this.genSmall(addParamString);\r\n } else {\r\n store?.mapViewerConfig.meta.mapFinder.forEach((maps) => {\r\n this.addPane(maps, panes, addParamString);\r\n });\r\n if (searchValue) {\r\n this.addPane(searchResults, panes, addParamString, searchResultIndex);\r\n }\r\n mapFinder = ( this.setOpen(false)}\r\n onOpen={() => this.setOpen(true)}\r\n trigger={\r\n
    }\r\n on={\"hover\"}/>
    \r\n }\r\n >\r\n Weitere Karten\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n zum Geoportal\r\n \r\n \r\n );\r\n }\r\n }\r\n return <>{mapFinder};\r\n }\r\n}\r\n\r\nexport const MapFinder = withStore(MapFinderBase);\r\n","import React from \"react\";\r\nimport { Message, MessageProps } from \"semantic-ui-react\";\r\nimport { instanceOf } from \"prop-types\";\r\nimport { withCookies, Cookies } from \"react-cookie\";\r\n\r\nimport \"./message-block.scss\";\r\nimport {Icon} from \"../icon/icon\";\r\n\r\nclass MessageBlock extends React.Component {\r\n static propTypes = {\r\n cookies: instanceOf(Cookies).isRequired\r\n };\r\n state = { visible: true};\r\n messageId;\r\n dismiss: string[] = [];\r\n constructor(props: MessageProps) {\r\n super(props);\r\n const { cookies, topic, subtopic, index } = this.props;\r\n const cookieString = cookies.get(\"mv-dismiss\");\r\n this.messageId = topic +(subtopic? \"_\"+subtopic:\"\")+ \"_\" + index;\r\n this.dismiss = cookieString? cookieString.split(\";\"): [];\r\n this.state = {\r\n visible: !this.dismiss.includes(this.messageId)\r\n };\r\n this.handleDismiss = this.handleDismiss.bind(this);\r\n }\r\n handleDismiss = (): void => {\r\n const { cookies } = this.props;\r\n this.setState({ visible: false });\r\n this.dismiss.push(this.messageId);\r\n cookies.set(\"mv-dismiss\", this.dismiss.join(\";\"), { path: \"/\", sameSite: \"lax\" });\r\n };\r\n\r\n render(): React.ReactElement | null {\r\n if (this.state.visible && this.props.content) {\r\n let className = \"geo-component\";\r\n if (this.props.className) {\r\n className += \" \" + this.props.className;\r\n }\r\n // quick and dirty!\r\n const content = (\r\n
    \r\n \r\n

    \r\n

    \r\n );\r\n return (\r\n \r\n );\r\n }\r\n\r\n return null;\r\n }\r\n}\r\nexport default withCookies(MessageBlock);\r\n","import * as React from \"react\";\r\nimport {observer} from \"mobx-react\";\r\n\r\nimport \"./message-box.scss\";\r\n\r\nimport {Button, Card, Progress} from \"semantic-ui-react\";\r\nimport {IAppStore, withStore} from \"../../stores/abstract-app-store\";\r\n\r\nexport interface MessageBoxProps {\r\n store?: IAppStore; // this is injected by withStore\r\n}\r\n\r\n@observer\r\nclass MessageBoxBase extends React.Component {\r\n\r\n constructor(props: MessageBoxProps) {\r\n super(props);\r\n }\r\n\r\n /**\r\n * Update progress bar\r\n */\r\n progress(percent: number) {\r\n if (percent < 0) {\r\n percent = 0;\r\n }\r\n if (percent > 100) {\r\n percent = 100;\r\n }\r\n this.setState(() => ({\r\n percent,\r\n }));\r\n }\r\n\r\n render() {\r\n const {store} = this.props;\r\n if (!store) {\r\n return;\r\n }\r\n\r\n const {\r\n type,\r\n show,\r\n percent,\r\n title,\r\n subTitle,\r\n message,\r\n hasProgress,\r\n okButton,\r\n cancelButton\r\n } = store.appStore.messageBox;\r\n\r\n if (!show) {\r\n return null;\r\n }\r\n\r\n const showFooter = hasProgress || okButton || cancelButton;\r\n const css = `ui top aligned geo-component geo-widget geo-popup geo-popup--shadow geo-message-box ${type}`;\r\n return (\r\n
    \r\n \r\n \r\n {title}\r\n {subTitle &&\r\n \r\n {subTitle}\r\n \r\n }\r\n \r\n {message}\r\n \r\n \r\n {showFooter &&\r\n \r\n {hasProgress &&\r\n \r\n }\r\n {okButton &&\r\n \r\n }\r\n {cancelButton &&\r\n \r\n }\r\n \r\n }\r\n \r\n
    \r\n );\r\n }\r\n}\r\n\r\nexport const MessageBox = withStore(MessageBoxBase);\r\n","import React from \"react\";\r\nimport { Button, Modal, ModalProps } from \"semantic-ui-react\";\r\nimport { instanceOf } from \"prop-types\";\r\nimport { withCookies, Cookies } from \"react-cookie\";\r\n\r\nclass MessageStartup extends React.Component {\r\n static propTypes = {\r\n cookies: instanceOf(Cookies).isRequired\r\n };\r\n state = { visible: true};\r\n messageId;\r\n dismiss: string[] = [];\r\n constructor(props: ModalProps) {\r\n super(props);\r\n const { cookies, topic, subtopic } = this.props;\r\n const cookieString = cookies.get(\"mv-dismiss\");\r\n this.messageId = topic +(subtopic? \"_\"+subtopic:\"\")+ \"_start\";\r\n this.dismiss = cookieString? cookieString.split(\";\"): [];\r\n this.state = {\r\n visible: !this.dismiss.includes(this.messageId)\r\n };\r\n this.handleDismiss = this.handleDismiss.bind(this);\r\n }\r\n handleDismiss = (): void => {\r\n const { cookies } = this.props;\r\n this.setState({ visible: false });\r\n this.dismiss.push(this.messageId);\r\n cookies.set(\"mv-dismiss\", this.dismiss.join(\";\"), { path: \"/\", sameSite: \"lax\" });\r\n };\r\n\r\n render(): React.ReactElement | null {\r\n if (this.state.visible) {\r\n let className = \"geo-component\";\r\n if (this.props.className) {\r\n className += \" \" + this.props.className;\r\n }\r\n // quick and dirty!\r\n const content =

    ;\r\n return (\r\n \r\n {this.props.header}\r\n \r\n \r\n {content}\r\n \r\n \r\n \r\n \r\n \r\n \r\n );\r\n }\r\n\r\n return null;\r\n }\r\n}\r\nexport default withCookies(MessageStartup);\r\n","import React, {Component} from \"react\";\r\n\r\nimport \"./not-found.scss\";\r\n\r\nimport {Container, Header, Segment} from \"semantic-ui-react\";\r\nimport { Link } from \"react-router-dom\";\r\nimport SVG from \"react-inlinesvg\";\r\nimport logo from \"../../../assets/images/kt_logo_default.svg\";\r\nimport {Title} from \"../title/title\";\r\n\r\nexport class Notfound extends Component {\r\n render(): React.ReactElement {\r\n return (\r\n \r\n

    \r\n \r\n Geoportal\r\n
    \r\n \r\n <>\r\n \r\n <Header as=\"h2\">Anwendung nicht gefunden</Header>\r\n <p>\r\n Die gesuchte Anwendung konnte leider nicht gefunden werden. <br/><br/>\r\n Dies kann unterschiedliche Ursachen haben:\r\n </p>\r\n <ul>\r\n <li>Die Anwendung wurde unter einer falschen Adresse aufgerufen.</li>\r\n <li>Die Anwendung steht kurzzeitig nicht zur Verfügung.</li>\r\n <li>Die Anwendung wurde verschoben oder gelöscht.</li>\r\n </ul>\r\n <p>Folgende Schritte können Sie durchführen:</p>\r\n <ul>\r\n <li>Überprüfen Sie die korrekte Schreibweise der Webadresse.</li>\r\n <li>Verwenden Sie die Navigation oder die Suche im <Link to=\"https://geoportal.lu.ch/\">\r\n <span className=\"linked\">Kantonalen Geoportal</span>\r\n </Link> um zum gewünschten Angebot zu gelangen.\r\n </li>\r\n </ul>\r\n <p>Sollten Sie damit keinen Erfolg erzielen, <Link to=\"mailto:geo@lu.ch\">\r\n <span className=\"linked\">kontaktieren Sie uns</span>\r\n </Link> mit Angabe der gesuchten Anwendung und des verwendeten Browsers.\r\n </p>\r\n <p>\r\n Vielen Dank für Ihre Unterstützung.<br/>\r\n Geoinformation Kanton Luzern\r\n </p>\r\n </>\r\n </Segment>\r\n </Container>\r\n );\r\n }\r\n}\r\n","import * as React from \"react\";\r\n\r\nimport {Button, Modal} from \"semantic-ui-react\";\r\nimport {Icon} from \"../../../icon/icon\";\r\n\r\nimport \"./popup-panel-action-oea.scss\";\r\nimport {observer} from \"mobx-react\";\r\nimport {ActionButtonConfiguration} from \"../../../../config/action-configuration\";\r\nimport SVG from \"react-inlinesvg\";\r\nimport logo from \"../../../../../assets/images/kt_logo_default.svg\";\r\n\r\nexport interface PopupPanelActionOeaProps {\r\n actionConfig: ActionButtonConfiguration;\r\n buttonAsLink?: boolean;\r\n floated?: \"left\" | \"right\";\r\n graphic: __esri.Graphic;\r\n size?: \"mini\" | \"tiny\" | \"small\" | \"medium\" | \"large\" | \"big\" | \"huge\" | \"massive\";\r\n}\r\n@observer\r\nexport class PopupPanelActionOea extends React.Component<PopupPanelActionOeaProps, any> {\r\n\r\n constructor(props: PopupPanelActionOeaProps) {\r\n super(props);\r\n this.state = {\r\n open: false\r\n };\r\n this.setOpen = this.setOpen.bind(this);\r\n }\r\n setOpen(openFlag: boolean): void {\r\n this.setState({open: openFlag});\r\n }\r\n render(): React.ReactElement | null {\r\n const {actionConfig, buttonAsLink, floated, graphic, size} = this.props;\r\n if (!graphic) {\r\n return null;\r\n }\r\n const iFrameSrc = actionConfig.url +\r\n \"grundbuch=\" + (graphic.attributes.GBPER_CODE? graphic.attributes.GBPER_CODE: graphic.attributes.gbper_code) +\r\n \";grundstueckNummer=\" + (graphic.attributes.NUMMER? graphic.attributes.NUMMER: graphic.attributes.nummer) +\r\n \";fromMap=true\";\r\n return <Modal\r\n className={\"geo-popup-action-modal\"}\r\n centered={false}\r\n dimmer={\"blurring\"}\r\n open={this.state.open}\r\n onClose={() => this.setOpen(false)}\r\n onOpen={() => this.setOpen(true)}\r\n trigger={<Button\r\n compact\r\n floated={floated}\r\n size={size}\r\n className={\r\n (actionConfig.className? actionConfig.className +\" \": \"\")+(buttonAsLink? \"geo-link-button\":\"\")}>\r\n {actionConfig.icon && <Icon name={actionConfig.icon}/>} <span className={\"action-title\"}>\r\n {actionConfig.title}</span></Button>}\r\n >\r\n <Modal.Header>\r\n <span className={\"header__logo\"}><SVG src={logo} height={27} width={84}/></span>\r\n <span className={\"header__label-name\"}>Grundbuch</span>\r\n </Modal.Header>\r\n <Modal.Content>\r\n <Modal.Description>\r\n <iframe src={iFrameSrc} width={\"100%\"} height={\"100%\"}/>\r\n </Modal.Description>\r\n </Modal.Content>\r\n <Modal.Actions>\r\n <Button onClick={() => this.setOpen(false)} primary>\r\n Schliessen\r\n </Button>\r\n </Modal.Actions>\r\n </Modal>;\r\n }\r\n}\r\n","import {CustomChartConfiguration} from \"../../../../config/content-configuration\";\r\nimport * as d3 from \"d3\";\r\n\r\ninterface SeriesDataElement { key: string; value: number; x: number; label: string }\r\ninterface Margins { top: number; right: number; bottom: number; left: number }\r\n\r\ninterface PopupItemChartProps {\r\n config: CustomChartConfiguration;\r\n view: __esri.MapView | __esri.SceneView | undefined;\r\n graphic: __esri.Graphic;\r\n}\r\n\r\nexport class PopupPanelItemChart {\r\n watchHandles: any[] = [];\r\n props: PopupItemChartProps;\r\n data: SeriesDataElement[];\r\n colors: string[] = [];\r\n dataPointsVisible=true;\r\n graphDiv: HTMLElement;\r\n width = 392;\r\n height = 230;\r\n margins: Margins = {top: 35, right: 20, bottom: 30, left: 30 };\r\n\r\n constructor(props: PopupItemChartProps) {\r\n this.props = props;\r\n const {config} = this.props;\r\n if(config.axis.x?.labels && typeof config.axis.x?.labels.entries !== \"function\") {\r\n // fix für Proleme mit Map im typescript-json-serializer\r\n const labels: Map<number, string> = new Map();\r\n for (const [key, value] of Object.entries(config.axis.x.labels)) {\r\n labels.set(key as number, value);\r\n }\r\n config.axis.x.labels = labels;\r\n }\r\n this.callout = this.callout.bind(this);\r\n this.componentDidMount();\r\n }\r\n /**\r\n * Data extent for Y values\r\n */\r\n get xExtent(): Array<number | { valueOf(): number }> {\r\n const {config} = this.props;\r\n const data = this.data;\r\n const ext = d3.extent(data, (d) => d.x);\r\n if(typeof config.axis?.x?.min !== \"undefined\") {\r\n ext[0] = config.axis.x.min;\r\n }\r\n if(typeof config.axis?.x?.max !== \"undefined\") {\r\n ext[1] = config.axis.x.max;\r\n }\r\n // @ts-ignore\r\n return ext;\r\n }\r\n /**\r\n * Data extent for Y values\r\n */\r\n get yExtent(): Array<number | { valueOf(): number }> {\r\n const {config} = this.props;\r\n const data = this.data;\r\n const ext = d3.extent(data, (d) => d.value);\r\n if(typeof config.axis?.y?.min !== \"undefined\") {\r\n ext[0] = config.axis.y.min;\r\n }\r\n if(typeof config.axis?.y?.max !== \"undefined\") {\r\n ext[1] = config.axis.y.max;\r\n }\r\n // @ts-ignore\r\n return ext;\r\n }\r\n componentDidMount(): void {\r\n\r\n }\r\n componentWillUnmount(): void {\r\n this.watchHandles.forEach((handle: any) => {\r\n handle.remove();\r\n });\r\n this.watchHandles.length = 0;\r\n }\r\n draw(data: SeriesDataElement[]): void {\r\n const {config} = this.props;\r\n const node = this.graphDiv;\r\n // Specify the chart’s dimensions.\r\n const margins = this.margins;\r\n // Create the positional scales.\r\n const x = this.x();\r\n const y = this.y();\r\n\r\n d3.select(node).select(\"svg\").remove(); // remove previous graphs\r\n const svg = d3.select(node).append(\"svg\")\r\n .attr(\"width\", this.width)\r\n .attr(\"height\", this.height)\r\n .attr(\"viewBox\", [0, 0, this.width, this.height])\r\n .attr(\"style\", \"max-width: 100%; this.height: auto; overflow: visible; font-size: 10px;\");\r\n\r\n // Add the horizontal axis.\r\n if(config.axis.x?.labels){\r\n svg.append(\"g\")\r\n .attr(\"transform\", `translate(0,${this.height - margins.bottom})`)\r\n .call(d3.axisBottom(x)\r\n .tickValues(config.axis.x.labels.keys())\r\n .tickSizeOuter(0)\r\n .tickFormat((v) =>\r\n config.axis.x?.labels?.get(v as number)));\r\n }else{\r\n svg.append(\"g\")\r\n .attr(\"transform\", `translate(0,${this.height - margins.bottom})`)\r\n .call(d3.axisBottom(x).ticks(this.width / 80).tickSizeOuter(0));\r\n }\r\n\r\n // Add the vertical axis.\r\n svg.append(\"g\")\r\n .attr(\"transform\", `translate(${margins.left},0)`)\r\n .call(d3.axisLeft(y))\r\n .call(g => g.select(\".domain\").remove())\r\n .call(g => g.selectAll(\".tick line\").clone()\r\n .attr(\"x2\", this.width - margins.left - margins.right)\r\n .attr(\"stroke-opacity\", 0.1))\r\n .call(g => g.append(\"text\")\r\n .attr(\"x\", -margins.left)\r\n .attr(\"y\", 25)\r\n .attr(\"fill\", \"currentColor\")\r\n .attr(\"text-anchor\", \"start\")\r\n .text(config.title));\r\n\r\n\r\n // Compute the points in pixel space as [x, y, z], where z is the name of the series.\r\n const points = data.map((d) => [x(d.x), y(d.value), d.key]);\r\n\r\n // Add a container for each series.\r\n const serie = svg.append(\"g\")\r\n .selectAll()\r\n .data(d3.group(data, (d) => d.key))\r\n .join(\"g\");\r\n // Draw the lines.\r\n const path = serie.append(\"path\")\r\n .attr(\"fill\", \"none\")\r\n .attr(\"stroke\", (d) => this.color(d[0]))\r\n .attr(\"stroke-width\", 1.5)\r\n .attr(\"d\", (d) => d3.line()\r\n .x((sd) => x((sd as SeriesDataElement).x))\r\n .y((sd) => y((sd as SeriesDataElement).value))(d[1]));\r\n let dataPoints;\r\n if (this.dataPointsVisible) {\r\n dataPoints = svg.selectAll(\"circle\").data(data).enter().append(\"circle\")\r\n .attr(\"cx\", (d) =>this.x()(d.x))\r\n .attr(\"cy\", (d) => this.y()(d.value))\r\n .style(\"fill\", (d) => this.color(d.key))\r\n .attr(\"r\", 3)\r\n .attr(\"class\", \"data-point\");\r\n }\r\n // append legends\r\n const legend = svg\r\n .selectAll(\"g.legend\")\r\n .data(d3.group(data, (d) => d.key))\r\n .enter()\r\n .append(\"g\")\r\n .attr(\"class\", \"legend\");\r\n legend.append(\"circle\")\r\n .attr(\"cx\", (d, i) => this.width/config.mediaInfos.length*i)\r\n .attr(\"cy\", 5)\r\n .attr(\"r\", 3)\r\n .style(\"fill\", (d) => this.color(d[0]));\r\n\r\n legend.append(\"text\")\r\n .attr(\"x\", (d, i) => this.width/config.mediaInfos.length*i+8)\r\n .attr(\"y\", 8)\r\n .text((d, i) => config.mediaInfos[i].altText? config.mediaInfos[i].altText: d[0] as string );\r\n // Add an invisible layer for the interactive tip.\r\n const tooltip = svg.append(\"g\");\r\n const dot = svg.append(\"g\")\r\n .attr(\"display\", \"none\");\r\n\r\n dot.append(\"circle\")\r\n .attr(\"r\", 5);\r\n\r\n dot.append(\"text\")\r\n .attr(\"text-anchor\", \"middle\")\r\n .attr(\"y\", -8);\r\n\r\n svg\r\n .on(\"pointerenter\", ()=> {\r\n path.style(\"mix-blend-mode\", null).style(\"opacity\", 0.15);\r\n if(dataPoints){\r\n dataPoints.style(\"mix-blend-mode\", null).style(\"opacity\", 0.15);\r\n }\r\n dot.attr(\"display\", null);\r\n })\r\n .on(\"pointermove\", (event)=>{\r\n const [xm, ym] = d3.pointer(event);\r\n const i = d3.leastIndex(points, ([x, y]) => Math.hypot(x - xm, y - ym));\r\n const [x, y, k] = points[i];\r\n path.style(\"opacity\", (z) => z[0] === k ? null : 0.15).filter((z) => z[0] === k).raise();\r\n if(dataPoints){\r\n dataPoints.style(\"opacity\", (z) => z.key === k ? null : 0.15).filter((z) => z.key === k).raise();\r\n }\r\n let label = config.tooltip?.content? config.tooltip.content: \"[x-value] [unit]\\n[group]\";\r\n if(config.tooltip?.specialContent && config.tooltip.specialContent[i]){\r\n label = config.tooltip.specialContent[i];\r\n }\r\n const yValueFormatted =\r\n data[i].value.toLocaleString(\"de-CH\", { style: \"decimal\", maximumFractionDigits: 3});\r\n const xValueFormatted =\r\n data[i].x.toLocaleString(\"de-CH\", { style: \"decimal\", maximumFractionDigits: 3});\r\n label = label.replaceAll(\"[y-value]\", yValueFormatted);\r\n label = label.replaceAll(\"[x-value]\", xValueFormatted);\r\n label = label.replaceAll(\"[unit]\", config.title);\r\n label = label.replaceAll(\"[group]\", k as string);\r\n dot.attr(\"transform\", `translate(${x},${y})`);\r\n dot.style(\"fill\", this.color(k)).raise();\r\n tooltip\r\n .attr(\"class\", \"chart-tooltip\")\r\n .attr(\"transform\", `translate(${x},${y + 10})`)\r\n .call(this.callout, label,[x, y]).raise();\r\n })\r\n .on(\"pointerleave\", () => {\r\n path.style(\"mix-blend-mode\", \"multiply\").style(\"opacity\", null);\r\n dot.attr(\"display\", \"none\");\r\n if(dataPoints){\r\n dataPoints.style(\"mix-blend-mode\", null).style(\"opacity\", null);\r\n }\r\n tooltip.call(this.callout, null, null);\r\n })\r\n .on(\"touchstart\", (event) => event.preventDefault());\r\n\r\n }\r\n callout(g: any, value: any, pos: any) {\r\n if (!value) {\r\n return g.style(\"display\", \"none\");\r\n }\r\n\r\n g.style(\"display\", null)\r\n .style(\"pointer-events\", \"none\")\r\n .style(\"font-size\", \"10px\");\r\n\r\n const path = g.selectAll(\"path\")\r\n .data([null])\r\n .join(\"path\");\r\n\r\n const text = g.selectAll(\"text\")\r\n .data([null])\r\n .join(\"text\")\r\n .call((txt: any) =>\r\n txt.selectAll(\"tspan\")\r\n .data((value + \"\").split(/\\n/))\r\n .join(\"tspan\")\r\n .attr(\"x\", 0)\r\n .attr(\"y\", (d: any, i: any) => `${i * 1.1}em`)\r\n .style(\"font-weight\", (_: any, i: any) => i ? null : \"bold\")\r\n .text((d: any) => d));\r\n\r\n const {y, width: w, height: h} = text.node().getBBox();\r\n // Tooltip innerhalb des SVGs\r\n const left = (pos[0]-w/2 < 0)? -20: (pos[0]+w/2 > this.width)? -(w-(this.width-pos[0])):-w/2;\r\n if(pos[1]+h+15+20 > this.height){\r\n text.attr(\"transform\", `translate(${left},${y - 15 - h})`);\r\n path.attr(\"d\", `M${left - 10},-23H-5l5,5l5,-5H${w + left + 10}v-${h + 20}h-${w + 20}z`);\r\n }else{\r\n text.attr(\"transform\", `translate(${left},${15 - y})`);\r\n path.attr(\"d\", `M${left - 10},5H-5l5,-5l5,5H${w + left + 10}v${h + 20}h-${w + 20}z`);\r\n }\r\n }\r\n /**\r\n * X value scaling\r\n */\r\n x() {\r\n const {left, right} = this.margins;\r\n return d3.scaleLinear()\r\n .domain(this.xExtent)\r\n .range([\r\n left,\r\n this.width - right\r\n ]);\r\n }\r\n\r\n /**\r\n * Y value scaling\r\n */\r\n y() {\r\n const margins = this.margins;\r\n return d3.scaleLinear()\r\n .domain(this.yExtent).nice()\r\n .range([\r\n this.height - margins.bottom,\r\n margins.top\r\n ]);\r\n }\r\n color(key: any) {\r\n //set color pallete for different vairables\r\n const seriesName = [...new Set(this.data.map((d) => d.key))];\r\n return this.colors[seriesName.indexOf(key)];\r\n }\r\n prepareValues(): SeriesDataElement[] {\r\n const {config, graphic} = this.props;\r\n const data: SeriesDataElement[] = [];\r\n config.mediaInfos.forEach((m: __esri.LineChartMediaInfo)=>{\r\n this.colors.push(\"rgba(\"+m.value.colors[0].join(\",\")+\")\");\r\n const entries = config.axis.x?.labels?.entries();\r\n m.value.fields.forEach((f: string)=> {\r\n if(entries) {\r\n const next = entries.next();\r\n data.push({\r\n key: m.title,\r\n value: parseFloat(graphic.getAttribute(f)),\r\n x: next.value[0],\r\n label: next.value[1]\r\n });\r\n }\r\n });\r\n });\r\n this.data = data;\r\n return data;\r\n }\r\n render(): HTMLElement {\r\n this.graphDiv = document.createElement(\"div\");\r\n this.graphDiv.className = \"geo-chart\";\r\n this.draw(this.prepareValues());\r\n return this.graphDiv;\r\n }\r\n}\r\n","import React from \"react\";\r\nimport {autorun} from \"mobx\";\r\nimport EsriFeature from \"@arcgis/core/widgets/Feature\";\r\n\r\nimport {PopupConfiguration} from \"../../../../config/popup-configuration\";\r\nimport {observer} from \"mobx-react\";\r\nimport {Button} from \"semantic-ui-react\";\r\nimport {ActionButtonConfiguration} from \"../../../../config/action-configuration\";\r\nimport {GeoICONS, Icon} from \"../../../icon/icon\";\r\nimport {PopupPanelActionOea} from \"../popup-panel-actions/popup-panel-action-oea\";\r\nimport * as arcade from \"@arcgis/core/arcade\";\r\nimport EsriGraphic from \"@arcgis/core/Graphic\";\r\nimport * as geometryEngine from \"@arcgis/core/geometry/geometryEngine\";\r\nimport FeatureLayer from \"@arcgis/core/layers/FeatureLayer\";\r\nimport {PathUtils} from \"../../../../../utils/path-utils\";\r\nimport {IAppStore, withStore} from \"../../../../stores/abstract-app-store\";\r\n\r\ninterface PopupItemProps {\r\n config: PopupConfiguration;\r\n graphic: __esri.Graphic;\r\n featureIndex: number;\r\n panelIndex: number;\r\n store?: IAppStore; // this is injected by withStore\r\n titleHandle: (newTitle: string) => void;\r\n onHighlightClick: (e: React.MouseEvent, panelIndex: number, featureIndex: number) => void;\r\n onZoomInClick: (e: React.MouseEvent, panelIndex: number, featureIndex: number) => void;\r\n}\r\n@observer\r\nclass PopupPanelItemBase extends React.Component<PopupItemProps, any> {\r\n watchHandles: any[] = [];\r\n popupItemRef: any;\r\n constructor(props: PopupItemProps) {\r\n super(props);\r\n this.popupItemRef = React.createRef();\r\n this.state = {\r\n title: false,\r\n profileIsLoading: false\r\n };\r\n this.handleButtonClick = this.handleButtonClick.bind(this);\r\n }\r\n componentDidMount(): void {\r\n const {featureIndex, panelIndex, graphic, store} = this.props;\r\n autorun((reaction: any) => {\r\n if (!store?.mapStore.view) {\r\n return;\r\n }\r\n const popupStore = store.PopupStore;\r\n\r\n const featureChild = new EsriFeature({\r\n container: this.popupItemRef.current,\r\n graphic,\r\n map: store.mapStore.map,\r\n defaultPopupTemplateEnabled: true,\r\n spatialReference: store.mapStore.view.spatialReference,\r\n visibleElements: { title: false }\r\n });\r\n this.watchHandles.push(featureChild.watch(\"title\", (title) => {\r\n this.setState({title});\r\n if(title && popupStore.getActivePage(panelIndex) === featureIndex){\r\n this.props.titleHandle(featureChild.title);\r\n }\r\n }));\r\n this.watchHandles.push(featureChild.viewModel.watch(\"waitingForContent\", (waitingForContent) => {\r\n if (!waitingForContent) {\r\n if (featureChild.title !== this.state.title) {\r\n this.setState({title: featureChild.title});\r\n if(popupStore.getActivePage(panelIndex) === featureIndex) {\r\n this.props.titleHandle(featureChild.title);\r\n }\r\n }\r\n // wird für eine allfällige Neupositionierung des Popups verwendet\r\n popupStore.setLastItemTitle(featureChild.title);\r\n }\r\n }));\r\n reaction.dispose();\r\n });\r\n }\r\n componentDidUpdate() {\r\n const {store, panelIndex} = this.props;\r\n const popupStore = store?.PopupStore;\r\n\r\n if (popupStore?.getActivePage(panelIndex) === this.props.featureIndex) {\r\n if(this.state.title){\r\n this.props.titleHandle(this.state.title);\r\n }\r\n }\r\n }\r\n componentWillUnmount(): void {\r\n const { graphic, store} = this.props;\r\n this.watchHandles.forEach((handle: any) => {\r\n handle.remove();\r\n });\r\n this.watchHandles.length = 0;\r\n // allfälliges Timeout von \"ExternalService\" löschen\r\n store?.PopupStore.clearTimeout((graphic as any).sourceLayer.uid+graphic.getObjectId());\r\n }\r\n handleButtonClick(e: React.MouseEvent, action: ActionButtonConfiguration): void {\r\n const {graphic, store} = this.props;\r\n if (!store?.mapStore.view) {\r\n return;\r\n }\r\n if (typeof action.id !== \"undefined\") {\r\n if (action.id === \"gravis\") {\r\n window.open(action.url +\r\n \"Suche.Gemeinde=\"\r\n + (graphic.attributes.BFS_NR? graphic.attributes.BFS_NR: graphic.attributes.bfs_nr)\r\n + \"&FOCUS=\" + store.mapStore.view.center.x + \":\" + store.mapStore.view.center.y\r\n + \":\" + store.mapStore.view.scale,\r\n \"gravis\");\r\n } else if (action.id === \"oereb\") {\r\n const egrid: string =\r\n (graphic.attributes.EGRIS_EGRID? graphic.attributes.EGRIS_EGRID: graphic.attributes.egris_egrid)\r\n window.open((action.url as string).replace(\"{EGRID}\", egrid),\r\n \"oereb\");\r\n } else if (action.id === \"objekt\") {\r\n window.open(action.url + \"\"\r\n + (graphic.attributes.EGRIS_EGRID? graphic.attributes.EGRIS_EGRID: graphic.attributes.egris_egrid),\r\n \"objekt\");\r\n } else if (action.id === \"link\") {\r\n const profile: __esri.Profile = {\r\n variables: [{\r\n name: \"$feature\",\r\n type: \"feature\"\r\n }]\r\n };\r\n if(action.url) {\r\n const actionUrl = action.url?.indexOf(\"`\") > -1 ? action.url : \"`\" + action.url + \"`\";\r\n const arcadeExecutor = arcade.createArcadeExecutor(actionUrl, profile);\r\n arcadeExecutor.then((ae) => {\r\n const link = ae.execute({\r\n $feature: graphic\r\n });\r\n window.open(link, \"link\");\r\n });\r\n } else {\r\n // eslint-disable-next-line no-console\r\n console.warn(\"Keine URL definiert!\");\r\n }\r\n } else if (action.id === \"profile\") {\r\n store?.uiStore.setActiveTool(\"profile\", graphic);\r\n } else if (action.id === \"profile_query\") {\r\n const queryConfig = action.query;\r\n if(queryConfig) {\r\n this.setState({profileIsLoading: true});\r\n let searchLayer: FeatureLayer | __esri.Sublayer | __esri.MapImageLayer | undefined;\r\n // sourceLayer on Graphic is not documented!\r\n if (\"sourceLayer\" in graphic){\r\n searchLayer = (graphic as any).sourceLayer;\r\n if(searchLayer && searchLayer.hasOwnProperty(\"layer\") && searchLayer.hasOwnProperty(\"id\")\r\n && queryConfig.hasOwnProperty(\"layerId\") && queryConfig.layerId !== searchLayer?.id){\r\n searchLayer = (searchLayer as __esri.Sublayer).layer as __esri.MapImageLayer;\r\n }\r\n } else if (queryConfig.id === \"self\"\r\n && queryConfig.hasOwnProperty(\"portalItem\")) {\r\n const layerConfig = {\r\n layerType: \"feature\",\r\n layerId: (queryConfig.layerId) ? queryConfig.layerId : undefined,\r\n portalItem: queryConfig.portalItem,\r\n opacity: 1,\r\n listMode: \"hide\",\r\n legendEnabled: false,\r\n title: (queryConfig.title) ? queryConfig.title : undefined\r\n };\r\n searchLayer = new FeatureLayer(layerConfig as __esri.FeatureLayerProperties);\r\n }else{\r\n // eslint-disable-next-line no-console\r\n console.warn(\"Keine gültiger Layer für Query definiert!\");\r\n }\r\n if(searchLayer) {\r\n searchLayer.load().then((v) => {\r\n if(searchLayer && searchLayer.hasOwnProperty(\"allSublayers\")) {\r\n searchLayer = v.allSublayers.find((sublayer: __esri.Sublayer) =>\r\n sublayer.id === queryConfig.layerId);\r\n }\r\n if (searchLayer) {\r\n const profile: __esri.Profile = {\r\n variables: [{\r\n name: \"$feature\",\r\n type: \"feature\"\r\n }]\r\n };\r\n const arcadeExecutor = arcade.createArcadeExecutor(queryConfig.expression, profile);\r\n arcadeExecutor.then((ae) => {\r\n let where = ae.execute({\r\n $feature: graphic\r\n });\r\n if (typeof where === \"string\" && searchLayer) {\r\n // definitionExpression in Suche berücksichtigen, falls diese definiert ist.\r\n if ((searchLayer as any).definitionExpression) {\r\n where = `(${where}) AND (${(searchLayer as any).definitionExpression})`;\r\n }\r\n const query = (searchLayer as any).createQuery();\r\n query.where = where;\r\n (searchLayer as any).queryFeatures(query)\r\n .then((response: __esri.FeatureSet) => {\r\n if (response.features.length === 0) {\r\n // eslint-disable-next-line no-console\r\n console.warn(\"Kein Profil Resultat gefunden\");\r\n return;\r\n }\r\n let geometry: __esri.Geometry;\r\n if (response.features.length > 1) {\r\n const geometries: __esri.Geometry[] = [];\r\n response.features.forEach((item) => {\r\n geometries.push(item.geometry);\r\n });\r\n geometry = geometryEngine.union(geometries);\r\n } else {\r\n geometry = response.features[0].geometry;\r\n }\r\n const featureGraphic = new EsriGraphic({\r\n geometry,\r\n symbol: store?.appConfig.search.resultSymbol?.line\r\n });\r\n store?.uiStore.setActiveTool(\"profile\", featureGraphic);\r\n this.setState({profileIsLoading: false});\r\n if (store.mapStore.view) {\r\n store.mapStore.view.graphics.push(\r\n featureGraphic\r\n );\r\n const fullExtent = featureGraphic.geometry.extent.clone();\r\n fullExtent.expand(1.5);\r\n store.mapStore.view?.goTo(fullExtent).catch((error) => {\r\n if (error.name !== \"view:goto-interrupted\") {\r\n // eslint-disable-next-line no-console\r\n console.error(error);\r\n }\r\n });\r\n }\r\n });\r\n }\r\n });\r\n }\r\n });\r\n }\r\n } else {\r\n // eslint-disable-next-line no-console\r\n console.warn(\"Keine Query definiert!\");\r\n }\r\n } else {\r\n // TODO: Bei nächsten API Update überprüfen ob es wieder mit der ESRI trigger-action funktioniert\r\n // popup.popup.viewModel.triggerAction(popup.actionMap[action.id]);\r\n const event = new CustomEvent(\"geo-trigger-action\", {detail: action});\r\n window.dispatchEvent(event);\r\n }\r\n }\r\n }\r\n render(): React.ReactElement | null {\r\n const { title } = this.state;\r\n const {\r\n config,\r\n graphic,\r\n featureIndex,\r\n panelIndex,\r\n store,\r\n onHighlightClick,\r\n onZoomInClick\r\n } = this.props;\r\n\r\n if (!store || !store.PopupStore) {\r\n return null;\r\n }\r\n const popupStore = store.PopupStore;\r\n\r\n const activePage = popupStore.getActivePage(panelIndex);\r\n const visible = (activePage === featureIndex);\r\n let contentClass = \"geo-feature\";\r\n if (popupStore.selectedPanelIndex === panelIndex && visible) {\r\n contentClass += \" geo-feature-selected\";\r\n }\r\n if (visible) {\r\n contentClass += \" geo-feature-show\";\r\n } else {\r\n contentClass += \" geo-feature-hide\";\r\n }\r\n const buttonsTop: React.ReactElement[] = [];\r\n const buttons: React.ReactElement[] = [];\r\n if (title !== false) {\r\n let buttonCount = 0;\r\n // Zoom Button bei Imagery Layer ausblenden (diese besitzen das Attribut \"Raster.ServicePixelValue\")\r\n if(typeof graphic.getAttribute(\"Raster.ServicePixelValue\") === \"undefined\") {\r\n if (config.dockEnabled) {\r\n buttonsTop.push(\r\n <Button\r\n compact\r\n icon\r\n size=\"mini\"\r\n key={\"button-\" + buttonCount}\r\n onClick={(e: React.MouseEvent) =>\r\n onZoomInClick(e, panelIndex, featureIndex)\r\n }>\r\n <Icon name={\"zoom_in\"}/>\r\n </Button>\r\n );\r\n } else {\r\n buttons.push(\r\n <Button\r\n compact\r\n size=\"mini\"\r\n key={\"button-\" + buttonCount}\r\n onClick={(e: React.MouseEvent) =>\r\n onZoomInClick(e, panelIndex, featureIndex)\r\n }>\r\n <Icon name={\"zoom_in\"}/> Zoomen\r\n </Button>\r\n );\r\n }\r\n buttonCount++;\r\n }\r\n // sourceLayer on Graphic is not documented!\r\n const source = (graphic as any).sourceLayer;\r\n let popupTemplate: __esri.PopupTemplate | null = null;\r\n if (source) {\r\n popupTemplate = (source as __esri.Sublayer).popupTemplate;\r\n // parsedUrl on Layer is not documented!\r\n let url = (source as any).parsedUrl?.path;\r\n if (!url) {\r\n url = source.url; // MapImageLayer Service\r\n }\r\n if (typeof url === \"string\") {\r\n let metauid = PathUtils.getMetaId(url);\r\n const layerId = PathUtils.getLayerId(url);\r\n if(metauid){\r\n metauid = PathUtils.slug(metauid);\r\n contentClass+=\" \"+metauid;\r\n if (typeof layerId === \"number\"){\r\n contentClass+=\" \"+metauid+\"-\"+layerId;\r\n }\r\n }\r\n }\r\n }\r\n if (popupTemplate && popupTemplate.actions) {\r\n popupTemplate.actions.forEach((actionConfig) => {\r\n if(actionConfig.id===\"oea\"){\r\n buttons.push(\r\n <PopupPanelActionOea\r\n key={`button-${buttonCount}`}\r\n size=\"mini\"\r\n actionConfig={actionConfig as ActionButtonConfiguration}\r\n graphic={graphic}>\r\n </PopupPanelActionOea>\r\n );\r\n } else {\r\n let buttonCss = actionConfig.className;\r\n if (actionConfig.id===\"profile_query\" && this.state.profileIsLoading) {\r\n buttonCss += \" geo-profile-loading\";\r\n }\r\n buttons.push(\r\n <Button\r\n compact\r\n size=\"mini\"\r\n key={\"button-\" + buttonCount}\r\n className={buttonCss}\r\n onClick={(e: React.MouseEvent) => {\r\n this.handleButtonClick(e, actionConfig as ActionButtonConfiguration);\r\n }} >\r\n {actionConfig.icon &&\r\n <Icon name={actionConfig.icon as GeoICONS}/>\r\n }\r\n {actionConfig.id === \"profile_query\" &&\r\n <Icon name={\"recycle\"} className={\"geo-rotating\"}/>} {actionConfig.title\r\n }\r\n </Button>\r\n );\r\n }\r\n buttonCount++;\r\n });\r\n }\r\n }\r\n return (\r\n <div className={contentClass}\r\n onClick={(e: React.MouseEvent) => onHighlightClick(e, panelIndex, featureIndex)}\r\n onMouseEnter={(e: React.MouseEvent) => onHighlightClick(e, panelIndex, featureIndex)} >\r\n {buttonsTop.length>0 &&\r\n <div className=\"geo-action-buttons geo-action-buttons-top\">\r\n {buttonsTop}\r\n </div>\r\n }\r\n <div ref={this.popupItemRef}/>\r\n {buttons.length>0 &&\r\n <div className=\"geo-action-buttons geo-action-buttons-bottom\">\r\n {buttons}\r\n </div>\r\n }\r\n </div>\r\n );\r\n }\r\n}\r\n\r\nexport const PopupPanelItem = withStore(PopupPanelItemBase);\r\n","import React from \"react\";\r\nimport {autorun} from \"mobx\";\r\n\r\nimport {PopupConfiguration} from \"../../../config/popup-configuration\";\r\nimport {observer} from \"mobx-react\";\r\nimport {Accordion, AccordionTitleProps, Pagination, PaginationProps} from \"semantic-ui-react\";\r\n\r\nimport {PopupPanelItem} from \"./popup-panel-item/popup-panel-item\";\r\nimport {Icon} from \"../../icon/icon\";\r\nimport {IAppStore, withStore} from \"../../../stores/abstract-app-store\";\r\nimport FieldInfoFormat from \"@arcgis/core/popup/support/FieldInfoFormat\";\r\n\r\ninterface PopupPanelProps {\r\n config: PopupConfiguration;\r\n title: string;\r\n index: number;\r\n store?: IAppStore; // this is injected by withStore\r\n onClick?: (e: React.MouseEvent, titleProps: AccordionTitleProps) => void;\r\n onHighlightClick: (e: React.MouseEvent, panelIndex: number, index: number) => void;\r\n onZoomInClick: (e: React.MouseEvent, panelIndex: number, index: number) => void;\r\n onHighlight: (panelIndex: number, index: number, store: IAppStore) => void;\r\n}\r\n@observer\r\nclass PopupPanelBase extends React.Component<PopupPanelProps, any> {\r\n index: number;\r\n nullableFieldType = [\"small-integer\", \"integer\", \"single\", \"double\", \"long\", \"string\"];\r\n numericFieldType = [\"small-integer\", \"integer\", \"single\", \"double\", \"long\"];\r\n peparedFields: string[];\r\n\r\n constructor(props: PopupPanelProps) {\r\n super(props);\r\n this.state = {\r\n items: [],\r\n title: props.title.substring(0,9)===\"[feature]\"? props.title.substring(9): props.title\r\n };\r\n this.index = props.index;\r\n this.handlePaginationChange = this.handlePaginationChange.bind(this);\r\n this.prepareDefaultFormat = this.prepareDefaultFormat.bind(this);\r\n this.setTitle = this.setTitle.bind(this);\r\n this.peparedFields=[];\r\n }\r\n\r\n componentDidMount(): void {\r\n const {\r\n index,\r\n store\r\n } = this.props;\r\n // Feldtypen welche im NULL Fall mit \"-\" ersetzt werden\r\n autorun((reaction: any) => {\r\n if (!store?.mapStore.view) {\r\n return;\r\n }\r\n const popupStore = store?.PopupStore;\r\n if (!popupStore) {\r\n return [];\r\n }\r\n const activePages: number[] = popupStore.activePages;\r\n activePages[index] = 1;\r\n popupStore.setActivePages(activePages);\r\n reaction.dispose();\r\n });\r\n }\r\n render(): React.ReactElement | null {\r\n const { title } = this.state;\r\n const {index, onClick, store} = this.props;\r\n if (!store?.PopupStore) {\r\n return null;\r\n }\r\n const items = this.prepareItems();\r\n const popupStore = store?.PopupStore;\r\n\r\n let contentClass = \"geo-panel\";\r\n if (popupStore?.selectedPanelIndex === index) {\r\n contentClass+= \" geo-panel-selected\";\r\n }\r\n return (\r\n <div><Accordion.Title\r\n index={index}\r\n active={popupStore?.activeIndex.includes(index)}\r\n onClick={(e: React.MouseEvent, titleProps: AccordionTitleProps) => {\r\n if (onClick) {\r\n onClick(e, titleProps);\r\n }\r\n }}\r\n >\r\n <Icon name=\"navigate_plus\"/>\r\n <Icon name=\"navigate_minus\"/>\r\n <span dangerouslySetInnerHTML={{__html: title}} />\r\n </Accordion.Title>\r\n <Accordion.Content className={contentClass} active={popupStore?.activeIndex.includes(index)}\r\n data-index={index}>\r\n {items.length > 1 &&\r\n <Pagination\r\n defaultActivePage={1}\r\n firstItem={null}\r\n lastItem={null}\r\n size=\"small\"\r\n pointing\r\n secondary\r\n totalPages={items.length}\r\n onPageChange={this.handlePaginationChange}\r\n />\r\n }\r\n {items}\r\n </Accordion.Content></div>\r\n );\r\n }\r\n\r\n private prepareItems(){\r\n const {\r\n config,\r\n index,\r\n store,\r\n onHighlightClick,\r\n onZoomInClick\r\n } = this.props;\r\n if (!store?.mapStore.view) {\r\n return [];\r\n }\r\n const popupStore = store?.PopupStore;\r\n if (!popupStore) {\r\n return [];\r\n }\r\n const items: any[] = [];\r\n let featureIndex = 1;\r\n\r\n popupStore.panels[index - 1].graphics.forEach((graphic) => {\r\n // sourceLayer on Graphic is not documented!\r\n const sourceLayer = (graphic as any).sourceLayer;\r\n this.prepareDefaultFormat(sourceLayer);\r\n const valueUnitMap = popupStore.valueUnitMap.get(sourceLayer.uid as string);\r\n const fieldMap = popupStore.defaultFormatMap.get(sourceLayer.uid as string);\r\n if (!fieldMap) {\r\n return;\r\n }\r\n fieldMap.forEach((fieldFormat: FieldInfoFormat, key: string )=> {\r\n this.prepareAttribute(sourceLayer, fieldFormat, key, valueUnitMap, graphic, popupStore);\r\n });\r\n items.push(\r\n <PopupPanelItem\r\n config={config}\r\n graphic={graphic}\r\n featureIndex={featureIndex}\r\n panelIndex={index}\r\n key={graphic.getObjectId()+\"-\"+sourceLayer.uid}\r\n titleHandle={this.setTitle}\r\n onHighlightClick={onHighlightClick}\r\n onZoomInClick={onZoomInClick} />\r\n );\r\n featureIndex++;\r\n });\r\n return items;\r\n }\r\n private prepareAttribute(sourceLayer, fieldFormat: FieldInfoFormat, k: string, valueUnitMap,\r\n graphic, popupStore): void {\r\n if(popupStore.peparedFields.includes(sourceLayer.uid+graphic.getObjectId()+k)){\r\n return;\r\n }\r\n popupStore.peparedFields.push(sourceLayer.uid+graphic.getObjectId()+k);\r\n if (graphic.attributes.hasOwnProperty(k)) {\r\n // Alle NULL Werte mit \"-\" überschreiben\r\n if (graphic.attributes[k] === null) {\r\n const fieldType = sourceLayer.getField(k)?.type;\r\n if (this.nullableFieldType.indexOf(fieldType) > -1) {\r\n graphic.attributes[k] = \"-\";\r\n }\r\n } else {\r\n // Numerische Werte selber formatieren\r\n let fieldType = sourceLayer.getField(k)?.type;\r\n // ImageryLayer Raster.ServicePixelValue als double behandeln\r\n if(!fieldType && sourceLayer.type===\"imagery\"\r\n && k.toLowerCase().indexOf(\"raster.servicepixelvalue\")===0){\r\n fieldType = \"double\";\r\n }\r\n if(!Number.isNaN(graphic.attributes[k])\r\n && this.numericFieldType.indexOf(fieldType) > -1\r\n && !sourceLayer.getFieldDomain(k)) {\r\n const o: any = {};\r\n if(fieldFormat){\r\n if(\"places\" in fieldFormat && typeof fieldFormat.places === \"number\"){\r\n o.maximumFractionDigits = fieldFormat.places;\r\n }\r\n if(\"digitSeparator\" in fieldFormat && typeof fieldFormat.digitSeparator === \"boolean\"){\r\n o.useGrouping = fieldFormat.digitSeparator;\r\n }\r\n }\r\n graphic.attributes[k] =\r\n new Intl.NumberFormat(\"de-CH\", o).format(graphic.attributes[k]);\r\n }\r\n }\r\n // Attribute auf Masseinheit in valueUnitMap überprüfen\r\n if (valueUnitMap) {\r\n const unit = valueUnitMap.get(k);\r\n if (typeof unit === \"string\" && graphic.attributes[k] !== null) {\r\n graphic.attributes[k] += \" \" + unit;\r\n }\r\n }\r\n }\r\n }\r\n private handlePaginationChange(e: React.MouseEvent, pagination: PaginationProps): void {\r\n const { activePage } = pagination;\r\n const { index, store, onHighlight } = this.props;\r\n if (!store) {\r\n return;\r\n }\r\n const popupStore = store.PopupStore;\r\n\r\n const activePageIndex: number = +`${activePage}`;\r\n popupStore.setActivePage(index, activePageIndex);\r\n popupStore.setSelectedPanelIndex(index);\r\n onHighlight(index, activePageIndex, store);\r\n }\r\n\r\n private setTitle(newTitle: string): void {\r\n const { title } = this.props;\r\n if (title.substring(0,9) === \"[feature]\") {\r\n this.setState({ title: newTitle });\r\n }\r\n }\r\n\r\n private prepareDefaultFormat(layer: any): void {\r\n const { store } = this.props;\r\n if(store?.PopupStore.defaultFormatMap.get(layer.uid as string)) {\r\n return;\r\n }\r\n const fieldMap = new Map();\r\n if(layer.popupTemplate.fieldInfos\r\n && Array.isArray(layer.popupTemplate.fieldInfos)) {\r\n layer.popupTemplate.fieldInfos.forEach((fieldInfo: __esri.FieldInfo) => {\r\n this.setFieldInfoFormat(layer, fieldInfo, fieldMap);\r\n });\r\n }\r\n if (layer.popupTemplate.content && Array.isArray(layer.popupTemplate.content)) {\r\n layer.popupTemplate.content.forEach((content: __esri.FieldsContent) => {\r\n if(content.type === \"fields\" && Array.isArray(content.fieldInfos)) {\r\n content.fieldInfos.forEach((fieldInfo: __esri.FieldInfo) => {\r\n this.setFieldInfoFormat(layer, fieldInfo, fieldMap);\r\n });\r\n }\r\n });\r\n }\r\n // Das Property uid ist nicht dokumentiert!\r\n store?.PopupStore.defaultFormatMap.set((layer as any).uid, fieldMap);\r\n }\r\n\r\n private setFieldInfoFormat(layer: any, fieldInfo: __esri.FieldInfo, fieldMap: Map<any, any>) {\r\n let fieldType = layer.getField(fieldInfo.fieldName)?.type;\r\n // ImageryLayer Raster.ServicePixelValue als double behandeln\r\n if(!fieldType && layer.type===\"imagery\"\r\n && fieldInfo.fieldName.toLowerCase().indexOf(\"raster.servicepixelvalue\")===0){\r\n fieldType = \"double\";\r\n }\r\n // Datumsformat vorgeben falls nicht definiert\r\n if (!fieldInfo.format && fieldType === \"date\") {\r\n fieldInfo.format = new FieldInfoFormat({dateFormat: \"short-date\"});\r\n }\r\n fieldMap.set(fieldInfo.fieldName, fieldInfo.format?.clone());\r\n // Bei numerischen Werte Formatierung für SDK entfernen\r\n if (this.numericFieldType.indexOf(fieldType) > -1) {\r\n fieldInfo.format = new FieldInfoFormat();\r\n // Muss für ImageryLayer komplett entfernt werden\r\n if(layer.type===\"imagery\"){\r\n (fieldInfo as any).format = undefined;\r\n }\r\n }\r\n }\r\n}\r\n\r\nexport const PopupPanel = withStore(PopupPanelBase);\r\n","import React from \"react\";\r\nimport {autorun, runInAction} from \"mobx\";\r\n\r\nimport \"./popup.scss\";\r\n\r\nimport EsriPopup from \"@arcgis/core/widgets/Popup\";\r\nimport EsriPopupViewModel from \"@arcgis/core/widgets/Popup/PopupViewModel\";\r\nimport EsriFeatureLayer from \"@arcgis/core/layers/FeatureLayer\";\r\nimport EsriGraphicsLayer from \"@arcgis/core/layers/GraphicsLayer\";\r\nimport EsriImageryLayer from \"@arcgis/core/layers/ImageryLayer\";\r\nimport EsriMapImageLayer from \"@arcgis/core/layers/MapImageLayer\";\r\nimport EsriGraphic from \"@arcgis/core/Graphic\";\r\nimport EsriPopupTemplate from \"@arcgis/core/PopupTemplate\";\r\nimport EsriHandles from \"@arcgis/core/core/Handles\";\r\nimport esriRequest from \"@arcgis/core/request\";\r\nimport {PopupPanel} from \"./popup-panel/popup-panel\";\r\nimport {ContentConfiguration, CustomChartConfiguration} from \"../../config/content-configuration\";\r\n\r\nimport {PopupConfiguration, PopupLayerGroupConfiguration} from \"../../config/popup-configuration\";\r\nimport {observer} from \"mobx-react\";\r\n\r\nimport {\r\n ExternalServiceConfiguration,\r\n ExternalServiceDataMappingConfiguration\r\n} from \"../../config/external-service-configuration\";\r\nimport {Accordion, AccordionTitleProps, Button, Image, Popup as SemanticPopup, Transition} from \"semantic-ui-react\";\r\nimport {PathUtils} from \"../../../utils/path-utils\";\r\nimport {ActionButtonConfiguration} from \"../../config/action-configuration\";\r\nimport {Icon} from \"../icon/icon\";\r\nimport EsriActionButton from \"@arcgis/core/support/actions/ActionButton\";\r\nimport {SimpleMarkerSymbolConfiguration} from \"../../config/symbol-configuration\";\r\nimport * as reactiveUtils from \"@arcgis/core/core/reactiveUtils\";\r\nimport {MapUtils} from \"../../../utils/map-utils\";\r\nimport {PopupPanelItemChart} from \"./popup-panel/popup-panel-item/popup-panel-item-chart\";\r\nimport {IAppStore, withStore} from \"../../stores/abstract-app-store\";\r\nimport {PopupPanelInfo, PopupStore} from \"../../stores/popup-store-mobx\";\r\nimport FetchPopupFeaturesResult = __esri.FetchPopupFeaturesResult;\r\nimport FillSymbolProperties = __esri.FillSymbolProperties;\r\nimport {CopyToClipboard} from \"react-copy-to-clipboard\";\r\n\r\n\r\ninterface PopupProps {\r\n config: PopupConfiguration;\r\n onLoad?: (sopupViewModel: EsriPopupViewModel) => any;\r\n store?: IAppStore; // this is injected by withStore\r\n}\r\n\r\n// interface ScreenPoint { x:number, y:number };\r\n@observer\r\nexport class PopupBase extends React.Component<PopupProps, any> {\r\n static readonly highlightLayerId = \"popup highlight layer\";\r\n\r\n config: PopupConfiguration;\r\n watchHandles: any[] = [];\r\n mapClickWatchHandle: any;\r\n watchHandlesPosition: any[] = [];\r\n autorunDisposers: any[] = [];\r\n firstFlag = true;\r\n popup: any;\r\n popupRef: any;\r\n pointerRef: any;\r\n preparedLayers: string[] = [];\r\n handles: EsriHandles;\r\n highlightLayer: EsriGraphicsLayer;\r\n avlsLayer: EsriFeatureLayer | EsriMapImageLayer | null = null;\r\n actionMap: HashMap<number> = {};\r\n mapPoint?: __esri.Point;\r\n featureCount = 0;\r\n\r\n objectMap: Map<string, number> = new Map();\r\n rasterPrepared: string[] = [];\r\n rasterMetauidPrepared: string[] = [];\r\n rasterServiceMap: Map<string, string> = new Map();\r\n\r\n constructor(props: PopupProps) {\r\n super(props);\r\n this.state = {\r\n viewModel: null,\r\n coordinate: null,\r\n copied: {e: false, n: false, both: false},\r\n isLoading: undefined,\r\n elevation: new Map(),\r\n pointerPosition: {top: 0, left: 0}\r\n };\r\n this.popupRef = React.createRef();\r\n this.pointerRef = React.createRef();\r\n this.handleClick = this.handleClick.bind(this);\r\n this.handleHighlightClick = this.handleHighlightClick.bind(this);\r\n this.highlight = this.highlight.bind(this);\r\n this.handleZoomInClick = this.handleZoomInClick.bind(this);\r\n this.close = this.close.bind(this);\r\n this.prepareLayers = this.prepareLayers.bind(this);\r\n this.customChart = this.customChart.bind(this);\r\n this.externalServiceLoader = this.externalServiceLoader.bind(this);\r\n this.handles = new EsriHandles();\r\n this.highlightLayer = new EsriGraphicsLayer({listMode: \"hide\", title: PopupBase.highlightLayerId});\r\n }\r\n\r\n componentDidMount(): void {\r\n const { onLoad, store } = this.props;\r\n\r\n // rerun until map view is ready and layer list view model is loaded\r\n this.autorunDisposers.push(autorun((reaction: any) => {\r\n if (store?.uiStore.widgets.has(\"popup\")) {\r\n reaction.dispose(); // stop autorun\r\n return;\r\n }\r\n\r\n if (!store?.mapStore.view || !store.PopupStore) {\r\n return;\r\n }\r\n this.config = store.mapViewerConfig.popup;\r\n const popupStore = store.PopupStore;\r\n\r\n const popup = this.loadPopup(store.mapStore.view);\r\n if (!popup) {\r\n return;\r\n }\r\n this.popup = popup;\r\n\r\n this.prepareLayers(store.mapStore.view.map, popupStore, store);\r\n this.watchHandles.push(\r\n store.mapStore.view.map.watch(\"allLayers.length\",\r\n (newValue, oldValue, propertyName, target: __esri.WebMap) => {\r\n this.prepareLayers(target, popupStore, store);\r\n })\r\n );\r\n store.mapStore.view.popupEnabled = false;\r\n this.setState({\r\n coordinate: null\r\n });\r\n\r\n store.mapStore.view.map.add(this.highlightLayer);\r\n // const addLayers: EsriFeatureLayer[] = [];\r\n // let avls: EsriFeatureLayer | null = null;\r\n if (typeof this.config.layers !== \"undefined\" && this.config.layers !== null){\r\n if (this.config.layers.avls) {\r\n const avlsConfig = this.config.layers.avls;\r\n const avlsTemplate = store.mapViewerConfig.getLayerTemplate(\"avls\");\r\n if (avlsTemplate?.template && typeof avlsTemplate?.template !== \"string\") {\r\n avlsConfig.popupTemplate = avlsTemplate.template;\r\n }\r\n if(avlsConfig.layerType === \"feature\") {\r\n this.avlsLayer =\r\n new EsriFeatureLayer(avlsConfig as __esri.FeatureLayerProperties);\r\n } else if(avlsConfig.layerType === \"map-image\") {\r\n this.avlsLayer =\r\n new EsriMapImageLayer(avlsConfig as __esri.MapImageLayerProperties);\r\n }\r\n if (this.avlsLayer) {\r\n this.avlsLayer.load().then((value: any) => {\r\n if (value.layerType === \"feature\") {\r\n this.prepareExternalLoader(store, value);\r\n this.prepareActions(store, value);\r\n } else if (value.layerType === \"map-image\") {\r\n value.allSublayers.forEach((layer: __esri.Sublayer) => {\r\n if (avlsConfig.popupTemplate) {\r\n layer.popupTemplate = new EsriPopupTemplate(\r\n avlsConfig.popupTemplate as\r\n __esri.PopupTemplateProperties);\r\n layer.definitionExpression = avlsConfig.definitionExpression;\r\n this.prepareExternalLoader(store, layer);\r\n this.prepareActions(store, layer);\r\n }\r\n });\r\n }\r\n });\r\n }\r\n }\r\n }\r\n if (!store.PopupStore.disabled) {\r\n // add watch for clicks on the map view\r\n this.addMapClickWatch(store.mapStore.view, store);\r\n }\r\n // react when popup is enabled / disabled\r\n this.autorunDisposers.push(\r\n autorun(() => {\r\n if (store.PopupStore.disabled) {\r\n this.removeMapClickWatch();\r\n this.clearGraphicLayer(store?.mapStore.view);\r\n this.clearHighlights();\r\n } else {\r\n if (!store?.mapStore.view) {\r\n return;\r\n }\r\n this.addMapClickWatch(store.mapStore.view, store);\r\n }\r\n })\r\n );\r\n\r\n const highlightSymbol = this.config.highlightSymbol as FillSymbolProperties;\r\n // This event fires for each click on any popup action\r\n // popup.on(\"trigger-action\", (event) => {});\r\n this.watchHandles.push(\r\n reactiveUtils.watch(\r\n () => this.popup.visible,\r\n (newValue: boolean) => {\r\n store.PopupStore.setVisible(newValue);\r\n })\r\n );\r\n this.watchHandles.push(\r\n reactiveUtils.watch(\r\n () => this.popup?.selectedFeature,\r\n (graphic: any) => {\r\n if (this.popup.highlightEnabled) {\r\n this.clearHighlights();\r\n if (graphic) {\r\n if (graphic.sourceLayer.opacity === 0) {\r\n this.highlightLayer.add(\r\n new EsriGraphic({geometry: graphic.geometry, symbol: highlightSymbol}));\r\n }\r\n }\r\n }\r\n })\r\n );\r\n this.setState({\r\n viewModel: this.popup.viewModel\r\n });\r\n store.uiStore.addWidget(\"popup\", this);\r\n\r\n if (onLoad) {\r\n // call the hook\r\n onLoad(this.popup.viewModel);\r\n }\r\n // react when popup is hidden\r\n this.autorunDisposers.push(autorun(() => {\r\n if(!store.PopupStore.visible) {\r\n this.close(store);\r\n }\r\n }));\r\n // react when mapPoint or features change\r\n this.autorunDisposers.push(autorun(() => {\r\n if (store.PopupStore.mapPoint){\r\n if (this.mapPoint?.x !== store.PopupStore.mapPoint.x\r\n || this.mapPoint?.y !== store.PopupStore.mapPoint.y) {\r\n this.open(store);\r\n } else if (store.PopupStore.features.length > 0\r\n && store.PopupStore.features.length !== this.featureCount) {\r\n this.addFeatures(store, store.PopupStore.features);\r\n }\r\n }else{\r\n this.mapPoint = undefined;\r\n }\r\n }));\r\n reaction.dispose();\r\n }));\r\n }\r\n componentWillUnmount(): void {\r\n const {store} = this.props;\r\n\r\n this.watchHandles.forEach((handle: any) => {\r\n handle.remove();\r\n });\r\n this.watchHandles.length = 0;\r\n this.removeMapClickWatch();\r\n this.autorunDisposers.forEach((disposer: any) => {\r\n disposer();\r\n });\r\n this.autorunDisposers.length = 0;\r\n this.removePositionHandles();\r\n store?.PopupStore.clearTimeouts();\r\n store?.mapStore.view?.map.remove(this.highlightLayer);\r\n }\r\n\r\n render(): React.ReactElement | null {\r\n const { coordinate, elevation, isLoading, pointerPosition } = this.state;\r\n const { config, store} = this.props;\r\n if (!store) {\r\n return null;\r\n }\r\n const popupStore = store.PopupStore;\r\n if (!popupStore) {\r\n return null;\r\n }\r\n\r\n let coords: React.ReactElement | null = null;\r\n let pointerSymbol: React.ReactElement | null = null;\r\n if (coordinate && config.visibleElements.coordinates){\r\n if (config.pointerSymbol && config.pointerSymbol.type === \"picture-marker\") {\r\n pointerSymbol = (\r\n <Image src={config.pointerSymbol.url} height=\"28\" verticalAlign=\"middle\" floated=\"left\" />\r\n );\r\n }\r\n const e = \"\"+Math.round(coordinate.x);\r\n const n = \"\"+Math.round(coordinate.y)\r\n const eFormated = new Intl.NumberFormat(\"de-CH\").format(e);\r\n const nFormated = new Intl.NumberFormat(\"de-CH\").format(n);\r\n const eElement = [...elevation.values()].filter(\r\n (el) => el.value > 0)\r\n .map((el) =>\r\n new Intl.NumberFormat(\"de-CH\").format(Math.round(el.value)) + \" m.ü.M. (\" + el.title + \")\");\r\n let eString = \"\";\r\n if (eElement.length > 0) {\r\n eString = \"Höhe: \" + eElement.join(\", \");\r\n }\r\n coords = (<div>Lage (E/N): <SemanticPopup\r\n content={this.state.copied.e ?\r\n <>E Koordinate kopiert <Icon name={\"check\"} /></>: \"E Koordinate kopieren\" }\r\n trigger={\r\n <span>\r\n <CopyToClipboard\r\n text={e}\r\n onCopy={() => this.setState({copied: {e: true, n: false, both: false}})}>\r\n <span className={\"geo-copy_to_clipboard\"+(this.state.copied.e ? \"geo-copied\": \"\")}>\r\n {eFormated}</span>\r\n </CopyToClipboard>\r\n </span>}\r\n on={\"hover\"}\r\n /> / <SemanticPopup\r\n content={this.state.copied.n ?\r\n <>N Koordinaten kopiert <Icon name={\"check\"} /></>: \"N Koordinate kopieren\" }\r\n trigger={\r\n <span>\r\n <CopyToClipboard\r\n text={n}\r\n onCopy={() => this.setState({copied: {e: false, n: true, both: false}})}>\r\n <span className={\"geo-copy_to_clipboard\"+(this.state.copied.n ? \" geo-copied\": \"\")}>\r\n {nFormated}</span>\r\n </CopyToClipboard>\r\n </span>}\r\n on={\"hover\"}\r\n /> <SemanticPopup\r\n content={this.state.copied.both ?\r\n <>Koordinaten kopiert <Icon name={\"check\"} /></>: \"Koordinaten kopieren\" }\r\n offset={[-10, 0]}\r\n trigger={\r\n <span>\r\n <CopyToClipboard\r\n text={e+\" / \"+ n}\r\n onCopy={() => this.setState({copied: {e: false, n: false, both: true}})}>\r\n <Button\r\n className={this.state.copied.both ? \"success\": \"\"}\r\n compact\r\n size={\"mini\"}\r\n positive={this.state.copied.both}>\r\n <Icon name={\"clipboard\"} />\r\n </Button>\r\n </CopyToClipboard>\r\n </span>}\r\n on={\"hover\"}\r\n />\r\n <br />{eString}</div>);\r\n }\r\n\r\n let addClass = \"geo-popup geo-component geo-widget\";\r\n // Wird in ÖV Netz für Streckenauswahl verwendet\r\n if(typeof store?.PopupStore.selected === \"string\"\r\n && this.objectMap.has(store?.PopupStore.selected as string)){\r\n addClass += \" nth-object-\"+this.objectMap.get(store?.PopupStore.selected as string);\r\n }\r\n\r\n let popupContent = null;\r\n if (config.visibleElements.featureNavigation) {\r\n popupContent = <div ref={this.popupRef}/>;\r\n } else if (popupStore.panels.length > 0) {\r\n const panels: any[] = popupStore.panels.map((panelProps: PopupPanelInfo) =>\r\n <PopupPanel {...panelProps}\r\n key={panelProps.index+panelProps.title}\r\n config={this.props.config}\r\n onClick={this.handleClick}\r\n onHighlightClick={this.handleHighlightClick}\r\n onHighlight={this.highlight}\r\n onZoomInClick={this.handleZoomInClick} />\r\n );\r\n popupContent = (\r\n <Accordion className={\"geo-popup-accordion\"}\r\n styled fluid={true}\r\n defaultActiveIndex={popupStore.activeIndex}\r\n exclusive={false}\r\n panels={panels}/>\r\n );\r\n }\r\n\r\n if (config.dockEnabled) {\r\n addClass += \" docked docked-\" + config.dockOptions.position;\r\n return (\r\n <>\r\n <div\r\n className={\"geo-popup-spinner\"\r\n + (isLoading!==undefined?(isLoading? \" geo-spinner-visible\": \" geo-spinner-hidden\"):\"\")}\r\n style={pointerPosition}>\r\n <Icon name={\"recycle\"} className={\"geo-rotating\"} selected={true}/>\r\n </div>\r\n <Transition visible={store?.PopupStore.visible} duration={0} mountOnShow={false}>\r\n <div className={addClass}>\r\n <div className=\"geo-popup-content\">\r\n <div className={\"geo-close\"} onClick={(e: React.MouseEvent) => {\r\n e.preventDefault();\r\n this.close(store);\r\n }} ><Icon name=\"navigate_cross\" /></div>\r\n <div className=\"geo-popup-features\">\r\n {popupContent}\r\n </div>\r\n <div className=\"popup-content-coordinates\">\r\n {pointerSymbol}{coords}\r\n </div>\r\n </div>\r\n </div>\r\n </Transition>\r\n </>\r\n );\r\n } else {\r\n addClass += \" not-docked\";\r\n return (\r\n <div>\r\n <div\r\n className={\"geo-popup-spinner\"\r\n + (isLoading!==undefined?(isLoading? \" geo-spinner-visible\": \" geo-spinner-hidden\"):\"\")}\r\n style={pointerPosition}>\r\n <Icon name={\"recycle\"} className={\"geo-rotating\"} selected={true}/>\r\n </div>\r\n <div ref={this.pointerRef} className=\"geo-popup-pointer-ref\" style={pointerPosition} />\r\n <SemanticPopup open={store?.PopupStore.visible}\r\n className={\"geo-popup\"}\r\n context={this.pointerRef} wide={\"very\"} popperDependencies={\r\n [pointerPosition, popupStore.lastItemTitle]}>\r\n <Icon className={\"geo-close\"} name=\"navigate_cross\" onClick={(e: React.MouseEvent) => {\r\n e.preventDefault();\r\n this.close(store);\r\n }} />\r\n <div className={addClass}>\r\n <div className=\"geo-popup-content\">\r\n <div className=\"geo-popup-features\">\r\n {config.visibleElements.featureNavigation ?\r\n <div ref={this.popupRef}/>\r\n :\r\n popupContent\r\n }\r\n </div>\r\n <div className=\"popup-content-coordinates\">{pointerSymbol}{coords}</div>\r\n </div>\r\n </div>\r\n </SemanticPopup>\r\n </div>\r\n );\r\n }\r\n }\r\n\r\n private addFeatures(store: IAppStore, features: __esri.Graphic[]): void {\r\n const popupStore = store?.PopupStore;\r\n if (!popupStore) {\r\n return;\r\n }\r\n\r\n this.firstFlag = false;\r\n this.setState({isLoading: true});\r\n features.forEach((graphic: __esri.Graphic) => {\r\n // sourceLayer on Graphic is not documented!\r\n const source = (graphic as any).sourceLayer as __esri.Layer;\r\n if (source) {\r\n const url = PathUtils.getLayerPath(source);\r\n let metauid = \"custom\";\r\n if (typeof url === \"string\") {\r\n metauid = PathUtils.getMetaId(url);\r\n }\r\n this.prepareTemplate(source, metauid, popupStore, store);\r\n this.prepareUnits(source, popupStore);\r\n this.prepareExternalLoader(store, source);\r\n this.prepareActions(store, source);\r\n }\r\n });\r\n this.prepareFeatures(store, features);\r\n this.setState({\r\n isLoading: false\r\n });\r\n }\r\n\r\n private open(store: IAppStore): void {\r\n if (!store || !store.mapStore.view || !store.PopupStore.mapPoint) {\r\n return;\r\n }\r\n const popupStore = store.PopupStore;\r\n if (popupStore.disabled) {\r\n return;\r\n }\r\n this.objectMap=new Map();\r\n popupStore.setSelected();\r\n popupStore.setActivePages([0, 1]);\r\n this.setState({isLoading: true, copied: {e: false, n: false, both: false}});\r\n this.handles.removeAll();\r\n popupStore.clearPanels();\r\n this.mapPoint = store.PopupStore.mapPoint;\r\n if(!this.mapPoint){\r\n this.close(store);\r\n return;\r\n }\r\n store.PopupStore.peparedFields = [];\r\n const mapPoint: __esri.Point = this.mapPoint;\r\n const features = store.PopupStore.features;\r\n this.featureCount = features.length;\r\n const screenPoint = store.mapStore.view.toScreen(mapPoint);\r\n this.clearGraphicLayer(store?.mapStore.view);\r\n if (this.config.dockEnabled && features.length===0) {\r\n const isSmallDevice =\r\n window.matchMedia(\"(max-width: \" + store.mapViewerConfig.breakpoints.md+\"px)\").matches;\r\n // reposition center if needed\r\n if (!isSmallDevice && document.documentElement.clientWidth - screenPoint.x < 420){\r\n // calculate new center\r\n const newX = document.documentElement.clientWidth / 2\r\n + 520 - (document.documentElement.clientWidth - screenPoint.x);\r\n store.mapStore.view.goTo({center: store.mapStore.view.toMap({ x: newX,\r\n y: document.documentElement.clientHeight / 2 })}).catch((error) => {\r\n if (error.name !== \"view:goto-interrupted\") {\r\n // eslint-disable-next-line no-console\r\n console.error(error);\r\n }\r\n });\r\n }\r\n }\r\n // unsichtbarer Punkt welcher für die Spinner- und Popup-Positionierung verwendet wird\r\n store.mapStore.view.graphics.add(new EsriGraphic({\r\n symbol: {\r\n type: \"simple-marker\",\r\n style: \"circle\",\r\n size: 1,\r\n color: [255, 255, 255, 0]\r\n } as SimpleMarkerSymbolConfiguration,\r\n geometry: mapPoint\r\n }));\r\n this.setState({pointerPosition: {top: screenPoint.y, left: screenPoint.x - 20, width: 40}});\r\n this.addPositionHandles(store.mapStore.view);\r\n\r\n if (store.appConfig.elevationLayers && store.appConfig.elevationLayers.length > 0) {\r\n store.mapStore.view.map.ground.layers.forEach((eLayer)=> {\r\n eLayer.queryElevation(mapPoint).then((result) => {\r\n if (result.geometry.type === \"point\") {\r\n this.setState((state: any)=>{\r\n const {elevation} = state;\r\n if (\"z\" in result.geometry) {\r\n elevation.set(eLayer.id, { value: result.geometry.z, title: eLayer.title});\r\n } else {\r\n elevation.set(eLayer.id, { value: 0 });\r\n }\r\n return elevation;\r\n });\r\n }\r\n });\r\n });\r\n }\r\n if (features.length>0){\r\n features.forEach((graphic: __esri.Graphic) => {\r\n // sourceLayer on Graphic is not documented!\r\n const source = (graphic as any).sourceLayer as __esri.Layer;\r\n if (source) {\r\n const url = PathUtils.getLayerPath(source);\r\n let metauid = \"custom\";\r\n if (typeof url === \"string\") {\r\n metauid = PathUtils.getMetaId(url);\r\n }\r\n this.prepareTemplate(source, metauid, popupStore, store);\r\n this.prepareUnits(source, popupStore);\r\n this.prepareExternalLoader(store, source);\r\n this.prepareActions(store, source);\r\n }\r\n });\r\n this.firstFlag = true;\r\n this.prepareFeatures(store, features, 0, mapPoint);\r\n this.setState({\r\n isLoading: false,\r\n coordinate: store.mapStore.view.toMap({ x: screenPoint.x, y: screenPoint.y })\r\n });\r\n if (store.PopupStore.panels.length === 0) {\r\n this.close(store);\r\n } else {\r\n if (this.config.dockEnabled) {\r\n this.removePositionHandles(store.mapStore.view);\r\n store.mapStore.view.graphics.add(new EsriGraphic({\r\n symbol: this.config.pointerSymbol,\r\n geometry: mapPoint\r\n }));\r\n }\r\n }\r\n return;\r\n }\r\n // Auf aktive Rasterlayer überprüfen\r\n if(this.rasterServiceMap.size && mapPoint){\r\n const metauids: string[] = [];\r\n this.rasterServiceMap.forEach((targetMetauid)=> {\r\n const targetLayers = store.mapStore.getLayerViewsByMetauid(targetMetauid);\r\n if(targetLayers.length===1){\r\n const targetLayer = targetLayers[0].layer as __esri.ImageryLayer;\r\n const visibleAtCurrentScale = (!targetLayer.hasOwnProperty(\"maxScale\") || (\r\n (targetLayer.minScale === 0 || targetLayer.minScale >= store.mapStore.view?.scale)\r\n && targetLayer.maxScale <= store.mapStore.view?.scale));\r\n // Layer muss auf aktuellem Massstab sichtbar sein und darf nur einmal verwendet werden\r\n if(visibleAtCurrentScale && !metauids.includes(targetMetauid)) {\r\n targetLayer.identify(\r\n {geometry: mapPoint, returnGeometry: true, maxItemCount: 1}).then((response) => {\r\n if (response.catalogItems.features.length > 0\r\n && !Number.isNaN(parseFloat(response.value))) {\r\n // Feature für Popup aufbereiten\r\n response.catalogItems.features.map((graphic) => {\r\n graphic.layer = targetLayer;\r\n (graphic as any).sourceLayer = targetLayer;\r\n graphic.setAttribute(\"Raster.ServicePixelValue\", response.value);\r\n graphic.setAttribute(\"Raster.ItemPixelValue\", response.value);\r\n if(targetLayer.serviceRasterInfo){\r\n const values = response.value.split(\", \");\r\n targetLayer.serviceRasterInfo.bandInfos.forEach((band, index)=>{\r\n graphic.setAttribute(\"Raster.ServicePixelValue.\"+band.name, values[index]);\r\n graphic.setAttribute(\"Raster.ItemPixelValue.\"+band.name, values[index]);\r\n })\r\n }\r\n });\r\n this.prepareFeatures(store, response.catalogItems.features,\r\n (targetLayers[0] as any).index, mapPoint);\r\n }\r\n });\r\n metauids.push(targetMetauid);\r\n }\r\n }\r\n });\r\n }\r\n this.popup.fetchFeatures(screenPoint).then((response: FetchPopupFeaturesResult) => {\r\n this.firstFlag = true;\r\n if (!response.allGraphicsPromise) {\r\n return;\r\n }\r\n response.allGraphicsPromise.then((graphics) => {\r\n if(graphics.length>0) {\r\n // sourceLayer on Graphic is not documented!\r\n const source = (graphics[0] as any).sourceLayer as __esri.Sublayer;\r\n if (!source?.popupEnabled) {\r\n return;\r\n }\r\n }\r\n this.prepareFeatures(store, graphics, 0, mapPoint);\r\n if (!this.avlsLayer) {\r\n this.setState({isLoading: false});\r\n if (store.PopupStore.panels.length === 0) {\r\n this.close(store);\r\n } else {\r\n if (this.config.dockEnabled) {\r\n this.removePositionHandles(store.mapStore.view);\r\n if (!store.mapStore.view) {\r\n return;\r\n }\r\n store.mapStore.view.graphics.add(new EsriGraphic({\r\n symbol: this.config.pointerSymbol,\r\n geometry: mapPoint\r\n }));\r\n }\r\n }\r\n }\r\n });\r\n this.setState({\r\n coordinate: store.mapStore.view? store.mapStore.view.toMap({ x: screenPoint.x, y: screenPoint.y }): null\r\n });\r\n });\r\n if (this.avlsLayer) {\r\n let queryLayer: __esri.FeatureLayer | __esri.Sublayer;\r\n if (this.avlsLayer.hasOwnProperty(\"allSublayers\")) {\r\n queryLayer = (this.avlsLayer as EsriMapImageLayer).allSublayers.getItemAt(0);\r\n } else {\r\n queryLayer = this.avlsLayer as EsriFeatureLayer;\r\n }\r\n queryLayer.queryFeatures({\r\n geometry: mapPoint,\r\n outFields: [\"GUELTIGKEIT\", \"ART\", \"QUELLE_LS_SR\", \"BFS_NR\", \"EGRIS_EGRID\", \"GBPER_CODE\",\r\n \"GBPER_NAME\", \"GEMEINDE\", \"NUMMER\", \"FLAECHENMASS\"],\r\n returnGeometry: true,\r\n where: queryLayer.definitionExpression\r\n }).then((featureSet) => {\r\n if (!store.mapStore.view) {\r\n return;\r\n }\r\n let title = \"\";\r\n if (this.avlsLayer) {\r\n title = this.avlsLayer.title;\r\n }\r\n popupStore.addPanel({\r\n graphics: featureSet.features,\r\n title,\r\n order: -99\r\n });\r\n this.setState({isLoading: false});\r\n if (this.config.dockEnabled) {\r\n this.removePositionHandles(store.mapStore.view);\r\n store.mapStore.view.graphics.add(new EsriGraphic({\r\n symbol: this.config.pointerSymbol,\r\n geometry: mapPoint\r\n }));\r\n }\r\n // Falls nur AVLs Daten vorhanden, das Panel auf aktiv setzen\r\n if (popupStore.panelIndex === 2){\r\n store.PopupStore.setVisible(true);\r\n popupStore.setSelectedPanelIndex(1);\r\n this.highlight(1, 1, store);\r\n }\r\n });\r\n }\r\n }\r\n private close(store: IAppStore | undefined): void {\r\n if (store?.mapStore.view) {\r\n this.clearGraphicLayer(store?.mapStore.view);\r\n this.clearHighlights();\r\n store?.mapStore.selectFeature(null);\r\n }\r\n if (this.handles) {\r\n this.handles.removeAll();\r\n }\r\n store?.mapStore.view?.closePopup();\r\n this.removePositionHandles();\r\n store?.PopupStore.setVisible(false);\r\n store?.PopupStore.clearTimeouts();\r\n }\r\n\r\n private loadPopup(view: __esri.MapView | __esri.SceneView): EsriPopup {\r\n const config = this.config as __esri.PopupProperties;\r\n config.container = this.popupRef.current;\r\n const props = {\r\n view,\r\n ...config\r\n };\r\n return new EsriPopup(props);\r\n // return popup;\r\n }\r\n private customChart(graphic: EsriGraphic, contentConfig: CustomChartConfiguration): HTMLElement {\r\n const {store} = this.props;\r\n const view = store?.mapStore.view;\r\n const chart = new PopupPanelItemChart({config: contentConfig, view, graphic});\r\n return chart.render();\r\n }\r\n private externalServiceLoader(graphic: EsriGraphic, serviceID: string,\r\n sourceLayer: EsriFeatureLayer | EsriImageryLayer): string | Promise<string> {\r\n const {store} = this.props;\r\n if(!store) {\r\n return \"\";\r\n }\r\n const service = store.appConfig.externalServices.find(\r\n (element: ExternalServiceConfiguration) => element.id === serviceID);\r\n if (!service) {\r\n return \"<strong>Service nicht gefunden!</strong>\";\r\n }\r\n const requestOptions = {} as __esri.RequestOptions;\r\n requestOptions.responseType = service.xhrOptions.responseType;\r\n if (service.xhrOptions.usePost) {\r\n requestOptions.method = \"post\";\r\n }\r\n if (service.xhrOptions.timeout) {\r\n requestOptions.timeout = service.xhrOptions.timeout;\r\n }\r\n const requestData: any = {\r\n version: PathUtils.getVersion(PathUtils.getLayerPath(sourceLayer))\r\n };\r\n service.xhrOptions.dataMapping.forEach((mappingObj: ExternalServiceDataMappingConfiguration) => {\r\n if (typeof mappingObj.source === \"string\") {\r\n if (mappingObj.source === \"layer\") {\r\n if (typeof mappingObj.map !== \"undefined\") {\r\n let layerId: number;\r\n if (sourceLayer instanceof EsriFeatureLayer) {\r\n layerId = sourceLayer.layerId;\r\n } else {\r\n // sourceLayer on Graphic is not documented!\r\n layerId = (graphic as any).sourceLayer.id;\r\n }\r\n if (mappingObj.map[layerId]) {\r\n requestData[mappingObj.requestParam] = mappingObj.map[layerId];\r\n }\r\n }\r\n //\r\n } else if (typeof mappingObj.property === \"string\") {\r\n const tempAttribute = graphic.getAttribute(mappingObj.property);\r\n if (typeof tempAttribute !== \"undefined\") {\r\n requestData[mappingObj.requestParam] = tempAttribute;\r\n }\r\n }\r\n } else if (typeof mappingObj.property === \"string\") {\r\n const tempAttribute = graphic.getAttribute(mappingObj.property);\r\n if (typeof tempAttribute !== \"undefined\") {\r\n requestData[mappingObj.requestParam] = tempAttribute;\r\n }\r\n }\r\n });\r\n requestOptions.body = JSON.stringify({ params: [requestData]});\r\n return this.loadRequest(service, requestOptions, graphic, sourceLayer);\r\n }\r\n private loadRequest(service, requestOptions, graphic, sourceLayer): string | Promise<string> {\r\n return esriRequest(service.url, requestOptions).then((response: __esri.RequestResponse) => {\r\n const {store} = this.props;\r\n let htmlData = \"\";\r\n if ( response.data !== \"undefined\"){\r\n htmlData = response.data.replaceAll(\"href=\\\"#\", \"target=\\\"_self\\\" href=\\\"\"+window.location.href+\"#\");\r\n htmlData.match(/data-object=\"(.+?)\"/g)?.forEach((o, index)=>{\r\n this.objectMap.set(o.substring(13, o.length-1), index+1);\r\n });\r\n }\r\n if(service.updateIntervall){\r\n const firstE = htmlData.match(/<(.+?)>/);\r\n if(firstE){\r\n const className = \"geo-service-\"+PathUtils.murmurhash3(sourceLayer.uid + graphic.getObjectId());\r\n let newElement = firstE[0];\r\n if(firstE[0].indexOf(\"class\")>0){\r\n newElement = firstE[0].replace(/class=\"(.+?)\"/, \"class=\\\"$1 \"+className+\"\\\"\");\r\n }else{\r\n newElement=\"<\"+firstE[1]+\" class=\\\"\"+className+\"\\\"\";\r\n }\r\n htmlData = htmlData.replace(/<(.+?)>/, newElement);\r\n const currentElement = document.getElementsByClassName(className);\r\n if(currentElement.length===1){\r\n currentElement[0].parentElement.innerHTML = htmlData;\r\n }\r\n // Timeout ID im Store ablegen, damit auch das PopupPanelItem diese wieder löschen kann.\r\n store?.PopupStore.setTimeoutID(sourceLayer.uid + graphic.getObjectId(), setTimeout(()=>{\r\n this.loadRequest(service, requestOptions, graphic, sourceLayer);\r\n },service.updateIntervall*1000));\r\n }\r\n }\r\n return htmlData;\r\n }).catch(() => \"<div class=\\\"error\\\">\" + service.errorMessage + \"</div>\");\r\n }\r\n private handleClick(e: React.MouseEvent, titleProps: AccordionTitleProps): void {\r\n const {store} = this.props;\r\n if (!store) {\r\n return;\r\n }\r\n const popupStore = store.PopupStore;\r\n const { index } = titleProps;\r\n\r\n let newIndexes;\r\n let newSelectedPanelIndex = popupStore.selectedPanelIndex;\r\n if (popupStore.activeIndex.includes(+`${index}`)) {\r\n // hide tab by removing index from list\r\n newIndexes = popupStore.activeIndex.filter((item: number) => item !== index);\r\n if (popupStore.selectedPanelIndex === index ) {\r\n newSelectedPanelIndex = -1;\r\n }\r\n this.highlight((index as number) * -1, 0, store);\r\n } else {\r\n // show panel by adding to list\r\n if (this.config.exclusiveFeature) {\r\n // only open the exclusive tab\r\n newIndexes = [+`${index}`];\r\n } else {\r\n // store accordion index unique and sorted\r\n newIndexes = [...new Set([...popupStore.activeIndex, +`${index}`])].sort();\r\n }\r\n this.highlight(index as number, popupStore.getActivePage(index as number), store);\r\n newSelectedPanelIndex = index as number;\r\n }\r\n // TODO: ev. zusammen mit einer action ausführen\r\n popupStore.setSelectedPanelIndex(newSelectedPanelIndex);\r\n popupStore.setActiveIndex(newIndexes);\r\n }\r\n private handleHighlightClick(e: React.MouseEvent, panelIndex: number, index: number): void {\r\n const {store} = this.props;\r\n if (!store) {\r\n return;\r\n }\r\n const popupStore = store.PopupStore;\r\n if (panelIndex !== popupStore.selectedPanelIndex){\r\n this.highlight(panelIndex, index, store);\r\n popupStore.setSelectedPanelIndex(panelIndex);\r\n }\r\n }\r\n private handleZoomInClick(e: React.MouseEvent, panelIndex: number, index: number): void {\r\n const {store} = this.props;\r\n const featureGraphic = store?.PopupStore.panels[panelIndex - 1];\r\n const graphicIndex = index - 1;\r\n if (featureGraphic && typeof store?.mapStore.view !== \"undefined\") {\r\n this.goToGeometries(featureGraphic.graphics[graphicIndex].geometry);\r\n }\r\n }\r\n private goToGeometries(geometries: __esri.Geometry | __esri.Geometry[]): void {\r\n const {store} = this.props;\r\n if (!store?.mapStore.view) {\r\n return;\r\n }\r\n store.mapStore.view.goTo(MapUtils.calculateMinExtent(geometries)).catch((error) => {\r\n if (error.name !== \"view:goto-interrupted\") {\r\n // eslint-disable-next-line no-console\r\n console.error(error);\r\n }\r\n });\r\n }\r\n private highlight(panelIndex: number, index: number, store: IAppStore): void {\r\n if (!store) {\r\n return;\r\n }\r\n const popupStore = store.PopupStore;\r\n\r\n const graphicIndex = index - 1;\r\n if (panelIndex < 0){\r\n if (popupStore.selectedPanelIndex < 0\r\n || Math.abs(panelIndex) === popupStore.selectedPanelIndex\r\n || !popupStore.activeIndex.includes(popupStore.selectedPanelIndex)) {\r\n this.handles.removeAll();\r\n if (typeof store.mapStore.view !== \"undefined\") {\r\n this.clearHighlights();\r\n }\r\n }\r\n } else {\r\n const featureGraphic = popupStore.panels[panelIndex -1 ];\r\n const highlightSymbol = this.config.highlightSymbol as FillSymbolProperties;\r\n if (featureGraphic && this.popup.highlightEnabled && typeof store.mapStore.view !== \"undefined\") {\r\n this.handles.removeAll();\r\n this.clearHighlights();\r\n if (featureGraphic.graphics[graphicIndex]) {\r\n // sourceLayer on Graphic is not documented!\r\n const source = (featureGraphic.graphics[graphicIndex] as any).sourceLayer;\r\n if (source.opacity === 0\r\n || typeof source.layerView === \"undefined\"\r\n || typeof source.layerView.highlight !== \"function\") {\r\n this.highlightLayer.add(\r\n new EsriGraphic({geometry: featureGraphic.graphics[graphicIndex].geometry,\r\n symbol: highlightSymbol}));\r\n } else {\r\n if (source.layerView.layer.declaredClass === \"esri.layers.MapImageLayer\"\r\n && featureGraphic.graphics[graphicIndex].geometry.type===\"polygon\"){\r\n this.highlightLayer.add(\r\n new EsriGraphic({geometry: featureGraphic.graphics[graphicIndex].geometry,\r\n symbol: highlightSymbol}));\r\n } else {\r\n this.handles.add(source.layerView.highlight(featureGraphic.graphics[graphicIndex]));\r\n }\r\n }\r\n store?.mapStore.selectFeature(featureGraphic.graphics[graphicIndex]);\r\n }\r\n }\r\n }\r\n }\r\n\r\n private prepareFeatures(store: IAppStore, graphics: __esri.Graphic[], order?: number,\r\n mapPoint?: __esri.Point): void {\r\n if (!store) {\r\n return;\r\n }\r\n const popupStore = store.PopupStore;\r\n if (!popupStore) {\r\n return;\r\n }\r\n\r\n if (graphics.length > 0) {\r\n // Reseultate anhand von Sublayers gruppieren. Wird für MapImageLayer benötigt\r\n const graphicsGroup = new Map();\r\n const groupMap = new Map();\r\n graphics.forEach((graphic: __esri.Graphic) => {\r\n // sourceLayer on Graphic is not documented!\r\n const source = (graphic as any).sourceLayer as __esri.Sublayer;\r\n if (source) {\r\n const groupSource: __esri.Sublayer | __esri.MapImageLayer | __esri.TileLayer | __esri.ImageryLayer\r\n = (![\"feature\", \"imagery\"].includes((source as any).type) && source?.parent\r\n && (source?.parent as any).type!==\"map-image\")?\r\n source.parent: source;\r\n let groupId=\"\";\r\n if(groupMap.has(groupSource.id)){\r\n groupId=groupMap.get(groupSource.id);\r\n }else{\r\n groupId=groupSource.id.toString();\r\n }\r\n if (!graphicsGroup.has(groupId)){\r\n const url = PathUtils.getLayerPath(groupSource);\r\n let metauid = \"\";\r\n if (typeof url === \"string\") {\r\n metauid = PathUtils.getMetaId(url);\r\n }\r\n const layerGroup = this.getLayerGroup(metauid, groupSource.id);\r\n if(layerGroup){\r\n groupId=metauid+layerGroup.layerIds?.join(\":\");\r\n groupMap.set(groupSource.id, groupId);\r\n }\r\n if (!graphicsGroup.has(groupId)){\r\n graphicsGroup.set(groupId,\r\n {\r\n title: (layerGroup?.title)? layerGroup.title: groupSource.title,\r\n exclusiveFeature: layerGroup?.exclusiveFeature as boolean,\r\n mergeBy: layerGroup?.mergeBy,\r\n graphics: []\r\n }\r\n );\r\n }\r\n }\r\n if (!(this.config.exclusiveFeature || graphicsGroup.get(groupId).exclusiveFeature)\r\n || graphicsGroup.get(groupId).graphics.length < 1) {\r\n let mergeG: any;\r\n if(graphicsGroup.get(groupId).mergeBy){\r\n const mergeA = graphicsGroup.get(groupId).mergeBy;\r\n const mergeV = graphic.getAttribute(mergeA);\r\n mergeG =\r\n graphicsGroup.get(groupId).graphics.find((g: __esri.Graphic)=>\r\n g.getAttribute(mergeA) === mergeV\r\n );\r\n if(mergeG) {\r\n const newKeys = _.difference(\r\n Object.keys(graphic.attributes), Object.keys(mergeG.attributes));\r\n for (const key in mergeG.attributes) {\r\n if (mergeG.attributes.hasOwnProperty(key) && key!==\"OBJECTID\") {\r\n const newA = graphic.getAttribute(key);\r\n // funktioniert nicht mit Domänen\r\n if (typeof newA !== \"undefined\" && newA !== mergeG[key]) {\r\n mergeG.setAttribute(graphic.getAttribute(key)+\"; \" + newA);\r\n }\r\n }\r\n }\r\n if(newKeys.length>0){\r\n newKeys.forEach((key)=>{\r\n // Alle zusätzlichen Felder ergänzen\r\n mergeG.setAttribute(key, graphic.getAttribute(key));\r\n // Nach Felddefinition im Popup Template suchen\r\n let templateField;\r\n for (const c of (graphic as any).sourceLayer.popupTemplate.content){\r\n if (c.type===\"fields\"){\r\n templateField = c.fieldInfos.find((f: any)=>f.fieldName===key);\r\n if(typeof templateField !== \"undefined\"){\r\n break;\r\n }\r\n }\r\n }\r\n // Gefundenes Feld ergänzen, falls dieses noch nicht vorhanden ist\r\n if(templateField && !mergeG.sourceLayer.popupTemplate.content.some((c: any)=>\r\n c.fieldInfos.find((f: any)=> f.fieldName === key))){\r\n mergeG.sourceLayer.popupTemplate.content[\r\n mergeG.sourceLayer.popupTemplate.content.length-1\r\n ].fieldInfos.push(templateField);\r\n\r\n }\r\n });\r\n }\r\n }\r\n }\r\n if(!mergeG) {\r\n graphicsGroup.get(groupId).graphics.push(graphic);\r\n }\r\n }\r\n }\r\n });\r\n if (this.config.visibleElements.featureNavigation) {\r\n if (this.config.exclusiveFeature) {\r\n // show only first element\r\n graphics = [graphics[0]];\r\n }\r\n if (this.firstFlag && mapPoint) {\r\n store?.mapStore.view?.openPopup({location: mapPoint, features: graphics});\r\n this.firstFlag = false;\r\n } else {\r\n this.popup.features = this.popup.features.concat(graphics);\r\n }\r\n } else {\r\n if (this.firstFlag) {\r\n this.firstFlag = false;\r\n store?.PopupStore.setVisible(true);\r\n this.clearHighlights();\r\n this.popup.selectedFeatureIndex = popupStore.panelIndex;\r\n }\r\n graphicsGroup.forEach((group) => {\r\n popupStore.addPanel({\r\n title: group.title,\r\n graphics: group.graphics,\r\n order\r\n });\r\n let newIndexes = popupStore.activeIndex;\r\n if (this.config.exclusiveFeature) {\r\n // only open the exclusive tab\r\n newIndexes = [1];\r\n } else {\r\n if (!popupStore.activeIndex.includes(1)) {\r\n newIndexes = [...popupStore.activeIndex, 1].sort();\r\n }\r\n }\r\n // TODO: ev. zusammen mit einer action ausführen\r\n popupStore.setActiveIndex(newIndexes);\r\n popupStore.setSelectedPanelIndex(1);\r\n this.highlight(1, 1, store);\r\n });\r\n }\r\n }\r\n }\r\n\r\n private addPositionHandles(view: __esri.MapView | __esri.SceneView): void {\r\n this.watchHandlesPosition.push(\r\n view.on(\"resize\", () => {\r\n this.calcPointerPosition();\r\n })\r\n );\r\n this.watchHandlesPosition.push(\r\n view.watch(\"center\", () => {\r\n this.calcPointerPosition();\r\n })\r\n );\r\n this.watchHandlesPosition.push(\r\n view.watch(\"zoom\", () => {\r\n this.calcPointerPosition();\r\n })\r\n );\r\n }\r\n private removePositionHandles(view?: __esri.MapView | __esri.SceneView): void {\r\n if (view) {\r\n this.clearGraphicLayer(view);\r\n }\r\n this.watchHandlesPosition.forEach((handle: any) => {\r\n handle.remove();\r\n });\r\n this.watchHandlesPosition.length = 0;\r\n }\r\n private calcPointerPosition(): void {\r\n const { store } = this.props;\r\n if (!store?.mapStore.view) {\r\n return;\r\n }\r\n const pointer = store?.mapStore.view.graphics.getItemAt(0);\r\n if (pointer && pointer.geometry.type === \"point\") {\r\n const screenPoint = store?.mapStore.view.toScreen(pointer.geometry as __esri.geometry.Point);\r\n const geoContainer = document.getElementsByClassName(\"geo-ui-inner-container\")[0];\r\n const visible = !(screenPoint?.x < 0 || screenPoint?.y < 0\r\n || screenPoint?.x > geoContainer.clientWidth || screenPoint?.y > geoContainer.clientHeight);\r\n this.setState({pointerPosition: {top: screenPoint?.y, left: screenPoint?.x - 20, width: 40}, visible});\r\n }\r\n }\r\n\r\n private prepareLayers(map: __esri.Map, popupStore: PopupStore, store: IAppStore): void {\r\n map.allLayers.forEach((layer: __esri.Layer) => {\r\n if (this.preparedLayers.indexOf(layer.id) === -1) {\r\n this.preparedLayers.push(layer.id);\r\n layer.load().then((value: any) => {\r\n const url = PathUtils.getLayerPath(value);\r\n let metauid = \"\";\r\n if (typeof url === \"string\") {\r\n metauid = PathUtils.getMetaId(url);\r\n }\r\n this.prepareTemplate(value, metauid, popupStore, store);\r\n if (value.type === \"map-image\") {\r\n value.allSublayers.forEach((subL: __esri.Sublayer) => {\r\n this.prepareTemplate(subL, metauid, popupStore, store);\r\n });\r\n }\r\n });\r\n }\r\n });\r\n }\r\n\r\n private getLayerGroup(metauid: string, layerId?: number | string): PopupLayerGroupConfiguration | undefined {\r\n const layerGroups = this.config.layerGroups;\r\n if(layerGroups && metauid) {\r\n // `${metauid}-${layer.id}`\r\n const layerGroup = layerGroups.find((t)=>\r\n t.metauid === metauid && (!t.layerIds || t.layerIds.length===0 ||\r\n (typeof layerId === \"number\" && t.layerIds.includes(layerId))));\r\n return layerGroup;\r\n }\r\n return;\r\n }\r\n\r\n private prepareTemplate(layer: any, metauid: string, popupStore: PopupStore, store: IAppStore): void {\r\n // In Feldnamen nach Masseinheiten suchen, diese in einer Map ablegen und im Namen entfernen.\r\n this.watchHandles.push(reactiveUtils.when(\r\n ()=> layer.popupTemplate?.fieldInfos,\r\n () => {\r\n this.prepareUnits(layer, popupStore);\r\n },\r\n { initial: true, once: true }\r\n ));\r\n this.watchHandles.push(reactiveUtils.when(\r\n ()=> layer.popupTemplate?.content,\r\n () => {\r\n this.prepareUnits(layer, popupStore);\r\n },\r\n { initial: true, once: true }\r\n ));\r\n const layerTemplate = store.mapViewerConfig.getLayerTemplate(metauid, layer.id);\r\n // Template aus Konfiguration ergänzen\r\n if (layerTemplate && typeof layerTemplate.template !== \"string\") {\r\n // create a basic template if none exists\r\n if (typeof layer.popupTemplate === \"undefined\" || !layer.popupTemplate) {\r\n layer.popupTemplate = new EsriPopupTemplate();\r\n layer.popupTemplate.content = [];\r\n // ensure that a template has a title\r\n layer.popupTemplate.title = layer.title;\r\n }\r\n if (layerTemplate.mode === \"append\") {\r\n layer.popupTemplate.content =\r\n layer.popupTemplate.content.concat(layerTemplate.template.content);\r\n } else if (layerTemplate.mode === \"prepend\") {\r\n if (Array.isArray(layerTemplate.template.content)) {\r\n layer.popupTemplate.content =\r\n (layerTemplate.template.content as ContentConfiguration[]).concat(\r\n layer.popupTemplate.content);\r\n }\r\n } else if (layerTemplate.mode === \"replace\") {\r\n layer.popupTemplate = layerTemplate.template;\r\n }\r\n if (layerTemplate.template.actions) {\r\n if (Array.isArray(layer.popupTemplate.actions)){\r\n layer.popupTemplate.actions =\r\n layer.popupTemplate.actions.concat(layerTemplate.template.actions);\r\n } else {\r\n layer.popupTemplate.actions = layerTemplate.template.actions;\r\n }\r\n }\r\n this.prepareExternalLoader(store, layer);\r\n this.prepareActions(store, layer);\r\n }\r\n }\r\n private prepareUnits(layer: any, popupStore: PopupStore): void {\r\n const unitMap = new Map();\r\n if(layer.popupTemplate?.fieldInfos\r\n && Array.isArray(layer.popupTemplate.fieldInfos)) {\r\n layer.popupTemplate.fieldInfos.forEach((fieldInfo: __esri.FieldInfo) => {\r\n const regExp = new RegExp(\" \\\\[(.+)?\\\\]( |$)\");\r\n if(regExp.test(fieldInfo.label)) {\r\n const matches = fieldInfo.label.match(regExp);\r\n if (matches && matches.length === 3) {\r\n unitMap.set(fieldInfo.fieldName,\r\n matches[1].replace(\"m2\",\"m²\").replace(\"m3\",\"m³\"));\r\n fieldInfo.label = fieldInfo.label.replace(regExp, matches[2]);\r\n }\r\n }\r\n });\r\n }\r\n if (layer.popupTemplate?.content && Array.isArray(layer.popupTemplate.content)\r\n // PopupTemplates mit rasterService ignorieren\r\n && !layer.popupTemplate.content.some((c) => c.creator===\"rasterService\")) {\r\n layer.popupTemplate.content.forEach((content: __esri.FieldsContent) => {\r\n if(content.type===\"fields\" && Array.isArray(content.fieldInfos)) {\r\n content.fieldInfos.forEach((fieldInfo: __esri.FieldInfo) => {\r\n const regExp = new RegExp(\" \\\\[(.+)?\\\\]( |$)\");\r\n if (regExp.test(fieldInfo.label)) {\r\n const matches = fieldInfo.label.match(regExp);\r\n if (matches && matches.length === 3) {\r\n unitMap.set(fieldInfo.fieldName,\r\n matches[1].replace(\"m2\", \"m²\").replace(\"m3\",\"m³\"));\r\n fieldInfo.label = fieldInfo.label.replace(regExp, matches[2]);\r\n }\r\n }\r\n });\r\n }\r\n });\r\n }\r\n if (unitMap.size > 0){\r\n // Das Property uid ist nicht dokumentiert!\r\n popupStore.valueUnitMap.set((layer as any).uid, unitMap);\r\n }\r\n }\r\n\r\n private prepareExternalLoader(store: IAppStore, layer: any): void {\r\n if (typeof layer.popupTemplate !== \"undefined\" && layer.popupTemplate !== null){\r\n if (Array.isArray(layer.popupTemplate.content)) {\r\n layer.popupTemplate.content.forEach((content: any) => {\r\n if (content.type === \"custom\" && typeof content.creator === \"string\") {\r\n if (content.creator === \"externalServiceLoader\" && content.serviceID) {\r\n content.creator =\r\n (element: any) => this.externalServiceLoader(element.graphic, content.serviceID, layer);\r\n }else if (content.creator === \"customChart\") {\r\n content.creator =\r\n (element: any) => this.customChart(element.graphic, content);\r\n }else if (content.creator === \"rasterService\") {\r\n const targetMetauid = content.serviceID;\r\n const template = layer.popupTemplate.clone();\r\n template.content = template.content.filter((c) => c.creator !== \"rasterService\");\r\n delete content.creator;\r\n delete content.serviceID;\r\n this.watchHandles.push(reactiveUtils.watch(\r\n ()=> layer.visible,\r\n () => {\r\n if(layer.visible){\r\n this.rasterServiceMap.set(layer.uid, targetMetauid);\r\n }else{\r\n this.rasterServiceMap.delete(layer.uid);\r\n }\r\n if(!this.rasterPrepared.includes(layer.uid)) {\r\n const targetLayer = store.mapStore.getLayerViewsByMetauid(targetMetauid);\r\n if(targetLayer.length===1) {\r\n const l = targetLayer[0];\r\n if(layer.hasOwnProperty(\"maxScale\")) {\r\n (l.layer as __esri.ImageryLayer).maxScale =\r\n Math.min((l.layer as __esri.ImageryLayer).maxScale, layer.maxScale);\r\n }\r\n if(layer.hasOwnProperty(\"maxScale\")){\r\n (l.layer as __esri.ImageryLayer).minScale =\r\n Math.max((l.layer as __esri.ImageryLayer).minScale, layer.minScale);\r\n }\r\n if(!this.rasterMetauidPrepared.includes(targetMetauid)) {\r\n l.layer.opacity = 0;\r\n (l.layer as __esri.ImageryLayer).legendEnabled = false;\r\n (l.layer as __esri.ImageryLayer).popupTemplate = template;\r\n l.layer.title = template.title;\r\n (l as any).index = store.mapStore.view?.allLayerViews.findIndex(\r\n (lv) =>\r\n PathUtils.getMetaId(PathUtils.getLayerPath(lv.layer))\r\n === targetMetauid);\r\n\r\n this.prepareUnits(l.layer, store.PopupStore);\r\n }\r\n this.rasterPrepared.push(layer.uid);\r\n this.rasterMetauidPrepared.push(targetMetauid)\r\n }\r\n }\r\n },\r\n { initial: true }\r\n ));\r\n }\r\n }\r\n });\r\n }\r\n }\r\n }\r\n\r\n private prepareActions(store: IAppStore, layer: any): void {\r\n if (typeof layer.popupTemplate !== \"undefined\" && layer.popupTemplate !== null){\r\n if (typeof layer.popupTemplate.actions !== \"undefined\" && layer.popupTemplate.actions !== null) {\r\n this.popup.viewModel.includeDefaultActions = false;\r\n layer.popupTemplate.actions.forEach((actionConfig: ActionButtonConfiguration) => {\r\n if (typeof actionConfig.id !== \"undefined\") {\r\n const predefinedAction =\r\n store?.appConfig.predefinedActions.find((action) =>\r\n actionConfig.id === action.id);\r\n // add missing attributes\r\n if (predefinedAction) {\r\n if (!(\"title\" in actionConfig) || !actionConfig.title){\r\n actionConfig.title = predefinedAction.title;\r\n }\r\n if (predefinedAction.url && (!(\"url\" in actionConfig) || !actionConfig.url)){\r\n actionConfig.url = predefinedAction.url;\r\n }\r\n if (predefinedAction.query && (!(\"query\" in actionConfig) || !actionConfig.query)){\r\n actionConfig.query = predefinedAction.query;\r\n }\r\n if (predefinedAction.icon && (!(\"icon\" in actionConfig) || !actionConfig.icon)){\r\n actionConfig.icon = predefinedAction.icon;\r\n }\r\n }\r\n this.actionMap[actionConfig.id] = this.popup.viewModel.allActions.length;\r\n this.popup.viewModel.actions.push(actionConfig as EsriActionButton);\r\n }\r\n });\r\n }\r\n }\r\n }\r\n\r\n private clearHighlights(): void {\r\n this.highlightLayer?.removeAll();\r\n }\r\n private clearGraphicLayer(view: __esri.MapView | __esri.SceneView | undefined): void {\r\n if(view){\r\n view.graphics.removeAll();\r\n }\r\n }\r\n\r\n /**\r\n * Add click watch to the view\r\n * Pass view as param to be sure the view is initialized before\r\n * @param view\r\n * @param store\r\n * @private\r\n */\r\n private addMapClickWatch(view: __esri.MapView | __esri.SceneView, store: IAppStore): void {\r\n if (this.mapClickWatchHandle) {\r\n // watch is already active\r\n return;\r\n }\r\n this.mapClickWatchHandle = view.on(\"click\", (event: __esri.ViewClickEvent) => {\r\n // Make sure that there is a valid mapPoint\r\n if (event && event.mapPoint && !store.PopupStore.disabled) {\r\n runInAction(()=>{\r\n store.PopupStore.setFeatures([]);\r\n store.PopupStore.setMapPoint(event.mapPoint);\r\n store.PopupStore.setVisible(true);\r\n });\r\n }\r\n });\r\n }\r\n\r\n private removeMapClickWatch(): void {\r\n this.mapClickWatchHandle?.remove();\r\n this.mapClickWatchHandle = null;\r\n }\r\n}\r\n\r\nexport const Popup = withStore(PopupBase);\r\n","import React, {SyntheticEvent} from \"react\";\r\nimport {observer} from \"mobx-react\";\r\nimport {autorun, runInAction} from \"mobx\";\r\n\r\nimport \"./printing.scss\";\r\n\r\nimport {Form, Button, Select, Input, Message} from \"semantic-ui-react\";\r\nimport EsriError from \"@arcgis/core/core/Error\";\r\nimport {PrintConfiguration} from \"../../config/print-configuration\";\r\nimport {TopicConfiguration} from \"../../../config/topic-configuration\";\r\nimport TemplateOptions from \"@arcgis/core/widgets/Print/TemplateOptions\";\r\nimport _ from \"lodash\";\r\nimport PrintViewModel from \"@arcgis/core/widgets/Print/PrintViewModel\";\r\nimport {Icon} from \"../icon/icon\";\r\nimport PrintTemplate from \"@arcgis/core/rest/support/PrintTemplate\";\r\nimport FileLink from \"@arcgis/core/widgets/Print/FileLink\";\r\nimport {PathUtils} from \"../../../utils/path-utils\";\r\nimport {Slider} from \"react-semantic-ui-range\";\r\nimport {IAppStore, withStore} from \"../../stores/abstract-app-store\";\r\n\r\ninterface PrintingProps {\r\n config: PrintConfiguration;\r\n small?: boolean;\r\n visible: boolean;\r\n store?: IAppStore; // this is injected by withStore\r\n}\r\n\r\n// https://github.com/Esri/arcgis-js-api/blob/bb6824315a3ebb0e23e5cfa7f3319127a4b5a7a6/widgets/Print.tsx\r\n@observer\r\nclass PrintingBase extends React.Component<PrintingProps, any> {\r\n watchHandles: any[] = [];\r\n autorunDisposers: any[] = [];\r\n print: any;\r\n printingRef: any;\r\n widgetKey = \"printing\";\r\n linkHelperElement: HTMLDivElement;\r\n previewElement: HTMLDivElement;\r\n viewModel: __esri.PrintViewModel;\r\n constructor(props: PrintingProps) {\r\n super(props);\r\n this.state = {\r\n exportLink: null,\r\n layout: \"\",\r\n subtopicLabel: \"\",\r\n screenExtent: null,\r\n printReady: false,\r\n printScale: null,\r\n printSize: null,\r\n rotation: 0,\r\n selectOpen: false,\r\n title: \"\",\r\n topicId: \"\",\r\n subtitle: \"\",\r\n isLoading: true,\r\n visible: this.props.visible\r\n };\r\n this.printingRef = React.createRef();\r\n if (typeof this.props.small === \"boolean\" && this.props.small) {\r\n this.widgetKey += \"-small\";\r\n this.linkHelperElement = document.createElement(\"div\");\r\n this.linkHelperElement.className = \"geo-link-helper\";\r\n this.linkHelperElement.appendChild(document.createElement(\"div\"));\r\n // Aufsteigend Sortiert\r\n this.props.config.scales.sort((a, b) => a-b);\r\n } else {\r\n this.previewElement = document.createElement(\"div\");\r\n this.previewElement.className = \"geo-print-preview\";\r\n this.previewElement.appendChild(document.createElement(\"div\"));\r\n // Absteigend Sortiert\r\n this.props.config.scales.sort((a, b) => b-a);\r\n }\r\n this.handlePrintMap = this.handlePrintMap.bind(this);\r\n this.handleFormatChange = this.handleFormatChange.bind(this);\r\n this.handleScaleChange = this.handleScaleChange.bind(this);\r\n this.handleSubtitleChange = this.handleSubtitleChange.bind(this);\r\n this.handleTitleChange = this.handleTitleChange.bind(this);\r\n this.handleSelectOpen = this.handleSelectOpen.bind(this);\r\n this.handleSelectClose = this.handleSelectClose.bind(this);\r\n }\r\n\r\n componentDidMount(): void {\r\n const { store } = this.props;\r\n\r\n if (!store) {\r\n return;\r\n }\r\n // rerun until map view is ready and layer list view model is loaded\r\n this.autorunDisposers.push(autorun((reaction: any) => {\r\n if (store?.uiStore.widgets.has(this.widgetKey)) {\r\n reaction.dispose(); // stop autorun\r\n return;\r\n }\r\n\r\n if (!store.mapStore.view) {\r\n return;\r\n }\r\n this.loadPrintViewModel(store);\r\n const {topic, subtopicLabel} = store.appStore;\r\n this.updateCustomTextElements(store, topic, subtopicLabel);\r\n\r\n store?.uiStore.addWidget(this.widgetKey, this);\r\n this.setState({rotation: (store.mapStore.view as __esri.MapView).rotation});\r\n reaction.dispose();\r\n }));\r\n this.autorunDisposers.push(autorun(() => {\r\n const {topic, subtopicLabel} = store.appStore;\r\n this.updateCustomTextElements(store, topic, subtopicLabel);\r\n }));\r\n }\r\n updateCustomTextElements(store: IAppStore,\r\n topic: TopicConfiguration, subtopicLabel?: string): void {\r\n\r\n if (!this.viewModel || !store.mapViewerConfig.print.templateOptions) {\r\n return;\r\n }\r\n this.setCustomTextElements(store, topic, subtopicLabel);\r\n }\r\n setCustomTextElements(store: IAppStore, topic: TopicConfiguration,\r\n subtopicLabel?: string, watch?: any): void {\r\n // if (topic?.id === this.state.topicId && subtopicLabel === this.state.subtopicLabel){\r\n // return;\r\n // }\r\n const config = store.mapViewerConfig.print;\r\n const textElements: any = {};\r\n let count = 0;\r\n if (config.templateOptions?.customTextElements) {\r\n const customTextElements = config.templateOptions?.customTextElements.map((e) => {\r\n const element: any = {};\r\n for(const key in e) {\r\n if (e.hasOwnProperty(key)){\r\n element[key] = e[key];\r\n element[key] = element[key].replace(\"{subtopic_label}\", subtopicLabel);\r\n }\r\n }\r\n return element;\r\n });\r\n for(const layout in this.viewModel.effectiveTemplateCustomTextElements){\r\n if (this.viewModel.effectiveTemplateCustomTextElements.hasOwnProperty(layout)) {\r\n textElements[layout] = _.merge(this.viewModel.effectiveTemplateCustomTextElements[layout],\r\n customTextElements);\r\n count++;\r\n }\r\n }\r\n if (count > 0) {\r\n // Esri Dokumentation stimmt nicht mit Typefile überein!\r\n this.viewModel.templateCustomTextElements = textElements;\r\n this.setState({\r\n subtopicLabel,\r\n subtitle: subtopicLabel,\r\n topicId: topic.id\r\n });\r\n if(watch){\r\n watch.remove();\r\n }\r\n }\r\n }\r\n }\r\n calculatePreview(layout?: string, printScale?: number): void {\r\n const { config, small, store } = this.props;\r\n if (!store?.mapStore.view) {\r\n return;\r\n }\r\n\r\n this.setState({printReady: false});\r\n if (layout === undefined) {\r\n layout = this.state.layout;\r\n }\r\n if (!layout) {\r\n return;\r\n }\r\n const layoutDimension = config.layouts.get(layout);\r\n if (!layoutDimension) {\r\n return;\r\n }\r\n const maxPixel = [store.mapStore.view.width-100, store.mapStore.view.height-150];\r\n const maxMeters = [\r\n store.mapStore.view.extent.width / store.mapStore.view.width * maxPixel[0],\r\n store.mapStore.view.extent.height / store.mapStore.view.height * maxPixel[1]\r\n ];\r\n if (small) {\r\n // gesamte Breite in der mobilen Ansicht\r\n maxMeters[0] = store.mapStore.view.extent.width;\r\n }\r\n if (printScale === undefined) {\r\n if(this.state.printScale && !small){\r\n printScale = this.state.printScale;\r\n } else {\r\n if (small) {\r\n // Bei small wird ein Massstab gewählt, in welchem der ganze Extent Platz hat.\r\n const maxScale = Math.max(\r\n maxMeters[0] / layoutDimension[0], maxMeters[1] / layoutDimension[1]) * 1000;\r\n printScale = config.scales.find((s) => s >= maxScale);\r\n } else {\r\n // Massstab damit der Druckbereich innerhalb des Extents ist.\r\n const minScale = Math.min(\r\n maxMeters[0] / layoutDimension[0], maxMeters[1] / layoutDimension[1]) * 1000;\r\n printScale = config.scales.find((s) => s < minScale);\r\n }\r\n }\r\n }\r\n if (!printScale) {\r\n printScale = config.scales[config.scales.length-1];\r\n }\r\n const printSize = [\r\n Math.round(layoutDimension[0] * printScale / 1000),\r\n Math.round(layoutDimension[1] * printScale / 1000)\r\n ];\r\n this.setState({printScale, printSize});\r\n if (this.previewElement) {\r\n const previewSize = [\r\n Math.round(maxPixel[0] / (maxMeters[0] / layoutDimension[0] * 1000) * printScale),\r\n Math.round(maxPixel[1] / (maxMeters[1] / layoutDimension[1] * 1000) * printScale)\r\n ];\r\n const previewContent = this.previewElement.getElementsByTagName(\"div\")[0];\r\n if (previewContent) {\r\n const borders = [Math.max((store.mapStore.view.width - previewSize[0]) / 2, 0),\r\n Math.max((store.mapStore.view.height - previewSize[1]) / 2, 0)];\r\n const uiTopOffset = store.mapStore.view.height\r\n - document.getElementsByClassName(\"esri-ui-manual-container\")[0].clientHeight;\r\n this.previewElement.style.top = (uiTopOffset * -1) + \"px\";\r\n previewContent.style.borderLeftWidth = borders[0] + \"px\";\r\n previewContent.style.borderRightWidth = borders[0] + \"px\";\r\n previewContent.style.borderTopWidth = borders[1] + \"px\";\r\n previewContent.style.borderBottomWidth = borders[1] + \"px\";\r\n }\r\n }\r\n }\r\n componentDidUpdate(prevProps: PrintingProps) {\r\n const {store} = this.props;\r\n\r\n if (this.props.visible !== prevProps.visible) {\r\n this.setState({visible: this.props.visible});\r\n\r\n if (!store?.mapStore.view) {\r\n return;\r\n }\r\n\r\n if (this.props.visible) {\r\n this.watchHandles.push(store.mapStore.view.watch(\"rotation\", (newValue: number) => {\r\n this.setState({\r\n rotation: Math.round((newValue>180)? newValue-360: newValue),\r\n printReady: false});\r\n }));\r\n this.watchHandles.push(store.mapStore.view.watch(\r\n \"scale\", () => {\r\n this.calculatePreview();\r\n }));\r\n this.watchHandles.push(store.mapStore.view.watch(\r\n \"size\", () => {\r\n this.calculatePreview();\r\n }));\r\n this.watchHandles.push(store.mapStore.view.watch(\r\n \"center\", () => {\r\n if(this.state.printReady) {\r\n this.setState({printReady: false});\r\n }\r\n }));\r\n this.calculatePreview();\r\n store.mapStore.view.ui.add(this.previewElement,\r\n \"manual\");\r\n } else {\r\n this.setState({printScale: null});\r\n // TODO: Nur watchHandle für extent entfernen\r\n this.watchHandles.forEach((handle: any) => {\r\n handle.remove();\r\n });\r\n this.watchHandles.length = 0;\r\n store.mapStore.view.ui.remove(this.previewElement);\r\n }\r\n }\r\n }\r\n componentWillUnmount(): void {\r\n const {store} = this.props;\r\n this.watchHandles.forEach((handle: any) => {\r\n handle.remove();\r\n });\r\n this.watchHandles.length = 0;\r\n this.autorunDisposers.forEach((disposer: any) => {\r\n disposer();\r\n });\r\n this.autorunDisposers.length = 0;\r\n if(this.previewElement){\r\n this.previewElement.remove();\r\n }\r\n if(this.linkHelperElement){\r\n this.linkHelperElement.remove();\r\n }\r\n store?.uiStore.removeWidget(this.widgetKey);\r\n }\r\n createFileLink(template: PrintTemplate, fileName: string): __esri.FileLink {\r\n const titleText = fileName || this.state.title;\r\n const lowercaseFormat = template.format.toLowerCase();\r\n const extension = lowercaseFormat.indexOf(\"png\") > -1 ? \"png\" : lowercaseFormat;\r\n\r\n return new FileLink({\r\n name: \"GeoportalLU_\" + PathUtils.slug(titleText) + \"_\" + new Date().toISOString().slice(0,10),\r\n extension,\r\n count: 0\r\n });\r\n }\r\n handlePrintMap(event?: SyntheticEvent<HTMLButtonElement>): void {\r\n const { config } = this.props;\r\n const { layout } = this.state;\r\n if (event) {\r\n event.currentTarget.blur();\r\n }\r\n const template = new PrintTemplate({\r\n layoutOptions: {\r\n customTextElements: this.viewModel.templateCustomTextElements[layout],\r\n titleText: this.state.title\r\n },\r\n format: this.viewModel.templatesInfo.format.defaultValue,\r\n layout,\r\n outScale: this.state.printScale\r\n });\r\n if (config.templateOptions?.dpi) {\r\n template.exportOptions.dpi = parseInt(config.templateOptions?.dpi, 10);\r\n }\r\n template.layoutOptions.customTextElements?.find((e) => {\r\n if (e.hasOwnProperty(\"subtitle\")){\r\n e.subtitle = this.state.subtitle;\r\n return true;\r\n }\r\n });\r\n const fileLink = this.createFileLink(template, this.state.title);\r\n this.setState({exportLink: fileLink, printReady: false});\r\n this.viewModel\r\n .print(template)\r\n .then((result: any) => {\r\n const link = document.createElement(\"a\");\r\n let pdfUrl = config.exportDirectory + \"/\";\r\n pdfUrl += result.url.substring(result.url.lastIndexOf(\"_\") + 1, result.url.lastIndexOf(\".\"));\r\n pdfUrl = pdfUrl + \"/\" + this.state.exportLink.formattedName;\r\n link.href = pdfUrl;\r\n link.className = \"geo-link-helper\";\r\n link.setAttribute(\"target\", \"_blank\");\r\n // link.setAttribute(\"download\", this.state.exportLink.formattedName);\r\n if (this.linkHelperElement) {\r\n this.linkHelperElement.appendChild(link);\r\n } else if (this.previewElement) {\r\n this.previewElement.appendChild(link);\r\n }\r\n link.click();\r\n this.setState((state: any) => {\r\n const {exportLink} = state;\r\n exportLink.set({\r\n url: pdfUrl,\r\n state: \"ready\"\r\n });\r\n return {exportLink, printReady: true};\r\n });\r\n })\r\n .catch((error: EsriError) => {\r\n console.error(error);\r\n this.setState((state: any) => {\r\n const {exportLink} = state;\r\n exportLink.set({\r\n error,\r\n state: \"error\"\r\n });\r\n return { exportLink };\r\n });\r\n });\r\n }\r\n handleTitleChange(event: React.ChangeEvent<HTMLInputElement>): void {\r\n this.setState(() => ({ title: event.target.value }));\r\n }\r\n handleSubtitleChange(event: React.ChangeEvent<HTMLInputElement>): void {\r\n this.setState(() => ({ subtitle: event.target.value }));\r\n }\r\n handleFormatChange(event: SyntheticEvent, data: any): void {\r\n const {small} = this.props;\r\n const layout = data.value;\r\n this.setState(() => ({ layout }));\r\n this.calculatePreview(layout, (small)? undefined: this.state.printScale);\r\n }\r\n handleScaleChange(event: SyntheticEvent, data: any): void {\r\n const printScale = data.value;\r\n this.setState(() => ({ printScale }));\r\n this.calculatePreview(this.state.layout, printScale);\r\n }\r\n handleSelectOpen(): void {\r\n this.setState({selectOpen: true});\r\n }\r\n handleSelectClose(): void {\r\n this.setState({selectOpen: false});\r\n }\r\n handleRotationChange(rotation: number | string): void {\r\n const {store} = this.props;\r\n if(typeof rotation === \"string\"){\r\n rotation = parseInt(rotation, 10);\r\n if (!rotation) {\r\n rotation = 0;\r\n }\r\n }\r\n rotation = Math.min(Math.max(rotation, -180), 180);\r\n (store?.mapStore.view as __esri.MapView).rotation = rotation;\r\n }\r\n\r\n loadPrintViewModel(store: IAppStore): void {\r\n\r\n const appStore = store?.appStore;\r\n const view = store.mapStore.view;\r\n const config = store.mapViewerConfig.print as __esri.PrintProperties;\r\n if (typeof config.templateOptions === \"undefined\") {\r\n config.templateOptions = new TemplateOptions();\r\n }\r\n config.templateOptions.title = appStore.topic.label;\r\n config.templateOptions.fileName = appStore.topic.id;\r\n if (typeof config.templateOptions.scaleEnabled === \"undefined\") {\r\n // Falls nicht definiert auf true setzten, damit das Widget den Massstab mitsendet.\r\n config.templateOptions.scaleEnabled = true;\r\n }\r\n const props = {\r\n view,\r\n ...config\r\n };\r\n this.viewModel = new PrintViewModel(props as __esri.PrintViewModelProperties);\r\n this.viewModel.load().then(() => {\r\n runInAction(() => {\r\n this.setState({\r\n title: appStore.topic.label,\r\n layout: this.viewModel.templatesInfo.layout.defaultValue,\r\n isLoading: false\r\n });\r\n });\r\n this.updateCustomTextElements(store, appStore.topic, appStore.subtopicLabel);\r\n if (this.state.visible) {\r\n this.calculatePreview(this.viewModel.templatesInfo.layout.defaultValue);\r\n }\r\n });\r\n }\r\n\r\n render(): React.ReactElement | null {\r\n const { config, small } = this.props;\r\n const { isLoading, exportLink, layout, printScale, printSize,\r\n rotation, selectOpen, subtitle, title, visible } = this.state;\r\n if (!visible) {\r\n return null;\r\n }\r\n if (isLoading) {\r\n return <div className=\"geo-loading-wrapper\"><Icon name={\"recycle\"} className={\"geo-rotating\"} /></div>;\r\n }\r\n const buttons: React.ReactElement[] = [];\r\n let infoBlock: React.ReactElement | null = null;\r\n if (exportLink) {\r\n if (exportLink.state===\"pending\") {\r\n buttons.push(<Button key={\"print\"} compact disabled size={\"small\"}><Icon name={\"document_empty\"} />\r\n PDF wird erstellt <Icon name={\"recycle\"} className={\"geo-rotating\"} /></Button>);\r\n } else {\r\n buttons.push(<Button\r\n key={\"print\"}\r\n className={exportLink.state}\r\n compact\r\n primary={!this.state.printReady}\r\n onClick={(e)=> this.handlePrintMap(e)}\r\n size={\"small\"}><Icon name={\"document_empty\"} /> PDF erstellen{\r\n (exportLink.state===\"error\")? <Icon name={\"sign_warning\"} />: \"\"}\r\n </Button>);\r\n if (exportLink.state===\"ready\") {\r\n buttons.push(<Button\r\n key={\"download\"}\r\n compact\r\n href={exportLink.url}\r\n positive={this.state.printReady}\r\n target={\"_blank\"}\r\n rel={\"noreferrer\"}\r\n size={\"small\"}><Icon name={\"nav_down\"} /> PDF öffnen</Button>);\r\n } else if (exportLink.state===\"error\") {\r\n infoBlock = <Message\r\n attached=\"bottom\"\r\n className={\"error\"}\r\n content={\"PDF erstellen ist fehlgeschlagen. Bitte versuchen Sie es später noch einmal.\"}\r\n />;\r\n }\r\n }\r\n } else {\r\n buttons.push(<Button\r\n key={\"print\"}\r\n compact\r\n onClick={(e)=> this.handlePrintMap(e)}\r\n primary\r\n size={\"small\"}><Icon name={\"document_empty\"} /> PDF erstellen</Button>);\r\n }\r\n const sliderSettings = {\r\n start: rotation,\r\n min: -180,\r\n max: 180,\r\n step: 1,\r\n onChange: (value: number) => {\r\n this.handleRotationChange(value);\r\n }\r\n };\r\n return (\r\n <div className={\"printWrapper\" + (selectOpen? \" geo-select-open\": \"\")}>\r\n <Form size={\"small\"}>\r\n <Form.Field>\r\n <label>Titel <span>max. 30 Zeichen</span></label>\r\n <Input\r\n maxLength={30}\r\n name=\"title\"\r\n onChange={this.handleTitleChange}\r\n value={title} />\r\n </Form.Field>\r\n <Form.Field>\r\n <label>Untertitel <span>max. 50 Zeichen</span></label>\r\n <Input\r\n maxLength={50}\r\n name=\"subtitle\"\r\n onChange={this.handleSubtitleChange}\r\n value={subtitle} />\r\n </Form.Field>\r\n <Form.Group widths=\"equal\">\r\n <Form.Field>\r\n <label>Format</label>\r\n <Select\r\n fluid\r\n name=\"layout\"\r\n onChange={this.handleFormatChange}\r\n onOpen={this.handleSelectOpen}\r\n onClose={this.handleSelectClose}\r\n value={layout}\r\n options={this.viewModel.templatesInfo.layout.choiceList.filter(\r\n (l: string) => config.layouts.has(l)).map((l: string) =>\r\n ({value: l, text: l.replace(\"_\", \" \")}))}\r\n />\r\n </Form.Field>\r\n <Form.Field>\r\n <label>Druckmassstab</label>\r\n {small? (<div>1:{new Intl.NumberFormat(\"de-CH\").format(printScale)}</div>): (\r\n <Select\r\n fluid\r\n name=\"printScale\"\r\n onChange={this.handleScaleChange}\r\n onOpen={this.handleSelectOpen}\r\n onClose={this.handleSelectClose}\r\n value={printScale}\r\n options={config.scales.map((s: number) =>\r\n ({value: s, text:\"1:\"+ new Intl.NumberFormat(\"de-CH\").format(s)}))}\r\n />)\r\n }\r\n </Form.Field>\r\n </Form.Group>\r\n <Form.Field inline>\r\n <label>Ausschnitt</label>\r\n {printSize? <span>{new Intl.NumberFormat(\"de-CH\").format(printSize[0])\r\n } x {new Intl.NumberFormat(\"de-CH\").format(printSize[1])} m</span>: null}\r\n </Form.Field>\r\n <Form.Field className={\"geo-slider-field\"}>\r\n <label>Rotation</label>\r\n <Input\r\n maxLength={4}\r\n name=\"rotation\"\r\n onChange={(event) => {\r\n this.handleRotationChange(event.target.value);\r\n }}\r\n min={-180}\r\n max={180}\r\n type={\"number\"}\r\n value={rotation} />\r\n <Slider\r\n className=\"basemap-gallery-slider\"\r\n style={{ trackFill: { backgroundColor: \"rgb(0, 159, 227)\"}}}\r\n value={rotation} settings={sliderSettings} />\r\n </Form.Field>\r\n {buttons}\r\n </Form>\r\n {infoBlock}\r\n </div>\r\n );\r\n }\r\n}\r\n\r\nexport const Printing = withStore(PrintingBase);\r\n","import React from \"react\";\r\nimport {observer} from \"mobx-react\";\r\nimport {autorun} from \"mobx\";\r\n\r\nimport EsriScaleBar from \"@arcgis/core/widgets/ScaleBar\";\r\nimport EsriScaleBarViewModel from \"@arcgis/core/widgets/ScaleBar/ScaleBarViewModel\";\r\nimport {ScaleBarConfiguration} from \"../../config/scalebar-configuration\";\r\nimport {IAppStore, withStore} from \"../../stores/abstract-app-store\";\r\n\r\n\r\ninterface ScalebarProps {\r\n config: ScaleBarConfiguration;\r\n onLoad?: (scaleBarViewModel: EsriScaleBarViewModel) => any;\r\n store?: IAppStore; // this is injected by withStore\r\n}\r\n\r\n@observer\r\nclass ScaleBarBase extends React.Component<ScalebarProps, any> {\r\n watchHandles: any[] = [];\r\n autorunDisposers: any[] = [];\r\n scaleBar: any;\r\n scaleBarRef: any;\r\n constructor(props: ScalebarProps) {\r\n super(props);\r\n this.state = {\r\n viewModel: null,\r\n isLoading: true\r\n };\r\n this.scaleBarRef = React.createRef();\r\n }\r\n\r\n componentDidMount(): void {\r\n const {config, onLoad, store} = this.props;\r\n\r\n // rerun until map view is ready and layer list view model is loaded\r\n this.autorunDisposers.push(autorun((reaction: any) => {\r\n if (store?.uiStore.widgets.has(\"scalebar\")) {\r\n reaction.dispose(); // stop autorun\r\n return;\r\n }\r\n\r\n if (!store?.mapStore.view) {\r\n return;\r\n }\r\n const scaleBar = this.loadScaleBar(config, store.mapStore.view);\r\n if (!scaleBar) {\r\n return;\r\n }\r\n /* console.log(scaleBar);\r\n this.watchHandles.push(\r\n scaleBar.viewModel.watch(\"view.zoom\",\r\n (newValue: any, oldValue: any, propertyName: string, target: any) => {\r\n this.setState({viewModel: target});\r\n console.log('handle view');\r\n console.log(target);\r\n })\r\n );*/\r\n this.setState({\r\n isLoading: false,\r\n viewModel: scaleBar.viewModel\r\n });\r\n store?.uiStore.addWidget(\"scalebar\", this);\r\n\r\n if (onLoad) {\r\n // call the hook\r\n onLoad(scaleBar.viewModel);\r\n }\r\n reaction.dispose();\r\n }));\r\n }\r\n\r\n componentWillUnmount(): void {\r\n const {store} = this.props;\r\n this.watchHandles.forEach((handle: any) => {\r\n handle.remove();\r\n });\r\n this.watchHandles.length = 0;\r\n this.autorunDisposers.forEach((disposer: any) => {\r\n disposer();\r\n });\r\n this.autorunDisposers.length = 0;\r\n store?.uiStore.removeWidget(\"scalebar\");\r\n }\r\n\r\n loadScaleBar(scaleBarConfig: ScaleBarConfiguration,\r\n view: __esri.MapView | __esri.SceneView): __esri.ScaleBar {\r\n\r\n const config = scaleBarConfig as __esri.ScaleBarProperties;\r\n config.container = this.scaleBarRef.current;\r\n const props = {\r\n view,\r\n ...config\r\n };\r\n return new EsriScaleBar(props);\r\n }\r\n\r\n render(): React.ReactElement | null {\r\n return (\r\n <div className=\"scalebarWrapper\" ref={this.scaleBarRef}/>\r\n );\r\n }\r\n}\r\n\r\nexport const ScaleBar = withStore(ScaleBarBase);\r\n","import * as React from \"react\";\r\nimport {autorun, runInAction} from \"mobx\";\r\nimport {observer} from \"mobx-react\";\r\n\r\nimport \"./search.scss\";\r\n\r\nimport {\r\n SearchConfiguration,\r\n CustomSearchSourceConfiguration,\r\n LayerSearchSourceConfiguration,\r\n LocatorSearchSourceConfiguration,\r\n SearchSourceType,\r\n SearchSourceQueryConfiguration,\r\n CoordinateSearchSourceConfiguration, SearchSourceConfiguration\r\n} from \"../../config/search-configuration\";\r\n\r\nimport EsriSearchViewModel from \"@arcgis/core/widgets/Search/SearchViewModel\";\r\nimport EsriCollection from \"@arcgis/core/core/Collection\";\r\nimport {Input, Menu, Label} from \"semantic-ui-react\";\r\nimport Autosuggest, {\r\n ChangeEvent,\r\n RenderSuggestionParams,\r\n SuggestionSelectedEventData,\r\n SuggestionsFetchRequestedParams\r\n} from \"react-autosuggest\";\r\nimport AutosuggestHighlightMatch from \"autosuggest-highlight/match\";\r\nimport AutosuggestHighlightParse from \"autosuggest-highlight/parse\";\r\nimport {SearchStation} from \"../../../search/search-station\";\r\nimport {PathUtils} from \"../../../utils/path-utils\";\r\nimport _ from \"lodash\";\r\nimport SearchSource from \"@arcgis/core/widgets/Search/SearchSource\";\r\nimport \"../../../utils/evaluate\";\r\nimport EsriGraphic from \"@arcgis/core/Graphic\";\r\nimport FeatureLayer from \"@arcgis/core/layers/FeatureLayer\";\r\nimport {\r\n FillSymbolConfiguration,\r\n PictureMarkerSymbolConfiguration,\r\n SimpleLineSymbolConfiguration\r\n} from \"../../config/symbol-configuration\";\r\n// https://github.com/Esri/arcgis-webpack-plugin/issues/88\r\nimport * as geometryEngine from \"@arcgis/core/geometry/geometryEngine\";\r\nimport * as projection from \"@arcgis/core/geometry/projection\";\r\nimport MatomoTracker from \"@datapunt/matomo-tracker-js\";\r\nimport {Icon} from \"../icon/icon\";\r\nimport * as arcade from \"@arcgis/core/arcade\";\r\nimport FeatureSet from \"@arcgis/core/rest/support/FeatureSet\";\r\nimport {FormatUtils} from \"../../../utils/format-utils\";\r\nimport {ExtentConfiguration, PointConfiguration} from \"../../config/geometry-configuration\";\r\nimport Extent from \"@arcgis/core/geometry/Extent\";\r\nimport {MapUtils} from \"../../../utils/map-utils\";\r\nimport {IAppStore, withStore} from \"../../stores/abstract-app-store\";\r\nimport SearchViewModel from \"@arcgis/core/widgets/Search/SearchViewModel\";\r\n\r\nexport interface SearchProps {\r\n config: SearchConfiguration; // widgetsSearch is also the type for configuration object\r\n onLoad?: (searchViewModel: EsriSearchViewModel) => any;\r\n tracker?: MatomoTracker | undefined;\r\n keyAppend?: string | undefined;\r\n store?: IAppStore; // this is injected by withStore\r\n}\r\ninterface featureResult {\r\n feature: __esri.Graphic;\r\n sourceIndex: number;\r\n}\r\ninterface ExtendedSearchViewModelEventHandler extends __esri.SearchViewModelSearchCompleteEventHandler {\r\n feature?: __esri.Graphic;\r\n}\r\nexport class ExtendedSearchViewModel extends SearchViewModel {\r\n constructor(properties?: __esri.SearchViewModelProperties) {\r\n super(properties);\r\n }\r\n on(name: \"suggestion-selected\" | \"result-found\" | \"result-detail-found\",\r\n eventHandler: ExtendedSearchViewModelEventHandler): IHandle;\r\n // TODO: Variante ohne den Code von interface.d.ts class SearchViewModel zu duplizieren\r\n on(name: \"search-clear\", eventHandler: __esri.SearchViewModelSearchClearEventHandler): IHandle;\r\n on(name: \"search-start\", eventHandler: __esri.SearchViewModelSearchStartEventHandler): IHandle;\r\n on(name: \"suggest-start\", eventHandler: __esri.SearchViewModelSuggestStartEventHandler): IHandle;\r\n on(name: \"search-complete\", eventHandler: __esri.SearchViewModelSearchCompleteEventHandler): IHandle;\r\n on(name: \"select-result\", eventHandler: __esri.SearchViewModelSelectResultEventHandler): IHandle;\r\n // @ts-expect-error TODO: Lösung für Error TS2391 finden\r\n on(name: \"suggest-complete\", eventHandler: __esri.SearchViewModelSuggestCompleteEventHandler): IHandle;\r\n}\r\n\r\n// When suggestion is clicked, Autosuggest needs to populate the input\r\n// based on the clicked suggestion. Teach Autosuggest how to calculate the\r\n// input value for every given suggestion.\r\n// Result is of type ESRI SuggestResult\r\n// https://developers.arcgis.com/javascript/latest/api-reference/esri-widgets-Search-SearchViewModel.html#SuggestResult\r\nconst getSuggestionValue = (suggestion: __esri.SuggestResult) => suggestion.text;\r\n\r\n// React 18: getSectionSuggestions is called with undefined after selecting suggestion on mobile device\r\n// https://github.com/moroshko/react-autosuggest/issues/853\r\nconst getSectionSuggestions = (section: any | undefined) => section?.suggestions? section.suggestions: [];\r\n\r\n\r\n@observer\r\nexport class SearchBase extends React.Component<SearchProps, any> {\r\n autorunDisposers: any[] = [];\r\n popupEnabled: number[] = [];\r\n autoNavigate: number[] = [];\r\n suggestions: any[] = [];\r\n suggestionKeyMap: Map<number, Map<string, string[]>> = new Map();\r\n widgetKey = \"search\";\r\n config: SearchConfiguration;\r\n\r\n constructor(props: SearchProps) {\r\n super(props);\r\n this.config = _.cloneDeep(props.config);\r\n // Autosuggest is a controlled component.\r\n // This means that you need to provide an input value\r\n // and an onChange handler that updates this value (see below).\r\n // Suggestions also need to be provided to the Autosuggest,\r\n // and they are initially empty because the Autosuggest is closed.\r\n this.state = {\r\n isLoading: true,\r\n layersLoaded: 0,\r\n placeholder: \"\",\r\n viewModel: null,\r\n value: \"\",\r\n searchTerm: \"\",\r\n suggestions: [],\r\n sectionShowAll: Array(this.config.sources.length).fill(false)\r\n };\r\n if (props.keyAppend) {\r\n this.widgetKey += \"-\" + props.keyAppend;\r\n }\r\n this.handleShowAll = this.handleShowAll.bind(this);\r\n this.onChange = this.onChange.bind(this);\r\n this.onSuggestionsFetchRequested = this.onSuggestionsFetchRequested.bind(this);\r\n this.onSuggestionsClearRequested = this.onSuggestionsClearRequested.bind(this);\r\n this.onSuggestionSelected = this.onSuggestionSelected.bind(this);\r\n this.renderSectionTitle = this.renderSectionTitle.bind(this);\r\n this.renderSuggestion = this.renderSuggestion.bind(this);\r\n this.clearInputField = this.clearInputField.bind(this);\r\n }\r\n\r\n onChange(event: React.FormEvent, changeEvent: ChangeEvent): void {\r\n this.setState({\r\n value: changeEvent.newValue\r\n });\r\n }\r\n\r\n // Autosuggest will call this function every time you need to update suggestions.\r\n onSuggestionsFetchRequested(params: SuggestionsFetchRequestedParams): void {\r\n // get suggestions asynchronously\r\n this.getSuggestions(params.value);\r\n }\r\n\r\n // Autosuggest will call this function every time you need to clear suggestions.\r\n onSuggestionsClearRequested(): void {\r\n const {sectionShowAll} = this.state;\r\n sectionShowAll.fill(false);\r\n this.setState({\r\n sectionShowAll,\r\n suggestions: []\r\n });\r\n }\r\n\r\n // called when suggestion is selected by mouse or keyboard\r\n onSuggestionSelected(event: React.FormEvent<any>, data: SuggestionSelectedEventData<any>): void {\r\n const {viewModel, searchTerm, suggestions} = this.state;\r\n if (!viewModel) {\r\n // search not fully loaded yet\r\n return;\r\n }\r\n const {tracker, store} = this.props;\r\n if (tracker) {\r\n tracker.trackSiteSearch({\r\n keyword: searchTerm,\r\n count: suggestions.reduce((a: number, s: any)=> a + s.numResults, 0)});\r\n }\r\n const profile: __esri.Profile = {\r\n variables: [{\r\n name: \"$feature\",\r\n type: \"feature\"\r\n }]\r\n };\r\n // quick & dirty fix für EGID Suche\r\n if (data.sectionIndex && this.config.sources[data.sectionIndex].sourceType === SearchSourceType.Locator) {\r\n const sConfig = this.config.sources[data.sectionIndex] as LocatorSearchSourceConfiguration;\r\n if (sConfig.categories && sConfig.categories.includes(\"EGID\")){\r\n data.suggestion.text = data.suggestion.text.substring(0, data.suggestion.text.indexOf(\" \"));\r\n }\r\n }\r\n viewModel.emit(\"suggestion-selected\", {data});\r\n viewModel.search(data.suggestion).then((searchResponse: __esri.SearchResponse) => {\r\n // add graphic to map with marker\r\n searchResponse.results.forEach((result: __esri.SearchViewModelSearchResponseResults) => {\r\n const feature = result.results[0].feature;\r\n const extent = result.results[0].extent;\r\n runInAction(()=> {\r\n const sourceConfig = this.config.sources[result.sourceIndex];\r\n viewModel.emit(\"result-found\", {sourceConfig, feature});\r\n if (!store?.PopupStore.disabled) {\r\n store?.PopupStore.setVisible(false);\r\n }\r\n if (!sourceConfig.resultGraphicEnabled) {\r\n return;\r\n }\r\n let queryConfigs: SearchSourceQueryConfiguration[] = [];\r\n if (sourceConfig.queries && feature.attributes.id) {\r\n const ids = feature.attributes.id.split(\", \");\r\n ids.forEach((id: string)=>{\r\n // Version und Typ Postfix entfernen\r\n const metaid = id.replace(/_v(\\d+)(_PY|_PT|_LI|)(\\d{0,1})$/i, \"\");\r\n let queryConfig;\r\n if (sourceConfig.query?.id === metaid) {\r\n queryConfig = sourceConfig.query;\r\n } else if(sourceConfig.queries) {\r\n queryConfig = sourceConfig.queries.find((q) => q.id === metaid);\r\n }\r\n if (queryConfig) {\r\n queryConfigs.push(queryConfig);\r\n }\r\n });\r\n }\r\n if (queryConfigs.length === 0 && sourceConfig.query) {\r\n queryConfigs = [sourceConfig.query];\r\n }\r\n if (queryConfigs.length > 0) {\r\n let firstFlag = true;\r\n queryConfigs.forEach((queryConfig)=>{\r\n let searchLayer: FeatureLayer | __esri.Sublayer | undefined;\r\n if (\"sourceLayer\" in feature && (feature as any)?.sourceLayer){\r\n searchLayer = (feature as any)?.sourceLayer;\r\n } else if (sourceConfig.sourceType === SearchSourceType.Layer && queryConfig.id === \"self\"\r\n && sourceConfig.hasOwnProperty(\"layer\")) {\r\n searchLayer =\r\n (sourceConfig as LayerSearchSourceConfiguration).layer as __esri.FeatureLayer;\r\n } else if (queryConfig.portalItem){\r\n let popupTemplate;\r\n if (queryConfig.popupTemplate) {\r\n if (typeof queryConfig.popupTemplate === \"string\") {\r\n if (!store?.PopupStore.disabled) {\r\n // TODO: use from mapViewerConfig\r\n popupTemplate\r\n = store?.mapViewerConfig.getLayerTemplate(\r\n queryConfig.popupTemplate)?.template;\r\n }\r\n if (!popupTemplate) {\r\n // eslint-disable-next-line no-console\r\n console.warn(\"Kein Template für \"\r\n + queryConfig.id+(queryConfig.layerId ?\" (\"+queryConfig.layerId+\")\": \"\")\r\n + \" mit Bezeichung \" + queryConfig.popupTemplate\r\n + \" gefunden\");\r\n }\r\n } else {\r\n popupTemplate = queryConfig.popupTemplate;\r\n }\r\n }\r\n const layerConfig = {\r\n layerType: \"feature\",\r\n layerId: (queryConfig.layerId) ? queryConfig.layerId : undefined,\r\n portalItem: queryConfig.portalItem,\r\n opacity: 1,\r\n listMode: \"hide\",\r\n legendEnabled: false,\r\n popupTemplate,\r\n title: (queryConfig.title) ? queryConfig.title : undefined\r\n };\r\n searchLayer = new FeatureLayer(layerConfig as __esri.FeatureLayerProperties);\r\n }\r\n if (searchLayer) {\r\n const arcadeExecutor = arcade.createArcadeExecutor(queryConfig.expression, profile);\r\n arcadeExecutor.then((ae) => {\r\n let where = ae.execute({\r\n $feature: feature\r\n });\r\n if (typeof where === \"string\" && searchLayer) {\r\n // definitionExpression in Suche berücksichtigen, falls diese definiert ist.\r\n if (searchLayer.definitionExpression) {\r\n where = \"(\" + where + \") AND (\" + searchLayer.definitionExpression + \")\";\r\n }\r\n const query = searchLayer.createQuery();\r\n query.where = where;\r\n // outFields setzen, falls in der Konfiguration vorhanden\r\n // oder alle Felder falls Popup aktiviert\r\n if (queryConfig?.outFields?.length\r\n || (!store?.PopupStore.disabled\r\n && this.popupEnabled.includes(result.sourceIndex))) {\r\n query.outFields = (queryConfig?.outFields?.length)?\r\n queryConfig.outFields : [\"*\"];\r\n }\r\n searchLayer.queryFeatures(query)\r\n .then((response: __esri.FeatureSet) => {\r\n viewModel.emit(\"result-detail-found\",\r\n {sourceConfig, response});\r\n if(response.features.length === 0) {\r\n // eslint-disable-next-line no-console\r\n console.warn(\"Kein detail Resultat gefunden\");\r\n return;\r\n }\r\n if (this.config.resultSymbol\r\n && this.autoNavigate.includes(result.sourceIndex)) {\r\n if (firstFlag) {\r\n store?.mapStore?.view?.graphics.removeAll();\r\n }\r\n if (!store?.PopupStore.disabled\r\n && this.popupEnabled.includes(result.sourceIndex)) {\r\n let popupPoint = feature.geometry as __esri.Point;\r\n // check if point is within the result geometry\r\n if (!geometryEngine.within(popupPoint,\r\n response.features[0].geometry)) {\r\n // set buffer and get a point inside the result geometry\r\n const buffer = geometryEngine.buffer(\r\n response.features[0].geometry, -1, \"meters\" );\r\n popupPoint = geometryEngine.nearestCoordinate(\r\n buffer as __esri.Geometry, popupPoint).coordinate;\r\n }\r\n if (firstFlag) {\r\n runInAction(()=>{\r\n store?.PopupStore.setMapPoint(popupPoint);\r\n store?.PopupStore.setFeatures(\r\n response.features);\r\n });\r\n } else {\r\n store?.PopupStore.addFeatures(response.features);\r\n }\r\n } else {\r\n let highlightSymbol:\r\n FillSymbolConfiguration\r\n | PictureMarkerSymbolConfiguration\r\n | SimpleLineSymbolConfiguration;\r\n if (response.features[0].geometry.type === \"polygon\"){\r\n highlightSymbol = this.config.resultSymbol.highlight;\r\n } else if (response.features[0].geometry.type === \"polyline\"){\r\n highlightSymbol = this.config.resultSymbol.line;\r\n } else {\r\n highlightSymbol = this.config.resultSymbol.pointer;\r\n }\r\n const geometries: __esri.Geometry[] = [];\r\n response.features.forEach((item) => {\r\n geometries.push(item.geometry);\r\n });\r\n if (response.features[0].geometry.type === \"polyline\") {\r\n store?.mapStore?.view?.graphics.push(\r\n new EsriGraphic({\r\n geometry: geometryEngine.union(geometries),\r\n symbol: highlightSymbol\r\n })\r\n );\r\n } else {\r\n response.features.forEach((item) => {\r\n store?.mapStore?.view?.graphics.push(\r\n new EsriGraphic({\r\n geometry: item.geometry,\r\n symbol: highlightSymbol\r\n })\r\n );\r\n });\r\n }\r\n if (response.features.length > 1\r\n || this.autoNavigate.includes(result.sourceIndex)) {\r\n viewModel.clear();\r\n if(store?.mapStore?.view) {\r\n store.mapStore.view.goTo(\r\n MapUtils.calculateMinExtent(geometries)\r\n ).catch((error) => {\r\n if (error.name !== \"view:goto-interrupted\") {\r\n // eslint-disable-next-line no-console\r\n console.error(error);\r\n }\r\n });\r\n }\r\n }\r\n }\r\n firstFlag = false;\r\n }\r\n });\r\n }\r\n });\r\n }\r\n });\r\n } else {\r\n if (this.config.resultSymbol) {\r\n const highlightSymbol = this.config.resultSymbol.pointer;\r\n store?.mapStore?.view?.graphics.push(\r\n new EsriGraphic({\r\n geometry: feature.geometry,\r\n symbol: highlightSymbol\r\n })\r\n );\r\n if(store?.mapStore?.view) {\r\n store.mapStore.view.goTo(MapUtils.calculateMinExtent(extent)).catch((error) => {\r\n if (error.name !== \"view:goto-interrupted\") {\r\n // eslint-disable-next-line no-console\r\n console.error(error);\r\n }\r\n });\r\n }\r\n }\r\n }\r\n });\r\n /* const symbol = result.source.resultSymbol;\r\n const feature = response.results[0].results[0].feature;\r\n feature.symbol = symbol;\r\n geometries.push(feature.geometry);\r\n view.add(feature);*/\r\n });\r\n });\r\n }\r\n\r\n /**\r\n * Register, that a layer has to be loaded\r\n */\r\n registerLayerLoading(): void {\r\n this.setState((state: any) => ({ layersLoaded: state.layersLoaded - 1 }));\r\n }\r\n\r\n /**\r\n * Mark a layer as loaded\r\n */\r\n layerLoaded(): void {\r\n this.setState((state: any) => ({ layersLoaded: state.layersLoaded + 1 }));\r\n }\r\n handleShowAll(e: React.MouseEvent, sourceIndex: number): void {\r\n const {sectionShowAll, suggestions} = this.state;\r\n const index = this.suggestions.findIndex((item) => item.sourceIndex === sourceIndex);\r\n // clone wird benötigt, da sonst Autosuggest die Resultate nicht neu rendert\r\n let newSuggestions = _.cloneDeep(suggestions);\r\n const oldValue = sectionShowAll[sourceIndex];\r\n sectionShowAll.fill(false);\r\n // falls vorher nicht alle Resultate gelistet werden, alle anzeigen\r\n if (!oldValue) {\r\n sectionShowAll[sourceIndex] = true;\r\n newSuggestions[index].suggestions = this.suggestions[index].suggestions;\r\n }\r\n // limitieren der Resultate\r\n newSuggestions = newSuggestions.map((section: any) => {\r\n const sourceConfig = this.config.sources[section.sourceIndex];\r\n if ((sourceIndex !== section.sourceIndex || oldValue)\r\n && sourceConfig.maxResults\r\n && section.suggestions.length > sourceConfig.maxResults) {\r\n section.suggestions.length = sourceConfig.maxResults;\r\n }\r\n return section;\r\n });\r\n this.setState({sectionShowAll, suggestions: newSuggestions});\r\n e.preventDefault();\r\n }\r\n renderSectionTitle(section: any): React.ReactElement | null {\r\n const {sectionShowAll} = this.state;\r\n // hide title if no suggestion for the section is available\r\n if (section.suggestions.length === 0) {\r\n return null;\r\n }\r\n const sourceConfig = this.config.sources[section.sourceIndex];\r\n let matches = section.numResults;\r\n let addClass = \"\";\r\n if (typeof sourceConfig.maxSuggestions === \"number\") {\r\n if(section.numResults >= sourceConfig.maxSuggestions) {\r\n matches = \"> \" + (section.numResults -1);\r\n addClass += \" hasmore\";\r\n }\r\n }\r\n if (typeof sourceConfig.maxResults !== \"number\") {\r\n sourceConfig.maxResults = 8;\r\n }\r\n if(section.numResults > sourceConfig.maxResults) {\r\n addClass += \" handle-showall\";\r\n if (sectionShowAll[section.sourceIndex]) {\r\n addClass += \" showall\";\r\n }\r\n }\r\n return (\r\n <span\r\n onClick={(event: React.MouseEvent) => {\r\n this.handleShowAll(event, section.sourceIndex);\r\n }}\r\n className={addClass}>\r\n <Label horizontal>{matches}</Label> <span>{section.title}</span>\r\n {(section.numResults > sourceConfig.maxResults)? <>\r\n <Icon name=\"navigate_plus\" />\r\n <Icon name=\"navigate_minus\" />\r\n </>: \"\"}\r\n </span>\r\n );\r\n }\r\n renderSuggestion(suggestion: __esri.SuggestResult, params: RenderSuggestionParams): React.ReactElement {\r\n const suggestionText = suggestion.text;\r\n const matches = AutosuggestHighlightMatch(suggestionText, params.query);\r\n const parts = AutosuggestHighlightParse(suggestionText, matches);\r\n return (\r\n <span className={\"suggestion-content \" + PathUtils.slug(suggestion.text)}>\r\n <span className=\"name\">\r\n {\r\n parts.map((part, index) => (\r\n <span className={part.highlight ? \"highlight\" : undefined} key={index}>{part.text}</span>\r\n ))\r\n }\r\n </span>\r\n </span>\r\n );\r\n };\r\n clearInputField(): void {\r\n this.setState({value: \"\"});\r\n }\r\n render(): React.ReactElement {\r\n const { value, suggestions, isLoading, placeholder } = this.state;\r\n let searchField;\r\n if (isLoading) {\r\n // show disabled placeholder field\r\n searchField = <Input loading disabled placeholder={\"Wird geladen...\"} />;\r\n } else {\r\n // Autosuggest will pass through all these props to the input.\r\n const inputProps = {\r\n placeholder,\r\n value,\r\n onChange: this.onChange,\r\n };\r\n searchField = <div className={(value!==\"\")? \"geo-input-has-value\": \"geo-input-has-no-value\"}>\r\n <Autosuggest\r\n suggestions={suggestions}\r\n onSuggestionsFetchRequested={this.onSuggestionsFetchRequested}\r\n onSuggestionsClearRequested={this.onSuggestionsClearRequested}\r\n getSuggestionValue={getSuggestionValue}\r\n renderSuggestion={this.renderSuggestion}\r\n highlightFirstSuggestion={true}\r\n multiSection={true}\r\n renderSectionTitle={this.renderSectionTitle}\r\n getSectionSuggestions={getSectionSuggestions}\r\n inputProps={inputProps}\r\n onSuggestionSelected={this.onSuggestionSelected}\r\n focusInputOnSuggestionClick={false}\r\n />\r\n <Icon name={\"magnifying_glass\"}/>\r\n <Icon\r\n className={\"geo-clear-field\"}\r\n name={\"navigate_cross\"}\r\n onClick={this.clearInputField}\r\n title={\"Text löschen\"} />\r\n </div>;\r\n }\r\n\r\n return (\r\n <Menu.Item className={\"geo-component geo-widget geo-search\"}>\r\n {searchField}\r\n </Menu.Item>\r\n );\r\n }\r\n\r\n loadSearch(): Promise<any> {\r\n const {config, store} = this.props;\r\n const {layersLoaded} = this.state;\r\n\r\n return new Promise((resolve, reject) => {\r\n try {\r\n // rerun until map view is ready and search view model is loaded\r\n this.autorunDisposers.push(autorun((reaction: any) => {\r\n if (!store?.mapStore.view ||\r\n (config?.waitForTocReady && !store?.mapStore.tocReady)) {\r\n return;\r\n }\r\n\r\n const sourcesWithLayers = config.sources.filter((s: SearchSourceConfiguration) =>\r\n s.sourceType === SearchSourceType.Layer ||\r\n (s.sourceType === SearchSourceType.Custom && (s as any).layerId));\r\n if (sourcesWithLayers.length) {\r\n // wait for layers to load\r\n const allLayersLoaded = sourcesWithLayers.every((s: SearchSourceConfiguration) =>\r\n store?.mapStore.layers.get((s as any).layerId));\r\n if (!allLayersLoaded) {\r\n return;\r\n }\r\n }\r\n const searchViewModel =\r\n this.loadViewModel(config, store, !!store?.mapStore.tocReady,\r\n layersLoaded);\r\n if (searchViewModel) {\r\n reaction.dispose(); // stop autorun\r\n resolve({ viewModel: searchViewModel });\r\n }\r\n }));\r\n } catch (err) {\r\n reject(err);\r\n }\r\n });\r\n }\r\n\r\n loadViewModel(searchConfig: SearchConfiguration,\r\n store: IAppStore,\r\n tocReady: boolean,\r\n layersLoaded: number): SearchViewModel | null {\r\n if (!store || (!tocReady && searchConfig?.waitForTocReady)) {\r\n return null;\r\n }\r\n\r\n const sources = this.initializeSources(store);\r\n if (!sources || layersLoaded < 0) {\r\n return null;\r\n }\r\n const config = searchConfig as __esri.widgetsSearchProperties;\r\n const props = {\r\n view: store.mapStore.view,\r\n sources,\r\n container: \"search-input\",\r\n ...config\r\n };\r\n return new SearchViewModel(props);\r\n }\r\n\r\n /**\r\n * Initialize search sources\r\n */\r\n initializeSources(store?: IAppStore):\r\n __esri.Collection<__esri.LayerSearchSource | __esri.LocatorSearchSource | __esri.SearchSource> | null {\r\n if (!this.config.sources || !store) {\r\n return new EsriCollection();\r\n }\r\n\r\n if (!Array.isArray(this.config.sources)) {\r\n throw new Error(\"Error in search configuration. 'sources' is not an array.\");\r\n }\r\n\r\n const sources = new EsriCollection();\r\n let sourceIndex = 0;\r\n this.popupEnabled.length = 0;\r\n this.autoNavigate.length = 0;\r\n for (const source of this.config.sources) {\r\n if (source.popupEnabled) {\r\n // suppress Esri Popup\r\n this.popupEnabled.push(sourceIndex);\r\n source.popupEnabled = false;\r\n }\r\n if (!source.hasOwnProperty(\"autoNavigate\") || source.autoNavigate) {\r\n this.autoNavigate.push(sourceIndex);\r\n // Falls autoNavigate auf \"true\" gesetzt ist, wird diese erst nach der Geometrie-Rückgabe ausgelöst.\r\n if (source.autoNavigate) {\r\n source.autoNavigate = false;\r\n }\r\n }\r\n source.maxSuggestions = (typeof source.maxSuggestions === \"number\")? source.maxSuggestions + 1: 9;\r\n if (this.config.resultSymbol?.pointer) {\r\n source.resultSymbol = this.config.resultSymbol.pointer;\r\n }\r\n if (source.sourceType === SearchSourceType.Locator) {\r\n sources.add(source);\r\n } else if (source.sourceType === SearchSourceType.Layer) {\r\n const layerSource = this.initializeLayerSource(source as LayerSearchSourceConfiguration, store);\r\n if (layerSource) {\r\n sources.add(layerSource);\r\n }\r\n }else if (source.sourceType === SearchSourceType.Custom) {\r\n const customSource = this.initializeCustomSource(source as CustomSearchSourceConfiguration, store);\r\n if (customSource) {\r\n sources.add(customSource);\r\n }\r\n }else if (source.sourceType === SearchSourceType.Coordinate) {\r\n const customSource = this.initializeCoordinateSource(source as CoordinateSearchSourceConfiguration);\r\n if (customSource) {\r\n sources.add(customSource);\r\n }\r\n }\r\n sourceIndex++;\r\n }\r\n return sources;\r\n }\r\n componentDidMount(): void {\r\n const {onLoad, store} = this.props;\r\n if (store?.uiStore.widgets.has(this.widgetKey)) {\r\n return;\r\n }\r\n store?.SearchStore.setViewReady(this.widgetKey, false);\r\n this.loadSearch().then((result: any) => {\r\n const viewModel = result.viewModel;\r\n this.setState({\r\n isLoading: false,\r\n placeholder: viewModel.placeholder,\r\n viewModel\r\n });\r\n runInAction(()=> {\r\n store?.uiStore.addWidget(this.widgetKey, this);\r\n store?.SearchStore.setViewReady(this.widgetKey, true);\r\n store?.SearchStore.setViewModel(this.widgetKey, viewModel);\r\n });\r\n this.autorunDisposers.push(autorun(\r\n () => {\r\n if ( !store) {\r\n return;\r\n }\r\n this.config = _.cloneDeep(store?.appConfig.search) as SearchConfiguration;\r\n viewModel.sources = this.initializeSources(store);\r\n this.setState({\r\n placeholder: store?.appConfig.search.allPlaceholder,\r\n viewModel\r\n });\r\n }\r\n ));\r\n if (onLoad) {\r\n // call the hook\r\n onLoad(viewModel);\r\n }\r\n });\r\n }\r\n // componentDidUpdate() {\r\n // // sync the observable from props\r\n // this.mapStore = this.props.store?.mapStore;\r\n // }\r\n componentWillUnmount(): void {\r\n const {store} = this.props;\r\n this.autorunDisposers.forEach((disposer: any) => {\r\n disposer();\r\n });\r\n this.autorunDisposers.length = 0;\r\n store?.uiStore.removeWidget(this.widgetKey);\r\n store?.SearchStore.setViewReady(this.widgetKey, false);\r\n }\r\n\r\n /**\r\n * Pass suggestions from autosuggest to search view model\r\n *\r\n * @param value\r\n */\r\n getSuggestions(value: string): void {\r\n const {viewModel, sectionShowAll} = this.state;\r\n if (!viewModel) {\r\n // search not fully loaded yet\r\n return;\r\n }\r\n const inputValue = value.trim().toLowerCase();\r\n const inputLength = inputValue.length;\r\n\r\n if (inputLength === 0) {\r\n return;\r\n }\r\n viewModel.suggest(inputValue).then((response: __esri.SuggestResponse) => {\r\n // TODO auf autosuggest sections verteilen\r\n // Siehe https://developers.arcgis.com/javascript/latest/api-reference/esri-widgets-Search-SearchViewModel.html#SearchResponse\r\n // TODO: eventuell muss suggestions noch gefiltert werden, wenn asynchrone resultate eintreffen, damit\r\n // nur die treffer mit mind. der Länge des eingegegbenen Worts angezeigt werden\r\n // z.B. .filter((sug:any) => sug.text.toLowerCase().slice(0, inputLength) === inputValue )\r\n // TODO: response.errors auswerten und darstellen\r\n let sections = response.results.map((result: __esri.SuggestResponseResults) => ({\r\n title: result.source.name,\r\n numResults: result.results.length,\r\n suggestions: result.results,\r\n sourceIndex: result.sourceIndex\r\n }));\r\n // leere Seketionen rausfiltern\r\n sections = sections.filter((section: any) => section.numResults > 0);\r\n this.suggestions = _.cloneDeep(sections); // clone aller Resultate\r\n // limitieren der dargestellten Resultate\r\n sections = sections.map((section: any) => {\r\n const sourceConfig = this.config.sources[section.sourceIndex];\r\n if (!sectionShowAll[section.sourceIndex]\r\n && sourceConfig.maxResults\r\n && section.suggestions.length > sourceConfig.maxResults) {\r\n section.suggestions.length = sourceConfig.maxResults;\r\n }\r\n return section;\r\n });\r\n this.setState({\r\n searchTerm: response.searchTerm,\r\n suggestions: sections\r\n });\r\n });\r\n }\r\n\r\n private initializeLayerSource(source: LayerSearchSourceConfiguration, store: IAppStore) {\r\n if (!source || (!source.layerId && !source.metauid && !source.layer)) {\r\n return null;\r\n }\r\n let layer: any;\r\n if(source.layerId && !source.metauid) {\r\n layer = store.mapStore?.layers.get(source.layerId) as __esri.FeatureLayer;\r\n if(!layer) {\r\n layer = store.mapStore?.groupLayers.get(source.layerId) as __esri.FeatureLayer;\r\n }\r\n }\r\n if (!layer && source.metauid && store.mapStore?.map?.allLayers) {\r\n layer = store.mapStore?.map?.allLayers.flatten((subL: __esri.Layer) =>\r\n (subL as __esri.MapImageLayer)?.allSublayers as unknown as __esri.Collection<__esri.Layer>)\r\n .find((l: __esri.Layer) => {\r\n let metaId = (l as any).metauid;\r\n let layerId: number | null = null;\r\n if (!metaId){\r\n const url = PathUtils.getLayerPath(l);\r\n if (typeof url === \"string\") {\r\n metaId = PathUtils.getMetaId(url);\r\n layerId = PathUtils.getLayerId(url);\r\n }\r\n }\r\n if (metaId) {\r\n if(source.metauid === metaId &&\r\n (!source.hasOwnProperty(\"layerId\") || layerId === parseInt(source.layerId, 10))) {\r\n return true;\r\n }\r\n }\r\n return false;\r\n });\r\n }\r\n if (!layer && source.layer) {\r\n layer = new FeatureLayer(source.layer as __esri.FeatureLayerProperties);\r\n }\r\n if (layer) {\r\n source.layer = layer as FeatureLayer;\r\n if (((layer.sublayers || source.returnDistinctValues || source.exactMatch === false)\r\n && source.searchFields) || source.customQuery) {\r\n if(typeof source.searchLayers === \"undefined\"){\r\n source.searchLayers = [];\r\n }\r\n if (layer.children) {\r\n // Sicherstellen das der Layer geladen wurde\r\n layer.load().then(()=>{\r\n const mapImageLayer = layer.parent as __esri.MapImageLayer;\r\n layer.children.forEach((layerId: number)=> {\r\n // Sublayer laden, damit \"fields\" vorhanden ist\r\n mapImageLayer.findSublayerById(layerId).load()\r\n .then((fl) => {\r\n if(typeof source.searchLayers === \"undefined\"){\r\n source.searchLayers = [];\r\n }\r\n source.searchLayers.push(fl);\r\n });\r\n\r\n });\r\n });\r\n\r\n } else if (layer.sublayers) {\r\n source.searchLayers = layer.sublayers.toArray();\r\n } else if (layer.type === \"group\") {\r\n source.searchLayers = layer.layers.toArray();\r\n } else {\r\n source.searchLayers.push(layer as FeatureLayer);\r\n }\r\n source.getSuggestions = async (params) => {\r\n const queryPromises: Array<Promise<__esri.FeatureSet | undefined>> = [];\r\n const resultFeatures: featureResult[] = [];\r\n if(typeof source.searchLayers === \"undefined\"){\r\n source.searchLayers = [];\r\n }\r\n const profile: __esri.Profile = {\r\n variables: [{\r\n name: \"$feature\",\r\n type: \"feature\"\r\n }]\r\n };\r\n source.searchLayers.forEach((sLayer, index)=>{\r\n queryPromises.push(new Promise((resolve) => {\r\n if(sLayer) {\r\n const query = (sLayer as FeatureLayer).createQuery();\r\n const whereArray: string[] = [];\r\n if (source.customQuery) {\r\n if (source.customNumericQuery && !isNaN(params.suggestTerm)) {\r\n const num = parseInt(params.suggestTerm, 10);\r\n whereArray.push(source.customNumericQuery.replaceAll(\r\n \"{}\", num.toString()));\r\n } else {\r\n whereArray.push(source.customQuery.replaceAll(\r\n \"{}\",FormatUtils.encodeForSQL(params.suggestTerm.toUpperCase())));\r\n }\r\n } else {\r\n source.searchFields?.forEach((fieldName) => {\r\n const field = (sLayer as FeatureLayer).getField(fieldName);\r\n if (field) {\r\n if (fieldName === \"OBJECTID\"\r\n || field.type === \"integer\" || field.type === \"double\"\r\n || field.type === \"small-integer\") {\r\n if (!isNaN(params.suggestTerm)) {\r\n // Nummer startet mit Sucheingabe, falls exactMatch definiert und\r\n // auf false\r\n if (source.exactMatch === false) {\r\n whereArray.push(\"CAST(\" + fieldName + \" AS VARCHAR(20)) LIKE '\"\r\n + parseInt(params.suggestTerm, 10) + \"%'\");\r\n } else {\r\n whereArray.push(fieldName + \" = \"\r\n + parseInt(params.suggestTerm, 10));\r\n }\r\n }\r\n } else {\r\n let wClase = \"UPPER(\" + fieldName + \") LIKE '%\"\r\n + FormatUtils.encodeForSQLLike(params.suggestTerm.toUpperCase())\r\n + \"%'\";\r\n if (wClase.indexOf(\"\\\\\") > 0) {\r\n wClase += \" ESCAPE '\\\\'\";\r\n }\r\n whereArray.push(wClase);\r\n }\r\n }\r\n });\r\n }\r\n if (whereArray.length === 0) {\r\n resolve(new FeatureSet());\r\n return;\r\n }\r\n if (source.filter?.where) {\r\n query.where = \"(\" + whereArray.join(\" OR \")+\") AND (\"+source.filter.where+\")\";\r\n } else {\r\n query.where = whereArray.join(\" OR \");\r\n }\r\n if (source.orderByFields) {\r\n query.orderByFields = source.orderByFields;\r\n }\r\n query.outFields = (source.outFields?.length)? source.outFields: [\"*\"];\r\n query.returnDistinctValues = !!source.returnDistinctValues;\r\n query.num = source.maxSuggestions? source.maxSuggestions: 99;\r\n query.returnGeometry = false;\r\n sLayer.queryFeatures(query).then((response: __esri.FeatureSet) => {\r\n if (response.features.length > 0) {\r\n response.features.forEach((feature)=>{\r\n resultFeatures.push({feature, sourceIndex: index});\r\n });\r\n }\r\n resolve(response);\r\n });\r\n }\r\n }));\r\n });\r\n return Promise.all(queryPromises).then(async () => {\r\n if (resultFeatures.length === 0) {\r\n return [];\r\n }\r\n if (!this.suggestionKeyMap.has(params.sourceIndex)) {\r\n this.suggestionKeyMap.set(params.sourceIndex, new Map());\r\n } else {\r\n this.suggestionKeyMap.get(params.sourceIndex)?.clear();\r\n }\r\n let features: any = [];\r\n resultFeatures.forEach((r)=>{\r\n features.push({...r.feature.attributes, feature: r.feature, layerIndex: r.sourceIndex});\r\n });\r\n if (source.orderByFields) {\r\n const orderby: string[] = [];\r\n const orders: Array<\"asc\" | \"desc\"> = [];\r\n source.orderByFields.forEach((o) => {\r\n // nach Sortierrichtung suchen\r\n const arr = o.split(\" \");\r\n orderby.push(arr[0]);\r\n orders.push((arr[1] && arr[1].toLowerCase()===\"desc\")? \"desc\": \"asc\");\r\n });\r\n features = _.orderBy(features, orderby, orders);\r\n }\r\n features = features.slice(0,source.maxSuggestions? source.maxSuggestions: 99);\r\n return await Promise.all(features.map(async (resultFeature: any) => {\r\n const feature = resultFeature.feature;\r\n let suggestionPromise: Promise<string>;\r\n let text = \"\";\r\n if (source.suggestionTemplate) {\r\n if(source.suggestionTemplate?.indexOf(\"`\")>-1){\r\n suggestionPromise = new Promise((resolve) => {\r\n const arcadeExecutor = arcade.createArcadeExecutor(\r\n source.suggestionTemplate || \"\", profile);\r\n arcadeExecutor.then((ae) => {\r\n text = ae.execute({\r\n $feature: feature\r\n });\r\n resolve(text? text: \"\");\r\n });\r\n });\r\n }else{\r\n const outFields = (source.outFields?.length)? source.outFields: [\"*\"];\r\n text = source.suggestionTemplate;\r\n outFields.forEach((fieldName: string) => {\r\n const fieldVal = (feature.attributes[fieldName] === null)?\r\n \"\": feature.attributes[fieldName];\r\n text = text.replace(\"{\" + fieldName + \"}\", fieldVal);\r\n });\r\n suggestionPromise = new Promise((resolve) => {\r\n resolve(text);\r\n });\r\n }\r\n } else if (source.displayField) {\r\n text += feature.attributes[source.displayField];\r\n suggestionPromise = new Promise((resolve) => {\r\n resolve(text);\r\n });\r\n }else{\r\n suggestionPromise = new Promise((resolve) => {\r\n resolve(text);\r\n });\r\n }\r\n const keyArray: string[] = [];\r\n source.outFields?.forEach((fieldName) => {\r\n const searchLayer = source.searchLayers?\r\n (source.searchLayers[resultFeature.layerIndex] as FeatureLayer): null;\r\n const field = (searchLayer as FeatureLayer).getField(fieldName);\r\n if (feature.attributes[fieldName] !== undefined) {\r\n if (feature.attributes[fieldName] === null) {\r\n keyArray.push(\"\" + fieldName + \" IS NULL\");\r\n } else if (field && (fieldName===\"OBJECTID\"\r\n || field.type === \"integer\" || field.type === \"double\"\r\n || field.type === \"small-integer\")) {\r\n if (!isNaN(feature.attributes[fieldName])) {\r\n keyArray.push(fieldName + \" = \"\r\n + parseInt(feature.attributes[fieldName], 10));\r\n }\r\n } else {\r\n const wClase = \"\" + fieldName + \" = '\"\r\n + FormatUtils.encodeForSQL(feature.attributes[fieldName]) + \"'\";\r\n keyArray.push(wClase);\r\n }\r\n }\r\n });\r\n const key = Math.random().toString(36).substring(2); // Einfacher Zufallsschlüssel\r\n this.suggestionKeyMap.get(params.sourceIndex)?.set(key, [\r\n resultFeature.layerIndex.toString(),\r\n keyArray.join(\" AND \")]);\r\n return await suggestionPromise.then((t)=>({\r\n text: t,\r\n key,\r\n sourceIndex: params.sourceIndex\r\n }));\r\n }));\r\n });\r\n };\r\n source.getResults = (params) => {\r\n const where = this.suggestionKeyMap.get(params.sourceIndex)?.get(params.suggestResult.key);\r\n if (!where) {\r\n // eslint-disable-next-line no-console\r\n console.warn(\"Key nicht gefunden\");\r\n return new Promise((resolve) => resolve([]));\r\n }\r\n const searchLayer = source.searchLayers?\r\n (source.searchLayers[parseInt(where[0], 10)] as FeatureLayer): null;\r\n if(!searchLayer){\r\n // eslint-disable-next-line no-console\r\n console.warn(\"Layer in getResults nicht gefunden\");\r\n return new Promise((resolve) => resolve([]));\r\n }\r\n const query = searchLayer.createQuery();\r\n query.where = where[1];\r\n\r\n if (source.orderByFields) {\r\n query.orderByFields = source.orderByFields;\r\n }\r\n query.outFields = (source.outFields?.length)? source.outFields: [\"*\"];\r\n query.num = source.maxResults? source.maxResults: 99;\r\n return searchLayer.queryFeatures(query).then((response) =>\r\n // Return results\r\n response.features.map((feature) => {\r\n let text = \"\";\r\n if (source.suggestionTemplate) {\r\n text = source.suggestionTemplate;\r\n query.outFields.forEach((fieldName: string) => {\r\n const fieldVal = (feature.attributes[fieldName] === null)?\r\n \"\": feature.attributes[fieldName];\r\n text = text.replace(\"{\" + fieldName + \"}\", fieldVal);\r\n });\r\n } else if (source.displayField) {\r\n text += feature.attributes[source.displayField];\r\n }\r\n let extent = feature.geometry.extent;\r\n // Extent mit mindestens 100x100 Meter sicherstellen\r\n if (!extent) {\r\n const buffer = geometryEngine.buffer(feature.geometry, 50, \"meters\");\r\n if(Array.isArray(buffer)) {\r\n extent = buffer[0].extent;\r\n } else if (buffer.extent) {\r\n extent = buffer.extent;\r\n }\r\n }else if(extent.width < 100 || extent.height < 100) {\r\n if(extent.width < 100){\r\n const xPadding = Math.ceil((100 - extent.width)/2);\r\n extent.xmin-=xPadding;\r\n extent.xmax+=xPadding;\r\n }\r\n if(extent.height < 100){\r\n const yPadding = Math.ceil((100 - extent.height)/2);\r\n extent.ymin-=yPadding;\r\n extent.ymax+=yPadding;\r\n }\r\n }\r\n return {\r\n extent,\r\n feature,\r\n name: text,\r\n sourceIndex: params.sourceIndex,\r\n target: feature\r\n };\r\n })\r\n );\r\n };\r\n }\r\n return source;\r\n } else {\r\n // eslint-disable-next-line no-console\r\n console.warn(\"Layer not found for LayerSearchSource\");\r\n return null;\r\n }\r\n }\r\n\r\n private initializeCustomSource(source: CustomSearchSourceConfiguration, store: IAppStore) {\r\n if (!source || !source.layerId) {\r\n return null;\r\n }\r\n const layer = store.mapStore?.layers.get(source.layerId) as __esri.FeatureLayer;\r\n if (!layer) {\r\n // eslint-disable-next-line no-console\r\n console.warn(\"Layer not found for CustomSearchSource\");\r\n }\r\n source.layer = layer;\r\n\r\n // TODO define the class to use for custom search in configuration file\r\n const stationSearch = new SearchStation(source);\r\n return new SearchSource(stationSearch);\r\n }\r\n private initializeCoordinateSource(source: CoordinateSearchSourceConfiguration) {\r\n source.getSuggestions = (params) => new Promise((resolve, reject) => {\r\n try {\r\n let coordString = params.suggestTerm;\r\n coordString = coordString.replaceAll(\"/\", \" \");\r\n coordString = coordString.replaceAll(\",\", \" \");\r\n coordString = coordString.replaceAll(/[a-z]/ig, \"\");\r\n coordString = coordString.replaceAll(/[ ]+/g, \" \");\r\n coordString = coordString.trim();\r\n const coord: number[] = [];\r\n if(params.suggestTerm.indexOf(\"°\")>=0){\r\n const parts = coordString.split(/[^\\d .]+/);\r\n if(parts.length >= 6) {\r\n coord[0]=this.convertDMSToDD(parts[0], parts[1], parts[2]);\r\n coord[1]=this.convertDMSToDD(parts[3], parts[4], parts[5]);\r\n }\r\n }else{\r\n coordString = coordString.replaceAll(/[^0-9. ]/ig,\"\");\r\n coordString = coordString.trim();\r\n const parts = coordString.split(\" \");\r\n coord[0]=parseFloat(parts[0]);\r\n coord[1]=parseFloat(parts[1]);\r\n }\r\n if(coord.length === 2) {\r\n let graphic: __esri.Graphic | undefined;\r\n if(coord[0] < 100){ // wgs84\r\n coord.sort((a: number, b: number) => a - b);\r\n if(this.checkExtent(coord[0], coord[1], source.maxExtent?.wgs84)) {\r\n graphic = new EsriGraphic({\r\n geometry: {\r\n spatialReference: {wkid: 4326},\r\n type: \"point\",\r\n longitude: coord[0], latitude: coord[1]\r\n } as PointConfiguration\r\n });\r\n }\r\n }else if(coord[0] < 1000000){ // lv03\r\n coord.sort((a: number, b: number) => b - a);\r\n if(this.checkExtent(coord[0], coord[1], source.maxExtent?.lv03)){\r\n graphic = new EsriGraphic({\r\n geometry: {\r\n spatialReference: { wkid: 21781 },\r\n type: \"point\",\r\n x: coord[0], y: coord[1]} as PointConfiguration\r\n });\r\n }\r\n }else{ // lv95\r\n coord.sort((a: number, b: number) => b - a);\r\n if(this.checkExtent(coord[0], coord[1], source.maxExtent?.lv95)){\r\n resolve([{\r\n text: new Intl.NumberFormat(\"de-CH\").format(Math.round(coord[0]))\r\n + \" / \"+ new Intl.NumberFormat(\"de-CH\").format(Math.round(coord[1])),\r\n key: coord[0]+ \"_\"+ coord[1],\r\n sourceIndex: params.sourceIndex}]);\r\n }\r\n }\r\n if(graphic){\r\n projection.load().then(()=> {\r\n if(graphic) {\r\n const projectedPoint = projection.project(graphic.geometry, {wkid: 2056});\r\n let point: __esri.Point;\r\n if (Array.isArray(projectedPoint)) {\r\n point = projectedPoint[0] as __esri.Point;\r\n } else {\r\n point = projectedPoint as __esri.Point;\r\n }\r\n coord[0] = point.x;\r\n coord[1] = point.y;\r\n resolve([{\r\n text: new Intl.NumberFormat(\"de-CH\").format(Math.round(coord[0]))\r\n + \" / \" + new Intl.NumberFormat(\"de-CH\").format(Math.round(coord[1])),\r\n key: coord[0] + \"_\" + coord[1],\r\n sourceIndex: params.sourceIndex\r\n }]);\r\n }\r\n });\r\n } else {\r\n resolve([]);\r\n }\r\n\r\n } else {\r\n resolve([]);\r\n }\r\n } catch (err) {\r\n reject(err);\r\n }\r\n });\r\n source.getResults = (params) => new Promise((resolve) => {\r\n const coord = params.suggestResult.key.split(\"_\");\r\n const x = parseInt(coord[0], 10);\r\n const y= parseInt(coord[1], 10);\r\n const graphic = new EsriGraphic({\r\n geometry: {\r\n spatialReference: { wkid: 2056 },\r\n type: \"point\",\r\n x, y} as PointConfiguration\r\n });\r\n resolve([{\r\n extent: new Extent({\r\n spatialReference: {wkid: 2056},\r\n xmax: x+100,\r\n xmin: x-100,\r\n ymax: y+100,\r\n ymin: y-100\r\n }),\r\n feature: graphic,\r\n name: params.suggestResult.text,\r\n // @ts-expect-error Bug in SDK 4.29\r\n sourceIndex: params.sourceIndex, // TODO: wird sourceIndex noch benötigt? Bug in SDK 4.29.?\r\n target: graphic\r\n }]);\r\n\r\n });\r\n return source;\r\n }\r\n // https://stackoverflow.com/questions/1140189/converting-latitude-and-longitude-to-decimal-values\r\n private convertDMSToDD(degrees: string, minutes: string, seconds: string): number {\r\n return parseFloat(degrees) + parseFloat(minutes)/60 + parseFloat(seconds)/(60*60);\r\n }\r\n private checkExtent(x: number, y: number, maxExtent?: ExtentConfiguration): boolean {\r\n if(!maxExtent) { return true; }\r\n if(!maxExtent.xmax || !maxExtent.xmin || !maxExtent.ymax || !maxExtent.ymin) { return false; }\r\n return x > maxExtent.xmin && x < maxExtent.xmax && y > maxExtent.ymin && y < maxExtent.ymax;\r\n }\r\n}\r\n\r\nexport const Search = withStore(SearchBase);\r\n","import React, {SyntheticEvent} from \"react\";\r\nimport {observer} from \"mobx-react\";\r\nimport {autorun, runInAction} from \"mobx\";\r\n\r\nimport \"./sharing.scss\";\r\n\r\nimport {Form, Button, Divider, Input, Message, Checkbox, Popup as SemanticPopup} from \"semantic-ui-react\";\r\nimport {Icon} from \"../icon/icon\";\r\nimport {CopyToClipboard} from \"react-copy-to-clipboard\";\r\nimport PrintViewModel from \"@arcgis/core/widgets/Print/PrintViewModel\";\r\nimport {PrintConfiguration} from \"../../config/print-configuration\";\r\nimport PrintTemplate from \"@arcgis/core/rest/support/PrintTemplate\";\r\nimport EsriError from \"@arcgis/core/core/Error\";\r\nimport FileLink from \"@arcgis/core/widgets/Print/FileLink\";\r\nimport {PathUtils} from \"../../../utils/path-utils\";\r\nimport {BasemapProps, MapState} from \"../../map-state\";\r\nimport EsriGraphic from \"@arcgis/core/Graphic\";\r\nimport {IAppStore, withStore} from \"../../stores/abstract-app-store\";\r\nimport {AppState} from \"../../../components/app/app-mobx\";\r\n\r\ninterface SharingProps {\r\n config: PrintConfiguration;\r\n small?: boolean;\r\n visible: boolean;\r\n store?: IAppStore; // this is injected by withStore\r\n}\r\n\r\n// https://github.com/Esri/arcgis-js-api/blob/bb6824315a3ebb0e23e5cfa7f3319127a4b5a7a6/widgets/Print.tsx\r\n@observer\r\nclass SharingBase extends React.Component<SharingProps, any> {\r\n watchHandles: any[] = [];\r\n autorunDisposers: any[] = [];\r\n widgetKey = \"sharing\";\r\n linkHelperElement: HTMLDivElement;\r\n constructor(props: SharingProps) {\r\n super(props);\r\n this.state = {\r\n viewModel: null,\r\n screenExtent: null,\r\n center: {x:0,y:0},\r\n copied: false,\r\n imageExported: false,\r\n mapUrl: \"\",\r\n marker: false,\r\n markerType: \"default\",\r\n basemapParam: \"\",\r\n markerParam: \"\",\r\n scale: 0,\r\n isLoading: true,\r\n visible: this.props.visible\r\n };\r\n if (typeof this.props.small === \"boolean\" && this.props.small) {\r\n this.widgetKey += \"-small\";\r\n this.linkHelperElement = document.createElement(\"div\");\r\n this.linkHelperElement.className = \"geo-link-helper\";\r\n this.linkHelperElement.appendChild(document.createElement(\"div\"));\r\n }\r\n this.updateMapUrl = this.updateMapUrl.bind(this);\r\n }\r\n\r\n updateMapUrl(view: __esri.MapView | __esri.SceneView | undefined,\r\n marker: boolean, markerType: string): void {\r\n if (!view) {\r\n return;\r\n }\r\n\r\n let focusParam = \"\";\r\n if (view?.center) {\r\n const x = Math.round(view.center.x);\r\n const y = Math.round(view.center.y);\r\n // für Esri / Google / Bing tiling Schema Runden\r\n const scale = Math.round(view.scale / 35) * 35;\r\n focusParam = `?FOCUS=${x}:${y}:${scale}`;\r\n }\r\n this.setState({\r\n copied: false,\r\n imageExported: false,\r\n mapUrl: location.protocol + \"//\" + location.host + location.pathname + focusParam});\r\n if (marker) {\r\n this.drawMarker(markerType);\r\n }\r\n }\r\n updateBasemapParameter(mapStore: MapState, basemap?: BasemapProps | null): void {\r\n let tag: string | undefined = \"\";\r\n if(!basemap && mapStore && mapStore.basemap){\r\n basemap = mapStore.basemap;\r\n }\r\n if(basemap?.tags){\r\n tag = basemap.tags.find((t) => t.toLowerCase().indexOf(\"mv6:\")===0);\r\n }\r\n let basemapParam = \"\";\r\n if(tag){\r\n basemapParam = \"&BASEMAP=\" + tag.substring(4);\r\n }\r\n this.setState({\r\n basemapParam\r\n });\r\n }\r\n componentDidMount(): void {\r\n const {config, store} = this.props;\r\n const {marker, markerType} = this.state;\r\n\r\n // rerun until map view is ready and layer list view model is loaded\r\n this.autorunDisposers.push(autorun((reaction: any) => {\r\n if (store?.uiStore.widgets.has(this.widgetKey)) {\r\n reaction.dispose(); // stop autorun\r\n return;\r\n }\r\n\r\n if (!store?.mapStore.view) {\r\n return;\r\n }\r\n this.loadPrintViewModel(store.mapStore.view, config, store.appStore);\r\n this.updateMapUrl(store.mapStore.view, marker, markerType);\r\n this.updateBasemapParameter(store.mapStore);\r\n this.watchHandles.push(store.mapStore.view.watch(\"center\", () => {\r\n this.updateMapUrl(store.mapStore.view, marker, markerType);\r\n }));\r\n this.watchHandles.push(store.mapStore.view.watch(\"scale\", () => {\r\n this.updateMapUrl(store.mapStore.view, marker, markerType);\r\n }));\r\n store.uiStore.addWidget(this.widgetKey, this);\r\n reaction.dispose();\r\n }));\r\n this.autorunDisposers.push(autorun(() => {\r\n if (!store) {\r\n return;\r\n }\r\n const {basemap} = store.mapStore;\r\n this.updateBasemapParameter(store.mapStore, basemap);\r\n }));\r\n\r\n }\r\n componentDidUpdate(prevProps: SharingProps) {\r\n const {store} = this.props;\r\n const {marker, markerType} = this.state;\r\n\r\n if (this.props.visible !== prevProps.visible) {\r\n this.setState({visible: this.props.visible});\r\n if(store?.mapStore.view) {\r\n if(this.props.visible) {\r\n this.updateMapUrl(store?.mapStore.view, marker, markerType);\r\n this.updateBasemapParameter(store.mapStore);\r\n this.watchHandles.push(store.mapStore.view.watch(\"center\", () => {\r\n this.updateMapUrl(store.mapStore.view, marker, markerType);\r\n }));\r\n this.watchHandles.push(store.mapStore.view.watch(\"scale\", () => {\r\n this.updateMapUrl(store.mapStore.view, marker, markerType);\r\n }));\r\n } else {\r\n this.setState({printScale: null});\r\n // TODO: Nur watchHandle für extent entfernen\r\n this.watchHandles.forEach((handle: any) => {\r\n handle.remove();\r\n });\r\n this.watchHandles.length = 0;\r\n }\r\n }\r\n }\r\n }\r\n componentWillUnmount(): void {\r\n const {store} = this.props;\r\n this.watchHandles.forEach((handle: any) => {\r\n handle.remove();\r\n });\r\n this.watchHandles.length = 0;\r\n this.autorunDisposers.forEach((disposer: any) => {\r\n disposer();\r\n });\r\n this.autorunDisposers.length = 0;\r\n store?.uiStore.removeWidget(this.widgetKey);\r\n if(this.linkHelperElement){\r\n this.linkHelperElement.remove();\r\n }\r\n }\r\n createFileLink(template: PrintTemplate, fileName: string): __esri.FileLink {\r\n const titleText = fileName || this.state.title;\r\n const lowercaseFormat = template.format.toLowerCase();\r\n const extension = lowercaseFormat.indexOf(\"png\") > -1 ? \"png\" : lowercaseFormat;\r\n\r\n return new FileLink({\r\n name: \"GeoportalLU_\" + PathUtils.slug(titleText) + \"_\" + new Date().toISOString().slice(0,10),\r\n extension,\r\n count: 0\r\n });\r\n }\r\n handlePrintMap(event?: SyntheticEvent<HTMLButtonElement>): void {\r\n const {config} = this.props;\r\n const {viewModel} = this.state;\r\n if (event) {\r\n event.currentTarget.blur();\r\n }\r\n const pixelRatio = window.devicePixelRatio || 1;\r\n const template = new PrintTemplate({\r\n format: \"png32\",\r\n layout: \"map-only\",\r\n exportOptions: {\r\n dpi: this.getPPI(),\r\n width: Math.round(window.innerWidth * pixelRatio),\r\n height: Math.round(window.innerHeight * pixelRatio)\r\n }\r\n });\r\n\r\n const fileLink = this.createFileLink(template, this.state.title);\r\n this.setState({exportLink: fileLink, imageExported: false});\r\n viewModel\r\n .print(template)\r\n .then((result: any) => {\r\n const link = document.createElement(\"a\");\r\n let pdfUrl = config.exportDirectory + \"/\";\r\n pdfUrl += result.url.substring(result.url.lastIndexOf(\"_\") + 1, result.url.lastIndexOf(\".\"));\r\n pdfUrl = pdfUrl + \"/\" + this.state.exportLink.formattedName;\r\n link.href = pdfUrl;\r\n link.className = \"geo-link-helper\";\r\n link.setAttribute(\"target\", \"_blank\");\r\n // link.setAttribute(\"download\", this.state.exportLink.formattedName);\r\n if (this.linkHelperElement) {\r\n this.linkHelperElement.appendChild(link);\r\n }\r\n link.click();\r\n this.setState((state: any) => {\r\n const {exportLink} = state;\r\n exportLink.set({\r\n url: pdfUrl,\r\n state: \"ready\"\r\n });\r\n return {exportLink, imageExported: true};\r\n });\r\n })\r\n .catch((error: EsriError) => {\r\n console.error(error);\r\n this.setState((state: any) => {\r\n const {exportLink} = state;\r\n exportLink.set({\r\n error,\r\n state: \"error\"\r\n });\r\n return { exportLink };\r\n });\r\n });\r\n }\r\n /* Berechnet die Auflösung des Monitors in DPI\r\n https://stackoverflow.com/questions/8456455/mobile-web-how-to-get-physical-pixel-size\r\n https://mobilewidgetdev.wordpress.com/2010/07/20/how-to-really-cope-with-varying-screen-sizes-and-pixel-resolutions-in-vodafone-widgets/\r\n */\r\n getPPI(): number {\r\n // create an empty element\r\n const div = document.createElement(\"div\");\r\n // give it an absolute size of one inch\r\n div.style.width=\"1in\";\r\n // append it to the body\r\n const body = document.getElementsByTagName(\"body\")[0];\r\n body.appendChild(div);\r\n // read the computed width\r\n const ppi = document.defaultView?.getComputedStyle(div).getPropertyValue(\"width\");\r\n // remove it again\r\n body.removeChild(div);\r\n // and return the value\r\n return ppi? Math.round(parseFloat(ppi) * (window.devicePixelRatio || 1)): 96;\r\n }\r\n loadPrintViewModel(view: __esri.MapView | __esri.SceneView,\r\n printConfig: PrintConfiguration,\r\n appStore: AppState): void {\r\n\r\n const config = printConfig as __esri.PrintProperties;\r\n const props = {\r\n view,\r\n ...config\r\n };\r\n const viewModel = new PrintViewModel(props as __esri.PrintViewModelProperties);\r\n viewModel.load().then(() => {\r\n runInAction(() => {\r\n this.setState({\r\n viewModel,\r\n title: appStore.topic.label,\r\n layout: \"MAP_ONLY\",\r\n isLoading: false\r\n });\r\n });\r\n });\r\n }\r\n handleCheckboxChange(event: SyntheticEvent, eventData: any): void {\r\n event.preventDefault();\r\n const {store} = this.props;\r\n const marker = eventData[\"checked\"];\r\n if(marker){\r\n store?.PopupStore.setVisible(false);\r\n }\r\n const markerParam = marker? \"&marker\"+(this.state.markerType !== \"default\"? \"=\" + this.state.markerType: \"\"):\"\";\r\n this.setState({\r\n marker,\r\n markerParam\r\n });\r\n this.drawMarker(marker? this.state.markerType: \"\");\r\n }\r\n handleMarkerTypeChange(event: SyntheticEvent, eventData: any): void {\r\n event.preventDefault();\r\n const markerType = eventData[\"value\"];\r\n const markerParam = this.state.marker? \"&marker\"+(markerType !== \"default\"? \"=\" + markerType: \"\"):\"\";\r\n this.setState({\r\n markerType,\r\n markerParam\r\n });\r\n this.drawMarker(markerType);\r\n }\r\n drawMarker(markerType: string): void {\r\n const {store} = this.props;\r\n if (!store) {\r\n return;\r\n }\r\n const {additionalParameter} = store.mapViewerConfig;\r\n const marker = markerType !== \"\";\r\n let symbol;\r\n if(store.mapStore.view) {\r\n store.mapStore.view.graphics.removeAll();\r\n }\r\n if(marker && additionalParameter) {\r\n if (additionalParameter.marker[markerType]) {\r\n symbol = additionalParameter.marker[markerType];\r\n } else {\r\n symbol = store.appConfig.search.resultSymbol?.pointer;\r\n }\r\n if (symbol && store.mapStore.view) {\r\n store.mapStore.view.graphics.push(\r\n new EsriGraphic({\r\n geometry: store.mapStore.view?.center,\r\n symbol\r\n })\r\n );\r\n }\r\n }\r\n }\r\n render(): React.ReactElement | null {\r\n const {exportLink, isLoading, mapUrl, marker, markerType, markerParam, basemapParam, visible} = this.state;\r\n if (!visible) {\r\n return null;\r\n }\r\n if (isLoading) {\r\n return <div className=\"geo-loading-wrapper\"><Icon name={\"recycle\"} className={\"geo-rotating\"} /></div>;\r\n }\r\n const buttons: React.ReactElement[] = [];\r\n let infoBlock: React.ReactElement | null = null;\r\n if (exportLink) {\r\n if (exportLink.state===\"pending\") {\r\n buttons.push(<Button key={\"image\"} compact disabled size={\"small\"}><Icon name={\"photo_landscape\"} />\r\n Bild wird erstellt <Icon name={\"recycle\"} className={\"geo-rotating\"} /></Button>);\r\n } else {\r\n buttons.push(<Button\r\n key={\"image\"}\r\n className={exportLink.state}\r\n compact\r\n onClick={(e)=> this.handlePrintMap(e)}\r\n size={\"small\"}><Icon name={\"photo_landscape\"} /> Bild erstellen{\r\n (exportLink.state===\"error\")? <Icon name={\"sign_warning\"} />: \"\"}\r\n </Button>);\r\n if (exportLink.state===\"ready\") {\r\n buttons.push(<Button\r\n key={\"download\"}\r\n compact\r\n href={exportLink.url}\r\n positive={this.state.imageExported}\r\n target={\"_blank\"}\r\n rel={\"noreferrer\"}\r\n size={\"small\"}><Icon name={\"nav_down\"} /> Bild öffnen</Button>);\r\n } else if (exportLink.state===\"error\") {\r\n infoBlock = <Message\r\n attached=\"bottom\"\r\n className={\"error\"}\r\n content={\"Bild erstellen ist fehlgeschlagen. Bitte versuchen Sie es später noch einmal.\"}\r\n />;\r\n }\r\n }\r\n } else {\r\n buttons.push(<Button\r\n key={\"image\"}\r\n compact\r\n onClick={(e)=> this.handlePrintMap(e)}\r\n size={\"small\"}><Icon name={\"photo_landscape\"} /> Bild erstellen</Button>);\r\n }\r\n return (\r\n <div className={\"sharingWrapper\"}>\r\n <Form size={\"small\"}>\r\n <Form.Field>\r\n <label>Link auf aktuelle Karte</label>\r\n <Input\r\n className={\"geo-inputfield-url\"}\r\n name=\"url\"\r\n label={\r\n <SemanticPopup\r\n content={this.state.copied ?\r\n <>Link kopiert <Icon name={\"check\"} /></>: \"Link kopieren\" }\r\n trigger={\r\n <div><CopyToClipboard\r\n text={mapUrl + markerParam + basemapParam}\r\n onCopy={() => this.setState({copied: true})}>\r\n <Button\r\n className={this.state.copied ? \"success\": \"\"}\r\n compact\r\n positive={this.state.copied}>\r\n <Icon name={\"clipboard\"} />\r\n </Button>\r\n </CopyToClipboard></div>}\r\n on={\"hover\"}\r\n />\r\n }\r\n labelPosition={\"right\"}\r\n value={mapUrl + markerParam + basemapParam} />\r\n </Form.Field>\r\n <Form.Field>\r\n <Checkbox\r\n label={\"Kartenzentrum markieren\"}\r\n checked={marker}\r\n onChange={(event: SyntheticEvent, eventData: object) => {\r\n this.handleCheckboxChange(event, eventData);\r\n }} />\r\n </Form.Field>\r\n {(marker)? <Form.Field>\r\n <Button.Group compact>\r\n <Button\r\n value={\"default\"} primary={markerType===\"default\"}\r\n onClick={(event: SyntheticEvent, eventData: object) => {\r\n this.handleMarkerTypeChange(event, eventData);\r\n }}><Icon name={\"location_pin\"} selected /></Button>\r\n <Button\r\n value={\"circle\"} primary={markerType===\"circle\"}\r\n onClick={(event: SyntheticEvent, eventData: object) => {\r\n this.handleMarkerTypeChange(event, eventData);\r\n }}><Icon name={\"shape_circle\"} /></Button>\r\n <Button\r\n value={\"point\"} primary={markerType===\"point\"}\r\n onClick={(event: SyntheticEvent, eventData: object) => {\r\n this.handleMarkerTypeChange(event, eventData);\r\n }}><Icon name={\"shape_circle\"} selected /></Button>\r\n <Button\r\n value={\"x\"} primary={markerType===\"x\"}\r\n onClick={(event: SyntheticEvent, eventData: object) => {\r\n this.handleMarkerTypeChange(event, eventData);\r\n }}><Icon name={\"navigate_cross\"} /></Button>\r\n <Button\r\n value={\"cross\"} primary={markerType===\"cross\"}\r\n onClick={(event: SyntheticEvent, eventData: object) => {\r\n this.handleMarkerTypeChange(event, eventData);\r\n }}><Icon name={\"navigate_plus\"} /></Button>\r\n </Button.Group></Form.Field>\r\n :\"\"}\r\n <Divider></Divider>\r\n <Form.Field>\r\n <label>Karte als Bild speichern</label>\r\n {buttons}\r\n </Form.Field>\r\n </Form>\r\n {infoBlock}\r\n </div>\r\n );\r\n }\r\n}\r\n\r\nexport const Sharing = withStore(SharingBase);\r\n","import * as React from \"react\";\r\nimport * as ReactDOM from \"react-dom\";\r\nimport {TopicConfiguration} from \"../../../config/topic-configuration\";\r\n\r\nexport interface TitleProps {\r\n pageTitle?: string;\r\n siteTitle?: string;\r\n topic?: TopicConfiguration | undefined;\r\n subtopic?: TopicConfiguration | undefined;\r\n}\r\n\r\nexport class Title extends React.Component<TitleProps, any> {\r\n siteTitle: string;\r\n titleEl: any;\r\n ogTitle: HTMLElement | null;\r\n descriptionEl: HTMLElement | null;\r\n ogDescription: HTMLElement | null;\r\n\r\n constructor(props: TitleProps) {\r\n super(props);\r\n if (this.props.siteTitle) {\r\n this.siteTitle = this.props.siteTitle;\r\n } else {\r\n this.siteTitle = \"Onlinekarte\";\r\n }\r\n this.titleEl = document.getElementsByTagName(\"title\")[0];\r\n this.ogTitle = document.querySelector(\"meta[property='og:title']\");\r\n this.descriptionEl = document.querySelector(\"meta[name='description']\");\r\n this.ogDescription = document.querySelector(\"meta[property='og:description']\");\r\n }\r\n\r\n render() {\r\n let fullTitle;\r\n if (this.props.siteTitle) {\r\n this.siteTitle = this.props.siteTitle;\r\n }\r\n if (this.props.pageTitle) {\r\n fullTitle = this.siteTitle + \" - \" + this.props.pageTitle;\r\n } else {\r\n fullTitle = this.siteTitle;\r\n }\r\n if (typeof this.props.subtopic?.description === \"string\" && this.props.subtopic?.description !== \"\") {\r\n this.descriptionEl?.setAttribute(\"content\", this.props.subtopic?.description as string);\r\n this.ogDescription?.setAttribute(\"content\", this.props.subtopic?.description as string);\r\n }else if (typeof this.props.topic?.description === \"string\" && this.props.topic?.description !== \"\") {\r\n this.descriptionEl?.setAttribute(\"content\", this.props.topic?.description as string);\r\n this.ogDescription?.setAttribute(\"content\", this.props.topic?.description as string);\r\n }\r\n this.ogTitle?.setAttribute(\"content\", fullTitle || \"\");\r\n return ReactDOM.createPortal(\r\n fullTitle || \"\",\r\n this.titleEl\r\n );\r\n }\r\n}\r\n","import React, {SyntheticEvent} from \"react\";\r\n\r\nimport {UiState} from \"../../../ui-state\";\r\n\r\nimport {Button} from \"semantic-ui-react\";\r\nimport {Icon} from \"../../icon/icon\";\r\nimport {autorun} from \"mobx\";\r\n\r\ninterface ElevationProfileButtonProps {\r\n active: boolean;\r\n uiStore: UiState;\r\n onClick: (tool: string | null) => void;\r\n small?: boolean;\r\n}\r\n\r\nexport class ElevationProfileButton extends React.Component<ElevationProfileButtonProps, any> {\r\n watchHandles: any[] = [];\r\n autorunDisposers: any[] = [];\r\n constructor(props: ElevationProfileButtonProps) {\r\n super(props);\r\n this.state = {\r\n viewModel: null,\r\n isLoading: true,\r\n active: this.props.active\r\n };\r\n this.handleClick=this.handleClick.bind(this);\r\n }\r\n handleClick(event?: SyntheticEvent<HTMLButtonElement>): void {\r\n const {small, uiStore} = this.props;\r\n if (event) {\r\n event.currentTarget.blur();\r\n }\r\n const {active} = this.state;\r\n this.setState({active: !active});\r\n if (!active) {\r\n if (small) {\r\n uiStore.setSidebarVisible(false);\r\n }\r\n this.props.onClick(\"profile\");\r\n } else {\r\n this.props.onClick(null);\r\n }\r\n }\r\n componentDidMount(): void {\r\n autorun(() => {\r\n const {uiStore} = this.props;\r\n if (uiStore.activeTool === \"profile\") {\r\n this.setState({active: true});\r\n } else {\r\n this.setState({active: false});\r\n }\r\n });\r\n }\r\n componentDidUpdate(prevProps: ElevationProfileButtonProps): void {\r\n if(prevProps.active !== this.props.active && this.state.active !== this.props.active){\r\n // this.setActive(this.props.active);\r\n this.setState({active: this.props.active});\r\n }\r\n }\r\n componentWillUnmount(): void {\r\n this.watchHandles.forEach((handle: any) => {\r\n handle.remove();\r\n });\r\n this.watchHandles.length = 0;\r\n this.autorunDisposers.forEach((disposer: any) => {\r\n disposer();\r\n });\r\n this.autorunDisposers.length = 0;\r\n }\r\n\r\n render(): React.ReactElement | null {\r\n const {active} = this.state;\r\n return <div className={\"geo-elevation-button\"}>\r\n <Button\r\n active={active}\r\n compact\r\n toggle\r\n onClick={(e)=>this.handleClick(e)}\r\n size={\"small\"}>\r\n <Icon name={\"chart_spline\"}/> Höhenprofil</Button>\r\n </div>;\r\n }\r\n}\r\n","import React from \"react\";\r\n\r\nimport {Icon} from \"../../icon/icon\";\r\nimport {ElevationProfileConfiguration} from \"../../../config/tools-configuration\";\r\nimport EsriElevationProfile from \"@arcgis/core/widgets/ElevationProfile\";\r\nimport ElevationProfileLineQuery from \"@arcgis/core/widgets/ElevationProfile/ElevationProfileLineQuery\";\r\nimport _ from \"lodash\";\r\nimport * as reactiveUtils from \"@arcgis/core/core/reactiveUtils\";\r\nimport {autorun} from \"mobx\";\r\nimport {IAppStore, withStore} from \"../../../stores/abstract-app-store\";\r\n\r\n\r\ninterface ElevationProfileProps {\r\n config?: ElevationProfileConfiguration | undefined;\r\n small?: boolean;\r\n store?: IAppStore; // this is injected by withStore\r\n}\r\n\r\nexport class ElevationProfileBase extends React.Component<ElevationProfileProps, any> {\r\n watchHandles: any[] = [];\r\n autorunDisposers: any[] = [];\r\n elevationProfile: EsriElevationProfile;\r\n profileRef: any;\r\n widgetKey = \"elevation-profile\";\r\n constructor(props: ElevationProfileProps) {\r\n super(props);\r\n this.state = {\r\n active: false,\r\n isLoading: true,\r\n inProgress: false,\r\n state: \"\"\r\n };\r\n this.profileRef = React.createRef();\r\n if (typeof this.props.small === \"boolean\" && this.props.small) {\r\n this.widgetKey += \"-small\";\r\n }\r\n this.close = this.close.bind(this);\r\n }\r\n setActive(active: boolean): void {\r\n const {config, store} = this.props;\r\n if (!store?.mapStore.view) {\r\n return;\r\n }\r\n if (active){\r\n if (!this.elevationProfile) {\r\n // settings und clear Button ausschalten falls nicht definiert\r\n if(config?.visibleElements){\r\n if(!config?.visibleElements?.settingsButton) {\r\n config.visibleElements.settingsButton = false;\r\n }\r\n if(!config?.visibleElements?.clearButton) {\r\n config.visibleElements.clearButton = false;\r\n }\r\n }\r\n let profiles: __esri.ElevationProfileLineQuery[] = [];\r\n store.mapStore.view.map.ground.layers.forEach((l: __esri.ElevationLayer) => {\r\n profiles.push(new ElevationProfileLineQuery({\r\n id: l.id,\r\n source: l,\r\n title: l.title,\r\n // Die Farben \"green\" und \"orange\" bereitet dem SDK V 4.28 probleme\r\n color: (l.id === \"dtm\") ? \"#aadd22\" : \"#ff7f00\"\r\n }));\r\n });\r\n profiles = _.orderBy(profiles, [\"id\"], [\"desc\"]);\r\n this.elevationProfile = new EsriElevationProfile({\r\n container: this.profileRef.current,\r\n view: store.mapStore.view,\r\n profiles,\r\n unitOptions: [\"metric\", \"meters\", \"kilometers\"],\r\n ...config as __esri.ElevationProfileProperties\r\n });\r\n this.watchHandles.push(\r\n this.elevationProfile.watch(\"viewModel.progress\", (newValue)=>{\r\n let inProgress = false;\r\n if(this.elevationProfile.viewModel.state === \"selected\"){\r\n inProgress = newValue < 1;\r\n }\r\n // Der ViewModel \"state\" wird damit nicht zuverlässig aktualisiert. Dies wird jedoch nicht\r\n // benötigt.\r\n this.setState({\r\n inProgress,\r\n state: this.elevationProfile.viewModel.state\r\n });\r\n })\r\n );\r\n }\r\n this.elevationProfile.visible = true;\r\n if(store?.uiStore.toolGraphic){\r\n if(this.elevationProfile.viewModel){\r\n this.elevationProfile.viewModel.clear();\r\n }\r\n this.elevationProfile.input = store?.uiStore.toolGraphic;\r\n }else if(!config?.visibleElements?.selectButton) {\r\n // Falls der Select Path Button deaktiviert ist, gleich den sketch Modus aktivieren.\r\n this.watchHandles.push(reactiveUtils.when(\r\n () => this.elevationProfile.viewModel.state === \"ready\",\r\n () => {\r\n this.elevationProfile.viewModel.start();\r\n },\r\n { initial: true, once: true }\r\n ));\r\n }\r\n } else if(this.elevationProfile) {\r\n this.elevationProfile.viewModel.clear();\r\n this.elevationProfile.visible = false;\r\n }\r\n }\r\n close(): void {\r\n const {store} = this.props;\r\n store?.PopupStore.setDisabled(false);\r\n store?.uiStore.setActiveTool(\"\");\r\n }\r\n componentDidMount(): void {\r\n autorun(() => {\r\n const {store} = this.props;\r\n if (store?.uiStore.activeTool === \"profile\") {\r\n this.setState({active: true});\r\n this.setActive(true);\r\n } else {\r\n this.setActive(false);\r\n this.setState({active: false});\r\n }\r\n });\r\n }\r\n componentWillUnmount(): void {\r\n const {store} = this.props;\r\n this.watchHandles.forEach((handle: any) => {\r\n handle.remove();\r\n });\r\n this.watchHandles.length = 0;\r\n this.autorunDisposers.forEach((disposer: any) => {\r\n disposer();\r\n });\r\n this.autorunDisposers.length = 0;\r\n if (store?.mapStore.view) {\r\n if (this.elevationProfile) {\r\n this.elevationProfile.destroy();\r\n }\r\n }\r\n store?.uiStore.removeWidget(this.widgetKey);\r\n }\r\n\r\n render(): React.ReactElement | null {\r\n const {active, inProgress, state} = this.state;\r\n return (\r\n <div className={\"geo-profile-wrapper geo-widget geo-component\"\r\n + (active? \" show\": \" hidden\") + (inProgress? \" geo-widget-updating\": \"\")\r\n + \" geo-profile_state-\" + state}>\r\n <div ref={this.profileRef} />\r\n <Icon name={\"recycle\"} className={\"geo-rotating\"}/>\r\n <Icon className={\"geo-close\"} name={\"navigate_cross\"} onClick={this.close} />\r\n <div className={\"geo-elevation-info\"}>Daten: Digitale Geländemodelle 2018</div>\r\n </div>\r\n );\r\n }\r\n}\r\n\r\nexport const ElevationProfile = withStore(ElevationProfileBase);\r\n","import React, {SyntheticEvent} from \"react\";\r\n\r\nimport {UiState} from \"../../../ui-state\";\r\n\r\nimport {Button, Form} from \"semantic-ui-react\";\r\nimport {Icon} from \"../../icon/icon\";\r\nimport {autorun} from \"mobx\";\r\n\r\ninterface MeasurementButtonsProperties {\r\n active: boolean;\r\n uiStore: UiState;\r\n onClick: (tool: string | null, subTool?: string) => void;\r\n small?: boolean;\r\n}\r\ninterface MeasurementStates {\r\n active: boolean;\r\n activeTool?: \"area\" | \"distance\";\r\n}\r\n\r\nexport class MeasurementButtons extends React.Component<MeasurementButtonsProperties, any> {\r\n state: MeasurementStates;\r\n watchHandles: any[] = [];\r\n autorunDisposers: any[] = [];\r\n constructor(props: MeasurementButtonsProperties) {\r\n super(props);\r\n this.state = {\r\n active: this.props.active,\r\n activeTool: undefined\r\n };\r\n this.handleClick=this.handleClick.bind(this);\r\n }\r\n handleClick(tool: \"area\" | \"distance\", event?: SyntheticEvent<HTMLButtonElement>): void {\r\n const {small, uiStore} = this.props;\r\n if (event) {\r\n event.currentTarget.blur();\r\n }\r\n const {active, activeTool} = this.state;\r\n let newActive: boolean;\r\n let newActiveTool: \"area\" | \"distance\" | undefined;\r\n if (active){\r\n if (tool !== undefined && tool!==activeTool) {\r\n newActive = true;\r\n newActiveTool = tool;\r\n } else {\r\n newActive = false;\r\n newActiveTool = undefined;\r\n }\r\n } else {\r\n newActive = true;\r\n newActiveTool = tool;\r\n }\r\n this.setState({active: newActive, activeTool: newActiveTool});\r\n if (newActive) {\r\n if (small) {\r\n uiStore.setSidebarVisible(false);\r\n }\r\n this.props.onClick(\"measurement\", newActiveTool);\r\n } else {\r\n this.props.onClick(null);\r\n }\r\n }\r\n componentDidMount(): void {\r\n autorun(() => {\r\n const {uiStore} = this.props;\r\n if (uiStore.activeTool.indexOf(\"measurement\")===0) {\r\n const activeTool = uiStore.activeTool.substring(12);\r\n if (activeTool === \"distance\" || activeTool === \"area\"){\r\n this.setState({active: true, activeTool});\r\n }\r\n } else {\r\n this.setState({active: false});\r\n }\r\n });\r\n }\r\n componentDidUpdate(prevProps: MeasurementButtonsProperties): void {\r\n if(prevProps.active !== this.props.active && this.state.active !== this.props.active){\r\n this.setState({active: this.props.active});\r\n }\r\n }\r\n componentWillUnmount(): void {\r\n this.watchHandles.forEach((handle: any) => {\r\n handle.remove();\r\n });\r\n this.watchHandles.length = 0;\r\n this.autorunDisposers.forEach((disposer: any) => {\r\n disposer();\r\n });\r\n this.autorunDisposers.length = 0;\r\n }\r\n\r\n render(): React.ReactElement | null {\r\n const {active, activeTool} = this.state;\r\n return (\r\n <Form size={\"small\"} className={\"geo-measurement-buttons\"}>\r\n <Form.Field>\r\n <label>Messen</label>\r\n <Button\r\n active={active && activeTool === \"distance\"}\r\n compact\r\n toggle\r\n onClick={(e)=>this.handleClick(\"distance\", e)}\r\n size={\"small\"}>\r\n <Icon name={\"tape_measure2\"}/> Strecke</Button>\r\n <Button\r\n active={active && activeTool === \"area\"}\r\n compact\r\n toggle\r\n onClick={(e)=>this.handleClick(\"area\", e)}\r\n size={\"small\"}>\r\n <Icon name={\"vector_square\"}/> Fläche</Button>\r\n </Form.Field>\r\n </Form>\r\n );\r\n }\r\n}\r\n","import React from \"react\";\r\n\r\nimport {Icon} from \"../../icon/icon\";\r\nimport AreaMeasurement2D from \"@arcgis/core/widgets/AreaMeasurement2D\";\r\nimport DistanceMeasurement2D from \"@arcgis/core/widgets/DistanceMeasurement2D\";\r\nimport * as reactiveUtils from \"@arcgis/core/core/reactiveUtils\";\r\nimport {autorun} from \"mobx\";\r\nimport {IAppStore, withStore} from \"../../../stores/abstract-app-store\";\r\n\r\ninterface MeasurementProperties {\r\n small?: boolean;\r\n store?: IAppStore; // this is injected by withStore\r\n}\r\ninterface MeasurementStates {\r\n active: boolean;\r\n activeTool?: \"area\" | \"distance\";\r\n}\r\n\r\nexport class MeasurementBase extends React.Component<MeasurementProperties, any> {\r\n state: MeasurementStates;\r\n watchHandles: any[] = [];\r\n autorunDisposers: any[] = [];\r\n measurements: Array<AreaMeasurement2D | DistanceMeasurement2D>;\r\n measurementRefs: Array<React.RefObject<any>>;\r\n widgetKey = \"measurement\";\r\n\r\n constructor(props: MeasurementProperties) {\r\n super(props);\r\n this.state = {\r\n active: false,\r\n activeTool: undefined\r\n };\r\n this.measurements = [];\r\n this.measurementRefs = [];\r\n this.measurementRefs[\"area\"] = React.createRef();\r\n this.measurementRefs[\"distance\"] = React.createRef();\r\n if (typeof this.props.small === \"boolean\" && this.props.small) {\r\n this.widgetKey += \"-small\";\r\n }\r\n this.close = this.close.bind(this);\r\n }\r\n\r\n setActive(active: boolean, tool?: \"area\" | \"distance\"): void {\r\n const {store} = this.props;\r\n if (!store?.mapStore.view) {\r\n return;\r\n }\r\n if (active){\r\n if (!tool) {\r\n tool = this.state.activeTool;\r\n }\r\n if (this.state.activeTool && this.measurements[this.state.activeTool]) {\r\n this.measurements[this.state.activeTool].viewModel.clear();\r\n this.measurements[this.state.activeTool].visible = false;\r\n }\r\n if (tool === \"area\") {\r\n if (!this.measurements[tool]) {\r\n this.measurements[tool] = new AreaMeasurement2D({\r\n container: this.measurementRefs[tool].current,\r\n view: store.mapStore.view as any,\r\n id: this.widgetKey,\r\n unitOptions: [\"metric\", \"square-meters\", \"square-kilometers\", \"ares\", \"hectares\"]\r\n });\r\n }\r\n this.measurements[tool].visible = true;\r\n } else if (tool === \"distance\") {\r\n if (!this.measurements[tool]) {\r\n this.measurements[tool] = new DistanceMeasurement2D({\r\n container: this.measurementRefs[tool].current,\r\n view: store.mapStore.view as any,\r\n id: this.widgetKey,\r\n unitOptions : [\"metric\", \"meters\", \"kilometers\"]});\r\n }\r\n this.measurements[tool].visible = true;\r\n }\r\n\r\n if (tool === \"distance\" || tool === \"area\") {\r\n this.watchHandles.push(reactiveUtils.when(\r\n () => tool && this.measurements[tool].viewModel.state === \"ready\",\r\n () => {\r\n if (tool === \"distance\" || tool === \"area\") {\r\n this.measurements[tool]?.viewModel.start();\r\n }\r\n },\r\n { initial: true, once: true }\r\n ));\r\n }\r\n } else {\r\n if (this.measurements[\"area\"]) {\r\n this.measurements[\"area\"].viewModel.clear();\r\n this.measurements[\"area\"].visible = false;\r\n }\r\n if (this.measurements[\"distance\"]) {\r\n this.measurements[\"distance\"].viewModel.clear();\r\n this.measurements[\"distance\"].visible = false;\r\n }\r\n }\r\n }\r\n close(): void {\r\n const {store} = this.props;\r\n store?.PopupStore.setDisabled(false);\r\n store?.uiStore.setActiveTool(\"\");\r\n }\r\n componentDidMount(): void {\r\n autorun(() => {\r\n const {store} = this.props;\r\n if (store?.uiStore.activeTool.indexOf(\"measurement\")===0) {\r\n const activeTool = store?.uiStore.activeTool.substring(12);\r\n if (activeTool === \"distance\" || activeTool === \"area\"){\r\n this.setState({active: true, activeTool});\r\n this.setActive(true, activeTool);\r\n }\r\n } else {\r\n this.setActive(false);\r\n this.setState({active: false});\r\n }\r\n });\r\n }\r\n componentWillUnmount(): void {\r\n const {store} = this.props;\r\n this.watchHandles.forEach((handle: any) => {\r\n handle.remove();\r\n });\r\n this.watchHandles.length = 0;\r\n this.autorunDisposers.forEach((disposer: any) => {\r\n disposer();\r\n });\r\n this.autorunDisposers.length = 0;\r\n if (store?.mapStore.view) {\r\n if (this.measurements[\"area\"]) {\r\n this.measurements[\"area\"].destroy();\r\n }\r\n if (this.measurements[\"distance\"]) {\r\n this.measurements[\"distance\"].destroy();\r\n }\r\n }\r\n store?.uiStore.removeWidget(this.widgetKey);\r\n }\r\n\r\n render(): React.ReactElement | null {\r\n const {active} = this.state;\r\n return (\r\n <div className={\"geo-measurement-wrapper geo-widget geo-component\"+(active? \" show\": \" hidden\")}>\r\n <div ref={this.measurementRefs[\"area\"]} />\r\n <div ref={this.measurementRefs[\"distance\"]} />\r\n <Icon name={\"navigate_cross\"} onClick={this.close} className={\"geo-close\"} />\r\n </div>\r\n );\r\n }\r\n}\r\n\r\nexport const Measurement = withStore(MeasurementBase);\r\n","import React from \"react\";\r\n\r\nimport \"./tools.scss\";\r\n\r\nimport {ElevationProfileButton} from \"./elevation-profile/elevation-profile-button\";\r\nimport {MeasurementButtons} from \"./measurement/measurement-buttons\";\r\nimport {ToolsConfiguration} from \"../../config/tools-configuration\";\r\nimport {IAppStore, withStore} from \"../../stores/abstract-app-store\";\r\n\r\n\r\ninterface ToolsProps {\r\n config: ToolsConfiguration;\r\n small?: boolean;\r\n store?: IAppStore; // this is injected by withStore\r\n}\r\n\r\nclass ToolsBase extends React.Component<ToolsProps, any> {\r\n watchHandles: any[] = [];\r\n autorunDisposers: any[] = [];\r\n widgetKey = \"tools\";\r\n constructor(props: ToolsProps) {\r\n super(props);\r\n this.state = {\r\n viewModel: null,\r\n isLoading: true,\r\n activeTool: null\r\n };\r\n if (typeof this.props.small === \"boolean\" && this.props.small) {\r\n this.widgetKey += \"-small\";\r\n }\r\n this.handleClick=this.handleClick.bind(this);\r\n }\r\n handleClick(tool: string | null, subTool?: string): void {\r\n const {store} = this.props;\r\n this.setState({activeTool: tool});\r\n if (tool) {\r\n store?.PopupStore.setDisabled(true);\r\n store?.uiStore.setActiveTool(tool + ((subTool !== undefined)? \"-\"+subTool: \"\"));\r\n } else {\r\n store?.PopupStore.setDisabled(false);\r\n store?.uiStore.setActiveTool(\"\");\r\n }\r\n }\r\n componentDidMount(): void {\r\n }\r\n\r\n componentWillUnmount(): void {\r\n const {store} = this.props;\r\n this.watchHandles.forEach((handle: any) => {\r\n handle.remove();\r\n });\r\n this.watchHandles.length = 0;\r\n this.autorunDisposers.forEach((disposer: any) => {\r\n disposer();\r\n });\r\n this.autorunDisposers.length = 0;\r\n store?.uiStore.removeWidget(this.widgetKey);\r\n }\r\n\r\n render(): React.ReactElement | null {\r\n const {small, store} = this.props;\r\n const {activeTool} = this.state;\r\n\r\n if (!store) {\r\n return null;\r\n }\r\n\r\n return (\r\n <div className={\"geo-tools-wrapper\"}>\r\n <MeasurementButtons\r\n active={activeTool===\"measurement\"}\r\n uiStore={store.uiStore}\r\n onClick={this.handleClick}\r\n small={small}/>\r\n <ElevationProfileButton\r\n active={activeTool===\"profile\"}\r\n uiStore={store.uiStore}\r\n onClick={this.handleClick}\r\n small={small}/>\r\n </div>\r\n );\r\n }\r\n}\r\n\r\nexport const Tools = withStore(ToolsBase);\r\n","import * as React from \"react\";\r\nimport {SyntheticEvent} from \"react\";\r\nimport {observer} from \"mobx-react\";\r\n\r\nimport \"./topic-switcher.scss\";\r\n\r\nimport {Button, Menu, Popup as SemanticPopup} from \"semantic-ui-react\";\r\n\r\nimport {TopicConfiguration} from \"../../../config/topic-configuration\";\r\nimport MediaQuery from \"react-responsive\";\r\nimport {Icon} from \"../icon/icon\";\r\nimport {IAppStore, withStore} from \"../../stores/abstract-app-store\";\r\n\r\nexport interface TopicSwitcherButtonProps {\r\n topics: TopicConfiguration[];\r\n showTopic?: boolean;\r\n store?: IAppStore; // this is injected by withStore\r\n}\r\n\r\n@observer\r\nclass TopicSwitcherButtonBase extends React.Component<TopicSwitcherButtonProps, any> {\r\n widgetKey = \"topic-switcher-button\";\r\n constructor(props: TopicSwitcherButtonProps) {\r\n super(props);\r\n this.handleToggle = this.handleToggle.bind(this);\r\n }\r\n\r\n handleToggle(event?: SyntheticEvent) {\r\n const {store} = this.props;\r\n if (store?.TopicSwitcherStore.visible) {\r\n store?.TopicSwitcherStore.setVisible(false);\r\n } else {\r\n store?.TopicSwitcherStore.setVisible(true);\r\n if(store?.uiStore.isSmallDevice) {\r\n store?.uiStore.setSidebarVisible(true);\r\n }\r\n }\r\n if(event) {\r\n event.preventDefault();\r\n }\r\n }\r\n\r\n componentDidMount(): void {\r\n const {store} = this.props;\r\n if (store?.uiStore.widgets.has(this.widgetKey)) {\r\n return;\r\n }\r\n store?.uiStore.addWidget(this.widgetKey, this);\r\n }\r\n\r\n componentWillUnmount(): void {\r\n const {store} = this.props;\r\n store?.uiStore.removeWidget(this.widgetKey);\r\n }\r\n\r\n render() {\r\n const {showTopic, store} = this.props;\r\n if (!store) {\r\n return null;\r\n }\r\n const {subtopic} = store.appStore;\r\n if (!subtopic) {\r\n return null;\r\n }\r\n\r\n if (showTopic) {\r\n if(store.mapViewerConfig.subtopics?.length>1) {\r\n return <SemanticPopup\r\n content={store.mapViewerConfig.topicSwitcher?.button}\r\n disabled={store.TopicSwitcherStore.visible}\r\n trigger={<Menu.Item\r\n as={Button}\r\n onClick={this.handleToggle} className=\"geo-topic-switcher\">\r\n <MediaQuery minWidth={store.mapViewerConfig.breakpoints.md}>\r\n <Icon name={\"navigate_down\"} className={\"icon--topic-switcher\"} />\r\n </MediaQuery>\r\n {subtopic?.icon ? <Icon name={subtopic.icon}/> : null}\r\n <span\r\n className=\"geo-topic-switcher-label\">\r\n {subtopic?.label ? subtopic.label : subtopic?.name}</span>\r\n </Menu.Item>}\r\n on={\"hover\"}/>;\r\n } else {\r\n return <h1><span>{subtopic?.label ? subtopic.label : subtopic?.name}</span></h1>;\r\n }\r\n } else {\r\n return <div className={\"geo-topic-switcher\"}><Button\r\n compact\r\n size={\"mini\"}\r\n onClick={this.handleToggle}>\r\n <Icon name={\"signpost\"} className={\"icon--topic-switcher\"} />\r\n {store.mapViewerConfig.topicSwitcher?.button}\r\n </Button></div>;\r\n }\r\n }\r\n}\r\n\r\nexport const TopicSwitcherButton = withStore(TopicSwitcherButtonBase);\r\n","import * as React from \"react\";\r\nimport {SyntheticEvent} from \"react\";\r\nimport {observer} from \"mobx-react\";\r\nimport {Link} from \"react-router-dom\";\r\nimport {action, runInAction} from \"mobx\";\r\n\r\nimport \"./topic-switcher.scss\";\r\n\r\nimport {Icon as SemanticIcon, Menu, Sidebar} from \"semantic-ui-react\";\r\n\r\nimport {TopicConfiguration} from \"../../../config/topic-configuration\";\r\nimport {Icon} from \"../icon/icon\";\r\nimport {PathUtils} from \"../../../utils/path-utils\";\r\nimport {IAppStore, withStore} from \"../../stores/abstract-app-store\";\r\n\r\n\r\nexport interface TopicSwitcherProps {\r\n topics: TopicConfiguration[];\r\n small?: boolean;\r\n store?: IAppStore; // this is injected by withStore\r\n}\r\n\r\n@observer\r\nclass TopicSwitcherBase extends React.Component<TopicSwitcherProps, any> {\r\n widgetKey = \"topic-switcher\";\r\n constructor(props: TopicSwitcherProps) {\r\n super(props);\r\n if (typeof this.props.small === \"boolean\" && this.props.small) {\r\n this.widgetKey += \"-small\";\r\n }\r\n\r\n this.handleMenuOpen = this.handleMenuOpen.bind(this);\r\n this.handleToggle = this.handleToggle.bind(this);\r\n }\r\n\r\n @action\r\n setTopic(topic: TopicConfiguration) {\r\n runInAction(() => {\r\n const {topics, store} = this.props;\r\n if (!store) {\r\n return;\r\n }\r\n // if a top-level topic was clicked, select the first child\r\n if (!topic.routes) {\r\n topic = store.mapViewerConfig.getFirstSubtopic(topic, topics);\r\n }\r\n // Falls sich das Subtopic ändert, Popup und Tools (z.B. Höhenprofil) schliessen\r\n if(topic.id !== store.appStore.subtopicId) {\r\n store.PopupStore.setVisible(false);\r\n store.uiStore.setActiveTool(\"\");\r\n }\r\n store.appStore.setSubtopic(topic);\r\n store.appStore.setRoutePath(PathUtils.joinPath(store.appStore.topic.routes[0], topic?.routes[0]));\r\n });\r\n }\r\n\r\n handleMenuOpen(event: SyntheticEvent, data: any) {\r\n event.preventDefault();\r\n const {topics, store} = this.props;\r\n this.handleToggle();\r\n if(data.name === \"openMapFinder\"){\r\n store?.MapFinderStore.setVisible(true);\r\n return;\r\n }\r\n const topic = topics?.find((t) => (t.id === data.name));\r\n if (!topic) {\r\n return;\r\n }\r\n this.setTopic(topic);\r\n }\r\n\r\n handleToggle(event?: SyntheticEvent) {\r\n const {store} = this.props;\r\n if (store?.TopicSwitcherStore.visible) {\r\n store?.TopicSwitcherStore.setVisible(false);\r\n } else {\r\n store?.TopicSwitcherStore.setVisible(true);\r\n }\r\n if(event) {\r\n event.preventDefault();\r\n }\r\n }\r\n\r\n componentDidMount(): void {\r\n const {store} = this.props;\r\n if (store?.uiStore.widgets.has(this.widgetKey)) {\r\n return;\r\n }\r\n store?.uiStore.addWidget(this.widgetKey, this);\r\n }\r\n\r\n componentWillUnmount(): void {\r\n const {store} = this.props;\r\n store?.uiStore.removeWidget(this.widgetKey);\r\n }\r\n\r\n render(): React.ReactElement | null {\r\n const {small, topics, store} = this.props;\r\n if (!store) {\r\n return null;\r\n }\r\n const {subtopic, topic} = store.appStore;\r\n const visible = store.TopicSwitcherStore.visible;\r\n\r\n if (!subtopic || !topics) {\r\n return null;\r\n }\r\n\r\n const menuItems = this.composeMenu(topics, topic, subtopic, small);\r\n\r\n menuItems.unshift(\r\n <div className={\"item geo-topic-switcher-header\"} key={\"topic-switcher-header\"}>\r\n {!small? <Icon name={\"signpost\"} className={\"icon--topic-switcher\"} />: null}\r\n {store.mapViewerConfig.topicSwitcher?.description?\r\n store.mapViewerConfig.topicSwitcher?.description : \"Thema in dieser Karte wählen\"}\r\n {!small?\r\n <div onClick={this.handleToggle} className={\"geo-close\"}><Icon name=\"navigate_cross\" /></div>: null}\r\n </div>\r\n );\r\n if (small) {\r\n return (\r\n <Menu\r\n className=\"geo-topic-switcher-menu menu-small\"\r\n vertical\r\n visible={visible.toString()}>\r\n {menuItems}\r\n </Menu>\r\n );\r\n } else {\r\n menuItems.push(\r\n <Menu.Item\r\n as={Link}\r\n onClick={this.handleMenuOpen}\r\n key={\"MapFinder\"}\r\n name={\"openMapFinder\"}\r\n position={small ? \"left\" : \"right\"}\r\n className={\"geo-map-finder\"}>\r\n {small? <SemanticIcon name={\"th\"} /> : null}\r\n Weitere Karten\r\n {!small ? <SemanticIcon name={\"th\"} /> : null}\r\n </Menu.Item>\r\n );\r\n return <Sidebar\r\n className=\"geo-topic-switcher-menu\"\r\n as={Menu}\r\n animation=\"overlay\"\r\n direction={\"top\"}\r\n vertical\r\n visible={visible}>\r\n {menuItems}\r\n </Sidebar>;\r\n }\r\n }\r\n\r\n private composeMenu(topics: TopicConfiguration[],\r\n topic: TopicConfiguration,\r\n subtopic: TopicConfiguration,\r\n small: boolean | undefined) {\r\n const someTopicHasChildren = topics.some((t) => t.parentId);\r\n\r\n const parentTopics = topics.filter((t) => !t.parentId);\r\n const allChildrenHidden = topics.filter((t) => t.parentId).every((tc) => tc.hidden);\r\n return parentTopics.flatMap((parentConfig) => {\r\n const items: React.ReactElement[] = [];\r\n items.push(\r\n <Menu.Item\r\n as={Link}\r\n to={PathUtils.joinPath(topic.routes[0], (parentConfig.routes ? parentConfig.routes[0] : parentConfig.id))}\r\n onClick={this.handleMenuOpen}\r\n key={parentConfig.id}\r\n name={parentConfig.id}\r\n active={parentConfig.id === subtopic.id}\r\n position={small ? \"left\" : \"right\"}\r\n className={someTopicHasChildren && !allChildrenHidden ? \"level-1\" : \"level-2\"}>\r\n {small && parentConfig.icon ? <Icon name={parentConfig.icon}/> : null}\r\n {parentConfig.name ? parentConfig.name : parentConfig.label}\r\n {!small && parentConfig.icon ? <Icon name={parentConfig.icon}/> : null}\r\n </Menu.Item>\r\n );\r\n\r\n const childTopics = topics.filter((tc) => parentConfig.id === tc.parentId);\r\n childTopics.forEach((childConfig) => {\r\n if (childConfig.hidden) {\r\n return;\r\n }\r\n\r\n items.push(\r\n <Menu.Item\r\n as={Link}\r\n to={PathUtils.joinPath(topic.routes[0], (childConfig.routes ? childConfig.routes[0] : childConfig.id))}\r\n onClick={this.handleMenuOpen}\r\n key={childConfig.id}\r\n name={childConfig.id}\r\n active={childConfig.id === subtopic.id}\r\n position={small ? \"left\" : \"right\"}\r\n className={\"level-2\"}>\r\n {small && childConfig.icon ? <Icon name={childConfig.icon}/> : null}\r\n {childConfig.name ? childConfig.name : childConfig.label}\r\n {!small && childConfig.icon ? <Icon name={childConfig.icon}/> : null}\r\n </Menu.Item>\r\n );\r\n });\r\n return items;\r\n });\r\n }\r\n}\r\n\r\nexport const TopicSwitcher = withStore(TopicSwitcherBase);\r\n","import * as React from \"react\";\r\nimport {observer} from \"mobx-react\";\r\nimport {runInAction} from \"mobx\";\r\n\r\nimport \"../topic-toggle/topic-toggle.scss\";\r\n\r\nimport {Form, Radio} from \"semantic-ui-react\";\r\n\r\nimport {TopicConfiguration} from \"../../../config/topic-configuration\";\r\nimport {TopicToggleConfiguration} from \"../../config/topic-toggle-configuration\";\r\nimport {PathUtils} from \"../../../utils/path-utils\";\r\nimport {IAppStore, withStore} from \"../../stores/abstract-app-store\";\r\n\r\nexport interface TopicToggleProps {\r\n config: TopicToggleConfiguration;\r\n store?: IAppStore; // this is injected by withStore\r\n}\r\n\r\n// TODO:\r\n@observer\r\nclass TopicToggleBase extends React.Component<TopicToggleProps, any> {\r\n widgetKey = \"topic-toggle\";\r\n constructor(props: TopicToggleProps) {\r\n super(props);\r\n\r\n this.setTopic = this.setTopic.bind(this);\r\n }\r\n\r\n setTopic(topic: TopicConfiguration) {\r\n runInAction(() => {\r\n const {store} = this.props;\r\n if (!store) {\r\n return;\r\n }\r\n // Falls sich das Subtopic ändert, Popup und Tools (z.B. Höhenprofil) schliessen\r\n if(topic.id !== store.appStore.subtopicId) {\r\n store.PopupStore.setVisible(false);\r\n store.uiStore.setActiveTool(\"\");\r\n }\r\n store.appStore.setSubtopic(topic);\r\n store.appStore.setRoutePath(PathUtils.joinPath(store.appStore.topic.routes[0], topic?.routes[0]));\r\n });\r\n }\r\n\r\n componentDidMount(): void {\r\n const {store} = this.props;\r\n if (store?.uiStore.widgets.has(this.widgetKey)) {\r\n return;\r\n }\r\n store?.uiStore.addWidget(this.widgetKey, this);\r\n }\r\n\r\n componentWillUnmount(): void {\r\n const {store} = this.props;\r\n store?.uiStore.removeWidget(this.widgetKey);\r\n }\r\n\r\n render(): React.JSX.Element | null {\r\n const {config, store} = this.props;\r\n if (!store || !config) {\r\n return null;\r\n }\r\n\r\n const {subtopic} = store.appStore;\r\n // get topics matching the configured topics\r\n const topics = store.mapViewerConfig.subtopics.filter((st) =>\r\n config.topics.some((tc) => tc.id === st.id)\r\n );\r\n if (!subtopic || !topics) {\r\n return null;\r\n }\r\n\r\n // TODO: add other control types (e.g. select)\r\n if (config.controlType === \"radio\") {\r\n const items = config.topics.map((toggleOption) => {\r\n const key = `geo-topic-toggle-radio-${toggleOption.id}_${config.id}`;\r\n const subtopicForThisOption = topics.find((t) => t.id === toggleOption.id);\r\n if (!subtopicForThisOption) {\r\n return;\r\n }\r\n return (\r\n <Form.Field key={key}>\r\n <Radio\r\n label={toggleOption.label}\r\n name={config.id}\r\n value={toggleOption.id}\r\n onChange={() => {\r\n this.setTopic(subtopicForThisOption);\r\n }}\r\n checked={subtopic.id === toggleOption.id}\r\n />\r\n </Form.Field>\r\n );\r\n });\r\n\r\n const groupKey = `geo-topic-toggle-option-group-${config.id}`;\r\n return (\r\n <div className=\"geo-topic-toggle\">\r\n <Form.Group\r\n grouped\r\n key={groupKey}>\r\n <label>{config.label}</label>\r\n {items}\r\n </Form.Group>\r\n </div>\r\n );\r\n }\r\n throw new Error(`Topic toggle: Control type not yet implemented ${config.controlType}`);\r\n }\r\n}\r\n\r\nexport const TopicToggle = withStore(TopicToggleBase);\r\n","import React, {SyntheticEvent} from \"react\";\r\nimport {observer} from \"mobx-react\";\r\nimport {autorun, runInAction} from \"mobx\";\r\n\r\nimport \"./view-manager.scss\";\r\n\r\nimport {Dropdown, Form, Header} from \"semantic-ui-react\";\r\nimport {SidebarControlsConfiguration} from \"../../../config/sidebar-configuration\";\r\nimport EsriLayerListViewModel from \"@arcgis/core/widgets/LayerList/LayerListViewModel\";\r\nimport {LayerList} from \"../layer-list/layer-list\";\r\nimport {TopicConfiguration} from \"../../../config/topic-configuration\";\r\nimport {PathUtils} from \"../../../utils/path-utils\";\r\nimport {TopicSwitcherButton} from \"../topic-switcher/topic-switcher-button\";\r\nimport {IAppStore, withStore} from \"../../stores/abstract-app-store\";\r\n\r\n\r\nexport interface ViewManagerProps {\r\n controlsConfig: SidebarControlsConfiguration;\r\n small?: boolean;\r\n onLoad?: (layerListViewModel: EsriLayerListViewModel) => any;\r\n store?: IAppStore; // this is injected by withStore\r\n}\r\n@observer\r\nclass ViewManagerBase extends React.Component<ViewManagerProps, any> {\r\n autorunDisposers: any[] = [];\r\n widgetKey = \"view-manager\";\r\n constructor(props: ViewManagerProps) {\r\n super(props);\r\n if (typeof this.props.small === \"boolean\" && this.props.small) {\r\n this.widgetKey += \"-small\";\r\n }\r\n if(props.controlsConfig.topicSwitcher && props.store?.mapViewerConfig.subtopics) {\r\n let defaultView: string | undefined;\r\n runInAction(()=> {\r\n if (props.store?.appStore.subtopic && props.store?.mapViewerConfig.subtopics?.some(\r\n (v) => v.id === props.store?.appStore.subtopic?.id)) {\r\n defaultView = props.store?.appStore.subtopic.id;\r\n } else {\r\n defaultView = this.props.controlsConfig.topicSwitcher?.default;\r\n if(!defaultView) {\r\n console.warn(\"Default Subtopic nicht konfiguriert! (topicSwitcher.default)\");\r\n }\r\n const currentView = props.store?.mapViewerConfig.subtopics?.find((v) => v.id===defaultView);\r\n if(!currentView) {\r\n console.warn(`Default Subtopic \"${defaultView}\" nicht gefunden!`);\r\n }\r\n }\r\n });\r\n this.state = {\r\n value: defaultView,\r\n revision: \"initial\"\r\n };\r\n }\r\n this.handleChange = this.handleChange.bind(this);\r\n }\r\n updateView(value?: string): void {\r\n runInAction(()=> {\r\n const v = this.props.store?.mapViewerConfig.subtopics?.find(\r\n (view) => (view.id === value));\r\n if (v && value !== this.props.store?.appStore.subtopic?.id) {\r\n this.props.store?.appStore.setSubtopic(v);\r\n }\r\n });\r\n };\r\n handleChange(event: SyntheticEvent, data: any): void {\r\n const {store} = this.props;\r\n this.setState({ value: data.value });\r\n this.updateView(data.value);\r\n const currentView = store?.mapViewerConfig.subtopics?.find((v) => v.id===data.value);\r\n runInAction(()=> {\r\n store?.appStore.setRoutePath(\r\n PathUtils.joinPath(store?.appStore.topic?.routes[0], currentView?.routes[0]));\r\n });\r\n };\r\n componentDidMount(): void {\r\n const {store} = this.props;\r\n const {revision, value} = this.state;\r\n\r\n // rerun until map view is ready and layer list view model is loaded\r\n this.autorunDisposers.push(autorun((reaction: any) => {\r\n if (store?.uiStore.widgets.has(this.widgetKey)) {\r\n reaction.dispose(); // stop autorun\r\n return;\r\n }\r\n store?.uiStore.addWidget(this.widgetKey, this);\r\n this.updateView(value);\r\n }));\r\n // Auf geändertes Subtopic reagieren.\r\n this.autorunDisposers.push(autorun(() => {\r\n if(store?.appStore.subtopic?.id !== value || store?.appStore.subtopic?.revision !== revision){\r\n this.setState({ value: store?.appStore.subtopic?.id, revision: store?.appStore.subtopic?.revision });\r\n this.updateView(store?.appStore.subtopic?.id);\r\n }\r\n }));\r\n }\r\n componentWillUnmount(): void {\r\n const {store} = this.props;\r\n this.autorunDisposers.forEach((disposer: any) => {\r\n disposer();\r\n });\r\n this.autorunDisposers.length = 0;\r\n store?.uiStore.removeWidget(this.widgetKey);\r\n }\r\n render(): React.ReactElement | null {\r\n const {controlsConfig, small, store} = this.props;\r\n const {value} = this.state;\r\n if (!store) {\r\n return null;\r\n }\r\n let content;\r\n if(store.mapViewerConfig.subtopics?.length > 1) {\r\n if (store.mapViewerConfig.topicSwitcher?.visible?.includes(\"toc\")) {\r\n content = <TopicSwitcherButton topics={store.mapViewerConfig.subtopics} />;\r\n } else if (store.mapViewerConfig.topicSwitcher?.visible?.includes(\"view-manager\")) {\r\n const options = store.mapViewerConfig.subtopics?.map(\r\n (v: TopicConfiguration) => ({text: (v.label) ? v.label : v.name, value: v.id}));\r\n content = (\r\n <div>\r\n <Header as='h3'>{controlsConfig.topicSwitcher?.button}</Header>\r\n <Form size={\"small\"}>\r\n <Dropdown selection fluid options={options} value={value} onChange={this.handleChange}/>\r\n </Form>\r\n </div>\r\n );\r\n }\r\n return (\r\n <div className={\"geo-view-manager\"}>\r\n <div className={\"geo-view-manager-content\"}>\r\n {content}\r\n </div>\r\n <LayerList\r\n controlsConfig={controlsConfig}\r\n config={controlsConfig.layerList}\r\n small={!!small}/>\r\n </div>\r\n );\r\n }else{\r\n return (\r\n <LayerList\r\n controlsConfig={controlsConfig}\r\n config={controlsConfig.layerList}\r\n small={!!small} />\r\n );\r\n }\r\n }\r\n}\r\n\r\nexport const ViewManager = withStore(ViewManagerBase);\r\n","import { JsonObject, JsonProperty } from \"typescript-json-serializer\";\r\nimport {GeoICONS} from \"../components/icon/icon\";\r\nimport {SearchSourceQueryConfiguration} from \"./search-configuration\";\r\n\r\n\r\n@JsonObject()\r\nexport class ActionBaseConfiguration {\r\n /**\r\n * Set this property to `true` to display a spinner icon.\r\n *\r\n * @default false\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-support-actions-ActionBase.html#active)\r\n */\r\n @JsonProperty()\r\n declare active?: boolean;\r\n /**\r\n * This adds a CSS class to the [ActionButton's]\r\n * (https://developers.arcgis.com/javascript/latest/api-reference/esri-support-actions-ActionButton.html) node.\r\n *\r\n * [Read more...]\r\n * (https://developers.arcgis.com/javascript/latest/api-reference/esri-support-actions-ActionBase.html#className)\r\n */\r\n @JsonProperty()\r\n declare className?: string;\r\n /**\r\n * Indicates whether this action is disabled.\r\n *\r\n * @default false\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-support-actions-ActionBase.html#disabled)\r\n */\r\n @JsonProperty()\r\n declare disabled?: boolean;\r\n\r\n /**\r\n * Calcite icon used for the action.\r\n *\r\n * @default null\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-support-actions-ActionBase.html#icon)\r\n */\r\n @JsonProperty()\r\n declare icon?: string;\r\n\r\n /**\r\n * The name of the ID assigned to this action.\r\n *\r\n * [Read more...]\r\n * (https://developers.arcgis.com/javascript/latest/api-reference/esri-support-actions-ActionBase.html#id)\r\n */\r\n @JsonProperty()\r\n declare id?: string;\r\n /**\r\n * The title of the action.\r\n *\r\n * [Read more...]\r\n * (https://developers.arcgis.com/javascript/latest/api-reference/esri-support-actions-ActionBase.html#title)\r\n */\r\n @JsonProperty()\r\n declare title: string;\r\n /**\r\n * Specifies the type of action.\r\n *\r\n * @default null\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-support-actions-ActionBase.html#type)\r\n */\r\n @JsonProperty()\r\n declare type: \"button\" | \"slider\" | \"toggle\";\r\n /**\r\n * Indicates if the action is visible.\r\n *\r\n * @default true\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-support-actions-ActionBase.html#visible)\r\n */\r\n @JsonProperty()\r\n declare visible: boolean;\r\n /**\r\n * *Geo.js Property*\r\n * Target url\r\n */\r\n @JsonProperty()\r\n declare url?: string;\r\n\r\n /**\r\n * *Geo.js Property*\r\n * Query for additional data\r\n */\r\n @JsonProperty()\r\n declare query?: SearchSourceQueryConfiguration;\r\n\r\n constructor() {}\r\n}\r\n\r\n@JsonObject()\r\nexport class ActionButtonConfiguration extends ActionBaseConfiguration {\r\n /**\r\n * The URL to an image that will be used to represent the action.\r\n *\r\n * [Read more...]\r\n * (https://developers.arcgis.com/javascript/latest/api-reference/esri-support-actions-ActionButton.html#image)\r\n */\r\n @JsonProperty()\r\n declare image?: string;\r\n\r\n /**\r\n * *Geo.js Property*\r\n * Icon name\r\n */\r\n @JsonProperty()\r\n declare icon?: GeoICONS;\r\n\r\n constructor() {\r\n super();\r\n }\r\n}\r\n\r\n@JsonObject()\r\nexport class ActionToggleConfiguration extends ActionBaseConfiguration {\r\n /**\r\n * Indicates the value of whether the action is toggled on/off.\r\n *\r\n * @default false\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-support-actions-ActionToggle.html#value)\r\n */\r\n @JsonProperty()\r\n declare value: boolean;\r\n\r\n constructor() {\r\n super();\r\n }\r\n}\r\n\r\n@JsonObject()\r\nexport class ActionSliderConfiguration extends ActionBaseConfiguration {\r\n constructor() {\r\n super();\r\n }\r\n}\r\n","/*\r\n Core configuration files\r\n */\r\nimport { JsonObject, JsonProperty } from \"typescript-json-serializer\";\r\nimport {ProxyConfiguration} from \"./proxy-configuration\";\r\nimport {SearchConfiguration} from \"./search-configuration\";\r\nimport {WebMapConfiguration} from \"./web-map-configuration\";\r\nimport {MapViewConfiguration} from \"./view-configuration\";\r\nimport {BasemapGalleryConfiguration} from \"./basemap-gallery-configuration\";\r\nimport {BasemapToggleConfiguration} from \"./basemap-toggle-configuration\";\r\nimport {AttributionConfiguration} from \"./attribution-configuration\";\r\nimport {MaintenanceConfiguration} from \"./maintenance-configuration\";\r\nimport {ScaleBarConfiguration} from \"./scalebar-configuration\";\r\nimport {LegendConfiguration} from \"./legend-configuration\";\r\nimport {ExternalServiceConfiguration} from \"./external-service-configuration\";\r\nimport {ActionButtonConfiguration} from \"./action-configuration\";\r\nimport {SketchConfiguration} from \"./sketch-configuration\";\r\nimport {LayerConfiguration} from \"./layer-configuration\";\r\nimport {EditorConfiguration} from \"./editor-configuration\";\r\n\r\n@JsonObject()\r\nexport class AppConfiguration {\r\n\r\n /**\r\n * Attribution (copyright, legal notice)\r\n */\r\n @JsonProperty()\r\n declare attribution: AttributionConfiguration;\r\n\r\n /**\r\n * Basisname der Anwendung\r\n */\r\n @JsonProperty()\r\n declare appBasename: string;\r\n\r\n /**\r\n * Basisname der Anwendung in den meisten Fällen identisch mit appBasename\r\n */\r\n @JsonProperty()\r\n declare basename: string;\r\n\r\n /**\r\n * The base url for configuration files\r\n */\r\n @JsonProperty()\r\n declare configRoot: string;\r\n\r\n /**\r\n * application mode (development | test | production)\r\n */\r\n @JsonProperty()\r\n declare mode: string;\r\n\r\n /**\r\n * Information about maintenance work on the application\r\n */\r\n @JsonProperty({ type: MaintenanceConfiguration})\r\n declare maintenance: MaintenanceConfiguration[];\r\n\r\n /**\r\n * Proxy URL\r\n */\r\n @JsonProperty({ type: ProxyConfiguration })\r\n declare proxy: ProxyConfiguration;\r\n\r\n /**\r\n * URL des Portal for ArcGIS oder AOL\r\n */\r\n @JsonProperty()\r\n declare portalUrl: string;\r\n\r\n /**\r\n * App ID.\r\n * ID you get when registering the App on Portal for ArcGIS\r\n * Needed when using OAuth2 with ESRI IdentityManager\r\n */\r\n @JsonProperty()\r\n declare appId?: string;\r\n\t\r\n\t/**\r\n * User ID.\r\n * ID of the APP user to connect to the Portal for ArcGIS\r\n * Needed when using APP user with ESRI IdentityManager\r\n */\r\n @JsonProperty()\r\n declare userId?: string;\r\n\r\n /**\r\n * Overrides the URL for loading the API assets when using local builds of the `@arcgis/core` and `arcgis-js-api` NPM packages.\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-config.html#assetsPath)\r\n */\r\n @JsonProperty()\r\n declare assetsPath: string;\r\n /**\r\n * The URL for font resources used by the Font class in FeatureLayer and CSVLayer labels. To use your own hosted fonts, the font files need to be in .pbf format, and you must follow the kebab-case naming convention (e.g. \"arial-unicode-ms-bold\").\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-config.html#fontsUrl)\r\n */\r\n @JsonProperty()\r\n declare fontsUrl: string;\r\n /**\r\n * The default [GeometryService](https://developers.arcgis.com/javascript/latest/api-reference/esri-tasks-GeometryService.html) used by widgets and other operations, such as on-the-fly projections.\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-config.html#geometryServiceUrl)\r\n */\r\n @JsonProperty()\r\n declare geometryServiceUrl: string;\r\n\r\n /**\r\n * WebMap\r\n */\r\n @JsonProperty()\r\n declare webMap: WebMapConfiguration;\r\n\r\n /**\r\n * View settings\r\n */\r\n @JsonProperty()\r\n declare mapView: MapViewConfiguration;\r\n\r\n /**\r\n * next base map\r\n */\r\n @JsonProperty()\r\n declare nextBasemap: string;\r\n\r\n /**\r\n * search widget\r\n */\r\n @JsonProperty({ type: SearchConfiguration})\r\n declare search: SearchConfiguration;\r\n\r\n /**\r\n * basemap gallery widget\r\n */\r\n @JsonProperty({ type: BasemapGalleryConfiguration})\r\n declare basemapGallery: BasemapGalleryConfiguration;\r\n\r\n @JsonProperty()\r\n declare basemapToggle: BasemapToggleConfiguration;\r\n\r\n\t@JsonProperty()\r\n declare editor: EditorConfiguration;\r\n\r\n @JsonProperty()\r\n declare elevationLayers?: LayerConfiguration[];\r\n\r\n @JsonProperty()\r\n declare legend: LegendConfiguration;\r\n\r\n @JsonProperty()\r\n declare scaleBar: ScaleBarConfiguration;\r\n\r\n @JsonProperty()\r\n declare sketch: SketchConfiguration;\r\n\r\n @JsonProperty()\r\n declare externalServices: ExternalServiceConfiguration[];\r\n\r\n @JsonProperty()\r\n declare predefinedActions: ActionButtonConfiguration[];\r\n\r\n constructor() {}\r\n}\r\n","import { JsonObject, JsonProperty } from \"typescript-json-serializer\";\r\n\r\n@JsonObject()\r\nexport class AttributionTextItemConfiguration {\r\n /**\r\n * ID\r\n */\r\n @JsonProperty()\r\n declare id: string;\r\n\r\n /**\r\n * The attribution text.\r\n */\r\n @JsonProperty()\r\n declare text: string;\r\n /**\r\n * The link title.\r\n */\r\n @JsonProperty()\r\n declare title?: string;\r\n /**\r\n * The url for a link.\r\n */\r\n @JsonProperty()\r\n declare url: string;\r\n\r\n constructor() {}\r\n}\r\n\r\n@JsonObject()\r\nexport class AttributionConfiguration {\r\n /**\r\n * Text used to split attribution by [layers](https://developers.arcgis.com/javascript/latest/api-reference/esri-layers-Layer.html)\r\n *\r\n * @default |\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-widgets-Attribution.html#itemDelimiter)\r\n */\r\n @JsonProperty()\r\n declare itemDelimiter: string;\r\n\r\n /**\r\n * *Geo.js Property*\r\n * Delimiter for text items\r\n */\r\n @JsonProperty()\r\n declare textDelimiter: string;\r\n\r\n /**\r\n * *Geo.js Property*\r\n * Text items\r\n */\r\n @JsonProperty()\r\n declare textItems: AttributionTextItemConfiguration[];\r\n /**\r\n * A reference to the [MapView](https://developers.arcgis.com/javascript/latest/api-reference/esri-views-MapView.html) or [SceneView](https://developers.arcgis.com/javascript/latest/api-reference/esri-views-SceneView.html).\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-widgets-Attribution.html#view)\r\n */\r\n // @JsonProperty()\r\n // declare view?: (MapViewProperties & { type: \"2d\" }) | (SceneViewProperties & { type: \"3d\" });\r\n /**\r\n * The view model for this widget.\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-widgets-Attribution.html#viewModel)\r\n */\r\n // @JsonProperty()\r\n // declare viewModel?: AttributionViewModelProperties;\r\n\r\n constructor() {}\r\n}\r\n","import { JsonObject, JsonProperty } from \"typescript-json-serializer\";\r\n\r\n@JsonObject()\r\nexport class AuthoringInfoConfiguration {\r\n /**\r\n * Indicates which classification method was used if a classed color or classed size renderer was generated using one of the Smart Mapping functions.\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-renderers-support-AuthoringInfo.html#classificationMethod)\r\n */\r\n @JsonProperty()\r\n declare classificationMethod: | \"equal-interval\"\r\n | \"defined-interval\"\r\n | \"manual\"\r\n | \"natural-breaks\"\r\n | \"quantile\"\r\n | \"standard-deviation\";\r\n /**\r\n * Indicates the color ramp was used to create the symbols for Unique Value or Class Breaks renderer for Imagery Layer.\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-renderers-support-AuthoringInfo.html#colorRamp)\r\n */\r\n // declare colorRamp?: ColorRampProperties;\r\n /**\r\n * Only applicable to [HeatmapRenderer](https://developers.arcgis.com/javascript/latest/api-reference/esri-renderers-HeatmapRenderer.html) created with the [heatmap renderer creator](https://developers.arcgis.com/javascript/latest/api-reference/esri-smartMapping-renderers-heatmap.html).\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-renderers-support-AuthoringInfo.html#fadeRatio)\r\n */\r\n @JsonProperty()\r\n declare fadeRatio?: number;\r\n /**\r\n * A numeric field used for generating a [relationship renderer](https://developers.arcgis.com/javascript/latest/api-reference/esri-smartMapping-renderers-relationship.html) along with [field2](https://developers.arcgis.com/javascript/latest/api-reference/esri-renderers-support-AuthoringInfo.html#field2).\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-renderers-support-AuthoringInfo.html#field1)\r\n */\r\n // declare field1: AuthoringInfoField1;\r\n /**\r\n * A numeric field used for generating a [relationship renderer](https://developers.arcgis.com/javascript/latest/api-reference/esri-smartMapping-renderers-relationship.html) along with [field1](https://developers.arcgis.com/javascript/latest/api-reference/esri-renderers-support-AuthoringInfo.html#field1).\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-renderers-support-AuthoringInfo.html#field2)\r\n */\r\n // declare field2: AuthoringInfoField2;\r\n /**\r\n * An array of string values representing field names used for creating a [predominance renderer](https://developers.arcgis.com/javascript/latest/api-reference/esri-smartMapping-renderers-predominance.html).\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-renderers-support-AuthoringInfo.html#fields)\r\n */\r\n @JsonProperty()\r\n declare fields: string[];\r\n /**\r\n * Only applicable to flow renderers.\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-renderers-support-AuthoringInfo.html#flowTheme)\r\n */\r\n @JsonProperty()\r\n declare flowTheme?: \"flow-line\" | \"wave-front\";\r\n /**\r\n * The focus of a [relationship renderer](https://developers.arcgis.com/javascript/latest/api-reference/esri-smartMapping-renderers-relationship.html).\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-renderers-support-AuthoringInfo.html#focus)\r\n */\r\n @JsonProperty()\r\n declare focus: string;\r\n /**\r\n * Indicates whether the renderer was created internally by the JS API's rendering engine for default [FeatureReductionCluster](https://developers.arcgis.com/javascript/latest/api-reference/esri-layers-support-FeatureReductionCluster.html) visualizations.\r\n *\r\n * @default false\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-renderers-support-AuthoringInfo.html#isAutoGenerated)\r\n */\r\n @JsonProperty()\r\n declare isAutoGenerated?: boolean;\r\n /**\r\n * **Only applicable to renderer used in web scenes.** Indicates the unit used in real-world sizes.\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-renderers-support-AuthoringInfo.html#lengthUnit)\r\n */\r\n @JsonProperty()\r\n declare lengthUnit?: | \"inches\"\r\n | \"feet\"\r\n | \"yards\"\r\n | \"miles\"\r\n | \"nautical-miles\"\r\n | \"millimeters\"\r\n | \"centimeters\"\r\n | \"decimeters\"\r\n | \"meters\"\r\n | \"kilometers\";\r\n /**\r\n * Indicates the value of the upper handle if a slider was used to generate the dot value for dot density renderer.\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-renderers-support-AuthoringInfo.html#maxSliderValue)\r\n */\r\n @JsonProperty()\r\n declare maxSliderValue: number;\r\n /**\r\n * Indicates the value of the lower handle if a slider was used to generate the dot value for dot density renderer.\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-renderers-support-AuthoringInfo.html#minSliderValue)\r\n */\r\n @JsonProperty()\r\n declare minSliderValue: number;\r\n /**\r\n * The number of classes used to classify each field of a [relationship renderer](https://developers.arcgis.com/javascript/latest/api-reference/esri-smartMapping-renderers-relationship.html).\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-renderers-support-AuthoringInfo.html#numClasses)\r\n */\r\n @JsonProperty()\r\n declare numClasses: number;\r\n /**\r\n * Indicates the standard deviation interval for each stop in a classed color or classed size renderer that was generated using the `standard-deviation` classification method.\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-renderers-support-AuthoringInfo.html#standardDeviationInterval)\r\n */\r\n @JsonProperty()\r\n declare standardDeviationInterval: number;\r\n /**\r\n * Only for renderers of type `univariate-color-size` with an `above-and-below` [univariateTheme](https://developers.arcgis.com/javascript/latest/api-reference/esri-renderers-support-AuthoringInfo.html#univariateTheme).\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-renderers-support-AuthoringInfo.html#statistics)\r\n */\r\n // statistics?: AuthoringInfoStatistics;\r\n /**\r\n * Indicates the renderer type generated from one of the Smart Mapping functions.\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-renderers-support-AuthoringInfo.html#type)\r\n */\r\n @JsonProperty()\r\n declare type:\r\n | \"class-breaks-size\"\r\n | \"class-breaks-color\"\r\n | \"classed-color\"\r\n | \"classed-size\"\r\n | \"dot-density\"\r\n | \"flow\"\r\n | \"predominance\"\r\n | \"relationship\"\r\n | \"univariate-color-size\";\r\n /**\r\n * Only applicable to [univariateColorSize](https://developers.arcgis.com/javascript/latest/api-reference/esri-smartMapping-renderers-univariateColorSize.html) renderers with an `above-and-below` [univariateTheme](https://developers.arcgis.com/javascript/latest/api-reference/esri-renderers-support-AuthoringInfo.html#univariateTheme).\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-renderers-support-AuthoringInfo.html#univariateSymbolStyle)\r\n */\r\n @JsonProperty()\r\n declare univariateSymbolStyle?:\r\n | \"caret\"\r\n | \"circle-caret\"\r\n | \"arrow\"\r\n | \"circle-arrow\"\r\n | \"plus-minus\"\r\n | \"circle-plus-minus\"\r\n | \"square\"\r\n | \"circle\"\r\n | \"triangle\"\r\n | \"happy-sad\"\r\n | \"thumb\"\r\n | \"custom\";\r\n /**\r\n * Only applicable to [univariateColorSize](https://developers.arcgis.com/javascript/latest/api-reference/esri-smartMapping-renderers-univariateColorSize.html) renderers.\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-renderers-support-AuthoringInfo.html#univariateTheme)\r\n */\r\n @JsonProperty()\r\n declare univariateTheme?: \"high-to-low\" | \"above\" | \"below\" | \"above-and-below\";\r\n /**\r\n * Contains authoring properties of visual variables generated from one of the Smart Mapping methods or sliders.\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-renderers-support-AuthoringInfo.html#visualVariables)\r\n */\r\n // @JsonProperty()\r\n // visualVariables: AuthoringInfoVisualVariable[];\r\n\r\n constructor() {}\r\n}\r\n","import { JsonObject, JsonProperty } from \"typescript-json-serializer\";\r\n\r\nimport {WidgetConfiguration} from \"./widget-configuration\";\r\nimport {MapViewConfiguration} from \"./view-configuration\";\r\nimport {PortalConfiguration} from \"./portal-configuration\";\r\nimport {BasemapConfiguration} from \"./map-configuration\";\r\n\r\n@JsonObject()\r\nexport class LocalBasemapsSourceConfiguration {\r\n /**\r\n * A collection of [Basemap](https://developers.arcgis.com/javascript/latest/api-reference/esri-Basemap.html)s.\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-widgets-BasemapGallery-support-LocalBasemapsSource.html#basemaps)\r\n */\r\n // @JsonProperty()\r\n // basemaps?: CollectionProperties<BasemapProperties>;\r\n\r\n constructor() {}\r\n}\r\n\r\n@JsonObject()\r\nexport class PortalBasemapsSourceConfiguration extends LocalBasemapsSourceConfiguration {\r\n /**\r\n * Function used to filter basemaps after being fetched from the Portal.\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-widgets-BasemapGallery-support-PortalBasemapsSource.html#filterFunction)\r\n */\r\n // filterFunction: BasemapFilter;\r\n /**\r\n * The Portal from which to fetch basemaps.\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-widgets-BasemapGallery-support-PortalBasemapsSource.html#portal)\r\n */\r\n @JsonProperty()\r\n declare portal?: PortalConfiguration;\r\n /**\r\n * An object with key-value pairs used to create a custom basemap gallery group query.\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-widgets-BasemapGallery-support-PortalBasemapsSource.html#query)\r\n */\r\n @JsonProperty()\r\n declare query?: any | string;\r\n\r\n /**\r\n * The source's state.\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-widgets-BasemapGallery-support-PortalBasemapsSource.html#state)\r\n *\r\n * @default not-loaded\r\n */\r\n @JsonProperty()\r\n declare state: \"not-loaded\" | \"loading\" | \"ready\";\r\n\r\n constructor() {\r\n super();\r\n }\r\n}\r\nconst localOrPortalConfiguration = (source: LocalBasemapsSourceConfiguration | PortalBasemapsSourceConfiguration) => {\r\n return source && (source as any).query !== undefined\r\n ? PortalBasemapsSourceConfiguration: PortalBasemapsSourceConfiguration;\r\n};\r\n\r\n/**\r\n * *Geo.js Properties*\r\n */\r\n@JsonObject()\r\nexport class BasemapStyleConfiguration {\r\n\r\n @JsonProperty()\r\n declare itemId: string;\r\n\r\n @JsonProperty()\r\n declare url?: string;\r\n\r\n constructor() {}\r\n}\r\n\r\n@JsonObject()\r\nexport class BasemapGalleryConfiguration extends WidgetConfiguration {\r\n /**\r\n * The map's [basemap](https://developers.arcgis.com/javascript/latest/api-reference/esri-Map.html#basemap).\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-widgets-BasemapGallery.html#activeBasemap)\r\n */\r\n @JsonProperty()\r\n declare activeBasemap?: BasemapConfiguration;\r\n\r\n /**\r\n * When `true`, sets the widget to a disabled state so the user cannot interact with it.\r\n *\r\n * @default false\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-widgets-BasemapGallery.html#disabled)\r\n */\r\n @JsonProperty()\r\n declare disabled: boolean;\r\n\r\n /**\r\n * Indicates the heading level to use for the message \"No basemaps available\" when no basemaps are available in the BasemapGallery.\r\n *\r\n * @default 2\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-widgets-BasemapGallery.html#headingLevel)\r\n */\r\n @JsonProperty()\r\n declare headingLevel?: number;\r\n /**\r\n * The source for basemaps that the widget will display.\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-widgets-BasemapGallery.html#source)\r\n */\r\n @JsonProperty({type: localOrPortalConfiguration})\r\n declare source?: LocalBasemapsSourceConfiguration | PortalBasemapsSourceConfiguration;\r\n /**\r\n * The view from which the widget will operate. This view provides access to the active [basemap](https://developers.arcgis.com/javascript/latest/api-reference/esri-Map.html#basemap) via the view's [map](https://developers.arcgis.com/javascript/latest/api-reference/esri-views-View.html#map) property.\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-widgets-BasemapGallery.html#view)\r\n */\r\n @JsonProperty()\r\n declare view?: (MapViewConfiguration & { type: \"2d\" }); // | (SceneViewConfiguration & { type: \"3d\" });\r\n\r\n /**\r\n * *Geo.js Properties*\r\n * Enable or disable search field in BasemapGalleryWidget\r\n */\r\n @JsonProperty()\r\n declare searchEnabled?: boolean;\r\n\r\n /**\r\n * *Geo.js Properties*\r\n * Defines the set of Basemaps available in the application as an Array of Basemap titles. If defined, exludeApplicationBasemaps and excludeTags are ignored.\r\n * Basemaps can be selected from the global Basemaps Group: https://www.geo.lu.ch/geoshare/home/group.html?id=d621f41867994b0aa1207612ad5fcc76\r\n */\r\n @JsonProperty()\r\n declare applicationBasemaps?: string[] | \"none\";\r\n\r\n /**\r\n * *Geo.js Properties*\r\n * Defines the set of Basemaps excluded in the application as an Array of Basemap titles.\r\n * Basemaps can be selected from the global Basemaps Group: https://www.geo.lu.ch/geoshare/home/group.html?id=d621f41867994b0aa1207612ad5fcc76\r\n */\r\n @JsonProperty()\r\n declare excludeApplicationBasemaps?: string[];\r\n\r\n /**\r\n * *Geo.js Properties*\r\n * Defines the default Basemap title. If defined, Basemap of Geoshare Webmap is ignored\r\n * Basemaps can be selected from the global Basemaps Group: https://www.geo.lu.ch/geoshare/home/group.html?id=d621f41867994b0aa1207612ad5fcc76\r\n */\r\n @JsonProperty()\r\n declare default?: string | null;\r\n\r\n /**\r\n * *Geo.js Properties*\r\n * Defines a list of tags. Basemaps with one of these tags are ignored.\r\n * Basemaps can be selected from the global Basemaps Group: https://www.geo.lu.ch/geoshare/home/group.html?id=d621f41867994b0aa1207612ad5fcc76\r\n */\r\n @JsonProperty()\r\n declare excludeTags?: string[];\r\n\r\n /**\r\n * *Geo.js Properties*\r\n * The opacity of the basemap-layer. This value can range between 1 and 0, where 0 is 100 percent transparent\r\n * and 1 is completely opaque. If defined, Basemap opacity in the Geoshare Webmap is ignored\r\n * https://developers.arcgis.com/javascript/latest/api-reference/esri-layers-Layer.html#opacity\r\n */\r\n @JsonProperty()\r\n declare opacity?: number | null;\r\n\r\n /**\r\n * *Geo.js Properties*\r\n * Custom Basmap Styles\r\n */\r\n @JsonProperty()\r\n declare styles?: Map<string, BasemapStyleConfiguration[]>;\r\n\r\n constructor() {\r\n super();\r\n }\r\n}\r\n","import { JsonObject, JsonProperty } from \"typescript-json-serializer\";\r\nimport {BasemapConfiguration} from \"./map-configuration\";\r\nimport {WidgetConfiguration} from \"./widget-configuration\";\r\n\r\n@JsonObject()\r\nexport class BasemapToggleVisibleElementsConfiguration {\r\n /**\r\n * Indicates whether to the title will be displayed. Default is false.\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-widgets-BasemapToggle.html#VisibleElements)\r\n */\r\n @JsonProperty()\r\n declare title: boolean;\r\n}\r\n\r\n@JsonObject()\r\nexport class BasemapToggleConfiguration extends WidgetConfiguration {\r\n /**\r\n * *Geo.js Property*\r\n * property to place the widget in one of the Esri UI corners.\r\n */\r\n @JsonProperty()\r\n declare position: \"top-left\" | \"top-right\" | \"bottom-left\" | \"bottom-right\";\r\n\r\n /**\r\n * The next basemap for toggling.\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-widgets-BasemapToggle.html#nextBasemap)\r\n */\r\n @JsonProperty()\r\n declare nextBasemap?: BasemapConfiguration | string;\r\n /**\r\n * A reference to the [MapView](https://developers.arcgis.com/javascript/latest/api-reference/esri-views-MapView.html) or [SceneView](https://developers.arcgis.com/javascript/latest/api-reference/esri-views-SceneView.html).\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-widgets-BasemapToggle.html#view)\r\n */\r\n // @JsonProperty()\r\n // declare view?: (MapViewConfiguration & { type: \"2d\" }); // | (SceneViewProperties & { type: \"3d\" });\r\n /**\r\n * The view model for this widget.\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-widgets-BasemapToggle.html#viewModel)\r\n */\r\n // @JsonProperty()\r\n // declare viewModel?: BasemapToggleViewModelProperties;\r\n /**\r\n * The visible elements that are displayed within the widget.\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-widgets-BasemapToggle.html#visibleElements)\r\n */\r\n @JsonProperty()\r\n declare visibleElements?: BasemapToggleVisibleElementsConfiguration;\r\n\r\n constructor() {\r\n super();\r\n }\r\n}\r\n","import { JsonObject, JsonProperty } from \"typescript-json-serializer\";\r\nimport {ColorConfiguration} from \"./color-configuration\";\r\n\r\n@JsonObject()\r\nexport class LineCallout3DBorderConfiguration {\r\n /**\r\n * The color of the callout line border.\r\n *\r\n * @default white\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-symbols-callouts-LineCallout3D.html#border)\r\n */\r\n @JsonProperty()\r\n declare color?: ColorConfiguration | number[] | string;\r\n\r\n constructor() {}\r\n}\r\n\r\n@JsonObject()\r\nexport class Callout3DConfiguration {\r\n constructor() {}\r\n}\r\n\r\n@JsonObject()\r\nexport class LineCallout3DConfiguration extends Callout3DConfiguration {\r\n /**\r\n * The border settings of the callout line. The border of the callout line can be used to improve the contrast of\r\n * the callout line color against various background colors. If the border is `null`, then no border will\r\n * be visible.\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-symbols-callouts-LineCallout3D.html#border)\r\n */\r\n @JsonProperty()\r\n declare border?: LineCallout3DBorderConfiguration;\r\n /**\r\n * The color of the callout line.\r\n *\r\n * @default \"black\"\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-symbols-callouts-LineCallout3D.html#color)\r\n */\r\n @JsonProperty()\r\n declare color?: ColorConfiguration | number[] | string;\r\n /**\r\n * The width of the callout line in points.\r\n *\r\n * @default 1px\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-symbols-callouts-LineCallout3D.html#size)\r\n */\r\n @JsonProperty()\r\n declare size?: number | string;\r\n /**\r\n * For LineCallout3D the type is always `line`.\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-symbols-callouts-LineCallout3D.html#type)\r\n */\r\n @JsonProperty()\r\n declare type?: string;\r\n\r\n constructor() {\r\n super();\r\n }\r\n}\r\n","import { JsonObject, JsonProperty } from \"typescript-json-serializer\";\r\n\r\n@JsonObject()\r\nexport class ColorConfiguration {\r\n /**\r\n * The alpha value. This value can be any number between `0` and `1` and represents the opacity of the Color.\r\n * `0` indicates the color is fully transparent and `1` indicates it is fully opaque.\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-Color.html#a)\r\n */\r\n @JsonProperty()\r\n declare a: number;\r\n\r\n /**\r\n * The blue value. This value can range between `0` and `255`.\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-Color.html#b)\r\n */\r\n @JsonProperty()\r\n declare b: number;\r\n\r\n /**\r\n * The green value. This value can range between `0` and `255`.\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-Color.html#g)\r\n */\r\n @JsonProperty()\r\n declare g: number;\r\n\r\n /**\r\n * The red value. This value can range between `0` and `255`.\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-Color.html#r)\r\n */\r\n @JsonProperty()\r\n declare r: number;\r\n\r\n constructor() {}\r\n}\r\n\r\n@JsonObject()\r\nexport class ColorBackgroundConfiguration {\r\n /**\r\n * The color of the background.\r\n *\r\n * @default \"black\"\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-webmap-background-ColorBackground.html#color)\r\n */\r\n @JsonProperty()\r\n declare color?: ColorConfiguration | number[] | string;\r\n\r\n constructor() {}\r\n}\r\n","import { JsonObject, JsonProperty } from \"typescript-json-serializer\";\r\nimport {TopicLayerConfiguration} from \"../../config/topic-configuration\";\r\n// *Geo.js Properties*\r\n@JsonObject()\r\nexport class CompareMatrixConfiguration {\r\n\r\n @JsonProperty()\r\n declare layers: TopicLayerConfiguration[];\r\n\r\n @JsonProperty()\r\n declare default?: boolean;\r\n\r\n @JsonProperty()\r\n declare defaultTrailing?: boolean;\r\n\r\n @JsonProperty()\r\n declare disableNext?: boolean;\r\n\r\n constructor() {}\r\n}\r\n@JsonObject()\r\nexport class CompareSliderConfiguration {\r\n\r\n @JsonProperty()\r\n declare label: string;\r\n\r\n @JsonProperty()\r\n declare tooltip?: string;\r\n\r\n constructor() {}\r\n}\r\n@JsonObject()\r\nexport class CompareConfiguration {\r\n\r\n @JsonProperty()\r\n declare layerMetauids: string[];\r\n\r\n @JsonProperty()\r\n declare optional?: string[];\r\n\r\n @JsonProperty()\r\n declare permanent?: string[];\r\n\r\n @JsonProperty()\r\n declare style?: \"default\" | \"slider\";\r\n /**\r\n * Mögliche Layer IDs pro Subtopic. Falls nicht definiert, werden alle zugelassen.\r\n */\r\n @JsonProperty()\r\n declare subtopics?: HashMap<TopicLayerConfiguration[]>;\r\n\r\n /**\r\n * URL\r\n */\r\n @JsonProperty()\r\n declare layerMatrix: HashMap<HashMap<CompareMatrixConfiguration>>;\r\n\r\n @JsonProperty()\r\n declare slider?: HashMap<HashMap<CompareSliderConfiguration>>;\r\n\r\n constructor() {}\r\n}\r\n\r\n","import { JsonObject, JsonProperty } from \"typescript-json-serializer\";\r\nimport {FieldInfoConfiguration} from \"./field-info-configuration\";\r\n\r\n/**\r\n * Content elements define what should display within the\r\n * [PopupTemplate](https://developers.arcgis.com/javascript/latest/api-reference/esri-PopupTemplate.html) content.\r\n * There are five specific element types:\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-popup-content-Content.html)\r\n */\r\n@JsonObject()\r\nexport class ContentConfiguration {\r\n /**\r\n * The type of popup element displayed.\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-popup-content-Content.html#type)\r\n */\r\n @JsonProperty()\r\n declare type: \"text\" | \"fields\" | \"media\" | \"attachments\" | \"custom\" | \"expression\" | \"relationship\";\r\n\r\n constructor() {}\r\n}\r\n\r\n@JsonObject()\r\nexport class CustomContentConfiguration extends ContentConfiguration {\r\n /**\r\n * The function that is called to create the custom content element.\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-popup-content-CustomContent.html#creator)\r\n */\r\n // creator?: | PopupTemplateContentCreator\r\n // | string\r\n // | HTMLElement\r\n // | WidgetProperties\r\n // | Promise<string | HTMLElement | WidgetProperties>;\r\n /**\r\n * The called function to cleanup custom content when it is no longer necessary.\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-popup-content-CustomContent.html#destroyer)\r\n */\r\n // declare destroyer: PopupTemplateContentDestroyer;\r\n /**\r\n * An array of field names used in the [PopupTemplate](https://developers.arcgis.com/javascript/latest/api-reference/esri-PopupTemplate.html).\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-popup-content-CustomContent.html#outFields)\r\n */\r\n @JsonProperty()\r\n declare outFields: string[];\r\n\r\n constructor() {\r\n super();\r\n }\r\n}\r\n\r\n@JsonObject()\r\nexport class FieldsContentConfiguration extends ContentConfiguration {\r\n /**\r\n * Array of [fieldInfos](https://developers.arcgis.com/javascript/latest/api-reference/esri-popup-FieldInfo.html).\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-popup-content-FieldsContent.html#fieldInfos)\r\n */\r\n @JsonProperty()\r\n declare fieldInfos: FieldInfoConfiguration[];\r\n\r\n constructor() {\r\n super();\r\n }\r\n}\r\n\r\n@JsonObject()\r\nexport class MediaContentConfiguration extends ContentConfiguration {\r\n /**\r\n * Index of the current active media within the popup's media content.\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-popup-content-MediaContent.html#activeMediaInfoIndex)\r\n */\r\n @JsonProperty()\r\n declare activeMediaInfoIndex?: number;\r\n /**\r\n * Describes the media's content in detail.\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-popup-content-MediaContent.html#description)\r\n */\r\n @JsonProperty()\r\n declare description?: string;\r\n /**\r\n * Contains the media elements representing images or charts to display within the [PopupTemplate]\r\n * (https://developers.arcgis.com/javascript/latest/api-reference/esri-PopupTemplate.html).\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-popup-content-MediaContent.html#mediaInfos)\r\n */\r\n // @JsonProperty()\r\n // declare mediaInfos:\r\n // | BarChartMediaInfo\r\n // | ColumnChartMediaInfo\r\n // | ImageMediaInfo\r\n // | LineChartMediaInfo\r\n // | PieChartMediaInfo\r\n // | any[];\r\n /**\r\n * Heading indicating what the media's content represents.\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-popup-content-MediaContent.html#title)\r\n */\r\n @JsonProperty()\r\n declare title?: string;\r\n constructor() {\r\n super();\r\n }\r\n}\r\n\r\n@JsonObject()\r\nexport class TextContentConfiguration extends ContentConfiguration {\r\n /**\r\n * The formatted string content to display.\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-popup-content-TextContent.html#text)\r\n */\r\n @JsonProperty()\r\n declare text: string;\r\n\r\n constructor() {\r\n super();\r\n }\r\n}\r\n\r\n@JsonObject()\r\nexport class AttachmentsContentConfiguration extends ContentConfiguration {\r\n /**\r\n * Describes the attachment's content in detail.\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-popup-content-AttachmentsContent.html#description)\r\n */\r\n @JsonProperty()\r\n declare description?: string;\r\n /**\r\n * A string value indicating how to display an attachment.\r\n *\r\n * @default \"auto\"\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-popup-content-AttachmentsContent.html#displayType)\r\n */\r\n @JsonProperty()\r\n declare displayType: \"auto\" | \"preview\" | \"list\";\r\n /**\r\n * A heading indicating what the attachment's content represents.\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-popup-content-AttachmentsContent.html#title)\r\n */\r\n @JsonProperty()\r\n declare title?: string;\r\n\r\n constructor() {\r\n super();\r\n }\r\n}\r\n@JsonObject()\r\nexport class ElementExpressionInfoConfiguration {\r\n /**\r\n * The [Arcade](https://developers.arcgis.com/javascript/latest/arcade/) expression evaluating to a dictionary.\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-popup-ElementExpressionInfo.html#expression)\r\n */\r\n @JsonProperty()\r\n declare expression?: string;\r\n /**\r\n * The return type of the expression.\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-popup-ElementExpressionInfo.html#returnType)\r\n */\r\n returnType?: \"dictionary\";\r\n /**\r\n * The title used to describe the popup element returned by the expression.\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-popup-ElementExpressionInfo.html#title)\r\n */\r\n @JsonProperty()\r\n declare title?: string;\r\n}\r\n@JsonObject()\r\nexport class ExpressionContentConfiguration extends ContentConfiguration {\r\n /**\r\n * Contains the Arcade expression used to create a popup content element.\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-popup-content-ExpressionContent.html#expressionInfo)\r\n */\r\n @JsonProperty()\r\n declare expressionInfo?: ElementExpressionInfoConfiguration;\r\n\r\n constructor() {\r\n super();\r\n }\r\n}\r\n@JsonObject()\r\nexport class RelatedRecordsInfoFieldOrderProperties {\r\n /**\r\n * The attribute value of the field selected that will drive the sorting of related records.\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-popup-support-RelatedRecordsInfoFieldOrder.html#field)\r\n */\r\n @JsonProperty()\r\n declare field?: string;\r\n /**\r\n * Set the ascending or descending sort order of the returned related records.\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-popup-support-RelatedRecordsInfoFieldOrder.html#order)\r\n */\r\n @JsonProperty()\r\n declare order?: \"asc\" | \"desc\";\r\n}\r\n@JsonObject()\r\nexport class RelationshipContentConfiguration extends ContentConfiguration {\r\n /**\r\n * Describes the relationship's content in detail.\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-popup-content-RelationshipContent.html#description)\r\n */\r\n @JsonProperty()\r\n declare description?: string;\r\n /**\r\n * A numeric value indicating the maximum number of related features to display in the list of related records.\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-popup-content-RelationshipContent.html#displayCount)\r\n */\r\n @JsonProperty()\r\n declare displayCount?: number;\r\n /**\r\n * A string value indicating how to display related records within the relationship content.\r\n *\r\n * @default \"list\"\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-popup-content-RelationshipContent.html#displayType)\r\n */\r\n @JsonProperty()\r\n declare displayType?: \"list\";\r\n /**\r\n * An array of [RelatedRecordsInfoFieldOrder](https://developers.arcgis.com/javascript/latest/api-reference/esri-popup-support-RelatedRecordsInfoFieldOrder.html) indicating the display order for the related records, and whether they should be sorted in ascending `asc` or descending `desc` order.\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-popup-content-RelationshipContent.html#orderByFields)\r\n */\r\n @JsonProperty()\r\n declare orderByFields?: RelatedRecordsInfoFieldOrderProperties[];\r\n /**\r\n * The numeric id value for the defined relationship.\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-popup-content-RelationshipContent.html#relationshipId)\r\n */\r\n @JsonProperty()\r\n declare relationshipId?: number;\r\n /**\r\n * A heading indicating what the relationship's content represents.\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-popup-content-RelationshipContent.html#title)\r\n */\r\n @JsonProperty()\r\n declare title?: string;\r\n\r\n constructor() {\r\n super();\r\n }\r\n}\r\n@JsonObject()\r\nexport class CustomChartXYConfiguration {\r\n @JsonProperty()\r\n declare labels?: Map<number, string>;\r\n @JsonProperty()\r\n declare min?: number;\r\n @JsonProperty()\r\n declare max?: number;\r\n}\r\n@JsonObject()\r\nexport class CustomChartAxisConfiguration {\r\n @JsonProperty()\r\n declare x?: CustomChartXYConfiguration;\r\n @JsonProperty()\r\n declare y?: CustomChartXYConfiguration;\r\n}\r\n@JsonObject()\r\nexport class CustomChartTooltipConfiguration {\r\n @JsonProperty()\r\n declare content: string;\r\n @JsonProperty()\r\n declare specialContent?: string[];\r\n}\r\n@JsonObject()\r\nexport class CustomChartConfiguration extends CustomContentConfiguration {\r\n @JsonProperty()\r\n declare labels: string[];\r\n @JsonProperty()\r\n declare axis: CustomChartAxisConfiguration;\r\n @JsonProperty()\r\n declare tooltip?: CustomChartTooltipConfiguration;\r\n @JsonProperty()\r\n declare mediaInfos: __esri.MediaInfo[];\r\n\r\n constructor() {\r\n super();\r\n }\r\n}","import { JsonObject, JsonProperty } from \"typescript-json-serializer\";\r\nimport {WidgetConfiguration} from \"./widget-configuration\";\r\nimport {SnappingOptionsPropertiesConfiguration} from \"./snapping-options-properties-configuration\";\r\nimport {SketchTooltipOptionsPropertiesConfiguration} from \"./sketch-tooltip-options-properties-configuration\";\r\nimport {SketchLabelOptionsPropertiesConfiguration} from \"./sketch-label-options-properties-configuration\";\r\nimport {EditorVisibleElementsConfiguration} from \"./editor-visible-elements-configuration\";\r\nimport {SketchValueOptionsConfiguration} from \"./sketch-configuration\";\r\nimport {EditorLayerInfoConfiguration} from \"./editor-layer-info-configuration\";\r\n\r\n\r\n@JsonObject()\r\nexport class EditorConfiguration extends WidgetConfiguration {\r\n\r\n /**\r\n * An array of string values which specifies what end users are allowed to edit.\r\n *\r\n * @deprecated since version 4.29. Use {@link module:esri/widgets/Editor#visibleElements Editor.visibleElements} instead.\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-widgets-Editor.html#allowedWorkflows)\r\n */\r\n @JsonProperty()\r\n declare allowedWorkflows?: \"create-features\" | \"update\";\r\n /**\r\n * Indicates the heading level to use for title of the widget.\r\n *\r\n * @default 4\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-widgets-Editor.html#headingLevel)\r\n */\r\n @JsonProperty()\r\n declare headingLevel?: number;\r\n /**\r\n * Options to configure the sketch labels shown next to each segment of the geometry being created or updated.\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-widgets-Editor.html#labelOptions)\r\n */\r\n @JsonProperty()\r\n declare labelOptions?: SketchLabelOptionsPropertiesConfiguration;\r\n /**\r\n * An array of editing configurations for individual layers.\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-widgets-Editor.html#layerInfos)\r\n */\r\n @JsonProperty()\r\n declare layerInfos?: EditorLayerInfoConfiguration[];\r\n /**\r\n * The [SnappingOptions](https://developers.arcgis.com/javascript/latest/api-reference/esri-views-interactive-snapping-SnappingOptions.html) for editing.\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-widgets-Editor.html#snappingOptions)\r\n */\r\n @JsonProperty()\r\n declare snappingOptions?: SnappingOptionsPropertiesConfiguration;\r\n /**\r\n * This property allows customization of supporting Editor widgets and their default behavior.\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-widgets-Editor.html#supportingWidgetDefaults)\r\n */\r\n // @JsonProperty()\r\n // declare supportingWidgetDefaults?: SupportingWidgetDefaults;\r\n /**\r\n * Options to configure the tooltip shown next to the cursor when creating or updating graphics.\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-widgets-Editor.html#tooltipOptions)\r\n */\r\n @JsonProperty()\r\n declare tooltipOptions?: SketchTooltipOptionsPropertiesConfiguration;\r\n /**\r\n * Options to configure how values are displayed and input when creating or updating graphics.\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-widgets-Editor.html#valueOptions)\r\n */\r\n @JsonProperty()\r\n declare valueOptions?: SketchValueOptionsConfiguration;\r\n /**\r\n * Indicates whether the Editor should default to use the deprecated [CreateWorkflow](https://developers.arcgis.com/javascript/latest/api-reference/esri-widgets-Editor-CreateWorkflow.html).\r\n *\r\n * @default false\r\n * @deprecated since version 4.23. Although new at 4.23, this property was introduced to help migrate from the legacy {@link module:esri/widgets/Editor/CreateWorkflow} to the updated {@link module:esri/widgets/Editor/CreateFeaturesWorkflow}. Once {@link module:esri/widgets/Editor/CreateWorkflow} is fully removed, this property will no longer be necessary.\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-widgets-Editor.html#useDeprecatedCreateWorkflow)\r\n */\r\n @JsonProperty()\r\n declare useDeprecatedCreateWorkflow?: boolean;\r\n\r\n /**\r\n * The visible elements that are displayed within the widget.\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-widgets-Editor.html#visibleElements)\r\n */\r\n @JsonProperty()\r\n declare visibleElements?: EditorVisibleElementsConfiguration;\r\n\r\n constructor() {\r\n super();\r\n }\r\n}\r\n","import {JsonObject, JsonProperty} from \"typescript-json-serializer\";\r\nimport {\r\n\tVisibleElementsSnappingControlsElementsConfiguration\r\n} from \"./visible-elements-snapping-controls-elements-configuration\";\r\n\r\n@JsonObject()\r\nexport class EditorVisibleElementsConfiguration {\r\n /**\r\n * _Since 4.28_.\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-widgets-Editor.html#VisibleElements)\r\n */\r\n @JsonProperty()\r\n declare createFeaturesSection?: boolean;\r\n /**\r\n * _Since 4.28_.\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-widgets-Editor.html#VisibleElements)\r\n */\r\n @JsonProperty()\r\n declare editFeaturesSection?: boolean;\r\n /**\r\n * _Since 4.29_.\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-widgets-Editor.html#VisibleElements)\r\n */\r\n @JsonProperty()\r\n declare labelsToggle?: boolean;\r\n /**\r\n * _Since 4.29_.\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-widgets-Editor.html#VisibleElements)\r\n */\r\n @JsonProperty()\r\n declare tooltipsToggle?: boolean;\r\n /**\r\n * _Since 4.30_.\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-widgets-Editor.html#VisibleElements)\r\n */\r\n @JsonProperty()\r\n declare settingsMenu?: boolean;\r\n /**\r\n * Indicates whether to display the `SnappingControls` widget.\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-widgets-Editor.html#VisibleElements)\r\n */\r\n @JsonProperty()\r\n declare snappingControls?: boolean;\r\n /**\r\n * The available [SnappingControls](https://developers.arcgis.com/javascript/latest/api-reference/esri-widgets-support-SnappingControls.html) elements within the widget.\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-widgets-Editor.html#VisibleElements)\r\n */\r\n @JsonProperty()\r\n declare snappingControlsElements?: VisibleElementsSnappingControlsElementsConfiguration;\r\n\r\n constructor() {}\r\n}\r\n","import { JsonObject, JsonProperty } from \"typescript-json-serializer\";\r\nimport {GeometryConfiguration} from \"./geometry-configuration\";\r\nimport {TimeExtentConfiguration} from \"./time-info-configration\";\r\n\r\n@JsonObject()\r\nexport class FeatureFilterConfiguration {\r\n /**\r\n * Specifies a search distance from a given [geometry](https://developers.arcgis.com/javascript/latest/api-reference/esri-views-layers-support-FeatureFilter.html#geometry) in a spatial filter.\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-views-layers-support-FeatureFilter.html#distance)\r\n */\r\n @JsonProperty()\r\n declare distance: number;\r\n /**\r\n * The geometry to apply to the spatial filter.\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-views-layers-support-FeatureFilter.html#geometry)\r\n */\r\n @JsonProperty()\r\n declare geometry: GeometryConfiguration;\r\n /**\r\n * An array of objectIds of the features to be filtered.\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-views-layers-support-FeatureFilter.html#objectIds)\r\n */\r\n @JsonProperty()\r\n declare objectIds: number[];\r\n /**\r\n * For spatial filters, this parameter defines the spatial relationship to filter features in the layer view against the filter [geometry](https://developers.arcgis.com/javascript/latest/api-reference/esri-layers-support-FeatureFilter.html#geometry).\r\n *\r\n * @default \"intersects\"\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-layers-support-FeatureFilter.html#spatialRelationship)\r\n */\r\n @JsonProperty()\r\n declare spatialRelationship: string;\r\n /**\r\n * A range of time with start and end date.\r\n *\r\n * @default null\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-views-layers-support-FeatureFilter.html#timeExtent)\r\n */\r\n @JsonProperty()\r\n declare timeExtent: TimeExtentConfiguration;\r\n /**\r\n * The unit for calculating the buffer distance when [distance](https://developers.arcgis.com/javascript/latest/api-reference/esri-views-layers-support-FeatureFilter.html#distance) is specified in a spatial filter.\r\n *\r\n * @default null\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-views-layers-support-FeatureFilter.html#units)\r\n */\r\n @JsonProperty()\r\n declare units?: \"feet\" | \"miles\" | \"nautical-miles\" | \"us-nautical-miles\" | \"meters\" | \"kilometers\";\r\n /**\r\n * A where clause for the feature filter.\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-views-layers-support-FeatureFilter.html#where)\r\n */\r\n @JsonProperty()\r\n declare where: string;\r\n\r\n constructor() {}\r\n}\r\n","import { JsonObject, JsonProperty } from \"typescript-json-serializer\";\r\n@JsonObject()\r\nexport class FontConfiguration {\r\n /**\r\n * The text decoration.\r\n *\r\n * @default \"none\"\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-symbols-Font.html#decoration)\r\n */\r\n @JsonProperty()\r\n declare decoration?: \"underline\" | \"line-through\" | \"none\";\r\n /**\r\n * The font family of the text.\r\n *\r\n * @default \"sans-serif\"\r\n *\r\n * The font family of the text. The possible values are dependent upon the layer type, and if you are working with a [MapView](https://developers.arcgis.com/javascript/latest/api-reference/esri-views-MapView.html) or a [SceneView](https://developers.arcgis.com/javascript/latest/api-reference/esri-views-SceneView.html). See the [Labeling guide page](https://developers.arcgis.com/javascript/latest/labeling/) for detailed explanation, or click the `Read more` below. >>> esri-read-more **Font families for 3D SceneViews** The supported font families for 3D [SceneViews](https://developers.arcgis.com/javascript/latest/api-reference/esri-views-SceneView.html) are dependent upon the fonts installed on the user's computer and web browser. If an app uses a font that is not installed, the Font class implements a fallback mechanism that will use the default font family value, which is `sans-serif`. See these references for instructions on how to install a new font on [Windows](https://support.microsoft.com/en-us/help/314960/how-to-install-or-remove-a-font-in-windows) or [macOS](https://support.apple.com/en-us/ht201749). Fonts that are not installed locally can also be loaded from a url by defining a [@font-face](https://developer.mozilla.org/en-US/docs/Web/CSS/@font-face) in a css file and referencing it from the `family` property in a symbol layer. **Font families for 2D MapImageLayer** The supported font families for [MapImageLayers](https://developers.arcgis.com/javascript/latest/api-reference/esri-layers-MapImageLayer.html) in a [MapView](https://developers.arcgis.com/javascript/latest/api-reference/esri-views-MapView.html) are dependent upon the fonts installed on the [ArcGIS Server](https://enterprise.arcgis.com/en/server/latest/get-started/windows/what-is-arcgis-for-server-.htm) that published the layer. If an app uses a font that is not installed, the Font class implements a fallback mechanism that will use the default font family value, which is `sans-serif`. **Font families for 2D FeatureLayer**, CSVLayer, StreamLayer, and TextSymbol The supported font families are based on hosted fonts files in `.pbf` format. By default, the fonts available are mostly the same ones used by the Esri Vector Basemaps. These fonts are available via `https://static.arcgis.com/fonts`. The URL can be configured to point to your own font resources by setting the [esriConfig.fontsUrl](https://developers.arcgis.com/javascript/latest/api-reference/esri-config.html#fontsUrl) property. If an app uses a font that is not installed, the Font class implements a fallback mechanism that will use the default font family value, which is `sans-serif`. This uses the `Arial Unicode MS` font file. > A preview of the fonts listed in the following table are available in the [Labeling](https://developers.arcgis.com/javascript/latest/labeling/) overview page. List of fonts currently supported in a 2D MapView: [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-symbols-Font.html#family)\r\n */\r\n @JsonProperty()\r\n declare family?: string;\r\n /**\r\n * The font size in points.\r\n *\r\n * @default 9\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-symbols-Font.html#size)\r\n */\r\n @JsonProperty()\r\n declare size?: number | string;\r\n /**\r\n * The text style.\r\n *\r\n * @default \"normal\"\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-symbols-Font.html#style)\r\n */\r\n @JsonProperty()\r\n declare style?: \"normal\" | \"italic\" | \"oblique\";\r\n /**\r\n * The text weight.\r\n *\r\n * @default \"normal\"\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-symbols-Font.html#weight)\r\n */\r\n @JsonProperty()\r\n declare weight?: \"normal\" | \"bold\" | \"bolder\" | \"lighter\";\r\n\r\n constructor() {}\r\n}\r\n","import { JsonObject, JsonProperty } from \"typescript-json-serializer\";\r\nimport {FieldElementConfiguration, GroupElementConfiguration, RelationshipElementConfiguration, TextElementConfiguration} from \"./element-configuration\";\r\nimport {ExpressionInfoConfiguration} from \"./expression-info-configuration\";\r\nimport {AttachmentElementConfiguration} from \"./attachment-element-configuration\";\r\n\r\n@JsonObject()\r\nexport class FormTemplateConfiguration {\r\n /**\r\n * The description of the form.\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-form-FormTemplate.html#description)\r\n */\r\n @JsonProperty()\r\n declare description: string;\r\n /**\r\n * An array of [form element]\r\n * (https://developers.arcgis.com/javascript/latest/api-reference/esri-form-elements-Element.html) objects that\r\n * represent an ordered list of form elements.\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-form-FormTemplate.html#elements)\r\n */\r\n @JsonProperty()\r\n declare elements: (\r\n | (AttachmentElementConfiguration & { type: \"attachment\" })\r\n | (FieldElementConfiguration & { type: \"field\" })\r\n | (GroupElementConfiguration & { type: \"group\" })\r\n | (RelationshipElementConfiguration & { type: \"relationship\" })\r\n | (TextElementConfiguration & { type: \"text\" })\r\n )[];\r\n /**\r\n * An array of [ExpressionInfo](https://developers.arcgis.com/javascript/latest/api-reference/esri-form-ExpressionInfo.html) objects that reference [Arcade](https://developers.arcgis.com/javascript/latest/arcade/) expressions following the specification defined by the [Form Constraint Profile](https://developers.arcgis.com/javascript/latest/arcade/#constraint) or the [Form Calculation Profile](https://developers.arcgis.com/javascript/latest/arcade/#form-calculation).\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-form-FormTemplate.html#expressionInfos)\r\n */\r\n @JsonProperty()\r\n declare expressionInfos?: ExpressionInfoConfiguration[];\r\n /**\r\n * Indicates whether to retain or clear a [form's](https://developers.arcgis.com/javascript/latest/api-reference/esri-widgets-FeatureForm.html) [field element](https://developers.arcgis.com/javascript/latest/api-reference/esri-form-elements-FieldElement.html) values.\r\n *\r\n * @default false\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-form-FormTemplate.html#preserveFieldValuesWhenHidden)\r\n */\r\n @JsonProperty()\r\n declare preserveFieldValuesWhenHidden?: boolean;\r\n /**\r\n * The string defining how to format the title displayed at the top of a form.\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-form-FormTemplate.html#title)\r\n */\r\n @JsonProperty()\r\n declare title?: string;\r\n\r\n constructor() {}\r\n}\r\n","import { JsonObject, JsonProperty } from \"typescript-json-serializer\";\r\nimport {SpatialReferenceConfiguration} from \"./spatial-reference-configuration\";\r\n\r\n@JsonObject()\r\nexport class GeometryConfiguration {\r\n /**\r\n * Indicates if the geometry has M values.\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-geometry-Geometry.html#hasM)\r\n */\r\n @JsonProperty()\r\n declare hasM?: boolean;\r\n\r\n /**\r\n * Indicates if the geometry has z-values (elevation).\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-geometry-Geometry.html#hasZ)\r\n */\r\n @JsonProperty()\r\n declare hasZ?: boolean;\r\n\r\n /**\r\n * The spatial reference of the geometry.\r\n *\r\n * @default SpatialReference.WGS84 // wkid: 4326\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-geometry-Geometry.html#spatialReference)\r\n */\r\n @JsonProperty({type: SpatialReferenceConfiguration})\r\n declare spatialReference?: SpatialReferenceConfiguration;\r\n\r\n /**\r\n * The geometry type.\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-geometry-Geometry.html#type)\r\n */\r\n @JsonProperty()\r\n declare type: \"point\" | \"multipoint\" | \"polyline\" | \"polygon\" | \"extent\" | \"mesh\";\r\n\r\n constructor() {}\r\n}\r\n\r\n@JsonObject()\r\nexport class ExtentConfiguration extends GeometryConfiguration {\r\n /**\r\n * The maximum possible `m` value in an extent envelope.\r\n *\r\n * @default undefined\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-geometry-Extent.html#mmax)\r\n */\r\n @JsonProperty()\r\n declare mmax?: number;\r\n\r\n /**\r\n * The minimum possible `m` value of an extent envelope.\r\n *\r\n * @default undefined\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-geometry-Extent.html#mmin)\r\n */\r\n @JsonProperty()\r\n declare mmin?: number;\r\n\r\n /**\r\n * The maximum X-coordinate of an extent envelope.\r\n *\r\n * @default 0\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-geometry-Extent.html#xmax)\r\n */\r\n @JsonProperty()\r\n declare xmax?: number;\r\n\r\n /**\r\n * The minimum X-coordinate of an extent envelope.\r\n *\r\n * @default 0\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-geometry-Extent.html#xmin)\r\n */\r\n @JsonProperty()\r\n declare xmin?: number;\r\n\r\n /**\r\n * The maximum Y-coordinate of an extent envelope.\r\n *\r\n * @default 0\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-geometry-Extent.html#ymax)\r\n */\r\n @JsonProperty()\r\n declare ymax?: number;\r\n\r\n /**\r\n * The minimum Y-coordinate of an extent envelope.\r\n *\r\n * @default 0\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-geometry-Extent.html#ymin)\r\n */\r\n @JsonProperty()\r\n declare ymin?: number;\r\n\r\n /**\r\n * The maximum possible `z`, or elevation, value in an extent envelope.\r\n *\r\n * @default undefined\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-geometry-Extent.html#zmax)\r\n */\r\n @JsonProperty()\r\n declare zmax?: number;\r\n\r\n /**\r\n * The minimum possible `z`, or elevation, value of an extent envelope.\r\n *\r\n * @default undefined\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-geometry-Extent.html#zmin)\r\n */\r\n @JsonProperty()\r\n declare zmin?: number;\r\n\r\n constructor() {\r\n super();\r\n }\r\n}\r\n\r\n@JsonObject()\r\nexport class PointConfiguration extends GeometryConfiguration {\r\n /**\r\n * The latitude of the point.\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-geometry-Point.html#latitude)\r\n */\r\n @JsonProperty()\r\n declare latitude?: number;\r\n /**\r\n * The longitude of the point.\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-geometry-Point.html#longitude)\r\n */\r\n @JsonProperty()\r\n declare longitude?: number;\r\n /**\r\n * The m-coordinate of the point in map units.\r\n *\r\n * @default undefined\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-geometry-Point.html#m)\r\n */\r\n @JsonProperty()\r\n declare m?: number;\r\n /**\r\n * The x-coordinate (easting) of the point in map units.\r\n *\r\n * @default 0\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-geometry-Point.html#x)\r\n */\r\n @JsonProperty()\r\n declare x?: number;\r\n /**\r\n * The y-coordinate (northing) of the point in map units.\r\n *\r\n * @default 0\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-geometry-Point.html#y)\r\n */\r\n @JsonProperty()\r\n declare y?: number;\r\n /**\r\n * The z-coordinate (or elevation) of the point in map units.\r\n *\r\n * @default undefined\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-geometry-Point.html#z)\r\n */\r\n @JsonProperty()\r\n declare z?: number;\r\n\r\n constructor() {\r\n super();\r\n }\r\n}\r\n","import {GeometryConfiguration} from \"./geometry-configuration\";\r\nimport {LayerConfiguration} from \"./layer-configuration\";\r\nimport { JsonObject, JsonProperty } from \"typescript-json-serializer\";\r\nimport {PopupTemplateConfiguration} from \"./popup-configuration\";\r\nimport {SymbolConfiguration} from \"./symbol-configuration\";\r\n\r\n@JsonObject()\r\nexport class GraphicConfiguration {\r\n /**\r\n * The aggregateGeometries contains spatial aggregation geometries when [statistics](https://developers.arcgis.com/javascript/latest/api-reference/esri-rest-support-StatisticDefinition.html#statisticType) query is executed with `envelope-aggregate`, `centroid-aggregate` and/or `convex-hull-aggregate` statistics type.\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-Graphic.html#aggregateGeometries)\r\n */\r\n @JsonProperty()\r\n declare aggregateGeometries?: any;\r\n /**\r\n * Name-value pairs of fields and field values associated with the graphic.\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-Graphic.html#attributes)\r\n */\r\n @JsonProperty()\r\n declare attributes?: any;\r\n /**\r\n * The geometry that defines the graphic's location.\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-Graphic.html#geometry)\r\n */\r\n @JsonProperty()\r\n declare geometry?: GeometryConfiguration;\r\n /**\r\n * If applicable, references the layer in which the graphic is stored.\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-Graphic.html#layer)\r\n */\r\n @JsonProperty()\r\n declare layer?: LayerConfiguration;\r\n /**\r\n * Returns information about an origin of a graphic if applicable.\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-Graphic.html#origin)\r\n */\r\n // @JsonProperty()\r\n // declare origin?: VectorTileOrigin;\r\n /**\r\n * The template for displaying content in a [Popup]\r\n * (https://developers.arcgis.com/javascript/latest/api-reference/esri-widgets-Popup.html) when the graphic\r\n * is selected.\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-Graphic.html#popupTemplate)\r\n */\r\n @JsonProperty()\r\n declare popupTemplate?: PopupTemplateConfiguration;\r\n /**\r\n * The [Symbol](https://developers.arcgis.com/javascript/latest/api-reference/esri-symbols-Symbol.html) for the\r\n * graphic.\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-Graphic.html#symbol)\r\n */\r\n @JsonProperty()\r\n declare symbol?: SymbolConfiguration;\r\n /**\r\n * Indicates the visibility of the graphic.\r\n *\r\n * @default true\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-Graphic.html#visible)\r\n */\r\n @JsonProperty()\r\n declare visible?: boolean;\r\n\r\n constructor() {}\r\n}\r\n","import { JsonObject, JsonProperty } from \"typescript-json-serializer\";\r\nimport { ExtentConfiguration } from \"./geometry-configuration\";\r\nimport {FieldConfiguration} from \"./field-configuration\";\r\nimport {PortalItemConfiguration} from \"./portal-item-configuration\";\r\nimport {TimeExtentConfiguration, TimeInfoConfiguration, TimeIntervalConfiguration} from \"./time-info-configration\";\r\nimport {SpatialReferenceConfiguration} from \"./spatial-reference-configuration\";\r\nimport {\r\n RendererConfiguration,\r\n SimpleRendererConfiguration,\r\n UniqueValueRendererConfiguration\r\n} from \"./renderer-configuration\";\r\nimport {LabelClassConfiguration} from \"./label-configuration\";\r\nimport {FormTemplateConfiguration} from \"./form-template-configuration\";\r\nimport {PopupTemplateConfiguration} from \"./popup-configuration\";\r\nimport {GraphicConfiguration} from \"./graphic-configuration\";\r\nimport {BasemapConfiguration, GroundConfiguration, MapConfiguration} from \"./map-configuration\";\r\n\r\n// A predicate function use to determine what is the symbol type\r\nconst rendererTypePredicate = (renderer: any) => {\r\n if (renderer.type === \"simple\") {\r\n return UniqueValueRendererConfiguration;\r\n }\r\n if (renderer.type === \"unique-value\") {\r\n return SimpleRendererConfiguration;\r\n }\r\n\r\n return SimpleRendererConfiguration;\r\n};\r\n\r\n@JsonObject()\r\nexport class LayerConfiguration {\r\n /**\r\n * The full extent of the layer.\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-layers-Layer.html#fullExtent)\r\n */\r\n @JsonProperty({ type: ExtentConfiguration })\r\n declare fullExtent?: ExtentConfiguration;\r\n\r\n /**\r\n * The unique ID assigned to the layer.\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-layers-Layer.html#id)\r\n */\r\n @JsonProperty()\r\n declare id?: string;\r\n\r\n /**\r\n * Indicates how the layer should display in the [LayerList](https://developers.arcgis.com/javascript/latest/api-reference/esri-widgets-LayerList.html) widget.\r\n *\r\n * @default \"show\"\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-layers-Layer.html#listMode)\r\n */\r\n @JsonProperty()\r\n declare listMode?: \"show\" | \"hide\" | \"hide-children\";\r\n\r\n /**\r\n * The opacity of the layer.\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-layers-Layer.html#opacity)\r\n */\r\n @JsonProperty()\r\n declare opacity?: number;\r\n\r\n /**\r\n * The parent to which the layer belongs.\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-layers-Layer.html#parent)\r\n */\r\n declare parent?: MapConfiguration\r\n | BasemapConfiguration\r\n | GroundConfiguration\r\n | (GroupLayerConfiguration & { type: \"group\" })\r\n | (CatalogDynamicGroupLayerConfiguration & { type: \"catalog-dynamic-group\" })\r\n | (CatalogLayerConfiguration & { type: \"catalog\" });\r\n\r\n /**\r\n * The title of the layer used to identify it in places such as the\r\n * [LayerList](https://developers.arcgis.com/javascript/latest/api-reference/esri-widgets-LayerList.html) widget.\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-layers-Layer.html#title)\r\n */\r\n @JsonProperty()\r\n declare title?: string;\r\n\r\n /**\r\n * Specifies a fixed [time extent](https://developers.arcgis.com/javascript/latest/api-reference/esri-time-TimeExtent.html) during which a layer should be visible.\r\n *\r\n * @default null\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-layers-Layer.html#visibilityTimeExtent)\r\n */\r\n // visibilityTimeExtent?: TimeExtentProperties;\r\n /**\r\n * *Geo.js Property*\r\n * Custom field to define layer type. Reserved read-only field 'type' cannot be used\r\n * The layer type provides a convenient way to check the type of the layer without the need to import specific\r\n * layer modules. **Possible values:** base-dynamic | base-elevation | base-tile | bing-maps | elevation |\r\n * feature | graphics | group | imagery | integrated-mesh | map-image | open-street-map | point-cloud | scene |\r\n * stream | tile | unknown | unsupported | vector-tile | web-tile\r\n *\r\n * Custom types are also possible: e.g. station\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-layers-Layer.html#type)\r\n */\r\n @JsonProperty()\r\n declare layerType?: string;\r\n\r\n /**\r\n * When `true`, the layer can be persisted.\r\n *\r\n * @default false\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-layers-Layer.html#persistenceEnabled)\r\n */\r\n @JsonProperty()\r\n declare persistenceEnabled?: boolean;\r\n\r\n /**\r\n * Indicates if the layer is visible in the [View](https://developers.arcgis.com/javascript/latest/api-reference/esri-views-View.html).\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-layers-Layer.html#visible)\r\n */\r\n @JsonProperty()\r\n declare visible?: boolean;\r\n\r\n /**\r\n * Indicates how to manage the visibility of the children layers.\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-layers-GroupLayer.html#visibilityMode)\r\n */\r\n declare visibilityMode?: \"independent\" | \"inherited\" | \"exclusive\";\r\n\r\n /**\r\n * *Geo.js Property*\r\n * Meta ID\r\n *\r\n * @example\r\n */\r\n @JsonProperty()\r\n declare metauid?: string;\r\n /**\r\n * *Geo.js Property*\r\n * Ankerfeld für Verlinkung\r\n */\r\n @JsonProperty()\r\n declare anchorField?: string;\r\n\r\n /**\r\n * *Geo.js Property*\r\n * Ankerfeld Type für Verlinkung (z.B. integer)\r\n */\r\n @JsonProperty()\r\n declare anchorFieldType?: string;\r\n\r\n constructor() {}\r\n}\r\n\r\n@JsonObject()\r\nexport class PortalLayerConfiguration {\r\n /**\r\n * The portal item from which the layer is loaded.\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-layers-mixins-PortalLayer.html#portalItem)\r\n */\r\n @JsonProperty()\r\n declare portalItem: PortalItemConfiguration;\r\n\r\n constructor() {}\r\n}\r\n/**\r\n * Beinhaltet FeatureLayerBaseProperties (FeatureLayerBaseConfiguration)\r\n */\r\n@JsonObject()\r\nexport class FeatureLayerConfiguration extends LayerConfiguration {\r\n /**\r\n * This property is used to configure the associated layer's [FeatureTable](https://developers.arcgis.com/javascript/latest/api-reference/esri-widgets-FeatureTable.html).\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-layers-FeatureLayer.html#attributeTableTemplate)\r\n */\r\n // attributeTableTemplate?: AttributeTableTemplateProperties;\r\n /**\r\n * Array of Chart Items of type WebMapWebChart available on the feature layer.\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-layers-FeatureLayer.html#charts)\r\n */\r\n @JsonProperty()\r\n declare charts?: any[];\r\n /**\r\n * Copyright information for the layer.\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-layers-mixins-FeatureLayerBase.html#copyright)\r\n */\r\n @JsonProperty()\r\n declare copyright: string;\r\n\r\n /**\r\n * The SQL where clause used to filter features on the client.\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-layers-mixins-FeatureLayerBase.html#definitionExpression)\r\n */\r\n @JsonProperty()\r\n declare definitionExpression: string;\r\n\r\n /**\r\n * The name of the layer's primary display field.\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-layers-mixins-FeatureLayerBase.html#displayField)\r\n */\r\n @JsonProperty()\r\n declare displayField: string;\r\n\r\n /**\r\n * An object that allows you to create a dynamic layer with data either from map service sublayers or data from a registered workspace.\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-layers-FeatureLayer.html#dynamicDataSource)\r\n */\r\n // @JsonProperty()\r\n // dynamicDataSource?: (DynamicMapLayer & { type: \"map-layer\" }) | (DynamicDataLayer & { type: \"data-layer\" });\r\n /**\r\n * Determines if the layer is editable.\r\n *\r\n * @default true\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-layers-FeatureLayer.html#editingEnabled)\r\n */\r\n @JsonProperty()\r\n declare editingEnabled?: boolean;\r\n /**\r\n * Specifies how features are placed on the vertical axis (z).\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-layers-mixins-FeatureLayerBase.html#elevationInfo)\r\n */\r\n // @JsonProperty()\r\n // declare elevationInfo: FeatureLayerElevationInfo;\r\n\r\n /**\r\n * Configures the method for reducing the number of point features in the view.\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-layers-FeatureLayer.html#featureReduction)\r\n */\r\n // @JsonProperty()\r\n // declare featureReduction?: | (FeatureReductionBinningProperties & { type: \"binning\" })\r\n // | (FeatureReductionClusterProperties & { type: \"cluster\" })\r\n // | (FeatureReductionSelectionProperties & { type: \"selection\" });\r\n\r\n /**\r\n * An array of fields in the layer.\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-layers-FeatureLayer.html#fields)\r\n */\r\n @JsonProperty()\r\n declare fields: FieldConfiguration[];\r\n /**\r\n * When a feature layer is configured as floor-aware, it has a floorInfo property defined.\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-layers-mixins-FeatureLayerBase.html#floorInfo)\r\n */\r\n // @JsonProperty()\r\n // declare floorInfo?: LayerFloorInfoProperties;\r\n /**\r\n * The [template](https://developers.arcgis.com/javascript/latest/api-reference/esri-form-FormTemplate.html) used in an associated layer's [FeatureForm](https://developers.arcgis.com/javascript/latest/api-reference/esri-widgets-FeatureForm.html).\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-layers-FeatureLayer.html#formTemplate)\r\n */\r\n @JsonProperty()\r\n declare formTemplate: FormTemplateConfiguration;\r\n\r\n /**\r\n * The full extent of the layer.\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-layers-FeatureLayer.html#fullExtent)\r\n */\r\n @JsonProperty()\r\n declare fullExtent?: ExtentConfiguration;\r\n\r\n /**\r\n * The version of the geodatabase of the feature service data.\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-layers-mixins-FeatureLayerBase.html#gdbVersion)\r\n */\r\n @JsonProperty()\r\n declare gdbVersion: string;\r\n\r\n /**\r\n * The geometry type of features in the layer.\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-layers-mixins-FeatureLayerBase.html#geometryType)\r\n */\r\n @JsonProperty()\r\n declare geometryType?: \"point\" | \"multipoint\" | \"polyline\" | \"polygon\" | \"multipatch\" | \"mesh\";\r\n\r\n /**\r\n * Indicates whether the client-side features in the layer have `M` (measurement) values.\r\n *\r\n * @default undefined\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-layers-mixins-FeatureLayerBase.html#hasM)\r\n */\r\n @JsonProperty()\r\n declare hasM: boolean;\r\n /**\r\n * Indicates whether the client-side features in the layer have `Z` (elevation) values.\r\n *\r\n * @default undefined\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-layers-mixins-FeatureLayerBase.html#hasZ)\r\n */\r\n @JsonProperty()\r\n declare hasZ: boolean;\r\n\r\n /**\r\n * The historic moment to query.\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-layers-mixins-FeatureLayerBase.html#historicMoment)\r\n */\r\n @JsonProperty()\r\n declare historicMoment: Date;\r\n\r\n /**\r\n * Returns `true` if the layer is loaded from a non-spatial table in a service.\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-layers-FeatureLayer.html#isTable)\r\n */\r\n @JsonProperty()\r\n declare isTable: boolean;\r\n\r\n /**\r\n * The label definition for this layer, specified as an array of [LabelClass]\r\n * (https://developers.arcgis.com/javascript/latest/api-reference/esri-layers-support-LabelClass.html).\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-layers-FeatureLayer.html#labelingInfo)\r\n */\r\n @JsonProperty()\r\n declare labelingInfo: LabelClassConfiguration[];\r\n\r\n /**\r\n * Indicates whether to display labels for this layer.\r\n *\r\n * @default true\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-layers-FeatureLayer.html#labelsVisible)\r\n */\r\n @JsonProperty()\r\n declare labelsVisible: boolean;\r\n\r\n /**\r\n * The layer ID, or layer index, of a Feature Service layer.\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-layers-mixins-FeatureLayerBase.html#layerId)\r\n */\r\n @JsonProperty()\r\n declare layerId: number;\r\n\r\n /**\r\n * Indicates whether the layer will be included in the legend.\r\n *\r\n * @default true\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-layers-FeatureLayer.html#legendEnabled)\r\n */\r\n @JsonProperty()\r\n declare legendEnabled: boolean;\r\n\r\n /**\r\n * The name of an `oid` [field](https://developers.arcgis.com/javascript/latest/api-reference/esri-layers-mixins-FeatureLayerBase.html#fields) containing a unique value or identifier for each feature in the layer.\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-layers-mixins-FeatureLayerBase.html#objectIdField)\r\n */\r\n @JsonProperty()\r\n declare objectIdField: string;\r\n\r\n /**\r\n * An array of field names from the service to include with each feature.\r\n *\r\n * @default null\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-layers-FeatureLayer.html#outFields)\r\n */\r\n @JsonProperty()\r\n declare outFields: string[];\r\n\r\n /**\r\n * Indicates whether to display popups when features in the layer are clicked.\r\n *\r\n * @default true\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-layers-FeatureLayer.html#popupEnabled)\r\n */\r\n @JsonProperty()\r\n declare popupEnabled: boolean;\r\n\r\n /**\r\n * The popup template for the layer.\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-layers-FeatureLayer.html#popupTemplate)\r\n */\r\n @JsonProperty()\r\n declare popupTemplate: PopupTemplateConfiguration;\r\n /**\r\n * Refresh interval of the layer in minutes.\r\n *\r\n * @default 0\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-layers-FeatureLayer.html#refreshInterval)\r\n */\r\n @JsonProperty()\r\n declare refreshInterval?: number;\r\n /**\r\n * The renderer assigned to the layer.\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-layers-FeatureLayer.html#renderer)\r\n */\r\n @JsonProperty({type: rendererTypePredicate})\r\n declare renderer: RendererConfiguration;\r\n\r\n /**\r\n * When `true`, indicates that M values will be returned.\r\n *\r\n * @default undefined\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-layers-mixins-FeatureLayerBase.html#returnM)\r\n */\r\n @JsonProperty()\r\n declare returnM: boolean;\r\n\r\n /**\r\n * When `true`, indicates that z-values will always be returned.\r\n *\r\n * @default undefined\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-layers-mixins-FeatureLayerBase.html#returnZ)\r\n */\r\n @JsonProperty()\r\n declare returnZ: boolean;\r\n\r\n /**\r\n * Apply perspective scaling to screen-size point symbols in a [SceneView](https://developers.arcgis.com/javascript/latest/api-reference/esri-views-SceneView.html).\r\n *\r\n * @default true\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-layers-FeatureLayer.html#screenSizePerspectiveEnabled)\r\n */\r\n @JsonProperty()\r\n declare screenSizePerspectiveEnabled: boolean;\r\n\r\n /**\r\n * The service definition expression limits the features available for display and query.\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-layers-FeatureLayer.html#serviceDefinitionExpression)\r\n */\r\n @JsonProperty()\r\n declare readonly serviceDefinitionExpression: string;\r\n\r\n /**\r\n * A collection of [Graphic](https://developers.arcgis.com/javascript/latest/api-reference/esri-Graphic.html)\r\n * objects used to create a FeatureLayer.\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-layers-FeatureLayer.html#source)\r\n */\r\n @JsonProperty()\r\n declare source: GraphicConfiguration[];\r\n\r\n /**\r\n * The [feature service's metadata JSON](https://developers.arcgis.com/rest/services-reference/layer-feature-service-.htm) exposed by the ArcGIS REST API.\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-layers-mixins-FeatureLayerBase.html#sourceJSON)\r\n */\r\n @JsonProperty()\r\n declare sourceJSON: any;\r\n\r\n /**\r\n * The spatial reference of the layer.\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-layers-mixins-FeatureLayerBase.html#spatialReference)\r\n */\r\n @JsonProperty()\r\n declare spatialReference: SpatialReferenceConfiguration;\r\n\r\n /**\r\n * The title of the layer used to identify it in places such as the [Legend](https://developers.arcgis.com/javascript/latest/api-reference/esri-widgets-Legend.html) and [LayerList](https://developers.arcgis.com/javascript/latest/api-reference/esri-widgets-LayerList.html) widgets.\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-layers-mixins-FeatureLayerBase.html#title)\r\n */\r\n @JsonProperty()\r\n declare title?: string;\r\n /**\r\n * An array of feature templates defined in the feature layer.\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-layers-FeatureLayer.html#templates)\r\n */\r\n // @JsonProperty()\r\n // declare templates: FeatureTemplate[];\r\n\r\n /**\r\n * The name of the field holding the type ID for the features.\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-layers-FeatureLayer.html#typeIdField)\r\n */\r\n @JsonProperty()\r\n declare typeIdField: string;\r\n\r\n /**\r\n * An array of [types](https://developers.arcgis.com/javascript/latest/api-reference/esri-layers-support-FeatureType.html) defined in the feature service exposed by ArcGIS REST API.\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-layers-FeatureLayer.html#types)\r\n */\r\n // @JsonProperty()\r\n // declare types: FeatureTypeProperties[];\r\n\r\n /**\r\n * The absolute URL of the REST endpoint of the layer, non-spatial table or service.\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-layers-mixins-FeatureLayerBase.html#url)\r\n */\r\n @JsonProperty()\r\n declare url: string;\r\n\r\n /** --- from PortalLayer --- */\r\n /**\r\n * The portal item from which the layer is loaded.\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-layers-mixins-PortalLayer.html#portalItem)\r\n */\r\n @JsonProperty()\r\n declare portalItem: PortalItemConfiguration;\r\n\r\n /** --- end from PortalLayer --- */\r\n\r\n /** --- from ScaleRangeLayer --- */\r\n /**\r\n * The maximum scale (most zoomed in) at which the layer is visible in the view.\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-layers-mixins-ScaleRangeLayer.html#maxScale)\r\n */\r\n @JsonProperty()\r\n declare maxScale: number;\r\n /**\r\n * The minimum scale (most zoomed out) at which the layer is visible in the view.\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-layers-mixins-ScaleRangeLayer.html#minScale)\r\n */\r\n @JsonProperty()\r\n declare minScale: number;\r\n\r\n /** --- end from ScaleRangeLayer --- */\r\n\r\n /** --- from TemporalLayer --- */\r\n /**\r\n * The layer's time extent.\r\n *\r\n * @default null\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-layers-mixins-TemporalLayer.html#timeExtent)\r\n */\r\n @JsonProperty()\r\n declare timeExtent?: TimeExtentConfiguration;\r\n /**\r\n * TimeInfo provides information such as date fields that store [start](https://developers.arcgis.com/javascript/latest/api-reference/esri-layers-support-TimeInfo.html#startField) and [end](https://developers.arcgis.com/javascript/latest/api-reference/esri-layers-support-TimeInfo.html#endField) time for each feature and the [fullTimeExtent](https://developers.arcgis.com/javascript/latest/api-reference/esri-layers-support-TimeInfo.html#fullTimeExtent) for the layer.\r\n *\r\n * @default null\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-layers-mixins-TemporalLayer.html#timeInfo)\r\n */\r\n @JsonProperty()\r\n declare timeInfo?: TimeInfoConfiguration;\r\n /**\r\n * A temporary offset of the time data based on a certain [TimeInterval](https://developers.arcgis.com/javascript/latest/api-reference/esri-time-TimeInterval.html).\r\n *\r\n * @default null\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-layers-mixins-TemporalLayer.html#timeOffset)\r\n */\r\n @JsonProperty()\r\n declare timeOffset?: TimeIntervalConfiguration;\r\n /**\r\n * Determines if the time enabled layer will update its temporal data based on the view's [timeExtent](https://developers.arcgis.com/javascript/latest/api-reference/esri-views-View.html#timeExtent).\r\n *\r\n * @default true\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-layers-mixins-TemporalLayer.html#useViewTime)\r\n */\r\n @JsonProperty()\r\n declare useViewTime?: boolean;\r\n\r\n /** --- end from TemporalLayer --- */\r\n\r\n /** --- from OperationalLayerProperties --- */\r\n /**\r\n * Enable persistence of the layer in a [WebMap](https://developers.arcgis.com/javascript/latest/api-reference/esri-WebMap.html) or [WebScene](https://developers.arcgis.com/javascript/latest/api-reference/esri-WebScene.html).\r\n *\r\n * @default true\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-layers-mixins-OperationalLayer.html#persistenceEnabled)\r\n */\r\n @JsonProperty()\r\n declare persistenceEnabled?: boolean;\r\n /** --- end from OperationalLayerProperties --- */\r\n\r\n constructor() {\r\n super();\r\n }\r\n}\r\n\r\n@JsonObject()\r\nexport class GroupLayerConfiguration extends LayerConfiguration {\r\n /**\r\n * The maximum scale (most zoomed in) at which the layer is visible in the view.\r\n *\r\n * @default 0\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-layers-GroupLayer.html#maxScale)\r\n */\r\n @JsonProperty()\r\n declare maxScale?: number;\r\n /**\r\n * The minimum scale (most zoomed out) at which the layer is visible in the view.\r\n *\r\n * @default 0\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-layers-GroupLayer.html#minScale)\r\n */\r\n @JsonProperty()\r\n declare minScale?: number;\r\n /**\r\n * Indicates how to manage the visibility of the children layers.\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-layers-GroupLayer.html#visibilityMode)\r\n */\r\n @JsonProperty()\r\n declare visibilityMode?: \"independent\" | \"inherited\" | \"exclusive\";\r\n\r\n /** --- from PortalLayer --- */\r\n /**\r\n * The portal item from which the layer is loaded.\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-layers-mixins-PortalLayer.html#portalItem)\r\n */\r\n @JsonProperty()\r\n declare portalItem: PortalItemConfiguration;\r\n\r\n /** --- end from PortalLayer --- */\r\n\r\n /** --- from OperationalLayerProperties --- */\r\n /**\r\n * Enable persistence of the layer in a [WebMap](https://developers.arcgis.com/javascript/latest/api-reference/esri-WebMap.html) or [WebScene](https://developers.arcgis.com/javascript/latest/api-reference/esri-WebScene.html).\r\n *\r\n * @default true\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-layers-mixins-OperationalLayer.html#persistenceEnabled)\r\n */\r\n @JsonProperty()\r\n declare persistenceEnabled?: boolean;\r\n /** --- end from OperationalLayerProperties --- */\r\n}\r\n\r\n@JsonObject()\r\nexport class CatalogDynamicGroupLayerConfiguration extends LayerConfiguration {\r\n /**\r\n * Indicates whether the layer will be included in the legend.\r\n *\r\n * @default true\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-layers-catalog-CatalogDynamicGroupLayer.html#legendEnabled)\r\n */\r\n @JsonProperty()\r\n declare legendEnabled?: boolean;\r\n /**\r\n * The maximum number of sublayers that can be visible at once in a CatalogDynamicGroupLayer.\r\n *\r\n * @default 10\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-layers-catalog-CatalogDynamicGroupLayer.html#maximumVisibleSublayers)\r\n */\r\n @JsonProperty()\r\n declare maximumVisibleSublayers?: number;\r\n\r\n constructor() {\r\n super();\r\n }\r\n}\r\n\r\n@JsonObject()\r\nexport class CatalogLayerConfiguration extends LayerConfiguration {\r\n /**\r\n * An array of fields in the layer.\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-layers-CatalogLayer.html#fields)\r\n */\r\n @JsonProperty()\r\n declare fields?: FieldConfiguration[];\r\n /**\r\n * The full extent of the layer.\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-layers-CatalogLayer.html#fullExtent)\r\n */\r\n @JsonProperty()\r\n declare fullExtent?: ExtentConfiguration;\r\n /**\r\n * Indicates whether the layer will be included in the legend.\r\n *\r\n * @default true\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-layers-CatalogLayer.html#legendEnabled)\r\n */\r\n @JsonProperty()\r\n declare legendEnabled?: boolean;\r\n /**\r\n * An array of field names from the service to include with each feature.\r\n *\r\n * @default null\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-layers-CatalogLayer.html#outFields)\r\n */\r\n @JsonProperty()\r\n declare outFields?: string[];\r\n /**\r\n * The absolute URL of the REST endpoint of a catalog service.\r\n *\r\n * @default null\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-layers-CatalogLayer.html#url)\r\n */\r\n @JsonProperty()\r\n declare url?: string;\r\n\r\n constructor() {\r\n super();\r\n }\r\n}\r\n","import { JsonObject, JsonProperty } from \"typescript-json-serializer\";\r\nimport {MetadataConfiguration} from \"./metadata-configuration\";\r\nimport {ListItemConfiguration} from \"./list-item-configuration\";\r\nimport {MessageConfiguration} from \"./message-configuration\";\r\n\r\n@JsonObject()\r\nexport class LayerListConfiguration {\r\n\r\n /**\r\n * *Geo.js Property*\r\n * Groups to add to the layer list\r\n * --> added to operationalLayers\r\n */\r\n @JsonProperty()\r\n declare groups: ListItemConfiguration[];\r\n\r\n /**\r\n * *Geo.js Property*\r\n * Hide items, add actions to items, override settings from webmap (e.g. if item is open)\r\n * --> goes to operationalLayers\r\n */\r\n @JsonProperty()\r\n declare items: ListItemConfiguration[];\r\n\r\n /**\r\n * *Geo.js Property*\r\n * Metadata for layers\r\n */\r\n @JsonProperty()\r\n declare metadata: MetadataConfiguration;\r\n\r\n /**\r\n * *Geo.js Property*\r\n * Limit the tree levels. e.g. limitLevel: 1 would list only root level.\r\n *\r\n * @default 0 // no limit\r\n */\r\n @JsonProperty() limitLevel = 0;\r\n /**\r\n * *Geo.js Property*\r\n * Rebuild the TOC if true.\r\n *\r\n * @default false\r\n */\r\n @JsonProperty() rebuild = false;\r\n /**\r\n * *Geo.js Property*\r\n * Start the tree at level. e.g. limitLevel: 1 would hide the root level.\r\n *\r\n * @default 0 // root Level\r\n */\r\n @JsonProperty() startLevel = 0;\r\n\r\n /**\r\n * *Geo.js Property*\r\n * If list with layers is hidden.\r\n * Only shows messages and legend (if configured)\r\n */\r\n @JsonProperty()\r\n declare hideList: boolean;\r\n\r\n /**\r\n * *Geo.js Property*\r\n * Metadata for layers\r\n */\r\n @JsonProperty()\r\n declare preContent?: MessageConfiguration[];\r\n /**\r\n * *Geo.js Property*\r\n * Metadata for layers\r\n */\r\n @JsonProperty()\r\n declare postContent?: MessageConfiguration[];\r\n\r\n /**\r\n * [CatalogLayer](https://developers.arcgis.com/javascript/latest/api-reference/esri-layers-CatalogLayer.html) specific properties.\r\n *\r\n * @default null\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-widgets-LayerList.html#catalogOptions)\r\n */\r\n //catalogOptions?: LayerListCatalogOptions;\r\n /**\r\n * Indicates whether the widget is collapsed.\r\n *\r\n * @default false\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-widgets-LayerList.html#collapsed)\r\n */\r\n @JsonProperty()\r\n declare collapsed?: boolean;\r\n /**\r\n * Indicates whether [list items](https://developers.arcgis.com/javascript/latest/api-reference/esri-widgets-LayerList-ListItem.html) may be reordered within the list by dragging and dropping.\r\n *\r\n * @default false\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-widgets-LayerList.html#dragEnabled)\r\n */\r\n @JsonProperty()\r\n declare dragEnabled?: boolean;\r\n /**\r\n * Placeholder text used in the filter input if [visibleElements.filter](https://developers.arcgis.com/javascript/latest/api-reference/esri-widgets-LayerList.html#visibleElements) is true.\r\n *\r\n * @default \"\"\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-widgets-LayerList.html#filterPlaceholder)\r\n */\r\n @JsonProperty()\r\n declare filterPlaceholder?: string;\r\n /**\r\n * The value of the filter input if [visibleElements.filter](https://developers.arcgis.com/javascript/latest/api-reference/esri-widgets-LayerList.html#visibleElements) is true.\r\n *\r\n * @default \"\"\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-widgets-LayerList.html#filterText)\r\n */\r\n @JsonProperty()\r\n declare filterText?: string;\r\n /**\r\n * Indicates the heading level to use for the heading of the widget.\r\n *\r\n * @default 2\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-widgets-LayerList.html#headingLevel)\r\n */\r\n @JsonProperty()\r\n declare headingLevel?: number;\r\n /**\r\n * [KnowledgeGraphLayer](https://developers.arcgis.com/javascript/latest/api-reference/esri-layers-KnowledgeGraphLayer.html) specific properties.\r\n *\r\n * @default null\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-widgets-LayerList.html#knowledgeGraphOptions)\r\n */\r\n // knowledgeGraphOptions?: LayerListKnowledgeGraphOptions;\r\n /**\r\n * A function that executes each time a [ListItem](https://developers.arcgis.com/javascript/latest/api-reference/esri-widgets-LayerList-ListItem.html) is created.\r\n *\r\n * @default null\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-widgets-LayerList.html#listItemCreatedFunction)\r\n */\r\n // @JsonProperty()\r\n // declare listItemCreatedFunction?: ListItemCreatedHandler;\r\n /**\r\n * The minimum number of list items required to enable drag and drop reordering with [dragEnabled](https://developers.arcgis.com/javascript/latest/api-reference/esri-widgets-LayerList.html#dragEnabled).\r\n *\r\n * @default 2\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-widgets-LayerList.html#minDragEnabledItems)\r\n */\r\n @JsonProperty()\r\n declare minDragEnabledItems?: number;\r\n /**\r\n * The minimum number of list items required to display the visibleElements.filter input box.\r\n *\r\n * @default 10\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-widgets-LayerList.html#minFilterItems)\r\n */\r\n @JsonProperty()\r\n declare minFilterItems?: number;\r\n /**\r\n * Indicates whether more than one list item may be selected by the user at a single time.\r\n *\r\n * @default false\r\n * @deprecated since 4.29. Use {@link module:esri/widgets/LayerList#selectionMode selectionMode} instead.\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-widgets-LayerList.html#multipleSelectionEnabled)\r\n */\r\n @JsonProperty()\r\n declare multipleSelectionEnabled?: boolean;\r\n /**\r\n * A collection of [Layer](https://developers.arcgis.com/javascript/latest/api-reference/esri-layers-Layer.html)s that are opened in a [catalogLayerList](https://developers.arcgis.com/javascript/latest/api-reference/esri-widgets-LayerList.html#catalogLayerList) or [tableList](https://developers.arcgis.com/javascript/latest/api-reference/esri-widgets-LayerList.html#tableList) flow item.\r\n *\r\n * @default []\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-widgets-LayerList.html#openedLayers)\r\n */\r\n // @JsonProperty()\r\n // declare openedLayers?: CollectionConfi<LayerConfiguration>;\r\n /**\r\n * A collection of selected\r\n * [ListItem](https://developers.arcgis.com/javascript/latest/api-reference/esri-widgets-LayerList-ListItem.html)s\r\n * representing operational layers selected by the user.\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-widgets-LayerList.html#selectedItems)\r\n */\r\n // declare selectedItems?: CollectionProperties<ListItem>;\r\n /**\r\n * Indicates whether list items may be selected by the user.\r\n *\r\n * @default false\r\n * @deprecated since 4.29. Use {@link module:esri/widgets/LayerList#selectionMode selectionMode} and {@link module:esri/widgets/LayerList#dragEnabled dragEnabled} instead.\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-widgets-LayerList.html#selectionEnabled)\r\n */\r\n @JsonProperty()\r\n declare selectionEnabled?: boolean;\r\n /**\r\n * Specifies the selection mode.\r\n *\r\n * @default \"none\"\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-widgets-LayerList.html#selectionMode)\r\n */\r\n @JsonProperty()\r\n declare selectionMode?: \"multiple\" | \"none\" | \"single\" | \"single-persist\";\r\n /**\r\n * A reference to the [MapView](https://developers.arcgis.com/javascript/latest/api-reference/esri-views-MapView.html) or [SceneView](https://developers.arcgis.com/javascript/latest/api-reference/esri-views-SceneView.html).\r\n *\r\n * @default null\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-widgets-LayerList.html#view)\r\n */\r\n // @JsonProperty()\r\n // declare view?: (MapViewConfiguration & { type: \"2d\" }); // | (SceneViewProperties & { type: \"3d\" });\r\n /**\r\n * The view model for this widget.\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-widgets-LayerList.html#viewModel)\r\n */\r\n // @JsonProperty()\r\n // declare viewModel?: LayerListViewModelProperties;\r\n /**\r\n * Determines the icons used to indicate visibility.\r\n *\r\n * @default \"default\"\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-widgets-LayerList.html#visibilityAppearance)\r\n */\r\n @JsonProperty()\r\n declare visibilityAppearance?: \"default\" | \"checkbox\";\r\n /**\r\n * The visible elements that are displayed within the widget.\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-widgets-LayerList.html#visibleElements)\r\n */\r\n // declare visibleElements?: LayerListVisibleElements;\r\n\r\n constructor() {}\r\n}\r\n","import { JsonObject, JsonProperty } from \"typescript-json-serializer\";\r\nimport {WidgetConfiguration} from \"./widget-configuration\";\r\nimport {MapViewConfiguration} from \"./view-configuration\";\r\n\r\n// *Geo.js Properties*\r\n@JsonObject()\r\nexport class OverwriteConfiguration {\r\n /**\r\n * label text überschreiben\r\n */\r\n @JsonProperty()\r\n declare labels?: HashMap<string>;\r\n /**\r\n * label entfernen\r\n */\r\n @JsonProperty()\r\n declare removeLabels?: string[];\r\n\r\n @JsonProperty()\r\n declare reorder?: string[];\r\n\r\n /**\r\n * label anhängen\r\n */\r\n @JsonProperty()\r\n declare append?: __esri.SymbolTableElementInfo[];\r\n\r\n constructor() {}\r\n}\r\n\r\n@JsonObject()\r\nexport class LegendConfiguration extends WidgetConfiguration {\r\n /**\r\n * Collection of [ActiveLayerInfo](https://developers.arcgis.com/javascript/latest/api-reference/esri-widgets-Legend-support-ActiveLayerInfo.html) objects used by the legend view to display data in the legend.\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-widgets-Legend.html#activeLayerInfos)\r\n */\r\n // @JsonProperty()\r\n // activeLayerInfos?: CollectionProperties<ActiveLayerInfoProperties>;\r\n /**\r\n * Indicates whether to show the [Basemap](https://developers.arcgis.com/javascript/latest/api-reference/esri-Basemap.html) layers in the Legend.\r\n *\r\n * @default false\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-widgets-Legend.html#basemapLegendVisible)\r\n */\r\n @JsonProperty()\r\n declare basemapLegendVisible?: boolean;\r\n /**\r\n * Indicates the heading level to use for the legend title.\r\n *\r\n * @default 3\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-widgets-Legend.html#headingLevel)\r\n */\r\n @JsonProperty()\r\n declare headingLevel?: number;\r\n /**\r\n * When `true`, layers will only be shown in the legend if they are visible in the view's extent.\r\n *\r\n * @default false\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-widgets-Legend.html#hideLayersNotInCurrentView)\r\n */\r\n @JsonProperty()\r\n declare hideLayersNotInCurrentView?: boolean;\r\n /**\r\n * Specifies a subset of the layers to display in the legend.\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-widgets-Legend.html#layerInfos)\r\n */\r\n @JsonProperty()\r\n declare layerInfos?: __esri.LegendLayerInfos[];\r\n /**\r\n * If a layer uses a unique value render, only features that satisfy the layer's [definition expression](https://developers.arcgis.com/javascript/latest/api-reference/esri-layers-FeatureLayer.html#definitionExpression) will be displayed in the legend when set to true.\r\n *\r\n * @default false\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-widgets-Legend.html#respectLayerDefinitionExpression)\r\n */\r\n @JsonProperty()\r\n declarerespectLayerDefinitionExpression?: boolean;\r\n /**\r\n * Determines whether to respect the properties of the layers in the map that control the legend's visibility (`minScale`, `maxScale`, `legendEnabled`).\r\n *\r\n * @default true\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-widgets-Legend.html#respectLayerVisibility)\r\n */\r\n @JsonProperty()\r\n declare respectLayerVisibility: boolean;\r\n /**\r\n * Indicates the style of the legend.\r\n *\r\n * @default \"classic\"\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-widgets-Legend.html#style)\r\n */\r\n declare style?: string | __esri.LegendStyle;\r\n /**\r\n * A reference to the [MapView](https://developers.arcgis.com/javascript/latest/api-reference/esri-views-MapView.html) or [SceneView](https://developers.arcgis.com/javascript/latest/api-reference/esri-views-SceneView.html).\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-widgets-Legend.html#view)\r\n */\r\n declare view?: (MapViewConfiguration & { type: \"2d\" }); // | (SceneViewConfiguration & { type: \"3d\" });\r\n /**\r\n * The view model for this widget.\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-widgets-Legend.html#viewModel)\r\n */\r\n // viewModel?: LegendViewModelProperties;\r\n\r\n /**\r\n * *Geo.js Properties*\r\n * MapViewer specific template configuration per layer\r\n */\r\n @JsonProperty()\r\n declare overwriteLayerInfos?: HashMap<OverwriteConfiguration>;\r\n /**\r\n * *Geo.js Properties*\r\n * MapViewer specific template configuration per layer\r\n */\r\n @JsonProperty()\r\n declare reorder?: string[];\r\n constructor() {\r\n super();\r\n }\r\n}\r\n","import { JsonObject, JsonProperty } from \"typescript-json-serializer\";\r\n// *Geo.js Properties*\r\n@JsonObject()\r\nexport class LinkConfiguration {\r\n\r\n /**\r\n * Title\r\n */\r\n @JsonProperty()\r\n declare title: string;\r\n\r\n /**\r\n * URL\r\n */\r\n @JsonProperty()\r\n declare url: string;\r\n\r\n /**\r\n * CSS class\r\n */\r\n @JsonProperty()\r\n declare class?: string;\r\n\r\n constructor() {}\r\n}\r\n@JsonObject()\r\nexport class ConditionalLinkConfiguration extends LinkConfiguration{\r\n\r\n @JsonProperty()\r\n declare condition?: string;\r\n\r\n constructor() {\r\n super();\r\n }\r\n}\r\n","import { JsonObject, JsonProperty } from \"typescript-json-serializer\";\r\n\r\n\r\n@JsonObject()\r\nexport class MaintenanceConfiguration {\r\n\r\n /**\r\n * Start displaying the maintenance information\r\n *\r\n * @example: \"2020-11-20T07:00:00.000+01:00\"\r\n */\r\n @JsonProperty()\r\n declare from: Date;\r\n\r\n /**\r\n * End displaying the maintenance information\r\n *\r\n * @example: \"2020-11-27T18:30:00.000+01:00\"\r\n */\r\n @JsonProperty()\r\n declare to: Date;\r\n\r\n /**\r\n * Message to display\r\n */\r\n @JsonProperty()\r\n declare message: string;\r\n\r\n constructor() {}\r\n}\r\n","import { JsonObject, JsonProperty } from \"typescript-json-serializer\";\r\nimport {LayerConfiguration} from \"./layer-configuration\";\r\nimport {PortalItemConfiguration} from \"./portal-item-configuration\";\r\nimport {SpatialReferenceConfiguration} from \"./spatial-reference-configuration\";\r\nimport {ColorConfiguration} from \"./color-configuration\";\r\n\r\n@JsonObject()\r\nexport class BasemapStyleConfiguration {\r\n /**\r\n * An authorization string used to access a resource or service.\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-support-BasemapStyle.html#apiKey)\r\n */\r\n @JsonProperty()\r\n declare apiKey?: string;\r\n\r\n /**\r\n * The id of the basemap style.\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-support-BasemapStyle.html#id)\r\n */\r\n @JsonProperty()\r\n declare id?: string;\r\n /**\r\n * The language of the place labels in the basemap style.\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-support-BasemapStyle.html#language)\r\n */\r\n @JsonProperty()\r\n declare language?: string;\r\n /**\r\n * Indicates whether to display [places](https://developers.arcgis.com/javascript/latest/api-reference/esri-rest-places.html) with the basemap style.\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-support-BasemapStyle.html#places)\r\n */\r\n @JsonProperty()\r\n declare places?: \"all\" | \"attributed\" | \"none\";\r\n /**\r\n * The [URL](https://developers.arcgis.com/rest/basemap-styles/#service-url) to the basemap styles service.\r\n *\r\n * @default \"https://basemapstyles-api.arcgis.com/arcgis/rest/services/styles/v2/webmaps\"\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-support-BasemapStyle.html#serviceUrl)\r\n */\r\n @JsonProperty()\r\n declare serviceUrl?: string;\r\n /**\r\n * Displays country boundaries and labels based on a specific view of a country.\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-support-BasemapStyle.html#worldview)\r\n */\r\n @JsonProperty()\r\n declare worldview?: string;\r\n}\r\n\r\n@JsonObject()\r\nexport class BasemapConfiguration {\r\n /**\r\n * A collection of tile layers that make up the basemap's features.\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-Basemap.html#baseLayers)\r\n */\r\n @JsonProperty()\r\n declare baseLayers: LayerConfiguration[];\r\n\r\n /**\r\n * An identifier used to refer to the basemap when referencing it elsewhere.\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-Basemap.html#id)\r\n */\r\n @JsonProperty()\r\n declare id: string;\r\n\r\n /**\r\n * The portal item.\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-Basemap.html#portalItem)\r\n */\r\n @JsonProperty()\r\n declare portalItem: PortalItemConfiguration;\r\n\r\n /**\r\n * A collection of reference layers which are displayed over the [base layers](https://developers.arcgis.com/javascript/latest/api-reference/esri-Basemap.html#baseLayers) and all other layers in the map.\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-Basemap.html#referenceLayers)\r\n */\r\n @JsonProperty()\r\n declare referenceLayers: LayerConfiguration[];\r\n\r\n /**\r\n * The spatial reference of the Basemap.\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-Basemap.html#spatialReference)\r\n */\r\n @JsonProperty()\r\n declare spatialReference: SpatialReferenceConfiguration;\r\n\r\n /**\r\n * The style of the basemap from the [basemap styles service (v2)](https://developers.arcgis.com/rest/basemap-styles/).\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-Basemap.html#style)\r\n */\r\n @JsonProperty()\r\n declare style?: BasemapStyleConfiguration;\r\n\r\n /**\r\n * The URL pointing to an image that represents the basemap.\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-Basemap.html#thumbnailUrl)\r\n */\r\n @JsonProperty()\r\n declare thumbnailUrl: string;\r\n\r\n /**\r\n * The title of the basemap.\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-Basemap.html#title)\r\n */\r\n @JsonProperty()\r\n declare title: string;\r\n\r\n constructor() {}\r\n}\r\n\r\n@JsonObject()\r\nexport class GroundConfiguration {\r\n /**\r\n * A collection of [ElevationLayers](https://developers.arcgis.com/javascript/latest/api-reference/esri-layers-ElevationLayer.html) that define the elevation or terrain that makes up the ground surface.\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-Ground.html#layers)\r\n */\r\n // layers?: CollectionProperties<\r\n // (ElevationLayerProperties & { type: \"elevation\" }) | (BaseElevationLayerProperties & { type: \"base-elevation\" })\r\n // >;\r\n /**\r\n * Specifies the user navigation constraints relative to the ground surface.\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-Ground.html#navigationConstraint)\r\n */\r\n // navigationConstraint?: GroundNavigationConstraintProperties;\r\n /**\r\n * Opacity of the ground, including surface default color and the basemap (without reference layers).\r\n *\r\n * @default 1\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-Ground.html#opacity)\r\n */\r\n @JsonProperty()\r\n declare opacity?: number;\r\n /**\r\n * The color of the ground surface, displayed underneath the basemap.\r\n *\r\n * @default null\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-Ground.html#surfaceColor)\r\n */\r\n @JsonProperty()\r\n declare surfaceColor?: ColorConfiguration | number[] | string;\r\n\r\n constructor() {}\r\n}\r\n\r\n@JsonObject()\r\nexport class MapConfiguration {\r\n /**\r\n * Specifies a basemap for the map. The basemap is a set of tile layers that give geographic context to the [MapView](https://developers.arcgis.com/javascript/latest/api-reference/esri-views-MapView.html) or [SceneView](https://developers.arcgis.com/javascript/latest/api-reference/esri-views-SceneView.html) and the other [operational layers](https://developers.arcgis.com/javascript/latest/api-reference/esri-Map.html#layers) in the map. This value can be an instance of [Basemap](https://developers.arcgis.com/javascript/latest/api-reference/esri-Basemap.html) or one of the strings listed in the table below.\r\n *\r\n * Value | Source | Thumbnail\r\n * ------|------- |----------\r\n * `topo` | https://services.arcgisonline.com/ArcGIS/rest/services/World_Topo_Map/MapServer | ![basemap-topo](https://developers.arcgis.com/javascript/assets/img/apiref/basemap/topo.jpg)\r\n * `streets` | https://services.arcgisonline.com/ArcGIS/rest/services/World_Street_Map/MapServer | ![basemap-streets](https://developers.arcgis.com/javascript/assets/img/apiref/basemap/streets.jpg)\r\n * `satellite` | https://services.arcgisonline.com/ArcGIS/rest/services/World_Imagery/MapServer | ![basemap-satellite](https://developers.arcgis.com/javascript/assets/img/apiref/basemap/satellite.jpg)\r\n * `hybrid` | https://services.arcgisonline.com/ArcGIS/rest/services/Reference/World_Boundaries_and_Places/MapServer and https://services.arcgisonline.com/ArcGIS/rest/services/World_Imagery/MapServer | ![basemap-hybrid](https://developers.arcgis.com/javascript/assets/img/apiref/basemap/hybrid.jpg)\r\n * `dark-gray` | https://services.arcgisonline.com/ArcGIS/rest/services/Canvas/World_Dark_Gray_Reference/MapServer and https://services.arcgisonline.com/ArcGIS/rest/services/Canvas/World_Dark_Gray_Base/MapServer | ![basemap-dark-gray](https://developers.arcgis.com/javascript/assets/img/apiref/basemap/dark-gray.jpg)\r\n * `gray` | https://services.arcgisonline.com/ArcGIS/rest/services/Canvas/World_Light_Gray_Reference/MapServer and https://services.arcgisonline.com/ArcGIS/rest/services/Canvas/World_Light_Gray_Base/MapServer | ![basemap-gray](https://developers.arcgis.com/javascript/assets/img/apiref/basemap/gray.jpg)\r\n * `national-geographic` | https://services.arcgisonline.com/ArcGIS/rest/services/NatGeo_World_Map/MapServer | ![basemap-national-geographic](https://developers.arcgis.com/javascript/assets/img/apiref/basemap/national-geographic.jpg)\r\n * `oceans` | https://services.arcgisonline.com/arcgis/rest/services/Ocean/World_Ocean_Reference/MapServer and https://services.arcgisonline.com/arcgis/rest/services/Ocean/World_Ocean_Base/MapServer | ![basemap-oceans](https://developers.arcgis.com/javascript/assets/img/apiref/basemap/oceans.jpg)\r\n * `osm` | [OpenStreetMapLayer](https://developers.arcgis.com/javascript/latest/api-reference/esri-layers-OpenStreetMapLayer.html) | ![basemap-osm](https://developers.arcgis.com/javascript/assets/img/apiref/basemap/osm.jpg)\r\n * `terrain` | https://services.arcgisonline.com/ArcGIS/rest/services/Reference/World_Reference_Overlay/MapServer and https://services.arcgisonline.com/ArcGIS/rest/services/World_Terrain_Base/MapServer | ![basemap-terrain](https://developers.arcgis.com/javascript/assets/img/apiref/basemap/terrain.jpg)\r\n * `dark-gray-vector` | [Dark Gray Canvas [v2]](https://www.arcgis.com/home/item.html?id=c11ce4f7801740b2905eb03ddc963ac8) | ![dark-gray-vector](https://developers.arcgis.com/javascript/assets/img/apiref/basemap/dark-gray.jpg)\r\n * `gray-vector` | [Light Gray Canvas [v2]](https://www.arcgis.com/home/item.html?id=8a2cba3b0ebf4140b7c0dc5ee149549a) | ![gray-vector](https://developers.arcgis.com/javascript/assets/img/apiref/basemap/gray.jpg)\r\n * `streets-vector` | [World Street Map [v2]](https://www.arcgis.com/home/item.html?id=de26a3cf4cc9451298ea173c4b324736) | ![streets-vector](https://developers.arcgis.com/javascript/assets/img/apiref/basemap/streets.jpg)\r\n * `streets-night-vector` | [World Street Map (Night) [v2]](https://www.arcgis.com/home/item.html?id=86f556a2d1fd468181855a35e344567f) | ![streets-night-vector](https://developers.arcgis.com/javascript/assets/img/apiref/basemap/streets-night.jpg)\r\n * `streets-navigation-vector` | [World Navigation Map [v2]](https://www.arcgis.com/home/item.html?id=63c47b7177f946b49902c24129b87252) | ![streets-navigation-vector](https://developers.arcgis.com/javascript/assets/img/apiref/basemap/streets-navigation.jpg)\r\n * `topo-vector` | https://services.arcgisonline.com/arcgis/rest/services/Elevation/World_Hillshade/MapServer and [World Topographic Map [v2]](https://www.arcgis.com/home/item.html?id=7dc6cea0b1764a1f9af2e679f642f0f5) | ![topo-vector](https://developers.arcgis.com/javascript/assets/img/apiref/basemap/topo.jpg)\r\n * `streets-relief-vector` | https://services.arcgisonline.com/arcgis/rest/services/Elevation/World_Hillshade/MapServer and [World Street Map (with Relief) [v2]](https://www.arcgis.com/home/item.html?id=b266e6d17fc345b498345613930fbd76) | ![streets-relief-vector](https://developers.arcgis.com/javascript/assets/img/apiref/basemap/streets-relief.jpg)\r\n *\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-Map.html#basemap)\r\n */\r\n @JsonProperty()\r\n declare basemap: BasemapConfiguration;\r\n\r\n /**\r\n * Specifies the surface properties for the map. This property is only relevant when adding the map to a 3D [SceneView](https://developers.arcgis.com/javascript/latest/api-reference/esri-views-SceneView.html). It renders the terrain or topographical variations in the real world on the map's surface with a collection of [ElevationLayer](https://developers.arcgis.com/javascript/latest/api-reference/esri-layers-ElevationLayer.html). This value can be an instance of [Ground](https://developers.arcgis.com/javascript/latest/api-reference/esri-Ground.html), or one of the following strings:\r\n * * `world-elevation` for a default instance of ground using the [Terrain3D Service](https://www.arcgis.com/home/item.html?id=7029fb60158543ad845c7e1527af11e4).\r\n * * `world-topobathymetry` for an instance of ground that combines surface elevation and bathymetry using the [TopoBathy3D Service](https://www.arcgis.com/home/item.html?id=0c69ba5a5d254118841d43f03aa3e97d).\r\n *\r\n *\r\n * The ground may not be set to `null` or `undefined`, it is guaranteed to always contain an instance of type [Ground](https://developers.arcgis.com/javascript/latest/api-reference/esri-Ground.html). The elevation can be removed from the ground by setting the ground property to a new empty [Ground](https://developers.arcgis.com/javascript/latest/api-reference/esri-Ground.html) instance or by removing all the ground layers.\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-Map.html#ground)\r\n */\r\n @JsonProperty()\r\n declare ground: GroundConfiguration | string;\r\n\r\n constructor() {}\r\n}\r\n","import { JsonObject, JsonProperty } from \"typescript-json-serializer\";\r\n// *Geo.js Properties*\r\n@JsonObject()\r\nexport class MetadataConfiguration {\r\n\r\n /**\r\n * URL template to get metadata for layers\r\n */\r\n @JsonProperty()\r\n declare urlTemplate: string;\r\n\r\n /**\r\n * METAUID for each layer\r\n * Object dictionary with layer name as key and metauid as value\r\n * To overwrite layer metauid, use metauid as key and new metauid as value or an object with layer ID as key\r\n * and new metauid as value\r\n * {\r\n * \"MFNKSTAO_DS\": \"MFNKSTAO_COL\",\r\n * \"MFNKSTAO_DS\": {\"0\": \"MFNKSTAO_COL\"},\r\n * \"Bauinventar (BILU)\": \"BILUKDVX_COL\"\r\n * }\r\n */\r\n @JsonProperty()\r\n declare metauid: any;\r\n\r\n constructor() {}\r\n}\r\n","/*\r\n Module configuration file\r\n */\r\nimport { JsonObject, JsonProperty } from \"typescript-json-serializer\";\r\nimport {ObjectUtils} from \"../../utils/object-utils\";\r\n// *Geo.js Properties*\r\n@JsonObject()\r\nexport class ModuleConfiguration {\r\n // the type of the custom configuration class as string\r\n // the custom class has to be derived from ModuleConfiguration\r\n @JsonProperty()\r\n declare configType: string;\r\n\r\n @JsonProperty()\r\n declare appName: string;\r\n\r\n @JsonProperty()\r\n declare title: string;\r\n\r\n constructor() {}\r\n\r\n updateConfig(topicConfig: ModuleConfiguration): void {\r\n for (const key in topicConfig) {\r\n if(topicConfig[key as keyof ModuleConfiguration] == null){\r\n this[key] = topicConfig[key as keyof ModuleConfiguration];\r\n } else if(this.hasOwnProperty(key) && !Array.isArray(topicConfig[key as keyof ModuleConfiguration])){\r\n this[key as keyof ModuleConfiguration] = ObjectUtils.mergeDeep(\r\n this[key as keyof ModuleConfiguration], topicConfig[key as keyof ModuleConfiguration]);\r\n }else{\r\n this[key] = topicConfig[key as keyof ModuleConfiguration];\r\n }\r\n }\r\n }\r\n}\r\n","import { JsonObject, JsonProperty } from \"typescript-json-serializer\";\r\nimport {GraphicConfiguration} from \"./graphic-configuration\";\r\nimport {PointConfiguration} from \"./geometry-configuration\";\r\nimport {WidgetConfiguration} from \"./widget-configuration\";\r\nimport {\r\n ContentConfiguration,\r\n AttachmentsContentConfiguration,\r\n FieldsContentConfiguration,\r\n MediaContentConfiguration,\r\n TextContentConfiguration,\r\n CustomContentConfiguration, ExpressionContentConfiguration, RelationshipContentConfiguration\r\n} from \"./content-configuration\";\r\nimport {ActionButtonConfiguration, ActionSliderConfiguration, ActionToggleConfiguration} from \"./action-configuration\";\r\nimport {TextSymbolConfiguration, PictureMarkerSymbolConfiguration} from \"./symbol-configuration\";\r\nimport {FeatureLayerConfiguration} from \"./layer-configuration\";\r\nimport {FillSymbolConfiguration} from \"./symbol-configuration\";\r\nimport Collection from \"@arcgis/core/core/Collection\";\r\n\r\n\r\n// A predicate function use to determine what is the symbol type\r\nconst contentTypePredicate = (content: any) => {\r\n if (content.type === \"text\") {\r\n return TextContentConfiguration;\r\n }\r\n if (content.type === \"fields\") {\r\n return FieldsContentConfiguration;\r\n }\r\n if (content.type === \"media\") {\r\n return MediaContentConfiguration;\r\n }\r\n if (content.type === \"attachments\") {\r\n return AttachmentsContentConfiguration;\r\n }\r\n if (content.type === \"custom\") {\r\n return CustomContentConfiguration;\r\n }\r\n if (content.type === \"expression\") {\r\n return ExpressionContentConfiguration;\r\n }\r\n if (content.type === \"relationship\") {\r\n return RelationshipContentConfiguration;\r\n }\r\n\r\n return TextContentConfiguration;\r\n};\r\n\r\n// A predicate function use to determine what is the symbol type\r\nconst actionTypePredicate = (action: any) => {\r\n if (action.type === \"button\") {\r\n return ActionButtonConfiguration;\r\n }\r\n if (action.type === \"toggle\") {\r\n return ActionToggleConfiguration;\r\n }\r\n if (action.type === \"slider\") {\r\n return ActionSliderConfiguration;\r\n }\r\n return ActionButtonConfiguration;\r\n};\r\n\r\n@JsonObject()\r\nexport class PopupDockOptionsBreakpointConfiguration {\r\n /**\r\n * The maximum width of the [View](https://developers.arcgis.com/javascript/latest/api-reference/esri-views-View.html) at which the popup will be set to dockEnabled automatically.\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-widgets-Popup.html#dockOptions)\r\n */\r\n @JsonProperty()\r\n declare width?: number;\r\n /**\r\n * The maximum height of the [View](https://developers.arcgis.com/javascript/latest/api-reference/esri-views-View.html) at which the popup will be set to dockEnabled automatically.\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-widgets-Popup.html#dockOptions)\r\n */\r\n @JsonProperty()\r\n declare height?: number;\r\n\r\n constructor() {}\r\n}\r\n\r\n@JsonObject()\r\nexport class PopupDockOptionsConfiguration {\r\n /**\r\n * Defines the dimensions of the [View](https://developers.arcgis.com/javascript/latest/api-reference/esri-views-View.html) at which to dock the popup.\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-widgets-Popup.html#dockOptions)\r\n */\r\n @JsonProperty()\r\n declare breakpoint?: boolean | PopupDockOptionsBreakpointConfiguration;\r\n /**\r\n * If `true`, displays the dock button.\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-widgets-Popup.html#dockOptions)\r\n */\r\n @JsonProperty()\r\n declare buttonEnabled?: boolean;\r\n /**\r\n * The position in the view at which to dock the popup.\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-widgets-Popup.html#dockOptions)\r\n */\r\n @JsonProperty()\r\n declare position?: string | Function;\r\n\r\n constructor() {}\r\n}\r\n@JsonObject()\r\nexport class PopupVisibleElementsConfiguration {\r\n /**\r\n * **Since 4.29.** Indicates whether to display the action bar that holds the feature's [actions](https://developers.arcgis.com/javascript/latest/api-reference/esri-widgets-Popup.html#actions).\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-widgets-Popup.html#VisibleElements)\r\n */\r\n @JsonProperty()\r\n declare actionBar?: boolean;\r\n /**\r\n * Indicates whether to display a close button on the widget dialog.\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-widgets-Popup.html#VisibleElements)\r\n */\r\n @JsonProperty()\r\n declare closeButton?: boolean;\r\n /**\r\n * **Since 4.29.** Indicates whether to display the collapse button on the widget dialog.\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-widgets-Popup.html#VisibleElements)\r\n */\r\n @JsonProperty()\r\n declare collapseButton?: boolean;\r\n /**\r\n * Indicates whether pagination for feature navigation will be displayed.\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-widgets-Popup.html#VisibleElements)\r\n */\r\n @JsonProperty()\r\n declare featureNavigation: boolean;\r\n /**\r\n * **Since 4.30.** Indicates whether to display the group heading for a list of multiple features.\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-widgets-Popup.html#VisibleElements)\r\n */\r\n @JsonProperty()\r\n declare featureListLayerTitle?: boolean;\r\n /**\r\n * **Since 4.29.** Indicates whether to display the widget heading.\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-widgets-Popup.html#VisibleElements)\r\n */\r\n @JsonProperty()\r\n declare heading?: boolean;\r\n /**\r\n * **Since 4.29.** Indicates whether to display the widget's loading spinner.\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-widgets-Popup.html#VisibleElements)\r\n */\r\n @JsonProperty()\r\n declare spinner?: boolean;\r\n\r\n /**\r\n * *Geo.js Property*\r\n * Display coordinates at the bottom\r\n */\r\n @JsonProperty()\r\n coordinates = true;\r\n\r\n constructor() {}\r\n}\r\n@JsonObject()\r\nexport class LayerTemplate {\r\n // *Geo.js Properties*\r\n declare metauid?: string;\r\n declare layerIds?: number[];\r\n declare mode: \"append\" | \"prepend\" | \"replace\";\r\n declare template: PopupTemplateConfiguration | string;\r\n declare title?: string;\r\n /**\r\n * *Geo.js Property*\r\n * Show data exclusive for one feature.\r\n */\r\n @JsonProperty()\r\n declare exclusiveFeature?: boolean;\r\n}\r\n// *Geo.js Properties*\r\n@JsonObject()\r\nexport class PopupLayerGroupConfiguration {\r\n @JsonProperty()\r\n declare title?: string;\r\n @JsonProperty()\r\n declare metauid: string;\r\n @JsonProperty()\r\n declare layerIds?: number[];\r\n /**\r\n * Show data exclusive for one feature.\r\n */\r\n @JsonProperty()\r\n declare exclusiveFeature?: boolean;\r\n /**\r\n * Merge field name\r\n */\r\n @JsonProperty()\r\n declare mergeBy?: string;\r\n constructor() {\r\n }\r\n}\r\n@JsonObject()\r\nexport class PopupConfiguration extends WidgetConfiguration {\r\n /**\r\n * [Collection](https://developers.arcgis.com/javascript/latest/api-reference/esri-core-Collection.html) of [action](https://developers.arcgis.com/javascript/latest/api-reference/esri-support-actions-ActionButton.html) or [action toggle](https://developers.arcgis.com/javascript/latest/api-reference/esri-support-actions-ActionToggle.html) objects.\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-widgets-Popup.html#actions)\r\n */\r\n @JsonProperty({type: actionTypePredicate})\r\n declare actions?: Collection<\r\n (ActionButtonConfiguration & { type: \"button\" }) | (ActionToggleConfiguration & { type: \"toggle\" })\r\n >;\r\n\r\n /**\r\n * Position of the popup in relation to the selected feature.\r\n *\r\n * @default \"auto\"\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-widgets-Popup.html#alignment)\r\n */\r\n @JsonProperty()\r\n declare alignment: \"auto\" | \"top-center\" | \"top-right\" | \"bottom-left\" | \"bottom-center\" | \"bottom-right\" | Function;\r\n /**\r\n * This closes the popup when the [View](https://developers.arcgis.com/javascript/latest/api-reference/esri-views-View.html) camera or [Viewpoint](https://developers.arcgis.com/javascript/latest/api-reference/esri-Viewpoint.html) changes.\r\n *\r\n * @default false\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-widgets-Popup.html#autoCloseEnabled)\r\n */\r\n @JsonProperty()\r\n declare autoCloseEnabled: boolean;\r\n /**\r\n * Indicates whether to enable collapse functionality for the popup.\r\n *\r\n * @default true\r\n * @deprecated since 4.29. Use {@link module:esri/widgets/Popup~VisibleElements PopupVisibleElements.collapseButton} instead.\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-widgets-Popup.html#collapseEnabled)\r\n */\r\n @JsonProperty()\r\n declare collapseEnabled: boolean;\r\n /**\r\n * The content of the popup.\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-widgets-Popup.html#content)\r\n */\r\n @JsonProperty()\r\n declare content: string | HTMLElement | WidgetConfiguration;\r\n\r\n /**\r\n * Enables automatic creation of a popup template for layers that have popups enabled but no popupTemplate defined.\r\n *\r\n * @default false\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-widgets-Popup.html#defaultPopupTemplateEnabled)\r\n */\r\n @JsonProperty()\r\n declare defaultPopupTemplateEnabled: boolean;\r\n /**\r\n * Indicates whether the placement of the popup is docked to the side of the view.\r\n *\r\n * @default false\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-widgets-Popup.html#dockEnabled)\r\n */\r\n @JsonProperty()\r\n declare dockEnabled: boolean;\r\n /**\r\n * Docking the popup allows for a better user experience, particularly when opening popups in apps on mobile devices.\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-widgets-Popup.html#dockOptions)\r\n */\r\n @JsonProperty()\r\n declare dockOptions: PopupDockOptionsConfiguration;\r\n /**\r\n * An array of features associated with the popup.\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-widgets-Popup.html#features)\r\n */\r\n @JsonProperty()\r\n declare features: GraphicConfiguration[];\r\n /**\r\n * Indicates the heading level to use for the [title](https://developers.arcgis.com/javascript/latest/api-reference/esri-widgets-Popup.html#title) of the popup.\r\n *\r\n * @default 2\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-widgets-Popup.html#headingLevel)\r\n */\r\n @JsonProperty()\r\n declare headingLevel?: number;\r\n /**\r\n * Highlight the selected popup feature using the [highlightOptions](https://developers.arcgis.com/javascript/latest/api-reference/esri-views-MapView.html#highlightOptions) set on the [MapView](https://developers.arcgis.com/javascript/latest/api-reference/esri-views-MapView.html) or the [highlightOptions](https://developers.arcgis.com/javascript/latest/api-reference/esri-views-SceneView.html#highlightOptions) set on the [SceneView](https://developers.arcgis.com/javascript/latest/api-reference/esri-views-SceneView.html).\r\n *\r\n * @default true\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-widgets-Popup.html#highlightEnabled)\r\n */\r\n @JsonProperty()\r\n declare highlightEnabled: boolean;\r\n /**\r\n * Point used to position the popup.\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-widgets-Popup.html#location)\r\n */\r\n @JsonProperty()\r\n declare location: PointConfiguration;\r\n\r\n /**\r\n * Defines the maximum icons displayed at one time in the action area.\r\n *\r\n * @default 3\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-widgets-Popup.html#maxInlineActions)\r\n */\r\n @JsonProperty()\r\n declare maxInlineActions?: number | null;\r\n\r\n /**\r\n * An array of pending Promises that have not yet been fulfilled.\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-widgets-Popup.html#promises)\r\n */\r\n @JsonProperty()\r\n declare promises: Array<Promise<any>>;\r\n\r\n /**\r\n * Index of the feature that is [selected](https://developers.arcgis.com/javascript/latest/api-reference/esri-widgets-Popup.html#selectedFeature).\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-widgets-Popup.html#selectedFeatureIndex)\r\n */\r\n @JsonProperty()\r\n declare selectedFeatureIndex: number;\r\n /**\r\n * Indicates whether to display a spinner at the popup location prior to its display when it has pending promises.\r\n *\r\n * @deprecated since 4.29. Use {@link module:esri/widgets/Popup~VisibleElements PopupVisibleElements.spinner} instead.\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-widgets-Popup.html#spinnerEnabled)\r\n */\r\n @JsonProperty()\r\n declare spinnerEnabled: boolean;\r\n /**\r\n * The title of the popup.\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-widgets-Popup.html#title)\r\n */\r\n @JsonProperty()\r\n declare title: string;\r\n /**\r\n * A reference to the [MapView](https://developers.arcgis.com/javascript/latest/api-reference/esri-views-MapView.html) or [SceneView](https://developers.arcgis.com/javascript/latest/api-reference/esri-views-SceneView.html).\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-widgets-Popup.html#view)\r\n */\r\n // @JsonProperty()\r\n // declare view?: (MapViewConfiguration & { type: \"2d\" }) | (SceneViewConfiguration & { type: \"3d\" });\r\n /**\r\n * This is a class that contains all the logic (properties and methods) that controls this widget's behavior.\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-widgets-Popup.html#viewModel)\r\n */\r\n // @JsonProperty()\r\n // declare viewModel: PopupViewModelConfiguration;\r\n /**\r\n * The visible elements that are displayed within the widget.\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-widgets-Popup.html#visibleElements)\r\n */\r\n @JsonProperty()\r\n declare visibleElements: PopupVisibleElementsConfiguration;\r\n /**\r\n * *Geo.js Property*\r\n * Disable Popup.\r\n */\r\n @JsonProperty()\r\n declare disabled?: boolean;\r\n /**\r\n * *Geo.js Property*\r\n * Show data exclusive for one feature.\r\n */\r\n @JsonProperty()\r\n declare exclusiveFeature?: boolean;\r\n /**\r\n * *Geo.js Property*\r\n * Show data exclusive for one feature.\r\n */\r\n @JsonProperty()\r\n declare highlightSymbol?: FillSymbolConfiguration;\r\n /**\r\n * *Geo.js Properties*\r\n * Popup query feature layer\r\n * avls: AV Liegenschaften\r\n */\r\n @JsonProperty()\r\n declare layers?: HashMap<FeatureLayerConfiguration>;\r\n /**\r\n * *Geo.js Properties*\r\n * MapViewer specific template configuration per layer\r\n */\r\n @JsonProperty()\r\n declare layerGroups?: PopupLayerGroupConfiguration[];\r\n /**\r\n * *Geo.js Properties*\r\n * MapViewer specific template configuration per layer\r\n */\r\n @JsonProperty()\r\n declare layerTemplates?: LayerTemplate[];\r\n /**\r\n * *Geo.js Property*\r\n * Show data exclusive for one feature.\r\n */\r\n @JsonProperty()\r\n declare pointerSymbol: PictureMarkerSymbolConfiguration | TextSymbolConfiguration;\r\n\r\n constructor() {\r\n super();\r\n }\r\n}\r\n\r\n@JsonObject()\r\nexport class PopupExpressionInfoConfiguration {\r\n /**\r\n * An [Arcade](https://developers.arcgis.com/javascript/latest/arcade/) expression following the specification defined by the [Arcade Popup Profile](https://developers.arcgis.com/javascript/latest/arcade/#popup).\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-popup-ExpressionInfo.html#expression)\r\n */\r\n @JsonProperty()\r\n declare expression: string;\r\n /**\r\n * The name of the expression.\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-popup-ExpressionInfo.html#name)\r\n */\r\n @JsonProperty()\r\n declare name: string;\r\n /**\r\n * Indicates the return type of the Arcade expression.\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-popup-ExpressionInfo.html#returnType)\r\n */\r\n @JsonProperty()\r\n declare returnType?: \"string\" | \"number\";\r\n /**\r\n * The title used to describe the value returned by the expression in the popup.\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-popup-ExpressionInfo.html#title)\r\n */\r\n @JsonProperty()\r\n declare title: string;\r\n\r\n constructor() {}\r\n}\r\n\r\n@JsonObject()\r\nexport class PopupTemplateConfiguration {\r\n /**\r\n * A [Collection](https://developers.arcgis.com/javascript/latest/api-reference/esri-core-Collection.html) of [action](https://developers.arcgis.com/javascript/latest/api-reference/esri-support-actions-ActionButton.html) or [action toggle](https://developers.arcgis.com/javascript/latest/api-reference/esri-support-actions-ActionToggle.html) objects.\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-PopupTemplate.html#actions)\r\n */\r\n @JsonProperty({type: actionTypePredicate})\r\n declare actions?: Collection<\r\n (ActionButtonConfiguration & { type: \"button\" }) | (ActionToggleConfiguration & { type: \"toggle\" })\r\n >;\r\n /**\r\n * The template for defining and formatting a popup's content.\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-PopupTemplate.html#content)\r\n */\r\n @JsonProperty({ type: contentTypePredicate })\r\n declare content: ContentConfiguration[] | string | Function | Promise<any>;\r\n /**\r\n * An array of objects or [ExpressionInfo[]](https://developers.arcgis.com/javascript/latest/api-reference/esri-popup-ExpressionInfo.html) that reference [Arcade](https://developers.arcgis.com/javascript/latest/arcade/) expressions following the specification defined by the [Arcade Popup Profile](https://developers.arcgis.com/javascript/latest/arcade/#popup).\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-PopupTemplate.html#expressionInfos)\r\n */\r\n @JsonProperty()\r\n declare expressionInfos: PopupExpressionInfoConfiguration[];\r\n /**\r\n * An array of [FieldInfo](https://developers.arcgis.com/javascript/latest/api-reference/esri-popup-FieldInfo.html) that defines how fields in the dataset or values from [Arcade](https://developers.arcgis.com/javascript/latest/arcade/) expressions participate in a popup.\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-PopupTemplate.html#fieldInfos)\r\n */\r\n // @JsonProperty()\r\n // declare fieldInfos: FieldInfoConfiguration[];\r\n /**\r\n * Indicates whether or not editor tracking should display.\r\n *\r\n * @default true\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-PopupTemplate.html#lastEditInfoEnabled)\r\n */\r\n @JsonProperty()\r\n declare lastEditInfoEnabled: boolean;\r\n /**\r\n * Additional options that can be defined for the popup layer.\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-PopupTemplate.html#layerOptions)\r\n */\r\n // @JsonProperty()\r\n // declare layerOptions: LayerOptionsConfiguration;\r\n /**\r\n * An array of field names used in the PopupTemplate.\r\n *\r\n * @default null\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-PopupTemplate.html#outFields)\r\n */\r\n @JsonProperty()\r\n declare outFields: string[];\r\n /**\r\n * Indicates whether actions should replace existing [popup actions](https://developers.arcgis.com/javascript/latest/api-reference/esri-widgets-Popup.html#actions).\r\n *\r\n * @default false\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-PopupTemplate.html#overwriteActions)\r\n */\r\n @JsonProperty()\r\n declare overwriteActions: boolean;\r\n /**\r\n * Indicates whether to include the feature's geometry for use by the template.\r\n *\r\n * @default false\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-PopupTemplate.html#returnGeometry)\r\n */\r\n @JsonProperty()\r\n declare returnGeometry?: boolean;\r\n /**\r\n * The template for defining how to format the title used in a popup.\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-PopupTemplate.html#title)\r\n */\r\n @JsonProperty()\r\n declare title: string | Function | Promise<any>;\r\n\r\n constructor() {}\r\n}\r\n","import { JsonObject, JsonProperty } from \"typescript-json-serializer\";\r\nimport {ExtentConfiguration} from \"./geometry-configuration\";\r\nimport {BasemapConfiguration} from \"./map-configuration\";\r\n\r\n@JsonObject()\r\nexport class PortalConfiguration {\r\n /**\r\n * The access level of the organization.\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-portal-Portal.html#access)\r\n */\r\n @JsonProperty()\r\n declare access: \"public\" | \"private\";\r\n\r\n /**\r\n * When `true`, access to the organization's Portal resources must occur over SSL.\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-portal-Portal.html#allSSL)\r\n */\r\n @JsonProperty()\r\n declare allSSL: boolean;\r\n\r\n /**\r\n * The authentication mode for handling authentication when the user attempts to access a secure resource.\r\n *\r\n * @default \"auto\"\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-portal-Portal.html#authMode)\r\n */\r\n @JsonProperty()\r\n declare authMode?: \"anonymous\" | \"auto\" | \"immediate\" | \"no-prompt\";\r\n\r\n /**\r\n * Array of trusted servers to send credentials to when making Cross-Origin Resource Sharing (CORS) requests to\r\n * access services secured with web-tier authentication.\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-portal-Portal.html#authorizedCrossOriginDomains)\r\n */\r\n @JsonProperty()\r\n declare authorizedCrossOriginDomains: string[];\r\n\r\n /**\r\n * The query that defines the basemaps that should be displayed in the\r\n * [BasemapGallery](https://developers.arcgis.com/javascript/latest/api-reference/esri-widgets-BasemapGallery.html)\r\n * when [useVectorBasemaps]\r\n * (https://developers.arcgis.com/javascript/latest/api-reference/esri-portal-Portal.html#useVectorBasemaps)\r\n * is not true.\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-portal-Portal.html#basemapGalleryGroupQuery)\r\n */\r\n @JsonProperty()\r\n declare basemapGalleryGroupQuery: string;\r\n\r\n /**\r\n * The query that defines the 3D basemaps that should be displayed in the [BasemapGallery](https://developers.arcgis.com/javascript/latest/api-reference/esri-widgets-BasemapGallery.html).\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-portal-Portal.html#basemapGalleryGroupQuery3D)\r\n */\r\n @JsonProperty()\r\n declare basemapGalleryGroupQuery3D?: string;\r\n\r\n /**\r\n * The Bing key to use for web maps using Bing Maps.\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-portal-Portal.html#bingKey)\r\n */\r\n @JsonProperty()\r\n declare bingKey: string;\r\n\r\n /**\r\n * Indicates whether an organization can list applications in the marketplace.\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-portal-Portal.html#canListApps)\r\n */\r\n @JsonProperty()\r\n declare canListApps: boolean;\r\n\r\n /**\r\n * Indicates whether an organization can list data services in the marketplace.\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-portal-Portal.html#canListData)\r\n */\r\n @JsonProperty()\r\n declare canListData: boolean;\r\n\r\n /**\r\n * Indicates whether an organization can list pre-provisioned items in the marketplace.\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-portal-Portal.html#canListPreProvisionedItems)\r\n */\r\n @JsonProperty()\r\n declare canListPreProvisionedItems: boolean;\r\n\r\n /**\r\n * Indicates whether an organization can provision direct purchases in the marketplace without customer request.\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-portal-Portal.html#canProvisionDirectPurchase)\r\n */\r\n @JsonProperty()\r\n declare canProvisionDirectPurchase: boolean;\r\n\r\n /**\r\n * When `true`, the organization's public items, groups and users are included in search queries.\r\n *\r\n * @default true\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-portal-Portal.html#canSearchPublic)\r\n */\r\n @JsonProperty()\r\n declare canSearchPublic: boolean;\r\n\r\n /**\r\n * The Bing key can be shared to the public and is returned as part of a portal's description call (`/sharing/rest/portals/<orgid>`).\r\n *\r\n * @default false\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-portal-Portal.html#canShareBingPublic)\r\n */\r\n @JsonProperty()\r\n declare canShareBingPublic: boolean;\r\n\r\n /**\r\n * When `true`, members of the organization can share resources outside the organization.\r\n *\r\n * @default false\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-portal-Portal.html#canSharePublic)\r\n */\r\n @JsonProperty()\r\n declare canSharePublic: boolean;\r\n\r\n /**\r\n * Indicates whether to allow an organization with an enterprise IDP configured to be able to turn on or off the ArcGIS sign in.\r\n *\r\n * @default false\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-portal-Portal.html#canSignInArcGIS)\r\n */\r\n @JsonProperty()\r\n declare canSignInArcGIS: boolean;\r\n\r\n /**\r\n * Indicates whether to allow an organization with an enterprise IDP configured to be able to turn on or off the enterprise sign in.\r\n *\r\n * @default false\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-portal-Portal.html#canSignInIDP)\r\n */\r\n @JsonProperty()\r\n declare canSignInIDP: boolean;\r\n\r\n /**\r\n * The query that identifies the group containing the color sets used for rendering in the map viewer.\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-portal-Portal.html#colorSetsGroupQuery)\r\n */\r\n @JsonProperty()\r\n declare colorSetsGroupQuery: string;\r\n\r\n /**\r\n * Indicates whether to allow the organization to disable commenting.\r\n *\r\n * @default false\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-portal-Portal.html#commentsEnabled)\r\n */\r\n @JsonProperty()\r\n declare commentsEnabled: boolean;\r\n\r\n /**\r\n * Date the organization was created.\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-portal-Portal.html#created)\r\n */\r\n @JsonProperty()\r\n declare created: Date;\r\n\r\n /**\r\n * The default locale (language and country) information.\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-portal-Portal.html#culture)\r\n */\r\n @JsonProperty()\r\n declare culture: string;\r\n\r\n /**\r\n * The custom base URL for the portal.\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-portal-Portal.html#customBaseUrl)\r\n */\r\n @JsonProperty()\r\n declare customBaseUrl: string;\r\n\r\n /**\r\n * The query that defines the default 3d basemap to use in scene views for the portal.\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-portal-Portal.html#default3DBasemapQuery)\r\n */\r\n @JsonProperty()\r\n declare default3DBasemapQuery?: string;\r\n\r\n /**\r\n * The default basemap to use for the portal.\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-portal-Portal.html#defaultBasemap)\r\n */\r\n @JsonProperty()\r\n declare defaultBasemap: BasemapConfiguration;\r\n /**\r\n * The default developer basemap to use for the portal when an [apiKey](https://developers.arcgis.com/javascript/latest/api-reference/esri-config.html#apiKey) is defined.\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-portal-Portal.html#defaultDevBasemap)\r\n */\r\n @JsonProperty()\r\n declare defaultDevBasemap?: BasemapConfiguration;\r\n\r\n /**\r\n * The default extent to use for the portal.\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-portal-Portal.html#defaultExtent)\r\n */\r\n @JsonProperty()\r\n declare defaultExtent: ExtentConfiguration;\r\n\r\n /**\r\n * The default vector basemap to use for the portal.\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-portal-Portal.html#defaultVectorBasemap)\r\n */\r\n @JsonProperty()\r\n declare defaultVectorBasemap: BasemapConfiguration;\r\n\r\n /**\r\n * A description of the organization/portal.\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-portal-Portal.html#description)\r\n */\r\n @JsonProperty()\r\n declare description: string;\r\n\r\n /**\r\n * The query that defines the basemaps that should be displayed in the [BasemapGallery](https://developers.arcgis.com/javascript/latest/api-reference/esri-widgets-BasemapGallery.html) when an [apiKey](https://developers.arcgis.com/javascript/latest/api-reference/esri-config.html#apiKey) is defined.\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-portal-Portal.html#devBasemapGalleryGroupQuery)\r\n */\r\n @JsonProperty()\r\n declare devBasemapGalleryGroupQuery?: string;\r\n\r\n /**\r\n * Boolean value indicating whether to opt-in to the [Esri User Experience Improvement (EUEI) program](https://doc.arcgis.com/en/arcgis-online/reference/faq.htm#ESRI_QUESTIONANSWER_AED97F28DCD84F7682623C2FA9E5CE49).\r\n *\r\n * @default null\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-portal-Portal.html#eueiEnabled)\r\n */\r\n @JsonProperty()\r\n declare eueiEnabled: boolean;\r\n\r\n /**\r\n * The featured groups for the portal.\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-portal-Portal.html#featuredGroups)\r\n */\r\n // @JsonProperty()\r\n // declare featuredGroups: PortalFeaturedGroups[];\r\n\r\n /**\r\n * The query that defines the featured group.\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-portal-Portal.html#featuredItemsGroupQuery)\r\n */\r\n @JsonProperty()\r\n declare featuredItemsGroupQuery: string;\r\n\r\n /**\r\n * The query that identifies the group containing features items for the gallery.\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-portal-Portal.html#galleryTemplatesGroupQuery)\r\n */\r\n @JsonProperty()\r\n declare galleryTemplatesGroupQuery: string;\r\n\r\n /**\r\n * Indicates whether the organization has content categories.\r\n *\r\n * @default false\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-portal-Portal.html#hasCategorySchema)\r\n */\r\n @JsonProperty()\r\n declare hasCategorySchema: boolean;\r\n\r\n /**\r\n * Indicates whether the organization has classification schema.\r\n *\r\n * @default false\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-portal-Portal.html#hasClassificationSchema)\r\n */\r\n @JsonProperty()\r\n declare hasClassificationSchema?: boolean;\r\n\r\n /**\r\n * This class contains properties to obtain information for various web services available on the portal.\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-portal-Portal.html#helperServices)\r\n */\r\n @JsonProperty()\r\n declare helperServices: any;\r\n\r\n /**\r\n * The group that contains featured content to be displayed on the home page.\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-portal-Portal.html#homePageFeaturedContent)\r\n */\r\n @JsonProperty()\r\n declare homePageFeaturedContent: string;\r\n\r\n /**\r\n * The number of featured items that can be displayed on the home page.\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-portal-Portal.html#homePageFeaturedContentCount)\r\n */\r\n @JsonProperty()\r\n declare homePageFeaturedContentCount: number;\r\n\r\n /**\r\n * The port used by the portal for HTTP communication.\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-portal-Portal.html#httpPort)\r\n */\r\n @JsonProperty()\r\n declare httpPort: number;\r\n\r\n /**\r\n * The port used by the portal for HTTPS communication.\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-portal-Portal.html#httpsPort)\r\n */\r\n @JsonProperty()\r\n declare httpsPort: number;\r\n\r\n /**\r\n * The id of the organization that owns this portal.\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-portal-Portal.html#id)\r\n */\r\n @JsonProperty()\r\n declare id: string;\r\n\r\n /**\r\n * The country code of the calling IP (ArcGIS Online only).\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-portal-Portal.html#ipCntryCode)\r\n */\r\n @JsonProperty()\r\n declare ipCntryCode: string;\r\n\r\n /**\r\n * Indicates whether the portal is an organization.\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-portal-Portal.html#isOrganization)\r\n */\r\n @JsonProperty()\r\n declare isOrganization: boolean;\r\n\r\n /**\r\n * Indicates if the portal is on-premises.\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-portal-Portal.html#isPortal)\r\n */\r\n @JsonProperty()\r\n declare isPortal: boolean;\r\n\r\n /**\r\n * Indicates if the portal is in read-only mode.\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-portal-Portal.html#isReadOnly)\r\n */\r\n @JsonProperty()\r\n declare isReadOnly: boolean;\r\n\r\n /**\r\n * The query that identifies the group containing editing templates.\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-portal-Portal.html#layerTemplatesGroupQuery)\r\n */\r\n @JsonProperty()\r\n declare layerTemplatesGroupQuery: string;\r\n\r\n /**\r\n * Indicates whether the portal's resources have loaded.\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-portal-Portal.html#loaded)\r\n */\r\n @JsonProperty()\r\n declare readonly loaded: boolean;\r\n\r\n /**\r\n * The maximum validity in minutes of tokens issued for users of the organization.\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-portal-Portal.html#maxTokenExpirationMinutes)\r\n */\r\n @JsonProperty()\r\n declare maxTokenExpirationMinutes: number;\r\n\r\n /**\r\n * Date the organization was last modified.\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-portal-Portal.html#modified)\r\n */\r\n @JsonProperty()\r\n declare modified: Date;\r\n\r\n /**\r\n * Name of the organization.\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-portal-Portal.html#name)\r\n */\r\n @JsonProperty()\r\n declare name: string;\r\n\r\n /**\r\n * URL of the portal host.\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-portal-Portal.html#portalHostname)\r\n */\r\n @JsonProperty()\r\n declare portalHostname: string;\r\n\r\n /**\r\n * The portal mode.\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-portal-Portal.html#portalMode)\r\n */\r\n @JsonProperty()\r\n declare portalMode: \"multitenant\" | \"singletenant\";\r\n\r\n /**\r\n * Properties specific to the organization, for example the \"contact us\" link.\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-portal-Portal.html#portalProperties)\r\n */\r\n @JsonProperty()\r\n declare portalProperties: any;\r\n\r\n /**\r\n * Indicates whether the recycle bin is enabled for the organization.\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-portal-Portal.html#recycleBinEnabled)\r\n */\r\n @JsonProperty()\r\n declare recycleBinEnabled?: boolean;\r\n\r\n /**\r\n * The region for the organization.\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-portal-Portal.html#region)\r\n */\r\n @JsonProperty()\r\n declare region: string;\r\n\r\n /**\r\n * The REST URL for the portal, for example \"https://www.arcgis.com/sharing/rest\" for ArcGIS Online and \"https://www.example.com/arcgis/sharing/rest\" for your in-house portal.\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-portal-Portal.html#restUrl)\r\n */\r\n @JsonProperty()\r\n declare readonly restUrl: string;\r\n\r\n /**\r\n * Custom HTML for the home page.\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-portal-Portal.html#rotatorPanels)\r\n */\r\n @JsonProperty()\r\n declare rotatorPanels: any[];\r\n\r\n /**\r\n * Indicates whether the description of your organization displays on the home page.\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-portal-Portal.html#showHomePageDescription)\r\n */\r\n @JsonProperty()\r\n declare showHomePageDescription: boolean;\r\n\r\n /**\r\n * The JSON used to create the property values when the `Portal` is loaded.\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-portal-Portal.html#sourceJSON)\r\n */\r\n @JsonProperty()\r\n declare sourceJSON: any;\r\n\r\n /**\r\n * Indicates whether hosted services are supported.\r\n *\r\n * @default false\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-portal-Portal.html#supportsHostedServices)\r\n */\r\n @JsonProperty()\r\n declare supportsHostedServices: boolean;\r\n\r\n /**\r\n * The query that defines the symbols sets.\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-portal-Portal.html#symbolSetsGroupQuery)\r\n */\r\n @JsonProperty()\r\n declare symbolSetsGroupQuery: string;\r\n\r\n /**\r\n * The query that defines the collection of templates that will appear in the template gallery.\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-portal-Portal.html#templatesGroupQuery)\r\n */\r\n @JsonProperty()\r\n declare templatesGroupQuery: string;\r\n\r\n /**\r\n * The URL to the thumbnail of the organization.\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-portal-Portal.html#thumbnailUrl)\r\n */\r\n @JsonProperty()\r\n declare readonly thumbnailUrl: string;\r\n\r\n /**\r\n * Sets the units of measure for the organization's users.\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-portal-Portal.html#units)\r\n */\r\n @JsonProperty()\r\n declare units: \"english\" | \"metric\";\r\n\r\n /**\r\n * The URL to the portal instance.\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-portal-Portal.html#url)\r\n */\r\n @JsonProperty()\r\n declare url: string;\r\n\r\n /**\r\n * The prefix selected by the organization's administrator to be used with the customBaseURL.\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-portal-Portal.html#urlKey)\r\n */\r\n @JsonProperty()\r\n declare urlKey: string;\r\n\r\n /**\r\n * When `false`, 3D basemaps are hidden from the [BasemapGallery](https://developers.arcgis.com/javascript/latest/api-reference/esri-widgets-BasemapGallery.html), regardless of the type of the view.\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-portal-Portal.html#use3dBasemaps)\r\n */\r\n @JsonProperty()\r\n declare use3dBasemaps?: boolean;\r\n\r\n /**\r\n * When `false`, The default 3d basemap is not used in the SceneViewer.\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-portal-Portal.html#useDefault3dBasemap)\r\n */\r\n @JsonProperty()\r\n declare useDefault3dBasemap?: boolean;\r\n\r\n /**\r\n * Information representing a registered user of the portal.\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-portal-Portal.html#user)\r\n */\r\n // @JsonProperty()\r\n // declare user: PortalUser;\r\n\r\n /**\r\n * When `true`, only simple where clauses that are compliant with SQL92 can be used when querying layers and tables.\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-portal-Portal.html#useStandardizedQuery)\r\n */\r\n @JsonProperty()\r\n declare useStandardizedQuery: boolean;\r\n\r\n /**\r\n * When `true`, the organization has opted in to use the vector tile basemaps, and (a) [vectorBasemapGalleryGroupQuery](https://developers.arcgis.com/javascript/latest/api-reference/esri-portal-Portal.html#vectorBasemapGalleryGroupQuery) should be used instead of [basemapGalleryGroupQuery](https://developers.arcgis.com/javascript/latest/api-reference/esri-portal-Portal.html#basemapGalleryGroupQuery), while (b) [defaultVectorBasemap](https://developers.arcgis.com/javascript/latest/api-reference/esri-portal-Portal.html#defaultVectorBasemap) should be used instead of [defaultBasemap](https://developers.arcgis.com/javascript/latest/api-reference/esri-portal-Portal.html#defaultBasemap).\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-portal-Portal.html#useVectorBasemaps)\r\n */\r\n @JsonProperty()\r\n declare useVectorBasemaps: boolean;\r\n\r\n /**\r\n * The query that defines the vector tiles basemaps that should be displayed in the [BasemapGallery](https://developers.arcgis.com/javascript/latest/api-reference/esri-widgets-BasemapGallery.html) when [useVectorBasemaps](https://developers.arcgis.com/javascript/latest/api-reference/esri-portal-Portal.html#useVectorBasemaps) is true.\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-portal-Portal.html#vectorBasemapGalleryGroupQuery)\r\n */\r\n @JsonProperty()\r\n declare vectorBasemapGalleryGroupQuery: string;\r\n\r\n constructor() {}\r\n}\r\n","import { JsonObject, JsonProperty } from \"typescript-json-serializer\";\r\nimport { ExtentConfiguration } from \"./geometry-configuration\";\r\nimport {PortalConfiguration} from \"./portal-configuration\";\r\n\r\n@JsonObject()\r\nexport class PortalItemConfiguration {\r\n /**\r\n * Indicates the level of access to this item: `private`, `shared`, `org`, or `public`.\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-portal-PortalItem.html#access)\r\n */\r\n @JsonProperty()\r\n access: \"private\" | \"shared\" | \"org\" | \"public\";\r\n\r\n /**\r\n * Information on the source of the item and its copyright status.\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-portal-PortalItem.html#accessInformation)\r\n */\r\n @JsonProperty()\r\n declare accessInformation: string;\r\n\r\n /**\r\n * An authorization string used to access the portal item.\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-portal-PortalItem.html#apiKey)\r\n */\r\n @JsonProperty()\r\n declare apiKey?: string;\r\n\r\n /**\r\n * Contains an array of objects containing proxy information for premium platform services.\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-portal-PortalItem.html#applicationProxies)\r\n */\r\n // @JsonProperty()\r\n // declare readonly applicationProxies: PortalItemApplicationProxies[];\r\n\r\n /**\r\n * Average rating.\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-portal-PortalItem.html#avgRating)\r\n */\r\n @JsonProperty()\r\n declare avgRating: number;\r\n\r\n /**\r\n * An array of organization categories that are set on the item.\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-portal-PortalItem.html#categories)\r\n */\r\n @JsonProperty()\r\n declare categories: string[];\r\n\r\n /**\r\n * The classification information for the item.\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-portal-PortalItem.html#classification)\r\n */\r\n @JsonProperty()\r\n declare classification?: HashMap<any>;\r\n\r\n /**\r\n * The date the item was created.\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-portal-PortalItem.html#created)\r\n */\r\n @JsonProperty()\r\n declare created: Date;\r\n\r\n /**\r\n * The item's locale information (language and country).\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-portal-PortalItem.html#culture)\r\n */\r\n @JsonProperty()\r\n declare culture: string;\r\n\r\n /**\r\n * The detailed description of the item.\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-portal-PortalItem.html#description)\r\n */\r\n @JsonProperty()\r\n declare description: string;\r\n\r\n /**\r\n * The geographic extent, or bounding rectangle, of the item.\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-portal-PortalItem.html#extent)\r\n */\r\n @JsonProperty()\r\n declare extent: ExtentConfiguration;\r\n\r\n /**\r\n * An array of group categories set on the item.\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-portal-PortalItem.html#groupCategories)\r\n */\r\n @JsonProperty()\r\n declare groupCategories: string[];\r\n\r\n /**\r\n * The unique id for the item.\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-portal-PortalItem.html#id)\r\n */\r\n @JsonProperty()\r\n declare id: string;\r\n\r\n /**\r\n * Indicates whether a layer can be created from this item using [Layer.fromPortalItem()](esri-layers-Layer.html#fromPortalItem).\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-portal-PortalItem.html#isLayer)\r\n */\r\n @JsonProperty()\r\n declare readonly isLayer: boolean;\r\n\r\n /**\r\n * Indicates whether an item can be updated and deleted.\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-portal-PortalItem.html#itemControl)\r\n */\r\n @JsonProperty()\r\n declare readonly itemControl: \"admin\" | \"update\" | \"null\";\r\n\r\n /**\r\n * The URL to the item.\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-portal-PortalItem.html#itemUrl)\r\n */\r\n @JsonProperty()\r\n declare readonly itemUrl: string;\r\n\r\n /**\r\n * Information on license or restrictions related to the item.\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-portal-PortalItem.html#licenseInfo)\r\n */\r\n @JsonProperty()\r\n declare licenseInfo: string;\r\n\r\n /**\r\n * Indicates whether the item's resources have loaded from the portal.\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-portal-PortalItem.html#loaded)\r\n */\r\n @JsonProperty()\r\n declare readonly loaded: boolean;\r\n\r\n /**\r\n * The date the item was last modified.\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-portal-PortalItem.html#modified)\r\n */\r\n @JsonProperty()\r\n declare modified: Date;\r\n\r\n /**\r\n * The name of the item.\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-portal-PortalItem.html#name)\r\n */\r\n @JsonProperty()\r\n declare name: string;\r\n\r\n /**\r\n * Number of comments on the item.\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-portal-PortalItem.html#numComments)\r\n */\r\n @JsonProperty()\r\n declare numComments: number;\r\n\r\n /**\r\n * Number of ratings on the item.\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-portal-PortalItem.html#numRatings)\r\n */\r\n @JsonProperty()\r\n declare numRatings: number;\r\n\r\n /**\r\n * Number of views on the item.\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-portal-PortalItem.html#numViews)\r\n */\r\n @JsonProperty()\r\n declare numViews: number;\r\n\r\n /**\r\n * The username of the user who owns this item.\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-portal-PortalItem.html#owner)\r\n */\r\n @JsonProperty()\r\n declare owner: string;\r\n\r\n /**\r\n * The ID of the folder in which the owner has stored the item.\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-portal-PortalItem.html#ownerFolder)\r\n */\r\n @JsonProperty()\r\n declare ownerFolder: string;\r\n\r\n /**\r\n * The portal that contains the item.\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-portal-PortalItem.html#portal)\r\n */\r\n @JsonProperty()\r\n declare portal: PortalConfiguration;\r\n\r\n /**\r\n * An array of string URLs.\r\n *\r\n * @default null\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-portal-PortalItem.html#screenshots)\r\n */\r\n @JsonProperty()\r\n declare screenshots: string[];\r\n\r\n /**\r\n * The size of the item (in bytes).\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-portal-PortalItem.html#size)\r\n */\r\n @JsonProperty()\r\n declare size: number;\r\n\r\n /**\r\n * A summary description of the item.\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-portal-PortalItem.html#snippet)\r\n */\r\n @JsonProperty()\r\n declare snippet: string;\r\n\r\n /**\r\n * The JSON used to create the property values when the `PortalItem` is loaded.\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-portal-PortalItem.html#sourceJSON)\r\n */\r\n @JsonProperty()\r\n declare sourceJSON: any;\r\n\r\n /**\r\n * User defined tags that describe the item.\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-portal-PortalItem.html#tags)\r\n */\r\n @JsonProperty()\r\n declare tags: string[];\r\n\r\n /**\r\n * The URL to the thumbnail used for the item.\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-portal-PortalItem.html#thumbnailUrl)\r\n */\r\n declare readonly thumbnailUrl: string;\r\n\r\n /**\r\n * The title for the item.\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-portal-PortalItem.html#title)\r\n */\r\n @JsonProperty()\r\n declare title: string;\r\n\r\n /**\r\n * The GIS content type of this item.\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-portal-PortalItem.html#type)\r\n */\r\n @JsonProperty()\r\n declare type: string;\r\n\r\n /**\r\n * Type keywords that describe the type of content of this item.\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-portal-PortalItem.html#typeKeywords)\r\n */\r\n @JsonProperty()\r\n declare typeKeywords: string[];\r\n\r\n /**\r\n * The service URL of this item.\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-portal-PortalItem.html#url)\r\n */\r\n @JsonProperty()\r\n declare url: string;\r\n\r\n constructor() {}\r\n}\r\n","import { JsonObject, JsonProperty } from \"typescript-json-serializer\";\r\nimport { PortalConfiguration } from \"./portal-configuration\";\r\nimport {WidgetConfiguration} from \"./widget-configuration\";\r\nimport {PortalItemConfiguration} from \"./portal-item-configuration\";\r\n\r\n@JsonObject()\r\nexport class TemplateOptionsConfiguration {\r\n /**\r\n * When `false`, the attribution is not displayed on the printout.\r\n *\r\n * @default true\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-widgets-Print-TemplateOptions.html#attributionEnabled)\r\n */\r\n @JsonProperty()\r\n declare attributionEnabled?: boolean;\r\n /**\r\n * The text used for the author if the specified layout contains an author text element.\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-widgets-Print-TemplateOptions.html#author)\r\n */\r\n @JsonProperty()\r\n declare author?: string;\r\n /**\r\n * The text used for the copyright if the specified layout contains an copyright text element.\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-widgets-Print-TemplateOptions.html#copyright)\r\n */\r\n @JsonProperty()\r\n declare copyright?: string;\r\n /**\r\n * Use this prop to display text fields for custom text elements from the print service.\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-widgets-Print-TemplateOptions.html#customTextElements)\r\n */\r\n @JsonProperty()\r\n declare customTextElements?: any[];\r\n /**\r\n * Resolution in dots per inch.\r\n *\r\n * @default 96\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-widgets-Print-TemplateOptions.html#dpi)\r\n */\r\n @JsonProperty()\r\n declare dpi?: string;\r\n /**\r\n * This property only applies when the [layout](https://developers.arcgis.com/javascript/latest/api-reference/esri-widgets-Print-TemplateOptions.html#layout) value is `map-only`.\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-widgets-Print-TemplateOptions.html#fileName)\r\n */\r\n @JsonProperty()\r\n declare fileName?: string;\r\n /**\r\n * When true, the feature's attributes are included in feature collection layers even when they are not needed for rendering.\r\n *\r\n * @default false\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-widgets-Print-TemplateOptions.html#forceFeatureAttributes)\r\n */\r\n @JsonProperty()\r\n declare forceFeatureAttributes?: boolean;\r\n /**\r\n * The output format for the printed map.\r\n *\r\n * @default \"pdf\"\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-widgets-Print-TemplateOptions.html#format)\r\n */\r\n @JsonProperty()\r\n declare format?: \"pdf\" | \"png32\" | \"png8\" | \"jpg\" | \"gif\" | \"eps\" | \"svg\" | \"svgz\";\r\n /**\r\n * Map height.\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-widgets-Print-TemplateOptions.html#height)\r\n */\r\n @JsonProperty()\r\n declare height?: number;\r\n /**\r\n * When `true`, tables will be included in the printout request.\r\n *\r\n * @default true\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-widgets-Print-TemplateOptions.html#includeTables)\r\n */\r\n @JsonProperty()\r\n declare includeTables?: boolean;\r\n /**\r\n * The layout used for the print output.\r\n *\r\n * @default \"letter-ansi-a-landscape\"\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-widgets-Print-TemplateOptions.html#layout)\r\n */\r\n @JsonProperty()\r\n declare layout?: | \"map-only\"\r\n | \"a3-landscape\"\r\n | \"a3-portrait\"\r\n | \"a4-landscape\"\r\n | \"a4-portrait\"\r\n | \"letter-ansi-a-landscape\"\r\n | \"letter-ansi-a-portrait\"\r\n | \"tabloid-ansi-b-landscape\"\r\n | \"tabloid-ansi-b-portrait\";\r\n /**\r\n * A custom layout hosted as a [portal item](https://developers.arcgis.com/javascript/latest/api-reference/esri-portal-PortalItem.html).\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-widgets-Print-TemplateOptions.html#layoutItem)\r\n */\r\n @JsonProperty()\r\n declare layoutItem?: PortalItemConfiguration;\r\n /**\r\n * When `false`, the legend is not displayed on the printout.\r\n *\r\n * @default true\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-widgets-Print-TemplateOptions.html#legendEnabled)\r\n */\r\n @JsonProperty()\r\n declare legendEnabled?: boolean;\r\n /**\r\n * When `true`, the north arrow will be included on the printout.\r\n *\r\n * @default false\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-widgets-Print-TemplateOptions.html#northArrowEnabled)\r\n */\r\n @JsonProperty()\r\n declare northArrowEnabled?: boolean;\r\n /**\r\n * The map scale of the printed map.\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-widgets-Print-TemplateOptions.html#scale)\r\n */\r\n @JsonProperty()\r\n declare scale?: number;\r\n /**\r\n * Define whether the printed map should preserve map scale or map extent.\r\n *\r\n * @default false\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-widgets-Print-TemplateOptions.html#scaleEnabled)\r\n */\r\n @JsonProperty()\r\n declare scaleEnabled?: boolean;\r\n /**\r\n * The text used for the map title if the specified layout contains a title text element.\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-widgets-Print-TemplateOptions.html#title)\r\n */\r\n @JsonProperty()\r\n declare title?: string;\r\n /**\r\n * Map width.\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-widgets-Print-TemplateOptions.html#width)\r\n */\r\n @JsonProperty()\r\n declare width?: number;\r\n}\r\n\r\n@JsonObject()\r\nexport class PrintConfiguration extends WidgetConfiguration {\r\n /**\r\n * Specify the print output file format(s) that the user can select based on the options available from the print service.\r\n *\r\n * @default \"all\"\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-widgets-Print.html#allowedFormats)\r\n */\r\n @JsonProperty()\r\n declare allowedFormats?: string | string[];\r\n /**\r\n * Specify the print output layout(s) that the user can select based on the options available from the print service.\r\n *\r\n * @default \"all\"\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-widgets-Print.html#allowedLayouts)\r\n */\r\n @JsonProperty()\r\n declare allowedLayouts?: string | string[];\r\n /**\r\n * The collection of links exported from the Print widget.\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-widgets-Print.html#exportedLinks)\r\n */\r\n // @JsonProperty()\r\n // declare exportedLinks?: CollectionProperties<FileLink>;\r\n /**\r\n * This option allows passing extra parameters (in addition to [templateOptions](https://developers.arcgis.com/javascript/latest/api-reference/esri-widgets-Print.html#templateOptions)) to the print (export webmap) requests.\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-widgets-Print.html#extraParameters)\r\n */\r\n @JsonProperty()\r\n declare extraParameters?: any;\r\n /**\r\n * Indicates the heading level to use for the \"Exported files\" text where users can access the exported map printout.\r\n *\r\n * @default 3\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-widgets-Print.html#headingLevel)\r\n */\r\n @JsonProperty()\r\n declare headingLevel?: number;\r\n /**\r\n * Indicates whether or not to include [defaultTemplates](https://developers.arcgis.com/javascript/latest/api-reference/esri-widgets-Print-PrintViewModel.html#defaultTemplates).\r\n *\r\n * @default true\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-widgets-Print.html#includeDefaultTemplates)\r\n */\r\n @JsonProperty()\r\n declare includeDefaultTemplates?: boolean;\r\n /**\r\n * It is possible to search a specified portal instance's [locator services](https://enterprise.arcgis.com/en/portal/latest/administer/windows/configure-portal-to-geocode-addresses.htm).\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-widgets-Print.html#portal)\r\n */\r\n @JsonProperty()\r\n declare portal?: PortalConfiguration;\r\n /**\r\n * The URL of the REST endpoint of the Export Web Map Task.\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-widgets-Print.html#printServiceUrl)\r\n */\r\n @JsonProperty()\r\n declare printServiceUrl?: string;\r\n /**\r\n * The initial state of the print area toggle in the Print widget UI.\r\n *\r\n * @default false\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-widgets-Print.html#showPrintAreaEnabled)\r\n */\r\n @JsonProperty()\r\n declare showPrintAreaEnabled?: boolean;\r\n /**\r\n * An object containing an array of `customTextElements` name-value pair objects for each print template in a custom print service.\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-widgets-Print.html#templateCustomTextElements)\r\n */\r\n @JsonProperty()\r\n declare templateCustomTextElements?: any;\r\n /**\r\n * Defines the layout template options used by the [Print](https://developers.arcgis.com/javascript/latest/api-reference/esri-widgets-Print.html) widget to generate the print page.\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-widgets-Print.html#templateOptions)\r\n */\r\n @JsonProperty()\r\n declare templateOptions?: TemplateOptionsConfiguration;\r\n /**\r\n * A reference to the [MapView](https://developers.arcgis.com/javascript/latest/api-reference/esri-views-MapView.html).\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-widgets-Print.html#view)\r\n */\r\n // @JsonProperty()\r\n // declare view?: MapViewProperties;\r\n /**\r\n * The view model for this widget.\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-widgets-Print.html#viewModel)\r\n */\r\n // @JsonProperty()\r\n // declare viewModel?: PrintViewModelProperties;\r\n\r\n /**\r\n * *Geo.js Properties*\r\n * Map Frame size per layout in millimeter, e.g. A4_hoch: [183.8345, 264.1301]\r\n */\r\n @JsonProperty()\r\n declare exportDirectory: string;\r\n /**\r\n * *Geo.js Properties*\r\n * Map Frame size per layout in millimeter, e.g. A4_hoch: [183.8345, 264.1301]\r\n */\r\n @JsonProperty()\r\n declare layouts: Map<string, number[]>;\r\n /**\r\n * *Geo.js Properties*\r\n * URL zum AGE Server (wird im files/web.config verwendet)\r\n */\r\n @JsonProperty()\r\n declare printServiceResultUrl?: string;\r\n /**\r\n * *Geo.js Properties*\r\n * Liste der verwendeten Massstäbe im Druck\r\n */\r\n @JsonProperty()\r\n declare scales: number[];\r\n constructor() {\r\n super();\r\n }\r\n}\r\n","import { JsonObject, JsonProperty } from \"typescript-json-serializer\";\r\n// *Geo.js Properties*\r\n@JsonObject()\r\nexport class ProxyConfiguration {\r\n @JsonProperty()\r\n declare url: string;\r\n\r\n @JsonProperty()\r\n declare urlPrefixes: string[];\r\n\r\n constructor() {}\r\n}\r\n","import { JsonObject, JsonProperty } from \"typescript-json-serializer\";\r\nimport {AuthoringInfoConfiguration} from \"./authoring-info-configuration\";\r\nimport {\r\n SymbolConfiguration,\r\n FillSymbolConfiguration,\r\n PolygonSymbol3DConfiguration,\r\n CIMSymbolConfiguration\r\n} from \"./symbol-configuration\";\r\nimport {\r\n VisualVariableConfiguration,\r\n ColorVariableConfiguration,\r\n OpacityVariableConfiguration,\r\n RotationVariableConfiguration,\r\n SizeVariableConfiguration\r\n} from \"./visual-variable-configuration\";\r\n\r\n// A predicate function use to determine what is the symbol type\r\nconst visualVariablesTypePredicate = (vv: any) => {\r\n if (vv.type === \"opacity\") {\r\n return OpacityVariableConfiguration;\r\n }\r\n if (vv.type === \"color\") {\r\n return ColorVariableConfiguration;\r\n }\r\n if (vv.type === \"size\") {\r\n return SizeVariableConfiguration;\r\n }\r\n if (vv.type === \"rotation\") {\r\n return RotationVariableConfiguration;\r\n }\r\n\r\n return SizeVariableConfiguration;\r\n};\r\n\r\n@JsonObject()\r\nexport class RendererConfiguration {\r\n /**\r\n * Authoring metadata only included in renderers generated from one of the Smart Mapping creator methods, such as\r\n * [sizeRendererCreator.createContinuousRenderer()](https://developers.arcgis.com/javascript/latest/api-reference/esri-smartMapping-renderers-size.html#createContinuousRenderer)\r\n * or\r\n * [colorRendererCreator.createContinuousRenderer()](https://developers.arcgis.com/javascript/latest/api-reference/esri-smartMapping-renderers-color.html#createContinuousRenderer).\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-renderers-Renderer.html#authoringInfo)\r\n */\r\n @JsonProperty()\r\n declare authoringInfo: AuthoringInfoConfiguration;\r\n /**\r\n * The renderer type.\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-renderers-Renderer.html#type)\r\n */\r\n @JsonProperty()\r\n declare type: \"class-breaks\" | \"dictionary\" | \"dot-density\" | \"heatmap\" | \"simple\" | \"unique-value\";\r\n\r\n /** ------ from VisualVariablesMixin --- */\r\n /**\r\n * An array of [VisualVariable](https://developers.arcgis.com/javascript/latest/api-reference/esri-renderers-visualVariables-VisualVariable.html) objects.\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-renderers-mixins-VisualVariablesMixin.html#visualVariables)\r\n */\r\n @JsonProperty({type: visualVariablesTypePredicate})\r\n declare visualVariables?: VisualVariableConfiguration[];\r\n\r\n constructor() {}\r\n}\r\n\r\n@JsonObject()\r\nexport class SimpleRendererConfiguration extends RendererConfiguration {\r\n /**\r\n * The label for the renderer.\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-renderers-SimpleRenderer.html#label)\r\n */\r\n @JsonProperty()\r\n declare label: string;\r\n /**\r\n * The symbol used by the renderer to visualize all features in the layer.\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-renderers-SimpleRenderer.html#symbol)\r\n */\r\n @JsonProperty()\r\n declare symbol: SymbolConfiguration;\r\n /**\r\n * The type of renderer.\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-renderers-SimpleRenderer.html#type)\r\n */\r\n @JsonProperty()\r\n declare type: \"simple\";\r\n\r\n constructor() {\r\n super();\r\n }\r\n}\r\n\r\n@JsonObject()\r\nexport class UniqueValueRendererLegendOptionsConfiguration {\r\n /**\r\n * Describes the variable driving the visualization.\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-renderers-UniqueValueRenderer.html#legendOptions)\r\n */\r\n @JsonProperty()\r\n declare title?: string;\r\n\r\n constructor() {}\r\n}\r\n\r\n@JsonObject()\r\nexport class UniqueValueInfoConfiguration {\r\n /**\r\n * Describes the [value](https://developers.arcgis.com/javascript/latest/api-reference/esri-renderers-support-UniqueValueInfo.html#value) represented by the [symbol](https://developers.arcgis.com/javascript/latest/api-reference/esri-renderers-support-UniqueValueInfo.html#symbol).\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-renderers-support-UniqueValueInfo.html#label)\r\n */\r\n @JsonProperty()\r\n declare label?: string;\r\n\r\n /**\r\n * Defines the symbol used to render features with the provided [value](https://developers.arcgis.com/javascript/latest/api-reference/esri-renderers-support-UniqueValueInfo.html#value).\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-renderers-support-UniqueValueInfo.html#symbol)\r\n */\r\n @JsonProperty()\r\n declare symbol: SymbolConfiguration;\r\n\r\n /**\r\n * Features with this value will be rendered with the given [symbol](https://developers.arcgis.com/javascript/latest/api-reference/esri-renderers-support-UniqueValueInfo.html#symbol).\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-renderers-support-UniqueValueInfo.html#value)\r\n */\r\n @JsonProperty()\r\n declare value: string | number;\r\n\r\n constructor() {}\r\n}\r\n\r\n@JsonObject()\r\nexport class UniqueValueRendererConfiguration extends RendererConfiguration {\r\n /**\r\n * This property is only relevant when symbolizing polygon features with marker symbols (or [IconSymbol3DLayer](https://developers.arcgis.com/javascript/latest/api-reference/esri-symbols-IconSymbol3DLayer.html)) in the [uniqueValueInfos](https://developers.arcgis.com/javascript/latest/api-reference/esri-renderers-UniqueValueRenderer.html#uniqueValueInfos) of this renderer.\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-renderers-UniqueValueRenderer.html#backgroundFillSymbol)\r\n */\r\n @JsonProperty()\r\n declare backgroundFillSymbol?: FillSymbolConfiguration\r\n | (PolygonSymbol3DConfiguration & { type: \"polygon-3d\" })\r\n | (CIMSymbolConfiguration & { type: \"cim\" });\r\n /**\r\n * The label used in the [Legend](https://developers.arcgis.com/javascript/latest/api-reference/esri-widgets-Legend.html) to describe features assigned the [default symbol](https://developers.arcgis.com/javascript/latest/api-reference/esri-renderers-UniqueValueRenderer.html#defaultSymbol).\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-renderers-UniqueValueRenderer.html#defaultLabel)\r\n */\r\n @JsonProperty()\r\n declare defaultLabel?: string;\r\n /**\r\n * The symbol used to draw all features with values not referenced by [uniqueValueInfos](https://developers.arcgis.com/javascript/latest/api-reference/esri-renderers-UniqueValueRenderer.html#uniqueValueInfos) or [uniqueValueGroups](https://developers.arcgis.com/javascript/latest/api-reference/esri-renderers-UniqueValueRenderer.html#uniqueValueGroups).\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-renderers-UniqueValueRenderer.html#defaultSymbol)\r\n */\r\n @JsonProperty()\r\n declare defaultSymbol?: SymbolConfiguration;\r\n /**\r\n * The name of the attribute field containing types or categorical values referenced in [uniqueValueInfos](https://developers.arcgis.com/javascript/latest/api-reference/esri-renderers-UniqueValueRenderer.html#uniqueValueInfos) or [uniqueValueGroups](https://developers.arcgis.com/javascript/latest/api-reference/esri-renderers-UniqueValueRenderer.html#uniqueValueGroups).\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-renderers-UniqueValueRenderer.html#field)\r\n */\r\n @JsonProperty()\r\n declare field?: string;\r\n /**\r\n * Specifies the name of an additional attribute field used to categorize features.\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-renderers-UniqueValueRenderer.html#field2)\r\n */\r\n @JsonProperty()\r\n declare field2?: string;\r\n /**\r\n * Specifies the name of a third attribute field used to categorize features.\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-renderers-UniqueValueRenderer.html#field3)\r\n */\r\n @JsonProperty()\r\n declare field3?: string;\r\n /**\r\n * A string used as a separator between the values in the legend if multiple attribute fields are used to categorize values.\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-renderers-UniqueValueRenderer.html#fieldDelimiter)\r\n */\r\n @JsonProperty()\r\n declare fieldDelimiter?: string;\r\n /**\r\n * An object providing options for displaying the renderer in the Legend.\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-renderers-UniqueValueRenderer.html#legendOptions)\r\n */\r\n @JsonProperty()\r\n declare legendOptions?: UniqueValueRendererLegendOptionsConfiguration;\r\n\r\n /**\r\n * Indicates whether the order of the classes or [uniqueValueInfos](https://developers.arcgis.com/javascript/latest/api-reference/esri-renderers-UniqueValueRenderer.html#uniqueValueInfos) in the renderer definition should be used for the feature drawing order of the layer.\r\n *\r\n * @default false\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-renderers-UniqueValueRenderer.html#orderByClassesEnabled)\r\n */\r\n @JsonProperty()\r\n declare orderByClassesEnabled?: boolean;\r\n\r\n /**\r\n * The type of Renderer.\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-renderers-UniqueValueRenderer.html#type)\r\n */\r\n declare readonly type: \"unique-value\";\r\n /**\r\n * An array of objects defining groups of unique values.\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-renderers-UniqueValueRenderer.html#uniqueValueGroups)\r\n */\r\n // declare uniqueValueGroups?: UniqueValueGroupProperties[];\r\n /**\r\n * Defines categories and their corresponding symbols based on a set of values expected from the provided [field](https://developers.arcgis.com/javascript/latest/api-reference/esri-renderers-UniqueValueRenderer.html#field) or [valueExpression](https://developers.arcgis.com/javascript/latest/api-reference/esri-renderers-UniqueValueRenderer.html#valueExpression).\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-renderers-UniqueValueRenderer.html#uniqueValueInfos)\r\n */\r\n @JsonProperty()\r\n declare uniqueValueInfos?: UniqueValueInfoConfiguration[];\r\n /**\r\n * An [Arcade](https://developers.arcgis.com/javascript/latest/arcade/) expression following the specification defined by the [Arcade Visualization Profile](https://developers.arcgis.com/javascript/latest/arcade/#visualization).\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-renderers-UniqueValueRenderer.html#valueExpression)\r\n */\r\n @JsonProperty()\r\n declare valueExpression?: string;\r\n /**\r\n * The title identifying and describing the associated\r\n * [Arcade](https://developers.arcgis.com/javascript/latest/arcade/) expression as defined in the\r\n * [valueExpression](https://developers.arcgis.com/javascript/latest/api-reference/esri-renderers-UniqueValueRenderer.html#valueExpression) property.\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-renderers-UniqueValueRenderer.html#valueExpressionTitle)\r\n */\r\n @JsonProperty()\r\n declare valueExpressionTitle?: string;\r\n\r\n constructor() {\r\n super();\r\n }\r\n}\r\n","import { JsonObject, JsonProperty } from \"typescript-json-serializer\";\r\nimport {WidgetConfiguration} from \"./widget-configuration\";\r\nimport {MapViewConfiguration} from \"./view-configuration\";\r\n\r\n@JsonObject()\r\nexport class ScaleBarConfiguration extends WidgetConfiguration {\r\n /**\r\n * The style for the scale bar.\r\n *\r\n * @default \"line\"\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-widgets-ScaleBar.html#style)\r\n */\r\n @JsonProperty()\r\n declare style: \"ruler\" | \"line\";\r\n\r\n /**\r\n * Units to use for the scale bar.\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-widgets-ScaleBar.html#unit)\r\n */\r\n @JsonProperty()\r\n declare unit?: \"metric\" | \"imperial\" | \"dual\";\r\n\r\n /**\r\n * A reference to the [MapView](https://developers.arcgis.com/javascript/latest/api-reference/esri-views-MapView.html).\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-widgets-ScaleBar.html#view)\r\n */\r\n @JsonProperty()\r\n declare view?: MapViewConfiguration;\r\n /**\r\n * The view model for this widget.\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-widgets-ScaleBar.html#viewModel)\r\n */\r\n // @JsonProperty()\r\n // declare viewModel?: ScaleBarViewModelProperties;\r\n\r\n constructor() {\r\n super();\r\n }\r\n}\r\n","/*\r\n Core configuration files\r\n */\r\nimport { JsonObject, JsonProperty } from \"typescript-json-serializer\";\r\nimport {ExtentConfiguration, GeometryConfiguration} from \"./geometry-configuration\";\r\nimport {\r\n FillSymbolConfiguration,\r\n PictureMarkerSymbolConfiguration, SimpleLineSymbolConfiguration,\r\n SimpleMarkerSymbolConfiguration\r\n} from \"./symbol-configuration\";\r\nimport {PopupTemplateConfiguration} from \"./popup-configuration\";\r\nimport {PortalItemConfiguration} from \"./portal-item-configuration\";\r\nimport {FeatureLayerConfiguration} from \"./layer-configuration\";\r\nimport FeatureLayer from \"@arcgis/core/layers/FeatureLayer\";\r\n\r\n@JsonObject()\r\nexport class SearchSourceFilterConfiguration {\r\n /**\r\n * The where clause specified for filtering suggests or search results.\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-widgets-Search-SearchSource.html#filter)\r\n */\r\n @JsonProperty()\r\n declare where?: string;\r\n\r\n /**\r\n * The filter geometry for suggests or search results.\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-widgets-Search-SearchSource.html#filter)\r\n */\r\n @JsonProperty({ type: GeometryConfiguration })\r\n declare geometry?: GeometryConfiguration;\r\n\r\n constructor() {}\r\n}\r\n\r\n// A predicate function use to determine what is the symbol type\r\nconst symbolTypePredicate = (symbol: any) => {\r\n if (symbol.type === \"picture-marker\") {\r\n return PictureMarkerSymbolConfiguration;\r\n }\r\n if (symbol.type === \"simple-marker\") {\r\n return SimpleMarkerSymbolConfiguration;\r\n }\r\n return SimpleMarkerSymbolConfiguration;\r\n};\r\n\r\n// A predicate function use to determine what is the right searchSource type\r\nconst searchSourcePredicate = (searchSource: any) =>\r\n (searchSource[\"url\"] !== undefined || searchSource[\"locator\"] !== undefined )?\r\n LocatorSearchSourceConfiguration : (searchSource[\"maxExtent\"] !== undefined)?\r\n CoordinateSearchSourceConfiguration: LayerSearchSourceConfiguration;\r\n\r\n\r\nexport enum SearchSourceType {\r\n Locator = \"locator\",\r\n Layer = \"layer\",\r\n Custom = \"custom\",\r\n Coordinate = \"coordinate\"\r\n}\r\n/**\r\n * *Geo.js Property*\r\n * Query for additional data\r\n */\r\n@JsonObject()\r\nexport class SearchSourceQueryConfiguration {\r\n @JsonProperty()\r\n declare expression: string;\r\n @JsonProperty()\r\n declare id: string;\r\n @JsonProperty()\r\n declare layerId?: number;\r\n @JsonProperty()\r\n declare outFields?: string[];\r\n @JsonProperty()\r\n declare popupTemplate?: PopupTemplateConfiguration | string;\r\n @JsonProperty()\r\n declare portalItem?: PortalItemConfiguration;\r\n @JsonProperty()\r\n declare title?: string;\r\n constructor() {}\r\n}\r\n/**\r\n * *Geo.js Property*\r\n * Query for additional data\r\n */\r\n@JsonObject()\r\nexport class SearchResultSymbolConfiguration {\r\n @JsonProperty()\r\n declare highlight: FillSymbolConfiguration;\r\n @JsonProperty()\r\n declare line: SimpleLineSymbolConfiguration;\r\n @JsonProperty()\r\n declare pointer: PictureMarkerSymbolConfiguration;\r\n constructor() {}\r\n}\r\n@JsonObject()\r\nexport class SearchSourceConfiguration {\r\n /**\r\n * *Geo.js Property*\r\n * Query for additional data\r\n */\r\n @JsonProperty()\r\n declare name?: string;\r\n /**\r\n * *Geo.js Property*\r\n * Type of search source.\r\n * For internal use only.\r\n */\r\n @JsonProperty()\r\n declare sourceType: SearchSourceType;\r\n /**\r\n * *Geo.js Property*\r\n * Query for additional data\r\n */\r\n @JsonProperty()\r\n declare query?: SearchSourceQueryConfiguration;\r\n /**\r\n * *Geo.js Property*\r\n * Query for additional data\r\n */\r\n @JsonProperty()\r\n declare queries?: SearchSourceQueryConfiguration[];\r\n\r\n /**\r\n * Indicates whether to automatically navigate to the selected result once selected.\r\n *\r\n * @default true\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-widgets-Search-SearchSource.html#autoNavigate)\r\n */\r\n @JsonProperty()\r\n declare autoNavigate?: boolean;\r\n\r\n /**\r\n * For filtering suggests or search results.\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-widgets-Search-SearchSource.html#filter)\r\n */\r\n @JsonProperty({ type: SearchSourceFilterConfiguration })\r\n declare filter?: SearchSourceFilterConfiguration;\r\n /**\r\n * Function used to get search results.\r\n *\r\n * @default null\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-widgets-Search-SearchSource.html#getResults)\r\n */\r\n declare getResults?: (params: any) => Promise<__esri.SearchResult[]>;\r\n /**\r\n * Function used to get search suggestions.\r\n *\r\n * @default null\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-widgets-Search-SearchSource.html#getSuggestions)\r\n */\r\n declare getSuggestions?: (params: any) => Promise<__esri.SuggestResult[]>;\r\n /**\r\n * Indicates the maximum number of search results to return.\r\n *\r\n * @default 6\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-widgets-Search-SearchSource.html#maxResults)\r\n */\r\n @JsonProperty()\r\n declare maxResults?: number;\r\n\r\n /**\r\n * Indicates the maximum number of suggestions to return for the widget's input.\r\n *\r\n * @default 6\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-widgets-Search-SearchSource.html#maxSuggestions)\r\n */\r\n @JsonProperty()\r\n declare maxSuggestions?: number;\r\n\r\n /**\r\n * Indicates the minimum number of characters required before querying for a suggestion.\r\n *\r\n * @default 1\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-widgets-Search-SearchSource.html#minSuggestCharacters)\r\n */\r\n @JsonProperty()\r\n declare minSuggestCharacters?: number;\r\n\r\n /**\r\n * Specifies the fields returned with the search results.\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-widgets-Search-SearchSource.html#outFields)\r\n */\r\n @JsonProperty()\r\n declare outFields?: string[];\r\n\r\n /**\r\n * Used as a hint for the source input text.\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-widgets-Search-SearchSource.html#placeholder)\r\n */\r\n @JsonProperty()\r\n declare placeholder?: string;\r\n\r\n /**\r\n * Indicates whether to display a [Popup](https://developers.arcgis.com/javascript/latest/api-reference/esri-widgets-Popup.html) when a selected result is clicked.\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-widgets-Search-SearchSource.html#popupEnabled)\r\n */\r\n @JsonProperty()\r\n declare popupEnabled?: boolean;\r\n\r\n /**\r\n * The popup template used to display search results.\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-widgets-Search-SearchSource.html#popupTemplate)\r\n */\r\n @JsonProperty()\r\n declare popupTemplate?: PopupTemplateConfiguration;\r\n\r\n /**\r\n * Specify this to prefix the user's input of the search text.\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-widgets-Search-SearchSource.html#prefix)\r\n */\r\n @JsonProperty()\r\n declare prefix?: string;\r\n\r\n /**\r\n * Indicates whether to show a graphic on the map for the selected source using the [resultSymbol](https://developers.arcgis.com/javascript/latest/api-reference/esri-widgets-Search-SearchSource.html#resultSymbol).\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-widgets-Search-SearchSource.html#resultGraphicEnabled)\r\n */\r\n @JsonProperty()\r\n declare resultGraphicEnabled?: boolean;\r\n\r\n /**\r\n * The symbol used to display the result.\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-widgets-Search-SearchSource.html#resultSymbol)\r\n */\r\n @JsonProperty({ type: symbolTypePredicate })\r\n declare resultSymbol?: PictureMarkerSymbolConfiguration | SimpleMarkerSymbolConfiguration;\r\n\r\n /**\r\n * Specify this to add a suffix to the user's input for the search value.\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-widgets-Search-SearchSource.html#suffix)\r\n */\r\n @JsonProperty()\r\n declare suffix?: string;\r\n\r\n /**\r\n * Indicates whether to display suggestions as the user enters input text in the widget.\r\n *\r\n * @default true\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-widgets-Search-SearchSource.html#suggestionsEnabled)\r\n */\r\n @JsonProperty()\r\n declare suggestionsEnabled?: boolean;\r\n\r\n /**\r\n * Indicates whether to constrain the search results to the view's extent.\r\n *\r\n * @default false\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-widgets-Search-SearchSource.html#withinViewEnabled)\r\n */\r\n @JsonProperty()\r\n declare withinViewEnabled?: boolean;\r\n\r\n /**\r\n * The set zoom scale for the resulting search result.\r\n *\r\n * @default null\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-widgets-Search-SearchSource.html#zoomScale)\r\n */\r\n @JsonProperty()\r\n declare zoomScale?: number;\r\n\r\n constructor() {}\r\n}\r\n\r\n@JsonObject()\r\nexport class LocatorSearchSourceConfiguration extends SearchSourceConfiguration {\r\n /**\r\n * An authorization string used to access a resource or service.\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-widgets-Search-LocatorSearchSource.html#apiKey)\r\n */\r\n @JsonProperty()\r\n declare apiKey?: string;\r\n /**\r\n * A string array which limits the results to one or more categories.\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-widgets-Search-LocatorSearchSource.html#categories)\r\n */\r\n @JsonProperty()\r\n declare categories?: string[];\r\n\r\n /**\r\n * Constricts search results to a specified country code.\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-widgets-Search-LocatorSearchSource.html#countryCode)\r\n */\r\n @JsonProperty()\r\n declare countryCode?: string;\r\n\r\n /**\r\n * Sets the scale of the [MapView](https://developers.arcgis.com/javascript/latest/api-reference/esri-views-MapView.html#scale) or [SceneView](https://developers.arcgis.com/javascript/latest/api-reference/esri-views-SceneView.html#scale) for the resulting search result, if the locator service doesn’t return an extent with a scale.\r\n *\r\n * @default null\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-widgets-Search-LocatorSearchSource.html#defaultZoomScale)\r\n */\r\n @JsonProperty()\r\n declare defaultZoomScale: number;\r\n /**\r\n * This property controls prioritization of [Search](https://developers.arcgis.com/javascript/latest/api-reference/esri-widgets-Search.html) widget result candidates depending on the view scale.\r\n *\r\n * @default false\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-widgets-Search-LocatorSearchSource.html#localSearchDisabled)\r\n */\r\n @JsonProperty()\r\n declare localSearchDisabled?: boolean;\r\n /**\r\n * Defines the type of location, either `street` or `rooftop`, of the point returned from the [World Geocoding Service](https://developers.arcgis.com/rest/geocode/api-reference/geocoding-category-filtering.htm).\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-widgets-Search-LocatorSearchSource.html#locationType)\r\n */\r\n @JsonProperty()\r\n declare locationType: \"rooftop\" | \"street\";\r\n\r\n /**\r\n * The name of the source for display.\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-widgets-Search-LocatorSearchSource.html#name)\r\n */\r\n @JsonProperty()\r\n declare name: string;\r\n\r\n /**\r\n * A template string used to display multiple fields in a defined order when results are displayed.\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-widgets-Search-LocatorSearchSource.html#searchTemplate)\r\n */\r\n @JsonProperty()\r\n declare searchTemplate: string;\r\n\r\n /**\r\n * The field name of the Single Line Address Field in the REST services directory for the locator service.\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-widgets-Search-LocatorSearchSource.html#singleLineFieldName)\r\n */\r\n @JsonProperty()\r\n declare singleLineFieldName: string;\r\n\r\n /**\r\n * URL to the ArcGIS Server REST resource that represents a locator service.\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-widgets-Search-LocatorSearchSource.html#url)\r\n */\r\n @JsonProperty()\r\n declare url?: string;\r\n\r\n constructor() {\r\n super();\r\n }\r\n}\r\n\r\n@JsonObject()\r\nexport class LayerSearchSourceConfiguration extends SearchSourceConfiguration {\r\n /**\r\n * *Geo.js Property*\r\n * Query for additional data\r\n */\r\n @JsonProperty()\r\n declare metauid?: string;\r\n\r\n /**\r\n * *Geo.js Property*\r\n * If true then the query returns distinct values based on the field(s) specified in outFields.\r\n * https://developers.arcgis.com/javascript/latest/api-reference/esri-rest-support-Query.html#returnDistinctValues\r\n */\r\n @JsonProperty()\r\n declare returnDistinctValues?: boolean;\r\n /**\r\n * *Geo.js Property*\r\n */\r\n @JsonProperty()\r\n declare searchLayers?: Array<FeatureLayer | __esri.Sublayer | undefined>;\r\n /**\r\n * *Geo.js Property*\r\n */\r\n @JsonProperty()\r\n declare customQuery?: string;\r\n @JsonProperty()\r\n declare customNumericQuery?: string;\r\n /**\r\n * The results are displayed using this field. Defaults to the layer's `displayField` or the first string field.\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-widgets-Search-LayerSearchSource.html#displayField)\r\n */\r\n @JsonProperty()\r\n declare displayField?: string;\r\n\r\n /**\r\n * Indicates to only return results that match the search value exactly.\r\n *\r\n * @default false\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-widgets-Search-LayerSearchSource.html#exactMatch)\r\n */\r\n @JsonProperty()\r\n declare exactMatch?: boolean;\r\n\r\n /**\r\n * The layer queried in the search. This is **required**.\r\n * > Layers created from client-side graphics are not supported.\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-widgets-Search-LayerSearchSource.html#layer)\r\n */\r\n @JsonProperty()\r\n declare layer?: FeatureLayerConfiguration | __esri.FeatureLayer;\r\n\r\n /**\r\n * Id of the search layer.\r\n * This is the id used to\r\n */\r\n @JsonProperty()\r\n declare layerId: string;\r\n\r\n /**\r\n * The name of the source for display.\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-widgets-Search-LayerSearchSource.html#name)\r\n */\r\n @JsonProperty()\r\n declare name?: string;\r\n /**\r\n * One or more field names used to order the query results.\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-widgets-Search-LayerSearchSource.html#orderByFields)\r\n */\r\n @JsonProperty()\r\n declare orderByFields?: string[];\r\n /**\r\n * An array of string values representing the names of fields in the feature layer to search.\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-widgets-Search-LayerSearchSource.html#searchFields)\r\n */\r\n @JsonProperty()\r\n declare searchFields?: string[];\r\n\r\n /**\r\n * A template string used to display multiple fields in a defined order when results are displayed.\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-widgets-Search-LayerSearchSource.html#searchTemplate)\r\n */\r\n @JsonProperty()\r\n declare searchTemplate?: string;\r\n\r\n /**\r\n * A template string used to display multiple fields in a defined order when suggestions are displayed.\r\n * This takes precedence over `displayField`. Field names in the template must have the following format:\r\n * `{FieldName}`. An example suggestionTemplate could look something like: `Name: {OWNER}, Parcel: {PARCEL_ID}`.\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-widgets-Search-LayerSearchSource.html#suggestionTemplate)\r\n */\r\n @JsonProperty()\r\n declare suggestionTemplate?: string;\r\n\r\n constructor() {\r\n super();\r\n }\r\n}\r\n\r\n@JsonObject()\r\nexport class CustomSearchSourceConfiguration extends SearchSourceConfiguration {\r\n /**\r\n * The name of the source for display.\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-widgets-Search-LayerSearchSource.html#name)\r\n */\r\n @JsonProperty()\r\n declare name?: string;\r\n\r\n /**\r\n * The layer queried in the search.\r\n */\r\n @JsonProperty()\r\n declare layer: __esri.FeatureLayer;\r\n\r\n /**\r\n * Id of the search layer.\r\n */\r\n @JsonProperty()\r\n declare layerId: string;\r\n\r\n /**\r\n * Order suggestions by field\r\n * Specify ASC or DESC after the field name to control order\r\n *\r\n * @example: \"NUMBER ASC\"\r\n */\r\n @JsonProperty()\r\n declare orderByFields: string[];\r\n\r\n constructor() {\r\n super();\r\n }\r\n}\r\n@JsonObject()\r\nexport class MaxExtentConfiguration {\r\n /**\r\n * Maximaler LV95 Extent\r\n */\r\n @JsonProperty()\r\n declare lv95?: ExtentConfiguration;\r\n /**\r\n * Maximaler WGS84 Extent\r\n */\r\n @JsonProperty()\r\n declare lv03?: ExtentConfiguration;\r\n /**\r\n * Maximaler LV03 Extent\r\n */\r\n @JsonProperty()\r\n declare wgs84?: ExtentConfiguration;\r\n\r\n constructor() {}\r\n}\r\n@JsonObject()\r\nexport class CoordinateSearchSourceConfiguration extends SearchSourceConfiguration {\r\n /**\r\n * The name of the source for display.\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-widgets-Search-LayerSearchSource.html#name)\r\n */\r\n @JsonProperty()\r\n declare maxExtent?: MaxExtentConfiguration;\r\n\r\n constructor() {\r\n super();\r\n }\r\n}\r\n\r\n@JsonObject()\r\nexport class SearchConfiguration {\r\n /**\r\n * The current active menu of the Search widget. **Possible Values:** none | suggestion | source | warning\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-widgets-Search.html#activeMenu)\r\n *\r\n * @default none\r\n */\r\n @JsonProperty()\r\n declare activeMenu?: string;\r\n\r\n /**\r\n * String value used as a hint for input text when searching on multiple sources. See the image below to\r\n * view the location and style of this text in the context of the widget.\r\n * ![search-allPlaceholder](https://developers.arcgis.com/javascript/assets/img/apiref/widgets/search-allplaceholder.png)\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-widgets-Search.html#allPlaceholder)\r\n *\r\n * @default \"Find address or place\"\r\n */\r\n @JsonProperty()\r\n declare allPlaceholder?: string;\r\n\r\n /**\r\n * Indicates whether to automatically select and zoom to the first geocoded result. If `false`,\r\n * the [findAddressCandidates](https://developers.arcgis.com/rest/geocode/api-reference/geocoding-find-address-candidates.htm)\r\n * operation will still geocode the input string, but the top result will not be selected.\r\n * To work with the geocoded results, you can set up a\r\n * [search-complete](https://developers.arcgis.com/javascript/latest/api-reference/esri-widgets-Search.html#event:search-complete)\r\n * event handler and get the results through the event object.\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-widgets-Search.html#autoSelect)\r\n *\r\n * @default true\r\n */\r\n @JsonProperty()\r\n declare autoSelect?: boolean;\r\n\r\n /**\r\n * The widget's default CSS icon class.\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-widgets-Search.html#iconClass)\r\n */\r\n @JsonProperty()\r\n declare iconClass?: string;\r\n /**\r\n * Indicates whether or not to include\r\n * [defaultSources](https://developers.arcgis.com/javascript/latest/api-reference/esri-widgets-Search-SearchViewModel.html#defaultSources)\r\n * in the Search UI. This can be a boolean value or a function that returns an array of Search\r\n * [sources](https://developers.arcgis.com/javascript/latest/api-reference/esri-widgets-Search-SearchViewModel.html#sources).\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-widgets-Search.html#includeDefaultSources)\r\n *\r\n * @default true\r\n */\r\n @JsonProperty()\r\n declare includeDefaultSources?: boolean | Function;\r\n\r\n /**\r\n * Enables location services within the widget.\r\n * ![locationEnabled](https://developers.arcgis.com/javascript/assets/img/apiref/widgets/search-locationEnabled.png)\r\n * > The use of this property is only supported on secure origins. To use it, switch your application to a secure\r\n * origin, such as HTTPS. Note that localhost is considered \"potentially secure\" and can be used for easy testing\r\n * in browsers that supports [Window.isSecureContext](https://developer.mozilla.org/en-US/docs/Web/API/Window/isSecureContext#Browser_compatibility) (currently Chrome and Firefox).\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-widgets-Search.html#locationEnabled)\r\n *\r\n * @default true\r\n */\r\n @JsonProperty()\r\n declare locationEnabled?: boolean;\r\n\r\n /**\r\n * The maximum number of results returned by the widget if not specified by the source.\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-widgets-Search.html#maxResults)\r\n *\r\n * @default 6\r\n */\r\n @JsonProperty()\r\n declare maxResults?: number;\r\n\r\n /**\r\n * The maximum number of suggestions returned by the widget if not specified by the source.\r\n * If working with the default [ArcGIS Online Geocoding service](https://developers.arcgis.com/rest/geocode/api-reference/overview-world-geocoding-service.htm), the default remains at `5`.\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-widgets-Search.html#maxSuggestions)\r\n *\r\n * @default 6\r\n */\r\n @JsonProperty()\r\n declare maxSuggestions?: number;\r\n\r\n /**\r\n * The minimum number of characters needed for the search if not specified by the source.\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-widgets-Search.html#minSuggestCharacters)\r\n *\r\n * @default 1\r\n */\r\n @JsonProperty()\r\n declare minSuggestCharacters?: number;\r\n\r\n /**\r\n * Indicates whether to display the [Popup](https://developers.arcgis.com/javascript/latest/api-reference/esri-widgets-Popup.html) on feature click. The graphic can be clicked to display a [Popup](https://developers.arcgis.com/javascript/latest/api-reference/esri-widgets-Popup.html).\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-widgets-Search.html#popupEnabled)\r\n *\r\n * @default true\r\n */\r\n @JsonProperty()\r\n declare popupEnabled?: boolean;\r\n\r\n /**\r\n * A customized [PopupTemplate](https://developers.arcgis.com/javascript/latest/api-reference/esri-PopupTemplate.html) for the selected feature. Note that any templates defined on [allSources](https://developers.arcgis.com/javascript/latest/api-reference/esri-widgets-Search.html#allSources) take precedence over those defined directly on the template.\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-widgets-Search.html#popupTemplate)\r\n */\r\n // @JsonProperty()\r\n // declare popupTemplate?: PopupTemplateProperties;\r\n\r\n /**\r\n * It is possible to search a specified portal instance's [locator services](http://enterprise.arcgis.com/en/portal/latest/administer/windows/configure-portal-to-geocode-addresses.htm) Use this property to set this [ArcGIS Portal](https://enterprise.arcgis.com/en/portal/) instance to search.\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-widgets-Search.html#portal)\r\n */\r\n // @JsonProperty()\r\n // declare portal?: PortalProperties;\r\n\r\n /**\r\n * Indicates if the [resultGraphic](https://developers.arcgis.com/javascript/latest/api-reference/esri-widgets-Search.html#resultGraphic) will display at the location of the selected feature.\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-widgets-Search.html#resultGraphicEnabled)\r\n *\r\n * @default true\r\n */\r\n @JsonProperty()\r\n declare resultGraphicEnabled?: boolean;\r\n\r\n /**\r\n * Indicates whether to display the option to search all sources. When `true`, the \"All\" option is displayed by default: ![search-searchAllEnabled-true](https://developers.arcgis.com/javascript/assets/img/apiref/widgets/search-enablesearchingall-true.png) When `false`, no option to search all sources at once is available: ![search-searchAllEnabled-false](https://developers.arcgis.com/javascript/assets/img/apiref/widgets/search-enablesearchingall-false.png)\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-widgets-Search.html#searchAllEnabled)\r\n *\r\n * @default true\r\n */\r\n @JsonProperty()\r\n declare searchAllEnabled?: boolean;\r\n\r\n /**\r\n * The value of the search box input text string.\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-widgets-Search.html#searchTerm)\r\n */\r\n @JsonProperty()\r\n declare searchTerm?: string;\r\n\r\n /**\r\n * The Search widget may be used to search features in a [FeatureLayer]\r\n * (https://developers.arcgis.com/javascript/latest/api-reference/esri-layers-FeatureLayer.html) or [table]\r\n * (https://developers.arcgis.com/javascript/latest/api-reference/esri-webdoc-applicationProperties-SearchTable.html\r\n * ), or geocode locations with a [Locator]\r\n * (https://developers.arcgis.com/javascript/latest/api-reference/esri-tasks-Locator.html).\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-widgets-Search.html#sources)\r\n */\r\n @JsonProperty({ type: searchSourcePredicate })\r\n declare sources: SearchSourceConfiguration[];\r\n\r\n // /**\r\n // * The Search widget may be used to search features in a\r\n // * [FeatureLayer](https://developers.arcgis.com/javascript/latest/api-reference/esri-layers-FeatureLayer.html) or\r\n // * geocode locations with a\r\n // * [Locator](https://developers.arcgis.com/javascript/latest/api-reference/esri-tasks-Locator.html).\r\n // * The `sources` property defines the sources from which to search for the\r\n // * [view](https://developers.arcgis.com/javascript/latest/api-reference/esri-widgets-Search.html#view) specified\r\n // * by the Search widget instance. There are two types of sources:\r\n // * * [LocatorSearchSource](https://developers.arcgis.com/javascript/latest/api-reference/esri-widgets-Search-LocatorSearchSource.html)\r\n // *\r\n // * Any combination of these sources may be used together in the same instance of the Search widget.\r\n // * > Feature layers created from client-side graphics are not supported.\r\n // *\r\n // * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-widgets-Search.html#sources)\r\n // */\r\n // @JsonProperty({ type: LocatorSearchSourceConfiguration })\r\n // declare locatorSources?: Array<LocatorSearchSourceConfiguration>;\r\n //\r\n // /**\r\n // * The Search widget may be used to search features in a\r\n // * [FeatureLayer](https://developers.arcgis.com/javascript/latest/api-reference/esri-layers-FeatureLayer.html) or\r\n // * geocode locations with a\r\n // * [Locator](https://developers.arcgis.com/javascript/latest/api-reference/esri-tasks-Locator.html).\r\n // * The `sources` property defines the sources from which to search for the\r\n // * [view](https://developers.arcgis.com/javascript/latest/api-reference/esri-widgets-Search.html#view) specified\r\n // * by the Search widget instance. There are two types of sources:\r\n // * * [LayerSearchSource](https://developers.arcgis.com/javascript/latest/api-reference/esri-widgets-Search-LayerSearchSource.html)\r\n // *\r\n // * Any combination of these sources may be used together in the same instance of the Search widget.\r\n // * > Feature layers created from client-side graphics are not supported.\r\n // *\r\n // * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-widgets-Search.html#sources)\r\n // */\r\n // @JsonProperty({ type: LayerSearchSourceConfiguration })\r\n // declare layerSources?: Array<LayerSearchSourceConfiguration>;\r\n\r\n /**\r\n * Enable suggestions for the widget. This is only available if working with a 10.3 or greater geocoding service that has [suggest capability loaded](https://developers.arcgis.com/rest/geocode/api-reference/geocoding-suggest.htm) or a 10.3 or greater feature layer that supports pagination, i.e. `supportsPagination = true`.\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-widgets-Search.html#suggestionsEnabled)\r\n *\r\n * @default true\r\n */\r\n @JsonProperty()\r\n declare suggestionsEnabled?: boolean;\r\n\r\n /**\r\n * *Geo.js Property*\r\n * The symbols (pointer and highlight) used to display the result\r\n */\r\n @JsonProperty()\r\n declare resultSymbol?: SearchResultSymbolConfiguration;\r\n\r\n /**\r\n * *Geo.js Property*\r\n * Auf \"tocReady\" Status warten, bevor SearchSource initialisiert werden.\r\n */\r\n @JsonProperty()\r\n declare waitForTocReady?: boolean;\r\n\r\n constructor() {}\r\n}\r\n","import { JsonObject, JsonProperty } from \"typescript-json-serializer\";\r\nimport {WidgetConfiguration} from \"./widget-configuration\";\r\nimport Collection from \"@arcgis/core/core/Collection\";\r\n\r\n@JsonObject()\r\nexport class SketchDefaultUpdateOptionsConfiguration implements __esri.SketchDefaultUpdateOptions {\r\n /**\r\n * Name of the update tool.\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-widgets-Sketch.html#defaultUpdateOptions)\r\n */\r\n @JsonProperty()\r\n declare tool?: \"move\" | \"transform\" | \"reshape\";\r\n /**\r\n * Indicates if the `rotation` operation will be enabled when updating graphics.\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-widgets-Sketch.html#defaultUpdateOptions)\r\n */\r\n @JsonProperty()\r\n declare enableRotation?: boolean;\r\n /**\r\n * Indicates if the `scale` operation will be enabled when updating graphics.\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-widgets-Sketch.html#defaultUpdateOptions)\r\n */\r\n @JsonProperty()\r\n declare enableScaling?: boolean;\r\n /**\r\n * Indicates if z-values can be modified when updating the graphic.\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-widgets-Sketch.html#defaultUpdateOptions)\r\n */\r\n @JsonProperty()\r\n declare enableZ?: boolean;\r\n /**\r\n * Indicates whether more than one selection can be made at once.\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-widgets-Sketch.html#defaultUpdateOptions)\r\n */\r\n @JsonProperty()\r\n declare multipleSelectionEnabled?: boolean;\r\n /**\r\n * Indicates if the uniform scale operation will be enabled when updating graphics.\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-widgets-Sketch.html#defaultUpdateOptions)\r\n */\r\n @JsonProperty()\r\n declare preserveAspectRatio?: boolean;\r\n /**\r\n * Indicates if the graphic being updated can be toggled between `transform` and `reshape` update options.\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-widgets-Sketch.html#defaultUpdateOptions)\r\n */\r\n @JsonProperty()\r\n declare toggleToolOnClick?: boolean;\r\n /**\r\n * Changes the behavior for the `reshape` tool.\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-widgets-Sketch.html#defaultUpdateOptions)\r\n */\r\n // @JsonProperty()\r\n // declare reshapeOptions?: SketchDefaultUpdateOptionsReshapeOptions;\r\n /**\r\n * Options that control when to display or hide highlights for update operations.\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-widgets-Sketch.html#defaultUpdateOptions)\r\n */\r\n // @JsonProperty()\r\n // declare highlightOptions?: SketchDefaultUpdateOptionsHighlightOptions;\r\n\r\n constructor() {}\r\n}\r\n\r\n@JsonObject()\r\nexport class SketchDefaultCreateOptionsConfiguration implements __esri.SketchDefaultCreateOptions {\r\n /**\r\n * Create operation mode how the graphic can be created.\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-widgets-Sketch.html#defaultCreateOptions)\r\n */\r\n @JsonProperty()\r\n declare mode?: \"hybrid\" | \"freehand\" | \"click\";\r\n /**\r\n * Controls whether the created geometry has z-values or not.\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-widgets-Sketch.html#defaultCreateOptions)\r\n */\r\n @JsonProperty()\r\n declare hasZ?: boolean;\r\n /**\r\n * The default z-value of the newly created geometry.\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-widgets-Sketch.html#defaultCreateOptions)\r\n */\r\n @JsonProperty()\r\n declare defaultZ?: number;\r\n\r\n constructor() {}\r\n}\r\n@JsonObject()\r\nexport class SketchLabelOptionsConfiguration {\r\n /**\r\n * Whether labels are shown next to each segment of the graphic being sketched.\r\n *\r\n * @default false\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-views-interactive-sketch-SketchLabelOptions.html#enabled)\r\n */\r\n @JsonProperty()\r\n declare enabled?: boolean;\r\n}\r\n/**\r\n * The elements that are displayed within the tooltip while sketching and editing.\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-views-interactive-sketch-SketchTooltipOptions.html#VisibleElements)\r\n */\r\n@JsonObject()\r\nexport class VisibleElementsConfiguration {\r\n /**\r\n * When set to `false`, the area is not shown in the tooltip.\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-views-interactive-sketch-SketchTooltipOptions.html#VisibleElements)\r\n */\r\n @JsonProperty()\r\n declare area?: boolean;\r\n /**\r\n * When set to `false`, the coordinate is not shown in the tooltip.\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-views-interactive-sketch-SketchTooltipOptions.html#VisibleElements)\r\n */\r\n @JsonProperty()\r\n declare coordinates?: boolean;\r\n /**\r\n * When set to `false`, the direction (or deflection angle) is not shown in the tooltip.\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-views-interactive-sketch-SketchTooltipOptions.html#VisibleElements)\r\n */\r\n @JsonProperty()\r\n declare direction?: boolean;\r\n /**\r\n * When set to `false`, the distance is not shown in the tooltip.\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-views-interactive-sketch-SketchTooltipOptions.html#VisibleElements)\r\n */\r\n @JsonProperty()\r\n declare distance?: boolean;\r\n /**\r\n * When set to `false`, the elevation is not shown in the tooltip.\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-views-interactive-sketch-SketchTooltipOptions.html#VisibleElements)\r\n */\r\n @JsonProperty()\r\n declare elevation?: boolean;\r\n /**\r\n * When set to `false`, the header at the top of the tooltip is not shown, when in input mode.\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-views-interactive-sketch-SketchTooltipOptions.html#VisibleElements)\r\n */\r\n @JsonProperty()\r\n declare header?: boolean;\r\n /**\r\n * When set to `false`, the help message at the bottom of the tooltip is not shown.\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-views-interactive-sketch-SketchTooltipOptions.html#VisibleElements)\r\n */\r\n @JsonProperty()\r\n declare helpMessage?: boolean;\r\n /**\r\n * When set to `false`, the orientation is not shown in the tooltip.\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-views-interactive-sketch-SketchTooltipOptions.html#VisibleElements)\r\n */\r\n @JsonProperty()\r\n declare orientation?: boolean;\r\n /**\r\n * When set to `false`, the radius is not shown in the tooltip.\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-views-interactive-sketch-SketchTooltipOptions.html#VisibleElements)\r\n */\r\n @JsonProperty()\r\n declare radius?: boolean;\r\n /**\r\n * When set to `false`, the rotation is not shown in the tooltip.\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-views-interactive-sketch-SketchTooltipOptions.html#VisibleElements)\r\n */\r\n @JsonProperty()\r\n declare rotation?: boolean;\r\n /**\r\n * When set to `false`, the scale is not shown in the tooltip.\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-views-interactive-sketch-SketchTooltipOptions.html#VisibleElements)\r\n */\r\n @JsonProperty()\r\n declare scale?: boolean;\r\n /**\r\n * When set to `false`, the size is not shown in the tooltip.\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-views-interactive-sketch-SketchTooltipOptions.html#VisibleElements)\r\n */\r\n @JsonProperty()\r\n declare size?: boolean;\r\n /**\r\n * When set to `false`, the total length is not shown in the tooltip.\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-views-interactive-sketch-SketchTooltipOptions.html#VisibleElements)\r\n */\r\n @JsonProperty()\r\n declare totalLength?: boolean;\r\n}\r\n\r\n@JsonObject()\r\nexport class SketchValueOptionsConfiguration {\r\n /**\r\n * How direction values are displayed and, in case of input, how they are interpreted.\r\n *\r\n * @default \"relative\"\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-views-interactive-sketch-SketchValueOptions.html#directionMode)\r\n */\r\n @JsonProperty()\r\n declare directionMode?: \"relative\" | \"absolute\";\r\n\r\n /**\r\n * Units used for displaying values in the UI.\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-views-interactive-sketch-SketchValueOptions.html#displayUnits)\r\n */\r\n @JsonProperty()\r\n declare displayUnits?: __esri.Units;\r\n /**\r\n * Units used for interpreting input values.\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-views-interactive-sketch-SketchValueOptions.html#inputUnits)\r\n */\r\n @JsonProperty()\r\n declare inputUnits?: __esri.Units;\r\n}\r\n@JsonObject()\r\nexport class SketchTooltipOptionsConfiguration {\r\n /**\r\n * Whether tooltips are shown while sketching and editing.\r\n *\r\n * @default false\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-views-interactive-sketch-SketchTooltipOptions.html#enabled)\r\n */\r\n @JsonProperty()\r\n declare enabled?: boolean;\r\n /**\r\n * A custom help message that is displayed at the bottom of the tooltip.\r\n *\r\n * @default null\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-views-interactive-sketch-SketchTooltipOptions.html#helpMessage)\r\n */\r\n @JsonProperty()\r\n declare helpMessage?: string;\r\n /**\r\n * An icon that is displayed next to the help message at the bottom of the tooltip.\r\n *\r\n * @default null\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-views-interactive-sketch-SketchTooltipOptions.html#helpMessageIcon)\r\n */\r\n @JsonProperty()\r\n declare helpMessageIcon?: string;\r\n /**\r\n * Whether users can focus the tooltip and input constraint values.\r\n *\r\n * @default true\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-views-interactive-sketch-SketchTooltipOptions.html#inputEnabled)\r\n */\r\n @JsonProperty()\r\n declare inputEnabled?: boolean;\r\n /**\r\n * The elements that are displayed within the tooltip while sketching.\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-views-interactive-sketch-SketchTooltipOptions.html#visibleElements)\r\n */\r\n @JsonProperty()\r\n declare visibleElements?: VisibleElementsConfiguration;\r\n}\r\n@JsonObject()\r\nexport class VisibleElementsCreateToolsConfiguration {\r\n /**\r\n * Indicates whether to display the point sketch tool.\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-widgets-Sketch.html#VisibleElements)\r\n */\r\n @JsonProperty()\r\n declare point?: boolean;\r\n /**\r\n * Indicates whether to display the polyline sketch tool.\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-widgets-Sketch.html#VisibleElements)\r\n */\r\n @JsonProperty()\r\n declare polyline?: boolean;\r\n /**\r\n * Indicates whether to display the polygon sketch tool.\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-widgets-Sketch.html#VisibleElements)\r\n */\r\n @JsonProperty()\r\n declare polygon?: boolean;\r\n /**\r\n * Indicates whether to display the rectangle sketch tool.\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-widgets-Sketch.html#VisibleElements)\r\n */\r\n @JsonProperty()\r\n declare rectangle?: boolean;\r\n /**\r\n * Indicates whether to display the circle sketch tool.\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-widgets-Sketch.html#VisibleElements)\r\n */\r\n @JsonProperty()\r\n declare circle?: boolean;\r\n\r\n constructor() {}\r\n}\r\n\r\n@JsonObject()\r\nexport class VisibleElementsSelectionToolsConfiguration {\r\n /**\r\n * Indicates whether to display the `\"rectangle-selection\"` tool.\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-widgets-Sketch.html#VisibleElements)\r\n */\r\n @JsonProperty()\r\n declare \"rectangle-selection\"?: boolean;\r\n /**\r\n * Indicates whether to display the `\"lasso-selection\"` tool.\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-widgets-Sketch.html#VisibleElements)\r\n */\r\n @JsonProperty()\r\n declare \"lasso-selection\"?: boolean;\r\n\r\n constructor() {}\r\n}\r\n\r\n@JsonObject()\r\nexport class SketchVisibleElementsConfiguration {\r\n /**\r\n * The available sketch tools within the widget.\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-widgets-Sketch.html#VisibleElements)\r\n */\r\n @JsonProperty()\r\n declare createTools?: VisibleElementsCreateToolsConfiguration;\r\n /**\r\n * Indicates whether to display the 'duplicate' button while a graphic is selected.\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-widgets-Sketch.html#VisibleElements)\r\n */\r\n @JsonProperty()\r\n declare duplicateButton?: boolean;\r\n /**\r\n * The available selection tools within the widget.\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-widgets-Sketch.html#VisibleElements)\r\n */\r\n @JsonProperty()\r\n declare selectionTools?: VisibleElementsSelectionToolsConfiguration;\r\n /**\r\n * Indicates whether to display the settings menu.\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-widgets-Sketch.html#VisibleElements)\r\n */\r\n @JsonProperty()\r\n declare settingsMenu?: boolean;\r\n /**\r\n * _Since 4.29_.\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-widgets-Sketch.html#VisibleElements)\r\n */\r\n @JsonProperty()\r\n declare labelsToggle?: boolean;\r\n /**\r\n * _Since 4.29_.\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-widgets-Sketch.html#VisibleElements)\r\n */\r\n @JsonProperty()\r\n declare tooltipsToggle?: boolean;\r\n /**\r\n * Indicates whether to display the `SnappingControls` widget.\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-widgets-Sketch.html#VisibleElements)\r\n */\r\n @JsonProperty()\r\n declare snappingControls?: boolean;\r\n /**\r\n * The available [SnappingControls](https://developers.arcgis.com/javascript/latest/api-reference/esri-widgets-support-SnappingControls.html) elements within the widget.\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-widgets-Sketch.html#VisibleElements)\r\n */\r\n //snappingControlsElements?: SketchVisibleElementsSnappingControlsElements;\r\n /**\r\n * Indicates whether to display the undo/redo menu within the widget.\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-widgets-Sketch.html#VisibleElements)\r\n */\r\n @JsonProperty()\r\n declare undoRedoMenu?: boolean;\r\n constructor() {}\r\n}\r\nexport class FeatureSnappingLayerSourceConfiguration {\r\n /**\r\n * Indicates whether feature snapping is turned on or off.\r\n *\r\n * @default true\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-views-interactive-snapping-FeatureSnappingLayerSource.html#enabled)\r\n */\r\n @JsonProperty()\r\n declare enabled?: boolean;\r\n /**\r\n * The source layer used for snapping.\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-views-interactive-snapping-FeatureSnappingLayerSource.html#layer)\r\n */\r\n /* layer?: | (BuildingSceneLayerProperties & { type: \"building-scene\" })\r\n | (CSVLayerProperties & { type: \"csv\" })\r\n | (FeatureLayerProperties & { type: \"feature\" })\r\n | (GeoJSONLayerProperties & { type: \"geojson\" })\r\n | (GraphicsLayerProperties & { type: \"graphics\" })\r\n | (MapNotesLayerProperties & { type: \"map-notes\" })\r\n | (SceneLayerProperties & { type: \"scene\" })\r\n | (WFSLayerProperties & { type: \"wfs\" }); */\r\n}\r\n@JsonObject()\r\nexport class SnappingOptionsConfiguration {\r\n /**\r\n * Snapping distance for snapping in pixels.\r\n *\r\n * @default 5\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-views-interactive-snapping-SnappingOptions.html#distance)\r\n */\r\n @JsonProperty()\r\n declare distance?: number;\r\n /**\r\n * Global configuration to turn snapping on or off.\r\n *\r\n * @default false\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-views-interactive-snapping-SnappingOptions.html#enabled)\r\n */\r\n @JsonProperty()\r\n declare enabled?: boolean;\r\n /**\r\n * Global configuration option to turn feature snapping on or off.\r\n *\r\n * @default true\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-views-interactive-snapping-SnappingOptions.html#featureEnabled)\r\n */\r\n @JsonProperty()\r\n declare featureEnabled?: boolean;\r\n /**\r\n * List of sources for feature snapping.\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-views-interactive-snapping-SnappingOptions.html#featureSources)\r\n */\r\n @JsonProperty()\r\n declare featureSources?: Collection<FeatureSnappingLayerSourceConfiguration>;\r\n\r\n /**\r\n * Turns the grid on or off.\r\n *\r\n * @default false\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-views-interactive-snapping-SnappingOptions.html#gridEnabled)\r\n */\r\n @JsonProperty()\r\n declare gridEnabled?: boolean;\r\n\r\n /**\r\n * Global configuration option to turn self snapping (within one feature while either drawing or reshaping) on or off.\r\n *\r\n * @default true\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-views-interactive-snapping-SnappingOptions.html#selfEnabled)\r\n */\r\n @JsonProperty()\r\n declare selfEnabled?: boolean;\r\n}\r\n@JsonObject()\r\nexport class SymbolConfiguration {\r\n @JsonProperty()\r\n declare activeFill: __esri.SimpleFillSymbolProperties;\r\n\r\n @JsonProperty()\r\n declare polygon: __esri.SimpleFillSymbolProperties;\r\n\r\n @JsonProperty()\r\n declare polyline: __esri.SimpleLineSymbolProperties;\r\n\r\n constructor() {\r\n }\r\n}\r\n@JsonObject()\r\nexport class SketchConfiguration extends WidgetConfiguration {\r\n /**\r\n * Geo.js property to place the widget in one of the Esri UI corners.\r\n */\r\n @JsonProperty()\r\n declare position: \"top-left\" | \"top-right\" | \"bottom-left\" | \"bottom-right\";\r\n /**\r\n * Geo.js property to limit the maximum object count.\r\n */\r\n @JsonProperty()\r\n declare maxObject?: number;\r\n @JsonProperty()\r\n declare symbols?: SymbolConfiguration;\r\n\r\n /**\r\n * When creating new graphics (for example after create() has been called), this property reflects the create tool being used.\r\n * When updating graphics (for example after update() has been called), this property reflects the update tool being used.\r\n * If no create or update operation is in progress, this is null.\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-widgets-Sketch.html#activeTool)\r\n */\r\n @JsonProperty()\r\n declare activeTool: \"point\" | \"polyline\" | \"polygon\" | \"circle\" | \"rectangle\" | \"move\" | \"transform\" | \"reshape\" | \"rectangle-selection\" | \"lasso-selection\";\r\n\r\n /**\r\n * Property controlling the visibility and order of create tool buttons.\r\n *\r\n * @default [\"point\", \"polyline\", \"polygon\", \"rectangle\", \"circle\"]\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-widgets-Sketch.html#availableCreateTools)\r\n */\r\n @JsonProperty()\r\n declare availableCreateTools: string[];\r\n\r\n /**\r\n * Defines the default behavior once the [create](https://developers.arcgis.com/javascript/latest/api-reference/esri-widgets-Sketch.html#create) operation is completed.\r\n *\r\n * @default \"continuous\"\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-widgets-Sketch.html#creationMode)\r\n */\r\n @JsonProperty()\r\n declare creationMode?: \"single\" | \"continuous\" | \"update\";\r\n\r\n /**\r\n * Default create options set for the Sketch widget.\r\n * Possible Values: \"hybrid\" | \"freehand\" | \"click\"\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-widgets-Sketch.html#defaultCreateOptions)\r\n */\r\n @JsonProperty()\r\n declare defaultCreateOptions: SketchDefaultCreateOptionsConfiguration;\r\n\r\n /**\r\n * Default update options set for the Sketch widget. Update options set on this property will be overwritten\r\n * if the update options are changed when update() method is called.\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-widgets-Sketch.html#defaultUpdateOptions)\r\n */\r\n @JsonProperty()\r\n declare defaultUpdateOptions?: SketchDefaultUpdateOptionsConfiguration;\r\n\r\n /**\r\n * Options to configure the sketch labels shown next to each segment of the geometry being created or updated.\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-widgets-Sketch.html#labelOptions)\r\n */\r\n @JsonProperty()\r\n declare labelOptions?: SketchLabelOptionsConfiguration;\r\n\r\n /**\r\n * Determines the layout/orientation of the Sketch widget.\r\n *\r\n * @default \"horizontal\"\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-widgets-Sketch.html#layout)\r\n */\r\n @JsonProperty()\r\n declare layout?: \"vertical\" | \"horizontal\";\r\n /**\r\n * The [SnappingOptions](https://developers.arcgis.com/javascript/latest/api-reference/esri-views-interactive-snapping-SnappingOptions.html) for sketching.\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-widgets-Sketch.html#snappingOptions)\r\n */\r\n @JsonProperty()\r\n declare snappingOptions?: SnappingOptionsConfiguration;\r\n /**\r\n * Options to configure the tooltip shown next to the cursor when creating or updating graphics.\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-widgets-Sketch.html#tooltipOptions)\r\n */\r\n @JsonProperty()\r\n declare tooltipOptions?: SketchTooltipOptionsConfiguration;\r\n /**\r\n * Options to configure how values are displayed and input when creating or updating graphics.\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-widgets-Sketch.html#valueOptions)\r\n */\r\n @JsonProperty()\r\n declare valueOptions?: SketchValueOptionsConfiguration;\r\n /**\r\n * The Sketch widget's state.\r\n * Possible Values: \"ready\" | \"disabled\" | \"active\"\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-widgets-Sketch.html#state)\r\n */\r\n @JsonProperty()\r\n declare state: string;\r\n\r\n /**\r\n * The visible elements that are displayed within the widget.\r\n * This property provides the ability to turn individual elements of the widget's display on/off.\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-widgets-Sketch.html#visibleElements)\r\n */\r\n @JsonProperty()\r\n declare visibleElements: SketchVisibleElementsConfiguration;\r\n\r\n constructor() {\r\n super();\r\n }\r\n}\r\n","import {JsonObject, JsonProperty} from \"typescript-json-serializer\";\r\n\r\n@JsonObject()\r\nexport class SketchLabelOptionsPropertiesConfiguration {\r\n /**\r\n * Whether labels are shown next to each segment of the graphic being sketched.\r\n *\r\n * @default false\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-views-interactive-sketch-SketchLabelOptions.html#enabled)\r\n */\r\n @JsonProperty()\r\n declare enabled?: boolean;\r\n\r\n constructor() {}\r\n}\r\n","import {JsonObject, JsonProperty} from \"typescript-json-serializer\";\r\n\r\n@JsonObject()\r\nexport class SketchTooltipOptionsPropertiesConfiguration {\r\n /**\r\n * Whether tooltips are shown while sketching and editing.\r\n *\r\n * @default false\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-views-interactive-sketch-SketchTooltipOptions.html#enabled)\r\n */\r\n @JsonProperty()\r\n declare enabled?: boolean;\r\n\r\n constructor() {}\r\n}","import {JsonObject, JsonProperty} from \"typescript-json-serializer\";\r\n\r\n@JsonObject()\r\nexport class SnappingOptionsPropertiesConfiguration {\r\n /**\r\n * When true, enables support for attribute rule-based snapping.\r\n *\r\n * @default false\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-views-interactive-snapping-SnappingOptions.html#attributeRulesEnabled)\r\n */\r\n @JsonProperty()\r\n declare attributeRulesEnabled?: boolean;\r\n /**\r\n * Snapping distance for snapping in pixels.\r\n *\r\n * @default 5\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-views-interactive-snapping-SnappingOptions.html#distance)\r\n */\r\n @JsonProperty()\r\n declare distance?: number;\r\n /**\r\n * Global configuration to turn snapping on or off.\r\n *\r\n * @default false\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-views-interactive-snapping-SnappingOptions.html#enabled)\r\n */\r\n @JsonProperty()\r\n declare enabled?: boolean;\r\n /**\r\n * Global configuration option to turn feature snapping on or off.\r\n *\r\n * @default true\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-views-interactive-snapping-SnappingOptions.html#featureEnabled)\r\n */\r\n @JsonProperty()\r\n declare featureEnabled?: boolean;\r\n /**\r\n * List of sources for feature snapping.\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-views-interactive-snapping-SnappingOptions.html#featureSources)\r\n */\r\n //@JsonProperty()\r\n //declare featureSources?: CollectionProperties<FeatureSnappingLayerSourceProperties>;\r\n /**\r\n * Global configuration option to turn self snapping (within one feature while either drawing or reshaping) on or off.\r\n *\r\n * @default true\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-views-interactive-snapping-SnappingOptions.html#selfEnabled)\r\n */\r\n @JsonProperty()\r\n declare selfEnabled?: boolean;\r\n\r\n constructor() {}\r\n}\r\n","import { JsonObject, JsonProperty } from \"typescript-json-serializer\";\r\n\r\n@JsonObject()\r\nexport class SpatialReferenceConfiguration {\r\n /**\r\n * An [image coordinate system](https://developers.arcgis.com/rest/services-reference/raster-ics.htm) defines the spatial reference used to display the image in its original coordinates without distortion, map transformations or ortho-rectification.\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-geometry-SpatialReference.html#imageCoordinateSystem)\r\n */\r\n @JsonProperty()\r\n declare imageCoordinateSystem: any;\r\n\r\n /**\r\n * The well-known ID of a spatial reference.\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-geometry-SpatialReference.html#wkid)\r\n */\r\n @JsonProperty()\r\n declare wkid: number;\r\n\r\n /**\r\n * The well-known text that defines a spatial reference.\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-geometry-SpatialReference.html#wkt)\r\n */\r\n @JsonProperty()\r\n declare wkt: string;\r\n\r\n /**\r\n * The well-known text of the coordinate system as defined by OGC standard for well-known text strings.\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-geometry-SpatialReference.html#wkt2)\r\n */\r\n @JsonProperty()\r\n declare wkt2?: string;\r\n\r\n constructor() {}\r\n}\r\n","import { JsonObject, JsonProperty } from \"typescript-json-serializer\";\r\nimport {FontConfiguration} from \"./font-configuration\";\r\nimport {Callout3DConfiguration} from \"./callout-configuration\";\r\nimport Color from \"@arcgis/core/Color\";\r\n\r\n@JsonObject()\r\nexport class Symbol3DVerticalOffsetConfiguration {\r\n /**\r\n * The maximum vertical symbol offset in world units.\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-symbols-support-Symbol3DVerticalOffset.html#maxWorldLength)\r\n */\r\n @JsonProperty()\r\n declare screenLength?: number | string;\r\n /**\r\n * The minimum vertical symbol offset in world units.\r\n *\r\n * @default 0\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-symbols-support-Symbol3DVerticalOffset.html#minWorldLength)\r\n */\r\n @JsonProperty()\r\n declare minWorldLength?: number;\r\n /**\r\n * Vertical symbol offset in screen size.\r\n *\r\n * @default 0\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-symbols-support-Symbol3DVerticalOffset.html#screenLength)\r\n */\r\n @JsonProperty()\r\n declare maxWorldLength?: number;\r\n\r\n constructor() {}\r\n}\r\n\r\n@JsonObject()\r\nexport class SymbolConfiguration {\r\n /**\r\n * The color of the symbol.\r\n *\r\n * @default \"black\"\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-symbols-Symbol.html#color)\r\n */\r\n @JsonProperty()\r\n declare color: Color | number[] | string;\r\n\r\n /**\r\n * The symbol type.\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-symbols-Symbol.html#type)\r\n */\r\n @JsonProperty()\r\n declare type:\r\n | \"simple-marker\"\r\n | \"picture-marker\"\r\n | \"simple-line\"\r\n | \"simple-fill\"\r\n | \"picture-fill\"\r\n | \"text\"\r\n | \"shield-label-symbol\"\r\n | \"point-3d\"\r\n | \"line-3d\"\r\n | \"polygon-3d\"\r\n | \"web-style\"\r\n | \"mesh-3d\"\r\n | \"label-3d\"\r\n | \"cim\";\r\n\r\n constructor() {}\r\n}\r\n\r\n@JsonObject()\r\nexport class LineSymbolConfiguration extends SymbolConfiguration {\r\n /**\r\n * The symbol type.\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-symbols-LineSymbol.html#type)\r\n */\r\n @JsonProperty()\r\n declare type: \"simple-line\";\r\n\r\n /**\r\n * The width of the symbol in points.\r\n *\r\n * @default 0.75\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-symbols-LineSymbol.html#width)\r\n */\r\n @JsonProperty()\r\n declare width: number | string;\r\n\r\n constructor() {\r\n super();\r\n }\r\n}\r\n\r\n@JsonObject()\r\nexport class LineSymbolMarkerConfiguration {\r\n /**\r\n * The color of the marker.\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-symbols-LineSymbolMarker.html#color)\r\n */\r\n @JsonProperty()\r\n declare color: Color;\r\n\r\n /**\r\n * The placement of the marker(s) on the line.\r\n *\r\n * @default \"begin-end\"\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-symbols-LineSymbolMarker.html#placement)\r\n */\r\n @JsonProperty()\r\n declare placement: \"begin\" | \"end\" | \"begin-end\";\r\n\r\n /**\r\n * The marker style.\r\n *\r\n * @default \"arrow\"\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-symbols-LineSymbolMarker.html#style)\r\n */\r\n @JsonProperty()\r\n declare style: \"arrow\" | \"circle\" | \"square\" | \"diamond\" | \"cross\" | \"x\";\r\n /**\r\n * The symbol type.\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-symbols-LineSymbolMarker.html#type)\r\n */\r\n declare type: \"line-marker\";\r\n\r\n constructor() {}\r\n}\r\n\r\n@JsonObject()\r\nexport class SimpleLineSymbolConfiguration extends LineSymbolConfiguration {\r\n /**\r\n * Specifies the cap style.\r\n *\r\n * @default \"round\"\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-symbols-SimpleLineSymbol.html#cap)\r\n */\r\n @JsonProperty()\r\n declare cap: \"butt\" | \"round\" | \"square\";\r\n\r\n /**\r\n * Specifies the join style.\r\n *\r\n * @default \"round\"\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-symbols-SimpleLineSymbol.html#join)\r\n */\r\n @JsonProperty()\r\n declare join: \"miter\" | \"round\" | \"bevel\";\r\n\r\n /**\r\n * Specifies the color, style, and placement of a symbol marker on the line.\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-symbols-SimpleLineSymbol.html#marker)\r\n */\r\n @JsonProperty()\r\n declare marker?: LineSymbolMarkerConfiguration;\r\n\r\n /**\r\n * Maximum allowed ratio of the width of a miter join to the line width.\r\n *\r\n * @default 2\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-symbols-SimpleLineSymbol.html#miterLimit)\r\n */\r\n @JsonProperty()\r\n declare miterLimit: number;\r\n\r\n /**\r\n * Specifies the line style.\r\n *\r\n * @default \"solid\"\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-symbols-SimpleLineSymbol.html#style)\r\n */\r\n @JsonProperty()\r\n declare style:\r\n | \"dash\"\r\n | \"dash-dot\"\r\n | \"dot\"\r\n | \"long-dash\"\r\n | \"long-dash-dot\"\r\n | \"long-dash-dot-dot\"\r\n | \"none\"\r\n | \"short-dash\"\r\n | \"short-dash-dot\"\r\n | \"short-dash-dot-dot\"\r\n | \"short-dot\"\r\n | \"solid\";\r\n\r\n constructor() {\r\n super();\r\n }\r\n}\r\n\r\n@JsonObject()\r\nexport class FillSymbolConfiguration extends SymbolConfiguration {\r\n /**\r\n * The outline of the polygon.\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-symbols-FillSymbol.html#outline)\r\n */\r\n @JsonProperty()\r\n declare outline: SimpleLineSymbolConfiguration;\r\n\r\n /**\r\n * The symbol type.\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-symbols-FillSymbol.html#type)\r\n */\r\n @JsonProperty()\r\n declare type: \"simple-fill\" | \"picture-fill\";\r\n\r\n constructor() {\r\n super();\r\n }\r\n}\r\n\r\n@JsonObject()\r\nexport class MarkerSymbolConfiguration extends SymbolConfiguration {\r\n /**\r\n * The angle of the marker relative to the screen in degrees.\r\n *\r\n * @default 0\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-symbols-MarkerSymbol.html#angle)\r\n */\r\n @JsonProperty()\r\n declare angle: number;\r\n\r\n /**\r\n * The symbol type.\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-symbols-MarkerSymbol.html#type)\r\n */\r\n @JsonProperty()\r\n declare type: \"simple-marker\" | \"picture-marker\";\r\n\r\n /**\r\n * The offset on the x-axis in points.\r\n *\r\n * @default 0\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-symbols-MarkerSymbol.html#xoffset)\r\n */\r\n @JsonProperty()\r\n declare xoffset: number;\r\n\r\n /**\r\n * The offset on the y-axis in points.\r\n *\r\n * @default 0\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-symbols-MarkerSymbol.html#yoffset)\r\n */\r\n @JsonProperty()\r\n declare yoffset: number;\r\n\r\n constructor() {\r\n super();\r\n }\r\n}\r\n\r\n@JsonObject()\r\nexport class PictureMarkerSymbolConfiguration extends MarkerSymbolConfiguration {\r\n /**\r\n * The height of the image in points.\r\n *\r\n * @default 12\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-symbols-PictureMarkerSymbol.html#height)\r\n */\r\n @JsonProperty()\r\n declare height: number;\r\n\r\n /**\r\n * The symbol type.\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-symbols-PictureMarkerSymbol.html#type)\r\n */\r\n @JsonProperty()\r\n declare readonly type: \"picture-marker\";\r\n\r\n /**\r\n * The URL to an image or SVG document.\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-symbols-PictureMarkerSymbol.html#url)\r\n */\r\n @JsonProperty()\r\n declare url: string;\r\n\r\n /**\r\n * The width of the image in points.\r\n *\r\n * @default 12\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-symbols-PictureMarkerSymbol.html#width)\r\n */\r\n @JsonProperty()\r\n declare width: number;\r\n\r\n constructor() {\r\n super();\r\n }\r\n}\r\n\r\n@JsonObject()\r\nexport class SimpleMarkerSymbolConfiguration extends MarkerSymbolConfiguration {\r\n /**\r\n * The outline of the marker symbol.\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-symbols-SimpleMarkerSymbol.html#outline)\r\n */\r\n @JsonProperty()\r\n declare outline: SimpleLineSymbolConfiguration;\r\n\r\n /**\r\n * The SVG path of the icon.\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-symbols-SimpleMarkerSymbol.html#path)\r\n */\r\n @JsonProperty()\r\n declare path: string;\r\n\r\n /**\r\n * The size of the marker in points.\r\n *\r\n * @default 12\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-symbols-SimpleMarkerSymbol.html#size)\r\n */\r\n @JsonProperty()\r\n declare size: number;\r\n\r\n /**\r\n * The marker style.\r\n *\r\n * @default \"circle\"\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-symbols-SimpleMarkerSymbol.html#style)\r\n */\r\n @JsonProperty()\r\n declare style: \"circle\" | \"square\" | \"cross\" | \"x\" | \"diamond\" | \"triangle\" | \"path\";\r\n\r\n /**\r\n * The symbol type.\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-symbols-SimpleMarkerSymbol.html#type)\r\n */\r\n @JsonProperty()\r\n declare readonly type: \"simple-marker\";\r\n\r\n constructor() {\r\n super();\r\n }\r\n}\r\n\r\n@JsonObject()\r\nexport class TextSymbolConfiguration extends SymbolConfiguration {\r\n /**\r\n * The angle of the text.\r\n *\r\n * @default 0\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-symbols-TextSymbol.html#angle)\r\n */\r\n @JsonProperty()\r\n declare angle?: number;\r\n /**\r\n * The background color of the label's bounding box.\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-symbols-TextSymbol.html#backgroundColor)\r\n */\r\n @JsonProperty()\r\n declare backgroundColor?: Color | number[] | string;\r\n /**\r\n * The border color of the label's bounding box.\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-symbols-TextSymbol.html#borderLineColor)\r\n */\r\n @JsonProperty()\r\n declare borderLineColor?: Color | number[] | string;\r\n /**\r\n * The border size or width of the label's bounding box.\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-symbols-TextSymbol.html#borderLineSize)\r\n */\r\n @JsonProperty()\r\n declare borderLineSize?: number;\r\n /**\r\n * The [Font](https://developers.arcgis.com/javascript/latest/api-reference/esri-symbols-Font.html) used to style the text.\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-symbols-TextSymbol.html#font)\r\n */\r\n @JsonProperty()\r\n declare font?: FontConfiguration;\r\n /**\r\n * The color of the text symbol's halo.\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-symbols-TextSymbol.html#haloColor)\r\n */\r\n @JsonProperty()\r\n declare haloColor?: Color | number[] | string;\r\n /**\r\n * The size in points of the text symbol's halo.\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-symbols-TextSymbol.html#haloSize)\r\n */\r\n @JsonProperty()\r\n declare haloSize?: number | string;\r\n /**\r\n * Adjusts the horizontal alignment of the text in multi-lines.\r\n *\r\n * @default \"center\"\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-symbols-TextSymbol.html#horizontalAlignment)\r\n */\r\n @JsonProperty()\r\n declare horizontalAlignment?: \"left\" | \"right\" | \"center\";\r\n /**\r\n * Determines whether to adjust the spacing between characters in the text string.\r\n *\r\n * @default true\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-symbols-TextSymbol.html#kerning)\r\n */\r\n @JsonProperty()\r\n declare kerning?: boolean;\r\n /**\r\n * The height of the space between each line of text.\r\n *\r\n * @default 1.0\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-symbols-TextSymbol.html#lineHeight)\r\n */\r\n @JsonProperty()\r\n declare lineHeight: number;\r\n /**\r\n * The maximum length in points for each line of text.\r\n *\r\n * @default 192\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-symbols-TextSymbol.html#lineWidth)\r\n */\r\n @JsonProperty()\r\n declare lineWidth: number;\r\n /**\r\n * Determines whether every character in the text string is rotated.\r\n *\r\n * @default false\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-symbols-TextSymbol.html#rotated)\r\n */\r\n @JsonProperty()\r\n declare rotated?: boolean;\r\n /**\r\n * The text string to display in the view.\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-symbols-TextSymbol.html#text)\r\n */\r\n @JsonProperty()\r\n declare text?: string;\r\n\r\n @JsonProperty()\r\n declare readonly type: \"text\";\r\n\r\n /**\r\n * Adjusts the vertical alignment of the text.\r\n *\r\n * @default \"baseline\"\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-symbols-TextSymbol.html#verticalAlignment)\r\n */\r\n @JsonProperty()\r\n declare verticalAlignment?: \"baseline\" | \"top\" | \"middle\" | \"bottom\";\r\n /**\r\n * The offset on the x-axis in points.\r\n *\r\n * @default 0\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-symbols-TextSymbol.html#xoffset)\r\n */\r\n @JsonProperty()\r\n declare xoffset?: number | string;\r\n /**\r\n * The offset on the y-axis in points.\r\n *\r\n * @default 0\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-symbols-TextSymbol.html#yoffset)\r\n */\r\n @JsonProperty()\r\n declare yoffset?: number | string;\r\n\r\n constructor() {\r\n super();\r\n }\r\n}\r\n\r\n\r\n@JsonObject()\r\nexport class Symbol3DStyleOriginConfiguration {\r\n /**\r\n * a well-known esri-provided style, such as `EsriThematicShapesStyle`.\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-symbols-Symbol3D.html#styleOrigin)\r\n */\r\n @JsonProperty()\r\n declare styleName?: string;\r\n /**\r\n * url to a style definition.\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-symbols-Symbol3D.html#styleOrigin)\r\n */\r\n @JsonProperty()\r\n declare styleUrl?: string;\r\n /**\r\n * name of the symbol in the style referenced by styleName or styleUrl.\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-symbols-Symbol3D.html#styleOrigin)\r\n */\r\n @JsonProperty()\r\n declare name: string;\r\n\r\n constructor() {}\r\n}\r\n\r\n@JsonObject()\r\nexport class Symbol3DConfiguration extends SymbolConfiguration {\r\n /**\r\n * The origin of the style from which the symbol was originally referenced.\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-symbols-Symbol3D.html#styleOrigin)\r\n */\r\n @JsonProperty()\r\n declare styleOrigin: Symbol3DStyleOriginConfiguration;\r\n /**\r\n * A Collection of [Symbol3DLayer](https://developers.arcgis.com/javascript/latest/api-reference/esri-symbols-Symbol3DLayer.html) objects used to visualize the graphic or feature.\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-symbols-Symbol3D.html#symbolLayers)\r\n */\r\n // @JsonProperty()\r\n // symbolLayers: Symbol3DLayerConfiguration[];\r\n\r\n constructor() {\r\n super();\r\n }\r\n}\r\n\r\n@JsonObject()\r\nexport class PolygonSymbol3DConfiguration extends Symbol3DConfiguration {\r\n /**\r\n * The symbol type.\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-symbols-PolygonSymbol3D.html#type)\r\n */\r\n @JsonProperty()\r\n declare readonly type: \"polygon-3d\";\r\n\r\n constructor() {\r\n super();\r\n }\r\n}\r\n\r\n@JsonObject()\r\nexport class LabelSymbol3DConfiguration extends Symbol3DConfiguration {\r\n /**\r\n * Settings for adding a callout visualization to the symbol.\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-symbols-LabelSymbol3D.html#callout)\r\n */\r\n @JsonProperty()\r\n declare callout?: Callout3DConfiguration;\r\n /**\r\n * A Collection of [Symbol3DLayer](https://developers.arcgis.com/javascript/latest/api-reference/esri-symbols-Symbol3DLayer.html) objects used to visualize the graphic or feature.\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-symbols-LabelSymbol3D.html#symbolLayers)\r\n */\r\n // @JsonProperty()\r\n //declare symbolLayers?: Collection<TextSymbol3DLayerConfiguration>;\r\n /**\r\n * The symbol type.\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-symbols-LabelSymbol3D.html#type)\r\n */\r\n declare readonly type: \"label-3d\";\r\n /**\r\n * Shifts the symbol along the vertical world axis by a given height.\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-symbols-LabelSymbol3D.html#verticalOffset)\r\n */\r\n @JsonProperty()\r\n declare verticalOffset?: Symbol3DVerticalOffsetConfiguration;\r\n\r\n constructor() {\r\n super();\r\n }\r\n}\r\n\r\n@JsonObject()\r\nexport class CIMSymbolConfiguration extends SymbolConfiguration {\r\n /**\r\n * The JSON payload of the [CIMSymbolReference](https://developers.arcgis.com/javascript/latest/api-reference/esri-symbols-CIMSymbol.html#CIMSymbolReference).\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-symbols-CIMSymbol.html#data)\r\n */\r\n @JsonProperty()\r\n declare data?: __esri.CIMSymbolReference;\r\n\r\n constructor() {\r\n super();\r\n }\r\n}\r\n","import { JsonObject, JsonProperty } from \"typescript-json-serializer\";\r\n\r\ntype DateProperties = number | string | Date;\r\n\r\n@JsonObject()\r\nexport class TimeExtentConfiguration {\r\n /**\r\n * The end time of the time extent.\r\n *\r\n * @default null\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-time-TimeExtent.html#end)\r\n */\r\n @JsonProperty()\r\n declare end?: DateProperties;\r\n /**\r\n * The start time of the time extent.\r\n *\r\n * @default null\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-time-TimeExtent.html#start)\r\n */\r\n @JsonProperty()\r\n declare start: DateProperties;\r\n\r\n constructor() {}\r\n}\r\n\r\n@JsonObject()\r\nexport class TimeIntervalConfiguration {\r\n /**\r\n * Temporal units.\r\n *\r\n * @default \"milliseconds\"\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-time-TimeInterval.html#unit)\r\n */\r\n @JsonProperty()\r\n declare unit?: | \"milliseconds\"\r\n | \"seconds\"\r\n | \"minutes\"\r\n | \"hours\"\r\n | \"days\"\r\n | \"weeks\"\r\n | \"months\"\r\n | \"years\"\r\n | \"decades\"\r\n | \"centuries\";\r\n\r\n /**\r\n * The numerical value of the time extent.\r\n *\r\n * @default 0\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-time-TimeInterval.html#value)\r\n */\r\n @JsonProperty()\r\n declare value?: number;\r\n\r\n constructor() {}\r\n}\r\n\r\n@JsonObject()\r\nexport class TimeInfoConfiguration {\r\n /**\r\n * The name of the field containing the end time information.\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-layers-support-TimeInfo.html#endField)\r\n */\r\n @JsonProperty()\r\n declare endField?: string;\r\n\r\n /**\r\n * The time extent defines the start time and end time for all data in the layer.\r\n *\r\n * @default null\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-layers-support-TimeInfo.html#fullTimeExtent)\r\n */\r\n @JsonProperty()\r\n declare fullTimeExtent?: TimeExtentConfiguration;\r\n\r\n /**\r\n * The time interval defines the granularity of the temporal data and allows you to visualize the data at specified intervals using the [time slider widget](https://developers.arcgis.com/javascript/latest/api-reference/esri-widgets-TimeSlider.html).\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-layers-support-TimeInfo.html#interval)\r\n */\r\n @JsonProperty()\r\n declare interval?: TimeIntervalConfiguration;\r\n\r\n /**\r\n * The name of the field containing the start time information.\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-layers-support-TimeInfo.html#startField)\r\n */\r\n @JsonProperty()\r\n declare startField?: string;\r\n\r\n /**\r\n * Indicates the time instants that the layer has data for.\r\n *\r\n * @default null\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-layers-support-TimeInfo.html#stops)\r\n */\r\n @JsonProperty()\r\n declare stops?: Array<number | string | Date>;\r\n /**\r\n * The IANA time zone that dates are stored in.\r\n *\r\n * @default null\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-layers-support-TimeInfo.html#timeZone)\r\n */\r\n @JsonProperty()\r\n declare timeZone?: string;\r\n\r\n /**\r\n * The name of the field used to join or group discrete locations.\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-layers-support-TimeInfo.html#trackIdField)\r\n */\r\n @JsonProperty()\r\n declare trackIdField: string;\r\n\r\n constructor() {}\r\n}\r\n","import { JsonObject, JsonProperty } from \"typescript-json-serializer\";\r\nimport {WidgetConfiguration} from \"./widget-configuration\";\r\nimport {GraphicConfiguration} from \"./graphic-configuration\";\r\n\r\n@JsonObject()\r\nexport class ToolBaseConfiguration {\r\n @JsonProperty()\r\n declare active?: boolean;\r\n\r\n constructor() {}\r\n}\r\nexport class ElevationProfileVisibleElementsConfiguration {\r\n /**\r\n * When set to `false`, the legend (which includes statistics) is not displayed.\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-widgets-ElevationProfile.html#VisibleElements)\r\n */\r\n @JsonProperty()\r\n declare legend?: boolean;\r\n /**\r\n * When set to `false`, the chart is not displayed.\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-widgets-ElevationProfile.html#VisibleElements)\r\n */\r\n @JsonProperty()\r\n declare chart?: boolean;\r\n /**\r\n * When set to `false` the button used to clear the current elevation profile is not displayed.\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-widgets-ElevationProfile.html#VisibleElements)\r\n */\r\n @JsonProperty()\r\n declare clearButton?: boolean;\r\n /**\r\n * When set to `false`, the button used to open the settings popup is not displayed.\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-widgets-ElevationProfile.html#VisibleElements)\r\n */\r\n @JsonProperty()\r\n declare settingsButton?: boolean;\r\n /**\r\n * When set to `false`, the button used to start drawing/sketchinng is not displayed.\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-widgets-ElevationProfile.html#VisibleElements)\r\n */\r\n @JsonProperty()\r\n declare sketchButton?: boolean;\r\n /**\r\n * When set to `false`, the button used to select a path is not displayed.\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-widgets-ElevationProfile.html#VisibleElements)\r\n */\r\n @JsonProperty()\r\n declare selectButton?: boolean;\r\n /**\r\n * When set to `false`, the dropdown used to select the units is not displayed.\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-widgets-ElevationProfile.html#VisibleElements)\r\n */\r\n @JsonProperty()\r\n declare unitSelector?: boolean;\r\n /**\r\n * When set to `false`, the element used to toggle uniform chart scaling on or off is not displayed.\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-widgets-ElevationProfile.html#VisibleElements)\r\n */\r\n @JsonProperty()\r\n declare uniformChartScalingToggle?: boolean;\r\n}\r\n@JsonObject()\r\nexport class ElevationProfileConfiguration extends WidgetConfiguration {\r\n /**\r\n * Threshold (in meters) which determines the method for computing and displaying distances in non-Web Mercator projected coordinate systems (PCS).\r\n *\r\n * @default null\r\n * @deprecated since version 4.29.\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-widgets-ElevationProfile.html#geodesicDistanceThreshold)\r\n */\r\n @JsonProperty()\r\n declare geodesicDistanceThreshold?: number;\r\n /**\r\n * The input line graphic along which elevation will be queried in order to generate an elevation profile.\r\n *\r\n * @default null\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-widgets-ElevationProfile.html#input)\r\n */\r\n @JsonProperty()\r\n declare input?: GraphicConfiguration;\r\n /**\r\n * Collection of elevation profile lines which are to be generated and displayed in the widget's chart.\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-widgets-ElevationProfile.html#profiles)\r\n */\r\n // profiles?: CollectionProperties<\r\n // | (ElevationProfileLineGroundProperties & { type: \"ground\" })\r\n // | (ElevationProfileLineInputProperties & { type: \"input\" })\r\n // | (ElevationProfileLineQueryProperties & { type: \"query\" })\r\n // | (ElevationProfileLineViewProperties & { type: \"view\" })\r\n // >;\r\n /**\r\n * Unit system (imperial, metric) or specific unit used for displaying the elevation and distance values.\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-widgets-ElevationProfile.html#unit)\r\n */\r\n @JsonProperty()\r\n declare unit?: | \"imperial\"\r\n | \"metric\"\r\n | \"millimeters\"\r\n | \"centimeters\"\r\n | \"decimeters\"\r\n | \"meters\"\r\n | \"kilometers\"\r\n | \"inches\"\r\n | \"feet\"\r\n | \"yards\"\r\n | \"miles\"\r\n | \"nautical-miles\"\r\n | \"us-feet\";\r\n /**\r\n * List of available units and unit systems (imperial, metric) for displaying the elevation and distance values.\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-widgets-ElevationProfile.html#unitOptions)\r\n */\r\n @JsonProperty()\r\n declare unitOptions?: (\r\n | \"imperial\"\r\n | \"metric\"\r\n | \"millimeters\"\r\n | \"centimeters\"\r\n | \"decimeters\"\r\n | \"meters\"\r\n | \"kilometers\"\r\n | \"inches\"\r\n | \"feet\"\r\n | \"yards\"\r\n | \"miles\"\r\n | \"nautical-miles\"\r\n | \"us-feet\"\r\n )[];\r\n /**\r\n * A reference to the [SceneView](https://developers.arcgis.com/javascript/latest/api-reference/esri-views-SceneView.html) or the [MapView](https://developers.arcgis.com/javascript/latest/api-reference/esri-views-MapView.html).\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-widgets-ElevationProfile.html#view)\r\n */\r\n // @JsonProperty()\r\n // declare view?: (SceneViewProperties & { type: \"3d\" }) | (MapViewProperties & { type: \"2d\" });\r\n /**\r\n * The view model for this widget.\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-widgets-ElevationProfile.html#viewModel)\r\n */\r\n // @JsonProperty()\r\n // declare viewModel?: ElevationProfileViewModelProperties;\r\n /**\r\n * This property provides the ability to display or hide the individual elements of the widget.\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-widgets-ElevationProfile.html#visibleElements)\r\n */\r\n @JsonProperty()\r\n declare visibleElements?: ElevationProfileVisibleElementsConfiguration;\r\n}\r\n@JsonObject()\r\nexport class ToolsConfiguration {\r\n @JsonProperty()\r\n declare profile?: ElevationProfileConfiguration;\r\n\r\n constructor() {}\r\n}\r\n","import { JsonObject, JsonProperty } from \"typescript-json-serializer\";\r\n\r\n@JsonObject()\r\nexport class TopicSwitcherConfiguration {\r\n /**\r\n * Label für erste Auswahl\r\n *\r\n * @example: \"Thema dieser Karte wechseln\"\r\n */\r\n @JsonProperty()\r\n declare button: string;\r\n /**\r\n * Default Topic\r\n *\r\n * @example: \"Produkt wählen\"\r\n */\r\n @JsonProperty()\r\n declare default: string;\r\n /**\r\n * Label für erste Auswahl\r\n *\r\n * @example: \"Thema dieser Karte wechseln\"\r\n */\r\n @JsonProperty()\r\n declare description: string;\r\n /**\r\n * Label für erste Auswahl\r\n *\r\n * @example: \"Themen\"\r\n */\r\n @JsonProperty()\r\n declare title: string;\r\n /**\r\n * Sichtbarkeit des TopicSwitcher\r\n */\r\n @JsonProperty()\r\n declare visible: Array<\"compare\" | \"header\" | \"legend\" | \"toc\" | \"view-manager\" > | null;\r\n constructor() {}\r\n}\r\n","import { JsonObject, JsonProperty } from \"typescript-json-serializer\";\r\nimport {SpatialReferenceConfiguration} from \"./spatial-reference-configuration\";\r\nimport {GeometryConfiguration, ExtentConfiguration, PointConfiguration} from \"./geometry-configuration\";\r\nimport {ColorConfiguration, ColorBackgroundConfiguration} from \"./color-configuration\";\r\nimport {MapConfiguration} from \"./map-configuration\";\r\nimport {LODConfiguration} from \"./lod-configuration\";\r\nimport {PopupConfiguration} from \"./popup-configuration\";\r\nimport {TimeExtentConfiguration} from \"./time-info-configration\";\r\nimport Collection from \"@arcgis/core/core/Collection\";\r\n@JsonObject()\r\nexport class ThemeConfiguration {\r\n /**\r\n * The base color used to render temporary graphics in the [View](https://developers.arcgis.com/javascript/latest/api-reference/esri-views-View.html).\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-views-Theme.html#accentColor)\r\n */\r\n @JsonProperty()\r\n declare accentColor?: ColorConfiguration | number[] | string;\r\n /**\r\n * The base color used to render temporary labels in the [View](https://developers.arcgis.com/javascript/latest/api-reference/esri-views-View.html).\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-views-Theme.html#textColor)\r\n */\r\n @JsonProperty()\r\n declare textColor?: ColorConfiguration | number[] | string;\r\n}\r\n@JsonObject()\r\nexport class ViewConfiguration {\r\n /** --- from DOMContainer ---*/\r\n\r\n /**\r\n * The `id` or node representing the DOM element containing the view.\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-views-DOMContainer.html#container)\r\n */\r\n @JsonProperty()\r\n declare container: HTMLDivElement;\r\n\r\n /**\r\n * Indicates if the browser focus is on the view.\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-views-DOMContainer.html#focused)\r\n */\r\n @JsonProperty()\r\n declare focused: boolean;\r\n /**\r\n * The height of the view in pixels read from the view container element.\r\n *\r\n * @default 0\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-views-DOMContainer.html#height)\r\n */\r\n @JsonProperty()\r\n declare height: number;\r\n\r\n\r\n /**\r\n * Exposes the default widgets available in the view and allows you to toggle them on and off.\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-views-DOMContainer.html#ui)\r\n */\r\n // @JsonProperty()\r\n // ui: DefaultUI;\r\n\r\n /**\r\n * The width of the view in pixels read from the view container element.\r\n *\r\n * @default 0\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-views-DOMContainer.html#width)\r\n */\r\n @JsonProperty()\r\n declare width: number;\r\n\r\n /** --- end from DOMContainer ---*/\r\n\r\n /**\r\n * Collection containing a flat list of all the created [LayerViews](https://developers.arcgis.com/javascript/latest/api-reference/esri-views-layers-LayerView.html) related to the basemap, operational layers, and group layers in this view.\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-views-View.html#allLayerViews)\r\n */\r\n // @JsonProperty()\r\n // declare allLayerViews: Collection<LayerView>;\r\n /**\r\n * Represents an ongoing view animation initialized by [goTo()](https://developers.arcgis.com/javascript/latest/api-reference/esri-views-MapView.html#goTo).\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-views-View.html#animation)\r\n */\r\n // @JsonProperty()\r\n // declare animation: ViewAnimation;\r\n /**\r\n * Represents the view for a single basemap after it has been added to the map.\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-views-View.html#basemapView)\r\n */\r\n // declare basemapView: BasemapView;\r\n /**\r\n * A fatal [error](https://developers.arcgis.com/javascript/latest/api-reference/esri-core-Error.html) returned when the view loses its WebGL context.\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-views-View.html#fatalError)\r\n */\r\n // fatalError: Error;\r\n /**\r\n * Allows for adding [graphics](https://developers.arcgis.com/javascript/latest/api-reference/esri-Graphic.html) directly to the default graphics in the View.\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-views-View.html#graphics)\r\n */\r\n // @JsonProperty()\r\n // declare graphics: Collection<GraphicConfiguration>;\r\n\r\n /**\r\n * A collection containing a hierarchical list of all the created [LayerViews](https://developers.arcgis.com/javascript/latest/api-reference/esri-views-layers-LayerView.html) of the [operational layers](https://developers.arcgis.com/javascript/latest/api-reference/esri-Map.html#layers) in the map.\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-views-View.html#layerViews)\r\n */\r\n // @JsonProperty()\r\n // declare layerViews: Collection<LayerView>;\r\n /**\r\n * An instance of a [Map](https://developers.arcgis.com/javascript/latest/api-reference/esri-Map.html) object to display in the view.\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-views-View.html#map)\r\n */\r\n @JsonProperty()\r\n declare map: MapConfiguration;\r\n\r\n /**\r\n * Use the padding property to make the [center](https://developers.arcgis.com/javascript/latest/api-reference/esri-views-MapView.html#center), and [extent](https://developers.arcgis.com/javascript/latest/api-reference/esri-views-MapView.html#extent), etc.\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-views-View.html#padding)\r\n */\r\n // @JsonProperty()\r\n // declare navigation: NavigationConfiguration;\r\n\r\n /**\r\n * Use the padding property to make the [center](https://developers.arcgis.com/javascript/latest/api-reference/esri-views-MapView.html#center), and [extent](https://developers.arcgis.com/javascript/latest/api-reference/esri-views-MapView.html#extent), etc.\r\n *\r\n * @default {left: 0, top: 0, right: 0, bottom: 0}\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-views-View.html#padding)\r\n */\r\n // @JsonProperty()\r\n // declare padding: ViewPadding;\r\n\r\n /**\r\n * The spatial reference of the view.\r\n *\r\n * @default null\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-views-View.html#spatialReference)\r\n */\r\n @JsonProperty()\r\n declare spatialReference: SpatialReferenceConfiguration;\r\n\r\n /**\r\n * This property specifies the base colors used by some widgets and components to render graphics and labels.\r\n *\r\n * @default null\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-views-View.html#theme)\r\n */\r\n @JsonProperty()\r\n declare theme?: ThemeConfiguration;\r\n\r\n /**\r\n * The view's time extent.\r\n *\r\n * @default null\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-views-View.html#timeExtent)\r\n */\r\n @JsonProperty()\r\n declare timeExtent: TimeExtentConfiguration;\r\n /** --- from PopupViewProperties --- */\r\n /**\r\n * A [Popup](https://developers.arcgis.com/javascript/latest/api-reference/esri-widgets-Popup.html) object that displays general content or attributes from [layers](https://developers.arcgis.com/javascript/latest/api-reference/esri-Map.html#layers) in the [map](https://developers.arcgis.com/javascript/latest/api-reference/esri-views-PopupView.html#map).\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-views-PopupView.html#popup)\r\n */\r\n @JsonProperty()\r\n declare popup?: PopupConfiguration;\r\n /**\r\n * Controls whether the popup opens when users click on the view.\r\n *\r\n * @default true\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-views-PopupView.html#popupEnabled)\r\n */\r\n @JsonProperty()\r\n declare popupEnabled?: boolean;\r\n /** --- end from PopupViewProperties --- */\r\n constructor() {}\r\n}\r\n\r\n@JsonObject()\r\nexport class MapViewConstraintsConfiguration {\r\n /**\r\n * An array of [LODs](https://developers.arcgis.com/javascript/latest/api-reference/esri-layers-support-LOD.html).\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-views-MapView.html#constraints)\r\n */\r\n @JsonProperty()\r\n declare lods?: LODConfiguration[];\r\n /**\r\n * The area in which the user is allowed to navigate laterally.\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-views-MapView.html#constraints)\r\n */\r\n @JsonProperty()\r\n declare geometry?: GeometryConfiguration;\r\n /**\r\n * The minimum [scale](https://developers.arcgis.com/javascript/latest/api-reference/esri-views-MapView.html#scale) the user is allowed to zoom to within the view.\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-views-MapView.html#constraints)\r\n */\r\n @JsonProperty()\r\n declare minScale?: number;\r\n /**\r\n * The maximum [scale](https://developers.arcgis.com/javascript/latest/api-reference/esri-views-MapView.html#scale) the user is allowed to zoom to within the view.\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-views-MapView.html#constraints)\r\n */\r\n @JsonProperty()\r\n declare maxScale?: number;\r\n /**\r\n * The minimum [zoom](https://developers.arcgis.com/javascript/latest/api-reference/esri-views-MapView.html#zoom) level the user is allowed to zoom to within the view.\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-views-MapView.html#constraints)\r\n */\r\n @JsonProperty()\r\n declare minZoom?: number;\r\n /**\r\n * The maximum [zoom](https://developers.arcgis.com/javascript/latest/api-reference/esri-views-MapView.html#zoom) level the user is allowed to zoom to within the view.\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-views-MapView.html#constraints)\r\n */\r\n @JsonProperty()\r\n declare maxZoom?: number;\r\n /**\r\n * When `true`, the view snaps to the next LOD when zooming in or out.\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-views-MapView.html#constraints)\r\n */\r\n @JsonProperty()\r\n declare snapToZoom?: boolean;\r\n /**\r\n * Indicates whether the user can rotate the map.\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-views-MapView.html#constraints)\r\n */\r\n @JsonProperty()\r\n declare rotationEnabled?: boolean;\r\n /**\r\n * A read-only property that specifies the levels of detail (LODs) read from the [Map](https://developers.arcgis.com/javascript/latest/api-reference/esri-Map.html).\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-views-MapView.html#constraints)\r\n */\r\n @JsonProperty()\r\n declare effectiveLODs?: LODConfiguration[];\r\n /**\r\n * A read-only property that specifies the minimum [zoom](https://developers.arcgis.com/javascript/latest/api-reference/esri-views-MapView.html#zoom) level the user is allowed to zoom to within the view.\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-views-MapView.html#constraints)\r\n */\r\n @JsonProperty()\r\n declare effectiveMinZoom?: number;\r\n /**\r\n * A read-only property that specifies the maximum [zoom](https://developers.arcgis.com/javascript/latest/api-reference/esri-views-MapView.html#zoom) level the user is allowed to zoom to within the view.\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-views-MapView.html#constraints)\r\n */\r\n @JsonProperty()\r\n declare effectiveMaxZoom?: number;\r\n /**\r\n * A read-only property that specifies the minimum [scale](https://developers.arcgis.com/javascript/latest/api-reference/esri-views-MapView.html#scale) the user is allowed to zoom to within the view.\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-views-MapView.html#constraints)\r\n */\r\n @JsonProperty()\r\n declare effectiveMinScale?: number;\r\n /**\r\n * A read-only property that specifies the maximum [scale](https://developers.arcgis.com/javascript/latest/api-reference/esri-views-MapView.html#scale) the user is allowed to zoom to within the view.\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-views-MapView.html#constraints)\r\n */\r\n @JsonProperty()\r\n declare effectiveMaxScale?: number;\r\n\r\n constructor() {}\r\n}\r\n@JsonObject()\r\nexport class CameraLayoutConfiguration {\r\n /**\r\n * The active column a display client renders to in a tiled display setup.\r\n *\r\n * @default 0\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-CameraLayout.html#column)\r\n */\r\n @JsonProperty()\r\n declare column?: number;\r\n /**\r\n * The number of columns to decompose the camera in a tiled display setup.\r\n *\r\n * @default 1\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-CameraLayout.html#columns)\r\n */\r\n @JsonProperty()\r\n declare columns?: number;\r\n /**\r\n * The active row a display client renders to in a tiled display setup.\r\n *\r\n * @default 0\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-CameraLayout.html#row)\r\n */\r\n @JsonProperty()\r\n declare row?: number;\r\n /**\r\n * The number of rows to decompose the camera in a tiled display setup.\r\n *\r\n * @default 1\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-CameraLayout.html#rows)\r\n */\r\n @JsonProperty()\r\n declare rows?: number;\r\n}\r\n@JsonObject()\r\nexport class CameraConfiguration {\r\n /**\r\n * The diagonal field of view (fov) angle for the camera.\r\n *\r\n * @default 55\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-Camera.html#fov)\r\n */\r\n @JsonProperty()\r\n declare fov?: number;\r\n /**\r\n * The compass heading of the camera in degrees.\r\n *\r\n * @default 0\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-Camera.html#heading)\r\n */\r\n @JsonProperty()\r\n declare heading?: number;\r\n /**\r\n * The layout defines which sub-region of the camera is rendered.\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-Camera.html#layout)\r\n */\r\n @JsonProperty()\r\n declare layout?: CameraLayoutConfiguration;\r\n /**\r\n * The position of the camera defined by a map point.\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-Camera.html#position)\r\n */\r\n @JsonProperty()\r\n declare position?: PointConfiguration;\r\n /**\r\n * The tilt of the camera in degrees with respect to the surface as projected down from the camera position.\r\n *\r\n * @default 0\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-Camera.html#tilt)\r\n */\r\n @JsonProperty()\r\n declare tilt?: number;\r\n\r\n constructor() {}\r\n}\r\n\r\n@JsonObject()\r\nexport class ViewpointConfiguration {\r\n /**\r\n * The viewpoint camera (3D only).\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-Viewpoint.html#camera)\r\n */\r\n @JsonProperty()\r\n declare camera?: CameraConfiguration;\r\n /**\r\n * The rotation of due north in relation to the top of the view in degrees.\r\n *\r\n * @default 0\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-Viewpoint.html#rotation)\r\n */\r\n @JsonProperty()\r\n declare rotation?: number;\r\n /**\r\n * The scale of the viewpoint.\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-Viewpoint.html#scale)\r\n */\r\n @JsonProperty()\r\n declare scale?: number;\r\n /**\r\n * The target geometry framed by the viewpoint.\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-Viewpoint.html#targetGeometry)\r\n */\r\n @JsonProperty()\r\n declare targetGeometry?: GeometryConfiguration;\r\n\r\n constructor() {}\r\n}\r\n@JsonObject()\r\nexport class HighlightOptionsConfiguration {\r\n /**\r\n * The color of the highlight fill.\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-views-View.html#HighlightOptions)\r\n */\r\n @JsonProperty()\r\n declare color?: ColorConfiguration | number[] | string;\r\n\r\n /**\r\n * The color of the halo surrounding the highlight.\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-views-View.html#HighlightOptions)\r\n */\r\n @JsonProperty()\r\n declare haloColor?: ColorConfiguration | number[] | string;\r\n\r\n /**\r\n * The opacity of the highlight halo.\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-views-View.html#HighlightOptions)\r\n */\r\n @JsonProperty()\r\n declare haloOpacity?: number;\r\n\r\n /**\r\n * The opacity of the fill (area within the halo).\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-views-View.html#HighlightOptions)\r\n */\r\n @JsonProperty()\r\n declare fillOpacity?: number;\r\n\r\n /**\r\n * The color of the highlighted feature's shadow in [3D SceneView](https://developers.arcgis.com/javascript/latest/api-reference/esri-views-SceneView.html).\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-views-View.html#HighlightOptions)\r\n */\r\n @JsonProperty()\r\n declare shadowColor?: ColorConfiguration;\r\n /**\r\n * The opacity of the highlighted feature's shadow.\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-views-View.html#HighlightOptions)\r\n */\r\n @JsonProperty()\r\n declare shadowOpacity?: number;\r\n /**\r\n * Defines the intensity of the shadow area obtained by overlapping the shadow of the highlighted feature and the shadow of other objects in [3D SceneView](https://developers.arcgis.com/javascript/latest/api-reference/esri-views-SceneView.html).\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-views-View.html#HighlightOptions)\r\n */\r\n @JsonProperty()\r\n declare shadowDifference?: number;\r\n\r\n constructor() {}\r\n}\r\n@JsonObject()\r\nexport class MapViewConfiguration extends ViewConfiguration {\r\n /** --- from View2DProperties --- */\r\n /**\r\n * The background color of the MapView.\r\n *\r\n * @default null\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-views-View2D.html#background)\r\n */\r\n @JsonProperty()\r\n declare background: ColorBackgroundConfiguration;\r\n /**\r\n * Represents the view's center point; when setting the center, you may pass a [Point](https://developers.arcgis.com/javascript/latest/api-reference/esri-geometry-Point.html) instance or an array of numbers representing a longitude/latitude pair (`[-100.4593, 36.9014]`).\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-views-View2D.html#center)\r\n */\r\n @JsonProperty()\r\n declare center?: (PointConfiguration & { type: \"point\" }) | number[];\r\n /**\r\n * Specifies constraints to [scale](https://developers.arcgis.com/javascript/latest/api-reference/esri-views-View2D.html#scale), [zoom](https://developers.arcgis.com/javascript/latest/api-reference/esri-views-View2D.html#zoom), and [rotation](https://developers.arcgis.com/javascript/latest/api-reference/esri-views-View2D.html#rotation) that may be applied to the MapView.\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-views-View2D.html#constraints)\r\n */\r\n @JsonProperty()\r\n declare constraints: MapViewConstraintsConfiguration;\r\n /**\r\n * The extent represents the visible portion of a [map](https://developers.arcgis.com/javascript/latest/api-reference/esri-Map.html) within the view as an instance of [Extent](https://developers.arcgis.com/javascript/latest/api-reference/esri-geometry-Extent.html).\r\n *\r\n * @default null\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-views-View2D.html#extent)\r\n */\r\n @JsonProperty()\r\n declare extent: ExtentConfiguration;\r\n /**\r\n * Applies a display filter on the view for a specific set of floor levels.\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-views-View2D.html#floors)\r\n */\r\n @JsonProperty()\r\n declare floors?: Collection<string>;\r\n /**\r\n * Options for configuring the highlight.\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-views-View2D.html#highlightOptions)\r\n */\r\n @JsonProperty()\r\n declare highlightOptions: HighlightOptionsConfiguration;\r\n /**\r\n * Defines which anchor stays still while resizing the browser window.\r\n *\r\n * @default \"center\"\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-views-View2D.html#resizeAlign)\r\n */\r\n @JsonProperty()\r\n declare resizeAlign?: | \"center\"\r\n | \"left\"\r\n | \"right\"\r\n | \"top\"\r\n | \"bottom\"\r\n | \"top-left\"\r\n | \"top-right\"\r\n | \"bottom-left\"\r\n | \"bottom-right\";\r\n /**\r\n * The clockwise rotation of due north in relation to the top of the view in degrees.\r\n *\r\n * @default 0\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-views-View2D.html#rotation)\r\n */\r\n @JsonProperty()\r\n declare rotation?: number;\r\n /**\r\n * Represents the map scale at the center of the view.\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-views-View2D.html#scale)\r\n */\r\n @JsonProperty()\r\n declare scale?: number;\r\n /**\r\n * Indicates if the MapView's [spatialReference](https://developers.arcgis.com/javascript/latest/api-reference/esri-views-View2D.html#spatialReference) can be changed after it is initialized.\r\n *\r\n * @default false\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-views-View2D.html#spatialReferenceLocked)\r\n */\r\n @JsonProperty()\r\n declare spatialReferenceLocked?: boolean;\r\n /**\r\n * Defines the time zone of the view.\r\n *\r\n * @default \"system\"\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-views-View2D.html#timeZone)\r\n */\r\n @JsonProperty()\r\n declare timeZone?: string;\r\n\r\n /**\r\n * Represents the current view as a [Viewpoint](https://developers.arcgis.com/javascript/latest/api-reference/esri-Viewpoint.html) or point of observation on the view.\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-views-MapView.html#viewpoint)\r\n */\r\n @JsonProperty()\r\n declare viewpoint?: ViewpointConfiguration;\r\n /**\r\n * Represents the level of detail (LOD) at the center of the view.\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-views-View2D.html#zoom)\r\n */\r\n @JsonProperty()\r\n declare zoom?: number;\r\n /** --- end from View2DProperties --- */\r\n\r\n /** --- from PopupViewProperties --- */\r\n /**\r\n * A [Popup](https://developers.arcgis.com/javascript/latest/api-reference/esri-widgets-Popup.html) object that displays general content or attributes from [layers](https://developers.arcgis.com/javascript/latest/api-reference/esri-Map.html#layers) in the [map](https://developers.arcgis.com/javascript/latest/api-reference/esri-views-PopupView.html#map).\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-views-PopupView.html#popup)\r\n */\r\n @JsonProperty()\r\n declare popup?: PopupConfiguration;\r\n /**\r\n * Controls whether the popup opens when users click on the view.\r\n *\r\n * @default true\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-views-PopupView.html#popupEnabled)\r\n */\r\n @JsonProperty()\r\n declare popupEnabled?: boolean;\r\n /** --- end from PopupViewProperties --- */\r\n\r\n constructor() {\r\n super();\r\n }\r\n}\r\n\r\n@JsonObject()\r\nexport class InitialViewConfiguration {\r\n /**\r\n * The background color of the [WebMap](https://developers.arcgis.com/javascript/latest/api-reference/esri-WebMap.html).\r\n *\r\n * @default null\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-webmap-InitialViewProperties.html#background)\r\n */\r\n @JsonProperty()\r\n declare background: ColorBackgroundConfiguration;\r\n /**\r\n * The spatial reference of the [WebMap](https://developers.arcgis.com/javascript/latest/api-reference/esri-WebMap.html).\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-webmap-InitialViewProperties.html#spatialReference)\r\n */\r\n @JsonProperty()\r\n declare spatialReference: SpatialReferenceConfiguration;\r\n\r\n /**\r\n * The initial [time extent](https://developers.arcgis.com/javascript/latest/api-reference/esri-time-TimeExtent.html) of the [WebMap](https://developers.arcgis.com/javascript/latest/api-reference/esri-WebMap.html).\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-webmap-InitialViewProperties.html#timeExtent)\r\n */\r\n @JsonProperty()\r\n declare timeExtent: TimeExtentConfiguration;\r\n\r\n /**\r\n * The initial time zone of the [WebMap](https://developers.arcgis.com/javascript/latest/api-reference/esri-WebMap.html).\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-webmap-InitialViewProperties.html#timeZone)\r\n */\r\n @JsonProperty()\r\n declare timeZone: string;\r\n\r\n /**\r\n * The initial viewpoint of the [WebMap](https://developers.arcgis.com/javascript/latest/api-reference/esri-WebMap.html).\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-webmap-InitialViewProperties.html#viewpoint)\r\n */\r\n @JsonProperty()\r\n declare viewpoint: ViewpointConfiguration;\r\n\r\n constructor() {}\r\n}\r\n","import {JsonObject, JsonProperty} from \"typescript-json-serializer\";\r\n\r\n@JsonObject()\r\nexport class VisibleElementsSnappingControlsElementsConfiguration {\r\n /**\r\n * Indicates whether to display the header.\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-widgets-Editor.html#VisibleElements)\r\n */\r\n @JsonProperty()\r\n declare header?: boolean;\r\n /**\r\n * Indicates whether to display the `enabledToggle` (Enable snapping).\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-widgets-Editor.html#VisibleElements)\r\n */\r\n @JsonProperty()\r\n declare enabledToggle?: boolean;\r\n /**\r\n * Indicates whether to display the `selfEnabledToggle` (Geometry guides).\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-widgets-Editor.html#VisibleElements)\r\n */\r\n @JsonProperty()\r\n declare selfEnabledToggle?: boolean;\r\n /**\r\n * Indicates whether to display the `featureEnabledToggle` (Feature to feature).\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-widgets-Editor.html#VisibleElements)\r\n */\r\n @JsonProperty()\r\n declare featureEnabledToggle?: boolean;\r\n /**\r\n * Indicates whether to display the [FeatureSnappingLayerSource](https://developers.arcgis.com/javascript/latest/api-reference/esri-views-interactive-snapping-FeatureSnappingLayerSource.html) layerList.\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-widgets-Editor.html#VisibleElements)\r\n */\r\n @JsonProperty()\r\n declare layerList?: boolean;\r\n /**\r\n * Indicates whether to display the “Enable all” or “Disable all” button to enable / disable snapping for all the layers in the list.\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-widgets-Editor.html#VisibleElements)\r\n */\r\n @JsonProperty()\r\n declare layerListToggleLayersButton?: boolean;\r\n\r\n constructor() {}\r\n}\r\n","import { JsonObject, JsonProperty } from \"typescript-json-serializer\";\r\nimport {ColorConfiguration} from \"./color-configuration\";\r\n\r\n@JsonObject()\r\nexport class VisualVariableLegendOptionsConfiguration {\r\n /**\r\n * Indicates whether to show the visual variable in the legend.\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-renderers-visualVariables-VisualVariable.html#legendOptions)\r\n */\r\n @JsonProperty()\r\n declare showLegend?: boolean;\r\n /**\r\n * The title describing the visualization of the visual variable in the [Legend](https://developers.arcgis.com/javascript/latest/api-reference/esri-widgets-Legend.html).\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-renderers-visualVariables-VisualVariable.html#legendOptions)\r\n */\r\n @JsonProperty()\r\n declare title?: string;\r\n\r\n}\r\n\r\n@JsonObject()\r\nexport class VisualVariableConfiguration {\r\n /**\r\n * The name of the numeric attribute field that contains the data values used to determine the color/opacity/size/rotation of each feature.\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-renderers-visualVariables-VisualVariable.html#field)\r\n */\r\n @JsonProperty()\r\n declare field: string;\r\n /**\r\n * An object providing options for displaying the visual variable in the [Legend](https://developers.arcgis.com/javascript/latest/api-reference/esri-widgets-Legend.html).\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-renderers-visualVariables-VisualVariable.html#legendOptions)\r\n */\r\n @JsonProperty()\r\n declare legendOptions: VisualVariableLegendOptionsConfiguration;\r\n /**\r\n * The visual variable type.\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-renderers-visualVariables-VisualVariable.html#type)\r\n */\r\n @JsonProperty()\r\n declare type: \"color\" | \"opacity\" | \"rotation\" | \"size\";\r\n /**\r\n * An [Arcade](https://developers.arcgis.com/javascript/latest/arcade/) expression following the specification defined by the [Arcade Visualization Profile](https://developers.arcgis.com/javascript/latest/arcade/#visualization).\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-renderers-visualVariables-VisualVariable.html#valueExpression)\r\n */\r\n @JsonProperty()\r\n declare valueExpression: string;\r\n /**\r\n * The title identifying and describing the associated [Arcade](https://developers.arcgis.com/javascript/latest/arcade/) expression as defined in the [valueExpression](https://developers.arcgis.com/javascript/latest/api-reference/esri-renderers-visualVariables-VisualVariable.html#valueExpression) property.\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-renderers-visualVariables-VisualVariable.html#valueExpressionTitle)\r\n */\r\n @JsonProperty()\r\n declare valueExpressionTitle: string;\r\n\r\n constructor() {}\r\n}\r\n\r\n@JsonObject()\r\nexport class ColorVariableConfiguration extends VisualVariableConfiguration {\r\n /**\r\n * Name of the numeric attribute field by which to normalize the data.\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-renderers-visualVariables-ColorVariable.html#normalizationField)\r\n */\r\n @JsonProperty()\r\n declare normalizationField: string;\r\n /**\r\n * An array of sequential objects, or stops, that defines a continuous color ramp.\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-renderers-visualVariables-ColorVariable.html#stops)\r\n */\r\n @JsonProperty()\r\n declare stops: ColorStopConfiguration[];\r\n /**\r\n * The visual variable type.\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-renderers-visualVariables-ColorVariable.html#type)\r\n */\r\n @JsonProperty()\r\n declare readonly type: \"color\";\r\n\r\n constructor() {\r\n super();\r\n }\r\n}\r\n\r\n@JsonObject()\r\nexport class OpacityVariableConfiguration extends VisualVariableConfiguration {\r\n /**\r\n * Name of the numeric attribute field by which to normalize the data.\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-renderers-visualVariables-OpacityVariable.html#normalizationField)\r\n */\r\n @JsonProperty()\r\n declare normalizationField: string;\r\n /**\r\n * An array of objects that defines the opacity to apply to features in a layer in a sequence of stops.\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-renderers-visualVariables-OpacityVariable.html#stops)\r\n */\r\n @JsonProperty()\r\n declare stops: OpacityStopConfiguration[];\r\n /**\r\n * The visual variable type.\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-renderers-visualVariables-OpacityVariable.html#type)\r\n */\r\n @JsonProperty()\r\n declare readonly type: \"opacity\";\r\n\r\n constructor() {\r\n super();\r\n }\r\n\r\n}\r\n\r\n@JsonObject()\r\nexport class RotationVariableConfiguration extends VisualVariableConfiguration {\r\n /**\r\n * Only applicable when working in a [SceneView](https://developers.arcgis.com/javascript/latest/api-reference/esri-views-SceneView.html) with an [ObjectSymbol3DLayer](https://developers.arcgis.com/javascript/latest/api-reference/esri-symbols-ObjectSymbol3DLayer.html).\r\n *\r\n * @default \"heading\"\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-renderers-visualVariables-RotationVariable.html#axis)\r\n */\r\n @JsonProperty()\r\n axis: \"heading\" | \"tilt\" | \"roll\";\r\n /**\r\n * Defines the origin and direction of rotation depending on how the angle of rotation was measured.\r\n *\r\n * @default \"geographic\"\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-renderers-visualVariables-RotationVariable.html#rotationType)\r\n */\r\n @JsonProperty()\r\n rotationType: \"geographic\" | \"arithmetic\";\r\n /**\r\n * The visual variable type.\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-renderers-visualVariables-RotationVariable.html#type)\r\n */\r\n @JsonProperty()\r\n declare readonly type: \"rotation\";\r\n\r\n constructor() {\r\n super();\r\n }\r\n}\r\n\r\n@JsonObject()\r\nexport class SizeVariableConfiguration extends VisualVariableConfiguration {\r\n /**\r\n * Only applicable when working in a [SceneView](https://developers.arcgis.com/javascript/latest/api-reference/esri-views-SceneView.html).\r\n *\r\n * @default \"all\"\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-renderers-visualVariables-SizeVariable.html#axis)\r\n */\r\n @JsonProperty()\r\n declare axis: \"width\" | \"depth\" | \"height\" | \"width-and-depth\" | \"all\";\r\n\r\n /**\r\n * The maximum data value used in the size ramp.\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-renderers-visualVariables-SizeVariable.html#maxDataValue)\r\n */\r\n @JsonProperty()\r\n declare maxDataValue: number;\r\n /**\r\n * The size used to render a feature containing the maximum data value.\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-renderers-visualVariables-SizeVariable.html#maxSize)\r\n */\r\n @JsonProperty()\r\n declare maxSize?: number | (ScaleDependentStopsConfiguration & { type: \"size\" }) | string;\r\n /**\r\n * The minimum data value used in the size ramp.\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-renderers-visualVariables-SizeVariable.html#minDataValue)\r\n */\r\n @JsonProperty()\r\n declare minDataValue: number;\r\n /**\r\n * The size used to render a feature containing the minimum data value.\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-renderers-visualVariables-SizeVariable.html#minSize)\r\n */\r\n @JsonProperty()\r\n declare minSize: number | (ScaleDependentStopsConfiguration & { type: \"size\" }) | string;\r\n /**\r\n * The name of the numeric attribute field used to normalize the data in the given [field](https://developers.arcgis.com/javascript/latest/api-reference/esri-renderers-visualVariables-SizeVariable.html#field).\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-renderers-visualVariables-SizeVariable.html#normalizationField)\r\n */\r\n @JsonProperty()\r\n declare normalizationField: string;\r\n /**\r\n * An array of objects that defines the mapping of data values returned from [field](https://developers.arcgis.com/javascript/latest/api-reference/esri-renderers-visualVariables-SizeVariable.html#field) or [valueExpression](https://developers.arcgis.com/javascript/latest/api-reference/esri-renderers-visualVariables-SizeVariable.html#valueExpression) to icon sizes.\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-renderers-visualVariables-SizeVariable.html#stops)\r\n */\r\n @JsonProperty()\r\n declare stops: SizeStopConfiguration[];\r\n /**\r\n * This value must be `outline` when scaling polygon outline widths based on the view scale.\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-renderers-visualVariables-SizeVariable.html#target)\r\n */\r\n @JsonProperty()\r\n declare target: string;\r\n /**\r\n * The visual variable type.\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-renderers-visualVariables-SizeVariable.html#type)\r\n */\r\n @JsonProperty()\r\n declare readonly type: \"size\";\r\n /**\r\n * When setting a size visual variable on a renderer using an [ObjectSymbol3DLayer](https://developers.arcgis.com/javascript/latest/api-reference/esri-symbols-ObjectSymbol3DLayer.html), this property indicates whether to apply the value defined by the [height](https://developers.arcgis.com/javascript/latest/api-reference/esri-symbols-ObjectSymbol3DLayer.html#height), [width](https://developers.arcgis.com/javascript/latest/api-reference/esri-symbols-ObjectSymbol3DLayer.html#width), or [depth](https://developers.arcgis.com/javascript/latest/api-reference/esri-symbols-ObjectSymbol3DLayer.html#depth) properties to the corresponding [axis](https://developers.arcgis.com/javascript/latest/api-reference/esri-renderers-visualVariables-SizeVariable.html#axis) of this visual variable instead of proportionally scaling this axis' value.\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-renderers-visualVariables-SizeVariable.html#useSymbolValue)\r\n */\r\n @JsonProperty()\r\n declare useSymbolValue: boolean;\r\n /**\r\n * Specifies how to apply the data value when mapping real-world sizes.\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-renderers-visualVariables-SizeVariable.html#valueRepresentation)\r\n */\r\n @JsonProperty()\r\n declare valueRepresentation: \"radius\" | \"diameter\" | \"area\" | \"width\" | \"distance\";\r\n /**\r\n * Indicates the unit of measurement used to interpret the value returned by [field](https://developers.arcgis.com/javascript/latest/api-reference/esri-renderers-visualVariables-SizeVariable.html#field) or [valueExpression](https://developers.arcgis.com/javascript/latest/api-reference/esri-renderers-visualVariables-SizeVariable.html#valueExpression).\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-renderers-visualVariables-SizeVariable.html#valueUnit)\r\n */\r\n @JsonProperty()\r\n declare valueUnit?: | \"unknown\"\r\n | \"inches\"\r\n | \"feet\"\r\n | \"yards\"\r\n | \"miles\"\r\n | \"nautical-miles\"\r\n | \"millimeters\"\r\n | \"centimeters\"\r\n | \"decimeters\"\r\n | \"meters\"\r\n | \"kilometers\";\r\n\r\n constructor() {\r\n super();\r\n }\r\n}\r\n\r\n@JsonObject()\r\nexport class SizeStopConfiguration {\r\n /**\r\n * A string value used to label the stop in the [Legend](https://developers.arcgis.com/javascript/latest/api-reference/esri-widgets-Legend.html).\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-renderers-visualVariables-support-SizeStop.html#label)\r\n */\r\n @JsonProperty()\r\n declare label?: string;\r\n /**\r\n * The size value in points (between `0` and `90`) used to render features with the given [value](https://developers.arcgis.com/javascript/latest/api-reference/esri-renderers-visualVariables-support-SizeStop.html#value).\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-renderers-visualVariables-support-SizeStop.html#size)\r\n */\r\n @JsonProperty()\r\n declare size?: number;\r\n /**\r\n * Specifies the data value to map to the given [size](https://developers.arcgis.com/javascript/latest/api-reference/esri-renderers-visualVariables-support-SizeStop.html#size).\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-renderers-visualVariables-support-SizeStop.html#value)\r\n */\r\n @JsonProperty()\r\n declare value?: number;\r\n\r\n constructor() {}\r\n}\r\n\r\n@JsonObject()\r\nexport class ScaleDependentStopsConfiguration {\r\n /**\r\n * Value must be `size`.\r\n *\r\n * [Read more...](global.html#type)\r\n */\r\n @JsonProperty()\r\n declare type: \"size\";\r\n /**\r\n * This value must be `$view.scale`.\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-renderers-visualVariables-SizeVariable.html#ScaleDependentStops)\r\n */\r\n @JsonProperty()\r\n declare valueExpression: string;\r\n\r\n /**\r\n * This value must be `outline` when scaling polygon outline widths based on the view scale.\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-renderers-visualVariables-SizeVariable.html#ScaleDependentStops)\r\n */\r\n @JsonProperty()\r\n declare target?: \"outline\";\r\n /**\r\n * An array of objects that define the size of the icon (or alternatively the width of the polygon outline) at the given scale `value`.\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-renderers-visualVariables-SizeVariable.html#ScaleDependentStops)\r\n */\r\n @JsonProperty()\r\n declare stops: SizeStopConfiguration[];\r\n\r\n constructor() {}\r\n}\r\n\r\n@JsonObject()\r\nexport class OpacityStopConfiguration {\r\n /**\r\n * A string value used to label the stop in the [Legend](https://developers.arcgis.com/javascript/latest/api-reference/esri-widgets-Legend.html).\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-renderers-visualVariables-support-OpacityStop.html#label)\r\n */\r\n @JsonProperty()\r\n declare label: string;\r\n /**\r\n * The opacity value (between `0.0` and `1.0`) used to render features with the given [value](https://developers.arcgis.com/javascript/latest/api-reference/esri-renderers-visualVariables-support-OpacityStop.html#value).\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-renderers-visualVariables-support-OpacityStop.html#opacity)\r\n */\r\n @JsonProperty()\r\n declare opacity: number;\r\n /**\r\n * Specifies the data value to map to the given [opacity value](https://developers.arcgis.com/javascript/latest/api-reference/esri-renderers-visualVariables-support-OpacityStop.html#opacity).\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-renderers-visualVariables-support-OpacityStop.html#value)\r\n */\r\n @JsonProperty()\r\n declare value: number;\r\n\r\n constructor() {}\r\n}\r\n\r\n@JsonObject()\r\nexport class ColorStopConfiguration {\r\n /**\r\n * The [Color](https://developers.arcgis.com/javascript/latest/api-reference/esri-Color.html) used to render features with the given [value](https://developers.arcgis.com/javascript/latest/api-reference/esri-renderers-visualVariables-support-ColorStop.html#value).\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-renderers-visualVariables-support-ColorStop.html#color)\r\n */\r\n @JsonProperty()\r\n declare color: ColorConfiguration;\r\n /**\r\n * A string value used to label the stop along the color ramp in the [Legend](https://developers.arcgis.com/javascript/latest/api-reference/esri-widgets-Legend.html).\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-renderers-visualVariables-support-ColorStop.html#label)\r\n */\r\n @JsonProperty()\r\n declare label: string;\r\n /**\r\n * Specifies the data value to map to the given [color](https://developers.arcgis.com/javascript/latest/api-reference/esri-renderers-visualVariables-support-ColorStop.html#color).\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-renderers-visualVariables-support-ColorStop.html#value)\r\n */\r\n @JsonProperty()\r\n declare value: number;\r\n\r\n constructor() {}\r\n}\r\n","import { JsonObject, JsonProperty } from \"typescript-json-serializer\";\r\nimport {MapConfiguration} from \"./map-configuration\";\r\nimport {PortalItemConfiguration} from \"./portal-item-configuration\";\r\nimport {InitialViewConfiguration} from \"./view-configuration\";\r\n\r\n@JsonObject()\r\nexport class WebMapConfiguration extends MapConfiguration {\r\n /**\r\n * Information relating to a list of Geotriggers.\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-WebMap.html#geotriggersInfo)\r\n */\r\n // @JsonProperty()\r\n // declare geotriggersInfo?: GeotriggersInfoProperties;\r\n\r\n /**\r\n * Contains indoor positioning system information for the map.\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-WebMap.html#ipsInfo)\r\n */\r\n // @JsonProperty()\r\n // declare ipsInfo?: IPSInfoProperties;\r\n\r\n /**\r\n * Provides multiple slides.\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-WebMap.html#presentation)\r\n */\r\n @JsonProperty()\r\n declare presentation: any;\r\n\r\n /**\r\n * The utilityNetworks object contains a collection of [UtilityNetworks](https://developers.arcgis.com/javascript/latest/api-reference/esri-networks-UtilityNetwork.html) saved on the web map.\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-WebMap.html#utilityNetworks)\r\n */\r\n // @JsonProperty()\r\n // declare utilityNetworks?: CollectionProperties<UtilityNetworkProperties>;\r\n\r\n /** --- from WebDocument2DProperties --- */\r\n /**\r\n * The applicationProperties contains the viewing properties of the WebMap.\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-WebDocument2D.html#applicationProperties)\r\n */\r\n @JsonProperty()\r\n declare applicationProperties: any;\r\n\r\n /**\r\n * The name of the application that authored the WebMap.\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-WebDocument2D.html#authoringApp)\r\n */\r\n @JsonProperty()\r\n declare authoringApp: string;\r\n /**\r\n * The version of the application that authored the WebMap.\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-WebDocument2D.html#authoringAppVersion)\r\n */\r\n @JsonProperty()\r\n declare authoringAppVersion: string;\r\n\r\n /**\r\n * An array of saved geographic extents that allow end users to quickly navigate to a particular area of interest.\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-WebDocument2D.html#bookmarks)\r\n */\r\n // @JsonProperty()\r\n // bookmarks: BookmarkConfiguration[];\r\n /**\r\n * When a web map is configured as floor-aware, it has a floorInfo property defined.\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-WebDocument2D.html#floorInfo)\r\n */\r\n // @JsonProperty()\r\n // declare floorInfo?: MapFloorInfoProperties;\r\n /**\r\n * The initial view of the WebMap.\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-WebDocument2D.html#initialViewProperties)\r\n */\r\n @JsonProperty()\r\n declare initialViewProperties: InitialViewConfiguration;\r\n\r\n /**\r\n * The portal item from which the WebMap is loaded.\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-WebDocument2D.html#portalItem)\r\n */\r\n @JsonProperty()\r\n declare portalItem: PortalItemConfiguration;\r\n\r\n /**\r\n * The URL to the thumbnail used for the webmap.\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-WebDocument2D.html#thumbnailUrl)\r\n */\r\n @JsonProperty()\r\n declare thumbnailUrl?: string;\r\n\r\n /**\r\n * The widgets object contains widgets that are exposed to the user.\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-WebDocument2D.html#widgets)\r\n */\r\n @JsonProperty()\r\n declare widgets?: any;\r\n /** --- end from WebDocument2DProperties --- */\r\n\r\n constructor() {\r\n super();\r\n }\r\n}\r\n","import { JsonObject, JsonProperty } from \"typescript-json-serializer\";\r\n\r\n@JsonObject()\r\nexport class WidgetConfiguration {\r\n /**\r\n * The ID or node representing the DOM element containing the widget.\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-widgets-Widget.html#container)\r\n */\r\n @JsonProperty()\r\n declare container: string | HTMLElement;\r\n\r\n /**\r\n * Icon which represents the widget.\r\n *\r\n * @default null\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-widgets-Widget.html#icon)\r\n */\r\n @JsonProperty()\r\n declare icon?: string;\r\n\r\n /**\r\n * The unique ID assigned to the widget when the widget is created.\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-widgets-Widget.html#id)\r\n */\r\n @JsonProperty()\r\n declare id: string;\r\n\r\n /**\r\n * The widget's label.\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-widgets-Widget.html#label)\r\n */\r\n @JsonProperty()\r\n declare label: string;\r\n /**\r\n * Indicates whether the widget is visible.\r\n *\r\n * @default true\r\n *\r\n * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-widgets-Widget.html#visible)\r\n */\r\n @JsonProperty()\r\n declare visible?: boolean;\r\n\r\n constructor() {}\r\n}\r\n","import urlUtils = require(\"@arcgis/core/core/urlUtils\"); // import statement with from is not working\r\nimport {ProxyConfiguration} from \"./config/proxy-configuration\";\r\n\r\nexport class GeoProxy {\r\n config: ProxyConfiguration;\r\n\r\n constructor(config: ProxyConfiguration) {\r\n this.config = config;\r\n }\r\n\r\n loadRules() {\r\n if (!this.config) {\r\n return false;\r\n }\r\n\r\n this.config.urlPrefixes.forEach((prefix) => {\r\n urlUtils.addProxyRule({\r\n proxyUrl: this.config.url,\r\n urlPrefix: prefix\r\n });\r\n });\r\n }\r\n}\r\n","import {action, observable, makeObservable, runInAction, autorun} from \"mobx\";\r\nimport {AppConfiguration} from \"./config/app-configuration\";\r\nimport EsriMap from \"@arcgis/core/Map\";\r\nimport {WebMapConfiguration} from \"./config/web-map-configuration\";\r\nimport Portal from \"@arcgis/core/portal/Portal\";\r\nimport Basemap from \"@arcgis/core/Basemap\";\r\nimport {PortalBasemapsSourceConfiguration} from \"./config/basemap-gallery-configuration\";\r\nimport {FormatUtils} from \"../utils/format-utils\";\r\nimport {PathUtils} from \"../utils/path-utils\";\r\nimport _ from \"lodash\";\r\n\r\nexport interface BasemapProps {\r\n id: string;\r\n title?: string;\r\n tags?: string[];\r\n}\r\n\r\nexport class MapState {\r\n status: string;\r\n map: EsriMap | undefined;\r\n view: __esri.MapView | __esri.SceneView | undefined;\r\n layers = observable.map<string, __esri.Layer>();\r\n groupLayers = observable.map<string, __esri.Layer>();\r\n visibleFilterlayers = observable.map<string, __esri.Layer>();\r\n layerViews = observable.map<string, __esri.FeatureLayerView>();\r\n highlightedFeature: __esri.Handle | null;\r\n activeLayers = observable.map<string,number[]>();\r\n activeLayerMetauids: string[];\r\n selectedFeature: __esri.Graphic | null;\r\n basemap: BasemapProps | null;\r\n basemapOpacity: number;\r\n defaultBasemapTitle: string;\r\n basemapAttribution: string;\r\n webMap: WebMapConfiguration;\r\n tocReady = false;\r\n\r\n featureInfo: string;\r\n\r\n appConfig: AppConfiguration;\r\n defaultBasemap: BasemapProps;\r\n\r\n constructor() {\r\n makeObservable(this, {\r\n status: observable,\r\n map: observable,\r\n view: observable,\r\n layers: observable,\r\n groupLayers: observable,\r\n visibleFilterlayers: observable,\r\n layerViews: observable,\r\n highlightedFeature: observable,\r\n activeLayers: observable,\r\n activeLayerMetauids: observable,\r\n selectedFeature: observable,\r\n basemap: observable,\r\n basemapOpacity: observable,\r\n defaultBasemapTitle: observable,\r\n basemapAttribution: observable,\r\n webMap: observable,\r\n tocReady: observable,\r\n featureInfo: observable,\r\n\r\n setStatus: action,\r\n setMap: action,\r\n setView: action,\r\n setFeatureInfo: action,\r\n clearFeatureInfo: action,\r\n addLayer: action,\r\n removeLayer: action,\r\n addGroupLayer: action,\r\n removeGroupLayer: action,\r\n addVisibleFilterLayer: action,\r\n removeVisibleFilterLayer: action,\r\n addLayerView: action,\r\n removeLayerView: action,\r\n selectFeature: action,\r\n setActiveLayers: action,\r\n setActiveLayerMetauids: action,\r\n highlightFeature: action,\r\n unhighlightFeature: action,\r\n setBasemap: action,\r\n setBasemapById: action,\r\n removeBasemap: action,\r\n setBasemapOpacity: action,\r\n setBasemapAttribution: action,\r\n setDefaultBasemapTitle: action,\r\n setDefaultBasemap: action,\r\n setWebMap: action,\r\n setTocReady: action\r\n });\r\n this.setStatus(\"loading\");\r\n this.setBasemapOpacity(100);\r\n }\r\n\r\n setStatus(status: string): void {\r\n this.status = status;\r\n }\r\n\r\n setMap(map?: EsriMap): void {\r\n this.map = map;\r\n }\r\n\r\n setView(view?: __esri.MapView | __esri.SceneView): void {\r\n this.view = view;\r\n }\r\n\r\n setFeatureInfo(info: string): void {\r\n this.featureInfo = info;\r\n }\r\n clearFeatureInfo(): void {\r\n this.featureInfo = \"\";\r\n }\r\n\r\n addLayer(key: string, layer: __esri.Layer): void {\r\n this.layers.set(key, layer);\r\n }\r\n removeLayer(key: string): void {\r\n this.layers.delete(key);\r\n }\r\n addGroupLayer(key: string, layer: __esri.Layer): void {\r\n this.groupLayers.set(key, layer);\r\n }\r\n removeGroupLayer(key: string): void {\r\n this.groupLayers.delete(key);\r\n }\r\n addVisibleFilterLayer(key: string, layer: __esri.Layer): void {\r\n this.visibleFilterlayers.set(key, layer);\r\n }\r\n removeVisibleFilterLayer(key: string): void {\r\n this.visibleFilterlayers.delete(key);\r\n }\r\n\r\n addLayerView(key: string, layerView: __esri.FeatureLayerView): void {\r\n this.layerViews.set(key, layerView);\r\n }\r\n removeLayerView(key: string): void {\r\n this.layerViews.delete(key);\r\n }\r\n\r\n selectFeature(feature: __esri.Graphic | null): void {\r\n this.selectedFeature = feature;\r\n }\r\n setActiveLayers(layers: Map<string,number[]>): void {\r\n this.activeLayers.replace(layers);\r\n }\r\n setActiveLayerMetauids(metauids: string[]): void {\r\n if (_.isEqual(this.activeLayerMetauids, metauids)) {\r\n return;\r\n }\r\n this.activeLayerMetauids = metauids;\r\n }\r\n\r\n /**\r\n * Highlighted feature in the map\r\n * At the moment, only one feature can be highlighted at the same time\r\n *\r\n * @param feature\r\n */\r\n highlightFeature(feature: __esri.Handle): void {\r\n this.highlightedFeature = feature;\r\n }\r\n /**\r\n * Remove highlight from feature\r\n */\r\n unhighlightFeature(): void {\r\n if (!this.highlightedFeature) {\r\n return;\r\n }\r\n this.highlightedFeature.remove();\r\n this.highlightedFeature = null;\r\n }\r\n\r\n /**\r\n * Set Basemap\r\n *\r\n * @param {string} [urlOrTag]: A Tag or the URL to the REST endpoint of the map service.\r\n * @param {string} [title]: Only allowed if layers is a string.\r\n */\r\n setBasemap(urlOrTag: string, title?: string): void {\r\n if (urlOrTag.indexOf(\"http\") === -1) {\r\n const portal = new Portal();\r\n portal.load().then(()=> {\r\n runInAction(()=>{\r\n const {basemapGallery} = this.appConfig;\r\n // TODO: Query sollte auch als Objekt funktionieren\r\n portal.fetchBasemaps(basemapGallery?.source\r\n ? (basemapGallery?.source as PortalBasemapsSourceConfiguration).query\r\n : undefined).then((basemaps)=>{\r\n let basemapItem;\r\n // Grundkarte anhand Tag suchen\r\n if(urlOrTag!==\"\"){\r\n basemapItem = basemaps.find((b) => b.portalItem.tags.includes(urlOrTag));\r\n // Grundkarte nach Titel suchen\r\n } else if (title){\r\n basemapItem = basemaps.find((b) => FormatUtils.formatTitle(b.portalItem.title)\r\n === FormatUtils.formatTitle(title)\r\n && b.portalItem.tags.filter(\r\n tag => basemapGallery.excludeTags?.includes(tag)).length === 0);\r\n }\r\n if (basemapItem && this.basemap?.id !== basemapItem.portalItem.id) {\r\n const itemId = basemapItem.portalItem.id;\r\n const basemap: BasemapProps = {\r\n id: itemId,\r\n title: FormatUtils.formatTitle(basemapItem.portalItem.title),\r\n tags: basemapItem.portalItem.tags\r\n };\r\n this.setBasemapById(basemap);\r\n autorun((reaction: any) => {\r\n if (!this.map) {\r\n return;\r\n }\r\n reaction.dispose(); // stop autorun\r\n runInAction(()=>{\r\n if(this.map && this.basemap) {\r\n this.map.basemap = new Basemap({\r\n portalItem: {\r\n id: this.basemap.id\r\n }\r\n });\r\n this.map.basemap.load().then(() => {\r\n this.map?.basemap.baseLayers.forEach((layer: __esri.Layer) => {\r\n layer.opacity = this.basemapOpacity / 100;\r\n });\r\n });\r\n }\r\n });\r\n });\r\n }\r\n });\r\n });\r\n });\r\n } else {\r\n this.basemap = {\r\n id: urlOrTag,\r\n title: title? title: undefined\r\n };\r\n }\r\n }\r\n removeBasemap(): void {\r\n if(this.map?.basemap){\r\n this.map.basemap.destroy();\r\n }\r\n this.basemap=null;\r\n this.setBasemapOpacity(0);\r\n }\r\n\r\n /**\r\n * Set Basemap\r\n *\r\n * @param {string|BasemapProps} [basemapId]: Portal Id of basemap item.\r\n * @param {string} [title]\r\n * @param {array} [tags]\r\n */\r\n setBasemapById(basemapId: string | BasemapProps, title?: string, tags?: string[]): void {\r\n if (typeof basemapId !== \"string\") {\r\n this.basemap = basemapId as BasemapProps;\r\n } else {\r\n this.basemap = {\r\n id: basemapId,\r\n title: title? title: undefined,\r\n tags: tags? tags: undefined,\r\n };\r\n }\r\n }\r\n setBasemapOpacity(basemapOpacity: number): void {\r\n this.basemapOpacity = basemapOpacity;\r\n }\r\n setBasemapAttribution(attribution: string): void {\r\n this.basemapAttribution = attribution;\r\n }\r\n setDefaultBasemapTitle(title: string): void {\r\n this.defaultBasemapTitle = FormatUtils.formatTitle(title);\r\n }\r\n setDefaultBasemap(basemap: BasemapProps): void {\r\n this.defaultBasemap = basemap;\r\n if(basemap.title){\r\n if(this.defaultBasemapTitle !== FormatUtils.formatTitle(basemap.title)){\r\n this.defaultBasemapTitle = FormatUtils.formatTitle(basemap.title);\r\n }\r\n this.defaultBasemap.title = this.defaultBasemapTitle;\r\n }\r\n }\r\n\r\n setWebMap(webMap: WebMapConfiguration): void {\r\n if (typeof this.webMap !== \"undefined\" && this.webMap.portalItem.id === webMap.portalItem.id) {\r\n return;\r\n }\r\n this.webMap = webMap;\r\n }\r\n setTocReady(){\r\n this.tocReady = true;\r\n }\r\n setAppConfig(appConfig: AppConfiguration): void {\r\n this.appConfig = appConfig;\r\n }\r\n\r\n /**\r\n * Get layer views by METAUID and layerIds\r\n * Flatten group layers to get all layer views\r\n * @param metauid\r\n * @param layerIds\r\n */\r\n getLayerViewsByMetauid(metauid: string, layerIds?: number[]): __esri.LayerView[] {\r\n if (!this.view) {\r\n // eslint-disable-next-line no-console\r\n console.error(\"View not available\");\r\n return [];\r\n }\r\n const layerViews = this.view.layerViews.filter((layerView: __esri.LayerView) => {\r\n return !!(\r\n (\r\n (layerView.layer as any).metauid === metauid ||\r\n PathUtils.getMetaId(PathUtils.getLayerPath(layerView.layer)) === metauid\r\n ) &&\r\n (\r\n typeof layerIds === \"undefined\" ||\r\n // feature layer\r\n layerIds?.includes((layerView.layer as any).layerId) ||\r\n // map image layer\r\n (layerView.layer as __esri.MapImageLayer).sublayers?.map((l: any) => l.id)\r\n .some((id: number) => layerIds?.includes(id))\r\n )\r\n );\r\n });\r\n return layerViews.toArray();\r\n }\r\n\r\n /**\r\n * Get layers by METAUID and layerIds\r\n * Flatten group layers to get all layer views\r\n * @param metauid\r\n * @param layerIds\r\n */\r\n getLayersByMetauid(metauid: string, layerIds?: number[]): __esri.Layer[] {\r\n if (!this.view) {\r\n console.error(\"View not available\");\r\n return [];\r\n }\r\n const layers = this.map?.allLayers.flatten((subL: __esri.Layer) => {\r\n return (subL as __esri.MapImageLayer).allSublayers as unknown as __esri.Collection<__esri.Layer>;\r\n }).filter((layer: __esri.Layer) => {\r\n const layerMetauid = (layer as any).metauid || PathUtils.getMetaId(PathUtils.getLayerPath(layer));\r\n return !!(\r\n layerMetauid === metauid &&\r\n (\r\n !layerIds ||\r\n // feature layer\r\n layerIds?.includes((layer as any).layerId) ||\r\n // map image layer\r\n (layer as __esri.MapImageLayer).sublayers?.map((l: any) => l.id).some((id: number) =>\r\n layerIds?.includes(id))\r\n )\r\n );\r\n });\r\n return layers?.toArray() || [];\r\n }\r\n}\r\n","import React, { ComponentType, createContext } from \"react\";\r\nimport {AppConfiguration} from \"../config/app-configuration\";\r\nimport {MapViewerConfiguration} from \"../../config/map-viewer-configuration\";\r\nimport {AppState} from \"../../components/app/app-mobx\";\r\nimport {MapState} from \"../map-state\";\r\nimport {UiState} from \"../ui-state\";\r\n\r\nimport {CompareStore} from \"./compare-store-mobx\";\r\nimport {LayerListStore} from \"./layer-list-store-mobx\";\r\nimport {MapFinderStore} from \"./map-finder-store-mobx\";\r\nimport {PopupStore} from \"./popup-store-mobx\";\r\nimport {TopicSwitcherStore} from \"./topic-switcher-store-mobx\";\r\nimport {SearchStore} from \"./search-store-mobx\";\r\nimport {LayerSelectorStore} from \"./layer-selector-store-mobx\";\r\nimport {PathUtils} from \"../../utils/path-utils\";\r\nimport FeatureLayer from \"@arcgis/core/layers/FeatureLayer\";\r\nimport {FormatUtils} from \"../../utils/format-utils\";\r\nimport {\r\n FillSymbolConfiguration,\r\n PictureMarkerSymbolConfiguration,\r\n SimpleLineSymbolConfiguration\r\n} from \"../config/symbol-configuration\";\r\nimport EsriGraphic from \"@arcgis/core/Graphic\";\r\nimport EsriPoint from \"@arcgis/core/geometry/Point\";\r\nimport * as geometryEngine from \"@arcgis/core/geometry/geometryEngine\";\r\nimport {autorun, runInAction} from \"mobx\";\r\nimport {MapUtils} from \"../../utils/map-utils\";\r\nimport * as reactiveUtils from \"@arcgis/core/core/reactiveUtils\";\r\nimport Viewpoint from \"@arcgis/core/Viewpoint\";\r\nimport {SearchSourceConfiguration, SearchSourceQueryConfiguration} from \"../config/search-configuration\";\r\nimport {PopupBase} from \"../components/popup/popup\";\r\n\r\nexport type StoreType = CompareStore | LayerListStore | LayerSelectorStore | MapFinderStore | PopupStore |\r\n SearchStore | TopicSwitcherStore;\r\nexport type DataStoreType = any;\r\n\r\n\r\nexport interface IAppStore {\r\n /* add functions when adding abstract functions on AbstractAppStore */\r\n appConfig: AppConfiguration;\r\n mapViewerConfig: MapViewerConfiguration;\r\n appStore: AppState;\r\n mapStore: MapState;\r\n uiStore: UiState;\r\n\r\n CompareStore: CompareStore;\r\n LayerListStore: LayerListStore;\r\n LayerSelectorStore: LayerSelectorStore;\r\n MapFinderStore: MapFinderStore;\r\n PopupStore: PopupStore;\r\n SearchStore: SearchStore;\r\n TopicSwitcherStore: TopicSwitcherStore;\r\n}\r\n\r\nexport interface AbstractAppStoreProps {\r\n appConfig: AppConfiguration;\r\n mapViewerConfig: MapViewerConfiguration;\r\n appStore: AppState;\r\n mapStore: MapState;\r\n uiStore: UiState;\r\n}\r\n\r\nexport abstract class AbstractAppStore implements IAppStore {\r\n appConfig: AppConfiguration;\r\n mapViewerConfig: MapViewerConfiguration;\r\n appStore: AppState;\r\n mapStore: MapState;\r\n uiStore: UiState;\r\n\r\n componentsStores: Map<string, StoreType> = new Map<string, StoreType>();\r\n geoDataStores: Map<string, DataStoreType>; // add data stores here\r\n\r\n focusArgs: number[] = [];\r\n\r\n protected constructor(props: AbstractAppStoreProps) {\r\n // do not use makeObservable here. Not supported for derived classes\r\n // use makeObservable in constructor in each derived class\r\n // make sure you include all properties and functions of this abstract base class!\r\n // !! add observable, action, computed in derived classes when new functionality is added to this class !!\r\n this.appConfig = props.appConfig;\r\n this.mapViewerConfig = props.mapViewerConfig;\r\n this.appStore = props.appStore;\r\n this.mapStore = props.mapStore;\r\n this.uiStore = props.uiStore;\r\n }\r\n\r\n /* add abstract functions here. Do not forget to add these functions in IAppStore */\r\n\r\n get CompareStore(): CompareStore {\r\n if(!this.componentsStores.has(\"compare\")){\r\n this.componentsStores.set(\r\n \"compare\",\r\n new CompareStore()\r\n );\r\n }\r\n return this.componentsStores.get(\"compare\") as CompareStore;\r\n }\r\n get LayerListStore(): LayerListStore {\r\n if(!this.componentsStores.has(\"layer-list\")){\r\n this.componentsStores.set(\r\n \"layer-list\",\r\n new LayerListStore()\r\n );\r\n }\r\n return this.componentsStores.get(\"layer-list\") as LayerListStore;\r\n }\r\n get LayerSelectorStore(): LayerSelectorStore {\r\n const config = this.mapViewerConfig.layerSelector;\r\n if(!this.componentsStores.has(\"layer-selector\")) {\r\n this.componentsStores.set(\r\n \"layer-selector\",\r\n new LayerSelectorStore(this, config)\r\n );\r\n }\r\n return this.componentsStores.get(\"layer-selector\") as LayerSelectorStore;\r\n }\r\n get MapFinderStore(): MapFinderStore {\r\n if(!this.componentsStores.has(\"map-finder\")){\r\n this.componentsStores.set(\r\n \"map-finder\",\r\n new MapFinderStore()\r\n );\r\n }\r\n return this.componentsStores.get(\"map-finder\") as MapFinderStore;\r\n }\r\n get PopupStore(): PopupStore {\r\n if(!this.componentsStores.has(\"popup\")){\r\n this.componentsStores.set(\r\n \"popup\",\r\n new PopupStore()\r\n );\r\n }\r\n return this.componentsStores.get(\"popup\") as PopupStore;\r\n }\r\n get SearchStore(): SearchStore {\r\n if(!this.componentsStores.has(\"search\")){\r\n this.componentsStores.set(\r\n \"search\",\r\n new SearchStore()\r\n );\r\n }\r\n return this.componentsStores.get(\"search\") as SearchStore;\r\n }\r\n get TopicSwitcherStore(): TopicSwitcherStore {\r\n if(!this.componentsStores.has(\"topic-switcher\")){\r\n this.componentsStores.set(\r\n \"topic-switcher\",\r\n new TopicSwitcherStore()\r\n );\r\n }\r\n return this.componentsStores.get(\"topic-switcher\") as TopicSwitcherStore;\r\n }\r\n\r\n showObject(layerObjectId: string): void {\r\n const [layerMetaId, objectId, addParameter] = layerObjectId.split(\"|\");\r\n this.PopupStore.setSelected();\r\n const searchLayer = this.mapStore.map?.allLayers.flatten((subL: __esri.Layer) => {\r\n return (subL as __esri.MapImageLayer).allSublayers as unknown as __esri.Collection<__esri.Layer>;\r\n }).find((l: __esri.Layer) => {\r\n let metaId = (l as any).metauid;\r\n if (!metaId){\r\n const url = PathUtils.getLayerPath(l);\r\n if (typeof url === \"string\") {\r\n metaId = PathUtils.getMetaId(url);\r\n }\r\n }\r\n // selber definierte Gruppen ignorieren (id >= 1000)\r\n return layerMetaId === metaId && !(typeof l.id === \"number\" && l.id >= 1000);\r\n });\r\n if (!searchLayer) {\r\n // eslint-disable-next-line no-console\r\n console.warn(\"Kein passenden Layer für URL Parameter \"+layerMetaId+\" gefunden\");\r\n return;\r\n }\r\n\r\n const searchLayers: Array<FeatureLayer | __esri.Sublayer | undefined> = [];\r\n const queryPromises: Array<Promise<__esri.FeatureSet | undefined>> = [];\r\n let resultFeatures: __esri.Graphic[] = [];\r\n const query = (searchLayer as FeatureLayer).createQuery();\r\n if((searchLayer as any).anchorField) {\r\n if((searchLayer as any).anchorFieldType === \"integer\"){\r\n query.where = (searchLayer as any).anchorField + \" = \" + parseInt(objectId, 10);\r\n }else{\r\n query.where = (searchLayer as any).anchorField + \" = '\" + FormatUtils.encodeForSQL(objectId) + \"'\";\r\n }\r\n } else {\r\n query.where = \"objectid = \"+ objectId;\r\n }\r\n query.outFields = [\"*\"];\r\n searchLayers.push(searchLayer as FeatureLayer);\r\n searchLayers.forEach((sLayer)=>{\r\n queryPromises.push(new Promise((resolve) => {\r\n if(sLayer) {\r\n sLayer.queryFeatures(query).then((response: __esri.FeatureSet) => {\r\n if (response.features.length > 0) {\r\n resultFeatures = resultFeatures.concat(response.features);\r\n }\r\n resolve(response);\r\n });\r\n }\r\n }));\r\n });\r\n Promise.all(queryPromises).then(() => {\r\n if (resultFeatures.length === 0) {\r\n // eslint-disable-next-line no-console\r\n console.warn(\"Kein Resultat für URL Parameter gefunden\");\r\n return;\r\n }\r\n this.PopupStore.setSelected(objectId);\r\n if (this.appConfig.search.resultSymbol) {\r\n let highlightSymbol:\r\n FillSymbolConfiguration\r\n | PictureMarkerSymbolConfiguration\r\n | SimpleLineSymbolConfiguration;\r\n if (resultFeatures[0].geometry.type === \"polygon\"){\r\n highlightSymbol = this.appConfig.search.resultSymbol.highlight;\r\n } else if (resultFeatures[0].geometry.type === \"polyline\"){\r\n highlightSymbol = this.appConfig.search.resultSymbol.line;\r\n } else {\r\n highlightSymbol = this.appConfig.search.resultSymbol.pointer;\r\n }\r\n this.mapStore?.view?.graphics.removeAll();\r\n const geometries: __esri.Geometry[] = [];\r\n resultFeatures.forEach((item) => {\r\n this.mapStore?.view?.graphics.push(\r\n new EsriGraphic({\r\n geometry: item.geometry,\r\n symbol: highlightSymbol\r\n })\r\n );\r\n geometries.push(item.geometry);\r\n });\r\n this.goToGeometries(geometries);\r\n if (!this.PopupStore.disabled && addParameter!== \"noPopup\"\r\n && (searchLayer as any).popupEnabled && (searchLayer as any).popupTemplate) {\r\n let popupPoint: __esri.Point;\r\n if (resultFeatures[0].geometry.type === \"polygon\"){\r\n popupPoint = (resultFeatures[0].geometry as __esri.Polygon)?.centroid as EsriPoint;\r\n } else if (resultFeatures[0].geometry.type === \"polyline\"){\r\n popupPoint = geometryEngine.nearestCoordinate(\r\n resultFeatures[0].geometry as __esri.Geometry,\r\n popupPoint=resultFeatures[0].geometry.extent.center).coordinate;\r\n } else {\r\n popupPoint=resultFeatures[0].geometry as EsriPoint;\r\n }\r\n runInAction(()=> {\r\n this.PopupStore.setFeatures(resultFeatures);\r\n this.PopupStore.setMapPoint(popupPoint);\r\n });\r\n }\r\n }\r\n });\r\n }\r\n\r\n goToGeometries(geometries: __esri.Geometry | __esri.Geometry[]): void {\r\n if(!this.mapStore.view){\r\n return;\r\n }\r\n this.mapStore.view.goTo(MapUtils.calculateMinExtent(geometries)).catch((error) => {\r\n if (error.name !== \"view:goto-interrupted\") {\r\n // eslint-disable-next-line no-console\r\n console.error(error);\r\n }\r\n });\r\n }\r\n\r\n processAdditionalParams(searchParams: URLSearchParams): void {\r\n const {additionalParameter} = this.mapViewerConfig;\r\n if (!additionalParameter) {\r\n return;\r\n }\r\n const searchParamsLower = new URLSearchParams();\r\n for (const [name, value] of searchParams) {\r\n searchParamsLower.append(name.toLowerCase(), value);\r\n }\r\n const focus = searchParamsLower.get(\"focus\");\r\n const marker = searchParamsLower.get(\"marker\");\r\n const basemap = searchParamsLower.get(\"basemap\");\r\n const bfs = searchParamsLower.get(\"bfs\");\r\n const egrid = searchParamsLower.get(\"egrid\");\r\n const parcel = searchParamsLower.get(\"parcel\");\r\n const gvlNo = searchParamsLower.get(\"gvl\")? searchParamsLower.get(\"gvl\"): searchParamsLower.get(\"building\");\r\n const egid = searchParamsLower.get(\"egid\");\r\n if (focus) {\r\n const focusArgs = focus.split(/\\D/);\r\n if (focusArgs.length === 3 ) {\r\n this.focusArgs = [parseInt(focusArgs[0], 10),\r\n parseInt(focusArgs[1], 10),\r\n parseInt(focusArgs[2], 10)\r\n ];\r\n delete this.appConfig.mapView.zoom;\r\n delete this.appConfig.mapView.viewpoint;\r\n this.appConfig.mapView.center = new EsriPoint({\r\n x: this.focusArgs[0],\r\n y: this.focusArgs[1],\r\n spatialReference: this.appConfig.mapView.spatialReference\r\n });\r\n this.appConfig.mapView.scale = this.focusArgs[2];\r\n reactiveUtils.when(\r\n () => this.mapStore?.view?.ready,\r\n () => {\r\n if (!this.mapStore.view) {\r\n return;\r\n }\r\n\r\n const geometry = new EsriPoint({\r\n x: this.focusArgs[0],\r\n y: this.focusArgs[1],\r\n spatialReference: this.appConfig.mapView.spatialReference\r\n });\r\n this.mapStore.view.scale = this.focusArgs[2];\r\n const target = new Viewpoint({\r\n scale: this.focusArgs[2],\r\n targetGeometry: geometry\r\n });\r\n this.mapStore.view.goTo(target).catch((error) => {\r\n if (error.name !== \"view:goto-interrupted\") {\r\n // eslint-disable-next-line no-console\r\n console.error(error);\r\n }\r\n });\r\n if (marker !== null) {\r\n let symbol;\r\n if (additionalParameter.marker\r\n && additionalParameter.marker[marker.toLowerCase()]) {\r\n symbol = additionalParameter.marker[marker.toLowerCase()];\r\n } else {\r\n symbol = this.appConfig.search.resultSymbol?.pointer;\r\n }\r\n if (symbol) {\r\n this.mapStore.view.graphics.push(\r\n new EsriGraphic({\r\n geometry,\r\n symbol\r\n })\r\n );\r\n }\r\n }\r\n },\r\n {initial: true, once: true}\r\n );\r\n }\r\n } else if (bfs || egrid || parcel || gvlNo || egid) {\r\n // TODO: Code überarbeiten und mit Search abstimmen\r\n const sourceConfig = this.appConfig.search.sources.find(\r\n (s: SearchSourceConfiguration) =>\r\n s.name === (bfs? \"Gemeinden, Orte, Flurnamen\" : gvlNo?\r\n \"Gebäudeversicherungsnummern GVL\" : parcel?\r\n \"Grundstücke\" : egid?\r\n \"Eidg. Gebäudeidentifikator EGID\": \"Eidg. Grundstückidentifikator EGRID\"));\r\n autorun((r: any) => {\r\n const popup = this.uiStore.widgets.get(\"popup\") as PopupBase;\r\n r.dispose(); // stop autorun\r\n if (sourceConfig) {\r\n let searchLayer: FeatureLayer | __esri.Sublayer | undefined;\r\n let queryConfig: SearchSourceQueryConfiguration | undefined;\r\n if (bfs && sourceConfig.queries) {\r\n queryConfig = sourceConfig.queries.find((q) => q.id === \"GRZGEMLU\");\r\n }\r\n if (!queryConfig && sourceConfig.query) {\r\n queryConfig = sourceConfig.query;\r\n }\r\n const searchLayerPromises: Array<Promise<FeatureLayer | __esri.Sublayer | undefined>> = [];\r\n if (sourceConfig.query?.id === \"AVLSPRZX\" && popup && popup.avlsLayer) {\r\n searchLayerPromises.push(new Promise((resolve) => {\r\n popup.avlsLayer?.load().then(()=> {\r\n if (popup.avlsLayer?.hasOwnProperty(\"allSublayers\")) {\r\n searchLayer = (popup.avlsLayer as __esri.MapImageLayer).allSublayers.getItemAt(0);\r\n } else {\r\n searchLayer = popup.avlsLayer as FeatureLayer;\r\n }\r\n resolve(searchLayer);\r\n });\r\n }));\r\n } else if (queryConfig?.portalItem){\r\n const layerConfig = {\r\n layerType: \"feature\",\r\n layerId: (queryConfig.layerId) ? queryConfig.layerId : undefined,\r\n portalItem: queryConfig.portalItem,\r\n opacity: 1,\r\n listMode: \"hide\",\r\n legendEnabled: false\r\n };\r\n searchLayerPromises.push(new Promise((resolve) => {\r\n searchLayer = new FeatureLayer(layerConfig as __esri.FeatureLayerProperties);\r\n resolve(searchLayer);\r\n }));\r\n if (!bfs && sourceConfig.queries) {\r\n sourceConfig.queries.forEach((q)=>{\r\n searchLayerPromises.push(new Promise((resolve) => {\r\n if (q.portalItem) {\r\n layerConfig.layerId = (q.layerId) ? q.layerId : undefined;\r\n layerConfig.portalItem = q.portalItem;\r\n searchLayer = new FeatureLayer(layerConfig as __esri.FeatureLayerProperties);\r\n resolve(searchLayer);\r\n }\r\n }));\r\n });\r\n }\r\n }\r\n Promise.all(searchLayerPromises).then((searchLayers) => {\r\n if (searchLayer && queryConfig) {\r\n let where;\r\n if (parcel) {\r\n where = parcel.split(/[^\\d.]/).map(\r\n (no) => {\r\n const [gbcode, prznr] = no.split(\".\");\r\n return prznr? queryConfig?.expression.replace(\"$feature.gbcode\",\r\n \"\"+parseInt(gbcode, 10)).replace(\"$feature.prznr\", \"\"+parseInt(prznr, 10))\r\n .replace(/[$`{}]/g,\"\") : null;\r\n }\r\n ).join(\" OR \");\r\n } else if (egrid) {\r\n where = egrid.split(/\\DCH/i).map(\r\n (no) => queryConfig?.expression.replace(\"$feature.egrid\",\r\n \"CH\" + parseInt(no.replace(/\\D/g, \"\"), 10))\r\n .replace(/[$`{}]/g,\"\")\r\n ).join(\" OR \");\r\n } else if (bfs) {\r\n where = bfs.split(/\\D/i).map(\r\n (no) => queryConfig?.expression.replace(\"$feature.bfsnr\",\r\n \"\"+parseInt(no, 10))\r\n .replace(/[$`{}]/g,\"\")\r\n ).join(\" OR \");\r\n } else if (egid) {\r\n where = egid.split(/\\D/i).map(\r\n (no) => queryConfig?.expression.replace(\"$feature.egid\",\r\n \"\"+parseInt(no, 10))\r\n .replace(/[$`{}]/g,\"\")\r\n ).join(\" OR \");\r\n } else if (gvlNo) {\r\n where = gvlNo.split(/[^\\d.a-z]/i).map(\r\n (no) => {\r\n const [gbcode, gvnr] = no.split(\".\");\r\n return gvnr? queryConfig?.expression.replace(\"$feature.gbcode\",\r\n \"\"+parseInt(gbcode, 10)).replace(\"$feature.gvnr\", gvnr)\r\n .replace(/[$`{}]/g,\"\") : null;\r\n }\r\n ).join(\" OR \");\r\n }\r\n if (typeof where === \"string\") {\r\n const queryPromises: Array<Promise<__esri.FeatureSet | undefined>> = [];\r\n let resultFeatures: __esri.Graphic[] = [];\r\n const query = searchLayer.createQuery();\r\n query.where = where;\r\n searchLayers.forEach((sLayer)=>{\r\n queryPromises.push(new Promise((resolve) => {\r\n if(sLayer) {\r\n sLayer.queryFeatures(query).then((response) => {\r\n if (response.features.length > 0) {\r\n resultFeatures = resultFeatures.concat(response.features);\r\n }\r\n resolve(response);\r\n });\r\n }\r\n }));\r\n });\r\n Promise.all(queryPromises).then(() => {\r\n if (resultFeatures.length === 0) {\r\n // eslint-disable-next-line no-console\r\n console.warn(\"Kein Resultat für URL Parameter gefunden\");\r\n return;\r\n }\r\n if (this.appConfig.search.resultSymbol) {\r\n let highlightSymbol: FillSymbolConfiguration | PictureMarkerSymbolConfiguration;\r\n if (resultFeatures[0].geometry.type === \"polygon\"){\r\n highlightSymbol = this.appConfig.search.resultSymbol.highlight;\r\n } else {\r\n highlightSymbol = this.appConfig.search.resultSymbol.pointer;\r\n }\r\n const geometries: __esri.Geometry[] = [];\r\n resultFeatures.forEach((item) => {\r\n this.mapStore?.view?.graphics.push(\r\n new EsriGraphic({\r\n geometry: item.geometry,\r\n symbol: highlightSymbol\r\n })\r\n );\r\n geometries.push(item.geometry);\r\n });\r\n this.goToGeometries(geometries);\r\n }\r\n });\r\n }\r\n }\r\n });\r\n }\r\n });\r\n }\r\n if (basemap) {\r\n let basemapTag: string;\r\n if (additionalParameter?.basemap && additionalParameter.basemap[basemap]) {\r\n basemapTag = additionalParameter.basemap[basemap];\r\n } else {\r\n basemapTag = \"MV6:\" + basemap.replace(/mv6:/i, \"\").toLowerCase();\r\n }\r\n autorun((r: any) => {\r\n if (!this.mapStore.view || !this.mapStore.map) {\r\n return;\r\n }\r\n r.dispose(); // stop autorun\r\n this.mapStore.setBasemap(basemapTag);\r\n });\r\n }\r\n }\r\n\r\n}\r\n\r\n\r\n/* Store helpers */\r\ntype AppStoreContextType = IAppStore | null;\r\nconst AppStoreContext = createContext<AppStoreContextType>(null);\r\n\r\ninterface AppStoreProviderProps {\r\n children: React.ReactNode;\r\n store: IAppStore;\r\n}\r\n\r\nexport const AppStoreProvider = ({ children, store }: AppStoreProviderProps) => {\r\n return (\r\n <AppStoreContext.Provider value={store}>{children}</AppStoreContext.Provider>\r\n );\r\n};\r\n\r\n/* Hook to use store in any functional component */\r\nexport const useStore = () => {\r\n return React.useContext(AppStoreContext);\r\n};\r\n\r\n/* Higher order component (HOC) to inject store to any functional or class component */\r\n// eslint-disable-next-line react/display-name\r\nexport const withStore = (Component: ComponentType<any>) => (props: any) => {\r\n return <Component {...props} store={useStore()} />;\r\n};\r\n","import {action, observable, makeObservable} from \"mobx\";\r\nimport {TopicLayerConfiguration} from \"../../config/topic-configuration\";\r\n\r\nexport class CompareStore {\r\n enabled: boolean;\r\n layers = observable.map<string, number[]>();\r\n layersLeading: TopicLayerConfiguration[];\r\n layersTrailing: TopicLayerConfiguration[];\r\n matrixSelect: string[];\r\n matrixSelectTrailing: string[];\r\n constructor() {\r\n makeObservable(this, {\r\n enabled: observable,\r\n layers: observable,\r\n layersLeading: observable,\r\n layersTrailing: observable,\r\n matrixSelect: observable,\r\n matrixSelectTrailing: observable,\r\n\r\n setEnabled: action,\r\n setLayersLeading: action,\r\n setLayers: action,\r\n setLayersTrailing: action,\r\n setMatrixSelect: action,\r\n setMatrixSelectTrailing: action\r\n });\r\n this.setEnabled(false);\r\n this.setLayersLeading([]);\r\n }\r\n setEnabled(enabled: boolean) {\r\n this.enabled = enabled;\r\n }\r\n setLayersLeading(layersLeading: TopicLayerConfiguration[]) {\r\n this.layersLeading = layersLeading;\r\n }\r\n setLayers(layers: Map<string, number[]>) {\r\n this.layers = observable.map<string, number[]>();\r\n layers.forEach((layerIds, key)=>{\r\n this.layers.set(key, layerIds);\r\n });\r\n }\r\n setLayersTrailing(layersTrailing: TopicLayerConfiguration[]){\r\n this.layersTrailing = layersTrailing;\r\n }\r\n setMatrixSelect(matrixSelect: string[]){\r\n this.matrixSelect = matrixSelect;\r\n }\r\n setMatrixSelectTrailing(matrixSelectTrailing: string[]){\r\n this.matrixSelectTrailing = matrixSelectTrailing;\r\n }\r\n}\r\n","import {action, observable, makeObservable} from \"mobx\";\r\nimport ListItem from \"@arcgis/core/widgets/LayerList/ListItem\";\r\n\r\nexport class LayerListStore {\r\n hasGroups: boolean;\r\n isLoading: null | boolean;\r\n processing: boolean;\r\n regroupedItems = observable.map<string, ListItem>();\r\n viewModel: __esri.LayerListViewModel;\r\n operationalItemsArray: ListItem[] = [];\r\n constructor() {\r\n makeObservable(this, {\r\n hasGroups: observable,\r\n isLoading: observable,\r\n processing: observable,\r\n regroupedItems: observable,\r\n operationalItemsArray: observable,\r\n\r\n setHasGroups: action,\r\n setIsLoading: action,\r\n setProcessing: action,\r\n setOperationalItemsArray: action\r\n });\r\n this.setIsLoading(null);\r\n }\r\n addRegroupedItem(key: string, regroupedItem: ListItem){\r\n this.regroupedItems.set(key, regroupedItem);\r\n }\r\n setHasGroups(hasGroups: boolean) {\r\n this.hasGroups = hasGroups;\r\n }\r\n setIsLoading(isLoading: boolean | null) {\r\n this.isLoading = isLoading;\r\n }\r\n setProcessing(processing: boolean) {\r\n this.processing = processing;\r\n }\r\n setViewModel(viewModel: __esri.LayerListViewModel) {\r\n this.viewModel = viewModel;\r\n }\r\n setOperationalItemsArray(operationalItemsArray: ListItem[]) {\r\n this.operationalItemsArray = operationalItemsArray;\r\n }\r\n}\r\n","import {action, computed, IReactionDisposer, makeObservable, observable, reaction, when} from \"mobx\";\r\nimport {\r\n LayerSelectorConfiguration,\r\n LayerSelectorGroupConfiguration,\r\n LayerSelectorGroupFilterConfiguration,\r\n LayerSelectorGroupRendererFieldConfiguration\r\n} from \"../config/layer-selector-configuration\";\r\nimport {TopicConfiguration, TopicLayerConfiguration} from \"../../config/topic-configuration\";\r\nimport _ from \"lodash\";\r\nimport EsriFeatureFilter from \"@arcgis/core/layers/support/FeatureFilter\";\r\nimport {LayerRules, ServiceRules} from \"../components/layer-selector/layer-selector\";\r\nimport {PathUtils} from \"../../utils/path-utils\";\r\nimport {DropdownItemProps} from \"semantic-ui-react/dist/commonjs/modules/Dropdown/DropdownItem\";\r\nimport EsriFeatureLayer from \"@arcgis/core/layers/FeatureLayer\";\r\nimport EsriMapImageLayer from \"@arcgis/core/layers/MapImageLayer\";\r\nimport LayerView from \"@arcgis/core/views/layers/LayerView\";\r\nimport Layer from \"@arcgis/core/layers/Layer\";\r\nimport Swipe from \"@arcgis/core/widgets/Swipe\";\r\nimport {IAppStore} from \"./abstract-app-store\";\r\n\r\nexport class LayerSelectorStore {\r\n /**\r\n * If the selected options are initialized per subtopic\r\n */\r\n initialized = observable.map<string, boolean>();\r\n comparisonEnabled: boolean;\r\n config: LayerSelectorConfiguration[] | undefined;\r\n\r\n store: IAppStore | undefined;\r\n\r\n /**\r\n * Selected subtopic\r\n */\r\n subtopicId: string = \"\";\r\n subtopic: TopicConfiguration | undefined;\r\n\r\n /**\r\n * Dropdown options for each group and topic\r\n */\r\n dropDownOptions = observable.map<string, Map<string, DropdownItemProps[]>>();\r\n\r\n /**\r\n * The selected options for the leading map, per topic and group\r\n */\r\n selectedOptionsLeading = observable.map<string, Map<string, string>>();\r\n /**\r\n * The selected options for the trailing map, per topic and group\r\n */\r\n selectedOptionsTrailing = observable.map<string, Map<string, string>>();\r\n\r\n disposeSelectionInitializer: IReactionDisposer | undefined;\r\n\r\n /**\r\n * Layers used for comparison (trailing layers)\r\n * Duplicated from leading layers\r\n */\r\n comparisonLayers: __esri.Layer[] | undefined;\r\n\r\n /**\r\n * Layer views of comparison (trailing layers)\r\n */\r\n comparisonLayerViews: __esri.LayerView[] | undefined;\r\n\r\n swipeWidget: Swipe | undefined;\r\n\r\n constructor(store: IAppStore, config: LayerSelectorConfiguration[]) {\r\n makeObservable(this, {\r\n initialized: observable,\r\n comparisonEnabled: observable,\r\n subtopicId: observable,\r\n dropDownOptions: observable,\r\n selectedOptionsLeading: observable,\r\n selectedOptionsTrailing: observable,\r\n\r\n setInitialized: action,\r\n setComparisonState: action,\r\n setSubtopic: action,\r\n setDropdownOptions: action,\r\n setSelectedOption: action,\r\n matrixConfig: computed,\r\n isInitialized: computed,\r\n dropdownOptionsForCurrentTopic: computed\r\n });\r\n this.setComparisonState(false);\r\n this.store = store;\r\n this.config = config;\r\n\r\n this.disposeSelectionInitializer = reaction(\r\n () => this.subtopicId,\r\n () => {\r\n if (!this.subtopicId || !this.matrixConfig || !this.store?.mapStore.view) {\r\n return;\r\n }\r\n\r\n this.initialize(this.matrixConfig);\r\n if (!this.isInitiallyLoading) {\r\n // only apply rules directly when not first app start\r\n // on the first app start, the rules are applied when initialized\r\n this.applyMatrixRules();\r\n if (this.comparisonEnabled) {\r\n // disable and re-enable comparison to apply rules\r\n this.disableComparison().then(() => {\r\n this.enableComparison();\r\n });\r\n }\r\n }\r\n }\r\n );\r\n when(\r\n () => this.isInitialized,\r\n () => {\r\n // apply rules when initialized. is only called once\r\n this.applyMatrixRules();\r\n }\r\n );\r\n }\r\n\r\n get matrixConfig(): LayerSelectorConfiguration | undefined {\r\n if (!this.config || !this.subtopicId) {\r\n return;\r\n }\r\n return this.config.find((c: LayerSelectorConfiguration) =>\r\n c.topicIds.includes(this.subtopicId));\r\n }\r\n\r\n /**\r\n * If the selected options are initialized for the current subtopic\r\n */\r\n get isInitialized(): boolean {\r\n if (!this.subtopicId) {\r\n return false;\r\n }\r\n return !!this.initialized.get(this.subtopicId);\r\n }\r\n\r\n get isInitiallyLoading(): boolean {\r\n return this.initialized.size === 0;\r\n }\r\n\r\n get dropdownOptionsForCurrentTopic(): Map<string, DropdownItemProps[]> | undefined {\r\n if (!this.dropDownOptions || this.dropDownOptions.size === 0) {\r\n return;\r\n }\r\n\r\n if (!this.dropDownOptions.has(this.subtopicId)) {\r\n return;\r\n }\r\n return this.dropDownOptions.get(this.subtopicId);\r\n }\r\n\r\n setInitialized(initialized: boolean) {\r\n if (!this.subtopicId) {\r\n console.warn(\"LayerSelector: No subtopic set\");\r\n return;\r\n }\r\n this.initialized.set(this.subtopicId, initialized);\r\n }\r\n setComparisonState(enabled: boolean) {\r\n this.comparisonEnabled = enabled;\r\n }\r\n setSubtopic(subtopic: TopicConfiguration) {\r\n this.subtopic = subtopic;\r\n this.subtopicId = subtopic.id;\r\n }\r\n\r\n setSelectedOption(group: string, selectedOptions: string, trailing: boolean = false){\r\n if (!this.subtopicId) {\r\n console.warn(\"LayerSelector: No subtopic set\");\r\n return;\r\n }\r\n const storedOptions = trailing ? this.selectedOptionsTrailing : this.selectedOptionsLeading;\r\n\r\n if (storedOptions.has(this.subtopicId) && storedOptions.get(this.subtopicId) !== undefined) {\r\n const storedTopicOptions = storedOptions.get(this.subtopicId);\r\n // @ts-expect-error TS2532\r\n storedTopicOptions.set(group, selectedOptions);\r\n } else {\r\n const groupOptions = new Map<string, string>();\r\n groupOptions.set(group, selectedOptions);\r\n storedOptions.set(this.subtopicId, groupOptions);\r\n }\r\n }\r\n\r\n /**\r\n * Get selected options by current subtopic.\r\n * Leading options are returned by default.\r\n */\r\n getSelectedOptions(trailing: boolean = false): Map<string, string> | undefined {\r\n const storedOptions = trailing ?\r\n this.selectedOptionsTrailing : this.selectedOptionsLeading;\r\n if (!storedOptions || storedOptions.size === 0) {\r\n return;\r\n }\r\n\r\n return storedOptions.get(this.subtopicId);\r\n }\r\n\r\n /**\r\n * Store options for dropdowns in groups to optimize loading\r\n * @param group\r\n * @param dropdownOptions\r\n */\r\n setDropdownOptions(group: string, dropdownOptions: DropdownItemProps[]){\r\n if (!this.subtopicId) {\r\n console.warn(\"LayerSelector: No subtopic set\");\r\n return;\r\n }\r\n\r\n let groupOptions: Map<string, DropdownItemProps[]>;\r\n if (this.dropDownOptions.has(this.subtopicId) && this.dropDownOptions.get(this.subtopicId) !== undefined) {\r\n // @ts-expect-error TS2532\r\n groupOptions = this.dropDownOptions.get(this.subtopicId);\r\n groupOptions.set(group, dropdownOptions);\r\n } else {\r\n groupOptions = new Map<string, DropdownItemProps[]>();\r\n groupOptions.set(group, dropdownOptions);\r\n }\r\n this.dropDownOptions.set(this.subtopicId, groupOptions);\r\n }\r\n\r\n /**\r\n * Get dropdown options by current subtopic.\r\n */\r\n getDropdownOptions(groupId: string): DropdownItemProps[] | undefined {\r\n if (!this.dropDownOptions || this.dropDownOptions.size === 0) {\r\n return;\r\n }\r\n\r\n if (!this.dropDownOptions.has(this.subtopicId) || this.dropDownOptions.get(this.subtopicId) === undefined) {\r\n return;\r\n }\r\n else {\r\n const storedTopicOptions = this.dropDownOptions.get(this.subtopicId);\r\n return storedTopicOptions?.get(groupId);\r\n }\r\n }\r\n\r\n /**\r\n * Get selected options for a specific group\r\n * @private\r\n */\r\n getSelectedGroupOptions(groupConfig: LayerSelectorGroupConfiguration, trailing: boolean): string[] | undefined {\r\n const selectedOptions = this.getSelectedOptions(trailing);\r\n if (!selectedOptions) {\r\n return;\r\n }\r\n\r\n if (selectedOptions.has(groupConfig.id)) {\r\n // already selected an option before\r\n // @ts-expect-error undefined, because TS does not respect the test if the key exists\r\n return selectedOptions.get(groupConfig.id);\r\n }\r\n else {\r\n // return default options\r\n return groupConfig.options\r\n .filter((gc) => trailing ? gc.defaultTrailing : gc.default)\r\n .map((gc) => gc.id);\r\n }\r\n }\r\n\r\n /**\r\n * Apply the rules of all selected matrix options\r\n * Set visible layers and apply filters specified by matrix configuration\r\n * @private\r\n */\r\n applyMatrixRules(trailing: boolean = false): void {\r\n if (!this.store?.mapStore.activeLayers || !this.matrixConfig) {\r\n return;\r\n }\r\n\r\n const rules = this.prepareServiceRules(trailing);\r\n if (rules) {\r\n this.applyRendererAndFilters(rules, trailing);\r\n }\r\n const visibilities = this.prepareVisibilities(trailing);\r\n if (visibilities) {\r\n this.applyLayerVisibility(visibilities, trailing);\r\n }\r\n }\r\n\r\n /**\r\n * Load options for dynamic dropdowns and store to the state\r\n * @private\r\n */\r\n loadDropdownOptions(): void {\r\n if (!this.store || !this.matrixConfig) {\r\n return;\r\n }\r\n\r\n // load dropdown options\r\n this.matrixConfig.layerMatrix.forEach((groupConfig: LayerSelectorGroupConfiguration) => {\r\n if (groupConfig.formFieldType !== \"dropdown\" || !groupConfig.store) {\r\n return;\r\n }\r\n\r\n const storedOptions = this.getDropdownOptions(groupConfig.id);\r\n if (storedOptions) {\r\n return storedOptions;\r\n }\r\n\r\n // not loaded yet. Load from data store\r\n const dataStore = this.store?.geoDataStores.get(groupConfig.store);\r\n dataStore?.loadItems(undefined).then((items: any) => {\r\n const options = items.map((feature: any) => {\r\n return {\r\n key: feature.guid,\r\n text: feature.displayLabel,\r\n value: feature.guid,\r\n data: groupConfig.dataField ? feature[groupConfig.dataField] : null\r\n };\r\n });\r\n this.setDropdownOptions(groupConfig.id, options);\r\n });\r\n });\r\n }\r\n\r\n /**\r\n * Get relevant layers for the selected options\r\n * @param trailing\r\n */\r\n relevantLayers(trailing: boolean = false): __esri.Layer[] | undefined {\r\n const rules = this.prepareServiceRules(trailing);\r\n if (!rules) {\r\n return;\r\n }\r\n return this.getLayersByRules(rules);\r\n }\r\n\r\n /**\r\n * Enable comparison mode and duplicate layers\r\n */\r\n enableComparison(): Promise<void> {\r\n return new Promise((resolve, reject) => {\r\n if (!this.store || !this.store.mapStore.view || !this.store.appStore.subtopic) {\r\n return;\r\n }\r\n const {mapStore, uiStore} = this.store;\r\n const view = mapStore.view as __esri.MapView;\r\n\r\n const matrixConfig = this.matrixConfig;\r\n if (!matrixConfig) {\r\n reject();\r\n return;\r\n }\r\n\r\n // find layers relevant for selected leading and trailing options\r\n const leadingLayers = this.relevantLayers();\r\n const trailingLayers = this.relevantLayers(true);\r\n\r\n if (!leadingLayers || !trailingLayers) {\r\n reject();\r\n return;\r\n }\r\n\r\n this.duplicateTrailingLayers(trailingLayers).then((clonedTrailingLayers) => {\r\n // here, the layerViews are ready but not yet present in the view.layerViews Array!!!\r\n if (!clonedTrailingLayers) {\r\n reject();\r\n throw new Error(\"Failed to duplicate leading layers\");\r\n }\r\n\r\n this.applyMatrixRules(true);\r\n\r\n const swipeProps: __esri.SwipeViewModelProperties = {\r\n // @ts-expect-error invalid id\r\n id: \"compare-widget\",\r\n view,\r\n leadingLayers,\r\n trailingLayers: clonedTrailingLayers,\r\n direction: uiStore.uiOrientation === \"portrait\" ? \"vertical\" : \"horizontal\",\r\n // Let space for sidebar in \"landscape\" mode\r\n position: ((uiStore.uiOrientation === \"landscape\") ? 55 : 50)\r\n };\r\n this.swipeWidget = new Swipe(swipeProps);\r\n mapStore.view?.ui.add(this.swipeWidget);\r\n\r\n this.setComparisonState(true);\r\n\r\n resolve();\r\n });\r\n });\r\n }\r\n\r\n /**\r\n * Disable comparison mode and cleanup\r\n */\r\n disableComparison(): Promise<void> {\r\n return new Promise((resolve, reject) => {\r\n if (!this.comparisonEnabled || !this.comparisonLayers) {\r\n reject();\r\n return;\r\n }\r\n\r\n // destroy all comparison layers\r\n this.comparisonLayers.forEach((layer) => {\r\n this.store?.mapStore.map?.remove(layer);\r\n layer.destroy();\r\n });\r\n this.comparisonLayers = undefined;\r\n this.comparisonLayerViews = undefined;\r\n\r\n this.setComparisonState(false);\r\n\r\n if (this.swipeWidget) {\r\n this.store?.mapStore.view?.ui.remove(this.swipeWidget);\r\n this.swipeWidget.destroy();\r\n }\r\n\r\n resolve();\r\n });\r\n }\r\n\r\n /**\r\n * Duplicate the layers used as trailing layers\r\n * This enables comparison of the same layers with different filters\r\n * Add to a special group layer to support comparison\r\n * @private\r\n */\r\n duplicateTrailingLayers(leadingLayers: __esri.Layer[]): Promise<__esri.Layer[] | undefined> {\r\n return new Promise((resolve, reject) => {\r\n if (!this.store || !this.store.mapStore.view || !this.store?.appStore.subtopic) {\r\n reject();\r\n return;\r\n }\r\n const {mapStore} = this.store;\r\n const {view} = mapStore;\r\n\r\n const selectedTrailingOptions = this.getSelectedOptions(true);\r\n if (!selectedTrailingOptions) {\r\n reject();\r\n return;\r\n }\r\n\r\n // do not add layers when already added\r\n const layers = mapStore.getLayersByMetauid(\"[compare]\");\r\n\r\n const layerLoadedPromises = leadingLayers.map((layer) => {\r\n const url = PathUtils.getLayerPath(layer);\r\n if (!url) {\r\n // skip graphics layers\r\n return;\r\n }\r\n const metauid = PathUtils.getMetaId(url);\r\n\r\n const layerFound = layers.find((l) => {\r\n return (l as any).sourceMetauid === metauid && (l as any).layerId === (layer as any).layerId;\r\n });\r\n if (layerFound) {\r\n return;\r\n }\r\n\r\n const tConfig = {\r\n // take over properties from leading layer\r\n blendMode: (layer as any).blendMode ? (layer as any).blendMode : \"normal\",\r\n url,\r\n legendEnabled: false,\r\n // hide layer in layer list\r\n //listMode: \"hide\",\r\n visible: false, // visibility is applied later when rules are applied\r\n title: `[compare] ${layer.title}`\r\n };\r\n\r\n let trailingLayer;\r\n if (layer.type === \"feature\") {\r\n trailingLayer = new EsriFeatureLayer(tConfig as __esri.FeatureLayerProperties);\r\n }\r\n else if (layer.type === \"map-image\") {\r\n trailingLayer = new EsriMapImageLayer(tConfig as __esri.MapImageLayerProperties);\r\n }\r\n if (!trailingLayer) {\r\n return;\r\n }\r\n\r\n return trailingLayer.load();\r\n });\r\n\r\n // wait until all layers are loaded\r\n Promise.all(layerLoadedPromises).then((duplicatedLayers: Layer[]) => {\r\n this.comparisonLayers = duplicatedLayers;\r\n\r\n const layerViewPromises = duplicatedLayers.map((layer) => {\r\n // complete layer properties\r\n const url = PathUtils.getLayerPath(layer);\r\n const metauid = PathUtils.getMetaId(url);\r\n\r\n layer.set(\"metauid\", \"[compare]\");\r\n layer.set(\"sourceMetauid\", metauid); // remember original layer metauid\r\n if ((layer as any).sublayers) {\r\n (layer as any).sublayers.forEach((l: any) => {\r\n l.set(\"metauid\", \"[compare]\");\r\n l.set(\"sourceMetauid\", metauid);\r\n l.name = `[compare] ${l.name}`;\r\n l.legendEnabled = false;\r\n });\r\n }\r\n\r\n mapStore.map?.add(layer);\r\n\r\n // @ts-expect-error view undefined\r\n return view.whenLayerView(layer);\r\n });\r\n\r\n // wait until all layer views are ready\r\n Promise.all(layerViewPromises).then((layerViews: LayerView[]) => {\r\n this.comparisonLayerViews = layerViews;\r\n resolve(duplicatedLayers);\r\n });\r\n });\r\n });\r\n }\r\n\r\n /**\r\n * Update orientation of Swipe widget\r\n */\r\n updateOrientation(direction: \"vertical\" | \"horizontal\"): void {\r\n if(!this.comparisonEnabled || !this.swipeWidget){\r\n return;\r\n }\r\n this.swipeWidget.direction = direction;\r\n }\r\n\r\n private applyLayerVisibility(visibleLayers: TopicLayerConfiguration[], trailing: boolean = false) {\r\n if (!this.store || !this.subtopic) {\r\n return;\r\n }\r\n if (visibleLayers.length === 0) {\r\n console.debug(\"LayerSelector: No visible layers\");\r\n return;\r\n }\r\n const {subtopic} = this;\r\n\r\n if (!trailing) {\r\n // manipulate active layers of current topic and reapply\r\n // clone active layers to avoid setting the same object reference\r\n const mapActiveLayers = _.cloneDeep(subtopic?.layers);\r\n if (mapActiveLayers) {\r\n mapActiveLayers.visible = visibleLayers;\r\n this.store.appStore.setSubtopicLayers(mapActiveLayers);\r\n }\r\n }\r\n else {\r\n // // trailing layers cannot be handled by topic functions\r\n // const trailingLayers = this.store.mapStore?.getLayersByMetauid(\"[compare]\");\r\n\r\n if (!this.comparisonLayers) {\r\n return;\r\n }\r\n\r\n this.comparisonLayers.forEach((layer) => {\r\n const metauid = (layer as any).sourceMetauid;\r\n\r\n if (layer.type === \"feature\") {\r\n layer.visible = !!visibleLayers?.find((c) => {\r\n const layerId = (layer as any).layerId;\r\n return !!(metauid === c.id && c.layerIds?.includes(layerId));\r\n });\r\n }\r\n else if ((layer as any).type === \"sublayer\") {\r\n layer.visible = !!visibleLayers?.find((c) => {\r\n const layerId = (layer as any).id;\r\n return !!(metauid === c.id && c.layerIds?.includes(layerId));\r\n });\r\n }\r\n else if (layer.type === \"map-image\") {\r\n let anySubLayerVisible = false;\r\n (layer as EsriMapImageLayer).sublayers?.forEach((subLayer) => {\r\n const isSublayerVisible = visibleLayers?.find((c) => {\r\n return metauid === c.id && c.layerIds?.includes(subLayer.id);\r\n });\r\n if (isSublayerVisible) {\r\n subLayer.visible = true;\r\n anySubLayerVisible = true;\r\n } else {\r\n subLayer.visible = false;\r\n }\r\n });\r\n layer.visible = anySubLayerVisible;\r\n }\r\n });\r\n }\r\n }\r\n\r\n private applyRendererAndFilters(serviceRules: ServiceRules, trailing: boolean = false): void {\r\n if (!this.store || !this.store.mapStore.view || serviceRules.size === 0) {\r\n return;\r\n }\r\n\r\n // if tailing, only apply to layers with METAUID \"[compare]\"\r\n serviceRules.forEach((layerRules: Map<number, LayerRules>, serviceId: string) => {\r\n const layerIds = Array.from(layerRules.keys());\r\n\r\n // find layer views for this rule\r\n const layerViews = trailing?\r\n this.comparisonLayerViews : this.store?.mapStore.getLayerViewsByMetauid(serviceId, layerIds);\r\n\r\n if (!layerViews || layerViews.length === 0) {\r\n // do not throw error here. In some cases renderer and filters are applied twice (why?) and in\r\n // second turn the layerViews are not found. But the filters and renderers are applied correctly\r\n // in the first turn.\r\n return;\r\n }\r\n\r\n layerRules.forEach((rules: LayerRules, layerId: number) => {\r\n const layerView = this.getLayerView(layerViews, serviceId, layerId, trailing);\r\n if (!layerView) {\r\n throw new Error(`Layer view not found ${serviceId} ${layerId}`);\r\n }\r\n\r\n if (layerView.layer.type === \"feature\") {\r\n // change renderer field\r\n if (rules.renderField) {\r\n (layerView.layer.renderer as any).field = rules.renderField;\r\n }\r\n\r\n // apply filter\r\n if (!layerView.filter) {\r\n layerView.filter = new EsriFeatureFilter();\r\n }\r\n if (rules.filter && rules.filter.length > 0) {\r\n // replace {renderField} in filter if exists\r\n const filter = rules.filter.replace(\"{renderField}\", (layerView.layer.renderer as any).field);\r\n layerView.filter.where = filter;\r\n } else {\r\n layerView.filter.where = \"1=1\";\r\n }\r\n }\r\n else if (layerView.layer.type === \"map-image\") {\r\n // apply filter\r\n const mapImageLayer = layerView.layer as __esri.MapImageLayer;\r\n const subLayer = mapImageLayer?.sublayers.find((l) =>\r\n l.id === layerId\r\n );\r\n if (!subLayer) {\r\n return;\r\n }\r\n subLayer.definitionExpression = rules.filter || \"1=1\";\r\n }\r\n });\r\n\r\n });\r\n }\r\n\r\n private getLayerView(layerViews: __esri.LayerView[], metauid: string, layerId: number, trailing: boolean = false) {\r\n // get layer view\r\n // for trailing layers, the METAUID of the source layer is stored in property \"sourceMetauid\"\r\n const layerView: any = layerViews.find((lw) =>\r\n (\r\n trailing ? (lw.layer as any).sourceMetauid : (lw.layer as any).metauid === metauid ||\r\n PathUtils.getMetaId(PathUtils.getLayerPath(lw.layer)) === metauid\r\n ) &&\r\n (\r\n (lw.layer as __esri.FeatureLayer).layerId === layerId ||\r\n (lw.layer as __esri.MapImageLayer).sublayers?.map((l) => l.id).includes(layerId)\r\n )\r\n );\r\n return layerView;\r\n }\r\n\r\n /**\r\n * Prepare rules for selected options\r\n * Summarize all rules per service and layer\r\n * @private\r\n */\r\n private prepareServiceRules(trailing?: boolean): ServiceRules | undefined {\r\n if (!this.store || !this.matrixConfig) {\r\n return;\r\n }\r\n\r\n const selectedOptions= this.getSelectedOptions(trailing);\r\n if (!selectedOptions) {\r\n return;\r\n }\r\n\r\n const {matrixConfig} = this;\r\n\r\n // loop through selected options and extract rules per service and layer\r\n const rules: ServiceRules = new Map<string, Map<number, LayerRules>>();\r\n selectedOptions.forEach((value: string, groupId: string) => {\r\n // get config\r\n const groupConfig: LayerSelectorGroupConfiguration | undefined =\r\n matrixConfig.layerMatrix.find((gc: LayerSelectorGroupConfiguration) => gc.id === groupId);\r\n const groupOptionConfigs = groupConfig?.options.find((o) => {\r\n return o.id === value || o.type === \"template\";\r\n });\r\n if (!groupOptionConfigs) {\r\n return;\r\n }\r\n\r\n // add rules for layers\r\n if (groupOptionConfigs.layers) {\r\n groupOptionConfigs.layers.forEach((layerConfig: TopicLayerConfiguration) => {\r\n // initialize rules for service\r\n rules.has(layerConfig.id) || rules.set(layerConfig.id, new Map<number, LayerRules>());\r\n const layerRules = rules.get(layerConfig.id);\r\n\r\n layerConfig.layerIds?.forEach((layerId) => {\r\n const layerRule = layerRules?.get(layerId) || {};\r\n layerRule.visible = true;\r\n layerRules?.set(layerId, layerRule);\r\n });\r\n });\r\n }\r\n // add filter rules\r\n if (groupOptionConfigs.filters) {\r\n groupOptionConfigs.filters.forEach((filterConfig: LayerSelectorGroupFilterConfiguration) => {\r\n // initialize rules for service\r\n rules.has(filterConfig.id) || rules.set(filterConfig.id, new Map<number, LayerRules>());\r\n const layerRules = rules.get(filterConfig.id);\r\n\r\n filterConfig.layerIds?.forEach((layerId) => {\r\n const layerRule = layerRules?.get(layerId) || {};\r\n\r\n let whereClause: string ;\r\n if (filterConfig.where.includes(\"{value}\")) {\r\n // replace value if needed. Value is replaced for dynamically loaded options\r\n // where value is not known at configuration time\r\n if (value) {\r\n whereClause = filterConfig.where.replace(\"{value}\", value);\r\n }\r\n else {\r\n // no value selected, remove filter for this option\r\n whereClause = \"\";\r\n }\r\n }\r\n else {\r\n // no dynamic field, use filter as is\r\n whereClause = filterConfig.where;\r\n }\r\n // concat filters if already set\r\n if (layerRule && layerRule.filter && layerRule.filter.length > 0) {\r\n if (whereClause.length > 0) {\r\n layerRule.filter += ` AND ${whereClause}`;\r\n }\r\n }\r\n else {\r\n layerRule.filter = whereClause;\r\n }\r\n layerRules?.set(layerId, layerRule);\r\n });\r\n });\r\n }\r\n // add render field rules\r\n if (groupOptionConfigs.rendererFields) {\r\n groupOptionConfigs.rendererFields.forEach((rendererFieldConfig: LayerSelectorGroupRendererFieldConfiguration) => {\r\n // initialize rules for service\r\n rules.has(rendererFieldConfig.id) || rules.set(rendererFieldConfig.id, new Map<number, LayerRules>());\r\n const layerRules = rules.get(rendererFieldConfig.id);\r\n\r\n rendererFieldConfig.layerIds?.forEach((layerId) => {\r\n const layerRule = layerRules?.get(layerId) || {};\r\n layerRule.renderField = rendererFieldConfig.fieldName;\r\n layerRules?.set(layerId, layerRule);\r\n });\r\n });\r\n }\r\n });\r\n console.debug(\"Rules\", rules);\r\n return rules;\r\n }\r\n\r\n /**\r\n * Prepare visibilities for selected options separately, because these are needed as TopicLayerConfiguration[]\r\n * @param trailing\r\n * @private\r\n */\r\n private prepareVisibilities(trailing?: boolean): TopicLayerConfiguration[] | undefined {\r\n if (!this.store || !this.matrixConfig) {\r\n return;\r\n }\r\n const selectedOptions = this.getSelectedOptions(trailing);\r\n if (!selectedOptions) {\r\n return;\r\n }\r\n\r\n const {matrixConfig} = this;\r\n\r\n // loop through selected options and extract rules per service and layer\r\n let visibilities: TopicLayerConfiguration[] = [];\r\n selectedOptions.forEach((value: string, groupId: string) => {\r\n // get config\r\n const groupConfig: LayerSelectorGroupConfiguration | undefined =\r\n matrixConfig.layerMatrix.find((gc: LayerSelectorGroupConfiguration) => gc.id === groupId);\r\n const groupOptionConfigs = groupConfig?.options.find((o) => o.id === value);\r\n if (!groupOptionConfigs) {\r\n return;\r\n }\r\n if (groupOptionConfigs.layers) {\r\n visibilities = visibilities.concat(groupOptionConfigs.layers);\r\n }\r\n });\r\n return visibilities;\r\n }\r\n\r\n /**\r\n * Initialize the selected options based on the default options.\r\n * Initialize the rules for all subtopics the first time a subtopic is set\r\n * @param matrixConfig\r\n * @private\r\n */\r\n private initialize(matrixConfig: LayerSelectorConfiguration) {\r\n if (this.isInitialized) {\r\n return;\r\n }\r\n matrixConfig.layerMatrix.forEach((groupConfig: LayerSelectorGroupConfiguration) => {\r\n const leadingOption = groupConfig.options.find((o) => o.default)?.id;\r\n if (leadingOption) {\r\n this.setSelectedOption(groupConfig.id, leadingOption);\r\n }\r\n const trailingOption = groupConfig.options.find((o) => o.defaultTrailing)?.id;\r\n if (trailingOption) {\r\n this.setSelectedOption(groupConfig.id, trailingOption, true);\r\n }\r\n });\r\n\r\n const rules = this.prepareServiceRules();\r\n if (!rules) {\r\n return;\r\n }\r\n const layers = this.getLayersByRules(rules);\r\n\r\n const view = this.store?.mapStore.view;\r\n if (!view) {\r\n return;\r\n }\r\n\r\n const viewReadyHandles = layers.map((layer) => {\r\n return view.whenLayerView(layer);\r\n });\r\n // wait for all layer views to be ready until setting initialized to true\r\n // matrix rules will be applied in the reaction (see constructor)\r\n Promise.all(viewReadyHandles).then(() => {\r\n this.setInitialized(true);\r\n }).catch((e) => {\r\n console.error(\"Error waiting for layer views\", e);\r\n });\r\n }\r\n\r\n /**\r\n * Get all layers handled by the rules. This is needed to wait for all layer views to be ready\r\n * @param rules\r\n * @private\r\n */\r\n private getLayersByRules(rules: Map<string, Map<number, LayerRules>>) {\r\n // get all layers from selected options and wait for layer views to be ready\r\n let layers: __esri.Layer[] = [];\r\n rules.forEach((layerRules: Map<number, LayerRules>, serviceId: string) => {\r\n const layerIds = Array.from(layerRules.keys());\r\n // find layer views for this rule\r\n const serviceLayers: __esri.Layer[] | undefined =\r\n this.store?.mapStore.getLayersByMetauid(serviceId, layerIds);\r\n\r\n if (!serviceLayers || serviceLayers.length === 0) {\r\n console.error(\"No layer views found. Layer views not ready yet?\");\r\n return;\r\n }\r\n layers = layers.concat(serviceLayers);\r\n });\r\n return layers;\r\n }\r\n}\r\n","import {action, observable, makeObservable} from \"mobx\";\r\n\r\nexport class MapFinderStore {\r\n visible: boolean;\r\n constructor() {\r\n makeObservable(this, {\r\n visible: observable,\r\n setVisible: action\r\n });\r\n this.setVisible(false);\r\n }\r\n setVisible(visible: boolean) {\r\n this.visible = visible;\r\n }\r\n}\r\n","import {action, observable, makeObservable} from \"mobx\";\r\nimport FieldInfoFormat from \"@arcgis/core/popup/support/FieldInfoFormat\";\r\n\r\nexport interface PopupPanelInfo {\r\n graphics: __esri.Graphic[];\r\n title: string;\r\n index?: number;\r\n order?: number;\r\n}\r\n\r\nexport class PopupStore {\r\n disabled: boolean;\r\n selected: string | undefined;\r\n visible: boolean;\r\n selectedPanelIndex: number;\r\n activeIndex: number[];\r\n activePages: number[];\r\n lastItemTitle: string = \"\";\r\n valueUnitMap: Map<string, Map<string, string>> = new Map();\r\n defaultFormatMap: Map<string, Map<string, FieldInfoFormat>> = new Map();\r\n panels: PopupPanelInfo[] = [];\r\n panelIndex: number = 1;\r\n features: __esri.Graphic[];\r\n mapPoint?: __esri.Point;\r\n timeoutMap: Map<string, number> = new Map();\r\n peparedFields: string[] = [];\r\n constructor() {\r\n // set before making observable\r\n this.setSelectedPanelIndex(1);\r\n this.setActiveIndex([1]);\r\n this.setActivePages([0, 1]);\r\n this.setFeatures([]);\r\n\r\n makeObservable(this, {\r\n disabled: observable,\r\n selected: observable,\r\n visible: observable,\r\n selectedPanelIndex: observable,\r\n activeIndex: observable,\r\n activePages: observable,\r\n lastItemTitle: observable,\r\n panels: observable,\r\n panelIndex: observable,\r\n features: observable,\r\n mapPoint: observable,\r\n\r\n setDisabled: action,\r\n setSelected: action,\r\n setVisible: action,\r\n setSelectedPanelIndex: action,\r\n setActiveIndex: action,\r\n setActivePage: action,\r\n setActivePages: action,\r\n setLastItemTitle: action,\r\n addFeatures: action,\r\n setFeatures: action,\r\n setMapPoint: action,\r\n addPanel: action,\r\n clearPanels: action\r\n });\r\n this.setDisabled(false);\r\n this.setVisible(false);\r\n }\r\n setDisabled(disabled: boolean) {\r\n this.disabled = disabled;\r\n }\r\n setSelected(selected?: string) {\r\n this.selected = selected;\r\n }\r\n setVisible(visible: boolean) {\r\n this.visible = visible;\r\n if(!visible){\r\n this.setSelected();\r\n }\r\n }\r\n setSelectedPanelIndex(index: number) {\r\n this.selectedPanelIndex = index;\r\n }\r\n setActiveIndex(index: number[]) {\r\n this.activeIndex = index;\r\n }\r\n setActivePage(panelIndex: number, page: number) {\r\n this.activePages[panelIndex] = page;\r\n }\r\n getActivePage(panelIndex: number) {\r\n return this.activePages[panelIndex];\r\n }\r\n setActivePages(index: number[]) {\r\n this.activePages = index;\r\n }\r\n setLastItemTitle(title: string) {\r\n this.lastItemTitle = title;\r\n }\r\n addFeatures(features: __esri.Graphic | __esri.Graphic[]){\r\n if(!Array.isArray(features)){\r\n features = [features];\r\n }\r\n this.features = this.features.concat(features);\r\n }\r\n setFeatures(features: __esri.Graphic[]){\r\n this.features = features;\r\n }\r\n setMapPoint(mapPoint?: __esri.Point) {\r\n this.mapPoint = mapPoint;\r\n }\r\n addPanel(panel: PopupPanelInfo) {\r\n panel.index = this.panelIndex;\r\n if(typeof panel.order === \"undefined\"){\r\n panel.order = 0;\r\n }\r\n this.panels.push(panel);\r\n this.panels.sort((a, b) => b.order - a.order || a.index - b.index).map((p, index) => {\r\n p.index = index + 1;\r\n });\r\n this.panelIndex++;\r\n }\r\n setTimeoutID(key: string, timeoutID: number){\r\n this.clearTimeout(key);\r\n this.timeoutMap.set(key, timeoutID);\r\n }\r\n getTimeoutID(key: string){\r\n return this.timeoutMap.get(key);\r\n }\r\n clearTimeout(key: string){\r\n const timeoutID = this.getTimeoutID(key);\r\n if(timeoutID){\r\n clearTimeout(timeoutID);\r\n }\r\n this.timeoutMap.delete(key);\r\n }\r\n clearTimeouts(){\r\n const keys = this.timeoutMap.keys();\r\n for (const key of keys) {\r\n this.clearTimeout(key);\r\n }\r\n this.timeoutMap.clear();\r\n }\r\n clearPanels() {\r\n this.panels = [];\r\n this.panelIndex = 1;\r\n }\r\n}\r\n","import {action, observable, makeObservable} from \"mobx\";\r\nimport {ExtendedSearchViewModel} from \"../components/search/search\";\r\n\r\nexport class SearchStore {\r\n viewReady = observable.map<string, boolean>();\r\n viewModels: Map<string, ExtendedSearchViewModel> = new Map();\r\n constructor() {\r\n makeObservable(this, {\r\n viewReady: observable,\r\n setViewReady: action\r\n });\r\n }\r\n setViewReady(key: string, ready: boolean) {\r\n this.viewReady.set(key, ready);\r\n }\r\n getViewModel(key: string): ExtendedSearchViewModel | undefined {\r\n return this.viewModels.get(key);\r\n }\r\n setViewModel(key: string, viewModel: ExtendedSearchViewModel) {\r\n this.viewModels.set(key, viewModel);\r\n }\r\n}\r\n","import {action, observable, makeObservable} from \"mobx\";\r\n\r\nexport class TopicSwitcherStore {\r\n visible: boolean;\r\n constructor() {\r\n makeObservable(this, {\r\n visible: observable,\r\n setVisible: action\r\n });\r\n this.setVisible(false);\r\n }\r\n setVisible(visible: boolean) {\r\n this.visible = visible;\r\n }\r\n}\r\n","import React from \"react\";\r\nimport {action, observable, computed, makeObservable} from \"mobx\";\r\n\r\nexport class UiState {\r\n activeTool: string;\r\n language: string;\r\n menuVisible: boolean;\r\n pendingRequestCount: number;\r\n sidebarSelectOpen: boolean;\r\n sidebarVisible: boolean;\r\n sidebarHigh: boolean;\r\n filterActive: boolean;\r\n widgets = observable.map<string, React.Component>();\r\n\r\n /**\r\n * App window size\r\n */\r\n uiWidth: number | undefined;\r\n uiHeight: number | undefined;\r\n uiOffsetTop: number | undefined;\r\n uiOrientation: \"landscape\" | \"portrait\" | undefined;\r\n isSmallDevice: boolean | undefined;\r\n\r\n /**\r\n * Remember selected tab per station\r\n */\r\n selectedTabs = observable.map<number, number>();\r\n\r\n /**\r\n * Resizing state of a popup window\r\n */\r\n resizing = observable.box(false);\r\n toolGraphic: __esri.Graphic | null = null;\r\n\r\n sublayerMap = new Map<string, string>();\r\n\r\n constructor() {\r\n makeObservable(this, {\r\n activeTool: observable,\r\n language: observable,\r\n menuVisible: observable,\r\n pendingRequestCount: observable,\r\n sidebarSelectOpen: observable,\r\n sidebarVisible: observable,\r\n sidebarHigh: observable,\r\n filterActive: observable,\r\n widgets: observable,\r\n uiWidth: observable,\r\n uiHeight: observable,\r\n uiOffsetTop: observable,\r\n uiOrientation: observable,\r\n isSmallDevice: observable,\r\n selectedTabs: observable,\r\n resizing: observable,\r\n toolGraphic: observable,\r\n\r\n appIsInSync: computed,\r\n isSidebarVisible: computed,\r\n isResizing: computed,\r\n\r\n addWidget: action,\r\n removeWidget: action,\r\n setActiveTool: action,\r\n setLanguage: action,\r\n setUiSize: action,\r\n setUiOffsetTop: action,\r\n resetPendingRequestCount: action,\r\n setMenuVisible: action,\r\n setFilterActive: action,\r\n setSidebarSelectOpen: action,\r\n setSidebarVisible: action,\r\n setToolGraphic: action,\r\n toggleSidebarVisible: action,\r\n setSidebarHigh: action,\r\n startResizing: action,\r\n stopResizing: action\r\n });\r\n this.setActiveTool(\"\");\r\n this.setLanguage(\"de-CH\");\r\n this.resetPendingRequestCount();\r\n this.setSidebarVisible(false);\r\n this.setUiOffsetTop();\r\n this.handleWindowResizeWhenSidebarOpen = this.handleWindowResizeWhenSidebarOpen.bind(this);\r\n }\r\n\r\n get appIsInSync() {\r\n return this.pendingRequestCount === 0;\r\n }\r\n get isResizing(): boolean {\r\n return this.resizing.get();\r\n }\r\n get isSidebarVisible() {\r\n return this.sidebarVisible;\r\n }\r\n\r\n addWidget(key: string, widget: React.Component) {\r\n this.widgets.set(key, widget);\r\n }\r\n removeWidget(key: string) {\r\n this.widgets.delete(key);\r\n }\r\n\r\n setActiveTool(tool: string, graphic?: __esri.Graphic | null) {\r\n this.setToolGraphic(graphic);\r\n this.activeTool = tool;\r\n }\r\n\r\n setLanguage(lang: string) {\r\n this.language = lang;\r\n }\r\n\r\n setUiSize(width: number | undefined, height: number | undefined, isSmallDevice?: boolean) {\r\n if(typeof width === \"number\" && typeof height === \"number\") {\r\n this.uiWidth = width;\r\n this.uiHeight = height;\r\n this.uiOrientation = height > width? \"portrait\": \"landscape\";\r\n this.isSmallDevice = isSmallDevice;\r\n }\r\n }\r\n setUiOffsetTop(uiOffsetTop?: number) {\r\n this.uiOffsetTop = uiOffsetTop? uiOffsetTop: 0;\r\n }\r\n\r\n resetPendingRequestCount() {\r\n this.pendingRequestCount = 0;\r\n }\r\n\r\n setMenuVisible(visible: boolean) {\r\n this.menuVisible = visible;\r\n }\r\n setFilterActive(active: boolean) {\r\n this.filterActive = active;\r\n }\r\n\r\n setSidebarSelectOpen(open: boolean) {\r\n this.sidebarSelectOpen = open;\r\n }\r\n\r\n setSidebarVisible(visible: boolean) {\r\n if (visible) {\r\n // add listener when menu open\r\n window.addEventListener(\"resize\", this.handleWindowResizeWhenSidebarOpen);\r\n } else {\r\n window.removeEventListener(\"resize\", this.handleWindowResizeWhenSidebarOpen);\r\n }\r\n this.sidebarVisible = visible;\r\n }\r\n toggleSidebarVisible() {\r\n this.setSidebarVisible(!this.sidebarVisible);\r\n }\r\n setSidebarHigh(isHigh: boolean){\r\n this.sidebarHigh = isHigh;\r\n }\r\n\r\n setToolGraphic(toolGraphic?: __esri.Graphic | null) {\r\n if(typeof toolGraphic === \"undefined\"){\r\n toolGraphic = null;\r\n }\r\n this.toolGraphic = toolGraphic;\r\n }\r\n\r\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\r\n handleWindowResizeWhenSidebarOpen() {\r\n if (this.isSidebarVisible) {\r\n this.setSidebarVisible(false);\r\n }\r\n // only resize once\r\n window.removeEventListener(\"resize\", this.handleWindowResizeWhenSidebarOpen);\r\n }\r\n\r\n /**\r\n * Start resizing\r\n */\r\n startResizing() {\r\n this.resizing.set(true);\r\n }\r\n\r\n /**\r\n * Stop resizing\r\n */\r\n stopResizing() {\r\n this.resizing.set(false);\r\n }\r\n\r\n}\r\n","import \"./index.scss\";\n\nimport * as React from \"react\";\nimport { createRoot } from \"react-dom/client\";\n\nimport {App} from \"./components/app\";\nimport {AppConfiguration} from \"./core/config/app-configuration\";\nimport {MapViewerConfiguration} from \"./config/map-viewer-configuration\";\n\nimport { JsonSerializer } from \"typescript-json-serializer\";\n\nimport esriRequest from \"@arcgis/core/request\";\nimport {BrowserRouter, Outlet, Route, Routes, useNavigate, useLocation, useParams, useSearchParams}\n from \"react-router-dom\";\n\nimport {AppState} from \"./components/app/app-mobx\";\nimport {Notfound} from \"./core/components/not-found/not-found\";\n\nimport RequestResponse = __esri.RequestResponse;\nimport MatomoTracker from \"@datapunt/matomo-tracker-js\";\n\nconst loadConfig = (url: string, file: string): Promise<RequestResponse> => {\n const path = url + \"/\" + file;\n return esriRequest(path, {\n responseType: \"json\"\n });\n};\n\n// TODO: auf APP_ROOT umstellen bzw. auf unterschiedliche URL pro Zielumgebung (Target)\n// TODO: In JSON die Pfade auf Icons ersetzen je nach Target\nconst loadConfigs = async (url: string) =>\n // use typescript dynamic import to load the config json files\n await Promise.all([\n loadConfig(url, \"core.json\"),\n loadConfig(url, \"mapviewer.json\")\n ]);\n\nif (!new class { x: any; }().hasOwnProperty(\"x\")) { throw new Error(\"Transpiler is not configured correctly\"); }\n\n// Map to the country class\ntry {\n\n // __CONFIG_ROOT__ is replaced by Webpack build process\n // see config/environments\n // noinspection UnnecessaryLocalVariableJS\n const configRoot = __CONFIG_ROOT__;\n loadConfigs(configRoot).then(([appJson, mapviewerJson]) => {\n const defaultSerializer = new JsonSerializer();\n const appConfig = defaultSerializer.deserializeObject<AppConfiguration>(appJson.data, AppConfiguration);\n\n // deserialize as specific configuration type, but pass it to the App as generic base class type\n const mapViewerConfig =\n defaultSerializer.deserializeObject(mapviewerJson.data, MapViewerConfiguration);\n if (appConfig && mapViewerConfig) {\n const tracker =\n (mapViewerConfig.tracker !== undefined) ? new MatomoTracker(mapViewerConfig.tracker) : undefined;\n const appStore = new AppState(mapViewerConfig, tracker);\n // https://gist.github.com/mjackson/d54b40a094277b7afdd6b81f51a0393f#gistcomment-3966800\n const RouteElement = ({component: RouteComponent, ...passProps}: any) => {\n const location = useLocation();\n const navigate = useNavigate();\n const params = useParams();\n const [searchParams, setSearchParams] = useSearchParams();\n return (<RouteComponent {...passProps} location={location} navigate={navigate}\n params={params} searchParams={searchParams}\n setSearchParams={setSearchParams} />\n );\n };\n\n const container = document.getElementById(\"app-root\");\n const root = createRoot(container!);\n root.render(\n (<BrowserRouter basename={appConfig.basename}>\n <Routes>\n <Route\n path=\"/\"\n element={\n <RouteElement\n component={App}\n config={appConfig}\n moduleConfig={mapViewerConfig}\n appStore={appStore}\n />\n }\n >\n <Route path=\":topic\" element={<Outlet/>} />\n <Route path=\":topic/:subtopic\" element={<Outlet/>} />\n <Route path=\":topic/:subtopic/:objectId\" element={<Outlet/>} />\n <Route path=\":topic/:subtopic/:objectId/:addId\" element={<Outlet/>} />\n </Route>\n <Route path=\"*\" element={<Notfound/>} />\n </Routes>\n </BrowserRouter>)\n );\n }\n }).catch((error) => {\n // eslint-disable-next-line no-console\n console.error(error);\n });\n} catch (e) {\n // eslint-disable-next-line no-console\n console.error(e);\n}\n","import {CustomSearchSourceConfiguration} from \"../core/config/search-configuration\";\r\n\r\n/**\r\n * Custom search class to search for measurement stations\r\n */\r\nexport class SearchStation {\r\n\r\n placeholder: \"Suche Station\";\r\n lyr: __esri.FeatureLayer;\r\n searchFields: string[];\r\n outFields: string[];\r\n maxSuggestions: number;\r\n maxResults: number;\r\n orderByFields: string[];\r\n\r\n constructor(props?: CustomSearchSourceConfiguration) {\r\n if (props) {\r\n props.maxSuggestions = props.hasOwnProperty(\"maxSuggestions\") ? props.maxSuggestions : 6;\r\n props.maxResults = props.hasOwnProperty(\"maxResults\") ? props.maxResults : 6;\r\n Object.assign(this, props);\r\n }\r\n }\r\n\r\n /**\r\n * Provide a getSuggestions method\r\n * to provide suggestions to the Search widget\r\n */\r\n getSuggestions(params: any): Promise<__esri.SuggestResult[]> {\r\n // query layer attributes\r\n // TODO: query for each field in searchField\r\n const promises: any[] = [];\r\n this.searchFields.forEach((field) => {\r\n const promise = this.lyr.queryFeatures({\r\n where: `${field} = '${params.suggestTerm}'`,\r\n returnGeometry: false,\r\n outFields: this.outFields,\r\n num: params.maxSuggestions,\r\n orderByFields: this.orderByFields\r\n }).then((results: any) =>\r\n // Return Suggestion results to display\r\n // in the Search widget\r\n results.features.map((feature: any) => ({\r\n key: field,\r\n text: feature.properties.label,\r\n sourceIndex: params.sourceIndex\r\n }))\r\n );\r\n promises.push(promise);\r\n });\r\n\r\n return Promise.all(promises);\r\n }\r\n\r\n /**\r\n * Provide a getResults method to find\r\n * results from the suggestions\r\n *\r\n * @param params\r\n */\r\n getResults(params: any): Promise<__esri.SearchResult[]> {\r\n // If the Search widget passes the current location,\r\n // you can use this in your own custom source\r\n // const operation = params.location ? \"reverse/\" : \"search/\";\r\n // const query = {};\r\n // // You can perform a different query if a location\r\n // // is provided\r\n // if (params.location) {\r\n // query.lat = params.location.latitude;\r\n // query.lon = params.location.longitude;\r\n // } else {\r\n // query.q = params.suggestResult.text.replace(/ /g, \"+\");\r\n // query.limit = 6;\r\n // }\r\n console.log(params);\r\n return this.lyr.queryFeatures({\r\n // where: `${field} = '${params.suggestTerm}'`,\r\n returnGeometry: true,\r\n outFields: this.outFields,\r\n num: params.maxResults,\r\n orderByFields: this.orderByFields\r\n }).then( (results: any) =>\r\n // Parse the results of your custom search\r\n // Return an array of Search Results\r\n results.features.map((feature: any) => {\r\n // Optionally, you can provide an extent for\r\n // a point result, so the view can zoom to it\r\n const buffer = __esri.geometryEngine.geodesicBuffer(feature.geometry, 100, \"meters\");\r\n // Return a Search Result\r\n return {\r\n extent: buffer[0].extent,\r\n feature,\r\n name: feature.properties.label\r\n };\r\n })\r\n );\r\n }\r\n}\r\n","import {makeObservable} from \"mobx\";\r\n\r\nimport {AppConfiguration} from \"../core/config/app-configuration\";\r\nimport {MapViewerConfiguration} from \"../config/map-viewer-configuration\";\r\nimport {AppState} from \"../components/app/app-mobx\";\r\nimport {MapState} from \"../core/map-state\";\r\nimport {UiState} from \"../core/ui-state\";\r\nimport {AbstractAppStore} from \"../core/stores/abstract-app-store\";\r\n\r\nexport interface MapViewerStoreProps {\r\n appConfig: AppConfiguration;\r\n mapViewerConfig: MapViewerConfiguration;\r\n appStore: AppState;\r\n mapStore: MapState;\r\n uiStore: UiState;\r\n}\r\n\r\nexport class MapViewerStore extends AbstractAppStore {\r\n /* stores are injected by abstract app store. Do not add them here! */\r\n\r\n /* add app specific properties here. Do not forget to add as observable in constructor */\r\n\r\n constructor(props: MapViewerStoreProps) {\r\n\r\n super(props);\r\n makeObservable(this, {\r\n /* add app specific observables here */\r\n });\r\n\r\n /* add app specific functions here */\r\n }\r\n\r\n}\r\n\r\n\r\n","/**\r\n * Replace variables in a template string with properties of an object\r\n * and executes the resulting string\r\n *\r\n * @param params\r\n * @returns {never}\r\n * @example:\r\n * const template = \"${text} == 'Foo Boo'\";\r\n * const result = template.evaluate({\r\n * text: 'Foo Boo'\r\n * });\r\n * console.log(result);\r\n */\r\nString.prototype.evaluate = function(this: string, params: object): boolean | string | null {\r\n const names = Object.keys(params);\r\n const values = Object.values(params);\r\n try {\r\n const expression = new Function(...names, `return \\`${this}\\`;`)(...values);\r\n return new Function(\"return \" + expression)();\r\n } catch (e) {\r\n console.warn(e);\r\n if (e instanceof ReferenceError) {\r\n // fields specified in expression not found in object\r\n return null;\r\n }\r\n throw e;\r\n }\r\n};\r\n","import {FieldInfoFormatConfiguration} from \"../core/config/field-info-configuration\";\r\n\r\nexport class FormatUtils {\r\n constructor() {}\r\n\r\n /**\r\n * Format a value based on format configuration\r\n */\r\n static formatValue(value: any, format: FieldInfoFormatConfiguration) {\r\n if (!format) {\r\n return value;\r\n }\r\n if (!value) {\r\n return \"-\";\r\n }\r\n if (format.places) {\r\n // use toString to remove insignificant trailing zeros\r\n value = (+value).toFixed(format.places).replace(/([0-9]+(\\.[0-9]+[1-9])?)(\\.?0+$)/, \"$1\");\r\n }\r\n if (format.digitSeparator) {\r\n value = Number(value).toLocaleString(\"de-CH\");\r\n }\r\n if (format.dateFormat) {\r\n throw new Error(\"Not implemented.\");\r\n }\r\n return value;\r\n }\r\n /**\r\n * Führende Zahlen im Title entfernen (Basemap Gallery)\r\n */\r\n static formatTitle(title: string) {\r\n return title.replace(/^(\\d){2,3} /,\"\");\r\n }\r\n /**\r\n * Styling based on color variable\r\n *\r\n * @param value The value\r\n * @param colorVariable Color variable specifications\r\n * @param useColorVariableLabel Indicator whether the label of the color variable specification should be\r\n * displayed instead of the value\r\n */\r\n static visualFormat(value: number, colorVariable: __esri.ColorVariable, useColorVariableLabel: boolean) {\r\n for (let i = 0; i < colorVariable.stops.length; i++) {\r\n const stop = colorVariable.stops[i];\r\n if (value < stop.value) {\r\n return {\r\n backgroundColor: stop.color,\r\n colorLabel: stop.label,\r\n textAlign: useColorVariableLabel ? \"center\" : \"inherit\"\r\n };\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * Pad text with zeros\r\n *\r\n * @param text Input text\r\n * @param length The result length\r\n */\r\n static padZero(text: string, length: number | undefined | null) {\r\n length = length || 2;\r\n const zeros = new Array(length).join(\"0\");\r\n return (zeros + text).slice(-length);\r\n }\r\n\r\n /**\r\n * https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Regular_Expressions#escaping\r\n * @param regexString\r\n */\r\n static escapeRegExp(regexString: string): string {\r\n return regexString.replace(/[.*+?^${}()|[\\]\\\\]/g, \"\\\\$&\"); // $& means the whole matched string\r\n }\r\n // https://stackoverflow.com/a/7760578\r\n // https://cheatsheetseries.owasp.org/cheatsheets/SQL_Injection_Prevention_Cheat_Sheet.html\r\n static encodeForSQL(str: string): string {\r\n return str.replace(/[\\0\\x08\\x09\\x1a\\n\\r\"']/g, (char) => {\r\n switch (char) {\r\n case \"\\0\":\r\n case \"\\x08\":\r\n case \"\\x09\":\r\n case \"\\x1a\":\r\n case \"\\n\":\r\n case \"\\r\":\r\n return \"\";\r\n case \"'\":\r\n return \"''\";\r\n default:\r\n return char;\r\n }\r\n });\r\n }\r\n static encodeForSQLLike(str: string): string {\r\n str = this.encodeForSQL(str);\r\n return str.replace(/[_\\\\%]/g, (char) => {\r\n switch (char) {\r\n case \"\\\\\":\r\n case \"%\":\r\n case \"_\":\r\n return \"\\\\\"+char; // prepends a backslash to backslash, percent, and double/single quotes\r\n default:\r\n return char;\r\n }\r\n });\r\n }\r\n\r\n}\r\n\r\n","import * as geometryEngine from \"@arcgis/core/geometry/geometryEngine\";\r\n\r\nexport class MapUtils {\r\n constructor() {}\r\n\r\n /**\r\n * Berechnet den Minimalen Extent\r\n *\r\n * @param {__esri.Geometry | __esri.Geometry[]} geometries: Einzelne Geometry oder Array mit Geometrien\r\n * @param {number} length: Minimale Länge/Breite des Extent, default 100 Meter\r\n * @returns {Extent}: Minimaler Extent\r\n */\r\n static calculateMinExtent(geometries: __esri.Geometry | __esri.Geometry[], length?: number): __esri.Extent {\r\n const geometry = Array.isArray(geometries)? geometryEngine.union(geometries): geometries;\r\n let extent = geometry.extent;\r\n // Extent mit mindestens 100x100 Meter sicherstellen\r\n // TODO: In config verschieben\r\n const x = length? length: 100;\r\n if (!extent) {\r\n const buffer = geometryEngine.buffer(geometry, x/2, \"meters\");\r\n if(Array.isArray(buffer)) {\r\n extent = buffer[0].extent;\r\n } else if (buffer.extent) {\r\n extent = buffer.extent;\r\n }\r\n }else if(extent.width < 100 || extent.height < 100) {\r\n if(extent.width < 100){\r\n const xPadding = Math.ceil((x - extent.width)/2);\r\n extent.xmin-=xPadding;\r\n extent.xmax+=xPadding;\r\n }\r\n if(extent.height < 100){\r\n const yPadding = Math.ceil((x - extent.height)/2);\r\n extent.ymin-=yPadding;\r\n extent.ymax+=yPadding;\r\n }\r\n }\r\n return extent;\r\n }\r\n\r\n}\r\n\r\n","export class ObjectUtils {\r\n constructor() {}\r\n\r\n /**\r\n * Performs a deep merge of objects and returns new object. Does not modify\r\n * objects (immutable) and merges arrays via concatenation.\r\n * See https://stackoverflow.com/questions/27936772/how-to-deep-merge-instead-of-shallow-merge\r\n *\r\n * @param {...object} objects - Objects to merge\r\n * @returns {object} New object with merged key/values\r\n */\r\n static mergeDeep(...objects: any[]) {\r\n const isObject = (obj: any) => obj && typeof obj === \"object\";\r\n\r\n return objects.reduce((prev, obj) => {\r\n Object.keys(obj).forEach((key) => {\r\n const pVal = prev[key];\r\n const oVal = obj[key];\r\n\r\n if (Array.isArray(pVal) && Array.isArray(oVal)) {\r\n // unique value arrays\r\n // prev[key] = [...pVal, ...oVal].filter((element, index, array) => array.indexOf(element) === index);\r\n // Ausnahme für layerTemplates TODO: bessere Lösung finden\r\n if(key===\"layerTemplates\"){\r\n prev[key] = pVal.concat(...oVal); // non unique arrays\r\n }else{\r\n prev[key] = oVal; // don't merge arrays\r\n }\r\n }\r\n else if (isObject(pVal) && isObject(oVal)) {\r\n prev[key] = ObjectUtils.mergeDeep(pVal, oVal);\r\n }\r\n else {\r\n prev[key] = oVal;\r\n }\r\n });\r\n\r\n return prev;\r\n }, {});\r\n }\r\n\r\n}\r\n\r\n","export class PathUtils {\r\n constructor() {}\r\n\r\n /**\r\n * Joins arguments to a path\r\n * joinPath(\"http://google.com/\", \"my\", \"path\") will return \"http://google.com/my/path\"\r\n * joinPath(\"//a\", \"\", \"/\", \"/b/\") will return \"//a/b\"\r\n * joinPath() will return \"\"\r\n *\r\n * @param args\r\n */\r\n static joinPath(...args: any[]): string {\r\n return args.map((part, i) => {\r\n if (i === 0) {\r\n return part.trim().replace(/[\\/]*$/g, \"\");\r\n } else {\r\n return part.trim().replace(/(^[\\/]*|[\\/]*$)/g, \"\");\r\n }\r\n }).filter((x) => x.length).join(\"/\");\r\n }\r\n static getLayerPath(layer: __esri.Layer\r\n | __esri.MapImageLayer | __esri.FeatureLayer | __esri.Sublayer | __esri.TileLayer | null): string | null {\r\n // parsedUrl on Layer is not documented!\r\n if (!layer) {\r\n return null;\r\n }\r\n let url = (layer as any).parsedUrl?.path;\r\n if (!url && \"url\" in layer) {\r\n url = (layer as __esri.MapImageLayer).url; // MapImageLayer Service\r\n }\r\n return url;\r\n }\r\n static getMetaId( path: string | null): string {\r\n if(typeof path !== \"string\"){\r\n return \"\";\r\n }\r\n path = path.replace(/\\/(FeatureServer|MapServer|ImageServer|VectorTileServer)(|\\/|\\/(\\d+))$/i, \"\");\r\n path = path.replace(/\\/VectorTileServer\\/(.+)\\.json$/i, \"\");\r\n path = path.substring(path.lastIndexOf(\"/\") + 1);\r\n path = path.replace(/_map$/i, \"\");\r\n path = path.replace(/_v(\\d+)(_FT|_MP|_IM|_VT|$)/i, \"\"); // Version und Feature/Map Services Postfix entfernen\r\n return path;\r\n }\r\n static getLayerId( path: string): number | null {\r\n let layerId = null;\r\n const matches = path.match(/\\/(FeatureServer|MapServer|ImageServer)(|\\/|\\/(\\d+))$/i);\r\n path = path.replace(/\\/VectorTileServer\\/(.+)\\.json$/i, \"\");\r\n if(matches && matches.length === 4 && typeof matches[3] !== \"undefined\"){\r\n layerId = parseInt(matches[3], 10);\r\n }\r\n return layerId;\r\n }\r\n static getVersion( path: string | null): number | null {\r\n let version = null;\r\n if(typeof path === \"string\") {\r\n const matches = path.match(/_v(\\d+)(_FT|_MP|_IM|_VT|$)/i);\r\n if (matches && matches.length === 3 && typeof matches[1] !== \"undefined\") {\r\n version = parseInt(matches[1], 10);\r\n }\r\n }\r\n return version;\r\n }\r\n static readableUrl(url: string): string {\r\n const addr = new URL(url);\r\n url = addr.hostname;\r\n url = url.replace(/^www\\./i, \"\");\r\n if (addr.pathname !== \"/\" || addr.search !==\"\" || addr.hash !==\"\"){\r\n url += addr.pathname + addr.search + addr.hash;\r\n }\r\n return url;\r\n }\r\n // https://stackoverflow.com/questions/1053902/how-to-convert-a-title-to-a-url-slug-in-jquery\r\n static slug(str: string): string {\r\n str = str.replace(/^\\s+|\\s+$/g, \"\"); // trim\r\n str = str.toLowerCase();\r\n\r\n // remove accents, swap ñ for n, etc\r\n const from = \"ÁÄÂÀÃÅČÇĆĎÉĚËÈÊẼĔȆĞÍÌÎÏİŇÑÓÖÒÔÕØŘŔŠŞŤÚŮÜÙÛÝŸŽ\"\r\n + \"áäâàãåčçćďéěëèêẽĕȇğíìîïıňñóöòôõøðřŕšşťúůüùûýÿžþÞĐđßÆa·/_,:;\";\r\n const to = \"AAAAAACCCDEEEEEEEEGIIIIINNOOOOOORRSSTUUUUUYYZ\"\r\n + \"aaaaaacccdeeeeeeeegiiiiinnooooooorrsstuuuuuyyzbBDdBAa------\";\r\n for (let i=0, l=from.length ; i<l ; i++) {\r\n str = str.replace(new RegExp(from.charAt(i), \"g\"), to.charAt(i));\r\n }\r\n str = str.replace(/[^a-z0-9 -]/g, \"\") // remove invalid chars\r\n .replace(/\\s+/g, \"-\") // collapse whitespace and replace by -\r\n .replace(/-+/g, \"-\"); // collapse dashes\r\n\r\n return str;\r\n };\r\n /**\r\n * JS Implementation of MurmurHash3 (r136) (as of May 20, 2011)\r\n *\r\n * @author <a href=\"mailto:gary.court@gmail.com\">Gary Court</a>\r\n * @see http://github.com/garycourt/murmurhash-js\r\n * @author <a href=\"mailto:aappleby@gmail.com\">Austin Appleby</a>\r\n * @see http://sites.google.com/site/murmurhash/\r\n *\r\n * @param {string} key ASCII only\r\n * @param {number} seed Positive integer only, default 42\r\n * @return {number} 32-bit positive integer hash\r\n */\r\n\r\n static murmurhash3(key: string, seed?: number) {\r\n let h1b; let k1; let i;\r\n\r\n const remainder: number = key.length & 3; // key.length % 4\r\n const bytes: number = key.length - remainder;\r\n let h1: number = typeof seed === \"undefined\"? 42: seed;\r\n const c1: number = 0xcc9e2d51;\r\n const c2: number = 0x1b873593;\r\n i = 0;\r\n\r\n while (i < bytes) {\r\n k1 =\r\n ((key.charCodeAt(i) & 0xff)) |\r\n ((key.charCodeAt(++i) & 0xff) << 8) |\r\n ((key.charCodeAt(++i) & 0xff) << 16) |\r\n ((key.charCodeAt(++i) & 0xff) << 24);\r\n ++i;\r\n\r\n k1 = ((((k1 & 0xffff) * c1) + ((((k1 >>> 16) * c1) & 0xffff) << 16))) & 0xffffffff;\r\n k1 = (k1 << 15) | (k1 >>> 17);\r\n k1 = ((((k1 & 0xffff) * c2) + ((((k1 >>> 16) * c2) & 0xffff) << 16))) & 0xffffffff;\r\n\r\n h1 ^= k1;\r\n h1 = (h1 << 13) | (h1 >>> 19);\r\n h1b = ((((h1 & 0xffff) * 5) + ((((h1 >>> 16) * 5) & 0xffff) << 16))) & 0xffffffff;\r\n h1 = (((h1b & 0xffff) + 0x6b64) + ((((h1b >>> 16) + 0xe654) & 0xffff) << 16));\r\n }\r\n\r\n k1 = 0;\r\n\r\n switch (remainder) {\r\n case 3: k1 ^= (key.charCodeAt(i + 2) & 0xff) << 16;\r\n case 2: k1 ^= (key.charCodeAt(i + 1) & 0xff) << 8;\r\n case 1: k1 ^= (key.charCodeAt(i) & 0xff);\r\n\r\n k1 = (((k1 & 0xffff) * c1) + ((((k1 >>> 16) * c1) & 0xffff) << 16)) & 0xffffffff;\r\n k1 = (k1 << 15) | (k1 >>> 17);\r\n k1 = (((k1 & 0xffff) * c2) + ((((k1 >>> 16) * c2) & 0xffff) << 16)) & 0xffffffff;\r\n h1 ^= k1;\r\n }\r\n\r\n h1 ^= key.length;\r\n\r\n h1 ^= h1 >>> 16;\r\n h1 = (((h1 & 0xffff) * 0x85ebca6b) + ((((h1 >>> 16) * 0x85ebca6b) & 0xffff) << 16)) & 0xffffffff;\r\n h1 ^= h1 >>> 13;\r\n h1 = ((((h1 & 0xffff) * 0xc2b2ae35) + ((((h1 >>> 16) * 0xc2b2ae35) & 0xffff) << 16))) & 0xffffffff;\r\n h1 ^= h1 >>> 16;\r\n\r\n return h1 >>> 0;\r\n }\r\n}\r\n\r\n","// extracted by mini-css-extract-plugin\nexport {};\n if(module.hot) {\n (function() {\n var localsJsonString = undefined;\n // 1739272983623\n var cssReload = require(\"../../../node_modules/mini-css-extract-plugin/dist/hmr/hotModuleReplacement.js\")(module.id, {});\n // only invalidate when locals change\n if (\n module.hot.data &&\n module.hot.data.value &&\n module.hot.data.value !== localsJsonString\n ) {\n module.hot.invalidate();\n } else {\n module.hot.accept();\n }\n module.hot.dispose(function(data) {\n data.value = localsJsonString;\n cssReload();\n });\n })();\n }\n ","// extracted by mini-css-extract-plugin\nexport {};\n if(module.hot) {\n (function() {\n var localsJsonString = undefined;\n // 1739273008638\n var cssReload = require(\"../../../node_modules/mini-css-extract-plugin/dist/hmr/hotModuleReplacement.js\")(module.id, {});\n // only invalidate when locals change\n if (\n module.hot.data &&\n module.hot.data.value &&\n module.hot.data.value !== localsJsonString\n ) {\n module.hot.invalidate();\n } else {\n module.hot.accept();\n }\n module.hot.dispose(function(data) {\n data.value = localsJsonString;\n cssReload();\n });\n })();\n }\n ","// extracted by mini-css-extract-plugin\nexport {};\n if(module.hot) {\n (function() {\n var localsJsonString = undefined;\n // 1739272983951\n var cssReload = require(\"../../../../node_modules/mini-css-extract-plugin/dist/hmr/hotModuleReplacement.js\")(module.id, {});\n // only invalidate when locals change\n if (\n module.hot.data &&\n module.hot.data.value &&\n module.hot.data.value !== localsJsonString\n ) {\n module.hot.invalidate();\n } else {\n module.hot.accept();\n }\n module.hot.dispose(function(data) {\n data.value = localsJsonString;\n cssReload();\n });\n })();\n }\n ","// extracted by mini-css-extract-plugin\nexport {};\n if(module.hot) {\n (function() {\n var localsJsonString = undefined;\n // 1739272983920\n var cssReload = require(\"../../../../node_modules/mini-css-extract-plugin/dist/hmr/hotModuleReplacement.js\")(module.id, {});\n // only invalidate when locals change\n if (\n module.hot.data &&\n module.hot.data.value &&\n module.hot.data.value !== localsJsonString\n ) {\n module.hot.invalidate();\n } else {\n module.hot.accept();\n }\n module.hot.dispose(function(data) {\n data.value = localsJsonString;\n cssReload();\n });\n })();\n }\n ","// extracted by mini-css-extract-plugin\nexport {};\n if(module.hot) {\n (function() {\n var localsJsonString = undefined;\n // 1739272983921\n var cssReload = require(\"../../../../node_modules/mini-css-extract-plugin/dist/hmr/hotModuleReplacement.js\")(module.id, {});\n // only invalidate when locals change\n if (\n module.hot.data &&\n module.hot.data.value &&\n module.hot.data.value !== localsJsonString\n ) {\n module.hot.invalidate();\n } else {\n module.hot.accept();\n }\n module.hot.dispose(function(data) {\n data.value = localsJsonString;\n cssReload();\n });\n })();\n }\n ","// extracted by mini-css-extract-plugin\nexport {};\n if(module.hot) {\n (function() {\n var localsJsonString = undefined;\n // 1739272983913\n var cssReload = require(\"../../../../node_modules/mini-css-extract-plugin/dist/hmr/hotModuleReplacement.js\")(module.id, {});\n // only invalidate when locals change\n if (\n module.hot.data &&\n module.hot.data.value &&\n module.hot.data.value !== localsJsonString\n ) {\n module.hot.invalidate();\n } else {\n module.hot.accept();\n }\n module.hot.dispose(function(data) {\n data.value = localsJsonString;\n cssReload();\n });\n })();\n }\n ","// extracted by mini-css-extract-plugin\nexport {};\n if(module.hot) {\n (function() {\n var localsJsonString = undefined;\n // 1739272983917\n var cssReload = require(\"../../../../node_modules/mini-css-extract-plugin/dist/hmr/hotModuleReplacement.js\")(module.id, {});\n // only invalidate when locals change\n if (\n module.hot.data &&\n module.hot.data.value &&\n module.hot.data.value !== localsJsonString\n ) {\n module.hot.invalidate();\n } else {\n module.hot.accept();\n }\n module.hot.dispose(function(data) {\n data.value = localsJsonString;\n cssReload();\n });\n })();\n }\n ","// extracted by mini-css-extract-plugin\nexport {};\n if(module.hot) {\n (function() {\n var localsJsonString = undefined;\n // 1739272983919\n var cssReload = require(\"../../../../node_modules/mini-css-extract-plugin/dist/hmr/hotModuleReplacement.js\")(module.id, {});\n // only invalidate when locals change\n if (\n module.hot.data &&\n module.hot.data.value &&\n module.hot.data.value !== localsJsonString\n ) {\n module.hot.invalidate();\n } else {\n module.hot.accept();\n }\n module.hot.dispose(function(data) {\n data.value = localsJsonString;\n cssReload();\n });\n })();\n }\n ","// extracted by mini-css-extract-plugin\nexport {};\n if(module.hot) {\n (function() {\n var localsJsonString = undefined;\n // 1739272986605\n var cssReload = require(\"../../../../node_modules/mini-css-extract-plugin/dist/hmr/hotModuleReplacement.js\")(module.id, {});\n // only invalidate when locals change\n if (\n module.hot.data &&\n module.hot.data.value &&\n module.hot.data.value !== localsJsonString\n ) {\n module.hot.invalidate();\n } else {\n module.hot.accept();\n }\n module.hot.dispose(function(data) {\n data.value = localsJsonString;\n cssReload();\n });\n })();\n }\n ","// extracted by mini-css-extract-plugin\nexport {};\n if(module.hot) {\n (function() {\n var localsJsonString = undefined;\n // 1739272983911\n var cssReload = require(\"../../../../node_modules/mini-css-extract-plugin/dist/hmr/hotModuleReplacement.js\")(module.id, {});\n // only invalidate when locals change\n if (\n module.hot.data &&\n module.hot.data.value &&\n module.hot.data.value !== localsJsonString\n ) {\n module.hot.invalidate();\n } else {\n module.hot.accept();\n }\n module.hot.dispose(function(data) {\n data.value = localsJsonString;\n cssReload();\n });\n })();\n }\n ","// extracted by mini-css-extract-plugin\nexport {};\n if(module.hot) {\n (function() {\n var localsJsonString = undefined;\n // 1739272983955\n var cssReload = require(\"../../../../node_modules/mini-css-extract-plugin/dist/hmr/hotModuleReplacement.js\")(module.id, {});\n // only invalidate when locals change\n if (\n module.hot.data &&\n module.hot.data.value &&\n module.hot.data.value !== localsJsonString\n ) {\n module.hot.invalidate();\n } else {\n module.hot.accept();\n }\n module.hot.dispose(function(data) {\n data.value = localsJsonString;\n cssReload();\n });\n })();\n }\n ","// extracted by mini-css-extract-plugin\nexport {};\n if(module.hot) {\n (function() {\n var localsJsonString = undefined;\n // 1739272986608\n var cssReload = require(\"../../../../node_modules/mini-css-extract-plugin/dist/hmr/hotModuleReplacement.js\")(module.id, {});\n // only invalidate when locals change\n if (\n module.hot.data &&\n module.hot.data.value &&\n module.hot.data.value !== localsJsonString\n ) {\n module.hot.invalidate();\n } else {\n module.hot.accept();\n }\n module.hot.dispose(function(data) {\n data.value = localsJsonString;\n cssReload();\n });\n })();\n }\n ","// extracted by mini-css-extract-plugin\nexport {};\n if(module.hot) {\n (function() {\n var localsJsonString = undefined;\n // 1739272983916\n var cssReload = require(\"../../../../node_modules/mini-css-extract-plugin/dist/hmr/hotModuleReplacement.js\")(module.id, {});\n // only invalidate when locals change\n if (\n module.hot.data &&\n module.hot.data.value &&\n module.hot.data.value !== localsJsonString\n ) {\n module.hot.invalidate();\n } else {\n module.hot.accept();\n }\n module.hot.dispose(function(data) {\n data.value = localsJsonString;\n cssReload();\n });\n })();\n }\n ","// extracted by mini-css-extract-plugin\nexport {};\n if(module.hot) {\n (function() {\n var localsJsonString = undefined;\n // 1739272983954\n var cssReload = require(\"../../../../node_modules/mini-css-extract-plugin/dist/hmr/hotModuleReplacement.js\")(module.id, {});\n // only invalidate when locals change\n if (\n module.hot.data &&\n module.hot.data.value &&\n module.hot.data.value !== localsJsonString\n ) {\n module.hot.invalidate();\n } else {\n module.hot.accept();\n }\n module.hot.dispose(function(data) {\n data.value = localsJsonString;\n cssReload();\n });\n })();\n }\n ","// extracted by mini-css-extract-plugin\nexport {};\n if(module.hot) {\n (function() {\n var localsJsonString = undefined;\n // 1739272983957\n var cssReload = require(\"../../../../node_modules/mini-css-extract-plugin/dist/hmr/hotModuleReplacement.js\")(module.id, {});\n // only invalidate when locals change\n if (\n module.hot.data &&\n module.hot.data.value &&\n module.hot.data.value !== localsJsonString\n ) {\n module.hot.invalidate();\n } else {\n module.hot.accept();\n }\n module.hot.dispose(function(data) {\n data.value = localsJsonString;\n cssReload();\n });\n })();\n }\n ","// extracted by mini-css-extract-plugin\nexport {};\n if(module.hot) {\n (function() {\n var localsJsonString = undefined;\n // 1739272983932\n var cssReload = require(\"../../../../node_modules/mini-css-extract-plugin/dist/hmr/hotModuleReplacement.js\")(module.id, {});\n // only invalidate when locals change\n if (\n module.hot.data &&\n module.hot.data.value &&\n module.hot.data.value !== localsJsonString\n ) {\n module.hot.invalidate();\n } else {\n module.hot.accept();\n }\n module.hot.dispose(function(data) {\n data.value = localsJsonString;\n cssReload();\n });\n })();\n }\n ","// extracted by mini-css-extract-plugin\nexport {};\n if(module.hot) {\n (function() {\n var localsJsonString = undefined;\n // 1739272983935\n var cssReload = require(\"../../../../node_modules/mini-css-extract-plugin/dist/hmr/hotModuleReplacement.js\")(module.id, {});\n // only invalidate when locals change\n if (\n module.hot.data &&\n module.hot.data.value &&\n module.hot.data.value !== localsJsonString\n ) {\n module.hot.invalidate();\n } else {\n module.hot.accept();\n }\n module.hot.dispose(function(data) {\n data.value = localsJsonString;\n cssReload();\n });\n })();\n }\n ","// extracted by mini-css-extract-plugin\nexport {};\n if(module.hot) {\n (function() {\n var localsJsonString = undefined;\n // 1739272983956\n var cssReload = require(\"../../../../node_modules/mini-css-extract-plugin/dist/hmr/hotModuleReplacement.js\")(module.id, {});\n // only invalidate when locals change\n if (\n module.hot.data &&\n module.hot.data.value &&\n module.hot.data.value !== localsJsonString\n ) {\n module.hot.invalidate();\n } else {\n module.hot.accept();\n }\n module.hot.dispose(function(data) {\n data.value = localsJsonString;\n cssReload();\n });\n })();\n }\n ","// extracted by mini-css-extract-plugin\nexport {};\n if(module.hot) {\n (function() {\n var localsJsonString = undefined;\n // 1739272983937\n var cssReload = require(\"../../../../node_modules/mini-css-extract-plugin/dist/hmr/hotModuleReplacement.js\")(module.id, {});\n // only invalidate when locals change\n if (\n module.hot.data &&\n module.hot.data.value &&\n module.hot.data.value !== localsJsonString\n ) {\n module.hot.invalidate();\n } else {\n module.hot.accept();\n }\n module.hot.dispose(function(data) {\n data.value = localsJsonString;\n cssReload();\n });\n })();\n }\n ","// extracted by mini-css-extract-plugin\nexport {};\n if(module.hot) {\n (function() {\n var localsJsonString = undefined;\n // 1739272983952\n var cssReload = require(\"../../../../node_modules/mini-css-extract-plugin/dist/hmr/hotModuleReplacement.js\")(module.id, {});\n // only invalidate when locals change\n if (\n module.hot.data &&\n module.hot.data.value &&\n module.hot.data.value !== localsJsonString\n ) {\n module.hot.invalidate();\n } else {\n module.hot.accept();\n }\n module.hot.dispose(function(data) {\n data.value = localsJsonString;\n cssReload();\n });\n })();\n }\n ","// extracted by mini-css-extract-plugin\nexport {};\n if(module.hot) {\n (function() {\n var localsJsonString = undefined;\n // 1739272983949\n var cssReload = require(\"../../../../node_modules/mini-css-extract-plugin/dist/hmr/hotModuleReplacement.js\")(module.id, {});\n // only invalidate when locals change\n if (\n module.hot.data &&\n module.hot.data.value &&\n module.hot.data.value !== localsJsonString\n ) {\n module.hot.invalidate();\n } else {\n module.hot.accept();\n }\n module.hot.dispose(function(data) {\n data.value = localsJsonString;\n cssReload();\n });\n })();\n }\n ","// extracted by mini-css-extract-plugin\nexport {};\n if(module.hot) {\n (function() {\n var localsJsonString = undefined;\n // 1739272983933\n var cssReload = require(\"../../../../node_modules/mini-css-extract-plugin/dist/hmr/hotModuleReplacement.js\")(module.id, {});\n // only invalidate when locals change\n if (\n module.hot.data &&\n module.hot.data.value &&\n module.hot.data.value !== localsJsonString\n ) {\n module.hot.invalidate();\n } else {\n module.hot.accept();\n }\n module.hot.dispose(function(data) {\n data.value = localsJsonString;\n cssReload();\n });\n })();\n }\n ","// extracted by mini-css-extract-plugin\nexport {};\n if(module.hot) {\n (function() {\n var localsJsonString = undefined;\n // 1739272983950\n var cssReload = require(\"../../../../node_modules/mini-css-extract-plugin/dist/hmr/hotModuleReplacement.js\")(module.id, {});\n // only invalidate when locals change\n if (\n module.hot.data &&\n module.hot.data.value &&\n module.hot.data.value !== localsJsonString\n ) {\n module.hot.invalidate();\n } else {\n module.hot.accept();\n }\n module.hot.dispose(function(data) {\n data.value = localsJsonString;\n cssReload();\n });\n })();\n }\n ","// extracted by mini-css-extract-plugin\nexport {};\n if(module.hot) {\n (function() {\n var localsJsonString = undefined;\n // 1739272986609\n var cssReload = require(\"../../../../node_modules/mini-css-extract-plugin/dist/hmr/hotModuleReplacement.js\")(module.id, {});\n // only invalidate when locals change\n if (\n module.hot.data &&\n module.hot.data.value &&\n module.hot.data.value !== localsJsonString\n ) {\n module.hot.invalidate();\n } else {\n module.hot.accept();\n }\n module.hot.dispose(function(data) {\n data.value = localsJsonString;\n cssReload();\n });\n })();\n }\n ","// extracted by mini-css-extract-plugin\nexport {};\n if(module.hot) {\n (function() {\n var localsJsonString = undefined;\n // 1739272983929\n var cssReload = require(\"../../../../node_modules/mini-css-extract-plugin/dist/hmr/hotModuleReplacement.js\")(module.id, {});\n // only invalidate when locals change\n if (\n module.hot.data &&\n module.hot.data.value &&\n module.hot.data.value !== localsJsonString\n ) {\n module.hot.invalidate();\n } else {\n module.hot.accept();\n }\n module.hot.dispose(function(data) {\n data.value = localsJsonString;\n cssReload();\n });\n })();\n }\n ","// extracted by mini-css-extract-plugin\nexport {};\n if(module.hot) {\n (function() {\n var localsJsonString = undefined;\n // 1739272983915\n var cssReload = require(\"../../../../node_modules/mini-css-extract-plugin/dist/hmr/hotModuleReplacement.js\")(module.id, {});\n // only invalidate when locals change\n if (\n module.hot.data &&\n module.hot.data.value &&\n module.hot.data.value !== localsJsonString\n ) {\n module.hot.invalidate();\n } else {\n module.hot.accept();\n }\n module.hot.dispose(function(data) {\n data.value = localsJsonString;\n cssReload();\n });\n })();\n }\n ","// extracted by mini-css-extract-plugin\nexport {};\n if(module.hot) {\n (function() {\n var localsJsonString = undefined;\n // 1739272983928\n var cssReload = require(\"../../../../node_modules/mini-css-extract-plugin/dist/hmr/hotModuleReplacement.js\")(module.id, {});\n // only invalidate when locals change\n if (\n module.hot.data &&\n module.hot.data.value &&\n module.hot.data.value !== localsJsonString\n ) {\n module.hot.invalidate();\n } else {\n module.hot.accept();\n }\n module.hot.dispose(function(data) {\n data.value = localsJsonString;\n cssReload();\n });\n })();\n }\n ","// extracted by mini-css-extract-plugin\nexport {};\n if(module.hot) {\n (function() {\n var localsJsonString = undefined;\n // 1739272983936\n var cssReload = require(\"../../../../node_modules/mini-css-extract-plugin/dist/hmr/hotModuleReplacement.js\")(module.id, {});\n // only invalidate when locals change\n if (\n module.hot.data &&\n module.hot.data.value &&\n module.hot.data.value !== localsJsonString\n ) {\n module.hot.invalidate();\n } else {\n module.hot.accept();\n }\n module.hot.dispose(function(data) {\n data.value = localsJsonString;\n cssReload();\n });\n })();\n }\n ","// extracted by mini-css-extract-plugin\nexport {};\n if(module.hot) {\n (function() {\n var localsJsonString = undefined;\n // 1739272983931\n var cssReload = require(\"../../../../node_modules/mini-css-extract-plugin/dist/hmr/hotModuleReplacement.js\")(module.id, {});\n // only invalidate when locals change\n if (\n module.hot.data &&\n module.hot.data.value &&\n module.hot.data.value !== localsJsonString\n ) {\n module.hot.invalidate();\n } else {\n module.hot.accept();\n }\n module.hot.dispose(function(data) {\n data.value = localsJsonString;\n cssReload();\n });\n })();\n }\n ","// extracted by mini-css-extract-plugin\nexport {};\n if(module.hot) {\n (function() {\n var localsJsonString = undefined;\n // 1739272983958\n var cssReload = require(\"../../../../node_modules/mini-css-extract-plugin/dist/hmr/hotModuleReplacement.js\")(module.id, {});\n // only invalidate when locals change\n if (\n module.hot.data &&\n module.hot.data.value &&\n module.hot.data.value !== localsJsonString\n ) {\n module.hot.invalidate();\n } else {\n module.hot.accept();\n }\n module.hot.dispose(function(data) {\n data.value = localsJsonString;\n cssReload();\n });\n })();\n }\n ","// extracted by mini-css-extract-plugin\nexport {};\n if(module.hot) {\n (function() {\n var localsJsonString = undefined;\n // 1739272990730\n var cssReload = require(\"../../../node_modules/mini-css-extract-plugin/dist/hmr/hotModuleReplacement.js\")(module.id, {});\n // only invalidate when locals change\n if (\n module.hot.data &&\n module.hot.data.value &&\n module.hot.data.value !== localsJsonString\n ) {\n module.hot.invalidate();\n } else {\n module.hot.accept();\n }\n module.hot.dispose(function(data) {\n data.value = localsJsonString;\n cssReload();\n });\n })();\n }\n ","// extracted by mini-css-extract-plugin\nexport {};\n if(module.hot) {\n (function() {\n var localsJsonString = undefined;\n // 1739272995732\n var cssReload = require(\"../../../../node_modules/mini-css-extract-plugin/dist/hmr/hotModuleReplacement.js\")(module.id, {});\n // only invalidate when locals change\n if (\n module.hot.data &&\n module.hot.data.value &&\n module.hot.data.value !== localsJsonString\n ) {\n module.hot.invalidate();\n } else {\n module.hot.accept();\n }\n module.hot.dispose(function(data) {\n data.value = localsJsonString;\n cssReload();\n });\n })();\n }\n ","// extracted by mini-css-extract-plugin\nexport {};\n if(module.hot) {\n (function() {\n var localsJsonString = undefined;\n // 1739272993028\n var cssReload = require(\"../../../../node_modules/mini-css-extract-plugin/dist/hmr/hotModuleReplacement.js\")(module.id, {});\n // only invalidate when locals change\n if (\n module.hot.data &&\n module.hot.data.value &&\n module.hot.data.value !== localsJsonString\n ) {\n module.hot.invalidate();\n } else {\n module.hot.accept();\n }\n module.hot.dispose(function(data) {\n data.value = localsJsonString;\n cssReload();\n });\n })();\n }\n ","// extracted by mini-css-extract-plugin\nexport {};\n if(module.hot) {\n (function() {\n var localsJsonString = undefined;\n // 1739273004295\n var cssReload = require(\"../../../../../../node_modules/mini-css-extract-plugin/dist/hmr/hotModuleReplacement.js\")(module.id, {});\n // only invalidate when locals change\n if (\n module.hot.data &&\n module.hot.data.value &&\n module.hot.data.value !== localsJsonString\n ) {\n module.hot.invalidate();\n } else {\n module.hot.accept();\n }\n module.hot.dispose(function(data) {\n data.value = localsJsonString;\n cssReload();\n });\n })();\n }\n ","// extracted by mini-css-extract-plugin\nexport {};\n if(module.hot) {\n (function() {\n var localsJsonString = undefined;\n // 1739273007175\n var cssReload = require(\"../../../../../../../../node_modules/mini-css-extract-plugin/dist/hmr/hotModuleReplacement.js\")(module.id, {});\n // only invalidate when locals change\n if (\n module.hot.data &&\n module.hot.data.value &&\n module.hot.data.value !== localsJsonString\n ) {\n module.hot.invalidate();\n } else {\n module.hot.accept();\n }\n module.hot.dispose(function(data) {\n data.value = localsJsonString;\n cssReload();\n });\n })();\n }\n ","// extracted by mini-css-extract-plugin\nexport {};\n if(module.hot) {\n (function() {\n var localsJsonString = undefined;\n // 1739273007189\n var cssReload = require(\"../../../../../../../../../node_modules/mini-css-extract-plugin/dist/hmr/hotModuleReplacement.js\")(module.id, {});\n // only invalidate when locals change\n if (\n module.hot.data &&\n module.hot.data.value &&\n module.hot.data.value !== localsJsonString\n ) {\n module.hot.invalidate();\n } else {\n module.hot.accept();\n }\n module.hot.dispose(function(data) {\n data.value = localsJsonString;\n cssReload();\n });\n })();\n }\n ","// extracted by mini-css-extract-plugin\nexport {};\n if(module.hot) {\n (function() {\n var localsJsonString = undefined;\n // 1739273006684\n var cssReload = require(\"../../../../../../../node_modules/mini-css-extract-plugin/dist/hmr/hotModuleReplacement.js\")(module.id, {});\n // only invalidate when locals change\n if (\n module.hot.data &&\n module.hot.data.value &&\n module.hot.data.value !== localsJsonString\n ) {\n module.hot.invalidate();\n } else {\n module.hot.accept();\n }\n module.hot.dispose(function(data) {\n data.value = localsJsonString;\n cssReload();\n });\n })();\n }\n ","// extracted by mini-css-extract-plugin\nexport {};\n if(module.hot) {\n (function() {\n var localsJsonString = undefined;\n // 1739272999402\n var cssReload = require(\"../../../../../node_modules/mini-css-extract-plugin/dist/hmr/hotModuleReplacement.js\")(module.id, {});\n // only invalidate when locals change\n if (\n module.hot.data &&\n module.hot.data.value &&\n module.hot.data.value !== localsJsonString\n ) {\n module.hot.invalidate();\n } else {\n module.hot.accept();\n }\n module.hot.dispose(function(data) {\n data.value = localsJsonString;\n cssReload();\n });\n })();\n }\n ","// extracted by mini-css-extract-plugin\nexport {};\n if(module.hot) {\n (function() {\n var localsJsonString = undefined;\n // 1739272999400\n var cssReload = require(\"../../../../../node_modules/mini-css-extract-plugin/dist/hmr/hotModuleReplacement.js\")(module.id, {});\n // only invalidate when locals change\n if (\n module.hot.data &&\n module.hot.data.value &&\n module.hot.data.value !== localsJsonString\n ) {\n module.hot.invalidate();\n } else {\n module.hot.accept();\n }\n module.hot.dispose(function(data) {\n data.value = localsJsonString;\n cssReload();\n });\n })();\n }\n ","// extracted by mini-css-extract-plugin\nexport {};\n if(module.hot) {\n (function() {\n var localsJsonString = undefined;\n // 1739272997363\n var cssReload = require(\"../../../../node_modules/mini-css-extract-plugin/dist/hmr/hotModuleReplacement.js\")(module.id, {});\n // only invalidate when locals change\n if (\n module.hot.data &&\n module.hot.data.value &&\n module.hot.data.value !== localsJsonString\n ) {\n module.hot.invalidate();\n } else {\n module.hot.accept();\n }\n module.hot.dispose(function(data) {\n data.value = localsJsonString;\n cssReload();\n });\n })();\n }\n ","// extracted by mini-css-extract-plugin\nexport {};\n if(module.hot) {\n (function() {\n var localsJsonString = undefined;\n // 1739272998765\n var cssReload = require(\"../../../../node_modules/mini-css-extract-plugin/dist/hmr/hotModuleReplacement.js\")(module.id, {});\n // only invalidate when locals change\n if (\n module.hot.data &&\n module.hot.data.value &&\n module.hot.data.value !== localsJsonString\n ) {\n module.hot.invalidate();\n } else {\n module.hot.accept();\n }\n module.hot.dispose(function(data) {\n data.value = localsJsonString;\n cssReload();\n });\n })();\n }\n ","// extracted by mini-css-extract-plugin\nexport {};\n if(module.hot) {\n (function() {\n var localsJsonString = undefined;\n // 1739272999422\n var cssReload = require(\"../../../../../node_modules/mini-css-extract-plugin/dist/hmr/hotModuleReplacement.js\")(module.id, {});\n // only invalidate when locals change\n if (\n module.hot.data &&\n module.hot.data.value &&\n module.hot.data.value !== localsJsonString\n ) {\n module.hot.invalidate();\n } else {\n module.hot.accept();\n }\n module.hot.dispose(function(data) {\n data.value = localsJsonString;\n cssReload();\n });\n })();\n }\n ","// extracted by mini-css-extract-plugin\nexport {};\n if(module.hot) {\n (function() {\n var localsJsonString = undefined;\n // 1739272999217\n var cssReload = require(\"../../../../../node_modules/mini-css-extract-plugin/dist/hmr/hotModuleReplacement.js\")(module.id, {});\n // only invalidate when locals change\n if (\n module.hot.data &&\n module.hot.data.value &&\n module.hot.data.value !== localsJsonString\n ) {\n module.hot.invalidate();\n } else {\n module.hot.accept();\n }\n module.hot.dispose(function(data) {\n data.value = localsJsonString;\n cssReload();\n });\n })();\n }\n ","// extracted by mini-css-extract-plugin\nexport {};\n if(module.hot) {\n (function() {\n var localsJsonString = undefined;\n // 1739272999403\n var cssReload = require(\"../../../../../node_modules/mini-css-extract-plugin/dist/hmr/hotModuleReplacement.js\")(module.id, {});\n // only invalidate when locals change\n if (\n module.hot.data &&\n module.hot.data.value &&\n module.hot.data.value !== localsJsonString\n ) {\n module.hot.invalidate();\n } else {\n module.hot.accept();\n }\n module.hot.dispose(function(data) {\n data.value = localsJsonString;\n cssReload();\n });\n })();\n }\n ","// extracted by mini-css-extract-plugin\nexport {};\n if(module.hot) {\n (function() {\n var localsJsonString = undefined;\n // 1739272997374\n var cssReload = require(\"../../../../node_modules/mini-css-extract-plugin/dist/hmr/hotModuleReplacement.js\")(module.id, {});\n // only invalidate when locals change\n if (\n module.hot.data &&\n module.hot.data.value &&\n module.hot.data.value !== localsJsonString\n ) {\n module.hot.invalidate();\n } else {\n module.hot.accept();\n }\n module.hot.dispose(function(data) {\n data.value = localsJsonString;\n cssReload();\n });\n })();\n }\n ","// extracted by mini-css-extract-plugin\nexport {};\n if(module.hot) {\n (function() {\n var localsJsonString = undefined;\n // 1739272997379\n var cssReload = require(\"../../../../node_modules/mini-css-extract-plugin/dist/hmr/hotModuleReplacement.js\")(module.id, {});\n // only invalidate when locals change\n if (\n module.hot.data &&\n module.hot.data.value &&\n module.hot.data.value !== localsJsonString\n ) {\n module.hot.invalidate();\n } else {\n module.hot.accept();\n }\n module.hot.dispose(function(data) {\n data.value = localsJsonString;\n cssReload();\n });\n })();\n }\n ","// extracted by mini-css-extract-plugin\nexport {};\n if(module.hot) {\n (function() {\n var localsJsonString = undefined;\n // 1739272997372\n var cssReload = require(\"../../../../node_modules/mini-css-extract-plugin/dist/hmr/hotModuleReplacement.js\")(module.id, {});\n // only invalidate when locals change\n if (\n module.hot.data &&\n module.hot.data.value &&\n module.hot.data.value !== localsJsonString\n ) {\n module.hot.invalidate();\n } else {\n module.hot.accept();\n }\n module.hot.dispose(function(data) {\n data.value = localsJsonString;\n cssReload();\n });\n })();\n }\n ","// extracted by mini-css-extract-plugin\nexport {};\n if(module.hot) {\n (function() {\n var localsJsonString = undefined;\n // 1739272998995\n var cssReload = require(\"../../../../node_modules/mini-css-extract-plugin/dist/hmr/hotModuleReplacement.js\")(module.id, {});\n // only invalidate when locals change\n if (\n module.hot.data &&\n module.hot.data.value &&\n module.hot.data.value !== localsJsonString\n ) {\n module.hot.invalidate();\n } else {\n module.hot.accept();\n }\n module.hot.dispose(function(data) {\n data.value = localsJsonString;\n cssReload();\n });\n })();\n }\n ","// extracted by mini-css-extract-plugin\nexport {};\n if(module.hot) {\n (function() {\n var localsJsonString = undefined;\n // 1739273006393\n var cssReload = require(\"../../../../../../node_modules/mini-css-extract-plugin/dist/hmr/hotModuleReplacement.js\")(module.id, {});\n // only invalidate when locals change\n if (\n module.hot.data &&\n module.hot.data.value &&\n module.hot.data.value !== localsJsonString\n ) {\n module.hot.invalidate();\n } else {\n module.hot.accept();\n }\n module.hot.dispose(function(data) {\n data.value = localsJsonString;\n cssReload();\n });\n })();\n }\n ","// extracted by mini-css-extract-plugin\nexport {};\n if(module.hot) {\n (function() {\n var localsJsonString = undefined;\n // 1739273004080\n var cssReload = require(\"../../../../../node_modules/mini-css-extract-plugin/dist/hmr/hotModuleReplacement.js\")(module.id, {});\n // only invalidate when locals change\n if (\n module.hot.data &&\n module.hot.data.value &&\n module.hot.data.value !== localsJsonString\n ) {\n module.hot.invalidate();\n } else {\n module.hot.accept();\n }\n module.hot.dispose(function(data) {\n data.value = localsJsonString;\n cssReload();\n });\n })();\n }\n ","// extracted by mini-css-extract-plugin\nexport {};\n if(module.hot) {\n (function() {\n var localsJsonString = undefined;\n // 1739272998999\n var cssReload = require(\"../../../../node_modules/mini-css-extract-plugin/dist/hmr/hotModuleReplacement.js\")(module.id, {});\n // only invalidate when locals change\n if (\n module.hot.data &&\n module.hot.data.value &&\n module.hot.data.value !== localsJsonString\n ) {\n module.hot.invalidate();\n } else {\n module.hot.accept();\n }\n module.hot.dispose(function(data) {\n data.value = localsJsonString;\n cssReload();\n });\n })();\n }\n ","// extracted by mini-css-extract-plugin\nexport {};\n if(module.hot) {\n (function() {\n var localsJsonString = undefined;\n // 1739272998997\n var cssReload = require(\"../../../../node_modules/mini-css-extract-plugin/dist/hmr/hotModuleReplacement.js\")(module.id, {});\n // only invalidate when locals change\n if (\n module.hot.data &&\n module.hot.data.value &&\n module.hot.data.value !== localsJsonString\n ) {\n module.hot.invalidate();\n } else {\n module.hot.accept();\n }\n module.hot.dispose(function(data) {\n data.value = localsJsonString;\n cssReload();\n });\n })();\n }\n ","// extracted by mini-css-extract-plugin\nexport {};\n if(module.hot) {\n (function() {\n var localsJsonString = undefined;\n // 1739272998993\n var cssReload = require(\"../../../../node_modules/mini-css-extract-plugin/dist/hmr/hotModuleReplacement.js\")(module.id, {});\n // only invalidate when locals change\n if (\n module.hot.data &&\n module.hot.data.value &&\n module.hot.data.value !== localsJsonString\n ) {\n module.hot.invalidate();\n } else {\n module.hot.accept();\n }\n module.hot.dispose(function(data) {\n data.value = localsJsonString;\n cssReload();\n });\n })();\n }\n ","// extracted by mini-css-extract-plugin\nexport {};\n if(module.hot) {\n (function() {\n var localsJsonString = undefined;\n // 1739272993027\n var cssReload = require(\"../../../../node_modules/mini-css-extract-plugin/dist/hmr/hotModuleReplacement.js\")(module.id, {});\n // only invalidate when locals change\n if (\n module.hot.data &&\n module.hot.data.value &&\n module.hot.data.value !== localsJsonString\n ) {\n module.hot.invalidate();\n } else {\n module.hot.accept();\n }\n module.hot.dispose(function(data) {\n data.value = localsJsonString;\n cssReload();\n });\n })();\n }\n ","// extracted by mini-css-extract-plugin\nexport {};\n if(module.hot) {\n (function() {\n var localsJsonString = undefined;\n // 1739272998703\n var cssReload = require(\"../../../../node_modules/mini-css-extract-plugin/dist/hmr/hotModuleReplacement.js\")(module.id, {});\n // only invalidate when locals change\n if (\n module.hot.data &&\n module.hot.data.value &&\n module.hot.data.value !== localsJsonString\n ) {\n module.hot.invalidate();\n } else {\n module.hot.accept();\n }\n module.hot.dispose(function(data) {\n data.value = localsJsonString;\n cssReload();\n });\n })();\n }\n ","// extracted by mini-css-extract-plugin\nexport {};\n if(module.hot) {\n (function() {\n var localsJsonString = undefined;\n // 1739272997378\n var cssReload = require(\"../../../../node_modules/mini-css-extract-plugin/dist/hmr/hotModuleReplacement.js\")(module.id, {});\n // only invalidate when locals change\n if (\n module.hot.data &&\n module.hot.data.value &&\n module.hot.data.value !== localsJsonString\n ) {\n module.hot.invalidate();\n } else {\n module.hot.accept();\n }\n module.hot.dispose(function(data) {\n data.value = localsJsonString;\n cssReload();\n });\n })();\n }\n ","// extracted by mini-css-extract-plugin\nexport {};\n if(module.hot) {\n (function() {\n var localsJsonString = undefined;\n // 1739272993029\n var cssReload = require(\"../../../../node_modules/mini-css-extract-plugin/dist/hmr/hotModuleReplacement.js\")(module.id, {});\n // only invalidate when locals change\n if (\n module.hot.data &&\n module.hot.data.value &&\n module.hot.data.value !== localsJsonString\n ) {\n module.hot.invalidate();\n } else {\n module.hot.accept();\n }\n module.hot.dispose(function(data) {\n data.value = localsJsonString;\n cssReload();\n });\n })();\n }\n ","// extracted by mini-css-extract-plugin\nexport {};\n if(module.hot) {\n (function() {\n var localsJsonString = undefined;\n // 1739272984383\n var cssReload = require(\"../../../../node_modules/mini-css-extract-plugin/dist/hmr/hotModuleReplacement.js\")(module.id, {});\n // only invalidate when locals change\n if (\n module.hot.data &&\n module.hot.data.value &&\n module.hot.data.value !== localsJsonString\n ) {\n module.hot.invalidate();\n } else {\n module.hot.accept();\n }\n module.hot.dispose(function(data) {\n data.value = localsJsonString;\n cssReload();\n });\n })();\n }\n ","// extracted by mini-css-extract-plugin\nexport {};\n if(module.hot) {\n (function() {\n var localsJsonString = undefined;\n // 1739273006383\n var cssReload = require(\"../../../../../../node_modules/mini-css-extract-plugin/dist/hmr/hotModuleReplacement.js\")(module.id, {});\n // only invalidate when locals change\n if (\n module.hot.data &&\n module.hot.data.value &&\n module.hot.data.value !== localsJsonString\n ) {\n module.hot.invalidate();\n } else {\n module.hot.accept();\n }\n module.hot.dispose(function(data) {\n data.value = localsJsonString;\n cssReload();\n });\n })();\n }\n ","// extracted by mini-css-extract-plugin\nexport {};\n if(module.hot) {\n (function() {\n var localsJsonString = undefined;\n // 1739272999519\n var cssReload = require(\"../../../../node_modules/mini-css-extract-plugin/dist/hmr/hotModuleReplacement.js\")(module.id, {});\n // only invalidate when locals change\n if (\n module.hot.data &&\n module.hot.data.value &&\n module.hot.data.value !== localsJsonString\n ) {\n module.hot.invalidate();\n } else {\n module.hot.accept();\n }\n module.hot.dispose(function(data) {\n data.value = localsJsonString;\n cssReload();\n });\n })();\n }\n ","// extracted by mini-css-extract-plugin\nexport {};\n if(module.hot) {\n (function() {\n var localsJsonString = undefined;\n // 1739272999005\n var cssReload = require(\"../../../../node_modules/mini-css-extract-plugin/dist/hmr/hotModuleReplacement.js\")(module.id, {});\n // only invalidate when locals change\n if (\n module.hot.data &&\n module.hot.data.value &&\n module.hot.data.value !== localsJsonString\n ) {\n module.hot.invalidate();\n } else {\n module.hot.accept();\n }\n module.hot.dispose(function(data) {\n data.value = localsJsonString;\n cssReload();\n });\n })();\n }\n ","// extracted by mini-css-extract-plugin\nexport {};\n if(module.hot) {\n (function() {\n var localsJsonString = undefined;\n // 1739272998715\n var cssReload = require(\"../../../../node_modules/mini-css-extract-plugin/dist/hmr/hotModuleReplacement.js\")(module.id, {});\n // only invalidate when locals change\n if (\n module.hot.data &&\n module.hot.data.value &&\n module.hot.data.value !== localsJsonString\n ) {\n module.hot.invalidate();\n } else {\n module.hot.accept();\n }\n module.hot.dispose(function(data) {\n data.value = localsJsonString;\n cssReload();\n });\n })();\n }\n ","// extracted by mini-css-extract-plugin\nexport {};\n if(module.hot) {\n (function() {\n var localsJsonString = undefined;\n // 1739272999006\n var cssReload = require(\"../../../../node_modules/mini-css-extract-plugin/dist/hmr/hotModuleReplacement.js\")(module.id, {});\n // only invalidate when locals change\n if (\n module.hot.data &&\n module.hot.data.value &&\n module.hot.data.value !== localsJsonString\n ) {\n module.hot.invalidate();\n } else {\n module.hot.accept();\n }\n module.hot.dispose(function(data) {\n data.value = localsJsonString;\n cssReload();\n });\n })();\n }\n ","// extracted by mini-css-extract-plugin\nexport {};\n if(module.hot) {\n (function() {\n var localsJsonString = undefined;\n // 1739273001802\n var cssReload = require(\"../../../../node_modules/mini-css-extract-plugin/dist/hmr/hotModuleReplacement.js\")(module.id, {});\n // only invalidate when locals change\n if (\n module.hot.data &&\n module.hot.data.value &&\n module.hot.data.value !== localsJsonString\n ) {\n module.hot.invalidate();\n } else {\n module.hot.accept();\n }\n module.hot.dispose(function(data) {\n data.value = localsJsonString;\n cssReload();\n });\n })();\n }\n ","// extracted by mini-css-extract-plugin\nexport {};\n if(module.hot) {\n (function() {\n var localsJsonString = undefined;\n // 1739272997376\n var cssReload = require(\"../../../../node_modules/mini-css-extract-plugin/dist/hmr/hotModuleReplacement.js\")(module.id, {});\n // only invalidate when locals change\n if (\n module.hot.data &&\n module.hot.data.value &&\n module.hot.data.value !== localsJsonString\n ) {\n module.hot.invalidate();\n } else {\n module.hot.accept();\n }\n module.hot.dispose(function(data) {\n data.value = localsJsonString;\n cssReload();\n });\n })();\n }\n ","// extracted by mini-css-extract-plugin\nexport {};\n if(module.hot) {\n (function() {\n var localsJsonString = undefined;\n // 1739273002692\n var cssReload = require(\"../../../../node_modules/mini-css-extract-plugin/dist/hmr/hotModuleReplacement.js\")(module.id, {});\n // only invalidate when locals change\n if (\n module.hot.data &&\n module.hot.data.value &&\n module.hot.data.value !== localsJsonString\n ) {\n module.hot.invalidate();\n } else {\n module.hot.accept();\n }\n module.hot.dispose(function(data) {\n data.value = localsJsonString;\n cssReload();\n });\n })();\n }\n ","// extracted by mini-css-extract-plugin\nexport {};\n if(module.hot) {\n (function() {\n var localsJsonString = undefined;\n // 1739272998994\n var cssReload = require(\"../../../../node_modules/mini-css-extract-plugin/dist/hmr/hotModuleReplacement.js\")(module.id, {});\n // only invalidate when locals change\n if (\n module.hot.data &&\n module.hot.data.value &&\n module.hot.data.value !== localsJsonString\n ) {\n module.hot.invalidate();\n } else {\n module.hot.accept();\n }\n module.hot.dispose(function(data) {\n data.value = localsJsonString;\n cssReload();\n });\n })();\n }\n ","// extracted by mini-css-extract-plugin\nexport {};\n if(module.hot) {\n (function() {\n var localsJsonString = undefined;\n // 1739272983621\n var cssReload = require(\"../node_modules/mini-css-extract-plugin/dist/hmr/hotModuleReplacement.js\")(module.id, {});\n // only invalidate when locals change\n if (\n module.hot.data &&\n module.hot.data.value &&\n module.hot.data.value !== localsJsonString\n ) {\n module.hot.invalidate();\n } else {\n module.hot.accept();\n }\n module.hot.dispose(function(data) {\n data.value = localsJsonString;\n cssReload();\n });\n })();\n }\n ","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\tif (cachedModule.error !== undefined) throw cachedModule.error;\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\tid: moduleId,\n\t\tloaded: false,\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\ttry {\n\t\tvar execOptions = { id: moduleId, module: module, factory: __webpack_modules__[moduleId], require: __webpack_require__ };\n\t\t__webpack_require__.i.forEach(function(handler) { handler(execOptions); });\n\t\tmodule = execOptions.module;\n\t\texecOptions.factory.call(module.exports, module, module.exports, execOptions.require);\n\t} catch(e) {\n\t\tmodule.error = e;\n\t\tthrow e;\n\t}\n\n\t// Flag the module as loaded\n\tmodule.loaded = true;\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n// expose the modules object (__webpack_modules__)\n__webpack_require__.m = __webpack_modules__;\n\n// expose the module cache\n__webpack_require__.c = __webpack_module_cache__;\n\n// expose the module execution interceptor\n__webpack_require__.i = [];\n\n","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = (module) => {\n\tvar getter = module && module.__esModule ?\n\t\t() => (module['default']) :\n\t\t() => (module);\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.f = {};\n// This file contains only the entry chunk.\n// The chunk loading function for additional chunks\n__webpack_require__.e = (chunkId) => {\n\treturn Promise.all(Object.keys(__webpack_require__.f).reduce((promises, key) => {\n\t\t__webpack_require__.f[key](chunkId, promises);\n\t\treturn promises;\n\t}, []));\n};","// This function allow to reference async chunks\n__webpack_require__.u = (chunkId) => {\n\t// return url for filenames based on template\n\treturn \"js/\" + chunkId + \".\" + \"4591c835b4861a7a46ac\" + \".bundle.js\";\n};","// This function allow to reference all chunks\n__webpack_require__.hu = (chunkId) => {\n\t// return url for filenames based on template\n\treturn \"\" + chunkId + \".\" + __webpack_require__.h() + \".hot-update.js\";\n};","// This function allow to reference async chunks\n__webpack_require__.miniCssF = (chunkId) => {\n\t// return url for filenames based on template\n\treturn undefined;\n};","__webpack_require__.hmrF = () => (\"main.\" + __webpack_require__.h() + \".hot-update.json\");","__webpack_require__.h = () => (\"9858d8dfc4a3b693b3fb\")","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","__webpack_require__.nmd = (module) => {\n\tmodule.paths = [];\n\tif (!module.children) module.children = [];\n\treturn module;\n};","var currentModuleData = {};\nvar installedModules = __webpack_require__.c;\n\n// module and require creation\nvar currentChildModule;\nvar currentParents = [];\n\n// status\nvar registeredStatusHandlers = [];\nvar currentStatus = \"idle\";\n\n// while downloading\nvar blockingPromises = 0;\nvar blockingPromisesWaiting = [];\n\n// The update info\nvar currentUpdateApplyHandlers;\nvar queuedInvalidatedModules;\n\n__webpack_require__.hmrD = currentModuleData;\n\n__webpack_require__.i.push(function (options) {\n\tvar module = options.module;\n\tvar require = createRequire(options.require, options.id);\n\tmodule.hot = createModuleHotObject(options.id, module);\n\tmodule.parents = currentParents;\n\tmodule.children = [];\n\tcurrentParents = [];\n\toptions.require = require;\n});\n\n__webpack_require__.hmrC = {};\n__webpack_require__.hmrI = {};\n\nfunction createRequire(require, moduleId) {\n\tvar me = installedModules[moduleId];\n\tif (!me) return require;\n\tvar fn = function (request) {\n\t\tif (me.hot.active) {\n\t\t\tif (installedModules[request]) {\n\t\t\t\tvar parents = installedModules[request].parents;\n\t\t\t\tif (parents.indexOf(moduleId) === -1) {\n\t\t\t\t\tparents.push(moduleId);\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tcurrentParents = [moduleId];\n\t\t\t\tcurrentChildModule = request;\n\t\t\t}\n\t\t\tif (me.children.indexOf(request) === -1) {\n\t\t\t\tme.children.push(request);\n\t\t\t}\n\t\t} else {\n\t\t\tconsole.warn(\n\t\t\t\t\"[HMR] unexpected require(\" +\n\t\t\t\t\trequest +\n\t\t\t\t\t\") from disposed module \" +\n\t\t\t\t\tmoduleId\n\t\t\t);\n\t\t\tcurrentParents = [];\n\t\t}\n\t\treturn require(request);\n\t};\n\tvar createPropertyDescriptor = function (name) {\n\t\treturn {\n\t\t\tconfigurable: true,\n\t\t\tenumerable: true,\n\t\t\tget: function () {\n\t\t\t\treturn require[name];\n\t\t\t},\n\t\t\tset: function (value) {\n\t\t\t\trequire[name] = value;\n\t\t\t}\n\t\t};\n\t};\n\tfor (var name in require) {\n\t\tif (Object.prototype.hasOwnProperty.call(require, name) && name !== \"e\") {\n\t\t\tObject.defineProperty(fn, name, createPropertyDescriptor(name));\n\t\t}\n\t}\n\tfn.e = function (chunkId, fetchPriority) {\n\t\treturn trackBlockingPromise(require.e(chunkId, fetchPriority));\n\t};\n\treturn fn;\n}\n\nfunction createModuleHotObject(moduleId, me) {\n\tvar _main = currentChildModule !== moduleId;\n\tvar hot = {\n\t\t// private stuff\n\t\t_acceptedDependencies: {},\n\t\t_acceptedErrorHandlers: {},\n\t\t_declinedDependencies: {},\n\t\t_selfAccepted: false,\n\t\t_selfDeclined: false,\n\t\t_selfInvalidated: false,\n\t\t_disposeHandlers: [],\n\t\t_main: _main,\n\t\t_requireSelf: function () {\n\t\t\tcurrentParents = me.parents.slice();\n\t\t\tcurrentChildModule = _main ? undefined : moduleId;\n\t\t\t__webpack_require__(moduleId);\n\t\t},\n\n\t\t// Module API\n\t\tactive: true,\n\t\taccept: function (dep, callback, errorHandler) {\n\t\t\tif (dep === undefined) hot._selfAccepted = true;\n\t\t\telse if (typeof dep === \"function\") hot._selfAccepted = dep;\n\t\t\telse if (typeof dep === \"object\" && dep !== null) {\n\t\t\t\tfor (var i = 0; i < dep.length; i++) {\n\t\t\t\t\thot._acceptedDependencies[dep[i]] = callback || function () {};\n\t\t\t\t\thot._acceptedErrorHandlers[dep[i]] = errorHandler;\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\thot._acceptedDependencies[dep] = callback || function () {};\n\t\t\t\thot._acceptedErrorHandlers[dep] = errorHandler;\n\t\t\t}\n\t\t},\n\t\tdecline: function (dep) {\n\t\t\tif (dep === undefined) hot._selfDeclined = true;\n\t\t\telse if (typeof dep === \"object\" && dep !== null)\n\t\t\t\tfor (var i = 0; i < dep.length; i++)\n\t\t\t\t\thot._declinedDependencies[dep[i]] = true;\n\t\t\telse hot._declinedDependencies[dep] = true;\n\t\t},\n\t\tdispose: function (callback) {\n\t\t\thot._disposeHandlers.push(callback);\n\t\t},\n\t\taddDisposeHandler: function (callback) {\n\t\t\thot._disposeHandlers.push(callback);\n\t\t},\n\t\tremoveDisposeHandler: function (callback) {\n\t\t\tvar idx = hot._disposeHandlers.indexOf(callback);\n\t\t\tif (idx >= 0) hot._disposeHandlers.splice(idx, 1);\n\t\t},\n\t\tinvalidate: function () {\n\t\t\tthis._selfInvalidated = true;\n\t\t\tswitch (currentStatus) {\n\t\t\t\tcase \"idle\":\n\t\t\t\t\tcurrentUpdateApplyHandlers = [];\n\t\t\t\t\tObject.keys(__webpack_require__.hmrI).forEach(function (key) {\n\t\t\t\t\t\t__webpack_require__.hmrI[key](\n\t\t\t\t\t\t\tmoduleId,\n\t\t\t\t\t\t\tcurrentUpdateApplyHandlers\n\t\t\t\t\t\t);\n\t\t\t\t\t});\n\t\t\t\t\tsetStatus(\"ready\");\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"ready\":\n\t\t\t\t\tObject.keys(__webpack_require__.hmrI).forEach(function (key) {\n\t\t\t\t\t\t__webpack_require__.hmrI[key](\n\t\t\t\t\t\t\tmoduleId,\n\t\t\t\t\t\t\tcurrentUpdateApplyHandlers\n\t\t\t\t\t\t);\n\t\t\t\t\t});\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"prepare\":\n\t\t\t\tcase \"check\":\n\t\t\t\tcase \"dispose\":\n\t\t\t\tcase \"apply\":\n\t\t\t\t\t(queuedInvalidatedModules = queuedInvalidatedModules || []).push(\n\t\t\t\t\t\tmoduleId\n\t\t\t\t\t);\n\t\t\t\t\tbreak;\n\t\t\t\tdefault:\n\t\t\t\t\t// ignore requests in error states\n\t\t\t\t\tbreak;\n\t\t\t}\n\t\t},\n\n\t\t// Management API\n\t\tcheck: hotCheck,\n\t\tapply: hotApply,\n\t\tstatus: function (l) {\n\t\t\tif (!l) return currentStatus;\n\t\t\tregisteredStatusHandlers.push(l);\n\t\t},\n\t\taddStatusHandler: function (l) {\n\t\t\tregisteredStatusHandlers.push(l);\n\t\t},\n\t\tremoveStatusHandler: function (l) {\n\t\t\tvar idx = registeredStatusHandlers.indexOf(l);\n\t\t\tif (idx >= 0) registeredStatusHandlers.splice(idx, 1);\n\t\t},\n\n\t\t// inherit from previous dispose call\n\t\tdata: currentModuleData[moduleId]\n\t};\n\tcurrentChildModule = undefined;\n\treturn hot;\n}\n\nfunction setStatus(newStatus) {\n\tcurrentStatus = newStatus;\n\tvar results = [];\n\n\tfor (var i = 0; i < registeredStatusHandlers.length; i++)\n\t\tresults[i] = registeredStatusHandlers[i].call(null, newStatus);\n\n\treturn Promise.all(results).then(function () {});\n}\n\nfunction unblock() {\n\tif (--blockingPromises === 0) {\n\t\tsetStatus(\"ready\").then(function () {\n\t\t\tif (blockingPromises === 0) {\n\t\t\t\tvar list = blockingPromisesWaiting;\n\t\t\t\tblockingPromisesWaiting = [];\n\t\t\t\tfor (var i = 0; i < list.length; i++) {\n\t\t\t\t\tlist[i]();\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t}\n}\n\nfunction trackBlockingPromise(promise) {\n\tswitch (currentStatus) {\n\t\tcase \"ready\":\n\t\t\tsetStatus(\"prepare\");\n\t\t/* fallthrough */\n\t\tcase \"prepare\":\n\t\t\tblockingPromises++;\n\t\t\tpromise.then(unblock, unblock);\n\t\t\treturn promise;\n\t\tdefault:\n\t\t\treturn promise;\n\t}\n}\n\nfunction waitForBlockingPromises(fn) {\n\tif (blockingPromises === 0) return fn();\n\treturn new Promise(function (resolve) {\n\t\tblockingPromisesWaiting.push(function () {\n\t\t\tresolve(fn());\n\t\t});\n\t});\n}\n\nfunction hotCheck(applyOnUpdate) {\n\tif (currentStatus !== \"idle\") {\n\t\tthrow new Error(\"check() is only allowed in idle status\");\n\t}\n\treturn setStatus(\"check\")\n\t\t.then(__webpack_require__.hmrM)\n\t\t.then(function (update) {\n\t\t\tif (!update) {\n\t\t\t\treturn setStatus(applyInvalidatedModules() ? \"ready\" : \"idle\").then(\n\t\t\t\t\tfunction () {\n\t\t\t\t\t\treturn null;\n\t\t\t\t\t}\n\t\t\t\t);\n\t\t\t}\n\n\t\t\treturn setStatus(\"prepare\").then(function () {\n\t\t\t\tvar updatedModules = [];\n\t\t\t\tcurrentUpdateApplyHandlers = [];\n\n\t\t\t\treturn Promise.all(\n\t\t\t\t\tObject.keys(__webpack_require__.hmrC).reduce(function (\n\t\t\t\t\t\tpromises,\n\t\t\t\t\t\tkey\n\t\t\t\t\t) {\n\t\t\t\t\t\t__webpack_require__.hmrC[key](\n\t\t\t\t\t\t\tupdate.c,\n\t\t\t\t\t\t\tupdate.r,\n\t\t\t\t\t\t\tupdate.m,\n\t\t\t\t\t\t\tpromises,\n\t\t\t\t\t\t\tcurrentUpdateApplyHandlers,\n\t\t\t\t\t\t\tupdatedModules\n\t\t\t\t\t\t);\n\t\t\t\t\t\treturn promises;\n\t\t\t\t\t}, [])\n\t\t\t\t).then(function () {\n\t\t\t\t\treturn waitForBlockingPromises(function () {\n\t\t\t\t\t\tif (applyOnUpdate) {\n\t\t\t\t\t\t\treturn internalApply(applyOnUpdate);\n\t\t\t\t\t\t}\n\t\t\t\t\t\treturn setStatus(\"ready\").then(function () {\n\t\t\t\t\t\t\treturn updatedModules;\n\t\t\t\t\t\t});\n\t\t\t\t\t});\n\t\t\t\t});\n\t\t\t});\n\t\t});\n}\n\nfunction hotApply(options) {\n\tif (currentStatus !== \"ready\") {\n\t\treturn Promise.resolve().then(function () {\n\t\t\tthrow new Error(\n\t\t\t\t\"apply() is only allowed in ready status (state: \" +\n\t\t\t\t\tcurrentStatus +\n\t\t\t\t\t\")\"\n\t\t\t);\n\t\t});\n\t}\n\treturn internalApply(options);\n}\n\nfunction internalApply(options) {\n\toptions = options || {};\n\n\tapplyInvalidatedModules();\n\n\tvar results = currentUpdateApplyHandlers.map(function (handler) {\n\t\treturn handler(options);\n\t});\n\tcurrentUpdateApplyHandlers = undefined;\n\n\tvar errors = results\n\t\t.map(function (r) {\n\t\t\treturn r.error;\n\t\t})\n\t\t.filter(Boolean);\n\n\tif (errors.length > 0) {\n\t\treturn setStatus(\"abort\").then(function () {\n\t\t\tthrow errors[0];\n\t\t});\n\t}\n\n\t// Now in \"dispose\" phase\n\tvar disposePromise = setStatus(\"dispose\");\n\n\tresults.forEach(function (result) {\n\t\tif (result.dispose) result.dispose();\n\t});\n\n\t// Now in \"apply\" phase\n\tvar applyPromise = setStatus(\"apply\");\n\n\tvar error;\n\tvar reportError = function (err) {\n\t\tif (!error) error = err;\n\t};\n\n\tvar outdatedModules = [];\n\tresults.forEach(function (result) {\n\t\tif (result.apply) {\n\t\t\tvar modules = result.apply(reportError);\n\t\t\tif (modules) {\n\t\t\t\tfor (var i = 0; i < modules.length; i++) {\n\t\t\t\t\toutdatedModules.push(modules[i]);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t});\n\n\treturn Promise.all([disposePromise, applyPromise]).then(function () {\n\t\t// handle errors in accept handlers and self accepted module load\n\t\tif (error) {\n\t\t\treturn setStatus(\"fail\").then(function () {\n\t\t\t\tthrow error;\n\t\t\t});\n\t\t}\n\n\t\tif (queuedInvalidatedModules) {\n\t\t\treturn internalApply(options).then(function (list) {\n\t\t\t\toutdatedModules.forEach(function (moduleId) {\n\t\t\t\t\tif (list.indexOf(moduleId) < 0) list.push(moduleId);\n\t\t\t\t});\n\t\t\t\treturn list;\n\t\t\t});\n\t\t}\n\n\t\treturn setStatus(\"idle\").then(function () {\n\t\t\treturn outdatedModules;\n\t\t});\n\t});\n}\n\nfunction applyInvalidatedModules() {\n\tif (queuedInvalidatedModules) {\n\t\tif (!currentUpdateApplyHandlers) currentUpdateApplyHandlers = [];\n\t\tObject.keys(__webpack_require__.hmrI).forEach(function (key) {\n\t\t\tqueuedInvalidatedModules.forEach(function (moduleId) {\n\t\t\t\t__webpack_require__.hmrI[key](\n\t\t\t\t\tmoduleId,\n\t\t\t\t\tcurrentUpdateApplyHandlers\n\t\t\t\t);\n\t\t\t});\n\t\t});\n\t\tqueuedInvalidatedModules = undefined;\n\t\treturn true;\n\t}\n}","__webpack_require__.p = \"/\";","\n__webpack_require__.sriHashes = {\"908\":\"*-*-*-CHUNK-SRI-HASH-gXjYKVyyRnn1mUccWqevCReMspZ8ynqJzxn20O8h+NmMt5WyLU\"};","if (typeof document === \"undefined\") return;\nvar createStylesheet = (chunkId, fullhref, oldTag, resolve, reject) => {\n\tvar linkTag = document.createElement(\"link\");\n\n\tlinkTag.rel = \"stylesheet\";\n\tlinkTag.type = \"text/css\";\n\tif (__webpack_require__.nc) {\n\t\tlinkTag.nonce = __webpack_require__.nc;\n\t}\n\tvar onLinkComplete = (event) => {\n\t\t// avoid mem leaks.\n\t\tlinkTag.onerror = linkTag.onload = null;\n\t\tif (event.type === 'load') {\n\t\t\tresolve();\n\t\t} else {\n\t\t\tvar errorType = event && event.type;\n\t\t\tvar realHref = event && event.target && event.target.href || fullhref;\n\t\t\tvar err = new Error(\"Loading CSS chunk \" + chunkId + \" failed.\\n(\" + errorType + \": \" + realHref + \")\");\n\t\t\terr.name = \"ChunkLoadError\";\n\t\t\terr.code = \"CSS_CHUNK_LOAD_FAILED\";\n\t\t\terr.type = errorType;\n\t\t\terr.request = realHref;\n\t\t\tif (linkTag.parentNode) linkTag.parentNode.removeChild(linkTag)\n\t\t\treject(err);\n\t\t}\n\t}\n\tlinkTag.onerror = linkTag.onload = onLinkComplete;\n\tlinkTag.href = fullhref;\n\tif (linkTag.href.indexOf(window.location.origin + '/') !== 0) {\n\t\tlinkTag.crossOrigin = \"anonymous\";\n\t}\n\n\tif (oldTag) {\n\t\toldTag.parentNode.insertBefore(linkTag, oldTag.nextSibling);\n\t} else {\n\t\tdocument.head.appendChild(linkTag);\n\t}\n\treturn linkTag;\n};\nvar findStylesheet = (href, fullhref) => {\n\tvar existingLinkTags = document.getElementsByTagName(\"link\");\n\tfor(var i = 0; i < existingLinkTags.length; i++) {\n\t\tvar tag = existingLinkTags[i];\n\t\tvar dataHref = tag.getAttribute(\"data-href\") || tag.getAttribute(\"href\");\n\t\tif(tag.rel === \"stylesheet\" && (dataHref === href || dataHref === fullhref)) return tag;\n\t}\n\tvar existingStyleTags = document.getElementsByTagName(\"style\");\n\tfor(var i = 0; i < existingStyleTags.length; i++) {\n\t\tvar tag = existingStyleTags[i];\n\t\tvar dataHref = tag.getAttribute(\"data-href\");\n\t\tif(dataHref === href || dataHref === fullhref) return tag;\n\t}\n};\nvar loadStylesheet = (chunkId) => {\n\treturn new Promise((resolve, reject) => {\n\t\tvar href = __webpack_require__.miniCssF(chunkId);\n\t\tvar fullhref = __webpack_require__.p + href;\n\t\tif(findStylesheet(href, fullhref)) return resolve();\n\t\tcreateStylesheet(chunkId, fullhref, null, resolve, reject);\n\t});\n}\n// no chunk loading\n\nvar oldTags = [];\nvar newTags = [];\nvar applyHandler = (options) => {\n\treturn { dispose: () => {\n\t\tfor(var i = 0; i < oldTags.length; i++) {\n\t\t\tvar oldTag = oldTags[i];\n\t\t\tif(oldTag.parentNode) oldTag.parentNode.removeChild(oldTag);\n\t\t}\n\t\toldTags.length = 0;\n\t}, apply: () => {\n\t\tfor(var i = 0; i < newTags.length; i++) newTags[i].rel = \"stylesheet\";\n\t\tnewTags.length = 0;\n\t} };\n}\n__webpack_require__.hmrC.miniCss = (chunkIds, removedChunks, removedModules, promises, applyHandlers, updatedModulesList) => {\n\tapplyHandlers.push(applyHandler);\n\tchunkIds.forEach((chunkId) => {\n\t\tvar href = __webpack_require__.miniCssF(chunkId);\n\t\tvar fullhref = __webpack_require__.p + href;\n\t\tvar oldTag = findStylesheet(href, fullhref);\n\t\tif(!oldTag) return;\n\t\tpromises.push(new Promise((resolve, reject) => {\n\t\t\tvar tag = createStylesheet(chunkId, fullhref, oldTag, () => {\n\t\t\t\ttag.as = \"style\";\n\t\t\t\ttag.rel = \"preload\";\n\t\t\t\tresolve();\n\t\t\t}, reject);\n\t\t\toldTags.push(oldTag);\n\t\t\tnewTags.push(tag);\n\t\t}));\n\t});\n}\n\n// no prefetching\n\n// no preloaded","// no baseURI\n\n// object to store loaded and loading chunks\n// undefined = chunk not loaded, null = chunk preloaded/prefetched\n// [resolve, reject, Promise] = chunk loading, 0 = chunk loaded\nvar installedChunks = __webpack_require__.hmrS_jsonp = __webpack_require__.hmrS_jsonp || {\n\t792: 0\n};\n\n__webpack_require__.f.j = (chunkId, promises) => {\n\t\t// JSONP chunk loading for javascript\n\t\tvar installedChunkData = __webpack_require__.o(installedChunks, chunkId) ? installedChunks[chunkId] : undefined;\n\t\tif(installedChunkData !== 0) { // 0 means \"already installed\".\n\n\t\t\t// a Promise means \"currently loading\".\n\t\t\tif(installedChunkData) {\n\t\t\t\tpromises.push(installedChunkData[2]);\n\t\t\t} else {\n\t\t\t\tif(true) { // all chunks have JS\n\t\t\t\t\t// setup Promise in chunk cache\n\t\t\t\t\tvar promise = new Promise((resolve, reject) => (installedChunkData = installedChunks[chunkId] = [resolve, reject]));\n\t\t\t\t\tpromises.push(installedChunkData[2] = promise);\n\n\t\t\t\t\t// start chunk loading\n\t\t\t\t\tvar url = __webpack_require__.p + __webpack_require__.u(chunkId);\n\t\t\t\t\t// create error before stack unwound to get useful stacktrace later\n\t\t\t\t\tvar error = new Error();\n\t\t\t\t\tvar loadingEnded = (event) => {\n\t\t\t\t\t\tif(__webpack_require__.o(installedChunks, chunkId)) {\n\t\t\t\t\t\t\tinstalledChunkData = installedChunks[chunkId];\n\t\t\t\t\t\t\tif(installedChunkData !== 0) installedChunks[chunkId] = undefined;\n\t\t\t\t\t\t\tif(installedChunkData) {\n\t\t\t\t\t\t\t\tvar errorType = event && (event.type === 'load' ? 'missing' : event.type);\n\t\t\t\t\t\t\t\tvar realSrc = event && event.target && event.target.src;\n\t\t\t\t\t\t\t\terror.message = 'Loading chunk ' + chunkId + ' failed.\\n(' + errorType + ': ' + realSrc + ')';\n\t\t\t\t\t\t\t\terror.name = 'ChunkLoadError';\n\t\t\t\t\t\t\t\terror.type = errorType;\n\t\t\t\t\t\t\t\terror.request = realSrc;\n\t\t\t\t\t\t\t\tinstalledChunkData[1](error);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t};\n\t\t\t\t\t__webpack_require__.l(url, loadingEnded, \"chunk-\" + chunkId, chunkId);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n};\n\n// no prefetching\n\n// no preloaded\n\nvar currentUpdatedModulesList;\nvar waitingUpdateResolves = {};\nfunction loadUpdateChunk(chunkId, updatedModulesList) {\n\tcurrentUpdatedModulesList = updatedModulesList;\n\treturn new Promise((resolve, reject) => {\n\t\twaitingUpdateResolves[chunkId] = resolve;\n\t\t// start update chunk loading\n\t\tvar url = __webpack_require__.p + __webpack_require__.hu(chunkId);\n\t\t// create error before stack unwound to get useful stacktrace later\n\t\tvar error = new Error();\n\t\tvar loadingEnded = (event) => {\n\t\t\tif(waitingUpdateResolves[chunkId]) {\n\t\t\t\twaitingUpdateResolves[chunkId] = undefined\n\t\t\t\tvar errorType = event && (event.type === 'load' ? 'missing' : event.type);\n\t\t\t\tvar realSrc = event && event.target && event.target.src;\n\t\t\t\terror.message = 'Loading hot update chunk ' + chunkId + ' failed.\\n(' + errorType + ': ' + realSrc + ')';\n\t\t\t\terror.name = 'ChunkLoadError';\n\t\t\t\terror.type = errorType;\n\t\t\t\terror.request = realSrc;\n\t\t\t\treject(error);\n\t\t\t}\n\t\t};\n\t\t__webpack_require__.l(url, loadingEnded);\n\t});\n}\n\nself[\"webpackHotUpdate_geo_geo_map\"] = (chunkId, moreModules, runtime) => {\n\tfor(var moduleId in moreModules) {\n\t\tif(__webpack_require__.o(moreModules, moduleId)) {\n\t\t\tcurrentUpdate[moduleId] = moreModules[moduleId];\n\t\t\tif(currentUpdatedModulesList) currentUpdatedModulesList.push(moduleId);\n\t\t}\n\t}\n\tif(runtime) currentUpdateRuntime.push(runtime);\n\tif(waitingUpdateResolves[chunkId]) {\n\t\twaitingUpdateResolves[chunkId]();\n\t\twaitingUpdateResolves[chunkId] = undefined;\n\t}\n};\n\nvar currentUpdateChunks;\nvar currentUpdate;\nvar currentUpdateRemovedChunks;\nvar currentUpdateRuntime;\nfunction applyHandler(options) {\n\tif (__webpack_require__.f) delete __webpack_require__.f.jsonpHmr;\n\tcurrentUpdateChunks = undefined;\n\tfunction getAffectedModuleEffects(updateModuleId) {\n\t\tvar outdatedModules = [updateModuleId];\n\t\tvar outdatedDependencies = {};\n\n\t\tvar queue = outdatedModules.map(function (id) {\n\t\t\treturn {\n\t\t\t\tchain: [id],\n\t\t\t\tid: id\n\t\t\t};\n\t\t});\n\t\twhile (queue.length > 0) {\n\t\t\tvar queueItem = queue.pop();\n\t\t\tvar moduleId = queueItem.id;\n\t\t\tvar chain = queueItem.chain;\n\t\t\tvar module = __webpack_require__.c[moduleId];\n\t\t\tif (\n\t\t\t\t!module ||\n\t\t\t\t(module.hot._selfAccepted && !module.hot._selfInvalidated)\n\t\t\t)\n\t\t\t\tcontinue;\n\t\t\tif (module.hot._selfDeclined) {\n\t\t\t\treturn {\n\t\t\t\t\ttype: \"self-declined\",\n\t\t\t\t\tchain: chain,\n\t\t\t\t\tmoduleId: moduleId\n\t\t\t\t};\n\t\t\t}\n\t\t\tif (module.hot._main) {\n\t\t\t\treturn {\n\t\t\t\t\ttype: \"unaccepted\",\n\t\t\t\t\tchain: chain,\n\t\t\t\t\tmoduleId: moduleId\n\t\t\t\t};\n\t\t\t}\n\t\t\tfor (var i = 0; i < module.parents.length; i++) {\n\t\t\t\tvar parentId = module.parents[i];\n\t\t\t\tvar parent = __webpack_require__.c[parentId];\n\t\t\t\tif (!parent) continue;\n\t\t\t\tif (parent.hot._declinedDependencies[moduleId]) {\n\t\t\t\t\treturn {\n\t\t\t\t\t\ttype: \"declined\",\n\t\t\t\t\t\tchain: chain.concat([parentId]),\n\t\t\t\t\t\tmoduleId: moduleId,\n\t\t\t\t\t\tparentId: parentId\n\t\t\t\t\t};\n\t\t\t\t}\n\t\t\t\tif (outdatedModules.indexOf(parentId) !== -1) continue;\n\t\t\t\tif (parent.hot._acceptedDependencies[moduleId]) {\n\t\t\t\t\tif (!outdatedDependencies[parentId])\n\t\t\t\t\t\toutdatedDependencies[parentId] = [];\n\t\t\t\t\taddAllToSet(outdatedDependencies[parentId], [moduleId]);\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t\tdelete outdatedDependencies[parentId];\n\t\t\t\toutdatedModules.push(parentId);\n\t\t\t\tqueue.push({\n\t\t\t\t\tchain: chain.concat([parentId]),\n\t\t\t\t\tid: parentId\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\n\t\treturn {\n\t\t\ttype: \"accepted\",\n\t\t\tmoduleId: updateModuleId,\n\t\t\toutdatedModules: outdatedModules,\n\t\t\toutdatedDependencies: outdatedDependencies\n\t\t};\n\t}\n\n\tfunction addAllToSet(a, b) {\n\t\tfor (var i = 0; i < b.length; i++) {\n\t\t\tvar item = b[i];\n\t\t\tif (a.indexOf(item) === -1) a.push(item);\n\t\t}\n\t}\n\n\t// at begin all updates modules are outdated\n\t// the \"outdated\" status can propagate to parents if they don't accept the children\n\tvar outdatedDependencies = {};\n\tvar outdatedModules = [];\n\tvar appliedUpdate = {};\n\n\tvar warnUnexpectedRequire = function warnUnexpectedRequire(module) {\n\t\tconsole.warn(\n\t\t\t\"[HMR] unexpected require(\" + module.id + \") to disposed module\"\n\t\t);\n\t};\n\n\tfor (var moduleId in currentUpdate) {\n\t\tif (__webpack_require__.o(currentUpdate, moduleId)) {\n\t\t\tvar newModuleFactory = currentUpdate[moduleId];\n\t\t\t/** @type {TODO} */\n\t\t\tvar result = newModuleFactory\n\t\t\t\t? getAffectedModuleEffects(moduleId)\n\t\t\t\t: {\n\t\t\t\t\t\ttype: \"disposed\",\n\t\t\t\t\t\tmoduleId: moduleId\n\t\t\t\t\t};\n\t\t\t/** @type {Error|false} */\n\t\t\tvar abortError = false;\n\t\t\tvar doApply = false;\n\t\t\tvar doDispose = false;\n\t\t\tvar chainInfo = \"\";\n\t\t\tif (result.chain) {\n\t\t\t\tchainInfo = \"\\nUpdate propagation: \" + result.chain.join(\" -> \");\n\t\t\t}\n\t\t\tswitch (result.type) {\n\t\t\t\tcase \"self-declined\":\n\t\t\t\t\tif (options.onDeclined) options.onDeclined(result);\n\t\t\t\t\tif (!options.ignoreDeclined)\n\t\t\t\t\t\tabortError = new Error(\n\t\t\t\t\t\t\t\"Aborted because of self decline: \" +\n\t\t\t\t\t\t\t\tresult.moduleId +\n\t\t\t\t\t\t\t\tchainInfo\n\t\t\t\t\t\t);\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"declined\":\n\t\t\t\t\tif (options.onDeclined) options.onDeclined(result);\n\t\t\t\t\tif (!options.ignoreDeclined)\n\t\t\t\t\t\tabortError = new Error(\n\t\t\t\t\t\t\t\"Aborted because of declined dependency: \" +\n\t\t\t\t\t\t\t\tresult.moduleId +\n\t\t\t\t\t\t\t\t\" in \" +\n\t\t\t\t\t\t\t\tresult.parentId +\n\t\t\t\t\t\t\t\tchainInfo\n\t\t\t\t\t\t);\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"unaccepted\":\n\t\t\t\t\tif (options.onUnaccepted) options.onUnaccepted(result);\n\t\t\t\t\tif (!options.ignoreUnaccepted)\n\t\t\t\t\t\tabortError = new Error(\n\t\t\t\t\t\t\t\"Aborted because \" + moduleId + \" is not accepted\" + chainInfo\n\t\t\t\t\t\t);\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"accepted\":\n\t\t\t\t\tif (options.onAccepted) options.onAccepted(result);\n\t\t\t\t\tdoApply = true;\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"disposed\":\n\t\t\t\t\tif (options.onDisposed) options.onDisposed(result);\n\t\t\t\t\tdoDispose = true;\n\t\t\t\t\tbreak;\n\t\t\t\tdefault:\n\t\t\t\t\tthrow new Error(\"Unexception type \" + result.type);\n\t\t\t}\n\t\t\tif (abortError) {\n\t\t\t\treturn {\n\t\t\t\t\terror: abortError\n\t\t\t\t};\n\t\t\t}\n\t\t\tif (doApply) {\n\t\t\t\tappliedUpdate[moduleId] = newModuleFactory;\n\t\t\t\taddAllToSet(outdatedModules, result.outdatedModules);\n\t\t\t\tfor (moduleId in result.outdatedDependencies) {\n\t\t\t\t\tif (__webpack_require__.o(result.outdatedDependencies, moduleId)) {\n\t\t\t\t\t\tif (!outdatedDependencies[moduleId])\n\t\t\t\t\t\t\toutdatedDependencies[moduleId] = [];\n\t\t\t\t\t\taddAllToSet(\n\t\t\t\t\t\t\toutdatedDependencies[moduleId],\n\t\t\t\t\t\t\tresult.outdatedDependencies[moduleId]\n\t\t\t\t\t\t);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (doDispose) {\n\t\t\t\taddAllToSet(outdatedModules, [result.moduleId]);\n\t\t\t\tappliedUpdate[moduleId] = warnUnexpectedRequire;\n\t\t\t}\n\t\t}\n\t}\n\tcurrentUpdate = undefined;\n\n\t// Store self accepted outdated modules to require them later by the module system\n\tvar outdatedSelfAcceptedModules = [];\n\tfor (var j = 0; j < outdatedModules.length; j++) {\n\t\tvar outdatedModuleId = outdatedModules[j];\n\t\tvar module = __webpack_require__.c[outdatedModuleId];\n\t\tif (\n\t\t\tmodule &&\n\t\t\t(module.hot._selfAccepted || module.hot._main) &&\n\t\t\t// removed self-accepted modules should not be required\n\t\t\tappliedUpdate[outdatedModuleId] !== warnUnexpectedRequire &&\n\t\t\t// when called invalidate self-accepting is not possible\n\t\t\t!module.hot._selfInvalidated\n\t\t) {\n\t\t\toutdatedSelfAcceptedModules.push({\n\t\t\t\tmodule: outdatedModuleId,\n\t\t\t\trequire: module.hot._requireSelf,\n\t\t\t\terrorHandler: module.hot._selfAccepted\n\t\t\t});\n\t\t}\n\t}\n\n\tvar moduleOutdatedDependencies;\n\n\treturn {\n\t\tdispose: function () {\n\t\t\tcurrentUpdateRemovedChunks.forEach(function (chunkId) {\n\t\t\t\tdelete installedChunks[chunkId];\n\t\t\t});\n\t\t\tcurrentUpdateRemovedChunks = undefined;\n\n\t\t\tvar idx;\n\t\t\tvar queue = outdatedModules.slice();\n\t\t\twhile (queue.length > 0) {\n\t\t\t\tvar moduleId = queue.pop();\n\t\t\t\tvar module = __webpack_require__.c[moduleId];\n\t\t\t\tif (!module) continue;\n\n\t\t\t\tvar data = {};\n\n\t\t\t\t// Call dispose handlers\n\t\t\t\tvar disposeHandlers = module.hot._disposeHandlers;\n\t\t\t\tfor (j = 0; j < disposeHandlers.length; j++) {\n\t\t\t\t\tdisposeHandlers[j].call(null, data);\n\t\t\t\t}\n\t\t\t\t__webpack_require__.hmrD[moduleId] = data;\n\n\t\t\t\t// disable module (this disables requires from this module)\n\t\t\t\tmodule.hot.active = false;\n\n\t\t\t\t// remove module from cache\n\t\t\t\tdelete __webpack_require__.c[moduleId];\n\n\t\t\t\t// when disposing there is no need to call dispose handler\n\t\t\t\tdelete outdatedDependencies[moduleId];\n\n\t\t\t\t// remove \"parents\" references from all children\n\t\t\t\tfor (j = 0; j < module.children.length; j++) {\n\t\t\t\t\tvar child = __webpack_require__.c[module.children[j]];\n\t\t\t\t\tif (!child) continue;\n\t\t\t\t\tidx = child.parents.indexOf(moduleId);\n\t\t\t\t\tif (idx >= 0) {\n\t\t\t\t\t\tchild.parents.splice(idx, 1);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// remove outdated dependency from module children\n\t\t\tvar dependency;\n\t\t\tfor (var outdatedModuleId in outdatedDependencies) {\n\t\t\t\tif (__webpack_require__.o(outdatedDependencies, outdatedModuleId)) {\n\t\t\t\t\tmodule = __webpack_require__.c[outdatedModuleId];\n\t\t\t\t\tif (module) {\n\t\t\t\t\t\tmoduleOutdatedDependencies =\n\t\t\t\t\t\t\toutdatedDependencies[outdatedModuleId];\n\t\t\t\t\t\tfor (j = 0; j < moduleOutdatedDependencies.length; j++) {\n\t\t\t\t\t\t\tdependency = moduleOutdatedDependencies[j];\n\t\t\t\t\t\t\tidx = module.children.indexOf(dependency);\n\t\t\t\t\t\t\tif (idx >= 0) module.children.splice(idx, 1);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\tapply: function (reportError) {\n\t\t\t// insert new code\n\t\t\tfor (var updateModuleId in appliedUpdate) {\n\t\t\t\tif (__webpack_require__.o(appliedUpdate, updateModuleId)) {\n\t\t\t\t\t__webpack_require__.m[updateModuleId] = appliedUpdate[updateModuleId];\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// run new runtime modules\n\t\t\tfor (var i = 0; i < currentUpdateRuntime.length; i++) {\n\t\t\t\tcurrentUpdateRuntime[i](__webpack_require__);\n\t\t\t}\n\n\t\t\t// call accept handlers\n\t\t\tfor (var outdatedModuleId in outdatedDependencies) {\n\t\t\t\tif (__webpack_require__.o(outdatedDependencies, outdatedModuleId)) {\n\t\t\t\t\tvar module = __webpack_require__.c[outdatedModuleId];\n\t\t\t\t\tif (module) {\n\t\t\t\t\t\tmoduleOutdatedDependencies =\n\t\t\t\t\t\t\toutdatedDependencies[outdatedModuleId];\n\t\t\t\t\t\tvar callbacks = [];\n\t\t\t\t\t\tvar errorHandlers = [];\n\t\t\t\t\t\tvar dependenciesForCallbacks = [];\n\t\t\t\t\t\tfor (var j = 0; j < moduleOutdatedDependencies.length; j++) {\n\t\t\t\t\t\t\tvar dependency = moduleOutdatedDependencies[j];\n\t\t\t\t\t\t\tvar acceptCallback =\n\t\t\t\t\t\t\t\tmodule.hot._acceptedDependencies[dependency];\n\t\t\t\t\t\t\tvar errorHandler =\n\t\t\t\t\t\t\t\tmodule.hot._acceptedErrorHandlers[dependency];\n\t\t\t\t\t\t\tif (acceptCallback) {\n\t\t\t\t\t\t\t\tif (callbacks.indexOf(acceptCallback) !== -1) continue;\n\t\t\t\t\t\t\t\tcallbacks.push(acceptCallback);\n\t\t\t\t\t\t\t\terrorHandlers.push(errorHandler);\n\t\t\t\t\t\t\t\tdependenciesForCallbacks.push(dependency);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tfor (var k = 0; k < callbacks.length; k++) {\n\t\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\t\tcallbacks[k].call(null, moduleOutdatedDependencies);\n\t\t\t\t\t\t\t} catch (err) {\n\t\t\t\t\t\t\t\tif (typeof errorHandlers[k] === \"function\") {\n\t\t\t\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\t\t\t\terrorHandlers[k](err, {\n\t\t\t\t\t\t\t\t\t\t\tmoduleId: outdatedModuleId,\n\t\t\t\t\t\t\t\t\t\t\tdependencyId: dependenciesForCallbacks[k]\n\t\t\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\t\t} catch (err2) {\n\t\t\t\t\t\t\t\t\t\tif (options.onErrored) {\n\t\t\t\t\t\t\t\t\t\t\toptions.onErrored({\n\t\t\t\t\t\t\t\t\t\t\t\ttype: \"accept-error-handler-errored\",\n\t\t\t\t\t\t\t\t\t\t\t\tmoduleId: outdatedModuleId,\n\t\t\t\t\t\t\t\t\t\t\t\tdependencyId: dependenciesForCallbacks[k],\n\t\t\t\t\t\t\t\t\t\t\t\terror: err2,\n\t\t\t\t\t\t\t\t\t\t\t\toriginalError: err\n\t\t\t\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\tif (!options.ignoreErrored) {\n\t\t\t\t\t\t\t\t\t\t\treportError(err2);\n\t\t\t\t\t\t\t\t\t\t\treportError(err);\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\tif (options.onErrored) {\n\t\t\t\t\t\t\t\t\t\toptions.onErrored({\n\t\t\t\t\t\t\t\t\t\t\ttype: \"accept-errored\",\n\t\t\t\t\t\t\t\t\t\t\tmoduleId: outdatedModuleId,\n\t\t\t\t\t\t\t\t\t\t\tdependencyId: dependenciesForCallbacks[k],\n\t\t\t\t\t\t\t\t\t\t\terror: err\n\t\t\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\tif (!options.ignoreErrored) {\n\t\t\t\t\t\t\t\t\t\treportError(err);\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Load self accepted modules\n\t\t\tfor (var o = 0; o < outdatedSelfAcceptedModules.length; o++) {\n\t\t\t\tvar item = outdatedSelfAcceptedModules[o];\n\t\t\t\tvar moduleId = item.module;\n\t\t\t\ttry {\n\t\t\t\t\titem.require(moduleId);\n\t\t\t\t} catch (err) {\n\t\t\t\t\tif (typeof item.errorHandler === \"function\") {\n\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\titem.errorHandler(err, {\n\t\t\t\t\t\t\t\tmoduleId: moduleId,\n\t\t\t\t\t\t\t\tmodule: __webpack_require__.c[moduleId]\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t} catch (err1) {\n\t\t\t\t\t\t\tif (options.onErrored) {\n\t\t\t\t\t\t\t\toptions.onErrored({\n\t\t\t\t\t\t\t\t\ttype: \"self-accept-error-handler-errored\",\n\t\t\t\t\t\t\t\t\tmoduleId: moduleId,\n\t\t\t\t\t\t\t\t\terror: err1,\n\t\t\t\t\t\t\t\t\toriginalError: err\n\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tif (!options.ignoreErrored) {\n\t\t\t\t\t\t\t\treportError(err1);\n\t\t\t\t\t\t\t\treportError(err);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t} else {\n\t\t\t\t\t\tif (options.onErrored) {\n\t\t\t\t\t\t\toptions.onErrored({\n\t\t\t\t\t\t\t\ttype: \"self-accept-errored\",\n\t\t\t\t\t\t\t\tmoduleId: moduleId,\n\t\t\t\t\t\t\t\terror: err\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (!options.ignoreErrored) {\n\t\t\t\t\t\t\treportError(err);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn outdatedModules;\n\t\t}\n\t};\n}\n__webpack_require__.hmrI.jsonp = function (moduleId, applyHandlers) {\n\tif (!currentUpdate) {\n\t\tcurrentUpdate = {};\n\t\tcurrentUpdateRuntime = [];\n\t\tcurrentUpdateRemovedChunks = [];\n\t\tapplyHandlers.push(applyHandler);\n\t}\n\tif (!__webpack_require__.o(currentUpdate, moduleId)) {\n\t\tcurrentUpdate[moduleId] = __webpack_require__.m[moduleId];\n\t}\n};\n__webpack_require__.hmrC.jsonp = function (\n\tchunkIds,\n\tremovedChunks,\n\tremovedModules,\n\tpromises,\n\tapplyHandlers,\n\tupdatedModulesList\n) {\n\tapplyHandlers.push(applyHandler);\n\tcurrentUpdateChunks = {};\n\tcurrentUpdateRemovedChunks = removedChunks;\n\tcurrentUpdate = removedModules.reduce(function (obj, key) {\n\t\tobj[key] = false;\n\t\treturn obj;\n\t}, {});\n\tcurrentUpdateRuntime = [];\n\tchunkIds.forEach(function (chunkId) {\n\t\tif (\n\t\t\t__webpack_require__.o(installedChunks, chunkId) &&\n\t\t\tinstalledChunks[chunkId] !== undefined\n\t\t) {\n\t\t\tpromises.push(loadUpdateChunk(chunkId, updatedModulesList));\n\t\t\tcurrentUpdateChunks[chunkId] = true;\n\t\t} else {\n\t\t\tcurrentUpdateChunks[chunkId] = false;\n\t\t}\n\t});\n\tif (__webpack_require__.f) {\n\t\t__webpack_require__.f.jsonpHmr = function (chunkId, promises) {\n\t\t\tif (\n\t\t\t\tcurrentUpdateChunks &&\n\t\t\t\t__webpack_require__.o(currentUpdateChunks, chunkId) &&\n\t\t\t\t!currentUpdateChunks[chunkId]\n\t\t\t) {\n\t\t\t\tpromises.push(loadUpdateChunk(chunkId));\n\t\t\t\tcurrentUpdateChunks[chunkId] = true;\n\t\t\t}\n\t\t};\n\t}\n};\n\n__webpack_require__.hmrM = () => {\n\tif (typeof fetch === \"undefined\") throw new Error(\"No browser support: need fetch API\");\n\treturn fetch(__webpack_require__.p + __webpack_require__.hmrF()).then((response) => {\n\t\tif(response.status === 404) return; // no update available\n\t\tif(!response.ok) throw new Error(\"Failed to fetch update manifest \" + response.statusText);\n\t\treturn response.json();\n\t});\n};\n\n__webpack_require__.O.j = (chunkId) => (installedChunks[chunkId] === 0);\n\n// install a JSONP callback for chunk loading\nvar webpackJsonpCallback = (parentChunkLoadingFunction, data) => {\n\tvar [chunkIds, moreModules, runtime] = data;\n\t// add \"moreModules\" to the modules object,\n\t// then flag all \"chunkIds\" as loaded and fire callback\n\tvar moduleId, chunkId, i = 0;\n\tif(chunkIds.some((id) => (installedChunks[id] !== 0))) {\n\t\tfor(moduleId in moreModules) {\n\t\t\tif(__webpack_require__.o(moreModules, moduleId)) {\n\t\t\t\t__webpack_require__.m[moduleId] = moreModules[moduleId];\n\t\t\t}\n\t\t}\n\t\tif(runtime) var result = runtime(__webpack_require__);\n\t}\n\tif(parentChunkLoadingFunction) parentChunkLoadingFunction(data);\n\tfor(;i < chunkIds.length; i++) {\n\t\tchunkId = chunkIds[i];\n\t\tif(__webpack_require__.o(installedChunks, chunkId) && installedChunks[chunkId]) {\n\t\t\tinstalledChunks[chunkId][0]();\n\t\t}\n\t\tinstalledChunks[chunkId] = 0;\n\t}\n\treturn __webpack_require__.O(result);\n}\n\nvar chunkLoadingGlobal = self[\"webpackChunk_geo_geo_map\"] = self[\"webpackChunk_geo_geo_map\"] || [];\nchunkLoadingGlobal.forEach(webpackJsonpCallback.bind(null, 0));\nchunkLoadingGlobal.push = webpackJsonpCallback.bind(null, chunkLoadingGlobal.push.bind(chunkLoadingGlobal));","// module cache are used so entry inlining is disabled\n// startup\n// Load entry module and return exports\n__webpack_require__.O(undefined, [121], () => (__webpack_require__(52369)))\n__webpack_require__.O(undefined, [121], () => (__webpack_require__(85035)))\n__webpack_require__.O(undefined, [121], () => (__webpack_require__(36767)))\n__webpack_require__.O(undefined, [121], () => (__webpack_require__(72107)))\n__webpack_require__.O(undefined, [121], () => (__webpack_require__(59305)))\n__webpack_require__.O(undefined, [121], () => (__webpack_require__(33255)))\n__webpack_require__.O(undefined, [121], () => (__webpack_require__(39924)))\n__webpack_require__.O(undefined, [121], () => (__webpack_require__(98337)))\n__webpack_require__.O(undefined, [121], () => (__webpack_require__(68526)))\n__webpack_require__.O(undefined, [121], () => (__webpack_require__(16237)))\n__webpack_require__.O(undefined, [121], () => (__webpack_require__(13163)))\n__webpack_require__.O(undefined, [121], () => (__webpack_require__(38326)))\n__webpack_require__.O(undefined, [121], () => (__webpack_require__(10945)))\n__webpack_require__.O(undefined, [121], () => (__webpack_require__(24014)))\n__webpack_require__.O(undefined, [121], () => (__webpack_require__(18728)))\n__webpack_require__.O(undefined, [121], () => (__webpack_require__(25876)))\n__webpack_require__.O(undefined, [121], () => (__webpack_require__(98304)))\n__webpack_require__.O(undefined, [121], () => (__webpack_require__(48711)))\n__webpack_require__.O(undefined, [121], () => (__webpack_require__(82631)))\n__webpack_require__.O(undefined, [121], () => (__webpack_require__(97326)))\n__webpack_require__.O(undefined, [121], () => (__webpack_require__(37627)))\n__webpack_require__.O(undefined, [121], () => (__webpack_require__(88632)))\n__webpack_require__.O(undefined, [121], () => (__webpack_require__(53513)))\n__webpack_require__.O(undefined, [121], () => (__webpack_require__(66094)))\n__webpack_require__.O(undefined, [121], () => (__webpack_require__(18597)))\n__webpack_require__.O(undefined, [121], () => (__webpack_require__(74985)))\n__webpack_require__.O(undefined, [121], () => (__webpack_require__(49551)))\n__webpack_require__.O(undefined, [121], () => (__webpack_require__(83185)))\n__webpack_require__.O(undefined, [121], () => (__webpack_require__(30142)))\n__webpack_require__.O(undefined, [121], () => (__webpack_require__(76249)))\nvar __webpack_exports__ = __webpack_require__.O(undefined, [121], () => (__webpack_require__(24024)))\n__webpack_exports__ = __webpack_require__.O(__webpack_exports__);\n"],"names":["deferred","inProgress","dataWebpackPrefix","webpackEmptyAsyncContext","req","Promise","resolve","then","e","Error","code","keys","id","module","exports","MessageBoxType","AppState","constructor","mapViewerConfig","tracker","Object","defineProperty","type","Standard","show","title","message","subTitle","hasProgress","percent","okButton","cancelButton","this","mobx_1","makeObservable","topic","observable","location","match","navigate","subtopic","subtopicId","subtopicLabel","objectId","objectLabel","authentication","loggedIn","esriCredential","messageBox","setRoute","action","removeRouteHash","setRoutePath","setTopic","setTopicById","setTopicByRoute","setSubtopic","setSubtopicId","setSubtopicLabel","setSubtopicLayers","setObjectId","setObjectLabel","setAuthentication","setLoggedIn","showMessageBox","closeMessageBox","progressMessageBox","previousPathname","_a","pathname","undefined","setTimeout","trackPageView","hash","getRoute","topicId","getTopic","route","getTopicByRoute","revision","Math","random","toString","label","name","subtopicLayers","lodash_1","default","isEqual","layers","credential","props","hasOwnProperty","configure","enforceActions","WebMap","React","lazy","resolve_1","reject_1","require","tslib_1","__importStar","App","Component","super","createRef","appStore","uiStore","ui_state_1","UiState","mapStore","map_state_1","MapState","state","northFacing","alertMessage","startupMessage","addClass","setUiSize","window","innerWidth","innerHeight","moduleConfig","appConfig","config","mapViewerStore","map_viewer_store_mobx_1","MapViewerStore","geo_proxy_1","GeoProxy","proxy","loadRules","config_1","request","proxyUrl","url","assetsPath","fontsUrl","geometryServiceUrl","portalUrl","IdentityManager_1","on","console","warn","dialog","destroy","setAppConfig","handleMapLoad","bind","handleBrowserNavigation","handleResize","getDefaultTopic","defaultTopic","msg","error","createElement","react_router_dom_1","Navigate","to","basename","routes","replace","setTopicFromUrl","params","topicRoute","request_1","__CONFIG_ROOT__","responseType","topicJson","topicConfig","typescript_json_serializer_1","JsonSerializer","deserializeObject","data","map_viewer_configuration_1","MapViewerTopicConfiguration","updateConfig","setWebMap","webMap","Array","isArray","maintenance","concat","basemapGallery","object_utils_1","ObjectUtils","mergeDeep","basemap","opacity","mapView","extent","center","scale","zoom","spatialReference","SpatialReference_1","wkid","subtopics","find","s","includes","view_configuration_1","MapViewConfiguration","viewpoint","bookmarks","bookmark","floor","length","search","newSearch","sources","handleSubtopicBrowserNavigation","selectObjectFromUrl","checkUiSize","uiHeight","appUiRef","current","clientHeight","uiWidth","_b","clientWidth","isSmallDevice","breakpoints","md","componentDidMount","searchParams","autorun","navigationReaction","dispose","paramsReaction","view","processAdditionalParams","addEventListener","updateMessages","autorunDisposers","push","reaction","activeLayerMetauids","componentDidUpdate","prevProps","componentWillUnmount","stopBrowserNavigationListener","removeEventListener","forEach","disposer","tocReadyAutorunDisposers","setSidebarVisible","visible","render","mapProperties","menuVisible","isSidebarVisible","uiOffsetTop","topicswitcherVisible","TopicSwitcherStore","basemapOpacity","status","alertMessages","not_found_1","Notfound","sidebarHigh","join","cssProperties","loadingLabel","className","error_boundary_1","ErrorBoundary","abstract_app_store_1","AppStoreProvider","store","semantic_ui_react_1","Sidebar","Pushable","style","animation","onHide","react_responsive_1","maxWidth","onClick","react_inlinesvg_1","src","sidebar_1","sidebar","small","Pusher","Suspense","fallback","viewProperties","onLoad","ref","maintenance_1","header_1","Header","capabilities","searchConfig","popup","disabled","popup_1","Popup","enabledPanels","compare","compare_1","Compare","controlsConfig","standalone","minWidth","topic_switcher_1","TopicSwitcher","topics","elevation_profile_1","ElevationProfile","tools","profile","measurement_1","Measurement","basemap_gallery_1","BasemapGallery","footer_1","Footer","message_box_1","MessageBox","cookie_banner_1","map","locateButtonEnabled","locateWidget","Locate_1","ui","add","move","compassWidget","Compass_1","watch","newValue","setState","closePopup","handleLocationHash","defaultView","topicSwitcher","currentView","v","path_utils_1","PathUtils","joinPath","_c","decodeURIComponent","indexOf","handleLessMore","tocReady","showObject","r","target","substring","splice","prepareMessagesContent","meta","all","msgs","filter","m","alerts","messagesConfig","startup","arguments","messagePromises","variables","elementType","index","condition","prepareMessageContent","activeLayers","layerNumbers","layerMeta","lNo","arcadeExecutor","arcade","createArcadeExecutor","ae","execute","$activeLayers","$activeLayersMeta","$subtopicId","messageConfig","message_startup_1","key","header","class","content","message_block_1","__decorate","mobx_react_1","observer","FooterBase","react_1","scalebar_1","ScaleBar","scaleBar","coordinate_1","Coordinate","attribution_1","Attribution","attribution","withStore","HeaderBase","toggleSidebarVisible","runInAction","sidebarVisible","mode","aboutLink","helpLink","href","rel","trigger","Button","as","icon_1","Icon","title_1","Title","siteTitle","pageTitle","Menu","attached","inverted","Item","kt_logo_white_inverted_svg_1","height","width","topic_switcher_button_1","TopicSwitcherButton","showTopic","position","map_finder_1","MapFinder","cap","search_1","Search","enumerable","get","app_1","LegendItemList","legendLayers","layerInfos","layer","legend_layer_1","LegendLayer","LegendItemGroup","items","item","legend_list_item_1","LegendListItem","link","hasLink","size","Content","Subheader","Table","basic","celled","collapsing","unstackable","Body","LegendListItem_1","addLineBreaks","text","split","txt","Fragment","symbol","legend_configuration_1","LegendItemType","Image","iconName","Path","svgPath","Circle","svgCircle","backgroundColor","color","Row","Cell","singleLine","colSpan","description","transformation","angle","outline","symbols_1","SimpleLineSymbol","xmlns","viewBox","d","fill","transform","stroke","toCss","strokeWidth","strokeLinecap","cy","cx","itemGroups","group","groups","legend_item_group_1","LegendBase","LegendStyleType","List","legend_item_list_1","widgets","has","widgetKey","addWidget","removeWidget","NpDocsBase","isFetching","searchQuery","selectOpen","value","options","files","npDocs","handleChange","handleSearchChange","handleSelectOpen","handleSelectClose","fetchOptions","_ref","response","_ref2","setSidebarSelectOpen","zpList","bbplaList","srlList","Message","info","FormField","Dropdown","fluid","selection","multiple","placeholder","onChange","onSearchChange","onOpen","onClose","loading","CollapseButton","icon","DockPosition","WindowMode","SidebarBase","activeIndex","lastActiveIndex","checkHeight","handleClick","hide","toggleVisibility","sHeight","sidebarRef","isHigh","setSidebarHigh","setMenuVisible","collapsed","toggleTopicMenu","resizeObserver","ResizeObserver","observe","disconnect","titleProps","newIndex","matchMedia","matches","exclusivePanels","setVisible","dock","currentMode","Docked","dockPosition","TopRight","undock","Normal","None","currentVisible","sidebarSelectOpen","panels","CompareStore","enabled","view_manager_1","ViewManager","layer_list_1","LayerList","layerList","active","setTocReady","layer_selector_1","LayerSelector","layerSelector","activeCompare","LayerSelectorStore","comparisonEnabled","legend","useEsri","esriConfig","legend_2","Legend","legend_1","_d","printing_1","Printing","print","panelContent","sharing_1","Sharing","Divider","tools_1","Tools","_e","customPanels","np_docs_1","NpDocs","urls","_f","mapFinder","unshift","Accordion","styled","exclusive","direction","vertical","LegendLayoutType","LegendStyleConfiguration","JsonProperty","JsonObject","LegendItemConfiguration","SemanticICONS","symbol_configuration_1","SimpleLineSymbolConfiguration","LegendItemGroupConfiguration","link_configuration_1","LinkConfiguration","LegendLayerInfoConfiguration","LegendConfiguration","MapFinderMapConfiguration","MapFinderConfiguration","WebMapMetaConfiguration","module_configuration_1","ModuleConfiguration","TrackerConfiguration","MapViewerConfiguration","getFirstSubtopic","firstSubtopic","parentId","getLayerTemplate","metauid","layerId","layerTemplates","layerTemplate","t","layerIds","template","compare_configuration_1","CompareConfiguration","layer_list_configuration_1","LayerListConfiguration","print_configuration_1","PrintConfiguration","_g","maintenance_configuration_1","MaintenanceConfiguration","popup_configuration_1","PopupConfiguration","_h","tools_configuration_1","ToolsConfiguration","_j","topic_switcher_configuration_1","TopicSwitcherConfiguration","_k","FillSymbolConfiguration","_l","HashMap","_m","sidebar_configuration_1","SidebarConfiguration","_o","web_map_configuration_1","WebMapConfiguration","_p","topic_configuration_1","TopicBasemapConfiguration","_q","basemap_gallery_configuration_1","BasemapGalleryConfiguration","_r","_s","search_configuration_1","SearchConfiguration","_t","TopicLayerConfiguration","TopicLayersConfiguration","TopicConfiguration","GeoICONS","feature_filter_configuration_1","FeatureFilterConfiguration","AttributionBase","viewModel","attributionText","isLoading","mapLoading","mainCopyrightItem","textItems","mainCopyright","loadViewModel","watchHandles","oldValue","propertyName","pattern","RegExp","test","handle","remove","attrConfig","assign","AttributionViewModel_1","layerItems","itemDelimiter","year","Date","getFullYear","textItem","textDelimiter","BasemapGalleryButton","btnImage","btnClass","isOrthophoto","mapToggle","Transition","isExpanded","duration","BasemapGalleryItemDataProps","BasemapGalleryItemData","BasemapGalleryItem","isSelected","css","isPlaceholder","itemTitle","format_utils_1","FormatUtils","formatTitle","thumbnailUrl","alt","BasemapGalleryToggle","activeBasemapId","BasemapGalleryBase","filterValue","dataAll","dataShown","orthophotoTag","timer","transparency","showSlider","sliderWorkaroundWait","handleItemClick","handleFilterChange","clearFilterInputField","handleExpandButtonClick","handleToggleButtonClick","setTransparency","close","hideSlider","basemap_gallery_button_1","setLayerOpacity","activeBasemap","baseLayers","menuGallery","sliderSettings","min","max","step","searchEnabled","Input","event","react_semantic_ui_range_1","Slider","settings","basemap_gallery_item_1","btnExpand","TransitionablePortal","open","transition","unmountOnHide","basemap_gallery_toggle_1","PopupStore","preventDefault","b","nextBasemap","getBasemap","setActiveBasemap","setBasemapById","tags","resetFilter","filterText","handleDeferred","applyFilter","args","timeout","clearTimeout","filterNormalized","trim","toLowerCase","filteredItems","itemsToShow","selectedBasemap","basemapId","source","basemaps","portalItem","setBasemapOpacity","loadBasemapGallery","applicationBasemaps","removeBasemap","excludeApplicationBasemaps","excludeTags","filterFunction","findIndex","tag","portalItems","newLength","oldLength","propName","titleFormated","defaultBasemapTitle","setDefaultBasemap","appendProxyUrl","styles","l","itemId","loadStyle","firstThumbnail","element","secondThumbnail","basemap_gallery_item_data_1","galleryConfig","BasemapGallery_1","CompareSelectBase","getTitle","allLayers","flatten","subL","allSublayers","getMetaId","getLayerPath","trailing","matrixSelect","matrixSelectTrailing","selected","buttons","layerMatrixKey","layerMatrix","values","marks","layerMatrixValueKey","parseInt","slider","rc_slider_1","dotStyle","borderColor","activeDotStyle","track","rail","onSelect","defaultValue","Form","Field","Radio","eventData","checked","Group","grouped","uiOrientation","optional","selectOptional","o","Checkbox","CompareBase","handleSelect","handleSelectTrailing","handleSliderSelect","handleSliderSelectTrailing","keyAppend","sliderKey","select","matrixKey","possibleLayers","parentDisableNext","ids","k","intersectLayers","subtopicConfig","mapActiveLayers","prepareLeadingLayers","leadingLayers","permanetLayers","some","sublayers","sublayerIds","getTopicByActiveLayers","setLayersLeading","al","selectTrailing","newTrailing","defaultTrailing","setMatrixSelectTrailing","layersTrailing","setLayersTrailing","trailingLayers","optionalLayers","handleCompare","currentTarget","blur","disableCompare","enableCompare","setEnabled","setDisabled","GroupLayer_1","blendMode","set","layerPromises","copyLayers","trailingLayer","p","layerTrailing","possibleLayer","tConfig","lId","legendEnabled","MapImageLayer_1","ImageryTileLayer_1","FeatureLayer_1","VectorTileLayer_1","load","usableWidth","swipeProps","widget","Swipe_1","addOnCompareHandles","removeOnCompareHandles","updateLayers","appStoreSubtopic","Map","layerMetauids","layerConfig","subtopicChange","setLayers","setMatrixSelect","timeoutID","permanent","defaultLayersTrailing","disableNext","activeIDs","intersection","lID","pL","updateOrientation","autorunCompareDisposers","at","compareButton","selects","compare_select_1","CompareSelect","primary","compact","CookieBanner","accepted","cookies","path","sameSite","maxAge","domain","hostname","handleDismiss","disclaimer","prop_types_1","instanceOf","react_cookie_1","Cookies","isRequired","withCookies","CoordinateBase","coordinate","titleElevationLayer","resetCursorTimer","cursorTimeoutId","loadElevationLayer","ground","elevationLayerIndex","getItemAt","updateElevationSampler","elevation","reactiveUtils","when","stationary","evt","toMap","x","y","mapPoint","elevationSampler","mapPointZ","queryElevation","z","createElevationSampler","Extent_1","toJSON","coords","elevationElement","Intl","NumberFormat","format","round","errorInfo","componentDidCatch","whiteSpace","componentStack","children","iconFile","__CONFIG_APPBASE__","titleString","LayerListItemBase","visibleAtCurrentScale","hidden","handleLayerToggle","handleCheckboxChange","handleItemChange","metadata","pathUid","uid","metadateConfig","getLayerId","checkVisibility","subitems","minScale","maxScale","i","level","nextLevel","showElement","startLevel","nextIsRoot","limitLevel","hasChildren","metaUrl","urlTemplate","showLayers","indeterminate","ite","child","inputType","parent","visibilityMode","legendConfig","floated","layer_list_list_1","LayerListList","listItems","toArray","onListItemClick","isRoot","LayerListListBase","listElements","oi","layer_list_item_1","LayerListItem","LayerListBase","postMessages","Element","preMessages","reformatListItemWhenCreated","handleListItemClick","listItem","operationalItems","extendedLayer","extendedSubLayer","parentVisibilityMode","subI","itemVisibility","visibleChildren","operationalItemsArray","LayerListStore","setOperationalItemsArray","handleLayerChange","allItems","hideLayerItem","metaId","itemConfig","groupId","sublayerMap","groupItem","ignore","reorder","preContent","messages","postContent","messageContent","dangerouslySetInnerHTML","__html","hideList","negative","hasGroups","itemsConfig","modelViewInStore","setViewModel","setIsLoading","addWatchForEsriLayerListReady","addMissingIndex","loadGroups","groupPromises","addItemsToGroup","nValue","oValue","pName","targetView","initial","once","layerListConfig","listItemCreatedFunction","LayerListViewModel_1","processing","setProcessing","rebuild","mapImageLayer","addGroups","buildHierarchy","groupConfig","groupLayer","groupListItem","addGroupLayer","ListItem_1","addToParent","copy","cloneDeep","nextGroupId","Sublayer_1","roots","findChildren","len","sort","a","regroupedItems","addRegroupedItem","setOpenStatus","setInitialVisibility","layerUid","layerVisible","setHasGroups","layerItem","c","lic","listMode","anchorField","anchorFieldType","groupOpenStatusSet","LayerSelectorMatrixBase","relatedDropdownSelections","dropdownOptions","dropdownOptionsForCurrentTopic","selectedOptions","getSelectedGroupOptions","storeSelectionForRelatedControls","filterValidOptions","formFieldType","optionConfig","selectedValue","clearable","Loader","inline","groupKey","OrientationLabel","dataFieldRelations","relation","codes","va","oc","option","relatedDropdownValues","orientationLabel","zoomToFeature","itemGuid","dataStore","geoDataStores","zoomToItem","LayerSelectorBase","toggleComparison","loadDropdownOptions","isInitialized","applyMatrixRules","matrixConfig","LayerSelectorLegend","layer_selector_matrix_1","LayerSelectorMatrix","horizontal","cssClass","topic_toggle_1","TopicToggle","topicToggle","hideLayerList","setSelectedOption","disableComparison","enableComparison","addComparisonHandles","removeComparisonHandles","autorunLayerSelectorDisposers","CSS","Handles_1","activeLayerInfos","links","version","layersReady","loadLegend","_refreshActiveLayerInfos","scheduleRender","subIds","activeLayerInfo","reverse","ready","legendElements","groupLegendElements","sortBy","keepInitialOrder","order","initialOrder","infos","infoLength","layerInfo","sub","LegendViewModel_1","elements","processed","g","legendElement","isGroup","li","ConditionalLinkConfiguration","_handles","removeAll","filteredLayers","_renderLegendForLayer","noLegendText","classes","classNames","Widget_1","prepareLegendElements","rootMetauid","overwrite","removeLabels","titleObj","field","elementOverwrite","overwriteLayerInfos","append","labels","tmpLayer","_renderOnActiveLayerInfoChange","infoVersionHandle","childActiveLayerInfo","labelNode","slug","elementConfig","filteredElements","_renderLegendForElement","layerClasses","layerView","isChild","isColorRamp","isOpacityRamp","isSizeRamp","titleClasses","removedSameLabel","reduce","acc","rows","_renderLegendForElementInfo","row","_renderLegendForRamp","tableClass","caption","tableClasses","elementInfo","legendType","preview","legendPatch_1","LegendPatch","_renderImage","dynamicStyles","rampStops","rampDiv","opacityRampClass","labelsContent","stop","colors","toHex","esriSymbolUtils","renderColorRampPreviewHTML","align","gradient","rampNode","outerHTML","display","flexDirection","justifyContent","marginTop","symbolRef","isMounted","symbolOptions","node","renderPreviewHTML","Maintenance","setUiOffsetTop","dismiss","messageId","cookieString","from","getTime","maintenanceUiRef","now","MapFinderBase","activeIndexBack","searchTabIndex","searchIsLoading","searchResults","searchResultIndex","searchValue","setOpen","addPane","clearSearchInputField","handleSearchKeyDown","handleTabChange","searchFieldRef","MapFinderStore","focus","openFlag","genSmall","addParam","maps","mapList","localFlag","Link","appList","apps","login","newState","re","escapeRegExp","isMatch","result","titleFull","keywords","keyword","filteredResults","results","keyboard_key_1","getCode","Enter","activeCard","ArrowDown","next","ArrowUp","handleCardClick","panes","activeItem","currentIndex","mapCards","card","Card","appBasename","wrapped","appCards","menuItem","TabPane","Description","itemsPerRow","Meta","URLSearchParams","toUpperCase","addParamString","Modal","centered","dimmer","onKeyDown","scrolling","Tab","menu","tabular","onTabChange","Actions","MessageBlock","floating","MessageBoxBase","progress","showFooter","extra","Progress","autoSuccess","MessageStartup","Container","kt_logo_default_svg_1","Segment","PopupPanelActionOea","actionConfig","buttonAsLink","graphic","iFrameSrc","attributes","GBPER_CODE","gbper_code","NUMMER","nummer","PopupPanelItemChart","top","right","bottom","left","axis","entries","callout","xExtent","ext","d3","yExtent","draw","graphDiv","margins","svg","attr","call","axisBottom","tickValues","tickSizeOuter","tickFormat","ticks","axisLeft","selectAll","clone","points","line","sd","dataPoints","dataPointsVisible","enter","mediaInfos","altText","tooltip","dot","xm","ym","pointer","leastIndex","hypot","raise","specialContent","yValueFormatted","toLocaleString","maximumFractionDigits","xValueFormatted","replaceAll","pos","_","w","h","getBBox","scaleLinear","range","nice","seriesName","Set","prepareValues","fields","f","parseFloat","getAttribute","document","PopupPanelItemBase","popupItemRef","profileIsLoading","handleButtonClick","featureIndex","panelIndex","popupStore","featureChild","Feature_1","container","defaultPopupTemplateEnabled","visibleElements","getActivePage","titleHandle","waitingForContent","setLastItemTitle","sourceLayer","getObjectId","BFS_NR","bfs_nr","egrid","EGRIS_EGRID","egris_egrid","actionUrl","$feature","setActiveTool","queryConfig","query","searchLayer","layerType","sublayer","expression","where","definitionExpression","createQuery","queryFeatures","features","geometry","geometries","geometryEngine","union","featureGraphic","Graphic_1","resultSymbol","graphics","fullExtent","expand","goTo","catch","CustomEvent","detail","dispatchEvent","onHighlightClick","onZoomInClick","contentClass","selectedPanelIndex","buttonsTop","buttonCount","dockEnabled","popupTemplate","parsedUrl","actions","popup_panel_action_oea_1","buttonCss","onMouseEnter","PopupPanelBase","handlePaginationChange","prepareDefaultFormat","setTitle","peparedFields","activePages","setActivePages","prepareItems","Pagination","defaultActivePage","firstItem","lastItem","pointing","secondary","totalPages","onPageChange","valueUnitMap","fieldMap","defaultFormatMap","fieldFormat","prepareAttribute","popup_panel_item_1","PopupPanelItem","fieldType","getField","nullableFieldType","Number","isNaN","numericFieldType","getFieldDomain","places","digitSeparator","useGrouping","unit","pagination","activePage","onHighlight","activePageIndex","setActivePage","setSelectedPanelIndex","newTitle","fieldInfos","fieldInfo","setFieldInfoFormat","fieldName","FieldInfoFormat_1","dateFormat","PopupBase","PopupBase_1","copied","n","both","pointerPosition","popupRef","pointerRef","handleHighlightClick","highlight","handleZoomInClick","prepareLayers","customChart","externalServiceLoader","handles","highlightLayer","GraphicsLayer_1","highlightLayerId","loadPopup","popupEnabled","avls","avlsConfig","avlsTemplate","avlsLayer","prepareExternalLoader","prepareActions","PopupTemplate_1","addMapClickWatch","removeMapClickWatch","clearGraphicLayer","clearHighlights","highlightSymbol","selectedFeature","highlightEnabled","featureCount","addFeatures","removePositionHandles","clearTimeouts","pointerSymbol","coordinates","verticalAlign","eFormated","nFormated","eElement","el","eString","react_copy_to_clipboard_1","CopyToClipboard","onCopy","offset","positive","objectMap","popupContent","featureNavigation","panelProps","popup_panel_1","PopupPanel","defaultActiveIndex","dockOptions","mountOnShow","context","wide","popperDependencies","lastItemTitle","firstFlag","prepareTemplate","prepareUnits","prepareFeatures","setSelected","clearPanels","screenPoint","toScreen","documentElement","newX","addPositionHandles","elevationLayers","eLayer","rasterServiceMap","metauids","targetMetauid","targetLayers","getLayerViewsByMetauid","targetLayer","identify","returnGeometry","maxItemCount","catalogItems","setAttribute","serviceRasterInfo","bandInfos","band","fetchFeatures","allGraphicsPromise","queryLayer","outFields","featureSet","addPanel","selectFeature","Popup_1","contentConfig","popup_panel_item_chart_1","serviceID","service","externalServices","requestOptions","xhrOptions","usePost","method","requestData","getVersion","dataMapping","mappingObj","requestParam","property","tempAttribute","body","JSON","stringify","loadRequest","htmlData","updateIntervall","firstE","murmurhash3","newElement","currentElement","getElementsByClassName","parentElement","innerHTML","setTimeoutID","errorMessage","newIndexes","newSelectedPanelIndex","exclusiveFeature","setActiveIndex","graphicIndex","goToGeometries","map_utils_1","MapUtils","calculateMinExtent","abs","declaredClass","graphicsGroup","groupMap","groupSource","layerGroup","getLayerGroup","mergeBy","mergeG","mergeA","mergeV","newKeys","difference","newA","templateField","openPopup","selectedFeatureIndex","watchHandlesPosition","calcPointerPosition","geoContainer","preparedLayers","layerGroups","unitMap","regExp","creator","delete","rasterPrepared","rasterMetauidPrepared","allLayerViews","lv","includeDefaultActions","predefinedAction","predefinedActions","actionMap","allActions","mapClickWatchHandle","setFeatures","setMapPoint","PrintingBase","exportLink","layout","screenExtent","printReady","printScale","printSize","rotation","subtitle","printingRef","linkHelperElement","appendChild","scales","previewElement","handlePrintMap","handleFormatChange","handleScaleChange","handleSubtitleChange","handleTitleChange","loadPrintViewModel","updateCustomTextElements","templateOptions","setCustomTextElements","textElements","count","customTextElements","effectiveTemplateCustomTextElements","merge","templateCustomTextElements","calculatePreview","layoutDimension","layouts","maxPixel","maxMeters","previewSize","previewContent","getElementsByTagName","borders","uiTopOffset","borderLeftWidth","borderRightWidth","borderTopWidth","borderBottomWidth","createFileLink","fileName","titleText","lowercaseFormat","extension","FileLink_1","toISOString","slice","PrintTemplate_1","layoutOptions","templatesInfo","outScale","dpi","exportOptions","fileLink","pdfUrl","exportDirectory","lastIndexOf","formattedName","click","handleRotationChange","TemplateOptions_1","scaleEnabled","PrintViewModel_1","infoBlock","start","maxLength","widths","Select","choiceList","trackFill","ScaleBarBase","scaleBarRef","loadScaleBar","scaleBarConfig","ScaleBar_1","ExtendedSearchViewModel","SearchViewModel_1","properties","getSuggestionValue","suggestion","getSectionSuggestions","section","suggestions","SearchBase","layersLoaded","searchTerm","sectionShowAll","handleShowAll","onSuggestionsFetchRequested","onSuggestionsClearRequested","onSuggestionSelected","renderSectionTitle","renderSuggestion","clearInputField","changeEvent","getSuggestions","trackSiteSearch","numResults","sectionIndex","sourceType","SearchSourceType","Locator","sConfig","categories","emit","searchResponse","feature","sourceConfig","sourceIndex","resultGraphicEnabled","queryConfigs","queries","metaid","q","Layer","autoNavigate","popupPoint","within","buffer","nearestCoordinate","clear","registerLayerLoading","layerLoaded","newSuggestions","maxResults","maxSuggestions","Label","suggestionText","match_1","parts","parse_1","part","searchField","inputProps","react_autosuggest_1","highlightFirstSuggestion","multiSection","focusInputOnSuggestionClick","loadSearch","reject","waitForTocReady","sourcesWithLayers","Custom","every","searchViewModel","err","initializeSources","Collection_1","layerSource","initializeLayerSource","customSource","initializeCustomSource","initializeCoordinateSource","SearchStore","setViewReady","allPlaceholder","inputValue","suggest","sections","groupLayers","returnDistinctValues","exactMatch","searchFields","customQuery","searchLayers","findSublayerById","fl","__awaiter","queryPromises","resultFeatures","sLayer","whereArray","customNumericQuery","suggestTerm","num","encodeForSQL","wClase","encodeForSQLLike","FeatureSet_1","orderByFields","suggestionKeyMap","layerIndex","orderby","orders","arr","orderBy","resultFeature","suggestionPromise","suggestionTemplate","fieldVal","displayField","keyArray","getResults","suggestResult","xPadding","ceil","xmin","xmax","yPadding","ymin","ymax","stationSearch","search_station_1","SearchStation","SearchSource_1","coordString","coord","convertDMSToDD","checkExtent","maxExtent","wgs84","longitude","latitude","lv03","lv95","projection","projectedPoint","project","point","degrees","minutes","seconds","SharingBase","imageExported","mapUrl","marker","markerType","basemapParam","markerParam","updateMapUrl","focusParam","protocol","host","drawMarker","updateBasemapParameter","pixelRatio","devicePixelRatio","getPPI","div","ppi","getComputedStyle","getPropertyValue","removeChild","printConfig","handleMarkerTypeChange","additionalParameter","labelPosition","titleEl","ogTitle","querySelector","descriptionEl","ogDescription","fullTitle","ReactDOM","createPortal","ElevationProfileButton","activeTool","toggle","ElevationProfileBase","profileRef","setActive","elevationProfile","settingsButton","clearButton","profiles","ElevationProfileLineQuery_1","ElevationProfile_1","unitOptions","toolGraphic","input","selectButton","MeasurementButtons","tool","newActive","newActiveTool","MeasurementBase","measurements","measurementRefs","AreaMeasurement2D_1","DistanceMeasurement2D_1","ToolsBase","subTool","measurement_buttons_1","elevation_profile_button_1","TopicSwitcherButtonBase","handleToggle","button","TopicSwitcherBase","handleMenuOpen","menuItems","composeMenu","someTopicHasChildren","parentTopics","allChildrenHidden","tc","flatMap","parentConfig","childConfig","TopicToggleBase","st","controlType","toggleOption","subtopicForThisOption","ViewManagerBase","updateView","ActionBaseConfiguration","SearchSourceQueryConfiguration","ActionButtonConfiguration","ActionToggleConfiguration","ActionSliderConfiguration","AppConfiguration","attribution_configuration_1","AttributionConfiguration","proxy_configuration_1","ProxyConfiguration","basemap_toggle_configuration_1","BasemapToggleConfiguration","editor_configuration_1","EditorConfiguration","scalebar_configuration_1","ScaleBarConfiguration","sketch_configuration_1","SketchConfiguration","AttributionTextItemConfiguration","AuthoringInfoConfiguration","LocalBasemapsSourceConfiguration","PortalBasemapsSourceConfiguration","portal_configuration_1","PortalConfiguration","BasemapStyleConfiguration","widget_configuration_1","WidgetConfiguration","map_configuration_1","BasemapConfiguration","BasemapToggleVisibleElementsConfiguration","LineCallout3DBorderConfiguration","Callout3DConfiguration","LineCallout3DConfiguration","ColorConfiguration","ColorBackgroundConfiguration","CompareMatrixConfiguration","CompareSliderConfiguration","ContentConfiguration","CustomContentConfiguration","FieldsContentConfiguration","MediaContentConfiguration","TextContentConfiguration","AttachmentsContentConfiguration","ElementExpressionInfoConfiguration","ExpressionContentConfiguration","RelatedRecordsInfoFieldOrderProperties","RelationshipContentConfiguration","CustomChartXYConfiguration","CustomChartAxisConfiguration","CustomChartTooltipConfiguration","CustomChartConfiguration","sketch_label_options_properties_configuration_1","SketchLabelOptionsPropertiesConfiguration","snapping_options_properties_configuration_1","SnappingOptionsPropertiesConfiguration","sketch_tooltip_options_properties_configuration_1","SketchTooltipOptionsPropertiesConfiguration","SketchValueOptionsConfiguration","editor_visible_elements_configuration_1","EditorVisibleElementsConfiguration","visible_elements_snapping_controls_elements_configuration_1","VisibleElementsSnappingControlsElementsConfiguration","geometry_configuration_1","GeometryConfiguration","time_info_configration_1","TimeExtentConfiguration","FontConfiguration","FormTemplateConfiguration","spatial_reference_configuration_1","SpatialReferenceConfiguration","ExtentConfiguration","PointConfiguration","GraphicConfiguration","layer_configuration_1","LayerConfiguration","PopupTemplateConfiguration","SymbolConfiguration","PortalLayerConfiguration","portal_item_configuration_1","PortalItemConfiguration","FeatureLayerConfiguration","form_template_configuration_1","renderer","renderer_configuration_1","UniqueValueRendererConfiguration","SimpleRendererConfiguration","RendererConfiguration","TimeInfoConfiguration","TimeIntervalConfiguration","GroupLayerConfiguration","CatalogDynamicGroupLayerConfiguration","CatalogLayerConfiguration","metadata_configuration_1","MetadataConfiguration","OverwriteConfiguration","GroundConfiguration","MapConfiguration","actionTypePredicate","action_configuration_1","PopupDockOptionsBreakpointConfiguration","PopupDockOptionsConfiguration","PopupVisibleElementsConfiguration","LayerTemplate","PopupLayerGroupConfiguration","PopupExpressionInfoConfiguration","content_configuration_1","TemplateOptionsConfiguration","authoring_info_configuration_1","vv","visual_variable_configuration_1","OpacityVariableConfiguration","ColorVariableConfiguration","SizeVariableConfiguration","RotationVariableConfiguration","UniqueValueRendererLegendOptionsConfiguration","UniqueValueInfoConfiguration","SearchSourceFilterConfiguration","SearchResultSymbolConfiguration","PictureMarkerSymbolConfiguration","SearchSourceConfiguration","SimpleMarkerSymbolConfiguration","LocatorSearchSourceConfiguration","LayerSearchSourceConfiguration","CustomSearchSourceConfiguration","__esri","FeatureLayer","MaxExtentConfiguration","CoordinateSearchSourceConfiguration","searchSource","SketchDefaultUpdateOptionsConfiguration","SketchDefaultCreateOptionsConfiguration","SketchLabelOptionsConfiguration","VisibleElementsConfiguration","Units","SketchTooltipOptionsConfiguration","VisibleElementsCreateToolsConfiguration","VisibleElementsSelectionToolsConfiguration","SketchVisibleElementsConfiguration","FeatureSnappingLayerSourceConfiguration","SnappingOptionsConfiguration","SimpleFillSymbolProperties","SimpleLineSymbolProperties","Symbol3DVerticalOffsetConfiguration","LineSymbolConfiguration","LineSymbolMarkerConfiguration","Color_1","MarkerSymbolConfiguration","TextSymbolConfiguration","font_configuration_1","Symbol3DStyleOriginConfiguration","Symbol3DConfiguration","PolygonSymbol3DConfiguration","LabelSymbol3DConfiguration","callout_configuration_1","CIMSymbolConfiguration","CIMSymbolReference","DateProperties","ToolBaseConfiguration","ElevationProfileVisibleElementsConfiguration","ElevationProfileConfiguration","graphic_configuration_1","ThemeConfiguration","ViewConfiguration","HTMLDivElement","MapViewConstraintsConfiguration","CameraLayoutConfiguration","CameraConfiguration","ViewpointConfiguration","HighlightOptionsConfiguration","color_configuration_1","InitialViewConfiguration","_u","_v","_w","VisualVariableLegendOptionsConfiguration","VisualVariableConfiguration","SizeStopConfiguration","ScaleDependentStopsConfiguration","OpacityStopConfiguration","ColorStopConfiguration","urlPrefixes","prefix","urlUtils","addProxyRule","urlPrefix","visibleFilterlayers","layerViews","highlightedFeature","basemapAttribution","featureInfo","setStatus","setMap","setView","setFeatureInfo","clearFeatureInfo","addLayer","removeLayer","removeGroupLayer","addVisibleFilterLayer","removeVisibleFilterLayer","addLayerView","removeLayerView","setActiveLayers","setActiveLayerMetauids","highlightFeature","unhighlightFeature","setBasemap","setBasemapAttribution","setDefaultBasemapTitle","urlOrTag","portal","Portal_1","fetchBasemaps","basemapItem","Basemap_1","defaultBasemap","getLayersByMetauid","AbstractAppStore","componentsStores","compare_store_mobx_1","layer_list_store_mobx_1","layer_selector_store_mobx_1","map_finder_store_mobx_1","popup_store_mobx_1","search_store_mobx_1","topic_switcher_store_mobx_1","layerObjectId","layerMetaId","addParameter","centroid","searchParamsLower","bfs","parcel","gvlNo","egid","focusArgs","Point_1","Viewpoint_1","targetGeometry","searchLayerPromises","no","gbcode","prznr","gvnr","basemapTag","AppStoreContext","createContext","Provider","useStore","useContext","layersLeading","regroupedItem","initialized","dropDownOptions","selectedOptionsLeading","selectedOptionsTrailing","setInitialized","setComparisonState","setDropdownOptions","computed","disposeSelectionInitializer","initialize","isInitiallyLoading","topicIds","storedOptions","groupOptions","getSelectedOptions","getDropdownOptions","storedTopicOptions","gc","rules","prepareServiceRules","applyRendererAndFilters","visibilities","prepareVisibilities","applyLayerVisibility","loadItems","guid","displayLabel","dataField","relevantLayers","getLayersByRules","duplicateTrailingLayers","clonedTrailingLayers","swipeWidget","comparisonLayers","comparisonLayerViews","layerLoadedPromises","sourceMetauid","duplicatedLayers","layerViewPromises","whenLayerView","visibleLayers","debug","anySubLayerVisible","subLayer","isSublayerVisible","serviceRules","layerRules","serviceId","getLayerView","renderField","FeatureFilter_1","lw","groupOptionConfigs","layerRule","filters","filterConfig","whereClause","rendererFields","rendererFieldConfig","leadingOption","trailingOption","viewReadyHandles","serviceLayers","page","panel","timeoutMap","getTimeoutID","viewReady","getViewModel","viewModels","box","language","pendingRequestCount","filterActive","selectedTabs","resizing","appIsInSync","isResizing","setLanguage","resetPendingRequestCount","setFilterActive","setToolGraphic","startResizing","stopResizing","handleWindowResizeWhenSidebarOpen","lang","loadConfig","file","appJson","mapviewerJson","defaultSerializer","app_configuration_1","matomo_tracker_js_1","app_mobx_1","RouteElement","component","RouteComponent","passProps","__rest","useLocation","useNavigate","useParams","setSearchParams","useSearchParams","getElementById","client_1","createRoot","BrowserRouter","Routes","Route","Outlet","promises","promise","lyr","log","geodesicBuffer","String","prototype","evaluate","names","Function","ReferenceError","formatValue","toFixed","visualFormat","colorVariable","useColorVariableLabel","stops","colorLabel","textAlign","padZero","regexString","str","char","isObject","obj","_len","objects","_key","prev","pVal","oVal","readableUrl","addr","URL","charAt","seed","h1b","k1","remainder","bytes","h1","c1","c2","charCodeAt","localsJsonString","cssReload","hot","invalidate","accept","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","loaded","execOptions","factory","__webpack_modules__","handler","O","chunkIds","fn","priority","notFulfilled","Infinity","fulfilled","j","getter","__esModule","definition","chunkId","u","hu","miniCssF","hmrF","prop","done","script","needAttach","scripts","charset","nc","origin","crossOrigin","integrity","sriHashes","onScriptComplete","onerror","onload","doneFns","parentNode","head","Symbol","toStringTag","nmd","paths","currentChildModule","currentUpdateApplyHandlers","queuedInvalidatedModules","currentModuleData","installedModules","currentParents","registeredStatusHandlers","currentStatus","blockingPromises","blockingPromisesWaiting","newStatus","unblock","list","hotCheck","applyOnUpdate","hmrM","update","updatedModules","hmrC","waitForBlockingPromises","internalApply","applyInvalidatedModules","hotApply","errors","Boolean","disposePromise","applyPromise","reportError","outdatedModules","apply","modules","hmrI","hmrD","createRequire","me","parents","createPropertyDescriptor","configurable","fetchPriority","trackBlockingPromise","createModuleHotObject","_main","_acceptedDependencies","_acceptedErrorHandlers","_declinedDependencies","_selfAccepted","_selfDeclined","_selfInvalidated","_disposeHandlers","_requireSelf","dep","callback","errorHandler","decline","addDisposeHandler","removeDisposeHandler","idx","check","addStatusHandler","removeStatusHandler","createStylesheet","fullhref","oldTag","linkTag","nonce","errorType","realHref","insertBefore","nextSibling","findStylesheet","existingLinkTags","dataHref","existingStyleTags","oldTags","newTags","applyHandler","miniCss","removedChunks","removedModules","applyHandlers","updatedModulesList","currentUpdatedModulesList","installedChunks","hmrS_jsonp","installedChunkData","realSrc","currentUpdateChunks","currentUpdate","currentUpdateRemovedChunks","currentUpdateRuntime","waitingUpdateResolves","loadUpdateChunk","getAffectedModuleEffects","updateModuleId","outdatedDependencies","queue","chain","queueItem","pop","addAllToSet","jsonpHmr","appliedUpdate","warnUnexpectedRequire","newModuleFactory","abortError","doApply","doDispose","chainInfo","onDeclined","ignoreDeclined","onUnaccepted","ignoreUnaccepted","onAccepted","onDisposed","moduleOutdatedDependencies","outdatedSelfAcceptedModules","outdatedModuleId","dependency","disposeHandlers","callbacks","errorHandlers","dependenciesForCallbacks","acceptCallback","dependencyId","err2","onErrored","originalError","ignoreErrored","err1","self","moreModules","runtime","jsonp","fetch","ok","statusText","json","webpackJsonpCallback","parentChunkLoadingFunction","chunkLoadingGlobal","__webpack_exports__"],"sourceRoot":""}