{"version":3,"sources":["src/investment.js"],"names":["InvestmentPage","init_hash_listener","init_adventure_thumbs","init_selection_listener","location","hash","jump_to_section","slice","wedding_packages","document","querySelectorAll","forEach","v","addEventListener","e","preventDefault","target","parentElement","href","split","pop","handle_selections","bind","detail","radio","$add_ons","querySelector","classList","contains","remove","dataset","remove_addon","addon","current_value","value","current_addons","JSON","parse","index","indexOf","splice","length","stringify","console","log","addOn","includes","projectType","add_addon","push","add","project_type","project_type_map","wedding","commercial","family","other","btn","i","$btn","getElementById","click","section","replace","section_top","offsetTop","window","scrollTo","top","behavior","investment_page"],"mappings":"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","file":"investment.js","sourcesContent":["class InvestmentPage {\n constructor() {\n this.init_hash_listener();\n this.init_adventure_thumbs();\n this.init_selection_listener();\n if (location.hash) this.jump_to_section(location.hash.slice(1));\n\n this.wedding_packages = ['highlight_reel','feature_film'];\n }\n\n init_adventure_thumbs() {\n document.querySelectorAll('#adventure_thumbs a').forEach(v => {\n v.addEventListener('click', e => {\n e.preventDefault();\n this.jump_to_section(e.target.parentElement.href.split('#').pop());\n });\n });\n }\n\n init_selection_listener() {\n document.querySelectorAll('.radio_price_button').forEach(v => {\n v.addEventListener('click', this.handle_selections.bind(this));\n });\n }\n\n init_hash_listener() {\n document.addEventListener('new_hash', e => {\n e.preventDefault();\n this.jump_to_section(e.detail.hash);\n });\n }\n\n handle_selections(e) {\n const radio = e.target;\n const $add_ons = document.querySelector('[name=add_ons]');\n\n const add_addon = (addon) => {\n const current_value = $add_ons.value;\n if (current_value !== '') {\n try {\n let current_addons = JSON.parse(current_value);\n if (!current_addons.includes(addon)) current_addons.push(addon);\n $add_ons.value = JSON.stringify(current_addons);\n } catch (e) {\n console.log(\"Failed to get/add addons.\", e);\n }\n } else {\n $add_ons.value = JSON.stringify([addon]);\n }\n }\n\n const remove_addon = (addon) => {\n const current_value = $add_ons.value;\n if (current_value !== '') {\n try {\n let current_addons = JSON.parse(current_value);\n let index = current_addons.indexOf(addon);\n if (index !== -1) {\n current_addons.splice(index,1);\n }\n if (current_addons.length === 0) return $add_ons.value = '';\n $add_ons.value = JSON.stringify(current_addons);\n } catch (e) {\n console.log(\"Failed to get/remove addons.\", e);\n }\n }\n }\n\n // If someone is clicking a selected item, remove it's selected-ness\n if (radio.classList.contains('selected')) {\n radio.classList.remove('selected');\n\n // If un-selecting an add-on, remove add-on from hidden from field\n if ('addOn' in radio.dataset) remove_addon(radio.dataset.addOn);\n\n // If un-selecting a wedding package, un-select all add-on's as well.\n if ('projectType' in radio.dataset && this.wedding_packages.includes(radio.dataset.projectType)) {\n document.querySelectorAll('#wedding_add_ons .radio_price_button').forEach(v => v.classList.remove('selected'));\n $add_ons.value = '';\n }\n return;\n }\n\n // If all someone is doing is selecting an add-on, just select it\n // and move on. There's nothing else to do.\n if ('addOn' in radio.dataset) {\n add_addon(radio.dataset.addOn);\n return radio.classList.add('selected');\n }\n\n // Toggle the selected-ness\n document.querySelectorAll('.radio_price_button').forEach(v => {\n // Don't toggle add-ons\n if ('addOn' in v.dataset) return;\n v.classList.remove('selected');\n });\n\n // If someone chooses a non-wedding package, un-select wedding add-ons\n if ('projectType' in radio.dataset && !this.wedding_packages.includes(radio.dataset.projectType)) {\n document.querySelectorAll('#wedding_add_ons .radio_price_button').forEach(v => v.classList.remove('selected'));\n $add_ons.value = '';\n }\n\n // Select the clicked radio button\n radio.classList.add('selected');\n\n // Set the project type and specific type in the contact form\n const project_type = radio.dataset.projectType || 'other';\n const project_type_map = {\n wedding: ['highlight_film','feature_film','custom_wedding','w_undecided','elopement'],\n commercial: ['corporate_event','promo','social_media','tv','c_other'],\n family: ['birth_story','party','lifestyle','f_other','day_of_birth'],\n other: ['other'],\n };\n let btn = 'other';\n for (let i in project_type_map) {\n if (project_type_map[i].includes(project_type)) {\n btn = i;\n break;\n }\n }\n const $btn = document.getElementById(`${btn}_btn`);\n if ($btn) $btn.click();\n if (project_type !== 'other') document.querySelector('[name=specific_type]').value = project_type;\n }\n\n jump_to_section(hash) {\n // console.log(\"Filtering by: \", hash);\n if (!hash) return;\n const section = document.getElementById(hash.replace(/^#/, ''));\n if (!section) return;\n const section_top = section.offsetTop || null;\n if (!section_top) return;\n window.scrollTo({\n top: section_top - 70,\n behavior: \"smooth\",\n });\n }\n}\n\nlet investment_page;\ndocument.addEventListener(\"DOMContentLoaded\", () => {\n investment_page = new InvestmentPage();\n});\n"]}