1/** 2 * External dependencies 3 */ 4const registerPaymentMethod = window.wc.wcBlocksRegistry.registerPaymentMethod; 5const getPaymentMethodData = window.wc.wcSettings.getPaymentMethodData; 6 7const settings = getPaymentMethodData( 'tabby_installments', {} ); 8const defaultLabel = 'Pay in 4. No interest, no fees.'; 9const title = settings?.title || ''; 10 11 12/** 13 * Icon component 14 */ 15 16const TabbyIcon = () => { 17 return React.createElement('img', { 18 src: settings?.icon_src, 19 style: {marginRight:'10px'}, 20 alt: title 21 }, null); 22} 23 24const Label = () => { 25 return [window.wp.element.createElement(TabbyIcon), React.createElement('span', null, title)]; 26} 27 28const InitTabbyCard = (className, classParams) => { 29 if (eval('typeof ' + className) == 'function') { 30 eval('new ' + className + '(' + classParams + ');'); 31 return true; 32 } 33 return false; 34}; 35 36const TabbyPromotionCard = () => { 37 React.useEffect(() => { 38 // init Tabby Promo Card 39 if (!InitTabbyCard(settings?.config?.jsClass, settings?.config?.jsConf)) { 40 let timerId = setInterval(function () { 41 if (InitTabbyCard(settings?.config?.jsClass, settings?.config?.jsConf)) { 42 clearInterval(timerId); 43 } 44 }, 300); 45 } 46 }); 47 return React.createElement('div', {id: settings?.config?.id}, ''); 48} 49 50const TabbyInstallmentsMethodName = 'tabby_installments'; 51/** 52 * Content component 53 */ 54const Content = () => { 55 switch (settings?.config?.class) { 56 case 'empty': 57 return null; 58 case 'tabbyDesc': 59 return React.createElement('span', null, settings?.config?.html || ''); 60 default: 61 return window.wp.element.createElement(TabbyPromotionCard); 62 } 63}; 64 65/** 66 * Tabby installments payment method config object. 67 */ 68 69const tabbyInstallmentsPaymentMethod = { 70 name: TabbyInstallmentsMethodName, 71 label: Object( window.wp.element.createElement ) (Label, null), 72 content: Object( window.wp.element.createElement ) (Content, null), 73 edit: Object( window.wp.element.createElement ) (Content, null), 74 canMakePayment: (props) => { 75 return true; 76 }, 77 ariaLabel: title, 78 placeOrderButtonLabel: window.wp.i18n.__( 79 'Proceed to Tabby', 80 'tabby-checkout' 81 ), 82 supports: { 83 features: settings?.supports ?? [] 84 } 85}; 86 87registerPaymentMethod( tabbyInstallmentsPaymentMethod ); 88
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.