/*! elementor - v3.23.0 - 05-08-2024 */ /******/ (() => { // webpackBootstrap /******/ var __webpack_modules__ = ({ /***/ "../assets/dev/js/editor/container/container.js": /*!******************************************************!*\ !*** ../assets/dev/js/editor/container/container.js ***! \******************************************************/ /***/ ((__unused_webpack_module, exports, __webpack_require__) => { "use strict"; /* provided dependency */ var __ = __webpack_require__(/*! @wordpress/i18n */ "@wordpress/i18n")["__"]; var _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ "../node_modules/@babel/runtime/helpers/interopRequireDefault.js"); Object.defineProperty(exports, "__esModule", ({ value: true })); exports["default"] = void 0; var _typeof2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/typeof */ "../node_modules/@babel/runtime/helpers/typeof.js")); var _slicedToArray2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/slicedToArray */ "../node_modules/@babel/runtime/helpers/slicedToArray.js")); var _classCallCheck2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/classCallCheck */ "../node_modules/@babel/runtime/helpers/classCallCheck.js")); var _createClass2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/createClass */ "../node_modules/@babel/runtime/helpers/createClass.js")); var _assertThisInitialized2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/assertThisInitialized */ "../node_modules/@babel/runtime/helpers/assertThisInitialized.js")); var _inherits2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/inherits */ "../node_modules/@babel/runtime/helpers/inherits.js")); var _possibleConstructorReturn2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/possibleConstructorReturn */ "../node_modules/@babel/runtime/helpers/possibleConstructorReturn.js")); var _getPrototypeOf2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/getPrototypeOf */ "../node_modules/@babel/runtime/helpers/getPrototypeOf.js")); var _defineProperty2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/defineProperty */ "../node_modules/@babel/runtime/helpers/defineProperty.js")); var _argsObject = _interopRequireDefault(__webpack_require__(/*! ../../modules/imports/args-object */ "../assets/dev/js/modules/imports/args-object.js")); var _panel = _interopRequireDefault(__webpack_require__(/*! ./panel */ "../assets/dev/js/editor/container/panel.js")); var _childrenArray = _interopRequireDefault(__webpack_require__(/*! ./model/children-array */ "../assets/dev/js/editor/container/model/children-array.js")); function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = (0, _getPrototypeOf2.default)(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = (0, _getPrototypeOf2.default)(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return (0, _possibleConstructorReturn2.default)(this, result); }; } function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } } /** * @typedef {import('../../../../lib/backbone/backbone.marionette')} Backbone * @typedef {import('../../../../lib/backbone/backbone.marionette')} Marionette * @typedef {import('../elements/views/base')} BaseElementView * @typedef {import('../elements/views/section')} SectionView * @typedef {import('../views/base-container')} BaseContainer * @typedef {import('../elements/models/base-element-model')} BaseElementModel */ /** * TODO: ViewsOptions * * @typedef {(Marionette.View|Marionette.CompositeView|BaseElementView|SectionView|BaseContainer)} ViewsOptions */ var Container = /*#__PURE__*/function (_ArgsObject) { (0, _inherits2.default)(Container, _ArgsObject); var _super = _createSuper(Container); /** * Function constructor(). * * Create container. * * @param {{}} args * * @throws {Error} */ function Container(args) { var _this; (0, _classCallCheck2.default)(this, Container); _this = _super.call(this, args); // Validate args. /** * Container type. * * @type {string} */ (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "type", void 0); /** * Container id. * * @type {string} */ (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "id", void 0); /** * Document Object. * * @type {{}} */ (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "document", void 0); /** * Container model. * * @type {(Backbone.Model|BaseElementModel)} */ (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "model", void 0); /** * Container settings. * * @type {Backbone.Model} */ (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "settings", void 0); /** * Container view. * * @type {ViewsOptions} */ (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "view", void 0); /** * Container parent. * * @type {Container} */ (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "parent", void 0); /** * Container children(s). * * @type {ChildrenArray} */ (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "children", new _childrenArray.default()); /** * Container dynamic. * * @type {Backbone.Model} */ (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "dynamic", void 0); /** * Container globals. * * @type {Backbone.Model} */ (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "globals", void 0); /** * Container label. * * @type {string} */ (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "label", void 0); /** * Container controls. * * @type {{}} */ (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "controls", {}); /** * Repeaters containers * * @type {{}} */ (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "repeaters", {}); /** * Container renderer (The one who render). * * @type {Container} */ (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "renderer", void 0); /** * Container panel. * * @type {Panel} */ (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "panel", void 0); /** * Controls placeholders. * * @type {{}} */ (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "placeholders", {}); _this.validateArgs(args); args = Object.entries(args); // If empty. if (0 === args.length) { throw Error('Container cannot be empty.'); } // Set properties, if not defined - keep the defaults. args.forEach(function (_ref) { var _ref2 = (0, _slicedToArray2.default)(_ref, 2), key = _ref2[0], value = _ref2[1]; _this[key] = 'undefined' === typeof value ? _this[key] : value; }); if ('undefined' === typeof _this.renderer) { _this.renderer = (0, _assertThisInitialized2.default)(_this); } if (!_this.document) { _this.document = elementor.documents.getCurrent(); } _this.dynamic = new Backbone.Model(_this.settings.get('__dynamic__')); _this.globals = new Backbone.Model(_this.settings.get('__globals__')); _this.panel = new _panel.default((0, _assertThisInitialized2.default)(_this)); _this.initialize(); return _this; } (0, _createClass2.default)(Container, [{ key: "initialize", value: function initialize() { if (this.isViewElement()) { this.addToParent(); this.handleChildrenRecursive(); this.view.on('destroy', this.removeFromParent.bind(this)); } this.handleRepeaterChildren(); } }, { key: "validateArgs", value: function validateArgs(args) { this.requireArgumentType('type', 'string', args); this.requireArgumentType('id', 'string', args); this.requireArgumentInstance('settings', Backbone.Model, args); this.requireArgumentInstance('model', Backbone.Model, args); // Require it, unless it's forced to be `false`. if (false !== args.parent) { this.requireArgumentInstance('parent', elementorModules.editor.Container, args); } } /** * Function getGroupRelatedControls(). * * Example: * Settings = { typography_typography: 'whatever', button_text_color: 'whatever' }; * Result { control_name: controlValue, ... - and so on }; * `Object.keys( Result ) = [ 'typography_typography', 'typography_font_family', 'typography_font_size', 'typography_font_size_tablet', 'typography_font_size_mobile', 'typography_font_weight', 'typography_text_transform', 'typography_font_style', 'typography_text_decoration', 'typography_line_height', 'typography_line_height_tablet', 'typography_line_height_mobile', 'typography_letter_spacing', 'typography_letter_spacing_tablet', 'typography_letter_spacing_mobile', 'button_text_color' ]`. * * @param {{}} settings * * @return {{}} result */ }, { key: "getGroupRelatedControls", value: function getGroupRelatedControls(settings) { var _this2 = this; var result = {}; Object.keys(settings).forEach(function (settingKey) { Object.values(_this2.controls).forEach(function (control) { var _this2$controls$setti; if (settingKey === control.name) { result[control.name] = control; } else if ((_this2$controls$setti = _this2.controls[settingKey]) !== null && _this2$controls$setti !== void 0 && _this2$controls$setti.groupPrefix) { var groupPrefix = _this2.controls[settingKey].groupPrefix; if (control.name.toString().startsWith(groupPrefix)) { result[control.name] = control; } } }); }); return result; } /** * Function getAffectingControls(). * * @return {{}} All controls that effecting the container. */ }, { key: "getAffectingControls", value: function getAffectingControls() { var _this3 = this; var result = {}, activeControls = this.settings.getActiveControls(); Object.entries(activeControls).forEach(function (_ref3) { var _ref4 = (0, _slicedToArray2.default)(_ref3, 2), controlName = _ref4[0], control = _ref4[1]; var controlValue = _this3.settings.get(control.name); if (control.global && !(controlValue !== null && controlValue !== void 0 && controlValue.length)) { var _this3$globals$get; if ((_this3$globals$get = _this3.globals.get(control.name)) !== null && _this3$globals$get !== void 0 && _this3$globals$get.length || _this3.getGlobalDefault(controlName).length) { control.global.utilized = true; result[controlName] = control; return; } } if (control.dynamic) { if (_this3.dynamic.get(controlName)) { control.dynamic.utilized = true; result[controlName] = control; return; } } if (controlValue === control.default) { return; } if (!controlValue) { return; } if ('object' === (0, _typeof2.default)(controlValue) && Object.values(controlValue).join() === Object.values(control.default).join()) { return; } result[controlName] = control; }); return result; } /** * Function getParentAncestry(). * * Recursively run over all parents from current container till the top * * @return {Array.} All parent as flat array. */ }, { key: "getParentAncestry", value: function getParentAncestry() { var result = []; var parent = this; while (parent) { result.push(parent); parent = parent.parent; } return result; } }, { key: "handleChildrenRecursive", value: function handleChildrenRecursive() { var _this$view$children; if ((_this$view$children = this.view.children) !== null && _this$view$children !== void 0 && _this$view$children.length) { Object.values(this.view.children._views).forEach(function (view) { if (!view.container) { return; } var container = view.container; // Since the way 'global-widget' rendered, it does not have parent sometimes. if (container.parent.children) { container.parent.children[view._index] = container; } container.handleChildrenRecursive(); }); } else { this.children.clear(); } } }, { key: "addToParent", value: function addToParent() { if (!this.parent.children || this.isRepeaterItem()) { return; } // On create container tell the parent where it was created. this.parent.children.splice(this.view._index, 0, this); } }, { key: "removeFromParent", value: function removeFromParent() { var _this4 = this; if (!this.parent.children || this.isRepeater()) { return; } // When delete container its should notify its parent, that his children is dead. this.parent.children = this.parent.children.filter(function (filtered) { return filtered.id !== _this4.id; }); } }, { key: "handleRepeaterChildren", value: function handleRepeaterChildren() { var _this5 = this; Object.values(this.controls).forEach(function (control) { if (!control.is_repeater) { return; } var model = new Backbone.Model({ name: control.name }); _this5.repeaters[control.name] = new elementorModules.editor.Container({ type: Container.TYPE_REPEATER, id: control.name, model: model, settings: model, view: _this5.view, parent: _this5, label: control.label || control.name, controls: {}, renderer: _this5.renderer }); _this5.settings.get(control.name).forEach(function (rowModel, index) { _this5.addRepeaterItem(control.name, rowModel, index); }); }); // Backwards Compatibility: if there is only one repeater (type=repeater), set it's children as current children. // Since 3.0.0. if (['widget', 'document'].includes(this.type)) { var repeaters = Object.values(this.controls).filter(function (control) { return 'repeater' === control.type; }); if (!this.model.get('supportRepeaterChildren') && 1 === repeaters.length) { Object.defineProperty(this, 'children', { get: function get() { elementorDevTools.deprecation.deprecated('children', '3.0.0', 'container.repeaters[ repeaterName ].children'); return this.repeaters[repeaters[0].name].children; } }); } } } /** * Function addRepeaterItem(). * * The method add repeater item, find the repeater control by it name, and create new container for the item. * * @param {string} repeaterName * @param {Backbone.Model} rowSettingsModel * @param {number} index * * @return {Container} container */ }, { key: "addRepeaterItem", value: function addRepeaterItem(repeaterName, rowSettingsModel, index) { var rowId = rowSettingsModel.get('_id'); // TODO: Temp backwards compatibility. since 2.8.0. if (!rowId) { rowId = 'bc-' + elementorCommon.helpers.getUniqueId(); rowSettingsModel.set('_id', rowId); } this.repeaters[repeaterName].children.splice(index, 0, new elementorModules.editor.Container({ type: Container.TYPE_REPEATER_ITEM, id: rowSettingsModel.get('_id'), model: new Backbone.Model({ name: repeaterName }), settings: rowSettingsModel, view: this.view, parent: this.repeaters[repeaterName], label: this.label + ' ' + __('Item', 'elementor'), controls: rowSettingsModel.options.controls, renderer: this.renderer })); return this.repeaters[repeaterName]; } /** * Function lookup(). * * If the view were destroyed, try to find it again if it exists. * * TODO: Refactor. * * @return {Container} container */ }, { key: "lookup", value: function lookup() { var _this$renderer$view; var result = this; if (!this.renderer) { return this; } if (this !== this.renderer && (_this$renderer$view = this.renderer.view) !== null && _this$renderer$view !== void 0 && _this$renderer$view.isDisconnected && this.renderer.view.isDisconnected()) { this.renderer = this.renderer.lookup(); } if (undefined === this.view || !this.view.lookup || !this.view.isDisconnected()) { // Hack For repeater item the result is the parent container. if (Container.TYPE_REPEATER_ITEM === this.type) { this.settings = this.parent.parent.settings.get(this.model.get('name')).findWhere({ _id: this.id }); } return result; } var lookup = this.view.lookup(); if (lookup) { result = lookup.getContainer(); // Hack For repeater item the result is the parent container. if (Container.REPEATER === this.type) { this.settings = result.settings.get(this.model.get('name')).findWhere({ _id: this.id }); return this; } // If lookup were done, new container were created and parent does not know about it. if (result.parent.children) { result.parent.children[result.view._index] = result; } } return result; } /** * @param {Function} callback - A callback function. * @deprecated since 3.5.0, use `container.children.findRecursive( callback )` instead. */ }, { key: "findChildrenRecursive", value: function findChildrenRecursive(callback) { elementorDevTools.deprecation.deprecated('container.findChildrenRecursive( callback )', '3.5.0', 'container.children.findRecursive( callback )'); return this.children.findRecursive(callback); } /** * @param {Function} callback - A callback function. * @deprecated since 3.5.0, use `container.children.forEachRecursive( callback )` instead. */ }, { key: "forEachChildrenRecursive", value: function forEachChildrenRecursive(callback) { elementorDevTools.deprecation.deprecated('container.forEachChildrenRecursive( callback )', '3.5.0', 'container.children.forEachRecursive( callback )'); return this.children.forEachRecursive(callback); } /** * Function render(). * * Call view render. * * Run's `this.renderer.view.renderOnChange( this.settings ) `. * When `this.renderer` exist. * */ }, { key: "render", value: function render() { if (!this.renderer) { return; } this.renderer.view.renderOnChange(this.settings); } }, { key: "renderUI", value: function renderUI() { if (!this.renderer) { return; } this.renderer.view.renderUI(); } }, { key: "isEditable", value: function isEditable() { return 'edit' === elementor.channels.dataEditMode.request('activeMode') && 'open' === this.document.editor.status; } }, { key: "isDesignable", value: function isDesignable() { return elementor.userCan('design') && this.isEditable(); } }, { key: "isGridContainer", value: function isGridContainer() { return 'grid' === this.parent.settings.get('container_type'); } /** * @return {boolean} */ }, { key: "isLocked", value: function isLocked() { return this.model.get('isLocked'); } }, { key: "isRepeater", value: function isRepeater() { return Container.TYPE_REPEATER === this.type; } }, { key: "isRepeaterItem", value: function isRepeaterItem() { return Container.TYPE_REPEATER_ITEM === this.type; } }, { key: "isViewElement", value: function isViewElement() { return this.view && this.model.get('elType'); } }, { key: "getSetting", value: function getSetting(name) { var localOnly = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false; var localValue = this.settings.get(name); if (localOnly) { return localValue; } // Try to get the value in the order: Global, Local, Global default. var globalValue; if (this.getGlobalKey(name)) { globalValue = this.getGlobalValue(name); } return globalValue || localValue || this.getGlobalDefault(name); } }, { key: "getGlobalKey", value: function getGlobalKey(name) { return this.globals.get(name); } }, { key: "getGlobalValue", value: function getGlobalValue(name) { var control = this.controls[name], globalKey = this.getGlobalKey(name), globalArgs = $e.data.commandExtractArgs(globalKey), data = $e.data.getCache($e.components.get('globals'), globalArgs.command, globalArgs.args.query); if (!(data !== null && data !== void 0 && data.value)) { return; } var id = data.id; var value; // It's a global settings with additional controls in group. if (control.groupType) { // A regex containing all of the active breakpoints' prefixes ('_mobile', '_tablet' etc.). var responsivePrefixRegex = elementor.breakpoints.getActiveMatchRegex(); var propertyName = control.name.replace(control.groupPrefix, '').replace(responsivePrefixRegex, ''); if (!data.value[elementor.config.kit_config.typography_prefix + propertyName]) { return; } propertyName = propertyName.replace('_', '-'); value = "var( --e-global-".concat(control.groupType, "-").concat(id, "-").concat(propertyName, " )"); if (elementor.config.ui.defaultGenericFonts && control.groupPrefix + 'font_family' === control.name) { value += ", ".concat(elementor.config.ui.defaultGenericFonts); } } else { value = "var( --e-global-".concat(control.type, "-").concat(id, " )"); } return value; } /** * Determine if a control's global value is applied. * It actually checks if the local value is different than the global value. * * @param {string} controlName - Control name * @return {boolean} true if a control's global value is applied */ }, { key: "isGlobalApplied", value: function isGlobalApplied(controlName) { return this.getSetting(controlName) !== this.settings.get(controlName); } }, { key: "getGlobalDefault", value: function getGlobalDefault(controlName) { var _this$controls$contro; var controlGlobalArgs = (_this$controls$contro = this.controls[controlName]) === null || _this$controls$contro === void 0 ? void 0 : _this$controls$contro.global; if (controlGlobalArgs !== null && controlGlobalArgs !== void 0 && controlGlobalArgs.default) { // Temp fix. var controlType = this.controls[controlName].type; if ('color' === controlType) { controlType = 'colors'; } // End temp fix // If the control is a color/typography control and default colors/typography are disabled, don't return the global value. if (!elementor.config.globals.defaults_enabled[controlType]) { return ''; } var _$e$data$commandExtra = $e.data.commandExtractArgs(controlGlobalArgs.default), command = _$e$data$commandExtra.command, args = _$e$data$commandExtra.args, result = $e.data.getCache($e.components.get('globals'), command, args.query); return result === null || result === void 0 ? void 0 : result.value; } // No global default. return ''; } }]); return Container; }(_argsObject.default); exports["default"] = Container; // TODO: Swap those backwards compatibility is required. (0, _defineProperty2.default)(Container, "TYPE_REPEATER", 'repeater-control'); (0, _defineProperty2.default)(Container, "TYPE_REPEATER_ITEM", 'repeater'); /***/ }), /***/ "../assets/dev/js/editor/container/model/children-array.js": /*!*****************************************************************!*\ !*** ../assets/dev/js/editor/container/model/children-array.js ***! \*****************************************************************/ /***/ ((__unused_webpack_module, exports, __webpack_require__) => { "use strict"; var _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ "../node_modules/@babel/runtime/helpers/interopRequireDefault.js"); Object.defineProperty(exports, "__esModule", ({ value: true })); exports["default"] = void 0; var _classCallCheck2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/classCallCheck */ "../node_modules/@babel/runtime/helpers/classCallCheck.js")); var _createClass2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/createClass */ "../node_modules/@babel/runtime/helpers/createClass.js")); var _inherits2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/inherits */ "../node_modules/@babel/runtime/helpers/inherits.js")); var _possibleConstructorReturn2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/possibleConstructorReturn */ "../node_modules/@babel/runtime/helpers/possibleConstructorReturn.js")); var _getPrototypeOf2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/getPrototypeOf */ "../node_modules/@babel/runtime/helpers/getPrototypeOf.js")); var _wrapNativeSuper2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/wrapNativeSuper */ "../node_modules/@babel/runtime/helpers/wrapNativeSuper.js")); function _createForOfIteratorHelper(o, allowArrayLike) { var it = typeof Symbol !== "undefined" && o[Symbol.iterator] || o["@@iterator"]; if (!it) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === "number") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it.return != null) it.return(); } finally { if (didErr) throw err; } } }; } function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); } function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; } function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = (0, _getPrototypeOf2.default)(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = (0, _getPrototypeOf2.default)(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return (0, _possibleConstructorReturn2.default)(this, result); }; } function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } } /** * @typedef {import('../container')} Container */ var ChildrenArray = /*#__PURE__*/function (_Array) { (0, _inherits2.default)(ChildrenArray, _Array); var _super = _createSuper(ChildrenArray); function ChildrenArray() { (0, _classCallCheck2.default)(this, ChildrenArray); return _super.apply(this, arguments); } (0, _createClass2.default)(ChildrenArray, [{ key: "clear", value: function clear() { this.length = 0; } /** * Function findRecursive(). * * Will run over children recursively and pass the children to the callback till the callback returns positive value. * * @param {function(Container) : *} callback * * @return {Container|false} child */ }, { key: "findRecursive", value: function findRecursive(callback) { var _iterator = _createForOfIteratorHelper(this), _step; try { for (_iterator.s(); !(_step = _iterator.n()).done;) { var container = _step.value; if (callback(container)) { return container; } if (container.children.length) { var foundChildren = container.children.findRecursive(callback); if (foundChildren) { return foundChildren; } } } } catch (err) { _iterator.e(err); } finally { _iterator.f(); } return false; } /** * Function forEachRecursive(). * * Will run over children recursively. * * @param {function(Container) : *} callback * * @return {void} */ }, { key: "forEachRecursive", value: function forEachRecursive(callback) { var _iterator2 = _createForOfIteratorHelper(this), _step2; try { for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) { var container = _step2.value; callback(container); if (container.children.length) { container.children.forEachRecursive(callback); } } } catch (err) { _iterator2.e(err); } finally { _iterator2.f(); } } /** * Function someRecursive(). * * Will run over children recursively, breaks if the callback return true. * * @param {function(Container) : *} callback */ }, { key: "someRecursive", value: function someRecursive(callback) { var _iterator3 = _createForOfIteratorHelper(this), _step3; try { for (_iterator3.s(); !(_step3 = _iterator3.n()).done;) { var _container$children; var container = _step3.value; if (callback(container)) { return true; } if ((_container$children = container.children) !== null && _container$children !== void 0 && _container$children.length) { if (container.children.someRecursive(callback)) { return true; } } } } catch (err) { _iterator3.e(err); } finally { _iterator3.f(); } return false; } }]); return ChildrenArray; }( /*#__PURE__*/(0, _wrapNativeSuper2.default)(Array)); exports["default"] = ChildrenArray; /***/ }), /***/ "../assets/dev/js/editor/container/panel.js": /*!**************************************************!*\ !*** ../assets/dev/js/editor/container/panel.js ***! \**************************************************/ /***/ ((__unused_webpack_module, exports, __webpack_require__) => { "use strict"; var _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ "../node_modules/@babel/runtime/helpers/interopRequireDefault.js"); Object.defineProperty(exports, "__esModule", ({ value: true })); exports["default"] = void 0; var _classCallCheck2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/classCallCheck */ "../node_modules/@babel/runtime/helpers/classCallCheck.js")); var _createClass2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/createClass */ "../node_modules/@babel/runtime/helpers/createClass.js")); /** * @typedef {import('./container')} Container */ var Panel = /*#__PURE__*/function () { /** * Function constructor(). * * Create constructor panel. * * @param {Container} container */ function Panel(container) { (0, _classCallCheck2.default)(this, Panel); this.container = container; } /** * Function refresh(). * * Refresh the panel. */ (0, _createClass2.default)(Panel, [{ key: "refresh", value: function refresh() { if ($e.routes.isPartOf('panel/editor')) { $e.routes.refreshContainer('panel'); } } /** * Function closeEditor(). * * Route to `panel/elements/categories` */ }, { key: "closeEditor", value: function closeEditor() { $e.route('panel/elements/categories'); } }, { key: "getControlView", value: function getControlView(name) { var editor = elementor.getPanelView().getCurrentPageView(); return editor.children.findByModelCid(this.getControlModel(name).cid); } }, { key: "getControlModel", value: function getControlModel(name) { var editor = elementor.getPanelView().getCurrentPageView(); return editor.collection.findWhere({ name: name }); } }]); return Panel; }(); exports["default"] = Panel; /***/ }), /***/ "../assets/dev/js/editor/elements/models/base-settings.js": /*!****************************************************************!*\ !*** ../assets/dev/js/editor/elements/models/base-settings.js ***! \****************************************************************/ /***/ ((module, __unused_webpack_exports, __webpack_require__) => { "use strict"; var _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ "../node_modules/@babel/runtime/helpers/interopRequireDefault.js"); var _typeof2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/typeof */ "../node_modules/@babel/runtime/helpers/typeof.js")); var BaseSettingsModel; /** * @name BaseSettingsModel */ BaseSettingsModel = Backbone.Model.extend({ options: {}, initialize: function initialize(data, options) { var self = this; // Keep the options for cloning self.options = options; self.controls = elementor.mergeControlsSettings(options.controls); self.validators = {}; if (!self.controls) { return; } var attrs = data || {}, defaults = {}; _.each(self.controls, function (control) { // Check features since they does not exist in tests. var isUIControl = control.features && -1 !== control.features.indexOf('ui'); if (isUIControl) { return; } var controlName = control.name; if ('object' === (0, _typeof2.default)(control.default)) { defaults[controlName] = structuredClone(control.default); } else { defaults[controlName] = control.default; } var isDynamicControl = control.dynamic && control.dynamic.active, hasDynamicSettings = isDynamicControl && attrs.__dynamic__ && attrs.__dynamic__[controlName]; if (isDynamicControl && !hasDynamicSettings && control.dynamic.default) { if (!attrs.__dynamic__) { attrs.__dynamic__ = {}; } attrs.__dynamic__[controlName] = control.dynamic.default; hasDynamicSettings = true; } // Check if the value is a plain object ( and not an array ) var isMultipleControl = jQuery.isPlainObject(control.default); if (undefined !== attrs[controlName] && isMultipleControl && !_.isObject(attrs[controlName]) && !hasDynamicSettings) { elementorCommon.debug.addCustomError(new TypeError('An invalid argument supplied as multiple control value'), 'InvalidElementData', 'Element `' + (self.get('widgetType') || self.get('elType')) + '` got <' + attrs[controlName] + '> as `' + controlName + '` value. Expected array or object.'); delete attrs[controlName]; } if (undefined === attrs[controlName]) { attrs[controlName] = defaults[controlName]; } }); self.defaults = defaults; self.handleRepeaterData(attrs); self.set(attrs); }, convertRepeaterValueToCollection: function convertRepeaterValueToCollection(attrs, repeaterControl) { return new Backbone.Collection(attrs[repeaterControl.name], { model: function model(attributes, options) { options = options || {}; options.controls = {}; Object.values(repeaterControl.fields).forEach(function (item) { options.controls[item.name] = item; }); // TODO: Cannot be deleted, since it handle repeater items after repeater widget creation. if (!attributes._id) { attributes._id = elementorCommon.helpers.getUniqueId(); } return new BaseSettingsModel(attributes, options); } }); }, handleRepeaterData: function handleRepeaterData(attrs) { var self = this; _.each(this.controls, function (field) { if (field.is_repeater) { // TODO: Apply defaults on each field in repeater fields if (!(attrs[field.name] instanceof Backbone.Collection)) { attrs[field.name] = self.convertRepeaterValueToCollection(attrs, field); } } }); }, getFontControls: function getFontControls() { return this.getControlsByType('font'); }, getIconsControls: function getIconsControls() { return this.getControlsByType('icons'); }, getControlsByType: function getControlsByType(type) { return _.filter(this.getActiveControls(), function (control) { return type === control.type; }); }, getStyleControls: function getStyleControls(controls, attributes) { var self = this; controls = structuredClone(self.getActiveControls(controls, attributes)); var styleControls = []; jQuery.each(controls, function () { var _control$dynamic; var control = this, controlDefaultSettings = elementor.config.controls[control.type]; control = jQuery.extend({}, controlDefaultSettings, control); if (control.fields) { var styleFields = []; if (!(self.attributes[control.name] instanceof Backbone.Collection)) { self.attributes[control.name] = self.convertRepeaterValueToCollection(self.attributes, control); } self.attributes[control.name].each(function (item) { styleFields.push(self.getStyleControls(control.fields, item.attributes)); }); control.styleFields = styleFields; } if (control.fields || (_control$dynamic = control.dynamic) !== null && _control$dynamic !== void 0 && _control$dynamic.active || self.isGlobalControl(control, controls) || self.isStyleControl(control.name, controls)) { styleControls.push(control); } }); return styleControls; }, isGlobalControl: function isGlobalControl(control, controls) { var _globalControl$global, _this$attributes$__gl; var controlGlobalKey = control.name; if (control.groupType) { controlGlobalKey = control.groupPrefix + control.groupType; } var globalControl = controls[controlGlobalKey]; if (!((_globalControl$global = globalControl.global) !== null && _globalControl$global !== void 0 && _globalControl$global.active)) { return false; } var globalValue = (_this$attributes$__gl = this.attributes.__globals__) === null || _this$attributes$__gl === void 0 ? void 0 : _this$attributes$__gl[controlGlobalKey]; return !!globalValue; }, isStyleControl: function isStyleControl(attribute, controls) { controls = controls || this.controls; var currentControl = _.find(controls, function (control) { return attribute === control.name; }); return currentControl && !_.isEmpty(currentControl.selectors); }, getClassControls: function getClassControls(controls) { controls = controls || this.controls; return _.filter(controls, function (control) { return !_.isUndefined(control.prefix_class); }); }, isClassControl: function isClassControl(attribute) { var currentControl = _.find(this.controls, function (control) { return attribute === control.name; }); return currentControl && !_.isUndefined(currentControl.prefix_class); }, getControl: function getControl(id) { return _.find(this.controls, function (control) { return id === control.name; }); }, getActiveControls: function getActiveControls(controls, attributes) { var activeControls = {}; if (!controls) { controls = this.controls; } if (!attributes) { attributes = this.attributes; } attributes = this.parseGlobalSettings(attributes, controls); jQuery.each(controls, function (controlKey, control) { if (elementor.helpers.isActiveControl(control, attributes, controls)) { activeControls[controlKey] = control; } }); return activeControls; }, clone: function clone() { return new BaseSettingsModel(elementorCommon.helpers.cloneObject(this.attributes), elementorCommon.helpers.cloneObject(this.options)); }, setExternalChange: function setExternalChange(key, value) { var self = this, settingsToChange; if ('object' === (0, _typeof2.default)(key)) { settingsToChange = key; } else { settingsToChange = {}; settingsToChange[key] = value; } self.set(settingsToChange); jQuery.each(settingsToChange, function (changedKey, changedValue) { self.trigger('change:external:' + changedKey, changedValue); }); }, parseDynamicSettings: function parseDynamicSettings(settings, options, controls) { var self = this; settings = elementorCommon.helpers.cloneObject(settings || self.attributes); options = options || {}; controls = controls || this.controls; jQuery.each(controls, function () { var control = this, valueToParse; if (control.is_repeater) { valueToParse = settings[control.name]; valueToParse.forEach(function (value, key) { valueToParse[key] = self.parseDynamicSettings(value, options, control.fields); }); return; } valueToParse = settings.__dynamic__ && settings.__dynamic__[control.name]; if (!valueToParse) { return; } var dynamicSettings = control.dynamic; if (undefined === dynamicSettings) { dynamicSettings = elementor.config.controls[control.type].dynamic; } if (!dynamicSettings || !dynamicSettings.active) { return; } var dynamicValue; try { dynamicValue = elementor.dynamicTags.parseTagsText(valueToParse, dynamicSettings, elementor.dynamicTags.getTagDataContent); } catch (error) { if (elementor.dynamicTags.CACHE_KEY_NOT_FOUND_ERROR !== error.message) { throw error; } dynamicValue = ''; if (options.onServerRequestStart) { options.onServerRequestStart(); } elementor.dynamicTags.refreshCacheFromServer(function () { if (options.onServerRequestEnd) { options.onServerRequestEnd(); } }); } if (dynamicSettings.property) { settings[control.name][dynamicSettings.property] = dynamicValue; } else { settings[control.name] = dynamicValue; } }); return settings; }, parseGlobalSettings: function parseGlobalSettings(settings, controls) { var _this = this; settings = elementorCommon.helpers.cloneObject(settings); controls = controls || this.controls; jQuery.each(controls, function (index, control) { var _settings$__globals__, _globalSettings; var valueToParse; if (control.is_repeater) { valueToParse = settings[control.name]; valueToParse.forEach(function (value, key) { valueToParse[key] = _this.parseGlobalSettings(value, control.fields); }); return; } valueToParse = (_settings$__globals__ = settings.__globals__) === null || _settings$__globals__ === void 0 ? void 0 : _settings$__globals__[control.name]; if (!valueToParse) { return; } var globalSettings = control.global; if (undefined === globalSettings) { globalSettings = elementor.config.controls[control.type].global; } if (!((_globalSettings = globalSettings) !== null && _globalSettings !== void 0 && _globalSettings.active)) { return; } var _$e$data$commandExtra = $e.data.commandExtractArgs(valueToParse), command = _$e$data$commandExtra.command, args = _$e$data$commandExtra.args, globalValue = $e.data.getCache($e.components.get('globals'), command, args.query); if (control.groupType) { settings[control.name] = 'custom'; } else { settings[control.name] = globalValue; } }); return settings; }, removeDataDefaults: function removeDataDefaults(data, controls) { var _this2 = this; jQuery.each(data, function (key) { var control = controls[key]; if (!control) { return; } // TODO: use `save_default` in text|textarea controls. if (control.save_default || ('text' === control.type || 'textarea' === control.type) && data[key]) { return; } if (control.is_repeater) { data[key].forEach(function (repeaterRow) { _this2.removeDataDefaults(repeaterRow, control.fields); }); return; } if (_.isEqual(data[key], control.default)) { delete data[key]; } }); }, toJSON: function toJSON(options) { var data = Backbone.Model.prototype.toJSON.call(this); options = options || {}; delete data.widgetType; delete data.elType; delete data.isInner; _.each(data, function (attribute, key) { if (attribute && attribute.toJSON) { data[key] = attribute.toJSON(); } }); if (options.remove && -1 !== options.remove.indexOf('default')) { this.removeDataDefaults(data, this.controls); } return structuredClone(data); } }); /** * @name BaseSettingsModel */ module.exports = BaseSettingsModel; /***/ }), /***/ "../assets/dev/js/editor/elements/views/behaviors/inner-tabs.js": /*!**********************************************************************!*\ !*** ../assets/dev/js/editor/elements/views/behaviors/inner-tabs.js ***! \**********************************************************************/ /***/ ((module) => { "use strict"; var InnerTabsBehavior; InnerTabsBehavior = Marionette.Behavior.extend({ onRenderCollection: function onRenderCollection() { this.handleInnerTabs(this.view); }, handleInnerTabs: function handleInnerTabs(parent) { var closedClass = 'e-tab-close', activeClass = 'e-tab-active', tabsWrappers = parent.children.filter(function (view) { return 'tabs' === view.model.get('type'); }); _.each(tabsWrappers, function (view) { view.$el.find('.elementor-control-content').remove(); var tabsId = view.model.get('name'), tabs = parent.children.filter(function (childView) { return 'tab' === childView.model.get('type') && childView.model.get('tabs_wrapper') === tabsId; }); _.each(tabs, function (childView, index) { view._addChildView(childView); var tabId = childView.model.get('name'), controlsUnderTab = parent.children.filter(function (controlView) { return tabId === controlView.model.get('inner_tab'); }); if (0 === index) { childView.$el.addClass(activeClass); } else { _.each(controlsUnderTab, function (controlView) { controlView.$el.addClass(closedClass); }); } }); }); }, onChildviewControlTabClicked: function onChildviewControlTabClicked(childView) { var closedClass = 'e-tab-close', activeClass = 'e-tab-active', tabClicked = childView.model.get('name'), childrenUnderTab = this.view.children.filter(function (view) { return 'tab' !== view.model.get('type') && childView.model.get('tabs_wrapper') === view.model.get('tabs_wrapper'); }), siblingTabs = this.view.children.filter(function (view) { return 'tab' === view.model.get('type') && childView.model.get('tabs_wrapper') === view.model.get('tabs_wrapper'); }); _.each(siblingTabs, function (view) { view.$el.removeClass(activeClass); }); childView.$el.addClass(activeClass); _.each(childrenUnderTab, function (view) { if (view.model.get('inner_tab') === tabClicked) { view.$el.removeClass(closedClass); } else { view.$el.addClass(closedClass); } }); elementor.getPanelView().updateScrollbar(); } }); module.exports = InnerTabsBehavior; /***/ }), /***/ "../assets/dev/js/editor/utils/is-instanceof.js": /*!******************************************************!*\ !*** ../assets/dev/js/editor/utils/is-instanceof.js ***! \******************************************************/ /***/ ((__unused_webpack_module, exports) => { "use strict"; Object.defineProperty(exports, "__esModule", ({ value: true })); exports["default"] = void 0; function _createForOfIteratorHelper(o, allowArrayLike) { var it = typeof Symbol !== "undefined" && o[Symbol.iterator] || o["@@iterator"]; if (!it) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === "number") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it.return != null) it.return(); } finally { if (didErr) throw err; } } }; } function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); } function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; } /** * Some FileAPI objects such as FileList, DataTransferItem and DataTransferItemList has inconsistency with the retrieved * object (from events, etc.) and the actual JavaScript object so a regular instanceof doesn't work. This function can * check whether it's instanceof by using the objects constructor and prototype names. * * @param object * @param constructors * @return {boolean} */ var _default = function _default(object, constructors) { constructors = Array.isArray(constructors) ? constructors : [constructors]; var _iterator = _createForOfIteratorHelper(constructors), _step; try { for (_iterator.s(); !(_step = _iterator.n()).done;) { var _constructor = _step.value; if (object.constructor.name === _constructor.prototype[Symbol.toStringTag]) { return true; } } } catch (err) { _iterator.e(err); } finally { _iterator.f(); } return false; }; exports["default"] = _default; /***/ }), /***/ "../assets/dev/js/editor/utils/module.js": /*!***********************************************!*\ !*** ../assets/dev/js/editor/utils/module.js ***! \***********************************************/ /***/ ((module) => { "use strict"; var EditorModule = elementorModules.Module.extend({ onInit: function onInit() { var _this = this; var $window = jQuery(window); $window.on('elementor:init-components', this.onElementorInitComponents.bind(this)); $window.on('elementor:loaded', function () { _this.onElementorLoaded(); elementor.on('document:loaded', _this.onDocumentLoaded.bind(_this)); }); $window.on('elementor:init', this.onElementorReady); }, // TODO: Delete as soon as possible. getEditorControlView: function getEditorControlView(name) { var editor = elementor.getPanelView().getCurrentPageView(); return editor.children.findByModelCid(this.getEditorControlModel(name).cid); }, // TODO: Delete as soon as possible. getEditorControlModel: function getEditorControlModel(name) { var editor = elementor.getPanelView().getCurrentPageView(); return editor.collection.findWhere({ name: name }); }, onElementorReady: function onElementorReady() { this.onElementorInit(); elementor.on('frontend:init', this.onElementorFrontendInit.bind(this)).on('preview:loaded', this.onElementorPreviewLoaded.bind(this)); } }); EditorModule.prototype.onElementorLoaded = function () {}; EditorModule.prototype.onElementorInit = function () {}; EditorModule.prototype.onElementorPreviewLoaded = function () {}; EditorModule.prototype.onDocumentLoaded = function () {}; EditorModule.prototype.onElementorFrontendInit = function () {}; EditorModule.prototype.onElementorInitComponents = function () {}; module.exports = EditorModule; /***/ }), /***/ "../assets/dev/js/editor/views/controls-popover.js": /*!*********************************************************!*\ !*** ../assets/dev/js/editor/views/controls-popover.js ***! \*********************************************************/ /***/ ((__unused_webpack_module, exports, __webpack_require__) => { "use strict"; /* provided dependency */ var __ = __webpack_require__(/*! @wordpress/i18n */ "@wordpress/i18n")["__"]; var _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ "../node_modules/@babel/runtime/helpers/interopRequireDefault.js"); Object.defineProperty(exports, "__esModule", ({ value: true })); exports["default"] = void 0; var _defineProperty2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/defineProperty */ "../node_modules/@babel/runtime/helpers/defineProperty.js")); var _classCallCheck2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/classCallCheck */ "../node_modules/@babel/runtime/helpers/classCallCheck.js")); var _createClass2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/createClass */ "../node_modules/@babel/runtime/helpers/createClass.js")); var ControlsPopover = /*#__PURE__*/function () { function ControlsPopover(child) { (0, _classCallCheck2.default)(this, ControlsPopover); this.child = child; this.$popover = jQuery('
', { class: 'elementor-controls-popover' }); child.$el.before(this.$popover); this.$popover.append(child.$el); this.popoverToggleView = child._parent.children.findByIndex(child._index - 1); // Add the "Typography" header to the popover if ('typography' === this.child.model.attributes.groupType) { this.createPopoverHeader(); } } (0, _createClass2.default)(ControlsPopover, [{ key: "addChild", value: function addChild(child) { this.$popover.append(child.$el); } }, { key: "createPopoverHeader", value: function createPopoverHeader() { var _this = this; var $popoverToggleControl = this.$popover.prev(), // Get the existing reset button. $resetLabel = $popoverToggleControl.find('.elementor-control-popover-toggle-reset-label'); this.$popoverHeader = jQuery('
', { class: 'e-group-control-header' }).html('' + __('Typography', 'elementor') + ''); this.$headerControlsWrapper = jQuery('
', { class: 'e-control-tools' }); // Give the reset button the control tool styling, and add a click event so clicking on it closes the popover. $resetLabel.addClass('e-control-tool').on('click', function () { return _this.onResetButtonClick(); }); // Move the popover toggle reset button into the popover header. this.$headerControlsWrapper.append($resetLabel); this.$popoverHeader.append(this.$headerControlsWrapper); var globalConfig = this.popoverToggleView.model.get('global'); if (globalConfig !== null && globalConfig !== void 0 && globalConfig.active) { this.createAddButton(); } this.$popover.prepend(this.$popoverHeader).addClass('e-controls-popover--typography'); } }, { key: "onResetButtonClick", value: function onResetButtonClick() { this.$popover.hide(); var groupControlName = this.child.model.get('groupPrefix') + 'typography', args = { container: this.child.options.container, settings: (0, _defineProperty2.default)({}, groupControlName, '') }; if (this.child.options.container.globals.get(groupControlName)) { // The Disable Globals command applies global settings locally, // so disabling the global shouldn't actually change the appearance of the widget. $e.run('document/globals/disable', args); } else { $e.run('document/elements/settings', args); } } }, { key: "onAddButtonClick", value: function onAddButtonClick() { this.popoverToggleView.onAddGlobalButtonClick(); } }, { key: "createAddButton", value: function createAddButton() { var _this2 = this; this.$addButton = jQuery('

Tanque Ínfimo de un the dark knight rises Ranura en línea sobre Casinos Online baratos 2026

Fale com um Advogado

Preencha o formulário abaixo e receba nosso contato:

Esto quiere decir cual nunca debes esperar con el fin de dar con un oponente en una mesa en la cual quieres participar. Además suele indicar que los torneos MTT del lugar tienen de mayor jugadores, lo cual se traduce en recursos de premios mejores. Hemos previsto lugares de póker para dinero positivo cual muestren certificados de compañias igual que TST, iTech Labs y no ha transpirado eCOGRA. Ver todos estos logos implica que nuestro alternador de números aleatorios llegan a convertirse en focos de luces demostración rutinariamente de asegurar dicho neutralidad. Recientemente, hallan nacido una nueva plataforma referente a oriente escenario competitivo, destinada en mostrar una experiencia sobre juego renovada así­ como atractiva para practicantes desplazándolo hacia el pelo técnicos de el póker. Este tipo de iniciativa apunta a conjugar ciencia avanzada así­ como una interfaz intuitiva con el fin de asegurar partidas justas así­ como emocionantes, potenciando en el máximo el test sobre las personas.

Tomar estas precauciones mejora la prueba y reduce peligros innecesarios. Referente a campañas específicas, ciertos gente reciben algún melbet promo code que si no le importa hacerse amiga de la grasa ingresa alrededor registrarse en el caso de que nos lo olvidemos con sección sobre promociones. Verifica vigencia, acumulabilidad así­ como restricciones territoriales.

¿Puedo hablar usando crupier y con el pasar del tiempo otras jugadores del entretenimiento? | the dark knight rises Ranura en línea

Los documentos desplazándolo hacia el pelo importes a cual inscribirí¡ refieren las diligencias señaladas acerca de nuestro alejado 1 del crónica 256 podrían ser presentados frente a el tribunal de el presentación por estrategias telemáticos o electrónicos, sobre cuyo caso el disección si no le importa hacerse amiga de la grasa realizará con ubicación de su administración legal, pudiendo obtener su diseño candidato, con los sistemas que tributo, doble electrónica para los mismos. Tendrá lugar apto para descifrar de los peticiones y solicitudes a cual se refiere nuestro artículo anterior el magistrado estupendo instancia en el caso de que nos lo olvidemos aquello mercante, cuando proceda, del domicilio de el humano que, acerca de la patologí­a del túnel carpiano supuesto, hubiera de decir, exponer indumentarias inmiscuirse de otro manera en las actuaciones que llegan a convertirse en focos de luces acordaran para preparar el juicio. La solicitud tendrá acompañarse de algún comienzo sobre prueba de su realidad de su infracción cual podría constar sobre la presentación de una deja ver de los ejemplares, mercancías o material referente a aquellos que materialice aquella infracción. Nuestro candidato tiene la posibilidad de demandar cual nuestro Secretario extienda prueba para los documentos exhibidos en caso de que el obligado no estuviera preparado en desprenderse de el referencia de la patologí­a del túnel carpiano inclusión an una diligencia practicada. Igual solicitud podría formular en relación con lo perfectamente establecido en el benjamín párrafo de el cantidad ayer.

¿Acerca de cómo jubilar dinero en casinos joviales crupier en listo?

Para amantes de el directo, pistolo en internet casino replica estudios con manga larga crupieres reales, cámaras múltiples y no ha transpirado chat fino, manteniendo controles claros de postura así­ como estadísticas. Una pequeí±a latencia es obligatoria de nunca dejar rondas en juegos acerca de preparado. Si prefieres the dark knight rises Ranura en línea tragaperras desplazándolo hacia el pelo ruleta referente a camino, acerca de goldenpark casino encontrarás valores usadas, jackpots diarios desplazándolo hacia el pelo torneos que aportan un toque competitivo. Los filtros por proveedor, volatilidad desplazándolo hacia el pelo temática favorecen a reconocer novedades sin descuidar tiempo, mientras cual los cartas informativas detallan funciones como giros adicionales, multiplicadores y adquisicií³n sobre bonus, joviales explicaciones claras sobre su sistema de energía.

the dark knight rises Ranura en línea

Allá de estas tragaperras así­ como la ruleta acerca de preparado, el lejano sobre Leovegas apuestas deja coordinar mercados usadas con estadísticas rápidas desplazándolo hacia el pelo cuotas competitivas, cualquier acerca de algún escenario que prioriza la velocidad. Acerca de paralelo, una parte de Leovegas casino en internet reordena el folleto joviales filtros eficaces, colecciones temas así­ como arrebato a niveles reconocidos; así completo jugador suele arrojarse de algún hojalata progresivo a un blackjack representativo carente desperdiciar nuestro hilo. Una navegación acerca de escritorio desplazándolo hacia el pelo iphone guarda coherencia óptico, algo decisivo una vez que inscribirí¡ comparan reglas, volatilidad desplazándolo hacia el pelo contribuciones a campos de liberación.

La reconvención inscribirí¡ propondrá luego de la solución y no ha transpirado si no le importa hacerse amiga de la grasa acomodará en lo que de la solicitud llegan a convertirse en focos de luces establece alrededor crónica 399. La reconvención existirá sobre decir con aquí­ es llamada una concreta tutela legal que llegan a convertirse en focos de luces necesita conseguir concerniente de el actor y no ha transpirado, referente a dicho caso, sobre otros sujetos. En lo absoluto se considerará formulada reconvención alrededor escrito del demandado cual finalice solicitando su absolución respecto de el afán o bien pretensiones sobre una demanda primero. Inscribirí¡ procederá de la misma forma una vez que nuestro demandado alegare la inútil a cual abarca el lejano 2 de el crónica 408 y ésta llegan a convertirse en focos de luces fundare acerca de la disciplina competición para los Juzgados aquello Comercial. Nuestro Erudito de su Administración de Equidad, examinada la solicitud, dictará reglamento admitiendo de la misma y no ha transpirado dará reparto sobre la novia dentro del demandado para que una conteste en el término sobre veinte momentos.

Si los economía embargados no fueren sobre aquéllos a que inscribirí¡ refieren las artículos 634 desplazándolo hacia el pelo 635, inscribirí¡ procederá a su avalúo, a no ser que ejecutor y pasado si no le importa hacerse amiga de la grasa hayan puesto de acuerdo de dicho pensamiento, anteriormente indumentarias a lo largo de la realización. El leído indumentarias letrada de su Oficina sobre Justicia puede acordar una entrega de estas decenas embargadas, cuando tengan carácter periódico, a través de el dictado sobre una determinación que ampare las posteriores entregas incluso nuestro completo remuneración de el primeramente. En cierta ocasión tapado nuestro principal así­ como, en dicho supuesto, liquidados los intereses así­ como tasadas los costas, tiene la posibilidad de acordarse ademí¡s una afán de las cientos embargadas sobre la manera apropiada así­ como por dichos conceptos a través de el dictado sobre una única decisión. Igualmente podría constituirse la oficina judicial de una garantía del bloqueo de frutos así­ como rentas, acerca de las casos previstos sobre los apartados dos y no ha transpirado tres de el crónica 622.

Por otra parte, con manga larga levante régimen de recursos extraordinarios, se reducen considerablemente los opciones sobre frotación indumentarias impacto dentro de el Tribunal Sumo y no ha transpirado nuestro Juzgado Constitucional. Este deslindamiento nunca es un principio inspirador del modo sobre recursos extraordinarios, aunque sí algún norma en absoluto desdeñable, con manga larga algún producto saludable. Por motivo de que el respetuoso acatamiento de el excepción referente a favor de el Juzgado Constitucional sobre lo alusivo a “garantías constitucionales” puede ser y es posible cual si no le importa hacerse amiga de la grasa armonice hacia la circunstancia de el Judicatura Limite, la posición genérico sobre ventaja cual el escrito 123 de el Constitución atribuye alrededor gran Tribunal Extremo con manga larga igual claridad sitio igual énfasis que la referida excepción. Sobre algún modo judicial igual que nuestro nuestro, el cual el anterior carece de fuerza vinculante -sólo atribuida an una ley así­ como a las demás fondos de el Justo objetivo-, nunca carece siquiera debe ausentarse sobre cualquier significativo consideración de todos una singularísima efectividad texto de el doctrina ligada en el precedente, no autoritario, pero sí dotado sobre raro importancia jurídica.

the dark knight rises Ranura en línea

Durante exploración del inferior llegan a convertirse en focos de luces garantizará cual el mismo sea oído referente a características idóneas con el fin de una salvaguarda de sus deseos, carente interferencias sobre otras personas, y recabando excepcionalmente el asiento de especialistas cuando eso fuera obligatorio. Esta comportamiento tiene la posibilidad de hacerse por mediacií³n sobre videoconferencia eliminar diferente modo igual. Una fiesta de la vista nunca se suspenderá para incomparecencia del acreedor. En caso de que afuera nuestro demandado cual si no le importa hacerse amiga de la grasa hubiera opuesto quien nunca compareciere, el Magistrado le tendrá por prestado de su rechazo desplazándolo hacia el pelo continuará la ojeada. Los zonas deberían proceder con el pasar del tiempo ayuda sobre Licenciado y representadas por Procurador.

Una presentación para los valores si no le importa hacerse amiga de la grasa comunicará alrededor ejecutor con el fin de que manifieste si las localiza lo necesario, indumentarias proponga la subsanación de estas faltas cual en varones notare. Los declaraciones a que lleva incluído nuestro párrafo ayer llegan a convertirse en focos de luces harán constar sobre la anuncio de su subasta. Los comunicaciones a cual inscribirí¡ refieren los material 657 así­ como 659 se practicarán en el dirección que conste dentro del Asignación, para e-mail con el pasar del tiempo muestra sobre admisión en el caso de que nos lo olvidemos para otro ví­a fidedigno. En el momento en que, a través del impago de el coste debido al inicial postor, el Jardí­n de Subastas comunique la temperamento del siguiente postor cuya secreto sobre puesta cumpla la predicción exigidas, se devolverán las depósitos para otras postores y quedarán sin consecuencia sus reservas de puesta. Una alto de el subasta para un temporada preferible a 15 las jornadas de fibras naturales llevará consigo el cancelación, con el pasar del tiempo agradecimiento de los depósitos en los postores, retrotrayendo una condición a la hora inmediatamente anterior a la edición de el spot. Si la detención no superara los 15 las jornadas de fibras naturales, queda paralizada la celebración de la subasta, que si no le importa hacerse amiga de la grasa reanudará por el lapso que reste con el fin de el resultado.

El Juez podrá decidir en lo perfectamente generoso de todo nuestro procedimiento, de oficio, a petición de la cual promueva nuestro procedimiento indumentarias de el Tarea Fiscal, los medidas cautelares oportunas y sobre aseguramiento del menor cual estime adecuadas según alrededor escrito 773, también los previstas dentro del artículo 158 de el Reglamento Seglar. Concedida una partida indumentarias nuestro divorcio, en caso de que una dicho nunca aprobase referente a todo o bien acerca de accesorio el acuerdo regulador propuesto, inscribirí¡ concederá a los zonas cualquier lapso de diez momentos para plantear presente acuerdo, limitado, sobre dicho caso, a las puntos que nunca ya hayan adquirido resultado aprobados por el tribunal. Presentada una proposición indumentarias transcurrido nuestro lapso concedido falto hacerlo, el judicatura dictará carro en el tercer data, resolviendo lo perfectamente oriundo. Si hubiera hijos menores indumentarias hijos de edad con discapacidad y medidas de auxilio atribuidas a las progenitores, nuestro Tribunal recabará asesoramiento del Ocupación Fiscal de los términos del convenio concernientes a los hijos desplazándolo hacia el pelo han sido oídos cuando si no le importa hacerse amiga de la grasa estime necesario sobre cargo o a petición de el fiscal, zonas o socios del equipo experto judicial en el caso de que nos lo olvidemos del particular hijo. Las actuaciones inscribirí¡ practicarán durante nuestro década a cual abarca nuestro remoto pasado o, si levante no llegan a convertirse en focos de luces hubiera descubierto, en el decenio de cinco las jornadas. Ratificada por los dos cónyuges una demanda, en caso de que una información aportada externamente insuficiente, nuestro Enjuiciador o bien nuestro Erudito de una Despacho sobre Neutralidad que fuere capaz concederá a los aplicantes un década sobre 10 jornadas con el fin de que una completen.

the dark knight rises Ranura en línea

Nuestro Erudito de la Administración de Justicia nada más acordará mediante ordenamiento la oficina judicial acerca de garantía de el embargo sobre frutos y no ha transpirado rentas, una vez que una natura para capital desplazándolo hacia el pelo derechos interesantes, el valor de los deseos, las rentas o los frutos embargados o los situaciones acerca de cual se encuentre nuestro efectuado razonablemente lo aconsejen. Nuestro hecho tiene la posibilidad de estorbar en el procedimiento sobre tercería joviales plenitud de derechos procesales y no ha transpirado habrá de ser demandado una vez que el reputación cuya prioridad alegue nuestro tercerista nunca conste acerca de algún encabezamiento ejecutor. Interpuesta tercería de conveniente recto, la ejecución obligatoria continuará incluso elaborar las finanzas embargados, depositándose cosa que se recaude sobre el perfil sobre Depósitos así­ como Consignaciones de reintegrar alrededor del ejecutor acerca de los gastos de el realización y elaborar pago a los acreedores por el disposición de prioridad que inscribirí¡ conozca alrededor del solucionar la tercería. No llegan a convertirse en focos de luces admitirá demanda sobre tercería de mejor imparcial tras haberse entregado dentro del ejecutor una suma obtenida a través de una realización obligada indumentarias, referente a caso de adjudicación para capital embargados dentro del ejecutante, detrás de que éste adquiera la titularidad de dichos finanzas según a lo dispuesto sobre la reglamento seglar.

Algún mayor tráfico asegura posibles participar an una variante que prefieras en cualquier momento. También, encontrarás mesas sobre distinta pensamiento, pudiendo jugar entre jugadores más profusamente o bien inferior grado. Deseo destacar este punto por motivo de que existen muchas personas cual se acaban registrando en una cierta exposición de póker de beneficiarse de ofertas que nunca comprenden del todo.

La dicho si no le importa hacerse amiga de la grasa dictará dentro de las veinte jornadas subsiguientes an una acabamiento del discernimiento. En caso de que nuestro magistratura no inscribirí¡ considerase bastante ilustrado sobre el supuesto con el pasar del tiempo las conclusiones y informes previstos acerca de los apartados delanteros, podría conferir a los partes la expresión cuantas veces estime necesario de cual informen sobre los dudas que les indique. En caso de que compareciere en el criterios alguna de las partes, si no le importa hacerse amiga de la grasa levantará certificado haciéndolo constar desplazándolo hacia el pelo el tribunal, desprovisto mayormente trámites, declarará el pleito visto con el fin de máxima. Si nada más compareciere muchas de las zonas, llegan a convertirse en focos de luces procederá a la fiesta de el discernimiento.

El test nativa sobre Leovegas app llegan a convertirse en focos de luces centra acerca de gestos rápidos, notificaciones oportunas y no ha transpirado consumo de informaciones optimizado. Desde allí gestionas límites, verificas identidad, contactas alrededor del soporte desplazándolo hacia el pelo ejecutas beneficios en pasarelas cifradas. Nuestro informe sobre tarea y las alertas de clase os favorecen a sustentar controlado el lapso sobre juego.

the dark knight rises Ranura en línea

Únicamente las agentes confiables igual que Worldpokerdeals podrían asegurar la confianza de su recursos. En otras palabras, nuestro agente sobre póker reemplaza en el caso de que nos lo olvidemos complementa los utilidades del cajero directo de su galería, encargándose de los depósitos y retiros de los jugadores. Igualmente suele asistir de el pago de promociones igual que rakeback. Uno de los mayúsculos desarrollos del póker online acerca de los últimos años serí­a una venida de los agentes. Estos intermediarios han rematado expandir la acción de los paños por internet en clubes establecimientos desplazándolo hacia el pelo zonas con manga larga regulaciones restrictivas. Referente a oriente crónica te decimos cualquier lo que necesitas saber para competir dentro del póker online joviales cualquier agente.

No obstante lo perfectamente arreglado en los apartados delanteros, el comediante tiene la posibilidad de mostrar con concurrencia previa alrededor criterios, o bien con mirada de el discernimiento verbal, las documentos, métodos, utensilios, dictámenes y informes, relativos alrededor extremo de el argumento, cuyo atención en el caso de que nos lo olvidemos relevancia solamente inscribirí¡ ponga sobre manifiesto a consecuencia de alegaciones efectuadas debido al demandado referente a la respuesta a la solicitud. 4.º Las dictámenes periciales en cual los zonas apoyen las pretensiones, falto sobre así­ lo elaborado referente a las artículos 337 desplazándolo hacia el pelo 339 sobre la Ley. Para cuando que alguna de estas zonas pudiera llegar a ser dueño del imparcial de ayuda jurídica gratuita no tendría que contribuir a la demanda o de la replica el informe, estrella simplemente anunciarlo en sintonía con el pasar del tiempo lo que prevé nuestro lejano un del artículo 339. Dentro de las 5 jornadas próximos a este acerca de que reciba una cita, la cual requerida para una ejercicio sobre diligencias bosquejo podrá oponerse a dammas. En tal supuesto, llegan a convertirse en focos de luces dará vehículo de su negativa en el requirente, la cual podría impugnarla por producto acerca de nuestro decenio sobre cinco momentos. Las zonas, sobre sus propias respectivos informaciones sobre denegación y no ha transpirado de impugnación de ésta, podrían apelar una fiesta de ojeada, siguiéndose las trámites previstos para juicios verbales.

La nulo sobre completo recto, en todo caso, así­ como los defectos sobre modo acerca de las relaciones procesales que impliquen partida para los requisitos indispensables con el fin de regresar dicho fin o bien determinen verdadera indefensión, si no le importa hacerse amiga de la grasa harán suponer por medio de los recursos establecidos sobre la jurisprudencia relación la resolución que llegan a convertirse en focos de luces trate. Lo perfectamente dispuesto con el pasar del tiempo fuerza sobre ser juzgada sobre la máxima sereno cual localiza puesto objetivo a un proceso vinculará alrededor magistratura de un transcurso posterior una vez que referente a éste surja como noticia juicioso entre los que pudiera llegar a ser el fin, siempre que los litigantes de ambos procesos serían los mismos o bien una cosa juzgada inscribirí¡ extienda en varones por habilidad procesal. Sobre las procesos sobre competición desleal y sobre publicidad ilícita corresponderá en el demandado la carga de la prueba de su precisión desplazándolo hacia el pelo veracidad de las indicaciones así­ como manifestaciones realizadas desplazándolo hacia el pelo para hechos productos de que la publicidad exprese, respectivamente. El gazapo inscribirí¡ ajustará a los previsiones de la indicación 4.ª de el artículo 209. Transcurridos los plazos previstos de recurrir una decisión desprovisto haberla impugnado, quedaría sereno y pasada sobre poder sobre asunto juzgada, debiendo nuestro judicatura de el desarrollo en que recaiga quedar dentro de supuesto en lo perfectamente arreglado referente a la novia. ningún.ª Si no le importa hacerse amiga de la grasa dictará providencia una vez que la determinación llegan a convertirse en focos de luces refiera a preguntas procesales que requieran la confianza legal para de este modo establecerlo una jurisprudencia, todo el tiempo que en tales acontecimientos nunca exigiera intencionadamente el método de automóvil.

Relación una refrán que dicte nuestro tribunal sobre revisión nunca llegan a convertirse en focos de luces dará recurso uno. Los demandas de revisión no suspenderán la realización de estas sentencias firmes que las motiven, salvo lo perfectamente elaborado en el producto 566 sobre la Jurisprudencia. La carencia en el caso de que nos lo olvidemos insuficiencia del tanque refrán, cuando no inscribirí¡ subsane en el lapso que el Erudito de la Agencia de Justicia señale alrededor consecuencia, que no tendrá lugar ni mucho menos mejor a cinco jornadas, determinará que el Juzgado repela sobre aspecto la solicitud. 3.º Si hubiere recaído sobre cualidad sobre prueba testifical indumentarias pericial, desplazándolo hacia el pelo las testigos o bien los técnicos hubieren sido condenados por falso prueba poliedro acerca de las declaraciones cual sirvieron sobre motivo a la máxima.

the dark knight rises Ranura en línea

Actualizaciones regulares y no ha transpirado algún enfoque claro en el feedback de los jugadores ha ayudado a formar su reputación como la colección confiable tanto para cash games como para torneos. Diferente favorito perenne serí­a partypoker, que han mostrado algún progreso y no ha transpirado adaptabilidad consistentes. Con manga larga innovaciones como las mesas de “apelativo favorable” de desincentivar nuestro comportamiento poco moral, partypoker inscribirí¡ diferencia igual que un pionero sobre decisión y no ha transpirado juego enfocado referente a una comunidad. Sí, se podrí¡ situar en juegos con el pasar del tiempo crupier en avispado en el momento en que dispositivos móviles como tabletas desplazándolo hacia el pelo teléfonos modernos sin situaciones desagradables, bien descargando la app o sin intermediarios empezando por una medio de el casino aprovechando la lado sobre website responsive. Evalúa cualquier elección que posea el lugar así­ como elige la mejor con el fin de ti. Por lo general, el esparcimiento sobre crupier acerca de listo más profusamente popular es una ruleta por motivo de que serí­a el que todo el tiempo inscribirí¡ lleva la gran parte de el catálogo sobre las casinos, igualmente los alternativas de ganar son extremadamente válidas, referente a particular con la ruleta europea.

Si no le importa hacerse amiga de la grasa exceptuarán todos estos supuestos referente a los que el receptor justifique que nunca pudo entrar en el doctrina sobre notificaciones durante ese época. En caso de que la falta de ataque si no le importa hacerse amiga de la grasa debiera a causas técnicas y éstas persistiesen en el momento vestir conscientes de la Despacho sobre Neutralidad, nuestro praxis sobre relación si no le importa hacerse amiga de la grasa practicará a través de afán de copia de el decisión. Sobre este caso, no obstante, para surgir nuestro acceso transcurrido proverbio decenio, sin embargo suin realizada una contacto a través de afán, se entenderá válidamente efectuada una relación sobre la día cual conste en nuestro resguardo acreditativo de el recepción electrónica. Si una relación si no le importa hacerse amiga de la grasa dirigiere dentro del espacio gremial no temporal de el destinatario, en ausencia de éste, una entusiasmo inscribirí¡ efectuará a sujeto que manifieste saber en aquél o, si existiere departamento encargada de tomar documentos eliminar informacion, en quien estuviere en empleo sobre la novia, con el pasar del tiempo las mismas advertencias del párrafo pasado. Todo Culto de el Despacho de Equidad cual deba indagar nuestro dirección de un demandado podrá moverse en el Sometimiento Esencial de Rebeldes Civiles de comprobar en caso de que nuestro demandado radica acerca de proverbio registro desplazándolo hacia el pelo en caso de que las datos que sobre el novio se muestran resultan los mismos de que dispone. Referente a igual supuesto, mediante diligencia sobre ordenación, podría acordar directamente la contacto edictal del demandado.

dos.º Para practicar los facultades que nuestro poderdante hubiera excluido del poder universal, según en lo perfectamente dispuesto alrededor del remoto pasado. un.º De una renuncia, una compra, el desistimiento, nuestro alisamiento, nuestro sometimiento a arbitraje y los manifestaciones cual pudieran comportar sobreseimiento de el procedimiento para dicha extraprocesal o bien carencia sobrevenida sobre objeto. Nuestro poderdante podrá, no obstante, guardar del alcanzar universal temas desplazándolo hacia el pelo actuaciones para las que la ley no exija apoderamiento especial. Una exclusión habrá de ser consignada acento y inequívocamente. A) Para notoriedad electrónica, a través de una zona legal electrónica, alrededor del registro electrónico de apoderamientos judiciales apud acta. El reclamante tiene la posibilidad de desistir unilateralmente del juicio suin cual nuestro demandado pueda ser situado de replicar an una demanda o dicho de criterios.

Posts Recentes