PluginProbe
Elementor Website Builder – more than just a page builder / 4.0.8
Elementor Website Builder – more than just a page builder v4.0.8
4.3.2 4.3.1 4.3.0 4.3.0-beta3 4.3.0-beta2 4.3.0-beta1 4.2.4 4.2.3 4.2.2 4.2.1 4.2.0 4.1.5 4.2.0-beta2 4.2.0-dev2 4.2.0-beta1 4.1.4 4.1.3 4.1.2 4.1.1 4.1.0 4.1.0-beta3 4.1.0-dev3 4.0.9 4.1.0-beta2 4.1.0-dev2 All 455 releases
← All changes | assets/js/atomic-widgets-editor.js +358 -125 4.2.0-beta1 → 4.0.8 View file →
@@ -683,62 +683,8 @@
683 683 };
684 684 }
685 685 return this.dispatchEvent(config === null || config === void 0 || (_config$names1 = config.names) === null || _config$names1 === void 0 || (_config$names1 = _config$names1.editorOne) === null || _config$names1 === void 0 ? void 0 : _config$names1.widgetPanelSearch, payload);
686 686 }
687 - }, {
688 - key: "createWpDashPayload",
689 - value: function createWpDashPayload() {
690 - var _config$appTypes$wpDa, _config$appTypes5, _config$locations11;
691 - var overrides = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
692 - var config = this.getConfig();
693 - return this.createBasePayload(_objectSpread({
694 - window_name: (_config$appTypes$wpDa = config === null || config === void 0 || (_config$appTypes5 = config.appTypes) === null || _config$appTypes5 === void 0 ? void 0 : _config$appTypes5.wpDash) !== null && _config$appTypes$wpDa !== void 0 ? _config$appTypes$wpDa : 'wpdash',
695 - target_location: this.toLowerSnake(config === null || config === void 0 || (_config$locations11 = config.locations) === null || _config$locations11 === void 0 ? void 0 : _config$locations11.wpDashAdmin),
696 - location_l2: ''
697 - }, overrides));
698 - }
699 - }, {
700 - key: "sendWpDashElementorMenuClick",
701 - value: function sendWpDashElementorMenuClick() {
702 - var _config$names10, _config$triggers10, _config$targetTypes11, _config$interactionRe13, _config$secondaryLoca11;
703 - var config = this.getConfig();
704 - return this.dispatchEvent(config === null || config === void 0 || (_config$names10 = config.names) === null || _config$names10 === void 0 || (_config$names10 = _config$names10.editorOne) === null || _config$names10 === void 0 ? void 0 : _config$names10.wpDashElementorMenuClick, this.createWpDashPayload({
705 - interaction_type: this.toLowerSnake(config === null || config === void 0 || (_config$triggers10 = config.triggers) === null || _config$triggers10 === void 0 ? void 0 : _config$triggers10.click),
706 - target_type: config === null || config === void 0 || (_config$targetTypes11 = config.targetTypes) === null || _config$targetTypes11 === void 0 ? void 0 : _config$targetTypes11.wpDashAdminMenuItem,
707 - target_name: 'elementor_menu_item',
708 - interaction_result: config === null || config === void 0 || (_config$interactionRe13 = config.interactionResults) === null || _config$interactionRe13 === void 0 ? void 0 : _config$interactionRe13.elementorSideMenuOpened,
709 - location_l1: this.toLowerSnake(config === null || config === void 0 || (_config$secondaryLoca11 = config.secondaryLocations) === null || _config$secondaryLoca11 === void 0 ? void 0 : _config$secondaryLoca11.wpDashElementorCoreMenu),
710 - interaction_description: 'core_user_clicked_elementor_menu_item'
711 - }));
712 - }
713 - }, {
714 - key: "sendWpDashEditorSubMenuHover",
715 - value: function sendWpDashEditorSubMenuHover() {
716 - var _config$names11, _config$triggers11, _config$targetTypes12, _config$interactionRe14, _config$secondaryLoca12;
717 - var config = this.getConfig();
718 - return this.dispatchEvent(config === null || config === void 0 || (_config$names11 = config.names) === null || _config$names11 === void 0 || (_config$names11 = _config$names11.editorOne) === null || _config$names11 === void 0 ? void 0 : _config$names11.wpDashEditorSubMenuHover, this.createWpDashPayload({
719 - interaction_type: this.toLowerSnake(config === null || config === void 0 || (_config$triggers11 = config.triggers) === null || _config$triggers11 === void 0 ? void 0 : _config$triggers11.hover),
720 - target_type: config === null || config === void 0 || (_config$targetTypes12 = config.targetTypes) === null || _config$targetTypes12 === void 0 ? void 0 : _config$targetTypes12.wpDashEditorMenu,
721 - target_name: 'wpdash_editor_sub_menu',
722 - interaction_result: config === null || config === void 0 || (_config$interactionRe14 = config.interactionResults) === null || _config$interactionRe14 === void 0 ? void 0 : _config$interactionRe14.editorSubMenuOpened,
723 - location_l1: this.toLowerSnake(config === null || config === void 0 || (_config$secondaryLoca12 = config.secondaryLocations) === null || _config$secondaryLoca12 === void 0 ? void 0 : _config$secondaryLoca12.wpDashElementorCoreSubMenu),
724 - interaction_description: 'core_user_hovered_sub_menu'
725 - }));
726 - }
727 - }, {
728 - key: "sendWpDashThemeBuilderClick",
729 - value: function sendWpDashThemeBuilderClick() {
730 - var _config$names12, _config$triggers12, _config$targetTypes13, _config$interactionRe15, _config$secondaryLoca13;
731 - var config = this.getConfig();
732 - return this.dispatchEvent(config === null || config === void 0 || (_config$names12 = config.names) === null || _config$names12 === void 0 || (_config$names12 = _config$names12.editorOne) === null || _config$names12 === void 0 ? void 0 : _config$names12.wpDashThemeBuilderClick, this.createWpDashPayload({
733 - interaction_type: this.toLowerSnake(config === null || config === void 0 || (_config$triggers12 = config.triggers) === null || _config$triggers12 === void 0 ? void 0 : _config$triggers12.click),
734 - target_type: config === null || config === void 0 || (_config$targetTypes13 = config.targetTypes) === null || _config$targetTypes13 === void 0 ? void 0 : _config$targetTypes13.wpDashSubMenuItem,
735 - target_name: 'theme_builder_menu_item',
736 - interaction_result: config === null || config === void 0 || (_config$interactionRe15 = config.interactionResults) === null || _config$interactionRe15 === void 0 ? void 0 : _config$interactionRe15.themeBuilderPromotionWindow,
737 - location_l1: this.toLowerSnake(config === null || config === void 0 || (_config$secondaryLoca13 = config.secondaryLocations) === null || _config$secondaryLoca13 === void 0 ? void 0 : _config$secondaryLoca13.wpDashThemeBuilder),
738 - interaction_description: 'core_user_clicked_theme_builder_menu_item'
739 - }));
740 - }
741 687 }]);
742 688 }();
743 689 var createDebouncedFinderSearch = exports.createDebouncedFinderSearch = function createDebouncedFinderSearch() {
744 690 var delay = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 300;
@@ -881,14 +827,10 @@
881 827 }
882 828 }, {
883 829 key: "initialize",
884 830 value: function initialize(attributes, options) {
885 - var _this$config;
886 831 var elementType = this.get('elType');
887 832 this.config = elementor.config.elements[elementType];
888 - if ((_this$config = this.config) !== null && _this$config !== void 0 && (_this$config = _this$config.meta) !== null && _this$config !== void 0 && _this$config.permanently_locked) {
889 - this.set('isLocked', true);
890 - }
891 833 var isNewElementCreate = 0 === this.get('elements').length && $e.commands.currentTrace.includes('document/elements/create');
892 834 if (isNewElementCreate) {
893 835 this.onElementCreate();
894 836 }
@@ -903,14 +845,8 @@
903 845 }, {
904 846 key: "onElementCreate",
905 847 value: function onElementCreate() {
906 848 var _this = this;
907 - if (this.get('skipDefaultChildren')) {
908 - this.unset('skipDefaultChildren', {
909 - silent: true
910 - });
911 - return;
912 - }
913 849 this.set('elements', this.getDefaultChildren().map(function (element) {
914 850 return _this.buildElement(element);
915 851 }));
916 852 }
@@ -934,10 +870,9 @@
934 870 id: id,
935 871 settings: (_element$settings = element.settings) !== null && _element$settings !== void 0 ? _element$settings : {},
936 872 elements: elements,
937 873 isLocked: element.isLocked || false,
938 - editor_settings: element.editor_settings || {},
939 - meta: element.meta || {}
874 + editor_settings: element.editor_settings || {}
940 875 };
941 876 }
942 877 }]);
943 878 }(elementor.modules.elements.models.Element);
@@ -1045,29 +980,8 @@
1045 980 var _default = exports["default"] = createFlexboxType;
1046 981
1047 982 /***/ }),
1048 983
1049 -/***/ "../modules/atomic-widgets/assets/js/editor/atomic-element-types/create-grid-type.js":
1050 -/*!*******************************************************************************************!*\
1051 - !*** ../modules/atomic-widgets/assets/js/editor/atomic-element-types/create-grid-type.js ***!
1052 - \*******************************************************************************************/
1053 -/***/ ((__unused_webpack_module, exports) => {
1054 -
1055 -"use strict";
1056 -
1057 -
1058 -Object.defineProperty(exports, "__esModule", ({
1059 - value: true
1060 -}));
1061 -exports["default"] = void 0;
1062 -var createGridType = function createGridType() {
1063 - var GridView = elementor.modules.elements.views.createAtomicElementBase('e-grid');
1064 - return new elementor.modules.elements.types.AtomicElementBase('e-grid', GridView);
1065 -};
1066 -var _default = exports["default"] = createGridType;
1067 -
1068 -/***/ }),
1069 -
1070 984 /***/ "../modules/atomic-widgets/assets/js/editor/component.js":
1071 985 /*!***************************************************************!*\
1072 986 !*** ../modules/atomic-widgets/assets/js/editor/component.js ***!
1073 987 \***************************************************************/
@@ -1202,15 +1116,20 @@
1202 1116 value: true
1203 1117 }));
1204 1118 exports["default"] = createAtomicElementBaseView;
1205 1119 var _regenerator = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/regenerator */ "../node_modules/@babel/runtime/regenerator/index.js"));
1120 +var _typeof2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/typeof */ "../node_modules/@babel/runtime/helpers/typeof.js"));
1206 1121 var _asyncToGenerator2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/asyncToGenerator */ "../node_modules/@babel/runtime/helpers/asyncToGenerator.js"));
1122 +var _defineProperty2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/defineProperty */ "../node_modules/@babel/runtime/helpers/defineProperty.js"));
1207 1123 var _toConsumableArray2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/toConsumableArray */ "../node_modules/@babel/runtime/helpers/toConsumableArray.js"));
1208 1124 var _slicedToArray2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/slicedToArray */ "../node_modules/@babel/runtime/helpers/slicedToArray.js"));
1209 1125 var _elementTypes = __webpack_require__(/*! elementor-editor/utils/element-types */ "../assets/dev/js/editor/utils/element-types.js");
1210 1126 var _atomicElementEmptyView = _interopRequireDefault(__webpack_require__(/*! ./container/atomic-element-empty-view */ "../modules/atomic-widgets/assets/js/editor/container/atomic-element-empty-view.js"));
1127 +function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
1128 +function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { (0, _defineProperty2.default)(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
1211 1129 var BaseElementView = elementor.modules.elements.views.BaseElement;
1212 1130 function createAtomicElementBaseView(type) {
1131 + var resolvedTagCache = new WeakMap();
1213 1132 var AtomicElementView = BaseElementView.extend({
1214 1133 template: Marionette.TemplateCache.get("#tmpl-elementor-".concat(type, "-content")),
1215 1134 emptyView: _atomicElementEmptyView.default,
1216 1135 _childrenRenderPromises: [],
@@ -1221,8 +1140,24 @@
1221 1140 return previewDocument.createElement(tag);
1222 1141 }
1223 1142 return document.createElement(tag);
1224 1143 },
1144 + tagName: function tagName() {
1145 + var _resolvedTagCache$get;
1146 + return (_resolvedTagCache$get = resolvedTagCache.get(this.model)) !== null && _resolvedTagCache$get !== void 0 ? _resolvedTagCache$get : this._resolveTag();
1147 + },
1148 + _resolveTag: function _resolveTag() {
1149 + var _this$getResolverRend, _linkSetting$value, _resolvedLinkTag$valu, _resolvedTag$value;
1150 + var renderContext = (_this$getResolverRend = this.getResolverRenderContext) === null || _this$getResolverRend === void 0 ? void 0 : _this$getResolverRend.call(this);
1151 + var tagSetting = this.model.getSetting('tag');
1152 + var resolvedTag = this._resolvePropValue(tagSetting, renderContext);
1153 + var linkSetting = this.model.getSetting('link');
1154 + var resolvedLinkTag = this._resolvePropValue(linkSetting === null || linkSetting === void 0 || (_linkSetting$value = linkSetting.value) === null || _linkSetting$value === void 0 ? void 0 : _linkSetting$value.tag, renderContext);
1155 + var linkTag = (_resolvedLinkTag$valu = resolvedLinkTag === null || resolvedLinkTag === void 0 ? void 0 : resolvedLinkTag.value) !== null && _resolvedLinkTag$valu !== void 0 ? _resolvedLinkTag$valu : resolvedLinkTag;
1156 + var baseTag = (_resolvedTag$value = resolvedTag === null || resolvedTag === void 0 ? void 0 : resolvedTag.value) !== null && _resolvedTag$value !== void 0 ? _resolvedTag$value : resolvedTag;
1157 + var resultTag = linkTag !== null && linkTag !== void 0 ? linkTag : baseTag;
1158 + return resultTag || this.model.config.default_html_tag || 'div';
1159 + },
1225 1160 getChildViewContainer: function getChildViewContainer() {
1226 1161 this.childViewContainer = '';
1227 1162 return Marionette.CompositeView.prototype.getChildViewContainer.apply(this, arguments);
1228 1163 },
@@ -1245,16 +1180,157 @@
1245 1180 getResolverRenderContext: function getResolverRenderContext() {
1246 1181 var _this$_parent2, _this$_parent2$getRes;
1247 1182 return (_this$_parent2 = this._parent) === null || _this$_parent2 === void 0 || (_this$_parent2$getRes = _this$_parent2.getResolverRenderContext) === null || _this$_parent2$getRes === void 0 ? void 0 : _this$_parent2$getRes.call(_this$_parent2);
1248 1183 },
1184 + className: function className() {
1185 + var generatedClasses = this.getGeneratedClasses();
1186 + return "".concat(BaseElementView.prototype.className.apply(this), " e-con e-atomic-element ").concat(this.getClassString(), " ").concat(generatedClasses);
1187 + },
1188 + getGeneratedClasses: function getGeneratedClasses() {
1189 + var _this = this;
1190 + var propsSchema = this.model.config.atomic_props_schema || {};
1191 + var generatedClasses = [];
1192 + Object.keys(propsSchema).forEach(function (key) {
1193 + var _propsSchema$key;
1194 + var propMeta = (_propsSchema$key = propsSchema[key]) === null || _propsSchema$key === void 0 ? void 0 : _propsSchema$key.meta;
1195 + if (propMeta !== null && propMeta !== void 0 && propMeta.generates_class) {
1196 + var _settingValue$value;
1197 + var classPattern = propMeta.generates_class;
1198 + var settingValue = _this.model.getSetting(key);
1199 + var value = (_settingValue$value = settingValue === null || settingValue === void 0 ? void 0 : settingValue.value) !== null && _settingValue$value !== void 0 ? _settingValue$value : settingValue;
1200 + if (value && 'string' === typeof value) {
1201 + var className = classPattern.replace('{value}', value);
1202 + generatedClasses.push(className);
1203 + }
1204 + }
1205 + });
1206 + return generatedClasses.join(' ');
1207 + },
1208 + // TODO: Copied from `views/column.js`.
1209 + ui: function ui() {
1210 + var ui = BaseElementView.prototype.ui.apply(this, arguments);
1211 + ui.percentsTooltip = '> .elementor-element-overlay .elementor-column-percents-tooltip';
1212 + return ui;
1213 + },
1214 + attributes: function attributes() {
1215 + var _this$model$getSettin, _this$model$getSettin2, _this$model$config$in, _this$model;
1216 + var attr = BaseElementView.prototype.attributes.apply(this);
1217 + var local = {};
1218 + var cssId = this.model.getSetting('_cssid');
1219 + var customAttributes = (_this$model$getSettin = (_this$model$getSettin2 = this.model.getSetting('attributes')) === null || _this$model$getSettin2 === void 0 ? void 0 : _this$model$getSettin2.value) !== null && _this$model$getSettin !== void 0 ? _this$model$getSettin : [];
1220 + var initialAttributes = (_this$model$config$in = this === null || this === void 0 || (_this$model = this.model) === null || _this$model === void 0 || (_this$model = _this$model.config) === null || _this$model === void 0 ? void 0 : _this$model.initial_attributes) !== null && _this$model$config$in !== void 0 ? _this$model$config$in : {};
1221 + if (cssId) {
1222 + local.id = cssId.value;
1223 + }
1224 + local['data-interaction-id'] = this.getInteractionId();
1225 + customAttributes.forEach(function (attribute) {
1226 + var _attribute$value, _attribute$value2;
1227 + var key = (_attribute$value = attribute.value) === null || _attribute$value === void 0 || (_attribute$value = _attribute$value.key) === null || _attribute$value === void 0 ? void 0 : _attribute$value.value;
1228 + var value = (_attribute$value2 = attribute.value) === null || _attribute$value2 === void 0 || (_attribute$value2 = _attribute$value2.value) === null || _attribute$value2 === void 0 ? void 0 : _attribute$value2.value;
1229 + if (key && value) {
1230 + local[key] = value;
1231 + }
1232 + });
1233 + return _objectSpread(_objectSpread(_objectSpread({}, attr), initialAttributes), local);
1234 + },
1235 + // TODO: Copied from `views/column.js`.
1236 + attachElContent: function attachElContent() {
1237 + BaseElementView.prototype.attachElContent.apply(this, arguments);
1238 + var $tooltip = jQuery('<div>', {
1239 + class: 'elementor-column-percents-tooltip',
1240 + 'data-side': elementorCommon.config.isRTL ? 'right' : 'left'
1241 + });
1242 + this.$el.children('.elementor-element-overlay').append($tooltip);
1243 + },
1244 + // TODO: Copied from `views/column.js`.
1245 + getPercentSize: function getPercentSize(size) {
1246 + if (!size) {
1247 + size = this.el.getBoundingClientRect().width;
1248 + }
1249 + return +(size / this.$el.parent().width() * 100).toFixed(3);
1250 + },
1251 + // TODO: Copied from `views/column.js`.
1252 + getPercentsForDisplay: function getPercentsForDisplay() {
1253 + var width = +this.model.getSetting('width') || this.getPercentSize();
1254 + return width.toFixed(1) + '%';
1255 + },
1256 + renderOnChange: function renderOnChange(settings) {
1257 + var _this2 = this;
1258 + var changed = settings.changedAttributes();
1259 + setTimeout(function () {
1260 + _this2.updateHandlesPosition();
1261 + });
1262 + if (!changed) {
1263 + return;
1264 + }
1265 + BaseElementView.prototype.renderOnChange.apply(this, settings);
1266 + if (changed.attributes) {
1267 + var $elAttrs = this.$el[0].attributes;
1268 + for (var i = $elAttrs.length - 1; i >= 0; i--) {
1269 + var attrName = $elAttrs[i].name;
1270 + if (attrName !== 'class') {
1271 + this.$el.removeAttr(attrName);
1272 + }
1273 + }
1274 + var newAttrs = this.attributes();
1275 + Object.entries(newAttrs).forEach(function (_ref5) {
1276 + var _ref6 = (0, _slicedToArray2.default)(_ref5, 2),
1277 + key = _ref6[0],
1278 + value = _ref6[1];
1279 + if (key !== 'class' && value !== undefined) {
1280 + _this2.$el.attr(key, value);
1281 + }
1282 + });
1283 + return;
1284 + }
1285 +
1286 + // Check if classes changed OR if any setting with generates_class metadata changed
1287 + var propsSchema = this.model.config.atomic_props_schema || {};
1288 + var hasGeneratesClassChange = Object.keys(changed).some(function (key) {
1289 + var _propsSchema$key2;
1290 + return (_propsSchema$key2 = propsSchema[key]) === null || _propsSchema$key2 === void 0 || (_propsSchema$key2 = _propsSchema$key2.meta) === null || _propsSchema$key2 === void 0 ? void 0 : _propsSchema$key2.generates_class;
1291 + });
1292 + if (changed.classes || hasGeneratesClassChange) {
1293 + // Preserve runtime state classes (e.g., e--selected) that are managed by Alpine
1294 + // and would be lost when replacing the class attribute.
1295 + var preservedClasses = Array.from(this.$el[0].classList).filter(function (cls) {
1296 + return cls.startsWith('e--');
1297 + });
1298 + this.$el.attr('class', this.className());
1299 + preservedClasses.forEach(function (cls) {
1300 + return _this2.$el[0].classList.add(cls);
1301 + });
1302 + return;
1303 + }
1304 + if (changed._cssid) {
1305 + if (changed._cssid.value) {
1306 + this.$el.attr('id', changed._cssid.value);
1307 + } else {
1308 + this.$el.removeAttr('id');
1309 + }
1310 + return;
1311 + }
1312 + this.$el.addClass(this.getClasses());
1313 + if (this.isTagChanged(changed)) {
1314 + this.rerenderEntireView();
1315 + }
1316 + },
1317 + isTagChanged: function isTagChanged(changed) {
1318 + return ((changed === null || changed === void 0 ? void 0 : changed.tag) !== undefined || (changed === null || changed === void 0 ? void 0 : changed.link) !== undefined) && this._parent && this.tagName() !== this.el.tagName;
1319 + },
1320 + rerenderEntireView: function rerenderEntireView() {
1321 + var parent = this._parent;
1322 + this._parent.removeChildView(this);
1323 + parent.addChild(this.model, AtomicElementView, this._index);
1324 + },
1249 1325 render: function render() {
1250 - var _this = this;
1326 + var _this3 = this;
1251 1327 this._currentRenderPromise = new Promise(function (resolve) {
1252 1328 // Optimize rendering by reusing existing child views instead of recreating them.
1253 - if (_this._shouldSkipFullRender()) {
1254 - _this._renderWithoutDomRecreation(resolve);
1329 + if (_this3._shouldSkipFullRender()) {
1330 + _this3._renderWithoutDomRecreation(resolve);
1255 1331 } else {
1256 - _this._renderWithDomRecreation(resolve);
1332 + _this3._renderWithDomRecreation(resolve);
1257 1333 }
1258 1334 });
1259 1335 return this;
1260 1336 },
@@ -1271,43 +1347,87 @@
1271 1347 var firstChild = this.children.findByIndex(0);
1272 1348 return (_firstChild$$el$get$i = firstChild === null || firstChild === void 0 || (_firstChild$$el = firstChild.$el) === null || _firstChild$$el === void 0 || (_firstChild$$el = _firstChild$$el.get(0)) === null || _firstChild$$el === void 0 ? void 0 : _firstChild$$el.isConnected) !== null && _firstChild$$el$get$i !== void 0 ? _firstChild$$el$get$i : false;
1273 1349 },
1274 1350 _renderWithoutDomRecreation: function _renderWithoutDomRecreation(resolve) {
1275 - var _this2 = this;
1351 + var _this4 = this;
1276 1352 this._beforeRender();
1277 1353 this._renderChildren();
1278 1354 this._waitForChildrenToComplete().then(function () {
1279 - _this2._afterRender();
1355 + _this4._afterRender();
1280 1356 resolve();
1281 1357 });
1282 1358 },
1283 1359 _renderWithDomRecreation: function _renderWithDomRecreation(resolve) {
1360 + var _this5 = this;
1284 1361 BaseElementView.prototype.render.apply(this, arguments);
1285 1362 this._waitForChildrenToComplete().then(function () {
1363 + _this5._applyResolvedAttributes();
1286 1364 resolve();
1287 1365 });
1288 1366 },
1289 1367 _beforeRender: function _beforeRender() {
1290 1368 this._isRendering = true;
1369 + this._invalidateTagCache();
1291 1370 this.triggerMethod('before:render', this);
1292 1371 },
1372 + _invalidateTagCache: function _invalidateTagCache() {
1373 + resolvedTagCache.delete(this.model);
1374 + },
1375 + _cacheResolvedTag: function _cacheResolvedTag(tag) {
1376 + resolvedTagCache.set(this.model, tag);
1377 + },
1293 1378 _afterRender: function _afterRender() {
1294 1379 this._isRendering = false;
1295 1380 this.isRendered = true;
1296 1381 this.triggerMethod('render', this);
1382 + this._applyResolvedAttributes();
1297 1383 },
1384 + _applyResolvedAttributes: function _applyResolvedAttributes() {
1385 + if (!this._parent) {
1386 + return;
1387 + }
1388 + if (this._shouldRecreateForTagChange()) {
1389 + return;
1390 + }
1391 + this._applyLinkAttributes();
1392 + },
1393 + _shouldRecreateForTagChange: function _shouldRecreateForTagChange() {
1394 + var resolvedTag = this.tagName();
1395 + var currentTag = this.el.tagName.toLowerCase();
1396 + if (resolvedTag === currentTag) {
1397 + return false;
1398 + }
1399 + this._cacheResolvedTag(resolvedTag);
1400 + this.rerenderEntireView();
1401 + return true;
1402 + },
1403 + _applyLinkAttributes: function _applyLinkAttributes() {
1404 + var _this6 = this;
1405 + this.$el.removeAttr('href');
1406 + this.$el.removeAttr('data-action-link');
1407 + var link = this.getLinkAttributes();
1408 + if (!link) {
1409 + return;
1410 + }
1411 + Object.entries(link).forEach(function (_ref7) {
1412 + var _ref8 = (0, _slicedToArray2.default)(_ref7, 2),
1413 + key = _ref8[0],
1414 + value = _ref8[1];
1415 + _this6.$el.attr(key, value);
1416 + });
1417 + },
1298 1418 _waitForChildrenToComplete: function _waitForChildrenToComplete() {
1299 - var _this3 = this;
1419 + var _this7 = this;
1300 1420 return (0, _asyncToGenerator2.default)(/*#__PURE__*/_regenerator.default.mark(function _callee() {
1301 1421 return _regenerator.default.wrap(function (_context) {
1302 1422 while (1) switch (_context.prev = _context.next) {
1303 1423 case 0:
1304 - if (!(_this3._childrenRenderPromises.length > 0)) {
1424 + if (!(_this7._childrenRenderPromises.length > 0)) {
1305 1425 _context.next = 1;
1306 1426 break;
1307 1427 }
1308 1428 _context.next = 1;
1309 - return Promise.all(_this3._childrenRenderPromises);
1429 + return Promise.all(_this7._childrenRenderPromises);
1310 1430 case 1:
1311 1431 case "end":
1312 1432 return _context.stop();
1313 1433 }
@@ -1326,25 +1446,25 @@
1326 1446 this._collectChildrenRenderPromises();
1327 1447 },
1328 1448 _collectChildrenRenderPromises: function _collectChildrenRenderPromises() {
1329 1449 var _this$children3,
1330 - _this4 = this;
1450 + _this8 = this;
1331 1451 this._childrenRenderPromises = [];
1332 1452 (_this$children3 = this.children) === null || _this$children3 === void 0 || _this$children3.each(function (childView) {
1333 1453 if (childView._currentRenderPromise) {
1334 - _this4._childrenRenderPromises.push(childView._currentRenderPromise);
1454 + _this8._childrenRenderPromises.push(childView._currentRenderPromise);
1335 1455 }
1336 1456 });
1337 1457 },
1338 1458 onRender: function onRender() {
1339 - var _this5 = this;
1459 + var _this9 = this;
1340 1460 this.dispatchPreviewEvent('elementor/element/render');
1341 1461 BaseElementView.prototype.onRender.apply(this, arguments);
1342 1462
1343 1463 // Defer to wait for everything to render.
1344 1464 setTimeout(function () {
1345 - _this5.droppableInitialize();
1346 - _this5.updateHandlesPosition();
1465 + _this9.droppableInitialize();
1466 + _this9.updateHandlesPosition();
1347 1467 });
1348 1468 },
1349 1469 onDestroy: function onDestroy() {
1350 1470 BaseElementView.prototype.onDestroy.apply(this, arguments);
@@ -1359,8 +1479,46 @@
1359 1479 element: this.getDomElement().get(0)
1360 1480 }
1361 1481 }));
1362 1482 },
1483 + _hasLink: function _hasLink(renderContext) {
1484 + var _resolvedLink$value;
1485 + var linkSetting = this.model.getSetting('link');
1486 + var resolvedLink = this._resolvePropValue(linkSetting, renderContext);
1487 + if ('link' !== (resolvedLink === null || resolvedLink === void 0 ? void 0 : resolvedLink.$$type)) {
1488 + return false;
1489 + }
1490 + var destination = this._resolvePropValue((_resolvedLink$value = resolvedLink.value) === null || _resolvedLink$value === void 0 ? void 0 : _resolvedLink$value.destination, renderContext);
1491 + return !!(destination !== null && destination !== void 0 && destination.value);
1492 + },
1493 + getLinkAttributes: function getLinkAttributes() {
1494 + var _this$getResolverRend2, _resolvedLink$value2;
1495 + var renderContext = (_this$getResolverRend2 = this.getResolverRenderContext) === null || _this$getResolverRend2 === void 0 ? void 0 : _this$getResolverRend2.call(this);
1496 + var linkSetting = this.model.getSetting('link');
1497 + var resolvedLink = this._resolvePropValue(linkSetting, renderContext);
1498 + if ('link' !== (resolvedLink === null || resolvedLink === void 0 ? void 0 : resolvedLink.$$type)) {
1499 + return null;
1500 + }
1501 + var destination = this._resolvePropValue((_resolvedLink$value2 = resolvedLink.value) === null || _resolvedLink$value2 === void 0 ? void 0 : _resolvedLink$value2.destination, renderContext);
1502 + if (!(destination !== null && destination !== void 0 && destination.value)) {
1503 + return null;
1504 + }
1505 + var $$type = destination.$$type,
1506 + value = destination.value;
1507 + if ('dynamic' === $$type) {
1508 + var resolvedValue = this.handleDynamicLink(value);
1509 + if (!resolvedValue) {
1510 + return null;
1511 + }
1512 + var attributeKey = 'action' === (value === null || value === void 0 ? void 0 : value.group) ? 'data-action-link' : 'href';
1513 + return (0, _defineProperty2.default)({}, attributeKey, resolvedValue);
1514 + }
1515 + var isPostId = 'number' === $$type;
1516 + var hrefPrefix = isPostId ? elementor.config.home_url + '/?p=' : '';
1517 + return {
1518 + href: hrefPrefix + value
1519 + };
1520 + },
1363 1521 droppableInitialize: function droppableInitialize() {
1364 1522 this.$el.html5Droppable(this.getDroppableOptions());
1365 1523 },
1366 1524 /**
@@ -1368,9 +1526,9 @@
1368 1526 *
1369 1527 * @return {Object} groups
1370 1528 */
1371 1529 getContextMenuGroups: function getContextMenuGroups() {
1372 - var _this6 = this,
1530 + var _this0 = this,
1373 1531 _elementorCommon$conf;
1374 1532 var saveActions = [{
1375 1533 name: 'save',
1376 1534 title: __('Save as a template', 'elementor'),
@@ -1375,9 +1533,9 @@
1375 1533 name: 'save',
1376 1534 title: __('Save as a template', 'elementor'),
1377 1535 callback: this.saveAsTemplate.bind(this),
1378 1536 isEnabled: function isEnabled() {
1379 - return !_this6.getContainer().isLocked();
1537 + return !_this0.getContainer().isLocked();
1380 1538 }
1381 1539 }];
1382 1540 var isAdministrator = elementor.config.user.is_administrator;
1383 1541 var isExperimentalFeaturesEnabled = (_elementorCommon$conf = elementorCommon.config.experimentalFeatures) === null || _elementorCommon$conf === void 0 ? void 0 : _elementorCommon$conf.e_components;
@@ -1396,9 +1554,9 @@
1396 1554 shortcut: isProActive || isProOutdated ? newBadge : proBadge,
1397 1555 hasShortcutAction: showPromoBadge,
1398 1556 callback: this.saveAsComponent.bind(this),
1399 1557 isEnabled: function isEnabled() {
1400 - return (isProActive || isProOutdated) && !_this6.getContainer().isLocked();
1558 + return (isProActive || isProOutdated) && !_this0.getContainer().isLocked();
1401 1559 }
1402 1560 });
1403 1561 }
1404 1562 var groups = BaseElementView.prototype.getContextMenuGroups.apply(this, arguments),
@@ -1481,9 +1639,9 @@
1481 1639 preventInit: true
1482 1640 };
1483 1641 },
1484 1642 getDroppableOptions: function getDroppableOptions() {
1485 - var _this7 = this;
1643 + var _this1 = this;
1486 1644 var items = '> .elementor-element, > .elementor-empty-view .elementor-first-add';
1487 1645 return {
1488 1646 axis: null,
1489 1647 items: items,
@@ -1493,9 +1651,9 @@
1493 1651 currentElementClass: 'elementor-html5dnd-current-element',
1494 1652 placeholderClass: 'elementor-sortable-placeholder elementor-widget-placeholder',
1495 1653 hasDraggingOnChildClass: 'e-dragging-over',
1496 1654 getDropContainer: function getDropContainer() {
1497 - return _this7.getContainer();
1655 + return _this1.getContainer();
1498 1656 },
1499 1657 onDropping: function onDropping(side, event) {
1500 1658 event.stopPropagation();
1501 1659
@@ -1505,14 +1663,14 @@
1505 1663 draggedElement = draggedView === null || draggedView === void 0 ? void 0 : draggedView.getContainer().view.el,
1506 1664 containerElement = event.currentTarget.parentElement,
1507 1665 elements = Array.from((containerElement === null || containerElement === void 0 ? void 0 : containerElement.querySelectorAll(':scope > .elementor-element')) || []);
1508 1666 var targetIndex = elements.indexOf(event.currentTarget);
1509 - if (_this7.isPanelElement(draggedView, draggedElement)) {
1667 + if (_this1.isPanelElement(draggedView, draggedElement)) {
1510 1668 var _elementorCommon;
1511 - if (_this7.draggingOnBottomOrRightSide(side) && !_this7.emptyViewIsCurrentlyBeingDraggedOver()) {
1669 + if (_this1.draggingOnBottomOrRightSide(side) && !_this1.emptyViewIsCurrentlyBeingDraggedOver()) {
1512 1670 targetIndex++;
1513 1671 }
1514 - _this7.onDrop(event, {
1672 + _this1.onDrop(event, {
1515 1673 at: targetIndex
1516 1674 });
1517 1675 if ((_elementorCommon = elementorCommon) !== null && _elementorCommon !== void 0 && (_elementorCommon = _elementorCommon.eventsManager) !== null && _elementorCommon !== void 0 && _elementorCommon.dispatchEvent) {
1518 1676 var selectedElement = elementor.channels.panelElements.request('element:selected');
@@ -1530,16 +1688,16 @@
1530 1688 }
1531 1689 }
1532 1690 return;
1533 1691 }
1534 - if (_this7.isParentElement(draggedView.getContainer().id)) {
1692 + if (_this1.isParentElement(draggedView.getContainer().id)) {
1535 1693 return;
1536 1694 }
1537 - if (_this7.emptyViewIsCurrentlyBeingDraggedOver()) {
1538 - _this7.moveDroppedItem(draggedView, 0);
1695 + if (_this1.emptyViewIsCurrentlyBeingDraggedOver()) {
1696 + _this1.moveDroppedItem(draggedView, 0);
1539 1697 return;
1540 1698 }
1541 - _this7.moveExistingElement(side, draggedView, containerElement, elements, targetIndex, draggedElement);
1699 + _this1.moveExistingElement(side, draggedView, containerElement, elements, targetIndex, draggedElement);
1542 1700 }
1543 1701 };
1544 1702 },
1545 1703 moveExistingElement: function moveExistingElement(side, draggedView, containerElement, elements, targetIndex, draggedElement) {
@@ -1657,8 +1815,26 @@
1657 1815 });
1658 1816 });
1659 1817 this.addSectionView = addSectionView;
1660 1818 },
1819 + getClasses: function getClasses() {
1820 + var _window, _window$get, _this$options;
1821 + var transformer = (_window = window) === null || _window === void 0 || (_window = _window.elementorV2) === null || _window === void 0 || (_window = _window.editorCanvas) === null || _window === void 0 || (_window = _window.settingsTransformersRegistry) === null || _window === void 0 || (_window$get = _window.get) === null || _window$get === void 0 ? void 0 : _window$get.call(_window, 'classes');
1822 + if (!transformer) {
1823 + return [];
1824 + }
1825 + return transformer(((_this$options = this.options) === null || _this$options === void 0 || (_this$options = _this$options.model) === null || _this$options === void 0 || (_this$options = _this$options.getSetting('classes')) === null || _this$options === void 0 ? void 0 : _this$options.value) || []);
1826 + },
1827 + getClassString: function getClassString() {
1828 + var classes = this.getClasses();
1829 + var base = this.getBaseClass();
1830 + return [base].concat((0, _toConsumableArray2.default)(classes)).join(' ');
1831 + },
1832 + getBaseClass: function getBaseClass() {
1833 + var _this$options2, _Object$keys$;
1834 + var baseStyles = elementor.helpers.getAtomicWidgetBaseStyles((_this$options2 = this.options) === null || _this$options2 === void 0 ? void 0 : _this$options2.model);
1835 + return (_Object$keys$ = Object.keys(baseStyles !== null && baseStyles !== void 0 ? baseStyles : {})[0]) !== null && _Object$keys$ !== void 0 ? _Object$keys$ : '';
1836 + },
1661 1837 isOverflowHidden: function isOverflowHidden() {
1662 1838 var elementStyles = window.getComputedStyle(this.el);
1663 1839 var overflowStyles = [elementStyles.overflowX, elementStyles.overflowY, elementStyles.overflow];
1664 1840 return overflowStyles.includes('hidden') || overflowStyles.includes('auto');
@@ -1683,8 +1859,75 @@
1683 1859 return true;
1684 1860 }
1685 1861 return 0 === this.model.collection.indexOf(this.model);
1686 1862 },
1863 + getDynamicLinkValue: function getDynamicLinkValue(name, settings) {
1864 + var simpleTransform = function simpleTransform(props) {
1865 + var transformed = Object.entries(props).map(function (_ref0) {
1866 + var _ref1 = (0, _slicedToArray2.default)(_ref0, 2),
1867 + settingKey = _ref1[0],
1868 + settingValue = _ref1[1];
1869 + var value = 'object' === (0, _typeof2.default)(settingValue) && 'value' in settingValue ? settingValue.value : settingValue;
1870 + return [settingKey, value];
1871 + });
1872 + return Object.fromEntries(transformed);
1873 + };
1874 + var getTagValue = function getTagValue() {
1875 + var _elementor$dynamicTag;
1876 + var tag = elementor.dynamicTags.createTag('v4-dynamic-tag', name, simpleTransform(settings));
1877 + if (!tag) {
1878 + return null;
1879 + }
1880 + return (_elementor$dynamicTag = elementor.dynamicTags.loadTagDataFromCache(tag)) !== null && _elementor$dynamicTag !== void 0 ? _elementor$dynamicTag : null;
1881 + };
1882 + var tagValue = getTagValue();
1883 + if (tagValue !== null) {
1884 + return tagValue;
1885 + }
1886 + return new Promise(function (resolve) {
1887 + elementor.dynamicTags.refreshCacheFromServer(function () {
1888 + resolve(getTagValue());
1889 + });
1890 + });
1891 + },
1892 + handleDynamicLink: function handleDynamicLink(linkValue) {
1893 + var _this10 = this;
1894 + var result = this.getDynamicLinkValue(linkValue.name, linkValue.settings);
1895 + if (!result) {
1896 + return null;
1897 + }
1898 + if ('string' === typeof result) {
1899 + return result;
1900 + }
1901 + result.then(function (href) {
1902 + _this10.el.removeAttribute('href');
1903 + var attribute = 'action' === linkValue.group ? 'data-action-link' : 'href';
1904 + _this10.el.setAttribute(attribute, href);
1905 + }).then(function () {
1906 + return _this10.dispatchPreviewEvent('elementor/element/render');
1907 + });
1908 + return null;
1909 + },
1910 + _resolvePropValue: function _resolvePropValue(prop, renderContext) {
1911 + var _window2, _registry$get;
1912 + if (!prop || (0, _typeof2.default)(prop) !== 'object') {
1913 + return prop;
1914 + }
1915 + if ('overridable' !== prop.$$type) {
1916 + return prop;
1917 + }
1918 + var registry = (_window2 = window) === null || _window2 === void 0 || (_window2 = _window2.elementorV2) === null || _window2 === void 0 || (_window2 = _window2.editorCanvas) === null || _window2 === void 0 ? void 0 : _window2.settingsTransformersRegistry;
1919 + var transformer = registry === null || registry === void 0 || (_registry$get = registry.get) === null || _registry$get === void 0 ? void 0 : _registry$get.call(registry, 'overridable');
1920 + if (!transformer) {
1921 + var _prop$value;
1922 + return (_prop$value = prop.value) === null || _prop$value === void 0 ? void 0 : _prop$value.origin_value;
1923 + }
1924 + var transformed = transformer(prop.value, {
1925 + key: 'overridable',
1926 + renderContext: renderContext
1927 + });
1928 + return this._resolvePropValue(transformed, renderContext);
1929 + },
1687 1930 getInteractionId: function getInteractionId() {
1688 1931 var originId = this.model.get('originId');
1689 1932 var id = this.model.get('id');
1690 1933 return originId !== null && originId !== void 0 ? originId : id;
@@ -2976,9 +3219,8 @@
2976 3219 var _createAtomicElementBaseView = _interopRequireDefault(__webpack_require__(/*! ./create-atomic-element-base-view */ "../modules/atomic-widgets/assets/js/editor/create-atomic-element-base-view.js"));
2977 3220 var _atomicElementBaseModel = _interopRequireDefault(__webpack_require__(/*! ./atomic-element-base-model */ "../modules/atomic-widgets/assets/js/editor/atomic-element-base-model.js"));
2978 3221 var _createDivBlockType = _interopRequireDefault(__webpack_require__(/*! ./atomic-element-types/create-div-block-type */ "../modules/atomic-widgets/assets/js/editor/atomic-element-types/create-div-block-type.js"));
2979 3222 var _createFlexboxType = _interopRequireDefault(__webpack_require__(/*! ./atomic-element-types/create-flexbox-type */ "../modules/atomic-widgets/assets/js/editor/atomic-element-types/create-flexbox-type.js"));
2980 -var _createGridType = _interopRequireDefault(__webpack_require__(/*! ./atomic-element-types/create-grid-type */ "../modules/atomic-widgets/assets/js/editor/atomic-element-types/create-grid-type.js"));
2981 3223 function _callSuper(t, o, e) { return o = (0, _getPrototypeOf2.default)(o), (0, _possibleConstructorReturn2.default)(t, _isNativeReflectConstruct() ? Reflect.construct(o, e || [], (0, _getPrototypeOf2.default)(t).constructor) : o.apply(t, e)); }
2982 3224 function _isNativeReflectConstruct() { try { var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); } catch (t) {} return (_isNativeReflectConstruct = function _isNativeReflectConstruct() { return !!t; })(); }
2983 3225 var Module = /*#__PURE__*/function (_elementorModules$edi) {
2984 3226 function Module() {
@@ -3002,19 +3244,10 @@
3002 3244 }
3003 3245 }, {
3004 3246 key: "registerAtomicElements",
3005 3247 value: function registerAtomicElements() {
3006 - this.registerAtomicElementTypeIfAbsent((0, _createDivBlockType.default)());
3007 - this.registerAtomicElementTypeIfAbsent((0, _createFlexboxType.default)());
3008 - this.registerAtomicElementTypeIfAbsent((0, _createGridType.default)());
3009 - }
3010 - }, {
3011 - key: "registerAtomicElementTypeIfAbsent",
3012 - value: function registerAtomicElementTypeIfAbsent(elementType) {
3013 - if (elementor.elementsManager.getElementTypeClass(elementType.getType())) {
3014 - return;
3015 - }
3016 - elementor.elementsManager.registerElementType(elementType);
3248 + elementor.elementsManager.registerElementType((0, _createDivBlockType.default)());
3249 + elementor.elementsManager.registerElementType((0, _createFlexboxType.default)());
3017 3250 }
3018 3251 }]);
3019 3252 }(elementorModules.editor.utils.Module);
3020 3253 new Module();