{"version":3,"file":"components-userform.84d335b36c27ae91740d.js","mappings":"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","sources":["webpack://kelberman.org/./themes/app/src/components/userform.js","webpack://kelberman.org/./themes/app/src/scripts/common/scroll-to.js","webpack://kelberman.org/./themes/app/src/scripts/common/validation.js","webpack://kelberman.org/./node_modules/selector-set/selector-set.next.js","webpack://kelberman.org/./node_modules/delegated-events/dist/index.js"],"sourcesContent":["import { on } from 'delegated-events'\nimport { handleValidation } from '@common/validation'\n\nconst state = {\n stripe: null,\n paymentForms: {},\n}\n\nconst toggleSubmit = (submitButton) => {\n submitButton.disabled = !submitButton.disabled\n submitButton.classList.toggle('btn-loading')\n}\n\nconst handleSubmit = async (e) => {\n e.preventDefault()\n\n const form = e.target\n const hasPayment = form.id in state.paymentForms\n const isValid = handleValidation(form)\n const submitButton = form.querySelector('[type=submit]')\n toggleSubmit(submitButton)\n\n if (!isValid) {\n e.preventDefault()\n toggleSubmit(submitButton)\n return\n }\n\n if (hasPayment) {\n const card = state.paymentForms[form.id].card\n\n const result = await state.stripe.createToken(card)\n\n if (result.error) {\n const errorElement = form.querySelector('.card-errors')\n errorElement.textContent = result.error.message\n toggleSubmit(submitButton)\n } else {\n const hiddenInput = document.createElement('input')\n hiddenInput.setAttribute('type', 'hidden')\n hiddenInput.setAttribute('name', 'stripeToken')\n hiddenInput.setAttribute('value', result.token.id)\n form.appendChild(hiddenInput)\n\n form.submit()\n }\n }\n}\n\nconst calculateAmount = (form) => {\n let amount = 0\n\n form.querySelectorAll('.qty-field').forEach((el) => {\n const qty = parseInt(el.value)\n const cost = parseInt(el.dataset.cost)\n\n if (qty > 0) {\n amount += qty * cost\n }\n })\n\n return amount\n}\n\nconst handleQty = (e) => {\n const form = e.target.closest('form')\n const amountEl = form.querySelector('.payment-amount span')\n\n const amount = calculateAmount(form)\n\n const formatter = new Intl.NumberFormat('en-US', {\n style: 'currency',\n currency: 'USD',\n })\n\n const normalizedAmount = formatter.format(amount / 100)\n amountEl.textContent = normalizedAmount\n}\n\nconst setupPayment = async (form) => {\n const paymentField = form.querySelector('.userform-payment-field')\n state.stripe = window.Stripe(paymentField.dataset.stripePubKey)\n\n const style = {\n base: {\n fontSize: '16px',\n fontFamily: 'filson-soft, sans-serif',\n color: '#415364',\n fontSmoothing: 'antialiased',\n '::placeholder': {\n color: '#415364',\n },\n },\n invalid: {\n color: '#b9112a',\n },\n }\n\n const card = state.stripe.elements().create('card', { style })\n\n const cardElement = form.querySelector('.card-element')\n card.mount(cardElement)\n\n card.addEventListener('change', ({ error }) => {\n const displayError = form.querySelector('.card-errors')\n\n if (error) {\n displayError.textContent = error.message\n } else {\n displayError.textContent = ''\n }\n })\n\n state.paymentForms[form.id] = {\n card,\n }\n\n const qtyFields = form.querySelectorAll('.qty-field')\n\n if (qtyFields.length) {\n const { default: IMask } = await import('imask/esm/imask')\n await import('imask/esm/masked/number')\n\n qtyFields.forEach((field) => {\n IMask(field, {\n mask: Number,\n scale: 0,\n min: 0,\n max: 100,\n })\n })\n }\n}\n\nconst setupForm = (form) => {\n const paymentField = form.querySelector('.userform-payment-field')\n\n if (paymentField) {\n setupPayment(form)\n }\n}\n\ndocument.querySelectorAll('form.userform').forEach((form) => {\n setupForm(form)\n})\n\non('submit', '.styled-form.userform', handleSubmit)\non('blur', '.styled-form.userform .qty-field', handleQty, { capture: true })\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\n if (target.dataset.scrollOffset) {\n additionalOffset = parseInt(target.dataset.scrollOffset)\n }\n\n let offset = pageOffset - additionalOffset\n\n return new Promise((resolve) => {\n jump(target, { duration: 600, offset, callback: resolve })\n })\n}\n\nexport default scrollTo\n","import * as validator from 'validate.js'\nimport scrollTo from '@common/scroll-to'\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('.form-field')) {\n return el.closest('.form-field')\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, textarea.required-if, .js-dropdown.required-if select, .optionset.required-if input')\n .forEach((field) => {\n // Ignore hidden fields\n if ((findFieldWrapper(field) && findFieldWrapper(field).offsetHeight === 0) || field.getAttribute('readonly')) {\n return\n }\n\n const fieldName = field.dataset.name ? field.dataset.name : field.name\n\n rules[fieldName] = {\n presence: {\n allowEmpty: false,\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('[min]').forEach((field) => {\n // Ignore hidden fields\n if (findFieldWrapper(field).offsetHeight === 0 || field.readonly) {\n return\n }\n\n rules[field.name] = {\n length: {\n minimum: parseInt(field.min),\n },\n }\n })\n\n form.querySelectorAll('[data-equals]').forEach((field) => {\n // Ignore hidden fields\n if (findFieldWrapper(field).offsetHeight === 0 || field.readonly) {\n return\n }\n\n rules[field.name] = {\n equality: field.dataset.equals,\n }\n })\n\n form.querySelectorAll('[aria-required], [data-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 form.querySelectorAll('.requiredcheckboxset').forEach((field) => {\n // Ignore hidden fields\n if ((findFieldWrapper(field) && findFieldWrapper(field).offsetHeight === 0) || field.readonly) {\n return\n }\n\n const checkbox = field.querySelector('input[type=checkbox]')\n\n if (checkbox) {\n rules[checkbox.name] = {\n checkboxGroup: checkbox.closest('.requiredcheckboxset'),\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('.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","// Public: Create a new SelectorSet.\nexport default function SelectorSet() {\n // Construct new SelectorSet if called as a function.\n if (!(this instanceof SelectorSet)) {\n return new SelectorSet();\n }\n\n // Public: Number of selectors added to the set\n this.size = 0;\n\n // Internal: Incrementing ID counter\n this.uid = 0;\n\n // Internal: Array of String selectors in the set\n this.selectors = [];\n\n // Internal: Map of selector ids to objects\n this.selectorObjects = {};\n\n // Internal: All Object index String names mapping to Index objects.\n this.indexes = Object.create(this.indexes);\n\n // Internal: Used Object index String names mapping to Index objects.\n this.activeIndexes = [];\n}\n\n// Detect prefixed Element#matches function.\nvar docElem = window.document.documentElement;\nvar matches =\n docElem.matches ||\n docElem.webkitMatchesSelector ||\n docElem.mozMatchesSelector ||\n docElem.oMatchesSelector ||\n docElem.msMatchesSelector;\n\n// Public: Check if element matches selector.\n//\n// Maybe overridden with custom Element.matches function.\n//\n// el - An Element\n// selector - String CSS selector\n//\n// Returns true or false.\nSelectorSet.prototype.matchesSelector = function(el, selector) {\n return matches.call(el, selector);\n};\n\n// Public: Find all elements in the context that match the selector.\n//\n// Maybe overridden with custom querySelectorAll function.\n//\n// selectors - String CSS selectors.\n// context - Element context\n//\n// Returns non-live list of Elements.\nSelectorSet.prototype.querySelectorAll = function(selectors, context) {\n return context.querySelectorAll(selectors);\n};\n\n// Public: Array of indexes.\n//\n// name - Unique String name\n// selector - Function that takes a String selector and returns a String key\n// or undefined if it can't be used by the index.\n// element - Function that takes an Element and returns an Array of String\n// keys that point to indexed values.\n//\nSelectorSet.prototype.indexes = [];\n\n// Index by element id\nvar idRe = /^#((?:[\\w\\u00c0-\\uFFFF\\-]|\\\\.)+)/g;\nSelectorSet.prototype.indexes.push({\n name: 'ID',\n selector: function matchIdSelector(sel) {\n var m;\n if ((m = sel.match(idRe))) {\n return m[0].slice(1);\n }\n },\n element: function getElementId(el) {\n if (el.id) {\n return [el.id];\n }\n }\n});\n\n// Index by all of its class names\nvar classRe = /^\\.((?:[\\w\\u00c0-\\uFFFF\\-]|\\\\.)+)/g;\nSelectorSet.prototype.indexes.push({\n name: 'CLASS',\n selector: function matchClassSelector(sel) {\n var m;\n if ((m = sel.match(classRe))) {\n return m[0].slice(1);\n }\n },\n element: function getElementClassNames(el) {\n var className = el.className;\n if (className) {\n if (typeof className === 'string') {\n return className.split(/\\s/);\n } else if (typeof className === 'object' && 'baseVal' in className) {\n // className is a SVGAnimatedString\n // global SVGAnimatedString is not an exposed global in Opera 12\n return className.baseVal.split(/\\s/);\n }\n }\n }\n});\n\n// Index by tag/node name: `DIV`, `FORM`, `A`\nvar tagRe = /^((?:[\\w\\u00c0-\\uFFFF\\-]|\\\\.)+)/g;\nSelectorSet.prototype.indexes.push({\n name: 'TAG',\n selector: function matchTagSelector(sel) {\n var m;\n if ((m = sel.match(tagRe))) {\n return m[0].toUpperCase();\n }\n },\n element: function getElementTagName(el) {\n return [el.nodeName.toUpperCase()];\n }\n});\n\n// Default index just contains a single array of elements.\nSelectorSet.prototype.indexes['default'] = {\n name: 'UNIVERSAL',\n selector: function() {\n return true;\n },\n element: function() {\n return [true];\n }\n};\n\n// Use ES Maps when supported\nvar Map;\nif (typeof window.Map === 'function') {\n Map = window.Map;\n} else {\n Map = (function() {\n function Map() {\n this.map = {};\n }\n Map.prototype.get = function(key) {\n return this.map[key + ' '];\n };\n Map.prototype.set = function(key, value) {\n this.map[key + ' '] = value;\n };\n return Map;\n })();\n}\n\n// Regexps adopted from Sizzle\n// https://github.com/jquery/sizzle/blob/1.7/sizzle.js\n//\nvar chunker = /((?:\\((?:\\([^()]+\\)|[^()]+)+\\)|\\[(?:\\[[^\\[\\]]*\\]|['\"][^'\"]*['\"]|[^\\[\\]'\"]+)+\\]|\\\\.|[^ >+~,(\\[\\\\]+)+|[>+~])(\\s*,\\s*)?((?:.|\\r|\\n)*)/g;\n\n// Internal: Get indexes for selector.\n//\n// selector - String CSS selector\n//\n// Returns Array of {index, key}.\nfunction parseSelectorIndexes(allIndexes, selector) {\n allIndexes = allIndexes.slice(0).concat(allIndexes['default']);\n\n var allIndexesLen = allIndexes.length,\n i,\n j,\n m,\n dup,\n rest = selector,\n key,\n index,\n indexes = [];\n\n do {\n chunker.exec('');\n if ((m = chunker.exec(rest))) {\n rest = m[3];\n if (m[2] || !rest) {\n for (i = 0; i < allIndexesLen; i++) {\n index = allIndexes[i];\n if ((key = index.selector(m[1]))) {\n j = indexes.length;\n dup = false;\n while (j--) {\n if (indexes[j].index === index && indexes[j].key === key) {\n dup = true;\n break;\n }\n }\n if (!dup) {\n indexes.push({ index: index, key: key });\n }\n break;\n }\n }\n }\n }\n } while (m);\n\n return indexes;\n}\n\n// Internal: Find first item in Array that is a prototype of `proto`.\n//\n// ary - Array of objects\n// proto - Prototype of expected item in `ary`\n//\n// Returns object from `ary` if found. Otherwise returns undefined.\nfunction findByPrototype(ary, proto) {\n var i, len, item;\n for (i = 0, len = ary.length; i < len; i++) {\n item = ary[i];\n if (proto.isPrototypeOf(item)) {\n return item;\n }\n }\n}\n\n// Public: Log when added selector falls under the default index.\n//\n// This API should not be considered stable. May change between\n// minor versions.\n//\n// obj - {selector, data} Object\n//\n// SelectorSet.prototype.logDefaultIndexUsed = function(obj) {\n// console.warn(obj.selector, \"could not be indexed\");\n// };\n//\n// Returns nothing.\nSelectorSet.prototype.logDefaultIndexUsed = function() {};\n\n// Public: Add selector to set.\n//\n// selector - String CSS selector\n// data - Optional data Object (default: undefined)\n//\n// Returns nothing.\nSelectorSet.prototype.add = function(selector, data) {\n var obj,\n i,\n indexProto,\n key,\n index,\n objs,\n selectorIndexes,\n selectorIndex,\n indexes = this.activeIndexes,\n selectors = this.selectors,\n selectorObjects = this.selectorObjects;\n\n if (typeof selector !== 'string') {\n return;\n }\n\n obj = {\n id: this.uid++,\n selector: selector,\n data: data\n };\n selectorObjects[obj.id] = obj;\n\n selectorIndexes = parseSelectorIndexes(this.indexes, selector);\n for (i = 0; i < selectorIndexes.length; i++) {\n selectorIndex = selectorIndexes[i];\n key = selectorIndex.key;\n indexProto = selectorIndex.index;\n\n index = findByPrototype(indexes, indexProto);\n if (!index) {\n index = Object.create(indexProto);\n index.map = new Map();\n indexes.push(index);\n }\n\n if (indexProto === this.indexes['default']) {\n this.logDefaultIndexUsed(obj);\n }\n objs = index.map.get(key);\n if (!objs) {\n objs = [];\n index.map.set(key, objs);\n }\n objs.push(obj);\n }\n\n this.size++;\n selectors.push(selector);\n};\n\n// Public: Remove selector from set.\n//\n// selector - String CSS selector\n// data - Optional data Object (default: undefined)\n//\n// Returns nothing.\nSelectorSet.prototype.remove = function(selector, data) {\n if (typeof selector !== 'string') {\n return;\n }\n\n var selectorIndexes,\n selectorIndex,\n i,\n j,\n k,\n selIndex,\n objs,\n obj,\n indexes = this.activeIndexes,\n selectors = (this.selectors = []),\n selectorObjects = this.selectorObjects,\n removedIds = {},\n removeAll = arguments.length === 1;\n\n selectorIndexes = parseSelectorIndexes(this.indexes, selector);\n for (i = 0; i < selectorIndexes.length; i++) {\n selectorIndex = selectorIndexes[i];\n\n j = indexes.length;\n while (j--) {\n selIndex = indexes[j];\n if (selectorIndex.index.isPrototypeOf(selIndex)) {\n objs = selIndex.map.get(selectorIndex.key);\n if (objs) {\n k = objs.length;\n while (k--) {\n obj = objs[k];\n if (obj.selector === selector && (removeAll || obj.data === data)) {\n objs.splice(k, 1);\n removedIds[obj.id] = true;\n }\n }\n }\n break;\n }\n }\n }\n\n for (i in removedIds) {\n delete selectorObjects[i];\n this.size--;\n }\n\n for (i in selectorObjects) {\n selectors.push(selectorObjects[i].selector);\n }\n};\n\n// Sort by id property handler.\n//\n// a - Selector obj.\n// b - Selector obj.\n//\n// Returns Number.\nfunction sortById(a, b) {\n return a.id - b.id;\n}\n\n// Public: Find all matching decendants of the context element.\n//\n// context - An Element\n//\n// Returns Array of {selector, data, elements} matches.\nSelectorSet.prototype.queryAll = function(context) {\n if (!this.selectors.length) {\n return [];\n }\n\n var matches = {},\n results = [];\n var els = this.querySelectorAll(this.selectors.join(', '), context);\n\n var i, j, len, len2, el, m, match, obj;\n for (i = 0, len = els.length; i < len; i++) {\n el = els[i];\n m = this.matches(el);\n for (j = 0, len2 = m.length; j < len2; j++) {\n obj = m[j];\n if (!matches[obj.id]) {\n match = {\n id: obj.id,\n selector: obj.selector,\n data: obj.data,\n elements: []\n };\n matches[obj.id] = match;\n results.push(match);\n } else {\n match = matches[obj.id];\n }\n match.elements.push(el);\n }\n }\n\n return results.sort(sortById);\n};\n\n// Public: Match element against all selectors in set.\n//\n// el - An Element\n//\n// Returns Array of {selector, data} matches.\nSelectorSet.prototype.matches = function(el) {\n if (!el) {\n return [];\n }\n\n var i, j, k, len, len2, len3, index, keys, objs, obj, id;\n var indexes = this.activeIndexes,\n matchedIds = {},\n matches = [];\n\n for (i = 0, len = indexes.length; i < len; i++) {\n index = indexes[i];\n keys = index.element(el);\n if (keys) {\n for (j = 0, len2 = keys.length; j < len2; j++) {\n if ((objs = index.map.get(keys[j]))) {\n for (k = 0, len3 = objs.length; k < len3; k++) {\n obj = objs[k];\n id = obj.id;\n if (!matchedIds[id] && this.matchesSelector(el, obj.selector)) {\n matchedIds[id] = true;\n matches.push(obj);\n }\n }\n }\n }\n }\n }\n\n return matches.sort(sortById);\n};\n","import SelectorSet from 'selector-set';\n\nvar bubbleEvents = {};\nvar captureEvents = {};\nvar propagationStopped = new WeakMap();\nvar immediatePropagationStopped = new WeakMap();\nvar currentTargets = new WeakMap();\nvar currentTargetDesc = Object.getOwnPropertyDescriptor(Event.prototype, 'currentTarget');\n\nfunction before(subject, verb, fn) {\n var source = subject[verb];\n\n subject[verb] = function () {\n fn.apply(subject, arguments);\n return source.apply(subject, arguments);\n };\n\n return subject;\n}\n\nfunction matches(selectors, target, reverse) {\n var queue = [];\n var node = target;\n\n do {\n if (node.nodeType !== 1) break;\n\n var _matches = selectors.matches(node);\n\n if (_matches.length) {\n var matched = {\n node: node,\n observers: _matches\n };\n\n if (reverse) {\n queue.unshift(matched);\n } else {\n queue.push(matched);\n }\n }\n } while (node = node.parentElement);\n\n return queue;\n}\n\nfunction trackPropagation() {\n propagationStopped.set(this, true);\n}\n\nfunction trackImmediate() {\n propagationStopped.set(this, true);\n immediatePropagationStopped.set(this, true);\n}\n\nfunction getCurrentTarget() {\n return currentTargets.get(this) || null;\n}\n\nfunction defineCurrentTarget(event, getter) {\n if (!currentTargetDesc) return;\n Object.defineProperty(event, 'currentTarget', {\n configurable: true,\n enumerable: true,\n get: getter || currentTargetDesc.get\n });\n}\n\nfunction canDispatch(event) {\n try {\n event.eventPhase;\n return true;\n } catch (_) {\n return false;\n }\n}\n\nfunction dispatch(event) {\n if (!canDispatch(event)) return;\n var events = event.eventPhase === 1 ? captureEvents : bubbleEvents;\n var selectors = events[event.type];\n if (!selectors) return;\n var queue = matches(selectors, event.target, event.eventPhase === 1);\n if (!queue.length) return;\n before(event, 'stopPropagation', trackPropagation);\n before(event, 'stopImmediatePropagation', trackImmediate);\n defineCurrentTarget(event, getCurrentTarget);\n\n for (var i = 0, len1 = queue.length; i < len1; i++) {\n if (propagationStopped.get(event)) break;\n var matched = queue[i];\n currentTargets.set(event, matched.node);\n\n for (var j = 0, len2 = matched.observers.length; j < len2; j++) {\n if (immediatePropagationStopped.get(event)) break;\n matched.observers[j].data.call(matched.node, event);\n }\n }\n\n currentTargets[\"delete\"](event);\n defineCurrentTarget(event);\n}\n\nfunction on(name, selector, fn) {\n var options = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : {};\n var capture = options.capture ? true : false;\n var events = capture ? captureEvents : bubbleEvents;\n var selectors = events[name];\n\n if (!selectors) {\n selectors = new SelectorSet();\n events[name] = selectors;\n document.addEventListener(name, dispatch, capture);\n }\n\n selectors.add(selector, fn);\n}\nfunction off(name, selector, fn) {\n var options = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : {};\n var capture = options.capture ? true : false;\n var events = capture ? captureEvents : bubbleEvents;\n var selectors = events[name];\n if (!selectors) return;\n selectors.remove(selector, fn);\n if (selectors.size) return;\n delete events[name];\n document.removeEventListener(name, dispatch, capture);\n}\nfunction fire(target, name, detail) {\n return target.dispatchEvent(new CustomEvent(name, {\n bubbles: true,\n cancelable: true,\n detail: detail\n }));\n}\n\nexport { fire, off, on };\n"],"names":["state","stripe","paymentForms","toggleSubmit","submitButton","disabled","classList","toggle","document","querySelectorAll","forEach","form","querySelector","async","paymentField","window","Stripe","dataset","stripePubKey","card","elements","create","style","base","fontSize","fontFamily","color","fontSmoothing","invalid","cardElement","mount","addEventListener","error","textContent","message","id","qtyFields","length","default","IMask","field","mask","Number","scale","min","max","setupPayment","setupForm","on","e","preventDefault","target","hasPayment","isValid","handleValidation","result","createToken","hiddenInput","createElement","setAttribute","token","appendChild","submit","closest","amountEl","amount","el","qty","parseInt","value","cost","calculateAmount","normalizedAmount","Intl","NumberFormat","currency","format","capture","getPageOffset","offset","siteHeader","offsetHeight","additionalOffset","pageOffset","scrollOffset","Promise","resolve","jump","duration","callback","validator","_","group","findFieldWrapper","handleBlur","fieldWrapper","remove","existingErrorMessage","contains","rules","getAttribute","fieldName","name","presence","allowEmpty","type","email","readonly","pattern","minimum","equality","equals","radio","checkbox","checkboxGroup","buildRules","validate","undefined","messages","Object","entries","insertAdjacentHTML","add","shouldScroll","formScroll","firstError","scrollTo","setTimeout","focus","SelectorSet","this","size","uid","selectors","selectorObjects","indexes","activeIndexes","docElem","documentElement","matches","webkitMatchesSelector","mozMatchesSelector","oMatchesSelector","msMatchesSelector","prototype","matchesSelector","selector","call","context","idRe","push","sel","m","match","slice","element","classRe","className","split","baseVal","Map","tagRe","toUpperCase","nodeName","map","get","key","set","chunker","parseSelectorIndexes","allIndexes","i","j","dup","index","allIndexesLen","concat","rest","exec","findByPrototype","ary","proto","len","item","isPrototypeOf","sortById","a","b","logDefaultIndexUsed","data","obj","indexProto","objs","selectorIndexes","selectorIndex","k","selIndex","removedIds","removeAll","arguments","splice","queryAll","len2","results","els","join","sort","len3","keys","matchedIds","bubbleEvents","captureEvents","propagationStopped","WeakMap","immediatePropagationStopped","currentTargets","currentTargetDesc","getOwnPropertyDescriptor","Event","before","subject","verb","fn","source","apply","trackPropagation","trackImmediate","getCurrentTarget","defineCurrentTarget","event","getter","defineProperty","configurable","enumerable","dispatch","eventPhase","canDispatch","queue","reverse","node","nodeType","_matches","matched","observers","unshift","parentElement","len1","options","events","off","removeEventListener","fire","detail","dispatchEvent","CustomEvent","bubbles","cancelable"],"sourceRoot":""}