{"version":3,"sources":["webpack://adkbankinfo.com/./themes/app/src/index.js","webpack://adkbankinfo.com/./themes/app/src/scripts/common/ajax.js","webpack://adkbankinfo.com/./themes/app/src/scripts/components/animation.js","webpack://adkbankinfo.com/./themes/app/src/scripts/common/validation.js","webpack://adkbankinfo.com/./themes/app/src/scripts/common/scrollTo.js","webpack://adkbankinfo.com/./themes/app/src/scripts/components/form.js","webpack://adkbankinfo.com/./themes/app/src/scripts/common/requestTimeout.js","webpack://adkbankinfo.com/./themes/app/src/scripts/common/slide.js","webpack://adkbankinfo.com/./themes/app/src/scripts/components/slideToggle.js","webpack://adkbankinfo.com/.*(common)).*\\.js$/"],"names":["document","addEventListener","r","require","keys","reduce","modules","script","module","default","push","map","can","run","documentElement","classList","remove","wretch","defaults","headers","fn","init","setupScrollReveals","ScrollReveal","reveal","distance","origin","interval","opacity","afterReveal","el","add","validator","_","group","querySelectorAll","length","findFieldWrapper","$el","closest","handleBlur","e","$fieldWrapper","target","$existingErrorMessage","querySelector","contains","handleValidation","$form","rules","forEach","$field","offsetHeight","getAttribute","fieldName","dataset","name","presence","message","type","email","readonly","format","pattern","$radio","$checkbox","checkboxGroup","buildRules","result","validate","undefined","messages","Object","entries","insertAdjacentHTML","shouldScroll","formScroll","$firstError","$target","additionalOffset","offset","siteHeader","getPageOffset","Promise","resolve","jump","duration","callback","scrollTo","on","capture","handleLengthLimit","handleAjax","handleAllGroup","setupSpecialFields","$input","maxLength","$label","$counter","createElement","$count","textContent","value","appendChild","$labelHolder","cloneNode","replaceWith","isAll","allEl","checked","x","preventDefault","$formMessages","$submitButton","autoHideMessage","toggleSubmit","ajax","url","action","body","FormData","post","json","res","success","reset","hideOnSubmit","showFormMessages","catch","finally","disabled","toggle","$holder","autoHide","style","display","innerHTML","setTimeout","delay","start","Date","getTime","handle","loop","call","window","requestAnimationFrame","slideToggle","getComputedStyle","element","removeProperty","height","overflow","paddingTop","paddingBottom","marginTop","marginBottom","transitionProperty","transitionDuration","requestTimeout","slideDown","slideUp","handleToggle","keyCode","trigger","getElementById","setAttribute","webpackContext","req","id","webpackContextResolve","__webpack_require__","o","Error","code","exports"],"mappings":"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","file":"app.js","sourcesContent":["import './styles/index.css'\n\n// Thirdparty\nimport 'what-input'\n\n/*\n * Script loader\n *\n * Imports and runs all scripts in the `./scripts` directory\n * Scripts must have a default export with `can` and `run` functions\n *\n * export default {\n * can: () => boolean,\n * run: function to run if `can` is true\n * }\n */\ndocument.addEventListener('DOMContentLoaded', () => {\n ;((r) => {\n r.keys()\n .reduce((modules, script) => {\n const module = r(script).default\n if (module) {\n modules.push(module)\n }\n return modules\n }, [])\n .map((module) => (module.can === true || module.can()) && module.run())\n })(require.context('scripts', true, /^(?!.*(common)).*\\.js$/))\n\n document.documentElement.classList.remove('_preload')\n})\n","import wretch from 'wretch'\n\nexport default wretch().defaults({\n headers: { 'X-Requested-With': 'XMLHttpRequest' },\n})\n","import ScrollReveal from 'scrollreveal'\n\nconst fn = {\n init: () => {\n fn.setupScrollReveals()\n },\n\n setupScrollReveals: () => {\n ScrollReveal().reveal('[data-sr-fade-up]', {\n distance: '125%',\n origin: 'bottom',\n interval: 50,\n })\n\n ScrollReveal().reveal('[data-sr-touch]', {\n opacity: 1,\n afterReveal: (el) => el.classList.add('sr-touched'),\n })\n\n ScrollReveal().reveal('[data-sr-fade-left]', {\n distance: '125%',\n origin: 'right',\n interval: 50,\n })\n\n ScrollReveal().reveal('[data-sr-fade-right]', {\n distance: '125%',\n origin: 'left',\n interval: 50,\n })\n },\n}\n\nexport default {\n can: () => true,\n run: fn.init,\n}\n","import * as validator from 'validate.js'\nimport scrollTo from '../common/scrollTo'\n\nvalidator.validators.checkboxGroup = function (_, group) {\n if (group) {\n const checked = group.querySelectorAll('input[type=checkbox]:checked')\n\n if (checked.length) {\n return null\n }\n }\n\n return '^Please select one'\n}\n\nconst findFieldWrapper = ($el) => {\n if ($el) {\n if ($el.closest('.form-field-wrapper')) {\n return $el.closest('.form-field-wrapper')\n }\n\n if ($el.closest('.middleColumn')) {\n return $el.closest('.middleColumn')\n }\n\n if ($el.closest('.field')) {\n return $el.closest('.field')\n }\n }\n}\n\nexport const handleBlur = (e) => {\n const $fieldWrapper = findFieldWrapper(e.target)\n\n if ($fieldWrapper) {\n $fieldWrapper.classList.remove('has-error')\n\n const $existingErrorMessage = $fieldWrapper.querySelector('.form-field-message')\n\n if ($existingErrorMessage) {\n $existingErrorMessage.remove()\n }\n }\n\n if (e.target.classList.contains('has-error')) {\n e.target.classList.remove('has-error')\n }\n}\n\nexport const buildRules = ($form) => {\n const rules = {}\n\n $form\n .querySelectorAll('[required], input.required-if, .js-dropdown.required-if select, .optionset.required-if input')\n .forEach(($field) => {\n // Ignore hidden fields\n if (\n (findFieldWrapper($field) && findFieldWrapper($field).offsetHeight === 0) ||\n $field.getAttribute('readonly')\n ) {\n return\n }\n\n const fieldName = $field.dataset.name ? $field.dataset.name : $field.name\n\n rules[fieldName] = {\n presence: {\n message: '^Required',\n },\n }\n\n if ($field.type === 'email') {\n rules[$field.name].email = true\n }\n })\n\n $form.querySelectorAll('[pattern]').forEach(($field) => {\n // Ignore hidden fields\n if (findFieldWrapper($field).offsetHeight === 0 || $field.readonly) {\n return\n }\n\n rules[$field.name] = {\n format: {\n pattern: $field.getAttribute('pattern'),\n message: '^Required',\n },\n }\n })\n\n $form.querySelectorAll('[aria-required]').forEach(($field) => {\n // Ignore hidden fields\n if ((findFieldWrapper($field) && findFieldWrapper($field).offsetHeight === 0) || $field.readonly) {\n return\n }\n\n if ($field.classList.contains('optionset')) {\n const $radio = $field.querySelector('input[type=radio]')\n const $checkbox = $field.querySelector('input[type=checkbox]')\n\n if ($radio) {\n rules[$radio.name] = {\n presence: {\n message: '^Required',\n },\n }\n }\n\n if ($checkbox) {\n rules[$checkbox.name] = {\n checkboxGroup: $checkbox.closest('.optionset'),\n }\n }\n }\n })\n\n return rules\n}\n\nexport const handleValidation = ($form) => {\n const rules = buildRules($form)\n const result = validate($form, rules)\n\n if (result !== undefined) {\n for (const [name, messages] of Object.entries(result)) {\n const $field = $form.querySelector(`[name=\"${name}\"]`)\n const $fieldWrapper = findFieldWrapper($field)\n\n // Place error message\n if ($fieldWrapper) {\n const $existingErrorMessage = $fieldWrapper.querySelector('.form-field-message')\n\n if ($existingErrorMessage) {\n $existingErrorMessage.remove()\n }\n\n const message = `\n
\n `\n $fieldWrapper.insertAdjacentHTML('beforeend', message)\n $fieldWrapper.classList.add('has-error')\n }\n\n $field.classList.add('has-error')\n }\n\n const shouldScroll = $form.dataset.formScroll !== undefined\n\n const $firstError = $form.querySelector('.field.has-error')\n\n if (shouldScroll && $firstError) {\n scrollTo($firstError, 150, () => {\n setTimeout(() => {\n $firstError.querySelector('input') && $firstError.querySelector('input').focus()\n }, 0)\n })\n }\n\n return false\n }\n\n return true\n}\n\nexport const validate = validator\n","import jump from 'jump.js'\n\nconst getPageOffset = () => {\n let offset = 0\n\n const siteHeader = document.querySelector('.site-header')\n\n if (siteHeader) {\n offset += siteHeader.offsetHeight\n }\n\n return offset\n}\n\nconst scrollTo = ($target, additionalOffset = 0) => {\n const pageOffset = getPageOffset() * -1\n let offset = pageOffset - additionalOffset\n\n return new Promise((resolve) => {\n jump($target, { duration: 500, offset, callback: resolve })\n })\n}\n\nexport default scrollTo\n","import { on } from 'delegated-events'\nimport { handleValidation, handleBlur } from '../common/validation'\n\nconst fn = {\n init: () => {\n on('blur', '.has-error', handleBlur, { capture: true })\n on('change', '.has-error', handleBlur, { capture: true })\n on('change', '.has-error blur', handleBlur, {\n capture: true,\n })\n on('keyup', 'textarea.has-length-limit', fn.handleLengthLimit, {\n capture: true,\n })\n on('submit', '[data-form-validate]:not(.multistepform)', (e) => handleValidation(e.target))\n on('submit', '[data-form-ajax]', fn.handleAjax)\n on('change', '.form-all-group input[type=\"checkbox\"]', fn.handleAllGroup)\n\n fn.setupSpecialFields()\n },\n\n setupSpecialFields: () => {\n document.querySelectorAll('form').forEach(($form) => {\n // Setup length limits\n $form.querySelectorAll('.form-field-wrapper.has-length-limit').forEach(($field) => {\n const $input = $field.querySelector('.has-length-limit')\n\n if ($input && $input.maxLength) {\n const $label = $field.querySelector('label')\n $label.classList.add('has-length-limit')\n\n const $counter = document.createElement('div')\n $counter.classList.add('length-limit-counter')\n\n const $count = document.createElement('span')\n $count.textContent = `(${$input.value.length}/${$input.maxLength})`\n\n $counter.appendChild($count)\n\n const $labelHolder = document.createElement('div')\n\n $labelHolder.classList.add('form-field-label')\n $labelHolder.appendChild($label.cloneNode(true))\n $labelHolder.appendChild($counter)\n\n $label.replaceWith($labelHolder)\n }\n })\n })\n },\n\n handleLengthLimit: (e) => {\n const $input = e.target.closest('.has-length-limit')\n const $field = $input.closest('.field.has-length-limit')\n\n if ($input && $field) {\n const $count = $field.querySelector('.length-limit-counter span')\n $count.textContent = `(${$input.value.length}/${$input.maxLength})`\n }\n },\n\n handleAllGroup: (e) => {\n const isAll = e.target.value === 'All'\n const group = e.target.closest('.form-all-group')\n\n if (group) {\n const allEl = group.querySelector('input[value=\"All\"]')\n\n if (allEl && isAll) {\n if (allEl.checked) {\n group.querySelectorAll('[type=\"checkbox\"]').forEach((x) => (x.checked = true))\n } else {\n group.querySelectorAll('[type=\"checkbox\"]').forEach((x) => (x.checked = false))\n }\n }\n\n if (allEl && !isAll) {\n allEl.checked = false\n }\n }\n },\n\n handleAjax: (e) => {\n e.preventDefault()\n\n const $form = e.target\n const isValid = handleValidation($form)\n\n if (isValid) {\n const $formMessages = $form.querySelector('.form-messages')\n const $submitButton = $form.querySelector('[type=submit]')\n let autoHideMessage = true\n fn.toggleSubmit($submitButton)\n\n ajax\n .url($form.action)\n .body(new FormData($form))\n .post()\n .json((res) => {\n if (res.success) {\n $form.reset()\n $form.querySelectorAll('select').forEach((x) => (x.value = null))\n $form.querySelectorAll('.file-input-placeholder').forEach((x) => x.classList.add('is-hidden'))\n $form.querySelectorAll('.toggle-fields').forEach((x) => x.classList.add('hidden'))\n $form.querySelectorAll('textarea.has-length-limit').forEach((el) => {\n fn.handleLengthLimit({ target: el })\n })\n\n if ($form.dataset.hideOnSubmit) {\n $form.querySelectorAll('.form-content').forEach((x) => x.classList.add('hidden'))\n autoHideMessage = false\n }\n }\n\n if (res.message) {\n fn.showFormMessages($formMessages, res.message, res.success, autoHideMessage)\n }\n })\n .catch(() => {\n fn.showFormMessages($formMessages, 'Sorry, there was a problem with your submission')\n })\n .finally(() => {\n fn.toggleSubmit($submitButton)\n })\n }\n },\n\n toggleSubmit: ($submitButton) => {\n $submitButton.disabled = !$submitButton.disabled\n $submitButton.classList.toggle('btn-loading')\n },\n\n showFormMessages: ($holder, message, success, autoHide) => {\n $holder.style.display = 'block'\n $holder.innerHTML = message\n\n if (success) {\n $holder.classList.remove('form-message-error')\n } else {\n $holder.classList.add('form-message-error')\n }\n\n if (autoHide) {\n setTimeout(() => {\n $holder.style.display = 'none'\n }, 5000)\n }\n },\n}\n\nexport default {\n can: () => true,\n run: fn.init,\n}\n","const requestTimeout = (fn, delay) => {\n const start = new Date().getTime()\n const handle = new Object()\n\n const loop = () => {\n const current = new Date().getTime()\n const delta = current - start\n\n delta >= delay ? fn.call() : (handle.value = window.requestAnimationFrame(loop))\n }\n\n handle.value = window.requestAnimationFrame(loop)\n\n return handle\n}\n\nexport default requestTimeout\n","import requestTimeout from './requestTimeout'\n\nexport const slideUp = (element, duration = 400) => {\n return new Promise(function (resolve) {\n element.style.height = element.offsetHeight + 'px'\n element.style.transitionProperty = `height, margin, padding`\n element.style.transitionDuration = duration + 'ms'\n element.offsetHeight\n element.style.overflow = 'hidden'\n element.style.height = 0\n element.style.paddingTop = 0\n element.style.paddingBottom = 0\n element.style.marginTop = 0\n element.style.marginBottom = 0\n\n requestTimeout(() => {\n element.style.display = 'none'\n element.style.removeProperty('height')\n element.style.removeProperty('padding-top')\n element.style.removeProperty('padding-bottom')\n element.style.removeProperty('margin-top')\n element.style.removeProperty('margin-bottom')\n element.style.removeProperty('overflow')\n element.style.removeProperty('transition-duration')\n element.style.removeProperty('transition-property')\n resolve(false)\n }, duration)\n })\n}\n\nexport const slideDown = (element, duration = 400) => {\n return new Promise(function (resolve) {\n element.style.removeProperty('display')\n let display = window.getComputedStyle(element).display\n\n if (display === 'none') display = 'block'\n\n element.style.display = display\n let height = element.offsetHeight\n element.style.overflow = 'hidden'\n element.style.height = 0\n element.style.paddingTop = 0\n element.style.paddingBottom = 0\n element.style.marginTop = 0\n element.style.marginBottom = 0\n element.offsetHeight\n element.style.transitionProperty = `height, margin, padding`\n element.style.transitionDuration = duration + 'ms'\n element.style.height = height + 'px'\n element.style.removeProperty('padding-top')\n element.style.removeProperty('padding-bottom')\n element.style.removeProperty('margin-top')\n element.style.removeProperty('margin-bottom')\n\n requestTimeout(() => {\n element.style.removeProperty('height')\n element.style.removeProperty('overflow')\n element.style.removeProperty('transition-duration')\n element.style.removeProperty('transition-property')\n resolve(false)\n }, duration)\n })\n}\n\nexport const slideToggle = (target, duration = 400) => {\n if (window.getComputedStyle(target).display === 'none') {\n return slideDown(target, duration)\n } else {\n return slideUp(target, duration)\n }\n}\n","import { on } from 'delegated-events'\nimport { slideToggle } from '../common/slide'\n\nconst fn = {\n init: () => {\n on('click', '[data-slide-toggle]', fn.handleToggle)\n on('keyup', '[data-slide-toggle]', fn.handleToggle)\n },\n\n handleToggle: (e) => {\n if (e.type === 'keyup' && e.keyCode !== 13) {\n return\n }\n\n const trigger = e.target.closest('[data-slide-toggle]')\n\n if (!trigger) {\n return\n }\n\n const target = document.getElementById(trigger.getAttribute('aria-controls'))\n\n if (!target) {\n return\n }\n\n if (trigger.getAttribute('aria-expanded') === 'false') {\n slideToggle(target)\n trigger.setAttribute('aria-expanded', 'true')\n } else {\n slideToggle(target)\n trigger.setAttribute('aria-expanded', 'false')\n }\n },\n}\n\nexport default {\n can: () => true,\n run: fn.init,\n}\n","var map = {\n\t\"./components/animation.js\": 587,\n\t\"./components/form.js\": 880,\n\t\"./components/slideToggle.js\": 517\n};\n\n\nfunction webpackContext(req) {\n\tvar id = webpackContextResolve(req);\n\treturn __webpack_require__(id);\n}\nfunction webpackContextResolve(req) {\n\tif(!__webpack_require__.o(map, req)) {\n\t\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\t\te.code = 'MODULE_NOT_FOUND';\n\t\tthrow e;\n\t}\n\treturn map[req];\n}\nwebpackContext.keys = function webpackContextKeys() {\n\treturn Object.keys(map);\n};\nwebpackContext.resolve = webpackContextResolve;\nmodule.exports = webpackContext;\nwebpackContext.id = 14;"],"sourceRoot":""}