{"version":3,"file":"example-browser.bundle.js","mappings":"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","sources":["webpack://@xyzmaps/harp-examples/./example-browser.ts"],"sourcesContent":["/*\n * Copyright (C) 2023- XYZ maps contributors\n * Copyright (C) 2019-2021 HERE Europe B.V.\n * Licensed under Apache 2.0, see full license in LICENSE\n * SPDX-License-Identifier: Apache-2.0\n */\n\ninterface ExampleDefinitions {\n [pageUrl: string]: string;\n}\n\n/**\n * Example browser HTML / DOM app.\n */\nfunction exampleBrowser(exampleDefinitions: ExampleDefinitions) {\n const navPanel = document.getElementById(\"navPanel\") as HTMLDivElement;\n const exampleFrameElement = document.getElementById(\"exampleFrame\") as HTMLIFrameElement;\n const viewSourceButton = document.getElementById(\"viewSource\") as HTMLButtonElement;\n const exampleListElement = document.getElementById(\"exampleList\") as HTMLDivElement;\n\n let currentlySelectedSource: string | undefined;\n const categories: { [key: string]: HTMLAnchorElement[] } = {};\n const orderedCategories: string[] = [\n \"Getting started\",\n \"Datasource\",\n \"Rendering\",\n \"Styling\",\n \"Threejs\",\n \"Miscellaneous\"\n ];\n const elements: HTMLAnchorElement[] = [];\n const titleElements: HTMLElement[] = [];\n\n /**\n * Query params parsed out of hash.\n *\n * Used by xyz example to reload with params while keeping internal state.\n */\n let queryParams = \"\";\n\n installHamburgerHandler();\n populateExamplesMenu();\n\n function installHamburgerHandler() {\n const expandButton = document.getElementById(\"hamburgerMenu\") as HTMLAnchorElement;\n const closeButton = document.getElementById(\"closeButton\") as HTMLButtonElement;\n\n expandButton.addEventListener(\"click\", event => {\n navPanel.classList.toggle(\"collapsed\");\n event.preventDefault();\n });\n closeButton.addEventListener(\"click\", event => {\n navPanel.classList.toggle(\"collapsed\");\n event.preventDefault();\n });\n }\n\n function populateExamplesMenu() {\n Object.keys(exampleDefinitions)\n .sort()\n .forEach(pageUrl => {\n const linkName = getName(pageUrl).replace(new RegExp(\"-\", \"g\"), \" \");\n const linkElements = linkName.split(\" / \");\n // Create category 'miscellaneous' for examples without category name.\n let linkSubMenu = linkElements.length > 1 ? linkElements[0] : \"miscellaneous\";\n\n // Style: uppercase the first letter in case CSS lets lowercase.\n linkSubMenu = linkSubMenu.charAt(0).toUpperCase() + linkSubMenu.slice(1);\n // Create category if needed.\n if (categories[linkSubMenu] === undefined) {\n categories[linkSubMenu] = [];\n }\n const visibleText =\n linkElements.length === 1 ? linkName : linkElements.slice(1).join(\" / \");\n const linkElement = createDomElement(\"a\", {\n innerText: visibleText,\n href: \"#\" + pageUrl,\n className: \"link\"\n });\n (linkElement as any).nameWithCategory = linkName;\n (linkElement as any).nameWithoutCategory = visibleText;\n categories[linkSubMenu].push(linkElement);\n elements.push(linkElement);\n });\n\n Object.keys(categories)\n .sort()\n .forEach(category => {\n if (!orderedCategories.includes(category)) {\n orderedCategories.push(category);\n }\n });\n\n orderedCategories.forEach(menuElement => {\n const menu = document.createElement(\"div\");\n const title = document.createElement(\"h2\");\n title.innerHTML = menuElement;\n titleElements.push(title);\n menu.appendChild(title);\n const category = categories[menuElement];\n if (category === undefined) {\n return;\n }\n category.forEach(anchor => {\n menu.appendChild(anchor);\n });\n exampleListElement.appendChild(menu);\n });\n }\n\n let isSearching: boolean = false;\n\n function goInSearchMode() {\n titleElements.forEach(title => {\n title.style.cssText = \"display:none;\";\n });\n document.getElementById(\"magnifier-placeholder\")!.style.cssText = \"display:none;\";\n document.getElementById(\"clearFilterButton\")!.style.cssText = \"\";\n elements.forEach(anchor => {\n anchor.innerText = (anchor as any).nameWithCategory;\n });\n isSearching = true;\n }\n\n function leaveSearchMode() {\n titleElements.forEach(title => {\n title.style.cssText = \"\";\n });\n document.getElementById(\"magnifier-placeholder\")!.style.cssText = \"\";\n document.getElementById(\"clearFilterButton\")!.style.cssText = \"display:none;\";\n elements.forEach(anchor => {\n anchor.classList.remove(\"filtered\");\n anchor.innerText = (anchor as any).nameWithoutCategory;\n });\n (document.getElementById(\"filterInput\") as HTMLInputElement).value = \"\";\n isSearching = false;\n }\n\n /**\n * Shows an example.\n *\n * @param pageUrl - example page url, must exist in `examples` map\n */\n function showExample(pageUrl: string) {\n const expandButton = document.getElementById(\"hamburgerMenu\") as HTMLAnchorElement;\n expandButton.classList.toggle(\"expanded\", !navPanel.classList.contains(\"collapsed\"));\n if (!(pageUrl in exampleDefinitions)) {\n viewSourceButton.style.display = \"none\";\n exampleListElement.style.bottom = \"365px\";\n exampleFrameElement.contentWindow!.document.body.innerHTML =\n `

` +\n `404
Example not found

`;\n return;\n }\n\n // update the hash\n window.location.hash = \"#\" + pageUrl;\n if (queryParams) {\n window.location.search = queryParams;\n }\n\n // load page in frame\n exampleFrameElement.src = pageUrl + queryParams;\n\n // highlight selected element in list\n elements.forEach(element => {\n const elementTargetPage = element.hash.substr(1);\n if (elementTargetPage === pageUrl) {\n element.classList.add(\"selected\");\n } else {\n element.classList.remove(\"selected\");\n }\n });\n\n // update current source link\n currentlySelectedSource = exampleDefinitions[pageUrl];\n viewSourceButton.style.display = \"block\";\n exampleListElement.style.bottom = \"65px\";\n\n // mobile: collapse the navPanel\n navPanel.classList.toggle(\"collapsed\");\n }\n\n /**\n * Install view source button handler\n */\n viewSourceButton!.addEventListener(\"click\", () => {\n if (!currentlySelectedSource) {\n return;\n }\n\n window.open(\"codebrowser.html?src=\" + encodeURIComponent(currentlySelectedSource));\n });\n\n /**\n * Show example based on `location.hash` if it's not empty.\n */\n function showExampleFromHash() {\n const hash = window.location.hash;\n if (hash) {\n let pageUrl;\n\n //check if query parameters are added after the pageUrl in hash\n queryParams = \"\";\n const match = window.location.hash.match(/([^\\?]*)\\?(.*)/);\n if (match !== null && match.length > 2) {\n //query parameters found: the file name should not include the query parameters\n pageUrl = match[1].substring(1);\n queryParams = \"?\" + match[2];\n } else {\n pageUrl = window.location.hash.substring(1);\n }\n\n // possibly merge current window query string with one parsed-out from hash\n if (window.location.search) {\n queryParams = queryParams\n ? window.location.search + \"&\" + queryParams.substr(1)\n : window.location.search;\n }\n showExample(pageUrl);\n }\n }\n\n window.addEventListener(\"hashchange\", showExampleFromHash);\n showExampleFromHash();\n\n interface DomElementProps {\n [property: string]: string;\n }\n\n function createDomElement(name: string, options?: DomElementProps): T {\n const element = (document.createElement(name) as any) as T;\n if (options !== undefined) {\n // @ts-ignore\n Object.assign(element, options);\n }\n return element;\n }\n\n /**\n * Convert example link name to readable link title.\n *\n * When converting a path both the all path components extension are removed.\n *\n * Example:\n *\n * dist/hello.html -> hello\n * dist/hello_react-native-web.html -> hello / react-native-web\n *\n * @returns human readale example name with components separated with '/'\n */\n function getName(pageUrl: string) {\n const name = basename(pageUrl)\n .replace(/\\.[a-z]+$/, \"\")\n .split(\"_\");\n return name.join(\" / \");\n }\n\n /**\n * Get base name of file, so all parent folders and trailing '/' are removed.\n */\n function basename(path: string) {\n const i = path.lastIndexOf(\"/\");\n if (i === -1) {\n return path;\n } else {\n return path.substr(i + 1);\n }\n }\n}\n\n/**\n * Maps pageUrl to srcUrl.\n *\n * Loaded using