{ "version": 3, "sources": ["../../javascript/turbo_actions.js", "../../javascript/controllers/charity_item_controller.js", "../../javascript/controllers/charity_search_controller.js", "../../javascript/controllers/copy_controller.js", "../../javascript/controllers/donation_controller.js", "../../javascript/controllers/donation_slider_controller.js", "../../javascript/controllers/dropdown_menu_controller.js", "../../javascript/controllers/modal_controller.js", "../../javascript/controllers/remote_form_controller.js", "../../javascript/controllers/slider_controller.js", "../../javascript/controllers/toggle_controller.js", "../../javascript/controllers/new_tab_controller.js", "../../javascript/controllers/form_override.js", "../../javascript/controllers/scroll_on_change_controller.js", "../../javascript/controllers/donation_tracking_controller.js", "../../javascript/controllers/index.js", "../../javascript/application.js"], "sourcesContent": ["import { StreamActions } from \"@hotwired/turbo\"\n\nStreamActions.set_value = function () {\n const target = this.targetElements[0];\n if (target) {\n target.value = this.getAttribute('value');\n }\n};\n", "import { Controller } from \"@hotwired/stimulus\"\n\nexport default class extends Controller {\n static targets = [ 'block', 'info', 'radio' ]\n\n initialize() {\n this.update()\n if(this.descriptionTarget())\n this.descriptionTarget().dataset.scroll = true\n }\n\n descriptionTarget(){\n return document.getElementById('charityDescription');\n }\n\n update(){\n if(this.radioTarget.checked) {\n this.blockTarget.classList.add('charity-active');\n if(this.descriptionTarget())\n this.descriptionTarget().innerHTML = this.infoTarget.innerHTML\n this.scrollToSelectedCharity()\n } else {\n this.blockTarget.classList.remove('charity-active');\n }\n }\n\n trigger_update_all(){\n document.querySelectorAll('[data-controller*=\"charity-item\"] [data-charity-item-target=\"radio\"]').forEach((element, _) => {\n element.dispatchEvent(new Event('change', { 'bubbles': true }));\n })\n }\n\n scrollToSelectedCharity() {\n if(this.descriptionTarget() && this.descriptionTarget().dataset.scroll) {\n this.descriptionTarget().scrollIntoView({ behavior: 'smooth', block: 'center' });\n this.descriptionTarget().dataset.scroll = '';\n }\n }\n\n select(){\n this.radioTarget.checked = true;\n this.trigger_update_all();\n }\n}\n", "import { Controller } from \"@hotwired/stimulus\"\n\nexport default class extends Controller {\n static targets = [ 'search', 'results', 'image', 'id', 'ein' ]\n\n initialize() {\n // Load Mark.js dynamically when the controller initializes\n this.loadMarkJs();\n\n this.searchTarget.addEventListener(\"keydown\", (event) => {\n if(event.key === 'ArrowUp'){ this.focusPrevious(event) }\n else if(event.key === 'ArrowDown'){ this.focusNext(event) }\n else if(event.key === 'Enter'){ this.selectFocused(event) }\n }\n );\n this.searchTarget.addEventListener(\"keyup\",\n this.debounce((event) => {\n if(event.key !== 'ArrowUp' && event.key !== 'ArrowDown' && event.key !== 'Enter'){\n this.reload(event)\n }\n }, 200)\n );\n }\n\n async loadMarkJs() {\n try {\n const { default: Mark } = await import(\n 'mark.js'\n );\n this.Mark = Mark;\n } catch (error) {\n console.error('Failed to load Mark.js:', error);\n }\n }\n\n reload(event){\n let search = event.target.value;\n search = search.replace(/([0-9])-([0-9])/g, '$1$2');\n if(search != ''){\n if(this.ajax){\n this.ajax.abort();\n this.ajax = null;\n }\n this.ajax = this.getAjax(`https://ac.cnstrc.com/autocomplete/${search}?key=key_t3FDxwdb77757mVJ&filters[isDisbursable]=1&num_results_nonprofits=8&num_results_users=0`);\n } else {\n this.hide();\n }\n }\n\n currentFocus() {\n return this.resultsTarget.querySelector('li.focused');\n }\n\n nextToFocus(){\n if(this.currentFocus() && this.currentFocus().previousSibling) {\n return this.currentFocus().previousSibling;\n } else {\n return this.resultsTarget.lastElementChild;\n }\n }\n\n previousToFocus(){\n if(this.currentFocus() && this.currentFocus().nextSibling) {\n return this.currentFocus().nextSibling;\n } else {\n return this.resultsTarget.firstElementChild;\n }\n }\n\n selectFocused(event){\n event.preventDefault();\n if(this.currentFocus())\n this.select(this.currentFocus())\n }\n\n focusPrevious(_) {\n let current = this.currentFocus();\n let next = this.nextToFocus();\n if(this.currentFocus()) {\n current.setAttribute('aria-selected', 'false')\n current.classList.remove('focused')\n }\n next.setAttribute('aria-selected', 'true')\n next.classList.add('focused')\n }\n\n focusNext(_) {\n let current = this.currentFocus();\n let previous = this.previousToFocus();\n if(this.currentFocus()) {\n current.setAttribute('aria-selected', 'false')\n current.classList.remove('focused')\n }\n previous.setAttribute('aria-selected', 'true')\n previous.classList.add('focused')\n }\n\n hide(){\n this.element.classList.add('search-closed')\n this.element.setAttribute('aria-expanded', 'false')\n this.element.classList.remove('search-open')\n this.resultsTarget.innerHTML = '';\n }\n\n show(){\n this.element.classList.add('search-open')\n this.element.setAttribute('aria-expanded', 'true')\n this.element.classList.remove('search-closed')\n this.resultsTarget.innerHTML = '';\n this.imageTarget.innerHTML = '';\n }\n\n getAjax(url, success) {\n let xhr = window.XMLHttpRequest ? new XMLHttpRequest() : new ActiveXObject('Microsoft.XMLHTTP');\n xhr.open('GET', url);\n xhr.onreadystatechange = () => {\n if (xhr.readyState > 3){\n if(xhr.status == 200){\n this.success(xhr.responseText);\n } else if(xhr.status != 0) {\n appsignal.sendError(new Error(`Search failed with status ${xhr.status} ${url}`))\n }\n }\n }\n xhr.setRequestHeader('X-Requested-With', 'XMLHttpRequest');\n xhr.send();\n return xhr;\n }\n\n select(item) {\n this.searchTarget.value = item.dataset.name;\n this.searchTarget.dataset.name = item.dataset.name;\n this.searchTarget.dataset.id = item.dataset.id;\n this.searchTarget.dataset.ein = item.dataset.ein;\n\n this.searchTarget.dispatchEvent(new Event('change', { bubbles: true }))\n this.idTarget.value = item.dataset.id;\n this.einTarget.value = item.dataset.ein;\n this.einTarget.dispatchEvent(new Event('change', { bubbles: true }))\n\n this.imageTarget.innerHTML = '';\n let img = item.querySelector('img, svg');\n if(img){ this.imageTarget.append(img) }\n this.hide()\n }\n\n async success(data) {\n this.show()\n let json = JSON.parse(data);\n if(json.sections.nonprofits.length > 0){\n json.sections.nonprofits.forEach(async element => {\n // Do not list GivingMultiplier itself\n if(element.data.slug == 'GivingMultiplier' || !element.data.ein || element.data.ein === '')\n return\n\n const src = element.data.cloudinary_id ?\n `https://res.cloudinary.com/everydotorg/image/upload/c_lfill,w_48,h_48,dpr_1/c_crop,ar_48:48/q_auto,f_auto,fl_progressive/${element.data.cloudinary_id}` :\n `/default-charity-image.svg`\n const img = ``\n\n let name = element.value;\n let id = element.data.slug\n let ein = element.data.ein;\n\n let wrapper = document.createElement('div');\n wrapper.innerHTML = `\n
  • \n ${img}\n ${name}\n
  • `\n let item = wrapper.firstElementChild;\n item.addEventListener(\"click\", (event) => this.select(event.currentTarget))\n this.resultsTarget.appendChild(item);\n\n // Only create Mark instance if Mark.js is loaded\n if (this.Mark) {\n const instance = new this.Mark(item);\n instance.mark(element.matched_terms, { className: 'search-highlight' });\n }\n })\n } else {\n let wrapper = document.createElement('div');\n wrapper.innerHTML = `\n
  • \n No results found. Please use other keywords\n
  • `\n let item = wrapper.firstElementChild;\n this.resultsTarget.appendChild(item);\n }\n }\n\n debounce(fn, delay) {\n var timer = null;\n return function () {\n var context = this, args = arguments;\n clearTimeout(timer);\n timer = setTimeout(function () {\n fn.apply(context, args);\n }, delay);\n };\n }\n}\n", "import { Controller } from \"@hotwired/stimulus\"\n\nexport default class extends Controller {\n static targets = ['content', 'button']\n\n copyToClipboard() {\n this.contentTarget.select();\n this.contentTarget.setSelectionRange(0, 99999);\n document.execCommand('copy');\n this.buttonTarget.innerHTML = 'Copied!';\n setTimeout(() => { this.buttonTarget.innerHTML = 'Copy'; }, 3000);\n }\n}\n", "// Visit The Stimulus Handbook for more details\n// https://stimulusjs.org/handbook/introduction\n//\n// This example controller works with specially annotated HTML like:\n//\n//
    \n//

    \n//
    \n\nimport {\n Controller\n} from \"@hotwired/stimulus\"\n\nexport default class extends Controller {\n static targets = [\n 'amount', 'splitRatio', 'matchAmount', 'matchPercentage', 'matchAmountLow', 'matchAmountTop',\n 'boxLow', 'totalAmount', 'donationAmount', 'boxAmountHigh', 'charityNameLow', 'charityNameHigh',\n 'lowPercentage', 'highPercentage', 'referralCode', 'referralCodeStatus', 'matchingRate',\n 'matchReferralPercentage', 'matchNormalPercentage', 'matchReferral', 'highAdonationAmount',\n 'aiButton', 'aiButtonNote'\n ]\n\n connect() {\n this.config = JSON.parse(this.element.dataset.config);\n this.normal = JSON.parse(this.element.dataset.normal);\n this.update()\n if(this.hasReferralCodeTarget && this.referralCodeTarget.value != '')\n this.validateCode()\n }\n\n validAmount() {\n return !isNaN(parseInt(this.amountTarget.value, 10)) && parseInt(this.amountTarget.value, 10) >= 0;\n }\n\n splitRatio() {\n return parseFloat(this.splitRatioTarget.value, 10)\n }\n\n matchPercentage() {\n let ratio = this.config[this.splitRatio().toFixed(1)]\n return parseInt(ratio * 100);\n }\n\n matchNormalPercentage() {\n let ratio = this.normal[this.splitRatio().toFixed(1)]\n return parseInt(ratio * 100);\n }\n\n matchReferralPercentage() {\n return this.matchPercentage() - this.matchNormalPercentage()\n }\n\n lowPercentage() {\n return 100 - this.highPercentage()\n }\n\n highPercentage() {\n return this.splitRatio() * 100\n }\n\n highAdonationAmount() {\n return this.donationAmount() * this.highPercentage() / 100;\n }\n\n donationAmount() {\n if (!this.validAmount()) {\n return 0;\n }\n return parseInt(this.amountTarget.value, 10);\n }\n\n totalAmount() {\n if (!this.validAmount()) {\n return 0;\n }\n return this.donationAmount() + this.matchAmount();\n }\n\n matchAmount() {\n if (!this.validAmount()) {\n return 0;\n }\n return Math.floor(this.donationAmount() * this.matchPercentage()) / 100.0;\n }\n\n matchAmountTop() {\n return this.totalAmount() - this.matchAmountLow();\n }\n\n matchAmountLow() {\n return Math.floor(this.totalAmount() * this.lowPercentage()) / 100.0;\n }\n\n highCharitySelected() {\n var e = document.querySelector('input[name=\"donation[top_charity_id]\"]:checked') ||\n document.getElementById('donation_top_charity_name')\n return !!e?.dataset?.name;\n }\n\n highCharityName() {\n var e = document.querySelector('input[name=\"donation[top_charity_id]\"]:checked') ||\n document.getElementById('donation_top_charity_name')\n if (e) {\n return e.dataset['name'];\n } else {\n return 'a super-effective charity';\n }\n }\n\n lowCharitySelected() {\n var e = document.getElementById(\"donation_standard_charity_name\");\n return !!e?.dataset?.name;\n }\n\n lowCharityName() {\n var e = document.getElementById(\"donation_standard_charity_name\");\n if (e.dataset.id) {\n return e.dataset.name;\n } else {\n return 'your favorite charity';\n }\n }\n\n submit(e) {\n if (typeof ga === \"function\") {\n ga('send', 'event', 'DonationForm', 'submit');\n }\n }\n\n updateSimple() {\n this.matchAmountTarget.innerHTML = this.matchAmount().toFixed(2)\n this.matchAmountLowTarget.innerHTML = this.matchAmountLow().toFixed(2);\n this.matchAmountTopTarget.innerHTML = this.matchAmountTop().toFixed(2);\n this.charityNameLowTargets.forEach((target) => { target.innerHTML = this.lowCharityName(); });\n this.charityNameHighTargets.forEach((target) => { target.innerHTML = this.highCharityName(); });\n }\n\n update() {\n if(!this.hasMatchPercentageTarget){ this.updateSimple(); return }\n\n if(this.hasAiButtonTarget) {\n if(this.matchAmount() && this.highCharitySelected() && (this.lowCharitySelected() || this.splitRatio().toFixed(1) == 1.0)) {\n this.aiButtonTarget.disabled = false\n this.aiButtonNoteTarget.classList.add('hidden')\n } else {\n this.aiButtonTarget.disabled = true\n this.aiButtonNoteTarget.classList.remove('hidden')\n }\n }\n\n let original_matching = this.matchPercentageTarget.innerHTML;\n this.matchAmountTarget.innerHTML = this.matchAmount().toFixed(2)\n this.donationAmountTarget.innerHTML = this.donationAmount().toFixed(2)\n if (this.normal) {\n this.matchNormalPercentageTarget.innerHTML = this.matchNormalPercentage() + '%';\n this.matchReferralPercentageTarget.innerHTML = this.matchReferralPercentage() + '%';\n this.matchReferralTargets.forEach((target) => { target.classList.remove('hidden') });\n } else {\n this.matchReferralTargets.forEach((target) => { target.classList.add('hidden') });\n }\n this.matchPercentageTarget.innerHTML = this.matchPercentage() + '%';\n this.matchAmountLowTarget.innerHTML = this.matchAmountLow().toFixed(2);\n this.matchAmountTopTarget.innerHTML = this.matchAmountTop().toFixed(2);\n this.totalAmountTarget.innerHTML = this.totalAmount().toFixed(2);\n this.lowPercentageTarget.innerHTML = this.lowPercentage().toFixed(0);\n this.highPercentageTarget.innerHTML = this.highPercentage().toFixed(0);\n\n this.charityNameLowTargets.forEach((target) => { target.innerHTML = this.lowCharityName(); });\n this.charityNameHighTargets.forEach((target) => { target.innerHTML = this.highCharityName(); });\n this.highAdonationAmountTarget.innerHTML = this.highAdonationAmount().toFixed(0);\n\n if(original_matching != this.matchPercentageTarget.innerHTML) {\n this.matchPercentageTarget.classList.add('animate__animated', 'animate__tada');\n\n this.matchPercentageTarget.addEventListener('animationend', () => {\n this.matchPercentageTarget.classList.remove('animate__animated', 'animate__tada');\n });\n }\n }\n\n validateCode() {\n if(this.validateCodeAjax){\n this.validateCodeAjax.abort();\n this.validateCodeAjax = null;\n }\n this.validateCodeAjax = this.getAjaxValidateCode(\n this.element.dataset.validateCodePath + '?code=' + this.referralCodeTarget.value\n )\n }\n\n getAjaxValidateCode(url) {\n let xhr = window.XMLHttpRequest ? new XMLHttpRequest() : new ActiveXObject('Microsoft.XMLHTTP');\n xhr.open('GET', url);\n xhr.onreadystatechange = () => {\n if (xhr.readyState > 3) {\n if (xhr.status == 200) {\n let result = JSON.parse(xhr.responseText);\n this.config = result.config;\n this.normal = result.normal;\n this.referralCodeStatusTarget.innerHTML = result.status;\n this.update()\n }\n }\n }\n xhr.setRequestHeader('X-Requested-With', 'XMLHttpRequest');\n xhr.send();\n return xhr;\n }\n\n ai_chat(event) {\n event.preventDefault();\n const chat = document.getElementById('ai_chat');\n const chatForm = document.getElementById('ai_chat_form');\n chat.classList.remove('hidden');\n\n document.getElementById('ai_chat_top_charity_name').value = this.highCharityName();\n document.getElementById('ai_chat_favorite_charity_name').value = this.lowCharityName();\n document.getElementById('ai_chat_split_ratio').value = this.splitRatio();\n document.getElementById('ai_chat_amount').value = this.donationAmount();\n\n chatForm.requestSubmit()\n chat.scrollIntoView({ behavior: 'smooth', block: 'start' });\n }\n}\n", "import { Controller } from \"@hotwired/stimulus\"\n\n// Configuration factory for slider settings\nconst createSliderConfig = (maxValue, includePips = false) => {\n const baseConfig = {\n range: {\n 'min': 0,\n 'max': maxValue\n },\n start: 0.1,\n step: 0.1,\n connect: [true, false],\n orientation: 'vertical',\n direction: 'rtl',\n };\n\n if (!includePips) return baseConfig;\n\n return {\n ...baseConfig,\n pips: {\n mode: 'values',\n values: [0, maxValue],\n density: 99,\n }\n };\n};\n\nexport default class extends Controller {\n static targets = ['sliderEffective', 'sliderStandard', 'input'];\n\n async connect() {\n try {\n // Dynamically import noUiSlider\n const { default: noUiSlider } = await import(\n 'nouislider'\n );\n\n this.values = JSON.parse(this.element.dataset.values);\n const maxValue = parseFloat(this.values.slice(-1)[0]);\n\n // Initialize sliders\n this.sliderEffective = noUiSlider.create(\n this.sliderEffectiveTarget,\n createSliderConfig(maxValue)\n );\n\n this.sliderStandard = noUiSlider.create(\n this.sliderStandardTarget,\n createSliderConfig(maxValue, true)\n );\n\n // Set initial values and bind events\n this.initializeSliders();\n } catch (error) {\n console.error('Failed to initialize sliders:', error);\n }\n }\n\n initializeSliders() {\n // Set initial value\n this.sliderEffective.set(this.inputTarget.value);\n\n // Bind events\n this.sliderStandard.on('change', () => this.change());\n this.sliderEffective.on('change', () => this.change());\n this.sliderEffective.on('update', () => this.sliderStandardUpdate());\n this.sliderStandard.on('update', () => this.sliderEffectiveUpdate());\n }\n\n sliderStandardUpdate() {\n const value = 1 - this.sliderEffective.get();\n const formattedValue = value.toFixed(2);\n\n if (this.sliderStandard.get() !== formattedValue) {\n this.sliderStandard.set(value);\n this.changeValue();\n }\n }\n\n sliderEffectiveUpdate() {\n const value = 1 - this.sliderStandard.get();\n const formattedValue = value.toFixed(2);\n\n if (this.sliderEffective.get() !== formattedValue) {\n this.sliderEffective.set(value);\n this.changeValue();\n }\n }\n\n changeValue() {\n if (this.sliderEffective.get() < 0.1) return;\n\n this.inputTarget.value = this.sliderEffective.get();\n this.inputTarget.dispatchEvent(new Event('change', { bubbles: true }));\n }\n\n change() {\n if (this.sliderEffective.get() < 0.1) {\n this.sliderEffective.set(0.1);\n }\n }\n\n disconnect() {\n // Clean up sliders\n ['sliderEffective', 'sliderStandard'].forEach(slider => {\n if (this[slider]) {\n this[slider].destroy();\n this[slider] = null;\n }\n });\n }\n}\n", "import { Controller } from \"@hotwired/stimulus\"\n\nexport default class extends Controller {\n static targets = [ 'submenu', 'button' ]\n\n toggle(event){\n if(this.submenuTarget.getAttribute('aria-hidden') === 'true') {\n this.show(event)\n } else {\n this.hide(event)\n }\n }\n\n show(event){\n this.submenuTarget.classList.remove('lg:hidden')\n this.submenuTarget.classList.add('lg:block')\n this.submenuTarget.setAttribute('aria-hidden', 'false')\n\n this.buttonTarget.classList.add('border-green-500')\n this.buttonTarget.classList.remove('border-white')\n }\n\n hide(event){\n this.submenuTarget.classList.add('lg:hidden')\n this.submenuTarget.classList.remove('lg:block')\n this.submenuTarget.setAttribute('aria-hidden', 'true')\n\n this.buttonTarget.classList.add('border-white')\n this.buttonTarget.classList.remove('border-green-500')\n }\n}\n", "import { Controller } from \"@hotwired/stimulus\"\n\nexport default class extends Controller {\n\n connect(){\n document.onkeydown = (event) => {\n event = event || window.event\n var isEscape = false\n if (\"key\" in event) {\n isEscape = (event.key === \"Escape\" || event.key === \"Esc\")\n } else {\n isEscape = (event.keyCode === 27)\n }\n if (isEscape && document.body.classList.contains('modal-active')) {\n this.hide()\n }\n };\n\n document\n .querySelectorAll(`.modal.in`)\n .forEach((target) => {\n target.querySelector('.modal-close').addEventListener('click', this.hide)\n target.querySelector('.modal-overlay').addEventListener('click', this.hide)\n })\n }\n\n show(event){\n event.preventDefault()\n var target = event.currentTarget.dataset.modalTarget;\n document\n .querySelectorAll(`[data-modal-name=\"${target}\"]`)\n .forEach((target) => {\n target.classList.add('in')\n target.querySelector('.modal-close').addEventListener('click', this.hide)\n target.querySelector('.modal-overlay').addEventListener('click', this.hide)\n })\n document.querySelector('body').classList.add('modal-active');\n\n\n if (typeof ga === \"function\") {\n ga('send', 'event', 'Modal', 'open', target);\n }\n }\n\n hide(){\n document.querySelectorAll('.modal.in').forEach((target) => {\n target.classList.remove('in')\n })\n document.querySelector('body').classList.remove('modal-active')\n }\n}\n", "import { Controller } from \"@hotwired/stimulus\"\n\nexport default class extends Controller {\n static targets = ['errors', 'success']\n\n onSuccess(event) {\n let [data, status, xhr] = event.detail;\n this.successTarget.innerHTML = xhr.response;\n this.successTarget.classList.remove('hidden');\n this.errorsTarget.innerText = \"\";\n this.element.querySelector('form').reset();\n }\n\n onError(event) {\n let [data, status, xhr] = event.detail;\n let errors = JSON.parse(xhr.response);\n this.successTarget.innerText = '';\n this.successTarget.classList.add('hidden');\n\n Object.entries(errors).forEach(error => {\n const [key, value] = error;\n let element = this.element.querySelector(`.invalid-feedback[data-element=\"${key}\"]`)\n if(element)\n element.innerHTML = value.join(', ')\n })\n }\n}\n", "import { Controller } from \"@hotwired/stimulus\"\n\n// Separate the slider configuration into its own function for better organization\nconst getSliderConfig = (element) => ({\n items: 1,\n slideBy: 'page',\n autoplay: false,\n controls: true,\n controlsPosition: 'bottom',\n mouseDrag: true,\n navPosition: 'bottom',\n responsive: {\n 640: { // sm\n items: element.dataset.sm || 1\n },\n 768: { // md\n items: element.dataset.md || 2\n },\n 1024: { // lg\n items: element.dataset.lg || 2\n },\n 1280: { // xl\n items: element.dataset.xl || 3\n }\n }\n});\n\nexport default class extends Controller {\n static targets = ['slider'];\n\n async connect() {\n try {\n // Dynamically import tiny-slider using webpack chunk\n const { tns } = await import(\n 'tiny-slider/src/tiny-slider'\n );\n\n // Initialize slider with configuration\n this.slider = tns({\n container: this.sliderTarget,\n ...getSliderConfig(this.element)\n });\n } catch (error) {\n console.error('Failed to initialize slider:', error);\n }\n }\n\n disconnect() {\n if (this.slider) {\n this.slider.destroy();\n }\n }\n}\n", "import { Controller } from \"@hotwired/stimulus\"\n\nexport default class extends Controller {\n\n connect(){\n this.hiddenClass = this.element.dataset.hiddenClass || 'hidden';\n }\n\n show(event){\n this.execute(this.targetsByEvent(event), 'show')\n }\n\n hide(event){\n this.execute(this.targetsByEvent(event), 'hide')\n }\n\n targetValue(event){\n return event.currentTarget.dataset.toggleValue || 'true';\n }\n\n targetsByEvent(event){\n let names = event.currentTarget.dataset.toggleTarget.split(\",\");\n let targets = []\n names.forEach((target) =>\n targets.push(document.querySelector(`[data-toggle-name=\"${target}\"]`))\n )\n return targets;\n }\n\n toggleByValue(event) {\n if(event.currentTarget.value === this.targetValue(event)){\n this.show(event);\n } else {\n this.hide(event);\n }\n }\n\n toggleByChecked(event) {\n if(event.currentTarget.checked){\n this.show(event);\n } else {\n this.hide(event);\n }\n }\n\n toggleText(event) {\n let targets = this.targetsByEvent(event);\n let eventTarget = event.currentTarget;\n targets.forEach((target) => {\n if(target.classList.contains(this.hiddenClass)) {\n if(eventTarget.dataset.toggleTextHidden)\n eventTarget.innerHTML = eventTarget.dataset.toggleTextHidden;\n } else {\n if(eventTarget.dataset.toggleTextShown)\n eventTarget.innerHTML = eventTarget.dataset.toggleTextShown;\n }\n })\n }\n\n toggleByClick(event) {\n event.preventDefault();\n this.toggle(event);\n this.toggleText(event);\n }\n\n toggle(event) {\n this.execute(this.targetsByEvent(event))\n }\n\n execute(targets, action){\n targets.forEach((target) => {\n if(action == 'show'){\n target.classList.remove(this.hiddenClass)\n } else if (action == 'hide'){\n target.classList.add(this.hiddenClass)\n } else {\n target.classList.toggle(this.hiddenClass)\n }\n target.querySelectorAll('input, select, textarea').forEach((input) => {\n input.disabled = target.classList.contains(this.hiddenClass)\n });\n });\n }\n}\n", "import { Controller } from \"@hotwired/stimulus\"\n\nexport default class extends Controller {\n connect() {\n this.element.querySelectorAll('a').forEach(function(link) {\n if (link.host !== window.location.host) {\n link.target = \"_blank\"\n }\n })\n }\n}\n", "import { Controller } from \"@hotwired/stimulus\"\n\nexport default class extends Controller {\n static targets = [\"content\"]\n\n submitWithContent(event) {\n event.preventDefault()\n console.log(this.contentTarget)\n const clickedButton = event.currentTarget\n const content = clickedButton.dataset.content\n this.contentTarget.value = content\n this.element.requestSubmit()\n }\n}\n", "import { Controller } from \"@hotwired/stimulus\"\n\nexport default class extends Controller {\n static values = {\n target: String\n }\n\n connect() {\n this.observer = new MutationObserver((mutations) => {\n const shouldScroll = mutations.some(mutation => {\n return mutation.type === 'childList' || mutation.type === 'characterData';\n });\n\n if (shouldScroll) {\n const form = document.querySelector(this.targetValue);\n if (form) {\n form.scrollIntoView({\n block: 'end'\n });\n }\n }\n });\n\n this.observer.observe(this.element, {\n childList: true,\n subtree: true,\n characterData: true\n });\n }\n\n disconnect() {\n if (this.observer) {\n this.observer.disconnect();\n }\n }\n}\n", "// app/javascript/controllers/donation_tracking_controller.js\nimport { Controller } from \"@hotwired/stimulus\"\n\nexport default class extends Controller {\n static targets = [\n \"favoriteCharity\",\n \"amount\",\n \"split\",\n \"inviteCode\"\n ]\n\n initialize() {\n this.dataLayer = window.dataLayer = window.dataLayer || []\n\n // Initialize debounced methods\n this.debouncedAmountTracking = this.debounce(this.trackAmount.bind(this), 1000)\n this.debouncedSplitTracking = this.debounce(this.trackSplit.bind(this), 1000)\n this.debouncedInviteCodeTracking = this.debounce(this.trackInviteCode.bind(this), 1000)\n this.debouncedCharitySelectedTracking = this.debounce(this.trackCharitySelected.bind(this), 1000)\n }\n\n // Vanilla JS debounce function\n debounce(func, wait) {\n let timeout\n return (...args) => {\n clearTimeout(timeout)\n timeout = setTimeout(() => func.apply(this, args), wait)\n }\n }\n\n highCharityName() {\n var e = document.querySelector('input[name=\"donation[top_charity_id]\"]:checked') ||\n document.getElementById('donation_top_charity_name')\n if (e) {\n return e.dataset['name'];\n } else {\n return null;\n }\n }\n\n // Step 1: Track charity selection\n charitySelected(event) {\n const charityType = event.target.dataset.charityType\n if(charityType === 'effective' && !event.target.checked) return\n this.debouncedCharitySelectedTracking(charityType, event.target)\n }\n\n trackCharitySelected(charityType, target) {\n const item = charityType === 'favorite' ? this.favoriteItem() : this.effectiveItem();\n\n this.dataLayer.push({\n event: 'donation_charity_selected',\n donation_item_type: charityType,\n donation_items: [item]\n })\n }\n\n // Step 2: Track donation amount\n amountEntered(event) {\n this.debouncedAmountTracking(event.target.value)\n }\n\n // Separate tracking method for amounts\n trackAmount(value) {\n const amount = parseFloat(value)\n\n if (!isNaN(amount)) {\n this.dataLayer.push({\n event: 'donation_amount_set',\n donation_value: amount,\n donation_currency: 'USD'\n })\n }\n }\n\n // Step 3: Track split configuration\n splitConfigured(event) {\n this.debouncedSplitTracking(event.target.value)\n }\n\n // Separate tracking method for split\n trackSplit(split) {\n if(!this.amountTarget.value) return\n\n this.dataLayer.push({\n event: 'donation_split_set',\n spit_ratio: this.splitTarget.value,\n donation_items: this.items()\n })\n }\n\n // Step 4: Track invite code\n inviteCodeEntered(event) {\n this.debouncedInviteCodeTracking(event.target.value)\n }\n\n trackInviteCode(code){\n this.dataLayer.push({\n event: 'donation_invite_code_entered',\n invite_code: code\n })\n }\n\n favoriteItem() {\n const split = this.splitTarget.value || 0.5\n const totalAmount = parseFloat(this.amountTarget.value) || 0\n const favoritePercentage = parseInt((1-split) * 100)\n\n if (this.favoriteCharityTarget.value) {\n return {\n item_name: this.favoriteCharityTarget.value,\n price: totalAmount * favoritePercentage / 100,\n quantity: 1,\n item_category: 'Charity',\n item_category2: 'Favorite'\n }\n }\n }\n\n effectiveItem() {\n const split = this.splitTarget.value || 0.5\n const totalAmount = parseFloat(this.amountTarget.value) || 0\n const effectivePercentage = parseInt(split * 100)\n\n if (this.favoriteCharityTarget.value) {\n return {\n item_name: this.highCharityName(),\n price: totalAmount * effectivePercentage / 100,\n quantity: 1,\n item_category: 'Charity',\n item_category2: 'Effective'\n }\n }\n }\n\n items() {\n return [this.favoriteItem(), this.effectiveItem()].filter(n => n);\n }\n\n // Step 5: Track checkout initiation\n beginCheckout(event) {\n this.dataLayer.push({\n event: 'begin_checkout',\n donation_currency: 'USD',\n donation_value: parseFloat(this.amountTarget.value) || 0,\n invite_code: this.inviteCodeTarget.value || '',\n spit_ratio: this.splitTarget.value,\n donation_items: this.items()\n })\n }\n\n // Step 6: Track payment initiation\n paymentInitiated(event) {\n this.dataLayer.push({\n event: 'add_payment_info',\n donation_currency: 'USD',\n donation_value: parseFloat(this.amountTarget.value) || 0,\n invite_code: this.inviteCodeTarget.value || '',\n spit_ratio: this.splitTarget.value,\n donation_items: this.items()\n })\n }\n\n // Error tracking\n trackError(errorType, errorMessage, step) {\n this.dataLayer.push({\n event: 'donation_error',\n error_type: errorType,\n error_message: errorMessage,\n donation_step: step\n })\n }\n}\n", "// This file is auto-generated by ./bin/rails stimulus:manifest:update\n// Run that command whenever you add a new controller\n\nimport { application } from \"./application\"\n\nimport CharityItemController from \"./charity_item_controller.js\"\napplication.register(\"charity-item\", CharityItemController)\n\nimport CharitySearchController from \"./charity_search_controller.js\"\napplication.register(\"charity-search\", CharitySearchController)\n\nimport CopyController from \"./copy_controller.js\"\napplication.register(\"copy\", CopyController)\n\nimport DonationController from \"./donation_controller.js\"\napplication.register(\"donation\", DonationController)\n\nimport DonationSliderController from \"./donation_slider_controller.js\"\napplication.register(\"donation-slider\", DonationSliderController)\n\nimport DropdownMenuController from \"./dropdown_menu_controller.js\"\napplication.register(\"dropdown-menu\", DropdownMenuController)\n\nimport ModalController from \"./modal_controller.js\"\napplication.register(\"modal\", ModalController)\n\nimport RemoteFormController from \"./remote_form_controller.js\"\napplication.register(\"remote-form\", RemoteFormController)\n\nimport SliderController from \"./slider_controller.js\"\napplication.register(\"slider\", SliderController)\n\nimport ToggleController from \"./toggle_controller.js\"\napplication.register(\"toggle\", ToggleController)\n\nimport TooltipController from \"./tooltip_controller.js\"\napplication.register(\"tooltip\", TooltipController)\n\nimport NewTabController from \"./new_tab_controller.js\"\napplication.register(\"new-tab\", NewTabController)\n\nimport FormOverrideController from \"./form_override.js\"\napplication.register(\"form-override\", FormOverrideController)\n\nimport ScrollOnChangeController from \"./scroll_on_change_controller.js\"\napplication.register(\"scroll-on-change\", ScrollOnChangeController)\n\nimport DonationTrackingController from \"./donation_tracking_controller.js\"\napplication.register(\"donation-tracking\", DonationTrackingController)\n", "// This file is automatically compiled by Webpack, along with any other files\n// present in this directory. You're encouraged to place your actual application logic in\n// a relevant structure within app/javascript and only use these pack files to reference\n// that code so it'll be compiled.\n\nimport Rails from \"@rails/ujs\"\nRails.start();\nimport \"@hotwired/turbo-rails\"\n\nconst loadYoutubeEmbed = async () => {\n try {\n await import(\n 'lite-youtube-embed/src/lite-yt-embed.js'\n );\n } catch (error) {\n console.error('Failed to load YouTube embed:', error);\n }\n};\nloadYoutubeEmbed();\n// Uncomment to copy all static images under ../images to the output folder and reference\n// them with the image_pack_tag helper in views (e.g <%= image_pack_tag 'rails.png' %>)\n// or the `imagePath` JavaScript helper below.\n//\n// const images = require.context('../images', true)\n// const imagePath = (name) => images(name, true)\n\nimport \"./turbo_actions\"\n\ndocument.addEventListener(\"turbo:load\", function() {\n var header = document.getElementById(\"header\");\n\n document.addEventListener('scroll', function() {\n /*Apply classes for slide in bar*/\n if(window.scrollY < 10){\n header.classList.add(\"header-top\");\n header.classList.remove(\"header-scroll\");\n } else {\n header.classList.add(\"header-scroll\");\n header.classList.remove(\"header-top\");\n }\n });\n\n var anchorLinks = document.querySelectorAll(\"a[href^='#']\");\n anchorLinks.forEach((anchorLink) => {\n anchorLink.addEventListener('click', function(e) {\n e.stopPropagation();\n e.preventDefault();\n if(anchorLink.getAttribute('href') != '#'){\n document.querySelector(anchorLink.getAttribute('href'))?.scrollIntoView({ behavior: 'smooth' });\n }\n });\n })\n\n if(window.location.hash) {\n var hash = window.location.hash;\n var element = document.querySelector(hash);\n if(element){\n window.scroll({top: 0, left: 0})\n element.scrollIntoView({ behavior: 'smooth' });\n }\n }\n\n var scrollTop = document.getElementById(\"scrollTop\");\n scrollTop.addEventListener('click', function(e) {\n e.stopPropagation();\n e.preventDefault();\n window.scroll({ top: 0, left: 0, behavior: 'smooth' });\n });\n\n /*Toggle dropdown list*/\n /*https://gist.github.com/slavapas/593e8e50cf4cc16ac972afcbad4f70c8*/\n\n var navMenuDiv = document.getElementById(\"navContent\");\n var navMenu = document.getElementById(\"navToggle\");\n\n document.onclick = check;\n function check(e){\n var target = (e && e.target) || (event && event.srcElement);\n\n //Nav Menu\n if (!checkParent(target, navMenuDiv)) {\n // click NOT on the menu\n if (checkParent(target, navMenu)) {\n // click on the link\n if (navMenuDiv.classList.contains(\"hidden\")) {\n navMenuDiv.classList.remove(\"hidden\");\n } else {navMenuDiv.classList.add(\"hidden\");}\n } else {\n // click both outside link and outside menu, hide menu\n navMenuDiv.classList.add(\"hidden\");\n }\n }\n\n }\n function checkParent(t, elm) {\n while(t.parentNode) {\n if( t == elm ) {return true;}\n t = t.parentNode;\n }\n return false;\n }\n\n\n const SELECTOR = '.noUi-handle, #inviteBox';\n const ANIMATE_CLASS_NAME = 'animate__shakeY';\n\n const animate = element => (\n element.classList.add('animate__animated', ANIMATE_CLASS_NAME)\n );\n\n const isAnimated = element => (\n element.classList.contains('animate__animated', ANIMATE_CLASS_NAME)\n );\n\n const intersectionObserver = new IntersectionObserver((entries, observer) => {\n entries.forEach((entry) => {\n // when element's is in viewport,\n // animate it!\n if (entry.intersectionRatio > 0) {\n animate(entry.target);\n // remove observer after animation\n observer.unobserve(entry.target);\n }\n });\n });\n\n setTimeout(function () {\n // get only these elements,\n // which are not animated yet\n const elements = [].filter.call(\n document.querySelectorAll(SELECTOR),\n element => !isAnimated(element, ANIMATE_CLASS_NAME),\n );\n\n // start observing your elements\n elements.forEach((element) => intersectionObserver.observe(element));\n }, 100)\n\n});\n\nimport \"./controllers\"\n"], "mappings": "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", "names": ["StreamActions", "target", "charity_item_controller_default", "Controller", "element", "_", "__publicField", "charity_search_controller_default", "Controller", "event", "Mark", "error", "search", "_", "current", "next", "previous", "url", "success", "xhr", "item", "img", "data", "json", "element", "name", "id", "ein", "wrapper", "fn", "delay", "timer", "context", "args", "__publicField", "copy_controller_default", "Controller", "__publicField", "donation_controller_default", "Controller", "ratio", "e", "target", "original_matching", "url", "xhr", "result", "event", "chat", "chatForm", "__publicField", "createSliderConfig", "maxValue", "includePips", "baseConfig", "donation_slider_controller_default", "Controller", "noUiSlider", "error", "value", "formattedValue", "slider", "__publicField", "dropdown_menu_controller_default", "Controller", "event", "__publicField", "modal_controller_default", "Controller", "event", "isEscape", "target", "remote_form_controller_default", "Controller", "event", "data", "status", "xhr", "errors", "error", "key", "value", "element", "__publicField", "getSliderConfig", "element", "slider_controller_default", "Controller", "tns", "error", "__publicField", "toggle_controller_default", "Controller", "event", "names", "targets", "target", "eventTarget", "action", "input", "new_tab_controller_default", "Controller", "link", "form_override_default", "Controller", "event", "content", "__publicField", "scroll_on_change_controller_default", "Controller", "mutations", "mutation", "form", "__publicField", "donation_tracking_controller_default", "Controller", "func", "wait", "timeout", "args", "e", "event", "charityType", "target", "item", "value", "amount", "split", "code", "totalAmount", "favoritePercentage", "effectivePercentage", "n", "errorType", "errorMessage", "step", "__publicField", "application", "charity_item_controller_default", "charity_search_controller_default", "copy_controller_default", "donation_controller_default", "donation_slider_controller_default", "dropdown_menu_controller_default", "modal_controller_default", "remote_form_controller_default", "slider_controller_default", "toggle_controller_default", "tooltip_controller_default", "new_tab_controller_default", "form_override_default", "scroll_on_change_controller_default", "donation_tracking_controller_default", "Rails", "loadYoutubeEmbed", "error", "header", "anchorLinks", "anchorLink", "e", "hash", "element", "scrollTop", "navMenuDiv", "navMenu", "check", "target", "checkParent", "t", "elm", "SELECTOR", "ANIMATE_CLASS_NAME", "animate", "isAnimated", "intersectionObserver", "entries", "observer", "entry"] }