{"version":3,"sources":["webpack://Library/webpack/universalModuleDefinition","webpack://Library/./Static/javascript/modules/amount-selection.ts","webpack://Library/./Static/javascript/pages/giftCertificatePage/gift-certificate-page.ts","webpack://Library/webpack/bootstrap","webpack://Library/webpack/startup"],"names":[],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD,O;;;;;;;;;;;;;ACVA;IAOI,yBAAY,iBAAmC,EAAE,WAA+B,EAAE,iBAAoC;QAAtH,iBAWC;QAVG,IAAI,CAAC,iBAAiB,GAAG,iBAAiB,CAAC;QAC3C,IAAI,CAAC,WAAW,GAAG,WAAW,CAAC;QAC/B,IAAI,CAAC,iBAAiB,GAAG,iBAAiB,CAAC;QAC3C,IAAI,CAAC,iBAAiB,GAAG,EAAE,CAAC;QAC5B,IAAI,CAAC,mBAAmB,GAAG,EAAE,CAAC;QAC9B,IAAI,CAAC,iBAAiB,CAAC,gBAAgB,CAAC,MAAM,EAAE,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;QAC9E,IAAI,CAAC,iBAAiB,CAAC,gBAAgB,CAAC,QAAQ,EAAE,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;QAChF,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,eAAK;YAC1B,KAAK,CAAC,gBAAgB,CAAC,QAAQ,EAAE,KAAI,CAAC,YAAY,CAAC,IAAI,CAAC,KAAI,CAAC,CAAC,CAAC;QACnE,CAAC,CAAC,CAAC;IACP,CAAC;IAED,4BAAE,GAAF,UAAG,KAAa,EAAE,OAAiB;QAC/B,QAAQ,KAAK,EAAE;YACX,KAAK,WAAW;gBACZ,OAAO,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;YAChD,KAAK,aAAa;gBACd,OAAO,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;SACrD;IACL,CAAC;IAED,sCAAY,GAAZ;QACI,IAAM,QAAQ,GAAG,QAAQ,CAAC,IAAI,CAAC,iBAAiB,CAAC,KAAK,CAAC,CAAC;QACxD,IAAI,QAAQ,EAAE;YACV,IAAI,CAAC,iBAAiB,CAAC,KAAK,GAAG,KAAG,QAAU,CAAC;SAChD;IACL,CAAC;IAED,sCAAY,GAAZ;QAAA,iBAaC;QAZG,IAAM,QAAQ,GAAG,QAAQ,CAAC,IAAI,CAAC,iBAAiB,CAAC,KAAK,CAAC,CAAC;QACxD,IAAI,QAAQ,IAAI,CAAC,EAAE;YACf,IAAI,CAAC,iBAAiB,CAAC,KAAK,GAAG,IAAI,CAAC;SACvC;aACI;YACD,IAAI,CAAC,iBAAiB,CAAC,OAAO,GAAG,IAAI,CAAC;SACzC;QACD,IAAI,IAAI,CAAC,iBAAiB,EAAE;YACxB,IAAI,CAAC,iBAAiB,CAAC,OAAO,CAAC,iBAAO;gBAClC,UAAU,CAAC,OAAO,CAAC,IAAI,CAAC,KAAI,CAAC,EAAE,CAAC,CAAC,CAAC;YACtC,CAAC,CAAC;SACL;IACL,CAAC;IAED,sCAAY,GAAZ;QAAA,iBAYC;QAXG,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,eAAK;YAC1B,IAAI,KAAK,CAAC,OAAO,IAAI,KAAK,IAAI,KAAI,CAAC,iBAAiB,IAAI,KAAI,CAAC,iBAAiB,CAAC,KAAK,IAAI,EAAE,EAAE;gBACxF,KAAI,CAAC,iBAAiB,CAAC,KAAK,GAAG,EAAE,CAAC;aACrC;QACL,CAAC,CAAC,CAAC;QAEH,IAAI,IAAI,CAAC,mBAAmB,EAAE;YAC1B,IAAI,CAAC,mBAAmB,CAAC,OAAO,CAAC,iBAAO;gBACpC,UAAU,CAAC,OAAO,CAAC,IAAI,CAAC,KAAI,CAAC,EAAE,CAAC,CAAC,CAAC;YACtC,CAAC,CAAC;SACL;IACL,CAAC;IACL,sBAAC;AAAD,CAAC;AAhEY,0CAAe;;;;;;;;;;;;;;ACA5B,sIAAiE;AAEjE,IAAM,cAAc,GAAG,6BAA6B,CAAC;AACrD,IAAM,mBAAmB,GAAG,0BAA0B,CAAC;AACvD,IAAM,uBAAuB,GAAG,6BAA6B,CAAC;AAC9D,IAAM,kBAAkB,GAAG,UAAU,CAAC;AACtC,IAAM,kBAAkB,GAAG,oBAAoB,CAAC;AAChD,IAAM,oBAAoB,GAAG,gCAAgC,CAAC;AAC9D,IAAM,oBAAoB,GAAG,kBAAkB,CAAC;AAChD,IAAM,aAAa,GAAG,uBAAuB,CAAC;AAEjC,2BAAmB,GAAG;IAC/B,IAAI,mBAAmB,GAAG,EAAE,CAAC;IAC7B,IAAI,eAAe,GAAG,EAAE,CAAC;IACzB,IAAM,YAAY,GAAG,QAAQ,CAAC,aAAa,CAAC,MAAI,cAAc,MAAG,CAAqB,CAAC;IACvF,IAAM,YAAY,GAAG,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,gBAAgB,CAAC,MAAI,mBAAmB,MAAG,CAAC,CAAuB,CAAC;IAChH,IAAM,UAAU,GAAG,QAAQ,CAAC,gBAAgB,CAAC,MAAI,kBAAkB,MAAG,CAAC,CAAC;IACxE,IAAM,WAAW,GAAG,QAAQ,CAAC,aAAa,CAAC,MAAI,uBAAuB,MAAG,CAAqB,CAAC;IAC/F,IAAM,WAAW,GAAG,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,gBAAgB,CAAC,aAAU,oBAAoB,QAAI,CAAC,CAAuB,CAAC;IACvH,IAAI,cAAc,GAAG,QAAQ,CAAC,aAAa,CAAC,MAAI,mBAAmB,cAAW,CAAqB,IAAI,YAAY,CAAC,CAAC,CAAC,CAAC;IAEvH,uCAAuC;IACvC,IAAM,iBAAiB,GAAG,QAAQ,CAAC,aAAa,CAAC,uBAAuB,CAAqB,CAAC;IAC9F,IAAM,iBAAiB,GAAG,QAAQ,CAAC,aAAa,CAAC,iBAAiB,CAAqB,CAAC;IACxF,IAAM,UAAU,GAAG,iBAAiB,aAAjB,iBAAiB,uBAAjB,iBAAiB,CAAE,YAAY,CAAC,oBAAoB,CAAC,CAAC;IAEzE,6CAA6C;IAC7C,YAAY,CAAC,OAAO,CAAC,qBAAW;QAC5B,WAAW,CAAC,gBAAgB,CAAC,QAAQ,EAAE;YACnC,YAAY,CAAC,OAAO,CAAC,sBAAY;gBAC7B,IAAI,YAAY,CAAC,OAAO,EAAE;oBACtB,oBAAoB,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;iBAC5C;YACL,CAAC,CAAC;QACN,CAAC,CAAC,CAAC;IACP,CAAC,CAAC,CAAC;IAEH,6DAA6D;IAC7D,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,UAAU,EAAE,UAAC,KAAK;QAC9B,KAAK,CAAC,gBAAgB,CAAC,QAAQ,EAAE;YAC7B,kBAAkB,EAAE,CAAC;QACzB,CAAC,CAAC,CAAC;IACP,CAAC,CAAC,CAAC;IAEH,+GAA+G;IAC/G,IAAI,cAAc,EAAE;QAChB,cAAc,CAAC,OAAO,GAAG,IAAI,CAAC;QAC9B,oBAAoB,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC;KAC9C;IAED,IAAI,iBAAiB,IAAI,WAAW,EAAE;QAClC,IAAM,eAAe,GAAG,IAAI,kCAAe,CAAC,iBAAiB,EAAE,WAAW,EAAE,iBAAiB,CAAC,CAAC;QAC/F,eAAe,CAAC,EAAE,CAAC,WAAW,EAAE;YAC5B,kBAAkB,EAAE,CAAC;QACzB,CAAC,CAAC,CAAC;QAEH,WAAW,CAAC,OAAO,CAAC,eAAK;YACrB,KAAK,CAAC,gBAAgB,CAAC,QAAQ,EAAE,kBAAkB,CAAC,CAAC;QACzD,CAAC,CAAC,CAAC;KACN;IAED,SAAS,oBAAoB,CAAC,iBAAiB;QAC3C,yCAAyC;QACzC,WAAW,CAAC,KAAK,GAAG,iBAAiB,CAAC;QAEtC,kBAAkB,EAAE,CAAC;IACzB,CAAC;IAED,SAAS,kBAAkB;QACvB,+CAA+C;QAC/C,IAAM,aAAa,GAAG,QAAQ,CAAC,aAAa,CAAC,aAAU,oBAAoB,gBAAY,CAAqB,CAAC;QAC7G,mBAAmB,CAAC,aAAa,EAAE,UAAU,CAAC,CAAC;QAE/C,gEAAgE;QAChE,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,UAAU,EAAE,eAAK;YAC7B,mBAAmB,CAAC,KAAK,CAAC,CAAC;QAC/B,CAAC,CAAC,CAAC;QAEH,uDAAuD;QACvD,IAAM,qBAAqB,GAAG,mBAAmB,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QAC5D,IAAM,cAAc,GAAG,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAClD,YAAY,CAAC,GAAG,GAAM,aAAa,SAAI,qBAAuB,CAAC;QAC/D,YAAY,CAAC,GAAG,GAAG,cAAc,CAAC;QAClC,mBAAmB,GAAG,EAAE,CAAC;QACzB,eAAe,GAAG,EAAE,CAAC;IACzB,CAAC;IAED,SAAS,mBAAmB,CAAC,KAAuB,EAAE,SAAkB;QACpE,yEAAyE;QACzE,SAAS,GAAG,SAAS,IAAI,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,YAAY,CAAC,kBAAkB,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;QACnF,IAAM,UAAU,GAAG,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,KAAK,CAAC;QAChC,IAAI,SAAS,IAAI,UAAU,EAAE;YACzB,mBAAmB,CAAC,IAAI,CAAI,SAAS,SAAI,UAAY,CAAC,CAAC;SAC1D;QAED,IAAI,SAAS,IAAI,kBAAkB,EAAE;YACjC,eAAe,CAAC,IAAI,CAAC,CAAI,SAAS,UAAK,UAAY,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC;SAC5E;IACL,CAAC;AACL,CAAC;AAED,2BAAmB,EAAE,CAAC;;;;;;;UCrGtB;UACA;;UAEA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;;UAEA;UACA;;UAEA;UACA;UACA;;;;UCtBA;UACA;UACA;UACA","file":"gift-certificates.js","sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"Library\"] = factory();\n\telse\n\t\troot[\"Library\"] = factory();\n})(self, function() {\nreturn ","export class AmountSelection {\r\n customAmountInput: HTMLInputElement;\r\n radioInputs: HTMLInputElement[];\r\n inputBlurHandlers: Function[];\r\n radioSelectHandlers: Function[];\r\n customAmountRadio?: HTMLInputElement;\r\n\r\n constructor(customAmountInput: HTMLInputElement, radioInputs: HTMLInputElement[], customAmountRadio?: HTMLInputElement) {\r\n this.customAmountInput = customAmountInput;\r\n this.radioInputs = radioInputs;\r\n this.customAmountRadio = customAmountRadio;\r\n this.inputBlurHandlers = [];\r\n this.radioSelectHandlers = [];\r\n this.customAmountInput.addEventListener('blur', this.inputBlurred.bind(this));\r\n this.customAmountInput.addEventListener('change', this.inputChanged.bind(this));\r\n this.radioInputs.forEach(radio => {\r\n radio.addEventListener('change', this.radioChanged.bind(this));\r\n });\r\n }\r\n\r\n on(event: string, handler: Function) {\r\n switch (event) {\r\n case \"inputBlur\":\r\n return this.inputBlurHandlers.push(handler);\r\n case \"radioSelect\":\r\n return this.radioSelectHandlers.push(handler);\r\n }\r\n }\r\n\r\n inputChanged() {\r\n const newValue = parseInt(this.customAmountInput.value);\r\n if (newValue) {\r\n this.customAmountRadio.value = `${newValue}`;\r\n }\r\n }\r\n\r\n inputBlurred() {\r\n const newValue = parseInt(this.customAmountInput.value);\r\n if (newValue <= 0) {\r\n this.customAmountInput.value = null;\r\n }\r\n else {\r\n this.customAmountRadio.checked = true;\r\n }\r\n if (this.inputBlurHandlers) {\r\n this.inputBlurHandlers.forEach(handler => {\r\n setTimeout(handler.bind(this), 0);\r\n })\r\n }\r\n }\r\n\r\n radioChanged() {\r\n this.radioInputs.forEach(radio => {\r\n if (radio.checked && radio != this.customAmountRadio && this.customAmountInput.value != '') {\r\n this.customAmountInput.value = '';\r\n }\r\n });\r\n\r\n if (this.radioSelectHandlers) {\r\n this.radioSelectHandlers.forEach(handler => {\r\n setTimeout(handler.bind(this), 0);\r\n })\r\n }\r\n }\r\n}","import { AmountSelection } from '../../modules/amount-selection';\r\n\r\nconst imageAttribute = \"data-preview-selected-image\";\r\nconst imageRadioAttribute = \"data-preview-image-radio\";\r\nconst imagePathInputAttribute = \"data-preview-selected-value\";\r\nconst imagePathInputName = \"ImageUrl\";\r\nconst formFieldAttribute = \"data-preview-field\";\r\nconst amountRadioGroupName = \"GiftCertificatesRequest.Amount\";\r\nconst amountLabelAttribute = \"data-amount-name\";\r\nconst imageApiRoute = \"/ace-api/gift/preview\";\r\n\r\nexport const giftCertificatePage = () => {\r\n let queryStringElements = [];\r\n let altTextElements = [];\r\n const previewImage = document.querySelector(`[${imageAttribute}]`) as HTMLImageElement;\r\n const designRadios = [].slice.call(document.querySelectorAll(`[${imageRadioAttribute}]`)) as HTMLInputElement[];\r\n const formInputs = document.querySelectorAll(`[${formFieldAttribute}]`);\r\n const hiddenInput = document.querySelector(`[${imagePathInputAttribute}]`) as HTMLInputElement;\r\n const amountGroup = [].slice.call(document.querySelectorAll(`[name=\"${amountRadioGroupName}\"]`)) as HTMLInputElement[];\r\n let selectedDesign = document.querySelector(`[${imageRadioAttribute}]:checked`) as HTMLInputElement || designRadios[0];\r\n\r\n // Amount radio inputs + custom textbox\r\n const customAmountInput = document.querySelector('#Amounts_custom-field') as HTMLInputElement;\r\n const customAmountRadio = document.querySelector('#Amounts_custom') as HTMLInputElement;\r\n const amountName = customAmountInput?.getAttribute(amountLabelAttribute);\r\n\r\n // Bind radio buttons to create a new preview\r\n designRadios.forEach(designRadio => {\r\n designRadio.addEventListener('change', () => {\r\n designRadios.forEach(radioInGroup => {\r\n if (radioInGroup.checked) {\r\n updateSelectedDesign(radioInGroup.value);\r\n }\r\n })\r\n });\r\n });\r\n\r\n // Bind inputs to refresh preview image when they change text\r\n [].forEach.call(formInputs, (input) => {\r\n input.addEventListener(\"change\", () => {\r\n updateImagePreview();\r\n });\r\n });\r\n\r\n // Initialize preview to the first image (or already-selected image if refreshed/user has gone back in browser)\r\n if (selectedDesign) {\r\n selectedDesign.checked = true;\r\n updateSelectedDesign(selectedDesign.value);\r\n }\r\n\r\n if (customAmountInput && amountGroup) {\r\n const amountSelection = new AmountSelection(customAmountInput, amountGroup, customAmountRadio);\r\n amountSelection.on('inputBlur', () => {\r\n updateImagePreview();\r\n });\r\n\r\n amountGroup.forEach(radio => {\r\n radio.addEventListener('change', updateImagePreview);\r\n });\r\n }\r\n\r\n function updateSelectedDesign(selectedDesignUrl) {\r\n // set hidden field value to the new item\r\n hiddenInput.value = selectedDesignUrl;\r\n\r\n updateImagePreview();\r\n }\r\n\r\n function updateImagePreview() {\r\n // Find selected amount and add to query string\r\n const checkedAmount = document.querySelector(`[name=\"${amountRadioGroupName}\"]:checked`) as HTMLInputElement;\r\n appendToQueryString(checkedAmount, amountName);\r\n\r\n // Update query string with current values from all other fields\r\n [].forEach.call(formInputs, input => {\r\n appendToQueryString(input);\r\n });\r\n\r\n // Set image src to api route with query params applied\r\n const serializedQueryString = queryStringElements.join(\"&\");\r\n const currentAltText = altTextElements.join(\", \");\r\n previewImage.src = `${imageApiRoute}?${serializedQueryString}`;\r\n previewImage.alt = currentAltText;\r\n queryStringElements = [];\r\n altTextElements = [];\r\n }\r\n\r\n function appendToQueryString(input: HTMLInputElement, paramName?: string) {\r\n // Get the query string param name from the preview field attribute value\r\n paramName = paramName == null ? input.getAttribute(formFieldAttribute) : paramName;\r\n const paramValue = input?.value;\r\n if (paramName && paramValue) {\r\n queryStringElements.push(`${paramName}=${paramValue}`);\r\n }\r\n\r\n if (paramName != imagePathInputName) {\r\n altTextElements.push((`${paramName}: ${paramValue}`).replace(/\"/g, \"'\"));\r\n }\r\n }\r\n}\r\n\r\ngiftCertificatePage();","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\t// no module.id needed\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId](module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n","// startup\n// Load entry module and return exports\n// This entry module is referenced by other modules so it can't be inlined\nvar __webpack_exports__ = __webpack_require__(\"./Static/javascript/pages/giftCertificatePage/gift-certificate-page.ts\");\n"],"sourceRoot":""}