{"version":3,"sources":["webpack:///./helpers/extend.js","webpack:///./pages/help/index.js","webpack:///./helpers/validation/validation-events.js","webpack:///./helpers/validation/validation-adapters.js","webpack:///./helpers/validation/validation-form.js","webpack:///./globals/privacy-policy-popup.js","webpack:///./components/overlay.js","webpack:///./components/toggle-panel.js","webpack:///./pages/disclaimer/index.js","webpack:///./components/web-plugin.js","webpack:///./components/page-title.js","webpack:///./pages/achFunding/services/achFundingDataService.js","webpack:///./pages/achFunding/index.js","webpack:///./pages/cardFunding/services/cardFundingDataService.js","webpack:///./pages/cardFunding/index.js","webpack:///./pages/checkFunding/services/checkFundingDataService.js","webpack:///./pages/checkFunding/index.js","webpack:///./pages/payPalFunding/services/payPalFundingDataService.js","webpack:///./pages/payPalFunding/index.js","webpack:///./pages/documentReview/index.js","webpack:///./components/valueformat-input.js","webpack:///./pages/oneTimeAuthorization/index.js","webpack:///./components/funding-destinations-list.js","webpack:///./pages/fundingDestinations/index.js","webpack:///./pages/recipientAuthentication/index.js","webpack:///./pages/cancelPayment/index.js","webpack:///./pages/delegation/index.js","webpack:///./pages/approval/index.js","webpack:///./pages/approval/confirmConsent.js","webpack:///./shared/confirmationDocument.js","webpack:///./helpers/dom.js","webpack:///./helpers/documentEmbedding.js"],"names":["extendHelpers","hasOwn","class2Type","hasOwnProperty","fnToString","toString","ObjectFunctionString","call","Object","getProto","obj","String","isPlainObject","proto","Ctor","constructor","module","exports","extend","options","name","src","copy","copyIsArray","clone","target","arguments","i","length","deep","_typeof","isFunction","Array","isArray","undefined","HelpPage","el","_classCallCheck","this","init","key","value","initLinkOnClick","element","document","querySelector","addEventListener","window","history","go","getElementById","$","fn","addValidationEvents","each","form","validator","data","formValidator","result","apply","currentForm","setAttribute","toLowerCase","trigger","elementValidator","on","e","$el","find","isValid","invalid","$form","validate","resetForm","removeClass","addClass","empty","setDefaults","ignore","input","elm","maskedInput","siblings","unobtrusive","adapters","add","rules","messages","message","addMethod","params","match","maxLength","regex","RegExp","optional","exec","index","expirationParts","split","month","parseInt","year","isNaN","now","Date","currentYear","getFullYear","currentMonth","getMonth","pattern","flags","closest","PrivacyPolicyPopup","defaults","_this","breakpoint","innerWidth","documentElement","clientWidth","preventDefault","windowOptions","concat","menubar","resizable","scrollbars","width","height","open","href","Overlay","overlay","createElement","innerHTML","parentNode","insertBefore","nextSibling","initOverlay","dom","css","activeClass","TogglePanel","isToggled","toggler","toggleSelector","hide","show","DisclaimerPage","initTogglePanels","formOverlay","togglePanelElms","querySelectorAll","addEventListeners","scope","onMessageReceived","bind","onPluginLoad","onPluginResize","content","detail","frameMinHeight","style","page","invalidSession","location","origin","eventData","JSON","parse","err","events","triggerEvent","event_name","WebPlugin","frameElement","frameEl","cssName","url","appendChild","PageTitle","title","attr","getAttribute","getPageTitleFromEl","innerText","dataService","AchFundingDataService","fundingToken","method","payload","csrfToken","val","Promise","resolve","reject","ajax","type","dataType","contentType","success","error","jqXhr","textStatus","errorThrown","responseText","AchFundingPage","initTitles","initWebPlugin","pageTitleEl","pageTitle","bodyTitleEl","bodyTitle","webPluginEl","webPlugin","setTitle","scrollTo","funding_token","timeout","setTimeout","processFundingToken","then","clearTimeout","catch","hasLocation","CardFundingDataService","CardFundingPage","CheckFundingDataService","CheckFundingPage","PayPalFundingDataService","PayPalFundingPage","DocumentReviewPage","initAdobeDc","adobeDcElement","dl","deobfuscateStringValue","dataset","dak","AdobeDC","View","clientId","divId","previewFile","metaData","fileName","dfn","embedMode","dem","showDownloadPDF","showThumbnails","showBookmarks","showAnnotationTools","showPrintPDF","translations","L","placeholder","A","0","cleanFormat","formatMap","valueLen","char","charAt","j","formatMapLen","valueFormat","valueRegex","isLiteral","test","substr","formatValue","charIndex","len","onFormatValue","onFormatValueBackspace","onReformatValue","which","keyCode","fromCharCode","inputs","hasSelectedText","defaultPrevented","caretPosition","getCaretPosition","prevValue","nextPosition","setCaretPosition","isBackspace","isDelete","characterPosition","nextCaretPosition","ValueFormatInput","tagName","format","trim","string","escapeCharacterMap","previousWasEscape","c","patternValue","placeholderValue","push","replace","buildFormatMap","placeholders","forEach","m","initMaskOnStartup","initInputValue","OneTimeAuthorizationAuthorizePage","initRegexInputs","initDynamicValidation","focusFirst","_toConsumableArray","onRadioChange","radio","checked","invalidClass","optionClass","clearListActive","setRadioActive","ready","click","FundingDestinationsList","radios","isSet","FundingDestinationsPage","initFundingOptionsList","initFundingOptionsForm","fundingDestinationsListEl","fundingDestinationsList","RecipientAuthenticationPage","initChallengeFieldOnChange","className","selectedIndex","CancelPaymentPage","initCancelPaymentOptionsList","initCancelPaymentOptionsForm","listEl","cancelPaymentList","CancelPaymentList","DelegationPage","ApproverConsentPage","initApproverConsentOptionsList","initApproverConsentOptionsForm","approverConsentList","ApproverConsentList","ApproverConfirmConsentPage","ConfirmationDocumentPage","initDocumentEmbeddingOnClick","disabled","hasClass","classList","contains","remove","reg","hasFocus","activeElement","selectionStart","selectionEnd","selection","createRange","text","position","createTextRange","range","move","select","focus","setSelectionRange","restrictNumeric","metaKey","ctrlKey","elms","event","CustomEvent","createEvent","initCustomEvent","initEvent","dispatchEvent","stringValue","base64Value","slice","atob"],"mappings":"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","file":"index.7214a157c92543d49881.js","sourcesContent":["/*\r\n * Extend Helper -\r\n *\r\n * Deep extend/merge function ported from jQuery\r\n * Attribution: Original source: jQuery - https://github.com/jquery/jquery/blob/master/src/core.js\r\n */\r\n\r\nconst extendHelpers = {\r\n hasOwn: function (class2Type) {\r\n return class2Type.hasOwnProperty;\r\n },\r\n\r\n fnToString: function() {\r\n return extendHelpers.hasOwn.toString;\r\n },\r\n\r\n ObjectFunctionString: function() {\r\n return extendHelpers.fnToString.call(Object);\r\n },\r\n\r\n getProto: function (obj) {\r\n const types = {\r\n \"[object Boolean]\": \"boolean\",\r\n \"[object Number]\": \"number\",\r\n \"[object String]\": \"string\",\r\n \"[object Function]\": \"function\",\r\n \"[object Array]\": \"array\",\r\n \"[object Date]\": \"date\",\r\n \"[object RegExp]\": \"regexp\",\r\n \"[object Object]\": \"object\"\r\n };\r\n\r\n return obj == null ? String(obj) : types[toString.call(obj)] || \"object\";\r\n },\r\n\r\n isPlainObject: function (obj) {\r\n let proto, Ctor;\r\n\r\n // Detect obvious negatives\r\n // Use toString instead of jQuery.type to catch host objects\r\n if (!obj || toString.call(obj) !== \"[object Object]\") {\r\n return false;\r\n }\r\n\r\n proto = extendHelpers.getProto(obj);\r\n\r\n // Objects with no prototype (e.g., `Object.create( null )`) are plain\r\n if (!proto) {\r\n return true;\r\n }\r\n\r\n // Objects with prototype are plain iff they were constructed by a global Object function\r\n Ctor = extendHelpers.hasOwn.call(proto, \"constructor\") && proto.constructor;\r\n return typeof Ctor === \"function\" && extendHelpers.fnToString.call(Ctor) === extendHelpers.ObjectFunctionString;\r\n }\r\n}\r\n\r\nfunction extend() {\r\n let options, name, src, copy, copyIsArray, clone,\r\n target = arguments[0] || {},\r\n i = 1,\r\n length = arguments.length,\r\n deep = false;\r\n\r\n // Handle a deep copy situation\r\n if (typeof target === \"boolean\") {\r\n deep = target;\r\n\r\n // Skip the boolean and the target\r\n target = arguments[i] || {};\r\n i++;\r\n }\r\n\r\n // Handle case when target is a string or something (possible in deep copy)\r\n if (typeof target !== \"object\" && !extendHelpers.isFunction(target)) {\r\n target = {};\r\n }\r\n\r\n // Extend jQuery itself if only one argument is passed\r\n if (i === length) {\r\n throw \"Requires a target to extend.\";\r\n }\r\n\r\n for (; i < length; i++) {\r\n\r\n // Only deal with non-null/undefined values\r\n if ((options = arguments[i]) != null) {\r\n\r\n // Extend the base object\r\n for (name in options) {\r\n src = target[name];\r\n copy = options[name];\r\n\r\n // Prevent never-ending loop\r\n if (target === copy) {\r\n continue;\r\n }\r\n\r\n // Recurse if we're merging plain objects or arrays\r\n if (deep && copy && (extendHelpers.isPlainObject(copy) ||\r\n (copyIsArray = Array.isArray(copy)))) {\r\n\r\n if (copyIsArray) {\r\n copyIsArray = false;\r\n clone = src && Array.isArray(src) ? src : [];\r\n\r\n } else {\r\n clone = src && extendHelpers.isPlainObject(src) ? src : {};\r\n }\r\n\r\n // Never move original objects, clone them\r\n target[name] = extend(deep, clone, copy);\r\n\r\n // Don't bring in undefined values\r\n } else if (copy !== undefined) {\r\n target[name] = copy;\r\n }\r\n }\r\n }\r\n }\r\n\r\n // Return the modified object\r\n return target;\r\n}\r\n\r\nmodule.exports = extend;","// Help page module\r\nclass HelpPage {\r\n constructor(el) {\r\n this.el = el;\r\n this.init();\r\n }\r\n\r\n init() {\r\n this.initLinkOnClick();\r\n }\r\n\r\n initLinkOnClick() {\r\n const element = document.querySelector('.js-window-history');\r\n if (element) {\r\n element.addEventListener('click', () => {\r\n window.history.go(-1);\r\n return false;\r\n });\r\n }\r\n }\r\n}\r\n\r\n// Startup\r\ndocument.addEventListener('DOMContentLoaded', () => {\r\n const el = document.getElementById(\"js-help-page\");\r\n if (el) new HelpPage(el);\r\n});","/*\r\n * Extends jQuery unobtrusive validation to emit validation events\r\n */\r\n\r\nimport $ from \"jquery\";\r\nimport \"jquery-validation-unobtrusive\";\r\n\r\n$.fn.addValidationEvents = function() {\r\n return this.each(function() {\r\n const form = $(this);\r\n const validator = form.data('validator');\r\n\r\n // Process if unobtrusive validator attached\r\n if (!validator) {\r\n return;\r\n }\r\n\r\n // Already initialized\r\n if (form.data('validator-ext-events') === true) {\r\n return;\r\n }\r\n \r\n // Injects custom form validation\r\n const formValidator = validator.form;\r\n validator.form = function() {\r\n const result = formValidator.apply(this, arguments);\r\n\r\n // Custom data-property that can be used by other services\r\n this.currentForm.setAttribute(\"data-validated\", result.toString().toLowerCase());\r\n\r\n // Triggers the custom event\r\n $(form).trigger(\"validated\", [this.currentForm, result]);\r\n \r\n return result;\r\n };\r\n\r\n // Injects custom element validation\r\n const elementValidator = validator.element;\r\n validator.element = function(element) {\r\n const result = elementValidator.apply(this, arguments);\r\n\r\n // Triggers the custom event\r\n $(element).trigger(\"validated\", [element, result]);\r\n\r\n return result;\r\n };\r\n\r\n // Automatically trigger each element's validation event\r\n // upon the entire form being validated.\r\n form.on(\"validated\", function(e, el) {\r\n const $el = $(el);\r\n const formValidator = $el.data(\"validator\");\r\n const validationElements = $el.find('[data-val=true]');\r\n\r\n validationElements.each(function(i, element) {\r\n const name = element.name || \"\";\r\n const isValid = typeof(formValidator.invalid[name]) === \"undefined\";\r\n\r\n $(element).trigger(\"validated\", [element, isValid]);\r\n });\r\n });\r\n\r\n // On reset\r\n form.on(\"reset\", function(e) {\r\n const $form = $(e.target);\r\n\r\n //reset jQuery Validate's internals\r\n $form.validate().resetForm();\r\n\r\n //reset unobtrusive validation summary, if it exists\r\n $form.find(\"[data-valmsg-summary=true]\")\r\n .removeClass(\"validation-summary-errors\")\r\n .addClass(\"validation-summary-valid\")\r\n .find(\"ul\").empty();\r\n\r\n //reset unobtrusive field level, if it exists\r\n $form.find(\"[data-valmsg-replace]\")\r\n .removeClass(\"field-validation-error\")\r\n .addClass(\"field-validation-valid\")\r\n .empty();\r\n\r\n //reset unobtrusive field group level, if it exists\r\n $form.find(\".form__group--invalid\").removeClass(\"form__group--invalid\");\r\n\r\n //reset custom validators\r\n $form.find(\".input-validation-error\").removeClass(\"input-validation-error\");\r\n });\r\n\r\n // Initialized\r\n form.data('validator-ext-events', true);\r\n });\r\n};\r\n\r\n// Startup - \r\n// Must use jQuery's function to ensure initialization \r\n// is queued after jQuery unobtrusive validation's.\r\n$(function() {\r\n $(\"form\").addValidationEvents();\r\n});","/*\r\n * Additional jQuery validations for custom data annotations\r\n */\r\n\r\nimport $ from \"jquery\";\r\nimport \"jquery-validation-unobtrusive\";\r\n\r\n// By default validator ignores hidden fields.\r\n// change the setting here to ignore disabled elements only\r\n$.validator.setDefaults({ ignore: \":disabled\" });\r\n\r\n// -- Credit card input component integration with jQuery unobtrusive validation\r\n$(\"input[data-val-creditcard]\").each(function(i, input) {\r\n $(input).on(\"validated\", function(el, elm, isValid) {\r\n const maskedInput = $(elm).siblings(\"[data-creditcard-mask]\");\r\n\r\n if (isValid) {\r\n maskedInput.removeClass(\"input-validation-error\");\r\n } else {\r\n maskedInput.addClass(\"input-validation-error\");\r\n }\r\n });\r\n});\r\n\r\n// -- Credit card security code\r\n$.validator.unobtrusive.adapters.add(\"ccsecuritycode\", [], function (options) {\r\n options.rules[\"ccsecuritycode\"] = true;\r\n options.messages[\"ccsecuritycode\"] = options.message;\r\n});\r\n\r\n$.validator.addMethod(\"ccsecuritycode\", function(value, element, params) {\r\n // -- Piggy backs off the \"cc-card-code-input\" component, which dynamically\r\n // sets the maxlength property based on credit card type.\r\n const maxLength = element.maxLength || 0;\r\n const regex = new RegExp(\"^\\\\d{\" + maxLength + \"}$\");\r\n\r\n let match;\r\n if (this.optional(element)) {\r\n return true;\r\n }\r\n\r\n match = new RegExp(regex).exec(value);\r\n return (match && (match.index === 0) && (match[0].length === value.length));\r\n});\r\n\r\n// -- Credit card expiration date\r\n$.validator.unobtrusive.adapters.add(\"ccexpiration\", [], function (options) {\r\n options.rules[\"ccexpiration\"] = true;\r\n options.messages[\"ccexpiration\"] = options.message;\r\n});\r\n\r\n$.validator.addMethod(\"ccexpiration\", function(value, element, params) {\r\n const expirationParts = value.split('/');\r\n\r\n if (expirationParts.length !== 2) {\r\n return false;\r\n }\r\n\r\n const month = parseInt(expirationParts[0]);\r\n const year = parseInt(expirationParts[1]);\r\n\r\n if (isNaN(month) || isNaN(year)) {\r\n return false;\r\n }\r\n\r\n const now = new Date();\r\n const currentYear = now.getFullYear() - 2000;\r\n const currentMonth = now.getMonth() + 1;\r\n\r\n if (year < currentYear || (year === currentYear && month < currentMonth)) {\r\n return false;\r\n }\r\n\r\n return true;\r\n});\r\n\r\n// -- Regular expression support flags [server-side not implemented]\r\n// (based off original regex implementation by jQuery validation)\r\n$.validator.unobtrusive.adapters.add(\"regexwithflags\", [\"pattern\", \"flags\"], function (options) {\r\n options.messages[\"regexwithflags\"] = options.message;\r\n options.rules[\"regexwithflags\"] = options.params;\r\n});\r\n\r\n$.validator.addMethod(\"regexwithflags\", function (value, element, params) {\r\n var match;\r\n if (this.optional(element)) {\r\n return true;\r\n }\r\n\r\n match = new RegExp(params.pattern, params.flags).exec(value);\r\n return (match && (match.index === 0) && (match[0].length === value.length));\r\n});","/*\r\n * Extends jQuery unobtrusive validation for the form component\r\n */\r\n\r\nimport $ from \"jquery\";\r\n\r\n// Startup - \r\n// Must use jQuery's function to ensure initialization \r\n// is queued after jQuery unobtrusive validation's.\r\n$(function() {\r\n $('[data-val=true]').on(\"validated\", function(e, elm, isValid) {\r\n if (isValid) {\r\n $(elm).closest(\".form__group\").removeClass(\"form__group--invalid\");\r\n } else {\r\n $(elm).closest(\".form__group\").addClass(\"form__group--invalid\");\r\n }\r\n });\r\n});","import extend from \"@scripts/helpers/extend\";\r\n\r\nfunction isMobileBreakpoint(breakpoint) {\r\n let windowWidth = window.innerWidth || document.documentElement.clientWidth;\r\n return windowWidth <= breakpoint;\r\n}\r\n\r\nclass PrivacyPolicyPopup {\r\n constructor(el, options) {\r\n // Sanity check\r\n if (!el) {\r\n throw \"Invalid mounting element\";\r\n }\r\n\r\n this.el = el;\r\n this.options = extend({}, PrivacyPolicyPopup.defaults, options);\r\n this.init();\r\n }\r\n\r\n init() {\r\n this.el.addEventListener(\"click\", (e) => {\r\n // If mobile, we let the hyperlink through\r\n if (isMobileBreakpoint(this.options.breakpoint)) {\r\n return true;\r\n }\r\n\r\n // Desktop, popup a new window\r\n e.preventDefault();\r\n\r\n let windowOptions = `menubar=${this.options.menubar},resizable=${this.options.resizable},scrollbars=${this.options.scrollbars},width=${this.options.width},height=${this.options.height}`;\r\n window.open(this.el.href, '_blank', windowOptions);\r\n\r\n return false;\r\n });\r\n }\r\n}\r\n\r\n/*\r\n * Default options -\r\n *\r\n */\r\nPrivacyPolicyPopup.defaults = {\r\n width: 410,\r\n height: 500,\r\n resizable: 1,\r\n scrollbars: 1,\r\n menubar: 0,\r\n breakpoint: 767 \r\n};\r\n\r\n// Startup (for global link in footer)\r\ndocument.addEventListener('DOMContentLoaded', () => {\r\n const el = document.querySelector(\".js-privacy-policy\");\r\n if (el) new PrivacyPolicyPopup(el);\r\n});\r\n\r\n// To use the module in other pages/components\r\nexport default PrivacyPolicyPopup;","import extend from \"@scripts/helpers/extend\";\r\nimport dom from \"@scripts/helpers/dom\";\r\n\r\nfunction initOverlay(target, options) {\r\n let overlay = document.createElement(\"div\");\r\n overlay.setAttribute(\"class\", \"overlay overlay--fixed\");\r\n overlay.innerHTML = `
`;\r\n target.parentNode.insertBefore(overlay, target.nextSibling);\r\n return overlay;\r\n}\r\n\r\n/**\r\n * Overlay component - Displays a [loading] overlay\r\n * \r\n * @param el: The html [input] element\r\n * @param options: Customized options for styling/behavior\r\n */\r\nclass Overlay {\r\n constructor(options) {\r\n this.options = extend({}, Overlay.defaults, options);\r\n this.init();\r\n }\r\n\r\n init() {\r\n let target;\r\n\r\n if (typeof this.options.target === \"object\") {\r\n target = this.options.target;\r\n } else if (typeof this.options.target === \"string\") {\r\n if (!this.options.target || !(target = document.querySelector(this.options.target))) {\r\n console.warn(\"Cannot find overlay target '\" + this.options.target + \"'\");\r\n return;\r\n }\r\n } else {\r\n console.warn(\"Unknown 'target' option.\");\r\n return;\r\n }\r\n\r\n this.target = target;\r\n this.overlay = initOverlay(this.target, this.options);\r\n }\r\n\r\n show() {\r\n dom.css.addClass(this.overlay, this.options.activeClass);\r\n console.log(`overlay::add-class<${this.options.activeClass}>::show`);\r\n }\r\n\r\n hide() {\r\n dom.css.removeClass(this.overlay, this.options.activeClass);\r\n }\r\n}\r\n\r\n/* -- Default options for component -- */\r\nOverlay.defaults = {\r\n target: \"\",\r\n overlay: \"overlay__spinner\",\r\n activeClass: \"overlay--active\"\r\n}\r\n\r\nexport default Overlay;","import extend from \"@scripts/helpers/extend\";\r\nimport dom from \"@scripts/helpers/dom\";\r\n\r\n/**\r\n * Toggle panel component - Simple toggle panel to collapse/expand content\r\n * \r\n * @param el: The html [toggle-panel] element\r\n * @param options: Customized options for styling/behavior\r\n */\r\nclass TogglePanel {\r\n constructor(el, options) {\r\n this.el = el;\r\n this.options = extend({}, TogglePanel.defaults, options);\r\n this.init();\r\n }\r\n\r\n init() {\r\n this.isToggled = false;\r\n this.toggler = this.el.querySelector(this.options.toggleSelector);\r\n if (this.toggler) {\r\n this.toggler.addEventListener(\"click\", () => {\r\n this.isToggled ? this.hide() : this.show();\r\n });\r\n }\r\n }\r\n\r\n show() {\r\n this.isToggled = true;\r\n dom.css.addClass(this.el, this.options.activeClass);\r\n }\r\n\r\n hide() {\r\n this.isToggled = false;\r\n dom.css.removeClass(this.el, this.options.activeClass);\r\n }\r\n}\r\n\r\n/* -- Default options for component -- */\r\nTogglePanel.defaults = {\r\n toggleSelector: \".toggle-panel__toggle\",\r\n activeClass: \"toggle-panel--expanded\"\r\n};\r\n\r\nexport default TogglePanel;","// Components\r\nimport Overlay from \"@scripts/components/overlay\";\r\nimport TogglePanel from \"@scripts/components/toggle-panel\";\r\n\r\n// Disclaimer page module\r\nclass DisclaimerPage {\r\n constructor(el) {\r\n this.el = el;\r\n this.init();\r\n }\r\n\r\n init() {\r\n this.initTogglePanels();\r\n this.initOverlay();\r\n }\r\n\r\n initOverlay() {\r\n this.formOverlay = new Overlay({ target: this.el });\r\n\r\n const form = document.querySelector(\".js-disclaimer-form\");\r\n if (form) {\r\n form.addEventListener(\"submit\", (e) => {\r\n this.formOverlay.show();\r\n });\r\n }\r\n }\r\n\r\n initTogglePanels() {\r\n const togglePanelElms = document.querySelectorAll(\".js-toggle-panel\");\r\n for (var i = 0; i < togglePanelElms.length; i++) {\r\n new TogglePanel(togglePanelElms[i]);\r\n }\r\n }\r\n}\r\n\r\n// Startup\r\ndocument.addEventListener('DOMContentLoaded', () => {\r\n const el = document.getElementById(\"js-disclaimer-page\");\r\n if (el) new DisclaimerPage(el);\r\n});","import extend from \"@scripts/helpers/extend\";\r\nimport dom from \"@scripts/helpers/dom\";\r\n\r\n/*\r\n * Web Plugin Component -\r\n *\r\n * @param el: An input element\r\n * @param options: Configuration options\r\n */\r\n\r\n// Helpers\r\nfunction initMountingFrame(scope, el) {\r\n\r\n console.log(`plugin::options<${JSON.stringify(scope.options)}>::init-mounting-frame`);\r\n \r\n const frameElement = document.createElement(\"iframe\");\r\n frameElement.setAttribute(\"class\", scope.options.cssName);\r\n frameElement.setAttribute(\"src\", scope.options.url);\r\n frameElement.setAttribute(\"scrolling\", \"no\");\r\n el.appendChild(frameElement);\r\n\r\n return frameElement;\r\n}\r\n\r\nfunction addEventListeners(scope, el) {\r\n window.addEventListener(\"message\", onMessageReceived.bind(scope));\r\n el.addEventListener(\"onPluginLoad\", onPluginLoad.bind(scope));\r\n el.addEventListener(\"onPluginResize\", onPluginResize.bind(scope));\r\n}\r\n\r\n// Events\r\nfunction onPluginResize(e) {\r\n var content = e.detail.content;\r\n var frameMinHeight = parseInt(this.el.style.height, 10);\r\n\r\n if (!!content &&\r\n !!content.height && \r\n content.height !== frameMinHeight) {\r\n this.el.style.height = content.height + 'px';\r\n }\r\n}\r\n\r\nfunction onPluginLoad(data) {\r\n // Global expired / error handling\r\n switch (data.detail.content.page) {\r\n case \"SessionError\":\r\n this.invalidSession = true;\r\n window.location = \"/session/error\";\r\n break;\r\n case \"SessionExpired\":\r\n this.invalidSession = true;\r\n window.location = \"/session/expired\";\r\n break;\r\n case \"UnauthorizedError\":\r\n this.invalidSession = true;\r\n window.location = \"/session/unauthorized\";\r\n break;\r\n }\r\n}\r\n\r\nfunction onMessageReceived(e) {\r\n if (e.origin !== 'TODO: Origin checking') {\r\n // throw;\r\n }\r\n\r\n var eventData = {\r\n 'event_name': 'ParsingError',\r\n 'raw_event': e.data\r\n };\r\n \r\n try {\r\n eventData = JSON.parse(e.data);\r\n } catch (err) {\r\n // silence is golden\r\n console.warn(`plugin::JSON-parsing::error<${err}>::on-message`);\r\n }\r\n\r\n dom.events.triggerEvent(this.el, \"on\" + eventData.event_name, eventData);\r\n console.log(`plugin::event<${eventData.event_name}>::on-message`);\r\n}\r\n\r\nclass WebPlugin {\r\n constructor(el, options) {\r\n // Sanity check\r\n if (!el) {\r\n console.warn('plugin::invalid-el');\r\n throw \"Invalid mounting element\";\r\n }\r\n\r\n this.el = el;\r\n this.options = extend({}, WebPlugin.defaults, options);\r\n this.init();\r\n }\r\n\r\n init() {\r\n // iFrame\r\n this.frameEl = initMountingFrame(this, this.el);\r\n console.log('plugin::mount-iframe::init');\r\n \r\n // Attach events\r\n addEventListeners(this, this.el);\r\n console.log('plugin::add-event-listeners::init');\r\n }\r\n}\r\n\r\n/*\r\n * Default options -\r\n *\r\n * url: string - Url of the web plugin to mount\r\n */\r\nWebPlugin.defaults = {\r\n url: \"\",\r\n cssName: \"web-plugin__frame\"\r\n};\r\n\r\nexport default WebPlugin;","import extend from \"@scripts/helpers/extend\";\r\n\r\n/*\r\n * Page Title Component -\r\n *\r\n * @param el: An element for the text\r\n * @param options: Configuration options\r\n */\r\n\r\nfunction getPageTitleFromEl(key, el) {\r\n var attr = el.getAttribute(\"data-\" + key);\r\n\r\n if (!attr) {\r\n console.warn(\"[Invalid title key '\" + key + \"']\");\r\n }\r\n\r\n return attr || \"\";\r\n}\r\n\r\nclass PageTitle {\r\n constructor(el, options) {\r\n // Sanity check\r\n if (!el) {\r\n throw \"Invalid mounting element\";\r\n }\r\n\r\n this.el = el;\r\n this.options = extend({}, PageTitle.defaults, options);\r\n this.init();\r\n }\r\n\r\n init() {\r\n }\r\n\r\n // Public Methods\r\n setTitle(key) {\r\n var title = getPageTitleFromEl(key, this.el);\r\n this.el.innerText = title;\r\n }\r\n}\r\n\r\n/*\r\n * Default options -\r\n *\r\n */\r\nPageTitle.defaults = {\r\n};\r\n\r\nexport default PageTitle;","import $ from \"jquery\";\r\n\r\n/*\r\n * Ach Funding Data Service -\r\n * Wrapper for ach funding data calls\r\n */\r\nfunction executeCall(method, url, payload) {\r\n var csrfToken = $(\"[name='__RequestVerificationToken']\").val();\r\n\r\n if (typeof (payload) === \"object\") {\r\n payload[\"__RequestVerificationToken\"] = csrfToken;\r\n }\r\n\r\n var executionPromise = new Promise(\r\n function (resolve, reject) {\r\n $.ajax({\r\n type: method,\r\n url: url,\r\n data: payload,\r\n dataType: 'json',\r\n contentType: 'application/x-www-form-urlencoded; charset=utf-8',\r\n success: function (data) {\r\n return resolve(data);\r\n },\r\n error: function (jqXhr, textStatus, errorThrown) {\r\n var data = JSON.parse(jqXhr.responseText);\r\n return reject(data);\r\n }\r\n });\r\n }\r\n );\r\n\r\n return executionPromise;\r\n}\r\n\r\nclass AchFundingDataService {\r\n constructor() {\r\n }\r\n\r\n init() {\r\n }\r\n\r\n // Public Methods\r\n processFundingToken(fundingToken) {\r\n return executeCall(\"POST\", \"/funding/ach/process\", { fundingToken: fundingToken });\r\n }\r\n}\r\n\r\nconst dataService = new AchFundingDataService();\r\nexport default dataService;","// Components\r\nimport Overlay from \"@scripts/components/overlay\";\r\nimport WebPlugin from \"@scripts/components/web-plugin\";\r\nimport PageTitle from \"@scripts/components/page-title\";\r\nimport dataService from \"@scripts/pages/achFunding/services/achFundingDataService\";\r\n\r\n// Ach funding page module\r\nclass AchFundingPage {\r\n constructor(el) {\r\n this.el = el;\r\n this.init();\r\n }\r\n\r\n init() {\r\n this.initOverlay();\r\n this.initTitles();\r\n this.initWebPlugin();\r\n }\r\n\r\n initOverlay() {\r\n this.formOverlay = new Overlay({ target: this.el });\r\n this.formOverlay.show();\r\n }\r\n\r\n initTitles() {\r\n const pageTitleEl = document.querySelector(\".js-page-title\");\r\n this.pageTitle = new PageTitle(pageTitleEl);\r\n\r\n const bodyTitleEl = document.querySelector(\".js-body-title\");\r\n this.bodyTitle = new PageTitle(bodyTitleEl);\r\n }\r\n\r\n initWebPlugin() {\r\n const webPluginEl = document.querySelector(\".js-web-plugin\");\r\n\r\n this.webPlugin = new WebPlugin(webPluginEl, {\r\n url: webPluginEl.getAttribute(\"data-plugin-url\")\r\n });\r\n\r\n // Web plugin page load\r\n this.webPlugin.el.addEventListener(\"onPluginLoad\", (data) => {\r\n if (this.webPlugin.invalidSession === true) {\r\n return;\r\n }\r\n\r\n // Updates the titles/headers dynamically based\r\n // on what page the web plugin is currently in.\r\n this.pageTitle.setTitle(data.detail.content.page);\r\n this.bodyTitle.setTitle(data.detail.content.page);\r\n\r\n this.formOverlay.hide();\r\n\r\n window.scrollTo(0, 0);\r\n });\r\n\r\n // Funding confirmation cancellation\r\n this.webPlugin.el.addEventListener(\"onFundingCanceled\", (data) => {\r\n this.formOverlay.show();\r\n window.location = \"/funding\";\r\n });\r\n\r\n // Funding Errors\r\n this.webPlugin.el.addEventListener(\"onTerminalFailure\", (data) => {\r\n const error = data.detail.error || \"0\";\r\n this.formOverlay.show();\r\n window.location = \"/funding/ach/error?error=\" + error;\r\n });\r\n\r\n this.webPlugin.el.addEventListener(\"onTerminalFailureAcknowledged\", (data) => {\r\n this.formOverlay.show();\r\n window.location = \"/funding\";\r\n });\r\n\r\n this.webPlugin.el.addEventListener(\"onOverallVerificationAttemptsExceeded\", (data) => {\r\n this.formOverlay.show();\r\n window.location = \"/funding/verification-exceeded\";\r\n });\r\n\r\n // Funding FDT generation / confirmation\r\n this.webPlugin.el.addEventListener(\"onFDTGenerationSuccess\", (data) => {\r\n var fundingToken = data.detail.funding_token;\r\n\r\n this.formOverlay.show();\r\n\r\n let timeout = setTimeout(() => {\r\n window.location.href = \"/funding/ach/error\";\r\n }, 30000);\r\n\r\n dataService\r\n .processFundingToken(fundingToken)\r\n .then(() => {\r\n clearTimeout(timeout);\r\n window.location.href = \"/funding/ach/claimed\";\r\n })\r\n .catch((error) => {\r\n clearTimeout(timeout);\r\n const hasLocation = error && error.location && error.location.length > 0;\r\n window.location.href = hasLocation ? error.location : \"/funding/ach/error\";\r\n });\r\n });\r\n }\r\n}\r\n\r\n// Startup\r\ndocument.addEventListener('DOMContentLoaded', () => {\r\n const el = document.getElementById(\"js-ach-funding-page\");\r\n if (el) new AchFundingPage(el);\r\n});","import $ from \"jquery\";\r\n\r\n/*\r\n * Card Funding Data Service -\r\n * Wrapper for card funding data calls\r\n */\r\nfunction executeCall(method, url, payload) {\r\n var csrfToken = $(\"[name='__RequestVerificationToken']\").val();\r\n\r\n if (typeof (payload) === \"object\") {\r\n payload[\"__RequestVerificationToken\"] = csrfToken;\r\n }\r\n\r\n var executionPromise = new Promise(\r\n function (resolve, reject) {\r\n $.ajax({\r\n type: method,\r\n url: url,\r\n data: payload,\r\n dataType: 'json',\r\n contentType: 'application/x-www-form-urlencoded; charset=utf-8',\r\n success: function (data) {\r\n return resolve(data);\r\n },\r\n error: function (jqXhr, textStatus, errorThrown) {\r\n var data = JSON.parse(jqXhr.responseText);\r\n return reject(data);\r\n }\r\n });\r\n }\r\n );\r\n\r\n return executionPromise;\r\n}\r\n\r\nclass CardFundingDataService {\r\n constructor() {\r\n }\r\n\r\n // Public Methods\r\n processFundingToken(fundingToken) {\r\n return executeCall(\"POST\", \"/funding/card/process\", { fundingToken: fundingToken });\r\n }\r\n}\r\n\r\nconst dataService = new CardFundingDataService();\r\nexport default dataService;","// Components\r\nimport Overlay from \"@scripts/components/overlay\";\r\nimport WebPlugin from \"@scripts/components/web-plugin\";\r\nimport PageTitle from \"@scripts/components/page-title\";\r\nimport dataService from \"@scripts/pages/cardFunding/services/cardFundingDataService\";\r\n\r\n// Card funding page module\r\nclass CardFundingPage {\r\n constructor(el) {\r\n this.el = el;\r\n this.init();\r\n }\r\n\r\n init() {\r\n this.initOverlay();\r\n this.initTitles();\r\n this.initWebPlugin();\r\n }\r\n\r\n initOverlay() {\r\n this.formOverlay = new Overlay({ target: this.el });\r\n this.formOverlay.show();\r\n }\r\n\r\n initTitles() {\r\n const pageTitleEl = document.querySelector(\".js-page-title\");\r\n this.pageTitle = new PageTitle(pageTitleEl);\r\n\r\n const bodyTitleEl = document.querySelector(\".js-body-title\");\r\n this.bodyTitle = new PageTitle(bodyTitleEl);\r\n\r\n console.log('card-view::page-|-body-title-components::init-titles');\r\n }\r\n\r\n initWebPlugin() {\r\n const webPluginEl = document.querySelector(\".js-web-plugin\");\r\n\r\n this.webPlugin = new WebPlugin(webPluginEl, {\r\n url: webPluginEl.getAttribute(\"data-plugin-url\")\r\n });\r\n\r\n // Web plugin page load\r\n this.webPlugin.el.addEventListener(\"onPluginLoad\", (data) => {\r\n if (this.webPlugin.invalidSession === true) {\r\n return;\r\n }\r\n\r\n // Updates the titles/headers dynamically based\r\n // on what page the web plugin is currently in.\r\n this.pageTitle.setTitle(data.detail.content.page);\r\n this.bodyTitle.setTitle(data.detail.content.page);\r\n\r\n console.log(`card-view::page-title<${data.detail.content.page}>::on-plugin-loaded`);\r\n console.log(`card-view::body-title<${data.detail.content.page}>::on-plugin-loaded`);\r\n\r\n this.formOverlay.hide();\r\n\r\n window.scrollTo(0, 0);\r\n\r\n console.log('card-view::hide-overlay::on-plugin-loaded');\r\n });\r\n\r\n // Funding confirmation cancellation\r\n this.webPlugin.el.addEventListener(\"onFundingCanceled\", (data) => {\r\n console.log('card-view::funding-cancelled');\r\n \r\n this.formOverlay.show();\r\n console.log('card-view::show-overlay::funding-cancelled');\r\n\r\n window.location = \"/funding\";\r\n });\r\n\r\n // Funding Errors\r\n this.webPlugin.el.addEventListener(\"onTerminalFailure\", (data) => {\r\n const error = data.detail.error || \"0\";\r\n console.log(`card-view::error<${error}>::terminal-failure`);\r\n\r\n this.formOverlay.show();\r\n console.log('card-view::show-overlay::terminal-failure');\r\n \r\n window.location = \"/funding/card/error?error=\" + error;\r\n });\r\n\r\n this.webPlugin.el.addEventListener(\"onTerminalFailureAcknowledged\", (data) => {\r\n console.log('card-view::terminal-failure-ack');\r\n\r\n this.formOverlay.show();\r\n window.location = \"/funding\";\r\n });\r\n\r\n this.webPlugin.el.addEventListener(\"onOverallVerificationAttemptsExceeded\", (data) => {\r\n console.log('card-view::overall-attempts-exceeded');\r\n\r\n this.formOverlay.show();\r\n console.log('card-view::show-overlay::overall-attempts-exceeded');\r\n\r\n window.location = \"/funding/verification-exceeded\";\r\n });\r\n\r\n // Funding FDT generation / confirmation\r\n this.webPlugin.el.addEventListener(\"onFDTGenerationSuccess\", (data) => {\r\n console.log('card-view::fdt-success');\r\n const fundingToken = data.detail.funding_token;\r\n \r\n this.formOverlay.show();\r\n\r\n let timeout = setTimeout(() => {\r\n window.location.href = \"/funding/card/error\";\r\n }, 30000);\r\n\r\n dataService\r\n .processFundingToken(fundingToken)\r\n .then(() => {\r\n clearTimeout(timeout);\r\n window.location.href = \"/funding/card/claimed\";\r\n })\r\n .catch((error) => {\r\n\r\n console.log('card-view::error::process-token');\r\n\r\n clearTimeout(timeout);\r\n const hasLocation = error && error.location && error.location.length > 0;\r\n window.location.href = hasLocation ? error.location : \"/funding/card/error\";\r\n });\r\n });\r\n }\r\n}\r\n\r\n// Startup\r\ndocument.addEventListener('DOMContentLoaded', () => {\r\n const el = document.getElementById(\"js-card-funding-page\");\r\n if (el) {\r\n new CardFundingPage(el);\r\n console.log('card-view::init-js-components::dom-content-loaded');\r\n }\r\n});","import $ from \"jquery\";\r\n\r\n/*\r\n * Card Funding Data Service -\r\n * Wrapper for check funding data calls\r\n */\r\nfunction executeCall(method, url, payload) {\r\n var csrfToken = $(\"[name='__RequestVerificationToken']\").val();\r\n\r\n if (typeof (payload) === \"object\") {\r\n payload[\"__RequestVerificationToken\"] = csrfToken;\r\n }\r\n\r\n var executionPromise = new Promise(\r\n function (resolve, reject) {\r\n $.ajax({\r\n type: method,\r\n url: url,\r\n data: payload,\r\n dataType: 'json',\r\n contentType: 'application/x-www-form-urlencoded; charset=utf-8',\r\n success: function (data) {\r\n return resolve(data);\r\n },\r\n error: function (jqXhr, textStatus, errorThrown) {\r\n var data = JSON.parse(jqXhr.responseText);\r\n return reject(data);\r\n }\r\n });\r\n }\r\n );\r\n\r\n return executionPromise;\r\n}\r\n\r\nclass CheckFundingDataService {\r\n constructor() {\r\n }\r\n\r\n init() {\r\n }\r\n\r\n // Public Methods\r\n processFundingToken(fundingToken) {\r\n return executeCall(\"POST\", \"/funding/check/process\", { fundingToken: fundingToken });\r\n }\r\n}\r\n\r\nconst dataService = new CheckFundingDataService();\r\nexport default dataService;","// Components\r\nimport Overlay from \"@scripts/components/overlay\";\r\nimport WebPlugin from \"@scripts/components/web-plugin\";\r\nimport PageTitle from \"@scripts/components/page-title\";\r\nimport dataService from \"@scripts/pages/checkFunding/services/checkFundingDataService\";\r\n\r\n// Card funding page module\r\nclass CheckFundingPage {\r\n constructor(el) {\r\n this.el = el;\r\n this.init();\r\n }\r\n\r\n init() {\r\n this.initOverlay();\r\n this.initTitles();\r\n this.initWebPlugin();\r\n }\r\n\r\n initOverlay() {\r\n this.formOverlay = new Overlay({ target: this.el });\r\n this.formOverlay.show();\r\n }\r\n\r\n initTitles() {\r\n const pageTitleEl = document.querySelector(\".js-page-title\");\r\n this.pageTitle = new PageTitle(pageTitleEl);\r\n\r\n const bodyTitleEl = document.querySelector(\".js-body-title\");\r\n this.bodyTitle = new PageTitle(bodyTitleEl);\r\n }\r\n\r\n initWebPlugin() {\r\n const webPluginEl = document.querySelector(\".js-web-plugin\");\r\n\r\n this.webPlugin = new WebPlugin(webPluginEl, {\r\n url: webPluginEl.getAttribute(\"data-plugin-url\")\r\n });\r\n\r\n // Web plugin page load\r\n this.webPlugin.el.addEventListener(\"onPluginLoad\", (data) => {\r\n if (this.webPlugin.invalidSession === true) {\r\n return;\r\n }\r\n\r\n // Updates the titles/headers dynamically based\r\n // on what page the web plugin is currently in.\r\n this.pageTitle.setTitle(data.detail.content.page);\r\n this.bodyTitle.setTitle(data.detail.content.page);\r\n\r\n this.formOverlay.hide();\r\n\r\n window.scrollTo(0, 0);\r\n });\r\n\r\n // Funding confirmation cancellation\r\n this.webPlugin.el.addEventListener(\"onFundingCanceled\", (data) => {\r\n this.formOverlay.show();\r\n window.location = \"/funding\";\r\n });\r\n\r\n // Funding Errors\r\n this.webPlugin.el.addEventListener(\"onTerminalFailure\", (data) => {\r\n const error = data.detail.error || \"0\";\r\n this.formOverlay.show();\r\n window.location = \"/funding/check/error?error=\" + error;\r\n });\r\n\r\n this.webPlugin.el.addEventListener(\"onTerminalFailureAcknowledged\", (data) => {\r\n this.formOverlay.show();\r\n window.location = \"/funding\";\r\n });\r\n\r\n this.webPlugin.el.addEventListener(\"onOverallVerificationAttemptsExceeded\", (data) => {\r\n this.formOverlay.show();\r\n window.location = \"/funding/verification-exceeded\";\r\n });\r\n\r\n this.webPlugin.el.addEventListener(\"onCustomerCancelledPayment\", (data) => {\r\n this.formOverlay.show();\r\n window.location = \"/funding/check/cancelled\";\r\n });\r\n\r\n // Funding FDT generation / confirmation\r\n this.webPlugin.el.addEventListener(\"onFDTGenerationSuccess\", (data) => {\r\n var fundingToken = data.detail.funding_token;\r\n\r\n this.formOverlay.show();\r\n\r\n let timeout = setTimeout(() => {\r\n window.location.href = \"/funding/check/error\";\r\n }, 30000);\r\n\r\n dataService\r\n .processFundingToken(fundingToken)\r\n .then(() => {\r\n clearTimeout(timeout);\r\n window.location.href = \"/funding/check/claimed\";\r\n })\r\n .catch((error) => {\r\n clearTimeout(timeout);\r\n const hasLocation = error && error.location && error.location.length > 0;\r\n window.location.href = hasLocation ? error.location : \"/funding/check/error\";\r\n });\r\n });\r\n }\r\n}\r\n\r\n// Startup\r\ndocument.addEventListener('DOMContentLoaded', () => {\r\n const el = document.getElementById(\"js-check-funding-page\");\r\n if (el) new CheckFundingPage(el);\r\n});","import $ from \"jquery\";\r\n\r\n/*\r\n * PayPal Funding Data Service -\r\n * Wrapper for paypal funding data calls\r\n */\r\nfunction executeCall(method, url, payload) {\r\n var csrfToken = $(\"[name='__RequestVerificationToken']\").val();\r\n\r\n if (typeof (payload) === \"object\") {\r\n payload[\"__RequestVerificationToken\"] = csrfToken;\r\n }\r\n\r\n var executionPromise = new Promise(\r\n function (resolve, reject) {\r\n $.ajax({\r\n type: method,\r\n url: url,\r\n data: payload,\r\n dataType: 'json',\r\n contentType: 'application/x-www-form-urlencoded; charset=utf-8',\r\n success: function (data) {\r\n return resolve(data);\r\n },\r\n error: function (jqXhr, textStatus, errorThrown) {\r\n var data = JSON.parse(jqXhr.responseText);\r\n return reject(data);\r\n }\r\n });\r\n }\r\n );\r\n\r\n return executionPromise;\r\n}\r\n\r\nclass PayPalFundingDataService {\r\n constructor() {\r\n }\r\n\r\n init() {\r\n }\r\n\r\n // Public Methods\r\n processFundingToken(fundingToken) {\r\n return executeCall(\"POST\", \"/funding/paypal/process\", { fundingToken: fundingToken });\r\n }\r\n}\r\n\r\nconst dataService = new PayPalFundingDataService();\r\nexport default dataService;","// Components\r\nimport Overlay from \"@scripts/components/overlay\";\r\nimport WebPlugin from \"@scripts/components/web-plugin\";\r\nimport PageTitle from \"@scripts/components/page-title\";\r\nimport dataService from \"@scripts/pages/payPalFunding/services/payPalFundingDataService\";\r\n\r\n// PayPal funding page module\r\nclass PayPalFundingPage {\r\n constructor(el) {\r\n this.el = el;\r\n this.init();\r\n }\r\n\r\n init() {\r\n this.initOverlay();\r\n this.initTitles();\r\n this.initWebPlugin();\r\n }\r\n\r\n initOverlay() {\r\n this.formOverlay = new Overlay({ target: this.el });\r\n this.formOverlay.show();\r\n }\r\n\r\n initTitles() {\r\n const pageTitleEl = document.querySelector(\".js-page-title\");\r\n this.pageTitle = new PageTitle(pageTitleEl);\r\n\r\n const bodyTitleEl = document.querySelector(\".js-body-title\");\r\n this.bodyTitle = new PageTitle(bodyTitleEl);\r\n }\r\n\r\n initWebPlugin() {\r\n const webPluginEl = document.querySelector(\".js-web-plugin\");\r\n\r\n this.webPlugin = new WebPlugin(webPluginEl, {\r\n url: webPluginEl.getAttribute(\"data-plugin-url\")\r\n });\r\n\r\n // Web plugin page load\r\n this.webPlugin.el.addEventListener(\"onPluginLoad\", (data) => {\r\n if (this.webPlugin.invalidSession === true) {\r\n return;\r\n }\r\n\r\n // Updates the titles/headers dynamically based\r\n // on what page the web plugin is currently in.\r\n this.pageTitle.setTitle(data.detail.content.page);\r\n this.bodyTitle.setTitle(data.detail.content.page);\r\n\r\n this.formOverlay.hide();\r\n\r\n window.scrollTo(0, 0);\r\n });\r\n\r\n // Funding confirmation cancellation\r\n this.webPlugin.el.addEventListener(\"onFundingCanceled\", (data) => {\r\n this.formOverlay.show();\r\n window.location = \"/funding\";\r\n });\r\n\r\n // Funding Errors\r\n this.webPlugin.el.addEventListener(\"onTerminalFailure\", (data) => {\r\n const error = data.detail.error || \"0\";\r\n this.formOverlay.show();\r\n window.location = \"/funding/paypal/error?error=\" + error;\r\n });\r\n\r\n this.webPlugin.el.addEventListener(\"onTerminalFailureAcknowledged\", (data) => {\r\n this.formOverlay.show();\r\n window.location = \"/funding\";\r\n });\r\n\r\n this.webPlugin.el.addEventListener(\"onOverallVerificationAttemptsExceeded\", (data) => {\r\n this.formOverlay.show();\r\n window.location = \"/funding/verification-exceeded\";\r\n });\r\n \r\n // Funding FDT generation / confirmation\r\n this.webPlugin.el.addEventListener(\"onFDTGenerationSuccess\", (data) => {\r\n var fundingToken = data.detail.funding_token;\r\n \r\n this.formOverlay.show();\r\n\r\n let timeout = setTimeout(() => {\r\n window.location.href = \"/funding/paypal/error\";\r\n }, 30000);\r\n\r\n dataService\r\n .processFundingToken(fundingToken)\r\n .then(() => {\r\n clearTimeout(timeout);\r\n window.location.href = \"/funding/paypal/claimed\";\r\n })\r\n .catch((error) => {\r\n clearTimeout(timeout);\r\n const hasLocation = error && error.location && error.location.length > 0;\r\n window.location.href = hasLocation ? error.location : \"/funding/paypal/error\";\r\n });\r\n });\r\n }\r\n}\r\n\r\n// Startup\r\ndocument.addEventListener('DOMContentLoaded', () => {\r\n const el = document.getElementById(\"js-paypal-funding-page\");\r\n if (el) new PayPalFundingPage(el);\r\n});","// Components\r\nimport Overlay from \"@scripts/components/overlay\";\r\nimport { deobfuscateStringValue } from \"@scripts/helpers/documentEmbedding\";\r\n\r\n// Document Review page module\r\nclass DocumentReviewPage {\r\n constructor(el) {\r\n this.el = el;\r\n this.init();\r\n }\r\n\r\n init() {\r\n this.initOverlay();\r\n this.initAdobeDc();\r\n }\r\n\r\n initOverlay() {\r\n this.formOverlay = new Overlay({ target: this.el });\r\n\r\n const form = document.querySelector(\".js-document-review-form\");\r\n if (form) {\r\n form.addEventListener(\"submit\", (e) => {\r\n this.formOverlay.show();\r\n });\r\n }\r\n }\r\n\r\n initAdobeDc() {\r\n const adobeDcElement = document.getElementById(\"adobe-dc-view\");\r\n\r\n if (adobeDcElement) {\r\n const dl = deobfuscateStringValue(adobeDcElement.dataset.dl);\r\n const dak = deobfuscateStringValue(adobeDcElement.dataset.dak);\r\n\r\n document.addEventListener(\"adobe_dc_view_sdk.ready\", function () {\r\n const adobeDCView = new AdobeDC.View({ clientId: dak, divId: \"adobe-dc-view\" });\r\n adobeDCView.previewFile(\r\n {\r\n content: { location: { url: dl } },\r\n metaData: { fileName: adobeDcElement.dataset.dfn }\r\n },\r\n {\r\n embedMode: adobeDcElement.dataset.dem,\r\n showDownloadPDF: true,\r\n showThumbnails: false,\r\n showBookmarks: false,\r\n showAnnotationTools: false,\r\n showPrintPDF: true\r\n }\r\n );\r\n });\r\n }\r\n }\r\n\r\n}\r\n\r\n// Startup\r\ndocument.addEventListener('DOMContentLoaded', () => {\r\n const el = document.getElementById(\"js-document-review-page\");\r\n if (el) new DocumentReviewPage(el);\r\n});","import extend from \"@scripts/helpers/extend\";\r\nimport dom from \"@scripts/helpers/dom\";\r\n\r\n/*\r\n * Value Format Input Component -\r\n *\r\n * @param el: An input element\r\n * @param options: Configuration options\r\n */\r\nconst translations = {\r\n L: { pattern: \"^[a-zA-Z]$\", placeholder: \"_\" },\r\n A: { pattern: \"^[a-zA-Z0-9]$\", placeholder: \"_\" },\r\n 0: { pattern: \"^[0-9]$\", placeholder: \"#\" }\r\n};\r\n\r\n// Helpers\r\nfunction escapeRegExp(string) {\r\n return string.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\$&'); // $& means the whole matched string\r\n}\r\n\r\nfunction buildFormatMap(format) {\r\n if (!format) {\r\n return \"\";\r\n }\r\n\r\n const escapeCharacterMap = {\r\n pattern: /^\\\\$/,\r\n placeholder: \"\\\\\",\r\n isLiteral: true\r\n };\r\n\r\n let formatMap = [],\r\n previousWasEscape = false;\r\n\r\n for (let i = 0; i < format.length; i++) {\r\n const c = format.charAt(i);\r\n\r\n // Current letter is an escape literal\r\n if (c === '\\\\') {\r\n // Previous character was an escape literal\r\n // so we should treat the escape as a literal\r\n // and match the '\\'\r\n if (previousWasEscape) {\r\n formatMap.push(escapeCharacterMap);\r\n }\r\n\r\n // If previous character was an escape literal,\r\n // current escape literal is being escaped so reset\r\n // for the next letter.\r\n previousWasEscape = !previousWasEscape;\r\n continue;\r\n }\r\n\r\n // Current letter is a mask character\r\n if (translations[c]) {\r\n // If mask character escaped, append the character,\r\n // Otherwise append the character's regex\r\n const patternValue = previousWasEscape\r\n ? \"^\" + c + \"$\"\r\n : translations[c].pattern;\r\n\r\n const placeholderValue = previousWasEscape\r\n ? c\r\n : translations[c].placeholder;\r\n\r\n formatMap.push({\r\n pattern: patternValue,\r\n placeholder: placeholderValue,\r\n isLiteral: previousWasEscape\r\n });\r\n }\r\n else {\r\n // Previous character was an escape literal\r\n // so we should treat the escape as a literal\r\n // and match the '\\'\r\n if (previousWasEscape) {\r\n formatMap.push(escapeCharacterMap);\r\n }\r\n\r\n // Finally if not an escape or mask character,\r\n // treat the character as a literal.\r\n formatMap.push({\r\n pattern: \"^\" + escapeRegExp(c) + \"$\",\r\n placeholder: c,\r\n isLiteral: true\r\n });\r\n }\r\n\r\n // Current char was not an escape literal\r\n previousWasEscape = false;\r\n }\r\n\r\n if (previousWasEscape) {\r\n formatMap.push(escapeCharacterMap);\r\n }\r\n\r\n return formatMap;\r\n}\r\n\r\nfunction cleanFormat(formatMap, value) {\r\n let result = \"\";\r\n\r\n // We want to clean the provided value of any literal characters.\r\n // At the same time, try to greedy match as many characters as\r\n // possible against the value format. \r\n // Loop through each character of the provided value.\r\n for (let i = 0, valueLen = value.length; i < valueLen; i++) {\r\n const char = value.charAt(i);\r\n\r\n // Try to greedy match that against the next matching non-literal character\r\n for (let j = i, formatMapLen = formatMap.length; j < formatMapLen; j++) {\r\n const valueFormat = formatMap[j],\r\n valueRegex = new RegExp(valueFormat.pattern, \"i\");\r\n\r\n // If the current character in the format is a literal,\r\n // test that the current character in the provided value\r\n // matches that literal. If it does, we can move on to\r\n // the next character in the provided value\r\n if (valueFormat.isLiteral) {\r\n if (valueRegex.test(char)) {\r\n break;\r\n }\r\n } else {\r\n // If the current character is not a literal, then\r\n // it must match the value format in order to be included\r\n // in the cleaned result.\r\n if (valueRegex.test(char)) {\r\n result += char;\r\n } else {\r\n // If current character does not match the,\r\n // value format, remove it from the test and\r\n // adjust indices\r\n if (i > 0) {\r\n value = value.substr(0, i) + value.substr(i + 1);\r\n i--;\r\n valueLen--;\r\n }\r\n }\r\n\r\n // No matter what, we break from the greedy match against\r\n // the value format and move on to the next character\r\n break;\r\n }\r\n }\r\n }\r\n\r\n return result;\r\n}\r\n\r\nfunction formatValue(formatMap, value) {\r\n let result = \"\",\r\n charIndex = 0;\r\n\r\n // Loop through the entire format map until\r\n // we exhaust the length of the current value\r\n for (let i = 0, len = formatMap.length; i < len; i++) {\r\n const char = value.charAt(charIndex),\r\n valueFormat = formatMap[i],\r\n valueRegex = new RegExp(valueFormat.pattern, \"i\");\r\n\r\n // If current value format character is a literal\r\n // simply append it to the format\r\n if (valueFormat.isLiteral) {\r\n result += valueFormat.placeholder;\r\n }\r\n else {\r\n // If not a literal, then test to make sure\r\n // it matches the expected value format character\r\n if (valueRegex.test(char)) {\r\n // Found a match, append it to the formatted\r\n // result and move to the next character in the\r\n // provided value\r\n result += char;\r\n charIndex++;\r\n } else {\r\n // If it does not match, we cannot continue\r\n break;\r\n }\r\n }\r\n }\r\n\r\n return result;\r\n}\r\n\r\nfunction addEventListeners(scope, input) {\r\n input.addEventListener(\"keypress\", onFormatValue.bind(scope));\r\n input.addEventListener(\"keydown\", onFormatValueBackspace.bind(scope));\r\n input.addEventListener(\"paste\", onReformatValue.bind(scope));\r\n input.addEventListener(\"input\", onReformatValue.bind(scope));\r\n}\r\n\r\nfunction initPlaceholders(formatMap, input) {\r\n var placeholder = \"\";\r\n\r\n formatMap.forEach(m => {\r\n placeholder += m.placeholder;\r\n });\r\n\r\n input.placeholder = placeholder;\r\n}\r\n\r\nfunction initInputValue(formatMap, input) {\r\n var value = formatValue(formatMap, input.value);\r\n input.value = value;\r\n}\r\n\r\n// Events\r\nfunction onFormatValue(e) {\r\n const input = e.target;\r\n const which = e.which || e.keyCode;\r\n const char = String.fromCharCode(which);\r\n const formatMap = this.formatMap;\r\n\r\n // If textbox has selected text do not restrict\r\n // (restriction check will be made on following type)\r\n if (dom.inputs.hasSelectedText(input)) {\r\n return;\r\n }\r\n\r\n // If already prevented (invalid character, max length reached) return\r\n if (e.defaultPrevented) {\r\n return;\r\n }\r\n\r\n // Allow enters\r\n if (which === 13) {\r\n return;\r\n }\r\n\r\n e.preventDefault();\r\n\r\n let caretPosition = dom.inputs.getCaretPosition(input);\r\n const prevValue = input.value;\r\n\r\n // Find next non-literal\r\n while (caretPosition < prevValue.length &&\r\n formatMap[caretPosition].isLiteral) {\r\n caretPosition++;\r\n }\r\n\r\n // Concatenate the typed character at the position typed at\r\n let value = (input.value.substr(0, caretPosition) + char + input.value.substr(caretPosition));\r\n\r\n // Reformat the new value\r\n value = cleanFormat(formatMap, value);\r\n input.value = formatValue(formatMap, value);\r\n\r\n // Reset the caret position to the next position (next char or next non literal)\r\n let nextPosition = caretPosition;\r\n \r\n // Only change the cursor position if the value changed\r\n if (prevValue !== input.value) {\r\n nextPosition++;\r\n\r\n while (nextPosition < input.value.length &&\r\n formatMap[nextPosition].isLiteral) {\r\n nextPosition++;\r\n\r\n if (input.value.charAt(nextPosition) === char) {\r\n nextPosition++;\r\n break;\r\n }\r\n }\r\n\r\n // If originally typed against a literal,\r\n // the index will be off by 1. Increase to move\r\n // it into the correct position\r\n if (nextPosition < formatMap.length && formatMap[caretPosition].isLiteral) {\r\n nextPosition++;\r\n }\r\n }\r\n\r\n dom.inputs.setCaretPosition(input, nextPosition);\r\n\r\n return dom.events.triggerEvent(input, \"change\");\r\n}\r\n\r\nfunction onReformatValue(e) {\r\n const input = e.target,\r\n formatMap = this.formatMap;\r\n\r\n let value = input.value;\r\n\r\n // Reformat the new value\r\n value = cleanFormat(formatMap, value);\r\n input.value = formatValue(formatMap, value);\r\n\r\n return dom.events.triggerEvent(input, \"change\");\r\n}\r\n\r\nfunction onFormatValueBackspace(e) {\r\n const input = e.target;\r\n const keyCode = e.which || e.keyCode;\r\n const isBackspace = keyCode === 8;\r\n const isDelete = keyCode === 46;\r\n const formatMap = this.formatMap;\r\n\r\n // if not backspace or delete skip check\r\n if (!isBackspace && !isDelete) {\r\n return;\r\n }\r\n\r\n // If textbox has selected text allow event to bubble\r\n if (dom.inputs.hasSelectedText(input)) {\r\n return;\r\n }\r\n\r\n // If already prevented (invalid character, max length reached) return\r\n if (e.defaultPrevented) {\r\n return;\r\n }\r\n\r\n // Stop backspace/delete from bubbling\r\n e.preventDefault();\r\n\r\n let caretPosition = dom.inputs.getCaretPosition(input),\r\n characterPosition = caretPosition,\r\n prevValue = input.value,\r\n value = prevValue;\r\n\r\n // Backspace was clicked, find previous non-literal\r\n if (isBackspace && caretPosition > 0) {\r\n characterPosition--;\r\n\r\n while (characterPosition > 0 &&\r\n formatMap[characterPosition].isLiteral) {\r\n characterPosition--;\r\n }\r\n \r\n // Remove the character + any literals it came across\r\n value = prevValue.substr(0, characterPosition) + prevValue.substr(caretPosition);\r\n }\r\n\r\n // Delete was clicked, find next non-literal\r\n if (isDelete && caretPosition < prevValue.length) {\r\n characterPosition++;\r\n \r\n while (characterPosition < prevValue.length &&\r\n formatMap[characterPosition].isLiteral) {\r\n characterPosition++;\r\n }\r\n\r\n // Remove the character + any literals it came across\r\n value = prevValue.substr(0, caretPosition) + prevValue.substr(characterPosition);\r\n }\r\n\r\n // No deletions occurred\r\n if (value === prevValue) {\r\n return;\r\n }\r\n\r\n // Reformat the new value\r\n value = cleanFormat(formatMap, value);\r\n input.value = formatValue(formatMap, value);\r\n\r\n // Reset the caret position\r\n const nextCaretPosition = isBackspace ? characterPosition : caretPosition;\r\n dom.inputs.setCaretPosition(input, nextCaretPosition);\r\n\r\n return dom.events.triggerEvent(input, \"change\");\r\n}\r\n\r\nclass ValueFormatInput {\r\n constructor(el, options) {\r\n // Sanity check\r\n if (!el || !el.tagName || el.tagName.toLowerCase() !== \"input\") {\r\n throw \"Invalid element, expected type 'input'\";\r\n }\r\n\r\n // No format specified\r\n if (!options || !options.format || !options.format.trim()) {\r\n return;\r\n }\r\n\r\n this.el = el;\r\n this.options = extend({}, ValueFormatInput.defaults, options);\r\n this.init();\r\n }\r\n\r\n init() {\r\n this.options.format = this.options.format.trim();\r\n\r\n // Builds the formatting map used for input validation / formatting\r\n this.formatMap = buildFormatMap(this.options.format);\r\n \r\n // Init placeholders\r\n if (this.options.placeholders) {\r\n initPlaceholders(this.formatMap, this.el);\r\n }\r\n\r\n // Init initial value\r\n if (this.options.initMaskOnStartup) {\r\n initInputValue(this.formatMap, this.el);\r\n }\r\n \r\n // Attach events\r\n addEventListeners(this, this.el);\r\n }\r\n}\r\n\r\n/*\r\n * Default options -\r\n *\r\n * format: \"\" - Value format to use for input formatting\r\n */\r\nValueFormatInput.defaults = {\r\n format: \"\",\r\n placeholders: true,\r\n initMaskOnStartup: false\r\n};\r\n\r\nexport default ValueFormatInput;","// Components\r\nimport dom from \"@scripts/helpers/dom\";\r\nimport Overlay from \"@scripts/components/overlay\";\r\nimport ValueFormatInput from \"@scripts/components/valueformat-input\";\r\nimport $ from \"jquery\";\r\n\r\n// One time authorization page module\r\nclass OneTimeAuthorizationAuthorizePage {\r\n constructor(el) {\r\n this.el = el;\r\n this.init();\r\n }\r\n\r\n init() {\r\n this.initOverlay();\r\n this.initRegexInputs();\r\n this.initDynamicValidation();\r\n\r\n dom.inputs.focusFirst();\r\n }\r\n\r\n initOverlay() {\r\n this.formOverlay = new Overlay({ target: this.el });\r\n\r\n const form = document.querySelector(\".js-send-otac-form\");\r\n if (form) {\r\n form.addEventListener(\"submit\", (e) => {\r\n // Allows form submission some time to be cancelled\r\n // due to validation\r\n setTimeout(() => {\r\n var validationResult = (form.getAttribute(\"data-validated\") || \"\").toLowerCase();\r\n\r\n if (validationResult === 'true') {\r\n this.formOverlay.show();\r\n }\r\n });\r\n });\r\n }\r\n }\r\n\r\n initDynamicValidation() {\r\n let input = document.querySelector(\".js-valueformat-input\");\r\n var format = input.getAttribute(\"data-valueformat\");\r\n\r\n input.addEventListener('keyup', (e) => {\r\n if (input.value.length === format.length) {\r\n $(\".icon-overlay\").removeClass(\"icon-overlay--disabled\");\r\n } else {\r\n $(\".icon-overlay\").addClass(\"icon-overlay--disabled\");\r\n }\r\n });\r\n }\r\n\r\n initRegexInputs() {\r\n let inputs = [...document.querySelectorAll(\".js-valueformat-input\")];\r\n inputs.forEach(input => {\r\n var format = input.getAttribute(\"data-valueformat\");\r\n new ValueFormatInput(input, {\r\n format: format,\r\n placeholders: false,\r\n initMaskOnStartup: false\r\n });\r\n });\r\n }\r\n}\r\n\r\n// Startup\r\ndocument.addEventListener('DOMContentLoaded', () => {\r\n const el = document.getElementById(\"js-one-time-auth-page\");\r\n if (el) new OneTimeAuthorizationAuthorizePage(el);\r\n});\r\n\r\n// Modal Controls\r\n$(document).ready(function () {\r\n $(\".add-pop-up\").click(function (e) {\r\n $('#ResendOtacModal').removeClass(\"modal--hidden\");\r\n });\r\n});\r\n\r\n$(document).ready(function () {\r\n $(\".remove-pop-up, .modal__backdrop, .modal__close\").click(function (e) {\r\n $('#ResendOtacModal').addClass(\"modal--hidden\");\r\n });\r\n});\r\n","import extend from \"@scripts/helpers/extend\";\r\nimport dom from \"@scripts/helpers/dom\";\r\nimport $ from \"jquery\";\r\n\r\n// Helpers\r\nfunction setListError(el, options) {\r\n dom.css.addClass(el, options.invalidClass);\r\n}\r\n\r\nfunction clearListError(el, options) {\r\n dom.css.removeClass(el, options.invalidClass);\r\n}\r\n\r\nfunction clearListActive(el, options) {\r\n $(`.${options.optionClass}.${options.activeClass}`, el).removeClass(options.activeClass);\r\n}\r\n\r\nfunction setRadioActive(el, options) {\r\n $(el).closest(`.${options.optionClass}`).addClass(options.activeClass);\r\n}\r\n\r\n// Events\r\nfunction onRadioChange(e) {\r\n const radio = e.target;\r\n if (radio.checked) {\r\n clearListError(this.el, this.options);\r\n\r\n clearListActive(this.el, this.options);\r\n setRadioActive(radio, this.options);\r\n }\r\n}\r\n\r\n/**\r\n * Funding destinations list component - Adds custom validation to the funding destinations selection screen\r\n * TODO: Refactor into generic \"radio-list\" component\r\n * \r\n * @param el: The html element\r\n * @param options: Customized options for styling/behavior\r\n */\r\nclass FundingDestinationsList {\r\n constructor(el, options) {\r\n this.el = el;\r\n this.options = extend({}, FundingDestinationsList.defaults, options);\r\n this.init();\r\n }\r\n\r\n init() {\r\n this.radios = $(\"input[type='radio']\", this.el);\r\n for (let i = 0; i < this.radios.length; i++) {\r\n const radio = this.radios[i];\r\n radio.addEventListener(\"change\", onRadioChange.bind(this));\r\n }\r\n }\r\n\r\n validate() {\r\n var isSet = false;\r\n for (let i = 0; i < this.radios.length; i++) {\r\n if (this.radios[i].checked) {\r\n isSet = true;\r\n break;\r\n }\r\n }\r\n\r\n if (!isSet) {\r\n setListError(this.el, this.options);\r\n return false;\r\n }\r\n\r\n return true;\r\n }\r\n\r\n hide() {\r\n dom.css.removeClass(this.el, this.options.invalidClass);\r\n }\r\n}\r\n\r\n/* -- Default options for component -- */\r\nFundingDestinationsList.defaults = {\r\n optionClass: \"funding-destinations-list__option\",\r\n activeClass: \"funding-destinations-list__option--active\",\r\n invalidClass: \"funding-destinations-list--invalid\"\r\n}\r\n\r\nexport default FundingDestinationsList;","// Components\r\nimport Overlay from \"@scripts/components/overlay\";\r\nimport FundingDestinationsList from \"@scripts/components/funding-destinations-list\";\r\n\r\n// Funding destinations page module\r\nclass FundingDestinationsPage {\r\n constructor(el) {\r\n this.el = el;\r\n this.init();\r\n }\r\n\r\n init() {\r\n this.initFundingOptionsList();\r\n this.initFundingOptionsForm();\r\n }\r\n\r\n initFundingOptionsList() {\r\n const fundingDestinationsListEl = document.querySelector(\".js-funding-destinations-list\");\r\n this.fundingDestinationsList = new FundingDestinationsList(fundingDestinationsListEl);\r\n }\r\n\r\n initFundingOptionsForm() {\r\n const formOverlay = new Overlay({ target: this.el });\r\n const fundingForm = document.querySelector(\".js-funding-destinations-form\");\r\n\r\n fundingForm.addEventListener(\"submit\", (e) => {\r\n var isValid = this.fundingDestinationsList.validate();\r\n\r\n if (!isValid) {\r\n e.preventDefault();\r\n return false;\r\n }\r\n\r\n formOverlay.show();\r\n });\r\n }\r\n}\r\n\r\n// Startup\r\ndocument.addEventListener('DOMContentLoaded', () => {\r\n const el = document.getElementById(\"js-fd-page\");\r\n if (el) new FundingDestinationsPage(el);\r\n});","// Components\r\nimport dom from \"@scripts/helpers/dom\";\r\nimport Overlay from \"@scripts/components/overlay\";\r\nimport ValueFormatInput from \"@scripts/components/valueformat-input\";\r\n\r\n// Recipient authentication page module\r\nclass RecipientAuthenticationPage {\r\n constructor(el) {\r\n this.el = el;\r\n this.init();\r\n }\r\n\r\n init() {\r\n this.initOverlay();\r\n this.initRegexInputs();\r\n this.initChallengeFieldOnChange();\r\n\r\n dom.inputs.focusFirst();\r\n }\r\n\r\n initOverlay() {\r\n this.formOverlay = new Overlay({ target: this.el });\r\n\r\n const form = document.querySelector(\".js-rec-auth-form\");\r\n if (form) {\r\n form.addEventListener(\"submit\", (e) => {\r\n // Allows form submission some time to be cancelled\r\n // due to validation\r\n setTimeout(() => {\r\n var validationResult = (form.getAttribute(\"data-validated\") || \"\").toLowerCase();\r\n\r\n if (validationResult === 'true') {\r\n this.formOverlay.show();\r\n }\r\n });\r\n });\r\n }\r\n }\r\n\r\n initRegexInputs() {\r\n let inputs = [...document.querySelectorAll(\".js-valueformat-input\")];\r\n inputs.forEach(input => {\r\n var format = input.getAttribute(\"data-valueformat\");\r\n new ValueFormatInput(input, {\r\n format: format,\r\n placeholders: false,\r\n initMaskOnStartup: false\r\n });\r\n });\r\n }\r\n\r\n initChallengeFieldOnChange() {\r\n const element = document.querySelector('.js-challenge-text');\r\n if (element) {\r\n element.addEventListener('change', () => {\r\n element.className = element.options[element.selectedIndex].className;\r\n });\r\n }\r\n }\r\n}\r\n\r\n// Startup\r\ndocument.addEventListener('DOMContentLoaded', () => {\r\n const el = document.getElementById(\"js-rec-auth-page\");\r\n if (el) new RecipientAuthenticationPage(el);\r\n});","// Components\r\nimport Overlay from \"@scripts/components/overlay\";\r\n\r\n// -- TODO: Extract generic radio-list component from funding-destinations-list and refactor usages\r\nimport CancelPaymentList from \"@scripts/components/funding-destinations-list\";\r\n\r\n// Funding destinations page module\r\nclass CancelPaymentPage {\r\n constructor(el) {\r\n this.el = el;\r\n this.init();\r\n }\r\n\r\n init() {\r\n this.initCancelPaymentOptionsList();\r\n this.initCancelPaymentOptionsForm();\r\n }\r\n\r\n initCancelPaymentOptionsList() {\r\n const listEl = document.querySelector(\".js-cancel-payment-list\");\r\n this.cancelPaymentList = new CancelPaymentList(listEl);\r\n }\r\n\r\n initCancelPaymentOptionsForm() {\r\n const formOverlay = new Overlay({ target: this.el });\r\n const form = document.querySelector(\".js-cancel-payment-form\");\r\n\r\n form.addEventListener(\"submit\", (e) => {\r\n var isValid = this.cancelPaymentList.validate();\r\n\r\n if (!isValid) {\r\n e.preventDefault();\r\n return false;\r\n }\r\n\r\n formOverlay.show();\r\n });\r\n }\r\n}\r\n\r\n// Startup\r\ndocument.addEventListener('DOMContentLoaded', () => {\r\n const el = document.getElementById(\"js-cancel-payment-page\");\r\n if (el) new CancelPaymentPage(el);\r\n});","// Components\r\nimport dom from \"@scripts/helpers/dom\";\r\nimport Overlay from \"@scripts/components/overlay\";\r\n\r\n// Delegation page module\r\nclass DelegationPage {\r\n constructor(el) {\r\n this.el = el;\r\n this.init();\r\n }\r\n\r\n init() {\r\n this.initOverlay();\r\n \r\n dom.inputs.focusFirst();\r\n }\r\n\r\n initOverlay() {\r\n this.formOverlay = new Overlay({ target: this.el });\r\n\r\n const form = document.querySelector(\".js-delegation-selection-form\");\r\n if (form) {\r\n form.addEventListener(\"submit\", (e) => {\r\n // Allows form submission some time to be cancelled\r\n // due to validation\r\n setTimeout(() => {\r\n var validationResult = (form.getAttribute(\"data-validated\") || \"\").toLowerCase();\r\n\r\n if (validationResult === 'true') {\r\n this.formOverlay.show();\r\n }\r\n });\r\n });\r\n }\r\n }\r\n}\r\n\r\n// Startup\r\ndocument.addEventListener('DOMContentLoaded', () => {\r\n const el = document.getElementById(\"js-delegation-page\");\r\n if (el) new DelegationPage(el);\r\n});","// Components\r\nimport Overlay from \"@scripts/components/overlay\";\r\n\r\n// -- TODO: Extract generic radio-list component from funding-destinations-list and refactor usages\r\nimport ApproverConsentList from \"@scripts/components/funding-destinations-list\";\r\n\r\n// Funding destinations page module\r\nclass ApproverConsentPage {\r\n constructor(el) {\r\n this.el = el;\r\n this.init();\r\n }\r\n\r\n init() {\r\n this.initApproverConsentOptionsList();\r\n this.initApproverConsentOptionsForm();\r\n }\r\n\r\n initApproverConsentOptionsList() {\r\n const listEl = document.querySelector(\".js-approver-consent-list\");\r\n this.approverConsentList = new ApproverConsentList(listEl);\r\n }\r\n\r\n initApproverConsentOptionsForm() {\r\n const formOverlay = new Overlay({ target: this.el });\r\n const form = document.querySelector(\".js-approver-consent-form\");\r\n\r\n form.addEventListener(\"submit\", (e) => {\r\n var isValid = this.approverConsentList.validate();\r\n \r\n if (!isValid) {\r\n e.preventDefault();\r\n return false;\r\n }\r\n\r\n formOverlay.show();\r\n });\r\n }\r\n}\r\n\r\n// Startup\r\ndocument.addEventListener('DOMContentLoaded', () => {\r\n const el = document.getElementById(\"js-approver-consent-page\");\r\n if (el) new ApproverConsentPage(el);\r\n});","// Components\r\nimport Overlay from \"@scripts/components/overlay\";\r\n\r\nclass ApproverConfirmConsentPage {\r\n constructor(el) {\r\n this.el = el;\r\n this.init();\r\n }\r\n\r\n init() {\r\n this.initOverlay();\r\n }\r\n\r\n initOverlay() {\r\n this.formOverlay = new Overlay({ target: this.el });\r\n\r\n const form = document.querySelector(\".js-delegation-selection-form\");\r\n if (form) {\r\n form.addEventListener(\"submit\", (e) => {\r\n this.formOverlay.show();\r\n });\r\n }\r\n }\r\n}\r\n\r\n// Startup\r\ndocument.addEventListener('DOMContentLoaded', () => {\r\n const el = document.getElementById(\"js-approver-confirm-consent-page\");\r\n if (el) new ApproverConfirmConsentPage(el);\r\n});","// Components\r\nimport { deobfuscateStringValue } from \"@scripts/helpers/documentEmbedding\";\r\n\r\n// Confirmation Document Page module\r\nclass ConfirmationDocumentPage {\r\n constructor(el) {\r\n this.el = el;\r\n this.init();\r\n }\r\n\r\n init() {\r\n this.initDocumentEmbeddingOnClick();\r\n this.initAdobeDc();\r\n }\r\n\r\n initDocumentEmbeddingOnClick() {\r\n const element = document.querySelector('.js-document-embedding-click');\r\n if (element) {\r\n element.addEventListener('click', () => {\r\n this.previewFile();\r\n });\r\n }\r\n }\r\n\r\n initAdobeDc() {\r\n document.addEventListener(\"adobe_dc_view_sdk.ready\", () => {\r\n document.getElementById(\"view-pdf-btn\").disabled = false;\r\n });\r\n }\r\n\r\n previewFile() {\r\n const adobeDcElement = document.getElementById(\"view-pdf-btn\");\r\n\r\n if (adobeDcElement) {\r\n const dl = deobfuscateStringValue(adobeDcElement.dataset.dl);\r\n const dak = deobfuscateStringValue(adobeDcElement.dataset.dak);\r\n const adobeDCView = new AdobeDC.View({ clientId: dak });\r\n\r\n adobeDCView.previewFile(\r\n {\r\n content: { location: { url: dl } },\r\n metaData: { fileName: adobeDcElement.dataset.dfn }\r\n },\r\n {\r\n embedMode: \"LIGHT_BOX\",\r\n showDownloadPDF: true,\r\n showThumbnails: false,\r\n showBookmarks: false,\r\n showAnnotationTools: false,\r\n showPrintPDF: true\r\n }\r\n );\r\n }\r\n }\r\n}\r\n\r\n// Startup\r\ndocument.addEventListener('DOMContentLoaded', () => {\r\n const el = document.getElementById(\"js-confirmation-document-page\");\r\n if (el) new ConfirmationDocumentPage(el);\r\n});","/*\r\n * DOM Helpers -\r\n *\r\n * Common DOM helper functions (typically used instead of importing jQuery)\r\n */\r\n\r\n/* -- Class [CSS] functions -- */\r\nfunction hasClass(el, className) {\r\n return (\r\n // Newer browsers\r\n (el.classList && el.classList.contains(className)) ||\r\n // Legacy browsers\r\n !!el.className.match(new RegExp('(\\\\s|^)' + className + '(\\\\s|$)'))\r\n );\r\n}\r\n\r\nfunction addClass(el, className) {\r\n if (el.classList) {\r\n el.classList.add(className);\r\n } else if (!this.hasClass(el, className)) {\r\n el.className += \" \" + className;\r\n }\r\n}\r\n\r\nfunction removeClass(el, className) {\r\n if (el.classList) {\r\n el.classList.remove(className);\r\n } else {\r\n const reg = new RegExp('(\\\\s|^)' + className + '(\\\\s|$)');\r\n el.className = el.className.replace(reg, ' ');\r\n }\r\n}\r\n\r\n\r\n/* -- Input [type='text'] functions -- */\r\nfunction restrictNumeric(input) {\r\n input.addEventListener(\"keypress\", function restrictNumeric(e) {\r\n const which = e.which || e.keyCode || 0;\r\n\r\n // Allow for special combos\r\n if (e.metaKey || e.ctrlKey) {\r\n return true;\r\n }\r\n\r\n // Prevent spaces\r\n if (which === 32) {\r\n return e.preventDefault();\r\n }\r\n\r\n // Null fallthrough\r\n if (which === 0) {\r\n return true;\r\n }\r\n\r\n /* Allow for -\r\n * - backspace (8)\r\n * - tab (9)\r\n * - enter (13)\r\n * - shift/ctrl/alt (16/17/18)\r\n * - pause|break (19)\r\n * - caps lock (20)\r\n * - escape (27)\r\n * TODO: [Allow for home (36), l/r arrows (37/39), insert (45), delete (46)]??\r\n */\r\n if (which < 33) {\r\n return true;\r\n }\r\n\r\n const input = String.fromCharCode(which);\r\n\r\n if (!/[\\d\\s]/.test(input)) {\r\n return e.preventDefault();\r\n }\r\n });\r\n}\r\n\r\nfunction hasSelectedText(input) {\r\n if (input.selectionStart !== null && input.selectionStart !== input.selectionEnd) {\r\n return true;\r\n }\r\n\r\n if (document && document.selection) {\r\n let selectionText = document.selection.createRange().text || \"\";\r\n return selectionText.length > 0;\r\n }\r\n\r\n return false;\r\n}\r\n\r\nfunction getCaretPosition(input) {\r\n return input.selectionStart;\r\n}\r\n\r\nfunction setCaretPosition(input, position) {\r\n if (input.createTextRange) {\r\n const range = input.createTextRange();\r\n range.move('character', position);\r\n range.select();\r\n }\r\n else {\r\n if (input.selectionStart) {\r\n input.focus();\r\n input.setSelectionRange(position, position);\r\n } else {\r\n input.focus();\r\n }\r\n }\r\n}\r\n\r\nfunction hasFocus(input) {\r\n return document.activeElement === input;\r\n}\r\n\r\nfunction focusFirst() {\r\n var elms = document.querySelectorAll(\"input[type='text'], input[type='radio'], input[type='checkbox'], select, textarea\");\r\n elms.length > 0 && elms[0].focus();\r\n}\r\n\r\n/* -- Events -- */\r\nfunction triggerEvent(el, name, payload) {\r\n // IE 9/10/11 supports custom events however it\r\n // must be initialized via document.createEvent vs.\r\n // new CustomEvent(...)\r\n // https://caniuse.com/#feat=customevent\r\n\r\n let event;\r\n try {\r\n // Modern browsers\r\n event = new CustomEvent(name, {\r\n detail: payload\r\n });\r\n } catch (err) {\r\n console.warn(err);\r\n\r\n event = document.createEvent(\"CustomEvent\");\r\n if (event.initCustomEvent) {\r\n // Web standards\r\n event.initCustomEvent(name, true, true, payload);\r\n } else {\r\n // Removed from Web Standards but legacy support\r\n event.initEvent(name, true, true, payload);\r\n }\r\n }\r\n\r\n return el.dispatchEvent(event);\r\n}\r\n\r\nmodule.exports = {\r\n css: {\r\n hasClass,\r\n addClass,\r\n removeClass\r\n },\r\n\r\n inputs: {\r\n hasFocus,\r\n hasSelectedText,\r\n getCaretPosition,\r\n setCaretPosition,\r\n restrictNumeric,\r\n focusFirst\r\n },\r\n\r\n events: {\r\n triggerEvent\r\n }\r\n};","/*\r\n * Document Embedding Helpers\r\n *\r\n */\r\n\r\nfunction deobfuscateStringValue(stringValue) {\r\n var base64Value = stringValue.slice(1);\r\n\r\n return window.atob(base64Value);\r\n}\r\n\r\nmodule.exports = {\r\n deobfuscateStringValue\r\n};"],"sourceRoot":""}