var ecsExecTime = new Date().getTime();
var EleCustomSkinPreview = elementorModules.frontend.handlers.Base.extend({
loadedTemplates:{
article:`
[content]`,
wrapper:`
`
},
wrapper_template:{
header:"",
footer:""
},
article_template:{
header:"",
footer:""
},
previewArguments:{
columns:3,
columns_tablet:2,
columns_mobile:1
},
originalContent:"",
previewContent:"",
parseTemplate: function parseTemplate(content){
for (const [key, value] of Object.entries(this.previewArguments)) {
replace = '\\['+key+'\\]';
re = new RegExp(replace,"g");
content = content.replace(re, value);
}
//console.log(content);
return content;
},
setTemplate:function setTemplate(target){
var templatePart = this.loadedTemplates[target].split("[content]");
this[target + '_template'].header = templatePart[0];
this[target + '_template'].footer = templatePart[1] ;
},
generateArticles:function generateArticles(){
for(i=0; i < this.previewArguments.columns; i++){
this.previewContent += this.article_template.header + this.originalContent + this.article_template.footer;
}
},
generateContent: function generateContent(){
this.generateArticles();
this.previewContent = this.parseTemplate(this.wrapper_template.header) + this.previewContent + this.wrapper_template.footer;
},
destroyContent: function destroyContent(){
this.previewContent="";
jQuery('#ecs-preview').remove();
},
onInit: function onInit() {
elementorModules.frontend.handlers.Base.prototype.onInit.apply(this, arguments);
this.initPreview();
this.run();
},
initPreview: function initPreview(){
this.setTemplate('wrapper');
this.setTemplate('article');
},
writePreview: function writePreview(){
jQuery( this.previewContent ).insertAfter( "#elementor-add-new-section" );
jQuery('#ecs-preview .elementor-element-overlay').remove();
jQuery('#ecs-preview .elementor-element-edit-mode').removeClass( "elementor-element-edit-mode" );
jQuery('#ecs-preview .elementor-element-editable').removeClass( "elementor-element-editable" );
},
checkArguments: function checkArguments(){
//add ability to add remove columns
columns = 4;
this.previewArguments.columns = columns;
},
onElementChange: function onElementChange() {
var self = this;
setTimeout(function(){
self.run();
}, 2000);
},
getOriginal: function getOriginal(){
this.originalContent=jQuery('.page-content .elementor-section-wrap').html();
},
run: function run(){
if(ecsRunEvery(2000)){
this.destroyContent();
this.checkArguments();
this.getOriginal();
this.generateContent();
this.writePreview();
//console.log(this.previewContent+" sunt aici");
}
}
});
//now let's see if we can call it
jQuery(window).on('elementor/frontend/init', () => {
const addHandler = ($element) => {
elementorFrontend.elementsHandler.addHandler(EleCustomSkinPreview, {
$element,
});
};
elementorFrontend.hooks.addAction('frontend/element_ready/global', addHandler);
});
function ecsRunEvery( miliseconds ){
if(new Date().getTime() < ecsExecTime + miliseconds) return false;
ecsExecTime = new Date().getTime();
return true;
}