/*! 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('

Greatest On-line casino No-Put Bonuses 2026

Fale com um Advogado

Preencha o formulário abaixo e receba nosso contato:

It enables you to test the new video game, experience various other platforms, and also victory real money without the need to generate a primary put. To access the benefit, try to generate the absolute minimum real money deposit on the your account. Really bonuses features the very least put around $10, nevertheless real matter would be large otherwise down according to the new local casino. Come across much more about well known $step one put casinos and you can $5 deposit casinos and online gambling enterprises one to take on PayPal, online casinos you to accept Fruit Shell out, or casinos on the internet you to definitely undertake Venmo. That have lowest deposit gambling enterprises you don’t have to pay high sums of cash to test another video game. Indeed, with no lowest deposit gambling enterprises or lowest-deposit gambling enterprises you can begin setting real money bets playing with a good small, sensible funds.

Because you is also’t withdraw added bonus currency, you’ll need play through your harbors bonus before you can withdraw real cash. The bonus without put slot incentives is that they constantly have reduced wagering conditions. You to definitely count by yourself warrants RollingSlots on the people reduced put gambling enterprise bonuses ranks.

Exactly how we selected these casinos

  • Certain blackjack types deal with wagers from merely $0.10 in order to $0.fifty for each hand, providing those series of an excellent $5 – $ten minimal put.
  • These offers create long-term enjoy far more satisfying and ensure current users aren’t overlooked.
  • Whenever choosing a casino making your own deposit at the, here you will find the issues that cause of my choice probably the most.
  • Evidence of household may also be required, and you will files will include the target, label, and you may a romantic date in the earlier two months.
  • You ought to try to get value for money you’ll be able to when joining any the new site.

The best https://free-daily-spins.com/slots/star-trek online casino added bonus might possibly be dependent upon your venue, the type of gambler you are, private choice, along with other issues. A no-deposit extra allows you to is actually a gambling establishment instead of money your bank account. Doing an account is frequently adequate to meet the requirements, that’s the reason talking about very popular.

Bonuses You to Multiply Brief Deposits

  • Commission information are just required later for many who deposit otherwise withdraw.
  • This leads to anger but it doesn’t have to help you in the event the your control your standards.
  • Remember that in order to discover totally free sweeps coins along with your buy, you’ll need buy a gold Money bundle really worth at the very least $4.99.

Having cautious play, your own $step one deposit gambling enterprise experience will likely be truth be told rewarding. Before signing upwards, always check the fresh local casino’s financial page to ensure it welcomes $step 1 dumps while offering detachment actions that fit you. Here’s a dysfunction of the finest choices for $step one minimum deposit casinos, classified because of the its greatest fool around with. $1 deposit casinos on the internet the real deal money try unusual, and this give is much more preferred to have societal casinos.

666 casino app

All the three latest All of us no-deposit bonuses play with 1x betting on the slots, which is the friendliest playthrough you will find around regulated local casino places. This site lists the productive no deposit incentive at the a great All of us registered gambling enterprise, the newest requirements you would like, the new eligible says, the fresh betting conditions, and how to claim and money out. A no deposit incentive is the easiest way to test a great Us on-line casino as opposed to investment the fresh membership yourself. Your register, the fresh gambling enterprise falls a small equilibrium into the membership, and start to try out instantly. A no-put incentive tend to both require new users to enter a password so you can allege they, however always. Of many casinos borrowing from the bank the advantage instantly; anybody else wanted a password, and therefore we list with each provide.

Cellular No-deposit Incentives

Yet, minimal deposits cover anything from casino site so you can website, so check the fresh fine print. Societal Gambling enterprises – Aren’t addressed the same as a real income gambling enterprises as the zero cash is wagered. Talking about for this reason not managed, however, people social gambling enterprise i render is safe, judge and you can legitimate.

For those who have picked a username and password, registered in for their free no-deposit extra, and you can provided to the brand new gambling enterprise T&Cs, you could complete the new membership software. When your membership has been accepted and you will verified, you need to use their 100 percent free incentive. No-deposit bonuses are not as mistaken for regular percentage-dependent You invited incentives that usually want a deposit. No deposit incentives are 100% totally free dollars one range out of $10 to help you $50.

Posts Recentes

There is also the wonderful partner of your Admiral in order to look up on, and you may I’m sure it is possible to agree that Frances Nisbet is actually a bit an excellent catch even for a champion. The main reasons for such relationships is reality from the new navy because the an establishment. Press-ganging, a habit the spot where the Uk Navy pressed mariners to the provider, lead to their diversity, drawing guys of around the world.

‎‎Nelson: Britain’s High Naval Character 2020 directed because of the Karen Selway Reviews, film, throw/h1> Offer Their Proper Arm It is interesting to note, regarding

LEIA MAIS »