{"version":3,"file":"application-1E8XpFfd.js","sources":["../../../app/frontend/entrypoints/application.js"],"sourcesContent":["import \"@hotwired/turbo-rails\";\nimport \"~/entrypoints/application.css\";\nimport \"./admin/admin.js\";\nimport \"./admin/controllers/stimulus_config.js\";\n\nimport Plausible from \"plausible-tracker\";\nimport L from \"leaflet\";\nimport \"polyline-encoded\";\nimport tailSelect from \"tail.select.js\";\n\nconst { trackPageview } = Plausible({\n domain: document.location.hostname,\n});\n\ndocument.addEventListener(\"turbo:load\", () => {\n trackPageview();\n});\n\nconst setupDiscountTypeFieldsComponent = () => {\n const discountTypeFields = document.querySelectorAll(\".discount-type-field\");\n const discountTypeIds = Array.from(discountTypeFields).map((s) =>\n s.getAttribute(\"id\")\n );\n discountTypeIds.map((id) => {\n const discountTypes = tailSelect(`#${id} select.discount-type-strategy`, {\n classNames: [\"w-full\"],\n });\n const locationTypes = tailSelect(\n `#${id} select.discount-type-location-strategy`,\n {\n search: true,\n classNames: [\"w-full\"],\n }\n );\n const stateTypes = tailSelect(\n `#${id} select.discount-type-state-strategy`,\n {\n classNames: [\"w-full\"],\n }\n );\n [\n ...(Array.isArray(locationTypes) ? locationTypes : [locationTypes]),\n ...(Array.isArray(stateTypes) ? stateTypes : [stateTypes]),\n ...(Array.isArray(discountTypes) ? discountTypes : [discountTypes]),\n ].map((s) => {\n if (!s) {\n return;\n }\n s.on(\"change\", (item, state) => {\n const form = document.querySelector(\"form#new-discount-policy\");\n const button = document.querySelector(`#${id} button`);\n form.requestSubmit(button);\n });\n });\n\n const inputNumbers = document.querySelectorAll(\n `form#new-discount-policy #${id} input[type=\"number\"]`\n );\n\n Array.from(inputNumbers).map((input) => {\n input.addEventListener(\"change\", (event) => {\n const form = document.querySelector(\"form#new-discount-policy\");\n const button = document.querySelector(`#${id} button`);\n form.requestSubmit(button);\n });\n });\n });\n};\n\ndocument.addEventListener(\"turbo:load\", setupDiscountTypeFieldsComponent);\ndocument.addEventListener(\"turbo:frame-load\", setupDiscountTypeFieldsComponent);\n\ndocument.addEventListener(\"turbo:load\", () => {\n const select = tailSelect(\"select#discount_policy_chain_id\", {\n classNames: [\"w-1/3\"],\n multiple: true,\n multiContainer: true\n });\n\n if (!select) {\n return;\n }\n\n const form = document.querySelector(\"form#new-discount-policy\");\n const createElement = (tagName, attrs = {}) => {\n const el = document.createElement(tagName);\n return Object.entries(attrs).reduce((element, attr) => {\n const [attrName, attrValue] = attr;\n element.setAttribute(attrName, attrValue);\n return element;\n }, el);\n };\n const selectDiscountPolicyChain = document.querySelector('select#discount_policy_chain_id');\n const selectedOptions = selectDiscountPolicyChain.querySelectorAll('option:checked');\n const selectedChainIds = Array.from(selectedOptions, o => o.value)\n\n const selectState = {\n select: selectedChainIds,\n unselect: [],\n };\n const createHiddenFields = (selectState, state) => {\n const chainsDoc = document.createDocumentFragment();\n const id = `${state}-chains`;\n const chainFields = createElement(\"fieldset\", {\n id,\n });\n const hiddenFields = selectState[state].map((chainId) => {\n return createElement(\"input\", {\n type: \"hidden\",\n name: `${state}_chain_id[]`,\n value: chainId,\n });\n });\n hiddenFields.map((f) => chainFields.append(f));\n chainsDoc.appendChild(chainFields);\n const previousFields = document.querySelector(`#${id}`);\n if (previousFields) {\n form.removeChild(previousFields);\n }\n form.append(chainsDoc);\n };\n\n select.on(\"change\", (item, state) => {\n selectState[state].push(item.key);\n const oppositeState = state === \"select\" ? \"unselect\" : \"select\";\n const index = selectState[oppositeState].indexOf(item.key);\n if (index > -1) {\n selectState[oppositeState].splice(index, 1);\n }\n\n createHiddenFields(selectState, \"select\");\n createHiddenFields(selectState, \"unselect\");\n\n form.requestSubmit();\n });\n});\n\ndocument.addEventListener(\"turbo:load\", () => {\n if (!!document.querySelector(\"#trip-map\")) {\n const tripMap = L.map(\"trip-map\");\n L.tileLayer(\"https://tile.openstreetmap.org/{z}/{x}/{y}.png\", {\n maxZoom: 19,\n attribution:\n '© OSM',\n }).addTo(tripMap);\n\n const mapContainer = document.querySelector(\"#trip-map\");\n\n const polyline = mapContainer.dataset.polyline;\n const line = L.Polyline.fromEncoded(polyline);\n tripMap.fitBounds(line.getBounds());\n line.addTo(tripMap);\n\n const selectedStations = JSON.parse(mapContainer.dataset.selected);\n const candidateStations = JSON.parse(mapContainer.dataset.candidates);\n\n const allLocations = JSON.parse(mapContainer.dataset.allLocations);\n const radius = 5;\n\n const notCandidateIds = [...candidateStations.map((station) => station.id)];\n const notSelectedIds = [...selectedStations.map((station) => station.id)];\n const notAllLocationIds = [...notSelectedIds, ...notCandidateIds];\n\n allLocations\n .filter((s) => !notAllLocationIds.includes(s.id))\n .map((station) => {\n const circle = L.circleMarker([station.latitude, station.longitude], {\n color: \"gray\",\n borderOpacity: 0.4,\n fillColor: \"gray\",\n fillOpacity: 0.3,\n radius,\n });\n circle.bindPopup(\n `${station.name}, ${station.city}, ${station.state_code}`\n );\n return circle;\n })\n .forEach((circle) => {\n circle.addTo(tripMap);\n });\n\n candidateStations\n .filter((station) => !notSelectedIds.includes(station.id))\n .map((station) => {\n const circle = L.circleMarker([station.latitude, station.longitude], {\n color: \"deeppink\",\n fillColor: \"deeppink\",\n fillOpacity: 0.5,\n radius,\n });\n circle.bindPopup(\n `${station.name}, ${station.city}, ${station.state_code}`\n );\n return circle;\n })\n .forEach((circle) => {\n circle.addTo(tripMap);\n });\n\n selectedStations\n .map((station) => {\n const circle = L.circleMarker([station.latitude, station.longitude], {\n color: \"darkblue\",\n fillColor: \"darkblue\",\n fillOpacity: 0.5,\n radius,\n });\n\n circle.bindPopup(\n `${station.name}, ${station.city}, ${station.state_code}`\n );\n\n return circle;\n })\n .forEach((circle) => {\n circle.addTo(tripMap);\n });\n }\n});\n"],"names":["trackPageview","Plausible","setupDiscountTypeFieldsComponent","discountTypeFields","s","id","discountTypes","tailSelect","locationTypes","stateTypes","item","state","form","button","inputNumbers","input","event","select","createElement","tagName","attrs","el","element","attr","attrName","attrValue","selectedOptions","selectState","o","createHiddenFields","chainsDoc","chainFields","chainId","f","previousFields","oppositeState","index","tripMap","L","mapContainer","polyline","line","selectedStations","candidateStations","allLocations","radius","notCandidateIds","station","notSelectedIds","notAllLocationIds","circle"],"mappings":"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"}