Files
Jacek Pyziak 6cc26c0ed2 Add Creative Elements templates and update index files
- Introduced new templates for catalog, checkout, contact, and error pages.
- Implemented caching headers and redirection in index.php files across various directories.
- Enhanced product and layout templates for better integration with Creative Elements.
- Added backoffice header styles and scripts for improved UI/UX in the admin panel.
2025-07-01 00:56:07 +02:00

579 lines
17 KiB
JavaScript

/*!
* Creative Elements - live Theme & Page Builder
* Copyright 2019-2022 WebshopWorks.com & Elementor.com
*/
/******/ (function(modules) { // webpackBootstrap
/******/ // The module cache
/******/ var installedModules = {};
/******/
/******/ // The require function
/******/ function __webpack_require__(moduleId) {
/******/
/******/ // Check if module is in cache
/******/ if(installedModules[moduleId]) {
/******/ return installedModules[moduleId].exports;
/******/ }
/******/ // Create a new module (and put it into the cache)
/******/ var module = installedModules[moduleId] = {
/******/ i: moduleId,
/******/ l: false,
/******/ exports: {}
/******/ };
/******/
/******/ // Execute the module function
/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
/******/
/******/ // Flag the module as loaded
/******/ module.l = true;
/******/
/******/ // Return the exports of the module
/******/ return module.exports;
/******/ }
/******/
/******/
/******/ // expose the modules object (__webpack_modules__)
/******/ __webpack_require__.m = modules;
/******/
/******/ // expose the module cache
/******/ __webpack_require__.c = installedModules;
/******/
/******/ // define getter function for harmony exports
/******/ __webpack_require__.d = function(exports, name, getter) {
/******/ if(!__webpack_require__.o(exports, name)) {
/******/ Object.defineProperty(exports, name, { enumerable: true, get: getter });
/******/ }
/******/ };
/******/
/******/ // define __esModule on exports
/******/ __webpack_require__.r = function(exports) {
/******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) {
/******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
/******/ }
/******/ Object.defineProperty(exports, '__esModule', { value: true });
/******/ };
/******/
/******/ // create a fake namespace object
/******/ // mode & 1: value is a module id, require it
/******/ // mode & 2: merge all properties of value into the ns
/******/ // mode & 4: return value when already ns object
/******/ // mode & 8|1: behave like require
/******/ __webpack_require__.t = function(value, mode) {
/******/ if(mode & 1) value = __webpack_require__(value);
/******/ if(mode & 8) return value;
/******/ if((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;
/******/ var ns = Object.create(null);
/******/ __webpack_require__.r(ns);
/******/ Object.defineProperty(ns, 'default', { enumerable: true, value: value });
/******/ if(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));
/******/ return ns;
/******/ };
/******/
/******/ // getDefaultExport function for compatibility with non-harmony modules
/******/ __webpack_require__.n = function(module) {
/******/ var getter = module && module.__esModule ?
/******/ function getDefault() { return module['default']; } :
/******/ function getModuleExports() { return module; };
/******/ __webpack_require__.d(getter, 'a', getter);
/******/ return getter;
/******/ };
/******/
/******/ // Object.prototype.hasOwnProperty.call
/******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };
/******/
/******/ // __webpack_public_path__
/******/ __webpack_require__.p = "";
/******/
/******/
/******/ // Load entry module and return exports
/******/ return __webpack_require__(__webpack_require__.s = 56);
/******/ })
/************************************************************************/
/******/ ({
/***/ 56:
/***/ (function(module, exports, __webpack_require__) {
"use strict";
var modules = {
AssetsManager: __webpack_require__(61)
};
window.ceAdmin = {
assetsManager: new modules.AssetsManager()
};
jQuery(function () {
ceAdmin.assetsManager.fontManager.init();
});
/***/ }),
/***/ 61:
/***/ (function(module, exports, __webpack_require__) {
"use strict";
module.exports = function () {
var FontManager = __webpack_require__(62);
this.fontManager = new FontManager();
};
/***/ }),
/***/ 62:
/***/ (function(module, exports, __webpack_require__) {
"use strict";
module.exports = function () {
var self = this;
self.fields = {
upload: __webpack_require__(63),
repeater: __webpack_require__(64)
};
self.selectors = {
title: '#family',
repeaterBlock: '.repeater-block',
repeaterTitle: '.repeater-title',
removeRowBtn: '.remove-repeater-row',
editRowBtn: '.toggle-repeater-row',
closeRowBtn: '.close-repeater-row',
styleInput: '.font_style',
weightInput: '.font_weight',
customFontsMetaBox: '#elementor-font-custommetabox',
closeHandle: 'button.handlediv',
toolbar: '.elementor-field-toolbar',
inlinePreview: '.inline-preview',
fileUrlInput: '.elementor-field-file input[type="text"]'
};
self.fontLabelTemplate = '<ul class="row-font-label"><li class="row-font-weight">{{weight}}</li><li class="row-font-style">{{style}}</li><li class="row-font-preview">{{preview}}</li>{{toolbar}}</ul>';
self.renderTemplate = function (tpl, data) {
var re = /{{([^}}]+)?}}/g,
match;
while (match = re.exec(tpl)) {
// eslint-disable-line no-cond-assign
tpl = tpl.replace(match[0], data[match[1]]);
}
return tpl;
};
self.ucFirst = function (string) {
return string.charAt(0).toUpperCase() + string.slice(1);
};
self.getPreviewStyle = function ($table) {
var fontFamily = "'" + jQuery(self.selectors.title).val() + "'",
style = $table.find('select' + self.selectors.styleInput).first().val(),
weight = $table.find('select' + self.selectors.weightInput).first().val();
return {
style: self.ucFirst(style),
weight: self.ucFirst(weight),
styleAttribute: 'font-family: ' + fontFamily + '; font-style: ' + style + '; font-weight: ' + weight + ';'
};
};
self.updateRowLabel = function (event, $table) {
var $block = $table.closest(self.selectors.repeaterBlock),
$deleteBtn = $block.find(self.selectors.removeRowBtn).first(),
$editBtn = $block.find(self.selectors.editRowBtn).first(),
$closeBtn = $block.find(self.selectors.closeRowBtn).first(),
$toolbar = $table.find(self.selectors.toolbar).last().clone(),
previewStyle = self.getPreviewStyle($table),
toolbarHtml;
if ($editBtn.length > 0) {
$editBtn.not(self.selectors.toolbar + ' ' + self.selectors.editRowBtn).remove();
}
if ($closeBtn.length > 0) {
$closeBtn.not(self.selectors.toolbar + ' ' + self.selectors.closeRowBtn).remove();
}
if ($deleteBtn.length > 0) {
$deleteBtn.not(self.selectors.toolbar + ' ' + self.selectors.removeRowBtn).remove();
}
toolbarHtml = jQuery('<li class="row-font-actions">').append($toolbar)[0].outerHTML;
return self.renderTemplate(self.fontLabelTemplate, {
weight: '<span class="label">Weight:</span>' + previewStyle.weight,
style: '<span class="label">Style:</span>' + previewStyle.style,
preview: '<span style="' + previewStyle.styleAttribute + '">Creative Elements Module Is Making The Web Beautiful!</span>',
toolbar: toolbarHtml
});
};
self.onRepeaterToggleVisible = function (event, $btn, $table) {
var $previewElement = $table.find(self.selectors.inlinePreview),
previewStyle = self.getPreviewStyle($table);
$previewElement.attr('style', previewStyle.styleAttribute);
};
self.onRepeaterNewRow = function (event, $btn, $block) {
$block.find(self.selectors.removeRowBtn).first().remove();
$block.find(self.selectors.editRowBtn).first().remove();
$block.find(self.selectors.closeRowBtn).first().remove();
};
self.maybeToggle = function (event) {
event.preventDefault();
if (jQuery(this).is(':visible') && !jQuery(event.target).hasClass(self.selectors.editRowBtn)) {
jQuery(this).find(self.selectors.editRowBtn).click();
}
};
self.onInputChange = function (event) {
var $el = jQuery(event.target).next();
self.fields.upload.setFields($el);
self.fields.upload.setLabels($el);
self.fields.upload.replaceButtonClass($el);
};
self.bind = function () {
jQuery(document).on('repeaterComputedLabel', this.updateRowLabel).on('onRepeaterToggleVisible', this.onRepeaterToggleVisible).on('onRepeaterNewRow', this.onRepeaterNewRow).on('click', this.selectors.repeaterTitle, this.maybeToggle).on('input', this.selectors.fileUrlInput, this.onInputChange.bind(this));
};
self.removeCloseHandle = function () {
jQuery(this.selectors.closeHandle).remove();
jQuery(this.selectors.customFontsMetaBox).removeClass('closed').removeClass('postbox');
};
self.titleRequired = function () {
jQuery(self.selectors.title).prop('required', true);
};
self.init = function () {
if (!jQuery('#ce_font_form #files').length) {
return;
}
this.removeCloseHandle();
this.titleRequired();
this.bind();
this.fields.upload.init();
this.fields.repeater.init();
// Init font URLs
var fonts = JSON.parse($('#files').val() || '[]');
fonts.forEach(function(font, i) {
$('.add-repeater-row').click();
$('select[name="font_face['+ i +'][font_weight]"]').val(font.font_weight);
$('select[name="font_face['+ i +'][font_style]"]').val(font.font_style);
$('input[name="font_face['+ i +'][woff][url]"]').val(font.woff && font.woff.url || '').trigger('input');
$('input[name="font_face['+ i +'][woff2][url]"]').val(font.woff2 && font.woff2.url || '').trigger('input');
$('input[name="font_face['+ i +'][ttf][url]"]').val(font.ttf && font.ttf.url || '').trigger('input');
$('input[name="font_face['+ i +'][otf][url]"]').val(font.otf && font.otf.url || '').trigger('input');
$('.close-repeater-row:last').click();
});
// Cancel button fix
$('.btn[id$=_form_cancel_btn]')
.removeAttr('onclick')
.attr('href', location.href.replace(/&id\w*=\d+|&(add|update)\w+(=[^&]*)?/g, ''))
;
};
};
/***/ }),
/***/ 63:
/***/ (function(module, exports, __webpack_require__) {
"use strict";
module.exports = {
$btn: null,
fileFont: null,
fileUrl: null,
fileFrame: [],
selectors: {
uploadBtnClass: 'elementor-upload-btn',
clearBtnClass: 'elementor-upload-clear-btn',
uploadBtn: '.elementor-upload-btn',
clearBtn: '.elementor-upload-clear-btn'
},
hasValue: function hasValue() {
return '' !== jQuery(this.fileUrl).val();
},
setLabels: function setLabels($el) {
if (!this.hasValue()) {
$el.val($el.data('upload_text'));
} else {
$el.val($el.data('remove_text'));
}
},
setFields: function setFields(el) {
var self = this;
self.fileUrl = jQuery(el).prev();
self.fileFont = jQuery(self.fileUrl).prev();
},
replaceButtonClass: function replaceButtonClass(el) {
if (this.hasValue()) {
jQuery(el).removeClass(this.selectors.uploadBtnClass).addClass(this.selectors.clearBtnClass);
} else {
jQuery(el).removeClass(this.selectors.clearBtnClass).addClass(this.selectors.uploadBtnClass);
}
this.setLabels(el);
},
updatePreview: function updatePreview(el) {
var self = this,
$ul = jQuery(el).parent().find('ul'),
$li = jQuery('<li>'),
showUrlType = jQuery(el).data('preview_anchor') || 'full';
$ul.html('');
if (self.hasValue() && 'none' !== showUrlType) {
var anchor = jQuery(self.fileUrl).val();
if ('full' !== showUrlType) {
anchor = anchor.substring(anchor.lastIndexOf('/') + 1);
}
$li.html('<a href="' + jQuery(self.fileUrl).val() + '" download>' + anchor + '</a>');
$ul.append($li);
}
},
setup: function setup() {
var self = this;
jQuery(self.selectors.uploadBtn + ', ' + self.selectors.clearBtn).each(function () {
self.setFields(jQuery(this));
self.updatePreview(jQuery(this));
self.setLabels(jQuery(this));
self.replaceButtonClass(jQuery(this));
});
},
init: function init() {
var self = this;
jQuery(document).on('click', self.selectors.uploadBtn, function (event) {
event.preventDefault();
self.setFields(jQuery(this));
self.fileFont[0].click();
});
jQuery(document).on('click', self.selectors.clearBtn, function (event) {
event.preventDefault();
self.setFields(jQuery(this));
jQuery(self.fileUrl).val('')
.removeAttr('readonly');
jQuery(self.fileFont).val('');
self.updatePreview(jQuery(this));
self.replaceButtonClass(jQuery(this));
});
jQuery(document).on('change', '.font_face input[type=file]', function (event) {
var el = jQuery(this).next().next(),
ext = el.data('ext');
self.setFields(el);
if (this.files[0] && this.files[0].name && this.files[0].name.endsWith('.' + ext)) {
jQuery(self.fileUrl)
.val(this.files[0].name)
.attr('readonly', true)
;
self.replaceButtonClass(el);
self.updatePreview(el);
} else {
jQuery(self.fileFont).val('');
}
});
this.setup();
jQuery(document).on('onRepeaterNewRow', function () {
self.setup();
});
}
};
/***/ }),
/***/ 64:
/***/ (function(module, exports, __webpack_require__) {
"use strict";
var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; };
module.exports = {
selectors: {
add: '.add-repeater-row',
remove: '.remove-repeater-row',
toggle: '.toggle-repeater-row',
close: '.close-repeater-row',
sort: '.sort-repeater-row',
table: '.form-table',
block: '.repeater-block',
repeaterLabel: '.repeater-title',
repeaterField: '.elementor-field-repeater'
},
counters: [],
trigger: function trigger(eventName, params) {
jQuery(document).trigger(eventName, params);
},
triggerHandler: function triggerHandler(eventName, params) {
return jQuery(document).triggerHandler(eventName, params);
},
countBlocks: function countBlocks($btn) {
return $btn.closest(this.selectors.repeaterField).find(this.selectors.block).length || 0;
},
add: function add(btn) {
var self = this,
$btn = jQuery(btn),
id = $btn.data('template-id'),
repeaterBlock;
if (!self.counters.hasOwnProperty(id)) {
self.counters[id] = self.countBlocks($btn);
}
repeaterBlock = jQuery('#' + id).html();
repeaterBlock = self.replaceAll('__counter__', self.counters[id], repeaterBlock);
self.counters[id] += 1;
$btn.before(repeaterBlock);
self.trigger('onRepeaterNewRow', [$btn, $btn.prev()]);
},
remove: function remove(btn) {
var self = this;
jQuery(btn).closest(self.selectors.block).remove();
},
toggle: function toggle(btn) {
var self = this,
$btn = jQuery(btn),
$table = $btn.closest(self.selectors.block).find(self.selectors.table),
$toggleLabel = $btn.closest(self.selectors.block).find(self.selectors.repeaterLabel);
$table.toggle();
if ($table.is(':visible')) {
$table.closest(self.selectors.block).addClass('block-visible');
self.trigger('onRepeaterToggleVisible', [$btn, $table, $toggleLabel]);
} else {
$table.closest(self.selectors.block).removeClass('block-visible');
self.trigger('onRepeaterToggleHidden', [$btn, $table, $toggleLabel]);
}
$toggleLabel.toggle();
// Update row label
self.updateRowLabel(btn);
},
close: function close(btn) {
var self = this,
$btn = jQuery(btn),
$table = $btn.closest(self.selectors.block).find(self.selectors.table),
$toggleLabel = $btn.closest(self.selectors.block).find(self.selectors.repeaterLabel);
$table.closest(self.selectors.block).removeClass('block-visible');
$table.hide();
self.trigger('onRepeaterToggleHidden', [$btn, $table, $toggleLabel]);
$toggleLabel.show();
self.updateRowLabel(btn);
},
updateRowLabel: function updateRowLabel(btn) {
var self = this,
$btn = jQuery(btn),
$table = $btn.closest(self.selectors.block).find(self.selectors.table),
$toggleLabel = $btn.closest(self.selectors.block).find(self.selectors.repeaterLabel);
var selector = $toggleLabel.data('selector');
// For some browsers, `attr` is undefined; for others, `attr` is false. Check for both.
if ((typeof selector === 'undefined' ? 'undefined' : _typeof(selector)) !== ( true ? 'undefined' : undefined) && false !== selector) {
var value = false,
std = $toggleLabel.data('default');
if ($table.find(selector).length) {
value = $table.find(selector).val();
}
//filter hook
var computedLabel = self.triggerHandler('repeaterComputedLabel', [$table, $toggleLabel, value]);
// For some browsers, `attr` is undefined; for others, `attr` is false. Check for both.
if (undefined !== computedLabel && false !== computedLabel) {
value = computedLabel;
}
// Fallback to default row label
if (undefined === value || false === value) {
value = std;
}
$toggleLabel.html(value);
}
},
replaceAll: function replaceAll(search, replace, string) {
return string.replace(new RegExp(search, 'g'), replace);
},
init: function init() {
var self = this;
jQuery(document).on('click', this.selectors.add, function (event) {
event.preventDefault();
self.add(jQuery(this), event);
}).on('click', this.selectors.remove, function (event) {
event.preventDefault();
var result = confirm(jQuery(this).data('confirm').toString());
if (!result) {
return;
}
self.remove(jQuery(this), event);
}).on('click', this.selectors.toggle, function (event) {
event.preventDefault();
event.stopPropagation();
self.toggle(jQuery(this), event);
}).on('click', this.selectors.close, function (event) {
event.preventDefault();
event.stopPropagation();
self.close(jQuery(this), event);
});
jQuery(this.selectors.toggle).each(function () {
self.updateRowLabel(jQuery(this));
});
this.trigger('onRepeaterLoaded', [this]);
}
};
/***/ })
/******/ });