UNPKG

@adyen/adyen-web

Version:

[![npm](https://img.shields.io/npm/v/@adyen/adyen-web.svg)](https://www.npmjs.com/package/@adyen/adyen-web)

3 lines (2 loc) 5.99 kB
import s from"./AbstractCSF.js";import{handleConfig as e}from"./extensions/handleConfig.js";import{configureCallbacks as t}from"./extensions/configureCallbacks.js";import{handleValidation as i}from"./extensions/handleValidation.js";import{handleEncryption as r}from"./extensions/handleEncryption.js";import{createSecuredFields as o,createNonCardSecuredFields as a,createCardSecuredFields as n,setupSecuredField as d}from"./extensions/createSecuredFields.js";import h from"./extensions/handleIOSTouchEvents.js";import l from"./extensions/handleTab.js";import c,{sendBrandToCardSF as u,sendExpiryDatePolicyToSF as p}from"./extensions/handleBrandFromBinLookup.js";import{setFocusOnFrame as m}from"./partials/setFocusOnFrame.js";import{postMessageToAllIframes as f}from"./partials/postMessageToAllIframes.js";import F from"./partials/processBrand.js";import{processAutoComplete as y}from"./partials/processAutoComplete.js";import{handleFocus as b}from"./partials/handleFocus.js";import{handleIframeConfigFeedback as C}from"./partials/handleIframeConfigFeedback.js";import{isConfigured as g}from"./partials/isConfigured.js";import S from"./partials/validateForm.js";import{handleBinValue as j}from"./partials/handleBinValue.js";import{destroySecuredFields as T}from"./utils/destroySecuredFields.js";import I from"./utils/iframes/postMessageToIframe.js";import k from"./utils/iframes/getIframeContentWin.js";import{warn as O}from"../utilities/logger.js";import{selectOne as x}from"../utilities/dom.js";import{on as v}from"../../../../../utils/listenerUtils.js";import{partial as L}from"../utilities/commonUtils.js";import{hasOwnProperty as B}from"../../../../../utils/hasOwnProperty.js";import K from"./utils/userAgent.js";const P=(s="You cannot use secured fields")=>{O(`${s} - they are not yet configured. Use the 'onConfigSuccess' callback to know when this has happened.`)};class V extends s{init(){this.configHandler(this.props),this.callbacksHandler(this.props.callbacks);const s=this.createSecuredFields();this.state.numIframes=this.state.originalNumIframes=s,this.state.isKCP=!!this.props.isKCP,K.__IS_IOS&&this.props.shouldDisableIOSArrowKeys&&(this.hasGenuineTouchEvents=!1,v(document,"touchstart",this.touchstartListener))}createReturnObject(){return{updateStyles:s=>{this.state.isConfigured?this.postMessageToAllIframes({styleObject:s}):O("You cannot update the secured fields styling - they are not yet configured. Use the 'onConfigSuccess' callback to know when this has happened.")},setFocusOnFrame:s=>{this.state.isConfigured?this.setFocusOnFrame(s):P("You cannot set focus on any secured field")},isValidated:(s,e)=>{if(this.state.isConfigured){if(B(this.state.securedFields,s)){this.state.securedFields[s].hasError=!0,""===this.state.securedFields[s].errorType&&(this.state.securedFields[s].errorType="isValidated");const t={txVariant:this.state.type,fieldType:s,externalValidation:!0,code:e,numKey:this.state.securedFields[s].numKey};I(t,k(this.state,s),this.config.loadingContext)}}else P("You cannot set validated on any secured field")},hasUnsupportedCard:(s,e)=>{if(this.state.isConfigured){if(B(this.state.securedFields,s)){this.state.securedFields[s].hasError=!!e,this.state.securedFields[s].errorType=e;const t={txVariant:this.state.type,fieldType:s,unsupportedCard:!!e,code:e,numKey:this.state.securedFields[s].numKey};I(t,k(this.state,s),this.config.loadingContext)}}else P("You cannot set hasUnsupportedCard on any secured field")},destroy:()=>{this.state.isConfigured?this.destroySecuredFields():P("You cannot destroy secured fields")},brandsFromBinLookup:(s,e)=>{if(!this.config.isCreditCardType)return null;this.state.isConfigured?this.handleBrandFromBinLookup(s,e):P("You cannot set pass brands to secured fields")},addSecuredField:s=>{const e=x(this.props.rootNode,`[data-cse="${s}"]`);e&&(this.state.numIframes+=1,this.setupSecuredField(e))},removeSecuredField:s=>{if(this.state.securedFields[s]){this.state.securedFields[s].destroy(),delete this.state.securedFields[s],this.state.numIframes-=1,this.state.iframeCount-=1;const e={additionalIframeRemoved:!0,fieldType:s,type:this.state.type};this.callbacks.onAdditionalSFRemoved(e)}},setKCPStatus:s=>{this.state.isKCP=s},sfIsOptionalOrHidden:s=>this.state.securedFields[s].isOptionalOrHidden()}}constructor(s){super(s),this.state={type:this.props.type,brand:"card"!==this.props.type?{brand:this.props.type,cvcPolicy:"required"}:{brand:null,cvcPolicy:"required"},allValid:void 0,numIframes:0,originalNumIframes:0,iframeCount:0,iframeConfigCount:0,isConfigured:!1,hasSeparateDateFields:!1,currentFocusObject:null,registerFieldForIos:!1,securedFields:{},isKCP:!1};const I={csfState:this.state,csfConfig:this.config,csfProps:this.props,csfCallbacks:this.callbacks};this.configHandler=e.bind(this),this.callbacksHandler=t.bind(this),this.validateForm=L(S,I),this.isConfigured=L(g,I,this.validateForm),this.handleIframeConfigFeedback=L(C,I,this.isConfigured),this.processBrand=L(F,I),this.handleValidation=i.bind(this),this.handleEncryption=r.bind(this),this.createSecuredFields=o.bind(this),this.createNonCardSecuredFields=a.bind(this),this.createCardSecuredFields=n.bind(this),this.setupSecuredField=d.bind(this),this.postMessageToAllIframes=L(f,I),this.handleIOSTouchEvents=h.handleTouchend.bind(this),this.touchendListener=h.touchendListener.bind(this),this.destroyTouchendListener=h.destroyTouchendListener.bind(this),this.touchstartListener=h.touchstartListener.bind(this),this.destroyTouchstartListener=h.destroyTouchstartListener.bind(this),this.setFocusOnFrame=L(m,I),this.handleFocus=L(b,I,this.handleIOSTouchEvents),this.handleSFShiftTab=l.handleSFShiftTab.bind(this),this.handleShiftTab=l.handleShiftTab.bind(this),this.destroySecuredFields=T.bind(this),this.processAutoComplete=L(y,I),this.handleBinValue=L(j,I),this.handleBrandFromBinLookup=c.bind(this),this.sendBrandToCardSF=u.bind(this),this.sendExpiryDatePolicyToSF=p.bind(this),this.init()}}export{V as default}; //# sourceMappingURL=CSF.js.map