80 lines
2.2 KiB
TypeScript
80 lines
2.2 KiB
TypeScript
import elementorWidget from '../elementor/elementorWidget';
|
|
import registerFormWidget from '../elementor/FormWidget/registerFormWidget';
|
|
import { initBackgroundApp } from '../utils/backgroundAppUtils';
|
|
import registerMeetingsWidget from '../elementor/MeetingWidget/registerMeetingWidget';
|
|
|
|
const ELEMENTOR_READY_INTERVAL = 500;
|
|
const MAX_POLL_TIMEOUT = 30000;
|
|
|
|
const registerElementorWidgets = () => {
|
|
initBackgroundApp(() => {
|
|
let FormWidget: any;
|
|
let MeetingsWidget: any;
|
|
|
|
const leadinSelectFormItemView = elementorWidget(
|
|
//@ts-expect-error global
|
|
window.elementor,
|
|
{
|
|
widgetName: 'hubspot-form',
|
|
controlSelector: '.elementor-hbspt-form-selector',
|
|
containerSelector: '.hubspot-form-edit-mode',
|
|
},
|
|
(controlContainer: any, widgetContainer: any, setValue: Function) => {
|
|
FormWidget = new registerFormWidget(
|
|
controlContainer,
|
|
widgetContainer,
|
|
setValue
|
|
);
|
|
FormWidget.render();
|
|
},
|
|
() => {
|
|
FormWidget.done();
|
|
}
|
|
);
|
|
|
|
const leadinSelectMeetingItemView = elementorWidget(
|
|
//@ts-expect-error global
|
|
window.elementor,
|
|
{
|
|
widgetName: 'hubspot-meeting',
|
|
controlSelector: '.elementor-hbspt-meeting-selector',
|
|
containerSelector: '.hubspot-meeting-edit-mode',
|
|
},
|
|
(controlContainer: any, widgetContainer: any, setValue: Function) => {
|
|
MeetingsWidget = new registerMeetingsWidget(
|
|
controlContainer,
|
|
widgetContainer,
|
|
setValue
|
|
);
|
|
MeetingsWidget.render();
|
|
},
|
|
() => {
|
|
MeetingsWidget.done();
|
|
}
|
|
);
|
|
|
|
//@ts-expect-error global
|
|
window.elementor.addControlView(
|
|
'leadinformselect',
|
|
leadinSelectFormItemView
|
|
);
|
|
//@ts-expect-error global
|
|
window.elementor.addControlView(
|
|
'leadinmeetingselect',
|
|
leadinSelectMeetingItemView
|
|
);
|
|
});
|
|
};
|
|
|
|
const pollForElementorReady = setInterval(() => {
|
|
const elementorFrontend = (window as any).elementorFrontend;
|
|
if (elementorFrontend) {
|
|
registerElementorWidgets();
|
|
clearInterval(pollForElementorReady);
|
|
}
|
|
}, ELEMENTOR_READY_INTERVAL);
|
|
|
|
setTimeout(() => {
|
|
clearInterval(pollForElementorReady);
|
|
}, MAX_POLL_TIMEOUT);
|