woocommerce-paypal-payments/modules/ppcp-axo-block/resources/js/helpers/watermarkHelpers.js

95 lines
2.5 KiB
JavaScript
Raw Normal View History

import { createElement, useEffect, createRoot } from '@wordpress/element';
import { useSelect } from '@wordpress/data';
2024-09-05 21:17:36 +02:00
import { FastlaneWatermark } from '../components/FastlaneWatermark';
import { STORE_NAME } from '../stores/axoStore';
let watermarkReference = {
container: null,
root: null,
};
const WatermarkManager = ( { fastlaneSdk } ) => {
const isGuest = useSelect( ( select ) =>
select( STORE_NAME ).getIsGuest()
);
const isAxoActive = useSelect( ( select ) =>
select( STORE_NAME ).getIsAxoActive()
);
2024-09-05 21:17:36 +02:00
useEffect( () => {
2024-09-10 18:46:27 +02:00
const textInputContainer = document.querySelector(
'.wp-block-woocommerce-checkout-contact-information-block .wc-block-components-text-input'
);
2024-09-10 18:46:27 +02:00
if ( textInputContainer ) {
const emailInput = textInputContainer.querySelector(
'input[type="email"]'
);
2024-09-10 18:46:27 +02:00
if ( emailInput ) {
if ( ! watermarkReference.container ) {
watermarkReference.container =
document.createElement( 'div' );
watermarkReference.container.setAttribute(
'class',
'wc-block-checkout-axo-block-watermark-container'
);
2024-09-10 18:46:27 +02:00
// Insert the watermark container after the email input
emailInput.parentNode.insertBefore(
watermarkReference.container,
emailInput.nextSibling
);
2024-09-10 18:46:27 +02:00
watermarkReference.root = createRoot(
watermarkReference.container
);
}
2024-09-10 18:46:27 +02:00
if ( watermarkReference.root && isAxoActive ) {
watermarkReference.root.render(
createElement( FastlaneWatermark, {
fastlaneSdk,
name: 'fastlane-watermark-email',
includeAdditionalInfo: isGuest,
} )
);
} else if ( ! isAxoActive && watermarkReference.root ) {
watermarkReference.root.render( null );
}
} else {
2024-09-10 18:46:27 +02:00
console.warn( 'Email input not found' );
}
} else {
2024-09-10 18:46:27 +02:00
console.warn( 'Text input container not found' );
2024-09-05 21:17:36 +02:00
}
2024-09-10 18:46:27 +02:00
}, [ fastlaneSdk, isGuest, isAxoActive ] );
2024-09-05 21:17:36 +02:00
return null;
};
2024-09-05 21:17:36 +02:00
export const setupWatermark = ( fastlaneSdk ) => {
const container = document.createElement( 'div' );
document.body.appendChild( container );
createRoot( container ).render(
createElement( WatermarkManager, { fastlaneSdk } )
);
2024-09-05 21:17:36 +02:00
};
export const removeWatermark = () => {
if ( watermarkReference.root ) {
watermarkReference.root.unmount();
}
if (
watermarkReference.container &&
watermarkReference.container.parentNode
) {
watermarkReference.container.parentNode.removeChild(
watermarkReference.container
);
2024-09-05 21:17:36 +02:00
}
watermarkReference = { container: null, root: null };
2024-09-05 21:17:36 +02:00
};
export default WatermarkManager;