2024-09-06 11:33:01 +02:00
|
|
|
import { createElement, useEffect, createRoot } from '@wordpress/element';
|
2024-09-05 21:17:36 +02:00
|
|
|
import { FastlaneWatermark } from '../components/FastlaneWatermark';
|
|
|
|
|
2024-09-06 11:33:01 +02:00
|
|
|
const WatermarkManager = ( {
|
|
|
|
fastlaneSdk,
|
|
|
|
shouldIncludeAdditionalInfo,
|
|
|
|
onEmailSubmit,
|
|
|
|
} ) => {
|
|
|
|
useEffect( () => {
|
|
|
|
const emailInput = document.getElementById( 'email' );
|
|
|
|
let watermarkRoot = null;
|
|
|
|
let watermarkContainer = null;
|
|
|
|
|
|
|
|
if ( emailInput ) {
|
|
|
|
const emailLabel =
|
|
|
|
emailInput.parentNode.querySelector( 'label[for="email"]' );
|
|
|
|
watermarkContainer = document.createElement( 'div' );
|
|
|
|
watermarkContainer.setAttribute(
|
|
|
|
'class',
|
|
|
|
'ppcp-axo-block-watermark-container'
|
2024-09-05 21:17:36 +02:00
|
|
|
);
|
2024-09-06 11:33:01 +02:00
|
|
|
|
|
|
|
if ( emailLabel ) {
|
|
|
|
emailLabel.parentNode.insertBefore(
|
|
|
|
watermarkContainer,
|
|
|
|
emailLabel.nextSibling
|
|
|
|
);
|
|
|
|
} else {
|
|
|
|
emailInput.parentNode.appendChild( watermarkContainer );
|
|
|
|
}
|
|
|
|
|
|
|
|
watermarkRoot = createRoot( watermarkContainer );
|
|
|
|
watermarkRoot.render(
|
|
|
|
createElement( FastlaneWatermark, {
|
|
|
|
fastlaneSdk,
|
|
|
|
name: 'fastlane-watermark-email',
|
|
|
|
includeAdditionalInfo: shouldIncludeAdditionalInfo,
|
|
|
|
} )
|
|
|
|
);
|
|
|
|
|
|
|
|
const handleEmailInput = async ( event ) => {
|
|
|
|
const email = event.target.value;
|
|
|
|
if ( email ) {
|
|
|
|
await onEmailSubmit( email );
|
|
|
|
}
|
|
|
|
};
|
|
|
|
|
|
|
|
emailInput.addEventListener( 'keyup', handleEmailInput );
|
|
|
|
|
|
|
|
// Cleanup function
|
|
|
|
return () => {
|
|
|
|
if ( watermarkRoot ) {
|
|
|
|
watermarkRoot.unmount();
|
|
|
|
}
|
|
|
|
if ( watermarkContainer && watermarkContainer.parentNode ) {
|
|
|
|
watermarkContainer.parentNode.removeChild(
|
|
|
|
watermarkContainer
|
|
|
|
);
|
|
|
|
}
|
|
|
|
if ( emailInput ) {
|
|
|
|
emailInput.removeEventListener( 'keyup', handleEmailInput );
|
|
|
|
}
|
|
|
|
console.log( 'Fastlane watermark removed' );
|
|
|
|
};
|
2024-09-05 21:17:36 +02:00
|
|
|
}
|
2024-09-06 11:33:01 +02:00
|
|
|
}, [ fastlaneSdk, shouldIncludeAdditionalInfo, onEmailSubmit ] );
|
2024-09-05 21:17:36 +02:00
|
|
|
|
2024-09-06 11:33:01 +02:00
|
|
|
return null;
|
|
|
|
};
|
2024-09-05 21:17:36 +02:00
|
|
|
|
2024-09-06 11:33:01 +02:00
|
|
|
export const setupWatermark = (
|
|
|
|
fastlaneSdk,
|
|
|
|
shouldIncludeAdditionalInfo,
|
|
|
|
onEmailSubmit
|
|
|
|
) => {
|
|
|
|
const container = document.createElement( 'div' );
|
|
|
|
document.body.appendChild( container );
|
|
|
|
createRoot( container ).render(
|
|
|
|
createElement( WatermarkManager, {
|
|
|
|
fastlaneSdk,
|
|
|
|
shouldIncludeAdditionalInfo,
|
|
|
|
onEmailSubmit,
|
|
|
|
} )
|
|
|
|
);
|
2024-09-05 21:17:36 +02:00
|
|
|
};
|
|
|
|
|
2024-09-06 11:33:01 +02:00
|
|
|
export const removeWatermark = () => {
|
|
|
|
const watermarkContainer = document.querySelector(
|
|
|
|
'.ppcp-axo-block-watermark-container'
|
|
|
|
);
|
|
|
|
if ( watermarkContainer && watermarkContainer.parentNode ) {
|
2024-09-05 21:17:36 +02:00
|
|
|
watermarkContainer.parentNode.removeChild( watermarkContainer );
|
|
|
|
}
|
|
|
|
};
|
2024-09-06 11:33:01 +02:00
|
|
|
|
|
|
|
export default WatermarkManager;
|