{ "version": 3, "sources": ["mapper_controller-20b8d18b66478927a54f9e75aab05956448a3af3b07ec3c2d134dde06fad1abe.js"], "sourcesContent": ["import { Controller } from \"@hotwired/stimulus\";\n\n// Connects to data-controller=\"mapper\"\nexport default class extends Controller {\n maps = [...this.element.querySelectorAll(\"svg\")];\n\n next = () => {\n let index = this.maps.findIndex(map => (map.style.display !== 'none'))\n index = (index + 1) % this.maps.length\n this.maps.forEach((map, i) => {\n map.style.display = i == index ? 'block' : 'none'\n })\n }\n\n prev = () => {\n let index = this.maps.findIndex(map => (map.style.display !== 'none'))\n index = (index + this.maps.length - 1) % this.maps.length\n this.maps.forEach((map, i) => {\n map.style.display = i == index ? 'block' : 'none'\n })\n }\n\n keydown = event => {\n if (event.key == \"ArrowRight\") {\n this.next()\n } else if (event.key == \"ArrowLeft\") {\n this.prev()\n }\n };\n\n disconnect() {\n document.removeEventListener(\"keydown\", this.keydown);\n };\n\n connect() {\n let dots = [...this.element.querySelectorAll(\"svg a\")];\n let machines = this.element.querySelectorAll(\"tbody tr td:first-child a\");\n let studios = this.element.querySelectorAll(\"tbody tr td:last-child a\");\n\n document.querySelector('a[rel=next]').addEventListener(\"click\", event => {\n event.preventDefault();\n this.next();\n });\n\n document.querySelector('a[rel=prev]').addEventListener(\"click\", event => {\n event.preventDefault();\n this.prev();\n });\n\n document.addEventListener(\"keydown\", this.keydown);\n\n function findDot(href) {\n return dots.find(dot => dot.href.baseVal == href);\n }\n\n let active = null;\n\n function clear() {\n if (!active) return;\n\n active.style.color = \"\";\n let dot = findDot(active.getAttribute(\"href\"));\n if (dot) {\n dot.firstElementChild.style.fill = \"\";\n }\n\n let region = active.closest(\"tr\").querySelector(\"td a\");\n region.style.color = \"\";\n dot = findDot(region.getAttribute(\"href\"));\n if (dot) {\n dot.firstElementChild.style.fill = \"\";\n }\n\n active = null;\n };\n\n for (let studio of studios) {\n studio.addEventListener(\"mouseover\", () => {\n if (active === studio) return;\n clear();\n active = studio;\n\n active.style.color = \"red\";\n let dot = findDot(studio.getAttribute(\"href\"));\n if (dot) {\n dot.parentElement.appendChild(dot);\n dot.firstElementChild.style.fill = \"red\";\n }\n\n let region = studio.closest(\"tr\").querySelector(\"td a\");\n region.style.color = \"green\";\n dot = findDot(region.getAttribute(\"href\"));\n if (dot) {\n dot.firstElementChild.style.fill = \"green\";\n }\n });\n\n studio.addEventListener(\"mouseleave\", () => {\n if (active !== studio) return;\n clear();\n });\n }\n\n for (let machine of machines) {\n machine.addEventListener(\"mouseover\", () => {\n machine.style.color = \"red\";\n let dot = findDot(machine.getAttribute(\"href\"));\n if (dot) {\n dot.firstElementChild.style.fill = \"red\";\n dot.firstElementChild.style.opacity = \"0.5\";\n }\n\n let studios = machine.closest(\"tr\").querySelectorAll(\"td:last-child a\");\n for (let studio of studios) {\n studio.style.color = \"green\";\n dot = findDot(studio.getAttribute(\"href\"));\n if (dot) {\n dot.firstElementChild.style.fill = \"green\";\n }\n }\n });\n\n machine.addEventListener(\"mouseleave\", () => {\n machine.style.color = \"\";\n let dot = findDot(machine.getAttribute(\"href\"));\n if (dot) {\n dot.parentElement.appendChild(dot);\n dot.firstElementChild.style.fill = \"\";\n }\n\n let studios = machine.closest(\"tr\").querySelectorAll(\"td:last-child a\");\n for (let studio of studios) {\n studio.style.color = \"\";\n dot = findDot(studio.getAttribute(\"href\"));\n if (dot) {\n dot.firstElementChild.style.fill = \"\";\n }\n }\n });\n }\n\n for (let dot of dots) {\n dot.addEventListener(\"mouseover\", event => {\n let link = this.element.querySelector(`tbody a[href=\"${dot.href.baseVal}\"]`);\n event = new event.constructor(event.type, event);\n if (link) link.dispatchEvent(event);\n });\n\n dot.addEventListener(\"mouseleave\", event => {\n let link = this.element.querySelector(`tbody a[href=\"${dot.href.baseVal}\"]`);\n event = new event.constructor(event.type, event);\n if (link) link.dispatchEvent(event);\n });\n }\n }\n};\n"], "mappings": "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", "names": ["Controller", "__publicField", "index", "map", "i", "event", "dots", "machines", "studios", "findDot", "href", "dot", "active", "clear", "region", "studio", "machine", "link"] }