/*! elementor - v3.11.5 - 14-03-2023 */ /******/ (() => { // webpackBootstrap /******/ var __webpack_modules__ = ({ /***/ "../assets/dev/js/admin/maintenance-mode.js": /*!**************************************************!*\ !*** ../assets/dev/js/admin/maintenance-mode.js ***! \**************************************************/ /***/ ((module) => { "use strict"; module.exports = elementorModules.ViewModule.extend({ getDefaultSettings: function getDefaultSettings() { return { selectors: { modeSelect: '.elementor_maintenance_mode_mode select', maintenanceModeTable: '#tab-maintenance_mode table', maintenanceModeDescriptions: '.elementor-maintenance-mode-description', excludeModeSelect: '.elementor_maintenance_mode_exclude_mode select', excludeRolesArea: '.elementor_maintenance_mode_exclude_roles', templateSelect: '.elementor_maintenance_mode_template_id select', editTemplateButton: '.elementor-edit-template', maintenanceModeError: '.elementor-maintenance-mode-error' }, classes: { isEnabled: 'elementor-maintenance-mode-is-enabled' } }; }, getDefaultElements: function getDefaultElements() { var elements = {}, selectors = this.getSettings('selectors'); elements.$modeSelect = jQuery(selectors.modeSelect); elements.$maintenanceModeTable = elements.$modeSelect.parents(selectors.maintenanceModeTable); elements.$excludeModeSelect = elements.$maintenanceModeTable.find(selectors.excludeModeSelect); elements.$excludeRolesArea = elements.$maintenanceModeTable.find(selectors.excludeRolesArea); elements.$templateSelect = elements.$maintenanceModeTable.find(selectors.templateSelect); elements.$editTemplateButton = elements.$maintenanceModeTable.find(selectors.editTemplateButton); elements.$maintenanceModeDescriptions = elements.$maintenanceModeTable.find(selectors.maintenanceModeDescriptions); elements.$maintenanceModeError = elements.$maintenanceModeTable.find(selectors.maintenanceModeError); return elements; }, handleModeSelectChange: function handleModeSelectChange() { var settings = this.getSettings(), elements = this.elements; elements.$maintenanceModeTable.toggleClass(settings.classes.isEnabled, !!elements.$modeSelect.val()); elements.$maintenanceModeDescriptions.hide(); elements.$maintenanceModeDescriptions.filter('[data-value="' + elements.$modeSelect.val() + '"]').show(); }, handleExcludeModeSelectChange: function handleExcludeModeSelectChange() { var elements = this.elements; elements.$excludeRolesArea.toggle('custom' === elements.$excludeModeSelect.val()); }, handleTemplateSelectChange: function handleTemplateSelectChange() { var elements = this.elements; var templateID = elements.$templateSelect.val(); if (!templateID) { elements.$editTemplateButton.hide(); elements.$maintenanceModeError.show(); return; } var editUrl = elementorAdmin.config.home_url + '?p=' + templateID + '&elementor'; elements.$editTemplateButton.prop('href', editUrl).show(); elements.$maintenanceModeError.hide(); }, bindEvents: function bindEvents() { var elements = this.elements; elements.$modeSelect.on('change', this.handleModeSelectChange.bind(this)); elements.$excludeModeSelect.on('change', this.handleExcludeModeSelectChange.bind(this)); elements.$templateSelect.on('change', this.handleTemplateSelectChange.bind(this)); }, onAdminInit: function onAdminInit() { this.handleModeSelectChange(); this.handleExcludeModeSelectChange(); this.handleTemplateSelectChange(); }, onInit: function onInit() { elementorModules.ViewModule.prototype.onInit.apply(this, arguments); elementorCommon.elements.$window.on('elementor/admin/init', this.onAdminInit); } }); /***/ }), /***/ "../assets/dev/js/admin/menu-handler.js": /*!**********************************************!*\ !*** ../assets/dev/js/admin/menu-handler.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 _get2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/get */ "../node_modules/@babel/runtime/helpers/get.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")); 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; } } var MenuHandler = /*#__PURE__*/function (_elementorModules$Vie) { (0, _inherits2.default)(MenuHandler, _elementorModules$Vie); var _super = _createSuper(MenuHandler); function MenuHandler() { (0, _classCallCheck2.default)(this, MenuHandler); return _super.apply(this, arguments); } (0, _createClass2.default)(MenuHandler, [{ key: "getDefaultSettings", value: function getDefaultSettings() { return { selectors: { currentSubmenuItems: '#adminmenu .current' } }; } }, { key: "getDefaultElements", value: function getDefaultElements() { var settings = this.getSettings(); return { $currentSubmenuItems: jQuery(settings.selectors.currentSubmenuItems), $adminPageMenuLink: jQuery("a[href=\"".concat(settings.path, "\"]")) }; } // This method highlights the currently visited submenu item for the slug provided as an argument to this handler. // This method also accepts a jQuery instance of a custom submenu item to highlight. If provided, the provided // item will be the one highlighted. }, { key: "highlightSubMenuItem", value: function highlightSubMenuItem() { var $element = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : null; var $submenuItem = $element || this.elements.$adminPageMenuLink; if (this.elements.$currentSubmenuItems.length) { this.elements.$currentSubmenuItems.removeClass('current'); } $submenuItem.addClass('current'); // Need to add the 'current' class to the link element's parent `
  • ` element as well. $submenuItem.parent().addClass('current'); } }, { key: "highlightTopLevelMenuItem", value: function highlightTopLevelMenuItem($elementToHighlight) { var $elementToRemove = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null; var activeClasses = 'wp-has-current-submenu wp-menu-open current'; $elementToHighlight.parent().addClass(activeClasses).removeClass('wp-not-current-submenu'); if ($elementToRemove) { $elementToRemove.removeClass(activeClasses); } } }, { key: "onInit", value: function onInit() { (0, _get2.default)((0, _getPrototypeOf2.default)(MenuHandler.prototype), "onInit", this).call(this); var settings = this.getSettings(); if (window.location.href.includes(settings.path)) { this.highlightSubMenuItem(); } } }]); return MenuHandler; }(elementorModules.ViewModule); exports["default"] = MenuHandler; /***/ }), /***/ "../assets/dev/js/admin/new-template/template-controls.js": /*!****************************************************************!*\ !*** ../assets/dev/js/admin/new-template/template-controls.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 _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 TemplateControls = /*#__PURE__*/function () { function TemplateControls() { (0, _classCallCheck2.default)(this, TemplateControls); } (0, _createClass2.default)(TemplateControls, [{ key: "setDynamicControlsVisibility", value: function setDynamicControlsVisibility(lookupControlIdPrefix, controls) { if (undefined === controls) { return; } var controlsArray = Object.entries(controls); for (var _i = 0, _controlsArray = controlsArray; _i < _controlsArray.length; _i++) { var _controlsArray$_i = (0, _slicedToArray2.default)(_controlsArray[_i], 2), controlId = _controlsArray$_i[0], controlSettings = _controlsArray$_i[1]; this.setVisibilityForControl(lookupControlIdPrefix, controlSettings, controlId); } } }, { key: "setVisibilityForControl", value: function setVisibilityForControl(lookupControlIdPrefix, controlSettings, controlId) { var _controlSettings$cond, _this = this; var conditions = Object.entries((_controlSettings$cond = controlSettings.conditions) !== null && _controlSettings$cond !== void 0 ? _controlSettings$cond : {}); conditions.forEach(function (condition) { _this.changeVisibilityBasedOnCondition(lookupControlIdPrefix, condition, controlId); }); } }, { key: "changeVisibilityBasedOnCondition", value: function changeVisibilityBasedOnCondition(lookupControlIdPrefix, condition, controlId) { var _condition = (0, _slicedToArray2.default)(condition, 2), conditionKey = _condition[0], conditionValue = _condition[1]; var targetControlWrapper = document.getElementById(lookupControlIdPrefix + controlId + '__wrapper'); var lookupControl = document.getElementById(lookupControlIdPrefix + conditionKey); targetControlWrapper.classList.toggle('elementor-hidden', !lookupControl || conditionValue !== lookupControl.value); } }]); return TemplateControls; }(); exports["default"] = TemplateControls; /***/ }), /***/ "../assets/dev/js/editor/utils/files-upload-handler.js": /*!*************************************************************!*\ !*** ../assets/dev/js/editor/utils/files-upload-handler.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 _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 FilesUploadHandler = /*#__PURE__*/function () { function FilesUploadHandler() { (0, _classCallCheck2.default)(this, FilesUploadHandler); } (0, _createClass2.default)(FilesUploadHandler, null, [{ key: "isUploadEnabled", value: function isUploadEnabled(mediaType) { var unfilteredFilesTypes = ['svg', 'application/json']; if (!unfilteredFilesTypes.includes(mediaType)) { return true; } return elementorCommon.config.filesUpload.unfilteredFiles; } }, { key: "setUploadTypeCaller", value: function setUploadTypeCaller(frame) { frame.uploader.uploader.param('uploadTypeCaller', 'elementor-wp-media-upload'); } }, { key: "getUnfilteredFilesNotEnabledDialog", value: function getUnfilteredFilesNotEnabledDialog(callback) { var onConfirm = function onConfirm() { elementorCommon.ajax.addRequest('enable_unfiltered_files_upload', {}, true); elementorCommon.config.filesUpload.unfilteredFiles = true; callback(); }; return elementor.helpers.getSimpleDialog('e-enable-unfiltered-files-dialog', __('Enable Unfiltered File Uploads', 'elementor'), __('Before you enable unfiltered files upload, note that such files include a security risk. Elementor does run a process to remove possible malicious code, but there is still risk involved when using such files.', 'elementor'), __('Enable', 'elementor'), onConfirm); } }, { key: "getUnfilteredFilesNotEnabledImportTemplateDialog", value: function getUnfilteredFilesNotEnabledImportTemplateDialog(callback) { return elementorCommon.dialogsManager.createWidget('confirm', { id: 'e-enable-unfiltered-files-dialog-import-template', headerMessage: __('Enable Unfiltered File Uploads', 'elementor'), message: __('Before you enable unfiltered files upload, note that such files include a security risk. Elementor does run a process to remove possible malicious code, but there is still risk involved when using such files.', 'elementor') + '

    ' + __('If you do not enable uploading unfiltered files, any SVG or JSON (including lottie) files used in the uploaded template will not be imported.', 'elementor'), position: { my: 'center center', at: 'center center' }, strings: { confirm: __('Enable and Import', 'elementor'), cancel: __('Import Without Enabling', 'elementor') }, onConfirm: function onConfirm() { elementorCommon.ajax.addRequest('enable_unfiltered_files_upload', { success: function success() { // This utility is used in both the admin and the Editor. elementorCommon.config.filesUpload.unfilteredFiles = true; callback(); } }, true); }, onCancel: function onCancel() { return callback(); } }); } }]); return FilesUploadHandler; }(); exports["default"] = FilesUploadHandler; /***/ }), /***/ "../assets/dev/js/utils/events.js": /*!****************************************!*\ !*** ../assets/dev/js/utils/events.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"] = exports.Events = 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 Events = /*#__PURE__*/function () { function Events() { (0, _classCallCheck2.default)(this, Events); } (0, _createClass2.default)(Events, null, [{ key: "dispatch", value: /** * Dispatch an Elementor event. * * Will dispatch both native event & jQuery event (as BC). * By default, `bcEvent` is `null`. * * @param {Object} context - The context that will dispatch the event. * @param {string} event - Event to dispatch. * @param {*} data - Data to pass to the event, default to `null`. * @param {string|null} bcEvent - BC event to dispatch, default to `null`. * * @return {void} */ function dispatch(context, event) { var data = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : null; var bcEvent = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : null; // Make sure to use the native context if it's a jQuery instance. context = context instanceof jQuery ? context[0] : context; // Dispatch the BC event only if exists. if (bcEvent) { context.dispatchEvent(new CustomEvent(bcEvent, { detail: data })); } // jQuery's `.on()` listens also to native custom events, so there is no need // to dispatch also a jQuery event. context.dispatchEvent(new CustomEvent(event, { detail: data })); } }]); return Events; }(); exports.Events = Events; var _default = Events; exports["default"] = _default; /***/ }), /***/ "../core/common/assets/js/utils/environment.js": /*!*****************************************************!*\ !*** ../core/common/assets/js/utils/environment.js ***! \*****************************************************/ /***/ ((__unused_webpack_module, exports) => { "use strict"; Object.defineProperty(exports, "__esModule", ({ value: true })); exports["default"] = void 0; var matchUserAgent = function matchUserAgent(UserAgentStr) { return userAgent.indexOf(UserAgentStr) >= 0; }, userAgent = navigator.userAgent, // Solution influenced by https://stackoverflow.com/questions/9847580/how-to-detect-safari-chrome-ie-firefox-and-opera-browser // Opera 8.0+ isOpera = !!window.opr && !!opr.addons || !!window.opera || matchUserAgent(' OPR/'), // Firefox 1.0+ isFirefox = matchUserAgent('Firefox'), // Safari 3.0+ "[object HTMLElementConstructor]" isSafari = /^((?!chrome|android).)*safari/i.test(userAgent) || /constructor/i.test(window.HTMLElement) || function (p) { return '[object SafariRemoteNotification]' === p.toString(); }(!window.safari || typeof safari !== 'undefined' && safari.pushNotification), // Internet Explorer 6-11 isIE = /Trident|MSIE/.test(userAgent) && ( /* @cc_on!@*/ false || !!document.documentMode), // Edge 20+ isEdge = !isIE && !!window.StyleMedia || matchUserAgent('Edg'), // Google Chrome (Not accurate) isChrome = !!window.chrome && matchUserAgent('Chrome') && !(isEdge || isOpera), // Blink engine isBlink = matchUserAgent('Chrome') && !!window.CSS, // Apple Webkit engine isAppleWebkit = matchUserAgent('AppleWebKit') && !isBlink, environment = { appleWebkit: isAppleWebkit, blink: isBlink, chrome: isChrome, edge: isEdge, firefox: isFirefox, ie: isIE, mac: matchUserAgent('Macintosh'), opera: isOpera, safari: isSafari, webkit: matchUserAgent('AppleWebKit') }; var _default = environment; exports["default"] = _default; /***/ }), /***/ "../core/experiments/assets/js/admin/behaviors/experiments-dependency.js": /*!*******************************************************************************!*\ !*** ../core/experiments/assets/js/admin/behaviors/experiments-dependency.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 _toConsumableArray2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/toConsumableArray */ "../node_modules/@babel/runtime/helpers/toConsumableArray.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 _defineProperty2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/defineProperty */ "../node_modules/@babel/runtime/helpers/defineProperty.js")); var STATE_ACTIVE = 'active'; var STATE_INACTIVE = 'inactive'; var STATE_DEFAULT = 'default'; var ExperimentsDependency = /*#__PURE__*/function () { function ExperimentsDependency(_ref) { var selects = _ref.selects, submit = _ref.submit; (0, _classCallCheck2.default)(this, ExperimentsDependency); (0, _defineProperty2.default)(this, "elements", {}); this.elements = { /** * @type {HTMLSelectElement[]} */ selects: selects, /** * @type {HTMLInputElement} */ submit: submit }; } (0, _createClass2.default)(ExperimentsDependency, [{ key: "bindEvents", value: function bindEvents() { var _this = this; this.elements.selects.forEach(function (select) { select.addEventListener('change', function (e) { return _this.onExperimentStateChange(e); }); }); } }, { key: "onExperimentStateChange", value: function onExperimentStateChange(e) { var experimentId = e.currentTarget.dataset.experimentId, experimentNewState = this.getExperimentActualState(experimentId); switch (experimentNewState) { case STATE_ACTIVE: if (this.shouldShowDependenciesDialog(experimentId)) { this.showDependenciesDialog(experimentId); } break; case STATE_INACTIVE: this.deactivateDependantExperiments(experimentId); break; default: break; } } }, { key: "getExperimentData", value: function getExperimentData(experimentId) { return elementorAdminConfig.experiments[experimentId]; } }, { key: "getExperimentDependencies", value: function getExperimentDependencies(experimentId) { var _this2 = this; return this.getExperimentData(experimentId).dependencies.map(function (dependencyId) { return _this2.getExperimentData(dependencyId); }); } }, { key: "getExperimentSelect", value: function getExperimentSelect(experimentId) { return this.elements.selects.find(function (select) { return select.matches("[data-experiment-id=\"".concat(experimentId, "\"]")); }); } }, { key: "setExperimentState", value: function setExperimentState(experimentId, state) { this.getExperimentSelect(experimentId).value = state; } }, { key: "getExperimentActualState", value: function getExperimentActualState(experimentId) { var state = this.getExperimentSelect(experimentId).value; if (state !== STATE_DEFAULT) { return state; } // Normalize the "default" state to the actual state value. return this.isExperimentActiveByDefault(experimentId) ? STATE_ACTIVE : STATE_INACTIVE; } }, { key: "isExperimentActive", value: function isExperimentActive(experimentId) { return this.getExperimentActualState(experimentId) === STATE_ACTIVE; } }, { key: "isExperimentActiveByDefault", value: function isExperimentActiveByDefault(experimentId) { return this.getExperimentData(experimentId).default === STATE_ACTIVE; } }, { key: "areAllDependenciesActive", value: function areAllDependenciesActive(dependencies) { var _this3 = this; return dependencies.every(function (dependency) { return _this3.isExperimentActive(dependency.name); }); } }, { key: "deactivateDependantExperiments", value: function deactivateDependantExperiments(experimentId) { var _this4 = this; Object.entries(elementorAdminConfig.experiments).forEach(function (_ref2) { var _ref3 = (0, _slicedToArray2.default)(_ref2, 2), id = _ref3[0], experimentData = _ref3[1]; var isDependant = experimentData.dependencies.includes(experimentId); if (isDependant) { _this4.setExperimentState(id, STATE_INACTIVE); } }); } }, { key: "shouldShowDependenciesDialog", value: function shouldShowDependenciesDialog(experimentId) { var dependencies = this.getExperimentDependencies(experimentId); return !this.areAllDependenciesActive(dependencies); } }, { key: "showDependenciesDialog", value: function showDependenciesDialog(experimentId) { var _this5 = this; var experiment = this.getExperimentData(experimentId), dependencies = this.getExperimentDependencies(experimentId); var dependenciesList = this.joinDepenednciesNames(dependencies.map(function (d) { return d.title; }), ', ', ' & '); // Translators: %1$s: Experiment title, %2$s: Experiment dependencies list var message = __('In order to use %1$s, first you need to activate %2$s.', 'elementor').replace('%1$s', "".concat(experiment.title, "")).replace('%2$s', "".concat(dependenciesList, "")); elementorCommon.dialogsManager.createWidget('confirm', { id: 'e-experiments-dependency-dialog', headerMessage: __('First, activate another experiment.', 'elementor'), message: message, position: { my: 'center center', at: 'center center' }, strings: { confirm: __('Activate', 'elementor'), cancel: __('Cancel', 'elementor') }, hide: { onOutsideClick: false, onBackgroundClick: false, onEscKeyPress: false }, onConfirm: function onConfirm() { dependencies.forEach(function (dependency) { _this5.setExperimentState(dependency.name, STATE_ACTIVE); }); _this5.elements.submit.click(); }, onCancel: function onCancel() { _this5.setExperimentState(experimentId, STATE_INACTIVE); } }).show(); } }, { key: "joinDepenednciesNames", value: function joinDepenednciesNames(array, glue) { var finalGlue = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : ''; if ('' === finalGlue) { return array.join(glue); } if (!array.length) { return ''; } if (1 === array.length) { return array[0]; } var clone = (0, _toConsumableArray2.default)(array), lastItem = clone.pop(); return clone.join(glue) + finalGlue + lastItem; } }]); return ExperimentsDependency; }(); exports["default"] = ExperimentsDependency; /***/ }), /***/ "../core/experiments/assets/js/admin/module.js": /*!*****************************************************!*\ !*** ../core/experiments/assets/js/admin/module.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 _get2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/get */ "../node_modules/@babel/runtime/helpers/get.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 _experimentsDependency = _interopRequireDefault(__webpack_require__(/*! ./behaviors/experiments-dependency */ "../core/experiments/assets/js/admin/behaviors/experiments-dependency.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; } } var ExperimentsModule = /*#__PURE__*/function (_elementorModules$Vie) { (0, _inherits2.default)(ExperimentsModule, _elementorModules$Vie); var _super = _createSuper(ExperimentsModule); function ExperimentsModule() { (0, _classCallCheck2.default)(this, ExperimentsModule); return _super.apply(this, arguments); } (0, _createClass2.default)(ExperimentsModule, [{ key: "getDefaultSettings", value: function getDefaultSettings() { return { selectors: { experimentIndicators: '.e-experiment__title__indicator', experimentForm: '#elementor-settings-form', experimentSelects: '.e-experiment__select', experimentsButtons: '.e-experiment__button' } }; } }, { key: "getDefaultElements", value: function getDefaultElements() { var _this$getSettings = this.getSettings(), selectors = _this$getSettings.selectors; return { $experimentIndicators: jQuery(selectors.experimentIndicators), $experimentForm: jQuery(selectors.experimentForm), $experimentSelects: jQuery(selectors.experimentSelects), $experimentsButtons: jQuery(selectors.experimentsButtons) }; } }, { key: "bindEvents", value: function bindEvents() { var _this = this; this.elements.$experimentsButtons.on('click', function (event) { return _this.onExperimentsButtonsClick(event); }); } }, { key: "onExperimentsButtonsClick", value: function onExperimentsButtonsClick(event) { var submitButton = jQuery(event.currentTarget); this.elements.$experimentSelects.val(submitButton.val()); this.elements.$experimentForm.find('#submit').trigger('click'); } }, { key: "addTipsy", value: function addTipsy($element) { $element.tipsy({ gravity: 's', offset: 8, title: function title() { return this.getAttribute('data-tooltip'); } }); } }, { key: "addIndicatorsTooltips", value: function addIndicatorsTooltips() { var _this2 = this; this.elements.$experimentIndicators.each(function (index, experimentIndicator) { return _this2.addTipsy(jQuery(experimentIndicator)); }); } }, { key: "onInit", value: function onInit() { var _this3 = this; (0, _get2.default)((0, _getPrototypeOf2.default)(ExperimentsModule.prototype), "onInit", this).call(this); this.experimentsDependency = new _experimentsDependency.default({ selects: this.elements.$experimentSelects.toArray(), submit: this.elements.$experimentForm.find('#submit').get(0) }); this.experimentsDependency.bindEvents(); if (this.elements.$experimentIndicators.length) { import( /* webpackIgnore: true */"".concat(elementorCommon.config.urls.assets, "lib/tipsy/tipsy.min.js?ver=1.0.0")).then(function () { return _this3.addIndicatorsTooltips(); }); } } }]); return ExperimentsModule; }(elementorModules.ViewModule); exports["default"] = ExperimentsModule; /***/ }), /***/ "../modules/landing-pages/assets/js/admin/landing-pages.js": /*!*****************************************************************!*\ !*** ../modules/landing-pages/assets/js/admin/landing-pages.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 _get2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/get */ "../node_modules/@babel/runtime/helpers/get.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 _menuHandler = _interopRequireDefault(__webpack_require__(/*! elementor-admin/menu-handler */ "../assets/dev/js/admin/menu-handler.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; } } var LandingPagesHandler = /*#__PURE__*/function (_AdminMenuHandler) { (0, _inherits2.default)(LandingPagesHandler, _AdminMenuHandler); var _super = _createSuper(LandingPagesHandler); function LandingPagesHandler() { (0, _classCallCheck2.default)(this, LandingPagesHandler); return _super.apply(this, arguments); } (0, _createClass2.default)(LandingPagesHandler, [{ key: "getDefaultSettings", value: function getDefaultSettings() { var pageName = 'e-landing-page', adminMenuSelectors = { // The escaping is done because jQuery requires it for selectors. landingPagesTablePage: 'a[href="edit.php?post_type=' + pageName + '"]', landingPagesAddNewPage: 'a[href="edit.php?post_type=elementor_library&page=' + pageName + '"]' }; return { selectors: { addButton: '.page-title-action:first', pagesMenuItemAndLink: '#menu-pages, #menu-pages > a', landingPagesMenuItem: "".concat(adminMenuSelectors.landingPagesTablePage, ", ").concat(adminMenuSelectors.landingPagesAddNewPage), templatesMenuItem: '.menu-icon-elementor_library' } }; } }, { key: "getDefaultElements", value: function getDefaultElements() { var selectors = this.getSettings('selectors'), elements = (0, _get2.default)((0, _getPrototypeOf2.default)(LandingPagesHandler.prototype), "getDefaultElements", this).call(this); elements.$landingPagesMenuItem = jQuery(selectors.landingPagesMenuItem); elements.$templatesMenuItem = jQuery(selectors.templatesMenuItem); elements.$pagesMenuItemAndLink = jQuery(selectors.pagesMenuItemAndLink); return elements; } }, { key: "onInit", value: function onInit() { (0, _get2.default)((0, _getPrototypeOf2.default)(LandingPagesHandler.prototype), "onInit", this).call(this); var settings = this.getSettings(), isLandingPagesTablePage = !!window.location.href.includes(settings.paths.landingPagesTablePage), isLandingPagesTrashPage = !!window.location.href.includes(settings.paths.landingPagesTrashPage), isLandingPagesCreateYourFirstPage = !!window.location.href.includes(settings.paths.landingPagesAddNewPage); // If the current page is a Landing Pages Page (the Posts Table page, "Create Your First.." page, or a native // WordPress dashboard page edit screen when using WordPress' Classic Editor). if (isLandingPagesTablePage || isLandingPagesTrashPage || isLandingPagesCreateYourFirstPage || settings.isLandingPageAdminEdit) { // Make sure the active admin top level menu item is 'Templates', and not 'Pages'. this.highlightTopLevelMenuItem(this.elements.$templatesMenuItem, this.elements.$pagesMenuItemAndLink); this.highlightSubMenuItem(this.elements.$landingPagesMenuItem); // Overwrite the 'Add New' button at the top of the page to open in Elementor with the library module open. jQuery(settings.selectors.addButton).attr('href', elementorAdminConfig.urls.addNewLandingPageUrl); } } }]); return LandingPagesHandler; }(_menuHandler.default); exports["default"] = LandingPagesHandler; /***/ }), /***/ "../modules/landing-pages/assets/js/admin/module.js": /*!**********************************************************!*\ !*** ../modules/landing-pages/assets/js/admin/module.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 _landingPages = _interopRequireDefault(__webpack_require__(/*! ./landing-pages */ "../modules/landing-pages/assets/js/admin/landing-pages.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; } } var _default = /*#__PURE__*/function (_elementorModules$Mod) { (0, _inherits2.default)(_default, _elementorModules$Mod); var _super = _createSuper(_default); function _default() { var _this; (0, _classCallCheck2.default)(this, _default); _this = _super.call(this); elementorCommon.elements.$window.on('elementor/admin/init', function () { _this.runHandler(); }); return _this; } (0, _createClass2.default)(_default, [{ key: "runHandler", value: function runHandler() { var _elementorAdmin$confi, _elementorAdmin$confi2; var pageName = 'e-landing-page', paths = { landingPagesTablePage: 'edit.php?post_type=' + pageName, landingPagesAddNewPage: 'edit.php?post_type=elementor_library&page=' + pageName, landingPagesTrashPage: 'edit.php?post_status=trash&post_type=' + pageName }, args = { path: (_elementorAdmin$confi = elementorAdmin.config.landingPages) !== null && _elementorAdmin$confi !== void 0 && _elementorAdmin$confi.landingPagesHasPages ? paths.landingPagesTablePage : paths.landingPagesAddNewPage, isLandingPageAdminEdit: (_elementorAdmin$confi2 = elementorAdmin.config.landingPages) === null || _elementorAdmin$confi2 === void 0 ? void 0 : _elementorAdmin$confi2.isLandingPageAdminEdit, paths: paths }; // This class modifies elements in the WordPress admin that are rendered "wrong" by the WordPress core // and could not be modified in the backend. new _landingPages.default(args); } }]); return _default; }(elementorModules.Module); exports["default"] = _default; /***/ }), /***/ "@wordpress/i18n": /*!**************************!*\ !*** external "wp.i18n" ***! \**************************/ /***/ ((module) => { "use strict"; module.exports = wp.i18n; /***/ }), /***/ "../node_modules/@babel/runtime/helpers/arrayLikeToArray.js": /*!******************************************************************!*\ !*** ../node_modules/@babel/runtime/helpers/arrayLikeToArray.js ***! \******************************************************************/ /***/ ((module) => { 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; } module.exports = _arrayLikeToArray, module.exports.__esModule = true, module.exports["default"] = module.exports; /***/ }), /***/ "../node_modules/@babel/runtime/helpers/arrayWithHoles.js": /*!****************************************************************!*\ !*** ../node_modules/@babel/runtime/helpers/arrayWithHoles.js ***! \****************************************************************/ /***/ ((module) => { function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; } module.exports = _arrayWithHoles, module.exports.__esModule = true, module.exports["default"] = module.exports; /***/ }), /***/ "../node_modules/@babel/runtime/helpers/arrayWithoutHoles.js": /*!*******************************************************************!*\ !*** ../node_modules/@babel/runtime/helpers/arrayWithoutHoles.js ***! \*******************************************************************/ /***/ ((module, __unused_webpack_exports, __webpack_require__) => { var arrayLikeToArray = __webpack_require__(/*! ./arrayLikeToArray.js */ "../node_modules/@babel/runtime/helpers/arrayLikeToArray.js"); function _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return arrayLikeToArray(arr); } module.exports = _arrayWithoutHoles, module.exports.__esModule = true, module.exports["default"] = module.exports; /***/ }), /***/ "../node_modules/@babel/runtime/helpers/assertThisInitialized.js": /*!***********************************************************************!*\ !*** ../node_modules/@babel/runtime/helpers/assertThisInitialized.js ***! \***********************************************************************/ /***/ ((module) => { function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; } module.exports = _assertThisInitialized, module.exports.__esModule = true, module.exports["default"] = module.exports; /***/ }), /***/ "../node_modules/@babel/runtime/helpers/classCallCheck.js": /*!****************************************************************!*\ !*** ../node_modules/@babel/runtime/helpers/classCallCheck.js ***! \****************************************************************/ /***/ ((module) => { function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } module.exports = _classCallCheck, module.exports.__esModule = true, module.exports["default"] = module.exports; /***/ }), /***/ "../node_modules/@babel/runtime/helpers/createClass.js": /*!*************************************************************!*\ !*** ../node_modules/@babel/runtime/helpers/createClass.js ***! \*************************************************************/ /***/ ((module, __unused_webpack_exports, __webpack_require__) => { var toPropertyKey = __webpack_require__(/*! ./toPropertyKey.js */ "../node_modules/@babel/runtime/helpers/toPropertyKey.js"); function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, toPropertyKey(descriptor.key), descriptor); } } function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, "prototype", { writable: false }); return Constructor; } module.exports = _createClass, module.exports.__esModule = true, module.exports["default"] = module.exports; /***/ }), /***/ "../node_modules/@babel/runtime/helpers/defineProperty.js": /*!****************************************************************!*\ !*** ../node_modules/@babel/runtime/helpers/defineProperty.js ***! \****************************************************************/ /***/ ((module, __unused_webpack_exports, __webpack_require__) => { var toPropertyKey = __webpack_require__(/*! ./toPropertyKey.js */ "../node_modules/@babel/runtime/helpers/toPropertyKey.js"); function _defineProperty(obj, key, value) { key = toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; } module.exports = _defineProperty, module.exports.__esModule = true, module.exports["default"] = module.exports; /***/ }), /***/ "../node_modules/@babel/runtime/helpers/get.js": /*!*****************************************************!*\ !*** ../node_modules/@babel/runtime/helpers/get.js ***! \*****************************************************/ /***/ ((module, __unused_webpack_exports, __webpack_require__) => { var superPropBase = __webpack_require__(/*! ./superPropBase.js */ "../node_modules/@babel/runtime/helpers/superPropBase.js"); function _get() { if (typeof Reflect !== "undefined" && Reflect.get) { module.exports = _get = Reflect.get.bind(), module.exports.__esModule = true, module.exports["default"] = module.exports; } else { module.exports = _get = function _get(target, property, receiver) { var base = superPropBase(target, property); if (!base) return; var desc = Object.getOwnPropertyDescriptor(base, property); if (desc.get) { return desc.get.call(arguments.length < 3 ? target : receiver); } return desc.value; }, module.exports.__esModule = true, module.exports["default"] = module.exports; } return _get.apply(this, arguments); } module.exports = _get, module.exports.__esModule = true, module.exports["default"] = module.exports; /***/ }), /***/ "../node_modules/@babel/runtime/helpers/getPrototypeOf.js": /*!****************************************************************!*\ !*** ../node_modules/@babel/runtime/helpers/getPrototypeOf.js ***! \****************************************************************/ /***/ ((module) => { function _getPrototypeOf(o) { module.exports = _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }, module.exports.__esModule = true, module.exports["default"] = module.exports; return _getPrototypeOf(o); } module.exports = _getPrototypeOf, module.exports.__esModule = true, module.exports["default"] = module.exports; /***/ }), /***/ "../node_modules/@babel/runtime/helpers/inherits.js": /*!**********************************************************!*\ !*** ../node_modules/@babel/runtime/helpers/inherits.js ***! \**********************************************************/ /***/ ((module, __unused_webpack_exports, __webpack_require__) => { var setPrototypeOf = __webpack_require__(/*! ./setPrototypeOf.js */ "../node_modules/@babel/runtime/helpers/setPrototypeOf.js"); function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); Object.defineProperty(subClass, "prototype", { writable: false }); if (superClass) setPrototypeOf(subClass, superClass); } module.exports = _inherits, module.exports.__esModule = true, module.exports["default"] = module.exports; /***/ }), /***/ "../node_modules/@babel/runtime/helpers/interopRequireDefault.js": /*!***********************************************************************!*\ !*** ../node_modules/@babel/runtime/helpers/interopRequireDefault.js ***! \***********************************************************************/ /***/ ((module) => { function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; } module.exports = _interopRequireDefault, module.exports.__esModule = true, module.exports["default"] = module.exports; /***/ }), /***/ "../node_modules/@babel/runtime/helpers/iterableToArray.js": /*!*****************************************************************!*\ !*** ../node_modules/@babel/runtime/helpers/iterableToArray.js ***! \*****************************************************************/ /***/ ((module) => { function _iterableToArray(iter) { if (typeof Symbol !== "undefined" && iter[Symbol.iterator] != null || iter["@@iterator"] != null) return Array.from(iter); } module.exports = _iterableToArray, module.exports.__esModule = true, module.exports["default"] = module.exports; /***/ }), /***/ "../node_modules/@babel/runtime/helpers/iterableToArrayLimit.js": /*!**********************************************************************!*\ !*** ../node_modules/@babel/runtime/helpers/iterableToArrayLimit.js ***! \**********************************************************************/ /***/ ((module) => { function _iterableToArrayLimit(arr, i) { var _i = null == arr ? null : "undefined" != typeof Symbol && arr[Symbol.iterator] || arr["@@iterator"]; if (null != _i) { var _s, _e, _x, _r, _arr = [], _n = !0, _d = !1; try { if (_x = (_i = _i.call(arr)).next, 0 === i) { if (Object(_i) !== _i) return; _n = !1; } else for (; !(_n = (_s = _x.call(_i)).done) && (_arr.push(_s.value), _arr.length !== i); _n = !0) { ; } } catch (err) { _d = !0, _e = err; } finally { try { if (!_n && null != _i["return"] && (_r = _i["return"](), Object(_r) !== _r)) return; } finally { if (_d) throw _e; } } return _arr; } } module.exports = _iterableToArrayLimit, module.exports.__esModule = true, module.exports["default"] = module.exports; /***/ }), /***/ "../node_modules/@babel/runtime/helpers/nonIterableRest.js": /*!*****************************************************************!*\ !*** ../node_modules/@babel/runtime/helpers/nonIterableRest.js ***! \*****************************************************************/ /***/ ((module) => { function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } module.exports = _nonIterableRest, module.exports.__esModule = true, module.exports["default"] = module.exports; /***/ }), /***/ "../node_modules/@babel/runtime/helpers/nonIterableSpread.js": /*!*******************************************************************!*\ !*** ../node_modules/@babel/runtime/helpers/nonIterableSpread.js ***! \*******************************************************************/ /***/ ((module) => { function _nonIterableSpread() { throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } module.exports = _nonIterableSpread, module.exports.__esModule = true, module.exports["default"] = module.exports; /***/ }), /***/ "../node_modules/@babel/runtime/helpers/possibleConstructorReturn.js": /*!***************************************************************************!*\ !*** ../node_modules/@babel/runtime/helpers/possibleConstructorReturn.js ***! \***************************************************************************/ /***/ ((module, __unused_webpack_exports, __webpack_require__) => { var _typeof = (__webpack_require__(/*! ./typeof.js */ "../node_modules/@babel/runtime/helpers/typeof.js")["default"]); var assertThisInitialized = __webpack_require__(/*! ./assertThisInitialized.js */ "../node_modules/@babel/runtime/helpers/assertThisInitialized.js"); function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } else if (call !== void 0) { throw new TypeError("Derived constructors may only return object or undefined"); } return assertThisInitialized(self); } module.exports = _possibleConstructorReturn, module.exports.__esModule = true, module.exports["default"] = module.exports; /***/ }), /***/ "../node_modules/@babel/runtime/helpers/setPrototypeOf.js": /*!****************************************************************!*\ !*** ../node_modules/@babel/runtime/helpers/setPrototypeOf.js ***! \****************************************************************/ /***/ ((module) => { function _setPrototypeOf(o, p) { module.exports = _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }, module.exports.__esModule = true, module.exports["default"] = module.exports; return _setPrototypeOf(o, p); } module.exports = _setPrototypeOf, module.exports.__esModule = true, module.exports["default"] = module.exports; /***/ }), /***/ "../node_modules/@babel/runtime/helpers/slicedToArray.js": /*!***************************************************************!*\ !*** ../node_modules/@babel/runtime/helpers/slicedToArray.js ***! \***************************************************************/ /***/ ((module, __unused_webpack_exports, __webpack_require__) => { var arrayWithHoles = __webpack_require__(/*! ./arrayWithHoles.js */ "../node_modules/@babel/runtime/helpers/arrayWithHoles.js"); var iterableToArrayLimit = __webpack_require__(/*! ./iterableToArrayLimit.js */ "../node_modules/@babel/runtime/helpers/iterableToArrayLimit.js"); var unsupportedIterableToArray = __webpack_require__(/*! ./unsupportedIterableToArray.js */ "../node_modules/@babel/runtime/helpers/unsupportedIterableToArray.js"); var nonIterableRest = __webpack_require__(/*! ./nonIterableRest.js */ "../node_modules/@babel/runtime/helpers/nonIterableRest.js"); function _slicedToArray(arr, i) { return arrayWithHoles(arr) || iterableToArrayLimit(arr, i) || unsupportedIterableToArray(arr, i) || nonIterableRest(); } module.exports = _slicedToArray, module.exports.__esModule = true, module.exports["default"] = module.exports; /***/ }), /***/ "../node_modules/@babel/runtime/helpers/superPropBase.js": /*!***************************************************************!*\ !*** ../node_modules/@babel/runtime/helpers/superPropBase.js ***! \***************************************************************/ /***/ ((module, __unused_webpack_exports, __webpack_require__) => { var getPrototypeOf = __webpack_require__(/*! ./getPrototypeOf.js */ "../node_modules/@babel/runtime/helpers/getPrototypeOf.js"); function _superPropBase(object, property) { while (!Object.prototype.hasOwnProperty.call(object, property)) { object = getPrototypeOf(object); if (object === null) break; } return object; } module.exports = _superPropBase, module.exports.__esModule = true, module.exports["default"] = module.exports; /***/ }), /***/ "../node_modules/@babel/runtime/helpers/toConsumableArray.js": /*!*******************************************************************!*\ !*** ../node_modules/@babel/runtime/helpers/toConsumableArray.js ***! \*******************************************************************/ /***/ ((module, __unused_webpack_exports, __webpack_require__) => { var arrayWithoutHoles = __webpack_require__(/*! ./arrayWithoutHoles.js */ "../node_modules/@babel/runtime/helpers/arrayWithoutHoles.js"); var iterableToArray = __webpack_require__(/*! ./iterableToArray.js */ "../node_modules/@babel/runtime/helpers/iterableToArray.js"); var unsupportedIterableToArray = __webpack_require__(/*! ./unsupportedIterableToArray.js */ "../node_modules/@babel/runtime/helpers/unsupportedIterableToArray.js"); var nonIterableSpread = __webpack_require__(/*! ./nonIterableSpread.js */ "../node_modules/@babel/runtime/helpers/nonIterableSpread.js"); function _toConsumableArray(arr) { return arrayWithoutHoles(arr) || iterableToArray(arr) || unsupportedIterableToArray(arr) || nonIterableSpread(); } module.exports = _toConsumableArray, module.exports.__esModule = true, module.exports["default"] = module.exports; /***/ }), /***/ "../node_modules/@babel/runtime/helpers/toPrimitive.js": /*!*************************************************************!*\ !*** ../node_modules/@babel/runtime/helpers/toPrimitive.js ***! \*************************************************************/ /***/ ((module, __unused_webpack_exports, __webpack_require__) => { var _typeof = (__webpack_require__(/*! ./typeof.js */ "../node_modules/@babel/runtime/helpers/typeof.js")["default"]); function _toPrimitive(input, hint) { if (_typeof(input) !== "object" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || "default"); if (_typeof(res) !== "object") return res; throw new TypeError("@@toPrimitive must return a primitive value."); } return (hint === "string" ? String : Number)(input); } module.exports = _toPrimitive, module.exports.__esModule = true, module.exports["default"] = module.exports; /***/ }), /***/ "../node_modules/@babel/runtime/helpers/toPropertyKey.js": /*!***************************************************************!*\ !*** ../node_modules/@babel/runtime/helpers/toPropertyKey.js ***! \***************************************************************/ /***/ ((module, __unused_webpack_exports, __webpack_require__) => { var _typeof = (__webpack_require__(/*! ./typeof.js */ "../node_modules/@babel/runtime/helpers/typeof.js")["default"]); var toPrimitive = __webpack_require__(/*! ./toPrimitive.js */ "../node_modules/@babel/runtime/helpers/toPrimitive.js"); function _toPropertyKey(arg) { var key = toPrimitive(arg, "string"); return _typeof(key) === "symbol" ? key : String(key); } module.exports = _toPropertyKey, module.exports.__esModule = true, module.exports["default"] = module.exports; /***/ }), /***/ "../node_modules/@babel/runtime/helpers/typeof.js": /*!********************************************************!*\ !*** ../node_modules/@babel/runtime/helpers/typeof.js ***! \********************************************************/ /***/ ((module) => { function _typeof(obj) { "@babel/helpers - typeof"; return (module.exports = _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && "function" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }, module.exports.__esModule = true, module.exports["default"] = module.exports), _typeof(obj); } module.exports = _typeof, module.exports.__esModule = true, module.exports["default"] = module.exports; /***/ }), /***/ "../node_modules/@babel/runtime/helpers/unsupportedIterableToArray.js": /*!****************************************************************************!*\ !*** ../node_modules/@babel/runtime/helpers/unsupportedIterableToArray.js ***! \****************************************************************************/ /***/ ((module, __unused_webpack_exports, __webpack_require__) => { var arrayLikeToArray = __webpack_require__(/*! ./arrayLikeToArray.js */ "../node_modules/@babel/runtime/helpers/arrayLikeToArray.js"); 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); } module.exports = _unsupportedIterableToArray, module.exports.__esModule = true, module.exports["default"] = module.exports; /***/ }) /******/ }); /************************************************************************/ /******/ // The module cache /******/ var __webpack_module_cache__ = {}; /******/ /******/ // The require function /******/ function __webpack_require__(moduleId) { /******/ // Check if module is in cache /******/ var cachedModule = __webpack_module_cache__[moduleId]; /******/ if (cachedModule !== undefined) { /******/ return cachedModule.exports; /******/ } /******/ // Create a new module (and put it into the cache) /******/ var module = __webpack_module_cache__[moduleId] = { /******/ // no module.id needed /******/ // no module.loaded needed /******/ exports: {} /******/ }; /******/ /******/ // Execute the module function /******/ __webpack_modules__[moduleId](module, module.exports, __webpack_require__); /******/ /******/ // Return the exports of the module /******/ return module.exports; /******/ } /******/ /************************************************************************/ var __webpack_exports__ = {}; // This entry need to be wrapped in an IIFE because it need to be in strict mode. (() => { "use strict"; /*!***************************************!*\ !*** ../assets/dev/js/admin/admin.js ***! \***************************************/ /* provided dependency */ var __ = __webpack_require__(/*! @wordpress/i18n */ "@wordpress/i18n")["__"]; var _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ "../node_modules/@babel/runtime/helpers/interopRequireDefault.js"); var _slicedToArray2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/slicedToArray */ "../node_modules/@babel/runtime/helpers/slicedToArray.js")); var _module = _interopRequireDefault(__webpack_require__(/*! elementor/modules/landing-pages/assets/js/admin/module */ "../modules/landing-pages/assets/js/admin/module.js")); var _module2 = _interopRequireDefault(__webpack_require__(/*! elementor/core/experiments/assets/js/admin/module */ "../core/experiments/assets/js/admin/module.js")); var _environment = _interopRequireDefault(__webpack_require__(/*! ../../../../core/common/assets/js/utils/environment */ "../core/common/assets/js/utils/environment.js")); var _events = _interopRequireDefault(__webpack_require__(/*! elementor-utils/events */ "../assets/dev/js/utils/events.js")); var _filesUploadHandler = _interopRequireDefault(__webpack_require__(/*! ../editor/utils/files-upload-handler */ "../assets/dev/js/editor/utils/files-upload-handler.js")); var _templateControls = _interopRequireDefault(__webpack_require__(/*! ./new-template/template-controls.js */ "../assets/dev/js/admin/new-template/template-controls.js")); (function ($) { var ElementorAdmin = elementorModules.ViewModule.extend({ maintenanceMode: null, config: elementorAdminConfig, getDefaultElements: function getDefaultElements() { var elements = { $switchMode: $('#elementor-switch-mode'), $goToEditLink: $('#elementor-go-to-edit-page-link'), $switchModeInput: $('#elementor-switch-mode-input'), $switchModeButton: $('#elementor-switch-mode-button'), $elementorLoader: $('.elementor-loader'), $builderEditor: $('#elementor-editor'), $importButton: $('#elementor-import-template-trigger'), $importNowButton: $('#e-import-template-action'), $importArea: $('#elementor-import-template-area'), $importForm: $('#elementor-import-template-form'), $importFormFileInput: $('#elementor-import-template-form input[type="file"]'), $settingsForm: $('#elementor-settings-form'), $settingsTabsWrapper: $('#elementor-settings-tabs-wrapper'), $menuGetHelpLink: $('a[href="admin.php?page=go_knowledge_base_site"]'), $menuGoProLink: $('a[href="admin.php?page=go_elementor_pro"]'), $reMigrateGlobalsButton: $('.elementor-re-migrate-globals-button') }; elements.$settingsFormPages = elements.$settingsForm.find('.elementor-settings-form-page'); elements.$activeSettingsPage = elements.$settingsFormPages.filter('.elementor-active'); elements.$settingsTabs = elements.$settingsTabsWrapper.children(); elements.$activeSettingsTab = elements.$settingsTabs.filter('.nav-tab-active'); return elements; }, toggleStatus: function toggleStatus() { var isElementorMode = this.isElementorMode(); elementorCommon.elements.$body.toggleClass('elementor-editor-active', isElementorMode).toggleClass('elementor-editor-inactive', !isElementorMode); }, bindEvents: function bindEvents() { var self = this; self.elements.$switchModeButton.on('click', function (event) { event.preventDefault(); if (self.isElementorMode()) { elementorCommon.dialogsManager.createWidget('confirm', { message: __('Please note that you are switching to WordPress default editor. Your current layout, design and content might break.', 'elementor'), headerMessage: __('Back to WordPress Editor', 'elementor'), strings: { confirm: __('Continue', 'elementor'), cancel: __('Cancel', 'elementor') }, defaultOption: 'confirm', onConfirm: function onConfirm() { self.elements.$switchModeInput.val(''); self.toggleStatus(); } }).show(); } else { self.elements.$switchModeInput.val(true); var $wpTitle = $('#title'); if (!$wpTitle.val()) { $wpTitle.val('Elementor #' + $('#post_ID').val()); } if (wp.autosave) { wp.autosave.server.triggerSave(); } self.animateLoader(); $(document).on('heartbeat-tick.autosave', function () { elementorCommon.elements.$window.off('beforeunload.edit-post'); location.href = self.elements.$goToEditLink.attr('href'); }); self.toggleStatus(); } }); self.elements.$goToEditLink.on('click', function () { self.animateLoader(); }); $('.e-notice--dismissible').on('click', '.e-notice__dismiss, .e-notice-dismiss', function (event) { event.preventDefault(); var $wrapperElm = $(this).closest('.e-notice--dismissible'); $.post(ajaxurl, { action: 'elementor_set_admin_notice_viewed', notice_id: $wrapperElm.data('notice_id') }); $wrapperElm.fadeTo(100, 0, function () { $wrapperElm.slideUp(100, function () { $wrapperElm.remove(); }); }); }); $('#elementor-clear-cache-button').on('click', function (event) { event.preventDefault(); var $thisButton = $(this); $thisButton.removeClass('success').addClass('loading'); $.post(ajaxurl, { action: 'elementor_clear_cache', _nonce: $thisButton.data('nonce') }).done(function () { $thisButton.removeClass('loading').addClass('success'); }); }); $('#elementor-library-sync-button').on('click', function (event) { event.preventDefault(); var $thisButton = $(this); $thisButton.removeClass('success').addClass('loading'); $.post(ajaxurl, { action: 'elementor_reset_library', _nonce: $thisButton.data('nonce') }).done(function () { $thisButton.removeClass('loading').addClass('success'); }); }); $('#elementor-recreate-kit-button').on('click', function (event) { event.preventDefault(); var $thisButton = $(this); $thisButton.removeClass('success error').addClass('loading').next('.e-recreate-kit-error-message').remove(); $.post(ajaxurl, { action: 'elementor_recreate_kit', _nonce: $thisButton.data('nonce') }).done(function () { $thisButton.removeClass('loading').addClass('success'); }).fail(function (_ref) { var _responseJSON$data; var responseJSON = _ref.responseJSON; $thisButton.removeClass('loading').addClass('error'); if ((_responseJSON$data = responseJSON.data) !== null && _responseJSON$data !== void 0 && _responseJSON$data.message) { $thisButton.after("
    ".concat(responseJSON.data.message, "
    ")); } }); }); $('#elementor-replace-url-button').on('click', function (event) { event.preventDefault(); var $this = $(this), $tr = $this.parents('tr'), $from = $tr.find('[name="from"]'), $to = $tr.find('[name="to"]'); $this.removeClass('success').addClass('loading'); $.post(ajaxurl, { action: 'elementor_replace_url', from: $from.val(), to: $to.val(), _nonce: $this.data('nonce') }).done(function (response) { $this.removeClass('loading'); if (response.success) { $this.addClass('success'); } elementorCommon.dialogsManager.createWidget('alert', { message: response.data }).show(); }); }); $('#elementor_upgrade_fa_button').on('click', function (event) { event.preventDefault(); var $updateButton = $(this); $updateButton.addClass('loading'); elementorCommon.dialogsManager.createWidget('confirm', { id: 'confirm_fa_migration_admin_modal', message: __('I understand that by upgrading to Font Awesome 5,', 'elementor') + '
    ' + __('I acknowledge that some changes may affect my website and that this action cannot be undone.', 'elementor'), headerMessage: __('Font Awesome 5 Migration', 'elementor'), strings: { confirm: __('Continue', 'elementor'), cancel: __('Cancel', 'elementor') }, defaultOption: 'confirm', onConfirm: function onConfirm() { $updateButton.removeClass('error').addClass('loading'); var _$updateButton$data = $updateButton.data(), _nonce = _$updateButton$data._nonce, action = _$updateButton$data.action, redirectUrl = _$updateButton$data.redirectUrl; $.post(ajaxurl, { action: action, _nonce: _nonce }).done(function (response) { $updateButton.removeClass('loading').addClass('success'); var messageElement = document.createElement('p'); messageElement.appendChild(document.createTextNode(response.data.message)); $('#elementor_upgrade_fa_button').parent().append(messageElement); if (redirectUrl) { location.href = decodeURIComponent(redirectUrl); return; } history.go(-1); }).fail(function () { $updateButton.removeClass('loading').addClass('error'); }); }, onCancel: function onCancel() { $updateButton.removeClass('loading').addClass('error'); } }).show(); }); self.elements.$settingsTabs.on({ click: function click(event) { event.preventDefault(); event.currentTarget.focus(); // Safari does not focus the tab automatically }, focus: function focus() { // Using focus event to enable navigation by tab key var hrefWithoutHash = location.href.replace(/#.*/, ''); history.pushState({}, '', hrefWithoutHash + this.hash); self.goToSettingsTabFromHash(); } }); $('select.elementor-rollback-select').on('change', function () { var $this = $(this), $rollbackButton = $this.next('.elementor-rollback-button'), placeholderText = $rollbackButton.data('placeholder-text'), placeholderUrl = $rollbackButton.data('placeholder-url'); $rollbackButton.html(placeholderText.replace('{VERSION}', $this.val())); $rollbackButton.attr('href', placeholderUrl.replace('VERSION', $this.val())); }).trigger('change'); $('.elementor-rollback-button').on('click', function (event) { event.preventDefault(); var $this = $(this); elementorCommon.dialogsManager.createWidget('confirm', { headerMessage: __('Rollback to Previous Version', 'elementor'), message: __('Are you sure you want to reinstall previous version?', 'elementor'), strings: { confirm: __('Continue', 'elementor'), cancel: __('Cancel', 'elementor') }, onConfirm: function onConfirm() { $this.addClass('loading'); location.href = $this.attr('href'); } }).show(); }); self.elements.$reMigrateGlobalsButton.on('click', function (event) { event.preventDefault(); var $this = $(event.currentTarget); elementorCommon.dialogsManager.createWidget('confirm', { headerMessage: __('Migrate to v3.0', 'elementor'), message: __('Please note that this process will revert all changes made to Global Colors and Fonts since upgrading to v3.x.', 'elementor'), strings: { confirm: __('Continue', 'elementor'), cancel: __('Cancel', 'elementor') }, onConfirm: function onConfirm() { $this.removeClass('success').addClass('loading'); elementorCommon.ajax.addRequest('re_migrate_globals', { success: function success() { return $this.removeClass('loading').addClass('success'); } }); } }).show(); }); $('.elementor_css_print_method select').on('change', function () { var $descriptions = $('.elementor-css-print-method-description'); $descriptions.hide(); $descriptions.filter('[data-value="' + $(this).val() + '"]').show(); }).trigger('change'); $('.elementor_google_font select').on('change', function () { $('.elementor_font_display').toggle('1' === $(this).val()); }).trigger('change'); }, onInit: function onInit() { elementorModules.ViewModule.prototype.onInit.apply(this, arguments); this.initTemplatesImport(); this.initMaintenanceMode(); this.goToSettingsTabFromHash(); this.openLinksInNewTab(); this.addUserAgentClasses(); this.roleManager.init(); if (elementorCommon.config.experimentalFeatures['landing-pages']) { new _module.default(); } this.templateControls = new _templateControls.default(); new _module2.default(); }, addUserAgentClasses: function addUserAgentClasses() { var body = document.querySelector('body'); Object.entries(_environment.default).forEach(function (_ref2) { var _ref3 = (0, _slicedToArray2.default)(_ref2, 2), key = _ref3[0], value = _ref3[1]; if (!value) { return; } body.classList.add('e--ua-' + key); }); }, /** * Open Links in New Tab * * Adds a `target="_blank"` attribute to the Admin Dashboard menu items specified in the `elements` array, * if the elements are found in the DOM. The items in the `elements` array should be jQuery instances. * * @since 3.6.0 */ openLinksInNewTab: function openLinksInNewTab() { var elements = [this.elements.$menuGetHelpLink, this.elements.$menuGoProLink]; elements.forEach(function ($element) { // Only add the attribute if the element is found. if ($element.length) { $element.attr('target', '_blank'); } }); }, initTemplatesImport: function initTemplatesImport() { if (!elementorCommon.elements.$body.hasClass('post-type-elementor_library')) { return; } var self = this, $importForm = self.elements.$importForm, $importButton = self.elements.$importButton, $importArea = self.elements.$importArea, $importNowButton = self.elements.$importNowButton, $importFormFileInput = self.elements.$importFormFileInput; self.elements.$formAnchor = $('.wp-header-end'); $('#wpbody-content').find('.page-title-action').last().after($importButton); self.elements.$formAnchor.after($importArea); $importButton.on('click', function () { $('#elementor-import-template-area').toggle(); }); $importForm.on('submit', function (event) { $importNowButton[0].disabled = true; $importNowButton[0].value = __('Importing...', 'elementor'); if ($importFormFileInput[0].files.length && !elementorCommon.config.filesUpload.unfilteredFiles) { event.preventDefault(); var enableUnfilteredFilesModal = _filesUploadHandler.default.getUnfilteredFilesNotEnabledImportTemplateDialog(function () { $importForm.trigger('submit'); }); enableUnfilteredFilesModal.show(); } }); }, initMaintenanceMode: function initMaintenanceMode() { var MaintenanceMode = __webpack_require__(/*! elementor-admin/maintenance-mode */ "../assets/dev/js/admin/maintenance-mode.js"); this.maintenanceMode = new MaintenanceMode(); }, isElementorMode: function isElementorMode() { return !!this.elements.$switchModeInput.val(); }, animateLoader: function animateLoader() { this.elements.$goToEditLink.addClass('elementor-animate'); }, goToSettingsTabFromHash: function goToSettingsTabFromHash() { var hash = location.hash.slice(1); if (hash) { this.goToSettingsTab(hash); } }, goToSettingsTab: function goToSettingsTab(tabName) { var $pages = this.elements.$settingsFormPages; if (!$pages.length) { return; } var $activePage = $pages.filter('#' + tabName); this.elements.$activeSettingsPage.removeClass('elementor-active'); this.elements.$activeSettingsTab.removeClass('nav-tab-active'); var $activeTab = this.elements.$settingsTabs.filter('#elementor-settings-' + tabName); $activePage.addClass('elementor-active'); $activeTab.addClass('nav-tab-active'); this.elements.$settingsForm.attr('action', 'options.php#' + tabName); this.elements.$activeSettingsPage = $activePage; this.elements.$activeSettingsTab = $activeTab; }, translate: function translate(stringKey, templateArgs) { return elementorCommon.translate(stringKey, null, templateArgs, this.config.i18n); }, roleManager: { selectors: { body: 'elementor-role-manager', row: '.elementor-role-row', label: '.elementor-role-label', excludedIndicator: '.elementor-role-excluded-indicator', excludedField: 'input[name="elementor_exclude_user_roles[]"]', controlsContainer: '.elementor-role-controls', toggleHandle: '.elementor-role-toggle', arrowUp: 'dashicons-arrow-up', arrowDown: 'dashicons-arrow-down' }, toggle: function toggle($trigger) { var self = this, $row = $trigger.closest(self.selectors.row), $toggleHandleIcon = $row.find(self.selectors.toggleHandle).find('.dashicons'), $controls = $row.find(self.selectors.controlsContainer); $controls.toggleClass('hidden'); if ($controls.hasClass('hidden')) { $toggleHandleIcon.removeClass(self.selectors.arrowUp).addClass(self.selectors.arrowDown); } else { $toggleHandleIcon.removeClass(self.selectors.arrowDown).addClass(self.selectors.arrowUp); } self.updateLabel($row); }, updateLabel: function updateLabel($row) { var self = this, $indicator = $row.find(self.selectors.excludedIndicator), excluded = $row.find(self.selectors.excludedField).is(':checked'); if (excluded) { $indicator.html($indicator.data('excluded-label')); } else { $indicator.html(''); } self.setAdvancedState($row, excluded); }, setAdvancedState: function setAdvancedState($row, state) { var self = this, $controls = $row.find('input[type="checkbox"]').not(self.selectors.excludedField); $controls.each(function (index, input) { $(input).prop('disabled', state); }); }, bind: function bind() { var self = this; $(document).on('click', self.selectors.label + ',' + self.selectors.toggleHandle, function (event) { event.stopPropagation(); event.preventDefault(); self.toggle($(this)); }).on('change', self.selectors.excludedField, function () { self.updateLabel($(this).closest(self.selectors.row)); }); }, init: function init() { var self = this; if (!$('body[class*="' + self.selectors.body + '"]').length) { return; } self.bind(); $(self.selectors.row).each(function (index, row) { self.updateLabel($(row)); }); } } }); $(function () { window.elementorAdmin = new ElementorAdmin(); _events.default.dispatch(elementorCommon.elements.$window, 'elementor/admin/init'); }); })(jQuery); })(); /******/ })() ; //# sourceMappingURL=admin.js.map “A Ten Legjobb Magyar On The Web Kaszinó 2025 Játssz És Nyerj – Shredded Wolves

    “A Ten Legjobb Magyar On The Web Kaszinó 2025 Játssz És Nyerj

    Ismerd Meg A Magyar Nyelvű, Megbízható Online Kaszinókat! 2025″

    Content

    Mindazonáltal, amikor kaszinót választasz, mindig ügyelj arra, hogy érvényes engedéllyel rendelkezzen, biztosítva a teljes mértékű törvényes működést. Ez kiváló útmutató a new többi felhasználó számára, segíti a választást a széles kínálatból. Emellett a kaszinójátékok fejlesztői és gyártói számára is fontos tapasztalat, hogy mely játékok erősek, miben kiválók, és mely területeken lehet még fejleszteni. Az élő online kaszinókban a new játékos nem csak részt vesz the játékban, hanem a kamera segítségével” “láthatja és hallhatja az élő krupiét is usually. Az úgynevezett élő chat alkalmazás segítségével pedig aktívan “beszélgethetsz” vele az on-line játék során. Az élő online kaszinók és a krupiék a világ különböző pontjain találhatók, kifejezetten erre a célra kialakított speciális stúdiókban.

    Ezen kívül, a befizetési bónusz is nagyszerű lehetőségeket kínál az újonnan regisztrált kaszinórajongók számára, sőt, szerencsés esetben akár befizetés nélküli bónusz is elérhető. Ebben az országban különösen nagy hagyománya van a kaparós sorsjegyeknek. Méltán érdemelte ki ez a new játéktípus közkedvelt státuszát, ugyanis nem csak az online kaszinókban, hanem a nemzeti lottózókban is elérhetők. A kaparós sorsjegyek megfizethetők, néhány perc in short alatt lejátszhatók és kizárólag szerencsealapon működnek. Ezért biztos lehetsz abban, hogy az általunk ajánlott felületek biztonságosak, megbízhatók és legálisan üzemelnek. Az alábbi táblázatban meg is tekintheted some sort of legjobban teljesítő on the internet kaszinókat az egyes kategóriák szerint https://verdemente.com/.

    Kizárólag A Legjobb Magyar Kaszinó Oldalakat Találod Meg, Mindenféle Büdzsé Számára!

    Az operátor a kifizetés jóváhagyása előtt ellenőrzi személyazonosságodat és zidovudine, hogy a bónusz megforgatási követelményeit teljesítetted-e. Az élő játékok egyre nagyobb rajongótábort gyűjtenek maguk köré, mely világviszonylatban is definitely látványos. Ma már az online kaszinók többsége magyar nyelven is elérhető, ami azért is fontos,” “mert az ember mégiscsak az anyanyelvén ért a legjobban. A bónuszok kapcsán mindig olvasd el az apróbetűs részt, t persze elsőként ismerd meg az adott bónusz fajtákat, annak érdekében, hogy some sort of számodra legjobb casinos bónusz legyen elérhető. Összegezve, a megfelelő kaszinó élmény elemei az innovatív dizájn, az egyedi témák, az új technológiai megoldások, a folyamatosan bővülő játékválaszték, a dinamikus bónuszok és még sok más. Ugyanakkor nem maradhat ki a felsorolásból a kifogástalanul működő élő osztós részleg sem.

    Az online kaszinók ezen típusánál általában szükséges letölteni a new kiválasztott játék szoftverét a kaszinó weboldaláról, majd telepíteni azt a számítógépünkre. A chat ablak segítségével gyorsan kapcsolatba léphetünk az online kaszinó egyik munkatársával. Fontos megjegyezni, hogy bizonyos technikai problémák esetén előfordulhatnak késések. Ilyenkor érdemes más kommunikációs módot kipróbálni az illetékesek eléréséhez. Az ügyfélszolgálat más lehetséges formái közé tartozik az online kapcsolatfelvételi űrlap, az email és/vagy a telefonos elérhetőség.

    Egyéb Kaszinó Bónuszok

    A progresszív jackpotok minden egyes játékos tétjéből növekednek, amíg valaki meg nem nyeri. Ezek hatalmas nyereményeket kínálhatnak, amelyek gyakran elérik a milliókat. A népszerű kártyajáték fejlesztői között vehicle az Evolution és a BetGames. television set. Yggdrassil – Mindig a technológiai fejlesztések élén jár olyan játékokkal, mint a new Calavera Crush vagy a Valley from the Gods.

    • A legnagyobb szolgáltatók közé tartozik az Evolution és a Pragmatic Play, amelyek valódi osztókkal kínálják a játékokat.
    • Bár ez nem gyakran fordul elő az online kaszinókban, érdemes tudni, mit kell tennie, ha úgy gondolja, hogy barátja vagy családtagja kényszeres szerencsejátékossá vált.
    • A PayPal azonnali finanszírozást kínál, így” “a játékosok gyorsan beszállhatnak a játékba anélkül, hogy napokat vagy heteket kellene várniuk a kifizetések feldolgozására.
    • Ha az adott oldal rendelkezik hivatalos működési engedéllyel, te will be biztos lehetsz benne, hogy megbízható és biztonságos helyenjátszol.
    • Pályafutásom során a kaszinók területén szereztem szakértelmet, head az offline, thoughts az online kaszinók területén.
    • A megbízható on the web kaszinók kiemelt figyelmet fordítanak ügyfeleik biztonságára.

    Ezek a platformok megbízható, ellenőrzött működést kínálnak, de a bónuszaik és a játékkínálatuk gyakran kisebb, mint nemzetközi társaiké. A kriptovaluták az egyik legmodernebb és legjobb fizetési módnak számítanak 2025-ben az on the web kaszinók világában. Bár a helyi magyar online kaszinók nem mindig támogatják aktívan” “ezt a lehetőséget, some sort of nemzetközi kaszinók számos előnyt kínálnak some sort of kriptovalutákkal történő fizetés során. Olyan kaszinó online is akad, ahol a kriptovalutában való befizetésért külön üdvözlő bónusz jár. Az online szerencsejátékhoz való hozzáférés Magyarországon egyszerűbb, mint valaha. Nem kell még csak egy asztali PC előtt search engine optimization ülni, mert játszhatsz a mobileszközödről is usually, akár Budapesten, akár Győrben tartózkodsz.

    Az On-line Magyar Casino Oldalak Típusai

    Ez some sort of online kaszinó pedig kifejezetten a magyar játékosoknak szól, már 2018 óta vár” “mindenkit. Az egyértelmű előnye, hogy egy teljesen megbízható hely, csak érdemes figyelembe venni, hogy a játékkínálatuk kisebb, mint some sort of konkurenseiké. A Inexperto Casino egy új, de már elég jól ismert on the internet kaszinó, ami almost all már magyar játékosok számára is elérhetővé vált. Ebben some sort of kaszinóban számos nagyszerű bónusz és játékok széles választáka vár minden játékost! Kaszinónk 2023-ben alakult, para már bizonyított a játékosok körében, és biztosíthatunk arról, hogy hosszú távra tervezünk! A következőkben bemutatjuk, hogy milyen előnyei vannak a Obsceno Casino használatának.

    • Először is meg kell különböztetnünk letölthető kaszinójátékok és nem letölthető kaszinójátékok.
    • Mivel szinte az összes szerencsejáték domén elfogadja, így rengetegen így töltik skavanker egyenlegüket.
    • Magyarországon az online szerencsejátékot szigorú törvényi szabályozás védi, amelynek alapját a „Szerencsejátékról szóló törvény” képezi.
    • Ennek legjobb példái arizona élő osztós asztali játékok, ahol első kézből élheted át az izgalmakat, otthonod kényelméből.

    Ezek túlnyomó része természetesen külföldi üzemeltetés alatt álló kaszinó oldal, amik legálisan működhetnek és fogadhatják magyar játékosaikat. A felsorolt csatornák megléte önmagában azonban még nem szavatolja egy ügyfélszolgálat hatékonyságát. Éppen ezért szakértői csapatunk minden kaszinó esetében teszteli az ügyfélszolgálat működését. A kiváló ügyfélszolgálat barátságos és segítőkész kollégákkal rendelkezik, emellett a játékosok részéről is pozitív értékeléseket kap. Vannak olyan kaszinók, amelyek szakmai elismerést is definitely kapnak az ügyfélszolgálatuk minőségi munkájáért. A hatékony, naprakész ügyfélszolgálat a kifogástalan játékélmény egyik alapkövetelménye.

    Hogyan Tudok Biztonságos Online Kaszinót Találni?

    A felülvizsgálataink során figyelemmel kísérjük az online kaszinók különböző bónuszajánlatait, beleértve az üdvözlő bónuszokat, ingyenes pörgetéseket és hűségprogramokat. A változatos bónuszok és promóciók segítenek a játékosoknak optimalizálni the játékélményüket és javítani nyerési esélyeiket. A Magyarországon elérhető online kaszinók gazdag bónuszokat kínálnak a játékosaiknak. Szakértőink összegyűjtötték the legjobb bónusz ajánlatokat, amelyeket a magyar játékosok is használhatnak. Érdemes tudni, hogy minden bónuszra vonatkozik megforgatási követelmény, amit teljesíteni kell, méghozzá adott időn belül.

    • A legtöbb online kaszinó elfogad bankkártyákat, e-pénztárcákat (például Skrill, NETELLER), banki átutalást, és egyesek akár kriptovalutákat is definitely.
    • A játékokat gyakran fejlesztik és frissítik, hogy mindig új és izgalmas élményt nyújtsanak a játékosoknak.
    • A legnépszerűbb engedélyek között tarthatjuk számon például napjainkban a Máltai Szerencsejáték Hatóság vagy a Curacaoi Szerencsejáték Hatóság által kiadott engedélyeket.
    • Minden online kaszinó, amely rendelkezik működési engedéllyel, kifizeti a játékosok nyereményeit.

    Ha az e-pénztárcák hívője vagy, the Neteller szolgáltatást is definitely jó szívvel ajánljuk. Bizonyos kritériumok alapján határozzák meg, hogy egy játékos milyen szintű. Ez the bónusz azt jelenti, hogy például egy nyerőgép karját 40 alkalommal húzhatjuk meg anélkül, hogy the játékegyenlegünk csökkenne. Bankkártyás fizetési opció választása esetén a kártyaadatainkat és a kódunkat kell megadnunk, hogy levonják az egyenlegükből a megadott összeget.

    Bwin – Az Egyik Legnépszerűbb Online Kaszinó

    Mielőtt játékot választanál, tudnod kell, hogy nem mindegy, hogy az adott casino online magyar játék milyen RTP mellett érhető un. Ugyanis, ez fogja megmutatni, hogy milyen gyakran fizet majd vissza a játék a játékosnak. Százalékos arányban határozzák meg, és amennyiben azt látod, hogy nem éri el the 90%-ot a legjobb, ha inkább továbbállsz és másikat keresel magadnak, mert a 95% alattiak nem gyakran biztosítanak majd nyereményt. Arra arizona esetre pedig, fixa a magyar oldalak használata közben szeretnéd kriptovalutával megtenni a new” “fizetéseket a legjobb, styra erre kripto kaszinót választasz.

    • Természetesen, az Egyesült Királyság Szerencsejáték Hatósága is definitely a legjobbak közé sorolható.
    • Ezen kívül, a legális magyar online kaszinó szerencsejáték platfromoknakadóznia is kell a magyar állam felé, és különböző feltételeknek kell megfelelniük.
    • Miután felhasználtad az üdvözlő bónuszodat, hozzáférhetsz a kaszinó egyéb ajánlataihoz is.
    • Manapság már a magyar játékosok is pillanatok alatt regisztrálhatnak egy legális online szerencsejáték-oldal felületén, és hozzáférhetnek akár több ezer izgalmas élő, asztali játékhoz, valamint nyerőgéphez.
    • A különböző online kaszinók kipróbálása kiváló lehetőség arra, hogy megismerkedj ezzel a világgal, mielőtt letennéd a voksod valamelyik mellett.

    Fontos, hogy the számodra legmegfelelőbb banki opciót válaszd ki, hiszen egyesek népszerűbbek lehetnek másoknál. Ne feledd, hogy az online szerencsejáték oldalakon gyakran elérhetőek különböző fizetési lehetőségek. Természetesen nem hagyhatjuk figyelmen kívül, hogy magunk is kipróbáljuk, hogy hogyan működnek some sort of vizsgált kaszinó oldalak Magyarországon. Gondosan ellenőrizzük a játékok széles választékát, figyelve az egyes kategóriákban elérhető lehetőségekre.

    Német Stílusú Táblás Játékok

    Ezzel szinte kizárnak minden esélyét annak, hogy valaki átverjen az online kaszinó oldalakon. Itt egy újabb példa arra, hogy egy online kaszinó hosszú távon tudja megtartani a játékosok szívét. A bwin ugyanis már 97 óta száll szembe a széllel, és az elmúlt évtizedekben a szerencsejáték piac egyik óriásává nőtte ki magát. Jelenleg ugyan a magyar játékosok nem tudnak még regisztrálni az oldalukra, de reméljük,” “hogy ez csak átmeneti állapot, és hamarosan a bwin nyújtotta előnyöket élvezhetik majd az új játékosok is.

    • Ezek hatalmas nyereményeket kínálhatnak, amelyek gyakran elérik a milliókat.
    • A játékban aktiválható a szabadjáték will be, ami busás nyereményekkel növelheti a felhasználók egyenlegét.
    • Léteznek regisztrációs bónuszok, VIP-bónuszok és pénzvisszatérítési jutalmak, amelyek minden játékos számára rendkívül előnyösek lehetnek; a kezdőktől a profikig.
    • A bónuszok kapcsán mindig olvasd el arizona apróbetűs részt, t persze elsőként ismerd meg az adott bónusz fajtákat, annak érdekében, hogy some sort of számodra legjobb casinos bónusz legyen elérhető.

    Az is lényeges, hogy milyen játékokat biztosít viszont, például a nyerőgépek mellett. Ez kiváló lehetőség kezdő játékosoknak vagy azoknak, akik szeretnék kipróbálni több játékot, mielőtt valódi pénzt fektetnének be. Fontos megjegyezni, hogy a demó verziókban néhány korlátozás lehet, például a new pörgetések számát illetően.

    Banki És Fizetési Lehetőségek A Magyar Online Kaszinókban

    Amennyiben fontosnak tartod, hogy óriási nyeremények üthessék a markodat a kaszinókat felkeresve, érdemes azokat a new listákat megnézned, amelyek a legnagyobb nyereményeket biztosító oldalak összegzésével várnak. Például, some sort of minőségi kaszinók titkosítást használnak a fizetésekhez, miközben tesznek arról is, hogy minden szempontból védjék some sort of játékosok adatait the csalásoktól és some sort of visszaélésektől. Az alábbiakban azokat a szoftver szolgáltatókat fogjuk megvizsgálni, amelyekkel a legtöbb kaszinó együttműködik, illetve a legnépszerűbbek hazánkban. Tulajdonképpen onnantól, hogy egy virtuális operátor törvényesen működik, minden kifizetési és befizetési mód biztonságos lesz platformján. Ezt tovább segíti az SSL-titkosítás is, mely nem engedi, hogy adataid illetéktelen személyek felé kiszivárogjanak.

    • A következőkben bemutatjuk a legjobb kaszinókat, amelyek kiváló játékélményt, széles játékválasztékot és magas szintű biztonságot kínálnak.
    • Mivel a kaszinók játék közül a nyerőgépek örvendenek a legnagyobb népszerűségnek, ezt some sort of játéktípust minden kaszinó hatalmas választékban kínálja weboldalán.
    • A szolgáltató az utóbbi 20 évben meghatározó szereplője volt a piacnak, ahol slotok és élő osztós játékok terén is maradandó nyomot hagyott.
    • A Paysafecarddal nem csak egyszerű számlát létrehozni, de minden tranzakció biztonságos, anonim és hatékony is definitely, mivel egy 18 jegyű PIN kódot használ, amely lehetetlenné teszi a hackerek számára a hozzáférést.
    • Bár Magyarországon leggyakrabban curacao-i engedéllyel találkozunk, vannak más elismert nemzetközi szerencsejáték hatóságok will be, amelyek itthon is usually érvényes engedélyt tudnak kiadni.

    Az online kaszinók részletes értékelésétől kezdve a legújabb nyerőgépek mélyreható feltárásáig mindent megteszek. Emellett felismerem a mobil szerencsejáték, a törvényesség, a kaszinóbónuszok és fizetési módok, valamint az online kaszinó biztonsági intézkedések fontosságát. Szorgalmas kutatás és elemzés révén bemutatom arizona egyes szempontok pozitívumait és negatívumait is usually, így Ön megalapozott döntéseket hozhat, amelyek összhangban vannak arizona Ön preferenciáival és prioritásaival. Sok online kaszinó ingyenes on the web játékokat vagy népszerű játékok demóváltozatait kínálja, mielőtt valódi pénzre váltana. Ezenkívül több mint 1000 ingyenes kaszinójátékot kínál, amelyeket azonnal online játszhat. Alternatív megoldásként” “egyes kaszinóoldalak befizetés nélküli bónuszokat kínálnak.

    🏰 Az Európai Unió Álláspontja Az Online Szerencsejátékok Magyarországi Szabályozásáról

    Ha például hitelkártyával fizetett be pénzt, akkor általában ugyanarra a kártyára tud majd pénzt felvenni. Termékeik számos ágazatot lefednek, a kaszinóktól a lottózókon és a bingótermeken át a közösségi szerencsejátékok, az iGaming és a mobil megoldások terén tett újabb lépésekig. A Merkur Gaming az iparág vezető német szerencsejáték-szoftverszolgáltatója.

    • Van néhány fontos szempont, amire különleges figyelmet fordítunk arizona online kaszinók tesztelésekor.
    • Ha máshonnan nem is definitely, filmekből jól ismerjük a klasszikus félkarú rablókat, amikben gyümölcs-szimbólumok megfelelő sorrendjének kipörgetésével lehet nyereményhez, esetleg még jackpothoz is usually jutni.
    • A szinte azonnali befizetések és ingyenes átutalások révén percek alatt könnyedén elkezdhet játszani kedvenc kaszinójátékaival.
    • Azt tudnod kell, hogy a mai szerencsejátékszabályozás miatt valójában a new nemzetközi kaszinók ugyan nyújthatnak szolgáltatást, de a hatóságok gondok esetén nem tudnak” “tenni semmit.

    Miután létrehoztuk a felhasználói fiókunkat a kiválasztott oldalon, azonnal elkezdhetjük a játékot. Természetesen ahhoz, hogy valódi pénznyereményt érjünk el, szükség lesz befizetésre is. Ezek some sort of jutalmak növelik the befizetett összeget, így több lehetőségünk truck a játékra. Persze vannak felhasználási feltételek, de azok teljesítésével akár valódi pénznyereményeket is elérhetünk. Bár napjainkban a minőségi online kaszinók általában gyors kifizetéssel várják a játékosokat, vannak olyan weboldalak, ahol azonnali ki és befizetési idővel számolhatsz. Ha fontos számodra, hogy gyorsan megtörténjenek a fizetések, érdemes őket keresned.

    A Legjobb Értékelésekkel És Hírnévvel Rendelkező Kaszinók

    Ennek az oka az, hogy az európai, nemzetközi szerencsejáték oldalak használata is törvényes Magyarországon. Először will be, a kaszinó legyen biztonságos, legyen működési engedélye, alkalmazzon titkosítási protokollt. Legyen segítőkész az ügyfélszolgálata, és csak megbízható fizetési módokat fogadjon el. A 34 évem alatt már közel 11 évet szenteltem a magyarországi kaszinóknak és szerencsejátékoknak. Dolgoztam élő osztóként és menedzserként szárazföldi real world kaszinókban Magyarországon, és eközben blogolok a new szerencsejátékok és kaszinók témakörében, offline és online egyaránt. Az elmúlt 3 évben az online tevékenységekre koncentráltam, és arizona összes blogomat a new honlapomra – kaszinomagyar. net – helyezem át.

    Szerencsejáték szakértőink kizárólag azokat a platformokat vették górcső alá, melyekkel a kaszinórajongók a new legjobban járnak, és amik szigorú kritériumainknak eleget tettek. Nehéz lehet kiválasztani a new legjobb szerencsejáték-oldalt mindenki számára, mivel az online kaszinó játékosok különböző érdeklődési körrel és preferenciákkal rendelkeznek. Általánosságban, amikor bónuszajánlatról beszélünk, legtöbbször üdvözlő bónuszokról van szó. Ezek igénylése egyben a legegyszerűbb, hiszen nem kell mást tennünk, mint a new regisztráció során elfogadni a bónusz ajánlatot, majd befizetni egy, a bónusz feltételeinek megfelelő összeget.

    Megbízható Magyar Online Kaszinók Listája 2025

    A fentiek függvényében mindenképpen ellenőrizd a kiválasztott online kaszinó kifizetési limitjeit és fixa nem vagy velük elégedett, inkább válassz másik online on line casino szolgáltatót! Egy megbízható és biztonságos on the internet kaszinóban nem kell egyetlen percig search engine optimization aggódnod, ugyanis ott a személyes és pénzügyi adataidat will be biztonságban tudhatod. Kaszinótól függően olyan e-pénztárcás megoldások is elérhetők, mint például some sort of PayPal. A On line casino Sopront 1989-ben alapították, és egy jól ismert kaszinónak számít Magyarországon.

    • A gyors kifizetésű kaszinók azok, amelyek a new gyors kifizetési időt helyezik előtérbe, lehetővé téve a játékosok számára, hogy hosszabb késedelem nélkül hozzáférjenek nyereményükhöz.
    • Az online kaszinózás egyik legkedveltebb aspektusa a nyerőgépes játékok lenyűgöző világa.
    • Ha the klasszikus játékok helyett inkább a nyerőgépek érdekelnek, azok meglétét is ellenőrizd!
    • Ez után érdemes odafigyelni arra, hogy van-e SSL titkosítás a weboldalon.
    • Legfontosabb célkitűzésünk, hogy segítsünk olvasóinknak eldönteni, melyik a legjobb on-line kaszinó.
    • A digitális platformok felé való elmozdulás a 2000-es években kezdődött meg komolyan, amikor a new kormány korlátozott on the web szerencsejáték engedélyeket adott ki.

    Ebben az esetben ugyanis bustolunk, azaz bukjuk a tétet és the potenciális nyereményeket. Ahogy a többi asztali játék, úgy ez a cím is elérhető mind gépi, mind élő változatban a legjobb internet casino felületén. Egy legális online kaszinó magyar felületén azok a játékosok regisztrálhatnak, akik betöltötték a törvényben előírt korhatárt, ami Magyarországon jelenleg 20 év. A magyar casino oldalon some sort of személyazonosságunk igazolásához valamilyen okmányra is szükségünk lesz – ez lehet például személyi igazolvány vagy útlevél. Általában az azonosítási folyamat teljesítését követően leszünk teljes jogú tagok a on line casino online felületén. Csapatunk tagjai több mint 5 évnyi tapasztalattal büszkélkedhetnek a magyar online kaszinók elemzésében és értékelésében.

    Milyen Fizetési Módokat Támogathatnak Az Internetes Kaszinók?

    Magyarország némileg lazított szabályzatán, azonban a külföldi” “on the internet szolgáltatók üzemelését engedély kiváltásához köti, a virtuális fogadási oldalakat pedig a Szerencsejáték Felügyelet ellenőrzi. A külföldi online gambling establishment magyaroknak így továbbra is szürke zónának minősül a legalitást illetően. Azonban ha egy üzemeltető weboldala problémamentesen megnyílik böngésződben, bármelyik játékkal, legyen az nyerőgép, asztali játék vagy élő osztós fogadás, nyugodtan játszhatsz a platformján. Ha egy on the web kaszinó nem legális, az onnan derül ki, hogy nincs weboldalán feltüntetve the működtetési engedélye.

    • Emellett, the megfelelő kaszinó szigorú adatvédelmi szabályzattal rendelkezik, ami meggátolja, hogy a felhasználók adatai illetéktelen kezekbe kerüljenek.
    • A Netellerrel végrehajtott minden tranzakció titkosított a maximális biztonság érdekében, így biztos lehet benne, hogy adatai védettek, amikor bármely, some sort of Netellert elfogadó online kaszinóban fizet.
    • Azonban ha az oldal rendelkezik SZTFH (Szabályozott Tevékenységek Felügyeleti Hatósága) licenccel, a nyeremények adómentesek lehetnek.
    • A Hell Spin and rewrite érvényes curacaói szerencsejáték engedéllyel működik, így garantálva a törvényi megfelelés és a new biztonságot a felhasználók számára.

    Ez az izgalmas és dinamikus világ folyamatosan fejlődik, és a new játékosok számára változatos” “és szórakoztató élményt kínál. Az újratöltési bónuszok a hűségüket mutató játékosok számára kiváló lehetőséget kínálnak további játékra és nyereményekre. Amikor választunk egy újratöltési bónuszt, érdemes figyelembe venni az összegét és some sort of hozzá kapcsolódó feltételeket. Néhány kaszinó időszakosan kínál ilyen típusú bónuszokat, míg mások ezeket fix időszakokban biztosítják. Fontos megérteni, hogy az újratöltési bónuszok esetében mikor és hogyan lehet őket igénybe venni, valamint milyen átfordítási követelményekkel járnak. A jó újratöltési bónuszok a játékosok számára extra lehetőséget biztosítanak a játékra és a nyeremények növelésére.

    Legjobb Kaszinó Online – Top Szoftver Szolgáltatók A Magyaronlinekaszinok Net Értékelései Alapján

    Viszont egy Európai Uniós állásfoglalásnak köszönhetően a külföldi cégek által üzemeltetett platformokon is gond nélkül, teljesen legálisan játszhatunk. Az egyetlen különbség az, hogy a külföldi online kaszinókon szerzett nyereményünk után adóznunk kell, míg a magyar platformok esetén nincs adófizetési kötelezettség the nyeremények után. A Megapari Kaszinó egy kiemelkedő online szerencsejáték platform, mely széles skálán kínál kaszinójátékokat, sportfogadást és virtuális sportokat. A kaszinó magas színvonalú és biztonságos játékélményt nyújt, engedéllyel rendelkezik és folyamatosan felügyeli tevékenységét. A Need intended for SPin egy innovatív, modern online kaszinó, amely várja a magyar játékosokat will be. Az oldal teljesen le van fordítva magyar nyelvre és Forintot is elfogad a fizetések során.

    • A kriptovaluták, például a new Bitcoin, egyre elterjedtebb fizetési lehetőségek a magyar online kaszinókban.
    • Az ingyenes pörgetések nagyszerű módja annak, hogy” “többet hozzon ki az online kaszinóélményeiből.
    • Néhány kaszinó időszakosan kínál ilyen típusú bónuszokat, míg mások ezeket fix időszakokban biztosítják.
    • A regisztráció nélküli kaszinók esetében nincs szükség arra, hogy felhasználói fiókot hozz létre a játékhoz.

    A legális kaszinók szabályozott keretek között működnek, biztosítva a tisztességes játékot és some sort of biztonságos tranzakciókat, megbízható és felelős játék környezetet kínálva. A letöltés tárgya egy apk file, mérete az egy megát sem éri el általában. Futtasd some sort of letöltött fájlt, telepítsd a készülékedre, fogadd el az ÁSZF-et, és kész is definitely vagy. Jelentkezz become az online kaszinó magyar fiókodba, és már indulhat is actually a játék. Számos oldal le van fordítva magyar nyelvűre, ám gyakran megesik még ilyen esetekben is definitely, hogy bizonyos oldalakat véletlenül kifelejtenek. Ilyenek szoktak lenni a new bónusz feltételei, illetve az online magyar” “kaszinó szerződési feltételei.

    Tippek A Felelősségteljes Játékhoz

    A legtöbb megbízható online kaszinó olyan hatóságok által kiadott engedéllyel rendelkezik, amilyen a KGC, az MGA vagy a UKGC. Mi vizsgálatunk során kitérünk arra is, hogy az oldalon lévő játékok szolgáltatói rendelkeznek-e megfelelő engedélyekkel és a tisztességes játékmenetet igazoló tanúsítványokkal. Az alábbiakban megnézzük, hogy melyik típusú bónuszok a leginkább elterjedtek az online kaszinókban, amelyeket felhasználhatsz pénzes játékokra, és röviden áttekintjük ezek legfontosabb tudnivalóit. Mivel a szerencsejáték üzemeltetők minél több ügyfelet szeretnének magukhoz csábítani, igyekeznek szinte az összes ma elérhető fizetési opciót lehetővé tenni. Először is, a játékos valószínűleg nem fog olyan problémába botlani, hogy arizona általa preferált fizetési módszer nem támogatott a doménen.

    A befizetés nélküli bónusz csábító funkció lehet az új, online kaszinóba regisztrálni kívánó játékosok számára. Ezeket a bónuszokat az új játékosoknak kínálják anélkül, hogy pénzt kellene befizetniük a számlájukra. A Vulkan Vegas kaszinó a fizetési módok nagy választékáról és felhasználóbarát felületéről híres, így a kezdő és tapasztalt játékosok kedvence. A kaszinó” “különösen azoknak kedvez, akik értékelik a nyerőgépek és élő kaszinójátékok gazdag választékát, amelyek mindegyike egy egyszerű, könnyen navigálható platformon keresztül érhető el.

    Az Legjobb Online Kaszinó Népszerű Banki Módszerei

    Ha egy kaszinó Magyarország területén is megjelenik, akkor általában minőségi szolgáltatásokkal és változatos kínálatokkal várják régi és új ügyfeleiket. Ez azért előnyös, mert sokszor tapasztalni, hogy a legjobb online kaszino oldalak új nyitásuk alkalmával egyedi bónusz ajánlatokat is felkínálnak, melyek általában csak limitált ideig elérhetőek. A hagyományos online kaszinókon számos más típusú szerencsejáték oldal is definitely játékosok rendelkezésére áll. Az élő kaszinó valós idejű, interaktív játékot kínálnak, míg a mobil kaszinók útközbeni hozzáférést biztosítanak.

    • Sok kaszinó rendelkezik azonnali játékokkal, amelyek lehetővé teszik some sort of játékokhoz való közvetlen hozzáférést a kívánt internetes böngészőn keresztül.
    • Ezenkívül a biztonsági szempontokat is alaposan vizsgáljuk, beleértve az oldal használhatóságát, az adatvédelem intézkedéseit, valamint arizona SSL titkosítás alkalmazását a fizetéseknél.
    • Az asztali játékok some sort of hagyományos kártya- és kockajátékok véletszám-generátor működtetett változatai.
    • Természetesen ekkor még nem some sort of manapság ismert, legális online kaszinó d játékteremről beszélhetünk, ugyanis akkoribanfőként a kapcsolattartáson volta hangsúly.

    A legjobb online gambling establishment vélemények és szakértői értékelések (amiket oldalunkon is megtalálhatsz) elolvasása segíthet ebben. A Casino-magyar. com Magyarország vezető online kaszinó-áttekintő oldala, amely egy helyen gyűjt minden szükséges információt a new szerencsejátékokról, fogadóirodákról és azok engedélyeiről. Molnár Farkas szerencsejáték-szakértő, 10 éves tapasztalattal arizona iGaming iparágban. Pályáját kártyaosztóként kezdte a Grand Casino Debrecenben, ahol értékes tapasztalatokat szerzett a szerencsejátékok világában.