PluginProbe
Elementor Website Builder – more than just a page builder / 4.0.3
Elementor Website Builder – more than just a page builder v4.0.3
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 4.0.8 All 454 releases
← All changes | assets/js/atomic-widgets-editor.js +356 -38 4.1.0-beta3 → 4.0.3 View file →
@@ -827,14 +827,10 @@
827 827 }
828 828 }, {
829 829 key: "initialize",
830 830 value: function initialize(attributes, options) {
831 - var _this$config;
832 831 var elementType = this.get('elType');
833 832 this.config = elementor.config.elements[elementType];
834 - if ((_this$config = this.config) !== null && _this$config !== void 0 && (_this$config = _this$config.meta) !== null && _this$config !== void 0 && _this$config.permanently_locked) {
835 - this.set('isLocked', true);
836 - }
837 833 var isNewElementCreate = 0 === this.get('elements').length && $e.commands.currentTrace.includes('document/elements/create');
838 834 if (isNewElementCreate) {
839 835 this.onElementCreate();
840 836 }
@@ -849,14 +845,8 @@
849 845 }, {
850 846 key: "onElementCreate",
851 847 value: function onElementCreate() {
852 848 var _this = this;
853 - if (this.get('skipDefaultChildren')) {
854 - this.unset('skipDefaultChildren', {
855 - silent: true
856 - });
857 - return;
858 - }
859 849 this.set('elements', this.getDefaultChildren().map(function (element) {
860 850 return _this.buildElement(element);
861 851 }));
862 852 }
@@ -880,10 +870,9 @@
880 870 id: id,
881 871 settings: (_element$settings = element.settings) !== null && _element$settings !== void 0 ? _element$settings : {},
882 872 elements: elements,
883 873 isLocked: element.isLocked || false,
884 - editor_settings: element.editor_settings || {},
885 - meta: element.meta || {}
874 + editor_settings: element.editor_settings || {}
886 875 };
887 876 }
888 877 }]);
889 878 }(elementor.modules.elements.models.Element);
@@ -1127,15 +1116,20 @@
1127 1116 value: true
1128 1117 }));
1129 1118 exports["default"] = createAtomicElementBaseView;
1130 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"));
1131 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"));
1132 1123 var _toConsumableArray2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/toConsumableArray */ "../node_modules/@babel/runtime/helpers/toConsumableArray.js"));
1133 1124 var _slicedToArray2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/slicedToArray */ "../node_modules/@babel/runtime/helpers/slicedToArray.js"));
1134 1125 var _elementTypes = __webpack_require__(/*! elementor-editor/utils/element-types */ "../assets/dev/js/editor/utils/element-types.js");
1135 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; }
1136 1129 var BaseElementView = elementor.modules.elements.views.BaseElement;
1137 1130 function createAtomicElementBaseView(type) {
1131 + var resolvedTagCache = new WeakMap();
1138 1132 var AtomicElementView = BaseElementView.extend({
1139 1133 template: Marionette.TemplateCache.get("#tmpl-elementor-".concat(type, "-content")),
1140 1134 emptyView: _atomicElementEmptyView.default,
1141 1135 _childrenRenderPromises: [],
@@ -1146,8 +1140,24 @@
1146 1140 return previewDocument.createElement(tag);
1147 1141 }
1148 1142 return document.createElement(tag);
1149 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 + },
1150 1160 getChildViewContainer: function getChildViewContainer() {
1151 1161 this.childViewContainer = '';
1152 1162 return Marionette.CompositeView.prototype.getChildViewContainer.apply(this, arguments);
1153 1163 },
@@ -1170,16 +1180,157 @@
1170 1180 getResolverRenderContext: function getResolverRenderContext() {
1171 1181 var _this$_parent2, _this$_parent2$getRes;
1172 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);
1173 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 + },
1174 1325 render: function render() {
1175 - var _this = this;
1326 + var _this3 = this;
1176 1327 this._currentRenderPromise = new Promise(function (resolve) {
1177 1328 // Optimize rendering by reusing existing child views instead of recreating them.
1178 - if (_this._shouldSkipFullRender()) {
1179 - _this._renderWithoutDomRecreation(resolve);
1329 + if (_this3._shouldSkipFullRender()) {
1330 + _this3._renderWithoutDomRecreation(resolve);
1180 1331 } else {
1181 - _this._renderWithDomRecreation(resolve);
1332 + _this3._renderWithDomRecreation(resolve);
1182 1333 }
1183 1334 });
1184 1335 return this;
1185 1336 },
@@ -1196,43 +1347,87 @@
1196 1347 var firstChild = this.children.findByIndex(0);
1197 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;
1198 1349 },
1199 1350 _renderWithoutDomRecreation: function _renderWithoutDomRecreation(resolve) {
1200 - var _this2 = this;
1351 + var _this4 = this;
1201 1352 this._beforeRender();
1202 1353 this._renderChildren();
1203 1354 this._waitForChildrenToComplete().then(function () {
1204 - _this2._afterRender();
1355 + _this4._afterRender();
1205 1356 resolve();
1206 1357 });
1207 1358 },
1208 1359 _renderWithDomRecreation: function _renderWithDomRecreation(resolve) {
1360 + var _this5 = this;
1209 1361 BaseElementView.prototype.render.apply(this, arguments);
1210 1362 this._waitForChildrenToComplete().then(function () {
1363 + _this5._applyResolvedAttributes();
1211 1364 resolve();
1212 1365 });
1213 1366 },
1214 1367 _beforeRender: function _beforeRender() {
1215 1368 this._isRendering = true;
1369 + this._invalidateTagCache();
1216 1370 this.triggerMethod('before:render', this);
1217 1371 },
1372 + _invalidateTagCache: function _invalidateTagCache() {
1373 + resolvedTagCache.delete(this.model);
1374 + },
1375 + _cacheResolvedTag: function _cacheResolvedTag(tag) {
1376 + resolvedTagCache.set(this.model, tag);
1377 + },
1218 1378 _afterRender: function _afterRender() {
1219 1379 this._isRendering = false;
1220 1380 this.isRendered = true;
1221 1381 this.triggerMethod('render', this);
1382 + this._applyResolvedAttributes();
1222 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 + },
1223 1418 _waitForChildrenToComplete: function _waitForChildrenToComplete() {
1224 - var _this3 = this;
1419 + var _this7 = this;
1225 1420 return (0, _asyncToGenerator2.default)(/*#__PURE__*/_regenerator.default.mark(function _callee() {
1226 1421 return _regenerator.default.wrap(function (_context) {
1227 1422 while (1) switch (_context.prev = _context.next) {
1228 1423 case 0:
1229 - if (!(_this3._childrenRenderPromises.length > 0)) {
1424 + if (!(_this7._childrenRenderPromises.length > 0)) {
1230 1425 _context.next = 1;
1231 1426 break;
1232 1427 }
1233 1428 _context.next = 1;
1234 - return Promise.all(_this3._childrenRenderPromises);
1429 + return Promise.all(_this7._childrenRenderPromises);
1235 1430 case 1:
1236 1431 case "end":
1237 1432 return _context.stop();
1238 1433 }
@@ -1251,25 +1446,25 @@
1251 1446 this._collectChildrenRenderPromises();
1252 1447 },
1253 1448 _collectChildrenRenderPromises: function _collectChildrenRenderPromises() {
1254 1449 var _this$children3,
1255 - _this4 = this;
1450 + _this8 = this;
1256 1451 this._childrenRenderPromises = [];
1257 1452 (_this$children3 = this.children) === null || _this$children3 === void 0 || _this$children3.each(function (childView) {
1258 1453 if (childView._currentRenderPromise) {
1259 - _this4._childrenRenderPromises.push(childView._currentRenderPromise);
1454 + _this8._childrenRenderPromises.push(childView._currentRenderPromise);
1260 1455 }
1261 1456 });
1262 1457 },
1263 1458 onRender: function onRender() {
1264 - var _this5 = this;
1459 + var _this9 = this;
1265 1460 this.dispatchPreviewEvent('elementor/element/render');
1266 1461 BaseElementView.prototype.onRender.apply(this, arguments);
1267 1462
1268 1463 // Defer to wait for everything to render.
1269 1464 setTimeout(function () {
1270 - _this5.droppableInitialize();
1271 - _this5.updateHandlesPosition();
1465 + _this9.droppableInitialize();
1466 + _this9.updateHandlesPosition();
1272 1467 });
1273 1468 },
1274 1469 onDestroy: function onDestroy() {
1275 1470 BaseElementView.prototype.onDestroy.apply(this, arguments);
@@ -1284,8 +1479,46 @@
1284 1479 element: this.getDomElement().get(0)
1285 1480 }
1286 1481 }));
1287 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 + },
1288 1521 droppableInitialize: function droppableInitialize() {
1289 1522 this.$el.html5Droppable(this.getDroppableOptions());
1290 1523 },
1291 1524 /**
@@ -1293,9 +1526,9 @@
1293 1526 *
1294 1527 * @return {Object} groups
1295 1528 */
1296 1529 getContextMenuGroups: function getContextMenuGroups() {
1297 - var _this6 = this,
1530 + var _this0 = this,
1298 1531 _elementorCommon$conf;
1299 1532 var saveActions = [{
1300 1533 name: 'save',
1301 1534 title: __('Save as a template', 'elementor'),
@@ -1300,9 +1533,9 @@
1300 1533 name: 'save',
1301 1534 title: __('Save as a template', 'elementor'),
1302 1535 callback: this.saveAsTemplate.bind(this),
1303 1536 isEnabled: function isEnabled() {
1304 - return !_this6.getContainer().isLocked();
1537 + return !_this0.getContainer().isLocked();
1305 1538 }
1306 1539 }];
1307 1540 var isAdministrator = elementor.config.user.is_administrator;
1308 1541 var isExperimentalFeaturesEnabled = (_elementorCommon$conf = elementorCommon.config.experimentalFeatures) === null || _elementorCommon$conf === void 0 ? void 0 : _elementorCommon$conf.e_components;
@@ -1321,9 +1554,9 @@
1321 1554 shortcut: isProActive || isProOutdated ? newBadge : proBadge,
1322 1555 hasShortcutAction: showPromoBadge,
1323 1556 callback: this.saveAsComponent.bind(this),
1324 1557 isEnabled: function isEnabled() {
1325 - return (isProActive || isProOutdated) && !_this6.getContainer().isLocked();
1558 + return (isProActive || isProOutdated) && !_this0.getContainer().isLocked();
1326 1559 }
1327 1560 });
1328 1561 }
1329 1562 var groups = BaseElementView.prototype.getContextMenuGroups.apply(this, arguments),
@@ -1406,9 +1639,9 @@
1406 1639 preventInit: true
1407 1640 };
1408 1641 },
1409 1642 getDroppableOptions: function getDroppableOptions() {
1410 - var _this7 = this;
1643 + var _this1 = this;
1411 1644 var items = '> .elementor-element, > .elementor-empty-view .elementor-first-add';
1412 1645 return {
1413 1646 axis: null,
1414 1647 items: items,
@@ -1418,9 +1651,9 @@
1418 1651 currentElementClass: 'elementor-html5dnd-current-element',
1419 1652 placeholderClass: 'elementor-sortable-placeholder elementor-widget-placeholder',
1420 1653 hasDraggingOnChildClass: 'e-dragging-over',
1421 1654 getDropContainer: function getDropContainer() {
1422 - return _this7.getContainer();
1655 + return _this1.getContainer();
1423 1656 },
1424 1657 onDropping: function onDropping(side, event) {
1425 1658 event.stopPropagation();
1426 1659
@@ -1430,14 +1663,14 @@
1430 1663 draggedElement = draggedView === null || draggedView === void 0 ? void 0 : draggedView.getContainer().view.el,
1431 1664 containerElement = event.currentTarget.parentElement,
1432 1665 elements = Array.from((containerElement === null || containerElement === void 0 ? void 0 : containerElement.querySelectorAll(':scope > .elementor-element')) || []);
1433 1666 var targetIndex = elements.indexOf(event.currentTarget);
1434 - if (_this7.isPanelElement(draggedView, draggedElement)) {
1667 + if (_this1.isPanelElement(draggedView, draggedElement)) {
1435 1668 var _elementorCommon;
1436 - if (_this7.draggingOnBottomOrRightSide(side) && !_this7.emptyViewIsCurrentlyBeingDraggedOver()) {
1669 + if (_this1.draggingOnBottomOrRightSide(side) && !_this1.emptyViewIsCurrentlyBeingDraggedOver()) {
1437 1670 targetIndex++;
1438 1671 }
1439 - _this7.onDrop(event, {
1672 + _this1.onDrop(event, {
1440 1673 at: targetIndex
1441 1674 });
1442 1675 if ((_elementorCommon = elementorCommon) !== null && _elementorCommon !== void 0 && (_elementorCommon = _elementorCommon.eventsManager) !== null && _elementorCommon !== void 0 && _elementorCommon.dispatchEvent) {
1443 1676 var selectedElement = elementor.channels.panelElements.request('element:selected');
@@ -1455,16 +1688,16 @@
1455 1688 }
1456 1689 }
1457 1690 return;
1458 1691 }
1459 - if (_this7.isParentElement(draggedView.getContainer().id)) {
1692 + if (_this1.isParentElement(draggedView.getContainer().id)) {
1460 1693 return;
1461 1694 }
1462 - if (_this7.emptyViewIsCurrentlyBeingDraggedOver()) {
1463 - _this7.moveDroppedItem(draggedView, 0);
1695 + if (_this1.emptyViewIsCurrentlyBeingDraggedOver()) {
1696 + _this1.moveDroppedItem(draggedView, 0);
1464 1697 return;
1465 1698 }
1466 - _this7.moveExistingElement(side, draggedView, containerElement, elements, targetIndex, draggedElement);
1699 + _this1.moveExistingElement(side, draggedView, containerElement, elements, targetIndex, draggedElement);
1467 1700 }
1468 1701 };
1469 1702 },
1470 1703 moveExistingElement: function moveExistingElement(side, draggedView, containerElement, elements, targetIndex, draggedElement) {
@@ -1582,8 +1815,26 @@
1582 1815 });
1583 1816 });
1584 1817 this.addSectionView = addSectionView;
1585 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 + },
1586 1837 isOverflowHidden: function isOverflowHidden() {
1587 1838 var elementStyles = window.getComputedStyle(this.el);
1588 1839 var overflowStyles = [elementStyles.overflowX, elementStyles.overflowY, elementStyles.overflow];
1589 1840 return overflowStyles.includes('hidden') || overflowStyles.includes('auto');
@@ -1607,8 +1858,75 @@
1607 1858 if (!this.model.collection) {
1608 1859 return true;
1609 1860 }
1610 1861 return 0 === this.model.collection.indexOf(this.model);
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);
1611 1929 },
1612 1930 getInteractionId: function getInteractionId() {
1613 1931 var originId = this.model.get('originId');
1614 1932 var id = this.model.get('id');