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