{"version":3,"sources":["src/hhf.js"],"names":["$","document","querySelector","bind","$$","getElementById","HHFilms","api","film_modal","success_modal","error_modal","modal_player","init_pancake_btn","init_film_modal_listener","init_hash_listener","init_modals","init_switch_navbar_listener","init_project_type_switcher","init_datepicker","project_date","fp","flatpickr","enableTime","altInput","altFormat","dateFormat","minDate","Date","add_listener","thumb","addEventListener","e","preventDefault","video_id","target","dataset","console","log","parentElement","setContent","open","setTimeout","Vimeo","Player","id","width","Math","ceil","window","innerWidth","autoplay","playsinline","portrait","title","play","then","ready","catch","close","querySelectorAll","forEach","hash","location","replace","dispatchEvent","CustomEvent","detail","tingle","modal","closeLabel","closeMethods","cssClass","onOpen","onClose","hhf","unload","beforeClose","footer","addFooterBtn","flapjack","stopPropagation","controller","AbortController","style","visibility","capture","once","body","hidePankcakeMenu","ev","tagName","abort","signal","switch_navbar","primary_contact","secondary_contact","primary_location","secondary_location","email","phone","message","project_category","specific_type","opts","options","btns","activate_btn","btn","v","classList","remove","add","optional_fields","display","concat","_input","placeholder","Array","from","value","label","option","createElement","text","click","embed_container","navbar","scrollY","offsetHeight","debounce","func","wait","immediate","timeout","context","args","arguments","callNow","clearTimeout","later","apply","verify_hhf_captcha","form","submit_btn","loader","data","FormData","xhr","XMLHttpRequest","status","reset","response","JSON","parse","responseText","outcome","error","grecaptcha","action","send"],"mappings":"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","file":"hhf.js","sourcesContent":["const $ = document.querySelector.bind(document);\nconst $$ = document.getElementById.bind(document);\n\nclass HHFilms {\n constructor() {\n this.api = 'https://dev.api.hearthappyfilms.com/';\n this.film_modal = null;\n this.success_modal = null;\n this.error_modal = null;\n this.modal_player = null;\n\n this.init_pancake_btn();\n this.init_film_modal_listener();\n this.init_hash_listener();\n this.init_modals();\n this.init_switch_navbar_listener();\n this.init_project_type_switcher();\n this.init_datepicker();\n }\n\n init_datepicker() {\n const project_date = document.querySelector(\"[name=project_date]\");\n if (!project_date) return;\n this.fp = flatpickr(project_date, {\n enableTime: false,\n altInput: true,\n altFormat: \"F j, Y\",\n dateFormat: \"m/d/Y\",\n minDate: new Date(),\n });\n }\n\n init_film_modal_listener() {\n const add_listener = function(thumb) {\n thumb.addEventListener('click', e => {\n e.preventDefault();\n let video_id = e.target.dataset['filmId'];\n if (!video_id) {\n console.log(\"Couldn't find video id!\");\n video_id = e.target.parentElement.dataset['filmId'];\n if (!video_id) return console.log(\"Invalid video id: \", e.target);\n }\n this.film_modal.setContent('
');\n this.film_modal.open();\n setTimeout(() => {\n this.modal_player = new Vimeo.Player('popup_video', {\n id: video_id,\n width: Math.ceil(window.innerWidth - (window.window.innerWidth * 0.15)),\n autoplay: true,\n playsinline: false,\n portrait: false,\n title: false\n });\n\n this.modal_player.play().then(() => {});\n this.modal_player.ready().catch(err => {\n //console.log(\"FAIL!!!\", err);\n this.film_modal.close();\n this.error_modal.setContent(\"

Ah man...

There was an error loading the video...\");\n this.error_modal.open();\n });\n }, 0);\n });\n };\n\n document.querySelectorAll('.film_thumb').forEach(add_listener.bind(this));\n document.querySelectorAll('.package_thumb').forEach(add_listener.bind(this));\n }\n\n init_hash_listener() {\n window.addEventListener('hashchange', e => {\n const hash = location.hash.replace(/^#(.*)/, \"$1\");\n document.dispatchEvent(new CustomEvent('new_hash', {\n detail: {hash}\n }));\n });\n }\n\n init_modals() {\n this.film_modal = new tingle.modal({\n closeLabel: 'close',\n closeMethods: ['overlay', 'button', 'escape'],\n cssClass: ['film-modal'],\n onOpen() {\n //console.log('modal open');\n },\n onClose() {\n if (window.hhf.modal_player) {\n window.hhf.modal_player.unload();\n } else {\n console.log(\"WTF?\");\n }\n console.log('modal closed');\n },\n beforeClose() {\n // e.g. save content before closing the modal\n return true; // close the modal\n return false; // nothing happens\n }\n });\n this.error_modal = new tingle.modal({\n footer: true,\n closeMethods: ['escape'],\n });\n this.error_modal.addFooterBtn('Dang, OK...', 'tingle-btn tingle-btn--danger', () => {\n this.error_modal.close();\n });\n this.success_modal = new tingle.modal({\n footer: true,\n closeMethods: ['escape'],\n });\n this.success_modal.addFooterBtn('Awesome!', 'tingle-btn tingle-btn--success', () => {\n this.success_modal.close();\n });\n }\n\n init_pancake_btn() {\n const flapjack = (e) => {\n e.stopPropagation();\n const controller = new AbortController();\n const hidePankcakeMenu = (ev) => {\n ev.stopPropagation();\n if (\n ev.target.id === 'middle_nav' || \n (\n ev.target.tagName === 'LI' &&\n ev.target.parentElement.id === 'middle_nav'\n )\n ) return;\n console.log('The Target ID: ', ev.target);\n $$('middle_nav').style.visibility = 'hidden';\n $$('pancake').addEventListener('click', flapjack, { capture: true, once: true });\n controller.abort();\n };\n\n if ($$('middle_nav').style.visibility === 'visible') {\n console.log('Hiding because visible');\n $$('middle_nav').style.visibility = 'hidden';\n $$('pancake').addEventListener('click', flapjack, { capture: true, once: true });\n } else {\n console.log('Showing because hidden');\n $$('middle_nav').style.visibility = 'visible';\n document.body.addEventListener('click', hidePankcakeMenu, { signal: controller.signal, capture: true });\n }\n }\n $$('pancake').addEventListener('click', flapjack, { capture: true, once: true });\n }\n\n init_switch_navbar_listener() {\n window.addEventListener(\"scroll\", this.switch_navbar.bind(this), false);\n }\n\n // Handle toggling between different contact us forms on regular contact pages (not exclusive collections ones)\n init_project_type_switcher() {\n // Ignore this if the regular (non-collections) contact us form is not present\n if (!$('#contact_us_form')) return;\n\n const primary_contact = $('[name=primary_contact]');\n const secondary_contact = $('[name=secondary_contact]');\n const primary_location = $('[name=primary_location]');\n const secondary_location = $('[name=secondary_location]');\n const project_date = $('[name=project_date]');\n const email = $('[name=email]');\n const phone = $('[name=phone]');\n const message = $('[name=message]');\n const project_category = $('[name=project_category]');\n const specific_type = $('[name=specific_type]');\n let opts;\n if (specific_type && typeof specific_type === 'object' && 'options' in specific_type) opts = specific_type.options;\n\n const btns = ['wedding_btn','commercial_btn','family_btn','other_btn'];\n\n const activate_btn = function(btn) {\n btns.forEach(v => $$(v).classList.remove('active'));\n $$(btn).classList.add('active');\n }\n\n \n const optional_fields = [secondary_contact, primary_location, secondary_location];\n optional_fields.forEach(v => {\n if (v && typeof v === 'object' && 'style' in v) v.style.display = 'none';\n });\n\n // Change fields based on selected project type\n document.querySelectorAll('#primary_project_type_picker button').forEach(btn => {\n btn.addEventListener('click', e => {\n switch (e.target.id) {\n case 'wedding_btn':\n optional_fields.concat([specific_type]).forEach(v => v.style.display = 'block');\n this.fp._input.style.display = 'block';\n primary_contact.placeholder = '* Your Full Name';\n secondary_contact.placeholder = \"* Fiancé's Full Name\";\n primary_location.placeholder = '* Ceremony Location';\n secondary_location.placeholder = '* Reception Location';\n project_date.placeholder = this.fp._input.placeholder = '* Wedding Date';\n message.placeholder = 'Tell us all about your wedding plans!';\n phone.placeholder = 'Your Phone #';\n email.placeholder = '* Your Email Address';\n\n // Film type options\n Array.from(opts).forEach(v => opts.remove(v));\n [\n {value: '', label: 'Choose Film Type...'},\n {value: 'elopement', label: 'Elopement'},\n {value: 'highlight_film', label: 'Highlight Film'},\n {value: 'feature_film', label: 'Feature Film'},\n {value: 'custom_wedding', label: 'Custom Wedding'},\n {value: 'w_undecided', label: 'Undecided / Need More Info'},\n ].forEach(v => {\n const option = document.createElement(\"option\");\n option.text = v.label;\n option.value = v.value;\n opts.add(option);\n });\n\n project_category.value = 'wedding';\n activate_btn('wedding_btn');\n break;\n case 'commercial_btn':\n [primary_location, secondary_location, project_date].forEach(v => v.style.display = 'none');\n [secondary_contact,specific_type].forEach(v => v.style.display = 'block');\n this.fp._input.style.display = 'none';\n secondary_contact.placeholder = '* Company Name';\n primary_contact.placeholder = '* Primary Contact Full Name';\n email.placeholder = '* Primary Contact Email';\n phone.placeholder = '* Primary Contact Phone';\n message.placeholder = 'Tell us all about your project!';\n\n // Film type options\n Array.from(opts).forEach(v => opts.remove(v));\n [\n {value: '', label: 'Choose Film Type...'},\n {value: 'promo', label: 'Promotional Video (web)'},\n {value: 'tv', label: 'Television Commercial'},\n {value: 'social_media', label: 'Social Media Campaign Video'},\n {value: 'corporate_event', label: 'Corporate Event'},\n {value: 'c_other', label: 'Other...'},\n ].forEach(v => {\n const option = document.createElement(\"option\");\n option.text = v.label;\n option.value = v.value;\n opts.add(option);\n });\n\n project_category.value = 'commercial';\n activate_btn('commercial_btn');\n break;\n case 'family_btn':\n [secondary_location,secondary_contact].forEach(v => v.style.display = 'none');\n [primary_location,specific_type].forEach(v => v.style.display = 'block');\n this.fp._input.style.display = 'block';\n primary_contact.placeholder = '* Your Full Name';\n primary_location.placeholder = '* Project Location';\n email.placeholder = '* Your Email Address';\n phone.placeholder = 'Your Phone #';\n project_date.placeholder = this.fp._input.placeholder = '* Project Date';\n message.placeholder = 'We would LOVE to hear more about your project / event!';\n\n // Film type options\n Array.from(opts).forEach(v => opts.remove(v));\n [\n {value: '', label: 'Choose Film Type...'},\n {value: 'birth_story', label: 'Birth Story'},\n {value: 'day_of_birth', label: 'Day-Of Birth Story'},\n {value: 'party', label: 'Family Celebration'},\n {value: 'mitzvah', label: 'Bar/Bat Mitzvah'},\n {value: 'lifestyle', label: 'Day-in-the-Life'},\n {value: 'f_other', label: 'Other...'},\n ].forEach(v => {\n const option = document.createElement(\"option\");\n option.text = v.label;\n option.value = v.value;\n opts.add(option);\n });\n\n project_category.value = 'family';\n activate_btn('family_btn');\n break;\n case 'other_btn':\n optional_fields.concat([specific_type]).forEach(v => v.style.display = 'none');\n this.fp._input.style.display = 'block';\n project_date.placeholder = this.fp._input.placeholder = '* Project Date';\n message.placeholder = 'We would LOVE to hear more about your project / event!';\n\n project_category.value = 'other';\n activate_btn('other_btn');\n break;\n }\n });\n });\n\n setTimeout(() => {\n const btn = $$('other_btn');\n if (btn) btn.click();\n }, 0);\n }\n\n switch_navbar() {\n const embed_container = document.querySelector('.embed_container');\n if (!embed_container) return;\n const navbar = document.getElementById(\"main_nav\");\n if (window.scrollY > embed_container.offsetHeight - 50) {\n navbar.classList.add('opaque_nav')\n } else {\n navbar.classList.remove('opaque_nav');\n }\n }\n}\n\nfunction debounce(func, wait, immediate) {\n let timeout;\n return function() {\n let context = this,\n args = arguments;\n let later = function() {\n timeout = null;\n if (!immediate) func.apply(context, args);\n };\n let callNow = immediate && !timeout;\n clearTimeout(timeout);\n timeout = setTimeout(later, wait);\n if (callNow) func.apply(context, args);\n };\n};\n\nfunction verify_hhf_captcha() {\n const form = document.querySelector('form');\n const submit_btn = document.getElementById('submit_contact_form');\n const loader = document.getElementById('contact_form_loader');\n const data = new FormData(form);\n\n // Show Loader / Hide Submit Button\n submit_btn.style.display = 'none';\n loader.style.display = 'block';\n\n const xhr = new XMLHttpRequest();\n xhr.addEventListener(\"load\", () => {\n // Hide Loader / Show Submit Button\n submit_btn.style.display = 'block';\n loader.style.display = 'none';\n\n if (xhr.status === 200) {\n // Reset the form\n form.reset();\n\n hhf.success_modal.setContent(`

Message Sent!

We'll shoot you a personal email as soon as we see your message come through. You should also receive an automated confirmation email.

If you don't get that automated email or hear back from us within the next day or so, please contact us directly at info@hearthappyfilms.com.

Thanks so much!!

`);\n hhf.success_modal.open();\n } else {\n const default_msg = `

It looks like we're having some trouble getting your message. Try again, but, if you see this again, just contact us directly: info@hearthappyfilms.com

Computers sometimes fail us, but, we're never gonna give you up, never gonna let you down, never run around and desert you. Never gonna make you cry (unless its for happy things), never gonna say goodbye (forever), never gonna tell a lie and hurt you.

`;\n let response = null;\n try {\n response = JSON.parse(xhr.responseText);\n hhf.error_modal.setContent(`

Oops!

${(response.outcome === 'error' ? `

${response.error}

` : default_msg)}`);\n } catch (e) {\n console.log(\"Invalid JSON.\", e);\n hhf.error_modal.setContent(`

Oops!

${default_msg}`);\n }\n hhf.error_modal.open();\n }\n grecaptcha.reset();\n });\n xhr.addEventListener('error', event => {\n this.error_modal.setContent(`

Oops!

Something isn't working right. Please contact us directly:

info@hearthappyfilms.com

`);\n this.error_modal.open();\n grecaptcha.reset();\n });\n xhr.open(\"POST\", form.action, true);\n xhr.send(data);\n}\n\ndocument.addEventListener(\"DOMContentLoaded\", () => {\n window.hhf = new HHFilms();\n});\n"]}