/*! elementor - v3.0.7 - 09-09-2020 */
/******/ (function(modules) { // webpackBootstrap
/******/ 	// The module cache
/******/ 	var installedModules = {};
/******/
/******/ 	// The require function
/******/ 	function __webpack_require__(moduleId) {
/******/
/******/ 		// Check if module is in cache
/******/ 		if(installedModules[moduleId]) {
/******/ 			return installedModules[moduleId].exports;
/******/ 		}
/******/ 		// Create a new module (and put it into the cache)
/******/ 		var module = installedModules[moduleId] = {
/******/ 			i: moduleId,
/******/ 			l: false,
/******/ 			exports: {}
/******/ 		};
/******/
/******/ 		// Execute the module function
/******/ 		modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
/******/
/******/ 		// Flag the module as loaded
/******/ 		module.l = true;
/******/
/******/ 		// Return the exports of the module
/******/ 		return module.exports;
/******/ 	}
/******/
/******/
/******/ 	// expose the modules object (__webpack_modules__)
/******/ 	__webpack_require__.m = modules;
/******/
/******/ 	// expose the module cache
/******/ 	__webpack_require__.c = installedModules;
/******/
/******/ 	// define getter function for harmony exports
/******/ 	__webpack_require__.d = function(exports, name, getter) {
/******/ 		if(!__webpack_require__.o(exports, name)) {
/******/ 			Object.defineProperty(exports, name, { enumerable: true, get: getter });
/******/ 		}
/******/ 	};
/******/
/******/ 	// define __esModule on exports
/******/ 	__webpack_require__.r = function(exports) {
/******/ 		if(typeof Symbol !== 'undefined' && Symbol.toStringTag) {
/******/ 			Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
/******/ 		}
/******/ 		Object.defineProperty(exports, '__esModule', { value: true });
/******/ 	};
/******/
/******/ 	// create a fake namespace object
/******/ 	// mode & 1: value is a module id, require it
/******/ 	// mode & 2: merge all properties of value into the ns
/******/ 	// mode & 4: return value when already ns object
/******/ 	// mode & 8|1: behave like require
/******/ 	__webpack_require__.t = function(value, mode) {
/******/ 		if(mode & 1) value = __webpack_require__(value);
/******/ 		if(mode & 8) return value;
/******/ 		if((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;
/******/ 		var ns = Object.create(null);
/******/ 		__webpack_require__.r(ns);
/******/ 		Object.defineProperty(ns, 'default', { enumerable: true, value: value });
/******/ 		if(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));
/******/ 		return ns;
/******/ 	};
/******/
/******/ 	// getDefaultExport function for compatibility with non-harmony modules
/******/ 	__webpack_require__.n = function(module) {
/******/ 		var getter = module && module.__esModule ?
/******/ 			function getDefault() { return module['default']; } :
/******/ 			function getModuleExports() { return module; };
/******/ 		__webpack_require__.d(getter, 'a', getter);
/******/ 		return getter;
/******/ 	};
/******/
/******/ 	// Object.prototype.hasOwnProperty.call
/******/ 	__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };
/******/
/******/ 	// __webpack_public_path__
/******/ 	__webpack_require__.p = "";
/******/
/******/
/******/ 	// Load entry module and return exports
/******/ 	return __webpack_require__(__webpack_require__.s = 708);
/******/ })
/************************************************************************/
/******/ ([
/* 0 */
/***/ (function(module, exports) {

function _interopRequireDefault(obj) {
  return obj && obj.__esModule ? obj : {
    "default": obj
  };
}

module.exports = _interopRequireDefault;

/***/ }),
/* 1 */
/***/ (function(module, exports, __webpack_require__) {

module.exports = __webpack_require__(156);

/***/ }),
/* 2 */
/***/ (function(module, exports) {

function _classCallCheck(instance, Constructor) {
  if (!(instance instanceof Constructor)) {
    throw new TypeError("Cannot call a class as a function");
  }
}

module.exports = _classCallCheck;

/***/ }),
/* 3 */
/***/ (function(module, exports, __webpack_require__) {

var _Object$defineProperty = __webpack_require__(1);

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, descriptor.key, descriptor);
  }
}

function _createClass(Constructor, protoProps, staticProps) {
  if (protoProps) _defineProperties(Constructor.prototype, protoProps);
  if (staticProps) _defineProperties(Constructor, staticProps);
  return Constructor;
}

module.exports = _createClass;

/***/ }),
/* 4 */
/***/ (function(module, exports, __webpack_require__) {

var _Object$create = __webpack_require__(139);

var setPrototypeOf = __webpack_require__(137);

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
    }
  });
  if (superClass) setPrototypeOf(subClass, superClass);
}

module.exports = _inherits;

/***/ }),
/* 5 */
/***/ (function(module, exports, __webpack_require__) {

var _Reflect$construct = __webpack_require__(107);

var getPrototypeOf = __webpack_require__(16);

var isNativeReflectConstruct = __webpack_require__(149);

var possibleConstructorReturn = __webpack_require__(171);

function _createSuper(Derived) {
  var hasNativeReflectConstruct = isNativeReflectConstruct();
  return function _createSuperInternal() {
    var Super = getPrototypeOf(Derived),
        result;

    if (hasNativeReflectConstruct) {
      var NewTarget = getPrototypeOf(this).constructor;
      result = _Reflect$construct(Super, arguments, NewTarget);
    } else {
      result = Super.apply(this, arguments);
    }

    return possibleConstructorReturn(this, result);
  };
}

module.exports = _createSuper;

/***/ }),
/* 6 */
/***/ (function(module, exports) {

var core = module.exports = { version: '2.6.11' };
if (typeof __e == 'number') __e = core; // eslint-disable-line no-undef


/***/ }),
/* 7 */
/***/ (function(module, exports, __webpack_require__) {

var global = __webpack_require__(8);
var core = __webpack_require__(6);
var ctx = __webpack_require__(31);
var hide = __webpack_require__(24);
var has = __webpack_require__(19);
var PROTOTYPE = 'prototype';

var $export = function (type, name, source) {
  var IS_FORCED = type & $export.F;
  var IS_GLOBAL = type & $export.G;
  var IS_STATIC = type & $export.S;
  var IS_PROTO = type & $export.P;
  var IS_BIND = type & $export.B;
  var IS_WRAP = type & $export.W;
  var exports = IS_GLOBAL ? core : core[name] || (core[name] = {});
  var expProto = exports[PROTOTYPE];
  var target = IS_GLOBAL ? global : IS_STATIC ? global[name] : (global[name] || {})[PROTOTYPE];
  var key, own, out;
  if (IS_GLOBAL) source = name;
  for (key in source) {
    // contains in native
    own = !IS_FORCED && target && target[key] !== undefined;
    if (own && has(exports, key)) continue;
    // export native or passed
    out = own ? target[key] : source[key];
    // prevent global pollution for namespaces
    exports[key] = IS_GLOBAL && typeof target[key] != 'function' ? source[key]
    // bind timers to global for call from export context
    : IS_BIND && own ? ctx(out, global)
    // wrap global constructors for prevent change them in library
    : IS_WRAP && target[key] == out ? (function (C) {
      var F = function (a, b, c) {
        if (this instanceof C) {
          switch (arguments.length) {
            case 0: return new C();
            case 1: return new C(a);
            case 2: return new C(a, b);
          } return new C(a, b, c);
        } return C.apply(this, arguments);
      };
      F[PROTOTYPE] = C[PROTOTYPE];
      return F;
    // make static versions for prototype methods
    })(out) : IS_PROTO && typeof out == 'function' ? ctx(Function.call, out) : out;
    // export proto methods to core.%CONSTRUCTOR%.methods.%NAME%
    if (IS_PROTO) {
      (exports.virtual || (exports.virtual = {}))[key] = out;
      // export proto methods to core.%CONSTRUCTOR%.prototype.%NAME%
      if (type & $export.R && expProto && !expProto[key]) hide(expProto, key, out);
    }
  }
};
// type bitmap
$export.F = 1;   // forced
$export.G = 2;   // global
$export.S = 4;   // static
$export.P = 8;   // proto
$export.B = 16;  // bind
$export.W = 32;  // wrap
$export.U = 64;  // safe
$export.R = 128; // real proto method for `library`
module.exports = $export;


/***/ }),
/* 8 */
/***/ (function(module, exports) {

// https://github.com/zloirock/core-js/issues/86#issuecomment-115759028
var global = module.exports = typeof window != 'undefined' && window.Math == Math
  ? window : typeof self != 'undefined' && self.Math == Math ? self
  // eslint-disable-next-line no-new-func
  : Function('return this')();
if (typeof __g == 'number') __g = global; // eslint-disable-line no-undef


/***/ }),
/* 9 */
/***/ (function(module, exports) {

module.exports = function (it) {
  return typeof it === 'object' ? it !== null : typeof it === 'function';
};


/***/ }),
/* 10 */
/***/ (function(module, exports, __webpack_require__) {

var store = __webpack_require__(76)('wks');
var uid = __webpack_require__(59);
var Symbol = __webpack_require__(8).Symbol;
var USE_SYMBOL = typeof Symbol == 'function';

var $exports = module.exports = function (name) {
  return store[name] || (store[name] =
    USE_SYMBOL && Symbol[name] || (USE_SYMBOL ? Symbol : uid)('Symbol.' + name));
};

$exports.store = store;


/***/ }),
/* 11 */
/***/ (function(module, exports) {

module.exports = React;

/***/ }),
/* 12 */
/***/ (function(module, exports, __webpack_require__) {

var store = __webpack_require__(67)('wks');
var uid = __webpack_require__(68);
var Symbol = __webpack_require__(17).Symbol;
var USE_SYMBOL = typeof Symbol == 'function';

var $exports = module.exports = function (name) {
  return store[name] || (store[name] =
    USE_SYMBOL && Symbol[name] || (USE_SYMBOL ? Symbol : uid)('Symbol.' + name));
};

$exports.store = store;


/***/ }),
/* 13 */
/***/ (function(module, exports, __webpack_require__) {

var isObject = __webpack_require__(9);
module.exports = function (it) {
  if (!isObject(it)) throw TypeError(it + ' is not an object!');
  return it;
};


/***/ }),
/* 14 */
/***/ (function(module, exports, __webpack_require__) {

// Thank's IE8 for his funny defineProperty
module.exports = !__webpack_require__(22)(function () {
  return Object.defineProperty({}, 'a', { get: function () { return 7; } }).a != 7;
});


/***/ }),
/* 15 */
/***/ (function(module, exports, __webpack_require__) {

var anObject = __webpack_require__(13);
var IE8_DOM_DEFINE = __webpack_require__(114);
var toPrimitive = __webpack_require__(74);
var dP = Object.defineProperty;

exports.f = __webpack_require__(14) ? Object.defineProperty : function defineProperty(O, P, Attributes) {
  anObject(O);
  P = toPrimitive(P, true);
  anObject(Attributes);
  if (IE8_DOM_DEFINE) try {
    return dP(O, P, Attributes);
  } catch (e) { /* empty */ }
  if ('get' in Attributes || 'set' in Attributes) throw TypeError('Accessors not supported!');
  if ('value' in Attributes) O[P] = Attributes.value;
  return O;
};


/***/ }),
/* 16 */
/***/ (function(module, exports, __webpack_require__) {

var _Object$getPrototypeOf = __webpack_require__(158);

var _Object$setPrototypeOf = __webpack_require__(115);

function _getPrototypeOf(o) {
  module.exports = _getPrototypeOf = _Object$setPrototypeOf ? _Object$getPrototypeOf : function _getPrototypeOf(o) {
    return o.__proto__ || _Object$getPrototypeOf(o);
  };
  return _getPrototypeOf(o);
}

module.exports = _getPrototypeOf;

/***/ }),
/* 17 */
/***/ (function(module, exports) {

// https://github.com/zloirock/core-js/issues/86#issuecomment-115759028
var global = module.exports = typeof window != 'undefined' && window.Math == Math
  ? window : typeof self != 'undefined' && self.Math == Math ? self
  // eslint-disable-next-line no-new-func
  : Function('return this')();
if (typeof __g == 'number') __g = global; // eslint-disable-line no-undef


/***/ }),
/* 18 */
/***/ (function(module, exports, __webpack_require__) {

var isObject = __webpack_require__(30);
module.exports = function (it) {
  if (!isObject(it)) throw TypeError(it + ' is not an object!');
  return it;
};


/***/ }),
/* 19 */
/***/ (function(module, exports) {

var hasOwnProperty = {}.hasOwnProperty;
module.exports = function (it, key) {
  return hasOwnProperty.call(it, key);
};


/***/ }),
/* 20 */
/***/ (function(module, exports, __webpack_require__) {

// to indexed object, toObject with fallback for non-array-like ES3 strings
var IObject = __webpack_require__(104);
var defined = __webpack_require__(65);
module.exports = function (it) {
  return IObject(defined(it));
};


/***/ }),
/* 21 */
/***/ (function(module, exports, __webpack_require__) {

"use strict";


var _interopRequireDefault = __webpack_require__(0);

var _Object$defineProperty = __webpack_require__(1);

_Object$defineProperty(exports, "__esModule", {
  value: true
});

exports.default = void 0;

var _typeof2 = _interopRequireDefault(__webpack_require__(48));

var _regenerator = _interopRequireDefault(__webpack_require__(82));

__webpack_require__(147);

__webpack_require__(117);

__webpack_require__(72);

__webpack_require__(271);

var _promise = _interopRequireDefault(__webpack_require__(133));

var _isArray = _interopRequireDefault(__webpack_require__(84));

__webpack_require__(66);

var _asyncToGenerator2 = _interopRequireDefault(__webpack_require__(83));

var _classCallCheck2 = _interopRequireDefault(__webpack_require__(2));

var _assertThisInitialized2 = _interopRequireDefault(__webpack_require__(49));

var _createClass2 = _interopRequireDefault(__webpack_require__(3));

var _inherits2 = _interopRequireDefault(__webpack_require__(4));

var _createSuper2 = _interopRequireDefault(__webpack_require__(5));

var _defineProperty2 = _interopRequireDefault(__webpack_require__(28));

var _argsObject = _interopRequireDefault(__webpack_require__(223));

var CommandBase = /*#__PURE__*/function (_ArgsObject) {
  (0, _inherits2.default)(CommandBase, _ArgsObject);

  var _super = (0, _createSuper2.default)(CommandBase);

  (0, _createClass2.default)(CommandBase, null, [{
    key: "getInstanceType",
    value: function getInstanceType() {
      return 'CommandBase';
    }
    /**
     * Current component.
     *
     * @type {Component}
     */

  }]);

  /**
   * Function constructor().
   *
   * Create Commands Base.
   *
   * @param [args={}]
   * @param [commandsAPI={}]
   */
  function CommandBase(args) {
    var _this;

    var commandsAPI = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : $e.commands;
    (0, _classCallCheck2.default)(this, CommandBase);
    _this = _super.call(this, args); // Acknowledge self about which command it run.

    (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "component", void 0);
    _this.currentCommand = commandsAPI.getCurrentLast(); // Assign instance of current component.

    _this.component = commandsAPI.getComponent(_this.currentCommand); // Who ever need do something before without `super` the constructor can use `initialize` method.

    _this.initialize(args); // Refresh args, maybe the changed via `initialize`.


    args = _this.args; // Validate args before run.

    _this.validateArgs(args);

    return _this;
  }
  /**
   * Function requireContainer().
   *
   * Validate `arg.container` & `arg.containers`.
   *
   * @param {{}} args
   *
   * @throws {Error}
   */


  (0, _createClass2.default)(CommandBase, [{
    key: "requireContainer",
    value: function requireContainer() {
      var _this2 = this;

      var args = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : this.args;

      if (!args.container && !args.containers) {
        throw Error('container or containers are required.');
      }

      if (args.container && args.containers) {
        throw Error('container and containers cannot go together please select one of them.');
      }

      var containers = args.containers || [args.container];
      containers.forEach(function (container) {
        _this2.requireArgumentInstance('container', elementorModules.editor.Container, {
          container: container
        });
      });
    }
    /**
     * Function initialize().
     *
     * Initialize command, called after construction.
     *
     * @param [args={}]
     */

  }, {
    key: "initialize",
    value: function initialize() {
      var args = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
    } // eslint-disable-line no-unused-vars

    /**
     * Function validateArgs().
     *
     * Validate command arguments.
     *
     * @param [args={}]
     */

  }, {
    key: "validateArgs",
    value: function validateArgs() {
      var args = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
    } // eslint-disable-line no-unused-vars

    /**
     * Function isDataChanged().
     *
     * Whether the editor needs to set change flag on/off.
     *
     * @returns {boolean}
     */

  }, {
    key: "isDataChanged",
    value: function isDataChanged() {
      return false;
    }
    /**
     * Function apply().
     *
     * Do the actual command.
     *
     * @param [args={}]
     *
     * @returns {*}
     */

  }, {
    key: "apply",
    value: function apply() {
      var args = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
      // eslint-disable-line no-unused-vars
      elementorModules.ForceMethodImplementation();
    }
    /**
     * Function run().
     *
     * Run command with history & hooks.
     *
     * @returns {*}
     */

  }, {
    key: "run",
    value: function run() {
      var result; // For UI Hooks.

      this.onBeforeRun(this.args);

      try {
        // For Data hooks.
        this.onBeforeApply(this.args);
        result = this.apply(this.args);
      } catch (e) {
        this.onCatchApply(e); // Catch 'Hook-Break' that comes from hooks base.

        if (e instanceof $e.modules.HookBreak) {
          // Bypass.
          return false;
        }
      }

      return this.runAfter(result);
    }
  }, {
    key: "runAfter",
    value: function runAfter(result) {
      var _this3 = this;

      var onAfter = function onAfter(_result) {
        // Run Data hooks.
        _this3.onAfterApply(_this3.args, _result); // TODO: Create Command-Base for Command-Document and apply it on after.


        if (_this3.isDataChanged()) {
          $e.internal('document/save/set-is-modified', {
            status: true
          });
        } // For UI hooks.


        _this3.onAfterRun(_this3.args, _result);
      },
          asyncOnAfter = /*#__PURE__*/function () {
        var _ref = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee(_result) {
          var results, promises;
          return _regenerator.default.wrap(function _callee$(_context) {
            while (1) {
              switch (_context.prev = _context.next) {
                case 0:
                  // Run Data hooks.
                  results = _this3.onAfterApply(_this3.args, _result), promises = (0, _isArray.default)(results) ? results.flat().filter(function (filtered) {
                    return filtered instanceof _promise.default;
                  }) : [];

                  if (!promises.length) {
                    _context.next = 4;
                    break;
                  }

                  _context.next = 4;
                  return _promise.default.all(promises);

                case 4:
                  if (_this3.isDataChanged()) {
                    // TODO: Create Command-Base for Command-Document and apply it on after.
                    $e.internal('document/save/set-is-modified', {
                      status: true
                    });
                  } // For UI hooks.


                  _this3.onAfterRun(_this3.args, _result);

                case 6:
                case "end":
                  return _context.stop();
              }
            }
          }, _callee);
        }));

        return function asyncOnAfter(_x) {
          return _ref.apply(this, arguments);
        };
      }(); // TODO: Temp code determine if it's a jQuery deferred object.


      if (result && 'object' === (0, _typeof2.default)(result) && result.promise && result.then && result.fail) {
        result.fail(this.onCatchApply.bind(this));
        result.done(onAfter);
      } else if (result instanceof _promise.default) {
        // Override initial result ( promise ) to await onAfter promises, first!.
        return (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee2() {
          return _regenerator.default.wrap(function _callee2$(_context2) {
            while (1) {
              switch (_context2.prev = _context2.next) {
                case 0:
                  _context2.next = 2;
                  return result.catch(_this3.onCatchApply.bind(_this3));

                case 2:
                  _context2.next = 4;
                  return result.then(function (_result) {
                    return asyncOnAfter(_result);
                  });

                case 4:
                  return _context2.abrupt("return", result);

                case 5:
                case "end":
                  return _context2.stop();
              }
            }
          }, _callee2);
        }))();
      } else {
        onAfter(result);
      }

      return result;
    }
    /**
     * Function onBeforeRun.
     *
     * Called before run().
     *
     * @param [args={}]
     */

  }, {
    key: "onBeforeRun",
    value: function onBeforeRun() {
      var args = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
      $e.hooks.runUIBefore(this.currentCommand, args);
    }
    /**
     * Function onAfterRun.
     *
     * Called after run().
     *
     * @param [args={}]
     * @param [result={*}]
     */

  }, {
    key: "onAfterRun",
    value: function onAfterRun() {
      var args = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
      var result = arguments.length > 1 ? arguments[1] : undefined;
      $e.hooks.runUIAfter(this.currentCommand, args, result);
    }
    /**
     * Function onBeforeApply.
     *
     * Called before apply().
     *
     * @param [args={}]
     */

  }, {
    key: "onBeforeApply",
    value: function onBeforeApply() {
      var args = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
      $e.hooks.runDataDependency(this.currentCommand, args);
    }
    /**
     * Function onAfterApply.
     *
     * Called after apply().
     *
     * @param [args={}]
     * @param [result={*}]
     */

  }, {
    key: "onAfterApply",
    value: function onAfterApply() {
      var args = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
      var result = arguments.length > 1 ? arguments[1] : undefined;
      return $e.hooks.runDataAfter(this.currentCommand, args, result);
    }
    /**
     * Function onCatchApply.
     *
     * Called after apply() failed.
     *
     * @param {Error} e
     */

  }, {
    key: "onCatchApply",
    value: function onCatchApply(e) {
      $e.hooks.runDataCatch(this.currentCommand, this.args, e);
      elementorCommon.helpers.consoleError(e);
      $e.hooks.runUICatch(this.currentCommand, this.args, e);
    }
  }]);
  return CommandBase;
}(_argsObject.default);

exports.default = CommandBase;

/***/ }),
/* 22 */
/***/ (function(module, exports) {

module.exports = function (exec) {
  try {
    return !!exec();
  } catch (e) {
    return true;
  }
};


/***/ }),
/* 23 */
/***/ (function(module, exports, __webpack_require__) {

module.exports = __webpack_require__(201);

/***/ }),
/* 24 */
/***/ (function(module, exports, __webpack_require__) {

var dP = __webpack_require__(15);
var createDesc = __webpack_require__(44);
module.exports = __webpack_require__(14) ? function (object, key, value) {
  return dP.f(object, key, createDesc(1, value));
} : function (object, key, value) {
  object[key] = value;
  return object;
};


/***/ }),
/* 25 */
/***/ (function(module, exports, __webpack_require__) {

"use strict";

// 22.1.3.8 Array.prototype.find(predicate, thisArg = undefined)
var $export = __webpack_require__(34);
var $find = __webpack_require__(182)(5);
var KEY = 'find';
var forced = true;
// Shouldn't skip holes
if (KEY in []) Array(1)[KEY](function () { forced = false; });
$export($export.P + $export.F * forced, 'Array', {
  find: function find(callbackfn /* , that = undefined */) {
    return $find(this, callbackfn, arguments.length > 1 ? arguments[1] : undefined);
  }
});
__webpack_require__(87)(KEY);


/***/ }),
/* 26 */
/***/ (function(module, exports, __webpack_require__) {

var _Object$getOwnPropertyDescriptor = __webpack_require__(124);

var _Reflect$get = __webpack_require__(193);

var superPropBase = __webpack_require__(196);

function _get(target, property, receiver) {
  if (typeof Reflect !== "undefined" && _Reflect$get) {
    module.exports = _get = _Reflect$get;
  } 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(receiver);
      }

      return desc.value;
    };
  }

  return _get(target, property, receiver || target);
}

module.exports = _get;

/***/ }),
/* 27 */
/***/ (function(module, exports, __webpack_require__) {

// Thank's IE8 for his funny defineProperty
module.exports = !__webpack_require__(33)(function () {
  return Object.defineProperty({}, 'a', { get: function () { return 7; } }).a != 7;
});


/***/ }),
/* 28 */
/***/ (function(module, exports, __webpack_require__) {

var _Object$defineProperty = __webpack_require__(1);

function _defineProperty(obj, key, value) {
  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;

/***/ }),
/* 29 */
/***/ (function(module, exports, __webpack_require__) {

var dP = __webpack_require__(45);
var createDesc = __webpack_require__(103);
module.exports = __webpack_require__(27) ? function (object, key, value) {
  return dP.f(object, key, createDesc(1, value));
} : function (object, key, value) {
  object[key] = value;
  return object;
};


/***/ }),
/* 30 */
/***/ (function(module, exports) {

module.exports = function (it) {
  return typeof it === 'object' ? it !== null : typeof it === 'function';
};


/***/ }),
/* 31 */
/***/ (function(module, exports, __webpack_require__) {

// optional / simple context binding
var aFunction = __webpack_require__(38);
module.exports = function (fn, that, length) {
  aFunction(fn);
  if (that === undefined) return fn;
  switch (length) {
    case 1: return function (a) {
      return fn.call(that, a);
    };
    case 2: return function (a, b) {
      return fn.call(that, a, b);
    };
    case 3: return function (a, b, c) {
      return fn.call(that, a, b, c);
    };
  }
  return function (/* ...args */) {
    return fn.apply(that, arguments);
  };
};


/***/ }),
/* 32 */
/***/ (function(module, exports, __webpack_require__) {

// 7.1.13 ToObject(argument)
var defined = __webpack_require__(65);
module.exports = function (it) {
  return Object(defined(it));
};


/***/ }),
/* 33 */
/***/ (function(module, exports) {

module.exports = function (exec) {
  try {
    return !!exec();
  } catch (e) {
    return true;
  }
};


/***/ }),
/* 34 */
/***/ (function(module, exports, __webpack_require__) {

var global = __webpack_require__(17);
var core = __webpack_require__(54);
var hide = __webpack_require__(29);
var redefine = __webpack_require__(37);
var ctx = __webpack_require__(73);
var PROTOTYPE = 'prototype';

var $export = function (type, name, source) {
  var IS_FORCED = type & $export.F;
  var IS_GLOBAL = type & $export.G;
  var IS_STATIC = type & $export.S;
  var IS_PROTO = type & $export.P;
  var IS_BIND = type & $export.B;
  var target = IS_GLOBAL ? global : IS_STATIC ? global[name] || (global[name] = {}) : (global[name] || {})[PROTOTYPE];
  var exports = IS_GLOBAL ? core : core[name] || (core[name] = {});
  var expProto = exports[PROTOTYPE] || (exports[PROTOTYPE] = {});
  var key, own, out, exp;
  if (IS_GLOBAL) source = name;
  for (key in source) {
    // contains in native
    own = !IS_FORCED && target && target[key] !== undefined;
    // export native or passed
    out = (own ? target : source)[key];
    // bind timers to global for call from export context
    exp = IS_BIND && own ? ctx(out, global) : IS_PROTO && typeof out == 'function' ? ctx(Function.call, out) : out;
    // extend global
    if (target) redefine(target, key, out, type & $export.U);
    // export
    if (exports[key] != out) hide(exports, key, exp);
    if (IS_PROTO && expProto[key] != out) expProto[key] = out;
  }
};
global.core = core;
// type bitmap
$export.F = 1;   // forced
$export.G = 2;   // global
$export.S = 4;   // static
$export.P = 8;   // proto
$export.B = 16;  // bind
$export.W = 32;  // wrap
$export.U = 64;  // safe
$export.R = 128; // real proto method for `library`
module.exports = $export;


/***/ }),
/* 35 */
/***/ (function(module, exports) {

module.exports = {};


/***/ }),
/* 36 */
/***/ (function(module, exports, __webpack_require__) {

var _Object$getOwnPropertyDescriptor = __webpack_require__(124);

var _Object$defineProperty = __webpack_require__(1);

var _typeof = __webpack_require__(48);

var _WeakMap = __webpack_require__(263);

function _getRequireWildcardCache() {
  if (typeof _WeakMap !== "function") return null;
  var cache = new _WeakMap();

  _getRequireWildcardCache = function _getRequireWildcardCache() {
    return cache;
  };

  return cache;
}

function _interopRequireWildcard(obj) {
  if (obj && obj.__esModule) {
    return obj;
  }

  if (obj === null || _typeof(obj) !== "object" && typeof obj !== "function") {
    return {
      "default": obj
    };
  }

  var cache = _getRequireWildcardCache();

  if (cache && cache.has(obj)) {
    return cache.get(obj);
  }

  var newObj = {};
  var hasPropertyDescriptor = _Object$defineProperty && _Object$getOwnPropertyDescriptor;

  for (var key in obj) {
    if (Object.prototype.hasOwnProperty.call(obj, key)) {
      var desc = hasPropertyDescriptor ? _Object$getOwnPropertyDescriptor(obj, key) : null;

      if (desc && (desc.get || desc.set)) {
        _Object$defineProperty(newObj, key, desc);
      } else {
        newObj[key] = obj[key];
      }
    }
  }

  newObj["default"] = obj;

  if (cache) {
    cache.set(obj, newObj);
  }

  return newObj;
}

module.exports = _interopRequireWildcard;

/***/ }),
/* 37 */
/***/ (function(module, exports, __webpack_require__) {

var global = __webpack_require__(17);
var hide = __webpack_require__(29);
var has = __webpack_require__(61);
var SRC = __webpack_require__(68)('src');
var $toString = __webpack_require__(145);
var TO_STRING = 'toString';
var TPL = ('' + $toString).split(TO_STRING);

__webpack_require__(54).inspectSource = function (it) {
  return $toString.call(it);
};

(module.exports = function (O, key, val, safe) {
  var isFunction = typeof val == 'function';
  if (isFunction) has(val, 'name') || hide(val, 'name', key);
  if (O[key] === val) return;
  if (isFunction) has(val, SRC) || hide(val, SRC, O[key] ? '' + O[key] : TPL.join(String(key)));
  if (O === global) {
    O[key] = val;
  } else if (!safe) {
    delete O[key];
    hide(O, key, val);
  } else if (O[key]) {
    O[key] = val;
  } else {
    hide(O, key, val);
  }
// add fake Function#toString for correct work wrapped methods / constructors with methods like LoDash isNative
})(Function.prototype, TO_STRING, function toString() {
  return typeof this == 'function' && this[SRC] || $toString.call(this);
});


/***/ }),
/* 38 */
/***/ (function(module, exports) {

module.exports = function (it) {
  if (typeof it != 'function') throw TypeError(it + ' is not a function!');
  return it;
};


/***/ }),
/* 39 */
/***/ (function(module, exports, __webpack_require__) {

var dP = __webpack_require__(45).f;
var FProto = Function.prototype;
var nameRE = /^\s*function ([^ (]*)/;
var NAME = 'name';

// 19.2.4.2 name
NAME in FProto || __webpack_require__(27) && dP(FProto, NAME, {
  configurable: true,
  get: function () {
    try {
      return ('' + this).match(nameRE)[1];
    } catch (e) {
      return '';
    }
  }
});


/***/ }),
/* 40 */
/***/ (function(module, exports, __webpack_require__) {

// 19.1.2.14 / 15.2.3.14 Object.keys(O)
var $keys = __webpack_require__(116);
var enumBugKeys = __webpack_require__(78);

module.exports = Object.keys || function keys(O) {
  return $keys(O, enumBugKeys);
};


/***/ }),
/* 41 */
/***/ (function(module, exports, __webpack_require__) {

/**
 * Copyright (c) 2013-present, Facebook, Inc.
 *
 * This source code is licensed under the MIT license found in the
 * LICENSE file in the root directory of this source tree.
 */

if (false) { var throwOnDirectAccess, ReactIs; } else {
  // By explicitly using `prop-types` you are opting into new production behavior.
  // http://fb.me/prop-types-in-prod
  module.exports = __webpack_require__(325)();
}


/***/ }),
/* 42 */
/***/ (function(module, exports) {

// 7.2.1 RequireObjectCoercible(argument)
module.exports = function (it) {
  if (it == undefined) throw TypeError("Can't call method on  " + it);
  return it;
};


/***/ }),
/* 43 */
/***/ (function(module, exports, __webpack_require__) {

// 7.1.15 ToLength
var toInteger = __webpack_require__(57);
var min = Math.min;
module.exports = function (it) {
  return it > 0 ? min(toInteger(it), 0x1fffffffffffff) : 0; // pow(2, 53) - 1 == 9007199254740991
};


/***/ }),
/* 44 */
/***/ (function(module, exports) {

module.exports = function (bitmap, value) {
  return {
    enumerable: !(bitmap & 1),
    configurable: !(bitmap & 2),
    writable: !(bitmap & 4),
    value: value
  };
};


/***/ }),
/* 45 */
/***/ (function(module, exports, __webpack_require__) {

var anObject = __webpack_require__(18);
var IE8_DOM_DEFINE = __webpack_require__(129);
var toPrimitive = __webpack_require__(123);
var dP = Object.defineProperty;

exports.f = __webpack_require__(27) ? Object.defineProperty : function defineProperty(O, P, Attributes) {
  anObject(O);
  P = toPrimitive(P, true);
  anObject(Attributes);
  if (IE8_DOM_DEFINE) try {
    return dP(O, P, Attributes);
  } catch (e) { /* empty */ }
  if ('get' in Attributes || 'set' in Attributes) throw TypeError('Accessors not supported!');
  if ('value' in Attributes) O[P] = Attributes.value;
  return O;
};


/***/ }),
/* 46 */
/***/ (function(module, exports) {

var toString = {}.toString;

module.exports = function (it) {
  return toString.call(it).slice(8, -1);
};


/***/ }),
/* 47 */
/***/ (function(module, exports) {

module.exports = true;


/***/ }),
/* 48 */
/***/ (function(module, exports, __webpack_require__) {

var _Symbol$iterator = __webpack_require__(151);

var _Symbol = __webpack_require__(111);

function _typeof(obj) {
  "@babel/helpers - typeof";

  if (typeof _Symbol === "function" && typeof _Symbol$iterator === "symbol") {
    module.exports = _typeof = function _typeof(obj) {
      return typeof obj;
    };
  } else {
    module.exports = _typeof = function _typeof(obj) {
      return obj && typeof _Symbol === "function" && obj.constructor === _Symbol && obj !== _Symbol.prototype ? "symbol" : typeof obj;
    };
  }

  return _typeof(obj);
}

module.exports = _typeof;

/***/ }),
/* 49 */
/***/ (function(module, exports) {

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;

/***/ }),
/* 50 */
/***/ (function(module, exports) {

exports.f = {}.propertyIsEnumerable;


/***/ }),
/* 51 */
/***/ (function(module, exports, __webpack_require__) {

var pIE = __webpack_require__(50);
var createDesc = __webpack_require__(44);
var toIObject = __webpack_require__(20);
var toPrimitive = __webpack_require__(74);
var has = __webpack_require__(19);
var IE8_DOM_DEFINE = __webpack_require__(114);
var gOPD = Object.getOwnPropertyDescriptor;

exports.f = __webpack_require__(14) ? gOPD : function getOwnPropertyDescriptor(O, P) {
  O = toIObject(O);
  P = toPrimitive(P, true);
  if (IE8_DOM_DEFINE) try {
    return gOPD(O, P);
  } catch (e) { /* empty */ }
  if (has(O, P)) return createDesc(!pIE.f.call(O, P), O[P]);
};


/***/ }),
/* 52 */
/***/ (function(module, exports, __webpack_require__) {

// 19.1.2.2 / 15.2.3.5 Object.create(O [, Properties])
var anObject = __webpack_require__(13);
var dPs = __webpack_require__(136);
var enumBugKeys = __webpack_require__(78);
var IE_PROTO = __webpack_require__(75)('IE_PROTO');
var Empty = function () { /* empty */ };
var PROTOTYPE = 'prototype';

// Create object with fake `null` prototype: use iframe Object with cleared prototype
var createDict = function () {
  // Thrash, waste and sodomy: IE GC bug
  var iframe = __webpack_require__(92)('iframe');
  var i = enumBugKeys.length;
  var lt = '<';
  var gt = '>';
  var iframeDocument;
  iframe.style.display = 'none';
  __webpack_require__(131).appendChild(iframe);
  iframe.src = 'javascript:'; // eslint-disable-line no-script-url
  // createDict = iframe.contentWindow.Object;
  // html.removeChild(iframe);
  iframeDocument = iframe.contentWindow.document;
  iframeDocument.open();
  iframeDocument.write(lt + 'script' + gt + 'document.F=Object' + lt + '/script' + gt);
  iframeDocument.close();
  createDict = iframeDocument.F;
  while (i--) delete createDict[PROTOTYPE][enumBugKeys[i]];
  return createDict();
};

module.exports = Object.create || function create(O, Properties) {
  var result;
  if (O !== null) {
    Empty[PROTOTYPE] = anObject(O);
    result = new Empty();
    Empty[PROTOTYPE] = null;
    // add "__proto__" for Object.getPrototypeOf polyfill
    result[IE_PROTO] = O;
  } else result = createDict();
  return Properties === undefined ? result : dPs(result, Properties);
};


/***/ }),
/* 53 */
/***/ (function(module, exports, __webpack_require__) {

var def = __webpack_require__(15).f;
var has = __webpack_require__(19);
var TAG = __webpack_require__(10)('toStringTag');

module.exports = function (it, tag, stat) {
  if (it && !has(it = stat ? it : it.prototype, TAG)) def(it, TAG, { configurable: true, value: tag });
};


/***/ }),
/* 54 */
/***/ (function(module, exports) {

var core = module.exports = { version: '2.6.11' };
if (typeof __e == 'number') __e = core; // eslint-disable-line no-undef


/***/ }),
/* 55 */
/***/ (function(module, exports, __webpack_require__) {

module.exports = __webpack_require__(239);

/***/ }),
/* 56 */
/***/ (function(module, exports) {

var toString = {}.toString;

module.exports = function (it) {
  return toString.call(it).slice(8, -1);
};


/***/ }),
/* 57 */
/***/ (function(module, exports) {

// 7.1.4 ToInteger
var ceil = Math.ceil;
var floor = Math.floor;
module.exports = function (it) {
  return isNaN(it = +it) ? 0 : (it > 0 ? floor : ceil)(it);
};


/***/ }),
/* 58 */
/***/ (function(module, exports, __webpack_require__) {

"use strict";


var anObject = __webpack_require__(18);
var toObject = __webpack_require__(96);
var toLength = __webpack_require__(43);
var toInteger = __webpack_require__(57);
var advanceStringIndex = __webpack_require__(105);
var regExpExec = __webpack_require__(94);
var max = Math.max;
var min = Math.min;
var floor = Math.floor;
var SUBSTITUTION_SYMBOLS = /\$([$&`']|\d\d?|<[^>]*>)/g;
var SUBSTITUTION_SYMBOLS_NO_NAMED = /\$([$&`']|\d\d?)/g;

var maybeToString = function (it) {
  return it === undefined ? it : String(it);
};

// @@replace logic
__webpack_require__(95)('replace', 2, function (defined, REPLACE, $replace, maybeCallNative) {
  return [
    // `String.prototype.replace` method
    // https://tc39.github.io/ecma262/#sec-string.prototype.replace
    function replace(searchValue, replaceValue) {
      var O = defined(this);
      var fn = searchValue == undefined ? undefined : searchValue[REPLACE];
      return fn !== undefined
        ? fn.call(searchValue, O, replaceValue)
        : $replace.call(String(O), searchValue, replaceValue);
    },
    // `RegExp.prototype[@@replace]` method
    // https://tc39.github.io/ecma262/#sec-regexp.prototype-@@replace
    function (regexp, replaceValue) {
      var res = maybeCallNative($replace, regexp, this, replaceValue);
      if (res.done) return res.value;

      var rx = anObject(regexp);
      var S = String(this);
      var functionalReplace = typeof replaceValue === 'function';
      if (!functionalReplace) replaceValue = String(replaceValue);
      var global = rx.global;
      if (global) {
        var fullUnicode = rx.unicode;
        rx.lastIndex = 0;
      }
      var results = [];
      while (true) {
        var result = regExpExec(rx, S);
        if (result === null) break;
        results.push(result);
        if (!global) break;
        var matchStr = String(result[0]);
        if (matchStr === '') rx.lastIndex = advanceStringIndex(S, toLength(rx.lastIndex), fullUnicode);
      }
      var accumulatedResult = '';
      var nextSourcePosition = 0;
      for (var i = 0; i < results.length; i++) {
        result = results[i];
        var matched = String(result[0]);
        var position = max(min(toInteger(result.index), S.length), 0);
        var captures = [];
        // NOTE: This is equivalent to
        //   captures = result.slice(1).map(maybeToString)
        // but for some reason `nativeSlice.call(result, 1, result.length)` (called in
        // the slice polyfill when slicing native arrays) "doesn't work" in safari 9 and
        // causes a crash (https://pastebin.com/N21QzeQA) when trying to debug it.
        for (var j = 1; j < result.length; j++) captures.push(maybeToString(result[j]));
        var namedCaptures = result.groups;
        if (functionalReplace) {
          var replacerArgs = [matched].concat(captures, position, S);
          if (namedCaptures !== undefined) replacerArgs.push(namedCaptures);
          var replacement = String(replaceValue.apply(undefined, replacerArgs));
        } else {
          replacement = getSubstitution(matched, S, position, captures, namedCaptures, replaceValue);
        }
        if (position >= nextSourcePosition) {
          accumulatedResult += S.slice(nextSourcePosition, position) + replacement;
          nextSourcePosition = position + matched.length;
        }
      }
      return accumulatedResult + S.slice(nextSourcePosition);
    }
  ];

    // https://tc39.github.io/ecma262/#sec-getsubstitution
  function getSubstitution(matched, str, position, captures, namedCaptures, replacement) {
    var tailPos = position + matched.length;
    var m = captures.length;
    var symbols = SUBSTITUTION_SYMBOLS_NO_NAMED;
    if (namedCaptures !== undefined) {
      namedCaptures = toObject(namedCaptures);
      symbols = SUBSTITUTION_SYMBOLS;
    }
    return $replace.call(replacement, symbols, function (match, ch) {
      var capture;
      switch (ch.charAt(0)) {
        case '$': return '$';
        case '&': return matched;
        case '`': return str.slice(0, position);
        case "'": return str.slice(tailPos);
        case '<':
          capture = namedCaptures[ch.slice(1, -1)];
          break;
        default: // \d\d?
          var n = +ch;
          if (n === 0) return match;
          if (n > m) {
            var f = floor(n / 10);
            if (f === 0) return match;
            if (f <= m) return captures[f - 1] === undefined ? ch.charAt(1) : captures[f - 1] + ch.charAt(1);
            return match;
          }
          capture = captures[n - 1];
      }
      return capture === undefined ? '' : capture;
    });
  }
});


/***/ }),
/* 59 */
/***/ (function(module, exports) {

var id = 0;
var px = Math.random();
module.exports = function (key) {
  return 'Symbol('.concat(key === undefined ? '' : key, ')_', (++id + px).toString(36));
};


/***/ }),
/* 60 */
/***/ (function(module, exports, __webpack_require__) {

"use strict";

var $at = __webpack_require__(173)(true);

// 21.1.3.27 String.prototype[@@iterator]()
__webpack_require__(108)(String, 'String', function (iterated) {
  this._t = String(iterated); // target
  this._i = 0;                // next index
// 21.1.5.2.1 %StringIteratorPrototype%.next()
}, function () {
  var O = this._t;
  var index = this._i;
  var point;
  if (index >= O.length) return { value: undefined, done: true };
  point = $at(O, index);
  this._i += point.length;
  return { value: point, done: false };
});


/***/ }),
/* 61 */
/***/ (function(module, exports) {

var hasOwnProperty = {}.hasOwnProperty;
module.exports = function (it, key) {
  return hasOwnProperty.call(it, key);
};


/***/ }),
/* 62 */
/***/ (function(module, exports, __webpack_require__) {

__webpack_require__(175);
var global = __webpack_require__(8);
var hide = __webpack_require__(24);
var Iterators = __webpack_require__(35);
var TO_STRING_TAG = __webpack_require__(10)('toStringTag');

var DOMIterables = ('CSSRuleList,CSSStyleDeclaration,CSSValueList,ClientRectList,DOMRectList,DOMStringList,' +
  'DOMTokenList,DataTransferItemList,FileList,HTMLAllCollection,HTMLCollection,HTMLFormElement,HTMLSelectElement,' +
  'MediaList,MimeTypeArray,NamedNodeMap,NodeList,PaintRequestList,Plugin,PluginArray,SVGLengthList,SVGNumberList,' +
  'SVGPathSegList,SVGPointList,SVGStringList,SVGTransformList,SourceBufferList,StyleSheetList,TextTrackCueList,' +
  'TextTrackList,TouchList').split(',');

for (var i = 0; i < DOMIterables.length; i++) {
  var NAME = DOMIterables[i];
  var Collection = global[NAME];
  var proto = Collection && Collection.prototype;
  if (proto && !proto[TO_STRING_TAG]) hide(proto, TO_STRING_TAG, NAME);
  Iterators[NAME] = Iterators.Array;
}


/***/ }),
/* 63 */
/***/ (function(module, exports, __webpack_require__) {

exports.f = __webpack_require__(10);


/***/ }),
/* 64 */
/***/ (function(module, exports, __webpack_require__) {

// 19.1.2.9 / 15.2.3.2 Object.getPrototypeOf(O)
var has = __webpack_require__(19);
var toObject = __webpack_require__(32);
var IE_PROTO = __webpack_require__(75)('IE_PROTO');
var ObjectProto = Object.prototype;

module.exports = Object.getPrototypeOf || function (O) {
  O = toObject(O);
  if (has(O, IE_PROTO)) return O[IE_PROTO];
  if (typeof O.constructor == 'function' && O instanceof O.constructor) {
    return O.constructor.prototype;
  } return O instanceof Object ? ObjectProto : null;
};


/***/ }),
/* 65 */
/***/ (function(module, exports) {

// 7.2.1 RequireObjectCoercible(argument)
module.exports = function (it) {
  if (it == undefined) throw TypeError("Can't call method on  " + it);
  return it;
};


/***/ }),
/* 66 */
/***/ (function(module, exports, __webpack_require__) {

/**
 * Copyright (c) 2014-present, Facebook, Inc.
 *
 * This source code is licensed under the MIT license found in the
 * LICENSE file in the root directory of this source tree.
 */

var runtime = (function (exports) {
  "use strict";

  var Op = Object.prototype;
  var hasOwn = Op.hasOwnProperty;
  var undefined; // More compressible than void 0.
  var $Symbol = typeof Symbol === "function" ? Symbol : {};
  var iteratorSymbol = $Symbol.iterator || "@@iterator";
  var asyncIteratorSymbol = $Symbol.asyncIterator || "@@asyncIterator";
  var toStringTagSymbol = $Symbol.toStringTag || "@@toStringTag";

  function define(obj, key, value) {
    Object.defineProperty(obj, key, {
      value: value,
      enumerable: true,
      configurable: true,
      writable: true
    });
    return obj[key];
  }
  try {
    // IE 8 has a broken Object.defineProperty that only works on DOM objects.
    define({}, "");
  } catch (err) {
    define = function(obj, key, value) {
      return obj[key] = value;
    };
  }

  function wrap(innerFn, outerFn, self, tryLocsList) {
    // If outerFn provided and outerFn.prototype is a Generator, then outerFn.prototype instanceof Generator.
    var protoGenerator = outerFn && outerFn.prototype instanceof Generator ? outerFn : Generator;
    var generator = Object.create(protoGenerator.prototype);
    var context = new Context(tryLocsList || []);

    // The ._invoke method unifies the implementations of the .next,
    // .throw, and .return methods.
    generator._invoke = makeInvokeMethod(innerFn, self, context);

    return generator;
  }
  exports.wrap = wrap;

  // Try/catch helper to minimize deoptimizations. Returns a completion
  // record like context.tryEntries[i].completion. This interface could
  // have been (and was previously) designed to take a closure to be
  // invoked without arguments, but in all the cases we care about we
  // already have an existing method we want to call, so there's no need
  // to create a new function object. We can even get away with assuming
  // the method takes exactly one argument, since that happens to be true
  // in every case, so we don't have to touch the arguments object. The
  // only additional allocation required is the completion record, which
  // has a stable shape and so hopefully should be cheap to allocate.
  function tryCatch(fn, obj, arg) {
    try {
      return { type: "normal", arg: fn.call(obj, arg) };
    } catch (err) {
      return { type: "throw", arg: err };
    }
  }

  var GenStateSuspendedStart = "suspendedStart";
  var GenStateSuspendedYield = "suspendedYield";
  var GenStateExecuting = "executing";
  var GenStateCompleted = "completed";

  // Returning this object from the innerFn has the same effect as
  // breaking out of the dispatch switch statement.
  var ContinueSentinel = {};

  // Dummy constructor functions that we use as the .constructor and
  // .constructor.prototype properties for functions that return Generator
  // objects. For full spec compliance, you may wish to configure your
  // minifier not to mangle the names of these two functions.
  function Generator() {}
  function GeneratorFunction() {}
  function GeneratorFunctionPrototype() {}

  // This is a polyfill for %IteratorPrototype% for environments that
  // don't natively support it.
  var IteratorPrototype = {};
  IteratorPrototype[iteratorSymbol] = function () {
    return this;
  };

  var getProto = Object.getPrototypeOf;
  var NativeIteratorPrototype = getProto && getProto(getProto(values([])));
  if (NativeIteratorPrototype &&
      NativeIteratorPrototype !== Op &&
      hasOwn.call(NativeIteratorPrototype, iteratorSymbol)) {
    // This environment has a native %IteratorPrototype%; use it instead
    // of the polyfill.
    IteratorPrototype = NativeIteratorPrototype;
  }

  var Gp = GeneratorFunctionPrototype.prototype =
    Generator.prototype = Object.create(IteratorPrototype);
  GeneratorFunction.prototype = Gp.constructor = GeneratorFunctionPrototype;
  GeneratorFunctionPrototype.constructor = GeneratorFunction;
  GeneratorFunction.displayName = define(
    GeneratorFunctionPrototype,
    toStringTagSymbol,
    "GeneratorFunction"
  );

  // Helper for defining the .next, .throw, and .return methods of the
  // Iterator interface in terms of a single ._invoke method.
  function defineIteratorMethods(prototype) {
    ["next", "throw", "return"].forEach(function(method) {
      define(prototype, method, function(arg) {
        return this._invoke(method, arg);
      });
    });
  }

  exports.isGeneratorFunction = function(genFun) {
    var ctor = typeof genFun === "function" && genFun.constructor;
    return ctor
      ? ctor === GeneratorFunction ||
        // For the native GeneratorFunction constructor, the best we can
        // do is to check its .name property.
        (ctor.displayName || ctor.name) === "GeneratorFunction"
      : false;
  };

  exports.mark = function(genFun) {
    if (Object.setPrototypeOf) {
      Object.setPrototypeOf(genFun, GeneratorFunctionPrototype);
    } else {
      genFun.__proto__ = GeneratorFunctionPrototype;
      define(genFun, toStringTagSymbol, "GeneratorFunction");
    }
    genFun.prototype = Object.create(Gp);
    return genFun;
  };

  // Within the body of any async function, `await x` is transformed to
  // `yield regeneratorRuntime.awrap(x)`, so that the runtime can test
  // `hasOwn.call(value, "__await")` to determine if the yielded value is
  // meant to be awaited.
  exports.awrap = function(arg) {
    return { __await: arg };
  };

  function AsyncIterator(generator, PromiseImpl) {
    function invoke(method, arg, resolve, reject) {
      var record = tryCatch(generator[method], generator, arg);
      if (record.type === "throw") {
        reject(record.arg);
      } else {
        var result = record.arg;
        var value = result.value;
        if (value &&
            typeof value === "object" &&
            hasOwn.call(value, "__await")) {
          return PromiseImpl.resolve(value.__await).then(function(value) {
            invoke("next", value, resolve, reject);
          }, function(err) {
            invoke("throw", err, resolve, reject);
          });
        }

        return PromiseImpl.resolve(value).then(function(unwrapped) {
          // When a yielded Promise is resolved, its final value becomes
          // the .value of the Promise<{value,done}> result for the
          // current iteration.
          result.value = unwrapped;
          resolve(result);
        }, function(error) {
          // If a rejected Promise was yielded, throw the rejection back
          // into the async generator function so it can be handled there.
          return invoke("throw", error, resolve, reject);
        });
      }
    }

    var previousPromise;

    function enqueue(method, arg) {
      function callInvokeWithMethodAndArg() {
        return new PromiseImpl(function(resolve, reject) {
          invoke(method, arg, resolve, reject);
        });
      }

      return previousPromise =
        // If enqueue has been called before, then we want to wait until
        // all previous Promises have been resolved before calling invoke,
        // so that results are always delivered in the correct order. If
        // enqueue has not been called before, then it is important to
        // call invoke immediately, without waiting on a callback to fire,
        // so that the async generator function has the opportunity to do
        // any necessary setup in a predictable way. This predictability
        // is why the Promise constructor synchronously invokes its
        // executor callback, and why async functions synchronously
        // execute code before the first await. Since we implement simple
        // async functions in terms of async generators, it is especially
        // important to get this right, even though it requires care.
        previousPromise ? previousPromise.then(
          callInvokeWithMethodAndArg,
          // Avoid propagating failures to Promises returned by later
          // invocations of the iterator.
          callInvokeWithMethodAndArg
        ) : callInvokeWithMethodAndArg();
    }

    // Define the unified helper method that is used to implement .next,
    // .throw, and .return (see defineIteratorMethods).
    this._invoke = enqueue;
  }

  defineIteratorMethods(AsyncIterator.prototype);
  AsyncIterator.prototype[asyncIteratorSymbol] = function () {
    return this;
  };
  exports.AsyncIterator = AsyncIterator;

  // Note that simple async functions are implemented on top of
  // AsyncIterator objects; they just return a Promise for the value of
  // the final result produced by the iterator.
  exports.async = function(innerFn, outerFn, self, tryLocsList, PromiseImpl) {
    if (PromiseImpl === void 0) PromiseImpl = Promise;

    var iter = new AsyncIterator(
      wrap(innerFn, outerFn, self, tryLocsList),
      PromiseImpl
    );

    return exports.isGeneratorFunction(outerFn)
      ? iter // If outerFn is a generator, return the full iterator.
      : iter.next().then(function(result) {
          return result.done ? result.value : iter.next();
        });
  };

  function makeInvokeMethod(innerFn, self, context) {
    var state = GenStateSuspendedStart;

    return function invoke(method, arg) {
      if (state === GenStateExecuting) {
        throw new Error("Generator is already running");
      }

      if (state === GenStateCompleted) {
        if (method === "throw") {
          throw arg;
        }

        // Be forgiving, per 25.3.3.3.3 of the spec:
        // https://people.mozilla.org/~jorendorff/es6-draft.html#sec-generatorresume
        return doneResult();
      }

      context.method = method;
      context.arg = arg;

      while (true) {
        var delegate = context.delegate;
        if (delegate) {
          var delegateResult = maybeInvokeDelegate(delegate, context);
          if (delegateResult) {
            if (delegateResult === ContinueSentinel) continue;
            return delegateResult;
          }
        }

        if (context.method === "next") {
          // Setting context._sent for legacy support of Babel's
          // function.sent implementation.
          context.sent = context._sent = context.arg;

        } else if (context.method === "throw") {
          if (state === GenStateSuspendedStart) {
            state = GenStateCompleted;
            throw context.arg;
          }

          context.dispatchException(context.arg);

        } else if (context.method === "return") {
          context.abrupt("return", context.arg);
        }

        state = GenStateExecuting;

        var record = tryCatch(innerFn, self, context);
        if (record.type === "normal") {
          // If an exception is thrown from innerFn, we leave state ===
          // GenStateExecuting and loop back for another invocation.
          state = context.done
            ? GenStateCompleted
            : GenStateSuspendedYield;

          if (record.arg === ContinueSentinel) {
            continue;
          }

          return {
            value: record.arg,
            done: context.done
          };

        } else if (record.type === "throw") {
          state = GenStateCompleted;
          // Dispatch the exception by looping back around to the
          // context.dispatchException(context.arg) call above.
          context.method = "throw";
          context.arg = record.arg;
        }
      }
    };
  }

  // Call delegate.iterator[context.method](context.arg) and handle the
  // result, either by returning a { value, done } result from the
  // delegate iterator, or by modifying context.method and context.arg,
  // setting context.delegate to null, and returning the ContinueSentinel.
  function maybeInvokeDelegate(delegate, context) {
    var method = delegate.iterator[context.method];
    if (method === undefined) {
      // A .throw or .return when the delegate iterator has no .throw
      // method always terminates the yield* loop.
      context.delegate = null;

      if (context.method === "throw") {
        // Note: ["return"] must be used for ES3 parsing compatibility.
        if (delegate.iterator["return"]) {
          // If the delegate iterator has a return method, give it a
          // chance to clean up.
          context.method = "return";
          context.arg = undefined;
          maybeInvokeDelegate(delegate, context);

          if (context.method === "throw") {
            // If maybeInvokeDelegate(context) changed context.method from
            // "return" to "throw", let that override the TypeError below.
            return ContinueSentinel;
          }
        }

        context.method = "throw";
        context.arg = new TypeError(
          "The iterator does not provide a 'throw' method");
      }

      return ContinueSentinel;
    }

    var record = tryCatch(method, delegate.iterator, context.arg);

    if (record.type === "throw") {
      context.method = "throw";
      context.arg = record.arg;
      context.delegate = null;
      return ContinueSentinel;
    }

    var info = record.arg;

    if (! info) {
      context.method = "throw";
      context.arg = new TypeError("iterator result is not an object");
      context.delegate = null;
      return ContinueSentinel;
    }

    if (info.done) {
      // Assign the result of the finished delegate to the temporary
      // variable specified by delegate.resultName (see delegateYield).
      context[delegate.resultName] = info.value;

      // Resume execution at the desired location (see delegateYield).
      context.next = delegate.nextLoc;

      // If context.method was "throw" but the delegate handled the
      // exception, let the outer generator proceed normally. If
      // context.method was "next", forget context.arg since it has been
      // "consumed" by the delegate iterator. If context.method was
      // "return", allow the original .return call to continue in the
      // outer generator.
      if (context.method !== "return") {
        context.method = "next";
        context.arg = undefined;
      }

    } else {
      // Re-yield the result returned by the delegate method.
      return info;
    }

    // The delegate iterator is finished, so forget it and continue with
    // the outer generator.
    context.delegate = null;
    return ContinueSentinel;
  }

  // Define Generator.prototype.{next,throw,return} in terms of the
  // unified ._invoke helper method.
  defineIteratorMethods(Gp);

  define(Gp, toStringTagSymbol, "Generator");

  // A Generator should always return itself as the iterator object when the
  // @@iterator function is called on it. Some browsers' implementations of the
  // iterator prototype chain incorrectly implement this, causing the Generator
  // object to not be returned from this call. This ensures that doesn't happen.
  // See https://github.com/facebook/regenerator/issues/274 for more details.
  Gp[iteratorSymbol] = function() {
    return this;
  };

  Gp.toString = function() {
    return "[object Generator]";
  };

  function pushTryEntry(locs) {
    var entry = { tryLoc: locs[0] };

    if (1 in locs) {
      entry.catchLoc = locs[1];
    }

    if (2 in locs) {
      entry.finallyLoc = locs[2];
      entry.afterLoc = locs[3];
    }

    this.tryEntries.push(entry);
  }

  function resetTryEntry(entry) {
    var record = entry.completion || {};
    record.type = "normal";
    delete record.arg;
    entry.completion = record;
  }

  function Context(tryLocsList) {
    // The root entry object (effectively a try statement without a catch
    // or a finally block) gives us a place to store values thrown from
    // locations where there is no enclosing try statement.
    this.tryEntries = [{ tryLoc: "root" }];
    tryLocsList.forEach(pushTryEntry, this);
    this.reset(true);
  }

  exports.keys = function(object) {
    var keys = [];
    for (var key in object) {
      keys.push(key);
    }
    keys.reverse();

    // Rather than returning an object with a next method, we keep
    // things simple and return the next function itself.
    return function next() {
      while (keys.length) {
        var key = keys.pop();
        if (key in object) {
          next.value = key;
          next.done = false;
          return next;
        }
      }

      // To avoid creating an additional object, we just hang the .value
      // and .done properties off the next function object itself. This
      // also ensures that the minifier will not anonymize the function.
      next.done = true;
      return next;
    };
  };

  function values(iterable) {
    if (iterable) {
      var iteratorMethod = iterable[iteratorSymbol];
      if (iteratorMethod) {
        return iteratorMethod.call(iterable);
      }

      if (typeof iterable.next === "function") {
        return iterable;
      }

      if (!isNaN(iterable.length)) {
        var i = -1, next = function next() {
          while (++i < iterable.length) {
            if (hasOwn.call(iterable, i)) {
              next.value = iterable[i];
              next.done = false;
              return next;
            }
          }

          next.value = undefined;
          next.done = true;

          return next;
        };

        return next.next = next;
      }
    }

    // Return an iterator with no values.
    return { next: doneResult };
  }
  exports.values = values;

  function doneResult() {
    return { value: undefined, done: true };
  }

  Context.prototype = {
    constructor: Context,

    reset: function(skipTempReset) {
      this.prev = 0;
      this.next = 0;
      // Resetting context._sent for legacy support of Babel's
      // function.sent implementation.
      this.sent = this._sent = undefined;
      this.done = false;
      this.delegate = null;

      this.method = "next";
      this.arg = undefined;

      this.tryEntries.forEach(resetTryEntry);

      if (!skipTempReset) {
        for (var name in this) {
          // Not sure about the optimal order of these conditions:
          if (name.charAt(0) === "t" &&
              hasOwn.call(this, name) &&
              !isNaN(+name.slice(1))) {
            this[name] = undefined;
          }
        }
      }
    },

    stop: function() {
      this.done = true;

      var rootEntry = this.tryEntries[0];
      var rootRecord = rootEntry.completion;
      if (rootRecord.type === "throw") {
        throw rootRecord.arg;
      }

      return this.rval;
    },

    dispatchException: function(exception) {
      if (this.done) {
        throw exception;
      }

      var context = this;
      function handle(loc, caught) {
        record.type = "throw";
        record.arg = exception;
        context.next = loc;

        if (caught) {
          // If the dispatched exception was caught by a catch block,
          // then let that catch block handle the exception normally.
          context.method = "next";
          context.arg = undefined;
        }

        return !! caught;
      }

      for (var i = this.tryEntries.length - 1; i >= 0; --i) {
        var entry = this.tryEntries[i];
        var record = entry.completion;

        if (entry.tryLoc === "root") {
          // Exception thrown outside of any try block that could handle
          // it, so set the completion value of the entire function to
          // throw the exception.
          return handle("end");
        }

        if (entry.tryLoc <= this.prev) {
          var hasCatch = hasOwn.call(entry, "catchLoc");
          var hasFinally = hasOwn.call(entry, "finallyLoc");

          if (hasCatch && hasFinally) {
            if (this.prev < entry.catchLoc) {
              return handle(entry.catchLoc, true);
            } else if (this.prev < entry.finallyLoc) {
              return handle(entry.finallyLoc);
            }

          } else if (hasCatch) {
            if (this.prev < entry.catchLoc) {
              return handle(entry.catchLoc, true);
            }

          } else if (hasFinally) {
            if (this.prev < entry.finallyLoc) {
              return handle(entry.finallyLoc);
            }

          } else {
            throw new Error("try statement without catch or finally");
          }
        }
      }
    },

    abrupt: function(type, arg) {
      for (var i = this.tryEntries.length - 1; i >= 0; --i) {
        var entry = this.tryEntries[i];
        if (entry.tryLoc <= this.prev &&
            hasOwn.call(entry, "finallyLoc") &&
            this.prev < entry.finallyLoc) {
          var finallyEntry = entry;
          break;
        }
      }

      if (finallyEntry &&
          (type === "break" ||
           type === "continue") &&
          finallyEntry.tryLoc <= arg &&
          arg <= finallyEntry.finallyLoc) {
        // Ignore the finally entry if control is not jumping to a
        // location outside the try/catch block.
        finallyEntry = null;
      }

      var record = finallyEntry ? finallyEntry.completion : {};
      record.type = type;
      record.arg = arg;

      if (finallyEntry) {
        this.method = "next";
        this.next = finallyEntry.finallyLoc;
        return ContinueSentinel;
      }

      return this.complete(record);
    },

    complete: function(record, afterLoc) {
      if (record.type === "throw") {
        throw record.arg;
      }

      if (record.type === "break" ||
          record.type === "continue") {
        this.next = record.arg;
      } else if (record.type === "return") {
        this.rval = this.arg = record.arg;
        this.method = "return";
        this.next = "end";
      } else if (record.type === "normal" && afterLoc) {
        this.next = afterLoc;
      }

      return ContinueSentinel;
    },

    finish: function(finallyLoc) {
      for (var i = this.tryEntries.length - 1; i >= 0; --i) {
        var entry = this.tryEntries[i];
        if (entry.finallyLoc === finallyLoc) {
          this.complete(entry.completion, entry.afterLoc);
          resetTryEntry(entry);
          return ContinueSentinel;
        }
      }
    },

    "catch": function(tryLoc) {
      for (var i = this.tryEntries.length - 1; i >= 0; --i) {
        var entry = this.tryEntries[i];
        if (entry.tryLoc === tryLoc) {
          var record = entry.completion;
          if (record.type === "throw") {
            var thrown = record.arg;
            resetTryEntry(entry);
          }
          return thrown;
        }
      }

      // The context.catch method must only be called with a location
      // argument that corresponds to a known catch block.
      throw new Error("illegal catch attempt");
    },

    delegateYield: function(iterable, resultName, nextLoc) {
      this.delegate = {
        iterator: values(iterable),
        resultName: resultName,
        nextLoc: nextLoc
      };

      if (this.method === "next") {
        // Deliberately forget the last sent value so that we don't
        // accidentally pass it on to the delegate.
        this.arg = undefined;
      }

      return ContinueSentinel;
    }
  };

  // Regardless of whether this script is executing as a CommonJS module
  // or not, return the runtime object so that we can declare the variable
  // regeneratorRuntime in the outer scope, which allows this module to be
  // injected easily by `bin/regenerator --include-runtime script.js`.
  return exports;

}(
  // If this script is executing as a CommonJS module, use module.exports
  // as the regeneratorRuntime namespace. Otherwise create a new empty
  // object. Either way, the resulting object will be used to initialize
  // the regeneratorRuntime variable at the top of this file.
   true ? module.exports : undefined
));

try {
  regeneratorRuntime = runtime;
} catch (accidentalStrictMode) {
  // This module should not be running in strict mode, so the above
  // assignment should always work unless something is misconfigured. Just
  // in case runtime.js accidentally runs in strict mode, we can escape
  // strict mode using a global Function call. This could conceivably fail
  // if a Content Security Policy forbids using Function, but in that case
  // the proper solution is to fix the accidental strict mode problem. If
  // you've misconfigured your bundler to force strict mode and applied a
  // CSP to forbid Function, and you're not willing to fix either of those
  // problems, please detail your unique predicament in a GitHub issue.
  Function("r", "regeneratorRuntime = r")(runtime);
}


/***/ }),
/* 67 */
/***/ (function(module, exports, __webpack_require__) {

var core = __webpack_require__(54);
var global = __webpack_require__(17);
var SHARED = '__core-js_shared__';
var store = global[SHARED] || (global[SHARED] = {});

(module.exports = function (key, value) {
  return store[key] || (store[key] = value !== undefined ? value : {});
})('versions', []).push({
  version: core.version,
  mode: __webpack_require__(110) ? 'pure' : 'global',
  copyright: '© 2019 Denis Pushkarev (zloirock.ru)'
});


/***/ }),
/* 68 */
/***/ (function(module, exports) {

var id = 0;
var px = Math.random();
module.exports = function (key) {
  return 'Symbol('.concat(key === undefined ? '' : key, ')_', (++id + px).toString(36));
};


/***/ }),
/* 69 */
/***/ (function(module, exports, __webpack_require__) {

// 7.1.15 ToLength
var toInteger = __webpack_require__(77);
var min = Math.min;
module.exports = function (it) {
  return it > 0 ? min(toInteger(it), 0x1fffffffffffff) : 0; // pow(2, 53) - 1 == 9007199254740991
};


/***/ }),
/* 70 */
/***/ (function(module, exports, __webpack_require__) {

var META = __webpack_require__(59)('meta');
var isObject = __webpack_require__(9);
var has = __webpack_require__(19);
var setDesc = __webpack_require__(15).f;
var id = 0;
var isExtensible = Object.isExtensible || function () {
  return true;
};
var FREEZE = !__webpack_require__(22)(function () {
  return isExtensible(Object.preventExtensions({}));
});
var setMeta = function (it) {
  setDesc(it, META, { value: {
    i: 'O' + ++id, // object ID
    w: {}          // weak collections IDs
  } });
};
var fastKey = function (it, create) {
  // return primitive with prefix
  if (!isObject(it)) return typeof it == 'symbol' ? it : (typeof it == 'string' ? 'S' : 'P') + it;
  if (!has(it, META)) {
    // can't set metadata to uncaught frozen object
    if (!isExtensible(it)) return 'F';
    // not necessary to add metadata
    if (!create) return 'E';
    // add missing metadata
    setMeta(it);
  // return object ID
  } return it[META].i;
};
var getWeak = function (it, create) {
  if (!has(it, META)) {
    // can't set metadata to uncaught frozen object
    if (!isExtensible(it)) return true;
    // not necessary to add metadata
    if (!create) return false;
    // add missing metadata
    setMeta(it);
  // return hash weak collections IDs
  } return it[META].w;
};
// add metadata on freeze-family methods calling
var onFreeze = function (it) {
  if (FREEZE && meta.NEED && isExtensible(it) && !has(it, META)) setMeta(it);
  return it;
};
var meta = module.exports = {
  KEY: META,
  NEED: false,
  fastKey: fastKey,
  getWeak: getWeak,
  onFreeze: onFreeze
};


/***/ }),
/* 71 */
/***/ (function(module, exports) {

exports.f = Object.getOwnPropertySymbols;


/***/ }),
/* 72 */
/***/ (function(module, exports, __webpack_require__) {

"use strict";

// 19.1.3.6 Object.prototype.toString()
var classof = __webpack_require__(113);
var test = {};
test[__webpack_require__(12)('toStringTag')] = 'z';
if (test + '' != '[object z]') {
  __webpack_require__(37)(Object.prototype, 'toString', function toString() {
    return '[object ' + classof(this) + ']';
  }, true);
}


/***/ }),
/* 73 */
/***/ (function(module, exports, __webpack_require__) {

// optional / simple context binding
var aFunction = __webpack_require__(91);
module.exports = function (fn, that, length) {
  aFunction(fn);
  if (that === undefined) return fn;
  switch (length) {
    case 1: return function (a) {
      return fn.call(that, a);
    };
    case 2: return function (a, b) {
      return fn.call(that, a, b);
    };
    case 3: return function (a, b, c) {
      return fn.call(that, a, b, c);
    };
  }
  return function (/* ...args */) {
    return fn.apply(that, arguments);
  };
};


/***/ }),
/* 74 */
/***/ (function(module, exports, __webpack_require__) {

// 7.1.1 ToPrimitive(input [, PreferredType])
var isObject = __webpack_require__(9);
// instead of the ES6 spec version, we didn't implement @@toPrimitive case
// and the second argument - flag - preferred type is a string
module.exports = function (it, S) {
  if (!isObject(it)) return it;
  var fn, val;
  if (S && typeof (fn = it.toString) == 'function' && !isObject(val = fn.call(it))) return val;
  if (typeof (fn = it.valueOf) == 'function' && !isObject(val = fn.call(it))) return val;
  if (!S && typeof (fn = it.toString) == 'function' && !isObject(val = fn.call(it))) return val;
  throw TypeError("Can't convert object to primitive value");
};


/***/ }),
/* 75 */
/***/ (function(module, exports, __webpack_require__) {

var shared = __webpack_require__(76)('keys');
var uid = __webpack_require__(59);
module.exports = function (key) {
  return shared[key] || (shared[key] = uid(key));
};


/***/ }),
/* 76 */
/***/ (function(module, exports, __webpack_require__) {

var core = __webpack_require__(6);
var global = __webpack_require__(8);
var SHARED = '__core-js_shared__';
var store = global[SHARED] || (global[SHARED] = {});

(module.exports = function (key, value) {
  return store[key] || (store[key] = value !== undefined ? value : {});
})('versions', []).push({
  version: core.version,
  mode: __webpack_require__(47) ? 'pure' : 'global',
  copyright: '© 2019 Denis Pushkarev (zloirock.ru)'
});


/***/ }),
/* 77 */
/***/ (function(module, exports) {

// 7.1.4 ToInteger
var ceil = Math.ceil;
var floor = Math.floor;
module.exports = function (it) {
  return isNaN(it = +it) ? 0 : (it > 0 ? floor : ceil)(it);
};


/***/ }),
/* 78 */
/***/ (function(module, exports) {

// IE 8- don't enum bug keys
module.exports = (
  'constructor,hasOwnProperty,isPrototypeOf,propertyIsEnumerable,toLocaleString,toString,valueOf'
).split(',');


/***/ }),
/* 79 */
/***/ (function(module, exports, __webpack_require__) {

var global = __webpack_require__(8);
var core = __webpack_require__(6);
var LIBRARY = __webpack_require__(47);
var wksExt = __webpack_require__(63);
var defineProperty = __webpack_require__(15).f;
module.exports = function (name) {
  var $Symbol = core.Symbol || (core.Symbol = LIBRARY ? {} : global.Symbol || {});
  if (name.charAt(0) != '_' && !(name in $Symbol)) defineProperty($Symbol, name, { value: wksExt.f(name) });
};


/***/ }),
/* 80 */
/***/ (function(module, exports, __webpack_require__) {

"use strict";


var isRegExp = __webpack_require__(122);
var anObject = __webpack_require__(18);
var speciesConstructor = __webpack_require__(154);
var advanceStringIndex = __webpack_require__(105);
var toLength = __webpack_require__(43);
var callRegExpExec = __webpack_require__(94);
var regexpExec = __webpack_require__(90);
var fails = __webpack_require__(33);
var $min = Math.min;
var $push = [].push;
var $SPLIT = 'split';
var LENGTH = 'length';
var LAST_INDEX = 'lastIndex';
var MAX_UINT32 = 0xffffffff;

// babel-minify transpiles RegExp('x', 'y') -> /x/y and it causes SyntaxError
var SUPPORTS_Y = !fails(function () { RegExp(MAX_UINT32, 'y'); });

// @@split logic
__webpack_require__(95)('split', 2, function (defined, SPLIT, $split, maybeCallNative) {
  var internalSplit;
  if (
    'abbc'[$SPLIT](/(b)*/)[1] == 'c' ||
    'test'[$SPLIT](/(?:)/, -1)[LENGTH] != 4 ||
    'ab'[$SPLIT](/(?:ab)*/)[LENGTH] != 2 ||
    '.'[$SPLIT](/(.?)(.?)/)[LENGTH] != 4 ||
    '.'[$SPLIT](/()()/)[LENGTH] > 1 ||
    ''[$SPLIT](/.?/)[LENGTH]
  ) {
    // based on es5-shim implementation, need to rework it
    internalSplit = function (separator, limit) {
      var string = String(this);
      if (separator === undefined && limit === 0) return [];
      // If `separator` is not a regex, use native split
      if (!isRegExp(separator)) return $split.call(string, separator, limit);
      var output = [];
      var flags = (separator.ignoreCase ? 'i' : '') +
                  (separator.multiline ? 'm' : '') +
                  (separator.unicode ? 'u' : '') +
                  (separator.sticky ? 'y' : '');
      var lastLastIndex = 0;
      var splitLimit = limit === undefined ? MAX_UINT32 : limit >>> 0;
      // Make `global` and avoid `lastIndex` issues by working with a copy
      var separatorCopy = new RegExp(separator.source, flags + 'g');
      var match, lastIndex, lastLength;
      while (match = regexpExec.call(separatorCopy, string)) {
        lastIndex = separatorCopy[LAST_INDEX];
        if (lastIndex > lastLastIndex) {
          output.push(string.slice(lastLastIndex, match.index));
          if (match[LENGTH] > 1 && match.index < string[LENGTH]) $push.apply(output, match.slice(1));
          lastLength = match[0][LENGTH];
          lastLastIndex = lastIndex;
          if (output[LENGTH] >= splitLimit) break;
        }
        if (separatorCopy[LAST_INDEX] === match.index) separatorCopy[LAST_INDEX]++; // Avoid an infinite loop
      }
      if (lastLastIndex === string[LENGTH]) {
        if (lastLength || !separatorCopy.test('')) output.push('');
      } else output.push(string.slice(lastLastIndex));
      return output[LENGTH] > splitLimit ? output.slice(0, splitLimit) : output;
    };
  // Chakra, V8
  } else if ('0'[$SPLIT](undefined, 0)[LENGTH]) {
    internalSplit = function (separator, limit) {
      return separator === undefined && limit === 0 ? [] : $split.call(this, separator, limit);
    };
  } else {
    internalSplit = $split;
  }

  return [
    // `String.prototype.split` method
    // https://tc39.github.io/ecma262/#sec-string.prototype.split
    function split(separator, limit) {
      var O = defined(this);
      var splitter = separator == undefined ? undefined : separator[SPLIT];
      return splitter !== undefined
        ? splitter.call(separator, O, limit)
        : internalSplit.call(String(O), separator, limit);
    },
    // `RegExp.prototype[@@split]` method
    // https://tc39.github.io/ecma262/#sec-regexp.prototype-@@split
    //
    // NOTE: This cannot be properly polyfilled in engines that don't support
    // the 'y' flag.
    function (regexp, limit) {
      var res = maybeCallNative(internalSplit, regexp, this, limit, internalSplit !== $split);
      if (res.done) return res.value;

      var rx = anObject(regexp);
      var S = String(this);
      var C = speciesConstructor(rx, RegExp);

      var unicodeMatching = rx.unicode;
      var flags = (rx.ignoreCase ? 'i' : '') +
                  (rx.multiline ? 'm' : '') +
                  (rx.unicode ? 'u' : '') +
                  (SUPPORTS_Y ? 'y' : 'g');

      // ^(? + rx + ) is needed, in combination with some S slicing, to
      // simulate the 'y' flag.
      var splitter = new C(SUPPORTS_Y ? rx : '^(?:' + rx.source + ')', flags);
      var lim = limit === undefined ? MAX_UINT32 : limit >>> 0;
      if (lim === 0) return [];
      if (S.length === 0) return callRegExpExec(splitter, S) === null ? [S] : [];
      var p = 0;
      var q = 0;
      var A = [];
      while (q < S.length) {
        splitter.lastIndex = SUPPORTS_Y ? q : 0;
        var z = callRegExpExec(splitter, SUPPORTS_Y ? S : S.slice(q));
        var e;
        if (
          z === null ||
          (e = $min(toLength(splitter.lastIndex + (SUPPORTS_Y ? 0 : q)), S.length)) === p
        ) {
          q = advanceStringIndex(S, q, unicodeMatching);
        } else {
          A.push(S.slice(p, q));
          if (A.length === lim) return A;
          for (var i = 1; i <= z.length - 1; i++) {
            A.push(z[i]);
            if (A.length === lim) return A;
          }
          q = p = e;
        }
      }
      A.push(S.slice(p));
      return A;
    }
  ];
});


/***/ }),
/* 81 */,
/* 82 */
/***/ (function(module, exports, __webpack_require__) {

module.exports = __webpack_require__(66);


/***/ }),
/* 83 */
/***/ (function(module, exports, __webpack_require__) {

var _Promise = __webpack_require__(133);

function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) {
  try {
    var info = gen[key](arg);
    var value = info.value;
  } catch (error) {
    reject(error);
    return;
  }

  if (info.done) {
    resolve(value);
  } else {
    _Promise.resolve(value).then(_next, _throw);
  }
}

function _asyncToGenerator(fn) {
  return function () {
    var self = this,
        args = arguments;
    return new _Promise(function (resolve, reject) {
      var gen = fn.apply(self, args);

      function _next(value) {
        asyncGeneratorStep(gen, resolve, reject, _next, _throw, "next", value);
      }

      function _throw(err) {
        asyncGeneratorStep(gen, resolve, reject, _next, _throw, "throw", err);
      }

      _next(undefined);
    });
  };
}

module.exports = _asyncToGenerator;

/***/ }),
/* 84 */
/***/ (function(module, exports, __webpack_require__) {

module.exports = __webpack_require__(220);

/***/ }),
/* 85 */
/***/ (function(module, exports, __webpack_require__) {

"use strict";


var _interopRequireDefault = __webpack_require__(0);

var _Object$defineProperty = __webpack_require__(1);

_Object$defineProperty(exports, "__esModule", {
  value: true
});

exports.default = void 0;

__webpack_require__(58);

var _keys = _interopRequireDefault(__webpack_require__(23));

__webpack_require__(80);

var _values = _interopRequireDefault(__webpack_require__(55));

var _slicedToArray2 = _interopRequireDefault(__webpack_require__(102));

var _entries = _interopRequireDefault(__webpack_require__(89));

var _classCallCheck2 = _interopRequireDefault(__webpack_require__(2));

var _createClass2 = _interopRequireDefault(__webpack_require__(3));

var _inherits2 = _interopRequireDefault(__webpack_require__(4));

var _createSuper2 = _interopRequireDefault(__webpack_require__(5));

var ComponentBase = /*#__PURE__*/function (_elementorModules$Mod) {
  (0, _inherits2.default)(ComponentBase, _elementorModules$Mod);

  var _super = (0, _createSuper2.default)(ComponentBase);

  function ComponentBase() {
    (0, _classCallCheck2.default)(this, ComponentBase);
    return _super.apply(this, arguments);
  }

  (0, _createClass2.default)(ComponentBase, [{
    key: "__construct",
    value: function __construct() {
      var args = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};

      if (args.manager) {
        this.manager = args.manager;
      }

      this.commands = this.defaultCommands();
      this.commandsInternal = this.defaultCommandsInternal();
      this.hooks = this.defaultHooks();
      this.routes = this.defaultRoutes();
      this.tabs = this.defaultTabs();
      this.shortcuts = this.defaultShortcuts();
      this.utils = this.defaultUtils();
      this.data = this.defaultData();
      this.defaultRoute = '';
      this.currentTab = '';
    }
  }, {
    key: "registerAPI",
    value: function registerAPI() {
      var _this = this;

      (0, _entries.default)(this.getTabs()).forEach(function (tab) {
        return _this.registerTabRoute(tab[0]);
      });
      (0, _entries.default)(this.getRoutes()).forEach(function (_ref) {
        var _ref2 = (0, _slicedToArray2.default)(_ref, 2),
            route = _ref2[0],
            callback = _ref2[1];

        return _this.registerRoute(route, callback);
      });
      (0, _entries.default)(this.getCommands()).forEach(function (_ref3) {
        var _ref4 = (0, _slicedToArray2.default)(_ref3, 2),
            command = _ref4[0],
            callback = _ref4[1];

        return _this.registerCommand(command, callback);
      });
      (0, _entries.default)(this.getCommandsInternal()).forEach(function (_ref5) {
        var _ref6 = (0, _slicedToArray2.default)(_ref5, 2),
            command = _ref6[0],
            callback = _ref6[1];

        return _this.registerCommandInternal(command, callback);
      });
      (0, _values.default)(this.getHooks()).forEach(function (instance) {
        return _this.registerHook(instance);
      });
      (0, _entries.default)(this.getData()).forEach(function (_ref7) {
        var _ref8 = (0, _slicedToArray2.default)(_ref7, 2),
            command = _ref8[0],
            callback = _ref8[1];

        return _this.registerData(command, callback);
      });
    }
    /**
     * @returns {string}
     */

  }, {
    key: "getNamespace",
    value: function getNamespace() {
      elementorModules.ForceMethodImplementation();
    }
  }, {
    key: "getRootContainer",
    value: function getRootContainer() {
      var parts = this.getNamespace().split('/');
      return parts[0];
    }
  }, {
    key: "defaultTabs",
    value: function defaultTabs() {
      return {};
    }
  }, {
    key: "defaultRoutes",
    value: function defaultRoutes() {
      return {};
    }
  }, {
    key: "defaultCommands",
    value: function defaultCommands() {
      return {};
    }
  }, {
    key: "defaultCommandsInternal",
    value: function defaultCommandsInternal() {
      return {};
    }
  }, {
    key: "defaultHooks",
    value: function defaultHooks() {
      return {};
    }
  }, {
    key: "defaultShortcuts",
    value: function defaultShortcuts() {
      return {};
    }
  }, {
    key: "defaultUtils",
    value: function defaultUtils() {
      return {};
    }
  }, {
    key: "defaultData",
    value: function defaultData() {
      return {};
    }
  }, {
    key: "getCommands",
    value: function getCommands() {
      return this.commands;
    }
  }, {
    key: "getCommandsInternal",
    value: function getCommandsInternal() {
      return this.commandsInternal;
    }
  }, {
    key: "getHooks",
    value: function getHooks() {
      return this.hooks;
    }
  }, {
    key: "getRoutes",
    value: function getRoutes() {
      return this.routes;
    }
  }, {
    key: "getTabs",
    value: function getTabs() {
      return this.tabs;
    }
  }, {
    key: "getShortcuts",
    value: function getShortcuts() {
      return this.shortcuts;
    }
  }, {
    key: "getData",
    value: function getData() {
      return this.data;
    }
  }, {
    key: "registerCommand",
    value: function registerCommand(command, callback) {
      $e.commands.register(this, command, callback);
    }
    /**
     * @param {HookBase} instance
     */

  }, {
    key: "registerHook",
    value: function registerHook(instance) {
      return instance.register();
    }
  }, {
    key: "registerCommandInternal",
    value: function registerCommandInternal(command, callback) {
      $e.commandsInternal.register(this, command, callback);
    }
  }, {
    key: "registerRoute",
    value: function registerRoute(route, callback) {
      $e.routes.register(this, route, callback);
    }
  }, {
    key: "registerData",
    value: function registerData(command, callback) {
      $e.data.register(this, command, callback);
    }
  }, {
    key: "unregisterRoute",
    value: function unregisterRoute(route) {
      $e.routes.unregister(this, route);
    }
  }, {
    key: "registerTabRoute",
    value: function registerTabRoute(tab) {
      var _this2 = this;

      this.registerRoute(tab, function (args) {
        return _this2.activateTab(tab, args);
      });
    }
  }, {
    key: "dependency",
    value: function dependency() {
      return true;
    }
  }, {
    key: "open",
    value: function open() {
      return true;
    }
  }, {
    key: "close",
    value: function close() {
      if (!this.isOpen) {
        return false;
      }

      this.isOpen = false;
      this.inactivate();
      $e.routes.clearCurrent(this.getNamespace());
      $e.routes.clearHistory(this.getRootContainer());
      return true;
    }
  }, {
    key: "activate",
    value: function activate() {
      $e.components.activate(this.getNamespace());
    }
  }, {
    key: "inactivate",
    value: function inactivate() {
      $e.components.inactivate(this.getNamespace());
    }
  }, {
    key: "isActive",
    value: function isActive() {
      return $e.components.isActive(this.getNamespace());
    }
  }, {
    key: "onRoute",
    value: function onRoute(route) {
      this.toggleRouteClass(route, true);
      this.toggleHistoryClass();
      this.activate();
      this.trigger('route/open', route);
    }
  }, {
    key: "onCloseRoute",
    value: function onCloseRoute(route) {
      this.toggleRouteClass(route, false);
      this.inactivate();
      this.trigger('route/close', route);
    }
  }, {
    key: "setDefaultRoute",
    value: function setDefaultRoute(route) {
      this.defaultRoute = this.getNamespace() + '/' + route;
    }
  }, {
    key: "getDefaultRoute",
    value: function getDefaultRoute() {
      return this.defaultRoute;
    }
  }, {
    key: "removeTab",
    value: function removeTab(tab) {
      delete this.tabs[tab];
      this.unregisterRoute(tab);
    }
  }, {
    key: "hasTab",
    value: function hasTab(tab) {
      return !!this.tabs[tab];
    }
  }, {
    key: "addTab",
    value: function addTab(tab, args, position) {
      var _this3 = this;

      this.tabs[tab] = args; // It can be 0.

      if ('undefined' !== typeof position) {
        var newTabs = {};
        var ids = (0, _keys.default)(this.tabs); // Remove new tab

        ids.pop(); // Add it to position.

        ids.splice(position, 0, tab);
        ids.forEach(function (id) {
          newTabs[id] = _this3.tabs[id];
        });
        this.tabs = newTabs;
      }

      this.registerTabRoute(tab);
    }
  }, {
    key: "getTabsWrapperSelector",
    value: function getTabsWrapperSelector() {
      return '';
    }
  }, {
    key: "getTabRoute",
    value: function getTabRoute(tab) {
      return this.getNamespace() + '/' + tab;
    }
  }, {
    key: "renderTab",
    value: function renderTab(tab) {} // eslint-disable-line

  }, {
    key: "activateTab",
    value: function activateTab(tab, args) {
      var _this4 = this;

      this.currentTab = tab;
      this.renderTab(tab, args);
      jQuery(this.getTabsWrapperSelector() + ' .elementor-component-tab').off('click').on('click', function (event) {
        $e.route(_this4.getTabRoute(event.currentTarget.dataset.tab), args);
      }).removeClass('elementor-active').filter('[data-tab="' + tab + '"]').addClass('elementor-active');
    }
  }, {
    key: "getActiveTabConfig",
    value: function getActiveTabConfig() {
      return this.tabs[this.currentTab] || {};
    }
  }, {
    key: "getBodyClass",
    value: function getBodyClass(route) {
      return 'e-route-' + route.replace(/\//g, '-');
    }
    /**
     * If command includes uppercase character convert it to lowercase and add `-`.
     * e.g: `CopyAll` is converted to `copy-all`.
     */

  }, {
    key: "normalizeCommandName",
    value: function normalizeCommandName(commandName) {
      return commandName.replace(/[A-Z]/g, function (match, offset) {
        return (offset > 0 ? '-' : '') + match.toLowerCase();
      });
    }
  }, {
    key: "importCommands",
    value: function importCommands(commandsFromImport) {
      var _this5 = this;

      var commands = {}; // Convert `Commands` to `ComponentBase` workable format.

      (0, _entries.default)(commandsFromImport).forEach(function (_ref9) {
        var _ref10 = (0, _slicedToArray2.default)(_ref9, 2),
            className = _ref10[0],
            Class = _ref10[1];

        var command = _this5.normalizeCommandName(className);

        commands[command] = function (args) {
          return new Class(args).run();
        }; // TODO: Temporary code, remove after merge with 'require-commands-base' branch.
        // should not return callback, but Class or Instance without run ( gain performance ).


        $e.commands.classes[_this5.getNamespace() + '/' + command] = Class;
      });
      return commands;
    }
  }, {
    key: "importHooks",
    value: function importHooks(hooksFromImport) {
      var hooks = {};

      for (var key in hooksFromImport) {
        var hook = new hooksFromImport[key]();
        hooks[hook.getId()] = hook;
      }

      return hooks;
    }
  }, {
    key: "toggleRouteClass",
    value: function toggleRouteClass(route, state) {
      elementorCommon.elements.$body.toggleClass(this.getBodyClass(route), state);
    }
  }, {
    key: "toggleHistoryClass",
    value: function toggleHistoryClass() {
      elementorCommon.elements.$body.toggleClass('e-routes-has-history', !!$e.routes.getHistory(this.getRootContainer()).length);
    }
  }]);
  return ComponentBase;
}(elementorModules.Module);

exports.default = ComponentBase;

/***/ }),
/* 86 */
/***/ (function(module, exports, __webpack_require__) {

// most Object methods by ES6 should accept primitives
var $export = __webpack_require__(7);
var core = __webpack_require__(6);
var fails = __webpack_require__(22);
module.exports = function (KEY, exec) {
  var fn = (core.Object || {})[KEY] || Object[KEY];
  var exp = {};
  exp[KEY] = exec(fn);
  $export($export.S + $export.F * fails(function () { fn(1); }), 'Object', exp);
};


/***/ }),
/* 87 */
/***/ (function(module, exports, __webpack_require__) {

// 22.1.3.31 Array.prototype[@@unscopables]
var UNSCOPABLES = __webpack_require__(12)('unscopables');
var ArrayProto = Array.prototype;
if (ArrayProto[UNSCOPABLES] == undefined) __webpack_require__(29)(ArrayProto, UNSCOPABLES, {});
module.exports = function (key) {
  ArrayProto[UNSCOPABLES][key] = true;
};


/***/ }),
/* 88 */
/***/ (function(module, exports, __webpack_require__) {

var ctx = __webpack_require__(31);
var call = __webpack_require__(141);
var isArrayIter = __webpack_require__(142);
var anObject = __webpack_require__(13);
var toLength = __webpack_require__(69);
var getIterFn = __webpack_require__(112);
var BREAK = {};
var RETURN = {};
var exports = module.exports = function (iterable, entries, fn, that, ITERATOR) {
  var iterFn = ITERATOR ? function () { return iterable; } : getIterFn(iterable);
  var f = ctx(fn, that, entries ? 2 : 1);
  var index = 0;
  var length, step, iterator, result;
  if (typeof iterFn != 'function') throw TypeError(iterable + ' is not iterable!');
  // fast case for arrays with default iterator
  if (isArrayIter(iterFn)) for (length = toLength(iterable.length); length > index; index++) {
    result = entries ? f(anObject(step = iterable[index])[0], step[1]) : f(iterable[index]);
    if (result === BREAK || result === RETURN) return result;
  } else for (iterator = iterFn.call(iterable); !(step = iterator.next()).done;) {
    result = call(iterator, f, step.value, entries);
    if (result === BREAK || result === RETURN) return result;
  }
};
exports.BREAK = BREAK;
exports.RETURN = RETURN;


/***/ }),
/* 89 */
/***/ (function(module, exports, __webpack_require__) {

module.exports = __webpack_require__(269);

/***/ }),
/* 90 */
/***/ (function(module, exports, __webpack_require__) {

"use strict";


var regexpFlags = __webpack_require__(106);

var nativeExec = RegExp.prototype.exec;
// This always refers to the native implementation, because the
// String#replace polyfill uses ./fix-regexp-well-known-symbol-logic.js,
// which loads this file before patching the method.
var nativeReplace = String.prototype.replace;

var patchedExec = nativeExec;

var LAST_INDEX = 'lastIndex';

var UPDATES_LAST_INDEX_WRONG = (function () {
  var re1 = /a/,
      re2 = /b*/g;
  nativeExec.call(re1, 'a');
  nativeExec.call(re2, 'a');
  return re1[LAST_INDEX] !== 0 || re2[LAST_INDEX] !== 0;
})();

// nonparticipating capturing group, copied from es5-shim's String#split patch.
var NPCG_INCLUDED = /()??/.exec('')[1] !== undefined;

var PATCH = UPDATES_LAST_INDEX_WRONG || NPCG_INCLUDED;

if (PATCH) {
  patchedExec = function exec(str) {
    var re = this;
    var lastIndex, reCopy, match, i;

    if (NPCG_INCLUDED) {
      reCopy = new RegExp('^' + re.source + '$(?!\\s)', regexpFlags.call(re));
    }
    if (UPDATES_LAST_INDEX_WRONG) lastIndex = re[LAST_INDEX];

    match = nativeExec.call(re, str);

    if (UPDATES_LAST_INDEX_WRONG && match) {
      re[LAST_INDEX] = re.global ? match.index + match[0].length : lastIndex;
    }
    if (NPCG_INCLUDED && match && match.length > 1) {
      // Fix browsers whose `exec` methods don't consistently return `undefined`
      // for NPCG, like IE8. NOTE: This doesn' work for /(.?)?/
      // eslint-disable-next-line no-loop-func
      nativeReplace.call(match[0], reCopy, function () {
        for (i = 1; i < arguments.length - 2; i++) {
          if (arguments[i] === undefined) match[i] = undefined;
        }
      });
    }

    return match;
  };
}

module.exports = patchedExec;


/***/ }),
/* 91 */
/***/ (function(module, exports) {

module.exports = function (it) {
  if (typeof it != 'function') throw TypeError(it + ' is not a function!');
  return it;
};


/***/ }),
/* 92 */
/***/ (function(module, exports, __webpack_require__) {

var isObject = __webpack_require__(9);
var document = __webpack_require__(8).document;
// typeof document.createElement is 'object' in old IE
var is = isObject(document) && isObject(document.createElement);
module.exports = function (it) {
  return is ? document.createElement(it) : {};
};


/***/ }),
/* 93 */
/***/ (function(module, exports, __webpack_require__) {

module.exports = __webpack_require__(24);


/***/ }),
/* 94 */
/***/ (function(module, exports, __webpack_require__) {

"use strict";


var classof = __webpack_require__(113);
var builtinExec = RegExp.prototype.exec;

 // `RegExpExec` abstract operation
// https://tc39.github.io/ecma262/#sec-regexpexec
module.exports = function (R, S) {
  var exec = R.exec;
  if (typeof exec === 'function') {
    var result = exec.call(R, S);
    if (typeof result !== 'object') {
      throw new TypeError('RegExp exec method returned something other than an Object or null');
    }
    return result;
  }
  if (classof(R) !== 'RegExp') {
    throw new TypeError('RegExp#exec called on incompatible receiver');
  }
  return builtinExec.call(R, S);
};


/***/ }),
/* 95 */
/***/ (function(module, exports, __webpack_require__) {

"use strict";

__webpack_require__(190);
var redefine = __webpack_require__(37);
var hide = __webpack_require__(29);
var fails = __webpack_require__(33);
var defined = __webpack_require__(42);
var wks = __webpack_require__(12);
var regexpExec = __webpack_require__(90);

var SPECIES = wks('species');

var REPLACE_SUPPORTS_NAMED_GROUPS = !fails(function () {
  // #replace needs built-in support for named groups.
  // #match works fine because it just return the exec results, even if it has
  // a "grops" property.
  var re = /./;
  re.exec = function () {
    var result = [];
    result.groups = { a: '7' };
    return result;
  };
  return ''.replace(re, '$<a>') !== '7';
});

var SPLIT_WORKS_WITH_OVERWRITTEN_EXEC = (function () {
  // Chrome 51 has a buggy "split" implementation when RegExp#exec !== nativeExec
  var re = /(?:)/;
  var originalExec = re.exec;
  re.exec = function () { return originalExec.apply(this, arguments); };
  var result = 'ab'.split(re);
  return result.length === 2 && result[0] === 'a' && result[1] === 'b';
})();

module.exports = function (KEY, length, exec) {
  var SYMBOL = wks(KEY);

  var DELEGATES_TO_SYMBOL = !fails(function () {
    // String methods call symbol-named RegEp methods
    var O = {};
    O[SYMBOL] = function () { return 7; };
    return ''[KEY](O) != 7;
  });

  var DELEGATES_TO_EXEC = DELEGATES_TO_SYMBOL ? !fails(function () {
    // Symbol-named RegExp methods call .exec
    var execCalled = false;
    var re = /a/;
    re.exec = function () { execCalled = true; return null; };
    if (KEY === 'split') {
      // RegExp[@@split] doesn't call the regex's exec method, but first creates
      // a new one. We need to return the patched regex when creating the new one.
      re.constructor = {};
      re.constructor[SPECIES] = function () { return re; };
    }
    re[SYMBOL]('');
    return !execCalled;
  }) : undefined;

  if (
    !DELEGATES_TO_SYMBOL ||
    !DELEGATES_TO_EXEC ||
    (KEY === 'replace' && !REPLACE_SUPPORTS_NAMED_GROUPS) ||
    (KEY === 'split' && !SPLIT_WORKS_WITH_OVERWRITTEN_EXEC)
  ) {
    var nativeRegExpMethod = /./[SYMBOL];
    var fns = exec(
      defined,
      SYMBOL,
      ''[KEY],
      function maybeCallNative(nativeMethod, regexp, str, arg2, forceStringMethod) {
        if (regexp.exec === regexpExec) {
          if (DELEGATES_TO_SYMBOL && !forceStringMethod) {
            // The native String method already delegates to @@method (this
            // polyfilled function), leasing to infinite recursion.
            // We avoid it by directly calling the native @@method method.
            return { done: true, value: nativeRegExpMethod.call(regexp, str, arg2) };
          }
          return { done: true, value: nativeMethod.call(str, regexp, arg2) };
        }
        return { done: false };
      }
    );
    var strfn = fns[0];
    var rxfn = fns[1];

    redefine(String.prototype, KEY, strfn);
    hide(RegExp.prototype, SYMBOL, length == 2
      // 21.2.5.8 RegExp.prototype[@@replace](string, replaceValue)
      // 21.2.5.11 RegExp.prototype[@@split](string, limit)
      ? function (string, arg) { return rxfn.call(string, this, arg); }
      // 21.2.5.6 RegExp.prototype[@@match](string)
      // 21.2.5.9 RegExp.prototype[@@search](string)
      : function (string) { return rxfn.call(string, this); }
    );
  }
};


/***/ }),
/* 96 */
/***/ (function(module, exports, __webpack_require__) {

// 7.1.13 ToObject(argument)
var defined = __webpack_require__(42);
module.exports = function (it) {
  return Object(defined(it));
};


/***/ }),
/* 97 */
/***/ (function(module, exports, __webpack_require__) {

// 7.2.2 IsArray(argument)
var cof = __webpack_require__(56);
module.exports = Array.isArray || function isArray(arg) {
  return cof(arg) == 'Array';
};


/***/ }),
/* 98 */
/***/ (function(module, exports, __webpack_require__) {

// to indexed object, toObject with fallback for non-array-like ES3 strings
var IObject = __webpack_require__(120);
var defined = __webpack_require__(42);
module.exports = function (it) {
  return IObject(defined(it));
};


/***/ }),
/* 99 */
/***/ (function(module, exports, __webpack_require__) {

// 19.1.2.7 / 15.2.3.4 Object.getOwnPropertyNames(O)
var $keys = __webpack_require__(116);
var hiddenKeys = __webpack_require__(78).concat('length', 'prototype');

exports.f = Object.getOwnPropertyNames || function getOwnPropertyNames(O) {
  return $keys(O, hiddenKeys);
};


/***/ }),
/* 100 */
/***/ (function(module, exports) {



/***/ }),
/* 101 */
/***/ (function(module, exports, __webpack_require__) {

// getting tag from 19.1.3.6 Object.prototype.toString()
var cof = __webpack_require__(56);
var TAG = __webpack_require__(10)('toStringTag');
// ES3 wrong here
var ARG = cof(function () { return arguments; }()) == 'Arguments';

// fallback for IE11 Script Access Denied error
var tryGet = function (it, key) {
  try {
    return it[key];
  } catch (e) { /* empty */ }
};

module.exports = function (it) {
  var O, T, B;
  return it === undefined ? 'Undefined' : it === null ? 'Null'
    // @@toStringTag case
    : typeof (T = tryGet(O = Object(it), TAG)) == 'string' ? T
    // builtinTag case
    : ARG ? cof(O)
    // ES3 arguments fallback
    : (B = cof(O)) == 'Object' && typeof O.callee == 'function' ? 'Arguments' : B;
};


/***/ }),
/* 102 */
/***/ (function(module, exports, __webpack_require__) {

var arrayWithHoles = __webpack_require__(247);

var iterableToArrayLimit = __webpack_require__(248);

var unsupportedIterableToArray = __webpack_require__(187);

var nonIterableRest = __webpack_require__(251);

function _slicedToArray(arr, i) {
  return arrayWithHoles(arr) || iterableToArrayLimit(arr, i) || unsupportedIterableToArray(arr, i) || nonIterableRest();
}

module.exports = _slicedToArray;

/***/ }),
/* 103 */
/***/ (function(module, exports) {

module.exports = function (bitmap, value) {
  return {
    enumerable: !(bitmap & 1),
    configurable: !(bitmap & 2),
    writable: !(bitmap & 4),
    value: value
  };
};


/***/ }),
/* 104 */
/***/ (function(module, exports, __webpack_require__) {

// fallback for non-array-like ES3 and non-enumerable old V8 strings
var cof = __webpack_require__(56);
// eslint-disable-next-line no-prototype-builtins
module.exports = Object('z').propertyIsEnumerable(0) ? Object : function (it) {
  return cof(it) == 'String' ? it.split('') : Object(it);
};


/***/ }),
/* 105 */
/***/ (function(module, exports, __webpack_require__) {

"use strict";

var at = __webpack_require__(144)(true);

 // `AdvanceStringIndex` abstract operation
// https://tc39.github.io/ecma262/#sec-advancestringindex
module.exports = function (S, index, unicode) {
  return index + (unicode ? at(S, index).length : 1);
};


/***/ }),
/* 106 */
/***/ (function(module, exports, __webpack_require__) {

"use strict";

// 21.2.5.3 get RegExp.prototype.flags
var anObject = __webpack_require__(18);
module.exports = function () {
  var that = anObject(this);
  var result = '';
  if (that.global) result += 'g';
  if (that.ignoreCase) result += 'i';
  if (that.multiline) result += 'm';
  if (that.unicode) result += 'u';
  if (that.sticky) result += 'y';
  return result;
};


/***/ }),
/* 107 */
/***/ (function(module, exports, __webpack_require__) {

module.exports = __webpack_require__(168);

/***/ }),
/* 108 */
/***/ (function(module, exports, __webpack_require__) {

"use strict";

var LIBRARY = __webpack_require__(47);
var $export = __webpack_require__(7);
var redefine = __webpack_require__(93);
var hide = __webpack_require__(24);
var Iterators = __webpack_require__(35);
var $iterCreate = __webpack_require__(174);
var setToStringTag = __webpack_require__(53);
var getPrototypeOf = __webpack_require__(64);
var ITERATOR = __webpack_require__(10)('iterator');
var BUGGY = !([].keys && 'next' in [].keys()); // Safari has buggy iterators w/o `next`
var FF_ITERATOR = '@@iterator';
var KEYS = 'keys';
var VALUES = 'values';

var returnThis = function () { return this; };

module.exports = function (Base, NAME, Constructor, next, DEFAULT, IS_SET, FORCED) {
  $iterCreate(Constructor, NAME, next);
  var getMethod = function (kind) {
    if (!BUGGY && kind in proto) return proto[kind];
    switch (kind) {
      case KEYS: return function keys() { return new Constructor(this, kind); };
      case VALUES: return function values() { return new Constructor(this, kind); };
    } return function entries() { return new Constructor(this, kind); };
  };
  var TAG = NAME + ' Iterator';
  var DEF_VALUES = DEFAULT == VALUES;
  var VALUES_BUG = false;
  var proto = Base.prototype;
  var $native = proto[ITERATOR] || proto[FF_ITERATOR] || DEFAULT && proto[DEFAULT];
  var $default = $native || getMethod(DEFAULT);
  var $entries = DEFAULT ? !DEF_VALUES ? $default : getMethod('entries') : undefined;
  var $anyNative = NAME == 'Array' ? proto.entries || $native : $native;
  var methods, key, IteratorPrototype;
  // Fix native
  if ($anyNative) {
    IteratorPrototype = getPrototypeOf($anyNative.call(new Base()));
    if (IteratorPrototype !== Object.prototype && IteratorPrototype.next) {
      // Set @@toStringTag to native iterators
      setToStringTag(IteratorPrototype, TAG, true);
      // fix for some old engines
      if (!LIBRARY && typeof IteratorPrototype[ITERATOR] != 'function') hide(IteratorPrototype, ITERATOR, returnThis);
    }
  }
  // fix Array#{values, @@iterator}.name in V8 / FF
  if (DEF_VALUES && $native && $native.name !== VALUES) {
    VALUES_BUG = true;
    $default = function values() { return $native.call(this); };
  }
  // Define iterator
  if ((!LIBRARY || FORCED) && (BUGGY || VALUES_BUG || !proto[ITERATOR])) {
    hide(proto, ITERATOR, $default);
  }
  // Plug for library
  Iterators[NAME] = $default;
  Iterators[TAG] = returnThis;
  if (DEFAULT) {
    methods = {
      values: DEF_VALUES ? $default : getMethod(VALUES),
      keys: IS_SET ? $default : getMethod(KEYS),
      entries: $entries
    };
    if (FORCED) for (key in methods) {
      if (!(key in proto)) redefine(proto, key, methods[key]);
    } else $export($export.P + $export.F * (BUGGY || VALUES_BUG), NAME, methods);
  }
  return methods;
};


/***/ }),
/* 109 */
/***/ (function(module, exports, __webpack_require__) {

var isObject = __webpack_require__(30);
var document = __webpack_require__(17).document;
// typeof document.createElement is 'object' in old IE
var is = isObject(document) && isObject(document.createElement);
module.exports = function (it) {
  return is ? document.createElement(it) : {};
};


/***/ }),
/* 110 */
/***/ (function(module, exports) {

module.exports = false;


/***/ }),
/* 111 */
/***/ (function(module, exports, __webpack_require__) {

module.exports = __webpack_require__(177);

/***/ }),
/* 112 */
/***/ (function(module, exports, __webpack_require__) {

var classof = __webpack_require__(101);
var ITERATOR = __webpack_require__(10)('iterator');
var Iterators = __webpack_require__(35);
module.exports = __webpack_require__(6).getIteratorMethod = function (it) {
  if (it != undefined) return it[ITERATOR]
    || it['@@iterator']
    || Iterators[classof(it)];
};


/***/ }),
/* 113 */
/***/ (function(module, exports, __webpack_require__) {

// getting tag from 19.1.3.6 Object.prototype.toString()
var cof = __webpack_require__(46);
var TAG = __webpack_require__(12)('toStringTag');
// ES3 wrong here
var ARG = cof(function () { return arguments; }()) == 'Arguments';

// fallback for IE11 Script Access Denied error
var tryGet = function (it, key) {
  try {
    return it[key];
  } catch (e) { /* empty */ }
};

module.exports = function (it) {
  var O, T, B;
  return it === undefined ? 'Undefined' : it === null ? 'Null'
    // @@toStringTag case
    : typeof (T = tryGet(O = Object(it), TAG)) == 'string' ? T
    // builtinTag case
    : ARG ? cof(O)
    // ES3 arguments fallback
    : (B = cof(O)) == 'Object' && typeof O.callee == 'function' ? 'Arguments' : B;
};


/***/ }),
/* 114 */
/***/ (function(module, exports, __webpack_require__) {

module.exports = !__webpack_require__(14) && !__webpack_require__(22)(function () {
  return Object.defineProperty(__webpack_require__(92)('div'), 'a', { get: function () { return 7; } }).a != 7;
});


/***/ }),
/* 115 */
/***/ (function(module, exports, __webpack_require__) {

module.exports = __webpack_require__(161);

/***/ }),
/* 116 */
/***/ (function(module, exports, __webpack_require__) {

var has = __webpack_require__(19);
var toIObject = __webpack_require__(20);
var arrayIndexOf = __webpack_require__(166)(false);
var IE_PROTO = __webpack_require__(75)('IE_PROTO');

module.exports = function (object, names) {
  var O = toIObject(object);
  var i = 0;
  var result = [];
  var key;
  for (key in O) if (key != IE_PROTO) has(O, key) && result.push(key);
  // Don't enum bug & hidden keys
  while (names.length > i) if (has(O, key = names[i++])) {
    ~arrayIndexOf(result, key) || result.push(key);
  }
  return result;
};


/***/ }),
/* 117 */
/***/ (function(module, exports, __webpack_require__) {

"use strict";

var addToUnscopables = __webpack_require__(87);
var step = __webpack_require__(241);
var Iterators = __webpack_require__(118);
var toIObject = __webpack_require__(98);

// 22.1.3.4 Array.prototype.entries()
// 22.1.3.13 Array.prototype.keys()
// 22.1.3.29 Array.prototype.values()
// 22.1.3.30 Array.prototype[@@iterator]()
module.exports = __webpack_require__(197)(Array, 'Array', function (iterated, kind) {
  this._t = toIObject(iterated); // target
  this._i = 0;                   // next index
  this._k = kind;                // kind
// 22.1.5.2.1 %ArrayIteratorPrototype%.next()
}, function () {
  var O = this._t;
  var kind = this._k;
  var index = this._i++;
  if (!O || index >= O.length) {
    this._t = undefined;
    return step(1);
  }
  if (kind == 'keys') return step(0, index);
  if (kind == 'values') return step(0, O[index]);
  return step(0, [index, O[index]]);
}, 'values');

// argumentsList[@@iterator] is %ArrayProto_values% (9.4.4.6, 9.4.4.7)
Iterators.Arguments = Iterators.Array;

addToUnscopables('keys');
addToUnscopables('values');
addToUnscopables('entries');


/***/ }),
/* 118 */
/***/ (function(module, exports) {

module.exports = {};


/***/ }),
/* 119 */
/***/ (function(module, exports, __webpack_require__) {

"use strict";


var anObject = __webpack_require__(18);
var toLength = __webpack_require__(43);
var advanceStringIndex = __webpack_require__(105);
var regExpExec = __webpack_require__(94);

// @@match logic
__webpack_require__(95)('match', 1, function (defined, MATCH, $match, maybeCallNative) {
  return [
    // `String.prototype.match` method
    // https://tc39.github.io/ecma262/#sec-string.prototype.match
    function match(regexp) {
      var O = defined(this);
      var fn = regexp == undefined ? undefined : regexp[MATCH];
      return fn !== undefined ? fn.call(regexp, O) : new RegExp(regexp)[MATCH](String(O));
    },
    // `RegExp.prototype[@@match]` method
    // https://tc39.github.io/ecma262/#sec-regexp.prototype-@@match
    function (regexp) {
      var res = maybeCallNative($match, regexp, this);
      if (res.done) return res.value;
      var rx = anObject(regexp);
      var S = String(this);
      if (!rx.global) return regExpExec(rx, S);
      var fullUnicode = rx.unicode;
      rx.lastIndex = 0;
      var A = [];
      var n = 0;
      var result;
      while ((result = regExpExec(rx, S)) !== null) {
        var matchStr = String(result[0]);
        A[n] = matchStr;
        if (matchStr === '') rx.lastIndex = advanceStringIndex(S, toLength(rx.lastIndex), fullUnicode);
        n++;
      }
      return n === 0 ? null : A;
    }
  ];
});


/***/ }),
/* 120 */
/***/ (function(module, exports, __webpack_require__) {

// fallback for non-array-like ES3 and non-enumerable old V8 strings
var cof = __webpack_require__(46);
// eslint-disable-next-line no-prototype-builtins
module.exports = Object('z').propertyIsEnumerable(0) ? Object : function (it) {
  return cof(it) == 'String' ? it.split('') : Object(it);
};


/***/ }),
/* 121 */
/***/ (function(module, exports, __webpack_require__) {

var isObject = __webpack_require__(9);
module.exports = function (it, TYPE) {
  if (!isObject(it) || it._t !== TYPE) throw TypeError('Incompatible receiver, ' + TYPE + ' required!');
  return it;
};


/***/ }),
/* 122 */
/***/ (function(module, exports, __webpack_require__) {

// 7.2.8 IsRegExp(argument)
var isObject = __webpack_require__(30);
var cof = __webpack_require__(46);
var MATCH = __webpack_require__(12)('match');
module.exports = function (it) {
  var isRegExp;
  return isObject(it) && ((isRegExp = it[MATCH]) !== undefined ? !!isRegExp : cof(it) == 'RegExp');
};


/***/ }),
/* 123 */
/***/ (function(module, exports, __webpack_require__) {

// 7.1.1 ToPrimitive(input [, PreferredType])
var isObject = __webpack_require__(30);
// instead of the ES6 spec version, we didn't implement @@toPrimitive case
// and the second argument - flag - preferred type is a string
module.exports = function (it, S) {
  if (!isObject(it)) return it;
  var fn, val;
  if (S && typeof (fn = it.toString) == 'function' && !isObject(val = fn.call(it))) return val;
  if (typeof (fn = it.valueOf) == 'function' && !isObject(val = fn.call(it))) return val;
  if (!S && typeof (fn = it.toString) == 'function' && !isObject(val = fn.call(it))) return val;
  throw TypeError("Can't convert object to primitive value");
};


/***/ }),
/* 124 */
/***/ (function(module, exports, __webpack_require__) {

module.exports = __webpack_require__(191);

/***/ }),
/* 125 */
/***/ (function(module, exports) {

module.exports = function (it, Constructor, name, forbiddenField) {
  if (!(it instanceof Constructor) || (forbiddenField !== undefined && forbiddenField in it)) {
    throw TypeError(name + ': incorrect invocation!');
  } return it;
};


/***/ }),
/* 126 */
/***/ (function(module, exports, __webpack_require__) {

var hide = __webpack_require__(24);
module.exports = function (target, src, safe) {
  for (var key in src) {
    if (safe && target[key]) target[key] = src[key];
    else hide(target, key, src[key]);
  } return target;
};


/***/ }),
/* 127 */
/***/ (function(module, exports, __webpack_require__) {

"use strict";


var _interopRequireDefault = __webpack_require__(0);

__webpack_require__(25);

var _defineProperty2 = _interopRequireDefault(__webpack_require__(28));

var ControlBaseView = __webpack_require__(281),
    TagsBehavior = __webpack_require__(421),
    Validator = __webpack_require__(300),
    ControlBaseDataView;

ControlBaseDataView = ControlBaseView.extend({
  ui: function ui() {
    var ui = ControlBaseView.prototype.ui.apply(this, arguments);

    _.extend(ui, {
      input: 'input[data-setting][type!="checkbox"][type!="radio"]',
      checkbox: 'input[data-setting][type="checkbox"]',
      radio: 'input[data-setting][type="radio"]',
      select: 'select[data-setting]',
      textarea: 'textarea[data-setting]',
      responsiveSwitchers: '.elementor-responsive-switcher',
      contentEditable: '[contenteditable="true"]'
    });

    return ui;
  },
  templateHelpers: function templateHelpers() {
    var controlData = ControlBaseView.prototype.templateHelpers.apply(this, arguments);
    controlData.data.controlValue = this.getControlValue();
    return controlData;
  },
  events: function events() {
    return {
      'input @ui.input': 'onBaseInputTextChange',
      'change @ui.checkbox': 'onBaseInputChange',
      'change @ui.radio': 'onBaseInputChange',
      'input @ui.textarea': 'onBaseInputTextChange',
      'change @ui.select': 'onBaseInputChange',
      'input @ui.contentEditable': 'onBaseInputTextChange',
      'click @ui.responsiveSwitchers': 'onResponsiveSwitchersClick'
    };
  },
  behaviors: function behaviors() {
    var behaviors = ControlBaseView.prototype.behaviors.apply(this, arguments),
        dynamicSettings = this.options.model.get('dynamic');

    if (dynamicSettings && dynamicSettings.active) {
      var tags = _.filter(elementor.dynamicTags.getConfig('tags'), function (tag) {
        return tag.editable && _.intersection(tag.categories, dynamicSettings.categories).length;
      });

      if (tags.length || elementor.config.user.is_administrator) {
        behaviors.tags = {
          behaviorClass: TagsBehavior,
          tags: tags,
          dynamicSettings: dynamicSettings
        };
      }
    }

    return behaviors;
  },
  initialize: function initialize() {
    ControlBaseView.prototype.initialize.apply(this, arguments);
    this.registerValidators(); // TODO: this.elementSettingsModel is deprecated since 2.8.0.

    var settings = this.container ? this.container.settings : this.elementSettingsModel;
    this.listenTo(settings, 'change:external:' + this.model.get('name'), this.onAfterExternalChange);
  },
  getControlValue: function getControlValue() {
    return this.container.settings.get(this.model.get('name'));
  },
  getGlobalKey: function getGlobalKey() {
    return this.container.globals.get(this.model.get('name'));
  },
  getGlobalValue: function getGlobalValue() {
    return this.globalValue;
  },
  getGlobalDefault: function getGlobalDefault() {
    var controlGlobalArgs = this.model.get('global');

    if (controlGlobalArgs === null || controlGlobalArgs === void 0 ? void 0 : controlGlobalArgs.default) {
      // If the control is a color/typography control and default colors/typography are disabled, don't return the global value.
      if (!elementor.config.globals.defaults_enabled[this.getGlobalMeta().controlType]) {
        return '';
      }

      var _$e$data$commandExtra = $e.data.commandExtractArgs(controlGlobalArgs.default),
          command = _$e$data$commandExtra.command,
          args = _$e$data$commandExtra.args,
          result = $e.data.getCache($e.components.get('globals'), command, args.query);

      return result === null || result === void 0 ? void 0 : result.value;
    } // No global default.


    return '';
  },
  getCurrentValue: function getCurrentValue() {
    if (this.getGlobalKey() && !this.globalValue) {
      return '';
    }

    if (this.globalValue) {
      return this.globalValue;
    }

    var controlValue = this.getControlValue();

    if (controlValue) {
      return controlValue;
    }

    return this.getGlobalDefault();
  },
  isGlobalActive: function isGlobalActive() {
    var _this$options$model$g;

    return (_this$options$model$g = this.options.model.get('global')) === null || _this$options$model$g === void 0 ? void 0 : _this$options$model$g.active;
  },
  setValue: function setValue(value) {
    this.setSettingsModel(value);
  },
  setSettingsModel: function setSettingsModel(value) {
    var key = this.model.get('name');
    $e.run('document/elements/settings', {
      container: this.options.container,
      settings: (0, _defineProperty2.default)({}, key, value)
    });
    this.triggerMethod('settings:change');
  },
  applySavedValue: function applySavedValue() {
    this.setInputValue('[data-setting="' + this.model.get('name') + '"]', this.getControlValue());
  },
  getEditSettings: function getEditSettings(setting) {
    var settings = this.getOption('elementEditSettings').toJSON();

    if (setting) {
      return settings[setting];
    }

    return settings;
  },
  setEditSetting: function setEditSetting(settingKey, settingValue) {
    var settings = this.getOption('elementEditSettings') || this.getOption('container').settings;
    settings.set(settingKey, settingValue);
  },
  getInputValue: function getInputValue(input) {
    var $input = this.$(input);

    if ($input.is('[contenteditable="true"]')) {
      return $input.html();
    }

    var inputValue = $input.val(),
        inputType = $input.attr('type');

    if (-1 !== ['radio', 'checkbox'].indexOf(inputType)) {
      return $input.prop('checked') ? inputValue : '';
    }

    if ('number' === inputType && _.isFinite(inputValue)) {
      return +inputValue;
    } // Temp fix for jQuery (< 3.0) that return null instead of empty array


    if ('SELECT' === input.tagName && $input.prop('multiple') && null === inputValue) {
      inputValue = [];
    }

    return inputValue;
  },
  setInputValue: function setInputValue(input, value) {
    var $input = this.$(input),
        inputType = $input.attr('type');

    if ('checkbox' === inputType) {
      $input.prop('checked', !!value);
    } else if ('radio' === inputType) {
      $input.filter('[value="' + value + '"]').prop('checked', true);
    } else {
      $input.val(value);
    }
  },
  addValidator: function addValidator(validator) {
    this.validators.push(validator);
  },
  registerValidators: function registerValidators() {
    this.validators = [];
    var validationTerms = {};

    if (this.model.get('required')) {
      validationTerms.required = true;
    }

    if (!jQuery.isEmptyObject(validationTerms)) {
      this.addValidator(new Validator({
        validationTerms: validationTerms
      }));
    }
  },
  onRender: function onRender() {
    ControlBaseView.prototype.onRender.apply(this, arguments);

    if (this.model.get('responsive')) {
      this.renderResponsiveSwitchers();
    }

    this.applySavedValue();
    this.triggerMethod('ready');
    this.toggleControlVisibility();
    this.addTooltip();
  },
  onBaseInputTextChange: function onBaseInputTextChange(event) {
    this.onBaseInputChange(event);
  },
  onBaseInputChange: function onBaseInputChange(event) {
    clearTimeout(this.correctionTimeout);
    var input = event.currentTarget,
        value = this.getInputValue(input),
        validators = this.validators.slice(0),
        settingsValidators = this.container.settings.validators[this.model.get('name')];

    if (settingsValidators) {
      validators = validators.concat(settingsValidators);
    }

    if (validators) {
      var oldValue = this.getControlValue(input.dataset.setting);
      var isValidValue = validators.every(function (validator) {
        return validator.isValid(value, oldValue);
      });

      if (!isValidValue) {
        this.correctionTimeout = setTimeout(this.setInputValue.bind(this, input, oldValue), 1200);
        return;
      }
    }

    this.updateElementModel(value, input);
    this.triggerMethod('input:change', event);
  },
  onResponsiveSwitchersClick: function onResponsiveSwitchersClick(event) {
    var $switcher = jQuery(event.currentTarget),
        device = $switcher.data('device'),
        $switchersWrapper = this.ui.responsiveSwitchersWrapper,
        selectedOption = $switcher.index();
    $switchersWrapper.toggleClass('elementor-responsive-switchers-open');
    $switchersWrapper[0].style.setProperty('--selected-option', selectedOption);
    this.triggerMethod('responsive:switcher:click', device);
    elementor.changeDeviceMode(device);
  },
  renderResponsiveSwitchers: function renderResponsiveSwitchers() {
    var templateHtml = Marionette.Renderer.render('#tmpl-elementor-control-responsive-switchers', this.model.attributes);
    this.ui.controlTitle.after(templateHtml);
    this.ui.responsiveSwitchersWrapper = this.$el.find('.elementor-control-responsive-switchers');
  },
  onAfterExternalChange: function onAfterExternalChange() {
    this.hideTooltip();
    this.applySavedValue();
  },
  addTooltip: function addTooltip() {
    this.ui.tooltipTargets = this.$el.find('.tooltip-target');

    if (!this.ui.tooltipTargets.length) {
      return;
    } // Create tooltip on controls


    this.ui.tooltipTargets.tipsy({
      gravity: function gravity() {
        // `n` for down, `s` for up
        var gravity = jQuery(this).data('tooltip-pos');

        if (undefined !== gravity) {
          return gravity;
        }

        return 's';
      },
      title: function title() {
        return this.getAttribute('data-tooltip');
      }
    });
  },
  hideTooltip: function hideTooltip() {
    if (this.ui.tooltipTargets.length) {
      this.ui.tooltipTargets.tipsy('hide');
    }
  },
  updateElementModel: function updateElementModel(value) {
    this.setValue(value);
  }
}, {
  // Static methods
  getStyleValue: function getStyleValue(placeholder, controlValue, controlData) {
    if ('DEFAULT' === placeholder) {
      return controlData.default;
    }

    return controlValue;
  },
  onPasteStyle: function onPasteStyle() {
    return true;
  }
});
module.exports = ControlBaseDataView;

/***/ }),
/* 128 */,
/* 129 */
/***/ (function(module, exports, __webpack_require__) {

module.exports = !__webpack_require__(27) && !__webpack_require__(33)(function () {
  return Object.defineProperty(__webpack_require__(109)('div'), 'a', { get: function () { return 7; } }).a != 7;
});


/***/ }),
/* 130 */
/***/ (function(module, exports, __webpack_require__) {

var shared = __webpack_require__(67)('keys');
var uid = __webpack_require__(68);
module.exports = function (key) {
  return shared[key] || (shared[key] = uid(key));
};


/***/ }),
/* 131 */
/***/ (function(module, exports, __webpack_require__) {

var document = __webpack_require__(8).document;
module.exports = document && document.documentElement;


/***/ }),
/* 132 */
/***/ (function(module, exports) {

// fast apply, http://jsperf.lnkit.com/fast-apply/5
module.exports = function (fn, args, that) {
  var un = that === undefined;
  switch (args.length) {
    case 0: return un ? fn()
                      : fn.call(that);
    case 1: return un ? fn(args[0])
                      : fn.call(that, args[0]);
    case 2: return un ? fn(args[0], args[1])
                      : fn.call(that, args[0], args[1]);
    case 3: return un ? fn(args[0], args[1], args[2])
                      : fn.call(that, args[0], args[1], args[2]);
    case 4: return un ? fn(args[0], args[1], args[2], args[3])
                      : fn.call(that, args[0], args[1], args[2], args[3]);
  } return fn.apply(that, args);
};


/***/ }),
/* 133 */
/***/ (function(module, exports, __webpack_require__) {

module.exports = __webpack_require__(257);

/***/ }),
/* 134 */
/***/ (function(module, exports, __webpack_require__) {

module.exports = __webpack_require__(288);

/***/ }),
/* 135 */
/***/ (function(module, exports, __webpack_require__) {

"use strict";

// https://github.com/tc39/Array.prototype.includes
var $export = __webpack_require__(34);
var $includes = __webpack_require__(143)(true);

$export($export.P, 'Array', {
  includes: function includes(el /* , fromIndex = 0 */) {
    return $includes(this, el, arguments.length > 1 ? arguments[1] : undefined);
  }
});

__webpack_require__(87)('includes');


/***/ }),
/* 136 */
/***/ (function(module, exports, __webpack_require__) {

var dP = __webpack_require__(15);
var anObject = __webpack_require__(13);
var getKeys = __webpack_require__(40);

module.exports = __webpack_require__(14) ? Object.defineProperties : function defineProperties(O, Properties) {
  anObject(O);
  var keys = getKeys(Properties);
  var length = keys.length;
  var i = 0;
  var P;
  while (length > i) dP.f(O, P = keys[i++], Properties[P]);
  return O;
};


/***/ }),
/* 137 */
/***/ (function(module, exports, __webpack_require__) {

var _Object$setPrototypeOf = __webpack_require__(115);

function _setPrototypeOf(o, p) {
  module.exports = _setPrototypeOf = _Object$setPrototypeOf || function _setPrototypeOf(o, p) {
    o.__proto__ = p;
    return o;
  };

  return _setPrototypeOf(o, p);
}

module.exports = _setPrototypeOf;

/***/ }),
/* 138 */
/***/ (function(module, exports, __webpack_require__) {

// 0 -> Array#forEach
// 1 -> Array#map
// 2 -> Array#filter
// 3 -> Array#some
// 4 -> Array#every
// 5 -> Array#find
// 6 -> Array#findIndex
var ctx = __webpack_require__(31);
var IObject = __webpack_require__(104);
var toObject = __webpack_require__(32);
var toLength = __webpack_require__(69);
var asc = __webpack_require__(245);
module.exports = function (TYPE, $create) {
  var IS_MAP = TYPE == 1;
  var IS_FILTER = TYPE == 2;
  var IS_SOME = TYPE == 3;
  var IS_EVERY = TYPE == 4;
  var IS_FIND_INDEX = TYPE == 6;
  var NO_HOLES = TYPE == 5 || IS_FIND_INDEX;
  var create = $create || asc;
  return function ($this, callbackfn, that) {
    var O = toObject($this);
    var self = IObject(O);
    var f = ctx(callbackfn, that, 3);
    var length = toLength(self.length);
    var index = 0;
    var result = IS_MAP ? create($this, length) : IS_FILTER ? create($this, 0) : undefined;
    var val, res;
    for (;length > index; index++) if (NO_HOLES || index in self) {
      val = self[index];
      res = f(val, index, O);
      if (TYPE) {
        if (IS_MAP) result[index] = res;   // map
        else if (res) switch (TYPE) {
          case 3: return true;             // some
          case 5: return val;              // find
          case 6: return index;            // findIndex
          case 2: result.push(val);        // filter
        } else if (IS_EVERY) return false; // every
      }
    }
    return IS_FIND_INDEX ? -1 : IS_SOME || IS_EVERY ? IS_EVERY : result;
  };
};


/***/ }),
/* 139 */
/***/ (function(module, exports, __webpack_require__) {

module.exports = __webpack_require__(164);

/***/ }),
/* 140 */
/***/ (function(module, exports, __webpack_require__) {

"use strict";

// ECMAScript 6 symbols shim
var global = __webpack_require__(8);
var has = __webpack_require__(19);
var DESCRIPTORS = __webpack_require__(14);
var $export = __webpack_require__(7);
var redefine = __webpack_require__(93);
var META = __webpack_require__(70).KEY;
var $fails = __webpack_require__(22);
var shared = __webpack_require__(76);
var setToStringTag = __webpack_require__(53);
var uid = __webpack_require__(59);
var wks = __webpack_require__(10);
var wksExt = __webpack_require__(63);
var wksDefine = __webpack_require__(79);
var enumKeys = __webpack_require__(178);
var isArray = __webpack_require__(97);
var anObject = __webpack_require__(13);
var isObject = __webpack_require__(9);
var toObject = __webpack_require__(32);
var toIObject = __webpack_require__(20);
var toPrimitive = __webpack_require__(74);
var createDesc = __webpack_require__(44);
var _create = __webpack_require__(52);
var gOPNExt = __webpack_require__(179);
var $GOPD = __webpack_require__(51);
var $GOPS = __webpack_require__(71);
var $DP = __webpack_require__(15);
var $keys = __webpack_require__(40);
var gOPD = $GOPD.f;
var dP = $DP.f;
var gOPN = gOPNExt.f;
var $Symbol = global.Symbol;
var $JSON = global.JSON;
var _stringify = $JSON && $JSON.stringify;
var PROTOTYPE = 'prototype';
var HIDDEN = wks('_hidden');
var TO_PRIMITIVE = wks('toPrimitive');
var isEnum = {}.propertyIsEnumerable;
var SymbolRegistry = shared('symbol-registry');
var AllSymbols = shared('symbols');
var OPSymbols = shared('op-symbols');
var ObjectProto = Object[PROTOTYPE];
var USE_NATIVE = typeof $Symbol == 'function' && !!$GOPS.f;
var QObject = global.QObject;
// Don't use setters in Qt Script, https://github.com/zloirock/core-js/issues/173
var setter = !QObject || !QObject[PROTOTYPE] || !QObject[PROTOTYPE].findChild;

// fallback for old Android, https://code.google.com/p/v8/issues/detail?id=687
var setSymbolDesc = DESCRIPTORS && $fails(function () {
  return _create(dP({}, 'a', {
    get: function () { return dP(this, 'a', { value: 7 }).a; }
  })).a != 7;
}) ? function (it, key, D) {
  var protoDesc = gOPD(ObjectProto, key);
  if (protoDesc) delete ObjectProto[key];
  dP(it, key, D);
  if (protoDesc && it !== ObjectProto) dP(ObjectProto, key, protoDesc);
} : dP;

var wrap = function (tag) {
  var sym = AllSymbols[tag] = _create($Symbol[PROTOTYPE]);
  sym._k = tag;
  return sym;
};

var isSymbol = USE_NATIVE && typeof $Symbol.iterator == 'symbol' ? function (it) {
  return typeof it == 'symbol';
} : function (it) {
  return it instanceof $Symbol;
};

var $defineProperty = function defineProperty(it, key, D) {
  if (it === ObjectProto) $defineProperty(OPSymbols, key, D);
  anObject(it);
  key = toPrimitive(key, true);
  anObject(D);
  if (has(AllSymbols, key)) {
    if (!D.enumerable) {
      if (!has(it, HIDDEN)) dP(it, HIDDEN, createDesc(1, {}));
      it[HIDDEN][key] = true;
    } else {
      if (has(it, HIDDEN) && it[HIDDEN][key]) it[HIDDEN][key] = false;
      D = _create(D, { enumerable: createDesc(0, false) });
    } return setSymbolDesc(it, key, D);
  } return dP(it, key, D);
};
var $defineProperties = function defineProperties(it, P) {
  anObject(it);
  var keys = enumKeys(P = toIObject(P));
  var i = 0;
  var l = keys.length;
  var key;
  while (l > i) $defineProperty(it, key = keys[i++], P[key]);
  return it;
};
var $create = function create(it, P) {
  return P === undefined ? _create(it) : $defineProperties(_create(it), P);
};
var $propertyIsEnumerable = function propertyIsEnumerable(key) {
  var E = isEnum.call(this, key = toPrimitive(key, true));
  if (this === ObjectProto && has(AllSymbols, key) && !has(OPSymbols, key)) return false;
  return E || !has(this, key) || !has(AllSymbols, key) || has(this, HIDDEN) && this[HIDDEN][key] ? E : true;
};
var $getOwnPropertyDescriptor = function getOwnPropertyDescriptor(it, key) {
  it = toIObject(it);
  key = toPrimitive(key, true);
  if (it === ObjectProto && has(AllSymbols, key) && !has(OPSymbols, key)) return;
  var D = gOPD(it, key);
  if (D && has(AllSymbols, key) && !(has(it, HIDDEN) && it[HIDDEN][key])) D.enumerable = true;
  return D;
};
var $getOwnPropertyNames = function getOwnPropertyNames(it) {
  var names = gOPN(toIObject(it));
  var result = [];
  var i = 0;
  var key;
  while (names.length > i) {
    if (!has(AllSymbols, key = names[i++]) && key != HIDDEN && key != META) result.push(key);
  } return result;
};
var $getOwnPropertySymbols = function getOwnPropertySymbols(it) {
  var IS_OP = it === ObjectProto;
  var names = gOPN(IS_OP ? OPSymbols : toIObject(it));
  var result = [];
  var i = 0;
  var key;
  while (names.length > i) {
    if (has(AllSymbols, key = names[i++]) && (IS_OP ? has(ObjectProto, key) : true)) result.push(AllSymbols[key]);
  } return result;
};

// 19.4.1.1 Symbol([description])
if (!USE_NATIVE) {
  $Symbol = function Symbol() {
    if (this instanceof $Symbol) throw TypeError('Symbol is not a constructor!');
    var tag = uid(arguments.length > 0 ? arguments[0] : undefined);
    var $set = function (value) {
      if (this === ObjectProto) $set.call(OPSymbols, value);
      if (has(this, HIDDEN) && has(this[HIDDEN], tag)) this[HIDDEN][tag] = false;
      setSymbolDesc(this, tag, createDesc(1, value));
    };
    if (DESCRIPTORS && setter) setSymbolDesc(ObjectProto, tag, { configurable: true, set: $set });
    return wrap(tag);
  };
  redefine($Symbol[PROTOTYPE], 'toString', function toString() {
    return this._k;
  });

  $GOPD.f = $getOwnPropertyDescriptor;
  $DP.f = $defineProperty;
  __webpack_require__(99).f = gOPNExt.f = $getOwnPropertyNames;
  __webpack_require__(50).f = $propertyIsEnumerable;
  $GOPS.f = $getOwnPropertySymbols;

  if (DESCRIPTORS && !__webpack_require__(47)) {
    redefine(ObjectProto, 'propertyIsEnumerable', $propertyIsEnumerable, true);
  }

  wksExt.f = function (name) {
    return wrap(wks(name));
  };
}

$export($export.G + $export.W + $export.F * !USE_NATIVE, { Symbol: $Symbol });

for (var es6Symbols = (
  // 19.4.2.2, 19.4.2.3, 19.4.2.4, 19.4.2.6, 19.4.2.8, 19.4.2.9, 19.4.2.10, 19.4.2.11, 19.4.2.12, 19.4.2.13, 19.4.2.14
  'hasInstance,isConcatSpreadable,iterator,match,replace,search,species,split,toPrimitive,toStringTag,unscopables'
).split(','), j = 0; es6Symbols.length > j;)wks(es6Symbols[j++]);

for (var wellKnownSymbols = $keys(wks.store), k = 0; wellKnownSymbols.length > k;) wksDefine(wellKnownSymbols[k++]);

$export($export.S + $export.F * !USE_NATIVE, 'Symbol', {
  // 19.4.2.1 Symbol.for(key)
  'for': function (key) {
    return has(SymbolRegistry, key += '')
      ? SymbolRegistry[key]
      : SymbolRegistry[key] = $Symbol(key);
  },
  // 19.4.2.5 Symbol.keyFor(sym)
  keyFor: function keyFor(sym) {
    if (!isSymbol(sym)) throw TypeError(sym + ' is not a symbol!');
    for (var key in SymbolRegistry) if (SymbolRegistry[key] === sym) return key;
  },
  useSetter: function () { setter = true; },
  useSimple: function () { setter = false; }
});

$export($export.S + $export.F * !USE_NATIVE, 'Object', {
  // 19.1.2.2 Object.create(O [, Properties])
  create: $create,
  // 19.1.2.4 Object.defineProperty(O, P, Attributes)
  defineProperty: $defineProperty,
  // 19.1.2.3 Object.defineProperties(O, Properties)
  defineProperties: $defineProperties,
  // 19.1.2.6 Object.getOwnPropertyDescriptor(O, P)
  getOwnPropertyDescriptor: $getOwnPropertyDescriptor,
  // 19.1.2.7 Object.getOwnPropertyNames(O)
  getOwnPropertyNames: $getOwnPropertyNames,
  // 19.1.2.8 Object.getOwnPropertySymbols(O)
  getOwnPropertySymbols: $getOwnPropertySymbols
});

// Chrome 38 and 39 `Object.getOwnPropertySymbols` fails on primitives
// https://bugs.chromium.org/p/v8/issues/detail?id=3443
var FAILS_ON_PRIMITIVES = $fails(function () { $GOPS.f(1); });

$export($export.S + $export.F * FAILS_ON_PRIMITIVES, 'Object', {
  getOwnPropertySymbols: function getOwnPropertySymbols(it) {
    return $GOPS.f(toObject(it));
  }
});

// 24.3.2 JSON.stringify(value [, replacer [, space]])
$JSON && $export($export.S + $export.F * (!USE_NATIVE || $fails(function () {
  var S = $Symbol();
  // MS Edge converts symbol values to JSON as {}
  // WebKit converts symbol values to JSON as null
  // V8 throws on boxed symbols
  return _stringify([S]) != '[null]' || _stringify({ a: S }) != '{}' || _stringify(Object(S)) != '{}';
})), 'JSON', {
  stringify: function stringify(it) {
    var args = [it];
    var i = 1;
    var replacer, $replacer;
    while (arguments.length > i) args.push(arguments[i++]);
    $replacer = replacer = args[1];
    if (!isObject(replacer) && it === undefined || isSymbol(it)) return; // IE8 returns string on undefined
    if (!isArray(replacer)) replacer = function (key, value) {
      if (typeof $replacer == 'function') value = $replacer.call(this, key, value);
      if (!isSymbol(value)) return value;
    };
    args[1] = replacer;
    return _stringify.apply($JSON, args);
  }
});

// 19.4.3.4 Symbol.prototype[@@toPrimitive](hint)
$Symbol[PROTOTYPE][TO_PRIMITIVE] || __webpack_require__(24)($Symbol[PROTOTYPE], TO_PRIMITIVE, $Symbol[PROTOTYPE].valueOf);
// 19.4.3.5 Symbol.prototype[@@toStringTag]
setToStringTag($Symbol, 'Symbol');
// 20.2.1.9 Math[@@toStringTag]
setToStringTag(Math, 'Math', true);
// 24.3.3 JSON[@@toStringTag]
setToStringTag(global.JSON, 'JSON', true);


/***/ }),
/* 141 */
/***/ (function(module, exports, __webpack_require__) {

// call something on iterator step with safe closing on error
var anObject = __webpack_require__(13);
module.exports = function (iterator, fn, value, entries) {
  try {
    return entries ? fn(anObject(value)[0], value[1]) : fn(value);
  // 7.4.6 IteratorClose(iterator, completion)
  } catch (e) {
    var ret = iterator['return'];
    if (ret !== undefined) anObject(ret.call(iterator));
    throw e;
  }
};


/***/ }),
/* 142 */
/***/ (function(module, exports, __webpack_require__) {

// check on default Array iterator
var Iterators = __webpack_require__(35);
var ITERATOR = __webpack_require__(10)('iterator');
var ArrayProto = Array.prototype;

module.exports = function (it) {
  return it !== undefined && (Iterators.Array === it || ArrayProto[ITERATOR] === it);
};


/***/ }),
/* 143 */
/***/ (function(module, exports, __webpack_require__) {

// false -> Array#indexOf
// true  -> Array#includes
var toIObject = __webpack_require__(98);
var toLength = __webpack_require__(43);
var toAbsoluteIndex = __webpack_require__(198);
module.exports = function (IS_INCLUDES) {
  return function ($this, el, fromIndex) {
    var O = toIObject($this);
    var length = toLength(O.length);
    var index = toAbsoluteIndex(fromIndex, length);
    var value;
    // Array#includes uses SameValueZero equality algorithm
    // eslint-disable-next-line no-self-compare
    if (IS_INCLUDES && el != el) while (length > index) {
      value = O[index++];
      // eslint-disable-next-line no-self-compare
      if (value != value) return true;
    // Array#indexOf ignores holes, Array#includes - not
    } else for (;length > index; index++) if (IS_INCLUDES || index in O) {
      if (O[index] === el) return IS_INCLUDES || index || 0;
    } return !IS_INCLUDES && -1;
  };
};


/***/ }),
/* 144 */
/***/ (function(module, exports, __webpack_require__) {

var toInteger = __webpack_require__(57);
var defined = __webpack_require__(42);
// true  -> String#at
// false -> String#codePointAt
module.exports = function (TO_STRING) {
  return function (that, pos) {
    var s = String(defined(that));
    var i = toInteger(pos);
    var l = s.length;
    var a, b;
    if (i < 0 || i >= l) return TO_STRING ? '' : undefined;
    a = s.charCodeAt(i);
    return a < 0xd800 || a > 0xdbff || i + 1 === l || (b = s.charCodeAt(i + 1)) < 0xdc00 || b > 0xdfff
      ? TO_STRING ? s.charAt(i) : a
      : TO_STRING ? s.slice(i, i + 2) : (a - 0xd800 << 10) + (b - 0xdc00) + 0x10000;
  };
};


/***/ }),
/* 145 */
/***/ (function(module, exports, __webpack_require__) {

module.exports = __webpack_require__(67)('native-function-to-string', Function.toString);


/***/ }),
/* 146 */
/***/ (function(module, exports, __webpack_require__) {

"use strict";

// 25.4.1.5 NewPromiseCapability(C)
var aFunction = __webpack_require__(38);

function PromiseCapability(C) {
  var resolve, reject;
  this.promise = new C(function ($$resolve, $$reject) {
    if (resolve !== undefined || reject !== undefined) throw TypeError('Bad Promise constructor');
    resolve = $$resolve;
    reject = $$reject;
  });
  this.resolve = aFunction(resolve);
  this.reject = aFunction(reject);
}

module.exports.f = function (C) {
  return new PromiseCapability(C);
};


/***/ }),
/* 147 */
/***/ (function(module, exports, __webpack_require__) {

var $iterators = __webpack_require__(117);
var getKeys = __webpack_require__(184);
var redefine = __webpack_require__(37);
var global = __webpack_require__(17);
var hide = __webpack_require__(29);
var Iterators = __webpack_require__(118);
var wks = __webpack_require__(12);
var ITERATOR = wks('iterator');
var TO_STRING_TAG = wks('toStringTag');
var ArrayValues = Iterators.Array;

var DOMIterables = {
  CSSRuleList: true, // TODO: Not spec compliant, should be false.
  CSSStyleDeclaration: false,
  CSSValueList: false,
  ClientRectList: false,
  DOMRectList: false,
  DOMStringList: false,
  DOMTokenList: true,
  DataTransferItemList: false,
  FileList: false,
  HTMLAllCollection: false,
  HTMLCollection: false,
  HTMLFormElement: false,
  HTMLSelectElement: false,
  MediaList: true, // TODO: Not spec compliant, should be false.
  MimeTypeArray: false,
  NamedNodeMap: false,
  NodeList: true,
  PaintRequestList: false,
  Plugin: false,
  PluginArray: false,
  SVGLengthList: false,
  SVGNumberList: false,
  SVGPathSegList: false,
  SVGPointList: false,
  SVGStringList: false,
  SVGTransformList: false,
  SourceBufferList: false,
  StyleSheetList: true, // TODO: Not spec compliant, should be false.
  TextTrackCueList: false,
  TextTrackList: false,
  TouchList: false
};

for (var collections = getKeys(DOMIterables), i = 0; i < collections.length; i++) {
  var NAME = collections[i];
  var explicit = DOMIterables[NAME];
  var Collection = global[NAME];
  var proto = Collection && Collection.prototype;
  var key;
  if (proto) {
    if (!proto[ITERATOR]) hide(proto, ITERATOR, ArrayValues);
    if (!proto[TO_STRING_TAG]) hide(proto, TO_STRING_TAG, NAME);
    Iterators[NAME] = ArrayValues;
    if (explicit) for (key in $iterators) if (!proto[key]) redefine(proto, key, $iterators[key], true);
  }
}


/***/ }),
/* 148 */
/***/ (function(module, exports) {

// IE 8- don't enum bug keys
module.exports = (
  'constructor,hasOwnProperty,isPrototypeOf,propertyIsEnumerable,toLocaleString,toString,valueOf'
).split(',');


/***/ }),
/* 149 */
/***/ (function(module, exports, __webpack_require__) {

var _Reflect$construct = __webpack_require__(107);

function _isNativeReflectConstruct() {
  if (typeof Reflect === "undefined" || !_Reflect$construct) return false;
  if (_Reflect$construct.sham) return false;
  if (typeof Proxy === "function") return true;

  try {
    Date.prototype.toString.call(_Reflect$construct(Date, [], function () {}));
    return true;
  } catch (e) {
    return false;
  }
}

module.exports = _isNativeReflectConstruct;

/***/ }),
/* 150 */
/***/ (function(module, exports) {

module.exports = function (done, value) {
  return { value: value, done: !!done };
};


/***/ }),
/* 151 */
/***/ (function(module, exports, __webpack_require__) {

module.exports = __webpack_require__(172);

/***/ }),
/* 152 */
/***/ (function(module, exports, __webpack_require__) {

var ITERATOR = __webpack_require__(10)('iterator');
var SAFE_CLOSING = false;

try {
  var riter = [7][ITERATOR]();
  riter['return'] = function () { SAFE_CLOSING = true; };
  // eslint-disable-next-line no-throw-literal
  Array.from(riter, function () { throw 2; });
} catch (e) { /* empty */ }

module.exports = function (exec, skipClosing) {
  if (!skipClosing && !SAFE_CLOSING) return false;
  var safe = false;
  try {
    var arr = [7];
    var iter = arr[ITERATOR]();
    iter.next = function () { return { done: safe = true }; };
    arr[ITERATOR] = function () { return iter; };
    exec(arr);
  } catch (e) { /* empty */ }
  return safe;
};


/***/ }),
/* 153 */
/***/ (function(module, exports, __webpack_require__) {

var def = __webpack_require__(45).f;
var has = __webpack_require__(61);
var TAG = __webpack_require__(12)('toStringTag');

module.exports = function (it, tag, stat) {
  if (it && !has(it = stat ? it : it.prototype, TAG)) def(it, TAG, { configurable: true, value: tag });
};


/***/ }),
/* 154 */
/***/ (function(module, exports, __webpack_require__) {

// 7.3.20 SpeciesConstructor(O, defaultConstructor)
var anObject = __webpack_require__(18);
var aFunction = __webpack_require__(91);
var SPECIES = __webpack_require__(12)('species');
module.exports = function (O, D) {
  var C = anObject(O).constructor;
  var S;
  return C === undefined || (S = anObject(C)[SPECIES]) == undefined ? D : aFunction(S);
};


/***/ }),
/* 155 */
/***/ (function(module, exports, __webpack_require__) {

"use strict";
// 21.1.3.7 String.prototype.includes(searchString, position = 0)

var $export = __webpack_require__(34);
var context = __webpack_require__(204);
var INCLUDES = 'includes';

$export($export.P + $export.F * __webpack_require__(205)(INCLUDES), 'String', {
  includes: function includes(searchString /* , position = 0 */) {
    return !!~context(this, searchString, INCLUDES)
      .indexOf(searchString, arguments.length > 1 ? arguments[1] : undefined);
  }
});


/***/ }),
/* 156 */
/***/ (function(module, exports, __webpack_require__) {

__webpack_require__(157);
var $Object = __webpack_require__(6).Object;
module.exports = function defineProperty(it, key, desc) {
  return $Object.defineProperty(it, key, desc);
};


/***/ }),
/* 157 */
/***/ (function(module, exports, __webpack_require__) {

var $export = __webpack_require__(7);
// 19.1.2.4 / 15.2.3.6 Object.defineProperty(O, P, Attributes)
$export($export.S + $export.F * !__webpack_require__(14), 'Object', { defineProperty: __webpack_require__(15).f });


/***/ }),
/* 158 */
/***/ (function(module, exports, __webpack_require__) {

module.exports = __webpack_require__(159);

/***/ }),
/* 159 */
/***/ (function(module, exports, __webpack_require__) {

__webpack_require__(160);
module.exports = __webpack_require__(6).Object.getPrototypeOf;


/***/ }),
/* 160 */
/***/ (function(module, exports, __webpack_require__) {

// 19.1.2.9 Object.getPrototypeOf(O)
var toObject = __webpack_require__(32);
var $getPrototypeOf = __webpack_require__(64);

__webpack_require__(86)('getPrototypeOf', function () {
  return function getPrototypeOf(it) {
    return $getPrototypeOf(toObject(it));
  };
});


/***/ }),
/* 161 */
/***/ (function(module, exports, __webpack_require__) {

__webpack_require__(162);
module.exports = __webpack_require__(6).Object.setPrototypeOf;


/***/ }),
/* 162 */
/***/ (function(module, exports, __webpack_require__) {

// 19.1.3.19 Object.setPrototypeOf(O, proto)
var $export = __webpack_require__(7);
$export($export.S, 'Object', { setPrototypeOf: __webpack_require__(163).set });


/***/ }),
/* 163 */
/***/ (function(module, exports, __webpack_require__) {

// Works with __proto__ only. Old v8 can't work with null proto objects.
/* eslint-disable no-proto */
var isObject = __webpack_require__(9);
var anObject = __webpack_require__(13);
var check = function (O, proto) {
  anObject(O);
  if (!isObject(proto) && proto !== null) throw TypeError(proto + ": can't set as prototype!");
};
module.exports = {
  set: Object.setPrototypeOf || ('__proto__' in {} ? // eslint-disable-line
    function (test, buggy, set) {
      try {
        set = __webpack_require__(31)(Function.call, __webpack_require__(51).f(Object.prototype, '__proto__').set, 2);
        set(test, []);
        buggy = !(test instanceof Array);
      } catch (e) { buggy = true; }
      return function setPrototypeOf(O, proto) {
        check(O, proto);
        if (buggy) O.__proto__ = proto;
        else set(O, proto);
        return O;
      };
    }({}, false) : undefined),
  check: check
};


/***/ }),
/* 164 */
/***/ (function(module, exports, __webpack_require__) {

__webpack_require__(165);
var $Object = __webpack_require__(6).Object;
module.exports = function create(P, D) {
  return $Object.create(P, D);
};


/***/ }),
/* 165 */
/***/ (function(module, exports, __webpack_require__) {

var $export = __webpack_require__(7);
// 19.1.2.2 / 15.2.3.5 Object.create(O [, Properties])
$export($export.S, 'Object', { create: __webpack_require__(52) });


/***/ }),
/* 166 */
/***/ (function(module, exports, __webpack_require__) {

// false -> Array#indexOf
// true  -> Array#includes
var toIObject = __webpack_require__(20);
var toLength = __webpack_require__(69);
var toAbsoluteIndex = __webpack_require__(167);
module.exports = function (IS_INCLUDES) {
  return function ($this, el, fromIndex) {
    var O = toIObject($this);
    var length = toLength(O.length);
    var index = toAbsoluteIndex(fromIndex, length);
    var value;
    // Array#includes uses SameValueZero equality algorithm
    // eslint-disable-next-line no-self-compare
    if (IS_INCLUDES && el != el) while (length > index) {
      value = O[index++];
      // eslint-disable-next-line no-self-compare
      if (value != value) return true;
    // Array#indexOf ignores holes, Array#includes - not
    } else for (;length > index; index++) if (IS_INCLUDES || index in O) {
      if (O[index] === el) return IS_INCLUDES || index || 0;
    } return !IS_INCLUDES && -1;
  };
};


/***/ }),
/* 167 */
/***/ (function(module, exports, __webpack_require__) {

var toInteger = __webpack_require__(77);
var max = Math.max;
var min = Math.min;
module.exports = function (index, length) {
  index = toInteger(index);
  return index < 0 ? max(index + length, 0) : min(index, length);
};


/***/ }),
/* 168 */
/***/ (function(module, exports, __webpack_require__) {

__webpack_require__(169);
module.exports = __webpack_require__(6).Reflect.construct;


/***/ }),
/* 169 */
/***/ (function(module, exports, __webpack_require__) {

// 26.1.2 Reflect.construct(target, argumentsList [, newTarget])
var $export = __webpack_require__(7);
var create = __webpack_require__(52);
var aFunction = __webpack_require__(38);
var anObject = __webpack_require__(13);
var isObject = __webpack_require__(9);
var fails = __webpack_require__(22);
var bind = __webpack_require__(170);
var rConstruct = (__webpack_require__(8).Reflect || {}).construct;

// MS Edge supports only 2 arguments and argumentsList argument is optional
// FF Nightly sets third argument as `new.target`, but does not create `this` from it
var NEW_TARGET_BUG = fails(function () {
  function F() { /* empty */ }
  return !(rConstruct(function () { /* empty */ }, [], F) instanceof F);
});
var ARGS_BUG = !fails(function () {
  rConstruct(function () { /* empty */ });
});

$export($export.S + $export.F * (NEW_TARGET_BUG || ARGS_BUG), 'Reflect', {
  construct: function construct(Target, args /* , newTarget */) {
    aFunction(Target);
    anObject(args);
    var newTarget = arguments.length < 3 ? Target : aFunction(arguments[2]);
    if (ARGS_BUG && !NEW_TARGET_BUG) return rConstruct(Target, args, newTarget);
    if (Target == newTarget) {
      // w/o altered newTarget, optimization for 0-4 arguments
      switch (args.length) {
        case 0: return new Target();
        case 1: return new Target(args[0]);
        case 2: return new Target(args[0], args[1]);
        case 3: return new Target(args[0], args[1], args[2]);
        case 4: return new Target(args[0], args[1], args[2], args[3]);
      }
      // w/o altered newTarget, lot of arguments case
      var $args = [null];
      $args.push.apply($args, args);
      return new (bind.apply(Target, $args))();
    }
    // with altered newTarget, not support built-in constructors
    var proto = newTarget.prototype;
    var instance = create(isObject(proto) ? proto : Object.prototype);
    var result = Function.apply.call(Target, instance, args);
    return isObject(result) ? result : instance;
  }
});


/***/ }),
/* 170 */
/***/ (function(module, exports, __webpack_require__) {

"use strict";

var aFunction = __webpack_require__(38);
var isObject = __webpack_require__(9);
var invoke = __webpack_require__(132);
var arraySlice = [].slice;
var factories = {};

var construct = function (F, len, args) {
  if (!(len in factories)) {
    for (var n = [], i = 0; i < len; i++) n[i] = 'a[' + i + ']';
    // eslint-disable-next-line no-new-func
    factories[len] = Function('F,a', 'return new F(' + n.join(',') + ')');
  } return factories[len](F, args);
};

module.exports = Function.bind || function bind(that /* , ...args */) {
  var fn = aFunction(this);
  var partArgs = arraySlice.call(arguments, 1);
  var bound = function (/* args... */) {
    var args = partArgs.concat(arraySlice.call(arguments));
    return this instanceof bound ? construct(fn, args.length, args) : invoke(fn, args, that);
  };
  if (isObject(fn.prototype)) bound.prototype = fn.prototype;
  return bound;
};


/***/ }),
/* 171 */
/***/ (function(module, exports, __webpack_require__) {

var _typeof = __webpack_require__(48);

var assertThisInitialized = __webpack_require__(49);

function _possibleConstructorReturn(self, call) {
  if (call && (_typeof(call) === "object" || typeof call === "function")) {
    return call;
  }

  return assertThisInitialized(self);
}

module.exports = _possibleConstructorReturn;

/***/ }),
/* 172 */
/***/ (function(module, exports, __webpack_require__) {

__webpack_require__(60);
__webpack_require__(62);
module.exports = __webpack_require__(63).f('iterator');


/***/ }),
/* 173 */
/***/ (function(module, exports, __webpack_require__) {

var toInteger = __webpack_require__(77);
var defined = __webpack_require__(65);
// true  -> String#at
// false -> String#codePointAt
module.exports = function (TO_STRING) {
  return function (that, pos) {
    var s = String(defined(that));
    var i = toInteger(pos);
    var l = s.length;
    var a, b;
    if (i < 0 || i >= l) return TO_STRING ? '' : undefined;
    a = s.charCodeAt(i);
    return a < 0xd800 || a > 0xdbff || i + 1 === l || (b = s.charCodeAt(i + 1)) < 0xdc00 || b > 0xdfff
      ? TO_STRING ? s.charAt(i) : a
      : TO_STRING ? s.slice(i, i + 2) : (a - 0xd800 << 10) + (b - 0xdc00) + 0x10000;
  };
};


/***/ }),
/* 174 */
/***/ (function(module, exports, __webpack_require__) {

"use strict";

var create = __webpack_require__(52);
var descriptor = __webpack_require__(44);
var setToStringTag = __webpack_require__(53);
var IteratorPrototype = {};

// 25.1.2.1.1 %IteratorPrototype%[@@iterator]()
__webpack_require__(24)(IteratorPrototype, __webpack_require__(10)('iterator'), function () { return this; });

module.exports = function (Constructor, NAME, next) {
  Constructor.prototype = create(IteratorPrototype, { next: descriptor(1, next) });
  setToStringTag(Constructor, NAME + ' Iterator');
};


/***/ }),
/* 175 */
/***/ (function(module, exports, __webpack_require__) {

"use strict";

var addToUnscopables = __webpack_require__(176);
var step = __webpack_require__(150);
var Iterators = __webpack_require__(35);
var toIObject = __webpack_require__(20);

// 22.1.3.4 Array.prototype.entries()
// 22.1.3.13 Array.prototype.keys()
// 22.1.3.29 Array.prototype.values()
// 22.1.3.30 Array.prototype[@@iterator]()
module.exports = __webpack_require__(108)(Array, 'Array', function (iterated, kind) {
  this._t = toIObject(iterated); // target
  this._i = 0;                   // next index
  this._k = kind;                // kind
// 22.1.5.2.1 %ArrayIteratorPrototype%.next()
}, function () {
  var O = this._t;
  var kind = this._k;
  var index = this._i++;
  if (!O || index >= O.length) {
    this._t = undefined;
    return step(1);
  }
  if (kind == 'keys') return step(0, index);
  if (kind == 'values') return step(0, O[index]);
  return step(0, [index, O[index]]);
}, 'values');

// argumentsList[@@iterator] is %ArrayProto_values% (9.4.4.6, 9.4.4.7)
Iterators.Arguments = Iterators.Array;

addToUnscopables('keys');
addToUnscopables('values');
addToUnscopables('entries');


/***/ }),
/* 176 */
/***/ (function(module, exports) {

module.exports = function () { /* empty */ };


/***/ }),
/* 177 */
/***/ (function(module, exports, __webpack_require__) {

__webpack_require__(140);
__webpack_require__(100);
__webpack_require__(180);
__webpack_require__(181);
module.exports = __webpack_require__(6).Symbol;


/***/ }),
/* 178 */
/***/ (function(module, exports, __webpack_require__) {

// all enumerable object keys, includes symbols
var getKeys = __webpack_require__(40);
var gOPS = __webpack_require__(71);
var pIE = __webpack_require__(50);
module.exports = function (it) {
  var result = getKeys(it);
  var getSymbols = gOPS.f;
  if (getSymbols) {
    var symbols = getSymbols(it);
    var isEnum = pIE.f;
    var i = 0;
    var key;
    while (symbols.length > i) if (isEnum.call(it, key = symbols[i++])) result.push(key);
  } return result;
};


/***/ }),
/* 179 */
/***/ (function(module, exports, __webpack_require__) {

// fallback for IE11 buggy Object.getOwnPropertyNames with iframe and window
var toIObject = __webpack_require__(20);
var gOPN = __webpack_require__(99).f;
var toString = {}.toString;

var windowNames = typeof window == 'object' && window && Object.getOwnPropertyNames
  ? Object.getOwnPropertyNames(window) : [];

var getWindowNames = function (it) {
  try {
    return gOPN(it);
  } catch (e) {
    return windowNames.slice();
  }
};

module.exports.f = function getOwnPropertyNames(it) {
  return windowNames && toString.call(it) == '[object Window]' ? getWindowNames(it) : gOPN(toIObject(it));
};


/***/ }),
/* 180 */
/***/ (function(module, exports, __webpack_require__) {

__webpack_require__(79)('asyncIterator');


/***/ }),
/* 181 */
/***/ (function(module, exports, __webpack_require__) {

__webpack_require__(79)('observable');


/***/ }),
/* 182 */
/***/ (function(module, exports, __webpack_require__) {

// 0 -> Array#forEach
// 1 -> Array#map
// 2 -> Array#filter
// 3 -> Array#some
// 4 -> Array#every
// 5 -> Array#find
// 6 -> Array#findIndex
var ctx = __webpack_require__(73);
var IObject = __webpack_require__(120);
var toObject = __webpack_require__(96);
var toLength = __webpack_require__(43);
var asc = __webpack_require__(216);
module.exports = function (TYPE, $create) {
  var IS_MAP = TYPE == 1;
  var IS_FILTER = TYPE == 2;
  var IS_SOME = TYPE == 3;
  var IS_EVERY = TYPE == 4;
  var IS_FIND_INDEX = TYPE == 6;
  var NO_HOLES = TYPE == 5 || IS_FIND_INDEX;
  var create = $create || asc;
  return function ($this, callbackfn, that) {
    var O = toObject($this);
    var self = IObject(O);
    var f = ctx(callbackfn, that, 3);
    var length = toLength(self.length);
    var index = 0;
    var result = IS_MAP ? create($this, length) : IS_FILTER ? create($this, 0) : undefined;
    var val, res;
    for (;length > index; index++) if (NO_HOLES || index in self) {
      val = self[index];
      res = f(val, index, O);
      if (TYPE) {
        if (IS_MAP) result[index] = res;   // map
        else if (res) switch (TYPE) {
          case 3: return true;             // some
          case 5: return val;              // find
          case 6: return index;            // findIndex
          case 2: result.push(val);        // filter
        } else if (IS_EVERY) return false; // every
      }
    }
    return IS_FIND_INDEX ? -1 : IS_SOME || IS_EVERY ? IS_EVERY : result;
  };
};


/***/ }),
/* 183 */
/***/ (function(module, exports, __webpack_require__) {

"use strict";

__webpack_require__(280);
var anObject = __webpack_require__(18);
var $flags = __webpack_require__(106);
var DESCRIPTORS = __webpack_require__(27);
var TO_STRING = 'toString';
var $toString = /./[TO_STRING];

var define = function (fn) {
  __webpack_require__(37)(RegExp.prototype, TO_STRING, fn, true);
};

// 21.2.5.14 RegExp.prototype.toString()
if (__webpack_require__(33)(function () { return $toString.call({ source: 'a', flags: 'b' }) != '/a/b'; })) {
  define(function toString() {
    var R = anObject(this);
    return '/'.concat(R.source, '/',
      'flags' in R ? R.flags : !DESCRIPTORS && R instanceof RegExp ? $flags.call(R) : undefined);
  });
// FF44- RegExp#toString has a wrong name
} else if ($toString.name != TO_STRING) {
  define(function toString() {
    return $toString.call(this);
  });
}


/***/ }),
/* 184 */
/***/ (function(module, exports, __webpack_require__) {

// 19.1.2.14 / 15.2.3.14 Object.keys(O)
var $keys = __webpack_require__(219);
var enumBugKeys = __webpack_require__(148);

module.exports = Object.keys || function keys(O) {
  return $keys(O, enumBugKeys);
};


/***/ }),
/* 185 */
/***/ (function(module, exports, __webpack_require__) {

var DESCRIPTORS = __webpack_require__(14);
var getKeys = __webpack_require__(40);
var toIObject = __webpack_require__(20);
var isEnum = __webpack_require__(50).f;
module.exports = function (isEntries) {
  return function (it) {
    var O = toIObject(it);
    var keys = getKeys(O);
    var length = keys.length;
    var i = 0;
    var result = [];
    var key;
    while (length > i) {
      key = keys[i++];
      if (!DESCRIPTORS || isEnum.call(O, key)) {
        result.push(isEntries ? [key, O[key]] : O[key]);
      }
    }
    return result;
  };
};


/***/ }),
/* 186 */
/***/ (function(module, exports, __webpack_require__) {

"use strict";

var $defineProperty = __webpack_require__(15);
var createDesc = __webpack_require__(44);

module.exports = function (object, index, value) {
  if (index in object) $defineProperty.f(object, index, createDesc(0, value));
  else object[index] = value;
};


/***/ }),
/* 187 */
/***/ (function(module, exports, __webpack_require__) {

var _Array$from = __webpack_require__(200);

var arrayLikeToArray = __webpack_require__(199);

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;

/***/ }),
/* 188 */
/***/ (function(module, exports, __webpack_require__) {

var _Object$assign = __webpack_require__(134);

function _extends() {
  module.exports = _extends = _Object$assign || function (target) {
    for (var i = 1; i < arguments.length; i++) {
      var source = arguments[i];

      for (var key in source) {
        if (Object.prototype.hasOwnProperty.call(source, key)) {
          target[key] = source[key];
        }
      }
    }

    return target;
  };

  return _extends.apply(this, arguments);
}

module.exports = _extends;

/***/ }),
/* 189 */,
/* 190 */
/***/ (function(module, exports, __webpack_require__) {

"use strict";

var regexpExec = __webpack_require__(90);
__webpack_require__(34)({
  target: 'RegExp',
  proto: true,
  forced: regexpExec !== /./.exec
}, {
  exec: regexpExec
});


/***/ }),
/* 191 */
/***/ (function(module, exports, __webpack_require__) {

__webpack_require__(192);
var $Object = __webpack_require__(6).Object;
module.exports = function getOwnPropertyDescriptor(it, key) {
  return $Object.getOwnPropertyDescriptor(it, key);
};


/***/ }),
/* 192 */
/***/ (function(module, exports, __webpack_require__) {

// 19.1.2.6 Object.getOwnPropertyDescriptor(O, P)
var toIObject = __webpack_require__(20);
var $getOwnPropertyDescriptor = __webpack_require__(51).f;

__webpack_require__(86)('getOwnPropertyDescriptor', function () {
  return function getOwnPropertyDescriptor(it, key) {
    return $getOwnPropertyDescriptor(toIObject(it), key);
  };
});


/***/ }),
/* 193 */
/***/ (function(module, exports, __webpack_require__) {

module.exports = __webpack_require__(194);

/***/ }),
/* 194 */
/***/ (function(module, exports, __webpack_require__) {

__webpack_require__(195);
module.exports = __webpack_require__(6).Reflect.get;


/***/ }),
/* 195 */
/***/ (function(module, exports, __webpack_require__) {

// 26.1.6 Reflect.get(target, propertyKey [, receiver])
var gOPD = __webpack_require__(51);
var getPrototypeOf = __webpack_require__(64);
var has = __webpack_require__(19);
var $export = __webpack_require__(7);
var isObject = __webpack_require__(9);
var anObject = __webpack_require__(13);

function get(target, propertyKey /* , receiver */) {
  var receiver = arguments.length < 3 ? target : arguments[2];
  var desc, proto;
  if (anObject(target) === receiver) return target[propertyKey];
  if (desc = gOPD.f(target, propertyKey)) return has(desc, 'value')
    ? desc.value
    : desc.get !== undefined
      ? desc.get.call(receiver)
      : undefined;
  if (isObject(proto = getPrototypeOf(target))) return get(proto, propertyKey, receiver);
}

$export($export.S, 'Reflect', { get: get });


/***/ }),
/* 196 */
/***/ (function(module, exports, __webpack_require__) {

var getPrototypeOf = __webpack_require__(16);

function _superPropBase(object, property) {
  while (!Object.prototype.hasOwnProperty.call(object, property)) {
    object = getPrototypeOf(object);
    if (object === null) break;
  }

  return object;
}

module.exports = _superPropBase;

/***/ }),
/* 197 */
/***/ (function(module, exports, __webpack_require__) {

"use strict";

var LIBRARY = __webpack_require__(110);
var $export = __webpack_require__(34);
var redefine = __webpack_require__(37);
var hide = __webpack_require__(29);
var Iterators = __webpack_require__(118);
var $iterCreate = __webpack_require__(242);
var setToStringTag = __webpack_require__(153);
var getPrototypeOf = __webpack_require__(244);
var ITERATOR = __webpack_require__(12)('iterator');
var BUGGY = !([].keys && 'next' in [].keys()); // Safari has buggy iterators w/o `next`
var FF_ITERATOR = '@@iterator';
var KEYS = 'keys';
var VALUES = 'values';

var returnThis = function () { return this; };

module.exports = function (Base, NAME, Constructor, next, DEFAULT, IS_SET, FORCED) {
  $iterCreate(Constructor, NAME, next);
  var getMethod = function (kind) {
    if (!BUGGY && kind in proto) return proto[kind];
    switch (kind) {
      case KEYS: return function keys() { return new Constructor(this, kind); };
      case VALUES: return function values() { return new Constructor(this, kind); };
    } return function entries() { return new Constructor(this, kind); };
  };
  var TAG = NAME + ' Iterator';
  var DEF_VALUES = DEFAULT == VALUES;
  var VALUES_BUG = false;
  var proto = Base.prototype;
  var $native = proto[ITERATOR] || proto[FF_ITERATOR] || DEFAULT && proto[DEFAULT];
  var $default = $native || getMethod(DEFAULT);
  var $entries = DEFAULT ? !DEF_VALUES ? $default : getMethod('entries') : undefined;
  var $anyNative = NAME == 'Array' ? proto.entries || $native : $native;
  var methods, key, IteratorPrototype;
  // Fix native
  if ($anyNative) {
    IteratorPrototype = getPrototypeOf($anyNative.call(new Base()));
    if (IteratorPrototype !== Object.prototype && IteratorPrototype.next) {
      // Set @@toStringTag to native iterators
      setToStringTag(IteratorPrototype, TAG, true);
      // fix for some old engines
      if (!LIBRARY && typeof IteratorPrototype[ITERATOR] != 'function') hide(IteratorPrototype, ITERATOR, returnThis);
    }
  }
  // fix Array#{values, @@iterator}.name in V8 / FF
  if (DEF_VALUES && $native && $native.name !== VALUES) {
    VALUES_BUG = true;
    $default = function values() { return $native.call(this); };
  }
  // Define iterator
  if ((!LIBRARY || FORCED) && (BUGGY || VALUES_BUG || !proto[ITERATOR])) {
    hide(proto, ITERATOR, $default);
  }
  // Plug for library
  Iterators[NAME] = $default;
  Iterators[TAG] = returnThis;
  if (DEFAULT) {
    methods = {
      values: DEF_VALUES ? $default : getMethod(VALUES),
      keys: IS_SET ? $default : getMethod(KEYS),
      entries: $entries
    };
    if (FORCED) for (key in methods) {
      if (!(key in proto)) redefine(proto, key, methods[key]);
    } else $export($export.P + $export.F * (BUGGY || VALUES_BUG), NAME, methods);
  }
  return methods;
};


/***/ }),
/* 198 */
/***/ (function(module, exports, __webpack_require__) {

var toInteger = __webpack_require__(57);
var max = Math.max;
var min = Math.min;
module.exports = function (index, length) {
  index = toInteger(index);
  return index < 0 ? max(index + length, 0) : min(index, length);
};


/***/ }),
/* 199 */
/***/ (function(module, exports) {

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;

/***/ }),
/* 200 */
/***/ (function(module, exports, __webpack_require__) {

module.exports = __webpack_require__(228);

/***/ }),
/* 201 */
/***/ (function(module, exports, __webpack_require__) {

__webpack_require__(202);
module.exports = __webpack_require__(6).Object.keys;


/***/ }),
/* 202 */
/***/ (function(module, exports, __webpack_require__) {

// 19.1.2.14 Object.keys(O)
var toObject = __webpack_require__(32);
var $keys = __webpack_require__(40);

__webpack_require__(86)('keys', function () {
  return function keys(it) {
    return $keys(toObject(it));
  };
});


/***/ }),
/* 203 */
/***/ (function(module, exports, __webpack_require__) {

"use strict";


var _interopRequireDefault = __webpack_require__(0);

var _Object$defineProperty = __webpack_require__(1);

_Object$defineProperty(exports, "__esModule", {
  value: true
});

exports.default = void 0;

var _classCallCheck2 = _interopRequireDefault(__webpack_require__(2));

var _createClass2 = _interopRequireDefault(__webpack_require__(3));

var _inherits2 = _interopRequireDefault(__webpack_require__(4));

var _createSuper2 = _interopRequireDefault(__webpack_require__(5));

var _commandBase = _interopRequireDefault(__webpack_require__(21));

var CommandInternalBase = /*#__PURE__*/function (_CommandBase) {
  (0, _inherits2.default)(CommandInternalBase, _CommandBase);

  var _super = (0, _createSuper2.default)(CommandInternalBase);

  (0, _createClass2.default)(CommandInternalBase, null, [{
    key: "getInstanceType",
    value: function getInstanceType() {
      return 'CommandInternalBase';
    }
  }]);

  function CommandInternalBase(args) {
    var commandsAPI = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : $e.commandsInternal;
    (0, _classCallCheck2.default)(this, CommandInternalBase);
    return _super.call(this, args, commandsAPI);
  }

  return CommandInternalBase;
}(_commandBase.default);

exports.default = CommandInternalBase;

/***/ }),
/* 204 */
/***/ (function(module, exports, __webpack_require__) {

// helper for String#{startsWith, endsWith, includes}
var isRegExp = __webpack_require__(122);
var defined = __webpack_require__(42);

module.exports = function (that, searchString, NAME) {
  if (isRegExp(searchString)) throw TypeError('String#' + NAME + " doesn't accept regex!");
  return String(defined(that));
};


/***/ }),
/* 205 */
/***/ (function(module, exports, __webpack_require__) {

var MATCH = __webpack_require__(12)('match');
module.exports = function (KEY) {
  var re = /./;
  try {
    '/./'[KEY](re);
  } catch (e) {
    try {
      re[MATCH] = false;
      return !'/./'[KEY](re);
    } catch (f) { /* empty */ }
  } return true;
};


/***/ }),
/* 206 */
/***/ (function(module, exports, __webpack_require__) {

module.exports = __webpack_require__(316);

/***/ }),
/* 207 */
/***/ (function(module, exports, __webpack_require__) {

// 7.3.20 SpeciesConstructor(O, defaultConstructor)
var anObject = __webpack_require__(13);
var aFunction = __webpack_require__(38);
var SPECIES = __webpack_require__(10)('species');
module.exports = function (O, D) {
  var C = anObject(O).constructor;
  var S;
  return C === undefined || (S = anObject(C)[SPECIES]) == undefined ? D : aFunction(S);
};


/***/ }),
/* 208 */
/***/ (function(module, exports, __webpack_require__) {

var ctx = __webpack_require__(31);
var invoke = __webpack_require__(132);
var html = __webpack_require__(131);
var cel = __webpack_require__(92);
var global = __webpack_require__(8);
var process = global.process;
var setTask = global.setImmediate;
var clearTask = global.clearImmediate;
var MessageChannel = global.MessageChannel;
var Dispatch = global.Dispatch;
var counter = 0;
var queue = {};
var ONREADYSTATECHANGE = 'onreadystatechange';
var defer, channel, port;
var run = function () {
  var id = +this;
  // eslint-disable-next-line no-prototype-builtins
  if (queue.hasOwnProperty(id)) {
    var fn = queue[id];
    delete queue[id];
    fn();
  }
};
var listener = function (event) {
  run.call(event.data);
};
// Node.js 0.9+ & IE10+ has setImmediate, otherwise:
if (!setTask || !clearTask) {
  setTask = function setImmediate(fn) {
    var args = [];
    var i = 1;
    while (arguments.length > i) args.push(arguments[i++]);
    queue[++counter] = function () {
      // eslint-disable-next-line no-new-func
      invoke(typeof fn == 'function' ? fn : Function(fn), args);
    };
    defer(counter);
    return counter;
  };
  clearTask = function clearImmediate(id) {
    delete queue[id];
  };
  // Node.js 0.8-
  if (__webpack_require__(56)(process) == 'process') {
    defer = function (id) {
      process.nextTick(ctx(run, id, 1));
    };
  // Sphere (JS game engine) Dispatch API
  } else if (Dispatch && Dispatch.now) {
    defer = function (id) {
      Dispatch.now(ctx(run, id, 1));
    };
  // Browsers with MessageChannel, includes WebWorkers
  } else if (MessageChannel) {
    channel = new MessageChannel();
    port = channel.port2;
    channel.port1.onmessage = listener;
    defer = ctx(port.postMessage, port, 1);
  // Browsers with postMessage, skip WebWorkers
  // IE8 has postMessage, but it's sync & typeof its postMessage is 'object'
  } else if (global.addEventListener && typeof postMessage == 'function' && !global.importScripts) {
    defer = function (id) {
      global.postMessage(id + '', '*');
    };
    global.addEventListener('message', listener, false);
  // IE8-
  } else if (ONREADYSTATECHANGE in cel('script')) {
    defer = function (id) {
      html.appendChild(cel('script'))[ONREADYSTATECHANGE] = function () {
        html.removeChild(this);
        run.call(id);
      };
    };
  // Rest old browsers
  } else {
    defer = function (id) {
      setTimeout(ctx(run, id, 1), 0);
    };
  }
}
module.exports = {
  set: setTask,
  clear: clearTask
};


/***/ }),
/* 209 */
/***/ (function(module, exports) {

module.exports = function (exec) {
  try {
    return { e: false, v: exec() };
  } catch (e) {
    return { e: true, v: e };
  }
};


/***/ }),
/* 210 */
/***/ (function(module, exports, __webpack_require__) {

var anObject = __webpack_require__(13);
var isObject = __webpack_require__(9);
var newPromiseCapability = __webpack_require__(146);

module.exports = function (C, x) {
  anObject(C);
  if (isObject(x) && x.constructor === C) return x;
  var promiseCapability = newPromiseCapability.f(C);
  var resolve = promiseCapability.resolve;
  resolve(x);
  return promiseCapability.promise;
};


/***/ }),
/* 211 */
/***/ (function(module, exports, __webpack_require__) {

module.exports = __webpack_require__(230);

/***/ }),
/* 212 */
/***/ (function(module, exports, __webpack_require__) {

"use strict";

// 19.1.2.1 Object.assign(target, source, ...)
var DESCRIPTORS = __webpack_require__(14);
var getKeys = __webpack_require__(40);
var gOPS = __webpack_require__(71);
var pIE = __webpack_require__(50);
var toObject = __webpack_require__(32);
var IObject = __webpack_require__(104);
var $assign = Object.assign;

// should work with symbols and should have deterministic property order (V8 bug)
module.exports = !$assign || __webpack_require__(22)(function () {
  var A = {};
  var B = {};
  // eslint-disable-next-line no-undef
  var S = Symbol();
  var K = 'abcdefghijklmnopqrst';
  A[S] = 7;
  K.split('').forEach(function (k) { B[k] = k; });
  return $assign({}, A)[S] != 7 || Object.keys($assign({}, B)).join('') != K;
}) ? function assign(target, source) { // eslint-disable-line no-unused-vars
  var T = toObject(target);
  var aLen = arguments.length;
  var index = 1;
  var getSymbols = gOPS.f;
  var isEnum = pIE.f;
  while (aLen > index) {
    var S = IObject(arguments[index++]);
    var keys = getSymbols ? getKeys(S).concat(getSymbols(S)) : getKeys(S);
    var length = keys.length;
    var j = 0;
    var key;
    while (length > j) {
      key = keys[j++];
      if (!DESCRIPTORS || isEnum.call(S, key)) T[key] = S[key];
    }
  } return T;
} : $assign;


/***/ }),
/* 213 */
/***/ (function(module, exports, __webpack_require__) {

module.exports = __webpack_require__(282);

/***/ }),
/* 214 */
/***/ (function(module, exports, __webpack_require__) {

var _Object$defineProperty = __webpack_require__(1);

var _Object$defineProperties = __webpack_require__(290);

var _Object$getOwnPropertyDescriptors = __webpack_require__(303);

var _Object$getOwnPropertyDescriptor = __webpack_require__(124);

var _Object$getOwnPropertySymbols = __webpack_require__(307);

var _Object$keys = __webpack_require__(23);

var defineProperty = __webpack_require__(28);

function ownKeys(object, enumerableOnly) {
  var keys = _Object$keys(object);

  if (_Object$getOwnPropertySymbols) {
    var symbols = _Object$getOwnPropertySymbols(object);

    if (enumerableOnly) symbols = symbols.filter(function (sym) {
      return _Object$getOwnPropertyDescriptor(object, sym).enumerable;
    });
    keys.push.apply(keys, symbols);
  }

  return keys;
}

function _objectSpread2(target) {
  for (var i = 1; i < arguments.length; i++) {
    var source = arguments[i] != null ? arguments[i] : {};

    if (i % 2) {
      ownKeys(Object(source), true).forEach(function (key) {
        defineProperty(target, key, source[key]);
      });
    } else if (_Object$getOwnPropertyDescriptors) {
      _Object$defineProperties(target, _Object$getOwnPropertyDescriptors(source));
    } else {
      ownKeys(Object(source)).forEach(function (key) {
        _Object$defineProperty(target, key, _Object$getOwnPropertyDescriptor(source, key));
      });
    }
  }

  return target;
}

module.exports = _objectSpread2;

/***/ }),
/* 215 */
/***/ (function(module, exports, __webpack_require__) {

"use strict";


var _interopRequireDefault = __webpack_require__(0);

var _Object$defineProperty = __webpack_require__(1);

_Object$defineProperty(exports, "__esModule", {
  value: true
});

exports.default = void 0;

var _values = _interopRequireDefault(__webpack_require__(55));

var _classCallCheck2 = _interopRequireDefault(__webpack_require__(2));

var _createClass2 = _interopRequireDefault(__webpack_require__(3));

var _inherits2 = _interopRequireDefault(__webpack_require__(4));

var _createSuper2 = _interopRequireDefault(__webpack_require__(5));

var _helperBc = _interopRequireDefault(__webpack_require__(370));

// TODO: this file should be deleted.
var Helper = /*#__PURE__*/function (_BackwardsCompatibili) {
  (0, _inherits2.default)(Helper, _BackwardsCompatibili);

  var _super = (0, _createSuper2.default)(Helper);

  function Helper() {
    (0, _classCallCheck2.default)(this, Helper);
    return _super.apply(this, arguments);
  }

  (0, _createClass2.default)(Helper, null, [{
    key: "isValidChild",
    // TODO: This is not the right place for this function
    value: function isValidChild(childModel, parentModel) {
      var parentElType = parentModel.get('elType'),
          draggedElType = childModel.get('elType'),
          parentIsInner = parentModel.get('isInner'),
          draggedIsInner = childModel.get('isInner'); // Block's inner-section at inner-section column.

      if (draggedIsInner && 'section' === draggedElType && parentIsInner && 'column' === parentElType) {
        return false;
      }

      if (draggedElType === parentElType) {
        return false;
      }

      if ('section' === draggedElType && !draggedIsInner && 'column' === parentElType) {
        return false;
      }

      var childTypes = elementor.helpers.getElementChildType(parentElType);
      return childTypes && -1 !== childTypes.indexOf(childModel.get('elType'));
    } // TODO: This is not the right place for this function

  }, {
    key: "isValidGrandChild",
    value: function isValidGrandChild(childModel, targetContainer) {
      var result;
      var childElType = childModel.get('elType');

      switch (targetContainer.model.get('elType')) {
        case 'document':
          result = true;
          break;

        case 'section':
          result = 'widget' === childElType;
          break;

        default:
          result = false;
      }

      return result;
    } // TODO: This is not the right place for this function

  }, {
    key: "isSameElement",
    value: function isSameElement(sourceModel, targetContainer) {
      var targetElType = targetContainer.model.get('elType'),
          sourceElType = sourceModel.get('elType');

      if (targetElType !== sourceElType) {
        return false;
      }

      if ('column' === targetElType && 'column' === sourceElType) {
        return true;
      }

      return targetContainer.model.get('isInner') === sourceModel.get('isInner');
    } // TODO: This is not the right place for this function

  }, {
    key: "getPasteOptions",
    value: function getPasteOptions(sourceModel, targetContainer) {
      var result = {};
      result.isValidChild = this.isValidChild(sourceModel, targetContainer.model);
      result.isSameElement = this.isSameElement(sourceModel, targetContainer);
      result.isValidGrandChild = this.isValidGrandChild(sourceModel, targetContainer);
      return result;
    } // TODO: This is not the right place for this function

  }, {
    key: "isPasteEnabled",
    value: function isPasteEnabled(targetContainer) {
      var storage = elementorCommon.storage.get('clipboard'); // No storage? no paste.

      if (!storage || !storage[0]) {
        return false;
      }

      if (!(storage[0] instanceof Backbone.Model)) {
        storage[0] = new Backbone.Model(storage[0]);
      }

      var pasteOptions = this.getPasteOptions(storage[0], targetContainer);
      return (0, _values.default)(pasteOptions).some(function (opt) {
        return !!opt;
      });
    }
  }]);
  return Helper;
}(_helperBc.default);

exports.default = Helper;

/***/ }),
/* 216 */
/***/ (function(module, exports, __webpack_require__) {

// 9.4.2.3 ArraySpeciesCreate(originalArray, length)
var speciesConstructor = __webpack_require__(217);

module.exports = function (original, length) {
  return new (speciesConstructor(original))(length);
};


/***/ }),
/* 217 */
/***/ (function(module, exports, __webpack_require__) {

var isObject = __webpack_require__(30);
var isArray = __webpack_require__(218);
var SPECIES = __webpack_require__(12)('species');

module.exports = function (original) {
  var C;
  if (isArray(original)) {
    C = original.constructor;
    // cross-realm fallback
    if (typeof C == 'function' && (C === Array || isArray(C.prototype))) C = undefined;
    if (isObject(C)) {
      C = C[SPECIES];
      if (C === null) C = undefined;
    }
  } return C === undefined ? Array : C;
};


/***/ }),
/* 218 */
/***/ (function(module, exports, __webpack_require__) {

// 7.2.2 IsArray(argument)
var cof = __webpack_require__(46);
module.exports = Array.isArray || function isArray(arg) {
  return cof(arg) == 'Array';
};


/***/ }),
/* 219 */
/***/ (function(module, exports, __webpack_require__) {

var has = __webpack_require__(61);
var toIObject = __webpack_require__(98);
var arrayIndexOf = __webpack_require__(143)(false);
var IE_PROTO = __webpack_require__(130)('IE_PROTO');

module.exports = function (object, names) {
  var O = toIObject(object);
  var i = 0;
  var result = [];
  var key;
  for (key in O) if (key != IE_PROTO) has(O, key) && result.push(key);
  // Don't enum bug & hidden keys
  while (names.length > i) if (has(O, key = names[i++])) {
    ~arrayIndexOf(result, key) || result.push(key);
  }
  return result;
};


/***/ }),
/* 220 */
/***/ (function(module, exports, __webpack_require__) {

__webpack_require__(221);
module.exports = __webpack_require__(6).Array.isArray;


/***/ }),
/* 221 */
/***/ (function(module, exports, __webpack_require__) {

// 22.1.2.2 / 15.4.3.2 Array.isArray(arg)
var $export = __webpack_require__(7);

$export($export.S, 'Array', { isArray: __webpack_require__(97) });


/***/ }),
/* 222 */,
/* 223 */
/***/ (function(module, exports, __webpack_require__) {

"use strict";


var _interopRequireDefault = __webpack_require__(0);

var _Object$defineProperty = __webpack_require__(1);

_Object$defineProperty(exports, "__esModule", {
  value: true
});

exports.default = void 0;

var _typeof2 = _interopRequireDefault(__webpack_require__(48));

var _classCallCheck2 = _interopRequireDefault(__webpack_require__(2));

var _createClass2 = _interopRequireDefault(__webpack_require__(3));

var _inherits2 = _interopRequireDefault(__webpack_require__(4));

var _createSuper2 = _interopRequireDefault(__webpack_require__(5));

var _instanceType = _interopRequireDefault(__webpack_require__(252));

var ArgsObject = /*#__PURE__*/function (_InstanceType) {
  (0, _inherits2.default)(ArgsObject, _InstanceType);

  var _super = (0, _createSuper2.default)(ArgsObject);

  (0, _createClass2.default)(ArgsObject, null, [{
    key: "getInstanceType",
    value: function getInstanceType() {
      return 'ArgsObject';
    }
    /**
     * Function constructor().
     *
     * Create ArgsObject.
     *
     * @param {{}} args
     */

  }]);

  function ArgsObject(args) {
    var _this;

    (0, _classCallCheck2.default)(this, ArgsObject);
    _this = _super.call(this);
    _this.args = args;
    return _this;
  }
  /**
   * Function requireArgument().
   *
   * Validate property in args.
   *
   * @param {string} property
   * @param {{}} args
   *
   * @throws {Error}
   *
   */


  (0, _createClass2.default)(ArgsObject, [{
    key: "requireArgument",
    value: function requireArgument(property) {
      var args = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : this.args;

      if (!args.hasOwnProperty(property)) {
        throw Error("".concat(property, " is required."));
      }
    }
    /**
     * Function requireArgumentType().
     *
     * Validate property in args using `type === typeof(args.whatever)`.
     *
     * @param {string} property
     * @param {string} type
     * @param {{}} args
     *
     * @throws {Error}
     *
     */

  }, {
    key: "requireArgumentType",
    value: function requireArgumentType(property, type) {
      var args = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : this.args;
      this.requireArgument(property, args);

      if ((0, _typeof2.default)(args[property]) !== type) {
        throw Error("".concat(property, " invalid type: ").concat(type, "."));
      }
    }
    /**
     * Function requireArgumentInstance().
     *
     * Validate property in args using `args.whatever instanceof instance`.
     *
     * @param {string} property
     * @param {instanceof} instance
     * @param {{}} args
     *
     * @throws {Error}
     *
     */

  }, {
    key: "requireArgumentInstance",
    value: function requireArgumentInstance(property, instance) {
      var args = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : this.args;
      this.requireArgument(property, args);

      if (!(args[property] instanceof instance)) {
        throw Error("".concat(property, " invalid instance."));
      }
    }
    /**
     * Function requireArgumentConstructor().
     *
     * Validate property in args using `type === args.whatever.constructor`.
     *
     * @param {string} property
     * @param {*} type
     * @param {{}} args
     *
     * @throws {Error}
     *
     */

  }, {
    key: "requireArgumentConstructor",
    value: function requireArgumentConstructor(property, type) {
      var args = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : this.args;
      this.requireArgument(property, args);

      if (args[property].constructor !== type) {
        throw Error("".concat(property, " invalid constructor type."));
      }
    }
  }]);
  return ArgsObject;
}(_instanceType.default);

exports.default = ArgsObject;

/***/ }),
/* 224 */
/***/ (function(module, exports, __webpack_require__) {

"use strict";


var _interopRequireDefault = __webpack_require__(0);

var _Object$defineProperty = __webpack_require__(1);

_Object$defineProperty(exports, "__esModule", {
  value: true
});

exports.default = exports.After = void 0;

var _classCallCheck2 = _interopRequireDefault(__webpack_require__(2));

var _createClass2 = _interopRequireDefault(__webpack_require__(3));

var _inherits2 = _interopRequireDefault(__webpack_require__(4));

var _createSuper2 = _interopRequireDefault(__webpack_require__(5));

var _base = _interopRequireDefault(__webpack_require__(286));

var After = /*#__PURE__*/function (_Base) {
  (0, _inherits2.default)(After, _Base);

  var _super = (0, _createSuper2.default)(After);

  function After() {
    (0, _classCallCheck2.default)(this, After);
    return _super.apply(this, arguments);
  }

  (0, _createClass2.default)(After, [{
    key: "register",
    value: function register() {
      $e.hooks.registerDataAfter(this);
    }
  }]);
  return After;
}(_base.default);

exports.After = After;
var _default = After;
exports.default = _default;

/***/ }),
/* 225 */
/***/ (function(module, exports, __webpack_require__) {

"use strict";

var global = __webpack_require__(8);
var core = __webpack_require__(6);
var dP = __webpack_require__(15);
var DESCRIPTORS = __webpack_require__(14);
var SPECIES = __webpack_require__(10)('species');

module.exports = function (KEY) {
  var C = typeof core[KEY] == 'function' ? core[KEY] : global[KEY];
  if (DESCRIPTORS && C && !C[SPECIES]) dP.f(C, SPECIES, {
    configurable: true,
    get: function () { return this; }
  });
};


/***/ }),
/* 226 */
/***/ (function(module, exports, __webpack_require__) {

// 19.1.2.2 / 15.2.3.5 Object.create(O [, Properties])
var anObject = __webpack_require__(18);
var dPs = __webpack_require__(243);
var enumBugKeys = __webpack_require__(148);
var IE_PROTO = __webpack_require__(130)('IE_PROTO');
var Empty = function () { /* empty */ };
var PROTOTYPE = 'prototype';

// Create object with fake `null` prototype: use iframe Object with cleared prototype
var createDict = function () {
  // Thrash, waste and sodomy: IE GC bug
  var iframe = __webpack_require__(109)('iframe');
  var i = enumBugKeys.length;
  var lt = '<';
  var gt = '>';
  var iframeDocument;
  iframe.style.display = 'none';
  __webpack_require__(227).appendChild(iframe);
  iframe.src = 'javascript:'; // eslint-disable-line no-script-url
  // createDict = iframe.contentWindow.Object;
  // html.removeChild(iframe);
  iframeDocument = iframe.contentWindow.document;
  iframeDocument.open();
  iframeDocument.write(lt + 'script' + gt + 'document.F=Object' + lt + '/script' + gt);
  iframeDocument.close();
  createDict = iframeDocument.F;
  while (i--) delete createDict[PROTOTYPE][enumBugKeys[i]];
  return createDict();
};

module.exports = Object.create || function create(O, Properties) {
  var result;
  if (O !== null) {
    Empty[PROTOTYPE] = anObject(O);
    result = new Empty();
    Empty[PROTOTYPE] = null;
    // add "__proto__" for Object.getPrototypeOf polyfill
    result[IE_PROTO] = O;
  } else result = createDict();
  return Properties === undefined ? result : dPs(result, Properties);
};


/***/ }),
/* 227 */
/***/ (function(module, exports, __webpack_require__) {

var document = __webpack_require__(17).document;
module.exports = document && document.documentElement;


/***/ }),
/* 228 */
/***/ (function(module, exports, __webpack_require__) {

__webpack_require__(60);
__webpack_require__(229);
module.exports = __webpack_require__(6).Array.from;


/***/ }),
/* 229 */
/***/ (function(module, exports, __webpack_require__) {

"use strict";

var ctx = __webpack_require__(31);
var $export = __webpack_require__(7);
var toObject = __webpack_require__(32);
var call = __webpack_require__(141);
var isArrayIter = __webpack_require__(142);
var toLength = __webpack_require__(69);
var createProperty = __webpack_require__(186);
var getIterFn = __webpack_require__(112);

$export($export.S + $export.F * !__webpack_require__(152)(function (iter) { Array.from(iter); }), 'Array', {
  // 22.1.2.1 Array.from(arrayLike, mapfn = undefined, thisArg = undefined)
  from: function from(arrayLike /* , mapfn = undefined, thisArg = undefined */) {
    var O = toObject(arrayLike);
    var C = typeof this == 'function' ? this : Array;
    var aLen = arguments.length;
    var mapfn = aLen > 1 ? arguments[1] : undefined;
    var mapping = mapfn !== undefined;
    var index = 0;
    var iterFn = getIterFn(O);
    var length, result, step, iterator;
    if (mapping) mapfn = ctx(mapfn, aLen > 2 ? arguments[2] : undefined, 2);
    // if object isn't iterable or it's array with default iterator - use simple case
    if (iterFn != undefined && !(C == Array && isArrayIter(iterFn))) {
      for (iterator = iterFn.call(O), result = new C(); !(step = iterator.next()).done; index++) {
        createProperty(result, index, mapping ? call(iterator, mapfn, [step.value, index], true) : step.value);
      }
    } else {
      length = toLength(O.length);
      for (result = new C(length); length > index; index++) {
        createProperty(result, index, mapping ? mapfn(O[index], index) : O[index]);
      }
    }
    result.length = index;
    return result;
  }
});


/***/ }),
/* 230 */
/***/ (function(module, exports, __webpack_require__) {

__webpack_require__(62);
__webpack_require__(60);
module.exports = __webpack_require__(231);


/***/ }),
/* 231 */
/***/ (function(module, exports, __webpack_require__) {

var classof = __webpack_require__(101);
var ITERATOR = __webpack_require__(10)('iterator');
var Iterators = __webpack_require__(35);
module.exports = __webpack_require__(6).isIterable = function (it) {
  var O = Object(it);
  return O[ITERATOR] !== undefined
    || '@@iterator' in O
    // eslint-disable-next-line no-prototype-builtins
    || Iterators.hasOwnProperty(classof(O));
};


/***/ }),
/* 232 */
/***/ (function(module, exports, __webpack_require__) {

"use strict";

var global = __webpack_require__(8);
var $export = __webpack_require__(7);
var meta = __webpack_require__(70);
var fails = __webpack_require__(22);
var hide = __webpack_require__(24);
var redefineAll = __webpack_require__(126);
var forOf = __webpack_require__(88);
var anInstance = __webpack_require__(125);
var isObject = __webpack_require__(9);
var setToStringTag = __webpack_require__(53);
var dP = __webpack_require__(15).f;
var each = __webpack_require__(138)(0);
var DESCRIPTORS = __webpack_require__(14);

module.exports = function (NAME, wrapper, methods, common, IS_MAP, IS_WEAK) {
  var Base = global[NAME];
  var C = Base;
  var ADDER = IS_MAP ? 'set' : 'add';
  var proto = C && C.prototype;
  var O = {};
  if (!DESCRIPTORS || typeof C != 'function' || !(IS_WEAK || proto.forEach && !fails(function () {
    new C().entries().next();
  }))) {
    // create collection constructor
    C = common.getConstructor(wrapper, NAME, IS_MAP, ADDER);
    redefineAll(C.prototype, methods);
    meta.NEED = true;
  } else {
    C = wrapper(function (target, iterable) {
      anInstance(target, C, NAME, '_c');
      target._c = new Base();
      if (iterable != undefined) forOf(iterable, IS_MAP, target[ADDER], target);
    });
    each('add,clear,delete,forEach,get,has,set,keys,values,entries,toJSON'.split(','), function (KEY) {
      var IS_ADDER = KEY == 'add' || KEY == 'set';
      if (KEY in proto && !(IS_WEAK && KEY == 'clear')) hide(C.prototype, KEY, function (a, b) {
        anInstance(this, C, KEY);
        if (!IS_ADDER && IS_WEAK && !isObject(a)) return KEY == 'get' ? undefined : false;
        var result = this._c[KEY](a === 0 ? 0 : a, b);
        return IS_ADDER ? this : result;
      });
    });
    IS_WEAK || dP(C.prototype, 'size', {
      get: function () {
        return this._c.size;
      }
    });
  }

  setToStringTag(C, NAME);

  O[NAME] = C;
  $export($export.G + $export.W + $export.F, O);

  if (!IS_WEAK) common.setStrong(C, NAME, IS_MAP);

  return C;
};


/***/ }),
/* 233 */
/***/ (function(module, exports, __webpack_require__) {

"use strict";

// https://tc39.github.io/proposal-setmap-offrom/
var $export = __webpack_require__(7);

module.exports = function (COLLECTION) {
  $export($export.S, COLLECTION, { of: function of() {
    var length = arguments.length;
    var A = new Array(length);
    while (length--) A[length] = arguments[length];
    return new this(A);
  } });
};


/***/ }),
/* 234 */
/***/ (function(module, exports, __webpack_require__) {

"use strict";

// https://tc39.github.io/proposal-setmap-offrom/
var $export = __webpack_require__(7);
var aFunction = __webpack_require__(38);
var ctx = __webpack_require__(31);
var forOf = __webpack_require__(88);

module.exports = function (COLLECTION) {
  $export($export.S, COLLECTION, { from: function from(source /* , mapFn, thisArg */) {
    var mapFn = arguments[1];
    var mapping, A, n, cb;
    aFunction(this);
    mapping = mapFn !== undefined;
    if (mapping) aFunction(mapFn);
    if (source == undefined) return new this();
    A = [];
    if (mapping) {
      n = 0;
      cb = ctx(mapFn, arguments[2], 2);
      forOf(source, false, function (nextItem) {
        A.push(cb(nextItem, n++));
      });
    } else {
      forOf(source, false, A.push, A);
    }
    return new this(A);
  } });
};


/***/ }),
/* 235 */
/***/ (function(module, exports) {

module.exports = '\x09\x0A\x0B\x0C\x0D\x20\xA0\u1680\u180E\u2000\u2001\u2002\u2003' +
  '\u2004\u2005\u2006\u2007\u2008\u2009\u200A\u202F\u205F\u3000\u2028\u2029\uFEFF';


/***/ }),
/* 236 */
/***/ (function(module, exports, __webpack_require__) {

module.exports = __webpack_require__(249);

/***/ }),
/* 237 */
/***/ (function(module, exports, __webpack_require__) {

"use strict";


var _interopRequireDefault = __webpack_require__(0);

var _typeof2 = _interopRequireDefault(__webpack_require__(48));

var ControlBaseDataView = __webpack_require__(127),
    ControlBaseMultipleItemView;

ControlBaseMultipleItemView = ControlBaseDataView.extend({
  applySavedValue: function applySavedValue() {
    var values = this.getControlValue(),
        $inputs = this.$('[data-setting]'),
        self = this;

    _.each(values, function (value, key) {
      var $input = $inputs.filter(function () {
        return key === this.dataset.setting;
      });
      self.setInputValue($input, value);
    });
  },
  getControlValue: function getControlValue(key) {
    var values = this.container.settings.get(this.model.get('name'));

    if (!jQuery.isPlainObject(values)) {
      return {};
    }

    if (key) {
      var value = values[key];

      if (undefined === value) {
        value = '';
      }

      return value;
    }

    return elementorCommon.helpers.cloneObject(values);
  },
  setValue: function setValue(key, value) {
    var values = this.getControlValue();

    if ('object' === (0, _typeof2.default)(key)) {
      _.each(key, function (internalValue, internalKey) {
        values[internalKey] = internalValue;
      });
    } else {
      values[key] = value;
    }

    this.setSettingsModel(values);
  },
  updateElementModel: function updateElementModel(value, input) {
    var key = input.dataset.setting;
    this.setValue(key, value);
  }
}, {
  // Static methods
  getStyleValue: function getStyleValue(placeholder, controlValue) {
    if (!_.isObject(controlValue)) {
      return ''; // invalid
    }

    return controlValue[placeholder.toLowerCase()];
  }
});
module.exports = ControlBaseMultipleItemView;

/***/ }),
/* 238 */,
/* 239 */
/***/ (function(module, exports, __webpack_require__) {

__webpack_require__(240);
module.exports = __webpack_require__(6).Object.values;


/***/ }),
/* 240 */
/***/ (function(module, exports, __webpack_require__) {

// https://github.com/tc39/proposal-object-values-entries
var $export = __webpack_require__(7);
var $values = __webpack_require__(185)(false);

$export($export.S, 'Object', {
  values: function values(it) {
    return $values(it);
  }
});


/***/ }),
/* 241 */
/***/ (function(module, exports) {

module.exports = function (done, value) {
  return { value: value, done: !!done };
};


/***/ }),
/* 242 */
/***/ (function(module, exports, __webpack_require__) {

"use strict";

var create = __webpack_require__(226);
var descriptor = __webpack_require__(103);
var setToStringTag = __webpack_require__(153);
var IteratorPrototype = {};

// 25.1.2.1.1 %IteratorPrototype%[@@iterator]()
__webpack_require__(29)(IteratorPrototype, __webpack_require__(12)('iterator'), function () { return this; });

module.exports = function (Constructor, NAME, next) {
  Constructor.prototype = create(IteratorPrototype, { next: descriptor(1, next) });
  setToStringTag(Constructor, NAME + ' Iterator');
};


/***/ }),
/* 243 */
/***/ (function(module, exports, __webpack_require__) {

var dP = __webpack_require__(45);
var anObject = __webpack_require__(18);
var getKeys = __webpack_require__(184);

module.exports = __webpack_require__(27) ? Object.defineProperties : function defineProperties(O, Properties) {
  anObject(O);
  var keys = getKeys(Properties);
  var length = keys.length;
  var i = 0;
  var P;
  while (length > i) dP.f(O, P = keys[i++], Properties[P]);
  return O;
};


/***/ }),
/* 244 */
/***/ (function(module, exports, __webpack_require__) {

// 19.1.2.9 / 15.2.3.2 Object.getPrototypeOf(O)
var has = __webpack_require__(61);
var toObject = __webpack_require__(96);
var IE_PROTO = __webpack_require__(130)('IE_PROTO');
var ObjectProto = Object.prototype;

module.exports = Object.getPrototypeOf || function (O) {
  O = toObject(O);
  if (has(O, IE_PROTO)) return O[IE_PROTO];
  if (typeof O.constructor == 'function' && O instanceof O.constructor) {
    return O.constructor.prototype;
  } return O instanceof Object ? ObjectProto : null;
};


/***/ }),
/* 245 */
/***/ (function(module, exports, __webpack_require__) {

// 9.4.2.3 ArraySpeciesCreate(originalArray, length)
var speciesConstructor = __webpack_require__(246);

module.exports = function (original, length) {
  return new (speciesConstructor(original))(length);
};


/***/ }),
/* 246 */
/***/ (function(module, exports, __webpack_require__) {

var isObject = __webpack_require__(9);
var isArray = __webpack_require__(97);
var SPECIES = __webpack_require__(10)('species');

module.exports = function (original) {
  var C;
  if (isArray(original)) {
    C = original.constructor;
    // cross-realm fallback
    if (typeof C == 'function' && (C === Array || isArray(C.prototype))) C = undefined;
    if (isObject(C)) {
      C = C[SPECIES];
      if (C === null) C = undefined;
    }
  } return C === undefined ? Array : C;
};


/***/ }),
/* 247 */
/***/ (function(module, exports, __webpack_require__) {

var _Array$isArray = __webpack_require__(84);

function _arrayWithHoles(arr) {
  if (_Array$isArray(arr)) return arr;
}

module.exports = _arrayWithHoles;

/***/ }),
/* 248 */
/***/ (function(module, exports, __webpack_require__) {

var _getIterator = __webpack_require__(236);

var _isIterable = __webpack_require__(211);

var _Symbol = __webpack_require__(111);

function _iterableToArrayLimit(arr, i) {
  if (typeof _Symbol === "undefined" || !_isIterable(Object(arr))) return;
  var _arr = [];
  var _n = true;
  var _d = false;
  var _e = undefined;

  try {
    for (var _i = _getIterator(arr), _s; !(_n = (_s = _i.next()).done); _n = true) {
      _arr.push(_s.value);

      if (i && _arr.length === i) break;
    }
  } catch (err) {
    _d = true;
    _e = err;
  } finally {
    try {
      if (!_n && _i["return"] != null) _i["return"]();
    } finally {
      if (_d) throw _e;
    }
  }

  return _arr;
}

module.exports = _iterableToArrayLimit;

/***/ }),
/* 249 */
/***/ (function(module, exports, __webpack_require__) {

__webpack_require__(62);
__webpack_require__(60);
module.exports = __webpack_require__(250);


/***/ }),
/* 250 */
/***/ (function(module, exports, __webpack_require__) {

var anObject = __webpack_require__(13);
var get = __webpack_require__(112);
module.exports = __webpack_require__(6).getIterator = function (it) {
  var iterFn = get(it);
  if (typeof iterFn != 'function') throw TypeError(it + ' is not iterable!');
  return anObject(iterFn.call(it));
};


/***/ }),
/* 251 */
/***/ (function(module, exports) {

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;

/***/ }),
/* 252 */
/***/ (function(module, exports, __webpack_require__) {

"use strict";


var _interopRequireDefault = __webpack_require__(0);

var _Object$defineProperty = __webpack_require__(1);

_Object$defineProperty(exports, "__esModule", {
  value: true
});

exports.default = void 0;

__webpack_require__(39);

var _isArray = _interopRequireDefault(__webpack_require__(84));

var _hasInstance = _interopRequireDefault(__webpack_require__(253));

var _classCallCheck2 = _interopRequireDefault(__webpack_require__(2));

var _createClass2 = _interopRequireDefault(__webpack_require__(3));

var _get2 = _interopRequireDefault(__webpack_require__(26));

var _getPrototypeOf2 = _interopRequireDefault(__webpack_require__(16));

var InstanceType = /*#__PURE__*/function () {
  (0, _createClass2.default)(InstanceType, null, [{
    key: _hasInstance.default,
    value: function value(target) {
      /**
       * This is function extending being called each time JS uses instanceOf, since babel use it each time it create new class
       * its give's opportunity to mange capabilities of instanceOf operator.
       * saving current class each time will give option later to handle instanceOf manually.
       */
      var result = (0, _get2.default)((0, _getPrototypeOf2.default)(InstanceType), _hasInstance.default, this).call(this, target); // Act normal when validate a class, which does not have instance type.

      if (target && !target.constructor.getInstanceType) {
        return result;
      }

      if (target) {
        if (!target.instanceTypes) {
          target.instanceTypes = [];
        }

        if (!result) {
          if (this.getInstanceType() === target.constructor.getInstanceType()) {
            result = true;
          }
        }

        if (result) {
          var name = this.getInstanceType === InstanceType.getInstanceType ? 'BaseInstanceType' : this.getInstanceType();

          if (-1 === target.instanceTypes.indexOf(name)) {
            target.instanceTypes.push(name);
          }
        }
      }

      if (!result && target) {
        // Check if the given 'target', is instance of known types.
        result = target.instanceTypes && (0, _isArray.default)(target.instanceTypes) && -1 !== target.instanceTypes.indexOf(this.getInstanceType());
      }

      return result;
    }
  }]);

  function InstanceType() {
    var _this = this;

    (0, _classCallCheck2.default)(this, InstanceType);
    // Since anonymous classes sometimes do not get validated by babel, do it manually.
    var target = this instanceof InstanceType ? this.constructor : void 0;
    var prototypes = [];

    while (target.__proto__ && target.__proto__.name) {
      prototypes.push(target.__proto__);
      target = target.__proto__;
    }

    prototypes.reverse().forEach(function (proto) {
      return _this instanceof proto;
    });
  }

  (0, _createClass2.default)(InstanceType, null, [{
    key: "getInstanceType",
    value: function getInstanceType() {
      elementorModules.ForceMethodImplementation();
    }
  }]);
  return InstanceType;
}();

exports.default = InstanceType;

/***/ }),
/* 253 */
/***/ (function(module, exports, __webpack_require__) {

module.exports = __webpack_require__(254);

/***/ }),
/* 254 */
/***/ (function(module, exports, __webpack_require__) {

__webpack_require__(255);
module.exports = __webpack_require__(63).f('hasInstance');


/***/ }),
/* 255 */
/***/ (function(module, exports, __webpack_require__) {

"use strict";

var isObject = __webpack_require__(9);
var getPrototypeOf = __webpack_require__(64);
var HAS_INSTANCE = __webpack_require__(10)('hasInstance');
var FunctionProto = Function.prototype;
// 19.2.3.6 Function.prototype[@@hasInstance](V)
if (!(HAS_INSTANCE in FunctionProto)) __webpack_require__(15).f(FunctionProto, HAS_INSTANCE, { value: function (O) {
  if (typeof this != 'function' || !isObject(O)) return false;
  if (!isObject(this.prototype)) return O instanceof this;
  // for environment w/o native `@@hasInstance` logic enough `instanceof`, but add this:
  while (O = getPrototypeOf(O)) if (this.prototype === O) return true;
  return false;
} });


/***/ }),
/* 256 */
/***/ (function(module, exports, __webpack_require__) {

"use strict";


var _interopRequireDefault = __webpack_require__(0);

__webpack_require__(25);

var _inline = _interopRequireDefault(__webpack_require__(373));

var BaseElementView = __webpack_require__(297);

var DEFAULT_INNER_SECTION_COLUMNS = 2,
    DEFAULT_MIN_COLUMN_SIZE = 2,
    DEFAULT_MAX_COLUMNS = 10;
var SectionView = BaseElementView.extend({
  childViewContainer: function childViewContainer() {
    return elementor.config.legacyMode.elementWrappers ? '> .elementor-container > .elementor-row' : '> .elementor-container';
  },
  template: Marionette.TemplateCache.get('#tmpl-elementor-section-content'),
  addSectionView: null,
  _checkIsFull: function _checkIsFull() {
    this.toggleSectionIsFull();
    elementorCommon.helpers.softDeprecated('_checkIsFull', '2.9.0', 'toggleSectionIsFull()');
  },
  toggleSectionIsFull: function toggleSectionIsFull() {
    this.$el.toggleClass('elementor-section-filled', this.isCollectionFilled());
  },
  addChildModel: function addChildModel(model) {
    /// TODO: maybe should be part of $e.hooks.
    var isModelInstance = model instanceof Backbone.Model,
        isInner = this.isInner();

    if (isModelInstance) {
      // TODO: change to command.
      model.set('isInner', isInner);
    } else {
      model.isInner = isInner;
    }

    return BaseElementView.prototype.addChildModel.apply(this, arguments);
  },
  className: function className() {
    var classes = BaseElementView.prototype.className.apply(this, arguments),
        type = this.isInner() ? 'inner' : 'top';
    return classes + ' elementor-section elementor-' + type + '-section';
  },
  tagName: function tagName() {
    return this.model.getSetting('html_tag') || 'section';
  },
  behaviors: function behaviors() {
    var behaviors = BaseElementView.prototype.behaviors.apply(this, arguments);

    _.extend(behaviors, {
      Sortable: {
        behaviorClass: __webpack_require__(298),
        elChildType: 'column'
      }
    });

    return elementor.hooks.applyFilters('elements/section/behaviors', behaviors, this);
  },
  initialize: function initialize() {
    BaseElementView.prototype.initialize.apply(this, arguments);
    this.model.get('editSettings').set('defaultEditRoute', 'layout');
  },
  getEditButtons: function getEditButtons() {
    var elementData = elementor.getElementData(this.model),
        editTools = {};

    if (!this.isInner()) {
      editTools.add = {
        title: elementor.translate('add_element', [elementData.title]),
        icon: 'plus'
      };
    }

    editTools.edit = {
      title: elementor.translate('edit_element', [elementData.title]),
      icon: 'handle'
    };

    if (elementor.getPreferences('edit_buttons')) {
      editTools.duplicate = {
        title: elementor.translate('duplicate_element', [elementData.title]),
        icon: 'clone'
      };
    }

    editTools.remove = {
      title: elementor.translate('delete_element', [elementData.title]),
      icon: 'close'
    };
    return editTools;
  },
  getContextMenuGroups: function getContextMenuGroups() {
    var groups = BaseElementView.prototype.getContextMenuGroups.apply(this, arguments),
        transferGroupIndex = groups.indexOf(_.findWhere(groups, {
      name: 'clipboard'
    }));
    groups.splice(transferGroupIndex + 1, 0, {
      name: 'save',
      actions: [{
        name: 'save',
        title: elementor.translate('save_as_block'),
        callback: this.save.bind(this)
      }]
    });
    return groups;
  },
  getSortableOptions: function getSortableOptions() {
    var sectionConnectClass = this.isInner() ? '.elementor-inner-section' : '.elementor-top-section';
    return {
      connectWith: sectionConnectClass + this.childViewContainer(),
      handle: '> .elementor-element-overlay .elementor-editor-element-edit',
      items: '> .elementor-column',
      forcePlaceholderSize: true,
      tolerance: 'pointer'
    };
  },
  getColumnPercentSize: function getColumnPercentSize(element, size) {
    return +(size / element.parent().width() * 100).toFixed(3);
  },
  getDefaultStructure: function getDefaultStructure() {
    return this.collection.length + '0';
  },
  getStructure: function getStructure() {
    return this.model.getSetting('structure');
  },
  getColumnAt: function getColumnAt(index) {
    var model = this.collection.at(index);
    return model ? this.children.findByModelCid(model.cid) : null;
  },
  getNextColumn: function getNextColumn(columnView) {
    return this.getColumnAt(this.collection.indexOf(columnView.model) + 1);
  },
  getPreviousColumn: function getPreviousColumn(columnView) {
    return this.getColumnAt(this.collection.indexOf(columnView.model) - 1);
  },
  getNeighborContainer: function getNeighborContainer(container) {
    var parentView = container.parent.view,
        nextView = parentView.getNextColumn(container.view) || parentView.getPreviousColumn(container.view);

    if (!nextView) {
      return false;
    }

    return nextView.getContainer();
  },
  setStructure: function setStructure(structure) {
    var shouldAdjustColumns = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;
    var parsedStructure = elementor.presetsFactory.getParsedStructure(structure);

    if (+parsedStructure.columnsCount !== this.collection.length) {
      throw new TypeError('The provided structure doesn\'t match the columns count.');
    }

    $e.run('document/elements/settings', {
      container: this.getContainer(),
      settings: {
        structure: structure
      },
      options: {
        external: true
      }
    });

    if (shouldAdjustColumns) {
      this.adjustColumns();
    }
  },
  adjustColumns: function adjustColumns() {
    var preset = elementor.presetsFactory.getPresetByStructure(this.getStructure());
    this.children.each(function (columnView, index) {
      var container = columnView.getContainer();
      $e.run('document/elements/settings', {
        container: container,
        settings: {
          _column_size: preset.preset[index],
          _inline_size: null
        }
      });
    });
  },
  resetLayout: function resetLayout() {
    var shouldAdjustColumns = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : true;
    this.setStructure(this.getDefaultStructure(), shouldAdjustColumns);
  },
  resetColumnsCustomSize: function resetColumnsCustomSize() {
    this.children.each(function (columnView) {
      $e.run('document/elements/settings', {
        container: columnView.getContainer(),
        settings: {
          _inline_size: null
        },
        options: {
          external: true
        }
      });
    });
  },
  isCollectionFilled: function isCollectionFilled() {
    return DEFAULT_MAX_COLUMNS <= this.collection.length;
  },
  showChildrenPercentsTooltip: function showChildrenPercentsTooltip(columnView, nextColumnView) {
    columnView.ui.percentsTooltip.show();
    columnView.ui.percentsTooltip.attr('data-side', elementorCommon.config.isRTL ? 'right' : 'left');
    nextColumnView.ui.percentsTooltip.show();
    nextColumnView.ui.percentsTooltip.attr('data-side', elementorCommon.config.isRTL ? 'left' : 'right');
  },
  hideChildrenPercentsTooltip: function hideChildrenPercentsTooltip(columnView, nextColumnView) {
    columnView.ui.percentsTooltip.hide();
    nextColumnView.ui.percentsTooltip.hide();
  },
  destroyAddSectionView: function destroyAddSectionView() {
    if (this.addSectionView && !this.addSectionView.isDestroyed) {
      this.addSectionView.destroy();
    }
  },
  onRender: function onRender() {
    BaseElementView.prototype.onRender.apply(this, arguments);
    this.toggleSectionIsFull();
  },
  onAddButtonClick: function onAddButtonClick() {
    if (this.addSectionView && !this.addSectionView.isDestroyed) {
      this.addSectionView.fadeToDeath();
      return;
    }

    var addSectionView = new _inline.default({
      at: this.model.collection.indexOf(this.model)
    });
    addSectionView.render();
    this.$el.before(addSectionView.$el);
    addSectionView.$el.hide(); // Delaying the slide down for slow-render browsers (such as FF)

    setTimeout(function () {
      addSectionView.$el.slideDown(null, function () {
        // Remove inline style, for preview mode.
        jQuery(this).css('display', '');
      });
    });
    this.addSectionView = addSectionView;
  },
  onChildviewRequestResizeStart: function onChildviewRequestResizeStart(columnView) {
    var nextColumnView = this.getNextColumn(columnView);

    if (!nextColumnView) {
      return;
    }

    this.showChildrenPercentsTooltip(columnView, nextColumnView);
    var $iframes = columnView.$el.find('iframe').add(nextColumnView.$el.find('iframe'));
    elementor.helpers.disableElementEvents($iframes);
  },
  onChildviewRequestResizeStop: function onChildviewRequestResizeStop(columnView) {
    var nextColumnView = this.getNextColumn(columnView);

    if (!nextColumnView) {
      return;
    }

    this.hideChildrenPercentsTooltip(columnView, nextColumnView);
    var $iframes = columnView.$el.find('iframe').add(nextColumnView.$el.find('iframe'));
    elementor.helpers.enableElementEvents($iframes);
  },
  onChildviewRequestResize: function onChildviewRequestResize(columnView, ui) {
    ui.element.css({
      width: '',
      left: 'initial' // Fix for RTL resizing

    });
    $e.run('document/elements/settings', {
      container: columnView.getContainer(),
      settings: {
        _inline_size: this.getColumnPercentSize(ui.element, ui.size.width)
      }
    });
  },
  onDestroy: function onDestroy() {
    BaseElementView.prototype.onDestroy.apply(this, arguments);
    this.destroyAddSectionView();
  }
});
module.exports = SectionView;
module.exports.DEFAULT_INNER_SECTION_COLUMNS = DEFAULT_INNER_SECTION_COLUMNS;
module.exports.DEFAULT_MIN_COLUMN_SIZE = DEFAULT_MIN_COLUMN_SIZE;
module.exports.DEFAULT_MAX_COLUMNS = DEFAULT_MAX_COLUMNS;

/***/ }),
/* 257 */
/***/ (function(module, exports, __webpack_require__) {

__webpack_require__(100);
__webpack_require__(60);
__webpack_require__(62);
__webpack_require__(258);
__webpack_require__(261);
__webpack_require__(262);
module.exports = __webpack_require__(6).Promise;


/***/ }),
/* 258 */
/***/ (function(module, exports, __webpack_require__) {

"use strict";

var LIBRARY = __webpack_require__(47);
var global = __webpack_require__(8);
var ctx = __webpack_require__(31);
var classof = __webpack_require__(101);
var $export = __webpack_require__(7);
var isObject = __webpack_require__(9);
var aFunction = __webpack_require__(38);
var anInstance = __webpack_require__(125);
var forOf = __webpack_require__(88);
var speciesConstructor = __webpack_require__(207);
var task = __webpack_require__(208).set;
var microtask = __webpack_require__(259)();
var newPromiseCapabilityModule = __webpack_require__(146);
var perform = __webpack_require__(209);
var userAgent = __webpack_require__(260);
var promiseResolve = __webpack_require__(210);
var PROMISE = 'Promise';
var TypeError = global.TypeError;
var process = global.process;
var versions = process && process.versions;
var v8 = versions && versions.v8 || '';
var $Promise = global[PROMISE];
var isNode = classof(process) == 'process';
var empty = function () { /* empty */ };
var Internal, newGenericPromiseCapability, OwnPromiseCapability, Wrapper;
var newPromiseCapability = newGenericPromiseCapability = newPromiseCapabilityModule.f;

var USE_NATIVE = !!function () {
  try {
    // correct subclassing with @@species support
    var promise = $Promise.resolve(1);
    var FakePromise = (promise.constructor = {})[__webpack_require__(10)('species')] = function (exec) {
      exec(empty, empty);
    };
    // unhandled rejections tracking support, NodeJS Promise without it fails @@species test
    return (isNode || typeof PromiseRejectionEvent == 'function')
      && promise.then(empty) instanceof FakePromise
      // v8 6.6 (Node 10 and Chrome 66) have a bug with resolving custom thenables
      // https://bugs.chromium.org/p/chromium/issues/detail?id=830565
      // we can't detect it synchronously, so just check versions
      && v8.indexOf('6.6') !== 0
      && userAgent.indexOf('Chrome/66') === -1;
  } catch (e) { /* empty */ }
}();

// helpers
var isThenable = function (it) {
  var then;
  return isObject(it) && typeof (then = it.then) == 'function' ? then : false;
};
var notify = function (promise, isReject) {
  if (promise._n) return;
  promise._n = true;
  var chain = promise._c;
  microtask(function () {
    var value = promise._v;
    var ok = promise._s == 1;
    var i = 0;
    var run = function (reaction) {
      var handler = ok ? reaction.ok : reaction.fail;
      var resolve = reaction.resolve;
      var reject = reaction.reject;
      var domain = reaction.domain;
      var result, then, exited;
      try {
        if (handler) {
          if (!ok) {
            if (promise._h == 2) onHandleUnhandled(promise);
            promise._h = 1;
          }
          if (handler === true) result = value;
          else {
            if (domain) domain.enter();
            result = handler(value); // may throw
            if (domain) {
              domain.exit();
              exited = true;
            }
          }
          if (result === reaction.promise) {
            reject(TypeError('Promise-chain cycle'));
          } else if (then = isThenable(result)) {
            then.call(result, resolve, reject);
          } else resolve(result);
        } else reject(value);
      } catch (e) {
        if (domain && !exited) domain.exit();
        reject(e);
      }
    };
    while (chain.length > i) run(chain[i++]); // variable length - can't use forEach
    promise._c = [];
    promise._n = false;
    if (isReject && !promise._h) onUnhandled(promise);
  });
};
var onUnhandled = function (promise) {
  task.call(global, function () {
    var value = promise._v;
    var unhandled = isUnhandled(promise);
    var result, handler, console;
    if (unhandled) {
      result = perform(function () {
        if (isNode) {
          process.emit('unhandledRejection', value, promise);
        } else if (handler = global.onunhandledrejection) {
          handler({ promise: promise, reason: value });
        } else if ((console = global.console) && console.error) {
          console.error('Unhandled promise rejection', value);
        }
      });
      // Browsers should not trigger `rejectionHandled` event if it was handled here, NodeJS - should
      promise._h = isNode || isUnhandled(promise) ? 2 : 1;
    } promise._a = undefined;
    if (unhandled && result.e) throw result.v;
  });
};
var isUnhandled = function (promise) {
  return promise._h !== 1 && (promise._a || promise._c).length === 0;
};
var onHandleUnhandled = function (promise) {
  task.call(global, function () {
    var handler;
    if (isNode) {
      process.emit('rejectionHandled', promise);
    } else if (handler = global.onrejectionhandled) {
      handler({ promise: promise, reason: promise._v });
    }
  });
};
var $reject = function (value) {
  var promise = this;
  if (promise._d) return;
  promise._d = true;
  promise = promise._w || promise; // unwrap
  promise._v = value;
  promise._s = 2;
  if (!promise._a) promise._a = promise._c.slice();
  notify(promise, true);
};
var $resolve = function (value) {
  var promise = this;
  var then;
  if (promise._d) return;
  promise._d = true;
  promise = promise._w || promise; // unwrap
  try {
    if (promise === value) throw TypeError("Promise can't be resolved itself");
    if (then = isThenable(value)) {
      microtask(function () {
        var wrapper = { _w: promise, _d: false }; // wrap
        try {
          then.call(value, ctx($resolve, wrapper, 1), ctx($reject, wrapper, 1));
        } catch (e) {
          $reject.call(wrapper, e);
        }
      });
    } else {
      promise._v = value;
      promise._s = 1;
      notify(promise, false);
    }
  } catch (e) {
    $reject.call({ _w: promise, _d: false }, e); // wrap
  }
};

// constructor polyfill
if (!USE_NATIVE) {
  // 25.4.3.1 Promise(executor)
  $Promise = function Promise(executor) {
    anInstance(this, $Promise, PROMISE, '_h');
    aFunction(executor);
    Internal.call(this);
    try {
      executor(ctx($resolve, this, 1), ctx($reject, this, 1));
    } catch (err) {
      $reject.call(this, err);
    }
  };
  // eslint-disable-next-line no-unused-vars
  Internal = function Promise(executor) {
    this._c = [];             // <- awaiting reactions
    this._a = undefined;      // <- checked in isUnhandled reactions
    this._s = 0;              // <- state
    this._d = false;          // <- done
    this._v = undefined;      // <- value
    this._h = 0;              // <- rejection state, 0 - default, 1 - handled, 2 - unhandled
    this._n = false;          // <- notify
  };
  Internal.prototype = __webpack_require__(126)($Promise.prototype, {
    // 25.4.5.3 Promise.prototype.then(onFulfilled, onRejected)
    then: function then(onFulfilled, onRejected) {
      var reaction = newPromiseCapability(speciesConstructor(this, $Promise));
      reaction.ok = typeof onFulfilled == 'function' ? onFulfilled : true;
      reaction.fail = typeof onRejected == 'function' && onRejected;
      reaction.domain = isNode ? process.domain : undefined;
      this._c.push(reaction);
      if (this._a) this._a.push(reaction);
      if (this._s) notify(this, false);
      return reaction.promise;
    },
    // 25.4.5.1 Promise.prototype.catch(onRejected)
    'catch': function (onRejected) {
      return this.then(undefined, onRejected);
    }
  });
  OwnPromiseCapability = function () {
    var promise = new Internal();
    this.promise = promise;
    this.resolve = ctx($resolve, promise, 1);
    this.reject = ctx($reject, promise, 1);
  };
  newPromiseCapabilityModule.f = newPromiseCapability = function (C) {
    return C === $Promise || C === Wrapper
      ? new OwnPromiseCapability(C)
      : newGenericPromiseCapability(C);
  };
}

$export($export.G + $export.W + $export.F * !USE_NATIVE, { Promise: $Promise });
__webpack_require__(53)($Promise, PROMISE);
__webpack_require__(225)(PROMISE);
Wrapper = __webpack_require__(6)[PROMISE];

// statics
$export($export.S + $export.F * !USE_NATIVE, PROMISE, {
  // 25.4.4.5 Promise.reject(r)
  reject: function reject(r) {
    var capability = newPromiseCapability(this);
    var $$reject = capability.reject;
    $$reject(r);
    return capability.promise;
  }
});
$export($export.S + $export.F * (LIBRARY || !USE_NATIVE), PROMISE, {
  // 25.4.4.6 Promise.resolve(x)
  resolve: function resolve(x) {
    return promiseResolve(LIBRARY && this === Wrapper ? $Promise : this, x);
  }
});
$export($export.S + $export.F * !(USE_NATIVE && __webpack_require__(152)(function (iter) {
  $Promise.all(iter)['catch'](empty);
})), PROMISE, {
  // 25.4.4.1 Promise.all(iterable)
  all: function all(iterable) {
    var C = this;
    var capability = newPromiseCapability(C);
    var resolve = capability.resolve;
    var reject = capability.reject;
    var result = perform(function () {
      var values = [];
      var index = 0;
      var remaining = 1;
      forOf(iterable, false, function (promise) {
        var $index = index++;
        var alreadyCalled = false;
        values.push(undefined);
        remaining++;
        C.resolve(promise).then(function (value) {
          if (alreadyCalled) return;
          alreadyCalled = true;
          values[$index] = value;
          --remaining || resolve(values);
        }, reject);
      });
      --remaining || resolve(values);
    });
    if (result.e) reject(result.v);
    return capability.promise;
  },
  // 25.4.4.4 Promise.race(iterable)
  race: function race(iterable) {
    var C = this;
    var capability = newPromiseCapability(C);
    var reject = capability.reject;
    var result = perform(function () {
      forOf(iterable, false, function (promise) {
        C.resolve(promise).then(capability.resolve, reject);
      });
    });
    if (result.e) reject(result.v);
    return capability.promise;
  }
});


/***/ }),
/* 259 */
/***/ (function(module, exports, __webpack_require__) {

var global = __webpack_require__(8);
var macrotask = __webpack_require__(208).set;
var Observer = global.MutationObserver || global.WebKitMutationObserver;
var process = global.process;
var Promise = global.Promise;
var isNode = __webpack_require__(56)(process) == 'process';

module.exports = function () {
  var head, last, notify;

  var flush = function () {
    var parent, fn;
    if (isNode && (parent = process.domain)) parent.exit();
    while (head) {
      fn = head.fn;
      head = head.next;
      try {
        fn();
      } catch (e) {
        if (head) notify();
        else last = undefined;
        throw e;
      }
    } last = undefined;
    if (parent) parent.enter();
  };

  // Node.js
  if (isNode) {
    notify = function () {
      process.nextTick(flush);
    };
  // browsers with MutationObserver, except iOS Safari - https://github.com/zloirock/core-js/issues/339
  } else if (Observer && !(global.navigator && global.navigator.standalone)) {
    var toggle = true;
    var node = document.createTextNode('');
    new Observer(flush).observe(node, { characterData: true }); // eslint-disable-line no-new
    notify = function () {
      node.data = toggle = !toggle;
    };
  // environments with maybe non-completely correct, but existent Promise
  } else if (Promise && Promise.resolve) {
    // Promise.resolve without an argument throws an error in LG WebOS 2
    var promise = Promise.resolve(undefined);
    notify = function () {
      promise.then(flush);
    };
  // for other environments - macrotask based on:
  // - setImmediate
  // - MessageChannel
  // - window.postMessag
  // - onreadystatechange
  // - setTimeout
  } else {
    notify = function () {
      // strange IE + webpack dev server bug - use .call(global)
      macrotask.call(global, flush);
    };
  }

  return function (fn) {
    var task = { fn: fn, next: undefined };
    if (last) last.next = task;
    if (!head) {
      head = task;
      notify();
    } last = task;
  };
};


/***/ }),
/* 260 */
/***/ (function(module, exports, __webpack_require__) {

var global = __webpack_require__(8);
var navigator = global.navigator;

module.exports = navigator && navigator.userAgent || '';


/***/ }),
/* 261 */
/***/ (function(module, exports, __webpack_require__) {

"use strict";
// https://github.com/tc39/proposal-promise-finally

var $export = __webpack_require__(7);
var core = __webpack_require__(6);
var global = __webpack_require__(8);
var speciesConstructor = __webpack_require__(207);
var promiseResolve = __webpack_require__(210);

$export($export.P + $export.R, 'Promise', { 'finally': function (onFinally) {
  var C = speciesConstructor(this, core.Promise || global.Promise);
  var isFunction = typeof onFinally == 'function';
  return this.then(
    isFunction ? function (x) {
      return promiseResolve(C, onFinally()).then(function () { return x; });
    } : onFinally,
    isFunction ? function (e) {
      return promiseResolve(C, onFinally()).then(function () { throw e; });
    } : onFinally
  );
} });


/***/ }),
/* 262 */
/***/ (function(module, exports, __webpack_require__) {

"use strict";

// https://github.com/tc39/proposal-promise-try
var $export = __webpack_require__(7);
var newPromiseCapability = __webpack_require__(146);
var perform = __webpack_require__(209);

$export($export.S, 'Promise', { 'try': function (callbackfn) {
  var promiseCapability = newPromiseCapability.f(this);
  var result = perform(callbackfn);
  (result.e ? promiseCapability.reject : promiseCapability.resolve)(result.v);
  return promiseCapability.promise;
} });


/***/ }),
/* 263 */
/***/ (function(module, exports, __webpack_require__) {

module.exports = __webpack_require__(264);

/***/ }),
/* 264 */
/***/ (function(module, exports, __webpack_require__) {

__webpack_require__(100);
__webpack_require__(62);
__webpack_require__(265);
__webpack_require__(267);
__webpack_require__(268);
module.exports = __webpack_require__(6).WeakMap;


/***/ }),
/* 265 */
/***/ (function(module, exports, __webpack_require__) {

"use strict";

var global = __webpack_require__(8);
var each = __webpack_require__(138)(0);
var redefine = __webpack_require__(93);
var meta = __webpack_require__(70);
var assign = __webpack_require__(212);
var weak = __webpack_require__(266);
var isObject = __webpack_require__(9);
var validate = __webpack_require__(121);
var NATIVE_WEAK_MAP = __webpack_require__(121);
var IS_IE11 = !global.ActiveXObject && 'ActiveXObject' in global;
var WEAK_MAP = 'WeakMap';
var getWeak = meta.getWeak;
var isExtensible = Object.isExtensible;
var uncaughtFrozenStore = weak.ufstore;
var InternalMap;

var wrapper = function (get) {
  return function WeakMap() {
    return get(this, arguments.length > 0 ? arguments[0] : undefined);
  };
};

var methods = {
  // 23.3.3.3 WeakMap.prototype.get(key)
  get: function get(key) {
    if (isObject(key)) {
      var data = getWeak(key);
      if (data === true) return uncaughtFrozenStore(validate(this, WEAK_MAP)).get(key);
      return data ? data[this._i] : undefined;
    }
  },
  // 23.3.3.5 WeakMap.prototype.set(key, value)
  set: function set(key, value) {
    return weak.def(validate(this, WEAK_MAP), key, value);
  }
};

// 23.3 WeakMap Objects
var $WeakMap = module.exports = __webpack_require__(232)(WEAK_MAP, wrapper, methods, weak, true, true);

// IE11 WeakMap frozen keys fix
if (NATIVE_WEAK_MAP && IS_IE11) {
  InternalMap = weak.getConstructor(wrapper, WEAK_MAP);
  assign(InternalMap.prototype, methods);
  meta.NEED = true;
  each(['delete', 'has', 'get', 'set'], function (key) {
    var proto = $WeakMap.prototype;
    var method = proto[key];
    redefine(proto, key, function (a, b) {
      // store frozen objects on internal weakmap shim
      if (isObject(a) && !isExtensible(a)) {
        if (!this._f) this._f = new InternalMap();
        var result = this._f[key](a, b);
        return key == 'set' ? this : result;
      // store all the rest on native weakmap
      } return method.call(this, a, b);
    });
  });
}


/***/ }),
/* 266 */
/***/ (function(module, exports, __webpack_require__) {

"use strict";

var redefineAll = __webpack_require__(126);
var getWeak = __webpack_require__(70).getWeak;
var anObject = __webpack_require__(13);
var isObject = __webpack_require__(9);
var anInstance = __webpack_require__(125);
var forOf = __webpack_require__(88);
var createArrayMethod = __webpack_require__(138);
var $has = __webpack_require__(19);
var validate = __webpack_require__(121);
var arrayFind = createArrayMethod(5);
var arrayFindIndex = createArrayMethod(6);
var id = 0;

// fallback for uncaught frozen keys
var uncaughtFrozenStore = function (that) {
  return that._l || (that._l = new UncaughtFrozenStore());
};
var UncaughtFrozenStore = function () {
  this.a = [];
};
var findUncaughtFrozen = function (store, key) {
  return arrayFind(store.a, function (it) {
    return it[0] === key;
  });
};
UncaughtFrozenStore.prototype = {
  get: function (key) {
    var entry = findUncaughtFrozen(this, key);
    if (entry) return entry[1];
  },
  has: function (key) {
    return !!findUncaughtFrozen(this, key);
  },
  set: function (key, value) {
    var entry = findUncaughtFrozen(this, key);
    if (entry) entry[1] = value;
    else this.a.push([key, value]);
  },
  'delete': function (key) {
    var index = arrayFindIndex(this.a, function (it) {
      return it[0] === key;
    });
    if (~index) this.a.splice(index, 1);
    return !!~index;
  }
};

module.exports = {
  getConstructor: function (wrapper, NAME, IS_MAP, ADDER) {
    var C = wrapper(function (that, iterable) {
      anInstance(that, C, NAME, '_i');
      that._t = NAME;      // collection type
      that._i = id++;      // collection id
      that._l = undefined; // leak store for uncaught frozen objects
      if (iterable != undefined) forOf(iterable, IS_MAP, that[ADDER], that);
    });
    redefineAll(C.prototype, {
      // 23.3.3.2 WeakMap.prototype.delete(key)
      // 23.4.3.3 WeakSet.prototype.delete(value)
      'delete': function (key) {
        if (!isObject(key)) return false;
        var data = getWeak(key);
        if (data === true) return uncaughtFrozenStore(validate(this, NAME))['delete'](key);
        return data && $has(data, this._i) && delete data[this._i];
      },
      // 23.3.3.4 WeakMap.prototype.has(key)
      // 23.4.3.4 WeakSet.prototype.has(value)
      has: function has(key) {
        if (!isObject(key)) return false;
        var data = getWeak(key);
        if (data === true) return uncaughtFrozenStore(validate(this, NAME)).has(key);
        return data && $has(data, this._i);
      }
    });
    return C;
  },
  def: function (that, key, value) {
    var data = getWeak(anObject(key), true);
    if (data === true) uncaughtFrozenStore(that).set(key, value);
    else data[that._i] = value;
    return that;
  },
  ufstore: uncaughtFrozenStore
};


/***/ }),
/* 267 */
/***/ (function(module, exports, __webpack_require__) {

// https://tc39.github.io/proposal-setmap-offrom/#sec-weakmap.of
__webpack_require__(233)('WeakMap');


/***/ }),
/* 268 */
/***/ (function(module, exports, __webpack_require__) {

// https://tc39.github.io/proposal-setmap-offrom/#sec-weakmap.from
__webpack_require__(234)('WeakMap');


/***/ }),
/* 269 */
/***/ (function(module, exports, __webpack_require__) {

__webpack_require__(270);
module.exports = __webpack_require__(6).Object.entries;


/***/ }),
/* 270 */
/***/ (function(module, exports, __webpack_require__) {

// https://github.com/tc39/proposal-object-values-entries
var $export = __webpack_require__(7);
var $entries = __webpack_require__(185)(true);

$export($export.S, 'Object', {
  entries: function entries(it) {
    return $entries(it);
  }
});


/***/ }),
/* 271 */
/***/ (function(module, exports, __webpack_require__) {

"use strict";

var $at = __webpack_require__(144)(true);

// 21.1.3.27 String.prototype[@@iterator]()
__webpack_require__(197)(String, 'String', function (iterated) {
  this._t = String(iterated); // target
  this._i = 0;                // next index
// 21.1.5.2.1 %StringIteratorPrototype%.next()
}, function () {
  var O = this._t;
  var index = this._i;
  var point;
  if (index >= O.length) return { value: undefined, done: true };
  point = $at(O, index);
  this._i += point.length;
  return { value: point, done: false };
});


/***/ }),
/* 272 */
/***/ (function(module, exports, __webpack_require__) {

"use strict";


var _Object$defineProperty = __webpack_require__(1);

_Object$defineProperty(exports, "__esModule", {
  value: true
});

exports.default = void 0;
var userAgent = navigator.userAgent;
var _default = {
  webkit: -1 !== userAgent.indexOf('AppleWebKit'),
  firefox: -1 !== userAgent.indexOf('Firefox'),
  ie: /Trident|MSIE/.test(userAgent),
  edge: -1 !== userAgent.indexOf('Edge'),
  mac: -1 !== userAgent.indexOf('Macintosh'),
  safari: /^((?!chrome|android).)*safari/i.test(userAgent)
};
exports.default = _default;

/***/ }),
/* 273 */
/***/ (function(module, exports, __webpack_require__) {

"use strict";


var _interopRequireDefault = __webpack_require__(0);

var _base = _interopRequireDefault(__webpack_require__(296));

var ContextMenu = __webpack_require__(372);

module.exports = Marionette.Behavior.extend({
  defaults: {
    groups: [],
    eventTargets: ['el']
  },
  events: function events() {
    var events = {};
    this.getOption('eventTargets').forEach(function (eventTarget) {
      var eventName = 'contextmenu';

      if ('el' !== eventTarget) {
        eventName += ' ' + eventTarget;
      }

      events[eventName] = 'onContextMenu';
    });
    return events;
  },
  initialize: function initialize() {
    this.listenTo(this.view.options.model, 'request:contextmenu', this.onRequestContextMenu);
  },
  initContextMenu: function initContextMenu() {
    var _this = this;

    var contextMenuGroups = this.getOption('groups'),
        deleteGroup = _.findWhere(contextMenuGroups, {
      name: 'delete'
    }),
        afterGroupIndex = contextMenuGroups.indexOf(deleteGroup);

    if (-1 === afterGroupIndex) {
      afterGroupIndex = contextMenuGroups.length;
    }

    contextMenuGroups.splice(afterGroupIndex, 0, {
      name: 'tools',
      actions: [{
        name: 'navigator',
        title: elementor.translate('navigator'),
        callback: function callback() {
          return $e.route('navigator', {
            reOpen: true,
            model: _this.view.model
          });
        }
      }]
    });
    this.contextMenu = new ContextMenu({
      groups: contextMenuGroups
    });
    this.contextMenu.getModal().on('hide', this.onContextMenuHide);
  },
  getContextMenu: function getContextMenu() {
    if (!this.contextMenu) {
      this.initContextMenu();
    }

    return this.contextMenu;
  },
  onContextMenu: function onContextMenu(event) {
    if ($e.shortcuts.isControlEvent(event)) {
      return;
    }

    var isAddSectionView = this.view instanceof _base.default;

    if (!isAddSectionView && (!this.view.container || !this.view.container.isDesignable())) {
      return;
    }

    event.preventDefault();
    event.stopPropagation();
    this.getContextMenu().show(event);
    elementor.channels.editor.reply('contextMenu:targetView', this.view);
  },
  onRequestContextMenu: function onRequestContextMenu(event) {
    var modal = this.getContextMenu().getModal(),
        iframe = modal.getSettings('iframe'),
        toolsGroup = _.findWhere(this.contextMenu.getSettings('groups'), {
      name: 'tools'
    });

    toolsGroup.isVisible = false;
    modal.setSettings('iframe', null);
    this.onContextMenu(event);
    toolsGroup.isVisible = true;
    modal.setSettings('iframe', iframe);
  },
  onContextMenuHide: function onContextMenuHide() {
    elementor.channels.editor.reply('contextMenu:targetView', null);
  },
  onDestroy: function onDestroy() {
    if (this.contextMenu) {
      this.contextMenu.destroy();
    }
  }
});

/***/ }),
/* 274 */
/***/ (function(module, exports, __webpack_require__) {

"use strict";


var ControlBaseDataView = __webpack_require__(127),
    ControlSelect2ItemView;

ControlSelect2ItemView = ControlBaseDataView.extend({
  getSelect2Placeholder: function getSelect2Placeholder() {
    return this.ui.select.children('option:first[value=""]').text();
  },
  getSelect2DefaultOptions: function getSelect2DefaultOptions() {
    return {
      allowClear: true,
      placeholder: this.getSelect2Placeholder(),
      dir: elementorCommon.config.isRTL ? 'rtl' : 'ltr'
    };
  },
  getSelect2Options: function getSelect2Options() {
    return jQuery.extend(this.getSelect2DefaultOptions(), this.model.get('select2options'));
  },
  applySavedValue: function applySavedValue() {
    ControlBaseDataView.prototype.applySavedValue.apply(this, arguments);
    var select2Instance = this.ui.select.data('select2');

    if (!select2Instance) {
      this.ui.select.select2(this.getSelect2Options());
    } else {
      this.ui.select.trigger('change');
    }
  },
  onReady: function onReady() {
    elementorCommon.helpers.softDeprecated('onReady', '3.0.0');
  },
  onBeforeDestroy: function onBeforeDestroy() {
    // We always destroy the select2 instance because there are cases where the DOM element's data cache
    // itself has been destroyed but the select2 instance on it still exists
    this.ui.select.select2('destroy');
    this.$el.remove();
  }
});
module.exports = ControlSelect2ItemView;

/***/ }),
/* 275 */,
/* 276 */,
/* 277 */
/***/ (function(module, exports, __webpack_require__) {

"use strict";
// 21.1.3.18 String.prototype.startsWith(searchString [, position ])

var $export = __webpack_require__(34);
var toLength = __webpack_require__(43);
var context = __webpack_require__(204);
var STARTS_WITH = 'startsWith';
var $startsWith = ''[STARTS_WITH];

$export($export.P + $export.F * __webpack_require__(205)(STARTS_WITH), 'String', {
  startsWith: function startsWith(searchString /* , position = 0 */) {
    var that = context(this, searchString, STARTS_WITH);
    var index = toLength(Math.min(arguments.length > 1 ? arguments[1] : undefined, that.length));
    var search = String(searchString);
    return $startsWith
      ? $startsWith.call(that, search, index)
      : that.slice(index, index + search.length) === search;
  }
});


/***/ }),
/* 278 */,
/* 279 */,
/* 280 */
/***/ (function(module, exports, __webpack_require__) {

// 21.2.5.3 get RegExp.prototype.flags()
if (__webpack_require__(27) && /./g.flags != 'g') __webpack_require__(45).f(RegExp.prototype, 'flags', {
  configurable: true,
  get: __webpack_require__(106)
});


/***/ }),
/* 281 */
/***/ (function(module, exports, __webpack_require__) {

"use strict";


var _interopRequireDefault = __webpack_require__(0);

var _defineProperty = _interopRequireDefault(__webpack_require__(1));

var _keys = _interopRequireDefault(__webpack_require__(23));

var ControlBaseView;
ControlBaseView = Marionette.CompositeView.extend({
  ui: function ui() {
    return {
      controlTitle: '.elementor-control-title'
    };
  },
  behaviors: function behaviors() {
    var behaviors = {};
    return elementor.hooks.applyFilters('controls/base/behaviors', behaviors, this);
  },
  getBehavior: function getBehavior(name) {
    return this._behaviors[(0, _keys.default)(this.behaviors()).indexOf(name)];
  },
  className: function className() {
    // TODO: Any better classes for that?
    var classes = 'elementor-control elementor-control-' + this.model.get('name') + ' elementor-control-type-' + this.model.get('type'),
        modelClasses = this.model.get('classes'),
        responsive = this.model.get('responsive');

    if (!_.isEmpty(modelClasses)) {
      classes += ' ' + modelClasses;
    }

    if (!_.isEmpty(responsive)) {
      classes += ' elementor-control-responsive-' + responsive.max;
    }

    return classes;
  },
  templateHelpers: function templateHelpers() {
    var controlData = {
      _cid: this.model.cid
    };
    return {
      view: this,
      data: _.extend({}, this.model.toJSON(), controlData)
    };
  },
  getTemplate: function getTemplate() {
    return Marionette.TemplateCache.get('#tmpl-elementor-control-' + this.model.get('type') + '-content');
  },
  initialize: function initialize(options) {
    var label = this.model.get('label'); // TODO: Temp backwards compatibility. since 2.8.0.

    (0, _defineProperty.default)(this, 'container', {
      get: function get() {
        if (!options.container) {
          var settingsModel = options.elementSettingsModel,
              view = $e.components.get('document').utils.findViewById(settingsModel.id); // Element control.

          if (view && view.getContainer) {
            options.container = view.getContainer();
          } else {
            if (!settingsModel.id) {
              settingsModel.id = 'bc-' + elementorCommon.helpers.getUniqueId();
            } // Document/General/Other control.


            options.container = new elementorModules.editor.Container({
              type: 'bc-container',
              id: settingsModel.id,
              model: settingsModel,
              settings: settingsModel,
              label: label,
              view: false,
              renderer: false,
              controls: settingsModel.options.controls
            });
          }
        }

        return options.container;
      }
    }); // Use `defineProperty` because `get elementSettingsModel()` fails during the `Marionette.CompositeView.extend`.

    (0, _defineProperty.default)(this, 'elementSettingsModel', {
      get: function get() {
        elementorCommon.helpers.softDeprecated('elementSettingsModel', '2.8.0', 'container.settings');
        return options.container ? options.container.settings : options.elementSettingsModel;
      }
    });
    var controlType = this.model.get('type'),
        controlSettings = jQuery.extend(true, {}, elementor.config.controls[controlType], this.model.attributes);
    this.model.set(controlSettings); // TODO: this.elementSettingsModel is deprecated since 2.8.0.

    var settings = this.container ? this.container.settings : this.elementSettingsModel;
    this.listenTo(settings, 'change', this.toggleControlVisibility);
  },
  toggleControlVisibility: function toggleControlVisibility() {
    // TODO: this.elementSettingsModel is deprecated since 2.8.0.
    var settings = this.container ? this.container.settings : this.elementSettingsModel;
    var isVisible = elementor.helpers.isActiveControl(this.model, settings.attributes);
    this.$el.toggleClass('elementor-hidden-control', !isVisible);
    elementor.getPanelView().updateScrollbar();
  },
  onRender: function onRender() {
    var layoutType = this.model.get('label_block') ? 'block' : 'inline',
        showLabel = this.model.get('show_label'),
        elClasses = 'elementor-label-' + layoutType;
    elClasses += ' elementor-control-separator-' + this.model.get('separator');

    if (!showLabel) {
      elClasses += ' elementor-control-hidden-label';
    }

    this.$el.addClass(elClasses);
    this.toggleControlVisibility();
  }
});
module.exports = ControlBaseView;

/***/ }),
/* 282 */
/***/ (function(module, exports, __webpack_require__) {

__webpack_require__(283);
module.exports = __webpack_require__(6).parseInt;


/***/ }),
/* 283 */
/***/ (function(module, exports, __webpack_require__) {

var $export = __webpack_require__(7);
var $parseInt = __webpack_require__(284);
// 18.2.5 parseInt(string, radix)
$export($export.G + $export.F * (parseInt != $parseInt), { parseInt: $parseInt });


/***/ }),
/* 284 */
/***/ (function(module, exports, __webpack_require__) {

var $parseInt = __webpack_require__(8).parseInt;
var $trim = __webpack_require__(285).trim;
var ws = __webpack_require__(235);
var hex = /^[-+]?0[xX]/;

module.exports = $parseInt(ws + '08') !== 8 || $parseInt(ws + '0x16') !== 22 ? function parseInt(str, radix) {
  var string = $trim(String(str), 3);
  return $parseInt(string, (radix >>> 0) || (hex.test(string) ? 16 : 10));
} : $parseInt;


/***/ }),
/* 285 */
/***/ (function(module, exports, __webpack_require__) {

var $export = __webpack_require__(7);
var defined = __webpack_require__(65);
var fails = __webpack_require__(22);
var spaces = __webpack_require__(235);
var space = '[' + spaces + ']';
var non = '\u200b\u0085';
var ltrim = RegExp('^' + space + space + '*');
var rtrim = RegExp(space + space + '*$');

var exporter = function (KEY, exec, ALIAS) {
  var exp = {};
  var FORCE = fails(function () {
    return !!spaces[KEY]() || non[KEY]() != non;
  });
  var fn = exp[KEY] = FORCE ? exec(trim) : spaces[KEY];
  if (ALIAS) exp[ALIAS] = fn;
  $export($export.P + $export.F * FORCE, 'String', exp);
};

// 1 -> String#trimLeft
// 2 -> String#trimRight
// 3 -> String#trim
var trim = exporter.trim = function (string, TYPE) {
  string = String(defined(string));
  if (TYPE & 1) string = string.replace(ltrim, '');
  if (TYPE & 2) string = string.replace(rtrim, '');
  return string;
};

module.exports = exporter;


/***/ }),
/* 286 */
/***/ (function(module, exports, __webpack_require__) {

"use strict";


var _interopRequireDefault = __webpack_require__(0);

var _Object$defineProperty = __webpack_require__(1);

_Object$defineProperty(exports, "__esModule", {
  value: true
});

exports.default = exports.Base = void 0;

var _classCallCheck2 = _interopRequireDefault(__webpack_require__(2));

var _createClass2 = _interopRequireDefault(__webpack_require__(3));

var _inherits2 = _interopRequireDefault(__webpack_require__(4));

var _createSuper2 = _interopRequireDefault(__webpack_require__(5));

var _hookBase = _interopRequireDefault(__webpack_require__(294));

var Base = /*#__PURE__*/function (_HookBase) {
  (0, _inherits2.default)(Base, _HookBase);

  var _super = (0, _createSuper2.default)(Base);

  function Base() {
    (0, _classCallCheck2.default)(this, Base);
    return _super.apply(this, arguments);
  }

  (0, _createClass2.default)(Base, [{
    key: "getType",
    value: function getType() {
      return 'data';
    }
  }]);
  return Base;
}(_hookBase.default);

exports.Base = Base;
var _default = Base;
exports.default = _default;

/***/ }),
/* 287 */
/***/ (function(module, exports, __webpack_require__) {

"use strict";


var _interopRequireWildcard = __webpack_require__(36);

var _interopRequireDefault = __webpack_require__(0);

var _Object$defineProperty = __webpack_require__(1);

_Object$defineProperty(exports, "__esModule", {
  value: true
});

exports.default = void 0;

var _classCallCheck2 = _interopRequireDefault(__webpack_require__(2));

var _createClass2 = _interopRequireDefault(__webpack_require__(3));

var _get2 = _interopRequireDefault(__webpack_require__(26));

var _getPrototypeOf2 = _interopRequireDefault(__webpack_require__(16));

var _inherits2 = _interopRequireDefault(__webpack_require__(4));

var _createSuper2 = _interopRequireDefault(__webpack_require__(5));

var _componentBase = _interopRequireDefault(__webpack_require__(85));

var commands = _interopRequireWildcard(__webpack_require__(321));

var ComponentModalBase = /*#__PURE__*/function (_ComponentBase) {
  (0, _inherits2.default)(ComponentModalBase, _ComponentBase);

  var _super = (0, _createSuper2.default)(ComponentModalBase);

  function ComponentModalBase() {
    (0, _classCallCheck2.default)(this, ComponentModalBase);
    return _super.apply(this, arguments);
  }

  (0, _createClass2.default)(ComponentModalBase, [{
    key: "registerAPI",
    value: function registerAPI() {
      var _this = this;

      (0, _get2.default)((0, _getPrototypeOf2.default)(ComponentModalBase.prototype), "registerAPI", this).call(this);
      $e.shortcuts.register('esc', {
        scopes: [this.getNamespace()],
        callback: function callback() {
          return _this.close();
        }
      });
    }
  }, {
    key: "defaultCommands",
    value: function defaultCommands() {
      return this.importCommands(commands);
    }
  }, {
    key: "defaultRoutes",
    value: function defaultRoutes() {
      return {
        '': function _() {
          /* Nothing to do, it's already rendered. */
        }
      };
    }
  }, {
    key: "open",
    value: function open() {
      var _this2 = this;

      if (!this.layout) {
        var layout = this.getModalLayout();
        this.layout = new layout({
          component: this
        });
        this.layout.getModal().on('hide', function () {
          return _this2.close();
        });
      }

      this.layout.showModal();
      return true;
    }
  }, {
    key: "close",
    value: function close() {
      if (!(0, _get2.default)((0, _getPrototypeOf2.default)(ComponentModalBase.prototype), "close", this).call(this)) {
        return false;
      }

      this.layout.getModal().hide();
      return true;
    }
  }, {
    key: "getModalLayout",
    value: function getModalLayout() {
      elementorModules.ForceMethodImplementation();
    }
  }]);
  return ComponentModalBase;
}(_componentBase.default);

exports.default = ComponentModalBase;

/***/ }),
/* 288 */
/***/ (function(module, exports, __webpack_require__) {

__webpack_require__(289);
module.exports = __webpack_require__(6).Object.assign;


/***/ }),
/* 289 */
/***/ (function(module, exports, __webpack_require__) {

// 19.1.3.1 Object.assign(target, source)
var $export = __webpack_require__(7);

$export($export.S + $export.F, 'Object', { assign: __webpack_require__(212) });


/***/ }),
/* 290 */
/***/ (function(module, exports, __webpack_require__) {

module.exports = __webpack_require__(291);

/***/ }),
/* 291 */
/***/ (function(module, exports, __webpack_require__) {

__webpack_require__(292);
var $Object = __webpack_require__(6).Object;
module.exports = function defineProperties(T, D) {
  return $Object.defineProperties(T, D);
};


/***/ }),
/* 292 */
/***/ (function(module, exports, __webpack_require__) {

var $export = __webpack_require__(7);
// 19.1.2.3 / 15.2.3.7 Object.defineProperties(O, Properties)
$export($export.S + $export.F * !__webpack_require__(14), 'Object', { defineProperties: __webpack_require__(136) });


/***/ }),
/* 293 */
/***/ (function(module, exports, __webpack_require__) {

"use strict";


var _interopRequireDefault = __webpack_require__(0);

var _keys = _interopRequireDefault(__webpack_require__(23));

__webpack_require__(295);

__webpack_require__(119);

__webpack_require__(58);

__webpack_require__(39);

__webpack_require__(25);

var Stylesheet = __webpack_require__(332),
    ControlsCSSParser;

ControlsCSSParser = elementorModules.ViewModule.extend({
  stylesheet: null,
  getDefaultSettings: function getDefaultSettings() {
    return {
      id: 0,
      context: null,
      settingsModel: null,
      dynamicParsing: {}
    };
  },
  getDefaultElements: function getDefaultElements() {
    var id = "elementor-style-".concat(this.getSettings('id'));
    var $stylesheet = elementor.$previewContents.find("#".concat(id));

    if (!$stylesheet.length) {
      $stylesheet = jQuery('<style>', {
        id: id
      });
    }

    return {
      $stylesheetElement: $stylesheet
    };
  },
  initStylesheet: function initStylesheet() {
    var breakpoints = elementorFrontend.config.breakpoints;
    this.stylesheet = new Stylesheet();
    this.stylesheet.addDevice('mobile', 0).addDevice('tablet', breakpoints.md).addDevice('desktop', breakpoints.lg);
  },
  addStyleRules: function addStyleRules(styleControls, values, controls, placeholders, replacements) {
    var _this = this;

    // If the current element contains dynamic values, parse these values
    var dynamicParsedValues = this.getSettings('settingsModel').parseDynamicSettings(values, this.getSettings('dynamicParsing'), styleControls);

    _.each(styleControls, function (control) {
      var _control$dynamic, _values$__dynamic__;

      if (control.styleFields && control.styleFields.length) {
        _this.addRepeaterControlsStyleRules(values[control.name], control.styleFields, control.fields, placeholders, replacements);
      } // If a dynamic tag includes controls with CSS implementations, Take their CSS and apply it.


      if (((_control$dynamic = control.dynamic) === null || _control$dynamic === void 0 ? void 0 : _control$dynamic.active) && ((_values$__dynamic__ = values.__dynamic__) === null || _values$__dynamic__ === void 0 ? void 0 : _values$__dynamic__[control.name])) {
        _this.addDynamicControlStyleRules(values.__dynamic__[control.name], control);
      }

      if (!control.selectors) {
        return;
      }

      var context = _this.getSettings('context');

      var globalKeys;

      if (context) {
        globalKeys = context.model.get('settings').get('__globals__');
      }

      _this.addControlStyleRules(control, dynamicParsedValues, controls, placeholders, replacements, globalKeys);
    });
  },
  addControlStyleRules: function addControlStyleRules(control, values, controls, placeholders, replacements, globalKeys) {
    var _this2 = this;

    var globalKey;

    if (globalKeys) {
      var controlGlobalKey = control.name;

      if (control.groupType) {
        controlGlobalKey = control.groupPrefix + control.groupType;
      }

      globalKey = globalKeys[controlGlobalKey];
    }

    var value;

    if (!globalKey) {
      value = this.getStyleControlValue(control, values);

      if (undefined === value) {
        return;
      }
    }

    _.each(control.selectors, function (cssProperty, selector) {
      var outputCssProperty;

      if (globalKey) {
        var selectorGlobalValue = _this2.getSelectorGlobalValue(control, globalKey);

        if (selectorGlobalValue) {
          if ('font' === control.type) {
            $e.data.get(globalKey).then(function (response) {
              elementor.helpers.enqueueFont(response.data.value.typography_font_family);
            });
          } // This regex handles a case where a control's selector property value includes more than one CSS selector.
          // Example: 'selector' => 'background: {{VALUE}}; background-color: {{VALUE}};'.


          outputCssProperty = cssProperty.replace(/(:)[^;]+(;?)/g, '$1' + selectorGlobalValue + '$2');
        }
      } else {
        try {
          outputCssProperty = cssProperty.replace(/{{(?:([^.}]+)\.)?([^}| ]*)(?: *\|\| *(?:([^.}]+)\.)?([^}| ]*) *)*}}/g, function (originalPhrase, controlName, placeholder, fallbackControlName, fallbackValue) {
            var externalControlMissing = controlName && !controls[controlName];
            var parsedValue = '';

            if (!externalControlMissing) {
              parsedValue = _this2.parsePropertyPlaceholder(control, value, controls, values, placeholder, controlName);
            }

            if (!parsedValue && 0 !== parsedValue) {
              if (fallbackValue) {
                parsedValue = fallbackValue;
                var stringValueMatches = parsedValue.match(/^(['"])(.*)\1$/);

                if (stringValueMatches) {
                  parsedValue = stringValueMatches[2];
                } else if (!isFinite(parsedValue)) {
                  if (fallbackControlName && !controls[fallbackControlName]) {
                    return '';
                  }

                  parsedValue = _this2.parsePropertyPlaceholder(control, value, controls, values, fallbackValue, fallbackControlName);
                }
              }

              if (!parsedValue && 0 !== parsedValue) {
                if (externalControlMissing) {
                  return '';
                }

                throw '';
              }
            }

            if ('font' === control.type) {
              elementor.helpers.enqueueFont(parsedValue);
            }

            return parsedValue;
          });
        } catch (e) {
          return;
        }
      }

      if (_.isEmpty(outputCssProperty)) {
        return;
      }

      var devicePattern = /^(?:\([^)]+\)){1,2}/,
          deviceRules = selector.match(devicePattern),
          query = {};

      if (deviceRules) {
        deviceRules = deviceRules[0];
        selector = selector.replace(devicePattern, '');
        var pureDevicePattern = /\(([^)]+)\)/g,
            pureDeviceRules = [],
            matches;
        matches = pureDevicePattern.exec(deviceRules);

        while (matches) {
          pureDeviceRules.push(matches[1]);
          matches = pureDevicePattern.exec(deviceRules);
        }

        _.each(pureDeviceRules, function (deviceRule) {
          if ('desktop' === deviceRule) {
            return;
          }

          var device = deviceRule.replace(/\+$/, ''),
              endPoint = device === deviceRule ? 'max' : 'min';
          query[endPoint] = device;
        });
      }

      _.each(placeholders, function (placeholder, index) {
        // Check if it's a RegExp
        var regexp = placeholder.source ? placeholder.source : placeholder,
            placeholderPattern = new RegExp(regexp, 'g');
        selector = selector.replace(placeholderPattern, replacements[index]);
      });

      if (!(0, _keys.default)(query).length && control.responsive) {
        query = _.pick(elementorCommon.helpers.cloneObject(control.responsive), ['min', 'max']);

        if ('desktop' === query.max) {
          delete query.max;
        }
      }

      _this2.stylesheet.addRules(selector, outputCssProperty, query);
    });
  },
  parsePropertyPlaceholder: function parsePropertyPlaceholder(control, value, controls, values, placeholder, parserControlName) {
    if (parserControlName) {
      control = _.findWhere(controls, {
        name: parserControlName
      });
      value = this.getStyleControlValue(control, values);
    }

    return elementor.getControlView(control.type).getStyleValue(placeholder, value, control);
  },
  getStyleControlValue: function getStyleControlValue(control, values) {
    var _values$__globals__;

    if ((_values$__globals__ = values.__globals__) === null || _values$__globals__ === void 0 ? void 0 : _values$__globals__[control.name]) {
      // When the control itself has no global value, but it refers to another control global value
      return this.getSelectorGlobalValue(control, values.__globals__[control.name]);
    }

    var value = values[control.name];

    if (control.selectors_dictionary) {
      value = control.selectors_dictionary[value] || value;
    }

    if (!_.isNumber(value) && _.isEmpty(value)) {
      return;
    }

    return value;
  },
  getSelectorGlobalValue: function getSelectorGlobalValue(control, globalKey) {
    var globalArgs = $e.data.commandExtractArgs(globalKey),
        data = $e.data.getCache($e.components.get('globals'), globalArgs.command, globalArgs.args.query);

    if (!(data === null || data === void 0 ? void 0 : data.value)) {
      return;
    }

    var id = data.id;
    var value; // it's a global settings with additional controls in group.

    if (control.groupType) {
      var propertyName = control.name.replace(control.groupPrefix, '').replace(/(_tablet|_mobile)$/, '');

      if (!data.value[elementor.config.kit_config.typography_prefix + propertyName]) {
        return;
      }

      propertyName = propertyName.replace('_', '-');
      value = "var( --e-global-".concat(control.groupType, "-").concat(id, "-").concat(propertyName, " )");
    } else {
      value = "var( --e-global-".concat(control.type, "-").concat(id, " )");
    }

    return value;
  },
  addRepeaterControlsStyleRules: function addRepeaterControlsStyleRules(repeaterValues, repeaterControlsItems, controls, placeholders, replacements) {
    var _this3 = this;

    repeaterControlsItems.forEach(function (item, index) {
      var itemModel = repeaterValues.models[index];

      _this3.addStyleRules(item, itemModel.attributes, controls, placeholders.concat(['{{CURRENT_ITEM}}']), replacements.concat(['.elementor-repeater-item-' + itemModel.get('_id')]));
    });
  },
  addDynamicControlStyleRules: function addDynamicControlStyleRules(value, control) {
    var self = this;
    elementor.dynamicTags.parseTagsText(value, control.dynamic, function (id, name, settings) {
      var tag = elementor.dynamicTags.createTag(id, name, settings);

      if (!tag) {
        return;
      }

      var tagSettingsModel = tag.model,
          styleControls = tagSettingsModel.getStyleControls();

      if (!styleControls.length) {
        return;
      }

      self.addStyleRules(tagSettingsModel.getStyleControls(), tagSettingsModel.attributes, tagSettingsModel.controls, ['{{WRAPPER}}'], ['#elementor-tag-' + id]);
    });
  },
  addStyleToDocument: function addStyleToDocument(position) {
    var $head = elementor.$previewContents.find('head');
    var insertMethod = 'append',
        $insertBy = $head;

    if (position) {
      var $targetElement = $head.children(position.of);

      if ($targetElement.length) {
        insertMethod = position.at;
        $insertBy = $targetElement;
      }
    }

    $insertBy[insertMethod](this.elements.$stylesheetElement);
    var extraCSS = elementor.hooks.applyFilters('editor/style/styleText', '', this.getSettings('context'));
    this.elements.$stylesheetElement.text(this.stylesheet + extraCSS);
  },
  removeStyleFromDocument: function removeStyleFromDocument() {
    this.elements.$stylesheetElement.remove();
  },
  onInit: function onInit() {
    elementorModules.ViewModule.prototype.onInit.apply(this, arguments);
    this.initStylesheet();
  }
});
module.exports = ControlsCSSParser;

/***/ }),
/* 294 */
/***/ (function(module, exports, __webpack_require__) {

"use strict";


var _interopRequireDefault = __webpack_require__(0);

var _Object$defineProperty = __webpack_require__(1);

_Object$defineProperty(exports, "__esModule", {
  value: true
});

exports.default = void 0;

var _classCallCheck2 = _interopRequireDefault(__webpack_require__(2));

var _createClass2 = _interopRequireDefault(__webpack_require__(3));

var _defineProperty2 = _interopRequireDefault(__webpack_require__(28));

var HookBase = /*#__PURE__*/function () {
  /**
   * Callback type, eg ( hook, event ).
   *
   * @type {string}
   */

  /**
   * Full command address, that will hook the callback.
   *
   * @type (string)
   */

  /**
   * Unique id of the callback.
   *
   * @type {string}
   */

  /**
   * Function constructor().
   *
   * Create callback base.
   */
  function HookBase() {
    (0, _classCallCheck2.default)(this, HookBase);
    (0, _defineProperty2.default)(this, "type", void 0);
    (0, _defineProperty2.default)(this, "command", void 0);
    (0, _defineProperty2.default)(this, "id", void 0);
    this.initialize();
    this.type = this.getType();
    this.command = this.getCommand();
    this.id = this.getId();
  }
  /**
   * Function initialize().
   *
   * Called after creation of the base, used for initialize extras.
   * Without expending constructor.
   */


  (0, _createClass2.default)(HookBase, [{
    key: "initialize",
    value: function initialize() {}
    /**
     * Function register().
     *
     * Used to register the callback.
     *
     * @throws {Error}
     */

  }, {
    key: "register",
    value: function register() {
      elementorModules.ForceMethodImplementation();
    }
    /**
     * Function getType().
     *
     * Get type eg: ( hook, event, etc ... ).
     *
     * @returns {string}
     *
     * @throws {Error}
     */

  }, {
    key: "getType",
    value: function getType() {
      elementorModules.ForceMethodImplementation();
    }
    /**
     * Function getCommand().
     *
     * Returns the full command path for callback binding.
     *
     * Supports array of strings ( commands ).
     *
     * @returns {string}
     *
     * @throws {Error}
     */

  }, {
    key: "getCommand",
    value: function getCommand() {
      elementorModules.ForceMethodImplementation();
    }
    /**
     * Function getId().
     *
     * Returns command id for the hook (should be unique).
     *
     * @returns {string}
     *
     * @throws {Error}
     */

  }, {
    key: "getId",
    value: function getId() {
      elementorModules.ForceMethodImplementation();
    }
    /**
     * Function getContainerType().
     *
     * Bind eContainer type to callback.
     *
     * Used to gain performance.
     *
     * @return {string} type
     */

  }, {
    key: "getContainerType",
    value: function getContainerType() {}
    /**
     * Function getConditions().
     *
     * Condition for running the callback, if true, call to apply().
     *
     * @param [args={}]
     * @param [result=*]
     *
     * @returns {boolean}
     */

  }, {
    key: "getConditions",
    value: function getConditions() {
      var args = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
      var result = arguments.length > 1 ? arguments[1] : undefined;
      // eslint-disable-line no-unused-vars
      return true;
    }
    /**
     * Function apply().
     *
     * Apply the callback, ( The actual affect of the callback ).
     *
     * @param [args={}]
     *
     * @returns {*}
     */

  }, {
    key: "apply",
    value: function apply(args) {
      // eslint-disable-line no-unused-vars
      elementorModules.ForceMethodImplementation();
    }
    /**
     * Function run().
     *
     * Run the callback.
     *
     * @param {*} args
     *
     * @returns {*}
     */

  }, {
    key: "run",
    value: function run() {
      var _ref = arguments.length <= 0 ? undefined : arguments[0],
          _ref$options = _ref.options,
          options = _ref$options === void 0 ? {} : _ref$options; // Disable callback if requested by args.options.


      if (options.callbacks && false === options.callbacks[this.id]) {
        return true;
      }

      if (this.getConditions.apply(this, arguments)) {
        if ($e.devTools) {
          $e.devTools.log.callbacks().active(this.type, this.command, this.id);
        }

        return this.apply.apply(this, arguments);
      }

      return true;
    }
  }]);
  return HookBase;
}();

exports.default = HookBase;

/***/ }),
/* 295 */
/***/ (function(module, exports, __webpack_require__) {

var global = __webpack_require__(17);
var inheritIfRequired = __webpack_require__(310);
var dP = __webpack_require__(45).f;
var gOPN = __webpack_require__(312).f;
var isRegExp = __webpack_require__(122);
var $flags = __webpack_require__(106);
var $RegExp = global.RegExp;
var Base = $RegExp;
var proto = $RegExp.prototype;
var re1 = /a/g;
var re2 = /a/g;
// "new" creates a new object, old webkit buggy here
var CORRECT_NEW = new $RegExp(re1) !== re1;

if (__webpack_require__(27) && (!CORRECT_NEW || __webpack_require__(33)(function () {
  re2[__webpack_require__(12)('match')] = false;
  // RegExp constructor can alter flags and IsRegExp works correct with @@match
  return $RegExp(re1) != re1 || $RegExp(re2) == re2 || $RegExp(re1, 'i') != '/a/i';
}))) {
  $RegExp = function RegExp(p, f) {
    var tiRE = this instanceof $RegExp;
    var piRE = isRegExp(p);
    var fiU = f === undefined;
    return !tiRE && piRE && p.constructor === $RegExp && fiU ? p
      : inheritIfRequired(CORRECT_NEW
        ? new Base(piRE && !fiU ? p.source : p, f)
        : Base((piRE = p instanceof $RegExp) ? p.source : p, piRE && fiU ? $flags.call(p) : f)
      , tiRE ? this : proto, $RegExp);
  };
  var proxy = function (key) {
    key in $RegExp || dP($RegExp, key, {
      configurable: true,
      get: function () { return Base[key]; },
      set: function (it) { Base[key] = it; }
    });
  };
  for (var keys = gOPN(Base), i = 0; keys.length > i;) proxy(keys[i++]);
  proto.constructor = $RegExp;
  $RegExp.prototype = proto;
  __webpack_require__(37)(global, 'RegExp', $RegExp);
}

__webpack_require__(309)('RegExp');


/***/ }),
/* 296 */
/***/ (function(module, exports, __webpack_require__) {

"use strict";


var _interopRequireDefault = __webpack_require__(0);

var _Object$defineProperty = __webpack_require__(1);

_Object$defineProperty(exports, "__esModule", {
  value: true
});

exports.default = void 0;

var _assign = _interopRequireDefault(__webpack_require__(134));

var _classCallCheck2 = _interopRequireDefault(__webpack_require__(2));

var _createClass2 = _interopRequireDefault(__webpack_require__(3));

var _inherits2 = _interopRequireDefault(__webpack_require__(4));

var _createSuper2 = _interopRequireDefault(__webpack_require__(5));

var _helper = _interopRequireDefault(__webpack_require__(215));

var AddSectionBase = /*#__PURE__*/function (_Marionette$ItemView) {
  (0, _inherits2.default)(AddSectionBase, _Marionette$ItemView);

  var _super = (0, _createSuper2.default)(AddSectionBase);

  function AddSectionBase() {
    (0, _classCallCheck2.default)(this, AddSectionBase);
    return _super.apply(this, arguments);
  }

  (0, _createClass2.default)(AddSectionBase, [{
    key: "template",
    value: function template() {
      return Marionette.TemplateCache.get('#tmpl-elementor-add-section');
    }
  }, {
    key: "attributes",
    value: function attributes() {
      return {
        'data-view': 'choose-action'
      };
    }
  }, {
    key: "ui",
    value: function ui() {
      return {
        addNewSection: '.elementor-add-new-section',
        closeButton: '.elementor-add-section-close',
        addSectionButton: '.elementor-add-section-button',
        addTemplateButton: '.elementor-add-template-button',
        selectPreset: '.elementor-select-preset',
        presets: '.elementor-preset'
      };
    }
  }, {
    key: "events",
    value: function events() {
      return {
        'click @ui.addSectionButton': 'onAddSectionButtonClick',
        'click @ui.addTemplateButton': 'onAddTemplateButtonClick',
        'click @ui.closeButton': 'onCloseButtonClick',
        'click @ui.presets': 'onPresetSelected'
      };
    }
  }, {
    key: "behaviors",
    value: function behaviors() {
      return {
        contextMenu: {
          behaviorClass: __webpack_require__(273),
          groups: this.getContextMenuGroups()
        }
      };
    }
  }, {
    key: "className",
    value: function className() {
      return 'elementor-add-section elementor-visible-desktop';
    }
  }, {
    key: "setView",
    value: function setView(view) {
      this.$el.attr('data-view', view);
    }
  }, {
    key: "showSelectPresets",
    value: function showSelectPresets() {
      this.setView('select-preset');
    }
  }, {
    key: "closeSelectPresets",
    value: function closeSelectPresets() {
      this.setView('choose-action');
    }
  }, {
    key: "getTemplatesModalOptions",
    value: function getTemplatesModalOptions() {
      return {
        importOptions: {
          at: this.getOption('at')
        }
      };
    }
  }, {
    key: "getContextMenuGroups",
    value: function getContextMenuGroups() {
      var _this = this;

      var hasContent = function hasContent() {
        return elementor.elements.length > 0;
      };

      return [{
        name: 'paste',
        actions: [{
          name: 'paste',
          title: elementor.translate('paste'),
          isEnabled: function isEnabled() {
            return _helper.default.isPasteEnabled(elementor.getPreviewContainer());
          },
          callback: function callback() {
            return $e.run('document/ui/paste', {
              container: elementor.getPreviewContainer(),
              options: {
                at: _this.getOption('at'),
                rebuild: true
              },
              onAfter: function onAfter() {
                return _this.onAfterPaste();
              }
            });
          }
        }]
      }, {
        name: 'content',
        actions: [{
          name: 'copy_all_content',
          title: elementor.translate('copy_all_content'),
          isEnabled: hasContent,
          callback: function callback() {
            return $e.run('document/elements/copy-all');
          }
        }, {
          name: 'delete_all_content',
          title: elementor.translate('delete_all_content'),
          isEnabled: hasContent,
          callback: function callback() {
            return $e.run('document/elements/empty');
          }
        }]
      }];
    }
  }, {
    key: "onAddSectionButtonClick",
    value: function onAddSectionButtonClick() {
      this.showSelectPresets();
    }
  }, {
    key: "onAddTemplateButtonClick",
    value: function onAddTemplateButtonClick() {
      $e.run('library/open', this.getTemplatesModalOptions());
    }
  }, {
    key: "onRender",
    value: function onRender() {
      this.$el.html5Droppable({
        axis: ['vertical'],
        groups: ['elementor-element'],
        placeholder: false,
        currentElementClass: 'elementor-html5dnd-current-element',
        hasDraggingOnChildClass: 'elementor-dragging-on-child',
        onDropping: this.onDropping.bind(this)
      });
    }
  }, {
    key: "onPresetSelected",
    value: function onPresetSelected(event) {
      this.closeSelectPresets();
      var selectedStructure = event.currentTarget.dataset.structure,
          parsedStructure = elementor.presetsFactory.getParsedStructure(selectedStructure);
      $e.run('document/elements/create', {
        model: {
          elType: 'section'
        },
        container: elementor.getPreviewContainer(),
        columns: parsedStructure.columnsCount,
        structure: selectedStructure,
        options: (0, _assign.default)({}, this.options)
      });
    }
  }, {
    key: "onDropping",
    value: function onDropping() {
      if (elementor.helpers.maybeDisableWidget()) {
        return;
      }

      var selectedElement = elementor.channels.panelElements.request('element:selected'),
          historyId = $e.internal('document/history/start-log', {
        type: 'add',
        title: elementor.helpers.getModelLabel(selectedElement.model)
      }),
          eSection = $e.run('document/elements/create', {
        model: {
          elType: 'section'
        },
        container: elementor.getPreviewContainer(),
        columns: 1,
        options: {
          at: this.getOption('at'),
          // BC: Deprecated since 2.8.0 - use `$e.hooks`.
          trigger: {
            beforeAdd: 'section:before:drop',
            afterAdd: 'section:after:drop'
          }
        }
      }); // Create the element in column.

      eSection.view.children.findByIndex(0).addElementFromPanel();
      $e.internal('document/history/end-log', {
        id: historyId
      });
    }
  }, {
    key: "onAfterPaste",
    value: function onAfterPaste() {}
  }]);
  return AddSectionBase;
}(Marionette.ItemView);

var _default = AddSectionBase;
exports.default = _default;

/***/ }),
/* 297 */
/***/ (function(module, exports, __webpack_require__) {

"use strict";


var _interopRequireDefault = __webpack_require__(0);

__webpack_require__(25);

__webpack_require__(39);

var _isArray = _interopRequireDefault(__webpack_require__(84));

var _typeof2 = _interopRequireDefault(__webpack_require__(48));

var _parseInt2 = _interopRequireDefault(__webpack_require__(213));

var _keys = _interopRequireDefault(__webpack_require__(23));

var _environment = _interopRequireDefault(__webpack_require__(272));

var _helper = _interopRequireDefault(__webpack_require__(215));

var ControlsCSSParser = __webpack_require__(293),
    Validator = __webpack_require__(300),
    BaseContainer = __webpack_require__(333),
    BaseElementView;

BaseElementView = BaseContainer.extend({
  tagName: 'div',
  controlsCSSParser: null,
  allowRender: true,
  toggleEditTools: false,
  renderAttributes: {},
  className: function className() {
    var classes = 'elementor-element elementor-element-edit-mode ' + this.getElementUniqueID();

    if (this.toggleEditTools) {
      classes += ' elementor-element--toggle-edit-tools';
    }

    return classes;
  },
  attributes: function attributes() {
    return {
      'data-id': this.getID(),
      'data-element_type': this.model.get('elType')
    };
  },
  ui: function ui() {
    return {
      tools: '> .elementor-element-overlay > .elementor-editor-element-settings',
      editButton: '> .elementor-element-overlay .elementor-editor-element-edit',
      duplicateButton: '> .elementor-element-overlay .elementor-editor-element-duplicate',
      addButton: '> .elementor-element-overlay .elementor-editor-element-add',
      removeButton: '> .elementor-element-overlay .elementor-editor-element-remove'
    };
  },
  behaviors: function behaviors() {
    var groups = elementor.hooks.applyFilters('elements/' + this.options.model.get('elType') + '/contextMenuGroups', this.getContextMenuGroups(), this);
    var behaviors = {
      contextMenu: {
        behaviorClass: __webpack_require__(273),
        groups: groups
      }
    };
    return elementor.hooks.applyFilters('elements/base/behaviors', behaviors, this);
  },
  getBehavior: function getBehavior(name) {
    return this._behaviors[(0, _keys.default)(this.behaviors()).indexOf(name)];
  },
  events: function events() {
    return {
      mousedown: 'onMouseDown',
      'click @ui.editButton': 'onEditButtonClick',
      'click @ui.duplicateButton': 'onDuplicateButtonClick',
      'click @ui.addButton': 'onAddButtonClick',
      'click @ui.removeButton': 'onRemoveButtonClick'
    };
  },
  getElementType: function getElementType() {
    return this.model.get('elType');
  },
  getIDInt: function getIDInt() {
    return (0, _parseInt2.default)(this.getID(), 16);
  },
  getChildType: function getChildType() {
    return elementor.helpers.getElementChildType(this.getElementType());
  },
  getChildView: function getChildView(model) {
    var ChildView;
    var elType = model.get('elType');

    if ('section' === elType) {
      ChildView = __webpack_require__(256);
    } else if ('column' === elType) {
      ChildView = __webpack_require__(374);
    } else {
      ChildView = elementor.modules.elements.views.Widget;
    }

    return elementor.hooks.applyFilters('element/view', ChildView, model, this);
  },
  getTemplateType: function getTemplateType() {
    return 'js';
  },
  getEditModel: function getEditModel() {
    return this.model;
  },
  getContainer: function getContainer() {
    var _this = this;

    if (!this.container) {
      var settingsModel = this.model.get('settings');
      this.container = new elementorModules.editor.Container({
        type: this.model.get('elType'),
        id: this.model.id,
        model: this.model,
        settings: settingsModel,
        view: this,
        parent: this._parent ? this._parent.getContainer() : {},
        children: [],
        label: elementor.helpers.getModelLabel(this.model),
        controls: settingsModel.options.controls
      });

      if ((0, _keys.default)(this.container.parent).length) {
        this.container.parent.children[this._index] = this.container;
        this.on('destroy', function () {
          delete _this.container.parent.children[_this._index];
          _this.container.parent.children = _this.container.parent.children.filter(function (child) {
            return null !== child;
          });
        });
      }
    }

    return this.container;
  },
  getContextMenuGroups: function getContextMenuGroups() {
    var _this2 = this;

    var controlSign = _environment.default.mac ? '⌘' : '^';
    return [{
      name: 'general',
      actions: [{
        name: 'edit',
        icon: 'eicon-edit',
        title: elementor.translate('edit_element', [this.options.model.getTitle()]),
        callback: function callback() {
          return $e.run('panel/editor/open', {
            model: _this2.options.model,
            // Todo: remove on merge router
            view: _this2,
            // Todo: remove on merge router
            container: _this2.getContainer()
          });
        }
      }, {
        name: 'duplicate',
        icon: 'eicon-clone',
        title: elementor.translate('duplicate'),
        shortcut: controlSign + '+D',
        callback: function callback() {
          return $e.run('document/elements/duplicate', {
            container: _this2.getContainer()
          });
        }
      }]
    }, {
      name: 'clipboard',
      actions: [{
        name: 'copy',
        title: elementor.translate('copy'),
        shortcut: controlSign + '+C',
        callback: function callback() {
          return $e.run('document/elements/copy', {
            container: _this2.getContainer()
          });
        }
      }, {
        name: 'paste',
        title: elementor.translate('paste'),
        shortcut: controlSign + '+V',
        isEnabled: function isEnabled() {
          return _helper.default.isPasteEnabled(_this2.getContainer());
        },
        callback: function callback() {
          return $e.run('document/ui/paste', {
            container: _this2.getContainer()
          });
        }
      }, {
        name: 'pasteStyle',
        title: elementor.translate('paste_style'),
        shortcut: controlSign + '+⇧+V',
        isEnabled: function isEnabled() {
          return !!elementorCommon.storage.get('clipboard');
        },
        callback: function callback() {
          return $e.run('document/elements/paste-style', {
            container: _this2.getContainer()
          });
        }
      }, {
        name: 'resetStyle',
        title: elementor.translate('reset_style'),
        callback: function callback() {
          return $e.run('document/elements/reset-style', {
            container: _this2.getContainer()
          });
        }
      }]
    }, {
      name: 'delete',
      actions: [{
        name: 'delete',
        icon: 'eicon-trash',
        title: elementor.translate('delete'),
        shortcut: '⌦',
        callback: function callback() {
          return $e.run('document/elements/delete', {
            container: _this2.getContainer()
          });
        }
      }]
    }];
  },
  getEditButtons: function getEditButtons() {
    return {};
  },
  initialize: function initialize() {
    var _this3 = this;

    BaseContainer.prototype.initialize.apply(this, arguments);
    var editModel = this.getEditModel();

    if (this.collection && this.onCollectionChanged) {
      elementorCommon.helpers.softDeprecated('onCollectionChanged', '2.8.0', '$e.hooks');
      this.listenTo(this.collection, 'add remove reset', this.onCollectionChanged, this);
    }

    if (this.onSettingsChanged) {
      elementorCommon.helpers.softDeprecated('onSettingsChanged', '2.8.0', '$e.hooks');
      this.listenTo(editModel.get('settings'), 'change', this.onSettingsChanged);
    }

    this.listenTo(editModel.get('editSettings'), 'change', this.onEditSettingsChanged).listenTo(this.model, 'request:edit', this.onEditRequest).listenTo(this.model, 'request:toggleVisibility', this.toggleVisibility);
    this.initControlsCSSParser();

    _.defer(function () {
      // Init container. Defer - in order to init the container after the element is fully initialized, and properties like `_parent` are available.
      _this3.getContainer();
    });
  },
  getHandlesOverlay: function getHandlesOverlay() {
    var $handlesOverlay = jQuery('<div>', {
      class: 'elementor-element-overlay'
    }),
        $overlayList = jQuery('<ul>', {
      class: "elementor-editor-element-settings elementor-editor-".concat(this.getElementType(), "-settings")
    });
    jQuery.each(this.getEditButtons(), function (toolName, tool) {
      var $item = jQuery('<li>', {
        class: "elementor-editor-element-setting elementor-editor-element-".concat(toolName),
        title: tool.title
      }),
          $icon = jQuery('<i>', {
        class: "eicon-".concat(tool.icon),
        'aria-hidden': true
      }),
          $a11y = jQuery('<span>', {
        class: 'elementor-screen-only'
      });
      $a11y.text(tool.title);
      $item.append($icon, $a11y);
      $overlayList.append($item);
    });
    $handlesOverlay.append($overlayList);
    return $handlesOverlay;
  },
  attachElContent: function attachElContent(html) {
    this.$el.empty().append(this.getHandlesOverlay(), html);
  },
  startTransport: function startTransport() {
    elementorCommon.helpers.softDeprecated('element.startTransport', '2.8.0', "$e.run( 'document/elements/copy' )");
    $e.run('document/elements/copy', {
      container: this.getContainer()
    });
  },
  copy: function copy() {
    elementorCommon.helpers.softDeprecated('element.copy', '2.8.0', "$e.run( 'document/elements/copy' )");
    $e.run('document/elements/copy', {
      container: this.getContainer()
    });
  },
  cut: function cut() {
    elementorCommon.helpers.softDeprecated('element.cut', '2.8.0');
  },
  paste: function paste() {
    elementorCommon.helpers.softDeprecated('element.paste', '2.8.0', "$e.run( 'document/elements/paste' )");
    $e.run('document/elements/paste', {
      container: this.getContainer(),
      at: this._parent.collection.indexOf(this.model)
    });
  },
  duplicate: function duplicate() {
    elementorCommon.helpers.softDeprecated('element.duplicate', '2.8.0', "$e.run( 'document/elements/duplicate' )");
    $e.run('document/elements/duplicate', {
      container: this.getContainer()
    });
  },
  pasteStyle: function pasteStyle() {
    elementorCommon.helpers.softDeprecated('element.pasteStyle', '2.8.0', "$e.run( 'document/elements/paste-style' )");
    $e.run('document/elements/paste-style', {
      container: this.getContainer()
    });
  },
  resetStyle: function resetStyle() {
    elementorCommon.helpers.softDeprecated('element.resetStyle', '2.8.0', "$e.run( 'document/elements/reset-style' )");
    $e.run('document/elements/reset-style', {
      container: this.getContainer()
    });
  },
  isStyleTransferControl: function isStyleTransferControl(control) {
    if (undefined !== control.style_transfer) {
      return control.style_transfer;
    }

    return 'content' !== control.tab || control.selectors || control.prefix_class;
  },
  toggleVisibility: function toggleVisibility() {
    this.model.set('hidden', !this.model.get('hidden'));
    this.toggleVisibilityClass();
  },
  toggleVisibilityClass: function toggleVisibilityClass() {
    this.$el.toggleClass('elementor-edit-hidden', !!this.model.get('hidden'));
  },
  addElementFromPanel: function addElementFromPanel(options) {
    options = options || {};
    var elementView = elementor.channels.panelElements.request('element:selected'),
        model = {
      elType: elementView.model.get('elType')
    };

    if (elementor.helpers.maybeDisableWidget()) {
      return;
    }

    if ('widget' === model.elType) {
      model.widgetType = elementView.model.get('widgetType');
    } else if ('section' === model.elType) {
      model.isInner = true;
    } else {
      return;
    }

    var customData = elementView.model.get('custom');

    if (customData) {
      jQuery.extend(model, customData);
    }

    return $e.run('document/elements/create', {
      container: this.getContainer(),
      model: model,
      options: options
    });
  },
  // TODO: Unused function.
  addControlValidator: function addControlValidator(controlName, validationCallback) {
    validationCallback = validationCallback.bind(this);
    var validator = new Validator({
      customValidationMethod: validationCallback
    }),
        validators = this.getEditModel().get('settings').validators;

    if (!validators[controlName]) {
      validators[controlName] = [];
    }

    validators[controlName].push(validator);
  },
  addRenderAttribute: function addRenderAttribute(element, key, value, overwrite) {
    var self = this;

    if ('object' === (0, _typeof2.default)(element)) {
      jQuery.each(element, function (elementKey, elementValue) {
        self.addRenderAttribute(elementKey, elementValue, null, overwrite);
      });
      return self;
    }

    if ('object' === (0, _typeof2.default)(key)) {
      jQuery.each(key, function (attributeKey, attributeValue) {
        self.addRenderAttribute(element, attributeKey, attributeValue, overwrite);
      });
      return self;
    }

    if (!self.renderAttributes[element]) {
      self.renderAttributes[element] = {};
    }

    if (!self.renderAttributes[element][key]) {
      self.renderAttributes[element][key] = [];
    }

    if (!(0, _isArray.default)(value)) {
      value = [value];
    }

    if (overwrite) {
      self.renderAttributes[element][key] = value;
    } else {
      self.renderAttributes[element][key] = self.renderAttributes[element][key].concat(value);
    }
  },
  getRenderAttributeString: function getRenderAttributeString(element) {
    if (!this.renderAttributes[element]) {
      return '';
    }

    var renderAttributes = this.renderAttributes[element],
        attributes = [];
    jQuery.each(renderAttributes, function (attributeKey, attributeValue) {
      attributes.push(attributeKey + '="' + _.escape(attributeValue.join(' ')) + '"');
    });
    return attributes.join(' ');
  },
  isInner: function isInner() {
    return !!this.model.get('isInner');
  },
  initControlsCSSParser: function initControlsCSSParser() {
    this.controlsCSSParser = new ControlsCSSParser({
      id: this.model.get('id'),
      context: this,
      settingsModel: this.getEditModel().get('settings'),
      dynamicParsing: this.getDynamicParsingSettings()
    });
  },
  enqueueFonts: function enqueueFonts() {
    var editModel = this.getEditModel(),
        settings = editModel.get('settings'); // Enqueue Icon Fonts

    jQuery.each(settings.getIconsControls(), function (index, control) {
      var iconType = editModel.getSetting(control.name);

      if (!iconType || !iconType.library) {
        return;
      }

      elementor.helpers.enqueueIconFonts(iconType.library);
    });
  },
  renderStyles: function renderStyles(settings) {
    if (!settings) {
      settings = this.getEditModel().get('settings');
    }

    this.controlsCSSParser.stylesheet.empty();
    this.controlsCSSParser.addStyleRules(settings.getStyleControls(), settings.attributes, this.getEditModel().get('settings').controls, [/{{ID}}/g, /{{WRAPPER}}/g], [this.getID(), '.elementor-' + elementor.config.document.id + ' .elementor-element.' + this.getElementUniqueID()]);
    this.controlsCSSParser.addStyleToDocument();
  },
  renderCustomClasses: function renderCustomClasses() {
    var self = this;
    var settings = self.getEditModel().get('settings'),
        classControls = settings.getClassControls(); // Remove all previous classes

    _.each(classControls, function (control) {
      var previousClassValue = settings.previous(control.name);

      if (control.classes_dictionary) {
        if (undefined !== control.classes_dictionary[previousClassValue]) {
          previousClassValue = control.classes_dictionary[previousClassValue];
        }
      }

      self.$el.removeClass(control.prefix_class + previousClassValue);
    }); // Add new classes


    _.each(classControls, function (control) {
      var value = settings.attributes[control.name];
      var classValue = value;

      if (control.classes_dictionary) {
        if (undefined !== control.classes_dictionary[value]) {
          classValue = control.classes_dictionary[value];
        }
      }

      var isVisible = elementor.helpers.isActiveControl(control, settings.attributes);

      if (isVisible && (classValue || 0 === classValue)) {
        self.$el.addClass(control.prefix_class + classValue);
      }
    });

    self.$el.addClass(_.result(self, 'className'));
    self.toggleVisibilityClass();
  },
  renderCustomElementID: function renderCustomElementID() {
    var customElementID = this.getEditModel().get('settings').get('_element_id');
    this.$el.attr('id', customElementID);
  },
  renderUI: function renderUI() {
    this.renderStyles();
    this.renderCustomClasses();
    this.renderCustomElementID();
    this.enqueueFonts();
  },
  runReadyTrigger: function runReadyTrigger() {
    var self = this;

    _.defer(function () {
      elementorFrontend.elementsHandler.runReadyTrigger(self.el);

      if (!elementorFrontend.isEditMode()) {
        return;
      } // In edit mode - handle an external elements that loaded by another elements like shortcode etc.


      self.$el.find('.elementor-element.elementor-' + self.model.get('elType') + ':not(.elementor-element-edit-mode)').each(function () {
        elementorFrontend.elementsHandler.runReadyTrigger(this);
      });
    });
  },
  getID: function getID() {
    return this.model.get('id');
  },
  getElementUniqueID: function getElementUniqueID() {
    return 'elementor-element-' + this.getID();
  },
  renderHTML: function renderHTML() {
    var templateType = this.getTemplateType(),
        editModel = this.getEditModel();

    if ('js' === templateType) {
      this.getEditModel().setHtmlCache();
      this.render();
      editModel.renderOnLeave = true;
    } else {
      editModel.renderRemoteServer();
    }
  },
  renderOnChange: function renderOnChange(settings) {
    if (!this.allowRender) {
      return;
    } // Make sure is correct model


    if (settings instanceof elementorModules.editor.elements.models.BaseSettings) {
      var hasChanged = settings.hasChanged();
      var isContentChanged = !hasChanged,
          isRenderRequired = !hasChanged;

      _.each(settings.changedAttributes(), function (settingValue, settingKey) {
        var control = settings.getControl(settingKey);

        if ('_column_size' === settingKey) {
          isRenderRequired = true;
          return;
        }

        if (!control) {
          isRenderRequired = true;
          isContentChanged = true;
          return;
        }

        if ('none' !== control.render_type) {
          isRenderRequired = true;
        }

        if (-1 !== ['none', 'ui'].indexOf(control.render_type)) {
          return;
        }

        if ('template' === control.render_type || !settings.isStyleControl(settingKey) && !settings.isClassControl(settingKey) && '_element_id' !== settingKey) {
          isContentChanged = true;
        }
      });

      if (!isRenderRequired) {
        return;
      }

      if (!isContentChanged) {
        this.renderUI();
        return;
      }
    } // Re-render the template


    this.renderHTML();
  },
  getDynamicParsingSettings: function getDynamicParsingSettings() {
    var self = this;
    return {
      onServerRequestStart: function onServerRequestStart() {
        self.$el.addClass('elementor-loading');
      },
      onServerRequestEnd: function onServerRequestEnd() {
        self.render();
        self.$el.removeClass('elementor-loading');
      }
    };
  },
  serializeData: function serializeData() {
    var data = BaseContainer.prototype.serializeData.apply(this, arguments);
    data.settings = this.getEditModel().get('settings').parseDynamicSettings(data.settings, this.getDynamicParsingSettings());
    return data;
  },
  save: function save() {
    $e.route('library/save-template', {
      model: this.model
    });
  },
  onBeforeRender: function onBeforeRender() {
    this.renderAttributes = {};
  },
  onRender: function onRender() {
    this.renderUI();
    this.runReadyTrigger();

    if (this.toggleEditTools) {
      var editButton = this.ui.editButton; // Since this.ui.tools does not exist while testing.

      if (this.ui.tools) {
        this.ui.tools.hoverIntent(function () {
          editButton.addClass('elementor-active');
        }, function () {
          editButton.removeClass('elementor-active');
        }, {
          timeout: 500
        });
      }
    }
  },
  onEditSettingsChanged: function onEditSettingsChanged(changedModel) {
    elementor.channels.editor.trigger('change:editSettings', changedModel, this);
  },
  onEditButtonClick: function onEditButtonClick() {
    this.model.trigger('request:edit');
  },
  onEditRequest: function onEditRequest() {
    var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};

    if (!this.container.isEditable()) {
      return;
    }

    var model = this.getEditModel(),
        panel = elementor.getPanelView();

    if ($e.routes.isPartOf('panel/editor') && panel.getCurrentPageView().model === model) {
      return;
    }

    if (options.scrollIntoView) {
      elementor.helpers.scrollToView(this.$el, 200);
    }

    $e.run('panel/editor/open', {
      model: model,
      view: this
    });
  },
  onDuplicateButtonClick: function onDuplicateButtonClick(event) {
    event.stopPropagation();
    $e.run('document/elements/duplicate', {
      container: this.getContainer()
    });
  },
  onRemoveButtonClick: function onRemoveButtonClick(event) {
    event.stopPropagation();
    $e.run('document/elements/delete', {
      container: this.getContainer()
    });
  },

  /* jQuery ui sortable preventing any `mousedown` event above any element, and as a result is preventing the `blur`
   * event on the currently active element. Therefor, we need to blur the active element manually.
   */
  onMouseDown: function onMouseDown(event) {
    if (jQuery(event.target).closest('.elementor-inline-editing').length) {
      return;
    }

    elementorFrontend.elements.window.document.activeElement.blur();
  },
  onDestroy: function onDestroy() {
    this.controlsCSSParser.removeStyleFromDocument();
    this.getEditModel().get('settings').validators = {};
    elementor.channels.data.trigger('element:destroy', this.model);
  }
});
module.exports = BaseElementView;

/***/ }),
/* 298 */
/***/ (function(module, exports, __webpack_require__) {

"use strict";


var SortableBehavior;
SortableBehavior = Marionette.Behavior.extend({
  defaults: {
    elChildType: 'widget'
  },
  events: {
    sortstart: 'onSortStart',
    sortreceive: 'onSortReceive',
    sortupdate: 'onSortUpdate',
    sortover: 'onSortOver',
    sortout: 'onSortOut'
  },
  initialize: function initialize() {
    this.listenTo(elementor.channels.dataEditMode, 'switch', this.onEditModeSwitched).listenTo(this.view.options.model, 'request:sort:start', this.startSort).listenTo(this.view.options.model, 'request:sort:update', this.updateSort).listenTo(this.view.options.model, 'request:sort:receive', this.receiveSort);
  },
  onEditModeSwitched: function onEditModeSwitched(activeMode) {
    if ('edit' === activeMode) {
      this.activate();
    } else {
      this.deactivate();
    }
  },
  onRender: function onRender() {
    var self = this;

    _.defer(function () {
      self.onEditModeSwitched(elementor.channels.dataEditMode.request('activeMode'));
    });
  },
  onDestroy: function onDestroy() {
    this.deactivate();
  },
  activate: function activate() {
    if (!elementor.userCan('design')) {
      return;
    }

    if (this.getChildViewContainer().sortable('instance')) {
      return;
    }

    var $childViewContainer = this.getChildViewContainer(),
        defaultSortableOptions = {
      connectWith: $childViewContainer.selector,
      placeholder: 'elementor-sortable-placeholder elementor-' + this.getOption('elChildType') + '-placeholder',
      cursorAt: {
        top: 20,
        left: 25
      },
      helper: this._getSortableHelper.bind(this),
      cancel: 'input, textarea, button, select, option, .elementor-inline-editing, .elementor-tab-title'
    },
        sortableOptions = _.extend(defaultSortableOptions, this.view.getSortableOptions());

    $childViewContainer.sortable(sortableOptions);
  },
  _getSortableHelper: function _getSortableHelper(event, $item) {
    var model = this.view.collection.get({
      cid: $item.data('model-cid')
    });
    return '<div style="height: 84px; width: 125px;" class="elementor-sortable-helper elementor-sortable-helper-' + model.get('elType') + '"><div class="icon"><i class="' + model.getIcon() + '"></i></div><div class="elementor-element-title-wrapper"><div class="title">' + model.getTitle() + '</div></div></div>';
  },
  getChildViewContainer: function getChildViewContainer() {
    return this.view.getChildViewContainer(this.view);
  },
  getSortedElementNewIndex: function getSortedElementNewIndex($element) {
    var draggedModel = elementor.channels.data.request('dragging:model'),
        draggedElType = draggedModel.get('elType');
    var newIndex = $element.index();

    if ('widget' === draggedElType && !elementor.config.legacyMode.elementWrappers) {
      newIndex--;
    }

    return newIndex;
  },
  deactivate: function deactivate() {
    var childViewContainer = this.getChildViewContainer();

    if (childViewContainer.sortable('instance')) {
      childViewContainer.sortable('destroy');
    }
  },
  startSort: function startSort(event, ui) {
    event.stopPropagation();
    var container = elementor.getContainer(ui.item.attr('data-id'));
    elementor.channels.data.reply('dragging:model', container.model).reply('dragging:view', container.view).reply('dragging:parent:view', this.view).trigger('drag:start', container.model).trigger(container.model.get('elType') + ':drag:start');
  },
  // On sorting element
  updateSort: function updateSort(ui) {
    $e.run('document/elements/move', {
      container: elementor.channels.data.request('dragging:view').getContainer(),
      target: this.view.getContainer(),
      options: {
        at: this.getSortedElementNewIndex(ui.item)
      }
    });
  },
  // On receiving element from another container
  receiveSort: function receiveSort(event, ui) {
    event.stopPropagation();

    if (this.view.isCollectionFilled()) {
      jQuery(ui.sender).sortable('cancel');
      return;
    }

    var model = elementor.channels.data.request('dragging:model'),
        draggedElType = model.get('elType'),
        draggedIsInnerSection = 'section' === draggedElType && model.get('isInner'),
        targetIsInnerColumn = 'column' === this.view.getElementType() && this.view.isInner();

    if (draggedIsInnerSection && targetIsInnerColumn) {
      jQuery(ui.sender).sortable('cancel');
      return;
    }

    $e.run('document/elements/move', {
      container: elementor.channels.data.request('dragging:view').getContainer(),
      target: this.view.getContainer(),
      options: {
        at: this.getSortedElementNewIndex(ui.item)
      }
    });
  },
  onSortStart: function onSortStart(event, ui) {
    if ('column' === this.options.elChildType) {
      var uiData = ui.item.data('sortableItem'),
          uiItems = uiData.items,
          itemHeight = 0;
      uiItems.forEach(function (item) {
        if (item.item[0] === ui.item[0]) {
          itemHeight = item.height;
          return false;
        }
      });
      ui.placeholder.height(itemHeight);
    }

    this.startSort(event, ui);
  },
  onSortOver: function onSortOver(event) {
    event.stopPropagation();
    var model = elementor.channels.data.request('dragging:model');
    jQuery(event.target).addClass('elementor-draggable-over').attr({
      'data-dragged-element': model.get('elType'),
      'data-dragged-is-inner': model.get('isInner')
    });
    this.$el.addClass('elementor-dragging-on-child');
  },
  onSortOut: function onSortOut(event) {
    event.stopPropagation();
    jQuery(event.target).removeClass('elementor-draggable-over').removeAttr('data-dragged-element data-dragged-is-inner');
    this.$el.removeClass('elementor-dragging-on-child');
  },
  onSortReceive: function onSortReceive(event, ui) {
    this.receiveSort(event, ui);
  },
  onSortUpdate: function onSortUpdate(event, ui) {
    event.stopPropagation();

    if (this.getChildViewContainer()[0] !== ui.item.parent()[0]) {
      return;
    }

    this.updateSort(ui);
  },
  onAddChild: function onAddChild(view) {
    view.$el.attr('data-model-cid', view.model.cid);
  }
});
module.exports = SortableBehavior;

/***/ }),
/* 299 */
/***/ (function(module, exports, __webpack_require__) {

var arrayWithoutHoles = __webpack_require__(317);

var iterableToArray = __webpack_require__(318);

var unsupportedIterableToArray = __webpack_require__(187);

var nonIterableSpread = __webpack_require__(319);

function _toConsumableArray(arr) {
  return arrayWithoutHoles(arr) || iterableToArray(arr) || unsupportedIterableToArray(arr) || nonIterableSpread();
}

module.exports = _toConsumableArray;

/***/ }),
/* 300 */
/***/ (function(module, exports, __webpack_require__) {

"use strict";


module.exports = elementorModules.Module.extend({
  errors: [],
  __construct: function __construct(settings) {
    var customValidationMethod = settings.customValidationMethod;

    if (customValidationMethod) {
      this.validationMethod = customValidationMethod;
    }
  },
  getDefaultSettings: function getDefaultSettings() {
    return {
      validationTerms: {}
    };
  },
  isValid: function isValid() {
    var validationErrors = this.validationMethod.apply(this, arguments);

    if (validationErrors.length) {
      this.errors = validationErrors;
      return false;
    }

    return true;
  },
  validationMethod: function validationMethod(newValue) {
    var validationTerms = this.getSettings('validationTerms'),
        errors = [];

    if (validationTerms.required) {
      if (!('' + newValue).length) {
        errors.push('Required value is empty');
      }
    }

    return errors;
  }
});

/***/ }),
/* 301 */
/***/ (function(module, exports, __webpack_require__) {

"use strict";


var _interopRequireDefault = __webpack_require__(0);

var _Object$defineProperty = __webpack_require__(1);

_Object$defineProperty(exports, "__esModule", {
  value: true
});

exports.default = void 0;

__webpack_require__(183);

__webpack_require__(72);

var _classCallCheck2 = _interopRequireDefault(__webpack_require__(2));

var _createClass2 = _interopRequireDefault(__webpack_require__(3));

var _inherits2 = _interopRequireDefault(__webpack_require__(4));

var _createSuper2 = _interopRequireDefault(__webpack_require__(5));

var ColorPicker = /*#__PURE__*/function (_elementorModules$Mod) {
  (0, _inherits2.default)(ColorPicker, _elementorModules$Mod);

  var _super = (0, _createSuper2.default)(ColorPicker);

  function ColorPicker() {
    var _this;

    (0, _classCallCheck2.default)(this, ColorPicker);

    for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
      args[_key] = arguments[_key];
    }

    _this = _super.call.apply(_super, [this].concat(args));

    _this.createPicker();

    return _this;
  }

  (0, _createClass2.default)(ColorPicker, [{
    key: "getDefaultSettings",
    value: function getDefaultSettings() {
      return {
        picker: {
          theme: 'monolith',
          position: 'bottom-' + (elementorCommon.config.isRTL ? 'end' : 'start'),
          components: {
            opacity: true,
            hue: true,
            interaction: {
              input: true
            }
          }
        },
        classes: {
          active: 'elementor-active',
          pickerHeader: 'elementor-color-picker__header',
          pickerToolsContainer: 'e-color-picker__tools',
          pickerTool: 'e-control-tool',
          clearButton: 'e-color-picker__clear',
          plusIcon: 'eicon-plus'
        }
      };
    }
  }, {
    key: "createPicker",
    value: function createPicker() {
      var _this2 = this;

      var pickerSettings = this.getSettings('picker');
      pickerSettings.default = pickerSettings.default || null;
      this.picker = new Pickr(pickerSettings); // Set a default palette. It doesn't affect the selected value.

      this.picker.setColor(pickerSettings.default || '#020101');
      this.color = this.processColor();
      this.picker.on('change', function () {
        return _this2.onPickerChange();
      }).on('clear', function () {
        return _this2.onPickerClear();
      }).on('show', function () {
        return _this2.onPickerShow();
      });
      this.$pickerAppContainer = jQuery(this.picker.getRoot().app);
      this.createPickerHeader();
    }
  }, {
    key: "addTipsyToClearButton",
    value: function addTipsyToClearButton() {
      this.$clearButton.tipsy({
        title: function title() {
          return elementor.translate('clear');
        },
        gravity: function gravity() {
          return 's';
        }
      });
    }
  }, {
    key: "processColor",
    value: function processColor() {
      var color = this.picker.getColor();
      var colorRepresentation;

      if (1 === color.a) {
        colorRepresentation = color.toHEXA();
      } else {
        colorRepresentation = color.toRGBA();
      }

      return colorRepresentation.toString();
    }
  }, {
    key: "getColor",
    value: function getColor() {
      return this.color;
    }
  }, {
    key: "createPickerHeader",
    value: function createPickerHeader() {
      var _this$getSettings = this.getSettings(),
          classes = _this$getSettings.classes,
          $pickerHeader = jQuery('<div>', {
        class: classes.pickerHeader
      }).text(elementor.translate('color_picker')),
          $pickerToolsContainer = jQuery('<div>', {
        class: classes.pickerToolsContainer
      }),
          addButton = this.getSettings('addButton');

      this.$pickerToolsContainer = $pickerToolsContainer;

      if (addButton) {
        this.createAddButton();
      }

      this.createClearButton();
      $pickerToolsContainer.append(this.$clearButton, this.$addButton);
      $pickerHeader.append($pickerToolsContainer);
      this.$pickerAppContainer.prepend($pickerHeader);
    }
  }, {
    key: "createAddButton",
    value: function createAddButton() {
      var _this3 = this;

      var _this$getSettings2 = this.getSettings(),
          classes = _this$getSettings2.classes;

      this.$addButton = jQuery('<button>', {
        class: classes.pickerTool
      }).html(jQuery('<i>', {
        class: classes.plusIcon
      }));
      this.$addButton.on('click', function () {
        return _this3.onAddButtonClick();
      });
      this.$addButton.tipsy({
        title: function title() {
          return elementor.translate('create_global_color');
        },
        gravity: function gravity() {
          return 's';
        }
      });
    } // Move the clear button from Pickr's default location into the Color Picker header.

  }, {
    key: "createClearButton",
    value: function createClearButton() {
      var _this4 = this;

      var _this$getSettings3 = this.getSettings(),
          classes = _this$getSettings3.classes;

      this.$clearButton = jQuery('<div>', {
        class: classes.clearButton + ' ' + classes.pickerTool
      }).html('<i class="eicon-undo"></i>');
      this.$clearButton.on('click', function () {
        return _this4.picker._clearColor();
      });
      this.addTipsyToClearButton();
    }
  }, {
    key: "destroy",
    value: function destroy() {
      this.picker.destroyAndRemove();
    } // TODO: CHECK IF THIS IS STILL NECESSARY

  }, {
    key: "fixTipsyForFF",
    value: function fixTipsyForFF($button) {
      // There's a bug in FireFox about hiding the tooltip after the button was clicked,
      // So let's force it to hide.
      $button.data('tipsy').hide();
    }
  }, {
    key: "introductionViewed",
    value: function introductionViewed() {
      return ColorPicker.droppingIntroductionViewed || elementor.config.user.introduction.colorPickerDropping;
    }
  }, {
    key: "toggleClearButtonState",
    value: function toggleClearButtonState(active) {
      this.$clearButton.toggleClass('e-control-tool-disabled', !active);
    }
  }, {
    key: "onPickerChange",
    value: function onPickerChange() {
      this.picker.applyColor();
      var newColor = this.processColor();

      if (newColor === this.color) {
        return;
      }

      this.color = newColor;
      var onChange = this.getSettings('onChange');

      if (onChange) {
        onChange();
      }
    }
  }, {
    key: "onPickerClear",
    value: function onPickerClear() {
      this.color = '';
      var onClear = this.getSettings('onClear');

      if (onClear) {
        onClear();
      }
    }
  }, {
    key: "onPickerShow",
    value: function onPickerShow() {
      var _this5 = this;

      var resultInput = this.picker.getRoot().interaction.result;
      setTimeout(function () {
        resultInput.select();
        _this5.picker._recalc = true;
      }, 100);
    }
  }, {
    key: "onAddButtonClick",
    value: function onAddButtonClick() {
      this.picker.hide();
      var onPickerAddButtonClick = this.getSettings('onAddButtonClick');

      if (onPickerAddButtonClick) {
        onPickerAddButtonClick();
      }

      this.fixTipsyForFF(this.$addButton);
    }
  }]);
  return ColorPicker;
}(elementorModules.Module);

exports.default = ColorPicker;

/***/ }),
/* 302 */
/***/ (function(module, exports, __webpack_require__) {

"use strict";

// 22.1.3.9 Array.prototype.findIndex(predicate, thisArg = undefined)
var $export = __webpack_require__(34);
var $find = __webpack_require__(182)(6);
var KEY = 'findIndex';
var forced = true;
// Shouldn't skip holes
if (KEY in []) Array(1)[KEY](function () { forced = false; });
$export($export.P + $export.F * forced, 'Array', {
  findIndex: function findIndex(callbackfn /* , that = undefined */) {
    return $find(this, callbackfn, arguments.length > 1 ? arguments[1] : undefined);
  }
});
__webpack_require__(87)(KEY);


/***/ }),
/* 303 */
/***/ (function(module, exports, __webpack_require__) {

module.exports = __webpack_require__(304);

/***/ }),
/* 304 */
/***/ (function(module, exports, __webpack_require__) {

__webpack_require__(305);
module.exports = __webpack_require__(6).Object.getOwnPropertyDescriptors;


/***/ }),
/* 305 */
/***/ (function(module, exports, __webpack_require__) {

// https://github.com/tc39/proposal-object-getownpropertydescriptors
var $export = __webpack_require__(7);
var ownKeys = __webpack_require__(306);
var toIObject = __webpack_require__(20);
var gOPD = __webpack_require__(51);
var createProperty = __webpack_require__(186);

$export($export.S, 'Object', {
  getOwnPropertyDescriptors: function getOwnPropertyDescriptors(object) {
    var O = toIObject(object);
    var getDesc = gOPD.f;
    var keys = ownKeys(O);
    var result = {};
    var i = 0;
    var key, desc;
    while (keys.length > i) {
      desc = getDesc(O, key = keys[i++]);
      if (desc !== undefined) createProperty(result, key, desc);
    }
    return result;
  }
});


/***/ }),
/* 306 */
/***/ (function(module, exports, __webpack_require__) {

// all object keys, includes non-enumerable and symbols
var gOPN = __webpack_require__(99);
var gOPS = __webpack_require__(71);
var anObject = __webpack_require__(13);
var Reflect = __webpack_require__(8).Reflect;
module.exports = Reflect && Reflect.ownKeys || function ownKeys(it) {
  var keys = gOPN.f(anObject(it));
  var getSymbols = gOPS.f;
  return getSymbols ? keys.concat(getSymbols(it)) : keys;
};


/***/ }),
/* 307 */
/***/ (function(module, exports, __webpack_require__) {

module.exports = __webpack_require__(308);

/***/ }),
/* 308 */
/***/ (function(module, exports, __webpack_require__) {

__webpack_require__(140);
module.exports = __webpack_require__(6).Object.getOwnPropertySymbols;


/***/ }),
/* 309 */
/***/ (function(module, exports, __webpack_require__) {

"use strict";

var global = __webpack_require__(17);
var dP = __webpack_require__(45);
var DESCRIPTORS = __webpack_require__(27);
var SPECIES = __webpack_require__(12)('species');

module.exports = function (KEY) {
  var C = global[KEY];
  if (DESCRIPTORS && C && !C[SPECIES]) dP.f(C, SPECIES, {
    configurable: true,
    get: function () { return this; }
  });
};


/***/ }),
/* 310 */
/***/ (function(module, exports, __webpack_require__) {

var isObject = __webpack_require__(30);
var setPrototypeOf = __webpack_require__(330).set;
module.exports = function (that, target, C) {
  var S = target.constructor;
  var P;
  if (S !== C && typeof S == 'function' && (P = S.prototype) !== C.prototype && isObject(P) && setPrototypeOf) {
    setPrototypeOf(that, P);
  } return that;
};


/***/ }),
/* 311 */
/***/ (function(module, exports, __webpack_require__) {

var pIE = __webpack_require__(331);
var createDesc = __webpack_require__(103);
var toIObject = __webpack_require__(98);
var toPrimitive = __webpack_require__(123);
var has = __webpack_require__(61);
var IE8_DOM_DEFINE = __webpack_require__(129);
var gOPD = Object.getOwnPropertyDescriptor;

exports.f = __webpack_require__(27) ? gOPD : function getOwnPropertyDescriptor(O, P) {
  O = toIObject(O);
  P = toPrimitive(P, true);
  if (IE8_DOM_DEFINE) try {
    return gOPD(O, P);
  } catch (e) { /* empty */ }
  if (has(O, P)) return createDesc(!pIE.f.call(O, P), O[P]);
};


/***/ }),
/* 312 */
/***/ (function(module, exports, __webpack_require__) {

// 19.1.2.7 / 15.2.3.4 Object.getOwnPropertyNames(O)
var $keys = __webpack_require__(219);
var hiddenKeys = __webpack_require__(148).concat('length', 'prototype');

exports.f = Object.getOwnPropertyNames || function getOwnPropertyNames(O) {
  return $keys(O, hiddenKeys);
};


/***/ }),
/* 313 */,
/* 314 */,
/* 315 */,
/* 316 */
/***/ (function(module, exports, __webpack_require__) {

var core = __webpack_require__(6);
var $JSON = core.JSON || (core.JSON = { stringify: JSON.stringify });
module.exports = function stringify(it) { // eslint-disable-line no-unused-vars
  return $JSON.stringify.apply($JSON, arguments);
};


/***/ }),
/* 317 */
/***/ (function(module, exports, __webpack_require__) {

var _Array$isArray = __webpack_require__(84);

var arrayLikeToArray = __webpack_require__(199);

function _arrayWithoutHoles(arr) {
  if (_Array$isArray(arr)) return arrayLikeToArray(arr);
}

module.exports = _arrayWithoutHoles;

/***/ }),
/* 318 */
/***/ (function(module, exports, __webpack_require__) {

var _Array$from = __webpack_require__(200);

var _isIterable = __webpack_require__(211);

var _Symbol = __webpack_require__(111);

function _iterableToArray(iter) {
  if (typeof _Symbol !== "undefined" && _isIterable(Object(iter))) return _Array$from(iter);
}

module.exports = _iterableToArray;

/***/ }),
/* 319 */
/***/ (function(module, exports) {

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;

/***/ }),
/* 320 */
/***/ (function(module, exports, __webpack_require__) {

"use strict";


var _interopRequireDefault = __webpack_require__(0);

var _Object$defineProperty = __webpack_require__(1);

_Object$defineProperty(exports, "__esModule", {
  value: true
});

exports.default = void 0;

var _createClass2 = _interopRequireDefault(__webpack_require__(3));

var _classCallCheck2 = _interopRequireDefault(__webpack_require__(2));

var _defineProperty2 = _interopRequireDefault(__webpack_require__(28));

var _manager = _interopRequireDefault(__webpack_require__(427));

var _manager2 = _interopRequireDefault(__webpack_require__(429));

/**
 * TODO: Wrong class name + location, conflict with 'editor.js'.
 */
var Editor = function Editor() {
  (0, _classCallCheck2.default)(this, Editor);
  (0, _defineProperty2.default)(this, "status", 'closed');
  (0, _defineProperty2.default)(this, "isSaving", false);
  (0, _defineProperty2.default)(this, "isChanged", false);
  (0, _defineProperty2.default)(this, "isChangedDuringSave", false);
  (0, _defineProperty2.default)(this, "isSaved", true);
  (0, _defineProperty2.default)(this, "lastSaveHistoryId", 0);
};

var Document = /*#__PURE__*/function () {
  /**
   * Document id.
   *
   * @type {number|null}
   */

  /**
   * History of the document.
   *
   * @type {HistoryManager}
   */

  /**
   * Revisions of the document.
   *
   * @type {RevisionsManager}
   */

  /**
   * Current container.
   *
   * @type {Container}
   */

  /**
   * Editor Settings.
   *
   * @type {Editor}
   */

  /**
   * Function constructor().
   *
   * Create document.
   *
   * @param {{}} config
   */
  function Document(config) {
    (0, _classCallCheck2.default)(this, Document);
    (0, _defineProperty2.default)(this, "id", null);
    (0, _defineProperty2.default)(this, "history", null);
    (0, _defineProperty2.default)(this, "revisions", null);
    (0, _defineProperty2.default)(this, "container", null);
    (0, _defineProperty2.default)(this, "editor", new Editor());
    this.config = config;
    this.id = config.id;
    this.history = new _manager.default(this);
    this.revisions = new _manager2.default(this);
  }

  (0, _createClass2.default)(Document, [{
    key: "isDraft",
    value: function isDraft() {
      return this.config.revisions.current_id !== this.config.id;
    }
  }]);
  return Document;
}();

exports.default = Document;

/***/ }),
/* 321 */
/***/ (function(module, exports, __webpack_require__) {

"use strict";


var _Object$defineProperty = __webpack_require__(1);

_Object$defineProperty(exports, "__esModule", {
  value: true
});

_Object$defineProperty(exports, "Close", {
  enumerable: true,
  get: function get() {
    return _close.Close;
  }
});

_Object$defineProperty(exports, "Open", {
  enumerable: true,
  get: function get() {
    return _open.Open;
  }
});

_Object$defineProperty(exports, "Toggle", {
  enumerable: true,
  get: function get() {
    return _toggle.Toggle;
  }
});

var _close = __webpack_require__(322);

var _open = __webpack_require__(323);

var _toggle = __webpack_require__(324);

/***/ }),
/* 322 */
/***/ (function(module, exports, __webpack_require__) {

"use strict";


var _interopRequireDefault = __webpack_require__(0);

var _Object$defineProperty = __webpack_require__(1);

_Object$defineProperty(exports, "__esModule", {
  value: true
});

exports.default = exports.Close = void 0;

var _classCallCheck2 = _interopRequireDefault(__webpack_require__(2));

var _createClass2 = _interopRequireDefault(__webpack_require__(3));

var _inherits2 = _interopRequireDefault(__webpack_require__(4));

var _createSuper2 = _interopRequireDefault(__webpack_require__(5));

var _commandBase = _interopRequireDefault(__webpack_require__(21));

var Close = /*#__PURE__*/function (_CommandBase) {
  (0, _inherits2.default)(Close, _CommandBase);

  var _super = (0, _createSuper2.default)(Close);

  function Close() {
    (0, _classCallCheck2.default)(this, Close);
    return _super.apply(this, arguments);
  }

  (0, _createClass2.default)(Close, [{
    key: "apply",
    value: function apply() {
      this.component.close();
    }
  }]);
  return Close;
}(_commandBase.default);

exports.Close = Close;
var _default = Close;
exports.default = _default;

/***/ }),
/* 323 */
/***/ (function(module, exports, __webpack_require__) {

"use strict";


var _interopRequireDefault = __webpack_require__(0);

var _Object$defineProperty = __webpack_require__(1);

_Object$defineProperty(exports, "__esModule", {
  value: true
});

exports.default = exports.Open = void 0;

var _classCallCheck2 = _interopRequireDefault(__webpack_require__(2));

var _createClass2 = _interopRequireDefault(__webpack_require__(3));

var _inherits2 = _interopRequireDefault(__webpack_require__(4));

var _createSuper2 = _interopRequireDefault(__webpack_require__(5));

var _commandBase = _interopRequireDefault(__webpack_require__(21));

var Open = /*#__PURE__*/function (_CommandBase) {
  (0, _inherits2.default)(Open, _CommandBase);

  var _super = (0, _createSuper2.default)(Open);

  function Open() {
    (0, _classCallCheck2.default)(this, Open);
    return _super.apply(this, arguments);
  }

  (0, _createClass2.default)(Open, [{
    key: "apply",
    value: function apply() {
      $e.route(this.component.getNamespace());
    }
  }]);
  return Open;
}(_commandBase.default);

exports.Open = Open;
var _default = Open;
exports.default = _default;

/***/ }),
/* 324 */
/***/ (function(module, exports, __webpack_require__) {

"use strict";


var _interopRequireDefault = __webpack_require__(0);

var _Object$defineProperty = __webpack_require__(1);

_Object$defineProperty(exports, "__esModule", {
  value: true
});

exports.default = exports.Toggle = void 0;

var _classCallCheck2 = _interopRequireDefault(__webpack_require__(2));

var _createClass2 = _interopRequireDefault(__webpack_require__(3));

var _inherits2 = _interopRequireDefault(__webpack_require__(4));

var _createSuper2 = _interopRequireDefault(__webpack_require__(5));

var _commandBase = _interopRequireDefault(__webpack_require__(21));

var Toggle = /*#__PURE__*/function (_CommandBase) {
  (0, _inherits2.default)(Toggle, _CommandBase);

  var _super = (0, _createSuper2.default)(Toggle);

  function Toggle() {
    (0, _classCallCheck2.default)(this, Toggle);
    return _super.apply(this, arguments);
  }

  (0, _createClass2.default)(Toggle, [{
    key: "apply",
    value: function apply() {
      if (this.component.isOpen) {
        this.component.close();
      } else {
        $e.route(this.component.getNamespace());
      }
    }
  }]);
  return Toggle;
}(_commandBase.default);

exports.Toggle = Toggle;
var _default = Toggle;
exports.default = _default;

/***/ }),
/* 325 */
/***/ (function(module, exports, __webpack_require__) {

"use strict";
/**
 * Copyright (c) 2013-present, Facebook, Inc.
 *
 * This source code is licensed under the MIT license found in the
 * LICENSE file in the root directory of this source tree.
 */



var ReactPropTypesSecret = __webpack_require__(326);

function emptyFunction() {}
function emptyFunctionWithReset() {}
emptyFunctionWithReset.resetWarningCache = emptyFunction;

module.exports = function() {
  function shim(props, propName, componentName, location, propFullName, secret) {
    if (secret === ReactPropTypesSecret) {
      // It is still safe when called from React.
      return;
    }
    var err = new Error(
      'Calling PropTypes validators directly is not supported by the `prop-types` package. ' +
      'Use PropTypes.checkPropTypes() to call them. ' +
      'Read more at http://fb.me/use-check-prop-types'
    );
    err.name = 'Invariant Violation';
    throw err;
  };
  shim.isRequired = shim;
  function getShim() {
    return shim;
  };
  // Important!
  // Keep this list in sync with production version in `./factoryWithTypeCheckers.js`.
  var ReactPropTypes = {
    array: shim,
    bool: shim,
    func: shim,
    number: shim,
    object: shim,
    string: shim,
    symbol: shim,

    any: shim,
    arrayOf: getShim,
    element: shim,
    elementType: shim,
    instanceOf: getShim,
    node: shim,
    objectOf: getShim,
    oneOf: getShim,
    oneOfType: getShim,
    shape: getShim,
    exact: getShim,

    checkPropTypes: emptyFunctionWithReset,
    resetWarningCache: emptyFunction
  };

  ReactPropTypes.PropTypes = ReactPropTypes;

  return ReactPropTypes;
};


/***/ }),
/* 326 */
/***/ (function(module, exports, __webpack_require__) {

"use strict";
/**
 * Copyright (c) 2013-present, Facebook, Inc.
 *
 * This source code is licensed under the MIT license found in the
 * LICENSE file in the root directory of this source tree.
 */



var ReactPropTypesSecret = 'SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED';

module.exports = ReactPropTypesSecret;


/***/ }),
/* 327 */
/***/ (function(module, exports) {

module.exports = ReactDOM;

/***/ }),
/* 328 */
/***/ (function(module, exports, __webpack_require__) {

"use strict";


var _interopRequireDefault = __webpack_require__(0);

__webpack_require__(147);

__webpack_require__(117);

__webpack_require__(72);

var _controlsStack = _interopRequireDefault(__webpack_require__(368));

module.exports = Marionette.CompositeView.extend({
  template: Marionette.TemplateCache.get('#tmpl-elementor-repeater-row'),
  className: 'elementor-repeater-fields',
  ui: {
    duplicateButton: '.elementor-repeater-tool-duplicate',
    editButton: '.elementor-repeater-tool-edit',
    removeButton: '.elementor-repeater-tool-remove',
    itemTitle: '.elementor-repeater-row-item-title'
  },
  behaviors: {
    HandleInnerTabs: {
      behaviorClass: __webpack_require__(329)
    }
  },
  triggers: {
    'click @ui.removeButton': 'click:remove',
    'click @ui.duplicateButton': 'click:duplicate',
    'click @ui.itemTitle': 'click:edit'
  },
  modelEvents: {
    change: 'onModelChange'
  },
  templateHelpers: function templateHelpers() {
    return {
      itemIndex: this.getOption('itemIndex'),
      itemActions: this.getOption('itemActions')
    };
  },
  childViewContainer: '.elementor-repeater-row-controls',
  getChildView: function getChildView(item) {
    var controlType = item.get('type');
    return elementor.getControlView(controlType);
  },
  childViewOptions: function childViewOptions() {
    return {
      container: this.options.container
    };
  },
  updateIndex: function updateIndex(newIndex) {
    this.itemIndex = newIndex;
  },
  setTitle: function setTitle() {
    var titleField = this.getOption('titleField');
    var title = '';

    if (titleField) {
      title = Marionette.TemplateCache.prototype.compileTemplate(titleField)(this.model.parseDynamicSettings());
    }

    if (!title) {
      title = elementor.translate('Item #%s', [this.getOption('itemIndex')]);
    }

    this.ui.itemTitle.html(title);
  },
  toggleSort: function toggleSort(enable) {
    this.$el.toggleClass('elementor-repeater-row--disable-sort', !enable);
  },
  initialize: function initialize(options) {
    this.itemIndex = 0; // Collection for Controls list

    this.collection = new Backbone.Collection(_.values(elementor.mergeControlsSettings(options.controlFields)));
  },
  onRender: function onRender() {
    this.setTitle();

    _controlsStack.default.handlePopovers(this);
  },
  onModelChange: function onModelChange() {
    if (this.getOption('titleField')) {
      this.setTitle();
    }
  },
  onChildviewResponsiveSwitcherClick: function onChildviewResponsiveSwitcherClick(childView, device) {
    if ('desktop' === device) {
      elementor.getPanelView().getCurrentPageView().$el.toggleClass('elementor-responsive-switchers-open');
    }
  }
});

/***/ }),
/* 329 */
/***/ (function(module, exports, __webpack_require__) {

"use strict";


__webpack_require__(25);

var InnerTabsBehavior;
InnerTabsBehavior = Marionette.Behavior.extend({
  onRenderCollection: function onRenderCollection() {
    this.handleInnerTabs(this.view);
  },
  handleInnerTabs: function handleInnerTabs(parent) {
    var closedClass = 'elementor-tab-close',
        activeClass = 'elementor-tab-active',
        tabsWrappers = parent.children.filter(function (view) {
      return 'tabs' === view.model.get('type');
    });

    _.each(tabsWrappers, function (view) {
      view.$el.find('.elementor-control-content').remove();
      var tabsId = view.model.get('name'),
          tabs = parent.children.filter(function (childView) {
        return 'tab' === childView.model.get('type') && childView.model.get('tabs_wrapper') === tabsId;
      });

      _.each(tabs, function (childView, index) {
        view._addChildView(childView);

        var tabId = childView.model.get('name'),
            controlsUnderTab = parent.children.filter(function (controlView) {
          return tabId === controlView.model.get('inner_tab');
        });

        if (0 === index) {
          childView.$el.addClass(activeClass);
        } else {
          _.each(controlsUnderTab, function (controlView) {
            controlView.$el.addClass(closedClass);
          });
        }
      });
    });
  },
  onChildviewControlTabClicked: function onChildviewControlTabClicked(childView) {
    var closedClass = 'elementor-tab-close',
        activeClass = 'elementor-tab-active',
        tabClicked = childView.model.get('name'),
        childrenUnderTab = this.view.children.filter(function (view) {
      return 'tab' !== view.model.get('type') && childView.model.get('tabs_wrapper') === view.model.get('tabs_wrapper');
    }),
        siblingTabs = this.view.children.filter(function (view) {
      return 'tab' === view.model.get('type') && childView.model.get('tabs_wrapper') === view.model.get('tabs_wrapper');
    });

    _.each(siblingTabs, function (view) {
      view.$el.removeClass(activeClass);
    });

    childView.$el.addClass(activeClass);

    _.each(childrenUnderTab, function (view) {
      if (view.model.get('inner_tab') === tabClicked) {
        view.$el.removeClass(closedClass);
      } else {
        view.$el.addClass(closedClass);
      }
    });

    elementor.getPanelView().updateScrollbar();
  }
});
module.exports = InnerTabsBehavior;

/***/ }),
/* 330 */
/***/ (function(module, exports, __webpack_require__) {

// Works with __proto__ only. Old v8 can't work with null proto objects.
/* eslint-disable no-proto */
var isObject = __webpack_require__(30);
var anObject = __webpack_require__(18);
var check = function (O, proto) {
  anObject(O);
  if (!isObject(proto) && proto !== null) throw TypeError(proto + ": can't set as prototype!");
};
module.exports = {
  set: Object.setPrototypeOf || ('__proto__' in {} ? // eslint-disable-line
    function (test, buggy, set) {
      try {
        set = __webpack_require__(73)(Function.call, __webpack_require__(311).f(Object.prototype, '__proto__').set, 2);
        set(test, []);
        buggy = !(test instanceof Array);
      } catch (e) { buggy = true; }
      return function setPrototypeOf(O, proto) {
        check(O, proto);
        if (buggy) O.__proto__ = proto;
        else set(O, proto);
        return O;
      };
    }({}, false) : undefined),
  check: check
};


/***/ }),
/* 331 */
/***/ (function(module, exports) {

exports.f = {}.propertyIsEnumerable;


/***/ }),
/* 332 */
/***/ (function(module, exports, __webpack_require__) {

"use strict";


var _interopRequireDefault = __webpack_require__(0);

__webpack_require__(183);

__webpack_require__(72);

__webpack_require__(58);

__webpack_require__(119);

__webpack_require__(80);

var _keys = _interopRequireDefault(__webpack_require__(23));

(function ($) {
  var Stylesheet = function Stylesheet() {
    var self = this,
        rules = {},
        rawCSS = {},
        devices = {};

    var getDeviceMaxValue = function getDeviceMaxValue(deviceName) {
      var deviceNames = (0, _keys.default)(devices),
          deviceNameIndex = deviceNames.indexOf(deviceName),
          nextIndex = deviceNameIndex + 1;

      if (nextIndex >= deviceNames.length) {
        throw new RangeError('Max value for this device is out of range.');
      }

      return devices[deviceNames[nextIndex]] - 1;
    };

    var queryToHash = function queryToHash(query) {
      var hash = [];
      $.each(query, function (endPoint) {
        hash.push(endPoint + '_' + this);
      });
      return hash.join('-');
    };

    var hashToQuery = function hashToQuery(hash) {
      var query = {};
      hash = hash.split('-').filter(String);
      hash.forEach(function (singleQuery) {
        var queryParts = singleQuery.split('_'),
            endPoint = queryParts[0],
            deviceName = queryParts[1];
        query[endPoint] = 'max' === endPoint ? getDeviceMaxValue(deviceName) : devices[deviceName];
      });
      return query;
    };

    var addQueryHash = function addQueryHash(queryHash) {
      rules[queryHash] = {};
      var hashes = (0, _keys.default)(rules);

      if (hashes.length < 2) {
        return;
      } // Sort the devices from narrowest to widest


      hashes.sort(function (a, b) {
        if ('all' === a) {
          return -1;
        }

        if ('all' === b) {
          return 1;
        }

        var aQuery = hashToQuery(a),
            bQuery = hashToQuery(b);
        return bQuery.max - aQuery.max;
      });
      var sortedRules = {};
      hashes.forEach(function (deviceName) {
        sortedRules[deviceName] = rules[deviceName];
      });
      rules = sortedRules;
    };

    var getQueryHashStyleFormat = function getQueryHashStyleFormat(queryHash) {
      var query = hashToQuery(queryHash),
          styleFormat = [];
      $.each(query, function (endPoint) {
        styleFormat.push('(' + endPoint + '-width:' + this + 'px)');
      });
      return '@media' + styleFormat.join(' and ');
    };

    this.addDevice = function (newDeviceName, deviceValue) {
      devices[newDeviceName] = deviceValue;
      var deviceNames = (0, _keys.default)(devices);

      if (deviceNames.length < 2) {
        return self;
      } // Sort the devices from narrowest to widest


      deviceNames.sort(function (a, b) {
        return devices[a] - devices[b];
      });
      var sortedDevices = {};
      deviceNames.forEach(function (deviceName) {
        sortedDevices[deviceName] = devices[deviceName];
      });
      devices = sortedDevices;
      return self;
    };

    this.addRawCSS = function (key, css) {
      rawCSS[key] = css;
    };

    this.addRules = function (selector, styleRules, query) {
      var queryHash = 'all';

      if (!_.isEmpty(query)) {
        queryHash = queryToHash(query);
      }

      if (!rules[queryHash]) {
        addQueryHash(queryHash);
      }

      if (!styleRules) {
        var parsedRules = selector.match(/[^{]+\{[^}]+}/g);
        $.each(parsedRules, function () {
          var parsedRule = this.match(/([^{]+)\{([^}]+)}/);

          if (parsedRule) {
            self.addRules(parsedRule[1].trim(), parsedRule[2].trim(), query);
          }
        });
        return;
      }

      if (!rules[queryHash][selector]) {
        rules[queryHash][selector] = {};
      }

      if ('string' === typeof styleRules) {
        styleRules = styleRules.split(';').filter(String);
        var orderedRules = {};

        try {
          $.each(styleRules, function () {
            var property = this.split(/:(.*)?/);
            orderedRules[property[0].trim()] = property[1].trim().replace(';', '');
          });
        } catch (error) {
          // At least one of the properties is incorrect
          return;
        }

        styleRules = orderedRules;
      }

      $.extend(rules[queryHash][selector], styleRules);
      return self;
    };

    this.getRules = function () {
      return rules;
    };

    this.empty = function () {
      rules = {};
      rawCSS = {};
    };

    this.toString = function () {
      var styleText = '';
      $.each(rules, function (queryHash) {
        var deviceText = Stylesheet.parseRules(this);

        if ('all' !== queryHash) {
          deviceText = getQueryHashStyleFormat(queryHash) + '{' + deviceText + '}';
        }

        styleText += deviceText;
      });
      $.each(rawCSS, function () {
        styleText += this;
      });
      return styleText;
    };
  };

  Stylesheet.parseRules = function (rules) {
    var parsedRules = '';
    $.each(rules, function (selector) {
      var selectorContent = Stylesheet.parseProperties(this);

      if (selectorContent) {
        parsedRules += selector + '{' + selectorContent + '}';
      }
    });
    return parsedRules;
  };

  Stylesheet.parseProperties = function (properties) {
    var parsedProperties = '';
    $.each(properties, function (propertyKey) {
      if (this) {
        parsedProperties += propertyKey + ':' + this + ';';
      }
    });
    return parsedProperties;
  };

  module.exports = Stylesheet;
})(jQuery);

/***/ }),
/* 333 */
/***/ (function(module, exports, __webpack_require__) {

"use strict";


var _interopRequireDefault = __webpack_require__(0);

var _keys = _interopRequireDefault(__webpack_require__(23));

module.exports = Marionette.CompositeView.extend({
  templateHelpers: function templateHelpers() {
    return {
      view: this
    };
  },
  getBehavior: function getBehavior(name) {
    return this._behaviors[(0, _keys.default)(this.behaviors()).indexOf(name)];
  },
  initialize: function initialize() {
    this.collection = this.model.get('elements');
  },
  addChildModel: function addChildModel(model, options) {
    return this.collection.add(model, options, true);
  },
  addElement: function addElement(data, options) {
    if (this.isCollectionFilled()) {
      return;
    }

    options = jQuery.extend({
      trigger: false,
      edit: true,
      onBeforeAdd: null,
      onAfterAdd: null
    }, options);
    var childTypes = this.getChildType();
    var newItem, elType;

    if (data instanceof Backbone.Model) {
      newItem = data;
      elType = newItem.get('elType');
    } else {
      newItem = {
        id: elementorCommon.helpers.getUniqueId(),
        elType: childTypes[0],
        settings: {},
        elements: []
      };

      if (data) {
        jQuery.extend(newItem, data);
      }

      elType = newItem.elType;
    }

    if (-1 === childTypes.indexOf(elType)) {
      return this.children.last().addElement(newItem, options);
    }

    if (options.clone) {
      newItem = this.cloneItem(newItem);
    }

    if (options.trigger) {
      elementor.channels.data.trigger(options.trigger.beforeAdd, newItem);
    }

    if (options.onBeforeAdd) {
      options.onBeforeAdd();
    }

    var newModel = this.addChildModel(newItem, {
      at: options.at
    }),
        newView = this.children.findByModel(newModel);

    if (options.onAfterAdd) {
      options.onAfterAdd(newModel, newView);
    }

    if (options.trigger) {
      elementor.channels.data.trigger(options.trigger.afterAdd, newItem);
    }

    if (options.edit && elementor.documents.getCurrent().history.getActive()) {
      // Ensure container is created. TODO: Open editor via UI hook after `document/elements/create`.
      newView.getContainer();
      newModel.trigger('request:edit');
    }

    return newView;
  },
  addChildElement: function addChildElement(data, options) {
    elementorCommon.helpers.softDeprecated('addChildElement', '2.8.0', "$e.run( 'document/elements/create' )");

    if (Object !== data.constructor) {
      data = jQuery.extend({}, data);
    }

    $e.run('document/elements/create', {
      container: this.getContainer(),
      model: data,
      options: options
    });
  },
  cloneItem: function cloneItem(item) {
    var self = this;

    if (item instanceof Backbone.Model) {
      return item.clone();
    }

    item.id = elementorCommon.helpers.getUniqueId();
    item.settings._element_id = '';
    item.elements.forEach(function (childItem, index) {
      item.elements[index] = self.cloneItem(childItem);
    });
    return item;
  },
  lookup: function lookup() {
    var element = this;

    if (element.isDisconnected()) {
      element = $e.components.get('document').utils.findViewById(element.model.id);
    }

    return element;
  },
  isDisconnected: function isDisconnected() {
    return this.isDestroyed || !this.el.isConnected;
  },
  isCollectionFilled: function isCollectionFilled() {
    return false;
  }
});

/***/ }),
/* 334 */
/***/ (function(module, exports, __webpack_require__) {

"use strict";


var anObject = __webpack_require__(18);
var sameValue = __webpack_require__(386);
var regExpExec = __webpack_require__(94);

// @@search logic
__webpack_require__(95)('search', 1, function (defined, SEARCH, $search, maybeCallNative) {
  return [
    // `String.prototype.search` method
    // https://tc39.github.io/ecma262/#sec-string.prototype.search
    function search(regexp) {
      var O = defined(this);
      var fn = regexp == undefined ? undefined : regexp[SEARCH];
      return fn !== undefined ? fn.call(regexp, O) : new RegExp(regexp)[SEARCH](String(O));
    },
    // `RegExp.prototype[@@search]` method
    // https://tc39.github.io/ecma262/#sec-regexp.prototype-@@search
    function (regexp) {
      var res = maybeCallNative($search, regexp, this);
      if (res.done) return res.value;
      var rx = anObject(regexp);
      var S = String(this);
      var previousLastIndex = rx.lastIndex;
      if (!sameValue(previousLastIndex, 0)) rx.lastIndex = 0;
      var result = regExpExec(rx, S);
      if (!sameValue(rx.lastIndex, previousLastIndex)) rx.lastIndex = previousLastIndex;
      return result === null ? -1 : result.index;
    }
  ];
});


/***/ }),
/* 335 */
/***/ (function(module, exports, __webpack_require__) {

"use strict";


var ControlsCSSParser = __webpack_require__(293);

module.exports = elementorModules.ViewModule.extend({
  model: null,
  hasChange: false,
  changeCallbacks: {},
  addChangeCallback: function addChangeCallback(attribute, callback) {
    this.changeCallbacks[attribute] = callback;
  },
  bindEvents: function bindEvents() {
    elementor.on('document:loaded', this.onElementorDocumentLoaded);
    this.model.on('change', this.onModelChange);
  },
  unbindEvents: function unbindEvents() {
    elementor.off('document:loaded', this.onElementorDocumentLoaded);
  },
  addPanelPage: function addPanelPage() {
    var name = this.getSettings('name');
    elementor.getPanelView().addPage(name + '_settings', {
      view: elementor.settings.panelPages[name] || elementor.settings.panelPages.base,
      title: this.getSettings('panelPage.title'),
      options: {
        editedView: this.getEditedView(),
        model: this.model,
        controls: this.model.controls,
        name: name
      }
    });
  },
  getContainerId: function getContainerId() {
    return this.getSettings('name') + '_settings';
  },
  // Emulate an element view/model structure with the parts needed for a container.
  getEditedView: function getEditedView() {
    var id = this.getContainerId(),
        editModel = new Backbone.Model({
      id: id,
      elType: id,
      settings: this.model
    });
    var container = new elementorModules.editor.Container({
      type: id,
      id: editModel.id,
      model: editModel,
      settings: editModel.get('settings'),
      view: false,
      label: this.getSettings('panelPage').title,
      controls: this.model.controls,
      document: this.getDocument(),
      renderer: false
    });
    return {
      getContainer: function getContainer() {
        return container;
      },
      getEditModel: function getEditModel() {
        return editModel;
      },
      model: editModel
    };
  },
  getDocument: function getDocument() {
    return false;
  },
  updateStylesheet: function updateStylesheet(keepOldEntries) {
    var controlsCSS = this.getControlsCSS();

    if (!keepOldEntries) {
      controlsCSS.stylesheet.empty();
    }

    controlsCSS.addStyleRules(this.model.getStyleControls(), this.model.attributes, this.model.controls, [/{{WRAPPER}}/g], [this.getSettings('cssWrapperSelector')]);
    controlsCSS.addStyleToDocument({
      // Ensures we don't override default global style
      at: 'before',
      of: '#elementor-style-e-global-style'
    });
  },
  initModel: function initModel() {
    this.model = new elementorModules.editor.elements.models.BaseSettings(this.getSettings('settings'), {
      controls: this.getSettings('controls')
    });
  },
  getStyleId: function getStyleId() {
    return this.getSettings('name');
  },
  initControlsCSSParser: function initControlsCSSParser() {
    var controlsCSS;

    this.destroyControlsCSS = function () {
      controlsCSS.removeStyleFromDocument();
    };

    this.getControlsCSS = function () {
      if (!controlsCSS) {
        controlsCSS = new ControlsCSSParser({
          id: this.getStyleId(),
          settingsModel: this.model,
          context: this.getEditedView()
        });
      }

      return controlsCSS;
    };
  },
  getDataToSave: function getDataToSave(data) {
    return data;
  },
  save: function save(callback) {
    var self = this;

    if (!self.hasChange) {
      return;
    }

    var settings = this.model.toJSON({
      remove: ['default']
    }),
        data = this.getDataToSave({
      data: settings
    });

    if (!elementorCommonConfig.isTesting) {
      NProgress.start();
    }

    elementorCommon.ajax.addRequest('save_' + this.getSettings('name') + '_settings', {
      data: data,
      success: function success() {
        if (!elementorCommonConfig.isTesting) {
          NProgress.done();
        }

        self.setSettings('settings', settings);
        self.hasChange = false;

        if (callback) {
          callback.apply(self, arguments);
        }
      },
      error: function error() {
        alert('An error occurred');
      }
    });
  },
  onInit: function onInit() {
    this.initModel();
    this.initControlsCSSParser();
    this.addPanelMenuItem();
    this.debounceSave = _.debounce(this.save, 3000);
    elementorModules.ViewModule.prototype.onInit.apply(this, arguments);
  },

  /**
   * BC for custom settings without a JS component.
   */
  addPanelMenuItem: function addPanelMenuItem() {
    var menuSettings = this.getSettings('panelPage.menu');

    if (!menuSettings) {
      return;
    }

    var namespace = 'panel/' + this.getSettings('name') + '-settings',
        menuItemOptions = {
      icon: menuSettings.icon,
      title: this.getSettings('panelPage.title'),
      type: 'page',
      pageName: this.getSettings('name') + '_settings',
      callback: function callback() {
        return $e.route("".concat(namespace, "/settings"));
      }
    };
    $e.bc.ensureTab(namespace, 'settings', menuItemOptions.pageName);
    elementor.modules.layouts.panel.pages.menu.Menu.addItem(menuItemOptions, 'settings', menuSettings.beforeItem);
  },
  onModelChange: function onModelChange(model) {
    var self = this;
    self.hasChange = true;
    this.getControlsCSS().stylesheet.empty();

    _.each(model.changed, function (value, key) {
      if (self.changeCallbacks[key]) {
        self.changeCallbacks[key].call(self, value);
      }
    });

    self.updateStylesheet(true);
    self.debounceSave();
  },
  onElementorDocumentLoaded: function onElementorDocumentLoaded() {
    this.updateStylesheet();
    this.addPanelPage();

    if (!elementor.userCan('design')) {
      $e.route('panel/page-settings/settings');
    }
  },
  destroy: function destroy() {
    this.unbindEvents();
    this.model.destroy();
  }
});

/***/ }),
/* 336 */,
/* 337 */,
/* 338 */,
/* 339 */,
/* 340 */,
/* 341 */,
/* 342 */,
/* 343 */,
/* 344 */,
/* 345 */,
/* 346 */,
/* 347 */,
/* 348 */,
/* 349 */
/***/ (function(module, exports, __webpack_require__) {

"use strict";


var _interopRequireDefault = __webpack_require__(0);

var _Object$defineProperty = __webpack_require__(1);

_Object$defineProperty(exports, "__esModule", {
  value: true
});

exports.default = void 0;

var _classCallCheck2 = _interopRequireDefault(__webpack_require__(2));

var _createClass2 = _interopRequireDefault(__webpack_require__(3));

var _component = _interopRequireDefault(__webpack_require__(442));

var _component2 = _interopRequireDefault(__webpack_require__(443));

var _component3 = _interopRequireDefault(__webpack_require__(444));

var _panelPage = _interopRequireDefault(__webpack_require__(450));

var Manager = /*#__PURE__*/function () {
  function Manager() {
    (0, _classCallCheck2.default)(this, Manager);
    elementorCommon.elements.$window.on('elementor:loaded', this.init);
  }

  (0, _createClass2.default)(Manager, [{
    key: "init",
    value: function init() {
      $e.components.register(new _component.default());
      $e.components.register(new _component2.default());
      $e.components.register(new _component3.default());
      elementor.on('panel:init', function () {
        elementor.getPanelView().addPage('historyPage', {
          view: _panelPage.default,
          title: elementor.translate('history')
        });
      });
    }
  }, {
    key: "history",
    get: function get() {
      elementorCommon.helpers.softDeprecated('elementor.history.history', '2.9.0', 'elementor.documents.getCurrent().history');
      return elementor.documents.getCurrent().history;
    }
  }, {
    key: "revisions",
    get: function get() {
      elementorCommon.helpers.softDeprecated('elementor.history.revisions', '2.9.0', 'elementor.documents.getCurrent().revisions');
      return elementor.documents.getCurrent().revisions;
    }
  }]);
  return Manager;
}();

exports.default = Manager;

/***/ }),
/* 350 */
/***/ (function(module, exports, __webpack_require__) {

"use strict";


var _Object$defineProperty = __webpack_require__(1);

_Object$defineProperty(exports, "__esModule", {
  value: true
});

_Object$defineProperty(exports, "Do", {
  enumerable: true,
  get: function get() {
    return _do.Do;
  }
});

_Object$defineProperty(exports, "Redo", {
  enumerable: true,
  get: function get() {
    return _redo.Redo;
  }
});

_Object$defineProperty(exports, "Undo", {
  enumerable: true,
  get: function get() {
    return _undo.Undo;
  }
});

_Object$defineProperty(exports, "UndoAll", {
  enumerable: true,
  get: function get() {
    return _undoAll.UndoAll;
  }
});

var _do = __webpack_require__(351);

var _redo = __webpack_require__(352);

var _undo = __webpack_require__(353);

var _undoAll = __webpack_require__(354);

/***/ }),
/* 351 */
/***/ (function(module, exports, __webpack_require__) {

"use strict";


var _interopRequireDefault = __webpack_require__(0);

var _Object$defineProperty = __webpack_require__(1);

_Object$defineProperty(exports, "__esModule", {
  value: true
});

exports.default = exports.Do = void 0;

var _classCallCheck2 = _interopRequireDefault(__webpack_require__(2));

var _createClass2 = _interopRequireDefault(__webpack_require__(3));

var _inherits2 = _interopRequireDefault(__webpack_require__(4));

var _createSuper2 = _interopRequireDefault(__webpack_require__(5));

var _commandBase = _interopRequireDefault(__webpack_require__(21));

var Do = /*#__PURE__*/function (_CommandBase) {
  (0, _inherits2.default)(Do, _CommandBase);

  var _super = (0, _createSuper2.default)(Do);

  function Do() {
    (0, _classCallCheck2.default)(this, Do);
    return _super.apply(this, arguments);
  }

  (0, _createClass2.default)(Do, [{
    key: "apply",
    value: function apply(args) {
      var index = args.index;
      return elementor.documents.getCurrent().history.doItem(index);
    }
  }]);
  return Do;
}(_commandBase.default);

exports.Do = Do;
var _default = Do;
exports.default = _default;

/***/ }),
/* 352 */
/***/ (function(module, exports, __webpack_require__) {

"use strict";


var _interopRequireDefault = __webpack_require__(0);

var _Object$defineProperty = __webpack_require__(1);

_Object$defineProperty(exports, "__esModule", {
  value: true
});

exports.default = exports.Redo = void 0;

var _classCallCheck2 = _interopRequireDefault(__webpack_require__(2));

var _createClass2 = _interopRequireDefault(__webpack_require__(3));

var _inherits2 = _interopRequireDefault(__webpack_require__(4));

var _createSuper2 = _interopRequireDefault(__webpack_require__(5));

var _commandBase = _interopRequireDefault(__webpack_require__(21));

var Redo = /*#__PURE__*/function (_CommandBase) {
  (0, _inherits2.default)(Redo, _CommandBase);

  var _super = (0, _createSuper2.default)(Redo);

  function Redo() {
    (0, _classCallCheck2.default)(this, Redo);
    return _super.apply(this, arguments);
  }

  (0, _createClass2.default)(Redo, [{
    key: "apply",
    value: function apply() {
      elementor.documents.getCurrent().history.navigate(true);
    }
  }]);
  return Redo;
}(_commandBase.default);

exports.Redo = Redo;
var _default = Redo;
exports.default = _default;

/***/ }),
/* 353 */
/***/ (function(module, exports, __webpack_require__) {

"use strict";


var _interopRequireDefault = __webpack_require__(0);

var _Object$defineProperty = __webpack_require__(1);

_Object$defineProperty(exports, "__esModule", {
  value: true
});

exports.default = exports.Undo = void 0;

var _classCallCheck2 = _interopRequireDefault(__webpack_require__(2));

var _createClass2 = _interopRequireDefault(__webpack_require__(3));

var _inherits2 = _interopRequireDefault(__webpack_require__(4));

var _createSuper2 = _interopRequireDefault(__webpack_require__(5));

var _commandBase = _interopRequireDefault(__webpack_require__(21));

var Undo = /*#__PURE__*/function (_CommandBase) {
  (0, _inherits2.default)(Undo, _CommandBase);

  var _super = (0, _createSuper2.default)(Undo);

  function Undo() {
    (0, _classCallCheck2.default)(this, Undo);
    return _super.apply(this, arguments);
  }

  (0, _createClass2.default)(Undo, [{
    key: "apply",
    value: function apply() {
      elementor.documents.getCurrent().history.navigate();
    }
  }]);
  return Undo;
}(_commandBase.default);

exports.Undo = Undo;
var _default = Undo;
exports.default = _default;

/***/ }),
/* 354 */
/***/ (function(module, exports, __webpack_require__) {

"use strict";


var _interopRequireDefault = __webpack_require__(0);

var _Object$defineProperty = __webpack_require__(1);

_Object$defineProperty(exports, "__esModule", {
  value: true
});

exports.default = exports.UndoAll = void 0;

var _classCallCheck2 = _interopRequireDefault(__webpack_require__(2));

var _createClass2 = _interopRequireDefault(__webpack_require__(3));

var _inherits2 = _interopRequireDefault(__webpack_require__(4));

var _createSuper2 = _interopRequireDefault(__webpack_require__(5));

var _commandBase = _interopRequireDefault(__webpack_require__(21));

var UndoAll = /*#__PURE__*/function (_CommandBase) {
  (0, _inherits2.default)(UndoAll, _CommandBase);

  var _super = (0, _createSuper2.default)(UndoAll);

  function UndoAll() {
    (0, _classCallCheck2.default)(this, UndoAll);
    return _super.apply(this, arguments);
  }

  (0, _createClass2.default)(UndoAll, [{
    key: "apply",
    value: function apply(args) {
      var document = args.document;
      document.history.doItem(document.history.getItems().length - 1);
    }
  }]);
  return UndoAll;
}(_commandBase.default);

exports.UndoAll = UndoAll;
var _default = UndoAll;
exports.default = _default;

/***/ }),
/* 355 */
/***/ (function(module, exports, __webpack_require__) {

"use strict";


var _interopRequireDefault = __webpack_require__(0);

var _Object$defineProperty = __webpack_require__(1);

_Object$defineProperty(exports, "__esModule", {
  value: true
});

exports.default = void 0;

var _classCallCheck2 = _interopRequireDefault(__webpack_require__(2));

var _createClass2 = _interopRequireDefault(__webpack_require__(3));

var _inherits2 = _interopRequireDefault(__webpack_require__(4));

var _createSuper2 = _interopRequireDefault(__webpack_require__(5));

var _header = _interopRequireDefault(__webpack_require__(356));

var _logo = _interopRequireDefault(__webpack_require__(357));

var _loading = _interopRequireDefault(__webpack_require__(358));

var _default = /*#__PURE__*/function (_Marionette$LayoutVie) {
  (0, _inherits2.default)(_default, _Marionette$LayoutVie);

  var _super = (0, _createSuper2.default)(_default);

  function _default() {
    (0, _classCallCheck2.default)(this, _default);
    return _super.apply(this, arguments);
  }

  (0, _createClass2.default)(_default, [{
    key: "el",
    value: function el() {
      return this.getModal().getElements('widget');
    }
  }, {
    key: "regions",
    value: function regions() {
      return {
        modalHeader: '.dialog-header',
        modalContent: '.dialog-lightbox-content',
        modalLoading: '.dialog-lightbox-loading'
      };
    }
  }, {
    key: "initialize",
    value: function initialize() {
      this.modalHeader.show(new _header.default(this.getHeaderOptions()));
    }
  }, {
    key: "getModal",
    value: function getModal() {
      if (!this.modal) {
        this.initModal();
      }

      return this.modal;
    }
  }, {
    key: "initModal",
    value: function initModal() {
      var modalOptions = {
        className: 'elementor-templates-modal',
        closeButton: false,
        draggable: false,
        hide: {
          onOutsideClick: false,
          onEscKeyPress: false
        }
      };
      jQuery.extend(true, modalOptions, this.getModalOptions());
      this.modal = elementorCommon.dialogsManager.createWidget('lightbox', modalOptions);
      this.modal.getElements('message').append(this.modal.addElement('content'), this.modal.addElement('loading'));

      if (modalOptions.draggable) {
        this.draggableModal();
      }
    }
  }, {
    key: "showModal",
    value: function showModal() {
      this.getModal().show();
    }
  }, {
    key: "hideModal",
    value: function hideModal() {
      this.getModal().hide();
    }
  }, {
    key: "draggableModal",
    value: function draggableModal() {
      var $modalWidgetContent = this.getModal().getElements('widgetContent');
      $modalWidgetContent.draggable({
        containment: 'parent',
        stop: function stop() {
          $modalWidgetContent.height('');
        }
      });
      $modalWidgetContent.css('position', 'absolute');
    }
  }, {
    key: "getModalOptions",
    value: function getModalOptions() {
      return {};
    }
  }, {
    key: "getLogoOptions",
    value: function getLogoOptions() {
      return {};
    }
  }, {
    key: "getHeaderOptions",
    value: function getHeaderOptions() {
      return {
        closeType: 'normal'
      };
    }
  }, {
    key: "getHeaderView",
    value: function getHeaderView() {
      return this.modalHeader.currentView;
    }
  }, {
    key: "showLoadingView",
    value: function showLoadingView() {
      this.modalLoading.show(new _loading.default());
      this.modalLoading.$el.show();
      this.modalContent.$el.hide();
    }
  }, {
    key: "hideLoadingView",
    value: function hideLoadingView() {
      this.modalContent.$el.show();
      this.modalLoading.$el.hide();
    }
  }, {
    key: "showLogo",
    value: function showLogo() {
      this.getHeaderView().logoArea.show(new _logo.default(this.getLogoOptions()));
    }
  }]);
  return _default;
}(Marionette.LayoutView);

exports.default = _default;

/***/ }),
/* 356 */
/***/ (function(module, exports, __webpack_require__) {

"use strict";


var _interopRequireDefault = __webpack_require__(0);

var _Object$defineProperty = __webpack_require__(1);

_Object$defineProperty(exports, "__esModule", {
  value: true
});

exports.default = void 0;

var _classCallCheck2 = _interopRequireDefault(__webpack_require__(2));

var _createClass2 = _interopRequireDefault(__webpack_require__(3));

var _inherits2 = _interopRequireDefault(__webpack_require__(4));

var _createSuper2 = _interopRequireDefault(__webpack_require__(5));

var _default = /*#__PURE__*/function (_Marionette$LayoutVie) {
  (0, _inherits2.default)(_default, _Marionette$LayoutVie);

  var _super = (0, _createSuper2.default)(_default);

  function _default() {
    (0, _classCallCheck2.default)(this, _default);
    return _super.apply(this, arguments);
  }

  (0, _createClass2.default)(_default, [{
    key: "className",
    value: function className() {
      return 'elementor-templates-modal__header';
    }
  }, {
    key: "getTemplate",
    value: function getTemplate() {
      return '#tmpl-elementor-templates-modal__header';
    }
  }, {
    key: "regions",
    value: function regions() {
      return {
        logoArea: '.elementor-templates-modal__header__logo-area',
        tools: '#elementor-template-library-header-tools',
        menuArea: '.elementor-templates-modal__header__menu-area'
      };
    }
  }, {
    key: "ui",
    value: function ui() {
      return {
        closeModal: '.elementor-templates-modal__header__close'
      };
    }
  }, {
    key: "events",
    value: function events() {
      return {
        'click @ui.closeModal': 'onCloseModalClick'
      };
    }
  }, {
    key: "templateHelpers",
    value: function templateHelpers() {
      return {
        closeType: this.getOption('closeType')
      };
    }
  }, {
    key: "onCloseModalClick",
    value: function onCloseModalClick() {
      this._parent._parent._parent.hideModal();
    }
  }]);
  return _default;
}(Marionette.LayoutView);

exports.default = _default;

/***/ }),
/* 357 */
/***/ (function(module, exports, __webpack_require__) {

"use strict";


var _interopRequireDefault = __webpack_require__(0);

var _Object$defineProperty = __webpack_require__(1);

_Object$defineProperty(exports, "__esModule", {
  value: true
});

exports.default = void 0;

var _classCallCheck2 = _interopRequireDefault(__webpack_require__(2));

var _createClass2 = _interopRequireDefault(__webpack_require__(3));

var _inherits2 = _interopRequireDefault(__webpack_require__(4));

var _createSuper2 = _interopRequireDefault(__webpack_require__(5));

var _default = /*#__PURE__*/function (_Marionette$ItemView) {
  (0, _inherits2.default)(_default, _Marionette$ItemView);

  var _super = (0, _createSuper2.default)(_default);

  function _default() {
    (0, _classCallCheck2.default)(this, _default);
    return _super.apply(this, arguments);
  }

  (0, _createClass2.default)(_default, [{
    key: "getTemplate",
    value: function getTemplate() {
      return '#tmpl-elementor-templates-modal__header__logo';
    }
  }, {
    key: "className",
    value: function className() {
      return 'elementor-templates-modal__header__logo';
    }
  }, {
    key: "events",
    value: function events() {
      return {
        click: 'onClick'
      };
    }
  }, {
    key: "templateHelpers",
    value: function templateHelpers() {
      return {
        title: this.getOption('title')
      };
    }
  }, {
    key: "onClick",
    value: function onClick() {
      var clickCallback = this.getOption('click');

      if (clickCallback) {
        clickCallback();
      }
    }
  }]);
  return _default;
}(Marionette.ItemView);

exports.default = _default;

/***/ }),
/* 358 */
/***/ (function(module, exports, __webpack_require__) {

"use strict";


var _interopRequireDefault = __webpack_require__(0);

var _Object$defineProperty = __webpack_require__(1);

_Object$defineProperty(exports, "__esModule", {
  value: true
});

exports.default = void 0;

var _classCallCheck2 = _interopRequireDefault(__webpack_require__(2));

var _createClass2 = _interopRequireDefault(__webpack_require__(3));

var _inherits2 = _interopRequireDefault(__webpack_require__(4));

var _createSuper2 = _interopRequireDefault(__webpack_require__(5));

var _default = /*#__PURE__*/function (_Marionette$ItemView) {
  (0, _inherits2.default)(_default, _Marionette$ItemView);

  var _super = (0, _createSuper2.default)(_default);

  function _default() {
    (0, _classCallCheck2.default)(this, _default);
    return _super.apply(this, arguments);
  }

  (0, _createClass2.default)(_default, [{
    key: "id",
    value: function id() {
      return 'elementor-template-library-loading';
    }
  }, {
    key: "getTemplate",
    value: function getTemplate() {
      return '#tmpl-elementor-template-library-loading';
    }
  }]);
  return _default;
}(Marionette.ItemView);

exports.default = _default;

/***/ }),
/* 359 */
/***/ (function(module, exports, __webpack_require__) {

"use strict";


var _interopRequireDefault = __webpack_require__(0);

var _Object$defineProperty = __webpack_require__(1);

_Object$defineProperty(exports, "__esModule", {
  value: true
});

exports.default = void 0;

__webpack_require__(39);

var _classCallCheck2 = _interopRequireDefault(__webpack_require__(2));

var _createClass2 = _interopRequireDefault(__webpack_require__(3));

var _inherits2 = _interopRequireDefault(__webpack_require__(4));

var _createSuper2 = _interopRequireDefault(__webpack_require__(5));

var _group = _interopRequireDefault(__webpack_require__(473));

var MenuPageView = /*#__PURE__*/function (_Marionette$Composite) {
  (0, _inherits2.default)(MenuPageView, _Marionette$Composite);

  var _super = (0, _createSuper2.default)(MenuPageView);

  function MenuPageView() {
    (0, _classCallCheck2.default)(this, MenuPageView);
    return _super.apply(this, arguments);
  }

  (0, _createClass2.default)(MenuPageView, [{
    key: "id",
    value: function id() {
      return 'elementor-panel-page-menu';
    }
  }, {
    key: "getTemplate",
    value: function getTemplate() {
      return '#tmpl-elementor-panel-menu';
    }
  }, {
    key: "getChildView",
    value: function getChildView() {
      return _group.default;
    }
  }, {
    key: "childViewContainer",
    value: function childViewContainer() {
      return '#elementor-panel-page-menu-content';
    } // Remove empty groups that exist for BC.

  }, {
    key: "filter",
    value: function filter(child) {
      return child.get('items').length;
    }
  }]);
  return MenuPageView;
}(Marionette.CompositeView);

exports.default = MenuPageView;

MenuPageView.addItem = function (groups, itemData, groupName, before) {
  var group = groups.findWhere({
    name: groupName
  });

  if (!group) {
    return;
  }

  var items = group.get('items'),
      exists = _.findWhere(items, {
    name: itemData.name
  }); // Remove if exist.


  var beforeItem;

  if (exists) {
    items.splice(items.indexOf(exists), 1);
  }

  if (before) {
    beforeItem = _.findWhere(items, {
      name: before
    });
  }

  if (beforeItem) {
    items.splice(items.indexOf(beforeItem), 0, itemData);
  } else {
    items.push(itemData);
  }
};

/***/ }),
/* 360 */
/***/ (function(module, exports, __webpack_require__) {

"use strict";


var _interopRequireDefault = __webpack_require__(0);

var _Object$defineProperty = __webpack_require__(1);

_Object$defineProperty(exports, "__esModule", {
  value: true
});

exports.default = exports.BaseGlobalsUpdate = void 0;

var _assign = _interopRequireDefault(__webpack_require__(134));

var _classCallCheck2 = _interopRequireDefault(__webpack_require__(2));

var _createClass2 = _interopRequireDefault(__webpack_require__(3));

var _inherits2 = _interopRequireDefault(__webpack_require__(4));

var _createSuper2 = _interopRequireDefault(__webpack_require__(5));

var BaseGlobalsUpdate = /*#__PURE__*/function (_$e$modules$hookData$) {
  (0, _inherits2.default)(BaseGlobalsUpdate, _$e$modules$hookData$);

  var _super = (0, _createSuper2.default)(BaseGlobalsUpdate);

  function BaseGlobalsUpdate() {
    (0, _classCallCheck2.default)(this, BaseGlobalsUpdate);
    return _super.apply(this, arguments);
  }

  (0, _createClass2.default)(BaseGlobalsUpdate, [{
    key: "getContainerType",
    value: function getContainerType() {
      return 'document';
    }
  }, {
    key: "getConditions",
    value: function getConditions() {
      return $e.routes.isPartOf('panel/global');
    }
  }, {
    key: "getRepeaterName",
    value: function getRepeaterName() {
      elementorModules.ForceMethodImplementation();
    }
  }, {
    key: "applyModel",
    value: function applyModel(model, id, value) {
      elementorModules.ForceMethodImplementation();
    }
  }, {
    key: "apply",
    value: function apply(args, result) {
      var _this = this;

      var _args$containers = args.containers,
          containers = _args$containers === void 0 ? [args.container] : _args$containers,
          model = (0, _assign.default)({}, result.data);
      var id = model.id,
          value = model.value;
      delete model.id;
      delete model.value;
      model._id = id;
      this.applyModel(model, value);
      containers.forEach(function (container) {
        $e.run('document/repeater/insert', {
          container: container,
          model: model,
          name: _this.getRepeaterName()
        });
      });
    }
  }]);
  return BaseGlobalsUpdate;
}($e.modules.hookData.After);

exports.BaseGlobalsUpdate = BaseGlobalsUpdate;
var _default = BaseGlobalsUpdate;
exports.default = _default;

/***/ }),
/* 361 */
/***/ (function(module, exports, __webpack_require__) {

"use strict";


var _interopRequireDefault = __webpack_require__(0);

var _Object$defineProperty = __webpack_require__(1);

_Object$defineProperty(exports, "__esModule", {
  value: true
});

exports.default = void 0;

var _classCallCheck2 = _interopRequireDefault(__webpack_require__(2));

var _createClass2 = _interopRequireDefault(__webpack_require__(3));

var _inherits2 = _interopRequireDefault(__webpack_require__(4));

var _createSuper2 = _interopRequireDefault(__webpack_require__(5));

var BaseOpenClose = /*#__PURE__*/function (_$e$modules$hookUI$Af) {
  (0, _inherits2.default)(BaseOpenClose, _$e$modules$hookUI$Af);

  var _super = (0, _createSuper2.default)(BaseOpenClose);

  function BaseOpenClose() {
    (0, _classCallCheck2.default)(this, BaseOpenClose);
    return _super.apply(this, arguments);
  }

  (0, _createClass2.default)(BaseOpenClose, [{
    key: "initialize",
    value: function initialize() {
      var _this = this;

      elementor.on('preview:loaded', function () {
        _this.component = $e.components.get('panel/global');
      });
    }
  }]);
  return BaseOpenClose;
}($e.modules.hookUI.After);

exports.default = BaseOpenClose;

/***/ }),
/* 362 */
/***/ (function(module, exports, __webpack_require__) {

"use strict";

var LIBRARY = __webpack_require__(110);
var global = __webpack_require__(17);
var ctx = __webpack_require__(73);
var classof = __webpack_require__(113);
var $export = __webpack_require__(34);
var isObject = __webpack_require__(30);
var aFunction = __webpack_require__(91);
var anInstance = __webpack_require__(493);
var forOf = __webpack_require__(494);
var speciesConstructor = __webpack_require__(154);
var task = __webpack_require__(363).set;
var microtask = __webpack_require__(499)();
var newPromiseCapabilityModule = __webpack_require__(364);
var perform = __webpack_require__(500);
var userAgent = __webpack_require__(501);
var promiseResolve = __webpack_require__(365);
var PROMISE = 'Promise';
var TypeError = global.TypeError;
var process = global.process;
var versions = process && process.versions;
var v8 = versions && versions.v8 || '';
var $Promise = global[PROMISE];
var isNode = classof(process) == 'process';
var empty = function () { /* empty */ };
var Internal, newGenericPromiseCapability, OwnPromiseCapability, Wrapper;
var newPromiseCapability = newGenericPromiseCapability = newPromiseCapabilityModule.f;

var USE_NATIVE = !!function () {
  try {
    // correct subclassing with @@species support
    var promise = $Promise.resolve(1);
    var FakePromise = (promise.constructor = {})[__webpack_require__(12)('species')] = function (exec) {
      exec(empty, empty);
    };
    // unhandled rejections tracking support, NodeJS Promise without it fails @@species test
    return (isNode || typeof PromiseRejectionEvent == 'function')
      && promise.then(empty) instanceof FakePromise
      // v8 6.6 (Node 10 and Chrome 66) have a bug with resolving custom thenables
      // https://bugs.chromium.org/p/chromium/issues/detail?id=830565
      // we can't detect it synchronously, so just check versions
      && v8.indexOf('6.6') !== 0
      && userAgent.indexOf('Chrome/66') === -1;
  } catch (e) { /* empty */ }
}();

// helpers
var isThenable = function (it) {
  var then;
  return isObject(it) && typeof (then = it.then) == 'function' ? then : false;
};
var notify = function (promise, isReject) {
  if (promise._n) return;
  promise._n = true;
  var chain = promise._c;
  microtask(function () {
    var value = promise._v;
    var ok = promise._s == 1;
    var i = 0;
    var run = function (reaction) {
      var handler = ok ? reaction.ok : reaction.fail;
      var resolve = reaction.resolve;
      var reject = reaction.reject;
      var domain = reaction.domain;
      var result, then, exited;
      try {
        if (handler) {
          if (!ok) {
            if (promise._h == 2) onHandleUnhandled(promise);
            promise._h = 1;
          }
          if (handler === true) result = value;
          else {
            if (domain) domain.enter();
            result = handler(value); // may throw
            if (domain) {
              domain.exit();
              exited = true;
            }
          }
          if (result === reaction.promise) {
            reject(TypeError('Promise-chain cycle'));
          } else if (then = isThenable(result)) {
            then.call(result, resolve, reject);
          } else resolve(result);
        } else reject(value);
      } catch (e) {
        if (domain && !exited) domain.exit();
        reject(e);
      }
    };
    while (chain.length > i) run(chain[i++]); // variable length - can't use forEach
    promise._c = [];
    promise._n = false;
    if (isReject && !promise._h) onUnhandled(promise);
  });
};
var onUnhandled = function (promise) {
  task.call(global, function () {
    var value = promise._v;
    var unhandled = isUnhandled(promise);
    var result, handler, console;
    if (unhandled) {
      result = perform(function () {
        if (isNode) {
          process.emit('unhandledRejection', value, promise);
        } else if (handler = global.onunhandledrejection) {
          handler({ promise: promise, reason: value });
        } else if ((console = global.console) && console.error) {
          console.error('Unhandled promise rejection', value);
        }
      });
      // Browsers should not trigger `rejectionHandled` event if it was handled here, NodeJS - should
      promise._h = isNode || isUnhandled(promise) ? 2 : 1;
    } promise._a = undefined;
    if (unhandled && result.e) throw result.v;
  });
};
var isUnhandled = function (promise) {
  return promise._h !== 1 && (promise._a || promise._c).length === 0;
};
var onHandleUnhandled = function (promise) {
  task.call(global, function () {
    var handler;
    if (isNode) {
      process.emit('rejectionHandled', promise);
    } else if (handler = global.onrejectionhandled) {
      handler({ promise: promise, reason: promise._v });
    }
  });
};
var $reject = function (value) {
  var promise = this;
  if (promise._d) return;
  promise._d = true;
  promise = promise._w || promise; // unwrap
  promise._v = value;
  promise._s = 2;
  if (!promise._a) promise._a = promise._c.slice();
  notify(promise, true);
};
var $resolve = function (value) {
  var promise = this;
  var then;
  if (promise._d) return;
  promise._d = true;
  promise = promise._w || promise; // unwrap
  try {
    if (promise === value) throw TypeError("Promise can't be resolved itself");
    if (then = isThenable(value)) {
      microtask(function () {
        var wrapper = { _w: promise, _d: false }; // wrap
        try {
          then.call(value, ctx($resolve, wrapper, 1), ctx($reject, wrapper, 1));
        } catch (e) {
          $reject.call(wrapper, e);
        }
      });
    } else {
      promise._v = value;
      promise._s = 1;
      notify(promise, false);
    }
  } catch (e) {
    $reject.call({ _w: promise, _d: false }, e); // wrap
  }
};

// constructor polyfill
if (!USE_NATIVE) {
  // 25.4.3.1 Promise(executor)
  $Promise = function Promise(executor) {
    anInstance(this, $Promise, PROMISE, '_h');
    aFunction(executor);
    Internal.call(this);
    try {
      executor(ctx($resolve, this, 1), ctx($reject, this, 1));
    } catch (err) {
      $reject.call(this, err);
    }
  };
  // eslint-disable-next-line no-unused-vars
  Internal = function Promise(executor) {
    this._c = [];             // <- awaiting reactions
    this._a = undefined;      // <- checked in isUnhandled reactions
    this._s = 0;              // <- state
    this._d = false;          // <- done
    this._v = undefined;      // <- value
    this._h = 0;              // <- rejection state, 0 - default, 1 - handled, 2 - unhandled
    this._n = false;          // <- notify
  };
  Internal.prototype = __webpack_require__(502)($Promise.prototype, {
    // 25.4.5.3 Promise.prototype.then(onFulfilled, onRejected)
    then: function then(onFulfilled, onRejected) {
      var reaction = newPromiseCapability(speciesConstructor(this, $Promise));
      reaction.ok = typeof onFulfilled == 'function' ? onFulfilled : true;
      reaction.fail = typeof onRejected == 'function' && onRejected;
      reaction.domain = isNode ? process.domain : undefined;
      this._c.push(reaction);
      if (this._a) this._a.push(reaction);
      if (this._s) notify(this, false);
      return reaction.promise;
    },
    // 25.4.5.1 Promise.prototype.catch(onRejected)
    'catch': function (onRejected) {
      return this.then(undefined, onRejected);
    }
  });
  OwnPromiseCapability = function () {
    var promise = new Internal();
    this.promise = promise;
    this.resolve = ctx($resolve, promise, 1);
    this.reject = ctx($reject, promise, 1);
  };
  newPromiseCapabilityModule.f = newPromiseCapability = function (C) {
    return C === $Promise || C === Wrapper
      ? new OwnPromiseCapability(C)
      : newGenericPromiseCapability(C);
  };
}

$export($export.G + $export.W + $export.F * !USE_NATIVE, { Promise: $Promise });
__webpack_require__(153)($Promise, PROMISE);
__webpack_require__(309)(PROMISE);
Wrapper = __webpack_require__(54)[PROMISE];

// statics
$export($export.S + $export.F * !USE_NATIVE, PROMISE, {
  // 25.4.4.5 Promise.reject(r)
  reject: function reject(r) {
    var capability = newPromiseCapability(this);
    var $$reject = capability.reject;
    $$reject(r);
    return capability.promise;
  }
});
$export($export.S + $export.F * (LIBRARY || !USE_NATIVE), PROMISE, {
  // 25.4.4.6 Promise.resolve(x)
  resolve: function resolve(x) {
    return promiseResolve(LIBRARY && this === Wrapper ? $Promise : this, x);
  }
});
$export($export.S + $export.F * !(USE_NATIVE && __webpack_require__(503)(function (iter) {
  $Promise.all(iter)['catch'](empty);
})), PROMISE, {
  // 25.4.4.1 Promise.all(iterable)
  all: function all(iterable) {
    var C = this;
    var capability = newPromiseCapability(C);
    var resolve = capability.resolve;
    var reject = capability.reject;
    var result = perform(function () {
      var values = [];
      var index = 0;
      var remaining = 1;
      forOf(iterable, false, function (promise) {
        var $index = index++;
        var alreadyCalled = false;
        values.push(undefined);
        remaining++;
        C.resolve(promise).then(function (value) {
          if (alreadyCalled) return;
          alreadyCalled = true;
          values[$index] = value;
          --remaining || resolve(values);
        }, reject);
      });
      --remaining || resolve(values);
    });
    if (result.e) reject(result.v);
    return capability.promise;
  },
  // 25.4.4.4 Promise.race(iterable)
  race: function race(iterable) {
    var C = this;
    var capability = newPromiseCapability(C);
    var reject = capability.reject;
    var result = perform(function () {
      forOf(iterable, false, function (promise) {
        C.resolve(promise).then(capability.resolve, reject);
      });
    });
    if (result.e) reject(result.v);
    return capability.promise;
  }
});


/***/ }),
/* 363 */
/***/ (function(module, exports, __webpack_require__) {

var ctx = __webpack_require__(73);
var invoke = __webpack_require__(498);
var html = __webpack_require__(227);
var cel = __webpack_require__(109);
var global = __webpack_require__(17);
var process = global.process;
var setTask = global.setImmediate;
var clearTask = global.clearImmediate;
var MessageChannel = global.MessageChannel;
var Dispatch = global.Dispatch;
var counter = 0;
var queue = {};
var ONREADYSTATECHANGE = 'onreadystatechange';
var defer, channel, port;
var run = function () {
  var id = +this;
  // eslint-disable-next-line no-prototype-builtins
  if (queue.hasOwnProperty(id)) {
    var fn = queue[id];
    delete queue[id];
    fn();
  }
};
var listener = function (event) {
  run.call(event.data);
};
// Node.js 0.9+ & IE10+ has setImmediate, otherwise:
if (!setTask || !clearTask) {
  setTask = function setImmediate(fn) {
    var args = [];
    var i = 1;
    while (arguments.length > i) args.push(arguments[i++]);
    queue[++counter] = function () {
      // eslint-disable-next-line no-new-func
      invoke(typeof fn == 'function' ? fn : Function(fn), args);
    };
    defer(counter);
    return counter;
  };
  clearTask = function clearImmediate(id) {
    delete queue[id];
  };
  // Node.js 0.8-
  if (__webpack_require__(46)(process) == 'process') {
    defer = function (id) {
      process.nextTick(ctx(run, id, 1));
    };
  // Sphere (JS game engine) Dispatch API
  } else if (Dispatch && Dispatch.now) {
    defer = function (id) {
      Dispatch.now(ctx(run, id, 1));
    };
  // Browsers with MessageChannel, includes WebWorkers
  } else if (MessageChannel) {
    channel = new MessageChannel();
    port = channel.port2;
    channel.port1.onmessage = listener;
    defer = ctx(port.postMessage, port, 1);
  // Browsers with postMessage, skip WebWorkers
  // IE8 has postMessage, but it's sync & typeof its postMessage is 'object'
  } else if (global.addEventListener && typeof postMessage == 'function' && !global.importScripts) {
    defer = function (id) {
      global.postMessage(id + '', '*');
    };
    global.addEventListener('message', listener, false);
  // IE8-
  } else if (ONREADYSTATECHANGE in cel('script')) {
    defer = function (id) {
      html.appendChild(cel('script'))[ONREADYSTATECHANGE] = function () {
        html.removeChild(this);
        run.call(id);
      };
    };
  // Rest old browsers
  } else {
    defer = function (id) {
      setTimeout(ctx(run, id, 1), 0);
    };
  }
}
module.exports = {
  set: setTask,
  clear: clearTask
};


/***/ }),
/* 364 */
/***/ (function(module, exports, __webpack_require__) {

"use strict";

// 25.4.1.5 NewPromiseCapability(C)
var aFunction = __webpack_require__(91);

function PromiseCapability(C) {
  var resolve, reject;
  this.promise = new C(function ($$resolve, $$reject) {
    if (resolve !== undefined || reject !== undefined) throw TypeError('Bad Promise constructor');
    resolve = $$resolve;
    reject = $$reject;
  });
  this.resolve = aFunction(resolve);
  this.reject = aFunction(reject);
}

module.exports.f = function (C) {
  return new PromiseCapability(C);
};


/***/ }),
/* 365 */
/***/ (function(module, exports, __webpack_require__) {

var anObject = __webpack_require__(18);
var isObject = __webpack_require__(30);
var newPromiseCapability = __webpack_require__(364);

module.exports = function (C, x) {
  anObject(C);
  if (isObject(x) && x.constructor === C) return x;
  var promiseCapability = newPromiseCapability.f(C);
  var resolve = promiseCapability.resolve;
  resolve(x);
  return promiseCapability.promise;
};


/***/ }),
/* 366 */
/***/ (function(module, exports, __webpack_require__) {

"use strict";
// https://github.com/tc39/proposal-promise-finally

var $export = __webpack_require__(34);
var core = __webpack_require__(54);
var global = __webpack_require__(17);
var speciesConstructor = __webpack_require__(154);
var promiseResolve = __webpack_require__(365);

$export($export.P + $export.R, 'Promise', { 'finally': function (onFinally) {
  var C = speciesConstructor(this, core.Promise || global.Promise);
  var isFunction = typeof onFinally == 'function';
  return this.then(
    isFunction ? function (x) {
      return promiseResolve(C, onFinally()).then(function () { return x; });
    } : onFinally,
    isFunction ? function (e) {
      return promiseResolve(C, onFinally()).then(function () { throw e; });
    } : onFinally
  );
} });


/***/ }),
/* 367 */
/***/ (function(module, exports, __webpack_require__) {

"use strict";


__webpack_require__(39);

__webpack_require__(25);

var ControlBaseDataView = __webpack_require__(127),
    RepeaterRowView = __webpack_require__(328),
    ControlRepeaterItemView;

ControlRepeaterItemView = ControlBaseDataView.extend({
  ui: {
    btnAddRow: '.elementor-repeater-add',
    fieldContainer: '.elementor-repeater-fields-wrapper'
  },
  events: function events() {
    return {
      'click @ui.btnAddRow': 'onButtonAddRowClick',
      'sortstart @ui.fieldContainer': 'onSortStart',
      'sortupdate @ui.fieldContainer': 'onSortUpdate',
      'sortstop @ui.fieldContainer': 'onSortStop'
    };
  },
  childView: RepeaterRowView,
  childViewContainer: '.elementor-repeater-fields-wrapper',
  templateHelpers: function templateHelpers() {
    return {
      itemActions: this.model.get('item_actions'),
      data: _.extend({}, this.model.toJSON(), {
        controlValue: []
      })
    };
  },
  childViewOptions: function childViewOptions(rowModel, index) {
    var elementContainer = this.getOption('container');
    return {
      container: elementContainer.repeaters[this.model.get('name')].children[index],
      controlFields: this.model.get('fields'),
      titleField: this.model.get('title_field'),
      itemActions: this.model.get('item_actions')
    };
  },
  createItemModel: function createItemModel(attrs, options, controlView) {
    options.controls = controlView.model.get('fields');
    return new elementorModules.editor.elements.models.BaseSettings(attrs, options);
  },
  fillCollection: function fillCollection() {
    // TODO: elementSettingsModel is deprecated since 2.8.0.
    var settings = this.container ? this.container.settings : this.elementSettingsModel;
    var controlName = this.model.get('name');
    this.collection = settings.get(controlName); // Hack for history redo/undo

    if (!(this.collection instanceof Backbone.Collection)) {
      this.collection = new Backbone.Collection(this.collection, {
        // Use `partial` to supply the `this` as an argument, but not as context
        // the `_` is a place holder for original arguments: `attrs` & `options`
        model: _.partial(this.createItemModel, _, _, this)
      }); // Set the value silent

      settings.set(controlName, this.collection, {
        silent: true
      });
    }
  },
  initialize: function initialize() {
    ControlBaseDataView.prototype.initialize.apply(this, arguments);
    this.fillCollection();
    this.listenTo(this.collection, 'reset', this.resetContainer.bind(this));
    this.listenTo(this.collection, 'add', this.updateContainer.bind(this));
  },
  editRow: function editRow(rowView) {
    if (this.currentEditableChild) {
      var currentEditable = this.currentEditableChild.getChildViewContainer(this.currentEditableChild);
      currentEditable.removeClass('editable'); // If the repeater contains TinyMCE editors, fire the `hide` trigger to hide floated toolbars

      currentEditable.find('.elementor-wp-editor').each(function () {
        tinymce.get(this.id).fire('hide');
      });
    }

    if (this.currentEditableChild === rowView) {
      delete this.currentEditableChild;
      return;
    }

    rowView.getChildViewContainer(rowView).addClass('editable');
    this.currentEditableChild = rowView;
    this.updateActiveRow();
  },
  toggleMinRowsClass: function toggleMinRowsClass() {
    if (!this.model.get('prevent_empty')) {
      return;
    }

    this.$el.toggleClass('elementor-repeater-has-minimum-rows', 1 >= this.collection.length);
  },
  updateActiveRow: function updateActiveRow() {
    var activeItemIndex = 1;

    if (this.currentEditableChild) {
      activeItemIndex = this.currentEditableChild.itemIndex;
    }

    this.setEditSetting('activeItemIndex', activeItemIndex);
  },
  updateChildIndexes: function updateChildIndexes() {
    var collection = this.collection;
    this.children.each(function (view) {
      view.updateIndex(collection.indexOf(view.model) + 1);
      view.setTitle();
    });
  },
  onRender: function onRender() {
    ControlBaseDataView.prototype.onRender.apply(this, arguments);

    if (this.model.get('item_actions').sort) {
      this.ui.fieldContainer.sortable({
        axis: 'y',
        handle: '.elementor-repeater-row-tools',
        items: ' > :not(.elementor-repeater-row--disable-sort)'
      });
    }

    this.toggleMinRowsClass();
  },
  onSortStart: function onSortStart(event, ui) {
    ui.item.data('oldIndex', ui.item.index());
  },
  onSortStop: function onSortStop(event, ui) {
    // Reload TinyMCE editors (if exist), it's a bug that TinyMCE content is missing after stop dragging
    var self = this,
        sortedIndex = ui.item.index();

    if (-1 === sortedIndex) {
      return;
    }

    var sortedRowView = self.children.findByIndex(ui.item.index()),
        rowControls = sortedRowView.children._views;
    jQuery.each(rowControls, function () {
      if ('wysiwyg' === this.model.get('type')) {
        sortedRowView.render();
        delete self.currentEditableChild;
        return false;
      }
    });
  },
  onSortUpdate: function onSortUpdate(event, ui) {
    var oldIndex = ui.item.data('oldIndex'),
        newIndex = ui.item.index();
    $e.run('document/repeater/move', {
      container: this.options.container,
      name: this.model.get('name'),
      sourceIndex: oldIndex,
      targetIndex: newIndex
    });
  },
  onAddChild: function onAddChild() {
    this.updateChildIndexes();
    this.updateActiveRow();
  },
  // BC since 3.0.0, ensure a new child is appear in container children.
  updateContainer: function updateContainer(model) {
    var container = this.options.container.repeaters[this.model.get('name')],
        isInChildren = container.children.filter(function (child) {
      return child.id === model.get('_id');
    });

    if (!isInChildren.length) {
      elementorCommon.helpers.softDeprecated('Don\'t add models directly to the repeater.', '3.0.0', '$e.run( \'document/repeater/insert\' )');
      this.options.container.addRepeaterItem(this.model.get('name'), model, model.collection.indexOf(model));
    }
  },
  // BC since 3.0.0, ensure a container children are reset on collection reset.
  resetContainer: function resetContainer() {
    elementorCommon.helpers.softDeprecated('Don\'t reset repeater collection directly.', '3.0.0', '$e.run( \'document/repeater/remove\' )');
    this.options.container.repeaters[this.model.get('name')].children = [];
  },
  getDefaults: function getDefaults() {
    var defaults = {}; // Get default fields.

    _.each(this.model.get('fields'), function (field) {
      defaults[field.name] = field.default;
    });

    return defaults;
  },
  onButtonAddRowClick: function onButtonAddRowClick() {
    var newModel = $e.run('document/repeater/insert', {
      container: this.options.container,
      name: this.model.get('name'),
      model: this.getDefaults()
    });
    var newChild = this.children.findByModel(newModel);
    this.editRow(newChild);
    this.toggleMinRowsClass();
  },
  onChildviewClickRemove: function onChildviewClickRemove(childView) {
    if (childView === this.currentEditableChild) {
      delete this.currentEditableChild;
    }

    $e.run('document/repeater/remove', {
      container: this.options.container,
      name: this.model.get('name'),
      index: childView._index
    });
    this.updateActiveRow();
    this.updateChildIndexes();
    this.toggleMinRowsClass();
  },
  onChildviewClickDuplicate: function onChildviewClickDuplicate(childView) {
    $e.run('document/repeater/duplicate', {
      container: this.options.container,
      name: this.model.get('name'),
      index: childView._index
    });
    this.toggleMinRowsClass();
  },
  onChildviewClickEdit: function onChildviewClickEdit(childView) {
    this.editRow(childView);
  },
  onAfterExternalChange: function onAfterExternalChange() {
    // Update the collection with current value
    this.fillCollection();
    ControlBaseDataView.prototype.onAfterExternalChange.apply(this, arguments);
  }
});
module.exports = ControlRepeaterItemView;

/***/ }),
/* 368 */
/***/ (function(module, exports, __webpack_require__) {

"use strict";


var _interopRequireDefault = __webpack_require__(0);

__webpack_require__(147);

__webpack_require__(117);

__webpack_require__(72);

var _controlsPopover = _interopRequireDefault(__webpack_require__(369));

var ControlsStack;
ControlsStack = Marionette.CompositeView.extend({
  classes: {
    popover: 'elementor-controls-popover'
  },
  activeTab: null,
  activeSection: null,
  className: function className() {
    return 'elementor-controls-stack';
  },
  templateHelpers: function templateHelpers() {
    return {
      elementData: elementor.getElementData(this.model)
    };
  },
  childViewOptions: function childViewOptions() {
    return {
      // TODO: elementSettingsModel is deprecated since 2.8.0.
      elementSettingsModel: this.model
    };
  },
  ui: function ui() {
    return {
      tabs: '.elementor-panel-navigation-tab',
      reloadButton: '.elementor-update-preview-button'
    };
  },
  events: function events() {
    return {
      'click @ui.reloadButton': 'onReloadButtonClick'
    };
  },
  modelEvents: {
    destroy: 'onModelDestroy'
  },
  behaviors: {
    HandleInnerTabs: {
      behaviorClass: __webpack_require__(329)
    }
  },
  initialize: function initialize(options) {
    this.initCollection();

    if (options.tab) {
      this.activeTab = options.tab;
      this.activateFirstSection();
    }

    this.listenTo(elementor.channels.deviceMode, 'change', this.onDeviceModeChange);
  },
  initCollection: function initCollection() {
    this.collection = new Backbone.Collection(_.values(elementor.mergeControlsSettings(this.getOption('controls'))));
  },
  filter: function filter(controlModel) {
    if (controlModel.get('tab') !== this.activeTab) {
      return false;
    }

    if ('section' === controlModel.get('type')) {
      return true;
    }

    var section = controlModel.get('section');
    return !section || section === this.activeSection;
  },
  getControlViewByModel: function getControlViewByModel(model) {
    return this.children.findByModelCid(model.cid);
  },
  getControlViewByName: function getControlViewByName(name) {
    return this.getControlViewByModel(this.getControlModel(name));
  },
  getControlModel: function getControlModel(name) {
    return this.collection.findWhere({
      name: name
    });
  },
  isVisibleSectionControl: function isVisibleSectionControl(sectionControlModel) {
    return this.activeTab === sectionControlModel.get('tab');
  },
  activateTab: function activateTab(tab) {
    this.activeTab = tab;
    this.activateFirstSection();

    this._renderChildren();

    return this;
  },
  activateSection: function activateSection(sectionName) {
    this.activeSection = sectionName;
    return this;
  },
  activateFirstSection: function activateFirstSection() {
    var self = this;
    var sectionControls = self.collection.filter(function (controlModel) {
      return 'section' === controlModel.get('type') && self.isVisibleSectionControl(controlModel);
    });

    if (!sectionControls[0]) {
      return;
    }

    var preActivatedSection = sectionControls.filter(function (controlModel) {
      return self.activeSection === controlModel.get('name');
    });

    if (preActivatedSection[0]) {
      return;
    }

    self.activateSection(sectionControls[0].get('name'));
    return this;
  },
  getChildView: function getChildView(item) {
    var controlType = item.get('type');
    return elementor.getControlView(controlType);
  },
  getNamespaceArray: function getNamespaceArray() {
    return [elementor.getPanelView().getCurrentPageName()];
  },
  openActiveSection: function openActiveSection() {
    var activeSection = this.activeSection,
        activeSectionView = this.children.filter(function (view) {
      return activeSection === view.model.get('name');
    });

    if (activeSectionView[0]) {
      activeSectionView[0].$el.addClass('elementor-open');
      var eventNamespace = this.getNamespaceArray();
      eventNamespace.push(activeSection, 'activated');
      elementor.channels.editor.trigger(eventNamespace.join(':'), this);
    }
  },
  onRenderCollection: function onRenderCollection() {
    this.openActiveSection();
    ControlsStack.handlePopovers(this);
  },
  onModelDestroy: function onModelDestroy() {
    this.destroy();
  },
  onReloadButtonClick: function onReloadButtonClick() {
    elementor.reloadPreview();
  },
  onDeviceModeChange: function onDeviceModeChange() {
    if ('desktop' === elementor.channels.deviceMode.request('currentMode')) {
      this.$el.removeClass('elementor-responsive-switchers-open');
    }
  },
  onChildviewControlSectionClicked: function onChildviewControlSectionClicked(childView) {
    var isSectionOpen = childView.$el.hasClass('elementor-open');
    this.activateSection(isSectionOpen ? null : childView.model.get('name'));

    this._renderChildren();
  },
  onChildviewResponsiveSwitcherClick: function onChildviewResponsiveSwitcherClick(childView, device) {
    if ('desktop' === device) {
      this.$el.toggleClass('elementor-responsive-switchers-open');
    }
  }
}, {
  handlePopovers: function handlePopovers(view) {
    var popover;
    view.popovers = [];
    this.removePopovers(view);
    view.children.each(function (control) {
      if (popover) {
        popover.addChild(control);
      }

      var popoverData = control.model.get('popover');

      if (!popoverData) {
        return;
      }

      if (popoverData.start) {
        popover = new _controlsPopover.default(control);
        view.popovers.push(popover);
      }

      if (popoverData.end) {
        popover = null;
      }
    });
  },
  removePopovers: function removePopovers(view) {
    view.popovers.forEach(function (popover) {
      return popover.destroy();
    });
  }
});
module.exports = ControlsStack;

/***/ }),
/* 369 */
/***/ (function(module, exports, __webpack_require__) {

"use strict";


var _interopRequireDefault = __webpack_require__(0);

var _Object$defineProperty = __webpack_require__(1);

_Object$defineProperty(exports, "__esModule", {
  value: true
});

exports.default = void 0;

var _defineProperty2 = _interopRequireDefault(__webpack_require__(28));

__webpack_require__(25);

var _classCallCheck2 = _interopRequireDefault(__webpack_require__(2));

var _createClass2 = _interopRequireDefault(__webpack_require__(3));

var ControlsPopover = /*#__PURE__*/function () {
  function ControlsPopover(child) {
    (0, _classCallCheck2.default)(this, ControlsPopover);
    this.child = child;
    this.$popover = jQuery('<div>', {
      class: 'elementor-controls-popover'
    });
    child.$el.before(this.$popover);
    this.$popover.append(child.$el);
    this.popoverToggleView = child._parent.children.findByIndex(child._index - 1); // Add the "Typography" header to the popover

    if ('typography' === this.child.model.attributes.groupType) {
      this.createPopoverHeader();
    }
  }

  (0, _createClass2.default)(ControlsPopover, [{
    key: "addChild",
    value: function addChild(child) {
      this.$popover.append(child.$el);
    }
  }, {
    key: "createPopoverHeader",
    value: function createPopoverHeader() {
      var _this = this;

      var $popoverToggleControl = this.$popover.prev(),
          // Get the existing reset button.
      $resetLabel = $popoverToggleControl.find('.elementor-control-popover-toggle-reset-label');
      this.$popoverHeader = jQuery('<div>', {
        class: 'e-group-control-header'
      }).html('<span>' + elementor.translate('typography') + '</span>');
      this.$headerControlsWrapper = jQuery('<div>', {
        class: 'e-control-tools'
      }); // Give the reset button the control tool styling, and add a click event so clicking on it closes the popover.

      $resetLabel.addClass('e-control-tool').on('click', function () {
        return _this.onResetButtonClick();
      }); // Move the popover toggle reset button into the popover header.

      this.$headerControlsWrapper.append($resetLabel);
      this.$popoverHeader.append(this.$headerControlsWrapper);
      var globalConfig = this.popoverToggleView.model.get('global');

      if (globalConfig === null || globalConfig === void 0 ? void 0 : globalConfig.active) {
        this.createAddButton();
      }

      this.$popover.prepend(this.$popoverHeader).addClass('e-controls-popover--typography');
    }
  }, {
    key: "onResetButtonClick",
    value: function onResetButtonClick() {
      this.$popover.hide();
      var groupControlName = this.child.model.get('groupPrefix') + 'typography',
          args = {
        container: this.child.options.container,
        settings: (0, _defineProperty2.default)({}, groupControlName, '')
      };

      if (this.child.options.container.globals.get(groupControlName)) {
        // The Disable Globals command applies global settings locally,
        // so disabling the global shouldn't actually change the appearance of the widget.
        $e.run('document/globals/disable', args);
      } else {
        $e.run('document/elements/settings', args);
      }
    }
  }, {
    key: "onAddButtonClick",
    value: function onAddButtonClick() {
      this.popoverToggleView.onAddGlobalButtonClick();
    }
  }, {
    key: "createAddButton",
    value: function createAddButton() {
      var _this2 = this;

      this.$addButton = jQuery('<button>', {
        class: 'e-control-tool'
      }).html(jQuery('<i>', {
        class: 'eicon-plus'
      }));
      this.$headerControlsWrapper.append(this.$addButton);
      this.$addButton.on('click', function () {
        return _this2.onAddButtonClick();
      });
      this.$addButton.tipsy({
        title: function title() {
          return elementor.translate('create_global_font');
        },
        gravity: function gravity() {
          return 's';
        }
      });
    }
  }, {
    key: "destroy",
    value: function destroy() {
      this.$popover.remove();
    }
  }]);
  return ControlsPopover;
}();

exports.default = ControlsPopover;

/***/ }),
/* 370 */
/***/ (function(module, exports, __webpack_require__) {

"use strict";


var _interopRequireDefault = __webpack_require__(0);

var _Object$defineProperty = __webpack_require__(1);

_Object$defineProperty(exports, "__esModule", {
  value: true
});

exports.default = void 0;

var _classCallCheck2 = _interopRequireDefault(__webpack_require__(2));

var _createClass2 = _interopRequireDefault(__webpack_require__(3));

var BackwardsCompatibility = /*#__PURE__*/function () {
  function BackwardsCompatibility() {
    (0, _classCallCheck2.default)(this, BackwardsCompatibility);
  }

  (0, _createClass2.default)(BackwardsCompatibility, null, [{
    key: "findViewRecursive",
    value: function findViewRecursive(parent, key, value) {
      var multiple = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : true;
      elementorCommon.helpers.softDeprecated('findViewRecursive', '2.9.0', "$e.components.get( 'document' ).utils.findViewRecursive( parent, key, value, multiple )");
      return $e.components.get('document').utils.findViewRecursive(parent, key, value, multiple);
    }
  }, {
    key: "findViewById",
    value: function findViewById(id) {
      elementorCommon.helpers.softDeprecated('findViewById', '2.9.0', "$e.components.get( 'document' ).utils.findViewById( id )");
      return $e.components.get('document').utils.findViewById(id);
    }
  }, {
    key: "findContainerById",
    value: function findContainerById(id) {
      elementorCommon.helpers.softDeprecated('findContainerById', '2.9.0', "$e.components.get( 'document' ).utils.findContainerById( id )");
      return $e.components.get('document').utils.findContainerById(id);
    }
  }]);
  return BackwardsCompatibility;
}();

exports.default = BackwardsCompatibility;

/***/ }),
/* 371 */
/***/ (function(module, exports, __webpack_require__) {

"use strict";


var _interopRequireDefault = __webpack_require__(0);

var _keys = _interopRequireDefault(__webpack_require__(23));

module.exports = Marionette.Region.extend({
  storage: null,
  storageSizeKeys: null,
  constructor: function constructor() {
    Marionette.Region.prototype.constructor.apply(this, arguments);
    var savedStorage = elementorCommon.storage.get(this.getStorageKey());
    this.storage = savedStorage ? savedStorage : this.getDefaultStorage();
    this.storageSizeKeys = (0, _keys.default)(this.storage.size);
  },
  saveStorage: function saveStorage(key, value) {
    this.storage[key] = value;
    elementorCommon.storage.set(this.getStorageKey(), this.storage);
  },
  saveSize: function saveSize(size) {
    if (!size) {
      size = elementor.helpers.getElementInlineStyle(this.$el, this.storageSizeKeys);
    }

    this.saveStorage('size', size);
  }
});

/***/ }),
/* 372 */
/***/ (function(module, exports, __webpack_require__) {

"use strict";


__webpack_require__(39);

module.exports = elementorModules.Module.extend({
  getDefaultSettings: function getDefaultSettings() {
    return {
      actions: {},
      classes: {
        list: 'elementor-context-menu-list',
        group: 'elementor-context-menu-list__group',
        groupPrefix: 'elementor-context-menu-list__group-',
        item: 'elementor-context-menu-list__item',
        itemTypePrefix: 'elementor-context-menu-list__item-',
        itemTitle: 'elementor-context-menu-list__item__title',
        itemShortcut: 'elementor-context-menu-list__item__shortcut',
        iconShortcut: 'elementor-context-menu-list__item__icon',
        itemDisabled: 'elementor-context-menu-list__item--disabled',
        divider: 'elementor-context-menu-list__divider',
        hidden: 'elementor-hidden'
      }
    };
  },
  buildActionItem: function buildActionItem(action) {
    var self = this,
        classes = self.getSettings('classes'),
        $item = jQuery('<div>', {
      class: classes.item + ' ' + classes.itemTypePrefix + action.name
    }),
        $itemTitle = jQuery('<div>', {
      class: classes.itemTitle
    }).text(action.title),
        $itemIcon = jQuery('<div>', {
      class: classes.iconShortcut
    });

    if (action.icon) {
      $itemIcon.html(jQuery('<i>', {
        class: action.icon
      }));
    }

    $item.append($itemIcon, $itemTitle);

    if (action.shortcut) {
      var $itemShortcut = jQuery('<div>', {
        class: classes.itemShortcut
      }).html(action.shortcut);
      $item.append($itemShortcut);
    }

    if (action.callback) {
      $item.on('click', function () {
        self.runAction(action);
      });
    }

    action.$item = $item;
    return $item;
  },
  buildActionsList: function buildActionsList() {
    var self = this,
        classes = self.getSettings('classes'),
        groups = self.getSettings('groups'),
        $list = jQuery('<div>', {
      class: classes.list
    });
    groups.forEach(function (group) {
      var $group = jQuery('<div>', {
        class: classes.group + ' ' + classes.groupPrefix + group.name
      });
      group.actions.forEach(function (action) {
        $group.append(self.buildActionItem(action));
      });
      $list.append($group);
      group.$item = $group;
    });
    return $list;
  },
  toggleGroupVisibility: function toggleGroupVisibility(group, state) {
    group.$item.toggleClass(this.getSettings('classes.hidden'), !state);
  },
  toggleActionVisibility: function toggleActionVisibility(action, state) {
    action.$item.toggleClass(this.getSettings('classes.hidden'), !state);
  },
  toggleActionUsability: function toggleActionUsability(action, state) {
    action.$item.toggleClass(this.getSettings('classes.itemDisabled'), !state);
  },
  isActionEnabled: function isActionEnabled(action) {
    if (!action.callback && !action.groups) {
      return false;
    }

    return action.isEnabled ? action.isEnabled() : true;
  },
  runAction: function runAction(action) {
    if (!this.isActionEnabled(action)) {
      return;
    }

    action.callback();
    this.getModal().hide();
  },
  initModal: function initModal() {
    var modal;

    this.getModal = function () {
      if (!modal) {
        modal = elementorCommon.dialogsManager.createWidget('simple', {
          className: 'elementor-context-menu',
          message: this.buildActionsList(),
          iframe: elementor.$preview,
          effects: {
            hide: 'hide',
            show: 'show'
          },
          hide: {
            onOutsideContextMenu: true
          },
          position: {
            my: (elementorCommon.config.isRTL ? 'right' : 'left') + ' top',
            collision: 'fit'
          }
        });
      }

      return modal;
    };
  },
  show: function show(event) {
    var self = this,
        modal = self.getModal();
    modal.setSettings('position', {
      of: event
    });
    self.getSettings('groups').forEach(function (group) {
      var isGroupVisible = false !== group.isVisible;
      self.toggleGroupVisibility(group, isGroupVisible);

      if (isGroupVisible) {
        group.actions.forEach(function (action) {
          var isActionVisible = false !== action.isVisible;
          self.toggleActionVisibility(action, isActionVisible);

          if (isActionVisible) {
            self.toggleActionUsability(action, self.isActionEnabled(action));
          }
        });
      }
    });
    modal.show();
  },
  destroy: function destroy() {
    this.getModal().destroy();
  },
  onInit: function onInit() {
    this.initModal();
  }
});

/***/ }),
/* 373 */
/***/ (function(module, exports, __webpack_require__) {

"use strict";


var _interopRequireDefault = __webpack_require__(0);

var _Object$defineProperty = __webpack_require__(1);

_Object$defineProperty(exports, "__esModule", {
  value: true
});

exports.default = void 0;

var _classCallCheck2 = _interopRequireDefault(__webpack_require__(2));

var _createClass2 = _interopRequireDefault(__webpack_require__(3));

var _get2 = _interopRequireDefault(__webpack_require__(26));

var _getPrototypeOf2 = _interopRequireDefault(__webpack_require__(16));

var _inherits2 = _interopRequireDefault(__webpack_require__(4));

var _createSuper2 = _interopRequireDefault(__webpack_require__(5));

var _base = _interopRequireDefault(__webpack_require__(296));

var AddSectionView = /*#__PURE__*/function (_BaseAddSectionView) {
  (0, _inherits2.default)(AddSectionView, _BaseAddSectionView);

  var _super = (0, _createSuper2.default)(AddSectionView);

  function AddSectionView() {
    (0, _classCallCheck2.default)(this, AddSectionView);
    return _super.apply(this, arguments);
  }

  (0, _createClass2.default)(AddSectionView, [{
    key: "className",
    value: function className() {
      return (0, _get2.default)((0, _getPrototypeOf2.default)(AddSectionView.prototype), "className", this).call(this) + ' elementor-add-section-inline';
    }
  }, {
    key: "fadeToDeath",
    value: function fadeToDeath() {
      var self = this;
      self.$el.slideUp(function () {
        self.destroy();
      });
    }
  }, {
    key: "onAfterPaste",
    value: function onAfterPaste() {
      (0, _get2.default)((0, _getPrototypeOf2.default)(AddSectionView.prototype), "onAfterPaste", this).call(this);
      this.destroy();
    }
  }, {
    key: "onCloseButtonClick",
    value: function onCloseButtonClick() {
      this.fadeToDeath();
    }
  }, {
    key: "onPresetSelected",
    value: function onPresetSelected(event) {
      (0, _get2.default)((0, _getPrototypeOf2.default)(AddSectionView.prototype), "onPresetSelected", this).call(this, event);
      this.destroy();
    }
  }, {
    key: "onAddTemplateButtonClick",
    value: function onAddTemplateButtonClick() {
      (0, _get2.default)((0, _getPrototypeOf2.default)(AddSectionView.prototype), "onAddTemplateButtonClick", this).call(this);
      this.destroy();
    }
  }, {
    key: "onDropping",
    value: function onDropping() {
      (0, _get2.default)((0, _getPrototypeOf2.default)(AddSectionView.prototype), "onDropping", this).call(this);
      this.destroy();
    }
  }]);
  return AddSectionView;
}(_base.default);

var _default = AddSectionView;
exports.default = _default;

/***/ }),
/* 374 */
/***/ (function(module, exports, __webpack_require__) {

"use strict";


var _section = __webpack_require__(256);

var BaseElementView = __webpack_require__(297),
    ColumnEmptyView = __webpack_require__(375),
    ColumnView;

ColumnView = BaseElementView.extend({
  template: Marionette.TemplateCache.get('#tmpl-elementor-column-content'),
  emptyView: ColumnEmptyView,
  childViewContainer: elementor.config.legacyMode.elementWrappers ? '> .elementor-column-wrap > .elementor-widget-wrap' : '> .elementor-widget-wrap',
  toggleEditTools: true,
  behaviors: function behaviors() {
    var behaviors = BaseElementView.prototype.behaviors.apply(this, arguments);

    _.extend(behaviors, {
      Sortable: {
        behaviorClass: __webpack_require__(298),
        elChildType: 'widget'
      },
      Resizable: {
        behaviorClass: __webpack_require__(376)
      }
    });

    return elementor.hooks.applyFilters('elements/column/behaviors', behaviors, this);
  },
  className: function className() {
    var classes = BaseElementView.prototype.className.apply(this, arguments),
        type = this.isInner() ? 'inner' : 'top';
    return classes + ' elementor-column elementor-' + type + '-column';
  },
  tagName: function tagName() {
    return this.model.getSetting('html_tag') || 'div';
  },
  ui: function ui() {
    var ui = BaseElementView.prototype.ui.apply(this, arguments);
    ui.columnInner = elementor.config.legacyMode.elementWrappers ? '> .elementor-column-wrap' : '> .elementor-widget-wrap';
    ui.percentsTooltip = '> .elementor-element-overlay .elementor-column-percents-tooltip';
    return ui;
  },
  getEditButtons: function getEditButtons() {
    var elementData = elementor.getElementData(this.model),
        editTools = {};
    editTools.edit = {
      title: elementor.translate('edit_element', [elementData.title]),
      icon: 'column'
    };

    if (elementor.getPreferences('edit_buttons')) {
      editTools.duplicate = {
        title: elementor.translate('duplicate_element', [elementData.title]),
        icon: 'clone'
      };
      editTools.add = {
        title: elementor.translate('add_element', [elementData.title]),
        icon: 'plus'
      };
      editTools.remove = {
        title: elementor.translate('delete_element', [elementData.title]),
        icon: 'close'
      };
    }

    return editTools;
  },
  initialize: function initialize() {
    BaseElementView.prototype.initialize.apply(this, arguments);
    this.model.get('editSettings').set('defaultEditRoute', 'layout');
  },
  attachElContent: function attachElContent() {
    BaseElementView.prototype.attachElContent.apply(this, arguments);
    var $tooltip = jQuery('<div>', {
      class: 'elementor-column-percents-tooltip'
    });
    this.$el.children('.elementor-element-overlay').append($tooltip);
  },
  getContextMenuGroups: function getContextMenuGroups() {
    var self = this,
        groups = BaseElementView.prototype.getContextMenuGroups.apply(this, arguments),
        generalGroupIndex = groups.indexOf(_.findWhere(groups, {
      name: 'general'
    }));
    groups.splice(generalGroupIndex + 1, 0, {
      name: 'addNew',
      actions: [{
        name: 'addNew',
        icon: 'eicon-plus',
        title: elementor.translate('new_column'),
        callback: this.addNewColumn.bind(this),
        isEnabled: function isEnabled() {
          return self.model.collection.length < _section.DEFAULT_MAX_COLUMNS;
        }
      }]
    });
    return groups;
  },
  isDroppingAllowed: function isDroppingAllowed() {
    // Don't allow dragging items to document which is not editable.
    if (!this.getContainer().isEditable()) {
      return false;
    }

    var elementView = elementor.channels.panelElements.request('element:selected');

    if (!elementView) {
      return false;
    }

    var elType = elementView.model.get('elType');

    if ('section' === elType) {
      return !this.isInner();
    }

    return 'widget' === elType;
  },
  getPercentsForDisplay: function getPercentsForDisplay() {
    var inlineSize = +this.model.getSetting('_inline_size') || this.getPercentSize();
    return inlineSize.toFixed(1) + '%';
  },
  changeSizeUI: function changeSizeUI() {
    var self = this,
        columnSize = self.model.getSetting('_column_size');
    self.$el.attr('data-col', columnSize);

    _.defer(function () {
      // Wait for the column size to be applied
      if (self.ui.percentsTooltip) {
        self.ui.percentsTooltip.text(self.getPercentsForDisplay());
      }
    });
  },
  getPercentSize: function getPercentSize(size) {
    if (!size) {
      size = this.el.getBoundingClientRect().width;
    }

    return +(size / this.$el.parent().width() * 100).toFixed(3);
  },
  getSortableOptions: function getSortableOptions() {
    return {
      connectWith: '.elementor-widget-wrap',
      items: '> .elementor-element'
    };
  },
  changeChildContainerClasses: function changeChildContainerClasses() {
    var emptyClass = 'elementor-element-empty',
        populatedClass = 'elementor-element-populated';

    if (this.ui.columnInner) {
      if (this.collection.isEmpty()) {
        this.ui.columnInner.removeClass(populatedClass).addClass(emptyClass);
      } else {
        this.ui.columnInner.removeClass(emptyClass).addClass(populatedClass);
      }
    }
  },
  addNewColumn: function addNewColumn() {
    $e.run('document/elements/create', {
      model: {
        elType: 'column'
      },
      container: this.getContainer().parent,
      options: {
        at: this.$el.index() + 1
      }
    });
  },
  onRender: function onRender() {
    var _this = this;

    var isLegacyMode = elementor.config.legacyMode.elementWrappers;
    var itemsClasses = '';

    if (isLegacyMode) {
      itemsClasses = ' > .elementor-column-wrap > .elementor-widget-wrap > .elementor-element, >.elementor-column-wrap > .elementor-widget-wrap > .elementor-empty-view > .elementor-first-add';
    } else {
      itemsClasses = ' > .elementor-widget-wrap > .elementor-element, >.elementor-widget-wrap > .elementor-empty-view > .elementor-first-add';
    }

    BaseElementView.prototype.onRender.apply(this, arguments);
    this.changeChildContainerClasses();
    this.changeSizeUI();
    this.$el.html5Droppable({
      items: itemsClasses,
      axis: ['vertical'],
      groups: ['elementor-element'],
      isDroppingAllowed: this.isDroppingAllowed.bind(this),
      currentElementClass: 'elementor-html5dnd-current-element',
      placeholderClass: 'elementor-sortable-placeholder elementor-widget-placeholder',
      hasDraggingOnChildClass: 'elementor-dragging-on-child',
      onDropping: function onDropping(side, event) {
        event.stopPropagation(); // Triggering drag end manually, since it won't fired above iframe

        elementor.getPreviewView().onPanelElementDragEnd();
        var newIndex = jQuery(event.currentTarget).index(); // Since 3.0.0, the `.elementor-background-overlay` element sit at the same level as widgets

        if ('bottom' === side && isLegacyMode) {
          newIndex++;
        } else if ('top' === side && !isLegacyMode) {
          newIndex--;
        }

        _this.addElementFromPanel({
          at: newIndex
        });
      }
    });
  },
  onAddButtonClick: function onAddButtonClick(event) {
    event.stopPropagation();
    this.addNewColumn();
  }
});
module.exports = ColumnView;

/***/ }),
/* 375 */
/***/ (function(module, exports, __webpack_require__) {

"use strict";


var _interopRequireDefault = __webpack_require__(0);

var _helper = _interopRequireDefault(__webpack_require__(215));

module.exports = Marionette.ItemView.extend({
  template: '#tmpl-elementor-empty-preview',
  className: 'elementor-empty-view',
  events: {
    click: 'onClickAdd'
  },
  behaviors: function behaviors() {
    return {
      contextMenu: {
        behaviorClass: __webpack_require__(273),
        groups: this.getContextMenuGroups()
      }
    };
  },
  getContextMenuGroups: function getContextMenuGroups() {
    var _this = this;

    return [{
      name: 'general',
      actions: [{
        name: 'paste',
        title: elementor.translate('paste'),
        isEnabled: function isEnabled() {
          return _helper.default.isPasteEnabled(_this._parent.getContainer());
        },
        callback: function callback() {
          return $e.run('document/ui/paste', {
            container: _this._parent.getContainer()
          });
        }
      }]
    }];
  },
  onClickAdd: function onClickAdd() {
    $e.route('panel/elements/categories');
  }
});

/***/ }),
/* 376 */
/***/ (function(module, exports, __webpack_require__) {

"use strict";


var ResizableBehavior;
ResizableBehavior = Marionette.Behavior.extend({
  defaults: {
    handles: elementorCommon.config.isRTL ? 'w' : 'e'
  },
  events: {
    resizestart: 'onResizeStart',
    resizestop: 'onResizeStop',
    resize: 'onResize'
  },
  initialize: function initialize() {
    Marionette.Behavior.prototype.initialize.apply(this, arguments);
    this.listenTo(elementor.channels.dataEditMode, 'switch', this.onEditModeSwitched);
  },
  active: function active() {
    if (!elementor.userCan('design')) {
      return;
    }

    this.deactivate();

    var options = _.clone(this.options);

    delete options.behaviorClass;

    var $childViewContainer = this.getChildViewContainer(),
        defaultResizableOptions = {},
        resizableOptions = _.extend(defaultResizableOptions, options);

    $childViewContainer.resizable(resizableOptions);
  },
  deactivate: function deactivate() {
    if (this.getChildViewContainer().resizable('instance')) {
      this.getChildViewContainer().resizable('destroy');
    }
  },
  onEditModeSwitched: function onEditModeSwitched(activeMode) {
    if ('edit' === activeMode) {
      this.active();
    } else {
      this.deactivate();
    }
  },
  onRender: function onRender() {
    var self = this;

    _.defer(function () {
      self.onEditModeSwitched(elementor.channels.dataEditMode.request('activeMode'));
    });
  },
  onDestroy: function onDestroy() {
    this.deactivate();
  },
  onResizeStart: function onResizeStart(event) {
    event.stopPropagation();
    this.view.$el.data('originalWidth', this.view.el.getBoundingClientRect().width);
    this.view.triggerMethod('request:resize:start', event);
  },
  onResizeStop: function onResizeStop(event) {
    event.stopPropagation();
    this.view.triggerMethod('request:resize:stop');
  },
  onResize: function onResize(event, ui) {
    event.stopPropagation();
    this.view.triggerMethod('request:resize', ui, event);
  },
  getChildViewContainer: function getChildViewContainer() {
    return this.$el;
  }
});
module.exports = ResizableBehavior;

/***/ }),
/* 377 */
/***/ (function(module, exports, __webpack_require__) {

"use strict";


var ControlBaseDataView = __webpack_require__(127),
    ControlChooseItemView;

ControlChooseItemView = ControlBaseDataView.extend({
  ui: function ui() {
    var ui = ControlBaseDataView.prototype.ui.apply(this, arguments);
    ui.inputs = '[type="radio"]';
    return ui;
  },
  events: function events() {
    return _.extend(ControlBaseDataView.prototype.events.apply(this, arguments), {
      'mousedown label': 'onMouseDownLabel',
      'click @ui.inputs': 'onClickInput',
      'change @ui.inputs': 'onBaseInputChange'
    });
  },
  applySavedValue: function applySavedValue() {
    var currentValue = this.getControlValue();

    if (currentValue) {
      this.ui.inputs.filter('[value="' + currentValue + '"]').prop('checked', true);
    } else {
      this.ui.inputs.filter(':checked').prop('checked', false);
    }
  },
  onMouseDownLabel: function onMouseDownLabel(event) {
    var $clickedLabel = this.$(event.currentTarget),
        $selectedInput = this.$('#' + $clickedLabel.attr('for'));
    $selectedInput.data('checked', $selectedInput.prop('checked'));
  },
  onClickInput: function onClickInput(event) {
    if (!this.model.get('toggle')) {
      return;
    }

    var $selectedInput = this.$(event.currentTarget);

    if ($selectedInput.data('checked')) {
      $selectedInput.prop('checked', false).trigger('change');
    }
  }
}, {
  onPasteStyle: function onPasteStyle(control, clipboardValue) {
    return '' === clipboardValue || undefined !== control.options[clipboardValue];
  }
});
module.exports = ControlChooseItemView;

/***/ }),
/* 378 */
/***/ (function(module, exports, __webpack_require__) {

"use strict";


var InsertTemplateHandler;
InsertTemplateHandler = Marionette.Behavior.extend({
  ui: {
    insertButton: '.elementor-template-library-template-insert'
  },
  events: {
    'click @ui.insertButton': 'onInsertButtonClick'
  },
  onInsertButtonClick: function onInsertButtonClick() {
    var args = {
      model: this.view.model
    };

    if ('remote' === args.model.get('source') && !elementor.config.library_connect.is_connected) {
      $e.route('library/connect', args);
      return;
    }

    $e.run('library/insert-template', args);
  }
});
module.exports = InsertTemplateHandler;

/***/ }),
/* 379 */
/***/ (function(module, exports, __webpack_require__) {

"use strict";


var TemplateLibraryInsertTemplateBehavior = __webpack_require__(378),
    TemplateLibraryTemplateView;

TemplateLibraryTemplateView = Marionette.ItemView.extend({
  className: function className() {
    var classes = 'elementor-template-library-template',
        source = this.model.get('source');
    classes += ' elementor-template-library-template-' + source;

    if ('remote' === source) {
      classes += ' elementor-template-library-template-' + this.model.get('type');
    }

    if (this.model.get('isPro')) {
      classes += ' elementor-template-library-pro-template';
    }

    return classes;
  },
  ui: function ui() {
    return {
      previewButton: '.elementor-template-library-template-preview'
    };
  },
  events: function events() {
    return {
      'click @ui.previewButton': 'onPreviewButtonClick'
    };
  },
  behaviors: {
    insertTemplate: {
      behaviorClass: TemplateLibraryInsertTemplateBehavior
    }
  }
});
module.exports = TemplateLibraryTemplateView;

/***/ }),
/* 380 */
/***/ (function(module, exports, __webpack_require__) {

"use strict";


var _interopRequireDefault = __webpack_require__(0);

__webpack_require__(25);

var _colorPicker = _interopRequireDefault(__webpack_require__(301));

var ControlMultipleBaseItemView = __webpack_require__(237),
    ControlBoxShadowItemView;

ControlBoxShadowItemView = ControlMultipleBaseItemView.extend({
  ui: function ui() {
    var ui = ControlMultipleBaseItemView.prototype.ui.apply(this, arguments);
    ui.sliders = '.elementor-slider';
    ui.colorPickerPlaceholder = '.elementor-color-picker-placeholder';
    return ui;
  },
  initSliders: function initSliders() {
    var _this = this;

    var value = this.getControlValue();
    this.ui.sliders.each(function (index, slider) {
      var $input = jQuery(slider).next('.elementor-slider-input').find('input');
      var sliderInstance = noUiSlider.create(slider, {
        start: [value[slider.dataset.input]],
        step: 1,
        range: {
          min: +$input.attr('min'),
          max: +$input.attr('max')
        },
        format: {
          to: function to(sliderValue) {
            return +sliderValue.toFixed(1);
          },
          from: function from(sliderValue) {
            return +sliderValue;
          }
        }
      });
      sliderInstance.on('slide', function (values) {
        var type = sliderInstance.target.dataset.input;
        $input.val(values[0]);

        _this.setValue(type, values[0]);
      });
    });
  },
  initColors: function initColors() {
    var _this2 = this;

    this.colorPicker = new _colorPicker.default({
      picker: {
        el: this.ui.colorPickerPlaceholder[0],
        default: this.getControlValue('color')
      },
      onChange: function onChange() {
        _this2.setValue('color', _this2.colorPicker.getColor());
      },
      onClear: function onClear() {
        _this2.setValue('color', '');
      }
    });
  },
  onInputChange: function onInputChange(event) {
    var type = event.currentTarget.dataset.setting,
        $slider = this.ui.sliders.filter('[data-input="' + type + '"]');
    $slider[0].noUiSlider.set(this.getControlValue(type));
  },
  onReady: function onReady() {
    this.initSliders();
    this.initColors();
  },
  onBeforeDestroy: function onBeforeDestroy() {
    this.colorPicker.destroy();
  }
});
module.exports = ControlBoxShadowItemView;

/***/ }),
/* 381 */
/***/ (function(module, exports, __webpack_require__) {

"use strict";


var ControlBaseMultipleItemView = __webpack_require__(237),
    ControlBaseUnitsItemView;

ControlBaseUnitsItemView = ControlBaseMultipleItemView.extend({
  getCurrentRange: function getCurrentRange() {
    return this.getUnitRange(this.getControlValue('unit'));
  },
  getUnitRange: function getUnitRange(unit) {
    var ranges = this.model.get('range');

    if (!ranges || !ranges[unit]) {
      return false;
    }

    return ranges[unit];
  }
});
module.exports = ControlBaseUnitsItemView;

/***/ }),
/* 382 */
/***/ (function(module, exports, __webpack_require__) {

"use strict";


var _interopRequireDefault = __webpack_require__(0);

var _Object$defineProperty = __webpack_require__(1);

_Object$defineProperty(exports, "__esModule", {
  value: true
});

exports.default = void 0;

__webpack_require__(135);

var _classCallCheck2 = _interopRequireDefault(__webpack_require__(2));

var _createClass2 = _interopRequireDefault(__webpack_require__(3));

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 elementor.config.filesUpload.unfilteredFiles;
    }
  }, {
    key: "setUploadTypeCaller",
    value: function setUploadTypeCaller(frame) {
      frame.uploader.uploader.param('uploadTypeCaller', 'elementor-editor-upload');
    }
  }, {
    key: "getUnfilteredFilesNotEnabledDialog",
    value: function getUnfilteredFilesNotEnabledDialog(callback) {
      var onConfirm = function onConfirm() {
        elementorCommon.ajax.addRequest('enable_unfiltered_files_upload', {}, true);
        elementor.config.filesUpload.unfilteredFiles = true;
        callback();
      };

      return elementor.helpers.getSimpleDialog('e-enable-unfiltered-files-dialog', elementor.translate('enable_unfiltered_files_upload'), elementor.translate('dialog_confirm_enable_unfiltered_files_upload'), elementor.translate('enable'), onConfirm);
    }
  }]);
  return FilesUploadHandler;
}();

exports.default = FilesUploadHandler;

/***/ }),
/* 383 */
/***/ (function(module, exports, __webpack_require__) {

"use strict";


var _interopRequireDefault = __webpack_require__(0);

__webpack_require__(80);

var _typeof2 = _interopRequireDefault(__webpack_require__(48));

var ColumnSettingsModel = __webpack_require__(583),
    ElementModel;

ElementModel = Backbone.Model.extend({
  defaults: {
    id: '',
    elType: '',
    isInner: false,
    settings: {},
    defaultEditSettings: {
      defaultEditRoute: 'content'
    }
  },
  remoteRender: false,
  _htmlCache: null,
  _jqueryXhr: null,
  renderOnLeave: false,
  initialize: function initialize(options) {
    var elType = this.get('elType'),
        elements = this.get('elements');

    if (undefined !== elements) {
      var ElementsCollection = __webpack_require__(384);

      this.set('elements', new ElementsCollection(elements));
    }

    if ('widget' === elType) {
      this.remoteRender = true;
      this.setHtmlCache(options.htmlCache || '');
    } // No need this variable anymore


    delete options.htmlCache; // Make call to remote server as throttle function

    this.renderRemoteServer = _.throttle(this.renderRemoteServer, 1000);
    this.initSettings();
    this.initEditSettings();
    this.on({
      destroy: this.onDestroy,
      'editor:close': this.onCloseEditor
    });
  },
  initSettings: function initSettings() {
    var elType = this.get('elType'),
        settings = this.get('settings'),
        settingModels = {
      column: ColumnSettingsModel
    },
        SettingsModel = settingModels[elType] || elementorModules.editor.elements.models.BaseSettings;

    if (jQuery.isEmptyObject(settings)) {
      settings = elementorCommon.helpers.cloneObject(settings);
    }

    if ('widget' === elType) {
      settings.widgetType = this.get('widgetType');
    }

    settings.elType = elType;
    settings.isInner = this.get('isInner');
    settings = new SettingsModel(settings, {
      controls: elementor.getElementControls(this)
    });
    this.set('settings', settings);
    elementorFrontend.config.elements.data[this.cid] = settings;
  },
  initEditSettings: function initEditSettings() {
    var editSettings = new Backbone.Model(this.get('defaultEditSettings'));
    this.set('editSettings', editSettings);
    elementorFrontend.config.elements.editSettings[this.cid] = editSettings;
  },
  setSetting: function setSetting(key, value) {
    var settings = this.get('settings');

    if ('object' !== (0, _typeof2.default)(key)) {
      var keyParts = key.split('.'),
          isRepeaterKey = 3 === keyParts.length;
      key = keyParts[0];

      if (isRepeaterKey) {
        settings = settings.get(key).models[keyParts[1]];
        key = keyParts[2];
      }
    }

    settings.setExternalChange(key, value);
  },
  getSetting: function getSetting(key) {
    var keyParts = key.split('.'),
        isRepeaterKey = 3 === keyParts.length,
        settings = this.get('settings');
    key = keyParts[0];
    var value = settings.get(key);

    if (undefined === value) {
      return '';
    }

    if (isRepeaterKey) {
      value = value.models[keyParts[1]].get(keyParts[2]);
    }

    return value;
  },
  setHtmlCache: function setHtmlCache(htmlCache) {
    this._htmlCache = htmlCache;
  },
  getHtmlCache: function getHtmlCache() {
    return this._htmlCache;
  },
  getDefaultTitle: function getDefaultTitle() {
    return elementor.getElementData(this).title;
  },
  getTitle: function getTitle() {
    var title = this.getSetting('_title');

    if (!title) {
      title = this.getDefaultTitle();
    }

    return title;
  },
  getIcon: function getIcon() {
    return elementor.getElementData(this).icon;
  },
  createRemoteRenderRequest: function createRemoteRenderRequest() {
    var data = this.toJSON();
    return elementorCommon.ajax.addRequest('render_widget', {
      unique_id: this.cid,
      data: {
        data: data
      },
      success: this.onRemoteGetHtml.bind(this)
    }, true).jqXhr;
  },
  renderRemoteServer: function renderRemoteServer() {
    if (!this.remoteRender) {
      return;
    }

    this.renderOnLeave = false;
    this.trigger('before:remote:render');

    if (this.isRemoteRequestActive()) {
      this._jqueryXhr.abort();
    }

    this._jqueryXhr = this.createRemoteRenderRequest();
  },
  isRemoteRequestActive: function isRemoteRequestActive() {
    return this._jqueryXhr && 4 !== this._jqueryXhr.readyState;
  },
  onRemoteGetHtml: function onRemoteGetHtml(data) {
    this.setHtmlCache(data.render);
    this.trigger('remote:render');
  },
  clone: function clone() {
    var newModel = new this.constructor(elementorCommon.helpers.cloneObject(this.attributes));
    newModel.set('id', elementorCommon.helpers.getUniqueId());
    newModel.setHtmlCache(this.getHtmlCache());
    var elements = this.get('elements');

    if (!_.isEmpty(elements)) {
      newModel.set('elements', elements.clone());
    }

    return newModel;
  },
  toJSON: function toJSON(options) {
    options = options || {}; // Call parent's toJSON method

    var data = Backbone.Model.prototype.toJSON.call(this);

    _.each(data, function (attribute, key) {
      if (attribute && attribute.toJSON) {
        data[key] = attribute.toJSON(options);
      }
    });

    if (options.copyHtmlCache) {
      data.htmlCache = this.getHtmlCache();
    } else {
      delete data.htmlCache;
    }

    if (options.remove) {
      options.remove.forEach(function (key) {
        return delete data[key];
      });
    }

    return data;
  },
  onCloseEditor: function onCloseEditor() {
    if (this.renderOnLeave) {
      this.renderRemoteServer();
    }
  },
  onDestroy: function onDestroy() {
    // Clean the memory for all use instances
    var settings = this.get('settings'),
        elements = this.get('elements');

    if (undefined !== elements) {
      _.each(_.clone(elements.models), function (model) {
        model.destroy();
      });
    }

    settings.destroy();
  }
});
ElementModel.prototype.sync = ElementModel.prototype.fetch = ElementModel.prototype.save = _.noop;
module.exports = ElementModel;

/***/ }),
/* 384 */
/***/ (function(module, exports, __webpack_require__) {

"use strict";


var ElementModel = __webpack_require__(383);

var ElementsCollection = Backbone.Collection.extend({
  add: function add(models, options, isCorrectSet) {
    if ((!options || !options.silent) && !isCorrectSet) {
      throw 'Call Error: Adding model to element collection is allowed only by the dedicated addChildModel() method.';
    }

    return Backbone.Collection.prototype.add.call(this, models, options);
  },
  model: function model(attrs, options) {
    var ModelClass = Backbone.Model;

    if (attrs.elType) {
      ModelClass = elementor.hooks.applyFilters('element/model', ElementModel, attrs);
    }

    return new ModelClass(attrs, options);
  },
  clone: function clone() {
    var tempCollection = Backbone.Collection.prototype.clone.apply(this, arguments),
        newCollection = new ElementsCollection();
    tempCollection.forEach(function (model) {
      newCollection.add(model.clone(), null, true);
    });
    return newCollection;
  }
});
ElementsCollection.prototype.sync = ElementsCollection.prototype.fetch = ElementsCollection.prototype.save = _.noop;
module.exports = ElementsCollection;

/***/ }),
/* 385 */
/***/ (function(module, exports, __webpack_require__) {

"use strict";


__webpack_require__(334);

module.exports = Marionette.ItemView.extend({
  template: '#tmpl-elementor-panel-global',
  id: 'elementor-panel-global',
  initialize: function initialize() {
    elementor.getPanelView().getCurrentPageView().search.reset();
  }
});

/***/ }),
/* 386 */
/***/ (function(module, exports) {

// 7.2.9 SameValue(x, y)
module.exports = Object.is || function is(x, y) {
  // eslint-disable-next-line no-self-compare
  return x === y ? x !== 0 || 1 / x === 1 / y : x != x && y != y;
};


/***/ }),
/* 387 */
/***/ (function(module, exports, __webpack_require__) {

"use strict";


__webpack_require__(58);

module.exports = Marionette.ItemView.extend({
  template: '#tmpl-elementor-element-library-element',
  className: function className() {
    var className = 'elementor-element-wrapper';

    if (!this.isEditable()) {
      className += ' elementor-element--promotion';
    }

    return className;
  },
  events: function events() {
    var events = {};

    if (!this.isEditable()) {
      events.mousedown = 'onMouseDown';
    }

    return events;
  },
  ui: {
    element: '.elementor-element'
  },
  isEditable: function isEditable() {
    return false !== this.model.get('editable');
  },
  onRender: function onRender() {
    var _this = this;

    if (!elementor.userCan('design') || !this.isEditable()) {
      return;
    }

    this.ui.element.html5Draggable({
      onDragStart: function onDragStart() {
        elementor.channels.panelElements.reply('element:selected', _this).trigger('element:drag:start');
      },
      onDragEnd: function onDragEnd() {
        elementor.channels.panelElements.trigger('element:drag:end');
      },
      groups: ['elementor-element']
    });
  },
  onMouseDown: function onMouseDown() {
    elementor.promotion.showDialog({
      headerMessage: elementor.translate('element_promotion_dialog_header', [this.model.get('title')]),
      message: elementor.translate('element_promotion_dialog_message', [this.model.get('title')]),
      top: '-7',
      element: this.el,
      actionURL: elementor.config.elementPromotionURL.replace('%s', this.model.get('name'))
    });
  }
});

/***/ }),
/* 388 */
/***/ (function(module, exports, __webpack_require__) {

"use strict";

/**
 * Handles managing all events for whatever you plug it into. Priorities for hooks are based on lowest to highest in
 * that, lowest priority hooks are fired first.
 */

var _interopRequireDefault = __webpack_require__(0);

var _parseInt2 = _interopRequireDefault(__webpack_require__(213));

var EventManager = function EventManager() {
  var slice = Array.prototype.slice,
      MethodsAvailable;
  /**
   * Contains the hooks that get registered with this EventManager. The array for storage utilizes a "flat"
   * object literal such that looking up the hook utilizes the native object literal hash.
   */

  var STORAGE = {
    actions: {},
    filters: {}
  };
  /**
   * Removes the specified hook by resetting the value of it.
   *
   * @param type Type of hook, either 'actions' or 'filters'
   * @param hook The hook (namespace.identifier) to remove
   *
   * @private
   */

  function _removeHook(type, hook, callback, context) {
    var handlers, handler, i;

    if (!STORAGE[type][hook]) {
      return;
    }

    if (!callback) {
      STORAGE[type][hook] = [];
    } else {
      handlers = STORAGE[type][hook];

      if (!context) {
        for (i = handlers.length; i--;) {
          if (handlers[i].callback === callback) {
            handlers.splice(i, 1);
          }
        }
      } else {
        for (i = handlers.length; i--;) {
          handler = handlers[i];

          if (handler.callback === callback && handler.context === context) {
            handlers.splice(i, 1);
          }
        }
      }
    }
  }
  /**
   * Use an insert sort for keeping our hooks organized based on priority. This function is ridiculously faster
   * than bubble sort, etc: http://jsperf.com/javascript-sort
   *
   * @param hooks The custom array containing all of the appropriate hooks to perform an insert sort on.
   * @private
   */


  function _hookInsertSort(hooks) {
    var tmpHook, j, prevHook;

    for (var i = 1, len = hooks.length; i < len; i++) {
      tmpHook = hooks[i];
      j = i;

      while ((prevHook = hooks[j - 1]) && prevHook.priority > tmpHook.priority) {
        hooks[j] = hooks[j - 1];
        --j;
      }

      hooks[j] = tmpHook;
    }

    return hooks;
  }
  /**
   * Adds the hook to the appropriate storage container
   *
   * @param type 'actions' or 'filters'
   * @param hook The hook (namespace.identifier) to add to our event manager
   * @param callback The function that will be called when the hook is executed.
   * @param priority The priority of this hook. Must be an integer.
   * @param [context] A value to be used for this
   * @private
   */


  function _addHook(type, hook, callback, priority, context) {
    var hookObject = {
      callback: callback,
      priority: priority,
      context: context
    }; // Utilize 'prop itself' : http://jsperf.com/hasownproperty-vs-in-vs-undefined/19

    var hooks = STORAGE[type][hook];

    if (hooks) {
      // TEMP FIX BUG
      var hasSameCallback = false;
      jQuery.each(hooks, function () {
        if (this.callback === callback) {
          hasSameCallback = true;
          return false;
        }
      });

      if (hasSameCallback) {
        return;
      } // END TEMP FIX BUG


      hooks.push(hookObject);
      hooks = _hookInsertSort(hooks);
    } else {
      hooks = [hookObject];
    }

    STORAGE[type][hook] = hooks;
  }
  /**
   * Runs the specified hook. If it is an action, the value is not modified but if it is a filter, it is.
   *
   * @param type 'actions' or 'filters'
   * @param hook The hook ( namespace.identifier ) to be ran.
   * @param args Arguments to pass to the action/filter. If it's a filter, args is actually a single parameter.
   * @private
   */


  function _runHook(type, hook, args) {
    var handlers = STORAGE[type][hook],
        i,
        len;

    if (!handlers) {
      return 'filters' === type ? args[0] : false;
    }

    len = handlers.length;

    if ('filters' === type) {
      for (i = 0; i < len; i++) {
        args[0] = handlers[i].callback.apply(handlers[i].context, args);
      }
    } else {
      for (i = 0; i < len; i++) {
        handlers[i].callback.apply(handlers[i].context, args);
      }
    }

    return 'filters' === type ? args[0] : true;
  }
  /**
   * Adds an action to the event manager.
   *
   * @param action Must contain namespace.identifier
   * @param callback Must be a valid callback function before this action is added
   * @param [priority=10] Used to control when the function is executed in relation to other callbacks bound to the same hook
   * @param [context] Supply a value to be used for this
   */


  function addAction(action, callback, priority, context) {
    if ('string' === typeof action && 'function' === typeof callback) {
      priority = (0, _parseInt2.default)(priority || 10, 10);

      _addHook('actions', action, callback, priority, context);
    }

    return MethodsAvailable;
  }
  /**
   * Performs an action if it exists. You can pass as many arguments as you want to this function; the only rule is
   * that the first argument must always be the action.
   */


  function doAction()
  /* action, arg1, arg2, ... */
  {
    var args = slice.call(arguments);
    var action = args.shift();

    if ('string' === typeof action) {
      _runHook('actions', action, args);
    }

    return MethodsAvailable;
  }
  /**
   * Removes the specified action if it contains a namespace.identifier & exists.
   *
   * @param action The action to remove
   * @param [callback] Callback function to remove
   */


  function removeAction(action, callback) {
    if ('string' === typeof action) {
      _removeHook('actions', action, callback);
    }

    return MethodsAvailable;
  }
  /**
   * Adds a filter to the event manager.
   *
   * @param filter Must contain namespace.identifier
   * @param callback Must be a valid callback function before this action is added
   * @param [priority=10] Used to control when the function is executed in relation to other callbacks bound to the same hook
   * @param [context] Supply a value to be used for this
   */


  function addFilter(filter, callback, priority, context) {
    if ('string' === typeof filter && 'function' === typeof callback) {
      priority = (0, _parseInt2.default)(priority || 10, 10);

      _addHook('filters', filter, callback, priority, context);
    }

    return MethodsAvailable;
  }
  /**
   * Performs a filter if it exists. You should only ever pass 1 argument to be filtered. The only rule is that
   * the first argument must always be the filter.
   */


  function applyFilters()
  /* filter, filtered arg, arg2, ... */
  {
    var args = slice.call(arguments);
    var filter = args.shift();

    if ('string' === typeof filter) {
      return _runHook('filters', filter, args);
    }

    return MethodsAvailable;
  }
  /**
   * Removes the specified filter if it contains a namespace.identifier & exists.
   *
   * @param filter The action to remove
   * @param [callback] Callback function to remove
   */


  function removeFilter(filter, callback) {
    if ('string' === typeof filter) {
      _removeHook('filters', filter, callback);
    }

    return MethodsAvailable;
  }
  /**
   * Maintain a reference to the object scope so our public methods never get confusing.
   */


  MethodsAvailable = {
    removeFilter: removeFilter,
    applyFilters: applyFilters,
    addFilter: addFilter,
    removeAction: removeAction,
    doAction: doAction,
    addAction: addAction
  }; // return all of the publicly available methods

  return MethodsAvailable;
};

module.exports = EventManager;

/***/ }),
/* 389 */
/***/ (function(module, exports, __webpack_require__) {

"use strict";


var PanelElementsElementModel;
PanelElementsElementModel = Backbone.Model.extend({
  defaults: {
    title: '',
    categories: [],
    keywords: [],
    icon: '',
    elType: 'widget',
    widgetType: ''
  }
});
module.exports = PanelElementsElementModel;

/***/ }),
/* 390 */
/***/ (function(module, exports, __webpack_require__) {

"use strict";


var PanelElementsElementModel = __webpack_require__(389),
    PanelElementsElementsCollection;

PanelElementsElementsCollection = Backbone.Collection.extend({
  model: PanelElementsElementModel
  /*,
  comparator: 'title'*/

});
module.exports = PanelElementsElementsCollection;

/***/ }),
/* 391 */
/***/ (function(module, exports, __webpack_require__) {

"use strict";


var childViewTypes = {
  color: __webpack_require__(624),
  typography: __webpack_require__(625)
},
    PanelSchemeBaseView;
PanelSchemeBaseView = Marionette.CompositeView.extend({
  id: function id() {
    return 'elementor-panel-scheme-' + this.getType();
  },
  className: function className() {
    return 'elementor-panel-scheme elementor-panel-scheme-' + this.getUIType();
  },
  childViewContainer: '.elementor-panel-scheme-items',
  getTemplate: function getTemplate() {
    return Marionette.TemplateCache.get('#tmpl-elementor-panel-schemes-' + this.getType());
  },
  getChildView: function getChildView() {
    return childViewTypes[this.getUIType()];
  },
  getUIType: function getUIType() {
    return this.getType();
  },
  ui: function ui() {
    return {
      saveButton: '.elementor-panel-scheme-save .elementor-button',
      discardButton: '.elementor-panel-scheme-discard .elementor-button',
      resetButton: '.elementor-panel-scheme-reset .elementor-button'
    };
  },
  events: function events() {
    return {
      'click @ui.saveButton': 'saveScheme',
      'click @ui.discardButton': 'discardScheme',
      'click @ui.resetButton': 'setDefaultScheme'
    };
  },
  initialize: function initialize() {
    this.model = new Backbone.Model();
    this.resetScheme();
  },
  getType: function getType() {},
  getScheme: function getScheme() {
    return elementor.schemes.getScheme(this.getType());
  },
  changeChildrenUIValues: function changeChildrenUIValues(schemeItems) {
    var self = this;

    _.each(schemeItems, function (value, key) {
      var model = self.collection.findWhere({
        key: key
      }),
          childView = self.children.findByModelCid(model.cid);
      childView.changeUIValue(value);
    });
  },
  discardScheme: function discardScheme() {
    elementor.schemes.resetSchemes(this.getType());
    this.onSchemeChange();
    this.ui.saveButton.prop('disabled', true);

    this._renderChildren();
  },
  setSchemeValue: function setSchemeValue(key, value) {
    elementor.schemes.setSchemeValue(this.getType(), key, value);
    this.onSchemeChange();
  },
  saveScheme: function saveScheme() {
    NProgress.start();
    elementor.schemes.saveScheme(this.getType()).done(NProgress.done);
    this.ui.saveButton.prop('disabled', true);
    this.resetScheme();

    this._renderChildren();
  },
  setDefaultScheme: function setDefaultScheme() {
    var defaultScheme = elementor.config.default_schemes[this.getType()].items;
    this.changeChildrenUIValues(defaultScheme);
  },
  resetItems: function resetItems() {
    this.model.set('items', this.getScheme().items);
  },
  resetCollection: function resetCollection() {
    var self = this,
        items = self.model.get('items');
    self.collection = new Backbone.Collection();

    _.each(items, function (item, key) {
      item.type = self.getType();
      item.key = key;
      self.collection.add(item);
    });
  },
  resetScheme: function resetScheme() {
    this.resetItems();
    this.resetCollection();
  },
  onSchemeChange: function onSchemeChange() {
    elementor.schemes.printSchemesStyle();
  },
  onChildviewValueChange: function onChildviewValueChange(childView, newValue) {
    this.ui.saveButton.removeProp('disabled');
    this.setSchemeValue(childView.model.get('key'), newValue);
  }
});
module.exports = PanelSchemeBaseView;

/***/ }),
/* 392 */
/***/ (function(module, exports, __webpack_require__) {

"use strict";


var PanelSchemeItemView;
PanelSchemeItemView = Marionette.ItemView.extend({
  getTemplate: function getTemplate() {
    return Marionette.TemplateCache.get('#tmpl-elementor-panel-scheme-' + this.getUIType() + '-item');
  },
  className: function className() {
    return 'elementor-panel-scheme-item';
  }
});
module.exports = PanelSchemeItemView;

/***/ }),
/* 393 */,
/* 394 */,
/* 395 */,
/* 396 */,
/* 397 */,
/* 398 */,
/* 399 */,
/* 400 */,
/* 401 */,
/* 402 */,
/* 403 */,
/* 404 */,
/* 405 */,
/* 406 */,
/* 407 */,
/* 408 */,
/* 409 */,
/* 410 */,
/* 411 */,
/* 412 */,
/* 413 */,
/* 414 */,
/* 415 */,
/* 416 */,
/* 417 */,
/* 418 */,
/* 419 */
/***/ (function(module, exports, __webpack_require__) {

"use strict";


var _interopRequireDefault = __webpack_require__(0);

var _Object$defineProperty2 = __webpack_require__(1);

_Object$defineProperty2(exports, "__esModule", {
  value: true
});

exports.default = void 0;

__webpack_require__(25);

var _defineProperty2 = _interopRequireDefault(__webpack_require__(1));

var _classCallCheck2 = _interopRequireDefault(__webpack_require__(2));

var _createClass2 = _interopRequireDefault(__webpack_require__(3));

var _assertThisInitialized2 = _interopRequireDefault(__webpack_require__(49));

var _inherits2 = _interopRequireDefault(__webpack_require__(4));

var _createSuper2 = _interopRequireDefault(__webpack_require__(5));

var _defineProperty3 = _interopRequireDefault(__webpack_require__(28));

var _color = _interopRequireDefault(__webpack_require__(420));

var _dateTime = _interopRequireDefault(__webpack_require__(425));

var _component = _interopRequireDefault(__webpack_require__(426));

var _environment = _interopRequireDefault(__webpack_require__(272));

var _module = _interopRequireDefault(__webpack_require__(349));

var _hotkeys = _interopRequireDefault(__webpack_require__(458));

var _iconsManager = _interopRequireDefault(__webpack_require__(462));

var _menu = _interopRequireDefault(__webpack_require__(472));

var _promotion = _interopRequireDefault(__webpack_require__(475));

var _manager = _interopRequireDefault(__webpack_require__(476));

var _navigator = _interopRequireDefault(__webpack_require__(514));

var _noticeBar = _interopRequireDefault(__webpack_require__(524));

var _preview = _interopRequireDefault(__webpack_require__(525));

var _popoverToggle = _interopRequireDefault(__webpack_require__(529));

/* global ElementorConfig */
var DEFAULT_DEVICE_MODE = 'desktop';

var EditorBase = /*#__PURE__*/function (_Marionette$Applicati) {
  (0, _inherits2.default)(EditorBase, _Marionette$Applicati);

  var _super = (0, _createSuper2.default)(EditorBase);

  function EditorBase() {
    var _this;

    (0, _classCallCheck2.default)(this, EditorBase);

    for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
      args[_key] = arguments[_key];
    }

    _this = _super.call.apply(_super, [this].concat(args));
    (0, _defineProperty3.default)((0, _assertThisInitialized2.default)(_this), "widgetsCache", {});
    (0, _defineProperty3.default)((0, _assertThisInitialized2.default)(_this), "config", {});
    (0, _defineProperty3.default)((0, _assertThisInitialized2.default)(_this), "loaded", false);
    (0, _defineProperty3.default)((0, _assertThisInitialized2.default)(_this), "previewLoadedOnce", false);
    (0, _defineProperty3.default)((0, _assertThisInitialized2.default)(_this), "helpers", __webpack_require__(530));
    (0, _defineProperty3.default)((0, _assertThisInitialized2.default)(_this), "imagesManager", __webpack_require__(534));
    (0, _defineProperty3.default)((0, _assertThisInitialized2.default)(_this), "schemes", __webpack_require__(535));
    (0, _defineProperty3.default)((0, _assertThisInitialized2.default)(_this), "presetsFactory", __webpack_require__(536));
    (0, _defineProperty3.default)((0, _assertThisInitialized2.default)(_this), "templates", __webpack_require__(537));
    (0, _defineProperty3.default)((0, _assertThisInitialized2.default)(_this), "ajax", elementorCommon.ajax);
    (0, _defineProperty3.default)((0, _assertThisInitialized2.default)(_this), "conditions", __webpack_require__(557));
    (0, _defineProperty3.default)((0, _assertThisInitialized2.default)(_this), "history", __webpack_require__(349));
    (0, _defineProperty3.default)((0, _assertThisInitialized2.default)(_this), "channels", {
      editor: Backbone.Radio.channel('ELEMENTOR:editor'),
      data: Backbone.Radio.channel('ELEMENTOR:data'),
      panelElements: Backbone.Radio.channel('ELEMENTOR:panelElements'),
      dataEditMode: Backbone.Radio.channel('ELEMENTOR:editmode'),
      deviceMode: Backbone.Radio.channel('ELEMENTOR:deviceMode'),
      templates: Backbone.Radio.channel('ELEMENTOR:templates')
    });
    (0, _defineProperty3.default)((0, _assertThisInitialized2.default)(_this), "modules", {
      // TODO: Deprecated alias since 2.3.0
      get Module() {
        elementorCommon.helpers.hardDeprecated('elementor.modules.Module', '2.3.0', 'elementorModules.Module');
        return elementorModules.Module;
      },

      components: {
        templateLibrary: {
          views: {
            // TODO: Deprecated alias since 2.4.0
            get BaseModalLayout() {
              elementorCommon.helpers.hardDeprecated('elementor.modules.components.templateLibrary.views.BaseModalLayout', '2.4.0', 'elementorModules.common.views.modal.Layout');
              return elementorModules.common.views.modal.Layout;
            }

          }
        },
        saver: {
          behaviors: {
            FooterSaver: __webpack_require__(558)
          }
        }
      },
      saver: {
        get footerBehavior() {
          elementorCommon.helpers.softDeprecated('elementor.modules.saver.footerBehavior.', '2.9.0', 'elementor.modules.components.saver.behaviors.FooterSaver');
          return elementor.modules.components.saver.behaviors.FooterSaver;
        }

      },
      controls: {
        Animation: __webpack_require__(274),
        Base: __webpack_require__(281),
        BaseData: __webpack_require__(127),
        BaseMultiple: __webpack_require__(237),
        Box_shadow: __webpack_require__(380),
        Button: __webpack_require__(559),
        Choose: __webpack_require__(377),
        Code: __webpack_require__(560),
        Color: _color.default,
        Date_time: _dateTime.default,
        Dimensions: __webpack_require__(561),
        Exit_animation: __webpack_require__(274),
        Font: __webpack_require__(564),
        Gallery: __webpack_require__(565),
        Hidden: __webpack_require__(566),
        Hover_animation: __webpack_require__(274),
        Icon: __webpack_require__(567),
        Icons: __webpack_require__(568),
        Image_dimensions: __webpack_require__(569),
        Media: __webpack_require__(570),
        Number: __webpack_require__(571),
        Order: __webpack_require__(573),
        Popover_toggle: _popoverToggle.default,
        Repeater: __webpack_require__(367),
        RepeaterRow: __webpack_require__(328),
        Section: __webpack_require__(574),
        Select: __webpack_require__(575),
        Select2: __webpack_require__(274),
        Slider: __webpack_require__(576),
        Structure: __webpack_require__(577),
        Switcher: __webpack_require__(578),
        Tab: __webpack_require__(579),
        Text_shadow: __webpack_require__(380),
        Url: __webpack_require__(580),
        Wp_widget: __webpack_require__(581),
        Wysiwyg: __webpack_require__(582)
      },
      elements: {
        models: {
          // TODO: Deprecated alias since 2.4.0
          get BaseSettings() {
            elementorCommon.helpers.hardDeprecated('elementor.modules.elements.models.BaseSettings', '2.4.0', 'elementorModules.editor.elements.models.BaseSettings');
            return elementorModules.editor.elements.models.BaseSettings;
          },

          Element: __webpack_require__(383)
        },
        views: {
          Widget: __webpack_require__(584)
        }
      },
      layouts: {
        panel: {
          pages: {
            elements: {
              views: {
                Global: __webpack_require__(385),
                Elements: __webpack_require__(588)
              }
            },
            menu: {
              Menu: _menu.default
            }
          }
        }
      },
      views: {
        // TODO: Deprecated alias since 2.4.0
        get ControlsStack() {
          elementorCommon.helpers.hardDeprecated('elementor.modules.views.ControlsStack', '2.4.0', 'elementorModules.editor.views.ControlsStack');
          return elementorModules.editor.views.ControlsStack;
        }

      }
    });
    (0, _defineProperty3.default)((0, _assertThisInitialized2.default)(_this), "backgroundClickListeners", {
      popover: {
        element: '.elementor-controls-popover',
        ignore: '.elementor-control-popover-toggle-toggle, .elementor-control-popover-toggle-toggle-label, .select2-container, .pcr-app'
      },
      globalControlsSelect: {
        element: '.e-global__popover',
        ignore: '.e-global__popover-toggle'
      },
      tagsList: {
        element: '.elementor-tags-list',
        ignore: '.elementor-control-dynamic-switcher'
      },
      panelFooterSubMenus: {
        element: '.elementor-panel-footer-tool.elementor-toggle-state',
        ignore: '.elementor-panel-footer-tool.elementor-toggle-state, #elementor-panel-saver-button-publish-label',
        callback: function callback($elementsToHide) {
          $elementsToHide.removeClass('elementor-open');
        }
      },
      panelResponsiveSwitchers: {
        element: '.elementor-control-responsive-switchers',
        callback: function callback($elementsToHide) {
          $elementsToHide.removeClass('elementor-responsive-switchers-open');
        }
      },
      promotion: {
        ignore: '.elementor-panel-category-items',
        callback: function callback() {
          var dialog = elementor.promotion.dialog;

          if (dialog) {
            dialog.hide();
          }
        }
      }
    });
    return _this;
  }

  (0, _createClass2.default)(EditorBase, [{
    key: "userCan",
    value: function userCan(capability) {
      return -1 === this.config.user.restrictions.indexOf(capability);
    }
  }, {
    key: "addControlView",
    value: function addControlView(controlID, ControlView) {
      this.modules.controls[elementorCommon.helpers.upperCaseWords(controlID)] = ControlView;
    }
  }, {
    key: "checkEnvCompatibility",
    value: function checkEnvCompatibility() {
      return _environment.default.firefox || _environment.default.webkit;
    }
  }, {
    key: "getElementData",
    value: function getElementData(model) {
      var elType = model.get('elType');

      if ('widget' === elType) {
        var widgetType = model.get('widgetType');

        if (!this.widgetsCache[widgetType]) {
          return false;
        }

        if (!this.widgetsCache[widgetType].commonMerged) {
          jQuery.extend(this.widgetsCache[widgetType].controls, this.widgetsCache.common.controls);
          this.widgetsCache[widgetType].commonMerged = true;
        }

        return this.widgetsCache[widgetType];
      }

      if (!this.config.elements[elType]) {
        return false;
      }

      var elementConfig = elementorCommon.helpers.cloneObject(this.config.elements[elType]);

      if ('section' === elType && model.get('isInner')) {
        elementConfig.title = this.translate('inner_section');
      }

      return elementConfig;
    }
  }, {
    key: "getElementControls",
    value: function getElementControls(modelElement) {
      var elementData = this.getElementData(modelElement);

      if (!elementData) {
        return false;
      }

      var isInner = modelElement.get('isInner'),
          controls = {};

      _.each(elementData.controls, function (controlData, controlKey) {
        if (isInner && controlData.hide_in_inner || !isInner && controlData.hide_in_top) {
          return;
        }

        controls[controlKey] = controlData;
      });

      return controls;
    }
  }, {
    key: "mergeControlsSettings",
    value: function mergeControlsSettings(controls) {
      var _this2 = this;

      _.each(controls, function (controlData, controlKey) {
        controls[controlKey] = jQuery.extend(true, {}, _this2.config.controls[controlData.type], controlData);
      });

      return controls;
    }
  }, {
    key: "getControlView",
    value: function getControlView(controlID) {
      var capitalizedControlName = elementorCommon.helpers.upperCaseWords(controlID);
      var View = this.modules.controls[capitalizedControlName];

      if (!View) {
        var controlData = this.config.controls[controlID],
            isUIControl = controlData && -1 !== controlData.features.indexOf('ui');
        View = this.modules.controls[isUIControl ? 'Base' : 'BaseData'];
      }

      return View;
    }
  }, {
    key: "getPanelView",
    value: function getPanelView() {
      return this.panel.currentView;
    }
  }, {
    key: "getPreviewView",
    value: function getPreviewView() {
      return this.previewView;
    }
  }, {
    key: "getPreviewContainer",
    value: function getPreviewContainer() {
      return this.getPreviewView().getContainer();
    }
  }, {
    key: "getContainer",
    value: function getContainer(id) {
      if ('document' === id) {
        return this.getPreviewContainer();
      }

      return $e.components.get('document').utils.findContainerById(id);
    }
  }, {
    key: "initComponents",
    value: function initComponents() {
      var EventManager = __webpack_require__(388),
          DynamicTags = __webpack_require__(589),
          Settings = __webpack_require__(591),
          Notifications = __webpack_require__(596);

      this.hooks = new EventManager();
      this.settings = new Settings();
      this.dynamicTags = new DynamicTags();
      this.initDialogsManager();
      this.notifications = new Notifications();
      this.kitManager = new _manager.default();
      this.hotkeysScreen = new _hotkeys.default();
      this.iconManager = new _iconsManager.default();
      this.noticeBar = new _noticeBar.default();
      this.history = new _module.default();
      this.promotion = new _promotion.default();
      this.documents = $e.components.register(new _component.default());
      elementorCommon.elements.$window.trigger('elementor:init-components');
    } // TODO: BC method since 2.3.0

  }, {
    key: "initDialogsManager",
    value: function initDialogsManager() {
      this.dialogsManager = elementorCommon.dialogsManager;
    }
  }, {
    key: "initElements",
    value: function initElements() {
      var ElementCollection = __webpack_require__(384);

      var config = this.config.document.elements; // If it's an reload, use the not-saved data

      if (this.elements && this.elements.length && this.config.document.id === this.config.initial_document.id) {
        config = this.elements.toJSON();
      }

      this.elements = new ElementCollection(config);
      this.elementsModel = new Backbone.Model({
        elements: this.elements
      });
    }
  }, {
    key: "initPreview",
    value: function initPreview() {
      var $ = jQuery,
          previewIframeId = 'elementor-preview-iframe';
      this.$previewWrapper = $('#elementor-preview');
      this.$previewResponsiveWrapper = $('#elementor-preview-responsive-wrapper'); // Make sure the iFrame does not exist.

      if (!this.$preview) {
        this.$preview = $('<iframe>', {
          id: previewIframeId,
          src: this.config.initial_document.urls.preview,
          allowfullscreen: 1
        });
        this.$previewResponsiveWrapper.append(this.$preview);
      }

      this.$preview.on('load', this.onPreviewLoaded.bind(this));
    }
  }, {
    key: "initPreviewView",
    value: function initPreviewView(document) {
      elementor.trigger('document:before:preview', document);
      var preview = new _preview.default({
        el: document.$element[0],
        model: elementor.elementsModel
      });
      preview.$el.empty();
      preview.resetChildViewContainer(); // In order to force rendering of children

      preview.isRendered = true;

      preview._renderChildren();

      preview.triggerMethod('render');
      this.previewView = preview;
    }
  }, {
    key: "initFrontend",
    value: function initFrontend() {
      var frontendWindow = this.$preview[0].contentWindow;
      window.elementorFrontend = frontendWindow.elementorFrontend;
      frontendWindow.elementor = this;
      frontendWindow.elementorCommon = elementorCommon;
      elementorFrontend.init();
      this.trigger('frontend:init');
    }
  }, {
    key: "initClearPageDialog",
    value: function initClearPageDialog() {
      var dialog;

      this.getClearPageDialog = function () {
        if (dialog) {
          return dialog;
        }

        dialog = elementorCommon.dialogsManager.createWidget('confirm', {
          id: 'elementor-clear-page-dialog',
          headerMessage: elementor.translate('clear_page'),
          message: elementor.translate('dialog_confirm_clear_page'),
          position: {
            my: 'center center',
            at: 'center center'
          },
          strings: {
            confirm: elementor.translate('delete'),
            cancel: elementor.translate('cancel')
          },
          onConfirm: function onConfirm() {
            return $e.run('document/elements/empty', {
              force: true
            });
          }
        });
        return dialog;
      };
    }
  }, {
    key: "getCurrentElement",
    value: function getCurrentElement() {
      var isPreview = -1 !== ['BODY', 'IFRAME'].indexOf(document.activeElement.tagName) && 'BODY' === elementorFrontend.elements.window.document.activeElement.tagName;

      if (!isPreview && !elementorCommonConfig.isTesting) {
        return false;
      }

      var targetElement = elementor.channels.editor.request('contextMenu:targetView');

      if (!targetElement) {
        var panel = elementor.getPanelView();

        if ($e.routes.isPartOf('panel/editor')) {
          targetElement = panel.getCurrentPageView().getOption('editedElementView');
        }
      }

      if (!targetElement) {
        targetElement = elementor.getPreviewView();
      }

      return targetElement;
    }
  }, {
    key: "initPanel",
    value: function initPanel() {
      this.addRegions({
        panel: __webpack_require__(597)
      });
      this.trigger('panel:init');
    }
  }, {
    key: "initNavigator",
    value: function initNavigator() {
      this.addRegions({
        navigator: {
          el: '#elementor-navigator',
          regionClass: _navigator.default
        }
      });
      this.trigger('navigator:init');
    }
  }, {
    key: "setAjax",
    value: function setAjax() {
      elementorCommon.ajax.addRequestConstant('editor_post_id', this.config.document.id);
      elementorCommon.ajax.addRequestConstant('initial_document_id', this.config.initial_document.id);
      elementorCommon.ajax.on('request:unhandledError', function (xmlHttpRequest) {
        elementor.notifications.showToast({
          message: elementor.createAjaxErrorMessage(xmlHttpRequest)
        });
      });
    }
  }, {
    key: "createAjaxErrorMessage",
    value: function createAjaxErrorMessage(xmlHttpRequest) {
      var message;

      if (4 === xmlHttpRequest.readyState) {
        message = this.translate('server_error');

        if (200 !== xmlHttpRequest.status) {
          message += ' (' + xmlHttpRequest.status + ' ' + xmlHttpRequest.statusText + ')';
        }
      } else if (0 === xmlHttpRequest.readyState) {
        message = this.translate('server_connection_lost');
      } else {
        message = this.translate('unknown_error');
      }

      return message + '.';
    }
  }, {
    key: "preventClicksInsideEditor",
    value: function preventClicksInsideEditor() {
      this.$previewContents.on('submit', function (event) {
        return event.preventDefault();
      }); // Cannot use arrow function here since it use `this.contains`.

      this.$previewContents.on('click', function (event) {
        var _elementor$documents$;

        var $target = jQuery(event.target),
            isClickInsideElementor = !!$target.closest('.elementor-edit-area, .pen-menu').length,
            isTargetInsideDocument = this.contains($target[0]);

        if ($target.closest('a:not(.elementor-clickable)').length) {
          event.preventDefault();
        }

        if (isClickInsideElementor && elementor.getPreviewContainer().isEditable() || !isTargetInsideDocument) {
          return;
        } // It's a click on the preview area, not in the edit area,
        // and a document is open and has an edit area.


        if (!isClickInsideElementor && ((_elementor$documents$ = elementor.documents.getCurrent()) === null || _elementor$documents$ === void 0 ? void 0 : _elementor$documents$.$element)) {
          $e.internal('panel/open-default');
        }
      });
    }
  }, {
    key: "addBackgroundClickArea",
    value: function addBackgroundClickArea(element) {
      element.addEventListener('click', this.onBackgroundClick.bind(this), true);
    }
  }, {
    key: "addBackgroundClickListener",
    value: function addBackgroundClickListener(key, listener) {
      this.backgroundClickListeners[key] = listener;
    }
  }, {
    key: "removeBackgroundClickListener",
    value: function removeBackgroundClickListener(key) {
      delete this.backgroundClickListeners[key];
    }
  }, {
    key: "showFatalErrorDialog",
    value: function showFatalErrorDialog(options) {
      var defaultOptions = {
        id: 'elementor-fatal-error-dialog',
        headerMessage: '',
        message: '',
        position: {
          my: 'center center',
          at: 'center center'
        },
        strings: {
          confirm: this.translate('learn_more'),
          cancel: this.translate('go_back')
        },
        onConfirm: null,
        onCancel: function onCancel() {
          return parent.history.go(-1);
        },
        hide: {
          onBackgroundClick: false,
          onButtonClick: false
        }
      };
      options = jQuery.extend(true, defaultOptions, options);
      elementorCommon.dialogsManager.createWidget('confirm', options).show();
    }
  }, {
    key: "showFlexBoxAttentionDialog",
    value: function showFlexBoxAttentionDialog() {
      var _this3 = this;

      var introduction = new elementorModules.editor.utils.Introduction({
        introductionKey: 'flexbox',
        dialogType: 'confirm',
        dialogOptions: {
          id: 'elementor-flexbox-attention-dialog',
          headerMessage: this.translate('flexbox_attention_header'),
          message: this.translate('flexbox_attention_message'),
          position: {
            my: 'center center',
            at: 'center center'
          },
          strings: {
            confirm: this.translate('learn_more'),
            cancel: this.translate('got_it')
          },
          hide: {
            onButtonClick: false
          },
          onCancel: function onCancel() {
            introduction.setViewed();
            introduction.getDialog().hide();
          },
          onConfirm: function onConfirm() {
            return open(_this3.config.help_flexbox_bc_url, '_blank');
          }
        }
      });
      introduction.show();
    }
  }, {
    key: "checkPageStatus",
    value: function checkPageStatus() {
      if (elementor.documents.getCurrent().isDraft()) {
        this.notifications.showToast({
          message: this.translate('working_on_draft_notification'),
          buttons: [{
            name: 'view_revisions',
            text: elementor.translate('view_all_revisions'),
            callback: function callback() {
              return $e.route('panel/history/revisions');
            }
          }]
        });
      }
    }
  }, {
    key: "enterPreviewMode",
    value: function enterPreviewMode(hidePanel) {
      var $elements = elementorFrontend.elements.$body;

      if (hidePanel) {
        $elements = $elements.add(elementorCommon.elements.$body);
      }

      $elements.removeClass('elementor-editor-active').addClass('elementor-editor-preview');
      var $element = this.documents.getCurrent().$element;

      if ($element) {
        $element.removeClass('elementor-edit-area-active');
      }

      if (hidePanel) {
        // Handle panel resize
        this.$previewWrapper.css(elementorCommon.config.isRTL ? 'right' : 'left', '');
        this.panel.$el.css('width', '');
      }
    }
  }, {
    key: "exitPreviewMode",
    value: function exitPreviewMode() {
      elementorFrontend.elements.$body.add(elementorCommon.elements.$body).removeClass('elementor-editor-preview').addClass('elementor-editor-active');

      if (elementor.config.document.panel.has_elements) {
        this.documents.getCurrent().$element.addClass('elementor-edit-area-active');
      }
    }
  }, {
    key: "changeEditMode",
    value: function changeEditMode(newMode) {
      var dataEditMode = elementor.channels.dataEditMode,
          oldEditMode = dataEditMode.request('activeMode');
      dataEditMode.reply('activeMode', newMode);

      if (newMode !== oldEditMode) {
        dataEditMode.trigger('switch', newMode);
      }
    }
  }, {
    key: "reloadPreview",
    value: function reloadPreview() {
      // TODO: Should be command?
      jQuery('#elementor-preview-loading').show();
      this.$preview[0].contentWindow.location.reload(true);
    }
  }, {
    key: "changeDeviceMode",
    value: function changeDeviceMode(newDeviceMode) {
      var oldDeviceMode = this.channels.deviceMode.request('currentMode');

      if (oldDeviceMode === newDeviceMode) {
        return;
      }

      elementorCommon.elements.$body.removeClass('elementor-device-' + oldDeviceMode).addClass('elementor-device-' + newDeviceMode);
      this.channels.deviceMode.reply('previousMode', oldDeviceMode).reply('currentMode', newDeviceMode).trigger('change');
    }
  }, {
    key: "translate",
    value: function translate(stringKey, templateArgs, i18nStack) {
      // TODO: BC since 2.3.0, it always should be `this.config.i18n`
      if (!i18nStack) {
        i18nStack = this.config.i18n;
      }

      return elementorCommon.translate(stringKey, null, templateArgs, i18nStack);
    }
  }, {
    key: "logSite",
    value: function logSite() {
      var text = '',
          style = '';

      if (_environment.default.firefox) {
        var asciiText = [' ;;;;;;;;;;;;;;; ', ';;;  ;;       ;;;', ';;;  ;;;;;;;;;;;;', ';;;  ;;;;;;;;;;;;', ';;;  ;;       ;;;', ';;;  ;;;;;;;;;;;;', ';;;  ;;;;;;;;;;;;', ';;;  ;;       ;;;', ' ;;;;;;;;;;;;;;; '];
        text += '%c' + asciiText.join('\n') + '\n';
        style = 'color: #C42961';
      } else {
        text += '%c00';
        style = 'font-size: 22px; background-image: url("' + elementorCommon.config.urls.assets + 'images/logo-icon.png"); color: transparent; background-repeat: no-repeat';
      }

      setTimeout(console.log.bind(console, text, style)); // eslint-disable-line

      text = '%cLove using Elementor? Join our growing community of Elementor developers: %chttps://github.com/elementor/elementor';
      setTimeout(console.log.bind(console, text, 'color: #9B0A46', '')); // eslint-disable-line
    }
  }, {
    key: "requestWidgetsConfig",
    value: function requestWidgetsConfig() {
      var _this4 = this;

      var excludeWidgets = {};
      jQuery.each(this.widgetsCache, function (widgetName, widgetConfig) {
        if (widgetConfig.controls) {
          excludeWidgets[widgetName] = true;
        }
      });
      elementorCommon.ajax.addRequest('get_widgets_config', {
        data: {
          exclude: excludeWidgets
        },
        success: function success(data) {
          _this4.addWidgetsCache(data);

          if (_this4.loaded) {
            _this4.kitManager.renderGlobalsDefaultCSS();

            $e.internal('panel/state-ready');
          } else {
            _this4.once('panel:init', function () {
              $e.internal('panel/state-ready');
            });
          }
        }
      });
    }
  }, {
    key: "getPreferences",
    value: function getPreferences(key) {
      var settings = elementor.settings.editorPreferences.model.attributes;

      if (key) {
        return settings[key];
      }

      return settings;
    }
  }, {
    key: "getConfig",
    value: function getConfig() {
      return ElementorConfig;
    }
  }, {
    key: "onStart",
    value: function onStart() {
      this.config = this.getConfig();
      Backbone.Radio.DEBUG = false;
      Backbone.Radio.tuneIn('ELEMENTOR');
      this.initComponents();

      if (!this.checkEnvCompatibility()) {
        this.onEnvNotCompatible();
      }

      this.initPreview();
      this.requestWidgetsConfig();
      this.channels.dataEditMode.reply('activeMode', 'edit');
      this.listenTo(this.channels.dataEditMode, 'switch', this.onEditModeSwitched);
      this.initClearPageDialog();
      this.addBackgroundClickArea(document);
      this.addDeprecatedConfigProperties();
      elementorCommon.elements.$window.trigger('elementor:loaded');
      $e.run('editor/documents/open', {
        id: this.config.initial_document.id
      }).then(function () {
        elementorCommon.elements.$window.trigger('elementor:init');
      });
      this.initNavigator();
      this.logSite();
    }
  }, {
    key: "onPreviewLoaded",
    value: function onPreviewLoaded() {
      var previewWindow = this.$preview[0].contentWindow;

      if (!previewWindow.elementorFrontend) {
        this.onPreviewLoadingError();
        return;
      }

      this.$previewContents = this.$preview.contents();
      this.initFrontend();
      this.schemes.init();
      this.preventClicksInsideEditor();
      this.addBackgroundClickArea(elementorFrontend.elements.window.document);

      if (!this.previewLoadedOnce) {
        this.onFirstPreviewLoaded();
      }

      this.$previewContents.children().addClass('elementor-html');
      var $frontendBody = elementorFrontend.elements.$body;
      $frontendBody.addClass('elementor-editor-active');

      if (!elementor.userCan('design')) {
        $frontendBody.addClass('elementor-editor-content-only');
      }

      this.changeDeviceMode(DEFAULT_DEVICE_MODE);
      jQuery('#elementor-loading, #elementor-preview-loading').fadeOut(600);

      _.defer(function () {
        elementorFrontend.elements.window.jQuery.holdReady(false);
      });

      $e.shortcuts.bindListener(elementorFrontend.elements.$window);
      this.trigger('preview:loaded', !this.loaded
      /* isFirst */
      );
      $e.internal('editor/documents/attach-preview');
      this.loaded = true;
    }
  }, {
    key: "onFirstPreviewLoaded",
    value: function onFirstPreviewLoaded() {
      this.initPanel();
      this.previewLoadedOnce = true;
    }
  }, {
    key: "onEditModeSwitched",
    value: function onEditModeSwitched() {
      var activeMode = this.channels.dataEditMode.request('activeMode');

      if ('edit' === activeMode) {
        this.exitPreviewMode();
      } else {
        this.enterPreviewMode('preview' === activeMode);
      }
    }
  }, {
    key: "onEnvNotCompatible",
    value: function onEnvNotCompatible() {
      var _this5 = this;

      this.showFatalErrorDialog({
        headerMessage: this.translate('device_incompatible_header'),
        message: this.translate('device_incompatible_message'),
        strings: {
          confirm: elementor.translate('proceed_anyway')
        },
        hide: {
          onButtonClick: true
        },
        onConfirm: function onConfirm() {
          return _this5.hide();
        }
      });
    }
  }, {
    key: "onPreviewLoadingError",
    value: function onPreviewLoadingError() {
      var _this6 = this;

      var debugUrl = this.config.document.urls.preview + '&preview-debug',
          previewDebugLinkText = this.config.i18n.preview_debug_link_text,
          previewDebugLink = '<div id="elementor-preview-debug-link-text"><a href="' + debugUrl + '" target="_blank">' + previewDebugLinkText + '</a></div>',
          debugData = elementor.config.preview.debug_data,
          dialogOptions = {
        className: 'elementor-preview-loading-error',
        headerMessage: debugData.header,
        message: debugData.message + previewDebugLink,
        onConfirm: function onConfirm() {
          return open(debugData.doc_url, '_blank');
        }
      };

      if (debugData.error) {
        this.showFatalErrorDialog(dialogOptions);
        return;
      }

      jQuery.get(debugUrl, function () {
        _this6.showFatalErrorDialog(dialogOptions);
      }).fail(function (response) {
        //Iframe can't be loaded
        _this6.showFatalErrorDialog({
          className: 'elementor-preview-loading-error',
          headerMessage: debugData.header,
          message: response.statusText + ' ' + response.status + ' ' + previewDebugLink,
          onConfirm: function onConfirm() {
            var url = 500 <= response.status ? elementor.config.preview.help_preview_http_error_500_url : elementor.config.preview.help_preview_http_error_url;
            open(url, '_blank');
          }
        });
      });
    }
  }, {
    key: "onPreviewElNotFound",
    value: function onPreviewElNotFound() {
      var args = this.$preview[0].contentWindow.elementorPreviewErrorArgs;

      if (!args) {
        args = {
          headerMessage: this.translate('preview_el_not_found_header'),
          message: this.translate('preview_el_not_found_message'),
          confirmURL: elementor.config.help_the_content_url
        };
      }

      args.onConfirm = function () {
        return open(args.confirmURL, '_blank');
      };

      this.showFatalErrorDialog(args);
    }
  }, {
    key: "onBackgroundClick",
    value: function onBackgroundClick(event) {
      jQuery.each(this.backgroundClickListeners, function (index, config) {
        var $clickedTarget = jQuery(event.target); // If it's a label that associated with an input

        if ($clickedTarget[0].control) {
          $clickedTarget = $clickedTarget.add($clickedTarget[0].control);
        }

        if (config.ignore && $clickedTarget.closest(config.ignore).length) {
          return;
        }

        var $clickedTargetClosestElement = $clickedTarget.closest(config.element),
            $elementsToHide = jQuery(config.element).not($clickedTargetClosestElement);

        if (config.callback) {
          config.callback($elementsToHide);
          return;
        }

        $elementsToHide.hide();
      });
    }
  }, {
    key: "compileTemplate",
    value: function compileTemplate(template, data) {
      return Marionette.TemplateCache.prototype.compileTemplate(template)(data);
    }
  }, {
    key: "addWidgetsCache",
    value: function addWidgetsCache(widgets) {
      var _this7 = this;

      jQuery.each(widgets, function (widgetName, widgetConfig) {
        _this7.widgetsCache[widgetName] = jQuery.extend(true, {}, _this7.widgetsCache[widgetName], widgetConfig);
      });
    }
  }, {
    key: "addDeprecatedConfigProperties",
    value: function addDeprecatedConfigProperties() {
      var _this8 = this;

      var map = {
        data: {
          replacement: 'elements',
          value: function value() {
            return elementor.config.document.elements;
          }
        },
        current_user_can_publish: {
          replacement: 'user.can_publish',
          value: function value() {
            return elementor.config.document.user.can_publish;
          }
        },
        locked_user: {
          replacement: '',
          value: function value() {
            return elementor.config.document.user.locked;
          }
        },
        revisions_enabled: {
          replacement: 'revisions.enabled',
          value: function value() {
            return elementor.config.document.revisions.enabled;
          }
        },
        current_revision_id: {
          replacement: 'revisions.current_id',
          value: function value() {
            return elementor.config.document.revisions.current_id;
          }
        }
      };
      jQuery.each(map, function (key, data) {
        // Use `defineProperty` because `get property()` fails during the `Marionette...extend`.
        (0, _defineProperty2.default)(_this8.config, key, {
          get: function get() {
            var replacement = data.replacement ? 'elementor.config.document.' + data.replacement : '';
            elementorCommon.helpers.softDeprecated('elementor.config.' + key, '2.9.0', replacement); // return from current document.

            return data.value();
          },
          set: function set() {
            elementorCommon.helpers.softDeprecated('elementor.config.' + key, '2.9.0', 'elementor.config.document.' + data.replacement);
            throw Error('Deprecated');
          }
        });
      });
      (0, _defineProperty2.default)(this.config.settings, 'page', {
        get: function get() {
          elementorCommon.helpers.softDeprecated('elementor.config.settings.page', '2.9.0', 'elementor.config.document.settings');
          return elementor.config.document.settings;
        }
      });
      (0, _defineProperty2.default)(this.config, 'widgets', {
        get: function get() {
          elementorCommon.helpers.softDeprecated('elementor.config.widgets', '2.9.0', 'elementor.widgetsCache');
          return elementor.widgetsCache;
        }
      });
      (0, _defineProperty2.default)(this, '$previewElementorEl', {
        get: function get() {
          elementorCommon.helpers.softDeprecated('elementor.$previewElementorEl', '2.9.4', 'elementor.documents.getCurrent().$element');
          return elementor.documents.getCurrent().$element;
        }
      });
    }
  }, {
    key: "toggleDocumentCssFiles",
    value: function toggleDocumentCssFiles(document, state) {
      var selectors = ["#elementor-post-".concat(document.config.id, "-css"), "#elementor-preview-".concat(document.config.revisions.current_id)],
          $files = this.$previewContents.find(selectors.join(',')),
          type = state ? 'text/css' : 'elementor/disabled-css';
      $files.attr({
        type: type
      });
    }
  }, {
    key: "debug",
    get: function get() {
      elementorCommon.helpers.softDeprecated('elementor.debug', '3.0.0', 'elementorCommon.debug');
      return elementorCommon.debug;
    }
    /**
     * Exporting modules that can be used externally
     * TODO: All of the following entries should move to `elementorModules.editor`
     */

  }]);
  return EditorBase;
}(Marionette.Application);

exports.default = EditorBase;

/***/ }),
/* 420 */
/***/ (function(module, exports, __webpack_require__) {

"use strict";


var _interopRequireDefault = __webpack_require__(0);

var _Object$defineProperty = __webpack_require__(1);

_Object$defineProperty(exports, "__esModule", {
  value: true
});

exports.default = void 0;

__webpack_require__(183);

var _regenerator = _interopRequireDefault(__webpack_require__(82));

__webpack_require__(66);

var _asyncToGenerator2 = _interopRequireDefault(__webpack_require__(83));

var _values = _interopRequireDefault(__webpack_require__(55));

__webpack_require__(147);

__webpack_require__(117);

__webpack_require__(72);

var _toConsumableArray2 = _interopRequireDefault(__webpack_require__(299));

var _classCallCheck2 = _interopRequireDefault(__webpack_require__(2));

var _createClass2 = _interopRequireDefault(__webpack_require__(3));

var _get2 = _interopRequireDefault(__webpack_require__(26));

var _getPrototypeOf2 = _interopRequireDefault(__webpack_require__(16));

var _inherits2 = _interopRequireDefault(__webpack_require__(4));

var _createSuper2 = _interopRequireDefault(__webpack_require__(5));

var _baseData = _interopRequireDefault(__webpack_require__(127));

var _colorPicker = _interopRequireDefault(__webpack_require__(301));

var _default = /*#__PURE__*/function (_ControlBaseDataView) {
  (0, _inherits2.default)(_default, _ControlBaseDataView);

  var _super = (0, _createSuper2.default)(_default);

  function _default() {
    (0, _classCallCheck2.default)(this, _default);
    return _super.apply(this, arguments);
  }

  (0, _createClass2.default)(_default, [{
    key: "ui",
    value: function ui() {
      var ui = (0, _get2.default)((0, _getPrototypeOf2.default)(_default.prototype), "ui", this).call(this);
      ui.pickerContainer = '.elementor-color-picker-placeholder';
      return ui;
    }
  }, {
    key: "applySavedValue",
    value: function applySavedValue() {
      // Gets the current OR default value of the control.
      var currentValue = this.getCurrentValue();

      if (this.colorPicker) {
        // When there is a global set on the control but there is no value/it doesn't exist, don't show a value.
        if (currentValue) {
          var _this$colorPicker$pic;

          // Set the picker color without triggering the 'onChange' event.
          var parsedColor = this.colorPicker.picker._parseLocalColor(currentValue);

          (_this$colorPicker$pic = this.colorPicker.picker).setHSVA.apply(_this$colorPicker$pic, (0, _toConsumableArray2.default)(parsedColor.values).concat([false]));
        } else {
          this.colorPicker.picker._clearColor(true);
        }
      } else {
        this.initPicker();
      }

      this.$el.toggleClass('e-control-color--no-value', !currentValue);
    }
  }, {
    key: "initPicker",
    value: function initPicker() {
      var _this$model$get,
          _this = this;

      var options = {
        picker: {
          el: this.ui.pickerContainer[0],
          default: this.getCurrentValue(),
          components: {
            opacity: this.model.get('alpha')
          },
          defaultRepresentation: 'HEX'
        },
        // Don't create the add button in the Global Settings color pickers.
        addButton: (_this$model$get = this.model.get('global')) === null || _this$model$get === void 0 ? void 0 : _this$model$get.active,
        onChange: function onChange() {
          return _this.onPickerChange();
        },
        onClear: function onClear() {
          return _this.onPickerClear();
        },
        onAddButtonClick: function onAddButtonClick() {
          return _this.onAddGlobalButtonClick();
        }
      };
      this.colorPicker = new _colorPicker.default(options);
      this.$pickerButton = jQuery(this.colorPicker.picker.getRoot().button);
      this.addTipsyToPickerButton();
      this.$pickerButton.on('click', function () {
        return _this.onPickerButtonClick();
      });
      jQuery(this.colorPicker.picker.getRoot().root).addClass('elementor-control-unit-1 elementor-control-tag-area');
    }
  }, {
    key: "addTipsyToPickerButton",
    value: function addTipsyToPickerButton() {
      var _this2 = this;

      this.$pickerButton.tipsy({
        title: function title() {
          var currentValue = _this2.getCurrentValue(); // If there is a global enabled for the control, but the global has no value.


          if (_this2.getGlobalKey() && !currentValue) {
            currentValue = "".concat(elementor.translate('invalid'), " ").concat(elementor.translate('global_color'));
          }

          return currentValue || '';
        },
        offset: 4,
        gravity: function gravity() {
          return 's';
        }
      });
    }
  }, {
    key: "getGlobalMeta",
    value: function getGlobalMeta() {
      return {
        commandName: this.getGlobalCommand(),
        key: this.model.get('name'),
        controlType: 'colors',
        route: 'panel/global/global-colors'
      };
    }
  }, {
    key: "getNameAlreadyExistsMessage",
    value: function getNameAlreadyExistsMessage() {
      return '<i class="eicon-info-circle"></i> ' + elementor.translate('global_color_already_exists');
    }
  }, {
    key: "getConfirmTextMessage",
    value: function getConfirmTextMessage() {
      return elementor.translate('global_color_confirm_text');
    }
  }, {
    key: "getAddGlobalConfirmMessage",
    value: function getAddGlobalConfirmMessage(globalColors) {
      var colorTitle = elementor.translate('new_global_color'),
          currentValue = this.getCurrentValue(),
          $message = jQuery('<div>', {
        class: 'e-global__confirm-message'
      }),
          $messageText = jQuery('<div>', {
        class: 'e-global__confirm-message-text'
      }),
          $inputWrapper = jQuery('<div>', {
        class: 'e-global__confirm-input-wrapper'
      }),
          $colorPreview = jQuery('<div>', {
        class: 'e-global__color-preview',
        style: 'background-color: ' + currentValue
      }),
          $input = jQuery('<input>', {
        type: 'text',
        name: 'global-name',
        placeholder: colorTitle
      }).val(colorTitle);
      var messageContent; // Check if the color already exists in the global colors, and display an appropriate message.

      for (var _i = 0, _Object$values = (0, _values.default)(globalColors); _i < _Object$values.length; _i++) {
        var globalColor = _Object$values[_i];

        if (currentValue === globalColor.value) {
          messageContent = this.getNameAlreadyExistsMessage();
          break;
        } else if (colorTitle === globalColor.title) {
          messageContent = this.getConfirmTextMessage();
          break;
        } else {
          messageContent = elementor.translate('global_color_confirm_text');
        }
      }

      $messageText.html(messageContent);
      $inputWrapper.append($colorPreview, $input);
      $message.append($messageText, $inputWrapper);
      return $message;
    }
  }, {
    key: "getGlobalCommand",
    value: function getGlobalCommand() {
      return 'globals/colors';
    } // The globalData parameter is received from the Data API.

  }, {
    key: "createGlobalItemMarkup",
    value: function createGlobalItemMarkup(globalData) {
      var $color = jQuery('<div>', {
        class: 'e-global__preview-item e-global__color',
        'data-global-id': globalData.id
      }),
          $colorPreview = jQuery('<div>', {
        class: 'e-global__color-preview',
        style: 'background-color: ' + globalData.value
      }),
          $colorTitle = jQuery('<span>', {
        class: 'e-global__color-title'
      }).html(globalData.title),
          $colorHex = jQuery('<span>', {
        class: 'e-global__color-hex'
      }).html(globalData.value);
      $color.append($colorPreview, $colorTitle, $colorHex);
      return $color;
    }
  }, {
    key: "getGlobalsList",
    value: function () {
      var _getGlobalsList = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee() {
        var result;
        return _regenerator.default.wrap(function _callee$(_context) {
          while (1) {
            switch (_context.prev = _context.next) {
              case 0:
                _context.next = 2;
                return $e.data.get(this.getGlobalCommand());

              case 2:
                result = _context.sent;
                return _context.abrupt("return", result.data);

              case 4:
              case "end":
                return _context.stop();
            }
          }
        }, _callee, this);
      }));

      function getGlobalsList() {
        return _getGlobalsList.apply(this, arguments);
      }

      return getGlobalsList;
    }() // Create the markup for the colors in the global select dropdown.

  }, {
    key: "buildGlobalsList",
    value: function buildGlobalsList(globalColors) {
      var _this3 = this;

      var $globalColorsPreviewContainer = jQuery('<div>', {
        class: 'e-global__preview-items-container'
      });
      (0, _values.default)(globalColors).forEach(function (color) {
        if (!color.value) {
          return;
        }

        var $color = _this3.createGlobalItemMarkup(color);

        $globalColorsPreviewContainer.append($color);
      });
      this.ui.$globalColorsPreviewContainer = $globalColorsPreviewContainer;
      return $globalColorsPreviewContainer;
    }
  }, {
    key: "onPickerChange",
    value: function onPickerChange() {
      this.setValue(this.colorPicker.picker.getColor().toHEXA().toString());

      if (!this.isCustom) {
        this.triggerMethod('value:type:change');
        this.colorPicker.toggleClearButtonState(true);

        if (this.$el.hasClass('e-control-color--no-value')) {
          this.$el.removeClass('e-control-color--no-value');
        }

        this.isCustom = true;
      }
    }
  }, {
    key: "onPickerClear",
    value: function onPickerClear() {
      this.isCustom = false; // Empty the value saved in the control.

      this.setValue(''); // Adjust the Global select box text according to the cleared value.

      this.triggerMethod('value:type:change');
      this.applySavedValue();
      this.colorPicker.toggleClearButtonState(false);
    }
  }, {
    key: "onPickerButtonClick",
    value: function onPickerButtonClick() {
      if (this.getGlobalKey()) {
        this.triggerMethod('unset:global:value');
      } else if (this.isGlobalActive() && !this.getControlValue() && this.getGlobalDefault()) {
        this.triggerMethod('unlink:global:default');
      } // If there is a value in the control, set the clear button to active, if not, deactivate it.


      this.colorPicker.toggleClearButtonState(!!this.getCurrentValue());
    }
  }, {
    key: "onAddGlobalButtonClick",
    value: function onAddGlobalButtonClick() {
      var _this4 = this;

      this.getGlobalsList().then(function (globalsList) {
        _this4.globalsList = globalsList;

        _this4.triggerMethod('add:global:to:list', _this4.getAddGlobalConfirmMessage(globalsList));
      });
    }
  }, {
    key: "onBeforeDestroy",
    value: function onBeforeDestroy() {
      if (this.colorPicker) {
        this.colorPicker.destroy();
      }
    }
  }]);
  return _default;
}(_baseData.default);

exports.default = _default;

/***/ }),
/* 421 */
/***/ (function(module, exports, __webpack_require__) {

"use strict";


var _interopRequireDefault = __webpack_require__(0);

var _defineProperty2 = _interopRequireDefault(__webpack_require__(28));

var _keys = _interopRequireDefault(__webpack_require__(23));

__webpack_require__(39);

__webpack_require__(25);

var TagPanelView = __webpack_require__(422);

module.exports = Marionette.Behavior.extend({
  tagView: null,
  listenerAttached: false,
  initialize: function initialize() {
    if (!this.listenerAttached) {
      this.listenTo(this.view.options.container.settings, 'change:external:__dynamic__', this.onAfterExternalChange);
      this.listenerAttached = true;
    }
  },
  renderTools: function renderTools() {
    var _this = this;

    if (this.getOption('dynamicSettings').default) {
      return;
    }

    var $dynamicSwitcher = jQuery(Marionette.Renderer.render('#tmpl-elementor-control-dynamic-switcher'));
    $dynamicSwitcher.on('click', function (event) {
      return _this.onDynamicSwitcherClick(event);
    });
    this.$el.find('.elementor-control-dynamic-switcher-wrapper').append($dynamicSwitcher);
    this.ui.dynamicSwitcher = $dynamicSwitcher;

    if ('color' === this.view.model.get('type')) {
      if (this.view.colorPicker) {
        this.moveDynamicSwitcherToColorPicker();
      } else {
        setTimeout(function () {
          return _this.moveDynamicSwitcherToColorPicker();
        });
      }
    } // Add a Tipsy Tooltip to the Dynamic Switcher


    this.ui.dynamicSwitcher.tipsy({
      title: function title() {
        return this.getAttribute('data-tooltip');
      },
      gravity: 's'
    });
  },
  moveDynamicSwitcherToColorPicker: function moveDynamicSwitcherToColorPicker() {
    var $colorPickerToolsContainer = this.view.colorPicker.$pickerToolsContainer;
    this.ui.dynamicSwitcher.removeClass('elementor-control-unit-1').addClass('e-control-tool');
    $colorPickerToolsContainer.append(this.ui.dynamicSwitcher);
  },
  toggleDynamicClass: function toggleDynamicClass() {
    this.$el.toggleClass('elementor-control-dynamic-value', this.isDynamicMode());
  },
  isDynamicMode: function isDynamicMode() {
    var dynamicSettings = this.view.container.settings.get('__dynamic__');
    return !!(dynamicSettings && dynamicSettings[this.view.model.get('name')]);
  },
  createTagsList: function createTagsList() {
    var tags = _.groupBy(this.getOption('tags'), 'group'),
        groups = elementor.dynamicTags.getConfig('groups'),
        $tagsList = this.ui.tagsList = jQuery('<div>', {
      class: 'elementor-tags-list'
    }),
        $tagsListInner = jQuery('<div>', {
      class: 'elementor-tags-list__inner'
    });

    $tagsList.append($tagsListInner);
    jQuery.each(groups, function (groupName) {
      var groupTags = tags[groupName];

      if (!groupTags) {
        return;
      }

      var group = this,
          $groupTitle = jQuery('<div>', {
        class: 'elementor-tags-list__group-title'
      }).text(group.title);
      $tagsListInner.append($groupTitle);
      groupTags.forEach(function (tag) {
        var $tag = jQuery('<div>', {
          class: 'elementor-tags-list__item'
        });
        $tag.text(tag.title).attr('data-tag-name', tag.name);
        $tagsListInner.append($tag);
      });
    }); // Create and inject pro dynamic teaser template if Pro is not installed

    if (!elementor.helpers.hasPro() && (0, _keys.default)(tags).length) {
      var proTeaser = Marionette.Renderer.render('#tmpl-elementor-dynamic-tags-promo');
      $tagsListInner.append(proTeaser);
    }

    $tagsListInner.on('click', '.elementor-tags-list__item', this.onTagsListItemClick.bind(this));
    elementorCommon.elements.$body.append($tagsList);
  },
  getTagsList: function getTagsList() {
    if (!this.ui.tagsList) {
      this.createTagsList();
    }

    return this.ui.tagsList;
  },
  toggleTagsList: function toggleTagsList() {
    var $tagsList = this.getTagsList();

    if ($tagsList.is(':visible')) {
      $tagsList.hide();
      return;
    }

    var direction = elementorCommon.config.isRTL ? 'left' : 'right';
    $tagsList.show().position({
      my: "".concat(direction, " top"),
      at: "".concat(direction, " bottom+5"),
      of: this.ui.dynamicSwitcher
    });
  },
  setTagView: function setTagView(id, name, settings) {
    if (this.tagView) {
      this.tagView.destroy();
    }

    var tagView = this.tagView = new TagPanelView({
      id: id,
      name: name,
      settings: settings,
      controlName: this.view.model.get('name'),
      dynamicSettings: this.getOption('dynamicSettings')
    }),
        elementContainer = this.view.options.container,
        tagViewLabel = elementContainer.controls[tagView.options.controlName].label;
    tagView.options.container = new elementorModules.editor.Container({
      type: 'dynamic',
      id: id,
      model: tagView.model,
      settings: tagView.model,
      view: tagView,
      parent: elementContainer,
      label: elementContainer.label + ' ' + tagViewLabel,
      controls: tagView.model.options.controls,
      renderer: elementContainer
    });
    tagView.render();
    this.$el.find('.elementor-control-tag-area').after(tagView.el);
    this.listenTo(tagView, 'remove', this.onTagViewRemove.bind(this));
  },
  setDefaultTagView: function setDefaultTagView() {
    var tagData = elementor.dynamicTags.tagTextToTagData(this.getDynamicValue());
    this.setTagView(tagData.id, tagData.name, tagData.settings);
  },
  tagViewToTagText: function tagViewToTagText() {
    var tagView = this.tagView;
    return elementor.dynamicTags.tagDataToTagText(tagView.getOption('id'), tagView.getOption('name'), tagView.model);
  },
  getDynamicValue: function getDynamicValue() {
    return this.view.container.dynamic.get(this.view.model.get('name'));
  },
  destroyTagView: function destroyTagView() {
    if (this.tagView) {
      this.tagView.destroy();
      this.tagView = null;
    }
  },
  showPromotion: function showPromotion() {
    var message = elementor.translate('dynamic_promotion_message');
    elementor.promotion.showDialog({
      headerMessage: elementor.translate('dynamic_content'),
      message: message,
      top: '-10',
      element: this.ui.dynamicSwitcher,
      actionURL: elementor.config.dynamicPromotionURL
    });
  },
  onRender: function onRender() {
    this.$el.addClass('elementor-control-dynamic');
    this.renderTools();
    this.toggleDynamicClass();

    if (this.isDynamicMode()) {
      this.setDefaultTagView();
    }
  },
  onDynamicSwitcherClick: function onDynamicSwitcherClick(event) {
    event.stopPropagation();

    if (this.getOption('tags').length) {
      this.toggleTagsList();
    } else {
      this.showPromotion();
    }
  },
  onTagsListItemClick: function onTagsListItemClick(event) {
    var $tag = jQuery(event.currentTarget);
    this.setTagView(elementorCommon.helpers.getUniqueId(), $tag.data('tagName'), {}); // If an element has an active global value, disable it before applying the dynamic value.

    if (this.view.getGlobalKey()) {
      this.view.triggerMethod('unset:global:value');
    }

    if (this.isDynamicMode()) {
      $e.run('document/dynamic/settings', {
        container: this.view.options.container,
        settings: (0, _defineProperty2.default)({}, this.view.model.get('name'), this.tagViewToTagText())
      });
    } else {
      $e.run('document/dynamic/enable', {
        container: this.view.options.container,
        settings: (0, _defineProperty2.default)({}, this.view.model.get('name'), this.tagViewToTagText())
      });
    }

    this.toggleDynamicClass();
    this.toggleTagsList();

    if (this.tagView.getTagConfig().settings_required) {
      this.tagView.showSettingsPopup();
    }
  },
  onTagViewRemove: function onTagViewRemove() {
    $e.run('document/dynamic/disable', {
      container: this.view.options.container,
      settings: (0, _defineProperty2.default)({}, this.view.model.get('name'), this.tagViewToTagText())
    });
    this.toggleDynamicClass();
  },
  onAfterExternalChange: function onAfterExternalChange() {
    this.destroyTagView();

    if (this.isDynamicMode()) {
      this.setDefaultTagView();
    }

    this.toggleDynamicClass();
  },
  onDestroy: function onDestroy() {
    this.destroyTagView();

    if (this.ui.tagsList) {
      this.ui.tagsList.remove();
    }
  }
});

/***/ }),
/* 422 */
/***/ (function(module, exports, __webpack_require__) {

"use strict";


var _interopRequireDefault = __webpack_require__(0);

__webpack_require__(39);

var _values = _interopRequireDefault(__webpack_require__(55));

var TagControlsStack = __webpack_require__(423);

module.exports = Marionette.ItemView.extend({
  className: 'elementor-dynamic-cover elementor-input-style',
  tagControlsStack: null,
  templateHelpers: function templateHelpers() {
    var helpers = {};

    if (this.model) {
      helpers.controls = this.model.options.controls;
    }

    return helpers;
  },
  ui: {
    remove: '.elementor-dynamic-cover__remove'
  },
  events: function events() {
    var events = {
      'click @ui.remove': 'onRemoveClick'
    };

    if (this.hasSettings()) {
      events.click = 'onClick';
    }

    return events;
  },
  getTemplate: function getTemplate() {
    var config = this.getTagConfig(),
        templateFunction = Marionette.TemplateCache.get('#tmpl-elementor-control-dynamic-cover'),
        renderedTemplate = Marionette.Renderer.render(templateFunction, {
      hasSettings: this.hasSettings(),
      isRemovable: !this.getOption('dynamicSettings').default,
      title: config.title,
      content: config.panel_template
    });
    return Marionette.TemplateCache.prototype.compileTemplate(renderedTemplate.trim());
  },
  getTagConfig: function getTagConfig() {
    return elementor.dynamicTags.getConfig('tags.' + this.getOption('name'));
  },
  initSettingsPopup: function initSettingsPopup() {
    var settingsPopupOptions = {
      className: 'elementor-tag-settings-popup',
      position: {
        my: 'left top+5',
        at: 'left bottom',
        of: this.$el,
        autoRefresh: true
      }
    };
    var settingsPopup = elementorCommon.dialogsManager.createWidget('buttons', settingsPopupOptions);

    this.getSettingsPopup = function () {
      return settingsPopup;
    };
  },
  hasSettings: function hasSettings() {
    return !!(0, _values.default)(this.getTagConfig().controls).length;
  },
  showSettingsPopup: function showSettingsPopup() {
    if (!this.tagControlsStack) {
      this.initTagControlsStack();
    }

    var settingsPopup = this.getSettingsPopup();

    if (settingsPopup.isVisible()) {
      return;
    }

    settingsPopup.show();
  },
  initTagControlsStack: function initTagControlsStack() {
    this.tagControlsStack = new TagControlsStack({
      model: this.model,
      controls: this.model.controls,
      name: this.options.name,
      controlName: this.options.controlName,
      container: this.options.container,
      el: this.getSettingsPopup().getElements('message')[0]
    });
    this.tagControlsStack.render();
  },
  initModel: function initModel() {
    this.model = new elementorModules.editor.elements.models.BaseSettings(this.getOption('settings'), {
      controls: this.getTagConfig().controls
    });
  },
  initialize: function initialize() {
    // The `model` should always be available.
    this.initModel();

    if (!this.hasSettings()) {
      return;
    }

    this.initSettingsPopup();
    this.listenTo(this.model, 'change', this.render);
  },
  onClick: function onClick() {
    this.showSettingsPopup();
  },
  onRemoveClick: function onRemoveClick(event) {
    event.stopPropagation();
    this.destroy();
    this.trigger('remove');
  },
  onDestroy: function onDestroy() {
    if (this.hasSettings()) {
      this.getSettingsPopup().destroy();
    }

    if (this.tagControlsStack) {
      this.tagControlsStack.destroy();
    }
  }
});

/***/ }),
/* 423 */
/***/ (function(module, exports, __webpack_require__) {

"use strict";


var EmptyView = __webpack_require__(424);

module.exports = elementorModules.editor.views.ControlsStack.extend({
  activeTab: 'content',
  template: _.noop,
  emptyView: EmptyView,
  isEmpty: function isEmpty() {
    // Ignore the section control
    return this.collection.length < 2;
  },
  childViewOptions: function childViewOptions() {
    return {
      container: this.options.container
    };
  },
  getNamespaceArray: function getNamespaceArray() {
    var currentPageView = elementor.getPanelView().getCurrentPageView(),
        eventNamespace = currentPageView.getNamespaceArray();
    eventNamespace.push(currentPageView.activeSection);
    eventNamespace.push(this.getOption('controlName'));
    eventNamespace.push(this.getOption('name'));
    return eventNamespace;
  },
  onRenderTemplate: function onRenderTemplate() {
    this.activateFirstSection();
  }
});

/***/ }),
/* 424 */
/***/ (function(module, exports, __webpack_require__) {

"use strict";


module.exports = Marionette.ItemView.extend({
  className: 'elementor-tag-controls-stack-empty',
  template: '#tmpl-elementor-tag-controls-stack-empty'
});

/***/ }),
/* 425 */
/***/ (function(module, exports, __webpack_require__) {

"use strict";


var _interopRequireDefault = __webpack_require__(0);

var _Object$defineProperty = __webpack_require__(1);

_Object$defineProperty(exports, "__esModule", {
  value: true
});

exports.default = void 0;

var _classCallCheck2 = _interopRequireDefault(__webpack_require__(2));

var _createClass2 = _interopRequireDefault(__webpack_require__(3));

var _inherits2 = _interopRequireDefault(__webpack_require__(4));

var _createSuper2 = _interopRequireDefault(__webpack_require__(5));

var ControlBaseDataView = __webpack_require__(127);

var _default = /*#__PURE__*/function (_ControlBaseDataView) {
  (0, _inherits2.default)(_default, _ControlBaseDataView);

  var _super = (0, _createSuper2.default)(_default);

  function _default() {
    (0, _classCallCheck2.default)(this, _default);
    return _super.apply(this, arguments);
  }

  (0, _createClass2.default)(_default, [{
    key: "onReady",
    value: function onReady() {
      var options = _.extend({
        enableTime: true,
        minuteIncrement: 1
      }, this.model.get('picker_options'));

      this.ui.input.flatpickr(options);
    }
  }, {
    key: "onBeforeDestroy",
    value: function onBeforeDestroy() {
      this.ui.input.flatpickr().destroy();
    }
  }]);
  return _default;
}(ControlBaseDataView);

exports.default = _default;

/***/ }),
/* 426 */
/***/ (function(module, exports, __webpack_require__) {

"use strict";


var _interopRequireWildcard = __webpack_require__(36);

var _interopRequireDefault = __webpack_require__(0);

var _Object$defineProperty = __webpack_require__(1);

_Object$defineProperty(exports, "__esModule", {
  value: true
});

exports.default = void 0;

var _parseInt2 = _interopRequireDefault(__webpack_require__(213));

var _classCallCheck2 = _interopRequireDefault(__webpack_require__(2));

var _createClass2 = _interopRequireDefault(__webpack_require__(3));

var _get2 = _interopRequireDefault(__webpack_require__(26));

var _getPrototypeOf2 = _interopRequireDefault(__webpack_require__(16));

var _inherits2 = _interopRequireDefault(__webpack_require__(4));

var _createSuper2 = _interopRequireDefault(__webpack_require__(5));

var _componentBase = _interopRequireDefault(__webpack_require__(85));

var _document = _interopRequireDefault(__webpack_require__(320));

var commands = _interopRequireWildcard(__webpack_require__(432));

var internalCommands = _interopRequireWildcard(__webpack_require__(437));

var Component = /*#__PURE__*/function (_ComponentBase) {
  (0, _inherits2.default)(Component, _ComponentBase);

  var _super = (0, _createSuper2.default)(Component);

  function Component() {
    (0, _classCallCheck2.default)(this, Component);
    return _super.apply(this, arguments);
  }

  (0, _createClass2.default)(Component, [{
    key: "__construct",
    value: function __construct() {
      var args = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
      (0, _get2.default)((0, _getPrototypeOf2.default)(Component.prototype), "__construct", this).call(this, args);
      /**
       * All the documents.
       *
       * @type {Object.<Document>}
       */

      this.documents = {};
      /**
       * Current document.
       *
       * @type {Document}
       */

      this.currentDocument = null;
      this.saveInitialDocumentToCache();
    }
  }, {
    key: "getNamespace",
    value: function getNamespace() {
      return 'editor/documents';
    }
  }, {
    key: "defaultCommands",
    value: function defaultCommands() {
      return this.importCommands(commands);
    }
  }, {
    key: "defaultCommandsInternal",
    value: function defaultCommandsInternal() {
      return this.importCommands(internalCommands);
    }
    /**
     * Function add().
     *
     * Add's document to the manager.
     *
     * @param {Document} document
     *
     * @returns {Document}
     */

  }, {
    key: "add",
    value: function add(document) {
      var id = document.id; // Save the document.

      this.documents[id] = document;
      return document;
    }
    /**
     * Function addDocumentByConfig().
     *
     * Add document to manager by config.
     *
     * @param {{}} config
     *
     * @returns {Document}
     */

  }, {
    key: "addDocumentByConfig",
    value: function addDocumentByConfig(config) {
      return this.add(new _document.default(config));
    }
    /**
     * Function get().
     *
     * Get document by id.
     *
     * @param {number} id
     *
     * @returns {Document|boolean}
     */

  }, {
    key: "get",
    value: function get(id) {
      if (undefined !== this.documents[id]) {
        return this.documents[id];
      }

      return false;
    }
    /**
     * Function getCurrent().
     *
     * Return's current document.
     *
     * @returns {Document}
     */

  }, {
    key: "getCurrent",
    value: function getCurrent() {
      return this.currentDocument;
    }
    /**
     * Function getCurrentId().
     *
     * Return's current document id.
     *
     * @returns {number}
     */

  }, {
    key: "getCurrentId",
    value: function getCurrentId() {
      return this.currentDocument.id;
    }
    /**
     * Function setCurrent().
     *
     * set current document by document instance.
     *
     * @param {Document} document
     */

  }, {
    key: "setCurrent",
    value: function setCurrent(document) {
      if (undefined === this.documents[document.id]) {
        throw Error("The document with id: '".concat(document.id, "' does not exist/loaded"));
      }

      if (this.currentDocument) {
        this.currentDocument.editor.status = 'closed';
      }

      this.currentDocument = this.documents[document.id];
      this.currentDocument.editor.status = 'open';
      elementorCommon.ajax.addRequestConstant('editor_post_id', document.id);
    }
  }, {
    key: "isCurrent",
    value: function isCurrent(id) {
      return (0, _parseInt2.default)(id) === this.currentDocument.id;
    }
  }, {
    key: "unsetCurrent",
    value: function unsetCurrent() {
      this.currentDocument = null;
      elementorCommon.ajax.addRequestConstant('editor_post_id', null);
    }
  }, {
    key: "request",
    value: function request(id) {
      return elementorCommon.ajax.load(this.getRequestArgs(id), true);
    }
  }, {
    key: "invalidateCache",
    value: function invalidateCache(id) {
      elementorCommon.ajax.invalidateCache(this.getRequestArgs(id));
    }
  }, {
    key: "getRequestArgs",
    value: function getRequestArgs(id) {
      id = (0, _parseInt2.default)(id);
      return {
        action: 'get_document_config',
        unique_id: "document-".concat(id),
        data: {
          id: id
        },
        success: function success(config) {
          return config;
        },
        error: function error(data) {
          var message;

          if (_.isString(data)) {
            message = data;
          } else if (data.statusText) {
            message = elementor.createAjaxErrorMessage(data);

            if (0 === data.readyState) {
              message += ' ' + elementor.translate('Cannot load editor');
            }
          } else if (data[0] && data[0].code) {
            message = elementor.translate('server_error') + ' ' + data[0].code;
          }

          alert(message);
        }
      };
    }
    /**
     * Temp: Don't request initial document via ajax.
     * Keep the event `elementor:init` before `preview:loaded`.
     */

  }, {
    key: "saveInitialDocumentToCache",
    value: function saveInitialDocumentToCache() {
      var document = elementor.config.initial_document;
      elementorCommon.ajax.addRequestCache(this.getRequestArgs(document.id), document);
    }
  }]);
  return Component;
}(_componentBase.default);

exports.default = Component;

/***/ }),
/* 427 */
/***/ (function(module, exports, __webpack_require__) {

"use strict";


var _interopRequireDefault = __webpack_require__(0);

var _Object$defineProperty = __webpack_require__(1);

_Object$defineProperty(exports, "__esModule", {
  value: true
});

exports.default = void 0;

var _isArray = _interopRequireDefault(__webpack_require__(84));

__webpack_require__(25);

var _classCallCheck2 = _interopRequireDefault(__webpack_require__(2));

var _createClass2 = _interopRequireDefault(__webpack_require__(3));

var _defineProperty2 = _interopRequireDefault(__webpack_require__(28));

var _itemModel = _interopRequireDefault(__webpack_require__(428));

/**
 * TODO: consider refactor this class.
 * TODO: should be `Document/History` component.
 * TODO: should be attached to elementor.history.history + BC.
 */
var HistoryManager = /*#__PURE__*/function () {
  function HistoryManager(document) {
    (0, _classCallCheck2.default)(this, HistoryManager);
    (0, _defineProperty2.default)(this, "currentItemID", null);
    (0, _defineProperty2.default)(this, "items", new Backbone.Collection([], {
      model: _itemModel.default
    }));
    (0, _defineProperty2.default)(this, "active", true);
    (0, _defineProperty2.default)(this, "translations", {
      add: elementor.translate('added'),
      change: elementor.translate('edited'),
      disable: elementor.translate('disabled'),
      duplicate: elementor.translate('duplicate'),
      enable: elementor.translate('enabled'),
      move: elementor.translate('moved'),
      paste: elementor.translate('pasted'),
      paste_style: elementor.translate('style_pasted'),
      remove: elementor.translate('removed'),
      reset_style: elementor.translate('style_reset'),
      reset_settings: elementor.translate('settings_reset')
    });
    this.document = document;
    this.currentItem = new Backbone.Model({
      id: 0
    });
  }

  (0, _createClass2.default)(HistoryManager, [{
    key: "getActionLabel",
    value: function getActionLabel(itemData) {
      // TODO: this function should be static.
      if (this.translations[itemData.type]) {
        return this.translations[itemData.type];
      }

      return itemData.type;
    }
  }, {
    key: "navigate",
    value: function navigate(isRedo) {
      var currentItem = this.items.find(function (model) {
        return 'not_applied' === model.get('status');
      }),
          currentItemIndex = this.items.indexOf(currentItem),
          requiredIndex = isRedo ? currentItemIndex - 1 : currentItemIndex + 1;

      if (!isRedo && !currentItem || requiredIndex < 0 || requiredIndex >= this.items.length) {
        return;
      }

      this.doItem(requiredIndex);
    }
  }, {
    key: "setActive",
    value: function setActive(value) {
      this.active = value;
    }
  }, {
    key: "getActive",
    value: function getActive(value) {
      return this.active;
    }
  }, {
    key: "getItems",
    value: function getItems() {
      return this.items;
    }
  }, {
    key: "startItem",
    value: function startItem(itemData) {
      this.currentItemID = this.addItem(itemData);
      return this.currentItemID;
    }
  }, {
    key: "endItem",
    value: function endItem(id) {
      if (this.currentItemID !== id) {
        return;
      }

      this.currentItemID = null;
    }
  }, {
    key: "deleteItem",
    value: function deleteItem(id) {
      var item = this.items.findWhere({
        id: id
      });
      this.items.remove(item);
      this.currentItemID = null;
    }
  }, {
    key: "isItemStarted",
    value: function isItemStarted() {
      return null !== this.currentItemID;
    }
  }, {
    key: "getCurrentId",
    value: function getCurrentId() {
      return this.currentItemID;
    }
  }, {
    key: "addItem",
    value: function addItem(itemData) {
      if (!this.getActive()) {
        return;
      }

      if (!this.items.length) {
        this.items.add({
          status: 'not_applied',
          title: elementor.translate('editing_started'),
          subTitle: '',
          action: '',
          editing_started: true
        });
      } // Remove old applied items from top of list


      while (this.items.length && 'applied' === this.items.first().get('status')) {
        this.items.shift();
      }

      var id = this.currentItemID ? this.currentItemID : new Date().getTime();
      var currentItem = this.items.findWhere({
        id: id
      });

      if (!currentItem) {
        currentItem = new _itemModel.default({
          id: id,
          title: itemData.title,
          subTitle: itemData.subTitle,
          action: this.getActionLabel(itemData),
          type: itemData.type
        });
        this.startItemTitle = '';
        this.startItemAction = '';
      }

      currentItem.get('items').add(itemData, {
        at: 0
      });
      this.items.add(currentItem, {
        at: 0
      });
      this.updateCurrentItem(currentItem);
      return id;
    }
  }, {
    key: "doItem",
    value: function doItem(index) {
      // Don't track while restoring the item
      this.setActive(false);
      var item = this.items.at(index);

      if ('not_applied' === item.get('status')) {
        this.undoItem(index);
      } else {
        this.redoItem(index);
      }

      this.setActive(true);
      var panel = elementor.getPanelView(),
          panelPage = panel.getCurrentPageView(),
          editedElementView = panelPage.getOption('editedElementView');
      var viewToScroll;

      if ($e.routes.isPartOf('panel/editor') && editedElementView) {
        if (editedElementView.isDestroyed) {
          // If the the element isn't exist - show the history panel
          $e.route('panel/history/actions');
        } else {
          // If element exist - render again, maybe the settings has been changed
          viewToScroll = editedElementView;
        }
      } else if (item instanceof Backbone.Model && item.get('items').length) {
        var historyItem = item.get('items').first();

        if (historyItem.get('restore')) {
          var container = 'sub-add' === historyItem.get('type') ? historyItem.get('data').containerToRestore : historyItem.get('container') || historyItem.get('containers');

          if ((0, _isArray.default)(container)) {
            container = container[0];
          }

          if (container) {
            viewToScroll = container.lookup().view;
          }
        }
      }

      $e.internal('document/save/set-is-modified', {
        status: item.get('id') !== this.document.editor.lastSaveHistoryId
      });
      this.updateCurrentItem(item);

      if (viewToScroll && !elementor.helpers.isInViewport(viewToScroll.$el[0], elementor.$previewContents.find('html')[0])) {
        elementor.helpers.scrollToView(viewToScroll.$el);
      }
    }
  }, {
    key: "undoItem",
    value: function undoItem(index) {
      for (var stepNum = 0; stepNum < index; stepNum++) {
        var item = this.items.at(stepNum);

        if ('not_applied' === item.get('status')) {
          item.get('items').each(function (subItem) {
            var restore = subItem.get('restore');

            if (restore) {
              restore(subItem);
            }
          });
          item.set('status', 'applied');
        }
      }
    }
  }, {
    key: "redoItem",
    value: function redoItem(index) {
      for (var stepNum = this.items.length - 1; stepNum >= index; stepNum--) {
        var item = this.items.at(stepNum);

        if ('applied' === item.get('status')) {
          var reversedSubItems = _.toArray(item.get('items').models).reverse();

          _(reversedSubItems).each(function (subItem) {
            var restore = subItem.get('restore');

            if (restore) {
              restore(subItem, true);
            }
          });

          item.set('status', 'not_applied');
        }
      }
    }
  }, {
    key: "updateCurrentItem",
    value: function updateCurrentItem(item) {
      // Save last selected item.
      this.currentItem = item;
      this.updatePanelPageCurrentItem();
    }
  }, {
    key: "updatePanelPageCurrentItem",
    value: function updatePanelPageCurrentItem() {
      if ($e.routes.is('panel/history/actions')) {
        elementor.getPanelView().getCurrentPageView().getCurrentTab().updateCurrentItem();
      }
    }
  }]);
  return HistoryManager;
}();

exports.default = HistoryManager;

/***/ }),
/* 428 */
/***/ (function(module, exports, __webpack_require__) {

"use strict";


module.exports = Backbone.Model.extend({
  defaults: {
    id: 0,
    type: '',
    status: 'not_applied',
    title: '',
    subTitle: '',
    action: '',
    history: {}
  },
  initialize: function initialize() {
    this.set('items', new Backbone.Collection());
  }
});

/***/ }),
/* 429 */
/***/ (function(module, exports, __webpack_require__) {

"use strict";


var _interopRequireDefault = __webpack_require__(0);

var _Object$defineProperty = __webpack_require__(1);

_Object$defineProperty(exports, "__esModule", {
  value: true
});

exports.default = void 0;

var _classCallCheck2 = _interopRequireDefault(__webpack_require__(2));

var _createClass2 = _interopRequireDefault(__webpack_require__(3));

var _defineProperty2 = _interopRequireDefault(__webpack_require__(28));

var RevisionsCollection = __webpack_require__(430);
/**
 * TODO: consider refactor this class.
 * TODO: Rename to RevisionsModule.
 */


var RevisionsManager = /*#__PURE__*/function () {
  function RevisionsManager(document) {
    (0, _classCallCheck2.default)(this, RevisionsManager);
    (0, _defineProperty2.default)(this, "document", void 0);
    (0, _defineProperty2.default)(this, "revisions", void 0);
    this.document = document;
  }

  (0, _createClass2.default)(RevisionsManager, [{
    key: "getItems",
    value: function getItems() {
      return this.revisions;
    }
  }, {
    key: "requestRevisions",
    value: function requestRevisions(callback) {
      var _this = this;

      if (this.revisions) {
        callback(this.revisions);
        return;
      }

      elementorCommon.ajax.addRequest('get_revisions', {
        success: function success(data) {
          _this.revisions = new RevisionsCollection(data);

          _this.revisions.on('update', _this.onRevisionsUpdate.bind(_this));

          callback(_this.revisions);
        }
      });
    }
  }, {
    key: "setEditorData",
    value: function setEditorData(data) {
      var collection = elementor.getPreviewView().collection;
      collection.reset(data);
    }
  }, {
    key: "getRevisionDataAsync",
    value: function getRevisionDataAsync(id, options) {
      _.extend(options, {
        data: {
          id: id
        }
      });

      return elementorCommon.ajax.addRequest('get_revision_data', options);
    }
  }, {
    key: "addRevisions",
    value: function addRevisions(items) {
      var _this2 = this;

      this.requestRevisions(function () {
        items.forEach(function (item) {
          var existedModel = _this2.revisions.findWhere({
            id: item.id
          });

          if (existedModel) {
            _this2.revisions.remove(existedModel, {
              silent: true
            });
          }

          _this2.revisions.add(item, {
            silent: true
          });
        });

        _this2.revisions.trigger('update');
      });
    }
  }, {
    key: "deleteRevision",
    value: function deleteRevision(revisionModel, options) {
      var params = {
        data: {
          id: revisionModel.get('id')
        },
        success: function success() {
          if (options.success) {
            options.success();
          }

          revisionModel.destroy();
        }
      };

      if (options.error) {
        params.error = options.error;
      }

      elementorCommon.ajax.addRequest('delete_revision', params);
    }
  }, {
    key: "onRevisionsUpdate",
    value: function onRevisionsUpdate() {
      if ($e.routes.is('panel/history/revisions')) {
        $e.routes.refreshContainer('panel');
      }
    }
  }]);
  return RevisionsManager;
}();

exports.default = RevisionsManager;

/***/ }),
/* 430 */
/***/ (function(module, exports, __webpack_require__) {

"use strict";


var RevisionModel = __webpack_require__(431);

module.exports = Backbone.Collection.extend({
  model: RevisionModel,
  comparator: function comparator(model) {
    return -model.get('timestamp');
  }
});

/***/ }),
/* 431 */
/***/ (function(module, exports, __webpack_require__) {

"use strict";


var RevisionModel;
RevisionModel = Backbone.Model.extend();

RevisionModel.prototype.sync = function () {
  return null;
};

module.exports = RevisionModel;

/***/ }),
/* 432 */
/***/ (function(module, exports, __webpack_require__) {

"use strict";


var _Object$defineProperty = __webpack_require__(1);

_Object$defineProperty(exports, "__esModule", {
  value: true
});

_Object$defineProperty(exports, "Close", {
  enumerable: true,
  get: function get() {
    return _close.Close;
  }
});

_Object$defineProperty(exports, "Open", {
  enumerable: true,
  get: function get() {
    return _open.Open;
  }
});

_Object$defineProperty(exports, "Preview", {
  enumerable: true,
  get: function get() {
    return _preview.Preview;
  }
});

_Object$defineProperty(exports, "Switch", {
  enumerable: true,
  get: function get() {
    return _switch.Switch;
  }
});

var _close = __webpack_require__(433);

var _open = __webpack_require__(434);

var _preview = __webpack_require__(435);

var _switch = __webpack_require__(436);

/***/ }),
/* 433 */
/***/ (function(module, exports, __webpack_require__) {

"use strict";


var _interopRequireDefault = __webpack_require__(0);

var _Object$defineProperty = __webpack_require__(1);

_Object$defineProperty(exports, "__esModule", {
  value: true
});

exports.default = exports.Close = void 0;

var _regenerator = _interopRequireDefault(__webpack_require__(82));

__webpack_require__(66);

var _asyncToGenerator2 = _interopRequireDefault(__webpack_require__(83));

var _classCallCheck2 = _interopRequireDefault(__webpack_require__(2));

var _createClass2 = _interopRequireDefault(__webpack_require__(3));

var _inherits2 = _interopRequireDefault(__webpack_require__(4));

var _createSuper2 = _interopRequireDefault(__webpack_require__(5));

var _commandBase = _interopRequireDefault(__webpack_require__(21));

var Close = /*#__PURE__*/function (_CommandBase) {
  (0, _inherits2.default)(Close, _CommandBase);

  var _super = (0, _createSuper2.default)(Close);

  function Close() {
    (0, _classCallCheck2.default)(this, Close);
    return _super.apply(this, arguments);
  }

  (0, _createClass2.default)(Close, [{
    key: "validateArgs",
    value: function validateArgs(args) {
      this.requireArgument('id', args);
    }
  }, {
    key: "apply",
    value: function () {
      var _apply = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee(args) {
        var id, mode, onClose, document, deferred;
        return _regenerator.default.wrap(function _callee$(_context) {
          while (1) {
            switch (_context.prev = _context.next) {
              case 0:
                id = args.id, mode = args.mode, onClose = args.onClose, document = elementor.documents.get(id); // Already closed.

                if (!('closed' === document.editor.status)) {
                  _context.next = 3;
                  break;
                }

                return _context.abrupt("return", jQuery.Deferred().resolve());

              case 3:
                if (!(!mode && (document.editor.isChanged || document.isDraft()))) {
                  _context.next = 7;
                  break;
                }

                deferred = jQuery.Deferred();
                this.getConfirmDialog(deferred).show();
                return _context.abrupt("return", deferred.promise());

              case 7:
                _context.t0 = mode;
                _context.next = _context.t0 === 'autosave' ? 10 : _context.t0 === 'save' ? 13 : _context.t0 === 'discard' ? 16 : 19;
                break;

              case 10:
                _context.next = 12;
                return $e.run('document/save/auto');

              case 12:
                return _context.abrupt("break", 19);

              case 13:
                _context.next = 15;
                return $e.run('document/save/update');

              case 15:
                return _context.abrupt("break", 19);

              case 16:
                _context.next = 18;
                return $e.run('document/save/discard', {
                  document: document
                });

              case 18:
                return _context.abrupt("break", 19);

              case 19:
                $e.internal('editor/documents/unload', {
                  document: document
                });

                if (!onClose) {
                  _context.next = 23;
                  break;
                }

                _context.next = 23;
                return onClose(document);

              case 23:
                return _context.abrupt("return", jQuery.Deferred().resolve());

              case 24:
              case "end":
                return _context.stop();
            }
          }
        }, _callee, this);
      }));

      function apply(_x) {
        return _apply.apply(this, arguments);
      }

      return apply;
    }()
  }, {
    key: "getConfirmDialog",
    value: function getConfirmDialog(deferred) {
      var _this = this;

      if (this.confirmDialog) {
        return this.confirmDialog;
      }

      this.confirmDialog = elementorCommon.dialogsManager.createWidget('confirm', {
        id: 'elementor-document-save-on-close',
        headerMessage: elementor.translate('Save Changes'),
        message: elementor.translate('Would you like to save the changes you\'ve made?'),
        position: {
          my: 'center center',
          at: 'center center'
        },
        strings: {
          confirm: elementor.translate('Save'),
          cancel: elementor.translate('Discard')
        },
        onHide: function onHide() {
          // If still not action chosen. use `defer` because onHide is called before onConfirm/onCancel.
          _.defer(function () {
            if (!_this.args.mode) {
              deferred.reject('Close document has been canceled.');
            }
          });
        },
        onConfirm: function onConfirm() {
          _this.args.mode = 'save'; // Re-run with same args.

          $e.run('editor/documents/close', _this.args).then(function () {
            deferred.resolve();
          });
        },
        onCancel: function onCancel() {
          _this.args.mode = 'discard'; // Re-run with same args.

          $e.run('editor/documents/close', _this.args).then(function () {
            deferred.resolve();
          });
        }
      });
      return this.confirmDialog;
    }
  }]);
  return Close;
}(_commandBase.default);

exports.Close = Close;
var _default = Close;
exports.default = _default;

/***/ }),
/* 434 */
/***/ (function(module, exports, __webpack_require__) {

"use strict";


var _interopRequireDefault = __webpack_require__(0);

var _Object$defineProperty = __webpack_require__(1);

_Object$defineProperty(exports, "__esModule", {
  value: true
});

exports.default = exports.Open = void 0;

__webpack_require__(25);

var _classCallCheck2 = _interopRequireDefault(__webpack_require__(2));

var _createClass2 = _interopRequireDefault(__webpack_require__(3));

var _inherits2 = _interopRequireDefault(__webpack_require__(4));

var _createSuper2 = _interopRequireDefault(__webpack_require__(5));

var _commandBase = _interopRequireDefault(__webpack_require__(21));

var Open = /*#__PURE__*/function (_CommandBase) {
  (0, _inherits2.default)(Open, _CommandBase);

  var _super = (0, _createSuper2.default)(Open);

  function Open() {
    (0, _classCallCheck2.default)(this, Open);
    return _super.apply(this, arguments);
  }

  (0, _createClass2.default)(Open, [{
    key: "validateArgs",
    value: function validateArgs(args) {
      this.requireArgument('id', args);
    }
  }, {
    key: "apply",
    value: function apply(args) {
      var id = args.id,
          currentDocument = elementor.documents.getCurrent(); // Already opened.

      if (currentDocument && id === currentDocument.id) {
        return jQuery.Deferred().resolve();
      } // TODO: move to $e.hooks.ui.


      if (elementor.loaded) {
        elementor.$previewContents.find(".elementor-".concat(id)).addClass('loading');
      }

      return elementor.documents.request(id).then(function (config) {
        elementorCommon.elements.$body.addClass("elementor-editor-".concat(config.type)); // Tell the editor to load the document.

        $e.internal('editor/documents/load', {
          config: config
        });
      }).always(function () {
        // TODO: move to $e.hooks.ui.
        if (elementor.loaded) {
          elementor.$previewContents.find(".elementor-".concat(id)).removeClass('loading');
        }
      });
    }
  }]);
  return Open;
}(_commandBase.default);

exports.Open = Open;
var _default = Open;
exports.default = _default;

/***/ }),
/* 435 */
/***/ (function(module, exports, __webpack_require__) {

"use strict";


var _interopRequireDefault = __webpack_require__(0);

var _Object$defineProperty = __webpack_require__(1);

_Object$defineProperty(exports, "__esModule", {
  value: true
});

exports.default = exports.Preview = void 0;

var _regenerator = _interopRequireDefault(__webpack_require__(82));

__webpack_require__(66);

var _asyncToGenerator2 = _interopRequireDefault(__webpack_require__(83));

var _classCallCheck2 = _interopRequireDefault(__webpack_require__(2));

var _createClass2 = _interopRequireDefault(__webpack_require__(3));

var _inherits2 = _interopRequireDefault(__webpack_require__(4));

var _createSuper2 = _interopRequireDefault(__webpack_require__(5));

var _commandBase = _interopRequireDefault(__webpack_require__(21));

var Preview = /*#__PURE__*/function (_CommandBase) {
  (0, _inherits2.default)(Preview, _CommandBase);

  var _super = (0, _createSuper2.default)(Preview);

  function Preview() {
    (0, _classCallCheck2.default)(this, Preview);
    return _super.apply(this, arguments);
  }

  (0, _createClass2.default)(Preview, [{
    key: "validateArgs",
    value: function validateArgs(args) {
      this.requireArgument('id', args);
    } // TODO: Check if blocking is required.

  }, {
    key: "apply",
    value: function () {
      var _apply = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee(args) {
        var id, _$e$components$get, footerSaver, document;

        return _regenerator.default.wrap(function _callee$(_context) {
          while (1) {
            switch (_context.prev = _context.next) {
              case 0:
                id = args.id, _$e$components$get = $e.components.get('document/save'), footerSaver = _$e$components$get.footerSaver, document = elementor.documents.get(id);

                if (!document.editor.isChanged) {
                  _context.next = 4;
                  break;
                }

                _context.next = 4;
                return $e.run('document/save/auto', {
                  force: true
                });

              case 4:
                // Open immediately in order to avoid popup blockers.
                footerSaver.previewWindow = open(document.config.urls.wp_preview, "wp-preview-".concat(document.id));

              case 5:
              case "end":
                return _context.stop();
            }
          }
        }, _callee);
      }));

      function apply(_x) {
        return _apply.apply(this, arguments);
      }

      return apply;
    }()
  }]);
  return Preview;
}(_commandBase.default);

exports.Preview = Preview;
var _default = Preview;
exports.default = _default;

/***/ }),
/* 436 */
/***/ (function(module, exports, __webpack_require__) {

"use strict";


var _interopRequireDefault = __webpack_require__(0);

var _Object$defineProperty = __webpack_require__(1);

_Object$defineProperty(exports, "__esModule", {
  value: true
});

exports.default = exports.Switch = void 0;

var _classCallCheck2 = _interopRequireDefault(__webpack_require__(2));

var _createClass2 = _interopRequireDefault(__webpack_require__(3));

var _inherits2 = _interopRequireDefault(__webpack_require__(4));

var _createSuper2 = _interopRequireDefault(__webpack_require__(5));

var _commandBase = _interopRequireDefault(__webpack_require__(21));

var Switch = /*#__PURE__*/function (_CommandBase) {
  (0, _inherits2.default)(Switch, _CommandBase);

  var _super = (0, _createSuper2.default)(Switch);

  function Switch() {
    (0, _classCallCheck2.default)(this, Switch);
    return _super.apply(this, arguments);
  }

  (0, _createClass2.default)(Switch, [{
    key: "validateArgs",
    value: function validateArgs(args) {
      this.requireArgument('id', args);
    }
  }, {
    key: "apply",
    value: function apply(args) {
      var id = args.id,
          mode = args.mode,
          onClose = args.onClose;
      return $e.run('editor/documents/close', {
        id: elementor.documents.getCurrentId(),
        mode: mode,
        onClose: onClose
      }).then(function () {
        return $e.run('editor/documents/open', {
          id: id
        });
      });
    }
  }]);
  return Switch;
}(_commandBase.default);

exports.Switch = Switch;
var _default = Switch;
exports.default = _default;

/***/ }),
/* 437 */
/***/ (function(module, exports, __webpack_require__) {

"use strict";


var _Object$defineProperty = __webpack_require__(1);

_Object$defineProperty(exports, "__esModule", {
  value: true
});

_Object$defineProperty(exports, "AttachPreview", {
  enumerable: true,
  get: function get() {
    return _attachPreview.AttachPreview;
  }
});

_Object$defineProperty(exports, "Load", {
  enumerable: true,
  get: function get() {
    return _load.Load;
  }
});

_Object$defineProperty(exports, "Unload", {
  enumerable: true,
  get: function get() {
    return _unload.Unload;
  }
});

var _attachPreview = __webpack_require__(438);

var _load = __webpack_require__(439);

var _unload = __webpack_require__(441);

/***/ }),
/* 438 */
/***/ (function(module, exports, __webpack_require__) {

"use strict";


var _interopRequireDefault = __webpack_require__(0);

var _Object$defineProperty = __webpack_require__(1);

_Object$defineProperty(exports, "__esModule", {
  value: true
});

exports.default = exports.AttachPreview = void 0;

__webpack_require__(25);

var _promise = _interopRequireDefault(__webpack_require__(133));

var _classCallCheck2 = _interopRequireDefault(__webpack_require__(2));

var _createClass2 = _interopRequireDefault(__webpack_require__(3));

var _inherits2 = _interopRequireDefault(__webpack_require__(4));

var _createSuper2 = _interopRequireDefault(__webpack_require__(5));

var _commandInternalBase = _interopRequireDefault(__webpack_require__(203));

var AttachPreview = /*#__PURE__*/function (_CommandInternalBaseB) {
  (0, _inherits2.default)(AttachPreview, _CommandInternalBaseB);

  var _super = (0, _createSuper2.default)(AttachPreview);

  function AttachPreview() {
    (0, _classCallCheck2.default)(this, AttachPreview);
    return _super.apply(this, arguments);
  }

  (0, _createClass2.default)(AttachPreview, [{
    key: "apply",
    value: function apply() {
      var document = elementor.documents.getCurrent();
      return this.attachDocumentToPreview(document).then(function () {
        elementor.toggleDocumentCssFiles(document, false);
        elementor.onEditModeSwitched();
        elementor.checkPageStatus();
        elementor.trigger('document:loaded', document);
        $e.internal('panel/open-default', {
          refresh: true
        });
      });
    }
  }, {
    key: "attachDocumentToPreview",
    value: function attachDocumentToPreview(document) {
      return new _promise.default(function (resolve, reject) {
        // Not yet loaded.
        if (!document) {
          return reject();
        }

        if (!document.config.elements) {
          return resolve();
        }

        document.$element = elementor.$previewContents.find('.elementor-' + document.id);

        if (!document.$element.length) {
          elementor.onPreviewElNotFound();
          return reject();
        }

        document.$element.addClass('elementor-edit-area elementor-edit-mode'); // If not the same document.

        if (document.id !== elementor.config.initial_document.id) {
          elementor.$previewElementorEl.addClass('elementor-embedded-editor');
        }

        elementor.initElements();
        elementor.initPreviewView(document);
        document.container.view = elementor.getPreviewView();
        document.container.model.attributes.elements = elementor.elements;
        elementor.helpers.scrollToView(document.$element);
        document.$element.addClass('elementor-edit-area-active').removeClass('elementor-editor-preview');
        resolve();
      });
    }
  }]);
  return AttachPreview;
}(_commandInternalBase.default);

exports.AttachPreview = AttachPreview;
var _default = AttachPreview;
exports.default = _default;

/***/ }),
/* 439 */
/***/ (function(module, exports, __webpack_require__) {

"use strict";


var _interopRequireDefault = __webpack_require__(0);

var _Object$defineProperty = __webpack_require__(1);

_Object$defineProperty(exports, "__esModule", {
  value: true
});

exports.default = exports.Load = void 0;

var _classCallCheck2 = _interopRequireDefault(__webpack_require__(2));

var _createClass2 = _interopRequireDefault(__webpack_require__(3));

var _inherits2 = _interopRequireDefault(__webpack_require__(4));

var _createSuper2 = _interopRequireDefault(__webpack_require__(5));

var _commandInternalBase = _interopRequireDefault(__webpack_require__(203));

var _document = _interopRequireDefault(__webpack_require__(320));

var _heartbeat = _interopRequireDefault(__webpack_require__(440));

var Load = /*#__PURE__*/function (_CommandInternalBase) {
  (0, _inherits2.default)(Load, _CommandInternalBase);

  var _super = (0, _createSuper2.default)(Load);

  function Load() {
    (0, _classCallCheck2.default)(this, Load);
    return _super.apply(this, arguments);
  }

  (0, _createClass2.default)(Load, [{
    key: "validateArgs",
    value: function validateArgs() {
      var args = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
      this.requireArgument('config', args);
    }
  }, {
    key: "apply",
    value: function apply(args) {
      var config = args.config;
      elementor.config.document = config;
      elementor.setAjax();
      elementor.addWidgetsCache(config.widgets);
      elementor.templates.init();
      var document = new _document.default(config);
      elementor.documents.add(document); // Must set current before create a container.

      elementor.documents.setCurrent(document);
      elementor.settings.page = new elementor.settings.modules.page(config.settings);
      document.container = elementor.settings.page.getEditedView().getContainer(); // Reference container back to document.

      document.container.document = document;
      elementor.heartbeat = new _heartbeat.default(document);
      var isOldPageVersion = elementor.config.document.version && elementor.helpers.compareVersions(elementor.config.document.version, '2.5.0', '<');

      if (!elementor.config.user.introduction.flexbox && isOldPageVersion) {
        elementor.showFlexBoxAttentionDialog();
      }

      if (elementor.loaded) {
        // TODO: Find better solution - Fix issue when globals does not render after saving from kit.
        // The issue is that the css-parser is depends upon cache and cache is not available during this time.
        $e.data.get('globals/index').then(function () {
          return $e.internal('editor/documents/attach-preview');
        });
      }

      return document;
    }
  }]);
  return Load;
}(_commandInternalBase.default);

exports.Load = Load;
var _default = Load;
exports.default = _default;

/***/ }),
/* 440 */
/***/ (function(module, exports, __webpack_require__) {

"use strict";


var _interopRequireDefault = __webpack_require__(0);

var _Object$defineProperty = __webpack_require__(1);

_Object$defineProperty(exports, "__esModule", {
  value: true
});

exports.default = void 0;

var _classCallCheck2 = _interopRequireDefault(__webpack_require__(2));

var _createClass2 = _interopRequireDefault(__webpack_require__(3));

var _defineProperty2 = _interopRequireDefault(__webpack_require__(28));

var Heartbeat = /*#__PURE__*/function () {
  function Heartbeat(document) {
    var _this = this;

    (0, _classCallCheck2.default)(this, Heartbeat);
    (0, _defineProperty2.default)(this, "modal", null);
    (0, _defineProperty2.default)(this, "document", null);
    (0, _defineProperty2.default)(this, "getModal", function () {
      if (!_this.modal) {
        _this.modal = _this.initModal();
      }

      return _this.modal;
    });
    this.document = document;
    this.onSend = this.onSend.bind(this);
    this.onTick = this.onTick.bind(this);
    this.onRefreshNonce = this.onRefreshNonce.bind(this);
    this.bindEvents();
    wp.heartbeat.connectNow();
  }

  (0, _createClass2.default)(Heartbeat, [{
    key: "initModal",
    value: function initModal() {
      var modal = elementorCommon.dialogsManager.createWidget('lightbox', {
        headerMessage: elementor.translate('take_over')
      });
      modal.addButton({
        name: 'go_back',
        text: elementor.translate('go_back'),
        callback: function callback() {
          parent.history.go(-1);
        }
      });
      modal.addButton({
        name: 'take_over',
        text: elementor.translate('take_over'),
        callback: function callback() {
          wp.heartbeat.enqueue('elementor_force_post_lock', true);
          wp.heartbeat.connectNow();
        }
      });
      return modal;
    }
  }, {
    key: "showLockMessage",
    value: function showLockMessage(lockedUser) {
      var modal = this.getModal();
      modal.setMessage(elementor.translate('dialog_user_taken_over', [lockedUser])).show();
    }
  }, {
    key: "onSend",
    value: function onSend(event, data) {
      data.elementor_post_lock = {
        post_ID: this.document.id
      };
    }
  }, {
    key: "onTick",
    value: function onTick(event, response) {
      if (response.locked_user) {
        if (this.document.editor.isChanged) {
          $e.run('document/save/auto', {
            document: this.document
          });
        }

        this.showLockMessage(response.locked_user);
      } else {
        this.getModal().hide();
      }

      elementorCommon.ajax.addRequestConstant('_nonce', response.elementorNonce);
    }
  }, {
    key: "onRefreshNonce",
    value: function onRefreshNonce(event, response) {
      var nonces = response['elementor-refresh-nonces'];

      if (nonces) {
        if (nonces.heartbeatNonce) {
          elementorCommon.ajax.addRequestConstant('_nonce', nonces.elementorNonce);
        }

        if (nonces.heartbeatNonce) {
          window.heartbeatSettings.nonce = nonces.heartbeatNonce;
        }
      }
    }
  }, {
    key: "bindEvents",
    value: function bindEvents() {
      jQuery(document).on({
        'heartbeat-send': this.onSend,
        'heartbeat-tick': this.onTick,
        'heartbeat-tick.wp-refresh-nonces': this.onRefreshNonce
      });
    }
  }, {
    key: "destroy",
    value: function destroy() {
      jQuery(document).off({
        'heartbeat-send': this.onSend,
        'heartbeat-tick': this.onTick,
        'heartbeat-tick.wp-refresh-nonces': this.onRefreshNonce
      });
    }
  }]);
  return Heartbeat;
}();

exports.default = Heartbeat;

/***/ }),
/* 441 */
/***/ (function(module, exports, __webpack_require__) {

"use strict";


var _interopRequireDefault = __webpack_require__(0);

var _Object$defineProperty = __webpack_require__(1);

_Object$defineProperty(exports, "__esModule", {
  value: true
});

exports.default = exports.Unload = void 0;

var _classCallCheck2 = _interopRequireDefault(__webpack_require__(2));

var _createClass2 = _interopRequireDefault(__webpack_require__(3));

var _inherits2 = _interopRequireDefault(__webpack_require__(4));

var _createSuper2 = _interopRequireDefault(__webpack_require__(5));

var _commandInternalBase = _interopRequireDefault(__webpack_require__(203));

var _document = _interopRequireDefault(__webpack_require__(320));

var Unload = /*#__PURE__*/function (_CommandInternalBase) {
  (0, _inherits2.default)(Unload, _CommandInternalBase);

  var _super = (0, _createSuper2.default)(Unload);

  function Unload() {
    (0, _classCallCheck2.default)(this, Unload);
    return _super.apply(this, arguments);
  }

  (0, _createClass2.default)(Unload, [{
    key: "validateArgs",
    value: function validateArgs() {
      var args = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
      this.requireArgumentConstructor('document', _document.default, args);
    }
  }, {
    key: "apply",
    value: function apply(args) {
      var document = args.document;

      if (document.id !== elementor.config.document.id) {
        return;
      }

      elementor.elements = [];
      elementor.saver.stopAutoSave(document);
      elementor.channels.dataEditMode.trigger('switch', 'preview');

      if (document.$element) {
        document.$element.removeClass('elementor-edit-area-active elementor-edit-mode').addClass('elementor-editor-preview');
      }

      elementorCommon.elements.$body.removeClass("elementor-editor-".concat(document.config.type));
      elementor.settings.page.destroy();
      elementor.heartbeat.destroy();
      document.editor.status = 'closed';
      elementor.config.document = {};
      elementor.documents.unsetCurrent();
      elementor.trigger('document:unloaded', document);
    }
  }]);
  return Unload;
}(_commandInternalBase.default);

exports.Unload = Unload;
var _default = Unload;
exports.default = _default;

/***/ }),
/* 442 */
/***/ (function(module, exports, __webpack_require__) {

"use strict";


var _interopRequireDefault = __webpack_require__(0);

var _Object$defineProperty = __webpack_require__(1);

_Object$defineProperty(exports, "__esModule", {
  value: true
});

exports.default = void 0;

var _classCallCheck2 = _interopRequireDefault(__webpack_require__(2));

var _createClass2 = _interopRequireDefault(__webpack_require__(3));

var _inherits2 = _interopRequireDefault(__webpack_require__(4));

var _createSuper2 = _interopRequireDefault(__webpack_require__(5));

var _componentBase = _interopRequireDefault(__webpack_require__(85));

var Component = /*#__PURE__*/function (_ComponentBase) {
  (0, _inherits2.default)(Component, _ComponentBase);

  var _super = (0, _createSuper2.default)(Component);

  function Component() {
    (0, _classCallCheck2.default)(this, Component);
    return _super.apply(this, arguments);
  }

  (0, _createClass2.default)(Component, [{
    key: "getNamespace",
    value: function getNamespace() {
      return 'panel/history';
    }
  }, {
    key: "defaultTabs",
    value: function defaultTabs() {
      return {
        actions: {
          title: elementor.translate('actions')
        },
        revisions: {
          title: elementor.translate('revisions')
        }
      };
    }
  }, {
    key: "defaultShortcuts",
    value: function defaultShortcuts() {
      return {
        actions: {
          keys: 'ctrl+shift+h'
        }
      };
    }
  }, {
    key: "renderTab",
    value: function renderTab(tab) {
      elementor.getPanelView().setPage('historyPage').showView(tab);
    }
  }, {
    key: "activate",
    value: function activate() {
      // Activate the tab component itself.
      $e.components.activate(this.getTabRoute(this.currentTab));
    }
  }, {
    key: "getTabsWrapperSelector",
    value: function getTabsWrapperSelector() {
      return '#elementor-panel-elements-navigation';
    }
  }]);
  return Component;
}(_componentBase.default);

exports.default = Component;

/***/ }),
/* 443 */
/***/ (function(module, exports, __webpack_require__) {

"use strict";


var _interopRequireWildcard = __webpack_require__(36);

var _interopRequireDefault = __webpack_require__(0);

var _Object$defineProperty = __webpack_require__(1);

_Object$defineProperty(exports, "__esModule", {
  value: true
});

exports.default = void 0;

var _classCallCheck2 = _interopRequireDefault(__webpack_require__(2));

var _createClass2 = _interopRequireDefault(__webpack_require__(3));

var _inherits2 = _interopRequireDefault(__webpack_require__(4));

var _createSuper2 = _interopRequireDefault(__webpack_require__(5));

var _componentBase = _interopRequireDefault(__webpack_require__(85));

var commands = _interopRequireWildcard(__webpack_require__(350));

var Component = /*#__PURE__*/function (_ComponentBase) {
  (0, _inherits2.default)(Component, _ComponentBase);

  var _super = (0, _createSuper2.default)(Component);

  function Component() {
    (0, _classCallCheck2.default)(this, Component);
    return _super.apply(this, arguments);
  }

  (0, _createClass2.default)(Component, [{
    key: "getNamespace",
    value: function getNamespace() {
      return 'panel/history/actions';
    }
  }, {
    key: "defaultCommands",
    value: function defaultCommands() {
      return this.importCommands(commands);
    }
  }, {
    key: "defaultShortcuts",
    value: function defaultShortcuts() {
      return {
        undo: {
          keys: 'ctrl+z',
          exclude: ['input'],
          scopes: ['panel', 'navigator']
        },
        redo: {
          keys: 'ctrl+shift+z, ctrl+y',
          exclude: ['input'],
          scopes: ['panel', 'navigator']
        }
      };
    }
  }]);
  return Component;
}(_componentBase.default);

exports.default = Component;

/***/ }),
/* 444 */
/***/ (function(module, exports, __webpack_require__) {

"use strict";


var _interopRequireWildcard = __webpack_require__(36);

var _interopRequireDefault = __webpack_require__(0);

var _Object$defineProperty = __webpack_require__(1);

_Object$defineProperty(exports, "__esModule", {
  value: true
});

exports.default = void 0;

var _classCallCheck2 = _interopRequireDefault(__webpack_require__(2));

var _createClass2 = _interopRequireDefault(__webpack_require__(3));

var _inherits2 = _interopRequireDefault(__webpack_require__(4));

var _createSuper2 = _interopRequireDefault(__webpack_require__(5));

var _componentBase = _interopRequireDefault(__webpack_require__(85));

var commands = _interopRequireWildcard(__webpack_require__(445));

var hooks = _interopRequireWildcard(__webpack_require__(448));

var Component = /*#__PURE__*/function (_ComponentBase) {
  (0, _inherits2.default)(Component, _ComponentBase);

  var _super = (0, _createSuper2.default)(Component);

  function Component() {
    (0, _classCallCheck2.default)(this, Component);
    return _super.apply(this, arguments);
  }

  (0, _createClass2.default)(Component, [{
    key: "getNamespace",
    value: function getNamespace() {
      return 'panel/history/revisions';
    }
  }, {
    key: "defaultCommands",
    value: function defaultCommands() {
      return this.importCommands(commands);
    }
  }, {
    key: "defaultHooks",
    value: function defaultHooks() {
      return this.importHooks(hooks);
    }
  }, {
    key: "defaultShortcuts",
    value: function defaultShortcuts() {
      return {
        up: {
          keys: 'up',
          scopes: [this.getNamespace()]
        },
        down: {
          keys: 'down',
          scopes: [this.getNamespace()]
        }
      };
    }
  }, {
    key: "navigate",
    value: function navigate(up) {
      if (elementor.documents.getCurrent().revisions.getItems().length > 1) {
        elementor.getPanelView().getCurrentPageView().currentTab.navigate(up);
      }
    }
  }]);
  return Component;
}(_componentBase.default);

exports.default = Component;

/***/ }),
/* 445 */
/***/ (function(module, exports, __webpack_require__) {

"use strict";


var _Object$defineProperty = __webpack_require__(1);

_Object$defineProperty(exports, "__esModule", {
  value: true
});

_Object$defineProperty(exports, "Down", {
  enumerable: true,
  get: function get() {
    return _down.Down;
  }
});

_Object$defineProperty(exports, "Up", {
  enumerable: true,
  get: function get() {
    return _up.Up;
  }
});

var _down = __webpack_require__(446);

var _up = __webpack_require__(447);

/***/ }),
/* 446 */
/***/ (function(module, exports, __webpack_require__) {

"use strict";


var _interopRequireDefault = __webpack_require__(0);

var _Object$defineProperty = __webpack_require__(1);

_Object$defineProperty(exports, "__esModule", {
  value: true
});

exports.default = exports.Down = void 0;

var _classCallCheck2 = _interopRequireDefault(__webpack_require__(2));

var _createClass2 = _interopRequireDefault(__webpack_require__(3));

var _inherits2 = _interopRequireDefault(__webpack_require__(4));

var _createSuper2 = _interopRequireDefault(__webpack_require__(5));

var _commandBase = _interopRequireDefault(__webpack_require__(21));

var Down = /*#__PURE__*/function (_CommandBase) {
  (0, _inherits2.default)(Down, _CommandBase);

  var _super = (0, _createSuper2.default)(Down);

  function Down() {
    (0, _classCallCheck2.default)(this, Down);
    return _super.apply(this, arguments);
  }

  (0, _createClass2.default)(Down, [{
    key: "apply",
    value: function apply() {
      this.component.navigate();
    }
  }]);
  return Down;
}(_commandBase.default);

exports.Down = Down;
var _default = Down;
exports.default = _default;

/***/ }),
/* 447 */
/***/ (function(module, exports, __webpack_require__) {

"use strict";


var _interopRequireDefault = __webpack_require__(0);

var _Object$defineProperty = __webpack_require__(1);

_Object$defineProperty(exports, "__esModule", {
  value: true
});

exports.default = exports.Up = void 0;

var _classCallCheck2 = _interopRequireDefault(__webpack_require__(2));

var _createClass2 = _interopRequireDefault(__webpack_require__(3));

var _inherits2 = _interopRequireDefault(__webpack_require__(4));

var _createSuper2 = _interopRequireDefault(__webpack_require__(5));

var _commandBase = _interopRequireDefault(__webpack_require__(21));

var Up = /*#__PURE__*/function (_CommandBase) {
  (0, _inherits2.default)(Up, _CommandBase);

  var _super = (0, _createSuper2.default)(Up);

  function Up() {
    (0, _classCallCheck2.default)(this, Up);
    return _super.apply(this, arguments);
  }

  (0, _createClass2.default)(Up, [{
    key: "apply",
    value: function apply() {
      this.component.navigate(true);
    }
  }]);
  return Up;
}(_commandBase.default);

exports.Up = Up;
var _default = Up;
exports.default = _default;

/***/ }),
/* 448 */
/***/ (function(module, exports, __webpack_require__) {

"use strict";


var _Object$defineProperty = __webpack_require__(1);

_Object$defineProperty(exports, "__esModule", {
  value: true
});

_Object$defineProperty(exports, "RevisionsAfterSave", {
  enumerable: true,
  get: function get() {
    return _save.RevisionsAfterSave;
  }
});

var _save = __webpack_require__(449);

/***/ }),
/* 449 */
/***/ (function(module, exports, __webpack_require__) {

"use strict";


var _interopRequireDefault = __webpack_require__(0);

var _Object$defineProperty = __webpack_require__(1);

_Object$defineProperty(exports, "__esModule", {
  value: true
});

exports.default = exports.RevisionsAfterSave = void 0;

var _classCallCheck2 = _interopRequireDefault(__webpack_require__(2));

var _createClass2 = _interopRequireDefault(__webpack_require__(3));

var _inherits2 = _interopRequireDefault(__webpack_require__(4));

var _createSuper2 = _interopRequireDefault(__webpack_require__(5));

var _after = _interopRequireDefault(__webpack_require__(224));

var RevisionsAfterSave = /*#__PURE__*/function (_HookDataAfter) {
  (0, _inherits2.default)(RevisionsAfterSave, _HookDataAfter);

  var _super = (0, _createSuper2.default)(RevisionsAfterSave);

  function RevisionsAfterSave() {
    (0, _classCallCheck2.default)(this, RevisionsAfterSave);
    return _super.apply(this, arguments);
  }

  (0, _createClass2.default)(RevisionsAfterSave, [{
    key: "getCommand",
    value: function getCommand() {
      return 'document/save/save';
    }
  }, {
    key: "getId",
    value: function getId() {
      return 'revisions-after-save';
    }
  }, {
    key: "apply",
    value: function apply(args, result) {
      var data = result.data,
          revisionsModule = elementor.documents.getCurrent().revisions;

      if (data.latest_revisions) {
        revisionsModule.addRevisions(data.latest_revisions);
      }

      revisionsModule.requestRevisions(function () {
        if (data.revisions_ids) {
          var revisionsToKeep = revisionsModule.revisions.filter(function (revision) {
            return -1 !== data.revisions_ids.indexOf(revision.get('id'));
          });
          revisionsModule.revisions.reset(revisionsToKeep);
        }
      });
    }
  }]);
  return RevisionsAfterSave;
}(_after.default);

exports.RevisionsAfterSave = RevisionsAfterSave;
var _default = RevisionsAfterSave;
exports.default = _default;

/***/ }),
/* 450 */
/***/ (function(module, exports, __webpack_require__) {

"use strict";


var _interopRequireDefault = __webpack_require__(0);

var _loading = _interopRequireDefault(__webpack_require__(451));

var _tab = _interopRequireDefault(__webpack_require__(452));

var _empty = _interopRequireDefault(__webpack_require__(454));

var TabHistoryView = __webpack_require__(455);

module.exports = Marionette.LayoutView.extend({
  template: '#tmpl-elementor-panel-history-page',
  regions: {
    content: '#elementor-panel-history-content'
  },
  ui: {
    tabs: '.elementor-panel-navigation-tab'
  },
  regionViews: {},
  currentTab: null,

  /**
   * @type {Document}
   */
  document: null,
  initialize: function initialize(options) {
    this.document = options.document || elementor.documents.getCurrent();
    this.initRegionViews();
  },
  initRegionViews: function initRegionViews() {
    var _this = this;

    var historyItems = this.document.history.getItems();
    this.regionViews = {
      actions: {
        view: function view() {
          return TabHistoryView;
        },
        options: {
          collection: historyItems,
          history: this.document.history
        }
      },
      revisions: {
        view: function view() {
          var revisionsItems = _this.document.revisions.getItems();

          if (!revisionsItems) {
            return _loading.default;
          }

          if (1 === revisionsItems.length && 'current' === revisionsItems.models[0].get('type')) {
            return _empty.default;
          }

          return _tab.default;
        },
        options: {
          document: this.document
        }
      }
    };
  },
  getCurrentTab: function getCurrentTab() {
    return this.currentTab;
  },
  showView: function showView(viewName) {
    var viewDetails = this.regionViews[viewName],
        options = viewDetails.options || {},
        View = viewDetails.view();

    if (this.currentTab && this.currentTab.constructor === View) {
      return;
    }

    this.currentTab = new View(options);
    this.content.show(this.currentTab);
  }
});

/***/ }),
/* 451 */
/***/ (function(module, exports, __webpack_require__) {

"use strict";


var _interopRequireDefault = __webpack_require__(0);

var _Object$defineProperty = __webpack_require__(1);

_Object$defineProperty(exports, "__esModule", {
  value: true
});

exports.default = void 0;

var _classCallCheck2 = _interopRequireDefault(__webpack_require__(2));

var _createClass2 = _interopRequireDefault(__webpack_require__(3));

var _inherits2 = _interopRequireDefault(__webpack_require__(4));

var _createSuper2 = _interopRequireDefault(__webpack_require__(5));

var _default = /*#__PURE__*/function (_Marionette$ItemView) {
  (0, _inherits2.default)(_default, _Marionette$ItemView);

  var _super = (0, _createSuper2.default)(_default);

  function _default() {
    (0, _classCallCheck2.default)(this, _default);
    return _super.apply(this, arguments);
  }

  (0, _createClass2.default)(_default, [{
    key: "getTemplate",
    value: function getTemplate() {
      return '#tmpl-elementor-panel-revisions-loading';
    }
  }, {
    key: "id",
    value: function id() {
      return 'elementor-panel-revisions-loading';
    }
  }, {
    key: "onRender",
    value: function onRender() {
      this.options.document.revisions.requestRevisions(function () {
        setTimeout(function () {
          return $e.routes.refreshContainer('panel');
        });
      });
    }
  }]);
  return _default;
}(Marionette.ItemView);

exports.default = _default;

/***/ }),
/* 452 */
/***/ (function(module, exports, __webpack_require__) {

"use strict";


module.exports = Marionette.CompositeView.extend({
  id: 'elementor-panel-revisions',
  template: '#tmpl-elementor-panel-revisions',
  childView: __webpack_require__(453),
  childViewContainer: '#elementor-revisions-list',
  ui: {
    discard: '.elementor-panel-scheme-discard .elementor-button',
    apply: '.elementor-panel-scheme-save .elementor-button'
  },
  events: {
    'click @ui.discard': 'onDiscardClick',
    'click @ui.apply': 'onApplyClick'
  },
  isRevisionApplied: false,
  currentPreviewId: null,
  currentPreviewItem: null,
  document: null,
  initialize: function initialize(options) {
    this.document = options.document;
    this.collection = this.document.revisions.getItems();
    this.listenTo(elementor.channels.editor, 'saved', this.onEditorSaved);
    this.currentPreviewId = elementor.config.document.revisions.current_id;
  },
  getRevisionViewData: function getRevisionViewData(revisionView) {
    var _this = this;

    this.document.revisions.getRevisionDataAsync(revisionView.model.get('id'), {
      success: function success(data) {
        if (_this.document.config.panel.has_elements) {
          _this.document.revisions.setEditorData(data.elements);
        }

        elementor.settings.page.model.set(data.settings);

        _this.setRevisionsButtonsActive(true);

        revisionView.$el.removeClass('elementor-revision-item-loading');

        _this.enterReviewMode();
      },
      error: function error(errorMessage) {
        revisionView.$el.removeClass('elementor-revision-item-loading');
        _this.currentPreviewItem = null;
        _this.currentPreviewId = null;
        alert(errorMessage);
      }
    });
  },
  setRevisionsButtonsActive: function setRevisionsButtonsActive(active) {
    // Check the tab is open.
    if (!this.isDestroyed) {
      this.ui.apply.add(this.ui.discard).prop('disabled', !active);
    }
  },
  deleteRevision: function deleteRevision(revisionView) {
    var _this2 = this;

    revisionView.$el.addClass('elementor-revision-item-loading');
    this.document.revisions.deleteRevision(revisionView.model, {
      success: function success() {
        if (revisionView.model.get('id') === _this2.currentPreviewId) {
          _this2.onDiscardClick();
        }

        _this2.currentPreviewId = null;
      },
      error: function error() {
        revisionView.$el.removeClass('elementor-revision-item-loading');
        alert('An error occurred');
      }
    });
  },
  enterReviewMode: function enterReviewMode() {
    elementor.changeEditMode('review');
  },
  exitReviewMode: function exitReviewMode() {
    elementor.changeEditMode('edit');
  },
  navigate: function navigate(reverse) {
    if (!this.currentPreviewId || !this.currentPreviewItem || this.children.length <= 1) {
      return;
    }

    var currentPreviewItemIndex = this.collection.indexOf(this.currentPreviewItem.model),
        requiredIndex = reverse ? currentPreviewItemIndex - 1 : currentPreviewItemIndex + 1;

    if (requiredIndex < 0) {
      requiredIndex = this.collection.length - 1;
    }

    if (requiredIndex >= this.collection.length) {
      requiredIndex = 0;
    }

    this.children.findByIndex(requiredIndex).ui.detailsArea.trigger('click');
  },
  onEditorSaved: function onEditorSaved() {
    this.exitReviewMode();
    this.setRevisionsButtonsActive(false);
    this.currentPreviewId = elementor.config.document.revisions.current_id;
  },
  onApplyClick: function onApplyClick() {
    $e.internal('document/save/set-is-modified', {
      status: true
    });
    $e.run('document/save/auto', {
      force: true
    });
    this.isRevisionApplied = true;
    this.currentPreviewId = null;
    this.document.history.getItems().reset();
  },
  onDiscardClick: function onDiscardClick() {
    if (this.document.config.panel.has_elements) {
      this.document.revisions.setEditorData(elementor.config.document.elements);
    }

    $e.internal('document/save/set-is-modified', {
      status: this.isRevisionApplied
    });
    this.isRevisionApplied = false;
    this.setRevisionsButtonsActive(false);
    this.currentPreviewId = null;
    this.exitReviewMode();

    if (this.currentPreviewItem) {
      this.currentPreviewItem.$el.removeClass('elementor-revision-current-preview');
    }
  },
  onDestroy: function onDestroy() {
    if (this.currentPreviewId && this.currentPreviewId !== elementor.config.document.revisions.current_id) {
      this.onDiscardClick();
    }
  },
  onRenderCollection: function onRenderCollection() {
    if (!this.currentPreviewId) {
      return;
    }

    var currentPreviewModel = this.collection.findWhere({
      id: this.currentPreviewId
    }); // Ensure the model is exist and not deleted during a save.

    if (currentPreviewModel) {
      this.currentPreviewItem = this.children.findByModelCid(currentPreviewModel.cid);
      this.currentPreviewItem.$el.addClass('elementor-revision-current-preview');
    }
  },
  onChildviewDetailsAreaClick: function onChildviewDetailsAreaClick(childView) {
    var _this3 = this;

    var revisionID = childView.model.get('id');

    if (revisionID === this.currentPreviewId) {
      return;
    }

    if (this.currentPreviewItem) {
      this.currentPreviewItem.$el.removeClass('elementor-revision-current-preview elementor-revision-item-loading');
    }

    childView.$el.addClass('elementor-revision-current-preview elementor-revision-item-loading');
    var revision = null === this.currentPreviewId || elementor.config.document.revisions.current_id === this.currentPreviewId;

    if (revision && elementor.saver.isEditorChanged()) {
      // TODO: Change to 'document/save/auto' ?.
      $e.internal('document/save/save', {
        status: 'autosave',
        onSuccess: function onSuccess() {
          _this3.getRevisionViewData(childView);
        }
      });
    } else {
      this.getRevisionViewData(childView);
    }

    this.currentPreviewItem = childView;
    this.currentPreviewId = revisionID;
  }
});

/***/ }),
/* 453 */
/***/ (function(module, exports, __webpack_require__) {

"use strict";


module.exports = Marionette.ItemView.extend({
  template: '#tmpl-elementor-panel-revisions-revision-item',
  className: 'elementor-revision-item',
  ui: {
    detailsArea: '.elementor-revision-item__details'
  },
  triggers: {
    'click @ui.detailsArea': 'detailsArea:click'
  }
});

/***/ }),
/* 454 */
/***/ (function(module, exports, __webpack_require__) {

"use strict";


module.exports = Marionette.ItemView.extend({
  template: '#tmpl-elementor-panel-revisions-no-revisions',
  id: 'elementor-panel-revisions-no-revisions',
  className: 'elementor-nerd-box'
});

/***/ }),
/* 455 */
/***/ (function(module, exports, __webpack_require__) {

"use strict";


var _interopRequireDefault = __webpack_require__(0);

__webpack_require__(302);

__webpack_require__(25);

var _itemView = _interopRequireDefault(__webpack_require__(456));

var _empty = _interopRequireDefault(__webpack_require__(457));

module.exports = Marionette.CompositeView.extend({
  id: 'elementor-panel-history',
  template: '#tmpl-elementor-panel-history-tab',
  childView: _itemView.default,
  childViewContainer: '#elementor-history-list',
  emptyView: _empty.default,
  currentItem: null,
  updateCurrentItem: function updateCurrentItem() {
    var _this = this;

    if (this.children.length <= 1) {
      return;
    }

    _.defer(function () {
      // Set current item - the first not applied item
      var currentItem = _this.collection.find(function (model) {
        return 'not_applied' === model.get('status');
      }),
          currentView = _this.children.findByModel(currentItem);

      if (!currentView) {
        return;
      }

      var currentItemClass = 'elementor-history-item-current';

      if (_this.currentItem) {
        _this.currentItem.removeClass(currentItemClass);
      }

      _this.currentItem = currentView.$el;

      _this.currentItem.addClass(currentItemClass);
    });
  },
  onRender: function onRender() {
    this.updateCurrentItem();
  },
  onRenderEmpty: function onRenderEmpty() {
    this.$el.addClass('elementor-empty');
  },
  onChildviewClick: function onChildviewClick(childView, event) {
    if (childView.$el === this.currentItem) {
      return;
    }

    var collection = event.model.collection,
        index = collection.findIndex(event.model);
    $e.run('panel/history/actions/do', {
      index: index
    });
  }
});

/***/ }),
/* 456 */
/***/ (function(module, exports, __webpack_require__) {

"use strict";


var _interopRequireDefault = __webpack_require__(0);

var _Object$defineProperty = __webpack_require__(1);

_Object$defineProperty(exports, "__esModule", {
  value: true
});

exports.default = void 0;

var _classCallCheck2 = _interopRequireDefault(__webpack_require__(2));

var _createClass2 = _interopRequireDefault(__webpack_require__(3));

var _inherits2 = _interopRequireDefault(__webpack_require__(4));

var _createSuper2 = _interopRequireDefault(__webpack_require__(5));

var _default = /*#__PURE__*/function (_Marionette$ItemView) {
  (0, _inherits2.default)(_default, _Marionette$ItemView);

  var _super = (0, _createSuper2.default)(_default);

  function _default() {
    (0, _classCallCheck2.default)(this, _default);
    return _super.apply(this, arguments);
  }

  (0, _createClass2.default)(_default, [{
    key: "getTemplate",
    value: function getTemplate() {
      return '#tmpl-elementor-panel-history-item';
    }
  }, {
    key: "className",
    value: function className() {
      return 'elementor-history-item elementor-history-item-' + this.model.get('status');
    }
  }, {
    key: "triggers",
    value: function triggers() {
      return {
        click: 'click'
      };
    }
  }]);
  return _default;
}(Marionette.ItemView);

exports.default = _default;

/***/ }),
/* 457 */
/***/ (function(module, exports, __webpack_require__) {

"use strict";


var _interopRequireDefault = __webpack_require__(0);

var _Object$defineProperty = __webpack_require__(1);

_Object$defineProperty(exports, "__esModule", {
  value: true
});

exports.default = void 0;

var _classCallCheck2 = _interopRequireDefault(__webpack_require__(2));

var _createClass2 = _interopRequireDefault(__webpack_require__(3));

var _inherits2 = _interopRequireDefault(__webpack_require__(4));

var _createSuper2 = _interopRequireDefault(__webpack_require__(5));

var _default = /*#__PURE__*/function (_Marionette$ItemView) {
  (0, _inherits2.default)(_default, _Marionette$ItemView);

  var _super = (0, _createSuper2.default)(_default);

  function _default() {
    (0, _classCallCheck2.default)(this, _default);
    return _super.apply(this, arguments);
  }

  (0, _createClass2.default)(_default, [{
    key: "getTemplate",
    value: function getTemplate() {
      return '#tmpl-elementor-panel-history-no-items';
    }
  }, {
    key: "id",
    value: function id() {
      return 'elementor-panel-history-no-items';
    }
  }, {
    key: "onDestroy",
    value: function onDestroy() {
      this._parent.$el.removeClass('elementor-empty');
    }
  }]);
  return _default;
}(Marionette.ItemView);

exports.default = _default;

/***/ }),
/* 458 */
/***/ (function(module, exports, __webpack_require__) {

"use strict";


var _interopRequireDefault = __webpack_require__(0);

var _Object$defineProperty = __webpack_require__(1);

_Object$defineProperty(exports, "__esModule", {
  value: true
});

exports.default = void 0;

var _classCallCheck2 = _interopRequireDefault(__webpack_require__(2));

var _createClass2 = _interopRequireDefault(__webpack_require__(3));

var _inherits2 = _interopRequireDefault(__webpack_require__(4));

var _createSuper2 = _interopRequireDefault(__webpack_require__(5));

var _component = _interopRequireDefault(__webpack_require__(459));

var _default = /*#__PURE__*/function (_elementorModules$Mod) {
  (0, _inherits2.default)(_default, _elementorModules$Mod);

  var _super = (0, _createSuper2.default)(_default);

  function _default() {
    (0, _classCallCheck2.default)(this, _default);
    return _super.apply(this, arguments);
  }

  (0, _createClass2.default)(_default, [{
    key: "onInit",
    value: function onInit() {
      $e.components.register(new _component.default({
        manager: this
      }));
    }
  }]);
  return _default;
}(elementorModules.Module);

exports.default = _default;

/***/ }),
/* 459 */
/***/ (function(module, exports, __webpack_require__) {

"use strict";


var _interopRequireDefault = __webpack_require__(0);

var _Object$defineProperty = __webpack_require__(1);

_Object$defineProperty(exports, "__esModule", {
  value: true
});

exports.default = void 0;

var _classCallCheck2 = _interopRequireDefault(__webpack_require__(2));

var _createClass2 = _interopRequireDefault(__webpack_require__(3));

var _inherits2 = _interopRequireDefault(__webpack_require__(4));

var _createSuper2 = _interopRequireDefault(__webpack_require__(5));

var _componentModalBase = _interopRequireDefault(__webpack_require__(287));

var _modalLayout = _interopRequireDefault(__webpack_require__(460));

var Component = /*#__PURE__*/function (_ComponentModalBase) {
  (0, _inherits2.default)(Component, _ComponentModalBase);

  var _super = (0, _createSuper2.default)(Component);

  function Component() {
    (0, _classCallCheck2.default)(this, Component);
    return _super.apply(this, arguments);
  }

  (0, _createClass2.default)(Component, [{
    key: "getNamespace",
    value: function getNamespace() {
      return 'shortcuts';
    }
  }, {
    key: "defaultShortcuts",
    value: function defaultShortcuts() {
      return {
        '': {
          keys: 'ctrl+?'
        }
      };
    }
  }, {
    key: "getModalLayout",
    value: function getModalLayout() {
      return _modalLayout.default;
    }
  }]);
  return Component;
}(_componentModalBase.default);

exports.default = Component;

/***/ }),
/* 460 */
/***/ (function(module, exports, __webpack_require__) {

"use strict";


var _interopRequireDefault = __webpack_require__(0);

var _Object$defineProperty = __webpack_require__(1);

_Object$defineProperty(exports, "__esModule", {
  value: true
});

exports.default = void 0;

var _classCallCheck2 = _interopRequireDefault(__webpack_require__(2));

var _createClass2 = _interopRequireDefault(__webpack_require__(3));

var _get3 = _interopRequireDefault(__webpack_require__(26));

var _getPrototypeOf2 = _interopRequireDefault(__webpack_require__(16));

var _inherits2 = _interopRequireDefault(__webpack_require__(4));

var _createSuper2 = _interopRequireDefault(__webpack_require__(5));

var _modalContent = _interopRequireDefault(__webpack_require__(461));

var _default = /*#__PURE__*/function (_elementorModules$com) {
  (0, _inherits2.default)(_default, _elementorModules$com);

  var _super = (0, _createSuper2.default)(_default);

  function _default() {
    (0, _classCallCheck2.default)(this, _default);
    return _super.apply(this, arguments);
  }

  (0, _createClass2.default)(_default, [{
    key: "getModalOptions",
    value: function getModalOptions() {
      return {
        id: 'elementor-hotkeys__modal'
      };
    }
  }, {
    key: "getLogoOptions",
    value: function getLogoOptions() {
      return {
        title: elementor.translate('keyboard_shortcuts')
      };
    }
  }, {
    key: "initialize",
    value: function initialize() {
      var _get2;

      for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
        args[_key] = arguments[_key];
      }

      (_get2 = (0, _get3.default)((0, _getPrototypeOf2.default)(_default.prototype), "initialize", this)).call.apply(_get2, [this].concat(args));

      this.showLogo();
      this.showContentView();
    }
  }, {
    key: "showContentView",
    value: function showContentView() {
      this.modalContent.show(new _modalContent.default());
    }
  }]);
  return _default;
}(elementorModules.common.views.modal.Layout);

exports.default = _default;

/***/ }),
/* 461 */
/***/ (function(module, exports, __webpack_require__) {

"use strict";


var _interopRequireDefault = __webpack_require__(0);

var _Object$defineProperty = __webpack_require__(1);

_Object$defineProperty(exports, "__esModule", {
  value: true
});

exports.default = void 0;

var _classCallCheck2 = _interopRequireDefault(__webpack_require__(2));

var _createClass2 = _interopRequireDefault(__webpack_require__(3));

var _inherits2 = _interopRequireDefault(__webpack_require__(4));

var _createSuper2 = _interopRequireDefault(__webpack_require__(5));

var _environment = _interopRequireDefault(__webpack_require__(272));

var _default = /*#__PURE__*/function (_Marionette$LayoutVie) {
  (0, _inherits2.default)(_default, _Marionette$LayoutVie);

  var _super = (0, _createSuper2.default)(_default);

  function _default() {
    (0, _classCallCheck2.default)(this, _default);
    return _super.apply(this, arguments);
  }

  (0, _createClass2.default)(_default, [{
    key: "id",
    value: function id() {
      return 'elementor-hotkeys';
    }
  }, {
    key: "templateHelpers",
    value: function templateHelpers() {
      return {
        environment: _environment.default
      };
    }
  }, {
    key: "getTemplate",
    value: function getTemplate() {
      return '#tmpl-elementor-hotkeys';
    }
  }]);
  return _default;
}(Marionette.LayoutView);

exports.default = _default;

/***/ }),
/* 462 */
/***/ (function(module, exports, __webpack_require__) {

"use strict";


var _interopRequireDefault = __webpack_require__(0);

var _Object$defineProperty = __webpack_require__(1);

_Object$defineProperty(exports, "__esModule", {
  value: true
});

exports.default = void 0;

__webpack_require__(58);

var _keys = _interopRequireDefault(__webpack_require__(23));

__webpack_require__(39);

var _classCallCheck2 = _interopRequireDefault(__webpack_require__(2));

var _createClass2 = _interopRequireDefault(__webpack_require__(3));

var _inherits2 = _interopRequireDefault(__webpack_require__(4));

var _createSuper2 = _interopRequireDefault(__webpack_require__(5));

var _modalLayout = _interopRequireDefault(__webpack_require__(463));

var _iconManager = __webpack_require__(464);

var _iconLibrary = _interopRequireDefault(__webpack_require__(470));

var _store = _interopRequireDefault(__webpack_require__(471));

var _reactDom = __webpack_require__(327);

var _default = /*#__PURE__*/function (_elementorModules$Mod) {
  (0, _inherits2.default)(_default, _elementorModules$Mod);

  var _super = (0, _createSuper2.default)(_default);

  function _default() {
    (0, _classCallCheck2.default)(this, _default);
    return _super.apply(this, arguments);
  }

  (0, _createClass2.default)(_default, [{
    key: "onInit",
    value: function onInit() {
      // Init icon library helper
      this.library = new _iconLibrary.default(); // Init Icon library Storage helper

      this.store = new _store.default(); // Fetch fa4 to fa5 migration data

      elementor.helpers.fetchFa4ToFa5Mapping();
      this.cache = {};
    }
  }, {
    key: "getLayout",
    value: function getLayout() {
      var _this = this;

      if (!this.layout) {
        this.layout = new _modalLayout.default();
        var layoutModal = this.layout.getModal();
        layoutModal.addButton({
          name: 'insert_icon',
          text: elementor.translate('Insert'),
          classes: 'elementor-button elementor-button-success',
          callback: function callback() {
            _this.updateControlValue();

            _this.unMountIconManager();
          }
        });
        layoutModal.on('show', this.onPickerShow.bind(this)).on('hide', this.unMountIconManager);
      }

      return this.layout;
    }
  }, {
    key: "getDefaultSettings",
    value: function getDefaultSettings() {
      return {
        selectedIcon: {}
      };
    }
  }, {
    key: "unMountIconManager",
    value: function unMountIconManager() {
      var containerElement = document.querySelector('#elementor-icons-manager-modal .dialog-content');
      (0, _reactDom.unmountComponentAtNode)(containerElement);
    }
  }, {
    key: "loadIconLibraries",
    value: function loadIconLibraries() {
      if (!this.cache.loaded) {
        elementor.config.icons.libraries.forEach(function (library) {
          if ('all' === library.name) {
            return;
          }

          elementor.iconManager.library.initIconType(library);
        });
        this.cache.loaded = true;
      }
    }
  }, {
    key: "onPickerShow",
    value: function onPickerShow() {
      var controlView = this.getSettings('controlView'),
          loaded = {
        GoPro: true
      },
          iconManagerConfig = {
        recommended: controlView.model.get('recommended') || false
      };
      var selected = controlView.getControlValue(),
          icons = elementor.config.icons.libraries;

      if (!selected.library || !selected.value) {
        selected = {
          value: '',
          library: ''
        };
      }

      iconManagerConfig.selected = selected;
      this.setSettings('selectedIcon', selected);

      if (iconManagerConfig.recommended) {
        var hasRecommended = false;
        icons.forEach(function (library, index) {
          if ('recommended' === library.name) {
            hasRecommended = true;
            icons[index].icons = iconManagerConfig.recommended;
          }
        });

        if (!hasRecommended) {
          icons.unshift({
            name: 'recommended',
            label: 'Recommended',
            icons: iconManagerConfig.recommended,
            labelIcon: 'eicon-star-o',
            native: true
          });
        }
      } else {
        icons = icons.filter(function (library) {
          return 'recommended' !== library.name;
        });
      }

      icons.forEach(function (tab, index) {
        if (-1 === ['all', 'recommended'].indexOf(tab.name)) {
          elementor.iconManager.library.initIconType(tab, function (lib) {
            icons[index] = lib;
          });
        }

        loaded[tab.name] = true;
      });
      iconManagerConfig.loaded = loaded;
      iconManagerConfig.icons = icons; // Set active tab

      var activeTab = selected.library || icons[0].name;

      if ('svg' === selected.library) {
        activeTab = icons[0].name;
      } // selected Library exists


      if (!(0, _keys.default)(icons).some(function (library) {
        return library === activeTab;
      })) {
        activeTab = icons[0].name;
      } // Show recommended tab if selected from it


      if (iconManagerConfig.recommended && '' !== selected.library && '' !== selected.value && iconManagerConfig.recommended.hasOwnProperty(selected.library)) {
        var iconLibrary = icons.filter(function (library) {
          return selected.library === library.name;
        });
        var selectedIconName = selected.value.replace(iconLibrary[0].displayPrefix + ' ' + iconLibrary[0].prefix, '');

        if (iconManagerConfig.recommended[selected.library].some(function (icon) {
          return -1 < icon.indexOf(selectedIconName);
        })) {
          activeTab = icons[0].name;
        }
      }

      iconManagerConfig.customIconsURL = elementor.config.customIconsURL;
      iconManagerConfig.activeTab = activeTab;
      return (0, _iconManager.renderIconManager)(iconManagerConfig);
    }
  }, {
    key: "updateControlValue",
    value: function updateControlValue() {
      var settings = this.getSettings();
      settings.controlView.setValue(settings.selectedIcon);
      settings.controlView.applySavedValue();
    }
  }, {
    key: "show",
    value: function show(options) {
      this.setSettings('controlView', options.view);
      this.getLayout().showModal(options);
    }
  }]);
  return _default;
}(elementorModules.Module);

exports.default = _default;

/***/ }),
/* 463 */
/***/ (function(module, exports, __webpack_require__) {

"use strict";


var _interopRequireDefault = __webpack_require__(0);

var _Object$defineProperty = __webpack_require__(1);

_Object$defineProperty(exports, "__esModule", {
  value: true
});

exports.default = void 0;

var _classCallCheck2 = _interopRequireDefault(__webpack_require__(2));

var _createClass2 = _interopRequireDefault(__webpack_require__(3));

var _get3 = _interopRequireDefault(__webpack_require__(26));

var _getPrototypeOf2 = _interopRequireDefault(__webpack_require__(16));

var _inherits2 = _interopRequireDefault(__webpack_require__(4));

var _createSuper2 = _interopRequireDefault(__webpack_require__(5));

var _layout = _interopRequireDefault(__webpack_require__(355));

var _default = /*#__PURE__*/function (_BaseModalLayout) {
  (0, _inherits2.default)(_default, _BaseModalLayout);

  var _super = (0, _createSuper2.default)(_default);

  function _default() {
    (0, _classCallCheck2.default)(this, _default);
    return _super.apply(this, arguments);
  }

  (0, _createClass2.default)(_default, [{
    key: "getModalOptions",
    value: function getModalOptions() {
      return {
        id: 'elementor-icons-manager-modal'
      };
    }
  }, {
    key: "getLogoOptions",
    value: function getLogoOptions() {
      return {
        title: elementor.translate('icon_library')
      };
    }
  }, {
    key: "initialize",
    value: function initialize() {
      var _get2;

      for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
        args[_key] = arguments[_key];
      }

      (_get2 = (0, _get3.default)((0, _getPrototypeOf2.default)(_default.prototype), "initialize", this)).call.apply(_get2, [this].concat(args));

      this.showLogo();
    }
  }]);
  return _default;
}(_layout.default);

exports.default = _default;

/***/ }),
/* 464 */
/***/ (function(module, exports, __webpack_require__) {

"use strict";


var _interopRequireDefault = __webpack_require__(0);

var _interopRequireWildcard = __webpack_require__(36);

var _Object$defineProperty = __webpack_require__(1);

_Object$defineProperty(exports, "__esModule", {
  value: true
});

exports.renderIconManager = exports.default = void 0;

var _react = _interopRequireWildcard(__webpack_require__(11));

var _extends2 = _interopRequireDefault(__webpack_require__(188));

var _objectSpread2 = _interopRequireDefault(__webpack_require__(214));

__webpack_require__(39);

var _classCallCheck2 = _interopRequireDefault(__webpack_require__(2));

var _createClass2 = _interopRequireDefault(__webpack_require__(3));

var _assertThisInitialized2 = _interopRequireDefault(__webpack_require__(49));

var _inherits2 = _interopRequireDefault(__webpack_require__(4));

var _createSuper2 = _interopRequireDefault(__webpack_require__(5));

var _defineProperty2 = _interopRequireDefault(__webpack_require__(28));

var _propTypes = _interopRequireDefault(__webpack_require__(41));

var _reactDom = __webpack_require__(327);

var _tab = _interopRequireDefault(__webpack_require__(465));

var _iconsGoPro = _interopRequireDefault(__webpack_require__(469));

var IconsManager = /*#__PURE__*/function (_Component) {
  (0, _inherits2.default)(IconsManager, _Component);

  var _super = (0, _createSuper2.default)(IconsManager);

  function IconsManager() {
    var _this;

    (0, _classCallCheck2.default)(this, IconsManager);

    for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
      args[_key] = arguments[_key];
    }

    _this = _super.call.apply(_super, [this].concat(args));
    (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "scrollViewRef", (0, _react.createRef)());
    (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "state", {
      activeTab: _this.props.activeTab,
      selected: {
        library: '',
        value: ''
      },
      iconTabs: elementor.config.icons.libraries,
      loaded: _this.props.loaded,
      filter: ''
    });
    (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "cache", {});
    (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "loadAllTabs", function () {
      var loaded = _this.state.loaded;
      var icons = _this.props.icons;
      icons.forEach(function (tabSettings) {
        if (loaded[tabSettings.name]) {
          return;
        }

        if (-1 < ['all', 'recommended'].indexOf(tabSettings.name)) {
          return;
        }

        elementor.iconManager.library.initIconType((0, _objectSpread2.default)({}, tabSettings), function (library) {
          _this.cache[library.name] = library;
          loaded[tabSettings.name] = true;
        });
      });
      loaded.all = true;
      loaded.recommended = true;

      _this.setState({
        loaded: loaded
      });
    });
    (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "getActiveTab", function () {
      var activeTab = _this.state.activeTab;
      var loaded = _this.state.loaded,
          icons = _this.props.icons;

      if (!activeTab) {
        if (_this.props.activeTab) {
          activeTab = _this.props.activeTab;
        }
      }

      if ('GoPro' === activeTab) {
        return activeTab;
      }

      if (!loaded[activeTab]) {
        return false;
      }

      var tabSettings = (0, _objectSpread2.default)({}, icons.filter(function (tab) {
        return tab.name === activeTab;
      })[0]);

      if (loaded[activeTab]) {
        return (0, _objectSpread2.default)({}, tabSettings);
      }

      if ('all' === tabSettings.name && !loaded.all) {
        return _this.loadAllTabs();
      }

      elementor.iconManager.library.initIconType((0, _objectSpread2.default)({}, tabSettings), function (library) {
        _this.cache[library.name] = library;

        _this.updateLoaded(library.name);
      });
      return false;
    });
    (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "getIconTabsLinks", function () {
      var native = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : true;
      return _this.props.icons.map(function (tab) {
        if (native ^ _this.isNativeTab(tab)) {
          return '';
        }

        var isCurrentTab = tab.name === _this.state.activeTab;
        var className = 'elementor-icons-manager__tab-link';

        if (isCurrentTab) {
          className += ' elementor-active';
        }

        return /*#__PURE__*/_react.default.createElement("div", {
          className: className,
          key: tab.name,
          onClick: function onClick() {
            if (isCurrentTab) {
              return;
            }

            _this.setState({
              activeTab: tab.name
            });
          }
        }, /*#__PURE__*/_react.default.createElement("i", {
          className: tab.labelIcon
        }), tab.label);
      });
    });
    (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "getActiveTabIcons", function (activeTab) {
      if (activeTab.name) {
        return _this.getActiveTabIcons(activeTab.name);
      }

      if (_this.cache[activeTab]) {
        return _this.cache[activeTab].icons;
      }

      if ('recommended' === activeTab) {
        return _this.state.iconTabs[0].icons;
      }

      if ('all' === activeTab) {
        return _this.getAllIcons();
      }

      if (!_this.state.loaded[activeTab]) {
        var librarySettings = _this.props.icons.filter(function (library) {
          return activeTab === library.name;
        });

        return elementor.iconManager.library.initIconType((0, _objectSpread2.default)({}, librarySettings[0]), function (library) {
          _this.cache[library.name] = library;

          _this.updateLoaded(library.name);
        });
      }

      return elementor.iconManager.store.getIcons(activeTab);
    });
    (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "getAllIcons", function () {
      if (_this.cache.all) {
        return _this.cache.all.icons;
      }

      var icons = {};

      _this.props.icons.forEach(function (tabSettings) {
        if ('all' === tabSettings.name || 'recommended' === tabSettings.name) {
          return;
        }

        icons[tabSettings.name] = _this.getActiveTabIcons(tabSettings.name);
      });

      _this.cache.all = {
        icons: icons
      };
      return icons;
    });
    (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "handleSearch", function (event) {
      var filter = event.target.value;

      if (filter && '' !== filter) {
        filter = filter.toLocaleLowerCase();

        if (_this.state.filter === filter) {
          return;
        }
      } else {
        filter = '';
      }

      _this.setState({
        filter: filter
      });
    });
    (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "setSelected", function (selected) {
      elementor.iconManager.setSettings('selectedIcon', selected);

      _this.setState({
        selected: selected
      });
    });
    (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "getSelected", function () {
      var selected = _this.state.selected;

      if ('' === selected.value && _this.props.selected && _this.props.selected.value) {
        selected = {
          value: _this.props.selected.value,
          library: _this.props.selected.library
        };
      }

      return selected;
    });
    (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "render", function () {
      var activeTab = _this.getActiveTab(),
          activeTabName = activeTab.name ? activeTab.name : activeTab,
          _this$props$showSearc = _this.props.showSearch,
          showSearch = _this$props$showSearc === void 0 ? true : _this$props$showSearc,
          filter = _this.state.filter,
          selected = _this.getSelected();

      if ('GoPro' !== activeTab) {
        if (!activeTabName || !_this.state.loaded[activeTabName]) {
          return 'Loading';
        }

        if (activeTab) {
          activeTab.icons = _this.getActiveTabIcons(activeTab);
        }
      }

      return /*#__PURE__*/_react.default.createElement(_react.Fragment, null, /*#__PURE__*/_react.default.createElement("div", {
        id: "elementor-icons-manager__sidebar",
        className: 'elementor-templates-modal__sidebar'
      }, /*#__PURE__*/_react.default.createElement("div", {
        id: "elementor-icons-manager__tab-links"
      }, _this.getIconTabsLinks(), _this.getUploadCustomButton(), _this.getIconTabsLinks(false))), /*#__PURE__*/_react.default.createElement("div", {
        id: "elementor-icons-manager__main",
        className: 'elementor-templates-modal__content'
      }, 'GoPro' === activeTabName ? /*#__PURE__*/_react.default.createElement(_iconsGoPro.default, null) : /*#__PURE__*/_react.default.createElement(_react.Fragment, null, showSearch ? _this.getSearchHTML() : '', /*#__PURE__*/_react.default.createElement("div", {
        id: "elementor-icons-manager__tab__wrapper",
        ref: _this.scrollViewRef
      }, /*#__PURE__*/_react.default.createElement("div", {
        id: "elementor-icons-manager__tab__title"
      }, activeTab.label), /*#__PURE__*/_react.default.createElement("div", {
        id: "elementor-icons-manager__tab__content_wrapper"
      }, /*#__PURE__*/_react.default.createElement("input", {
        type: "hidden",
        name: "icon_value",
        id: "icon_value",
        value: selected.value
      }), /*#__PURE__*/_react.default.createElement("input", {
        type: "hidden",
        name: "icon_type",
        id: "icon_type",
        value: selected.library
      }), _this.state.loaded[activeTab.name] ? /*#__PURE__*/_react.default.createElement(_tab.default, (0, _extends2.default)({
        setSelected: _this.setSelected,
        selected: selected,
        filter: filter,
        key: activeTab.name,
        parentRef: _this.scrollViewRef
      }, activeTab)) : 'Loading')))));
    });
    return _this;
  }

  (0, _createClass2.default)(IconsManager, [{
    key: "updateLoaded",
    value: function updateLoaded(libraryName) {
      var loaded = this.state.loaded;
      loaded[libraryName] = true;
      this.setState({
        loaded: loaded
      });
    }
  }, {
    key: "isNativeTab",
    value: function isNativeTab(tab) {
      return ('all' === tab.name || 'recommended' === tab.name || 'fa-' === tab.name.substr(0, 3)) && tab.native;
    }
  }, {
    key: "getUploadCustomButton",
    value: function getUploadCustomButton() {
      var _this2 = this;

      var onClick = function onClick() {
        if ('GoPro' === _this2.state.activeTab) {
          return;
        }

        _this2.setState({
          activeTab: 'GoPro'
        });
      };

      if (this.props.customIconsURL) {
        onClick = function onClick() {
          window.open(_this2.props.customIconsURL, '_blank');
        };
      }

      return /*#__PURE__*/_react.default.createElement("div", {
        id: "elementor-icons-manager__upload"
      }, /*#__PURE__*/_react.default.createElement("div", {
        id: "elementor-icons-manager__upload__title"
      }, elementor.translate('my_libraries')), /*#__PURE__*/_react.default.createElement("button", {
        id: "elementor-icons-manager__upload__button",
        className: "elementor-button elementor-button-default",
        onClick: onClick
      }, elementor.translate('upload')));
    }
  }, {
    key: "getSearchHTML",
    value: function getSearchHTML() {
      return /*#__PURE__*/_react.default.createElement("div", {
        id: "elementor-icons-manager__search"
      }, /*#__PURE__*/_react.default.createElement("input", {
        placeholder: 'Filter by name...',
        onInput: this.handleSearch
      }), /*#__PURE__*/_react.default.createElement("i", {
        className: 'eicon-search'
      }));
    }
  }]);
  return IconsManager;
}(_react.Component);

var _default = IconsManager;
exports.default = _default;

var renderIconManager = function renderIconManager(props) {
  var containerElement = document.querySelector('#elementor-icons-manager-modal .dialog-content');
  return (0, _reactDom.render)( /*#__PURE__*/_react.default.createElement(IconsManager, (0, _extends2.default)({}, props, {
    containerElement: containerElement
  })), containerElement);
};

exports.renderIconManager = renderIconManager;
IconsManager.propTypes = {
  activeTab: _propTypes.default.any,
  customIconsURL: _propTypes.default.string,
  icons: _propTypes.default.any,
  loaded: _propTypes.default.any,
  modalView: _propTypes.default.any,
  recommended: _propTypes.default.oneOfType([_propTypes.default.bool, _propTypes.default.object]),
  selected: _propTypes.default.any,
  showSearch: _propTypes.default.bool
};

/***/ }),
/* 465 */
/***/ (function(module, exports, __webpack_require__) {

"use strict";


var _interopRequireDefault = __webpack_require__(0);

var _interopRequireWildcard = __webpack_require__(36);

var _Object$defineProperty = __webpack_require__(1);

_Object$defineProperty(exports, "__esModule", {
  value: true
});

exports.default = void 0;

var _react = _interopRequireWildcard(__webpack_require__(11));

__webpack_require__(135);

__webpack_require__(155);

var _slicedToArray2 = _interopRequireDefault(__webpack_require__(102));

__webpack_require__(147);

__webpack_require__(117);

__webpack_require__(72);

var _createForOfIteratorHelper2 = _interopRequireDefault(__webpack_require__(466));

var _values = _interopRequireDefault(__webpack_require__(55));

__webpack_require__(39);

var _toConsumableArray2 = _interopRequireDefault(__webpack_require__(299));

var _entries = _interopRequireDefault(__webpack_require__(89));

var _classCallCheck2 = _interopRequireDefault(__webpack_require__(2));

var _createClass2 = _interopRequireDefault(__webpack_require__(3));

var _assertThisInitialized2 = _interopRequireDefault(__webpack_require__(49));

var _inherits2 = _interopRequireDefault(__webpack_require__(4));

var _createSuper2 = _interopRequireDefault(__webpack_require__(5));

var _defineProperty2 = _interopRequireDefault(__webpack_require__(28));

var _propTypes = _interopRequireDefault(__webpack_require__(41));

var _iconList = _interopRequireDefault(__webpack_require__(467));

var _icon = _interopRequireDefault(__webpack_require__(468));

var Tab = /*#__PURE__*/function (_Component) {
  (0, _inherits2.default)(Tab, _Component);

  var _super = (0, _createSuper2.default)(Tab);

  function Tab() {
    var _this;

    (0, _classCallCheck2.default)(this, Tab);

    for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
      args[_key] = arguments[_key];
    }

    _this = _super.call.apply(_super, [this].concat(args));
    (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "componentDidMount", function () {
      if (_this.props.selected && _this.props.selected.value) {
        setTimeout(function () {
          var element = document.querySelector('.elementor-selected');

          if (element) {
            element.scrollIntoView(false);
          }
        }, 0);
      }
    });
    (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "handleFullIconList", function () {
      var fullIconList = [];
      (0, _entries.default)(_this.props.icons).forEach(function (library) {
        if ('recommended' !== library[0]) {
          fullIconList = [].concat((0, _toConsumableArray2.default)(fullIconList), (0, _toConsumableArray2.default)(_this.getIconsOfType(library[0], library[1])));
        }
      });
      return fullIconList.sort(function (a, b) {
        return a.filter === b.filter ? 0 : +(a.filter > b.filter) || -1;
      });
    });
    (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "getLibrary", function (libraryName) {
      var icons = elementor.config.icons.libraries.filter(function (library) {
        return libraryName === library.name;
      });
      return icons;
    });
    (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "handleRecommendedList", function () {
      var recommendedIconList = [];
      (0, _entries.default)(_this.props.icons).forEach(function (library) {
        var iconLibrary = _this.getLibrary(library[0]),
            iconsOfType = iconLibrary[0].icons,
            recommendedIconsOfType = {};

        library[1].forEach(function (iconName) {
          if (iconsOfType[iconName]) {
            recommendedIconsOfType[iconName] = iconsOfType[iconName];
          }
        });
        recommendedIconList = [].concat((0, _toConsumableArray2.default)(recommendedIconList), (0, _toConsumableArray2.default)(_this.getIconsOfType(library[0], recommendedIconsOfType)));
      });
      return recommendedIconList;
    });
    (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "getIconsComponentList", function () {
      var iconsToShow = [];
      var _this$props = _this.props,
          name = _this$props.name,
          icons = _this$props.icons,
          filter = _this$props.filter;

      switch (name) {
        case 'all':
          iconsToShow = _this.handleFullIconList();
          break;

        case 'recommended':
          iconsToShow = _this.handleRecommendedList();
          break;

        default:
          iconsToShow = _this.getIconsOfType(name, icons);
          break;
      }

      if (filter) {
        iconsToShow = (0, _values.default)(iconsToShow).filter(function (icon) {
          return icon.props.data.name.toLowerCase().indexOf(filter) > -1;
        });
      }

      return iconsToShow;
    });
    (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "render", function () {
      var icons = _this.getIconsComponentList();

      var selectedIndex = -1;

      var _iterator = (0, _createForOfIteratorHelper2.default)(icons.entries()),
          _step;

      try {
        for (_iterator.s(); !(_step = _iterator.n()).done;) {
          var _step$value = (0, _slicedToArray2.default)(_step.value, 2),
              index = _step$value[0],
              icon = _step$value[1];

          if (icon.props.containerClass.includes('elementor-selected')) {
            selectedIndex = index;
            break;
          }
        }
      } catch (err) {
        _iterator.e(err);
      } finally {
        _iterator.f();
      }

      return /*#__PURE__*/_react.default.createElement(_iconList.default, {
        selectedIndex: selectedIndex,
        items: icons,
        parentRef: _this.props.parentRef
      });
    });
    return _this;
  }

  (0, _createClass2.default)(Tab, [{
    key: "getIconsOfType",
    value: function getIconsOfType(type, icons) {
      var _this2 = this;

      var _this$props2 = this.props,
          selected = _this$props2.selected,
          filter = _this$props2.filter;
      return (0, _entries.default)(icons).map(function (icon) {
        var iconData = icon[1],
            iconName = icon[0],
            className = iconData.displayPrefix + ' ' + iconData.selector;
        var containerClass = 'elementor-icons-manager__tab__item';

        if (selected.value === className) {
          containerClass += ' elementor-selected';
        }

        var key = containerClass + type + '-' + iconName + filter;
        return /*#__PURE__*/_react.default.createElement(_icon.default, {
          key: key,
          library: type,
          keyID: iconName,
          containerClass: containerClass,
          className: className,
          setSelectedHandler: _this2.props.setSelected,
          data: iconData
        });
      });
    }
  }]);
  return Tab;
}(_react.Component);

Tab.propTypes = {
  data: _propTypes.default.any,
  filter: _propTypes.default.any,
  icons: _propTypes.default.object,
  name: _propTypes.default.string,
  selected: _propTypes.default.object,
  setSelected: _propTypes.default.func,
  parentRef: _propTypes.default.any
};
var _default = Tab;
exports.default = _default;

/***/ }),
/* 466 */
/***/ (function(module, exports, __webpack_require__) {

var _getIterator = __webpack_require__(236);

var _Array$isArray = __webpack_require__(84);

var _Symbol$iterator = __webpack_require__(151);

var _Symbol = __webpack_require__(111);

var unsupportedIterableToArray = __webpack_require__(187);

function _createForOfIteratorHelper(o, allowArrayLike) {
  var it;

  if (typeof _Symbol === "undefined" || o[_Symbol$iterator] == null) {
    if (_Array$isArray(o) || (it = unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === "number") {
      if (it) o = it;
      var i = 0;

      var F = function F() {};

      return {
        s: F,
        n: function n() {
          if (i >= o.length) return {
            done: true
          };
          return {
            done: false,
            value: o[i++]
          };
        },
        e: function e(_e) {
          throw _e;
        },
        f: F
      };
    }

    throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.");
  }

  var normalCompletion = true,
      didErr = false,
      err;
  return {
    s: function s() {
      it = _getIterator(o);
    },
    n: function n() {
      var step = it.next();
      normalCompletion = step.done;
      return step;
    },
    e: function e(_e2) {
      didErr = true;
      err = _e2;
    },
    f: function f() {
      try {
        if (!normalCompletion && it["return"] != null) it["return"]();
      } finally {
        if (didErr) throw err;
      }
    }
  };
}

module.exports = _createForOfIteratorHelper;

/***/ }),
/* 467 */
/***/ (function(module, exports, __webpack_require__) {

"use strict";


var _interopRequireWildcard = __webpack_require__(36);

var _interopRequireDefault = __webpack_require__(0);

var _Object$defineProperty = __webpack_require__(1);

_Object$defineProperty(exports, "__esModule", {
  value: true
});

exports.default = void 0;

var _classCallCheck2 = _interopRequireDefault(__webpack_require__(2));

var _createClass2 = _interopRequireDefault(__webpack_require__(3));

var _assertThisInitialized2 = _interopRequireDefault(__webpack_require__(49));

var _inherits2 = _interopRequireDefault(__webpack_require__(4));

var _createSuper2 = _interopRequireDefault(__webpack_require__(5));

var _defineProperty2 = _interopRequireDefault(__webpack_require__(28));

var _propTypes = _interopRequireDefault(__webpack_require__(41));

var _react = _interopRequireWildcard(__webpack_require__(11));

var LazyIconList = /*#__PURE__*/function (_Component) {
  (0, _inherits2.default)(LazyIconList, _Component);

  var _super = (0, _createSuper2.default)(LazyIconList);

  function LazyIconList() {
    var _this;

    (0, _classCallCheck2.default)(this, LazyIconList);

    for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
      args[_key] = arguments[_key];
    }

    _this = _super.call.apply(_super, [this].concat(args));
    (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "state", {
      itemSize: {
        width: 0,
        height: 0
      },
      wrapperSize: {
        width: 0,
        height: 0
      },
      firstRowInView: 0
    });
    (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "selectors", {
      item: '.elementor-icons-manager__tab__item',
      wrapper: 'elementor-icons-manager__tab__wrapper'
    });
    (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "attachScrollListener", function () {
      var element = document.getElementById(_this.selectors.wrapper);

      if (element) {
        element.addEventListener('scroll', _this.handleScroll);
      }
    });
    (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "maybeMeasureItem", function () {
      if (_this.state.itemSize.width) {
        return;
      } // CSS Item Padding


      var itemPadding = 20,
          wrapper = document.getElementById(_this.selectors.wrapper),
          testElement = document.querySelector(_this.selectors.item);

      if (!testElement) {
        return;
      }

      var newState = {
        itemSize: {
          width: testElement.offsetWidth + itemPadding,
          height: testElement.offsetHeight + itemPadding
        },
        wrapperSize: {
          width: wrapper.offsetWidth,
          height: wrapper.clientHeight
        }
      };
      return _this.setState(newState, function () {
        _this.maybeScrollToSelected();
      });
    });
    (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "maybeScrollToSelected", function () {
      if (!_this.hasSelected()) {
        return;
      }

      var selectedIndex = _this.props.selectedIndex,
          _this$state = _this.state,
          wrapperSize = _this$state.wrapperSize,
          itemSize = _this$state.itemSize,
          itemsInRow = Math.floor(wrapperSize.width / itemSize.width),
          selectedItemRow = Math.ceil(selectedIndex / itemsInRow) - 1,
          scrollTop = selectedItemRow * itemSize.height;
      setTimeout(function () {
        _this.props.parentRef.current.scrollTo({
          top: scrollTop,
          left: 0,
          behavior: 'auto'
        });
      }, 0);
    });
    (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "handleScroll", function () {
      _this.clearDebounceScrollCallback();

      _this._debounce = setTimeout(function () {
        var element = document.getElementById(_this.selectors.wrapper);
        var itemSize = _this.state.itemSize;

        _this.setState({
          firstRowInView: Math.floor(element.scrollTop / itemSize.height)
        });
      }, 10);
    });
    (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "render", function () {
      var _this$state2 = _this.state,
          itemSize = _this$state2.itemSize,
          wrapperSize = _this$state2.wrapperSize;
      var firstRowInView = _this.state.firstRowInView;

      if (!itemSize.width) {
        return _this.renderFirstElementForMeasurement();
      }

      var items = _this.props.items,
          itemsInRow = Math.floor(wrapperSize.width / itemSize.width),
          totalRows = Math.ceil(items.length / itemsInRow),
          spareRows = 4;
      var rowsInView = Math.ceil(wrapperSize.height / itemSize.height) + spareRows;

      if (rowsInView > totalRows) {
        rowsInView = totalRows;
      } // Prevent scroll overflow


      if (firstRowInView > totalRows - rowsInView) {
        firstRowInView = totalRows - rowsInView;
      }

      var tailRows = totalRows - firstRowInView - rowsInView,
          firstItemIndexInWindow = firstRowInView * itemsInRow,
          lastItemIndexInWindow = (firstRowInView + rowsInView) * itemsInRow - 1,
          itemsInView = items.slice(firstItemIndexInWindow, lastItemIndexInWindow + 1),
          offsetStyle = {
        height: "".concat(firstRowInView * itemSize.height, "px")
      },
          tailStyle = {
        height: "".concat(tailRows * itemSize.height, "px")
      };
      return /*#__PURE__*/_react.default.createElement(_react.Fragment, null, /*#__PURE__*/_react.default.createElement("div", {
        className: 'elementor-icons-manager__tab__content__offset',
        style: offsetStyle
      }), /*#__PURE__*/_react.default.createElement("div", {
        id: 'elementor-icons-manager__tab__content'
      }, itemsInView), /*#__PURE__*/_react.default.createElement("div", {
        className: 'elementor-icons-manager__tab__content__tail',
        style: tailStyle
      }));
    });
    return _this;
  }

  (0, _createClass2.default)(LazyIconList, [{
    key: "componentDidMount",
    value: function componentDidMount() {
      this.attachScrollListener();
      this.maybeMeasureItem();
    }
  }, {
    key: "componentWillUnmount",
    value: function componentWillUnmount() {
      this.clearDebounceScrollCallback();
      var element = document.getElementById(this.selectors.wrapper);

      if (element) {
        element.removeEventListener('scroll', this.handleScroll);
      }
    }
  }, {
    key: "clearDebounceScrollCallback",
    value: function clearDebounceScrollCallback() {
      clearTimeout(this._debounce);
    }
  }, {
    key: "renderFirstElementForMeasurement",
    value: function renderFirstElementForMeasurement() {
      return /*#__PURE__*/_react.default.createElement("div", {
        id: 'elementor-icons-manager__tab__content'
      }, this.props.items[0]);
    }
  }, {
    key: "hasSelected",
    value: function hasSelected() {
      return -1 !== this.props.selectedIndex;
    }
  }]);
  return LazyIconList;
}(_react.Component);

var _default = LazyIconList;
exports.default = _default;
LazyIconList.propTypes = {
  items: _propTypes.default.array,
  selectedIndex: _propTypes.default.number,
  parentRef: _propTypes.default.any
};

/***/ }),
/* 468 */
/***/ (function(module, exports, __webpack_require__) {

"use strict";


var _interopRequireDefault = __webpack_require__(0);

var _interopRequireWildcard = __webpack_require__(36);

var _Object$defineProperty = __webpack_require__(1);

_Object$defineProperty(exports, "__esModule", {
  value: true
});

exports.default = void 0;

var _react = _interopRequireWildcard(__webpack_require__(11));

__webpack_require__(39);

var _classCallCheck2 = _interopRequireDefault(__webpack_require__(2));

var _assertThisInitialized2 = _interopRequireDefault(__webpack_require__(49));

var _inherits2 = _interopRequireDefault(__webpack_require__(4));

var _createSuper2 = _interopRequireDefault(__webpack_require__(5));

var _defineProperty2 = _interopRequireDefault(__webpack_require__(28));

var _propTypes = _interopRequireDefault(__webpack_require__(41));

var Icon = /*#__PURE__*/function (_Component) {
  (0, _inherits2.default)(Icon, _Component);

  var _super = (0, _createSuper2.default)(Icon);

  function Icon() {
    var _this;

    (0, _classCallCheck2.default)(this, Icon);

    for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
      args[_key] = arguments[_key];
    }

    _this = _super.call.apply(_super, [this].concat(args));
    (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "setSelected", function () {
      _this.props.setSelectedHandler({
        value: _this.props.data.displayPrefix + ' ' + _this.props.data.selector,
        library: _this.props.library
      });
    });
    (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "render", function () {
      return /*#__PURE__*/_react.default.createElement("div", {
        className: _this.props.containerClass,
        key: _this.props.keyID,
        onClick: _this.setSelected,
        filter: _this.props.data.filter
      }, /*#__PURE__*/_react.default.createElement("div", {
        className: "elementor-icons-manager__tab__item__content"
      }, /*#__PURE__*/_react.default.createElement("i", {
        className: 'elementor-icons-manager__tab__item__icon ' + _this.props.className
      }), /*#__PURE__*/_react.default.createElement("div", {
        className: 'elementor-icons-manager__tab__item__name',
        title: _this.props.data.name
      }, _this.props.data.name)));
    });
    return _this;
  }

  return Icon;
}(_react.Component);

exports.default = Icon;
Icon.propTypes = {
  className: _propTypes.default.string,
  containerClass: _propTypes.default.string,
  data: _propTypes.default.object,
  keyID: _propTypes.default.string,
  library: _propTypes.default.string,
  selector: _propTypes.default.string,
  setSelectedHandler: _propTypes.default.func
};

/***/ }),
/* 469 */
/***/ (function(module, exports, __webpack_require__) {

"use strict";


var _interopRequireDefault = __webpack_require__(0);

var _interopRequireWildcard = __webpack_require__(36);

var _Object$defineProperty = __webpack_require__(1);

_Object$defineProperty(exports, "__esModule", {
  value: true
});

exports.default = void 0;

var _react = _interopRequireWildcard(__webpack_require__(11));

var _classCallCheck2 = _interopRequireDefault(__webpack_require__(2));

var _assertThisInitialized2 = _interopRequireDefault(__webpack_require__(49));

var _inherits2 = _interopRequireDefault(__webpack_require__(4));

var _createSuper2 = _interopRequireDefault(__webpack_require__(5));

var _defineProperty2 = _interopRequireDefault(__webpack_require__(28));

var IconsGoPro = /*#__PURE__*/function (_Component) {
  (0, _inherits2.default)(IconsGoPro, _Component);

  var _super = (0, _createSuper2.default)(IconsGoPro);

  function IconsGoPro() {
    var _this;

    (0, _classCallCheck2.default)(this, IconsGoPro);

    for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
      args[_key] = arguments[_key];
    }

    _this = _super.call.apply(_super, [this].concat(args));
    (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "render", function () {
      return /*#__PURE__*/_react.default.createElement("div", {
        id: "elementor-icons-manager__promotion"
      }, /*#__PURE__*/_react.default.createElement("i", {
        id: "elementor-icons-manager__promotion__icon",
        className: "eicon-nerd"
      }), /*#__PURE__*/_react.default.createElement("div", {
        id: "elementor-icons-manager__promotion__text"
      }, elementor.translate('icons_promotion')), /*#__PURE__*/_react.default.createElement("a", {
        href: elementor.config.icons.goProURL,
        id: "elementor-icons-manager__promotion__link",
        className: "elementor-button elementor-button-default elementor-button-go-pro",
        target: "_blank",
        rel: "noopener noreferrer"
      }, elementor.translate('go_pro')));
    });
    return _this;
  }

  return IconsGoPro;
}(_react.Component);

var _default = IconsGoPro;
exports.default = _default;

/***/ }),
/* 470 */
/***/ (function(module, exports, __webpack_require__) {

"use strict";


var _interopRequireDefault = __webpack_require__(0);

var _Object$defineProperty = __webpack_require__(1);

_Object$defineProperty(exports, "__esModule", {
  value: true
});

exports.default = void 0;

var _keys = _interopRequireDefault(__webpack_require__(23));

__webpack_require__(58);

__webpack_require__(80);

var _entries = _interopRequireDefault(__webpack_require__(89));

var _typeof2 = _interopRequireDefault(__webpack_require__(48));

__webpack_require__(39);

var _classCallCheck2 = _interopRequireDefault(__webpack_require__(2));

var _createClass2 = _interopRequireDefault(__webpack_require__(3));

var _defineProperty2 = _interopRequireDefault(__webpack_require__(28));

var _default = /*#__PURE__*/function () {
  function _default() {
    var _this = this;

    (0, _classCallCheck2.default)(this, _default);
    (0, _defineProperty2.default)(this, "loaded", {});
    (0, _defineProperty2.default)(this, "notifyCallback", null);
    (0, _defineProperty2.default)(this, "fetchIcons", function (library) {
      fetch(library.fetchJson, {
        mode: 'cors'
      }).then(function (res) {
        return res.json();
      }).then(function (json) {
        library.icons = json.icons;
        return _this.normalizeIconList(library);
      });
    });
    (0, _defineProperty2.default)(this, "runCallback", function (library) {
      if ('function' !== typeof _this.notifyCallback) {
        return library;
      }

      return _this.notifyCallback(library);
    });
    (0, _defineProperty2.default)(this, "initIconType", function (libraryConfig, callback) {
      _this.notifyCallback = callback;
      var store = elementor.iconManager.store;

      if (_this.loaded[libraryConfig.name]) {
        libraryConfig.icons = store.getIcons(libraryConfig);
        return _this.runCallback(libraryConfig);
      } // Enqueue CSS


      if (libraryConfig.enqueue) {
        libraryConfig.enqueue.forEach(function (assetURL) {
          elementor.helpers.enqueueEditorStylesheet(assetURL);
        });
      }

      if (libraryConfig.url) {
        elementor.helpers.enqueueEditorStylesheet(libraryConfig.url);
      } //already saved an stored


      if (store.isValid(libraryConfig)) {
        var data = store.get(store.getKey(libraryConfig));
        return _this.normalizeIconList(data);
      } // comes with icons


      if (libraryConfig.icons && libraryConfig.icons.length) {
        return _this.normalizeIconList(libraryConfig);
      } // Get icons from via ajax


      if (libraryConfig.fetchJson) {
        return _this.fetchIcons(libraryConfig);
      } // @todo: error handling

    });
  }

  (0, _createClass2.default)(_default, [{
    key: "normalizeIconList",
    value: function normalizeIconList(library) {
      var icons = {};
      var name;
      jQuery.each(library.icons, function (index, icon) {
        name = icon;

        if ('object' === (0, _typeof2.default)(name)) {
          name = (0, _entries.default)(name)[0][0];
        }

        if (!name) {
          return;
        }

        icons[name] = {
          prefix: library.prefix,
          selector: library.prefix + name.trim(':'),
          name: elementorCommon.helpers.upperCaseWords(name).trim(':').split('-').join(' '),
          filter: name.trim(':'),
          displayPrefix: library.displayPrefix || library.prefix.replace('-', '')
        };
      });

      if ((0, _keys.default)(icons).length) {
        library.icons = icons;
        this.loaded[library.name] = true;
        elementor.iconManager.store.save(library);
        this.runCallback(library);
      }
    }
  }]);
  return _default;
}();

exports.default = _default;

/***/ }),
/* 471 */
/***/ (function(module, exports, __webpack_require__) {

"use strict";


var _interopRequireDefault = __webpack_require__(0);

var _Object$defineProperty = __webpack_require__(1);

_Object$defineProperty(exports, "__esModule", {
  value: true
});

exports.default = void 0;

__webpack_require__(39);

var _classCallCheck2 = _interopRequireDefault(__webpack_require__(2));

var _createClass2 = _interopRequireDefault(__webpack_require__(3));

var Store = /*#__PURE__*/function () {
  function Store() {
    (0, _classCallCheck2.default)(this, Store);
  }

  (0, _createClass2.default)(Store, [{
    key: "save",
    value: function save(library) {
      elementorCommon.storage.set(Store.getKey(library), library);
    }
  }, {
    key: "getIcons",
    value: function getIcons(library) {
      var data = this.get(Store.getKey(library));

      if (data && data.icons) {
        return data.icons;
      }

      return false;
    }
  }, {
    key: "get",
    value: function get(key) {
      return elementorCommon.storage.get(key);
    }
  }, {
    key: "isValid",
    value: function isValid(library) {
      var saved = this.get(Store.getKey(library));

      if (!saved) {
        return false;
      }

      if (saved.ver !== library.ver) {
        // @todo: delete from localStorage if version is invalid
        return false;
      }

      return saved.icons && saved.icons.length;
    }
  }], [{
    key: "getKey",
    value: function getKey(library) {
      var name = library.name ? library.name : library;
      return "elementor_".concat(name, "_icons");
    }
  }]);
  return Store;
}();

var _default = Store;
exports.default = _default;

/***/ }),
/* 472 */
/***/ (function(module, exports, __webpack_require__) {

"use strict";


var _interopRequireDefault = __webpack_require__(0);

var _Object$defineProperty = __webpack_require__(1);

_Object$defineProperty(exports, "__esModule", {
  value: true
});

exports.default = void 0;

var _classCallCheck2 = _interopRequireDefault(__webpack_require__(2));

var _createClass2 = _interopRequireDefault(__webpack_require__(3));

var _inherits2 = _interopRequireDefault(__webpack_require__(4));

var _createSuper2 = _interopRequireDefault(__webpack_require__(5));

var _base = _interopRequireDefault(__webpack_require__(359));

var PanelMenu = /*#__PURE__*/function (_MenuPageView) {
  (0, _inherits2.default)(PanelMenu, _MenuPageView);

  var _super = (0, _createSuper2.default)(PanelMenu);

  function PanelMenu() {
    (0, _classCallCheck2.default)(this, PanelMenu);
    return _super.apply(this, arguments);
  }

  (0, _createClass2.default)(PanelMenu, [{
    key: "initialize",
    value: function initialize() {
      this.collection = PanelMenu.getGroups();
    }
  }, {
    key: "getArrowClass",
    value: function getArrowClass() {
      return 'eicon-chevron-' + (elementorCommon.config.isRTL ? 'right' : 'left');
    }
  }, {
    key: "onRender",
    value: function onRender() {
      elementor.getPanelView().getHeaderView().ui.menuIcon.removeClass('eicon-menu-bar').addClass(this.getArrowClass());
    }
  }, {
    key: "onDestroy",
    value: function onDestroy() {
      elementor.getPanelView().getHeaderView().ui.menuIcon.removeClass(this.getArrowClass()).addClass('eicon-menu-bar');
    }
  }]);
  return PanelMenu;
}(_base.default);

exports.default = PanelMenu;
PanelMenu.groups = null;

PanelMenu.initGroups = function () {
  PanelMenu.groups = new Backbone.Collection([]); // Keep the old `more` for BC, since 3.0.0.

  PanelMenu.groups.add({
    name: 'more',
    title: elementor.translate('more'),
    items: []
  });
  PanelMenu.groups.add({
    name: 'navigate_from_page',
    title: elementor.translate('navigate_from_page'),
    items: [// Todo: internal command.
    {
      name: 'view-page',
      icon: 'eicon-preview-thin',
      title: elementor.translate('view_page'),
      type: 'link',
      link: elementor.config.document.urls.permalink
    }, // Todo: internal command.
    {
      name: 'exit-to-dashboard',
      icon: 'eicon-wordpress-light',
      title: elementor.translate('exit_to_dashboard'),
      type: 'link',
      link: elementor.config.document.urls.exit_to_dashboard
    }]
  });

  if (elementor.config.user.is_administrator) {
    PanelMenu.addAdminMenu();
  }
};

PanelMenu.addAdminMenu = function () {
  PanelMenu.groups.add({
    name: 'style',
    title: elementor.translate('settings'),
    items: [{
      name: 'editor-preferences',
      icon: 'eicon-user-preferences',
      title: elementor.translate('user_preferences'),
      type: 'page',
      callback: function callback() {
        return $e.route('panel/editor-preferences');
      }
    }]
  }, {
    at: 0
  });
  PanelMenu.addItem({
    name: 'finder',
    icon: 'eicon-search',
    title: elementorCommon.translate('finder', 'finder'),
    callback: function callback() {
      return $e.route('finder');
    }
  }, 'navigate_from_page', 'view-page');
};

PanelMenu.getGroups = function () {
  if (!PanelMenu.groups) {
    PanelMenu.initGroups();
  }

  return PanelMenu.groups;
};

PanelMenu.addItem = function (itemData, groupName, before) {
  _base.default.addItem(PanelMenu.getGroups(), itemData, groupName, before);
};

/***/ }),
/* 473 */
/***/ (function(module, exports, __webpack_require__) {

"use strict";


var PanelMenuItemView = __webpack_require__(474);

module.exports = Marionette.CompositeView.extend({
  template: '#tmpl-elementor-panel-menu-group',
  className: 'elementor-panel-menu-group',
  childView: PanelMenuItemView,
  childViewContainer: '.elementor-panel-menu-items',
  initialize: function initialize() {
    this.collection = new Backbone.Collection(this.model.get('items'));
  },
  onChildviewClick: function onChildviewClick(childView) {
    var callback = childView.model.get('callback');

    if (_.isFunction(callback)) {
      callback.call(childView);
    }
  }
});

/***/ }),
/* 474 */
/***/ (function(module, exports, __webpack_require__) {

"use strict";


module.exports = Marionette.ItemView.extend({
  template: '#tmpl-elementor-panel-menu-item',
  className: function className() {
    return 'elementor-panel-menu-item elementor-panel-menu-item-' + this.model.get('name');
  },
  triggers: {
    click: {
      event: 'click',
      preventDefault: false
    }
  }
});

/***/ }),
/* 475 */
/***/ (function(module, exports, __webpack_require__) {

"use strict";


var _interopRequireDefault = __webpack_require__(0);

var _Object$defineProperty = __webpack_require__(1);

_Object$defineProperty(exports, "__esModule", {
  value: true
});

exports.default = void 0;

var _classCallCheck2 = _interopRequireDefault(__webpack_require__(2));

var _createClass2 = _interopRequireDefault(__webpack_require__(3));

var _inherits2 = _interopRequireDefault(__webpack_require__(4));

var _createSuper2 = _interopRequireDefault(__webpack_require__(5));

var _default = /*#__PURE__*/function (_elementorModules$Mod) {
  (0, _inherits2.default)(_default, _elementorModules$Mod);

  var _super = (0, _createSuper2.default)(_default);

  function _default() {
    var _this;

    (0, _classCallCheck2.default)(this, _default);
    _this = _super.call(this);

    _this.initDialog();

    return _this;
  }

  (0, _createClass2.default)(_default, [{
    key: "initDialog",
    value: function initDialog() {
      var _this2 = this;

      this.dialog = elementor.dialogsManager.createWidget('buttons', {
        id: 'elementor-element--promotion__dialog',
        effects: {
          show: 'show',
          hide: 'hide'
        },
        hide: {
          onOutsideClick: false
        },
        position: {
          my: (elementorCommon.config.isRTL ? 'right' : 'left') + '+5 top'
        }
      });
      this.dialog.addButton({
        name: 'action',
        text: elementor.translate('see_it_in_action'),
        callback: function callback() {
          open(_this2.actionURL, '_blank');
        }
      });
      this.dialog.getElements('action').addClass('elementor-button elementor-button-success');
      var $promotionTitle = jQuery('<div>', {
        id: 'elementor-element--promotion__dialog__title'
      }),
          $proIcon = jQuery('<i>', {
        class: 'eicon-pro-icon'
      }),
          $closeButton = jQuery('<i>', {
        class: 'eicon-close'
      });
      $closeButton.on('click', function () {
        return _this2.dialog.hide();
      });
      this.dialog.getElements('header').append($promotionTitle, $proIcon, $closeButton);
      this.$promotionTitle = $promotionTitle;
    }
  }, {
    key: "showDialog",
    value: function showDialog(options) {
      if (!this.dialog) {
        this.initDialog();
      }

      this.actionURL = options.actionURL;
      this.$promotionTitle.text(options.headerMessage);
      this.dialog.setMessage(options.message).setSettings('position', {
        of: options.element,
        at: (elementorCommon.config.isRTL ? 'left' : 'right') + ' top' + options.top
      });
      return this.dialog.show();
    }
  }]);
  return _default;
}(elementorModules.Module);

exports.default = _default;

/***/ }),
/* 476 */
/***/ (function(module, exports, __webpack_require__) {

"use strict";


var _interopRequireDefault = __webpack_require__(0);

var _Object$defineProperty = __webpack_require__(1);

_Object$defineProperty(exports, "__esModule", {
  value: true
});

exports.default = void 0;

__webpack_require__(39);

var _objectSpread2 = _interopRequireDefault(__webpack_require__(214));

var _values = _interopRequireDefault(__webpack_require__(55));

var _classCallCheck2 = _interopRequireDefault(__webpack_require__(2));

var _createClass2 = _interopRequireDefault(__webpack_require__(3));

var _assertThisInitialized2 = _interopRequireDefault(__webpack_require__(49));

var _get2 = _interopRequireDefault(__webpack_require__(26));

var _getPrototypeOf2 = _interopRequireDefault(__webpack_require__(16));

var _inherits2 = _interopRequireDefault(__webpack_require__(4));

var _createSuper2 = _interopRequireDefault(__webpack_require__(5));

var _defineProperty2 = _interopRequireDefault(__webpack_require__(28));

var _component = _interopRequireDefault(__webpack_require__(477));

var _panel = _interopRequireDefault(__webpack_require__(506));

var _panelMenu = _interopRequireDefault(__webpack_require__(508));

var _panelHeaderBehavior = _interopRequireDefault(__webpack_require__(509));

var _repeater = _interopRequireDefault(__webpack_require__(511));

var _globalSelectBehavior = _interopRequireDefault(__webpack_require__(513));

var _controlsCssParser = _interopRequireDefault(__webpack_require__(293));

var _default = /*#__PURE__*/function (_elementorModules$edi) {
  (0, _inherits2.default)(_default, _elementorModules$edi);

  var _super = (0, _createSuper2.default)(_default);

  function _default() {
    var _this;

    (0, _classCallCheck2.default)(this, _default);

    for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
      args[_key] = arguments[_key];
    }

    _this = _super.call.apply(_super, [this].concat(args));
    (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "loadingTriggers", {
      preview: false,
      globals: false
    });
    (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "variablesCSS", null);
    return _this;
  }

  (0, _createClass2.default)(_default, [{
    key: "addPanelPages",
    value: function addPanelPages() {
      elementor.getPanelView().addPage('kit_settings', {
        view: _panel.default,
        title: elementor.translate('site_settings')
      });
      elementor.getPanelView().addPage('kit_menu', {
        view: _panelMenu.default,
        title: elementor.translate('site_settings')
      });
    }
  }, {
    key: "addPanelMenuItem",
    value: function addPanelMenuItem() {
      var menu = elementor.modules.layouts.panel.pages.menu.Menu;
      menu.addItem({
        name: 'global-settings',
        icon: 'eicon-global-settings',
        title: elementor.translate('site_settings'),
        type: 'page',
        callback: function callback() {
          $e.run('panel/global/open', {
            route: $e.routes.getHistory('panel').reverse()[0].route
          });
        }
      }, 'style', 'editor-preferences');
      menu.addItem({
        name: 'site-editor',
        icon: 'eicon-theme-builder',
        title: elementor.translate('theme_builder'),
        type: 'page',
        callback: function callback() {
          return $e.run('app/open');
        }
      }, 'style', 'editor-preferences');
    }
  }, {
    key: "addHeaderBehavior",
    value: function addHeaderBehavior(behaviors) {
      behaviors.kit = {
        behaviorClass: _panelHeaderBehavior.default
      };
      return behaviors;
    }
  }, {
    key: "addGlobalsBehavior",
    value: function addGlobalsBehavior(behaviors, view) {
      // The view can be a UI control which does not have this method.
      if (!view.isGlobalActive) {
        return;
      }

      var isGlobalActive = view.isGlobalActive();

      if ('color' === view.options.model.get('type') && isGlobalActive) {
        behaviors.globals = {
          behaviorClass: _globalSelectBehavior.default,
          popoverTitle: elementor.translate('global_colors_title'),
          manageButtonText: elementor.translate('manage_global_colors'),
          tooltipText: elementor.translate('global_colors_info'),
          newGlobalConfirmTitle: elementor.translate('create_global_color')
        };
      }

      if ('popover_toggle' === view.options.model.get('type') && 'typography' === view.options.model.get('groupType') && isGlobalActive) {
        behaviors.globals = {
          behaviorClass: _globalSelectBehavior.default,
          popoverTitle: elementor.translate('global_fonts_title'),
          manageButtonText: elementor.translate('manage_global_fonts'),
          tooltipText: elementor.translate('global_fonts_info'),
          newGlobalConfirmTitle: elementor.translate('create_global_font')
        };
      }

      return behaviors;
    }
    /**
     * In case there is a new global color/typography convert current globals to CSS variables.
     */

  }, {
    key: "renderGlobalVariables",
    value: function renderGlobalVariables() {
      var _this2 = this;

      if (!this.variablesCSS) {
        this.variablesCSS = new _controlsCssParser.default({
          id: 'e-kit-variables',
          settingsModel: new elementorModules.editor.elements.models.BaseSettings({}, {})
        });
      } // The kit document has its own CSS.


      if ('kit' === elementor.documents.getCurrent().config.type) {
        this.variablesCSS.removeStyleFromDocument();
        return;
      }

      $e.data.get('globals/index').then(function (_ref) {
        var data = _ref.data;

        if (data.colors) {
          (0, _values.default)(data.colors).forEach(function (item) {
            var controls = elementor.config.kit_config.design_system_controls.colors,
                values = {
              _id: item.id,
              color: item.value
            };

            _this2.variablesCSS.addStyleRules(controls, values, controls, ['{{WRAPPER}}'], ['body']);
          });
        }

        if (data.typography) {
          (0, _values.default)(data.typography).forEach(function (item) {
            var controls = elementor.config.kit_config.design_system_controls.typography,
                values = (0, _objectSpread2.default)({
              _id: item.id
            }, item.value); // Enqueue fonts.

            if (item.value.typography_font_family) {
              elementor.helpers.enqueueFont(item.value.typography_font_family);
            }

            _this2.variablesCSS.addStyleRules(controls, values, controls, ['{{WRAPPER}}'], ['body']);
          });
        }

        _this2.variablesCSS.addStyleToDocument();
      });
    } // Use the Controls CSS Parser to add the global defaults CSS to the page.

  }, {
    key: "renderGlobalsDefaultCSS",
    value: function renderGlobalsDefaultCSS() {
      if (!this.loadingTriggers.preview || !this.loadingTriggers.globals) {
        return;
      }

      var cssParser = new _controlsCssParser.default({
        id: 'e-global-style'
      }),
          defaultColorsEnabled = elementor.config.globals.defaults_enabled.colors,
          defaultTypographyEnabled = elementor.config.globals.defaults_enabled.typography; // If both default colors and typography are disabled, there is no need to render schemes and default global css.

      if (!defaultColorsEnabled && !defaultTypographyEnabled) {
        return;
      }

      (0, _values.default)(elementor.widgetsCache).forEach(function (widget) {
        if (!widget.controls) {
          return;
        }

        var globalControls = [],
            globalValues = {};
        (0, _values.default)(widget.controls).forEach(function (control) {
          var _control$global, _globalControl$global;

          var isColorControl = 'color' === control.type,
              isTypographyControl = 'typography' === control.groupType;

          if (isColorControl && !defaultColorsEnabled || isTypographyControl && !defaultTypographyEnabled) {
            return;
          }

          var globalControl = control;

          if (control.groupType) {
            globalControl = widget.controls[control.groupPrefix + control.groupType];
          }

          if ((_control$global = control.global) === null || _control$global === void 0 ? void 0 : _control$global.default) {
            globalValues[control.name] = globalControl.global.default;
          }

          if ((_globalControl$global = globalControl.global) === null || _globalControl$global === void 0 ? void 0 : _globalControl$global.default) {
            globalControls.push(control);
          }
        });
        globalControls.forEach(function (control) {
          cssParser.addControlStyleRules(control, widget.controls, // values
          widget.controls, // controls
          ['{{WRAPPER}}'], ['.elementor-widget-' + widget.widget_type], globalValues);
        });
      });
      cssParser.addStyleToDocument();
    }
  }, {
    key: "onInit",
    value: function onInit() {
      var _this3 = this;

      (0, _get2.default)((0, _getPrototypeOf2.default)(_default.prototype), "onInit", this).call(this);
      elementorCommon.elements.$window.on('elementor:loaded', function () {
        if (!elementor.config.initial_document.panel.support_kit) {
          return;
        }

        if (!elementor.config.user.can_edit_kit) {
          return;
        }

        $e.components.register(new _component.default({
          manager: _this3
        }));
        elementor.addControlView('global-style-repeater', _repeater.default);
        elementor.hooks.addFilter('panel/header/behaviors', _this3.addHeaderBehavior);
        elementor.hooks.addFilter('controls/base/behaviors', _this3.addGlobalsBehavior);
        elementor.on('preview:loaded', function () {
          _this3.loadingTriggers.preview = true;

          _this3.renderGlobalsDefaultCSS();
        });
        elementor.on('document:loaded', function () {
          _this3.renderGlobalVariables();
        });
        elementor.on('globals:loaded', function () {
          _this3.loadingTriggers.globals = true;

          _this3.renderGlobalsDefaultCSS();
        });
        elementor.on('panel:init', function () {
          _this3.addPanelPages();

          _this3.addPanelMenuItem();
        });
      });
    }
  }]);
  return _default;
}(elementorModules.editor.utils.Module);

exports.default = _default;

/***/ }),
/* 477 */
/***/ (function(module, exports, __webpack_require__) {

"use strict";


var _interopRequireWildcard = __webpack_require__(36);

var _interopRequireDefault = __webpack_require__(0);

var _Object$defineProperty = __webpack_require__(1);

_Object$defineProperty(exports, "__esModule", {
  value: true
});

exports.default = void 0;

var _classCallCheck2 = _interopRequireDefault(__webpack_require__(2));

var _createClass2 = _interopRequireDefault(__webpack_require__(3));

var _assertThisInitialized2 = _interopRequireDefault(__webpack_require__(49));

var _inherits2 = _interopRequireDefault(__webpack_require__(4));

var _createSuper2 = _interopRequireDefault(__webpack_require__(5));

var _defineProperty2 = _interopRequireDefault(__webpack_require__(28));

var hooks = _interopRequireWildcard(__webpack_require__(478));

var commands = _interopRequireWildcard(__webpack_require__(490));

var _default = /*#__PURE__*/function (_$e$modules$Component) {
  (0, _inherits2.default)(_default, _$e$modules$Component);

  var _super = (0, _createSuper2.default)(_default);

  function _default() {
    var _this;

    (0, _classCallCheck2.default)(this, _default);

    for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
      args[_key] = arguments[_key];
    }

    _this = _super.call.apply(_super, [this].concat(args));
    (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "pages", {});
    return _this;
  }

  (0, _createClass2.default)(_default, [{
    key: "getNamespace",
    value: function getNamespace() {
      return 'panel/global';
    }
  }, {
    key: "defaultTabs",
    value: function defaultTabs() {
      return {
        'global-colors': {
          title: elementor.translate('global_colors'),
          icon: 'eicon-global-colors',
          helpUrl: 'https://go.elementor.com/global-colors'
        },
        'global-typography': {
          title: elementor.translate('global_fonts'),
          icon: 'eicon-t-letter',
          helpUrl: 'https://go.elementor.com/global-fonts'
        },
        'theme-style-typography': {
          title: elementor.translate('typography'),
          icon: 'eicon-typography-1',
          helpUrl: 'https://go.elementor.com/global-theme-style-typography'
        },
        'theme-style-buttons': {
          title: elementor.translate('buttons'),
          icon: 'eicon-button',
          helpUrl: 'https://go.elementor.com/global-theme-style-buttons'
        },
        'theme-style-images': {
          title: elementor.translate('images'),
          icon: 'eicon-image',
          helpUrl: 'https://go.elementor.com/global-theme-style-images'
        },
        'theme-style-form-fields': {
          title: elementor.translate('form_fields'),
          icon: 'eicon-form-horizontal',
          helpUrl: 'https://go.elementor.com/global-theme-style-form-fields'
        },
        'settings-site-identity': {
          title: elementor.translate('site_identity'),
          icon: 'eicon-site-identity',
          helpUrl: 'https://go.elementor.com/global-site-identity'
        },
        'settings-background': {
          title: elementor.translate('background'),
          icon: 'eicon-background',
          helpUrl: 'https://go.elementor.com/global-background'
        },
        'settings-layout': {
          title: elementor.translate('layout'),
          icon: 'eicon-layout-settings',
          helpUrl: 'https://go.elementor.com/global-layout'
        },
        'settings-lightbox': {
          title: elementor.translate('lightbox'),
          icon: 'eicon-lightbox-expand',
          helpUrl: 'https://go.elementor.com/global-lightbox'
        },
        'settings-custom-css': {
          title: elementor.translate('custom_css'),
          icon: 'eicon-custom-css',
          helpUrl: 'https://go.elementor.com/global-custom-css'
        }
      };
    }
  }, {
    key: "defaultRoutes",
    value: function defaultRoutes() {
      return {
        menu: function menu() {
          elementor.getPanelView().setPage('kit_menu');
        }
      };
    }
  }, {
    key: "defaultCommands",
    value: function defaultCommands() {
      return this.importCommands(commands);
    }
  }, {
    key: "defaultShortcuts",
    value: function defaultShortcuts() {
      return {
        back: {
          keys: 'esc',
          scopes: ['panel'],
          dependency: function dependency() {
            return elementor.documents.isCurrent(elementor.config.kit_id) && !jQuery('.dialog-widget:visible').length;
          }
        }
      };
    }
  }, {
    key: "defaultHooks",
    value: function defaultHooks() {
      return this.importHooks(hooks);
    }
  }, {
    key: "renderTab",
    value: function renderTab(tab) {
      elementor.getPanelView().setPage('kit_settings').content.currentView.activateTab(tab);
    }
  }]);
  return _default;
}($e.modules.ComponentBase);

exports.default = _default;

/***/ }),
/* 478 */
/***/ (function(module, exports, __webpack_require__) {

"use strict";


var _Object$defineProperty = __webpack_require__(1);

_Object$defineProperty(exports, "__esModule", {
  value: true
});

_Object$defineProperty(exports, "KitGlobalsUpdateColors", {
  enumerable: true,
  get: function get() {
    return _globalsUpdateColors.KitGlobalsUpdateColors;
  }
});

_Object$defineProperty(exports, "KitGlobalsUpdateTypography", {
  enumerable: true,
  get: function get() {
    return _globalsUpdateTypography.KitGlobalsUpdateTypography;
  }
});

_Object$defineProperty(exports, "KitDeleteGlobalsCache", {
  enumerable: true,
  get: function get() {
    return _deleteGlobalsCache.KitDeleteGlobalsCache;
  }
});

_Object$defineProperty(exports, "KitAfterSave", {
  enumerable: true,
  get: function get() {
    return _after.KitAfterSave;
  }
});

_Object$defineProperty(exports, "KitUpdateLightboxPreview", {
  enumerable: true,
  get: function get() {
    return _updateLightboxPreview.KitUpdateLightboxPreview;
  }
});

_Object$defineProperty(exports, "KitUpdateStretchContainer", {
  enumerable: true,
  get: function get() {
    return _updateStretchContainer.KitUpdateStretchContainer;
  }
});

_Object$defineProperty(exports, "KitSaveRouteHistory", {
  enumerable: true,
  get: function get() {
    return _saveRouteHistory.KitSaveRouteHistory;
  }
});

_Object$defineProperty(exports, "KitRemoveEditorActiveCSSDocumentsOpen", {
  enumerable: true,
  get: function get() {
    return _removeEditorActiveCss.KitRemoveEditorActiveCSSDocumentsOpen;
  }
});

_Object$defineProperty(exports, "KitRemoveEditorActiveCSSPanelOpen", {
  enumerable: true,
  get: function get() {
    return _removeEditorActiveCss2.KitRemoveEditorActiveCSSPanelOpen;
  }
});

_Object$defineProperty(exports, "KitBackToRouteHistory", {
  enumerable: true,
  get: function get() {
    return _backToRouteHistory.KitBackToRouteHistory;
  }
});

_Object$defineProperty(exports, "KitRemovePreviewDeletedVariables", {
  enumerable: true,
  get: function get() {
    return _removePreviewDeletedVariables.KitRemovePreviewDeletedVariables;
  }
});

var _globalsUpdateColors = __webpack_require__(479);

var _globalsUpdateTypography = __webpack_require__(480);

var _deleteGlobalsCache = __webpack_require__(481);

var _after = __webpack_require__(482);

var _updateLightboxPreview = __webpack_require__(483);

var _updateStretchContainer = __webpack_require__(484);

var _saveRouteHistory = __webpack_require__(485);

var _removeEditorActiveCss = __webpack_require__(486);

var _removeEditorActiveCss2 = __webpack_require__(487);

var _backToRouteHistory = __webpack_require__(488);

var _removePreviewDeletedVariables = __webpack_require__(489);

/***/ }),
/* 479 */
/***/ (function(module, exports, __webpack_require__) {

"use strict";


var _interopRequireDefault = __webpack_require__(0);

var _Object$defineProperty = __webpack_require__(1);

_Object$defineProperty(exports, "__esModule", {
  value: true
});

exports.default = exports.KitGlobalsUpdateColors = void 0;

var _classCallCheck2 = _interopRequireDefault(__webpack_require__(2));

var _createClass2 = _interopRequireDefault(__webpack_require__(3));

var _inherits2 = _interopRequireDefault(__webpack_require__(4));

var _createSuper2 = _interopRequireDefault(__webpack_require__(5));

var _baseGlobalsUpdate = _interopRequireDefault(__webpack_require__(360));

var KitGlobalsUpdateColors = /*#__PURE__*/function (_BaseGlobalsUpdate) {
  (0, _inherits2.default)(KitGlobalsUpdateColors, _BaseGlobalsUpdate);

  var _super = (0, _createSuper2.default)(KitGlobalsUpdateColors);

  function KitGlobalsUpdateColors() {
    (0, _classCallCheck2.default)(this, KitGlobalsUpdateColors);
    return _super.apply(this, arguments);
  }

  (0, _createClass2.default)(KitGlobalsUpdateColors, [{
    key: "getCommand",
    value: function getCommand() {
      return 'globals/colors/create';
    }
  }, {
    key: "getId",
    value: function getId() {
      return 'globals-update-colors-/globals/colors/create';
    }
  }, {
    key: "getRepeaterName",
    value: function getRepeaterName() {
      return 'custom_colors';
    }
  }, {
    key: "applyModel",
    value: function applyModel(model, value) {
      model.color = value;
    }
  }]);
  return KitGlobalsUpdateColors;
}(_baseGlobalsUpdate.default);

exports.KitGlobalsUpdateColors = KitGlobalsUpdateColors;
var _default = KitGlobalsUpdateColors;
exports.default = _default;

/***/ }),
/* 480 */
/***/ (function(module, exports, __webpack_require__) {

"use strict";


var _interopRequireDefault = __webpack_require__(0);

var _Object$defineProperty = __webpack_require__(1);

_Object$defineProperty(exports, "__esModule", {
  value: true
});

exports.default = exports.KitGlobalsUpdateTypography = void 0;

var _assign = _interopRequireDefault(__webpack_require__(134));

var _classCallCheck2 = _interopRequireDefault(__webpack_require__(2));

var _createClass2 = _interopRequireDefault(__webpack_require__(3));

var _inherits2 = _interopRequireDefault(__webpack_require__(4));

var _createSuper2 = _interopRequireDefault(__webpack_require__(5));

var _baseGlobalsUpdate = _interopRequireDefault(__webpack_require__(360));

var KitGlobalsUpdateTypography = /*#__PURE__*/function (_BaseGlobalsUpdate) {
  (0, _inherits2.default)(KitGlobalsUpdateTypography, _BaseGlobalsUpdate);

  var _super = (0, _createSuper2.default)(KitGlobalsUpdateTypography);

  function KitGlobalsUpdateTypography() {
    (0, _classCallCheck2.default)(this, KitGlobalsUpdateTypography);
    return _super.apply(this, arguments);
  }

  (0, _createClass2.default)(KitGlobalsUpdateTypography, [{
    key: "getCommand",
    value: function getCommand() {
      return 'globals/typography/create';
    }
  }, {
    key: "getId",
    value: function getId() {
      return 'globals-update-typography-/globals/typography/create';
    }
  }, {
    key: "getRepeaterName",
    value: function getRepeaterName() {
      return 'custom_typography';
    }
  }, {
    key: "applyModel",
    value: function applyModel(model, value) {
      (0, _assign.default)(model, value);
    }
  }]);
  return KitGlobalsUpdateTypography;
}(_baseGlobalsUpdate.default);

exports.KitGlobalsUpdateTypography = KitGlobalsUpdateTypography;
var _default = KitGlobalsUpdateTypography;
exports.default = _default;

/***/ }),
/* 481 */
/***/ (function(module, exports, __webpack_require__) {

"use strict";


var _interopRequireDefault = __webpack_require__(0);

var _Object$defineProperty = __webpack_require__(1);

_Object$defineProperty(exports, "__esModule", {
  value: true
});

exports.default = exports.KitDeleteGlobalsCache = void 0;

var _classCallCheck2 = _interopRequireDefault(__webpack_require__(2));

var _createClass2 = _interopRequireDefault(__webpack_require__(3));

var _inherits2 = _interopRequireDefault(__webpack_require__(4));

var _createSuper2 = _interopRequireDefault(__webpack_require__(5));

var _after = _interopRequireDefault(__webpack_require__(224));

var KitDeleteGlobalsCache = /*#__PURE__*/function (_After) {
  (0, _inherits2.default)(KitDeleteGlobalsCache, _After);

  var _super = (0, _createSuper2.default)(KitDeleteGlobalsCache);

  function KitDeleteGlobalsCache() {
    (0, _classCallCheck2.default)(this, KitDeleteGlobalsCache);
    return _super.apply(this, arguments);
  }

  (0, _createClass2.default)(KitDeleteGlobalsCache, [{
    key: "getCommand",
    value: function getCommand() {
      return 'document/save/save';
    }
  }, {
    key: "getConditions",
    value: function getConditions(args) {
      var status = args.status,
          _args$document = args.document,
          document = _args$document === void 0 ? elementor.documents.getCurrent() : _args$document;
      return 'publish' === status && 'kit' === document.config.type;
    }
  }, {
    key: "getId",
    value: function getId() {
      return 'document/save/save::update-globals-cache';
    }
  }, {
    key: "apply",
    value: function apply() {
      // After kit updates - remove globals from cache and force re-request from server.
      $e.components.get('globals').refreshGlobalData();
    }
  }]);
  return KitDeleteGlobalsCache;
}(_after.default);

exports.KitDeleteGlobalsCache = KitDeleteGlobalsCache;
var _default = KitDeleteGlobalsCache;
exports.default = _default;

/***/ }),
/* 482 */
/***/ (function(module, exports, __webpack_require__) {

"use strict";


var _interopRequireDefault = __webpack_require__(0);

var _Object$defineProperty = __webpack_require__(1);

_Object$defineProperty(exports, "__esModule", {
  value: true
});

exports.default = exports.KitAfterSave = void 0;

var _classCallCheck2 = _interopRequireDefault(__webpack_require__(2));

var _createClass2 = _interopRequireDefault(__webpack_require__(3));

var _inherits2 = _interopRequireDefault(__webpack_require__(4));

var _createSuper2 = _interopRequireDefault(__webpack_require__(5));

var _after = _interopRequireDefault(__webpack_require__(224));

var KitAfterSave = /*#__PURE__*/function (_After) {
  (0, _inherits2.default)(KitAfterSave, _After);

  var _super = (0, _createSuper2.default)(KitAfterSave);

  function KitAfterSave() {
    (0, _classCallCheck2.default)(this, KitAfterSave);
    return _super.apply(this, arguments);
  }

  (0, _createClass2.default)(KitAfterSave, [{
    key: "getCommand",
    value: function getCommand() {
      return 'document/save/save';
    }
  }, {
    key: "getConditions",
    value: function getConditions(args) {
      var status = args.status,
          _args$document = args.document,
          document = _args$document === void 0 ? elementor.documents.getCurrent() : _args$document;
      return 'publish' === status && 'kit' === document.config.type;
    }
  }, {
    key: "getId",
    value: function getId() {
      return 'kit-footer-saver-after-save';
    }
  }, {
    key: "apply",
    value: function apply(args) {
      if ('publish' === args.status) {
        elementor.notifications.showToast({
          message: elementor.translate('kit_changes_updated'),
          buttons: [{
            name: 'back_to_editor',
            text: elementor.translate('back_to_editor'),
            callback: function callback() {
              $e.run('panel/global/close');
            }
          }]
        });
      }
    }
  }]);
  return KitAfterSave;
}(_after.default);

exports.KitAfterSave = KitAfterSave;
var _default = KitAfterSave;
exports.default = _default;

/***/ }),
/* 483 */
/***/ (function(module, exports, __webpack_require__) {

"use strict";


var _interopRequireDefault = __webpack_require__(0);

var _Object$defineProperty = __webpack_require__(1);

_Object$defineProperty(exports, "__esModule", {
  value: true
});

exports.default = exports.KitUpdateLightboxPreview = void 0;

var _slicedToArray2 = _interopRequireDefault(__webpack_require__(102));

var _entries = _interopRequireDefault(__webpack_require__(89));

var _classCallCheck2 = _interopRequireDefault(__webpack_require__(2));

var _createClass2 = _interopRequireDefault(__webpack_require__(3));

var _inherits2 = _interopRequireDefault(__webpack_require__(4));

var _createSuper2 = _interopRequireDefault(__webpack_require__(5));

/**
 * On change kit lightbox settings - update the lightbox preview config.
 */
var KitUpdateLightboxPreview = /*#__PURE__*/function (_$e$modules$hookUI$Af) {
  (0, _inherits2.default)(KitUpdateLightboxPreview, _$e$modules$hookUI$Af);

  var _super = (0, _createSuper2.default)(KitUpdateLightboxPreview);

  function KitUpdateLightboxPreview() {
    (0, _classCallCheck2.default)(this, KitUpdateLightboxPreview);
    return _super.apply(this, arguments);
  }

  (0, _createClass2.default)(KitUpdateLightboxPreview, [{
    key: "getCommand",
    value: function getCommand() {
      return 'document/elements/settings';
    }
  }, {
    key: "getId",
    value: function getId() {
      return 'kit-update-lightbox-preview';
    }
  }, {
    key: "getContainerType",
    value: function getContainerType() {
      return 'document';
    }
  }, {
    key: "getConditions",
    value: function getConditions() {
      return 'kit' === elementor.documents.getCurrent().config.type;
    }
  }, {
    key: "apply",
    value: function apply(args) {
      var settings = args.settings;
      (0, _entries.default)(settings).forEach(function (_ref) {
        var _ref2 = (0, _slicedToArray2.default)(_ref, 2),
            key = _ref2[0],
            value = _ref2[1];

        if (-1 !== key.indexOf('lightbox')) {
          elementorFrontend.config.kit[key] = value;
        }
      });
    }
  }]);
  return KitUpdateLightboxPreview;
}($e.modules.hookUI.After);

exports.KitUpdateLightboxPreview = KitUpdateLightboxPreview;
var _default = KitUpdateLightboxPreview;
exports.default = _default;

/***/ }),
/* 484 */
/***/ (function(module, exports, __webpack_require__) {

"use strict";


var _interopRequireDefault = __webpack_require__(0);

var _Object$defineProperty = __webpack_require__(1);

_Object$defineProperty(exports, "__esModule", {
  value: true
});

exports.default = exports.KitUpdateStretchContainer = void 0;

var _slicedToArray2 = _interopRequireDefault(__webpack_require__(102));

var _entries = _interopRequireDefault(__webpack_require__(89));

var _classCallCheck2 = _interopRequireDefault(__webpack_require__(2));

var _createClass2 = _interopRequireDefault(__webpack_require__(3));

var _inherits2 = _interopRequireDefault(__webpack_require__(4));

var _createSuper2 = _interopRequireDefault(__webpack_require__(5));

/**
 * On change kit stretch container settings - update the preview stretched sections.
 */
var KitUpdateStretchContainer = /*#__PURE__*/function (_$e$modules$hookUI$Af) {
  (0, _inherits2.default)(KitUpdateStretchContainer, _$e$modules$hookUI$Af);

  var _super = (0, _createSuper2.default)(KitUpdateStretchContainer);

  function KitUpdateStretchContainer() {
    (0, _classCallCheck2.default)(this, KitUpdateStretchContainer);
    return _super.apply(this, arguments);
  }

  (0, _createClass2.default)(KitUpdateStretchContainer, [{
    key: "getCommand",
    value: function getCommand() {
      return 'document/elements/settings';
    }
  }, {
    key: "getId",
    value: function getId() {
      return 'kit-update-stretch-container';
    }
  }, {
    key: "getContainerType",
    value: function getContainerType() {
      return 'document';
    }
  }, {
    key: "getConditions",
    value: function getConditions() {
      return 'kit' === elementor.documents.getCurrent().config.type;
    }
  }, {
    key: "apply",
    value: function apply(args) {
      var settings = args.settings;
      (0, _entries.default)(settings).forEach(function (_ref) {
        var _ref2 = (0, _slicedToArray2.default)(_ref, 2),
            key = _ref2[0],
            value = _ref2[1];

        if ('stretched_section_container' === key) {
          elementorFrontend.config.kit[key] = value;
          elementor.channels.editor.trigger('kit:change:stretchContainer');
        }
      });
    }
  }]);
  return KitUpdateStretchContainer;
}($e.modules.hookUI.After);

exports.KitUpdateStretchContainer = KitUpdateStretchContainer;
var _default = KitUpdateStretchContainer;
exports.default = _default;

/***/ }),
/* 485 */
/***/ (function(module, exports, __webpack_require__) {

"use strict";


var _interopRequireDefault = __webpack_require__(0);

var _Object$defineProperty = __webpack_require__(1);

_Object$defineProperty(exports, "__esModule", {
  value: true
});

exports.default = exports.KitSaveRouteHistory = void 0;

var _classCallCheck2 = _interopRequireDefault(__webpack_require__(2));

var _createClass2 = _interopRequireDefault(__webpack_require__(3));

var _inherits2 = _interopRequireDefault(__webpack_require__(4));

var _createSuper2 = _interopRequireDefault(__webpack_require__(5));

var _baseOpenClose = _interopRequireDefault(__webpack_require__(361));

var KitSaveRouteHistory = /*#__PURE__*/function (_BaseOpenClose) {
  (0, _inherits2.default)(KitSaveRouteHistory, _BaseOpenClose);

  var _super = (0, _createSuper2.default)(KitSaveRouteHistory);

  function KitSaveRouteHistory() {
    (0, _classCallCheck2.default)(this, KitSaveRouteHistory);
    return _super.apply(this, arguments);
  }

  (0, _createClass2.default)(KitSaveRouteHistory, [{
    key: "getCommand",
    value: function getCommand() {
      return 'panel/global/open';
    }
  }, {
    key: "getId",
    value: function getId() {
      return 'save-route-history--/panel/global/open';
    }
  }, {
    key: "getConditions",
    value: function getConditions() {
      var args = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
      var result = arguments.length > 1 ? arguments[1] : undefined;
      return args.route;
    }
  }, {
    key: "apply",
    value: function apply(args) {
      this.component.routeHistory = args;
    }
  }]);
  return KitSaveRouteHistory;
}(_baseOpenClose.default);

exports.KitSaveRouteHistory = KitSaveRouteHistory;
var _default = KitSaveRouteHistory;
exports.default = _default;

/***/ }),
/* 486 */
/***/ (function(module, exports, __webpack_require__) {

"use strict";


var _interopRequireDefault = __webpack_require__(0);

var _Object$defineProperty = __webpack_require__(1);

_Object$defineProperty(exports, "__esModule", {
  value: true
});

exports.default = exports.KitRemoveEditorActiveCSSDocumentsOpen = void 0;

var _classCallCheck2 = _interopRequireDefault(__webpack_require__(2));

var _createClass2 = _interopRequireDefault(__webpack_require__(3));

var _inherits2 = _interopRequireDefault(__webpack_require__(4));

var _createSuper2 = _interopRequireDefault(__webpack_require__(5));

var KitRemoveEditorActiveCSSDocumentsOpen = /*#__PURE__*/function (_$e$modules$hookUI$Af) {
  (0, _inherits2.default)(KitRemoveEditorActiveCSSDocumentsOpen, _$e$modules$hookUI$Af);

  var _super = (0, _createSuper2.default)(KitRemoveEditorActiveCSSDocumentsOpen);

  function KitRemoveEditorActiveCSSDocumentsOpen() {
    (0, _classCallCheck2.default)(this, KitRemoveEditorActiveCSSDocumentsOpen);
    return _super.apply(this, arguments);
  }

  (0, _createClass2.default)(KitRemoveEditorActiveCSSDocumentsOpen, [{
    key: "getCommand",
    value: function getCommand() {
      return 'editor/documents/open';
    }
  }, {
    key: "getId",
    value: function getId() {
      return 'kit-remove-editor-active-css--editor/documents/open';
    }
  }, {
    key: "getConditions",
    value: function getConditions() {
      return 'kit' === elementor.documents.getCurrent().config.type;
    }
  }, {
    key: "apply",
    value: function apply() {
      // TODO: Remove - Temporary fix to avoid conflict with `elementor.exitPreviewMode()`.
      setTimeout(function () {
        elementorFrontend.elements.$body.removeClass('elementor-editor-active');
      });
    }
  }]);
  return KitRemoveEditorActiveCSSDocumentsOpen;
}($e.modules.hookUI.After);

exports.KitRemoveEditorActiveCSSDocumentsOpen = KitRemoveEditorActiveCSSDocumentsOpen;
var _default = KitRemoveEditorActiveCSSDocumentsOpen;
exports.default = _default;

/***/ }),
/* 487 */
/***/ (function(module, exports, __webpack_require__) {

"use strict";


var _interopRequireDefault = __webpack_require__(0);

var _Object$defineProperty = __webpack_require__(1);

_Object$defineProperty(exports, "__esModule", {
  value: true
});

exports.default = exports.KitRemoveEditorActiveCSSPanelOpen = void 0;

var _classCallCheck2 = _interopRequireDefault(__webpack_require__(2));

var _createClass2 = _interopRequireDefault(__webpack_require__(3));

var _inherits2 = _interopRequireDefault(__webpack_require__(4));

var _createSuper2 = _interopRequireDefault(__webpack_require__(5));

var KitRemoveEditorActiveCSSPanelOpen = /*#__PURE__*/function (_$e$modules$hookUI$Af) {
  (0, _inherits2.default)(KitRemoveEditorActiveCSSPanelOpen, _$e$modules$hookUI$Af);

  var _super = (0, _createSuper2.default)(KitRemoveEditorActiveCSSPanelOpen);

  function KitRemoveEditorActiveCSSPanelOpen() {
    (0, _classCallCheck2.default)(this, KitRemoveEditorActiveCSSPanelOpen);
    return _super.apply(this, arguments);
  }

  (0, _createClass2.default)(KitRemoveEditorActiveCSSPanelOpen, [{
    key: "getCommand",
    value: function getCommand() {
      return 'panel/open';
    }
  }, {
    key: "getId",
    value: function getId() {
      return 'kit-remove-editor-active-css--/panel/open';
    }
  }, {
    key: "getConditions",
    value: function getConditions() {
      return 'kit' === elementor.documents.getCurrent().config.type;
    }
  }, {
    key: "apply",
    value: function apply() {
      // TODO: Remove - Temporary fix to avoid conflict with `elementor.exitPreviewMode()`.
      setTimeout(function () {
        elementorFrontend.elements.$body.removeClass('elementor-editor-active');
      });
    }
  }]);
  return KitRemoveEditorActiveCSSPanelOpen;
}($e.modules.hookUI.After);

exports.KitRemoveEditorActiveCSSPanelOpen = KitRemoveEditorActiveCSSPanelOpen;
var _default = KitRemoveEditorActiveCSSPanelOpen;
exports.default = _default;

/***/ }),
/* 488 */
/***/ (function(module, exports, __webpack_require__) {

"use strict";


var _interopRequireDefault = __webpack_require__(0);

var _Object$defineProperty = __webpack_require__(1);

_Object$defineProperty(exports, "__esModule", {
  value: true
});

exports.default = exports.KitBackToRouteHistory = void 0;

var _classCallCheck2 = _interopRequireDefault(__webpack_require__(2));

var _createClass2 = _interopRequireDefault(__webpack_require__(3));

var _inherits2 = _interopRequireDefault(__webpack_require__(4));

var _createSuper2 = _interopRequireDefault(__webpack_require__(5));

var _baseOpenClose = _interopRequireDefault(__webpack_require__(361));

var KitBackToRouteHistory = /*#__PURE__*/function (_BaseOpenClose) {
  (0, _inherits2.default)(KitBackToRouteHistory, _BaseOpenClose);

  var _super = (0, _createSuper2.default)(KitBackToRouteHistory);

  function KitBackToRouteHistory() {
    (0, _classCallCheck2.default)(this, KitBackToRouteHistory);
    return _super.apply(this, arguments);
  }

  (0, _createClass2.default)(KitBackToRouteHistory, [{
    key: "getCommand",
    value: function getCommand() {
      return 'panel/global/close';
    }
  }, {
    key: "getId",
    value: function getId() {
      return 'back-to-route-history-/panel/global/close';
    }
  }, {
    key: "getConditions",
    value: function getConditions() {
      return this.component.routeHistory;
    }
  }, {
    key: "apply",
    value: function apply() {
      var historyBeforeOpen = this.component.routeHistory;
      delete this.component.routeHistory;
      /**
       * TODO: Find better solution.
       * Since cache deleted after leaving globals.
       * Cover issue: When back to route, it back to style, it causes the UI ask for styles separately and since,
       * Cache deleted, it asks the remote ( $e.data ) for specific colors/typography endpoints and causes a delay in global select box.
       * To handle the the issue, request globals manually, then back to route.
       */

      if (historyBeforeOpen.container) {
        $e.data.get('globals/index').then(function () {
          // Since the container comes from history, its not connected element.
          historyBeforeOpen.container = historyBeforeOpen.container.lookup();
          historyBeforeOpen.container.model.trigger('request:edit', {
            scrollIntoView: true
          });
          $e.route(historyBeforeOpen.route, {
            model: historyBeforeOpen.container.model,
            view: historyBeforeOpen.container.view
          });
        });
      }
    }
  }]);
  return KitBackToRouteHistory;
}(_baseOpenClose.default);

exports.KitBackToRouteHistory = KitBackToRouteHistory;
var _default = KitBackToRouteHistory;
exports.default = _default;

/***/ }),
/* 489 */
/***/ (function(module, exports, __webpack_require__) {

"use strict";


var _interopRequireDefault = __webpack_require__(0);

var _Object$defineProperty = __webpack_require__(1);

_Object$defineProperty(exports, "__esModule", {
  value: true
});

exports.KitRemovePreviewDeletedVariables = void 0;

var _keys = _interopRequireDefault(__webpack_require__(23));

var _values = _interopRequireDefault(__webpack_require__(55));

__webpack_require__(39);

__webpack_require__(135);

__webpack_require__(155);

var _classCallCheck2 = _interopRequireDefault(__webpack_require__(2));

var _createClass2 = _interopRequireDefault(__webpack_require__(3));

var _assertThisInitialized2 = _interopRequireDefault(__webpack_require__(49));

var _inherits2 = _interopRequireDefault(__webpack_require__(4));

var _createSuper2 = _interopRequireDefault(__webpack_require__(5));

var _defineProperty2 = _interopRequireDefault(__webpack_require__(28));

/**
 * On delete a design system item - the used variables on the preview frame are
 * invalid and cause the elements to get the user-agent default style instead of
 * inherit higher CSS rules.
 *
 * The hook finds and removes all deleted item variables from the preview inline styles.
 */
var KitRemovePreviewDeletedVariables = /*#__PURE__*/function (_$e$modules$hookUI$Be) {
  (0, _inherits2.default)(KitRemovePreviewDeletedVariables, _$e$modules$hookUI$Be);

  var _super = (0, _createSuper2.default)(KitRemovePreviewDeletedVariables);

  function KitRemovePreviewDeletedVariables() {
    var _this;

    (0, _classCallCheck2.default)(this, KitRemovePreviewDeletedVariables);

    for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
      args[_key] = arguments[_key];
    }

    _this = _super.call.apply(_super, [this].concat(args));
    (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "controls", ['custom_colors', 'custom_typography']);
    return _this;
  }

  (0, _createClass2.default)(KitRemovePreviewDeletedVariables, [{
    key: "getCommand",
    value: function getCommand() {
      return 'document/repeater/remove';
    }
  }, {
    key: "getId",
    value: function getId() {
      return 'kit-remove-preview-deleted-variables';
    }
  }, {
    key: "getContainerType",
    value: function getContainerType() {
      return 'document';
    }
  }, {
    key: "getConditions",
    value: function getConditions(args) {
      return this.controls.includes(args.name) && 'kit' === elementor.documents.getCurrent().config.type;
    }
  }, {
    key: "apply",
    value: function apply(args) {
      var _this2 = this;

      // Store on component in order to use it in undo hook.
      this.component = $e.components.get('panel/global');
      this.component.tempStyle = this.component.tempStyle || {};
      var _args$containers = args.containers,
          containers = _args$containers === void 0 ? [args.container] : _args$containers,
          kitCSSId = "elementor-style-page-".concat(elementor.config.kit_id);
      containers.forEach(function (container) {
        var item = container.repeaters[args.name].children[args.index],
            stylesheets = (0, _values.default)(elementor.$previewContents[0].styleSheets).filter(function (stylesheet) {
          // Don't touch the kit CSS itself.
          return kitCSSId !== stylesheet.ownerNode.id && stylesheet.ownerNode.innerHTML.includes(item.id);
        });
        stylesheets.forEach(function (stylesheet) {
          _this2.component.tempStyle[item.id] = _this2.extractVariables(stylesheet.cssRules, item.id);
        });
      });
    }
  }, {
    key: "extractVariables",
    value: function extractVariables(cssRules, id) {
      var variablesRules = {};
      (0, _values.default)(cssRules).forEach(function (rule) {
        if (!rule.style) {
          // TODO Handle CSSMediaRule.
          return;
        }

        variablesRules[rule.selectorText] = {}; // Get the original properties for undo.

        for (var i = 0; i < rule.style.length; i++) {
          var property = rule.style[i],
              value = rule.style[property];

          if (value.includes(id)) {
            variablesRules[rule.selectorText][property] = value;
          }
        } // Delete in a separated loop, because it changes the `style.length`.


        (0, _keys.default)(variablesRules[rule.selectorText]).forEach(function (property) {
          rule.style[property] = '';
        });
      });
      return variablesRules;
    }
  }]);
  return KitRemovePreviewDeletedVariables;
}($e.modules.hookUI.Before);

exports.KitRemovePreviewDeletedVariables = KitRemovePreviewDeletedVariables;

/***/ }),
/* 490 */
/***/ (function(module, exports, __webpack_require__) {

"use strict";


var _Object$defineProperty = __webpack_require__(1);

_Object$defineProperty(exports, "__esModule", {
  value: true
});

_Object$defineProperty(exports, "Back", {
  enumerable: true,
  get: function get() {
    return _back.Back;
  }
});

_Object$defineProperty(exports, "Close", {
  enumerable: true,
  get: function get() {
    return _close.Close;
  }
});

_Object$defineProperty(exports, "Exit", {
  enumerable: true,
  get: function get() {
    return _exit.Exit;
  }
});

_Object$defineProperty(exports, "Open", {
  enumerable: true,
  get: function get() {
    return _open.Open;
  }
});

var _back = __webpack_require__(491);

var _close = __webpack_require__(492);

var _exit = __webpack_require__(504);

var _open = __webpack_require__(505);

/***/ }),
/* 491 */
/***/ (function(module, exports, __webpack_require__) {

"use strict";


var _interopRequireDefault = __webpack_require__(0);

var _Object$defineProperty = __webpack_require__(1);

_Object$defineProperty(exports, "__esModule", {
  value: true
});

exports.default = exports.Back = void 0;

var _classCallCheck2 = _interopRequireDefault(__webpack_require__(2));

var _createClass2 = _interopRequireDefault(__webpack_require__(3));

var _assertThisInitialized2 = _interopRequireDefault(__webpack_require__(49));

var _inherits2 = _interopRequireDefault(__webpack_require__(4));

var _createSuper2 = _interopRequireDefault(__webpack_require__(5));

var _defineProperty2 = _interopRequireDefault(__webpack_require__(28));

var _commandBase = _interopRequireDefault(__webpack_require__(21));

var Back = /*#__PURE__*/function (_CommandBase) {
  (0, _inherits2.default)(Back, _CommandBase);

  var _super = (0, _createSuper2.default)(Back);

  function Back() {
    var _this;

    (0, _classCallCheck2.default)(this, Back);

    for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
      args[_key] = arguments[_key];
    }

    _this = _super.call.apply(_super, [this].concat(args));
    (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "confirmDialog", null);
    return _this;
  }

  (0, _createClass2.default)(Back, [{
    key: "apply",
    value: function apply() {
      var panelHistory = $e.routes.getHistory('panel'); // Don't go back if no where.

      if (1 === panelHistory.length) {
        this.getCloseConfirmDialog(event).show();
        return;
      }

      return $e.routes.back('panel');
    }
  }, {
    key: "getCloseConfirmDialog",
    value: function getCloseConfirmDialog(event) {
      if (!this.confirmDialog) {
        var modalOptions = {
          id: 'elementor-kit-warn-on-close',
          headerMessage: elementor.translate('Exit'),
          message: elementor.translate('Would you like to exit?'),
          position: {
            my: 'center center',
            at: 'center center'
          },
          strings: {
            confirm: elementor.translate('Exit'),
            cancel: elementor.translate('Cancel')
          },
          onConfirm: function onConfirm() {
            $e.run('panel/global/close');
          }
        };
        this.confirmDialog = elementorCommon.dialogsManager.createWidget('confirm', modalOptions);
      }

      this.confirmDialog.setSettings('hide', {
        onEscKeyPress: !event
      });
      return this.confirmDialog;
    }
  }]);
  return Back;
}(_commandBase.default);

exports.Back = Back;
var _default = Back;
exports.default = _default;

/***/ }),
/* 492 */
/***/ (function(module, exports, __webpack_require__) {

"use strict";


var _interopRequireDefault = __webpack_require__(0);

var _Object$defineProperty = __webpack_require__(1);

_Object$defineProperty(exports, "__esModule", {
  value: true
});

exports.default = exports.Close = void 0;

__webpack_require__(362);

__webpack_require__(72);

__webpack_require__(366);

var _parseInt2 = _interopRequireDefault(__webpack_require__(213));

var _classCallCheck2 = _interopRequireDefault(__webpack_require__(2));

var _createClass2 = _interopRequireDefault(__webpack_require__(3));

var _inherits2 = _interopRequireDefault(__webpack_require__(4));

var _createSuper2 = _interopRequireDefault(__webpack_require__(5));

var _commandBase = _interopRequireDefault(__webpack_require__(21));

var Close = /*#__PURE__*/function (_CommandBase) {
  (0, _inherits2.default)(Close, _CommandBase);

  var _super = (0, _createSuper2.default)(Close);

  function Close() {
    (0, _classCallCheck2.default)(this, Close);
    return _super.apply(this, arguments);
  }

  (0, _createClass2.default)(Close, [{
    key: "apply",
    value: function apply(args) {
      var _this = this;

      var mode = args.mode; // The kit is opened directly.

      if (elementor.config.initial_document.id === (0, _parseInt2.default)(elementor.config.kit_id)) {
        return $e.run('panel/global/exit');
      }

      $e.internal('panel/state-loading');
      return $e.run('editor/documents/switch', {
        mode: mode,
        id: elementor.config.initial_document.id,
        onClose: function onClose(document) {
          if (document.isDraft()) {
            // Restore published style.
            elementor.toggleDocumentCssFiles(document, true);
            elementor.settings.page.destroyControlsCSS();
          }

          $e.components.get('panel/global').close();
          $e.routes.clearHistory(_this.component.getRootContainer()); // The kit shouldn't be cached for next open. (it may be changed via create colors/typography).

          elementor.documents.invalidateCache(elementor.config.kit_id);
        }
      }).finally(function () {
        return $e.internal('panel/state-ready');
      });
    }
  }]);
  return Close;
}(_commandBase.default);

exports.Close = Close;
var _default = Close;
exports.default = _default;

/***/ }),
/* 493 */
/***/ (function(module, exports) {

module.exports = function (it, Constructor, name, forbiddenField) {
  if (!(it instanceof Constructor) || (forbiddenField !== undefined && forbiddenField in it)) {
    throw TypeError(name + ': incorrect invocation!');
  } return it;
};


/***/ }),
/* 494 */
/***/ (function(module, exports, __webpack_require__) {

var ctx = __webpack_require__(73);
var call = __webpack_require__(495);
var isArrayIter = __webpack_require__(496);
var anObject = __webpack_require__(18);
var toLength = __webpack_require__(43);
var getIterFn = __webpack_require__(497);
var BREAK = {};
var RETURN = {};
var exports = module.exports = function (iterable, entries, fn, that, ITERATOR) {
  var iterFn = ITERATOR ? function () { return iterable; } : getIterFn(iterable);
  var f = ctx(fn, that, entries ? 2 : 1);
  var index = 0;
  var length, step, iterator, result;
  if (typeof iterFn != 'function') throw TypeError(iterable + ' is not iterable!');
  // fast case for arrays with default iterator
  if (isArrayIter(iterFn)) for (length = toLength(iterable.length); length > index; index++) {
    result = entries ? f(anObject(step = iterable[index])[0], step[1]) : f(iterable[index]);
    if (result === BREAK || result === RETURN) return result;
  } else for (iterator = iterFn.call(iterable); !(step = iterator.next()).done;) {
    result = call(iterator, f, step.value, entries);
    if (result === BREAK || result === RETURN) return result;
  }
};
exports.BREAK = BREAK;
exports.RETURN = RETURN;


/***/ }),
/* 495 */
/***/ (function(module, exports, __webpack_require__) {

// call something on iterator step with safe closing on error
var anObject = __webpack_require__(18);
module.exports = function (iterator, fn, value, entries) {
  try {
    return entries ? fn(anObject(value)[0], value[1]) : fn(value);
  // 7.4.6 IteratorClose(iterator, completion)
  } catch (e) {
    var ret = iterator['return'];
    if (ret !== undefined) anObject(ret.call(iterator));
    throw e;
  }
};


/***/ }),
/* 496 */
/***/ (function(module, exports, __webpack_require__) {

// check on default Array iterator
var Iterators = __webpack_require__(118);
var ITERATOR = __webpack_require__(12)('iterator');
var ArrayProto = Array.prototype;

module.exports = function (it) {
  return it !== undefined && (Iterators.Array === it || ArrayProto[ITERATOR] === it);
};


/***/ }),
/* 497 */
/***/ (function(module, exports, __webpack_require__) {

var classof = __webpack_require__(113);
var ITERATOR = __webpack_require__(12)('iterator');
var Iterators = __webpack_require__(118);
module.exports = __webpack_require__(54).getIteratorMethod = function (it) {
  if (it != undefined) return it[ITERATOR]
    || it['@@iterator']
    || Iterators[classof(it)];
};


/***/ }),
/* 498 */
/***/ (function(module, exports) {

// fast apply, http://jsperf.lnkit.com/fast-apply/5
module.exports = function (fn, args, that) {
  var un = that === undefined;
  switch (args.length) {
    case 0: return un ? fn()
                      : fn.call(that);
    case 1: return un ? fn(args[0])
                      : fn.call(that, args[0]);
    case 2: return un ? fn(args[0], args[1])
                      : fn.call(that, args[0], args[1]);
    case 3: return un ? fn(args[0], args[1], args[2])
                      : fn.call(that, args[0], args[1], args[2]);
    case 4: return un ? fn(args[0], args[1], args[2], args[3])
                      : fn.call(that, args[0], args[1], args[2], args[3]);
  } return fn.apply(that, args);
};


/***/ }),
/* 499 */
/***/ (function(module, exports, __webpack_require__) {

var global = __webpack_require__(17);
var macrotask = __webpack_require__(363).set;
var Observer = global.MutationObserver || global.WebKitMutationObserver;
var process = global.process;
var Promise = global.Promise;
var isNode = __webpack_require__(46)(process) == 'process';

module.exports = function () {
  var head, last, notify;

  var flush = function () {
    var parent, fn;
    if (isNode && (parent = process.domain)) parent.exit();
    while (head) {
      fn = head.fn;
      head = head.next;
      try {
        fn();
      } catch (e) {
        if (head) notify();
        else last = undefined;
        throw e;
      }
    } last = undefined;
    if (parent) parent.enter();
  };

  // Node.js
  if (isNode) {
    notify = function () {
      process.nextTick(flush);
    };
  // browsers with MutationObserver, except iOS Safari - https://github.com/zloirock/core-js/issues/339
  } else if (Observer && !(global.navigator && global.navigator.standalone)) {
    var toggle = true;
    var node = document.createTextNode('');
    new Observer(flush).observe(node, { characterData: true }); // eslint-disable-line no-new
    notify = function () {
      node.data = toggle = !toggle;
    };
  // environments with maybe non-completely correct, but existent Promise
  } else if (Promise && Promise.resolve) {
    // Promise.resolve without an argument throws an error in LG WebOS 2
    var promise = Promise.resolve(undefined);
    notify = function () {
      promise.then(flush);
    };
  // for other environments - macrotask based on:
  // - setImmediate
  // - MessageChannel
  // - window.postMessag
  // - onreadystatechange
  // - setTimeout
  } else {
    notify = function () {
      // strange IE + webpack dev server bug - use .call(global)
      macrotask.call(global, flush);
    };
  }

  return function (fn) {
    var task = { fn: fn, next: undefined };
    if (last) last.next = task;
    if (!head) {
      head = task;
      notify();
    } last = task;
  };
};


/***/ }),
/* 500 */
/***/ (function(module, exports) {

module.exports = function (exec) {
  try {
    return { e: false, v: exec() };
  } catch (e) {
    return { e: true, v: e };
  }
};


/***/ }),
/* 501 */
/***/ (function(module, exports, __webpack_require__) {

var global = __webpack_require__(17);
var navigator = global.navigator;

module.exports = navigator && navigator.userAgent || '';


/***/ }),
/* 502 */
/***/ (function(module, exports, __webpack_require__) {

var redefine = __webpack_require__(37);
module.exports = function (target, src, safe) {
  for (var key in src) redefine(target, key, src[key], safe);
  return target;
};


/***/ }),
/* 503 */
/***/ (function(module, exports, __webpack_require__) {

var ITERATOR = __webpack_require__(12)('iterator');
var SAFE_CLOSING = false;

try {
  var riter = [7][ITERATOR]();
  riter['return'] = function () { SAFE_CLOSING = true; };
  // eslint-disable-next-line no-throw-literal
  Array.from(riter, function () { throw 2; });
} catch (e) { /* empty */ }

module.exports = function (exec, skipClosing) {
  if (!skipClosing && !SAFE_CLOSING) return false;
  var safe = false;
  try {
    var arr = [7];
    var iter = arr[ITERATOR]();
    iter.next = function () { return { done: safe = true }; };
    arr[ITERATOR] = function () { return iter; };
    exec(arr);
  } catch (e) { /* empty */ }
  return safe;
};


/***/ }),
/* 504 */
/***/ (function(module, exports, __webpack_require__) {

"use strict";


var _interopRequireDefault = __webpack_require__(0);

var _Object$defineProperty = __webpack_require__(1);

_Object$defineProperty(exports, "__esModule", {
  value: true
});

exports.default = exports.Exit = void 0;

var _classCallCheck2 = _interopRequireDefault(__webpack_require__(2));

var _createClass2 = _interopRequireDefault(__webpack_require__(3));

var _inherits2 = _interopRequireDefault(__webpack_require__(4));

var _createSuper2 = _interopRequireDefault(__webpack_require__(5));

var _commandBase = _interopRequireDefault(__webpack_require__(21));

var Exit = /*#__PURE__*/function (_CommandBase) {
  (0, _inherits2.default)(Exit, _CommandBase);

  var _super = (0, _createSuper2.default)(Exit);

  function Exit() {
    (0, _classCallCheck2.default)(this, Exit);
    return _super.apply(this, arguments);
  }

  (0, _createClass2.default)(Exit, [{
    key: "apply",
    value: function apply() {
      return $e.run('editor/documents/close', {
        id: elementor.config.kit_id,
        onClose: function onClose(document) {
          location = document.config.urls.exit_to_dashboard;
        }
      });
    }
  }]);
  return Exit;
}(_commandBase.default);

exports.Exit = Exit;
var _default = Exit;
exports.default = _default;

/***/ }),
/* 505 */
/***/ (function(module, exports, __webpack_require__) {

"use strict";


var _interopRequireDefault = __webpack_require__(0);

var _Object$defineProperty = __webpack_require__(1);

_Object$defineProperty(exports, "__esModule", {
  value: true
});

exports.default = exports.Open = void 0;

__webpack_require__(362);

__webpack_require__(72);

__webpack_require__(366);

var _classCallCheck2 = _interopRequireDefault(__webpack_require__(2));

var _createClass2 = _interopRequireDefault(__webpack_require__(3));

var _inherits2 = _interopRequireDefault(__webpack_require__(4));

var _createSuper2 = _interopRequireDefault(__webpack_require__(5));

var _commandBase = _interopRequireDefault(__webpack_require__(21));

var Open = /*#__PURE__*/function (_CommandBase) {
  (0, _inherits2.default)(Open, _CommandBase);

  var _super = (0, _createSuper2.default)(Open);

  function Open() {
    (0, _classCallCheck2.default)(this, Open);
    return _super.apply(this, arguments);
  }

  (0, _createClass2.default)(Open, [{
    key: "apply",
    value: function apply() {
      var kit = elementor.documents.get(elementor.config.kit_id);

      if (kit && 'open' === kit.editor.status) {
        return jQuery.Deferred().resolve();
      }

      $e.routes.clearHistory(this.component.getRootContainer());
      this.component.toggleHistoryClass();
      $e.internal('panel/state-loading');
      return $e.run('editor/documents/switch', {
        id: elementor.config.kit_id,
        mode: 'autosave'
      }).finally(function () {
        return $e.internal('panel/state-ready');
      });
    }
  }]);
  return Open;
}(_commandBase.default);

exports.Open = Open;
var _default = Open;
exports.default = _default;

/***/ }),
/* 506 */
/***/ (function(module, exports, __webpack_require__) {

"use strict";


var _interopRequireDefault = __webpack_require__(0);

var _panelContent = _interopRequireDefault(__webpack_require__(507));

module.exports = Marionette.LayoutView.extend({
  id: 'elementor-kit-panel',
  template: '#tmpl-elementor-kit-panel',
  regions: {
    content: '#elementor-kit__panel-content__wrapper'
  },
  onBeforeShow: function onBeforeShow() {
    var container = elementor.documents.getCurrent().container,
        options = {
      container: container,
      model: container.model,
      controls: container.settings.controls,
      name: 'kit'
    };
    this.showChildView('content', new _panelContent.default(options));
  }
});

/***/ }),
/* 507 */
/***/ (function(module, exports, __webpack_require__) {

"use strict";


var _interopRequireDefault = __webpack_require__(0);

var _Object$defineProperty = __webpack_require__(1);

_Object$defineProperty(exports, "__esModule", {
  value: true
});

exports.default = void 0;

var _classCallCheck2 = _interopRequireDefault(__webpack_require__(2));

var _createClass2 = _interopRequireDefault(__webpack_require__(3));

var _inherits2 = _interopRequireDefault(__webpack_require__(4));

var _createSuper2 = _interopRequireDefault(__webpack_require__(5));

var _default = /*#__PURE__*/function (_elementorModules$edi) {
  (0, _inherits2.default)(_default, _elementorModules$edi);

  var _super = (0, _createSuper2.default)(_default);

  function _default() {
    (0, _classCallCheck2.default)(this, _default);
    return _super.apply(this, arguments);
  }

  (0, _createClass2.default)(_default, [{
    key: "id",
    value: function id() {
      return 'elementor-kit-panel-content';
    }
  }, {
    key: "getTemplate",
    value: function getTemplate() {
      return '#tmpl-elementor-kit-panel-content';
    }
  }, {
    key: "childViewContainer",
    value: function childViewContainer() {
      return '#elementor-kit-panel-content-controls';
    }
  }, {
    key: "childViewOptions",
    value: function childViewOptions() {
      var container = this.getOption('container');
      return {
        elementSettingsModel: container.settings,
        container: container
      };
    }
  }]);
  return _default;
}(elementorModules.editor.views.ControlsStack);

exports.default = _default;

/***/ }),
/* 508 */
/***/ (function(module, exports, __webpack_require__) {

"use strict";


var _interopRequireDefault = __webpack_require__(0);

var _Object$defineProperty = __webpack_require__(1);

_Object$defineProperty(exports, "__esModule", {
  value: true
});

exports.default = void 0;

var _classCallCheck2 = _interopRequireDefault(__webpack_require__(2));

var _createClass2 = _interopRequireDefault(__webpack_require__(3));

var _inherits2 = _interopRequireDefault(__webpack_require__(4));

var _createSuper2 = _interopRequireDefault(__webpack_require__(5));

var _base = _interopRequireDefault(__webpack_require__(359));

var PanelMenu = /*#__PURE__*/function (_MenuPageView) {
  (0, _inherits2.default)(PanelMenu, _MenuPageView);

  var _super = (0, _createSuper2.default)(PanelMenu);

  function PanelMenu() {
    (0, _classCallCheck2.default)(this, PanelMenu);
    return _super.apply(this, arguments);
  }

  (0, _createClass2.default)(PanelMenu, [{
    key: "initialize",
    value: function initialize() {
      this.collection = PanelMenu.getGroups();
    }
  }]);
  return PanelMenu;
}(_base.default);

exports.default = PanelMenu;
PanelMenu.groups = null;

PanelMenu.createGroupItems = function (groupName, keys) {
  var tabs = $e.components.get('panel/global').getTabs();
  return keys.map(function (key) {
    var fullKey = groupName + '-' + key,
        tab = tabs[fullKey];
    return {
      name: fullKey,
      icon: tab.icon,
      title: tab.title,
      callback: function callback() {
        return $e.route('panel/global/' + fullKey);
      }
    };
  });
};

PanelMenu.initGroups = function () {
  var settingsItems = PanelMenu.createGroupItems('settings', ['site-identity', 'background', 'layout', 'lightbox', 'custom-css']),
      additionalSettingsProps = {
    name: 'settings-additional-settings',
    icon: 'eicon-tools',
    title: elementor.translate('additional_settings'),
    type: 'link',
    link: elementor.config.admin_settings_url,
    newTab: true
  };
  settingsItems.push(additionalSettingsProps);
  PanelMenu.groups = new Backbone.Collection([{
    name: 'design_system',
    title: elementor.translate('design_system'),
    items: PanelMenu.createGroupItems('global', ['colors', 'typography'])
  }, {
    name: 'theme_style',
    title: elementor.translate('theme_style'),
    items: PanelMenu.createGroupItems('theme-style', ['typography', 'buttons', 'images', 'form-fields'])
  }, {
    name: 'settings',
    title: elementor.translate('settings'),
    items: settingsItems
  }]);
};

PanelMenu.getGroups = function () {
  if (!PanelMenu.groups) {
    PanelMenu.initGroups();
  }

  return PanelMenu.groups;
};

/***/ }),
/* 509 */
/***/ (function(module, exports, __webpack_require__) {

"use strict";


var _interopRequireDefault = __webpack_require__(0);

var _Object$defineProperty = __webpack_require__(1);

_Object$defineProperty(exports, "__esModule", {
  value: true
});

exports.default = void 0;

var _classCallCheck2 = _interopRequireDefault(__webpack_require__(2));

var _createClass2 = _interopRequireDefault(__webpack_require__(3));

var _inherits2 = _interopRequireDefault(__webpack_require__(4));

var _createSuper2 = _interopRequireDefault(__webpack_require__(5));

var _panelHeaderButtons = __webpack_require__(510);

var _default = /*#__PURE__*/function (_Marionette$Behavior) {
  (0, _inherits2.default)(_default, _Marionette$Behavior);

  var _super = (0, _createSuper2.default)(_default);

  function _default() {
    (0, _classCallCheck2.default)(this, _default);
    return _super.apply(this, arguments);
  }

  (0, _createClass2.default)(_default, [{
    key: "ui",
    value: function ui() {
      return {
        buttonClose: '#elementor-panel-header-kit-close',
        buttonBack: '#elementor-panel-header-kit-back'
      };
    }
  }, {
    key: "events",
    value: function events() {
      return {
        'click @ui.buttonClose': 'onClickClose',
        'click @ui.buttonBack': 'onClickBack'
      };
    }
  }, {
    key: "onBeforeShow",
    value: function onBeforeShow() {
      this.$el.prepend(elementor.compileTemplate(_panelHeaderButtons.buttonBack, {
        Back: elementor.translate('back')
      }));
      this.$el.append(elementor.compileTemplate(_panelHeaderButtons.buttonClose, {
        Close: elementor.translate('close')
      }));
    }
  }, {
    key: "onClickClose",
    value: function onClickClose() {
      $e.run('panel/global/close');
    }
  }, {
    key: "onClickBack",
    value: function onClickBack() {
      $e.run('panel/global/back');
    }
  }]);
  return _default;
}(Marionette.Behavior);

exports.default = _default;

/***/ }),
/* 510 */
/***/ (function(module, exports, __webpack_require__) {

"use strict";


var _Object$defineProperty = __webpack_require__(1);

_Object$defineProperty(exports, "__esModule", {
  value: true
});

exports.buttonClose = exports.buttonBack = void 0;
var arrowIconClass = 'eicon-chevron-' + (elementorCommon.config.isRTL ? 'right' : 'left');
var buttonBack = "\n<div id=\"elementor-panel-header-kit-back\" class=\"elementor-header-button\">\n\t<i class=\"elementor-icon ".concat(arrowIconClass, " tooltip-target\" aria-hidden=\"true\" data-tooltip=\"{{ Back }}\"></i>\n\t<span class=\"elementor-screen-only\">{{ Back }}</span>\n</div>\n");
exports.buttonBack = buttonBack;
var buttonClose = "\n<div id=\"elementor-panel-header-kit-close\" class=\"elementor-header-button\">\n\t<i class=\"elementor-icon eicon-close tooltip-target\" aria-hidden=\"true\" data-tooltip=\"{{ Close }}\"></i>\n\t<span class=\"elementor-screen-only\">{{ Close }}</span>\n</div>\n";
exports.buttonClose = buttonClose;

/***/ }),
/* 511 */
/***/ (function(module, exports, __webpack_require__) {

"use strict";


var _interopRequireDefault = __webpack_require__(0);

var _Object$defineProperty = __webpack_require__(1);

_Object$defineProperty(exports, "__esModule", {
  value: true
});

exports.default = void 0;

var _classCallCheck2 = _interopRequireDefault(__webpack_require__(2));

var _createClass2 = _interopRequireDefault(__webpack_require__(3));

var _get2 = _interopRequireDefault(__webpack_require__(26));

var _getPrototypeOf2 = _interopRequireDefault(__webpack_require__(16));

var _inherits2 = _interopRequireDefault(__webpack_require__(4));

var _createSuper2 = _interopRequireDefault(__webpack_require__(5));

var _repeater = _interopRequireDefault(__webpack_require__(367));

var _repeaterRow = _interopRequireDefault(__webpack_require__(512));

var _default = /*#__PURE__*/function (_Repeater) {
  (0, _inherits2.default)(_default, _Repeater);

  var _super = (0, _createSuper2.default)(_default);

  function _default() {
    var _this;

    (0, _classCallCheck2.default)(this, _default);

    for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
      args[_key] = arguments[_key];
    }

    _this = _super.call.apply(_super, [this].concat(args));
    _this.childView = _repeaterRow.default;
    return _this;
  }

  (0, _createClass2.default)(_default, [{
    key: "templateHelpers",
    value: function templateHelpers() {
      var templateHelpers = (0, _get2.default)((0, _getPrototypeOf2.default)(_default.prototype), "templateHelpers", this).call(this);
      templateHelpers.addButtonText = elementor.translate('custom_colors' === this.model.get('name') ? 'add_color' : 'add_style');
      return templateHelpers;
    }
  }, {
    key: "getDefaults",
    value: function getDefaults() {
      var defaults = (0, _get2.default)((0, _getPrototypeOf2.default)(_default.prototype), "getDefaults", this).call(this);
      defaults.title = "".concat(elementor.translate('new_item'), " #").concat(this.children.length + 1);
      return defaults;
    }
  }]);
  return _default;
}(_repeater.default);

exports.default = _default;

/***/ }),
/* 512 */
/***/ (function(module, exports, __webpack_require__) {

"use strict";


var _interopRequireDefault = __webpack_require__(0);

var _Object$defineProperty = __webpack_require__(1);

_Object$defineProperty(exports, "__esModule", {
  value: true
});

exports.default = void 0;

__webpack_require__(25);

var _classCallCheck2 = _interopRequireDefault(__webpack_require__(2));

var _createClass2 = _interopRequireDefault(__webpack_require__(3));

var _inherits2 = _interopRequireDefault(__webpack_require__(4));

var _createSuper2 = _interopRequireDefault(__webpack_require__(5));

var _repeaterRow = _interopRequireDefault(__webpack_require__(328));

var _default = /*#__PURE__*/function (_RepeaterRow) {
  (0, _inherits2.default)(_default, _RepeaterRow);

  var _super = (0, _createSuper2.default)(_default);

  function _default() {
    (0, _classCallCheck2.default)(this, _default);
    return _super.apply(this, arguments);
  }

  (0, _createClass2.default)(_default, [{
    key: "getTemplate",
    value: function getTemplate() {
      return '#tmpl-elementor-global-style-repeater-row';
    }
  }, {
    key: "events",
    value: function events() {
      return {
        'click @ui.removeButton': 'onRemoveButtonClick'
      };
    }
  }, {
    key: "updateColorValue",
    value: function updateColorValue() {
      this.$colorValue.text(this.model.get('color'));
    }
  }, {
    key: "getDisabledRemoveButtons",
    value: function getDisabledRemoveButtons() {
      if (!this.ui.disabledRemoveButtons) {
        this.ui.disabledRemoveButtons = this.$el.find('.elementor-repeater-tool-remove--disabled');
      }

      return this.ui.disabledRemoveButtons;
    }
  }, {
    key: "getRemoveButton",
    value: function getRemoveButton() {
      return this.ui.removeButton.add(this.getDisabledRemoveButtons());
    }
  }, {
    key: "triggers",
    value: function triggers() {
      return {};
    }
  }, {
    key: "onChildviewRender",
    value: function onChildviewRender(childView) {
      var isColor = 'color' === childView.model.get('type'),
          isPopoverToggle = 'popover_toggle' === childView.model.get('type');
      var globalType = '';

      if (isColor) {
        this.$colorValue = jQuery('<div>', {
          class: 'e-global-colors__color-value'
        });
        childView.$el.find('.elementor-control-input-wrapper').prepend(this.getRemoveButton(), this.$colorValue);
        globalType = 'color';
        this.updateColorValue();
      }

      if (isPopoverToggle) {
        childView.$el.find('.elementor-control-input-wrapper').append(this.getRemoveButton());
        globalType = 'font';
      }

      if (isColor || isPopoverToggle) {
        var removeButtons = this.getDisabledRemoveButtons();
        this.ui.removeButton.data('e-global-type', globalType);
        this.ui.removeButton.tipsy({
          title: function title() {
            return elementor.translate('delete_global_' + globalType);
          },
          gravity: function gravity() {
            return 's';
          }
        });
        removeButtons.tipsy({
          title: function title() {
            return elementor.translate(globalType + '_cannot_be_deleted');
          },
          gravity: function gravity() {
            return 's';
          }
        });
      }
    }
  }, {
    key: "onModelChange",
    value: function onModelChange(model) {
      if (undefined !== model.changed.color) {
        this.updateColorValue();
      }
    }
  }, {
    key: "onRemoveButtonClick",
    value: function onRemoveButtonClick() {
      var _this = this;

      var globalType = this.ui.removeButton.data('e-global-type');
      this.confirmDeleteModal = elementorCommon.dialogsManager.createWidget('confirm', {
        className: 'e-global__confirm-delete',
        headerMessage: elementor.translate('delete_global_' + globalType),
        message: '<i class="eicon-info-circle"></i> ' + elementor.translate('delete_global_' + globalType + '_info'),
        strings: {
          confirm: elementor.translate('delete'),
          cancel: elementor.translate('cancel')
        },
        hide: {
          onBackgroundClick: false
        },
        onConfirm: function onConfirm() {
          _this.trigger('click:remove');
        }
      });
      this.confirmDeleteModal.show();
    }
  }]);
  return _default;
}(_repeaterRow.default);

exports.default = _default;

/***/ }),
/* 513 */
/***/ (function(module, exports, __webpack_require__) {

"use strict";


var _interopRequireDefault = __webpack_require__(0);

var _Object$defineProperty = __webpack_require__(1);

_Object$defineProperty(exports, "__esModule", {
  value: true
});

exports.default = void 0;

var _defineProperty2 = _interopRequireDefault(__webpack_require__(28));

var _values = _interopRequireDefault(__webpack_require__(55));

__webpack_require__(25);

var _classCallCheck2 = _interopRequireDefault(__webpack_require__(2));

var _createClass2 = _interopRequireDefault(__webpack_require__(3));

var _inherits2 = _interopRequireDefault(__webpack_require__(4));

var _createSuper2 = _interopRequireDefault(__webpack_require__(5));

var GlobalControlSelect = /*#__PURE__*/function (_Marionette$Behavior) {
  (0, _inherits2.default)(GlobalControlSelect, _Marionette$Behavior);

  var _super = (0, _createSuper2.default)(GlobalControlSelect);

  function GlobalControlSelect() {
    (0, _classCallCheck2.default)(this, GlobalControlSelect);
    return _super.apply(this, arguments);
  }

  (0, _createClass2.default)(GlobalControlSelect, [{
    key: "ui",
    value: function ui() {
      return {
        controlContent: '.elementor-control-content'
      };
    }
  }, {
    key: "getClassNames",
    value: function getClassNames() {
      return {
        previewItemsContainer: 'e-global__preview-items-container',
        previewItem: 'e-global__preview-item',
        selectedPreviewItem: 'e-global__preview-item--selected',
        manageButton: 'e-global__manage-button',
        popover: 'e-global__popover',
        popoverToggle: 'e-global__popover-toggle',
        popoverToggleActive: 'e-global__popover-toggle--active',
        controlGlobal: 'e-control-global',
        globalPopoverContainer: 'e-global__popover-container',
        globalPopoverTitle: 'e-global__popover-title',
        globalPopoverTitleText: 'e-global__popover-title-text',
        globalPopoverInfo: 'e-global__popover-info',
        globalPopoverInfoTooltip: 'e-global__popover-info-tooltip',
        confirmAddNewGlobal: 'e-global__confirm-add',
        confirmMessageText: '.e-global__confirm-message-text'
      };
    } // This method exists because the UI elements are printed after controls are already rendered.

  }, {
    key: "registerUiElements",
    value: function registerUiElements() {
      var popoverWidget = this.popover.getElements('widget'),
          classes = this.getClassNames();
      this.ui.globalPreviewsContainer = popoverWidget.find(".".concat(classes.previewItemsContainer));
      this.ui.globalPreviewItems = popoverWidget.find(".".concat(classes.previewItem));
      this.ui.manageGlobalsButton = popoverWidget.find(".".concat(classes.manageButton));
    } // This method exists because the UI elements are printed after controls are already rendered.

  }, {
    key: "registerEvents",
    value: function registerEvents() {
      var _this = this;

      var classes = this.getClassNames();
      this.ui.globalPreviewsContainer.on('click', ".".concat(classes.previewItem), function (event) {
        return _this.applySavedGlobalValue(event.currentTarget.dataset.globalId);
      });
      this.ui.globalPopoverToggle.on('click', function (event) {
        return _this.toggleGlobalPopover(event);
      });
      this.ui.manageGlobalsButton.on('click', function () {
        var _this$view$getGlobalM = _this.view.getGlobalMeta(),
            route = _this$view$getGlobalM.route,
            args = {
          route: $e.routes.getHistory('panel').reverse()[0].route,
          container: _this.view.options.container
        };

        $e.run('panel/global/open', args).then(function () {
          return $e.route(route);
        });

        _this.popover.hide();
      });
    }
  }, {
    key: "fetchGlobalValue",
    value: function fetchGlobalValue() {
      var _this2 = this;

      return $e.data.get(this.view.getGlobalKey()).then(function (globalData) {
        _this2.view.globalValue = globalData.data.value;

        _this2.onValueTypeChange();

        elementor.kitManager.renderGlobalVariables();

        _this2.view.applySavedValue();

        return globalData.data;
      });
    }
  }, {
    key: "setCurrentActivePreviewItem",
    value: function setCurrentActivePreviewItem() {
      var selectedClass = this.getClassNames().selectedPreviewItem,
          defaultGlobalsAreEnabled = elementor.config.globals.defaults_enabled[this.view.getGlobalMeta().controlType];

      if (this.activePreviewItem) {
        this.resetActivePreviewItem();
      } // If there is an active global on the control, get it.


      var globalKey = this.view.getGlobalKey(); // If the control has no active global and no active custom value, check if there is a default global and use it.

      if (!globalKey && !this.view.getControlValue() && defaultGlobalsAreEnabled) {
        var _this$view$model$get;

        globalKey = (_this$view$model$get = this.view.model.get('global')) === null || _this$view$model$get === void 0 ? void 0 : _this$view$model$get.default;
      }

      if (!globalKey) {
        // If there is no active global or global default, reset the active preview item.
        this.activePreviewItem = null;
        return;
      } // Extract the Global's ID from the Global key


      var _$e$data$commandExtra = $e.data.commandExtractArgs(globalKey),
          args = _$e$data$commandExtra.args,
          globalId = args.query.id; // Get the active global's corresponding preview item in the Global Select Popover


      var $item = this.ui.globalPreviewItems.filter("[data-global-id=\"".concat(globalId, "\"]"));

      if (!$item) {
        return;
      }

      this.activePreviewItem = $item;
      this.activePreviewItem.addClass(selectedClass);
    }
  }, {
    key: "resetActivePreviewItem",
    value: function resetActivePreviewItem() {
      if (this.activePreviewItem) {
        this.activePreviewItem.removeClass(this.getClassNames().selectedPreviewItem);
      }

      this.activePreviewItem = null;
    }
  }, {
    key: "applySavedGlobalValue",
    value: function applySavedGlobalValue(globalId) {
      this.setGlobalValue(globalId);
      this.fetchGlobalValue();
      this.popover.hide();
    } // Update the behavior's components.

  }, {
    key: "onValueTypeChange",
    value: function onValueTypeChange() {
      this.updateCurrentGlobalName();
    }
  }, {
    key: "updateCurrentGlobalName",
    value: function updateCurrentGlobalName(value) {
      var _this3 = this;

      var classes = this.getClassNames();
      var globalTooltipText = '';

      if (value) {
        globalTooltipText = value;
      } else {
        value = this.view.getControlValue();
        var globalValue = this.view.getGlobalKey();

        if (!globalValue && !value && elementor.config.globals.defaults_enabled[this.view.getGlobalMeta().controlType]) {
          var _this$view$model$get2;

          globalValue = (_this$view$model$get2 = this.view.model.get('global')) === null || _this$view$model$get2 === void 0 ? void 0 : _this$view$model$get2.default;
        }

        if (globalValue) {
          // If there is a global value saved, get the global's name and display it.
          $e.data.get(globalValue).then(function (result) {
            var text = '';

            if (result.data.title) {
              text = result.data.title;
            } else {
              text = elementor.translate('default');
            }

            _this3.updateCurrentGlobalName(text);
          });
          this.ui.globalPopoverToggle.addClass(classes.popoverToggleActive);
          return;
        } else if (value) {
          // If there is a value and it is not a global, set the text to custom.
          globalTooltipText = elementor.translate('custom');
        } else {
          // If there is no value, set the text as default.
          globalTooltipText = elementor.translate('default');
        } // If there is no value, remove the 'active' class from the Global Toggle button.


        this.ui.globalPopoverToggle.removeClass(classes.popoverToggleActive);
      } // This is used in the Global Toggle Button's tooltip.


      this.globalName = globalTooltipText;
    } // The Global Control elements are initialized onRender and not with initialize() because their position depends
    // on elements that are not yet rendered when initialize() is called.

  }, {
    key: "onRender",
    value: function onRender() {
      var _this4 = this;

      this.printGlobalToggleButton();
      this.initGlobalPopover();

      if (this.view.getGlobalKey()) {
        // This setTimeout is here to overcome an issue with a requestAnimationFrame that runs in the Pickr library.
        setTimeout(function () {
          return _this4.fetchGlobalValue();
        }, 50);
      } else {
        this.onValueTypeChange();
      }

      this.$el.addClass(this.getClassNames().controlGlobal);
    }
  }, {
    key: "toggleGlobalPopover",
    value: function toggleGlobalPopover() {
      if (this.popover.isVisible()) {
        this.popover.hide();
      } else {
        this.popover.show();
        this.setCurrentActivePreviewItem();
      }
    }
  }, {
    key: "buildGlobalPopover",
    value: function buildGlobalPopover() {
      var _this5 = this;

      var classes = this.getClassNames(),
          $popover = jQuery('<div>', {
        class: classes.globalPopoverContainer
      }),
          $popoverTitle = jQuery('<div>', {
        class: classes.globalPopoverTitle
      }).html('<div class="' + classes.globalPopoverInfo + '"><i class="eicon-info-circle"></i></div><span class="' + classes.globalPopoverTitleText + '">' + this.getOption('popoverTitle') + '</span>'),
          $manageGlobalsLink = jQuery('<div>', {
        class: classes.manageButton
      }).html('<i class="eicon-cog"></i>');
      $popoverTitle.append($manageGlobalsLink);
      $popover.append($popoverTitle);
      this.manageButtonTooltipText = this.getOption('manageButtonText');
      $manageGlobalsLink.tipsy({
        title: function title() {
          return _this5.manageButtonTooltipText;
        },
        offset: 3,
        gravity: function gravity() {
          return 's';
        }
      });
      return $popover;
    }
  }, {
    key: "printGlobalToggleButton",
    value: function printGlobalToggleButton() {
      var _this6 = this;

      var $globalToggleButton = jQuery('<div>', {
        class: this.getClassNames().popoverToggle + ' elementor-control-unit-1'
      }),
          $globalPopoverToggleIcon = jQuery('<i>', {
        class: 'eicon-globe'
      });
      $globalToggleButton.append($globalPopoverToggleIcon);
      this.$el.find('.elementor-control-input-wrapper').prepend($globalToggleButton);
      this.ui.globalPopoverToggle = $globalToggleButton;
      this.ui.globalPopoverToggleIcon = $globalPopoverToggleIcon; // Add tooltip to the Global Popover toggle button, displaying the current Global Name / 'Default' / 'Custom'.

      this.ui.globalPopoverToggleIcon.tipsy({
        title: function title() {
          return _this6.globalName;
        },
        offset: 7,
        gravity: function gravity() {
          return 's';
        }
      });
    }
  }, {
    key: "initGlobalPopover",
    value: function initGlobalPopover() {
      var _this7 = this;

      this.popover = elementorCommon.dialogsManager.createWidget('simple', {
        className: this.getClassNames().popover,
        message: this.buildGlobalPopover(),
        effects: {
          show: 'show',
          hide: 'hide'
        },
        hide: {
          onOutsideClick: false
        },
        position: {
          my: "center top",
          at: "center bottom+5",
          of: this.ui.controlContent,
          autoRefresh: true
        }
      }); // Render the list of globals and append them to the Globals popover.

      this.view.getGlobalsList().then(function (globalsList) {
        _this7.addGlobalsListToPopover(globalsList);

        _this7.registerUiElementsAndEvents();
      });
      this.createGlobalInfoTooltip();
    }
  }, {
    key: "addGlobalsListToPopover",
    value: function addGlobalsListToPopover(globalsList) {
      var $globalsList = this.view.buildGlobalsList(globalsList);
      this.popover.getElements('widget').find(".".concat(this.getClassNames().globalPopoverTitle)).after($globalsList);
    }
  }, {
    key: "registerUiElementsAndEvents",
    value: function registerUiElementsAndEvents() {
      // Instead of ui()
      this.registerUiElements(); // Instead of events()

      this.registerEvents();
    } // This method is not called directly, but triggered by Marionette's .triggerMethod(),
    // in the onAddGlobalButtonClick() method in the color and typography global controls.

  }, {
    key: "onAddGlobalToList",
    value: function onAddGlobalToList($confirmMessage) {
      var _this8 = this;

      var classes = this.getClassNames();
      this.confirmNewGlobalModal = elementorCommon.dialogsManager.createWidget('confirm', {
        className: classes.confirmAddNewGlobal,
        headerMessage: this.getOption('newGlobalConfirmTitle'),
        message: $confirmMessage,
        strings: {
          confirm: elementor.translate('create'),
          cancel: elementor.translate('cancel')
        },
        hide: {
          onBackgroundClick: false
        },
        onConfirm: function onConfirm() {
          return _this8.onConfirmNewGlobal();
        },
        onShow: function onShow() {
          // Put focus on the naming input.
          var modalWidget = _this8.confirmNewGlobalModal.getElements('widget');

          _this8.ui.globalNameInput = modalWidget.find('input').focus();
          _this8.ui.confirmMessageText = modalWidget.find(classes.confirmMessageText);

          _this8.ui.globalNameInput.on('input', function () {
            return _this8.onAddGlobalConfirmInputChange();
          });
        }
      });
      this.confirmNewGlobalModal.show();
    }
  }, {
    key: "onAddGlobalConfirmInputChange",
    value: function onAddGlobalConfirmInputChange() {
      if (!this.view.globalsList) {
        return;
      }

      var messageContent;

      for (var _i = 0, _Object$values = (0, _values.default)(this.view.globalsList); _i < _Object$values.length; _i++) {
        var globalValue = _Object$values[_i];

        if (this.ui.globalNameInput.val() === globalValue.title) {
          messageContent = this.view.getNameAlreadyExistsMessage();
          break;
        } else {
          messageContent = this.view.getConfirmTextMessage();
        }
      }

      this.ui.confirmMessageText.html(messageContent);
    }
  }, {
    key: "onConfirmNewGlobal",
    value: function onConfirmNewGlobal() {
      var _this9 = this;

      var globalMeta = this.view.getGlobalMeta();
      globalMeta.title = this.ui.globalNameInput.val();
      this.createNewGlobal(globalMeta).then(function (result) {
        var $globalPreview = _this9.view.createGlobalItemMarkup(result.data);

        _this9.ui.globalPreviewsContainer.append($globalPreview);
      });
    }
  }, {
    key: "createNewGlobal",
    value: function createNewGlobal(globalMeta) {
      var _this10 = this;

      return $e.run(globalMeta.commandName + '/create', {
        container: this.view.container,
        setting: globalMeta.key,
        // group control name
        title: globalMeta.title
      }).then(function (result) {
        _this10.applySavedGlobalValue(result.data.id);

        return result;
      });
    }
  }, {
    key: "setGlobalValue",
    value: function setGlobalValue(globalId) {
      var command = '';
      var settings = {};

      if (this.view.getGlobalKey()) {
        // If a global setting is already active, switch them without disabling globals.
        command = 'document/globals/settings';
      } else {
        // If the active setting is NOT a global, enable globals and apply the selected global.
        command = 'document/globals/enable';
      } // colors / typography


      settings[this.view.model.get('name')] = this.view.getGlobalCommand() + '?id=' + globalId; // Trigger async render.

      $e.run(command, {
        container: this.view.options.container,
        settings: settings
      });
    } // The unset method is triggered from the controls via triggerMethod.

  }, {
    key: "onUnsetGlobalValue",
    value: function onUnsetGlobalValue() {
      var _this11 = this;

      var globalMeta = this.view.getGlobalMeta();
      $e.run('document/globals/disable', {
        container: this.view.container,
        settings: (0, _defineProperty2.default)({}, globalMeta.key, ''),
        options: {
          restore: true
        }
      }).then(function () {
        _this11.onValueTypeChange();

        _this11.view.globalValue = null;

        _this11.resetActivePreviewItem();
      });
    }
  }, {
    key: "onUnlinkGlobalDefault",
    value: function onUnlinkGlobalDefault() {
      var _this12 = this;

      var globalMeta = this.view.getGlobalMeta();
      $e.run('document/globals/unlink', {
        container: this.view.container,
        globalValue: this.view.model.get('global').default,
        setting: globalMeta.key,
        options: {
          external: true
        }
      }).then(function () {
        _this12.onValueTypeChange();

        _this12.view.globalValue = null;

        _this12.resetActivePreviewItem();
      });
    }
  }, {
    key: "createGlobalInfoTooltip",
    value: function createGlobalInfoTooltip() {
      var _this13 = this;

      var classes = this.getClassNames(),
          $infoIcon = this.popover.getElements('widget').find(".".concat(classes.globalPopoverInfo));
      this.globalInfoTooltip = elementorCommon.dialogsManager.createWidget('simple', {
        className: classes.globalPopoverInfoTooltip,
        message: this.getOption('tooltipText'),
        effects: {
          show: 'show',
          hide: 'hide'
        },
        position: {
          my: "left bottom",
          at: "left top+9",
          of: this.popover.getElements('widget'),
          autoRefresh: true
        }
      });
      $infoIcon.on({
        mouseenter: function mouseenter() {
          return _this13.globalInfoTooltip.show();
        },
        mouseleave: function mouseleave() {
          return _this13.globalInfoTooltip.hide();
        }
      });
    }
  }]);
  return GlobalControlSelect;
}(Marionette.Behavior);

exports.default = GlobalControlSelect;

/***/ }),
/* 514 */
/***/ (function(module, exports, __webpack_require__) {

"use strict";


var _interopRequireDefault = __webpack_require__(0);

var _Object$defineProperty = __webpack_require__(1);

_Object$defineProperty(exports, "__esModule", {
  value: true
});

exports.default = void 0;

var _classCallCheck2 = _interopRequireDefault(__webpack_require__(2));

var _createClass2 = _interopRequireDefault(__webpack_require__(3));

var _assertThisInitialized2 = _interopRequireDefault(__webpack_require__(49));

var _inherits2 = _interopRequireDefault(__webpack_require__(4));

var _createSuper2 = _interopRequireDefault(__webpack_require__(5));

var _component = _interopRequireDefault(__webpack_require__(515));

var _layout = _interopRequireDefault(__webpack_require__(520));

var BaseRegion = __webpack_require__(371);

var _default = /*#__PURE__*/function (_BaseRegion) {
  (0, _inherits2.default)(_default, _BaseRegion);

  var _super = (0, _createSuper2.default)(_default);

  function _default(options) {
    var _this;

    (0, _classCallCheck2.default)(this, _default);
    _this = _super.call(this, options);
    _this.component = $e.components.register(new _component.default({
      manager: (0, _assertThisInitialized2.default)(_this)
    }));
    _this.isDocked = false;
    _this.indicators = {
      customPosition: {
        title: elementor.translate('custom_positioning'),
        icon: 'cursor-move',
        settingKeys: ['_position', '_element_width'],
        section: '_section_position'
      }
    };
    _this.ensurePosition = _this.ensurePosition.bind((0, _assertThisInitialized2.default)(_this));

    _this.listenTo(elementor.channels.dataEditMode, 'switch', _this.onEditModeSwitched); // TODO: Move to hook on 'editor/documents/load'.


    elementor.on('document:loaded', _this.onDocumentLoaded.bind((0, _assertThisInitialized2.default)(_this)));
    elementor.on('document:unloaded', _this.onDocumentUnloaded.bind((0, _assertThisInitialized2.default)(_this)));
    return _this;
  }

  (0, _createClass2.default)(_default, [{
    key: "getStorageKey",
    value: function getStorageKey() {
      return 'navigator';
    }
  }, {
    key: "getDefaultStorage",
    value: function getDefaultStorage() {
      return {
        visible: false,
        size: {
          width: '',
          height: '',
          top: '',
          bottom: '',
          right: '',
          left: ''
        }
      };
    }
  }, {
    key: "getLayout",
    value: function getLayout() {
      return this.currentView;
    }
  }, {
    key: "getDraggableOptions",
    value: function getDraggableOptions() {
      return {
        iframeFix: true,
        handle: '#elementor-navigator__header',
        drag: this.onDrag.bind(this),
        stop: this.onDragStop.bind(this)
      };
    }
  }, {
    key: "getResizableOptions",
    value: function getResizableOptions() {
      var _this2 = this;

      return {
        handles: 'all',
        containment: 'document',
        minWidth: 150,
        maxWidth: 500,
        minHeight: 240,
        start: function start() {
          elementor.$previewWrapper.addClass('ui-resizable-resizing');
        },
        stop: function stop() {
          elementor.$previewWrapper.removeClass('ui-resizable-resizing');

          if (_this2.isDocked) {
            _this2.storage.size.width = elementor.helpers.getElementInlineStyle(_this2.$el, ['width']).width;
            elementorCommon.storage.set('navigator', _this2.storage);
          } else {
            _this2.saveSize();
          }
        }
      };
    }
  }, {
    key: "initLayout",
    value: function initLayout() {
      this.show(new _layout.default());
      this.$el.draggable(this.getDraggableOptions());
      this.$el.resizable(this.getResizableOptions());
    }
  }, {
    key: "open",
    value: function open(model) {
      this.$el.show();

      if (this.storage.docked) {
        this.dock();
        this.setDockedSize();
      } else {
        this.setSize();
      }

      if (model) {
        model.trigger('request:edit');
      }

      this.saveStorage('visible', true);
      this.ensurePosition();
      elementorCommon.elements.$window.on('resize', this.ensurePosition);
    }
  }, {
    key: "close",
    value: function close(silent) {
      this.$el.hide();

      if (this.isDocked) {
        this.undock(true);
      }

      if (!silent) {
        this.saveStorage('visible', false);
      }

      if (this.$el.resizable('instance')) {
        this.$el.resizable('destroy');
      }

      elementorCommon.elements.$window.off('resize', this.ensurePosition);
    }
  }, {
    key: "isOpen",
    value: function isOpen() {
      return this.$el.is(':visible');
    }
  }, {
    key: "dock",
    value: function dock() {
      elementorCommon.elements.$body.addClass('elementor-navigator-docked');
      var side = elementorCommon.config.isRTL ? 'left' : 'right',
          resizableOptions = this.getResizableOptions();
      this.$el.css({
        height: '',
        top: '',
        bottom: '',
        left: '',
        right: ''
      });
      elementor.$previewWrapper.css(side, this.storage.size.width);

      if (this.$el.resizable('instance')) {
        this.$el.resizable('destroy');
      }

      resizableOptions.handles = elementorCommon.config.isRTL ? 'e' : 'w';

      resizableOptions.resize = function (event, ui) {
        elementor.$previewWrapper.css(side, ui.size.width);
      };

      this.$el.resizable(resizableOptions);
      this.isDocked = true;
      this.saveStorage('docked', true);
    }
  }, {
    key: "undock",
    value: function undock(silent) {
      elementorCommon.elements.$body.removeClass('elementor-navigator-docked');
      elementor.$previewWrapper.css(elementorCommon.config.isRTL ? 'left' : 'right', '');
      this.setSize();

      if (this.$el.resizable('instance')) {
        this.$el.resizable('destroy');
        this.$el.resizable(this.getResizableOptions());
      }

      this.isDocked = false;

      if (!silent) {
        this.saveStorage('docked', false);
      }
    }
  }, {
    key: "setSize",
    value: function setSize() {
      if (this.storage.size) {
        this.$el.css(this.storage.size);
      }
    }
  }, {
    key: "setDockedSize",
    value: function setDockedSize() {
      this.$el.css('width', this.storage.size.width);
    }
  }, {
    key: "ensurePosition",
    value: function ensurePosition() {
      if (this.isDocked) {
        return;
      }

      var offset = this.$el.offset();

      if (offset.left > innerWidth) {
        this.$el.css({
          left: '',
          right: ''
        });
      }

      if (offset.top > innerHeight) {
        this.$el.css({
          top: '',
          bottom: ''
        });
      }
    }
  }, {
    key: "onDrag",
    value: function onDrag(event, ui) {
      if (this.isDocked) {
        if (ui.position.left === ui.originalPosition.left) {
          if (ui.position.top !== ui.originalPosition.top) {
            return false;
          }
        } else {
          this.undock();
        }

        return;
      }

      if (0 > ui.position.top) {
        ui.position.top = 0;
      }

      var isOutOfLeft = 0 > ui.position.left,
          isOutOfRight = ui.position.left + this.el.offsetWidth > innerWidth;

      if (elementorCommon.config.isRTL) {
        if (isOutOfRight) {
          ui.position.left = innerWidth - this.el.offsetWidth;
        }
      } else if (isOutOfLeft) {
        ui.position.left = 0;
      }

      elementorCommon.elements.$body.toggleClass('elementor-navigator--dock-hint', elementorCommon.config.isRTL ? isOutOfLeft : isOutOfRight);
    }
  }, {
    key: "onDragStop",
    value: function onDragStop(event, ui) {
      if (this.isDocked) {
        return;
      }

      this.saveSize();
      var elementRight = ui.position.left + this.el.offsetWidth;

      if (0 > ui.position.left || elementRight > innerWidth) {
        this.dock();
      }

      elementorCommon.elements.$body.removeClass('elementor-navigator--dock-hint');
    }
  }, {
    key: "onEditModeSwitched",
    value: function onEditModeSwitched(activeMode) {
      if ('edit' === activeMode && this.storage.visible) {
        this.open();
      } else {
        this.close(true);
      }
    }
  }, {
    key: "onDocumentLoaded",
    value: function onDocumentLoaded(document) {
      if (document.config.panel.has_elements) {
        this.initLayout();

        if (this.storage.visible) {
          $e.route('navigator');
        }
      }
    }
  }, {
    key: "onDocumentUnloaded",
    value: function onDocumentUnloaded() {
      if (this.component.isOpen) {
        this.component.close(true);
      }
    }
  }]);
  return _default;
}(BaseRegion);

exports.default = _default;

/***/ }),
/* 515 */
/***/ (function(module, exports, __webpack_require__) {

"use strict";


var _interopRequireWildcard = __webpack_require__(36);

var _interopRequireDefault = __webpack_require__(0);

var _Object$defineProperty = __webpack_require__(1);

_Object$defineProperty(exports, "__esModule", {
  value: true
});

exports.default = void 0;

var _classCallCheck2 = _interopRequireDefault(__webpack_require__(2));

var _createClass2 = _interopRequireDefault(__webpack_require__(3));

var _get2 = _interopRequireDefault(__webpack_require__(26));

var _getPrototypeOf2 = _interopRequireDefault(__webpack_require__(16));

var _inherits2 = _interopRequireDefault(__webpack_require__(4));

var _createSuper2 = _interopRequireDefault(__webpack_require__(5));

var _componentBase = _interopRequireDefault(__webpack_require__(85));

var commands = _interopRequireWildcard(__webpack_require__(516));

var Component = /*#__PURE__*/function (_ComponentBase) {
  (0, _inherits2.default)(Component, _ComponentBase);

  var _super = (0, _createSuper2.default)(Component);

  function Component() {
    (0, _classCallCheck2.default)(this, Component);
    return _super.apply(this, arguments);
  }

  (0, _createClass2.default)(Component, [{
    key: "getNamespace",
    value: function getNamespace() {
      return 'navigator';
    }
  }, {
    key: "defaultRoutes",
    value: function defaultRoutes() {
      return {
        '': function _() {}
      };
    }
  }, {
    key: "defaultCommands",
    value: function defaultCommands() {
      return this.importCommands(commands);
    }
  }, {
    key: "defaultShortcuts",
    value: function defaultShortcuts() {
      return {
        toggle: {
          keys: 'ctrl+i',
          dependency: function dependency() {
            return elementor.getPreviewContainer().isEditable();
          }
        }
      };
    }
  }, {
    key: "open",
    value: function open(args) {
      var _args$model = args.model,
          model = _args$model === void 0 ? false : _args$model;
      this.manager.open(model);
      return true;
    }
  }, {
    key: "close",
    value: function close(silent) {
      if (!(0, _get2.default)((0, _getPrototypeOf2.default)(Component.prototype), "close", this).call(this)) {
        return false;
      }

      this.manager.close(silent);
      return true;
    }
  }]);
  return Component;
}(_componentBase.default);

exports.default = Component;

/***/ }),
/* 516 */
/***/ (function(module, exports, __webpack_require__) {

"use strict";


var _Object$defineProperty = __webpack_require__(1);

_Object$defineProperty(exports, "__esModule", {
  value: true
});

_Object$defineProperty(exports, "Close", {
  enumerable: true,
  get: function get() {
    return _close.Close;
  }
});

_Object$defineProperty(exports, "Open", {
  enumerable: true,
  get: function get() {
    return _open.Open;
  }
});

_Object$defineProperty(exports, "Toggle", {
  enumerable: true,
  get: function get() {
    return _toggle.Toggle;
  }
});

var _close = __webpack_require__(517);

var _open = __webpack_require__(518);

var _toggle = __webpack_require__(519);

/***/ }),
/* 517 */
/***/ (function(module, exports, __webpack_require__) {

"use strict";


var _interopRequireDefault = __webpack_require__(0);

var _Object$defineProperty = __webpack_require__(1);

_Object$defineProperty(exports, "__esModule", {
  value: true
});

exports.default = exports.Close = void 0;

var _classCallCheck2 = _interopRequireDefault(__webpack_require__(2));

var _createClass2 = _interopRequireDefault(__webpack_require__(3));

var _inherits2 = _interopRequireDefault(__webpack_require__(4));

var _createSuper2 = _interopRequireDefault(__webpack_require__(5));

var _commandBase = _interopRequireDefault(__webpack_require__(21));

var Close = /*#__PURE__*/function (_CommandBase) {
  (0, _inherits2.default)(Close, _CommandBase);

  var _super = (0, _createSuper2.default)(Close);

  function Close() {
    (0, _classCallCheck2.default)(this, Close);
    return _super.apply(this, arguments);
  }

  (0, _createClass2.default)(Close, [{
    key: "apply",
    value: function apply() {
      return this.component.close();
    }
  }]);
  return Close;
}(_commandBase.default);

exports.Close = Close;
var _default = Close;
exports.default = _default;

/***/ }),
/* 518 */
/***/ (function(module, exports, __webpack_require__) {

"use strict";


var _interopRequireDefault = __webpack_require__(0);

var _Object$defineProperty = __webpack_require__(1);

_Object$defineProperty(exports, "__esModule", {
  value: true
});

exports.default = exports.Open = void 0;

var _classCallCheck2 = _interopRequireDefault(__webpack_require__(2));

var _createClass2 = _interopRequireDefault(__webpack_require__(3));

var _inherits2 = _interopRequireDefault(__webpack_require__(4));

var _createSuper2 = _interopRequireDefault(__webpack_require__(5));

var _commandBase = _interopRequireDefault(__webpack_require__(21));

var Open = /*#__PURE__*/function (_CommandBase) {
  (0, _inherits2.default)(Open, _CommandBase);

  var _super = (0, _createSuper2.default)(Open);

  function Open() {
    (0, _classCallCheck2.default)(this, Open);
    return _super.apply(this, arguments);
  }

  (0, _createClass2.default)(Open, [{
    key: "apply",
    value: function apply() {
      $e.route(this.component.getNamespace());
    }
  }]);
  return Open;
}(_commandBase.default);

exports.Open = Open;
var _default = Open;
exports.default = _default;

/***/ }),
/* 519 */
/***/ (function(module, exports, __webpack_require__) {

"use strict";


var _interopRequireDefault = __webpack_require__(0);

var _Object$defineProperty = __webpack_require__(1);

_Object$defineProperty(exports, "__esModule", {
  value: true
});

exports.default = exports.Toggle = void 0;

var _classCallCheck2 = _interopRequireDefault(__webpack_require__(2));

var _createClass2 = _interopRequireDefault(__webpack_require__(3));

var _inherits2 = _interopRequireDefault(__webpack_require__(4));

var _createSuper2 = _interopRequireDefault(__webpack_require__(5));

var _commandBase = _interopRequireDefault(__webpack_require__(21));

var Toggle = /*#__PURE__*/function (_CommandBase) {
  (0, _inherits2.default)(Toggle, _CommandBase);

  var _super = (0, _createSuper2.default)(Toggle);

  function Toggle() {
    (0, _classCallCheck2.default)(this, Toggle);
    return _super.apply(this, arguments);
  }

  (0, _createClass2.default)(Toggle, [{
    key: "apply",
    value: function apply() {
      if (this.component.isOpen) {
        $e.run('navigator/close');
      } else {
        $e.run('navigator/open');
      }
    }
  }]);
  return Toggle;
}(_commandBase.default);

exports.Toggle = Toggle;
var _default = Toggle;
exports.default = _default;

/***/ }),
/* 520 */
/***/ (function(module, exports, __webpack_require__) {

"use strict";


var _interopRequireDefault = __webpack_require__(0);

var _Object$defineProperty = __webpack_require__(1);

_Object$defineProperty(exports, "__esModule", {
  value: true
});

exports.default = void 0;

var _classCallCheck2 = _interopRequireDefault(__webpack_require__(2));

var _createClass2 = _interopRequireDefault(__webpack_require__(3));

var _inherits2 = _interopRequireDefault(__webpack_require__(4));

var _createSuper2 = _interopRequireDefault(__webpack_require__(5));

var _element = _interopRequireDefault(__webpack_require__(521));

var _default = /*#__PURE__*/function (_Marionette$LayoutVie) {
  (0, _inherits2.default)(_default, _Marionette$LayoutVie);

  var _super = (0, _createSuper2.default)(_default);

  function _default() {
    (0, _classCallCheck2.default)(this, _default);
    return _super.apply(this, arguments);
  }

  (0, _createClass2.default)(_default, [{
    key: "getTemplate",
    value: function getTemplate() {
      return '#tmpl-elementor-navigator';
    }
  }, {
    key: "id",
    value: function id() {
      return 'elementor-navigator__inner';
    }
  }, {
    key: "ui",
    value: function ui() {
      return {
        toggleAll: '#elementor-navigator__toggle-all',
        close: '#elementor-navigator__close'
      };
    }
  }, {
    key: "events",
    value: function events() {
      return {
        'click @ui.toggleAll': 'toggleAll',
        'click @ui.close': 'onCloseClick'
      };
    }
  }, {
    key: "regions",
    value: function regions() {
      return {
        elements: '#elementor-navigator__elements'
      };
    }
  }, {
    key: "toggleAll",
    value: function toggleAll() {
      var state = 'expand' === this.ui.toggleAll.data('elementor-action'),
          classes = ['eicon-collapse', 'eicon-expand'];
      this.ui.toggleAll.data('elementor-action', state ? 'collapse' : 'expand').removeClass(classes[+state]).addClass(classes[+!state]);
      this.elements.currentView.recursiveChildInvoke('toggleList', state);
    }
  }, {
    key: "activateElementsMouseInteraction",
    value: function activateElementsMouseInteraction() {
      this.elements.currentView.recursiveChildInvoke('activateMouseInteraction');
    }
  }, {
    key: "deactivateElementsMouseInteraction",
    value: function deactivateElementsMouseInteraction() {
      this.elements.currentView.recursiveChildInvoke('deactivateMouseInteraction');
    }
  }, {
    key: "onShow",
    value: function onShow() {
      this.elements.show(new _element.default({
        model: elementor.elementsModel
      }));
    }
  }, {
    key: "onCloseClick",
    value: function onCloseClick() {
      $e.components.get('navigator').close();
    }
  }]);
  return _default;
}(Marionette.LayoutView);

exports.default = _default;

/***/ }),
/* 521 */
/***/ (function(module, exports, __webpack_require__) {

"use strict";


var _interopRequireDefault = __webpack_require__(0);

var _Object$defineProperty = __webpack_require__(1);

_Object$defineProperty(exports, "__esModule", {
  value: true
});

exports.default = void 0;

__webpack_require__(135);

__webpack_require__(155);

var _keys = _interopRequireDefault(__webpack_require__(23));

var _values = _interopRequireDefault(__webpack_require__(55));

var _classCallCheck2 = _interopRequireDefault(__webpack_require__(2));

var _createClass2 = _interopRequireDefault(__webpack_require__(3));

var _inherits2 = _interopRequireDefault(__webpack_require__(4));

var _createSuper2 = _interopRequireDefault(__webpack_require__(5));

var _elementEmpty = _interopRequireDefault(__webpack_require__(522));

var _rootEmpty = _interopRequireDefault(__webpack_require__(523));

var _helper = _interopRequireDefault(__webpack_require__(215));

var _default = /*#__PURE__*/function (_Marionette$Composite) {
  (0, _inherits2.default)(_default, _Marionette$Composite);

  var _super = (0, _createSuper2.default)(_default);

  function _default() {
    (0, _classCallCheck2.default)(this, _default);
    return _super.apply(this, arguments);
  }

  (0, _createClass2.default)(_default, [{
    key: "getTemplate",
    value: function getTemplate() {
      return '#tmpl-elementor-navigator__elements';
    }
  }, {
    key: "ui",
    value: function ui() {
      return {
        item: '> .elementor-navigator__item',
        title: '> .elementor-navigator__item .elementor-navigator__element__title__text',
        toggle: '> .elementor-navigator__item > .elementor-navigator__element__toggle',
        toggleList: '> .elementor-navigator__item > .elementor-navigator__element__list-toggle',
        indicators: '> .elementor-navigator__item > .elementor-navigator__element__indicators',
        indicator: '> .elementor-navigator__item > .elementor-navigator__element__indicators > .elementor-navigator__element__indicator',
        elements: '> .elementor-navigator__elements'
      };
    }
  }, {
    key: "events",
    value: function events() {
      return {
        contextmenu: 'onContextMenu',
        'click @ui.item': 'onItemClick',
        'click @ui.toggle': 'onToggleClick',
        'click @ui.toggleList': 'onToggleListClick',
        'click @ui.indicator': 'onIndicatorClick',
        'dblclick @ui.title': 'onTitleDoubleClick',
        'keydown @ui.title': 'onTitleKeyDown',
        'paste @ui.title': 'onTitlePaste',
        'sortstart @ui.elements': 'onSortStart',
        'sortover @ui.elements': 'onSortOver',
        'sortout @ui.elements': 'onSortOut',
        'sortstop @ui.elements': 'onSortStop',
        'sortupdate @ui.elements': 'onSortUpdate',
        'sortreceive @ui.elements': 'onSortReceive'
      };
    }
  }, {
    key: "getEmptyView",
    value: function getEmptyView() {
      if (this.isRoot()) {
        return _rootEmpty.default;
      }

      if (this.hasChildren()) {
        return _elementEmpty.default;
      }

      return null;
    }
  }, {
    key: "childViewOptions",
    value: function childViewOptions() {
      return {
        indent: this.getIndent() + 10
      };
    }
  }, {
    key: "className",
    value: function className() {
      var elType = this.model.get('elType');
      var classes = 'elementor-navigator__element';

      if (elType) {
        classes += ' elementor-navigator__element-' + elType;
      }

      if (this.hasChildren()) {
        classes += ' elementor-navigator__element--has-children';
      }

      return classes;
    }
  }, {
    key: "attributes",
    value: function attributes() {
      return {
        'data-id': this.model.id,
        'data-model-cid': this.model.cid
      };
    }
  }, {
    key: "templateHelpers",
    value: function templateHelpers() {
      var helpers = {};

      if (!this.isRoot()) {
        helpers.title = this.model.getTitle();
        helpers.icon = 'section' === this.model.get('elType') ? '' : this.model.getIcon();
      }

      return helpers;
    }
  }, {
    key: "initialize",
    value: function initialize() {
      this.collection = this.model.get('elements');
      this.childViewContainer = '.elementor-navigator__elements';
      this.listenTo(this.model, 'request:edit', this.onEditRequest).listenTo(this.model, 'change', this.onModelChange).listenTo(this.model.get('settings'), 'change', this.onModelSettingsChange);
    }
  }, {
    key: "getIndent",
    value: function getIndent() {
      return this.getOption('indent') || 0;
    }
  }, {
    key: "isRoot",
    value: function isRoot() {
      return !this.model.get('elType');
    }
  }, {
    key: "hasChildren",
    value: function hasChildren() {
      return 'widget' !== this.model.get('elType');
    }
  }, {
    key: "toggleList",
    value: function toggleList(state, callback) {
      if (!this.hasChildren() || this.isRoot()) {
        return;
      }

      var isActive = this.ui.item.hasClass('elementor-active');

      if (isActive === state) {
        return;
      }

      this.ui.item.toggleClass('elementor-active', state);
      var slideMethod = 'slideToggle';

      if (undefined !== state) {
        slideMethod = 'slide' + (state ? 'Down' : 'Up');
      }

      this.ui.elements[slideMethod](300, callback);
    }
  }, {
    key: "toggleHiddenClass",
    value: function toggleHiddenClass() {
      this.$el.toggleClass('elementor-navigator__element--hidden', !!this.model.get('hidden'));
    }
  }, {
    key: "recursiveChildInvoke",
    value: function recursiveChildInvoke(method) {
      var _arguments = arguments,
          _this = this;

      for (var _len = arguments.length, restArgs = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {
        restArgs[_key - 1] = arguments[_key];
      }

      this[method].apply(this, restArgs);
      this.children.each(function (child) {
        if (!(child instanceof _this.constructor)) {
          return;
        }

        child.recursiveChildInvoke.apply(child, _arguments);
      });
    }
  }, {
    key: "recursiveParentInvoke",
    value: function recursiveParentInvoke(method) {
      for (var _len2 = arguments.length, restArgs = new Array(_len2 > 1 ? _len2 - 1 : 0), _key2 = 1; _key2 < _len2; _key2++) {
        restArgs[_key2 - 1] = arguments[_key2];
      }

      if (!(this._parent instanceof this.constructor)) {
        return;
      }

      this._parent[method].apply(this._parent, restArgs);

      this._parent.recursiveParentInvoke.apply(this._parent, arguments);
    }
  }, {
    key: "recursiveChildAgreement",
    value: function recursiveChildAgreement(method) {
      for (var _len3 = arguments.length, restArgs = new Array(_len3 > 1 ? _len3 - 1 : 0), _key3 = 1; _key3 < _len3; _key3++) {
        restArgs[_key3 - 1] = arguments[_key3];
      }

      if (!this[method].apply(this, restArgs)) {
        return false;
      }

      var hasAgreement = true;

      for (var _i = 0, _Object$values = (0, _values.default)(this.children._views); _i < _Object$values.length; _i++) {
        var child = _Object$values[_i];

        if (!(child instanceof this.constructor)) {
          continue;
        }

        if (!child.recursiveChildAgreement.apply(child, arguments)) {
          hasAgreement = false;
          break;
        }
      }

      return hasAgreement;
    }
  }, {
    key: "activateMouseInteraction",
    value: function activateMouseInteraction() {
      this.$el.on({
        mouseenter: this.onMouseEnter.bind(this),
        mouseleave: this.onMouseLeave.bind(this)
      });
    }
  }, {
    key: "deactivateMouseInteraction",
    value: function deactivateMouseInteraction() {
      this.$el.off('mouseenter mouseleave');
    }
  }, {
    key: "dragShouldBeIgnored",
    value: function dragShouldBeIgnored(draggedModel) {
      return !_helper.default.isValidChild(draggedModel, this.model);
    }
  }, {
    key: "addEditingClass",
    value: function addEditingClass() {
      this.ui.item.addClass('elementor-editing');
    }
  }, {
    key: "removeEditingClass",
    value: function removeEditingClass() {
      this.ui.item.removeClass('elementor-editing');
    }
  }, {
    key: "enterTitleEditing",
    value: function enterTitleEditing() {
      this.ui.title.attr('contenteditable', true).focus();
      document.execCommand('selectAll');
      elementor.addBackgroundClickListener('navigator', {
        ignore: this.ui.title,
        callback: this.exitTitleEditing.bind(this)
      });
    }
  }, {
    key: "exitTitleEditing",
    value: function exitTitleEditing() {
      this.ui.title.attr('contenteditable', false);
      var settingsModel = this.model.get('settings'),
          oldTitle = settingsModel.get('_title'),
          newTitle = this.ui.title.text().trim(); // When there isn't an old title and a new title, allow backbone to recognize the `set` as a change

      if (!oldTitle) {
        settingsModel.unset('_title', {
          silent: true
        });
      }

      settingsModel.set('_title', newTitle);
      elementor.removeBackgroundClickListener('navigator');
    }
  }, {
    key: "activateSortable",
    value: function activateSortable() {
      if (!elementor.userCan('design')) {
        return;
      }

      this.ui.elements.sortable({
        items: '> .elementor-navigator__element',
        placeholder: 'ui-sortable-placeholder',
        axis: 'y',
        forcePlaceholderSize: true,
        connectWith: '.elementor-navigator__element-' + this.model.get('elType') + ' ' + this.ui.elements.selector,
        cancel: '[contenteditable="true"]'
      });
    }
  }, {
    key: "renderIndicators",
    value: function renderIndicators() {
      var _this2 = this;

      var settings = this.model.get('settings').attributes;
      this.ui.indicators.empty();
      jQuery.each(elementor.navigator.indicators, function (indicatorName, indicatorSettings) {
        var isShouldBeIndicated = indicatorSettings.settingKeys.some(function (key) {
          return settings[key];
        });

        if (!isShouldBeIndicated) {
          return;
        }

        var $indicator = jQuery('<div>', {
          class: 'elementor-navigator__element__indicator',
          title: indicatorSettings.title
        }).attr('data-section', indicatorSettings.section).html("<i class=\"eicon-".concat(indicatorSettings.icon, "\"></i>"));

        _this2.ui.indicators.append($indicator); // Added delay of 500ms because the indicators bar has a CSS transition attribute of .5s


        $indicator.tipsy({
          delayIn: 300,
          gravity: 's'
        });
      });
    }
  }, {
    key: "onRender",
    value: function onRender() {
      this.activateSortable();

      if (this.isRoot()) {
        return;
      }

      this.ui.item.css('padding-' + (elementorCommon.config.isRTL ? 'right' : 'left'), this.getIndent());
      this.toggleHiddenClass();
      this.renderIndicators();
    }
  }, {
    key: "onModelChange",
    value: function onModelChange() {
      if (undefined !== this.model.changed.hidden) {
        this.toggleHiddenClass();
      }
    }
  }, {
    key: "onModelSettingsChange",
    value: function onModelSettingsChange(settingsModel) {
      var _this3 = this;

      if (undefined !== settingsModel.changed._title) {
        this.ui.title.text(this.model.getTitle());
      }

      jQuery.each(elementor.navigator.indicators, function (indicatorName, indicatorSettings) {
        if ((0, _keys.default)(settingsModel.changed).filter(function (key) {
          return indicatorSettings.settingKeys.includes(key);
        }).length) {
          _this3.renderIndicators();

          return false;
        }
      });
    }
  }, {
    key: "onItemClick",
    value: function onItemClick() {
      this.model.trigger('request:edit', {
        scrollIntoView: true
      });
    }
  }, {
    key: "onToggleClick",
    value: function onToggleClick(event) {
      event.stopPropagation();
      this.model.trigger('request:toggleVisibility');
    }
  }, {
    key: "onTitleDoubleClick",
    value: function onTitleDoubleClick() {
      this.enterTitleEditing();
    }
  }, {
    key: "onTitleKeyDown",
    value: function onTitleKeyDown(event) {
      var ENTER_KEY = 13;

      if (ENTER_KEY === event.which) {
        event.preventDefault();
        this.exitTitleEditing();
      }
    }
  }, {
    key: "onTitlePaste",
    value: function onTitlePaste(event) {
      event.preventDefault();
      document.execCommand('insertHTML', false, event.originalEvent.clipboardData.getData('text/plain'));
    }
  }, {
    key: "onToggleListClick",
    value: function onToggleListClick(event) {
      event.stopPropagation();
      this.toggleList();
    }
  }, {
    key: "onSortStart",
    value: function onSortStart(event, ui) {
      this.model.trigger('request:sort:start', event, ui);
      jQuery(ui.item).children('.elementor-navigator__item').trigger('click');
      elementor.navigator.getLayout().activateElementsMouseInteraction();
    }
  }, {
    key: "onSortStop",
    value: function onSortStop() {
      elementor.navigator.getLayout().deactivateElementsMouseInteraction();
    }
  }, {
    key: "onSortOver",
    value: function onSortOver(event) {
      event.stopPropagation();
      this.$el.addClass('elementor-dragging-on-child');
    }
  }, {
    key: "onSortOut",
    value: function onSortOut(event) {
      event.stopPropagation();
      this.$el.removeClass('elementor-dragging-on-child');
    }
  }, {
    key: "onSortUpdate",
    value: function onSortUpdate(event, ui) {
      event.stopPropagation();

      if (!this.ui.elements.is(ui.item.parent())) {
        return;
      }

      this.model.trigger('request:sort:update', ui);
    }
  }, {
    key: "onSortReceive",
    value: function onSortReceive(event, ui) {
      this.model.trigger('request:sort:receive', event, ui);
    }
  }, {
    key: "onMouseEnter",
    value: function onMouseEnter(event) {
      var _this4 = this;

      event.stopPropagation();
      var dragShouldBeIgnored = this.recursiveChildAgreement('dragShouldBeIgnored', elementor.channels.data.request('dragging:model'));

      if (dragShouldBeIgnored) {
        return;
      }

      this.autoExpandTimeout = setTimeout(function () {
        _this4.toggleList(true, function () {
          _this4.ui.elements.sortable('refreshPositions');
        });
      }, 500);
    }
  }, {
    key: "onMouseLeave",
    value: function onMouseLeave(event) {
      event.stopPropagation();
      clearTimeout(this.autoExpandTimeout);
    }
  }, {
    key: "onContextMenu",
    value: function onContextMenu(event) {
      this.model.trigger('request:contextmenu', event);
    }
  }, {
    key: "onEditRequest",
    value: function onEditRequest() {
      this.recursiveParentInvoke('toggleList', true);
      elementor.navigator.getLayout().elements.currentView.recursiveChildInvoke('removeEditingClass');
      this.addEditingClass();
      elementor.helpers.scrollToView(this.$el, 400, elementor.navigator.getLayout().elements.$el);
    }
  }, {
    key: "onIndicatorClick",
    value: function onIndicatorClick(event) {
      var section = event.currentTarget.dataset.section;
      setTimeout(function () {
        var editor = elementor.getPanelView().currentPageView,
            tab = editor.getControlModel(section).get('tab');
        editor.activateSection(section);
        editor.activateTab(tab);
        editor.render();
      });
    }
  }]);
  return _default;
}(Marionette.CompositeView);

exports.default = _default;

/***/ }),
/* 522 */
/***/ (function(module, exports, __webpack_require__) {

"use strict";


var _interopRequireDefault = __webpack_require__(0);

var _Object$defineProperty = __webpack_require__(1);

_Object$defineProperty(exports, "__esModule", {
  value: true
});

exports.default = void 0;

var _classCallCheck2 = _interopRequireDefault(__webpack_require__(2));

var _createClass2 = _interopRequireDefault(__webpack_require__(3));

var _inherits2 = _interopRequireDefault(__webpack_require__(4));

var _createSuper2 = _interopRequireDefault(__webpack_require__(5));

var _default = /*#__PURE__*/function (_Marionette$ItemView) {
  (0, _inherits2.default)(_default, _Marionette$ItemView);

  var _super = (0, _createSuper2.default)(_default);

  function _default() {
    (0, _classCallCheck2.default)(this, _default);
    return _super.apply(this, arguments);
  }

  (0, _createClass2.default)(_default, [{
    key: "getTemplate",
    value: function getTemplate() {
      return '#tmpl-elementor-navigator__elements--empty';
    }
  }, {
    key: "className",
    value: function className() {
      return 'elementor-empty-view';
    }
  }, {
    key: "onRendr",
    value: function onRendr() {
      this.$el.css('padding-' + (elementorCommon.config.isRTL ? 'right' : 'left'), this.getOption('indent'));
    }
  }]);
  return _default;
}(Marionette.ItemView);

exports.default = _default;

/***/ }),
/* 523 */
/***/ (function(module, exports, __webpack_require__) {

"use strict";


var _interopRequireDefault = __webpack_require__(0);

var _Object$defineProperty = __webpack_require__(1);

_Object$defineProperty(exports, "__esModule", {
  value: true
});

exports.default = void 0;

var _classCallCheck2 = _interopRequireDefault(__webpack_require__(2));

var _createClass2 = _interopRequireDefault(__webpack_require__(3));

var _inherits2 = _interopRequireDefault(__webpack_require__(4));

var _createSuper2 = _interopRequireDefault(__webpack_require__(5));

var _default = /*#__PURE__*/function (_Marionette$ItemView) {
  (0, _inherits2.default)(_default, _Marionette$ItemView);

  var _super = (0, _createSuper2.default)(_default);

  function _default() {
    (0, _classCallCheck2.default)(this, _default);
    return _super.apply(this, arguments);
  }

  (0, _createClass2.default)(_default, [{
    key: "getTemplate",
    value: function getTemplate() {
      return '#tmpl-elementor-navigator__root--empty';
    }
  }, {
    key: "className",
    value: function className() {
      return 'elementor-nerd-box';
    }
  }]);
  return _default;
}(Marionette.ItemView);

exports.default = _default;

/***/ }),
/* 524 */
/***/ (function(module, exports, __webpack_require__) {

"use strict";


var _interopRequireDefault = __webpack_require__(0);

var _Object$defineProperty = __webpack_require__(1);

_Object$defineProperty(exports, "__esModule", {
  value: true
});

exports.default = void 0;

var _classCallCheck2 = _interopRequireDefault(__webpack_require__(2));

var _createClass2 = _interopRequireDefault(__webpack_require__(3));

var _inherits2 = _interopRequireDefault(__webpack_require__(4));

var _createSuper2 = _interopRequireDefault(__webpack_require__(5));

var _default = /*#__PURE__*/function (_elementorModules$Vie) {
  (0, _inherits2.default)(_default, _elementorModules$Vie);

  var _super = (0, _createSuper2.default)(_default);

  function _default() {
    (0, _classCallCheck2.default)(this, _default);
    return _super.apply(this, arguments);
  }

  (0, _createClass2.default)(_default, [{
    key: "getDefaultSettings",
    value: function getDefaultSettings() {
      return {
        selectors: {
          notice: '#elementor-notice-bar',
          close: '#elementor-notice-bar__close'
        }
      };
    }
  }, {
    key: "getDefaultElements",
    value: function getDefaultElements() {
      var settings = this.getSettings();
      return {
        $notice: jQuery(settings.selectors.notice),
        $close: jQuery(settings.selectors.close)
      };
    }
  }, {
    key: "bindEvents",
    value: function bindEvents() {
      this.elements.$close.on('click', this.onCloseClick.bind(this));
    }
  }, {
    key: "onCloseClick",
    value: function onCloseClick() {
      this.elements.$notice.slideUp();
      elementorCommon.ajax.addRequest('notice_bar_dismiss');
    }
  }]);
  return _default;
}(elementorModules.ViewModule);

exports.default = _default;

/***/ }),
/* 525 */
/***/ (function(module, exports, __webpack_require__) {

"use strict";


var _interopRequireDefault = __webpack_require__(0);

var _independent = _interopRequireDefault(__webpack_require__(526));

var _rightClickIntroduction = _interopRequireDefault(__webpack_require__(527));

var _helper = _interopRequireDefault(__webpack_require__(215));

var BaseSectionsContainerView = __webpack_require__(528);

var Preview = BaseSectionsContainerView.extend({
  getChildViewContainer: function getChildViewContainer() {
    if (!this.$childViewContainer) {
      this.$childViewContainer = jQuery('<div>', {
        class: 'elementor-section-wrap'
      });

      if (elementor.config.legacyMode.elementWrappers) {
        var inner = jQuery('<div>', {
          class: 'elementor-inner'
        });
        inner.append(this.$childViewContainer);
        this.$el.prepend(inner);
      } else {
        this.$el.prepend(this.$childViewContainer);
      }
    }

    return this.$childViewContainer;
  },
  behaviors: function behaviors() {
    var parentBehaviors = BaseSectionsContainerView.prototype.behaviors.apply(this, arguments),
        behaviors = {
      contextMenu: {
        behaviorClass: __webpack_require__(273),
        groups: this.getContextMenuGroups()
      }
    }; // TODO: the `2` check is for BC reasons

    if (!elementor.config.user.introduction.rightClick && !elementor.config.user.introduction[2]) {
      behaviors.introduction = {
        behaviorClass: _rightClickIntroduction.default
      };
    }

    return jQuery.extend(parentBehaviors, behaviors);
  },
  getContainer: function getContainer() {
    return elementor.settings.page.getEditedView().getContainer();
  },
  getContextMenuGroups: function getContextMenuGroups() {
    var _this = this;

    var hasContent = function hasContent() {
      return elementor.elements.length > 0;
    };

    return [{
      name: 'paste',
      actions: [{
        name: 'paste',
        title: elementor.translate('paste'),
        isEnabled: function isEnabled() {
          return _helper.default.isPasteEnabled(_this.getContainer());
        },
        callback: function callback(at) {
          return $e.run('document/ui/paste', {
            container: _this.getContainer(),
            options: {
              at: at,
              rebuild: true
            }
          });
        }
      }]
    }, {
      name: 'content',
      actions: [{
        name: 'copy_all_content',
        title: elementor.translate('copy_all_content'),
        isEnabled: hasContent,
        callback: function callback() {
          return $e.run('document/elements/copy-all');
        }
      }, {
        name: 'delete_all_content',
        title: elementor.translate('delete_all_content'),
        isEnabled: hasContent,
        callback: function callback() {
          return $e.run('document/elements/empty');
        }
      }]
    }];
  },
  onRender: function onRender() {
    if (!elementor.userCan('design')) {
      return;
    }

    var addNewSectionView = new _independent.default();
    addNewSectionView.render();
    this.$el.append(addNewSectionView.$el);
  }
});
module.exports = Preview;

/***/ }),
/* 526 */
/***/ (function(module, exports, __webpack_require__) {

"use strict";


var _interopRequireDefault = __webpack_require__(0);

var _Object$defineProperty = __webpack_require__(1);

_Object$defineProperty(exports, "__esModule", {
  value: true
});

exports.default = void 0;

var _classCallCheck2 = _interopRequireDefault(__webpack_require__(2));

var _createClass2 = _interopRequireDefault(__webpack_require__(3));

var _inherits2 = _interopRequireDefault(__webpack_require__(4));

var _createSuper2 = _interopRequireDefault(__webpack_require__(5));

var _base = _interopRequireDefault(__webpack_require__(296));

var AddSectionView = /*#__PURE__*/function (_BaseAddSectionView) {
  (0, _inherits2.default)(AddSectionView, _BaseAddSectionView);

  var _super = (0, _createSuper2.default)(AddSectionView);

  function AddSectionView() {
    (0, _classCallCheck2.default)(this, AddSectionView);
    return _super.apply(this, arguments);
  }

  (0, _createClass2.default)(AddSectionView, [{
    key: "onCloseButtonClick",
    value: function onCloseButtonClick() {
      this.closeSelectPresets();
    }
  }, {
    key: "id",
    get: function get() {
      return 'elementor-add-new-section';
    }
  }]);
  return AddSectionView;
}(_base.default);

exports.default = AddSectionView;

/***/ }),
/* 527 */
/***/ (function(module, exports, __webpack_require__) {

"use strict";


var _interopRequireDefault = __webpack_require__(0);

var _Object$defineProperty = __webpack_require__(1);

_Object$defineProperty(exports, "__esModule", {
  value: true
});

exports.default = void 0;

var _classCallCheck2 = _interopRequireDefault(__webpack_require__(2));

var _createClass2 = _interopRequireDefault(__webpack_require__(3));

var _inherits2 = _interopRequireDefault(__webpack_require__(4));

var _createSuper2 = _interopRequireDefault(__webpack_require__(5));

var _default = /*#__PURE__*/function (_Marionette$Behavior) {
  (0, _inherits2.default)(_default, _Marionette$Behavior);

  var _super = (0, _createSuper2.default)(_default);

  function _default() {
    (0, _classCallCheck2.default)(this, _default);
    return _super.apply(this, arguments);
  }

  (0, _createClass2.default)(_default, [{
    key: "ui",
    value: function ui() {
      return {
        editButton: '.elementor-editor-element-edit'
      };
    }
  }, {
    key: "events",
    value: function events() {
      return {
        'click @ui.editButton': 'show'
      };
    }
  }, {
    key: "initialize",
    value: function initialize() {
      this.initIntroduction();
    }
  }, {
    key: "initIntroduction",
    value: function initIntroduction() {
      var introduction;

      this.getIntroduction = function () {
        if (!introduction) {
          introduction = new elementorModules.editor.utils.Introduction({
            introductionKey: 'rightClick',
            dialogOptions: {
              className: 'elementor-right-click-introduction',
              headerMessage: elementor.translate('meet_right_click_header'),
              message: elementor.translate('meet_right_click_message'),
              iframe: elementor.$preview,
              position: {
                my: 'center top+5',
                at: 'center bottom',
                collision: 'fit'
              }
            },
            onDialogInitCallback: function onDialogInitCallback(dialog) {
              dialog.addButton({
                name: 'learn-more',
                text: elementor.translate('learn_more'),
                tag: 'div',
                callback: function callback() {
                  open(elementor.config.help_right_click_url, '_blank');
                }
              });
              dialog.addButton({
                name: 'ok',
                text: elementor.translate('got_it'),
                callback: function callback() {
                  return introduction.setViewed();
                }
              });
              dialog.getElements('ok').addClass('elementor-button elementor-button-success');
            }
          });
        }

        return introduction;
      };
    }
  }, {
    key: "show",
    value: function show(event) {
      this.getIntroduction().show(event.currentTarget);
    }
  }]);
  return _default;
}(Marionette.Behavior);

exports.default = _default;

/***/ }),
/* 528 */
/***/ (function(module, exports, __webpack_require__) {

"use strict";


__webpack_require__(25);

var SectionView = __webpack_require__(256),
    BaseContainer = __webpack_require__(333),
    BaseSectionsContainerView;

BaseSectionsContainerView = BaseContainer.extend({
  childView: SectionView,
  behaviors: function behaviors() {
    var behaviors = {
      Sortable: {
        behaviorClass: __webpack_require__(298),
        elChildType: 'section'
      }
    };
    return elementor.hooks.applyFilters('elements/base-section-container/behaviors', behaviors, this);
  },
  getSortableOptions: function getSortableOptions() {
    return {
      handle: '> .elementor-element-overlay .elementor-editor-element-edit',
      items: '> .elementor-section'
    };
  },
  getChildType: function getChildType() {
    return ['section'];
  },
  initialize: function initialize() {
    BaseContainer.prototype.initialize.apply(this, arguments);
    this.listenTo(elementor.channels.panelElements, 'element:drag:start', this.onPanelElementDragStart).listenTo(elementor.channels.panelElements, 'element:drag:end', this.onPanelElementDragEnd);
  },
  onPanelElementDragStart: function onPanelElementDragStart() {
    // A temporary workaround in order to fix Chrome's 70+ dragging above nested iframe bug
    this.$el.find('.elementor-background-video-embed').hide();
    elementor.helpers.disableElementEvents(this.$el.find('iframe'));
  },
  onPanelElementDragEnd: function onPanelElementDragEnd() {
    this.$el.find('.elementor-background-video-embed').show();
    elementor.helpers.enableElementEvents(this.$el.find('iframe'));
  }
});
module.exports = BaseSectionsContainerView;

/***/ }),
/* 529 */
/***/ (function(module, exports, __webpack_require__) {

"use strict";


var _interopRequireDefault = __webpack_require__(0);

var _Object$defineProperty = __webpack_require__(1);

_Object$defineProperty(exports, "__esModule", {
  value: true
});

exports.default = void 0;

var _values = _interopRequireDefault(__webpack_require__(55));

var _regenerator = _interopRequireDefault(__webpack_require__(82));

__webpack_require__(66);

var _asyncToGenerator2 = _interopRequireDefault(__webpack_require__(83));

__webpack_require__(135);

__webpack_require__(155);

__webpack_require__(58);

__webpack_require__(277);

var _slicedToArray2 = _interopRequireDefault(__webpack_require__(102));

var _entries = _interopRequireDefault(__webpack_require__(89));

var _classCallCheck2 = _interopRequireDefault(__webpack_require__(2));

var _createClass2 = _interopRequireDefault(__webpack_require__(3));

var _inherits2 = _interopRequireDefault(__webpack_require__(4));

var _createSuper2 = _interopRequireDefault(__webpack_require__(5));

var ControlChooseView = __webpack_require__(377);

var ControlPopoverStarterView = /*#__PURE__*/function (_ControlChooseView) {
  (0, _inherits2.default)(ControlPopoverStarterView, _ControlChooseView);

  var _super = (0, _createSuper2.default)(ControlPopoverStarterView);

  function ControlPopoverStarterView() {
    (0, _classCallCheck2.default)(this, ControlPopoverStarterView);
    return _super.apply(this, arguments);
  }

  (0, _createClass2.default)(ControlPopoverStarterView, [{
    key: "ui",
    value: function ui() {
      var ui = ControlChooseView.prototype.ui.apply(this, arguments);
      ui.popoverToggle = '.elementor-control-popover-toggle-toggle';
      ui.resetInput = '.elementor-control-popover-toggle-reset';
      return ui;
    }
  }, {
    key: "events",
    value: function events() {
      return _.extend(ControlChooseView.prototype.events.apply(this, arguments), {
        'click @ui.popoverToggle': 'onPopoverToggleClick',
        'click @ui.resetInput': 'onResetInputClick'
      });
    }
  }, {
    key: "onResetInputClick",
    value: function onResetInputClick() {
      var globalData = this.model.get('global');

      if (globalData === null || globalData === void 0 ? void 0 : globalData.active) {
        this.triggerMethod('value:type:change');
      }
    }
  }, {
    key: "onInputChange",
    value: function onInputChange(event) {
      if (event.currentTarget !== this.ui.popoverToggle[0]) {
        return;
      } // If the control has a global value, unset the global.


      if (this.getGlobalKey()) {
        this.triggerMethod('unset:global:value');
      } else if (this.isGlobalActive()) {
        this.triggerMethod('value:type:change');
      }
    }
  }, {
    key: "onPopoverToggleClick",
    value: function onPopoverToggleClick() {
      if (this.isGlobalActive() && !this.getControlValue() && !this.getGlobalKey() && this.getGlobalDefault()) {
        this.triggerMethod('unlink:global:default');
      }

      this.$el.next('.elementor-controls-popover').toggle();
    }
  }, {
    key: "getGlobalCommand",
    value: function getGlobalCommand() {
      return 'globals/typography';
    }
  }, {
    key: "buildPreviewItemCSS",
    value: function buildPreviewItemCSS(globalValue) {
      var cssObject = {};
      (0, _entries.default)(globalValue).forEach(function (_ref) {
        var _ref2 = (0, _slicedToArray2.default)(_ref, 2),
            property = _ref2[0],
            value = _ref2[1];

        // If a control value is empty, ignore it.
        if (!value || '' === value.size) {
          return;
        } // TODO: FIGURE OUT WHAT THE FINAL VALUE KEY FORMAT IS AND ADJUST THIS ACCORDINGLY


        if (property.startsWith('typography_')) {
          property = property.replace('typography_', '');
        }

        if ('font_family' === property) {
          elementor.helpers.enqueueFont(value, 'editor');
        }

        if ('font_size' === property) {
          // Set max size for Typography previews in the select popover so it isn't too big.
          if (value.size > 40) {
            value.size = 40;
          }

          cssObject.fontSize = value.size + value.unit;
        } else {
          // Convert the snake case property names into camel case to match their corresponding CSS property names.
          if (property.includes('_')) {
            property = property.replace(/([_][a-z])/g, function (result) {
              return result.toUpperCase().replace('_', '');
            });
          }

          cssObject[property] = value;
        }
      });
      return cssObject;
    }
  }, {
    key: "createGlobalItemMarkup",
    value: function createGlobalItemMarkup(globalData) {
      var $typographyPreview = jQuery('<div>', {
        class: 'e-global__preview-item e-global__typography',
        'data-global-id': globalData.id
      });
      $typographyPreview.html(globalData.title).css(this.buildPreviewItemCSS(globalData.value));
      return $typographyPreview;
    }
  }, {
    key: "getGlobalMeta",
    value: function getGlobalMeta() {
      return {
        commandName: this.getGlobalCommand(),
        key: this.model.get('name'),
        title: elementor.translate('new_typography_setting'),
        controlType: 'typography',
        route: 'panel/global/global-typography'
      };
    }
  }, {
    key: "getAddGlobalConfirmMessage",
    value: function getAddGlobalConfirmMessage() {
      var globalData = this.getGlobalMeta(),
          $message = jQuery('<div>', {
        class: 'e-global__confirm-message'
      }),
          $messageText = jQuery('<div>').html(elementor.translate('global_fonts_confirm_text')),
          $inputWrapper = jQuery('<div>', {
        class: 'e-global__confirm-input-wrapper'
      }),
          $input = jQuery('<input>', {
        type: 'text',
        name: 'global-name',
        placeholder: globalData.title
      }).val(globalData.title);
      $inputWrapper.append($input);
      $message.append($messageText, $inputWrapper);
      return $message;
    }
  }, {
    key: "getGlobalsList",
    value: function () {
      var _getGlobalsList = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee() {
        var result;
        return _regenerator.default.wrap(function _callee$(_context) {
          while (1) {
            switch (_context.prev = _context.next) {
              case 0:
                _context.next = 2;
                return $e.data.get(this.getGlobalCommand());

              case 2:
                result = _context.sent;
                return _context.abrupt("return", result.data);

              case 4:
              case "end":
                return _context.stop();
            }
          }
        }, _callee, this);
      }));

      function getGlobalsList() {
        return _getGlobalsList.apply(this, arguments);
      }

      return getGlobalsList;
    }()
  }, {
    key: "buildGlobalsList",
    value: function buildGlobalsList(globalTypographies) {
      var _this = this;

      var $globalTypographyContainer = jQuery('<div>', {
        class: 'e-global__preview-items-container'
      });
      (0, _values.default)(globalTypographies).forEach(function (typography) {
        // Only build markup if the typography is valid.
        if (typography) {
          var $typographyPreview = _this.createGlobalItemMarkup(typography);

          $globalTypographyContainer.append($typographyPreview);
        }
      });
      return $globalTypographyContainer;
    }
  }, {
    key: "onAddGlobalButtonClick",
    value: function onAddGlobalButtonClick() {
      this.triggerMethod('add:global:to:list', this.getAddGlobalConfirmMessage());
    }
  }]);
  return ControlPopoverStarterView;
}(ControlChooseView);

exports.default = ControlPopoverStarterView;

ControlPopoverStarterView.onPasteStyle = function (control, clipboardValue) {
  return !clipboardValue || clipboardValue === control.return_value;
};

/***/ }),
/* 530 */
/***/ (function(module, exports, __webpack_require__) {

"use strict";


var _interopRequireDefault = __webpack_require__(0);

__webpack_require__(531);

var _typeof2 = _interopRequireDefault(__webpack_require__(48));

__webpack_require__(119);

__webpack_require__(295);

__webpack_require__(80);

var _keys = _interopRequireDefault(__webpack_require__(23));

__webpack_require__(58);

__webpack_require__(39);

__webpack_require__(25);

var _colorPicker = _interopRequireDefault(__webpack_require__(301));

var _helper = _interopRequireDefault(__webpack_require__(215));

module.exports = {
  document: _helper.default,
  _enqueuedFonts: {
    editor: [],
    preview: []
  },
  _enqueuedIconFonts: [],
  _inlineSvg: [],
  elementsHierarchy: {
    document: {
      section: {
        column: {
          widget: null,
          section: null
        }
      }
    }
  },
  enqueueCSS: function enqueueCSS(url, $document) {
    var selector = 'link[href="' + url + '"]',
        link = '<link href="' + url + '" rel="stylesheet" type="text/css">';

    if (!$document) {
      return;
    }

    if (!$document.find(selector).length) {
      $document.find('link:last').after(link);
    }
  },
  enqueuePreviewStylesheet: function enqueuePreviewStylesheet(url) {
    this.enqueueCSS(url, elementor.$previewContents);
  },
  enqueueEditorStylesheet: function enqueueEditorStylesheet(url) {
    this.enqueueCSS(url, elementorCommon.elements.$document);
  },

  /**
   * @deprecated 2.6.0
   */
  enqueueStylesheet: function enqueueStylesheet(url) {
    elementorCommon.helpers.hardDeprecated('elementor.helpers.enqueueStylesheet()', '2.6.0', 'elementor.helpers.enqueuePreviewStylesheet()');
    this.enqueuePreviewStylesheet(url);
  },
  fetchInlineSvg: function fetchInlineSvg(svgUrl) {
    var callback = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;
    fetch(svgUrl).then(function (response) {
      return response.ok ? response.text() : '';
    }).then(function (data) {
      if (callback) {
        callback(data);
      }
    });
  },
  getInlineSvg: function getInlineSvg(value, view) {
    if (!value.id) {
      return;
    }

    if (this._inlineSvg.hasOwnProperty(value.id)) {
      return this._inlineSvg[value.id];
    }

    var self = this;
    this.fetchInlineSvg(value.url, function (data) {
      if (data) {
        self._inlineSvg[value.id] = data; //$( data ).find( 'svg' )[ 0 ].outerHTML;

        if (view) {
          view.render();
        }

        elementor.channels.editor.trigger('svg:insertion', data, value.id);
      }
    });
  },
  enqueueIconFonts: function enqueueIconFonts(iconType) {
    var _this = this;

    if (-1 !== this._enqueuedIconFonts.indexOf(iconType) || !!elementor.config['icons_update_needed']) {
      return;
    }

    var iconSetting = this.getIconLibrarySettings(iconType);

    if (!iconSetting) {
      return;
    }

    if (iconSetting.enqueue) {
      iconSetting.enqueue.forEach(function (assetURL) {
        _this.enqueuePreviewStylesheet(assetURL);

        _this.enqueueEditorStylesheet(assetURL);
      });
    }

    if (iconSetting.url) {
      this.enqueuePreviewStylesheet(iconSetting.url);
      this.enqueueEditorStylesheet(iconSetting.url);
    }

    this._enqueuedIconFonts.push(iconType);

    elementor.channels.editor.trigger('fontIcon:insertion', iconType, iconSetting);
  },
  getIconLibrarySettings: function getIconLibrarySettings(iconType) {
    var iconSetting = elementor.config.icons.libraries.filter(function (library) {
      return iconType === library.name;
    });

    if (iconSetting[0] && iconSetting[0].name) {
      return iconSetting[0];
    }

    return false;
  },

  /**
   *
   * @param view - view to refresh if needed
   * @param icon - icon control data
   * @param attributes - default {} - attributes to attach to rendered html tag
   * @param tag - default i - html tag to render
   * @param returnType - default value - retrun type
   * @returns {string|boolean|*}
   */
  renderIcon: function renderIcon(view, icon) {
    var attributes = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};
    var tag = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : 'i';
    var returnType = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : 'value';

    if (!icon || !icon.library) {
      if ('object' === returnType) {
        return {
          rendered: false
        };
      }

      return;
    }

    var iconType = icon.library,
        iconValue = icon.value;

    if ('svg' === iconType) {
      if ('panel' === returnType) {
        return '<img src="' + iconValue.url + '">';
      }

      return {
        rendered: true,
        value: this.getInlineSvg(iconValue, view)
      };
    }

    var iconSettings = this.getIconLibrarySettings(iconType);

    if (iconSettings && !iconSettings.hasOwnProperty('isCustom')) {
      this.enqueueIconFonts(iconType);

      if ('panel' === returnType) {
        return '<' + tag + ' class="' + iconValue + '"></' + tag + '>';
      }

      var tagUniqueID = tag + this.getUniqueID();
      view.addRenderAttribute(tagUniqueID, attributes);
      view.addRenderAttribute(tagUniqueID, 'class', iconValue);
      var htmlTag = '<' + tag + ' ' + view.getRenderAttributeString(tagUniqueID) + '></' + tag + '>';

      if ('object' === returnType) {
        return {
          rendered: true,
          value: htmlTag
        };
      }

      return htmlTag;
    }

    elementor.channels.editor.trigger('Icon:insertion', iconType, iconValue, attributes, tag, view);

    if ('object' === returnType) {
      return {
        rendered: false
      };
    }
  },
  isIconMigrated: function isIconMigrated(settings, controlName) {
    return settings.__fa4_migrated && settings.__fa4_migrated[controlName];
  },
  fetchFa4ToFa5Mapping: function fetchFa4ToFa5Mapping() {
    var storageKey = 'fa4Tofa5Mapping';
    var mapping = elementorCommon.storage.get(storageKey);

    if (!mapping) {
      jQuery.getJSON(elementor.config.fa4_to_fa5_mapping_url, function (data) {
        mapping = data;
        elementorCommon.storage.set(storageKey, data);
      });
    }

    return mapping;
  },
  mapFa4ToFa5: function mapFa4ToFa5(fa4Value) {
    var mapping = this.fetchFa4ToFa5Mapping();

    if (mapping[fa4Value]) {
      return mapping[fa4Value];
    } // every thing else is converted to solid


    return {
      value: 'fas' + fa4Value.replace('fa ', ' '),
      library: 'fa-solid'
    };
  },
  // The target parameter = 'editor'/'preview'. Defaults to 'preview' for backwards compatibility.
  enqueueFont: function enqueueFont(font) {
    var target = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'preview';

    if ($e.devTools) {
      $e.devTools.log.info("enqueueFont font: '".concat(font, "', target: '").concat(target, "'"));
    }

    if (-1 !== this._enqueuedFonts[target].indexOf(font)) {
      return;
    }

    var fontType = elementor.config.controls.font.options[font],
        subsets = {
      ru_RU: 'cyrillic',
      uk: 'cyrillic',
      bg_BG: 'cyrillic',
      vi: 'vietnamese',
      el: 'greek',
      he_IL: 'hebrew'
    };
    var fontUrl;

    switch (fontType) {
      case 'googlefonts':
        fontUrl = 'https://fonts.googleapis.com/css?family=' + font + ':100,100italic,200,200italic,300,300italic,400,400italic,500,500italic,600,600italic,700,700italic,800,800italic,900,900italic';

        if (subsets[elementor.config.locale]) {
          fontUrl += '&subset=' + subsets[elementor.config.locale];
        }

        break;

      case 'earlyaccess':
        var fontLowerString = font.replace(/\s+/g, '').toLowerCase();
        fontUrl = 'https://fonts.googleapis.com/earlyaccess/' + fontLowerString + '.css';
        break;
    }

    if (!_.isEmpty(fontUrl)) {
      if ('editor' === target) {
        // TODO: Find better solution, temporary fix, covering issue: 'fonts does not rendered in global styles'.
        this.enqueueCSS(fontUrl, elementorCommon.elements.$document);
      } else {
        this.enqueueCSS(fontUrl, elementor.$previewContents);
      }
    }

    this._enqueuedFonts[target].push(font);

    elementor.channels.editor.trigger('font:insertion', fontType, font);
  },
  resetEnqueuedFontsCache: function resetEnqueuedFontsCache() {
    this._enqueuedFonts = {
      editor: [],
      preview: []
    };
    this._enqueuedIconFonts = [];
  },
  getElementChildType: function getElementChildType(elementType, container) {
    var _this2 = this;

    if (!container) {
      container = this.elementsHierarchy;
    }

    if (undefined !== container[elementType]) {
      if (jQuery.isPlainObject(container[elementType])) {
        return (0, _keys.default)(container[elementType]);
      }

      return null;
    }

    var result = null;
    jQuery.each(container, function (index, type) {
      if (!jQuery.isPlainObject(type)) {
        return;
      }

      var childType = _this2.getElementChildType(elementType, type);

      if (childType) {
        result = childType;
        return false;
      }
    });
    return result;
  },
  getUniqueID: function getUniqueID() {
    elementorCommon.helpers.softDeprecated('elementor.helpers.getUniqueID()', '3.0.0', 'elementorCommon.helpers.getUniqueId()');
    return elementorCommon.helpers.getUniqueId();
  },
  getSocialNetworkNameFromIcon: function getSocialNetworkNameFromIcon(iconsControl, fallbackControl) {
    var toUpperCase = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;
    var migrated = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : null;
    var withIcon = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : false;
    var social = '',
        icon = '';

    if (fallbackControl && !migrated) {
      social = fallbackControl.replace('fa fa-', '');
      icon = '<i class="' + fallbackControl + '"></i>';
    } else if (iconsControl.value && 'svg' !== iconsControl.library) {
      social = iconsControl.value.split(' ')[1];

      if (!social) {
        social = '';
      } else {
        social = social.replace('fa-', '');
      }

      icon = this.renderIcon(null, iconsControl, {}, 'i', 'panel');
    } else {
      icon = this.renderIcon(null, iconsControl, {}, 'i', 'panel');
    }

    if ('' !== social && toUpperCase) {
      social = social.split('-').join(' ');
      social = social.replace(/\b\w/g, function (letter) {
        return letter.toUpperCase();
      });
    }

    social = elementor.hooks.applyFilters('elementor/social_icons/network_name', social, iconsControl, fallbackControl, toUpperCase, withIcon);

    if (withIcon) {
      social = icon + ' ' + social;
    }

    return social;
  },
  getSimpleDialog: function getSimpleDialog(id, title, message, confirmString, onConfirm) {
    return elementorCommon.dialogsManager.createWidget('confirm', {
      id: id,
      headerMessage: title,
      message: message,
      position: {
        my: 'center center',
        at: 'center center'
      },
      strings: {
        confirm: confirmString,
        cancel: elementor.translate('cancel')
      },
      onConfirm: onConfirm
    });
  },
  maybeDisableWidget: function maybeDisableWidget() {
    if (!elementor.config['icons_update_needed']) {
      return false;
    }

    var elementView = elementor.channels.panelElements.request('element:selected'),
        widgetType = elementView.model.get('widgetType'),
        widgetData = elementor.widgetsCache[widgetType],
        hasControlOfType = function hasControlOfType(controls, type) {
      var has = false;
      jQuery.each(controls, function (controlName, controlData) {
        if (type === controlData.type) {
          has = true;
          return false;
        }

        if (controlData.is_repeater) {
          has = hasControlOfType(controlData.fields, type);

          if (has) {
            return false;
          }
        }
      });
      return has;
    };

    if (widgetData) {
      var hasIconsControl = hasControlOfType(widgetData.controls, 'icons');

      if (hasIconsControl) {
        var onConfirm = function onConfirm() {
          window.location.href = elementor.config.tools_page_link + '&redirect_to=' + encodeURIComponent(document.location.href) + '#tab-fontawesome4_migration';
        };

        elementor.helpers.getSimpleDialog('elementor-enable-fa5-dialog', elementor.translate('enable_fa5'), elementor.translate('dialog_confirm_enable_fa5'), elementor.translate('update'), onConfirm).show();
        return true;
      }
    }

    return false;
  },

  /*
  * @deprecated 2.0.0
  */
  stringReplaceAll: function stringReplaceAll(string, replaces) {
    var re = new RegExp((0, _keys.default)(replaces).join('|'), 'gi');
    return string.replace(re, function (matched) {
      return replaces[matched];
    });
  },
  isActiveControl: function isActiveControl(controlModel, values) {
    var condition, conditions; // TODO: Better way to get this?

    if (_.isFunction(controlModel.get)) {
      condition = controlModel.get('condition');
      conditions = controlModel.get('conditions');
    } else {
      condition = controlModel.condition;
      conditions = controlModel.conditions;
    } // Multiple conditions with relations.


    if (conditions && !elementor.conditions.check(conditions, values)) {
      return false;
    }

    if (_.isEmpty(condition)) {
      return true;
    }

    var hasFields = _.filter(condition, function (conditionValue, conditionName) {
      var conditionNameParts = conditionName.match(/([a-z_\-0-9]+)(?:\[([a-z_]+)])?(!?)$/i),
          conditionRealName = conditionNameParts[1],
          conditionSubKey = conditionNameParts[2],
          isNegativeCondition = !!conditionNameParts[3],
          controlValue = values[conditionRealName];

      if (values.__dynamic__ && values.__dynamic__[conditionRealName]) {
        controlValue = values.__dynamic__[conditionRealName];
      }

      if (undefined === controlValue) {
        return true;
      }

      if (conditionSubKey && 'object' === (0, _typeof2.default)(controlValue)) {
        controlValue = controlValue[conditionSubKey];
      } // If it's a non empty array - check if the conditionValue contains the controlValue,
      // If the controlValue is a non empty array - check if the controlValue contains the conditionValue
      // otherwise check if they are equal. ( and give the ability to check if the value is an empty array )


      var isContains;

      if (_.isArray(conditionValue) && !_.isEmpty(conditionValue)) {
        isContains = _.contains(conditionValue, controlValue);
      } else if (_.isArray(controlValue) && !_.isEmpty(controlValue)) {
        isContains = _.contains(controlValue, conditionValue);
      } else {
        isContains = _.isEqual(conditionValue, controlValue);
      }

      return isNegativeCondition ? isContains : !isContains;
    });

    return _.isEmpty(hasFields);
  },
  cloneObject: function cloneObject(object) {
    elementorCommon.helpers.hardDeprecated('elementor.helpers.cloneObject', '2.3.0', 'elementorCommon.helpers.cloneObject');
    return elementorCommon.helpers.cloneObject(object);
  },
  disableElementEvents: function disableElementEvents($element) {
    $element.each(function () {
      var currentPointerEvents = this.style.pointerEvents;

      if ('none' === currentPointerEvents) {
        return;
      }

      jQuery(this).data('backup-pointer-events', currentPointerEvents).css('pointer-events', 'none');
    });
  },
  enableElementEvents: function enableElementEvents($element) {
    $element.each(function () {
      var $this = jQuery(this),
          backupPointerEvents = $this.data('backup-pointer-events');

      if (undefined === backupPointerEvents) {
        return;
      }

      $this.removeData('backup-pointer-events').css('pointer-events', backupPointerEvents);
    });
  },
  wpColorPicker: function wpColorPicker($element) {
    elementorCommon.helpers.deprecatedMethod('elementor.helpers.wpColorPicker()', '2.8.0', 'new ColorPicker()');
    return new _colorPicker.default({
      picker: {
        el: $element
      }
    });
  },
  isInViewport: function isInViewport(element, html) {
    var rect = element.getBoundingClientRect();
    html = html || document.documentElement;
    return rect.top >= 0 && rect.left >= 0 && rect.bottom <= (window.innerHeight || html.clientHeight) && rect.right <= (window.innerWidth || html.clientWidth);
  },
  scrollToView: function scrollToView($element, timeout, $parent) {
    if (undefined === timeout) {
      timeout = 500;
    }

    var $scrolled = $parent;
    var $elementorFrontendWindow = elementorFrontend.elements.$window;

    if (!$parent) {
      $parent = $elementorFrontendWindow;
      $scrolled = elementor.$previewContents.find('html, body');
    }

    setTimeout(function () {
      // Sometimes element removed during the timeout.
      if (!$element[0].isConnected) {
        return;
      }

      var parentHeight = $parent.height(),
          parentScrollTop = $parent.scrollTop(),
          elementTop = $parent === $elementorFrontendWindow ? $element.offset().top : $element[0].offsetTop,
          topToCheck = elementTop - parentScrollTop;

      if (topToCheck > 0 && topToCheck < parentHeight) {
        return;
      }

      var scrolling = elementTop - parentHeight / 2;
      $scrolled.stop(true).animate({
        scrollTop: scrolling
      }, 1000);
    }, timeout);
  },
  getElementInlineStyle: function getElementInlineStyle($element, properties) {
    var style = {},
        elementStyle = $element[0].style;
    properties.forEach(function (property) {
      style[property] = undefined !== elementStyle[property] ? elementStyle[property] : '';
    });
    return style;
  },
  cssWithBackup: function cssWithBackup($element, backupState, rules) {
    var cssBackup = this.getElementInlineStyle($element, (0, _keys.default)(rules));
    $element.data('css-backup-' + backupState, cssBackup).css(rules);
  },
  recoverCSSBackup: function recoverCSSBackup($element, backupState) {
    var backupKey = 'css-backup-' + backupState;
    $element.css($element.data(backupKey));
    $element.removeData(backupKey);
  },
  elementSizeToUnit: function elementSizeToUnit($element, size, unit) {
    var window = elementorFrontend.elements.window;

    switch (unit) {
      case '%':
        size = size / ($element.offsetParent().width() / 100);
        break;

      case 'vw':
        size = size / (window.innerWidth / 100);
        break;

      case 'vh':
        size = size / (window.innerHeight / 100);
    }

    return Math.round(size * 1000) / 1000;
  },
  compareVersions: function compareVersions(versionA, versionB, operator) {
    var prepareVersion = function prepareVersion(version) {
      version = version + '';
      return version.replace(/[^\d.]+/, '.-1.');
    };

    versionA = prepareVersion(versionA);
    versionB = prepareVersion(versionB);

    if (versionA === versionB) {
      return !operator || /^={2,3}$/.test(operator);
    }

    var versionAParts = versionA.split('.').map(Number),
        versionBParts = versionB.split('.').map(Number),
        longestVersionParts = Math.max(versionAParts.length, versionBParts.length);

    for (var i = 0; i < longestVersionParts; i++) {
      var valueA = versionAParts[i] || 0,
          valueB = versionBParts[i] || 0;

      if (valueA !== valueB) {
        return elementor.conditions.compare(valueA, valueB, operator);
      }
    }
  },
  getModelLabel: function getModelLabel(model) {
    var result;

    if (!(model instanceof Backbone.Model)) {
      model = new Backbone.Model(model);
    }

    if (model.get('labelSuffix')) {
      result = model.get('title') + ' ' + model.get('labelSuffix');
    } else if ('global' === model.get('widgetType')) {
      if (model.getTitle) {
        result = model.getTitle();
      }
    }

    if (!result) {
      result = elementor.getElementData(model).title;
    }

    return result;
  },
  hasPro: function hasPro() {
    return !!window.elementorPro;
  }
};

/***/ }),
/* 531 */
/***/ (function(module, exports, __webpack_require__) {

"use strict";

var global = __webpack_require__(17);
var has = __webpack_require__(61);
var cof = __webpack_require__(46);
var inheritIfRequired = __webpack_require__(310);
var toPrimitive = __webpack_require__(123);
var fails = __webpack_require__(33);
var gOPN = __webpack_require__(312).f;
var gOPD = __webpack_require__(311).f;
var dP = __webpack_require__(45).f;
var $trim = __webpack_require__(532).trim;
var NUMBER = 'Number';
var $Number = global[NUMBER];
var Base = $Number;
var proto = $Number.prototype;
// Opera ~12 has broken Object#toString
var BROKEN_COF = cof(__webpack_require__(226)(proto)) == NUMBER;
var TRIM = 'trim' in String.prototype;

// 7.1.3 ToNumber(argument)
var toNumber = function (argument) {
  var it = toPrimitive(argument, false);
  if (typeof it == 'string' && it.length > 2) {
    it = TRIM ? it.trim() : $trim(it, 3);
    var first = it.charCodeAt(0);
    var third, radix, maxCode;
    if (first === 43 || first === 45) {
      third = it.charCodeAt(2);
      if (third === 88 || third === 120) return NaN; // Number('+0x1') should be NaN, old V8 fix
    } else if (first === 48) {
      switch (it.charCodeAt(1)) {
        case 66: case 98: radix = 2; maxCode = 49; break; // fast equal /^0b[01]+$/i
        case 79: case 111: radix = 8; maxCode = 55; break; // fast equal /^0o[0-7]+$/i
        default: return +it;
      }
      for (var digits = it.slice(2), i = 0, l = digits.length, code; i < l; i++) {
        code = digits.charCodeAt(i);
        // parseInt parses a string to a first unavailable symbol
        // but ToNumber should return NaN if a string contains unavailable symbols
        if (code < 48 || code > maxCode) return NaN;
      } return parseInt(digits, radix);
    }
  } return +it;
};

if (!$Number(' 0o1') || !$Number('0b1') || $Number('+0x1')) {
  $Number = function Number(value) {
    var it = arguments.length < 1 ? 0 : value;
    var that = this;
    return that instanceof $Number
      // check on 1..constructor(foo) case
      && (BROKEN_COF ? fails(function () { proto.valueOf.call(that); }) : cof(that) != NUMBER)
        ? inheritIfRequired(new Base(toNumber(it)), that, $Number) : toNumber(it);
  };
  for (var keys = __webpack_require__(27) ? gOPN(Base) : (
    // ES3:
    'MAX_VALUE,MIN_VALUE,NaN,NEGATIVE_INFINITY,POSITIVE_INFINITY,' +
    // ES6 (in case, if modules with ES6 Number statics required before):
    'EPSILON,isFinite,isInteger,isNaN,isSafeInteger,MAX_SAFE_INTEGER,' +
    'MIN_SAFE_INTEGER,parseFloat,parseInt,isInteger'
  ).split(','), j = 0, key; keys.length > j; j++) {
    if (has(Base, key = keys[j]) && !has($Number, key)) {
      dP($Number, key, gOPD(Base, key));
    }
  }
  $Number.prototype = proto;
  proto.constructor = $Number;
  __webpack_require__(37)(global, NUMBER, $Number);
}


/***/ }),
/* 532 */
/***/ (function(module, exports, __webpack_require__) {

var $export = __webpack_require__(34);
var defined = __webpack_require__(42);
var fails = __webpack_require__(33);
var spaces = __webpack_require__(533);
var space = '[' + spaces + ']';
var non = '\u200b\u0085';
var ltrim = RegExp('^' + space + space + '*');
var rtrim = RegExp(space + space + '*$');

var exporter = function (KEY, exec, ALIAS) {
  var exp = {};
  var FORCE = fails(function () {
    return !!spaces[KEY]() || non[KEY]() != non;
  });
  var fn = exp[KEY] = FORCE ? exec(trim) : spaces[KEY];
  if (ALIAS) exp[ALIAS] = fn;
  $export($export.P + $export.F * FORCE, 'String', exp);
};

// 1 -> String#trimLeft
// 2 -> String#trimRight
// 3 -> String#trim
var trim = exporter.trim = function (string, TYPE) {
  string = String(defined(string));
  if (TYPE & 1) string = string.replace(ltrim, '');
  if (TYPE & 2) string = string.replace(rtrim, '');
  return string;
};

module.exports = exporter;


/***/ }),
/* 533 */
/***/ (function(module, exports) {

module.exports = '\x09\x0A\x0B\x0C\x0D\x20\xA0\u1680\u180E\u2000\u2001\u2002\u2003' +
  '\u2004\u2005\u2006\u2007\u2008\u2009\u200A\u202F\u205F\u3000\u2028\u2029\uFEFF';


/***/ }),
/* 534 */
/***/ (function(module, exports, __webpack_require__) {

"use strict";


var _interopRequireDefault = __webpack_require__(0);

var _keys = _interopRequireDefault(__webpack_require__(23));

var ImagesManager;

ImagesManager = function ImagesManager() {
  var self = this;
  var cache = {};
  var debounceDelay = 300;
  var registeredItems = [];

  var getNormalizedSize = function getNormalizedSize(image) {
    var size,
        imageSize = image.size;

    if ('custom' === imageSize) {
      var customDimension = image.dimension;

      if (customDimension.width || customDimension.height) {
        size = 'custom_' + customDimension.width + 'x' + customDimension.height;
      } else {
        return 'full';
      }
    } else {
      size = imageSize;
    }

    return size;
  };

  var viewsToUpdate = {};

  self.updateOnReceiveImage = function () {
    var elementView = elementor.getPanelView().getCurrentPageView().getOption('editedElementView');
    elementView.$el.addClass('elementor-loading'); // Add per cid for multiple images in a single view.

    viewsToUpdate[elementView.cid] = elementView;
    elementor.channels.editor.once('imagesManager:detailsReceived', function () {
      if (!_.isEmpty(viewsToUpdate)) {
        _(viewsToUpdate).each(function (view) {
          view.render();
          view.$el.removeClass('elementor-loading');
        });
      }

      viewsToUpdate = {};
    });
  };

  self.getImageUrl = function (image) {
    // Register for AJAX checking
    self.registerItem(image);
    var imageUrl = self.getItem(image); // If it's not in cache, like a new dropped widget or a custom size - get from settings

    if (!imageUrl) {
      if ('custom' === image.size) {
        if ($e.routes.isPartOf('panel/editor') && image.model) {
          self.updateOnReceiveImage();
        }

        return;
      } // If it's a new dropped widget


      imageUrl = image.url;
    }

    return imageUrl;
  };

  self.getItem = function (image) {
    var size = getNormalizedSize(image),
        id = image.id;

    if (!size) {
      return false;
    }

    if (cache[id] && cache[id][size]) {
      return cache[id][size];
    }

    return false;
  };

  self.registerItem = function (image) {
    if ('' === image.id) {
      // It's a new dropped widget
      return;
    }

    if (self.getItem(image)) {
      // It's already in cache
      return;
    }

    registeredItems.push(image);
    self.debounceGetRemoteItems();
  };

  self.getRemoteItems = function () {
    var requestedItems = [],
        registeredItemsLength = (0, _keys.default)(registeredItems).length,
        image,
        index; // It's one item, so we can render it from remote server

    if (0 === registeredItemsLength) {
      return;
    }

    for (index in registeredItems) {
      image = registeredItems[index];
      var size = getNormalizedSize(image),
          id = image.id,
          isFirstTime = !cache[id] || 0 === (0, _keys.default)(cache[id]).length;
      requestedItems.push({
        id: id,
        size: size,
        is_first_time: isFirstTime
      });
    }

    elementorCommon.ajax.send('get_images_details', {
      data: {
        items: requestedItems
      },
      success: function success(data) {
        var imageId, imageSize;

        for (imageId in data) {
          if (!cache[imageId]) {
            cache[imageId] = {};
          }

          for (imageSize in data[imageId]) {
            cache[imageId][imageSize] = data[imageId][imageSize];
          }
        }

        registeredItems = [];
        elementor.channels.editor.trigger('imagesManager:detailsReceived', data);
      }
    });
  };

  self.debounceGetRemoteItems = _.debounce(self.getRemoteItems, debounceDelay);
};

module.exports = new ImagesManager();

/***/ }),
/* 535 */
/***/ (function(module, exports, __webpack_require__) {

"use strict";


var _interopRequireDefault = __webpack_require__(0);

var _keys = _interopRequireDefault(__webpack_require__(23));

var _stringify = _interopRequireDefault(__webpack_require__(206));

__webpack_require__(25);

var Schemes,
    Stylesheet = __webpack_require__(332),
    ControlsCSSParser = __webpack_require__(293);

Schemes = function Schemes() {
  var self = this,
      stylesheet = new Stylesheet(),
      schemes = {},
      settings = {
    selectorWrapperPrefix: '.elementor-widget-'
  },
      elements = {};

  var buildUI = function buildUI() {
    elements.$previewHead.append(elements.$style);
  };

  var initElements = function initElements() {
    var id = 'elementor-style-scheme';
    elements.$style = elementor.$previewContents.find("#".concat(id));

    if (!elements.$style.length) {
      elements.$style = jQuery('<style>', {
        id: id
      });
    }

    elements.$previewHead = elementor.$previewContents.find('head');
  };

  var initSchemes = function initSchemes() {
    schemes = elementorCommon.helpers.cloneObject(elementor.config.schemes.items);
  };

  var fetchControlStyles = function fetchControlStyles(control, controlsStack, widgetType) {
    ControlsCSSParser.addControlStyleRules(stylesheet, control, controlsStack, function (controlStyles) {
      return self.getSchemeValue(controlStyles.scheme.type, controlStyles.scheme.value, controlStyles.scheme.key).value;
    }, ['{{WRAPPER}}'], [settings.selectorWrapperPrefix + widgetType]);
  };

  var fetchWidgetControlsStyles = function fetchWidgetControlsStyles(widget) {
    var widgetSchemeControls = self.getWidgetSchemeControls(widget);

    _.each(widgetSchemeControls, function (control) {
      fetchControlStyles(control, widgetSchemeControls, widget.widget_type);
    });
  };

  var fetchAllWidgetsSchemesStyle = function fetchAllWidgetsSchemesStyle() {
    _.each(elementor.widgetsCache, function (widget) {
      fetchWidgetControlsStyles(widget);
    });
  };

  this.init = function () {
    initElements();
    buildUI();
    initSchemes();
    return self;
  };

  this.getWidgetSchemeControls = function (widget) {
    return _.filter(widget.controls, function (control) {
      return _.isObject(control.scheme);
    });
  };

  this.getSchemes = function () {
    return schemes;
  };

  this.getEnabledSchemesTypes = function () {
    return elementor.config.schemes.enabled_schemes;
  };

  this.getScheme = function (schemeType) {
    return schemes[schemeType];
  };

  this.getSchemeValue = function (schemeType, value, key) {
    if (this.getEnabledSchemesTypes().indexOf(schemeType) < 0) {
      return false;
    }

    var scheme = self.getScheme(schemeType),
        schemeValue = scheme.items[value];

    if (key && _.isObject(schemeValue)) {
      var clonedSchemeValue = elementorCommon.helpers.cloneObject(schemeValue);
      clonedSchemeValue.value = schemeValue.value[key];
      return clonedSchemeValue;
    }

    return schemeValue;
  };

  this.printSchemesStyle = function () {
    stylesheet.empty();
    fetchAllWidgetsSchemesStyle();
    elements.$style.text(stylesheet);
  };

  this.resetSchemes = function (schemeName) {
    schemes[schemeName] = elementorCommon.helpers.cloneObject(elementor.config.schemes.items[schemeName]);
  };

  this.saveScheme = function (schemeName) {
    elementor.config.schemes.items[schemeName].items = elementorCommon.helpers.cloneObject(schemes[schemeName].items);
    var itemsToSave = {};

    _.each(schemes[schemeName].items, function (item, key) {
      itemsToSave[key] = item.value;
    });

    return elementorCommon.ajax.addRequest('apply_scheme', {
      data: {
        scheme_name: schemeName,
        data: (0, _stringify.default)(itemsToSave)
      }
    });
  };

  this.setSchemeValue = function (schemeName, itemKey, value) {
    schemes[schemeName].items[itemKey].value = value;
  };

  this.addSchemeItem = function (schemeName, item, at) {
    var scheme = schemes[schemeName],
        schemeKeys = (0, _keys.default)(scheme.items),
        hasAt = undefined !== at,
        targetIndex = hasAt ? at : +schemeKeys.slice(-1)[0] || 0;

    if (hasAt) {
      var itemIndex = schemeKeys.length + 1;

      for (; itemIndex > at; itemIndex--) {
        scheme.items[itemIndex] = scheme.items[itemIndex - 1];
      }
    }

    scheme.items[targetIndex + 1] = item;
  };

  this.removeSchemeItem = function (schemeName, itemKey) {
    var items = schemes[schemeName].items;

    while (true) {
      itemKey++;
      var nextItem = items[itemKey + 1];

      if (!nextItem) {
        delete items[itemKey];
        break;
      }

      items[itemKey] = nextItem;
    }
  };
};

module.exports = new Schemes();

/***/ }),
/* 536 */
/***/ (function(module, exports, __webpack_require__) {

"use strict";


var presetsFactory;
presetsFactory = {
  getPresetsDictionary: function getPresetsDictionary() {
    return {
      11: 100 / 9,
      12: 100 / 8,
      14: 100 / 7,
      16: 100 / 6,
      33: 100 / 3,
      66: 2 / 3 * 100,
      83: 5 / 6 * 100
    };
  },
  getAbsolutePresetValues: function getAbsolutePresetValues(preset) {
    var clonedPreset = elementorCommon.helpers.cloneObject(preset),
        presetDictionary = this.getPresetsDictionary();

    _.each(clonedPreset, function (unitValue, unitIndex) {
      if (presetDictionary[unitValue]) {
        clonedPreset[unitIndex] = presetDictionary[unitValue];
      }
    });

    return clonedPreset;
  },
  getPresets: function getPresets(columnsCount, presetIndex) {
    var presets = elementorCommon.helpers.cloneObject(elementor.config.elements.section.presets);

    if (columnsCount) {
      presets = presets[columnsCount];
    }

    if (presetIndex) {
      presets = presets[presetIndex];
    }

    return presets;
  },
  getPresetByStructure: function getPresetByStructure(structure) {
    var parsedStructure = this.getParsedStructure(structure);
    return this.getPresets(parsedStructure.columnsCount, parsedStructure.presetIndex);
  },
  getParsedStructure: function getParsedStructure(structure) {
    structure += ''; // Make sure this is a string

    return {
      columnsCount: structure.slice(0, -1),
      presetIndex: structure.substr(-1)
    };
  },
  getPresetSVG: function getPresetSVG(preset, svgWidth, svgHeight, separatorWidth) {
    svgWidth = svgWidth || 100;
    svgHeight = svgHeight || 50;
    separatorWidth = separatorWidth || 2;

    var absolutePresetValues = this.getAbsolutePresetValues(preset),
        presetSVGPath = this._generatePresetSVGPath(absolutePresetValues, svgWidth, svgHeight, separatorWidth);

    return this._createSVGPreset(presetSVGPath, svgWidth, svgHeight);
  },
  _createSVGPreset: function _createSVGPreset(presetPath, svgWidth, svgHeight) {
    // this is here to avoid being picked up by https re-write systems
    var protocol = 'ht' + 'tp';
    var svg = document.createElementNS(protocol + '://www.w3.org/2000/svg', 'svg');
    svg.setAttributeNS(protocol + '://www.w3.org/2000/xmlns/', 'xmlns:xlink', protocol + '://www.w3.org/1999/xlink');
    svg.setAttribute('viewBox', '0 0 ' + svgWidth + ' ' + svgHeight);
    var path = document.createElementNS(protocol + '://www.w3.org/2000/svg', 'path');
    path.setAttribute('d', presetPath);
    svg.appendChild(path);
    return svg;
  },
  _generatePresetSVGPath: function _generatePresetSVGPath(preset, svgWidth, svgHeight, separatorWidth) {
    var DRAW_SIZE = svgWidth - separatorWidth * (preset.length - 1);
    var xPointer = 0,
        dOutput = '';

    for (var i = 0; i < preset.length; i++) {
      if (i) {
        dOutput += ' ';
      }

      var increment = preset[i] / 100 * DRAW_SIZE;
      xPointer += increment;
      dOutput += 'M' + +xPointer.toFixed(4) + ',0';
      dOutput += 'V' + svgHeight;
      dOutput += 'H' + +(xPointer - increment).toFixed(4);
      dOutput += 'V0Z';
      xPointer += separatorWidth;
    }

    return dOutput;
  }
};
module.exports = presetsFactory;

/***/ }),
/* 537 */
/***/ (function(module, exports, __webpack_require__) {

"use strict";


var _interopRequireDefault = __webpack_require__(0);

var _typeof2 = _interopRequireDefault(__webpack_require__(48));

var _stringify = _interopRequireDefault(__webpack_require__(206));

var _component = _interopRequireDefault(__webpack_require__(538));

var TemplateLibraryCollection = __webpack_require__(555),
    TemplateLibraryManager;

TemplateLibraryManager = function TemplateLibraryManager() {
  this.modalConfig = {};
  var self = this,
      templateTypes = {};
  var deleteDialog,
      errorDialog,
      templatesCollection,
      config = {},
      filterTerms = {};

  var registerDefaultTemplateTypes = function registerDefaultTemplateTypes() {
    var data = {
      saveDialog: {
        description: elementor.translate('save_your_template_description')
      },
      ajaxParams: {
        success: function success(successData) {
          $e.route('library/templates/my-templates', {
            onBefore: function onBefore() {
              if (templatesCollection) {
                var itemExist = templatesCollection.findWhere({
                  template_id: successData.template_id
                });

                if (!itemExist) {
                  templatesCollection.add(successData);
                }
              }
            }
          });
        },
        error: function error(errorData) {
          self.showErrorDialog(errorData);
        }
      }
    };

    _.each(['page', 'section', elementor.config.document.type], function (type) {
      var safeData = jQuery.extend(true, {}, data, {
        saveDialog: {
          title: elementor.translate('save_your_template', [elementor.translate(type)])
        }
      });
      self.registerTemplateType(type, safeData);
    });
  };

  var registerDefaultFilterTerms = function registerDefaultFilterTerms() {
    filterTerms = {
      text: {
        callback: function callback(value) {
          value = value.toLowerCase();

          if (this.get('title').toLowerCase().indexOf(value) >= 0) {
            return true;
          }

          return _.any(this.get('tags'), function (tag) {
            return tag.toLowerCase().indexOf(value) >= 0;
          });
        }
      },
      type: {},
      subtype: {},
      favorite: {}
    };
  };

  this.init = function () {
    registerDefaultTemplateTypes();
    registerDefaultFilterTerms();
    this.component = $e.components.register(new _component.default({
      manager: this
    }));
    elementor.addBackgroundClickListener('libraryToggleMore', {
      element: '.elementor-template-library-template-more'
    });
  };

  this.getTemplateTypes = function (type) {
    if (type) {
      return templateTypes[type];
    }

    return templateTypes;
  };

  this.registerTemplateType = function (type, data) {
    templateTypes[type] = data;
  };

  this.deleteTemplate = function (templateModel, options) {
    var dialog = self.getDeleteDialog();

    dialog.onConfirm = function () {
      if (options.onConfirm) {
        options.onConfirm();
      }

      elementorCommon.ajax.addRequest('delete_template', {
        data: {
          source: templateModel.get('source'),
          template_id: templateModel.get('template_id')
        },
        success: function success(response) {
          templatesCollection.remove(templateModel, {
            silent: true
          });

          if (options.onSuccess) {
            options.onSuccess(response);
          }
        }
      });
    };

    dialog.show();
  };

  this.importTemplate = function (model) {
    var args = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
    elementorCommon.helpers.softDeprecated('importTemplate', '2.8.0', "$e.run( 'library/insert-template' )");
    args.model = model;
    $e.run('library/insert-template', args);
  };

  this.saveTemplate = function (type, data) {
    var templateType = templateTypes[type];

    _.extend(data, {
      source: 'local',
      type: type
    });

    if (templateType.prepareSavedData) {
      data = templateType.prepareSavedData(data);
    }

    data.content = (0, _stringify.default)(data.content);
    var ajaxParams = {
      data: data
    };

    if (templateType.ajaxParams) {
      _.extend(ajaxParams, templateType.ajaxParams);
    }

    elementorCommon.ajax.addRequest('save_template', ajaxParams);
  };

  this.requestTemplateContent = function (source, id, ajaxOptions) {
    var options = {
      unique_id: id,
      data: {
        source: source,
        edit_mode: true,
        display: true,
        template_id: id
      }
    };

    if (ajaxOptions) {
      jQuery.extend(true, options, ajaxOptions);
    }

    return elementorCommon.ajax.addRequest('get_template_data', options);
  };

  this.markAsFavorite = function (templateModel, favorite) {
    var options = {
      data: {
        source: templateModel.get('source'),
        template_id: templateModel.get('template_id'),
        favorite: favorite
      }
    };
    return elementorCommon.ajax.addRequest('mark_template_as_favorite', options);
  };

  this.getDeleteDialog = function () {
    if (!deleteDialog) {
      deleteDialog = elementorCommon.dialogsManager.createWidget('confirm', {
        id: 'elementor-template-library-delete-dialog',
        headerMessage: elementor.translate('delete_template'),
        message: elementor.translate('delete_template_confirm'),
        strings: {
          confirm: elementor.translate('delete')
        }
      });
    }

    return deleteDialog;
  };

  this.getErrorDialog = function () {
    if (!errorDialog) {
      errorDialog = elementorCommon.dialogsManager.createWidget('alert', {
        id: 'elementor-template-library-error-dialog',
        headerMessage: elementor.translate('an_error_occurred')
      });
    }

    return errorDialog;
  };

  this.getTemplatesCollection = function () {
    return templatesCollection;
  };

  this.getConfig = function (item) {
    if (item) {
      return config[item] ? config[item] : {};
    }

    return config;
  };

  this.requestLibraryData = function (options) {
    if (templatesCollection && !options.forceUpdate) {
      if (options.onUpdate) {
        options.onUpdate();
      }

      return;
    }

    if (options.onBeforeUpdate) {
      options.onBeforeUpdate();
    }

    var ajaxOptions = {
      data: {},
      success: function success(data) {
        templatesCollection = new TemplateLibraryCollection(data.templates);

        if (data.config) {
          config = data.config;
        }

        if (options.onUpdate) {
          options.onUpdate();
        }
      }
    };

    if (options.forceSync) {
      ajaxOptions.data.sync = true;
    }

    elementorCommon.ajax.addRequest('get_library_data', ajaxOptions);
  };

  this.getFilter = function (name) {
    return elementor.channels.templates.request('filter:' + name);
  };

  this.setFilter = function (name, value, silent) {
    elementor.channels.templates.reply('filter:' + name, value);

    if (!silent) {
      elementor.channels.templates.trigger('filter:change');
    }
  };

  this.getFilterTerms = function (termName) {
    if (termName) {
      return filterTerms[termName];
    }

    return filterTerms;
  };

  this.setScreen = function (args) {
    elementor.channels.templates.stopReplying();
    self.setFilter('source', args.source, true);
    self.setFilter('type', args.type, true);
    self.setFilter('subtype', args.subtype, true);
    self.showTemplates();
  };

  this.loadTemplates = function (_onUpdate) {
    self.requestLibraryData({
      onBeforeUpdate: self.layout.showLoadingView.bind(self.layout),
      onUpdate: function onUpdate() {
        self.layout.hideLoadingView();

        if (_onUpdate) {
          _onUpdate();
        }
      }
    });
  };

  this.showTemplates = function () {
    // The tabs should exist in DOM on loading.
    self.layout.setHeaderDefaultParts();
    self.loadTemplates(function () {
      var templatesToShow = self.filterTemplates();
      self.layout.showTemplatesView(new TemplateLibraryCollection(templatesToShow));
    });
  };

  this.filterTemplates = function () {
    var activeSource = self.getFilter('source');
    return templatesCollection.filter(function (model) {
      if (activeSource !== model.get('source')) {
        return false;
      }

      var typeInfo = templateTypes[model.get('type')];
      return !typeInfo || false !== typeInfo.showInLibrary;
    });
  };

  this.showErrorDialog = function (errorMessage) {
    if ('object' === (0, _typeof2.default)(errorMessage)) {
      var message = '';

      _.each(errorMessage, function (error) {
        message += '<div>' + error.message + '.</div>';
      });

      errorMessage = message;
    } else if (errorMessage) {
      errorMessage += '.';
    } else {
      errorMessage = '<i>&#60;The error message is empty&#62;</i>';
    }

    self.getErrorDialog().setMessage(elementor.translate('templates_request_error') + '<div id="elementor-template-library-error-info">' + errorMessage + '</div>').show();
  };
};

module.exports = new TemplateLibraryManager();

/***/ }),
/* 538 */
/***/ (function(module, exports, __webpack_require__) {

"use strict";


var _interopRequireWildcard = __webpack_require__(36);

var _interopRequireDefault = __webpack_require__(0);

var _Object$defineProperty = __webpack_require__(1);

_Object$defineProperty(exports, "__esModule", {
  value: true
});

exports.default = void 0;

var _objectSpread2 = _interopRequireDefault(__webpack_require__(214));

var _classCallCheck2 = _interopRequireDefault(__webpack_require__(2));

var _createClass2 = _interopRequireDefault(__webpack_require__(3));

var _get2 = _interopRequireDefault(__webpack_require__(26));

var _getPrototypeOf2 = _interopRequireDefault(__webpack_require__(16));

var _inherits2 = _interopRequireDefault(__webpack_require__(4));

var _createSuper2 = _interopRequireDefault(__webpack_require__(5));

var _componentModalBase = _interopRequireDefault(__webpack_require__(287));

var commands = _interopRequireWildcard(__webpack_require__(539));

var TemplateLibraryLayoutView = __webpack_require__(542);

var Component = /*#__PURE__*/function (_ComponentModalBase) {
  (0, _inherits2.default)(Component, _ComponentModalBase);

  var _super = (0, _createSuper2.default)(Component);

  function Component() {
    (0, _classCallCheck2.default)(this, Component);
    return _super.apply(this, arguments);
  }

  (0, _createClass2.default)(Component, [{
    key: "__construct",
    value: function __construct(args) {
      (0, _get2.default)((0, _getPrototypeOf2.default)(Component.prototype), "__construct", this).call(this, args); // When switching documents update defaultTabs.

      elementor.on('document:loaded', this.onDocumentLoaded.bind(this));
    }
  }, {
    key: "getNamespace",
    value: function getNamespace() {
      return 'library';
    }
  }, {
    key: "defaultTabs",
    value: function defaultTabs() {
      return {
        'templates/blocks': {
          title: elementor.translate('blocks'),
          getFilter: function getFilter() {
            return {
              source: 'remote',
              type: 'block',
              subtype: elementor.config.document.remoteLibrary.category
            };
          }
        },
        'templates/pages': {
          title: elementor.translate('pages'),
          filter: {
            source: 'remote',
            type: 'page'
          }
        },
        'templates/my-templates': {
          title: elementor.translate('my_templates'),
          filter: {
            source: 'local'
          }
        }
      };
    }
  }, {
    key: "defaultRoutes",
    value: function defaultRoutes() {
      var _this = this;

      return {
        import: function _import() {
          _this.manager.layout.showImportView();
        },
        'save-template': function saveTemplate(args) {
          _this.manager.layout.showSaveTemplateView(args.model);
        },
        preview: function preview(args) {
          _this.manager.layout.showPreviewView(args.model);
        },
        connect: function connect(args) {
          args.texts = {
            title: elementor.translate('library/connect:title'),
            message: elementor.translate('library/connect:message'),
            button: elementor.translate('library/connect:button')
          };

          _this.manager.layout.showConnectView(args);
        }
      };
    }
  }, {
    key: "defaultCommands",
    value: function defaultCommands() {
      var modalCommands = (0, _get2.default)((0, _getPrototypeOf2.default)(Component.prototype), "defaultCommands", this).call(this);
      return (0, _objectSpread2.default)((0, _objectSpread2.default)({}, modalCommands), this.importCommands(commands));
    }
  }, {
    key: "defaultShortcuts",
    value: function defaultShortcuts() {
      return {
        open: {
          keys: 'ctrl+shift+l'
        }
      };
    }
  }, {
    key: "onDocumentLoaded",
    value: function onDocumentLoaded(document) {
      this.setDefaultRoute(document.config.remoteLibrary.default_route);
      this.maybeOpenLibrary();
    }
  }, {
    key: "renderTab",
    value: function renderTab(tab) {
      var currentTab = this.tabs[tab],
          filter = currentTab.getFilter ? currentTab.getFilter() : currentTab.filter;
      this.manager.setScreen(filter);
    }
  }, {
    key: "activateTab",
    value: function activateTab(tab) {
      $e.routes.saveState('library');
      (0, _get2.default)((0, _getPrototypeOf2.default)(Component.prototype), "activateTab", this).call(this, tab);
    }
  }, {
    key: "open",
    value: function open() {
      (0, _get2.default)((0, _getPrototypeOf2.default)(Component.prototype), "open", this).call(this);

      if (!this.manager.layout) {
        this.manager.layout = this.layout;
      }

      this.manager.layout.setHeaderDefaultParts();
      return true;
    }
  }, {
    key: "close",
    value: function close() {
      if (!(0, _get2.default)((0, _getPrototypeOf2.default)(Component.prototype), "close", this).call(this)) {
        return false;
      }

      this.manager.modalConfig = {};
      return true;
    }
  }, {
    key: "show",
    value: function show(args) {
      this.manager.modalConfig = args;

      if (args.toDefault || !$e.routes.restoreState('library')) {
        $e.route(this.getDefaultRoute());
      }
    } // TODO: Move function to 'insert-template' command.

  }, {
    key: "insertTemplate",
    value: function insertTemplate(args) {
      var _this2 = this;

      var autoImportSettings = elementor.config.document.remoteLibrary.autoImportSettings,
          model = args.model;
      var _args$withPageSetting = args.withPageSettings,
          withPageSettings = _args$withPageSetting === void 0 ? null : _args$withPageSetting;

      if (autoImportSettings) {
        withPageSettings = true;
      }

      if (null === withPageSettings && model.get('hasPageSettings')) {
        var insertTemplateHandler = this.getImportSettingsDialog();
        insertTemplateHandler.showImportDialog(model);
        return;
      }

      this.manager.layout.showLoadingView();
      this.manager.requestTemplateContent(model.get('source'), model.get('template_id'), {
        data: {
          with_page_settings: withPageSettings
        },
        success: function success(data) {
          // Clone the `modalConfig.importOptions` because it deleted during the closing.
          var importOptions = jQuery.extend({}, _this2.manager.modalConfig.importOptions);
          importOptions.withPageSettings = withPageSettings; // Hide for next open.

          _this2.manager.layout.hideLoadingView();

          _this2.manager.layout.hideModal();

          $e.run('document/elements/import', {
            model: model,
            data: data,
            options: importOptions
          });
        },
        error: function error(data) {
          _this2.manager.showErrorDialog(data);
        },
        complete: function complete() {
          _this2.manager.layout.hideLoadingView();
        }
      });
    }
  }, {
    key: "getImportSettingsDialog",
    value: function getImportSettingsDialog() {
      // Moved from ./behaviors/insert-template.js
      var InsertTemplateHandler = {
        dialog: null,
        showImportDialog: function showImportDialog(model) {
          var dialog = InsertTemplateHandler.getDialog();

          dialog.onConfirm = function () {
            $e.run('library/insert-template', {
              model: model,
              withPageSettings: true
            });
          };

          dialog.onCancel = function () {
            $e.run('library/insert-template', {
              model: model,
              withPageSettings: false
            });
          };

          dialog.show();
        },
        initDialog: function initDialog() {
          InsertTemplateHandler.dialog = elementorCommon.dialogsManager.createWidget('confirm', {
            id: 'elementor-insert-template-settings-dialog',
            headerMessage: elementor.translate('import_template_dialog_header'),
            message: elementor.translate('import_template_dialog_message') + '<br>' + elementor.translate('import_template_dialog_message_attention'),
            strings: {
              confirm: elementor.translate('yes'),
              cancel: elementor.translate('no')
            }
          });
        },
        getDialog: function getDialog() {
          if (!InsertTemplateHandler.dialog) {
            InsertTemplateHandler.initDialog();
          }

          return InsertTemplateHandler.dialog;
        }
      };
      return InsertTemplateHandler;
    }
  }, {
    key: "getTabsWrapperSelector",
    value: function getTabsWrapperSelector() {
      return '#elementor-template-library-header-menu';
    }
  }, {
    key: "getModalLayout",
    value: function getModalLayout() {
      return TemplateLibraryLayoutView;
    }
  }, {
    key: "maybeOpenLibrary",
    value: function maybeOpenLibrary() {
      if ('#library' === location.hash) {
        $e.run('library/open');
        location.hash = '';
      }
    }
  }]);
  return Component;
}(_componentModalBase.default);

exports.default = Component;

/***/ }),
/* 539 */
/***/ (function(module, exports, __webpack_require__) {

"use strict";


var _Object$defineProperty = __webpack_require__(1);

_Object$defineProperty(exports, "__esModule", {
  value: true
});

_Object$defineProperty(exports, "InsertTemplate", {
  enumerable: true,
  get: function get() {
    return _insertTemplate.InsertTemplate;
  }
});

_Object$defineProperty(exports, "Open", {
  enumerable: true,
  get: function get() {
    return _open.Open;
  }
});

var _insertTemplate = __webpack_require__(540);

var _open = __webpack_require__(541);

/***/ }),
/* 540 */
/***/ (function(module, exports, __webpack_require__) {

"use strict";


var _interopRequireDefault = __webpack_require__(0);

var _Object$defineProperty = __webpack_require__(1);

_Object$defineProperty(exports, "__esModule", {
  value: true
});

exports.default = exports.InsertTemplate = void 0;

var _classCallCheck2 = _interopRequireDefault(__webpack_require__(2));

var _createClass2 = _interopRequireDefault(__webpack_require__(3));

var _inherits2 = _interopRequireDefault(__webpack_require__(4));

var _createSuper2 = _interopRequireDefault(__webpack_require__(5));

var _commandBase = _interopRequireDefault(__webpack_require__(21));

var InsertTemplate = /*#__PURE__*/function (_CommandBase) {
  (0, _inherits2.default)(InsertTemplate, _CommandBase);

  var _super = (0, _createSuper2.default)(InsertTemplate);

  function InsertTemplate() {
    (0, _classCallCheck2.default)(this, InsertTemplate);
    return _super.apply(this, arguments);
  }

  (0, _createClass2.default)(InsertTemplate, [{
    key: "apply",
    value: function apply(args) {
      return this.component.insertTemplate(args);
    }
  }]);
  return InsertTemplate;
}(_commandBase.default);

exports.InsertTemplate = InsertTemplate;
var _default = InsertTemplate;
exports.default = _default;

/***/ }),
/* 541 */
/***/ (function(module, exports, __webpack_require__) {

"use strict";


var _interopRequireDefault = __webpack_require__(0);

var _Object$defineProperty = __webpack_require__(1);

_Object$defineProperty(exports, "__esModule", {
  value: true
});

exports.default = exports.Open = void 0;

var _classCallCheck2 = _interopRequireDefault(__webpack_require__(2));

var _createClass2 = _interopRequireDefault(__webpack_require__(3));

var _inherits2 = _interopRequireDefault(__webpack_require__(4));

var _createSuper2 = _interopRequireDefault(__webpack_require__(5));

var _commandBase = _interopRequireDefault(__webpack_require__(21));

var Open = /*#__PURE__*/function (_CommandBase) {
  (0, _inherits2.default)(Open, _CommandBase);

  var _super = (0, _createSuper2.default)(Open);

  function Open() {
    (0, _classCallCheck2.default)(this, Open);
    return _super.apply(this, arguments);
  }

  (0, _createClass2.default)(Open, [{
    key: "apply",
    value: function apply(args) {
      return this.component.show(args);
    }
  }]);
  return Open;
}(_commandBase.default);

exports.Open = Open;
var _default = Open;
exports.default = _default;

/***/ }),
/* 542 */
/***/ (function(module, exports, __webpack_require__) {

"use strict";


var TemplateLibraryHeaderActionsView = __webpack_require__(543),
    TemplateLibraryHeaderMenuView = __webpack_require__(544),
    TemplateLibraryHeaderPreviewView = __webpack_require__(545),
    TemplateLibraryHeaderBackView = __webpack_require__(546),
    TemplateLibraryCollectionView = __webpack_require__(547),
    TemplateLibrarySaveTemplateView = __webpack_require__(551),
    TemplateLibraryImportView = __webpack_require__(552),
    TemplateLibraryConnectView = __webpack_require__(553),
    TemplateLibraryPreviewView = __webpack_require__(554);

module.exports = elementorModules.common.views.modal.Layout.extend({
  getModalOptions: function getModalOptions() {
    return {
      id: 'elementor-template-library-modal'
    };
  },
  getLogoOptions: function getLogoOptions() {
    return {
      title: elementor.translate('library'),
      click: function click() {
        $e.run('library/open', {
          toDefault: true
        });
      }
    };
  },
  getTemplateActionButton: function getTemplateActionButton(templateData) {
    var viewId = '#tmpl-elementor-template-library-' + (templateData.isPro ? 'get-pro-button' : 'insert-button');
    viewId = elementor.hooks.applyFilters('elementor/editor/template-library/template/action-button', viewId, templateData);
    var template = Marionette.TemplateCache.get(viewId);
    return Marionette.Renderer.render(template);
  },
  setHeaderDefaultParts: function setHeaderDefaultParts() {
    var headerView = this.getHeaderView();
    headerView.tools.show(new TemplateLibraryHeaderActionsView());
    headerView.menuArea.show(new TemplateLibraryHeaderMenuView());
    this.showLogo();
  },
  showTemplatesView: function showTemplatesView(templatesCollection) {
    this.modalContent.show(new TemplateLibraryCollectionView({
      collection: templatesCollection
    }));
  },
  showImportView: function showImportView() {
    var headerView = this.getHeaderView();
    headerView.menuArea.reset();
    this.modalContent.show(new TemplateLibraryImportView());
    headerView.logoArea.show(new TemplateLibraryHeaderBackView());
  },
  showConnectView: function showConnectView(args) {
    this.getHeaderView().menuArea.reset();
    this.modalContent.show(new TemplateLibraryConnectView(args));
  },
  showSaveTemplateView: function showSaveTemplateView(elementModel) {
    this.getHeaderView().menuArea.reset();
    this.modalContent.show(new TemplateLibrarySaveTemplateView({
      model: elementModel
    }));
  },
  showPreviewView: function showPreviewView(templateModel) {
    this.modalContent.show(new TemplateLibraryPreviewView({
      url: templateModel.get('url')
    }));
    var headerView = this.getHeaderView();
    headerView.menuArea.reset();
    headerView.tools.show(new TemplateLibraryHeaderPreviewView({
      model: templateModel
    }));
    headerView.logoArea.show(new TemplateLibraryHeaderBackView());
  }
});

/***/ }),
/* 543 */
/***/ (function(module, exports, __webpack_require__) {

"use strict";


module.exports = Marionette.ItemView.extend({
  template: '#tmpl-elementor-template-library-header-actions',
  id: 'elementor-template-library-header-actions',
  ui: {
    import: '#elementor-template-library-header-import i',
    sync: '#elementor-template-library-header-sync i',
    save: '#elementor-template-library-header-save i'
  },
  events: {
    'click @ui.import': 'onImportClick',
    'click @ui.sync': 'onSyncClick',
    'click @ui.save': 'onSaveClick'
  },
  onImportClick: function onImportClick() {
    $e.route('library/import');
  },
  onSyncClick: function onSyncClick() {
    var self = this;
    self.ui.sync.addClass('eicon-animation-spin');
    elementor.templates.requestLibraryData({
      onUpdate: function onUpdate() {
        self.ui.sync.removeClass('eicon-animation-spin');
        $e.routes.refreshContainer('library');
      },
      forceUpdate: true,
      forceSync: true
    });
  },
  onSaveClick: function onSaveClick() {
    $e.route('library/save-template');
  }
});

/***/ }),
/* 544 */
/***/ (function(module, exports, __webpack_require__) {

"use strict";


module.exports = Marionette.ItemView.extend({
  template: '#tmpl-elementor-template-library-header-menu',
  id: 'elementor-template-library-header-menu',
  templateHelpers: function templateHelpers() {
    return {
      tabs: $e.components.get('library').getTabs()
    };
  }
});

/***/ }),
/* 545 */
/***/ (function(module, exports, __webpack_require__) {

"use strict";


var TemplateLibraryInsertTemplateBehavior = __webpack_require__(378);

module.exports = Marionette.ItemView.extend({
  template: '#tmpl-elementor-template-library-header-preview',
  id: 'elementor-template-library-header-preview',
  behaviors: {
    insertTemplate: {
      behaviorClass: TemplateLibraryInsertTemplateBehavior
    }
  }
});

/***/ }),
/* 546 */
/***/ (function(module, exports, __webpack_require__) {

"use strict";


module.exports = Marionette.ItemView.extend({
  template: '#tmpl-elementor-template-library-header-back',
  id: 'elementor-template-library-header-preview-back',
  events: {
    click: 'onClick'
  },
  onClick: function onClick() {
    $e.routes.restoreState('library');
  }
});

/***/ }),
/* 547 */
/***/ (function(module, exports, __webpack_require__) {

"use strict";


var TemplateLibraryTemplateLocalView = __webpack_require__(548),
    TemplateLibraryTemplateRemoteView = __webpack_require__(549),
    TemplateLibraryCollectionView;

TemplateLibraryCollectionView = Marionette.CompositeView.extend({
  template: '#tmpl-elementor-template-library-templates',
  id: 'elementor-template-library-templates',
  childViewContainer: '#elementor-template-library-templates-container',
  reorderOnSort: true,
  emptyView: function emptyView() {
    var EmptyView = __webpack_require__(550);

    return new EmptyView();
  },
  ui: {
    textFilter: '#elementor-template-library-filter-text',
    selectFilter: '.elementor-template-library-filter-select',
    myFavoritesFilter: '#elementor-template-library-filter-my-favorites',
    orderInputs: '.elementor-template-library-order-input',
    orderLabels: 'label.elementor-template-library-order-label'
  },
  events: {
    'input @ui.textFilter': 'onTextFilterInput',
    'change @ui.selectFilter': 'onSelectFilterChange',
    'change @ui.myFavoritesFilter': 'onMyFavoritesFilterChange',
    'mousedown @ui.orderLabels': 'onOrderLabelsClick'
  },
  comparators: {
    title: function title(model) {
      return model.get('title').toLowerCase();
    },
    popularityIndex: function popularityIndex(model) {
      var popularityIndex = model.get('popularityIndex');

      if (!popularityIndex) {
        popularityIndex = model.get('date');
      }

      return -popularityIndex;
    },
    trendIndex: function trendIndex(model) {
      var trendIndex = model.get('trendIndex');

      if (!trendIndex) {
        trendIndex = model.get('date');
      }

      return -trendIndex;
    }
  },
  getChildView: function getChildView(childModel) {
    if ('remote' === childModel.get('source')) {
      return TemplateLibraryTemplateRemoteView;
    }

    return TemplateLibraryTemplateLocalView;
  },
  initialize: function initialize() {
    this.listenTo(elementor.channels.templates, 'filter:change', this._renderChildren);
  },
  filter: function filter(childModel) {
    var filterTerms = elementor.templates.getFilterTerms(),
        passingFilter = true;
    jQuery.each(filterTerms, function (filterTermName) {
      var filterValue = elementor.templates.getFilter(filterTermName);

      if (!filterValue) {
        return;
      }

      if (this.callback) {
        var callbackResult = this.callback.call(childModel, filterValue);

        if (!callbackResult) {
          passingFilter = false;
        }

        return callbackResult;
      }

      var filterResult = filterValue === childModel.get(filterTermName);

      if (!filterResult) {
        passingFilter = false;
      }

      return filterResult;
    });
    return passingFilter;
  },
  order: function order(by, reverseOrder) {
    var comparator = this.comparators[by] || by;

    if (reverseOrder) {
      comparator = this.reverseOrder(comparator);
    }

    this.collection.comparator = comparator;
    this.collection.sort();
  },
  reverseOrder: function reverseOrder(comparator) {
    if ('function' !== typeof comparator) {
      var comparatorValue = comparator;

      comparator = function comparator(model) {
        return model.get(comparatorValue);
      };
    }

    return function (left, right) {
      var l = comparator(left),
          r = comparator(right);

      if (undefined === l) {
        return -1;
      }

      if (undefined === r) {
        return 1;
      }

      if (l < r) {
        return 1;
      }

      if (l > r) {
        return -1;
      }

      return 0;
    };
  },
  addSourceData: function addSourceData() {
    var isEmpty = this.children.isEmpty();
    this.$el.attr('data-template-source', isEmpty ? 'empty' : elementor.templates.getFilter('source'));
  },
  setFiltersUI: function setFiltersUI() {
    var $filters = this.$(this.ui.selectFilter);
    $filters.select2({
      placeholder: elementor.translate('category'),
      allowClear: true,
      width: 150,
      dropdownParent: this.$el
    });
  },
  setMasonrySkin: function setMasonrySkin() {
    var masonry = new elementorModules.utils.Masonry({
      container: this.$childViewContainer,
      items: this.$childViewContainer.children()
    });
    this.$childViewContainer.imagesLoaded(masonry.run.bind(masonry));
  },
  toggleFilterClass: function toggleFilterClass() {
    this.$el.toggleClass('elementor-templates-filter-active', !!(elementor.templates.getFilter('text') || elementor.templates.getFilter('favorite')));
  },
  onRender: function onRender() {
    if ('remote' === elementor.templates.getFilter('source') && 'page' !== elementor.templates.getFilter('type')) {
      this.setFiltersUI();
    }
  },
  onRenderCollection: function onRenderCollection() {
    this.addSourceData();
    this.toggleFilterClass();

    if ('remote' === elementor.templates.getFilter('source') && 'page' !== elementor.templates.getFilter('type')) {
      this.setMasonrySkin();
    }
  },
  onBeforeRenderEmpty: function onBeforeRenderEmpty() {
    this.addSourceData();
  },
  onTextFilterInput: function onTextFilterInput() {
    elementor.templates.setFilter('text', this.ui.textFilter.val());
  },
  onSelectFilterChange: function onSelectFilterChange(event) {
    var $select = jQuery(event.currentTarget),
        filterName = $select.data('elementor-filter');
    elementor.templates.setFilter(filterName, $select.val());
  },
  onMyFavoritesFilterChange: function onMyFavoritesFilterChange() {
    elementor.templates.setFilter('favorite', this.ui.myFavoritesFilter[0].checked);
  },
  onOrderLabelsClick: function onOrderLabelsClick(event) {
    var $clickedInput = jQuery(event.currentTarget.control),
        toggle;

    if (!$clickedInput[0].checked) {
      toggle = 'asc' !== $clickedInput.data('default-ordering-direction');
    }

    $clickedInput.toggleClass('elementor-template-library-order-reverse', toggle);
    this.order($clickedInput.val(), $clickedInput.hasClass('elementor-template-library-order-reverse'));
  }
});
module.exports = TemplateLibraryCollectionView;

/***/ }),
/* 548 */
/***/ (function(module, exports, __webpack_require__) {

"use strict";


var TemplateLibraryTemplateView = __webpack_require__(379),
    TemplateLibraryTemplateLocalView;

TemplateLibraryTemplateLocalView = TemplateLibraryTemplateView.extend({
  template: '#tmpl-elementor-template-library-template-local',
  ui: function ui() {
    return _.extend(TemplateLibraryTemplateView.prototype.ui.apply(this, arguments), {
      deleteButton: '.elementor-template-library-template-delete',
      morePopup: '.elementor-template-library-template-more',
      toggleMore: '.elementor-template-library-template-more-toggle',
      toggleMoreIcon: '.elementor-template-library-template-more-toggle i'
    });
  },
  events: function events() {
    return _.extend(TemplateLibraryTemplateView.prototype.events.apply(this, arguments), {
      'click @ui.deleteButton': 'onDeleteButtonClick',
      'click @ui.toggleMore': 'onToggleMoreClick'
    });
  },
  onDeleteButtonClick: function onDeleteButtonClick() {
    var toggleMoreIcon = this.ui.toggleMoreIcon;
    elementor.templates.deleteTemplate(this.model, {
      onConfirm: function onConfirm() {
        toggleMoreIcon.removeClass('eicon-ellipsis-h').addClass('eicon-loading eicon-animation-spin');
      },
      onSuccess: function onSuccess() {
        elementor.templates.showTemplates();
      }
    });
  },
  onToggleMoreClick: function onToggleMoreClick() {
    this.ui.morePopup.show();
  },
  onPreviewButtonClick: function onPreviewButtonClick() {
    open(this.model.get('url'), '_blank');
  }
});
module.exports = TemplateLibraryTemplateLocalView;

/***/ }),
/* 549 */
/***/ (function(module, exports, __webpack_require__) {

"use strict";


var TemplateLibraryTemplateView = __webpack_require__(379),
    TemplateLibraryTemplateRemoteView;

TemplateLibraryTemplateRemoteView = TemplateLibraryTemplateView.extend({
  template: '#tmpl-elementor-template-library-template-remote',
  ui: function ui() {
    return jQuery.extend(TemplateLibraryTemplateView.prototype.ui.apply(this, arguments), {
      favoriteCheckbox: '.elementor-template-library-template-favorite-input'
    });
  },
  events: function events() {
    return jQuery.extend(TemplateLibraryTemplateView.prototype.events.apply(this, arguments), {
      'change @ui.favoriteCheckbox': 'onFavoriteCheckboxChange'
    });
  },
  onPreviewButtonClick: function onPreviewButtonClick() {
    $e.route('library/preview', {
      model: this.model
    });
  },
  onFavoriteCheckboxChange: function onFavoriteCheckboxChange() {
    var isFavorite = this.ui.favoriteCheckbox[0].checked;
    this.model.set('favorite', isFavorite);
    elementor.templates.markAsFavorite(this.model, isFavorite);

    if (!isFavorite && elementor.templates.getFilter('favorite')) {
      elementor.channels.templates.trigger('filter:change');
    }
  }
});
module.exports = TemplateLibraryTemplateRemoteView;

/***/ }),
/* 550 */
/***/ (function(module, exports, __webpack_require__) {

"use strict";


var TemplateLibraryTemplatesEmptyView;
TemplateLibraryTemplatesEmptyView = Marionette.ItemView.extend({
  id: 'elementor-template-library-templates-empty',
  template: '#tmpl-elementor-template-library-templates-empty',
  ui: {
    title: '.elementor-template-library-blank-title',
    message: '.elementor-template-library-blank-message'
  },
  modesStrings: {
    empty: {
      title: elementor.translate('templates_empty_title'),
      message: elementor.translate('templates_empty_message')
    },
    noResults: {
      title: elementor.translate('templates_no_results_title'),
      message: elementor.translate('templates_no_results_message')
    },
    noFavorites: {
      title: elementor.translate('templates_no_favorites_title'),
      message: elementor.translate('templates_no_favorites_message')
    }
  },
  getCurrentMode: function getCurrentMode() {
    if (elementor.templates.getFilter('text')) {
      return 'noResults';
    }

    if (elementor.templates.getFilter('favorite')) {
      return 'noFavorites';
    }

    return 'empty';
  },
  onRender: function onRender() {
    var modeStrings = this.modesStrings[this.getCurrentMode()];
    this.ui.title.html(modeStrings.title);
    this.ui.message.html(modeStrings.message);
  }
});
module.exports = TemplateLibraryTemplatesEmptyView;

/***/ }),
/* 551 */
/***/ (function(module, exports, __webpack_require__) {

"use strict";


var TemplateLibrarySaveTemplateView;
TemplateLibrarySaveTemplateView = Marionette.ItemView.extend({
  id: 'elementor-template-library-save-template',
  template: '#tmpl-elementor-template-library-save-template',
  ui: {
    form: '#elementor-template-library-save-template-form',
    submitButton: '#elementor-template-library-save-template-submit'
  },
  events: {
    'submit @ui.form': 'onFormSubmit'
  },
  getSaveType: function getSaveType() {
    var type;

    if (this.model) {
      type = this.model.get('elType');
    } else if (elementor.config.document.library && elementor.config.document.library.save_as_same_type) {
      type = elementor.config.document.type;
    } else {
      type = 'page';
    }

    return type;
  },
  templateHelpers: function templateHelpers() {
    var saveType = this.getSaveType(),
        templateType = elementor.templates.getTemplateTypes(saveType);
    return templateType.saveDialog;
  },
  onFormSubmit: function onFormSubmit(event) {
    event.preventDefault();
    var formData = this.ui.form.elementorSerializeObject(),
        saveType = this.getSaveType(),
        JSONParams = {
      remove: ['default']
    };
    formData.content = this.model ? [this.model.toJSON(JSONParams)] : elementor.elements.toJSON(JSONParams);
    this.ui.submitButton.addClass('elementor-button-state');
    elementor.templates.saveTemplate(saveType, formData);
  }
});
module.exports = TemplateLibrarySaveTemplateView;

/***/ }),
/* 552 */
/***/ (function(module, exports, __webpack_require__) {

"use strict";


__webpack_require__(58);

__webpack_require__(39);

var TemplateLibraryImportView;
TemplateLibraryImportView = Marionette.ItemView.extend({
  template: '#tmpl-elementor-template-library-import',
  id: 'elementor-template-library-import',
  ui: {
    uploadForm: '#elementor-template-library-import-form',
    fileInput: '#elementor-template-library-import-form-input'
  },
  events: {
    'change @ui.fileInput': 'onFileInputChange'
  },
  droppedFiles: null,
  submitForm: function submitForm() {
    var _this = this;

    var file;

    if (this.droppedFiles) {
      file = this.droppedFiles[0];
      this.droppedFiles = null;
    } else {
      file = this.ui.fileInput[0].files[0];
      this.ui.uploadForm[0].reset();
    }

    var fileReader = new FileReader();

    fileReader.onload = function (event) {
      return _this.importTemplate(file.name, event.target.result.replace(/^[^,]+,/, ''));
    };

    fileReader.readAsDataURL(file);
  },
  importTemplate: function importTemplate(fileName, fileData) {
    var layout = elementor.templates.layout;
    var options = {
      data: {
        fileName: fileName,
        fileData: fileData
      },
      success: function success(successData) {
        elementor.templates.getTemplatesCollection().add(successData);
        $e.route('library/templates/my-templates');
      },
      error: function error(errorData) {
        elementor.templates.showErrorDialog(errorData);
        layout.showImportView();
      },
      complete: function complete() {
        layout.hideLoadingView();
      }
    };
    elementorCommon.ajax.addRequest('import_template', options);
    layout.showLoadingView();
  },
  onRender: function onRender() {
    this.ui.uploadForm.on({
      'drag dragstart dragend dragover dragenter dragleave drop': this.onFormActions.bind(this),
      dragenter: this.onFormDragEnter.bind(this),
      'dragleave drop': this.onFormDragLeave.bind(this),
      drop: this.onFormDrop.bind(this)
    });
  },
  onFormActions: function onFormActions(event) {
    event.preventDefault();
    event.stopPropagation();
  },
  onFormDragEnter: function onFormDragEnter() {
    this.ui.uploadForm.addClass('elementor-drag-over');
  },
  onFormDragLeave: function onFormDragLeave(event) {
    if (jQuery(event.relatedTarget).closest(this.ui.uploadForm).length) {
      return;
    }

    this.ui.uploadForm.removeClass('elementor-drag-over');
  },
  onFormDrop: function onFormDrop(event) {
    this.droppedFiles = event.originalEvent.dataTransfer.files;
    this.submitForm();
  },
  onFileInputChange: function onFileInputChange() {
    this.submitForm();
  }
});
module.exports = TemplateLibraryImportView;

/***/ }),
/* 553 */
/***/ (function(module, exports, __webpack_require__) {

"use strict";


module.exports = Marionette.ItemView.extend({
  template: '#tmpl-elementor-template-library-connect',
  id: 'elementor-template-library-connect',
  ui: {
    connect: '#elementor-template-library-connect__button',
    thumbnails: '#elementor-template-library-connect-thumbnails'
  },
  templateHelpers: function templateHelpers() {
    return this.getOption('texts');
  },
  onRender: function onRender() {
    var _this = this;

    this.ui.connect.elementorConnect({
      success: function success() {
        elementor.config.library_connect.is_connected = true; // If is connecting during insert template.

        if (_this.getOption('model')) {
          $e.run('library/insert-template', {
            model: _this.getOption('model')
          });
        } else {
          $e.run('library/close');
          elementor.notifications.showToast({
            message: elementor.translate('connected_successfully')
          });
        }
      },
      error: function error() {
        elementor.config.library_connect.is_connected = false;
      }
    });
  }
});

/***/ }),
/* 554 */
/***/ (function(module, exports, __webpack_require__) {

"use strict";


var TemplateLibraryPreviewView;
TemplateLibraryPreviewView = Marionette.ItemView.extend({
  template: '#tmpl-elementor-template-library-preview',
  id: 'elementor-template-library-preview',
  ui: {
    iframe: '> iframe'
  },
  onRender: function onRender() {
    this.ui.iframe.attr('src', this.getOption('url'));
  }
});
module.exports = TemplateLibraryPreviewView;

/***/ }),
/* 555 */
/***/ (function(module, exports, __webpack_require__) {

"use strict";


var TemplateLibraryTemplateModel = __webpack_require__(556),
    TemplateLibraryCollection;

TemplateLibraryCollection = Backbone.Collection.extend({
  model: TemplateLibraryTemplateModel
});
module.exports = TemplateLibraryCollection;

/***/ }),
/* 556 */
/***/ (function(module, exports, __webpack_require__) {

"use strict";


module.exports = Backbone.Model.extend({
  defaults: {
    template_id: 0,
    title: '',
    source: '',
    type: '',
    subtype: '',
    author: '',
    thumbnail: '',
    url: '',
    export_link: '',
    tags: []
  }
});

/***/ }),
/* 557 */
/***/ (function(module, exports, __webpack_require__) {

"use strict";


__webpack_require__(39);

__webpack_require__(119);

var Conditions;

Conditions = function Conditions() {
  var self = this;

  this.compare = function (leftValue, rightValue, operator) {
    switch (operator) {
      /* eslint-disable eqeqeq */
      case '==':
        return leftValue == rightValue;

      case '!=':
        return leftValue != rightValue;

      /* eslint-enable eqeqeq */

      case '!==':
        return leftValue !== rightValue;

      case 'in':
        return -1 !== rightValue.indexOf(leftValue);

      case '!in':
        return -1 === rightValue.indexOf(leftValue);

      case 'contains':
        return -1 !== leftValue.indexOf(rightValue);

      case '!contains':
        return -1 === leftValue.indexOf(rightValue);

      case '<':
        return leftValue < rightValue;

      case '<=':
        return leftValue <= rightValue;

      case '>':
        return leftValue > rightValue;

      case '>=':
        return leftValue >= rightValue;

      default:
        return leftValue === rightValue;
    }
  };

  this.check = function (conditions, comparisonObject) {
    var isOrCondition = 'or' === conditions.relation,
        conditionSucceed = !isOrCondition;
    jQuery.each(conditions.terms, function () {
      var term = this,
          comparisonResult;

      if (term.terms) {
        comparisonResult = self.check(term, comparisonObject);
      } else {
        var parsedName = term.name.match(/(\w+)(?:\[(\w+)])?/),
            value = comparisonObject[parsedName[1]];

        if (parsedName[2]) {
          value = value[parsedName[2]];
        }

        comparisonResult = self.compare(value, term.value, term.operator);
      }

      if (isOrCondition) {
        if (comparisonResult) {
          conditionSucceed = true;
        }

        return !comparisonResult;
      }

      if (!comparisonResult) {
        return conditionSucceed = false;
      }
    });
    return conditionSucceed;
  };
};

module.exports = new Conditions();

/***/ }),
/* 558 */
/***/ (function(module, exports, __webpack_require__) {

"use strict";


var _interopRequireDefault = __webpack_require__(0);

__webpack_require__(25);

var _classCallCheck2 = _interopRequireDefault(__webpack_require__(2));

var _createClass2 = _interopRequireDefault(__webpack_require__(3));

var _assertThisInitialized2 = _interopRequireDefault(__webpack_require__(49));

var _inherits2 = _interopRequireDefault(__webpack_require__(4));

var _createSuper2 = _interopRequireDefault(__webpack_require__(5));

var _defineProperty2 = _interopRequireDefault(__webpack_require__(28));

var _temp;

module.exports = (_temp = /*#__PURE__*/function (_Marionette$Behavior) {
  (0, _inherits2.default)(FooterSaver, _Marionette$Behavior);

  var _super = (0, _createSuper2.default)(FooterSaver);

  function FooterSaver() {
    var _this;

    (0, _classCallCheck2.default)(this, FooterSaver);

    for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
      args[_key] = arguments[_key];
    }

    _this = _super.call.apply(_super, [this].concat(args));
    (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "previewWindow", null);
    return _this;
  }

  (0, _createClass2.default)(FooterSaver, [{
    key: "ui",
    value: function ui() {
      return {
        buttonPreview: '#elementor-panel-footer-saver-preview',
        buttonPublish: '#elementor-panel-saver-button-publish',
        buttonSaveOptions: '#elementor-panel-saver-button-save-options',
        buttonPublishLabel: '#elementor-panel-saver-button-publish-label',
        menuSaveDraft: '#elementor-panel-footer-sub-menu-item-save-draft',
        lastEditedWrapper: '.elementor-last-edited-wrapper'
      };
    }
  }, {
    key: "events",
    value: function events() {
      return {
        'click @ui.buttonPreview': 'onClickButtonPreview',
        'click @ui.buttonPublish': 'onClickButtonPublish',
        'click @ui.menuSaveDraft': 'onClickMenuSaveDraft'
      };
    }
  }, {
    key: "initialize",
    value: function initialize(options) {
      var _this2 = this;

      this.document = options.document || elementor.documents.getCurrent();
      elementor.on('document:loaded', function (document) {
        _this2.setMenuItems(document);

        _this2.setLastEdited(document.config.last_edited);
      }); // TODO: Temp, footerSaver should be removed.

      $e.components.get('document/save').footerSaver = this;
    }
  }, {
    key: "activateSaveButtons",
    value: function activateSaveButtons(document, status) {
      var hasChanges = status || 'draft' === document.container.settings.get('post_status');
      this.ui.buttonPublish.add(this.ui.menuSaveDraft).toggleClass('elementor-disabled', !hasChanges);
      this.ui.buttonSaveOptions.toggleClass('elementor-disabled', !hasChanges);
    }
  }, {
    key: "onRender",
    value: function onRender() {
      this.addTooltip();
    }
  }, {
    key: "setLastEdited",
    value: function setLastEdited(lastEdited) {
      this.ui.lastEditedWrapper.removeClass('elementor-button-state').find('.elementor-last-edited').html(lastEdited);
    }
  }, {
    key: "onClickButtonPreview",
    value: function onClickButtonPreview() {
      $e.run('editor/documents/preview', {
        id: elementor.documents.getCurrent().id
      });
    }
  }, {
    key: "onClickButtonPublish",
    value: function onClickButtonPublish() {
      if (this.ui.buttonPublish.hasClass('elementor-disabled')) {
        return;
      }

      $e.run('document/save/default');
    }
  }, {
    key: "onClickMenuSaveDraft",
    value: function onClickMenuSaveDraft() {
      $e.run('document/save/draft');
    }
  }, {
    key: "setMenuItems",
    value: function setMenuItems(document) {
      var postStatus = document.container.settings.get('post_status');
      var publishLabel = 'publish';

      switch (postStatus) {
        case 'publish':
        case 'private':
          publishLabel = 'update';

          if (document.config.revisions.current_id !== document.id) {
            this.activateSaveButtons(document, true);
          }

          break;

        case 'draft':
          if (!document.config.user.can_publish) {
            publishLabel = 'submit';
          }

          this.activateSaveButtons(document, true);
          break;

        case 'pending': // User cannot change post status

        case undefined:
          // TODO: as a contributor it's undefined instead of 'pending'.
          if (!document.config.user.can_publish) {
            publishLabel = 'update';
          }

          break;
      }

      this.ui.buttonPublishLabel.html(elementor.translate(publishLabel));
    }
  }, {
    key: "addTooltip",
    value: function addTooltip() {
      // Create tooltip on controls
      this.$el.find('.tooltip-target').each(function (index, button) {
        var $button = jQuery(button);
        $button.tipsy({
          // `n` for down, `s` for up
          gravity: 's',
          offset: $button.data('tooltip-offset'),
          title: function title() {
            return this.getAttribute('data-tooltip');
          }
        });
      });
    } // TODO: Consider $e.internal( 'editor/documents/preview-refresh' ); ?.

  }, {
    key: "refreshWpPreview",
    value: function refreshWpPreview() {
      if (this.previewWindow) {
        // Refresh URL form updated config.
        try {
          this.previewWindow.location.href = elementor.config.document.urls.wp_preview;
        } catch (e) {// If the this.previewWindow is closed or it's domain was changed.
          // Do nothing.
        }
      }
    }
  }]);
  return FooterSaver;
}(Marionette.Behavior), _temp);

/***/ }),
/* 559 */
/***/ (function(module, exports, __webpack_require__) {

"use strict";


var ControlBaseView = __webpack_require__(281);

module.exports = ControlBaseView.extend({
  ui: function ui() {
    var ui = ControlBaseView.prototype.ui.apply(this, arguments);
    ui.button = 'button';
    return ui;
  },
  events: {
    'click @ui.button': 'onButtonClick'
  },
  onButtonClick: function onButtonClick() {
    var eventName = this.model.get('event');
    elementor.channels.editor.trigger(eventName, this);
  }
});

/***/ }),
/* 560 */
/***/ (function(module, exports, __webpack_require__) {

"use strict";


__webpack_require__(119);

var ControlBaseDataView = __webpack_require__(127),
    ControlCodeEditorItemView;

ControlCodeEditorItemView = ControlBaseDataView.extend({
  ui: function ui() {
    var ui = ControlBaseDataView.prototype.ui.apply(this, arguments);
    ui.editor = '.elementor-code-editor';
    return ui;
  },
  onReady: function onReady() {
    var self = this;

    if ('undefined' === typeof ace) {
      return;
    }

    var langTools = ace.require('ace/ext/language_tools'),
        uiTheme = elementor.settings.editorPreferences.model.get('ui_theme'),
        userPrefersDark = matchMedia('(prefers-color-scheme: dark)').matches;

    self.editor = ace.edit(this.ui.editor[0]);
    jQuery(self.editor.container).addClass('elementor-input-style elementor-code-editor');
    self.editor.setOptions({
      mode: 'ace/mode/' + self.model.attributes.language,
      minLines: 10,
      maxLines: Infinity,
      showGutter: true,
      useWorker: true,
      enableBasicAutocompletion: true,
      enableLiveAutocompletion: true
    });

    if ('dark' === uiTheme || 'auto' === uiTheme && userPrefersDark) {
      self.editor.setTheme('ace/theme/merbivore_soft');
    }

    self.editor.getSession().setUseWrapMode(true);
    elementor.panel.$el.on('resize.aceEditor', self.onResize.bind(this));

    if ('css' === self.model.attributes.language) {
      var selectorCompleter = {
        getCompletions: function getCompletions(editor, session, pos, prefix, callback) {
          var list = [],
              token = session.getTokenAt(pos.row, pos.column);

          if (0 < prefix.length && 'selector'.match(prefix) && 'constant' === token.type) {
            list = [{
              name: 'selector',
              value: 'selector',
              score: 1,
              meta: 'Elementor'
            }];
          }

          callback(null, list);
        }
      };
      langTools.addCompleter(selectorCompleter);
    }

    self.editor.setValue(self.getControlValue(), -1); // -1 =  move cursor to the start

    self.editor.on('change', function () {
      self.setValue(self.editor.getValue());
    });

    if ('html' === self.model.attributes.language) {
      // Remove the `doctype` annotation
      var session = self.editor.getSession();
      session.on('changeAnnotation', function () {
        var annotations = session.getAnnotations() || [],
            annotationsLength = annotations.length,
            index = annotations.length;

        while (index--) {
          if (/doctype first\. Expected/.test(annotations[index].text)) {
            annotations.splice(index, 1);
          }
        }

        if (annotationsLength > annotations.length) {
          session.setAnnotations(annotations);
        }
      });
    }
  },
  onResize: function onResize() {
    this.editor.resize();
  },
  onDestroy: function onDestroy() {
    elementor.panel.$el.off('resize.aceEditor');
  }
});
module.exports = ControlCodeEditorItemView;

/***/ }),
/* 561 */
/***/ (function(module, exports, __webpack_require__) {

"use strict";


__webpack_require__(562);

var ControlBaseUnitsItemView = __webpack_require__(381),
    ControlDimensionsItemView;

ControlDimensionsItemView = ControlBaseUnitsItemView.extend({
  ui: function ui() {
    var ui = ControlBaseUnitsItemView.prototype.ui.apply(this, arguments);
    ui.controls = '.elementor-control-dimension > input:enabled';
    ui.link = 'button.elementor-link-dimensions';
    return ui;
  },
  events: function events() {
    return _.extend(ControlBaseUnitsItemView.prototype.events.apply(this, arguments), {
      'click @ui.link': 'onLinkDimensionsClicked'
    });
  },
  defaultDimensionValue: 0,
  initialize: function initialize() {
    ControlBaseUnitsItemView.prototype.initialize.apply(this, arguments); // TODO: Need to be in helpers, and not in variable

    this.model.set('allowed_dimensions', this.filterDimensions(this.model.get('allowed_dimensions')));
  },
  getPossibleDimensions: function getPossibleDimensions() {
    return ['top', 'right', 'bottom', 'left'];
  },
  filterDimensions: function filterDimensions(filter) {
    filter = filter || 'all';
    var dimensions = this.getPossibleDimensions();

    if ('all' === filter) {
      return dimensions;
    }

    if (!_.isArray(filter)) {
      if ('horizontal' === filter) {
        filter = ['right', 'left'];
      } else if ('vertical' === filter) {
        filter = ['top', 'bottom'];
      }
    }

    return filter;
  },
  onReady: function onReady() {
    var self = this,
        currentValue = self.getControlValue();

    if (!self.isLinkedDimensions()) {
      self.ui.link.addClass('unlinked');
      self.ui.controls.each(function (index, element) {
        var value = currentValue[element.dataset.setting];

        if (_.isEmpty(value)) {
          value = self.defaultDimensionValue;
        }

        self.$(element).val(value);
      });
    }

    self.fillEmptyDimensions();
  },
  updateDimensionsValue: function updateDimensionsValue() {
    var currentValue = {},
        dimensions = this.getPossibleDimensions(),
        $controls = this.ui.controls,
        defaultDimensionValue = this.defaultDimensionValue;
    dimensions.forEach(function (dimension) {
      var $element = $controls.filter('[data-setting="' + dimension + '"]');
      currentValue[dimension] = $element.length ? $element.val() : defaultDimensionValue;
    });
    this.setValue(currentValue);
  },
  fillEmptyDimensions: function fillEmptyDimensions() {
    var dimensions = this.getPossibleDimensions(),
        allowedDimensions = this.model.get('allowed_dimensions'),
        $controls = this.ui.controls,
        defaultDimensionValue = this.defaultDimensionValue;

    if (this.isLinkedDimensions()) {
      return;
    }

    dimensions.forEach(function (dimension) {
      var $element = $controls.filter('[data-setting="' + dimension + '"]'),
          isAllowedDimension = -1 !== _.indexOf(allowedDimensions, dimension);

      if (isAllowedDimension && $element.length && _.isEmpty($element.val())) {
        $element.val(defaultDimensionValue);
      }
    });
  },
  updateDimensions: function updateDimensions() {
    this.fillEmptyDimensions();
    this.updateDimensionsValue();
  },
  resetDimensions: function resetDimensions() {
    this.ui.controls.val('');
    this.updateDimensionsValue();
  },
  onInputChange: function onInputChange(event) {
    var inputSetting = event.target.dataset.setting;

    if ('unit' === inputSetting) {
      this.resetDimensions();
    }

    if (!_.contains(this.getPossibleDimensions(), inputSetting)) {
      return;
    }

    if (this.isLinkedDimensions()) {
      var $thisControl = this.$(event.target);
      this.ui.controls.val($thisControl.val());
    }

    this.updateDimensions();
  },
  onLinkDimensionsClicked: function onLinkDimensionsClicked(event) {
    event.preventDefault();
    event.stopPropagation();
    this.ui.link.toggleClass('unlinked');
    this.setValue('isLinked', !this.ui.link.hasClass('unlinked'));

    if (this.isLinkedDimensions()) {
      // Set all controls value from the first control.
      this.ui.controls.val(this.ui.controls.eq(0).val());
    }

    this.updateDimensions();
  },
  isLinkedDimensions: function isLinkedDimensions() {
    return this.getControlValue('isLinked');
  }
});
module.exports = ControlDimensionsItemView;

/***/ }),
/* 562 */
/***/ (function(module, exports, __webpack_require__) {

"use strict";

// B.2.3.10 String.prototype.link(url)
__webpack_require__(563)('link', function (createHTML) {
  return function link(url) {
    return createHTML(this, 'a', 'href', url);
  };
});


/***/ }),
/* 563 */
/***/ (function(module, exports, __webpack_require__) {

var $export = __webpack_require__(34);
var fails = __webpack_require__(33);
var defined = __webpack_require__(42);
var quot = /"/g;
// B.2.3.2.1 CreateHTML(string, tag, attribute, value)
var createHTML = function (string, tag, attribute, value) {
  var S = String(defined(string));
  var p1 = '<' + tag;
  if (attribute !== '') p1 += ' ' + attribute + '="' + String(value).replace(quot, '&quot;') + '"';
  return p1 + '>' + S + '</' + tag + '>';
};
module.exports = function (NAME, exec) {
  var O = {};
  O[NAME] = exec(createHTML);
  $export($export.P + $export.F * fails(function () {
    var test = ''[NAME]('"');
    return test !== test.toLowerCase() || test.split('"').length > 3;
  }), 'String', O);
};


/***/ }),
/* 564 */
/***/ (function(module, exports, __webpack_require__) {

"use strict";


__webpack_require__(183);

__webpack_require__(72);

__webpack_require__(25);

var ControlSelect2View = __webpack_require__(274);

module.exports = ControlSelect2View.extend({
  $previewContainer: null,
  getSelect2Options: function getSelect2Options() {
    return {
      dir: elementorCommon.config.isRTL ? 'rtl' : 'ltr',
      templateSelection: this.fontPreviewTemplate,
      templateResult: this.fontPreviewTemplate
    };
  },
  onReady: function onReady() {
    var self = this;
    this.ui.select.select2(this.getSelect2Options());
    this.ui.select.on('select2:open', function () {
      self.$previewContainer = jQuery('.select2-results__options[role="tree"]:visible'); // load initial?

      setTimeout(function () {
        self.enqueueFontsInView();
      }, 100); // On search

      jQuery('input.select2-search__field:visible').on('keyup', function () {
        self.typeStopDetection.action.apply(self);
      }); // On scroll

      self.$previewContainer.on('scroll', function () {
        self.scrollStopDetection.onScroll.apply(self);
      });
    });
  },
  typeStopDetection: {
    idle: 350,
    timeOut: null,
    action: function action() {
      var parent = this,
          self = this.typeStopDetection;
      clearTimeout(self.timeOut);
      self.timeOut = setTimeout(function () {
        parent.enqueueFontsInView();
      }, self.idle);
    }
  },
  scrollStopDetection: {
    idle: 350,
    timeOut: null,
    onScroll: function onScroll() {
      var parent = this,
          self = this.scrollStopDetection;
      clearTimeout(self.timeOut);
      self.timeOut = setTimeout(function () {
        parent.enqueueFontsInView();
      }, self.idle);
    }
  },
  enqueueFontsInView: function enqueueFontsInView() {
    var self = this,
        containerOffset = this.$previewContainer.offset(),
        top = containerOffset.top,
        bottom = top + this.$previewContainer.innerHeight(),
        fontsInView = [];
    this.$previewContainer.children().find('li:visible').each(function (index, font) {
      var $font = jQuery(font),
          offset = $font.offset();

      if (offset && offset.top > top && offset.top < bottom) {
        fontsInView.push($font);
      }
    });
    fontsInView.forEach(function (font) {
      var fontFamily = jQuery(font).find('span').html();
      elementor.helpers.enqueueFont(fontFamily, 'editor');
    });
  },
  fontPreviewTemplate: function fontPreviewTemplate(state) {
    if (!state.id) {
      return state.text;
    }

    return jQuery('<span>', {
      text: state.text,
      css: {
        'font-family': state.element.value.toString()
      }
    });
  },
  templateHelpers: function templateHelpers() {
    var helpers = ControlSelect2View.prototype.templateHelpers.apply(this, arguments),
        fonts = this.model.get('options');

    helpers.getFontsByGroups = function (groups) {
      var filteredFonts = {};

      _.each(fonts, function (fontType, fontName) {
        if (_.isArray(groups) && _.contains(groups, fontType) || fontType === groups) {
          filteredFonts[fontName] = fontName;
        }
      });

      return filteredFonts;
    };

    return helpers;
  }
});

/***/ }),
/* 565 */
/***/ (function(module, exports, __webpack_require__) {

"use strict";


var ControlBaseDataView = __webpack_require__(127),
    ControlMediaItemView;

ControlMediaItemView = ControlBaseDataView.extend({
  ui: function ui() {
    var ui = ControlBaseDataView.prototype.ui.apply(this, arguments);
    ui.addImages = '.elementor-control-gallery-add';
    ui.clearGallery = '.elementor-control-gallery-clear';
    ui.galleryThumbnails = '.elementor-control-gallery-thumbnails';
    ui.status = '.elementor-control-gallery-status-title';
    return ui;
  },
  events: function events() {
    return _.extend(ControlBaseDataView.prototype.events.apply(this, arguments), {
      'click @ui.addImages': 'onAddImagesClick',
      'click @ui.clearGallery': 'onClearGalleryClick',
      'click @ui.galleryThumbnails': 'onGalleryThumbnailsClick'
    });
  },
  onReady: function onReady() {
    this.initRemoveDialog();
  },
  applySavedValue: function applySavedValue() {
    var images = this.getControlValue(),
        imagesCount = images.length,
        hasImages = !!imagesCount;
    this.$el.toggleClass('elementor-gallery-has-images', hasImages).toggleClass('elementor-gallery-empty', !hasImages);
    var $galleryThumbnails = this.ui.galleryThumbnails;
    $galleryThumbnails.empty();
    this.ui.status.text(elementor.translate(hasImages ? 'gallery_images_selected' : 'gallery_no_images_selected', [imagesCount]));

    if (!hasImages) {
      return;
    }

    this.getControlValue().forEach(function (image) {
      var $thumbnail = jQuery('<div>', {
        class: 'elementor-control-gallery-thumbnail'
      });
      $thumbnail.css('background-image', 'url(' + image.url + ')');
      $galleryThumbnails.append($thumbnail);
    });
  },
  hasImages: function hasImages() {
    return !!this.getControlValue().length;
  },
  openFrame: function openFrame(action) {
    this.initFrame(action);
    this.frame.open();
  },
  initFrame: function initFrame(action) {
    var frameStates = {
      create: 'gallery',
      add: 'gallery-library',
      edit: 'gallery-edit'
    };
    var options = {
      frame: 'post',
      multiple: true,
      state: frameStates[action],
      button: {
        text: elementor.translate('insert_media')
      }
    };

    if (this.hasImages()) {
      options.selection = this.fetchSelection();
    }

    this.frame = wp.media(options); // When a file is selected, run a callback.

    this.frame.on({
      update: this.select,
      'menu:render:default': this.menuRender,
      'content:render:browse': this.gallerySettings
    }, this);
  },
  menuRender: function menuRender(view) {
    view.unset('insert');
    view.unset('featured-image');
  },
  gallerySettings: function gallerySettings(browser) {
    browser.sidebar.on('ready', function () {
      browser.sidebar.unset('gallery');
    });
  },
  fetchSelection: function fetchSelection() {
    var attachments = wp.media.query({
      orderby: 'post__in',
      order: 'ASC',
      type: 'image',
      perPage: -1,
      post__in: _.pluck(this.getControlValue(), 'id')
    });
    return new wp.media.model.Selection(attachments.models, {
      props: attachments.props.toJSON(),
      multiple: true
    });
  },

  /**
   * Callback handler for when an attachment is selected in the media modal.
   * Gets the selected image information, and sets it within the control.
   */
  select: function select(selection) {
    var images = [];
    selection.each(function (image) {
      images.push({
        id: image.get('id'),
        url: image.get('url')
      });
    });
    this.setValue(images);
    this.applySavedValue();
  },
  onBeforeDestroy: function onBeforeDestroy() {
    if (this.frame) {
      this.frame.off();
    }

    this.$el.remove();
  },
  resetGallery: function resetGallery() {
    this.setValue([]);
    this.applySavedValue();
  },
  initRemoveDialog: function initRemoveDialog() {
    var removeDialog;

    this.getRemoveDialog = function () {
      if (!removeDialog) {
        removeDialog = elementorCommon.dialogsManager.createWidget('confirm', {
          message: elementor.translate('dialog_confirm_gallery_delete'),
          headerMessage: elementor.translate('delete_gallery'),
          strings: {
            confirm: elementor.translate('delete'),
            cancel: elementor.translate('cancel')
          },
          defaultOption: 'confirm',
          onConfirm: this.resetGallery.bind(this)
        });
      }

      return removeDialog;
    };
  },
  onAddImagesClick: function onAddImagesClick() {
    this.openFrame(this.hasImages() ? 'add' : 'create');
  },
  onClearGalleryClick: function onClearGalleryClick() {
    this.getRemoveDialog().show();
  },
  onGalleryThumbnailsClick: function onGalleryThumbnailsClick() {
    this.openFrame('edit');
  }
});
module.exports = ControlMediaItemView;

/***/ }),
/* 566 */
/***/ (function(module, exports, __webpack_require__) {

"use strict";


var _interopRequireDefault = __webpack_require__(0);

var _baseData = _interopRequireDefault(__webpack_require__(127));

module.exports = _baseData.default.extend({}, {
  onPasteStyle: function onPasteStyle() {
    return false;
  }
});

/***/ }),
/* 567 */
/***/ (function(module, exports, __webpack_require__) {

"use strict";


var ControlSelect2View = __webpack_require__(274),
    ControlIconView;

ControlIconView = ControlSelect2View.extend({
  initialize: function initialize() {
    ControlSelect2View.prototype.initialize.apply(this, arguments);
    this.filterIcons();
  },
  filterIcons: function filterIcons() {
    var icons = this.model.get('options'),
        include = this.model.get('include'),
        exclude = this.model.get('exclude');

    if (include) {
      var filteredIcons = {};

      _.each(include, function (iconKey) {
        filteredIcons[iconKey] = icons[iconKey];
      });

      this.model.set('options', filteredIcons);
      return;
    }

    if (exclude) {
      _.each(exclude, function (iconKey) {
        delete icons[iconKey];
      });
    }
  },
  iconsList: function iconsList(icon) {
    if (!icon.id) {
      return icon.text;
    }

    return jQuery('<span><i class="' + icon.id + '"></i> ' + icon.text + '</span>');
  },
  getSelect2Options: function getSelect2Options() {
    return {
      allowClear: true,
      templateResult: this.iconsList.bind(this),
      templateSelection: this.iconsList.bind(this)
    };
  }
});
module.exports = ControlIconView;

/***/ }),
/* 568 */
/***/ (function(module, exports, __webpack_require__) {

"use strict";


var _interopRequireDefault = __webpack_require__(0);

var _classCallCheck2 = _interopRequireDefault(__webpack_require__(2));

var _createClass2 = _interopRequireDefault(__webpack_require__(3));

var _get2 = _interopRequireDefault(__webpack_require__(26));

var _getPrototypeOf2 = _interopRequireDefault(__webpack_require__(16));

var _inherits2 = _interopRequireDefault(__webpack_require__(4));

var _createSuper2 = _interopRequireDefault(__webpack_require__(5));

var _filesUploadHandler = _interopRequireDefault(__webpack_require__(382));

var ControlMultipleBaseItemView = __webpack_require__(237);

var ControlIconsView = /*#__PURE__*/function (_ControlMultipleBaseI) {
  (0, _inherits2.default)(ControlIconsView, _ControlMultipleBaseI);

  var _super = (0, _createSuper2.default)(ControlIconsView);

  function ControlIconsView() {
    var _this;

    (0, _classCallCheck2.default)(this, ControlIconsView);

    for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
      args[_key] = arguments[_key];
    }

    _this = _super.call.apply(_super, [this].concat(args));
    _this.cache = {
      loaded: false,
      dialog: false,
      enableClicked: false,
      fa4Mapping: false,
      migratedFlag: {}
    };
    _this.dataKeys = {
      migratedKey: '__fa4_migrated',
      fa4MigrationFlag: 'fa4compatibility'
    };
    return _this;
  }

  (0, _createClass2.default)(ControlIconsView, [{
    key: "enqueueIconFonts",
    value: function enqueueIconFonts(iconType) {
      var iconSetting = elementor.helpers.getIconLibrarySettings(iconType);

      if (false === iconSetting || !this.isMigrationAllowed()) {
        return;
      }

      if (iconSetting.enqueue) {
        iconSetting.enqueue.forEach(function (assetURL) {
          elementor.helpers.enqueueEditorStylesheet(assetURL);
          elementor.helpers.enqueuePreviewStylesheet(assetURL);
        });
      }

      if (iconSetting.url) {
        elementor.helpers.enqueueEditorStylesheet(iconSetting.url);
        elementor.helpers.enqueuePreviewStylesheet(iconSetting.url);
      }
    }
  }, {
    key: "ui",
    value: function ui() {
      var ui = (0, _get2.default)((0, _getPrototypeOf2.default)(ControlIconsView.prototype), "ui", this).call(this),
          skin = this.model.get('skin');
      ui.controlMedia = '.elementor-control-media';
      ui.svgUploader = 'media' === skin ? '.elementor-control-svg-uploader' : '.elementor-control-icons--inline__svg';
      ui.iconPickers = 'media' === skin ? '.elementor-control-icon-picker, .elementor-control-media__preview, .elementor-control-media-upload-button' : '.elementor-control-icons--inline__icon';
      ui.deleteButton = 'media' === skin ? '.elementor-control-media__remove' : '.elementor-control-icons--inline__none';
      ui.previewPlaceholder = '.elementor-control-media__preview';
      ui.previewContainer = '.elementor-control-preview-area';
      ui.inlineIconContainer = '.elementor-control-inline-icon';
      ui.inlineDisplayedIcon = '.elementor-control-icons--inline__displayed-icon';
      ui.radioInputs = '[type="radio"]';
      return ui;
    }
  }, {
    key: "events",
    value: function events() {
      return jQuery.extend(ControlMultipleBaseItemView.prototype.events.apply(this, arguments), {
        'click @ui.iconPickers': 'openPicker',
        'click @ui.svgUploader': 'openFrame',
        'click @ui.radioInputs': 'onClickInput',
        'click @ui.deleteButton': 'deleteIcon'
      });
    }
  }, {
    key: "getControlValue",
    value: function getControlValue() {
      var value = (0, _get2.default)((0, _getPrototypeOf2.default)(ControlIconsView.prototype), "getControlValue", this).call(this),
          model = this.model,
          valueToMigrate = this.getValueToMigrate();

      if (!this.isMigrationAllowed()) {
        return valueToMigrate;
      } // Bail if no migration flag or no value to migrate


      if (!valueToMigrate) {
        return value;
      }

      var didMigration = this.elementSettingsModel.get(this.dataKeys.migratedKey),
          controlName = model.get('name'); // Check if migration had been done and is stored locally

      if (this.cache.migratedFlag[controlName]) {
        return this.cache.migratedFlag[controlName];
      } // Check if already migrated


      if (didMigration && didMigration[controlName]) {
        return value;
      } // Do migration


      return this.migrateFa4toFa5(valueToMigrate);
    }
  }, {
    key: "migrateFa4toFa5",
    value: function migrateFa4toFa5(fa4Value) {
      var fa5Value = elementor.helpers.mapFa4ToFa5(fa4Value);
      this.cache.migratedFlag[this.model.get('name')] = fa5Value;
      this.enqueueIconFonts(fa5Value.library);
      return fa5Value;
    }
  }, {
    key: "setControlAsMigrated",
    value: function setControlAsMigrated(controlName) {
      var didMigration = this.elementSettingsModel.get(this.dataKeys.migratedKey) || {};
      didMigration[controlName] = true;
      this.elementSettingsModel.set(this.dataKeys.migratedKey, didMigration, {
        silent: true
      });
    }
  }, {
    key: "isMigrationAllowed",
    value: function isMigrationAllowed() {
      return !elementor.config['icons_update_needed'];
    }
  }, {
    key: "getValueToMigrate",
    value: function getValueToMigrate() {
      var controlToMigrate = this.model.get(this.dataKeys.fa4MigrationFlag);

      if (!controlToMigrate) {
        return false;
      } // Check if there is a value to migrate


      var valueToMigrate = this.container.settings.get(controlToMigrate);

      if (valueToMigrate) {
        return valueToMigrate;
      }

      return false;
    }
  }, {
    key: "onReady",
    value: function onReady() {
      var _this2 = this;

      // is migration allowed from fa4
      if (!this.isMigrationAllowed()) {
        var migrationPopupTrigger = 'media' === this.model.get('skin') ? this.ui.previewContainer[0] : this.ui.inlineIconContainer[0];
        migrationPopupTrigger.addEventListener('click', function (event) {
          // Prevent default to prevent marking the inline icons as selected on click when migration is not allowed
          event.preventDefault();
          event.stopPropagation();

          var onConfirm = function onConfirm() {
            window.location.href = elementor.config.tools_page_link + '&redirect_to=' + encodeURIComponent(document.location.href) + '#tab-fontawesome4_migration';
          };

          var enableMigrationDialog = elementor.helpers.getSimpleDialog('elementor-enable-fa5-dialog', elementor.translate('enable_fa5'), elementor.translate('dialog_confirm_enable_fa5'), elementor.translate('update'), onConfirm);
          enableMigrationDialog.show();
          return false;
        }, true);
      }

      var controlName = this.model.get('name');

      if (this.cache.migratedFlag[controlName]) {
        this.setControlAsMigrated(controlName);
        setTimeout(function () {
          _this2.setValue(_this2.cache.migratedFlag[controlName]);
        }, 10);
      }
    }
  }, {
    key: "onRender",
    value: function onRender() {
      (0, _get2.default)((0, _getPrototypeOf2.default)(ControlIconsView.prototype), "onRender", this).call(this);

      if (this.isMigrationAllowed()) {
        elementor.iconManager.loadIconLibraries();
      }
    }
  }, {
    key: "initFrame",
    value: function initFrame() {
      var _this3 = this;

      // Set current doc id to attach uploaded images.
      wp.media.view.settings.post.id = elementor.config.document.id;
      this.frame = wp.media({
        button: {
          text: elementor.translate('insert_media')
        },
        library: {
          type: ['image/svg+xml']
        },
        states: [new wp.media.controller.Library({
          title: elementor.translate('insert_media'),
          library: wp.media.query({
            type: ['image/svg+xml']
          }),
          multiple: false,
          date: false
        })]
      });

      var handleSelect = function handleSelect() {
        return _this3.selectSvg();
      }; // When a file is selected, run a callback.


      this.frame.on('insert select', handleSelect);
      this.setUploadMimeType(this.frame, 'svg');
    }
  }, {
    key: "setUploadMimeType",
    value: function setUploadMimeType(frame, ext) {
      // Set svg as only allowed upload extensions
      var oldExtensions = _wpPluploadSettings.defaults.filters.mime_types[0].extensions;
      frame.on('ready', function () {
        _wpPluploadSettings.defaults.filters.mime_types[0].extensions = ext;
      });
      this.frame.on('close', function () {
        // restore allowed upload extensions
        _wpPluploadSettings.defaults.filters.mime_types[0].extensions = oldExtensions;
      });
    }
    /**
     * Callback handler for when an attachment is selected in the media modal.
     * Gets the selected image information, and sets it within the control.
     */

  }, {
    key: "selectSvg",
    value: function selectSvg() {
      this.trigger('before:select'); // Get the attachment from the modal frame.

      var attachment = this.frame.state().get('selection').first().toJSON();

      if (attachment.url) {
        this.setValue({
          value: {
            url: attachment.url,
            id: attachment.id
          },
          library: 'svg'
        });
        this.applySavedValue();
      }

      this.trigger('after:select');
    }
  }, {
    key: "openFrame",
    value: function openFrame() {
      var _this4 = this;

      if (!_filesUploadHandler.default.isUploadEnabled('svg')) {
        _filesUploadHandler.default.getUnfilteredFilesNotEnabledDialog(function () {
          return _this4.openFrame();
        }).show();

        return false;
      }

      if (!this.frame) {
        this.initFrame();
      }

      this.frame.open(); // Set params to trigger sanitizer

      _filesUploadHandler.default.setUploadTypeCaller(this.frame);

      var selectedId = this.getControlValue('id');

      if (!selectedId) {
        return;
      }

      var selection = this.frame.state().get('selection');
      selection.add(wp.media.attachment(selectedId));
    }
  }, {
    key: "openPicker",
    value: function openPicker() {
      elementor.iconManager.show({
        view: this
      });
    }
  }, {
    key: "applySavedValue",
    value: function applySavedValue() {
      var _this5 = this;

      var controlValue = this.getControlValue(),
          skin = this.model.get('skin'),
          iconContainer = 'inline' === skin ? this.ui.inlineDisplayedIcon : this.ui.previewPlaceholder,
          defaultIcon = this.model.get('default');
      var iconValue = controlValue.value,
          iconType = controlValue.library;

      if (!this.isMigrationAllowed() && !iconValue && this.getValueToMigrate()) {
        iconValue = this.getControlValue();
        iconType = '';
      }

      if ('media' === skin) {
        this.ui.controlMedia.toggleClass('elementor-media-empty', !iconValue);
      } else {
        this.markChecked(iconType);
      }

      if (!iconValue) {
        if ('inline' === skin) {
          this.setDefaultIconLibraryLabel(defaultIcon, iconContainer);
          return;
        }

        this.ui.previewPlaceholder.html('');
        return;
      }

      if ('svg' === iconType && 'inline' !== skin) {
        return elementor.helpers.fetchInlineSvg(iconValue.url, function (data) {
          _this5.ui.previewPlaceholder.html(data);
        });
      }

      if ('media' === skin || 'svg' !== iconType) {
        var previewHTML = '<i class="' + iconValue + '"></i>';
        iconContainer.html(previewHTML);
      }

      this.enqueueIconFonts(iconType);
    }
  }, {
    key: "setDefaultIconLibraryLabel",
    value: function setDefaultIconLibraryLabel(defaultIcon, iconContainer) {
      // Check if the control has a default icon
      if ('' !== defaultIcon.value && 'svg' !== defaultIcon.library) {
        // If the default icon is not an SVG, set the icon-library label's icon to the default icon
        iconContainer.html('<i class="' + defaultIcon.value + '"></i>');
      } else {
        // If (1) the control does NOT have a default icon,
        // OR (2) the control DOES have a default icon BUT the default icon is an SVG,
        // set the default icon-library label's icon to a simple circle
        iconContainer.html('<i class="eicon-circle"></i>');
      }
    }
  }, {
    key: "markChecked",
    value: function markChecked(iconType) {
      this.ui.radioInputs.filter(':checked').prop('checked', false);

      if (!iconType) {
        return this.ui.radioInputs.filter('[value="none"]').prop('checked', true);
      }

      if ('svg' !== iconType) {
        iconType = 'icon';
      }

      this.ui.radioInputs.filter('[value="' + iconType + '"]').prop('checked', true);
    }
  }, {
    key: "onClickInput",
    value: function onClickInput() {
      this.markChecked(this.getControlValue().library);
    }
  }, {
    key: "deleteIcon",
    value: function deleteIcon(event) {
      event.stopPropagation();
      this.setValue({
        value: '',
        library: ''
      });
      this.applySavedValue();
    }
  }, {
    key: "onBeforeDestroy",
    value: function onBeforeDestroy() {
      this.$el.remove();
    }
  }]);
  return ControlIconsView;
}(ControlMultipleBaseItemView);

module.exports = ControlIconsView;

/***/ }),
/* 569 */
/***/ (function(module, exports, __webpack_require__) {

"use strict";


var ControlMultipleBaseItemView = __webpack_require__(237),
    ControlImageDimensionsItemView;

ControlImageDimensionsItemView = ControlMultipleBaseItemView.extend({
  ui: function ui() {
    return {
      inputWidth: 'input[data-setting="width"]',
      inputHeight: 'input[data-setting="height"]',
      btnApply: 'button.elementor-image-dimensions-apply-button'
    };
  },
  // Override the base events
  events: function events() {
    return {
      'click @ui.btnApply': 'onApplyClicked',
      'keyup @ui.inputWidth': 'onDimensionKeyUp',
      'keyup @ui.inputHeight': 'onDimensionKeyUp'
    };
  },
  onDimensionKeyUp: function onDimensionKeyUp(event) {
    var ENTER_KEY = 13;

    if (ENTER_KEY === event.keyCode) {
      this.onApplyClicked(event);
    }
  },
  onApplyClicked: function onApplyClicked(event) {
    event.preventDefault();
    this.setValue({
      width: this.ui.inputWidth.val(),
      height: this.ui.inputHeight.val()
    });
  }
});
module.exports = ControlImageDimensionsItemView;

/***/ }),
/* 570 */
/***/ (function(module, exports, __webpack_require__) {

"use strict";


var _interopRequireDefault = __webpack_require__(0);

__webpack_require__(80);

var _filesUploadHandler = _interopRequireDefault(__webpack_require__(382));

var ControlMultipleBaseItemView = __webpack_require__(237),
    ControlMediaItemView;

ControlMediaItemView = ControlMultipleBaseItemView.extend({
  ui: function ui() {
    var ui = ControlMultipleBaseItemView.prototype.ui.apply(this, arguments);
    ui.controlMedia = '.elementor-control-media';
    ui.mediaImage = '.elementor-control-media__preview';
    ui.mediaVideo = '.elementor-control-media-video';
    ui.frameOpeners = '.elementor-control-preview-area';
    ui.removeButton = '.elementor-control-media__remove';
    ui.fileName = '.elementor-control-media__file__content__info__name';
    return ui;
  },
  events: function events() {
    return _.extend(ControlMultipleBaseItemView.prototype.events.apply(this, arguments), {
      'click @ui.frameOpeners': 'openFrame',
      'click @ui.removeButton': 'deleteImage'
    });
  },
  getMediaType: function getMediaType() {
    return this.model.get('media_type');
  },
  applySavedValue: function applySavedValue() {
    var url = this.getControlValue('url'),
        mediaType = this.getMediaType();

    if ('image' === mediaType) {
      this.ui.mediaImage.css('background-image', url ? 'url(' + url + ')' : '');
    } else if ('video' === mediaType) {
      this.ui.mediaVideo.attr('src', url);
    } else {
      var fileName = url ? url.split('/').pop() : '';
      this.ui.fileName.text(fileName);
    }

    this.ui.controlMedia.toggleClass('elementor-media-empty', !url);
  },
  openFrame: function openFrame() {
    var _this = this;

    if (!_filesUploadHandler.default.isUploadEnabled(this.getMediaType())) {
      _filesUploadHandler.default.getUnfilteredFilesNotEnabledDialog(function () {
        return _this.openFrame();
      }).show();

      return false;
    }

    if (!this.frame) {
      this.initFrame();
    }

    this.frame.open(); // Set params to trigger sanitizer

    _filesUploadHandler.default.setUploadTypeCaller(this.frame);

    var selectedId = this.getControlValue('id');

    if (!selectedId) {
      return;
    }

    this.frame.state().get('selection').add(wp.media.attachment(selectedId));
  },
  deleteImage: function deleteImage(event) {
    event.stopPropagation();
    this.setValue({
      url: '',
      id: ''
    });
    this.applySavedValue();
  },

  /**
   * Create a media modal select frame, and store it so the instance can be reused when needed.
   */
  initFrame: function initFrame() {
    // Set current doc id to attach uploaded images.
    wp.media.view.settings.post.id = elementor.config.document.id;
    this.frame = wp.media({
      button: {
        text: elementor.translate('insert_media')
      },
      states: [new wp.media.controller.Library({
        title: elementor.translate('insert_media'),
        library: wp.media.query({
          type: this.getMediaType()
        }),
        multiple: false,
        date: false
      })]
    }); // When a file is selected, run a callback.

    this.frame.on('insert select', this.select.bind(this));
  },

  /**
   * Callback handler for when an attachment is selected in the media modal.
   * Gets the selected image information, and sets it within the control.
   */
  select: function select() {
    this.trigger('before:select'); // Get the attachment from the modal frame.

    var attachment = this.frame.state().get('selection').first().toJSON();

    if (attachment.url) {
      this.setValue({
        url: attachment.url,
        id: attachment.id
      });
      this.applySavedValue();
    }

    this.trigger('after:select');
  },
  onBeforeDestroy: function onBeforeDestroy() {
    this.$el.remove();
  }
});
module.exports = ControlMediaItemView;

/***/ }),
/* 571 */
/***/ (function(module, exports, __webpack_require__) {

"use strict";


var ControlBaseDataView = __webpack_require__(127),
    NumberValidator = __webpack_require__(572),
    ControlNumberItemView;

ControlNumberItemView = ControlBaseDataView.extend({
  registerValidators: function registerValidators() {
    ControlBaseDataView.prototype.registerValidators.apply(this, arguments);
    var validationTerms = {},
        model = this.model;
    ['min', 'max'].forEach(function (term) {
      var termValue = model.get(term);

      if (_.isFinite(termValue)) {
        validationTerms[term] = termValue;
      }
    });

    if (!jQuery.isEmptyObject(validationTerms)) {
      this.addValidator(new NumberValidator({
        validationTerms: validationTerms
      }));
    }
  }
});
module.exports = ControlNumberItemView;

/***/ }),
/* 572 */
/***/ (function(module, exports, __webpack_require__) {

"use strict";


var Validator = __webpack_require__(300);

module.exports = Validator.extend({
  validationMethod: function validationMethod(newValue) {
    var validationTerms = this.getSettings('validationTerms'),
        errors = [];

    if (_.isFinite(newValue)) {
      if (undefined !== validationTerms.min && newValue < validationTerms.min) {
        errors.push('Value is less than minimum');
      }

      if (undefined !== validationTerms.max && newValue > validationTerms.max) {
        errors.push('Value is greater than maximum');
      }
    }

    return errors;
  }
});

/***/ }),
/* 573 */
/***/ (function(module, exports, __webpack_require__) {

"use strict";


var ControlMultipleBaseItemView = __webpack_require__(237),
    ControlOrderItemView;

ControlOrderItemView = ControlMultipleBaseItemView.extend({
  ui: function ui() {
    var ui = ControlMultipleBaseItemView.prototype.ui.apply(this, arguments);
    ui.reverseOrderLabel = '.elementor-control-order-label';
    return ui;
  },
  changeLabelTitle: function changeLabelTitle() {
    var reverseOrder = this.getControlValue('reverse_order');
    this.ui.reverseOrderLabel.attr('title', elementor.translate(reverseOrder ? 'asc' : 'desc'));
  },
  onRender: function onRender() {
    ControlMultipleBaseItemView.prototype.onRender.apply(this, arguments);
    this.changeLabelTitle();
  },
  onInputChange: function onInputChange() {
    this.changeLabelTitle();
  }
});
module.exports = ControlOrderItemView;

/***/ }),
/* 574 */
/***/ (function(module, exports, __webpack_require__) {

"use strict";


var ControlBaseView = __webpack_require__(281),
    ControlSectionItemView;

ControlSectionItemView = ControlBaseView.extend({
  ui: function ui() {
    var ui = ControlBaseView.prototype.ui.apply(this, arguments);
    ui.heading = '.elementor-panel-heading';
    return ui;
  },
  triggers: {
    click: 'control:section:clicked'
  }
});
module.exports = ControlSectionItemView;

/***/ }),
/* 575 */
/***/ (function(module, exports, __webpack_require__) {

"use strict";


var ControlBaseDataView = __webpack_require__(127),
    ControlSelectItemView;

ControlSelectItemView = ControlBaseDataView.extend({}, {
  onPasteStyle: function onPasteStyle(control, clipboardValue) {
    if (control.groups) {
      return control.groups.some(function (group) {
        return ControlSelectItemView.onPasteStyle(group, clipboardValue);
      });
    }

    return undefined !== control.options[clipboardValue];
  }
});
module.exports = ControlSelectItemView;

/***/ }),
/* 576 */
/***/ (function(module, exports, __webpack_require__) {

"use strict";


var _interopRequireDefault = __webpack_require__(0);

var _keys = _interopRequireDefault(__webpack_require__(23));

var _values = _interopRequireDefault(__webpack_require__(55));

var ControlBaseUnitsItemView = __webpack_require__(381),
    ControlSliderItemView;

ControlSliderItemView = ControlBaseUnitsItemView.extend({
  ui: function ui() {
    var ui = ControlBaseUnitsItemView.prototype.ui.apply(this, arguments);
    ui.slider = '.elementor-slider';
    return ui;
  },
  templateHelpers: function templateHelpers() {
    var templateHelpers = ControlBaseUnitsItemView.prototype.templateHelpers.apply(this, arguments);
    templateHelpers.isMultiple = this.isMultiple();
    return templateHelpers;
  },
  isMultiple: function isMultiple() {
    var sizes = this.getControlValue('sizes');
    return !jQuery.isEmptyObject(sizes);
  },
  initSlider: function initSlider() {
    // Slider does not exist in tests.
    if (!this.ui.slider[0]) {
      return;
    }

    this.destroySlider();
    var isMultiple = this.isMultiple(),
        unitRange = elementorCommon.helpers.cloneObject(this.getCurrentRange()),
        step = unitRange.step;
    var sizes = this.getSize();

    if (isMultiple) {
      sizes = (0, _values.default)(sizes);
    } else {
      sizes = [sizes];
      this.ui.input.attr(unitRange);
    }

    delete unitRange.step;
    var tooltips;
    var self = this;

    if (isMultiple) {
      tooltips = [];
      sizes.forEach(function () {
        return tooltips.push({
          to: function to(value) {
            return value + self.getControlValue('unit');
          }
        });
      });
    }

    var sliderInstance = noUiSlider.create(this.ui.slider[0], {
      start: sizes,
      range: unitRange,
      step: step,
      tooltips: tooltips,
      connect: isMultiple,
      format: {
        to: function to(value) {
          return Math.round(value * 1000) / 1000;
        },
        from: function from(value) {
          return +value;
        }
      }
    });
    sliderInstance.on('slide', this.onSlideChange.bind(this));
  },
  applySavedValue: function applySavedValue() {
    ControlBaseUnitsItemView.prototype.applySavedValue.apply(this, arguments); // Slider does not exist in tests.

    if (this.ui.slider[0] && this.ui.slider[0].noUiSlider) {
      this.ui.slider[0].noUiSlider.set(this.getSize());
    }
  },
  getSize: function getSize() {
    return this.getControlValue(this.isMultiple() ? 'sizes' : 'size');
  },
  resetSize: function resetSize() {
    if (this.isMultiple()) {
      this.setValue('sizes', {});
    } else {
      this.setValue('size', '');
    }

    this.initSlider();
  },
  destroySlider: function destroySlider() {
    // Slider does not exist in tests.
    if (this.ui.slider[0] && this.ui.slider[0].noUiSlider) {
      this.ui.slider[0].noUiSlider.destroy();
    }
  },
  onReady: function onReady() {
    if (this.isMultiple()) {
      this.$el.addClass('elementor-control-type-slider--multiple elementor-control-type-slider--handles-' + this.model.get('handles'));
    }

    this.initSlider();
  },
  onSlideChange: function onSlideChange(values, index) {
    if (this.isMultiple()) {
      var sizes = elementorCommon.helpers.cloneObject(this.getSize()),
          key = (0, _keys.default)(sizes)[index];
      sizes[key] = values[index];
      this.setValue('sizes', sizes);
    } else {
      this.setValue('size', values[0]);
      this.ui.input.val(values[0]);
    }
  },
  onInputChange: function onInputChange(event) {
    var dataChanged = event.currentTarget.dataset.setting;

    if ('size' === dataChanged) {
      this.ui.slider[0].noUiSlider.set(this.getSize());
    } else if ('unit' === dataChanged) {
      this.resetSize();
    }
  },
  onBeforeDestroy: function onBeforeDestroy() {
    this.destroySlider();
    this.$el.remove();
  }
});
module.exports = ControlSliderItemView;

/***/ }),
/* 577 */
/***/ (function(module, exports, __webpack_require__) {

"use strict";


var ControlBaseDataView = __webpack_require__(127),
    ControlStructureItemView;

ControlStructureItemView = ControlBaseDataView.extend({
  ui: function ui() {
    var ui = ControlBaseDataView.prototype.ui.apply(this, arguments);
    ui.resetStructure = '.elementor-control-structure-reset';
    return ui;
  },
  events: function events() {
    return _.extend(ControlBaseDataView.prototype.events.apply(this, arguments), {
      'click @ui.resetStructure': 'onResetStructureClick'
    });
  },
  templateHelpers: function templateHelpers() {
    var helpers = ControlBaseDataView.prototype.templateHelpers.apply(this, arguments);
    helpers.getMorePresets = this.getMorePresets.bind(this);
    return helpers;
  },
  getCurrentEditedSection: function getCurrentEditedSection() {
    var editor = elementor.getPanelView().getCurrentPageView();
    return editor.getOption('editedElementView');
  },
  getMorePresets: function getMorePresets() {
    var parsedStructure = elementor.presetsFactory.getParsedStructure(this.getControlValue());
    return elementor.presetsFactory.getPresets(parsedStructure.columnsCount);
  },
  onResetStructureClick: function onResetStructureClick() {
    this.getCurrentEditedSection().resetColumnsCustomSize();
  }
});
module.exports = ControlStructureItemView;

/***/ }),
/* 578 */
/***/ (function(module, exports, __webpack_require__) {

"use strict";


var ControlBaseDataView = __webpack_require__(127);

module.exports = ControlBaseDataView.extend({
  setInputValue: function setInputValue(input, value) {
    this.$(input).prop('checked', this.model.get('return_value') === value);
  }
}, {
  onPasteStyle: function onPasteStyle(control, clipboardValue) {
    return !clipboardValue || clipboardValue === control.return_value;
  }
});

/***/ }),
/* 579 */
/***/ (function(module, exports, __webpack_require__) {

"use strict";


var ControlBaseView = __webpack_require__(281),
    ControlTabItemView;

ControlTabItemView = ControlBaseView.extend({
  triggers: {
    click: {
      event: 'control:tab:clicked',
      stopPropagation: false
    }
  }
});
module.exports = ControlTabItemView;

/***/ }),
/* 580 */
/***/ (function(module, exports, __webpack_require__) {

"use strict";


var _interopRequireDefault = __webpack_require__(0);

var _classCallCheck2 = _interopRequireDefault(__webpack_require__(2));

var _createClass2 = _interopRequireDefault(__webpack_require__(3));

var _get2 = _interopRequireDefault(__webpack_require__(26));

var _getPrototypeOf2 = _interopRequireDefault(__webpack_require__(16));

var _inherits2 = _interopRequireDefault(__webpack_require__(4));

var _createSuper2 = _interopRequireDefault(__webpack_require__(5));

var BaseMultiple = __webpack_require__(237);

var URL = /*#__PURE__*/function (_BaseMultiple) {
  (0, _inherits2.default)(URL, _BaseMultiple);

  var _super = (0, _createSuper2.default)(URL);

  function URL() {
    (0, _classCallCheck2.default)(this, URL);
    return _super.apply(this, arguments);
  }

  (0, _createClass2.default)(URL, [{
    key: "ui",
    value: function ui() {
      var ui = (0, _get2.default)((0, _getPrototypeOf2.default)(URL.prototype), "ui", this).call(this);
      ui.mainInput = '.elementor-input';
      ui.moreOptionsToggle = '.elementor-control-url-more';
      ui.moreOptions = '.elementor-control-url-more-options';
      return ui;
    }
  }, {
    key: "events",
    value: function events() {
      var events = (0, _get2.default)((0, _getPrototypeOf2.default)(URL.prototype), "events", this).call(this);
      events['click @ui.moreOptionsToggle'] = 'onMoreOptionsToggleClick';
      return events;
    }
  }, {
    key: "autoComplete",
    value: function autoComplete() {
      var _this = this;

      var $mainInput = this.ui.mainInput,
          positionBase = elementorCommon.config.isRTL ? 'right' : 'left';
      var last, cache; // Based on /wp-includes/js/tinymce/plugins/wplink/plugin.js.

      $mainInput.autocomplete({
        source: function source(request, response) {
          if (!_this.options.model.attributes.autocomplete) {
            return;
          }

          if (last === request.term) {
            response(cache);
            return;
          }

          if (/^https?:/.test(request.term) || request.term.indexOf('.') !== -1) {
            return response();
          } // Show Spinner.


          $mainInput.prev().show();
          jQuery.post(window.ajaxurl, {
            editor: 'elementor',
            action: 'wp-link-ajax',
            page: 1,
            search: request.term,
            _ajax_linking_nonce: jQuery('#_ajax_linking_nonce').val()
          }, function (data) {
            cache = data;
            response(data);
          }, 'json').always(function () {
            return $mainInput.prev().hide();
          });
          last = request.term;
        },
        focus: function focus(event) {
          /*
           * Don't empty the URL input field, when using the arrow keys to
           * highlight items. See api.jqueryui.com/autocomplete/#event-focus
           */
          event.preventDefault();
        },
        select: function select(event, ui) {
          $mainInput.val(ui.item.permalink);

          _this.setValue('url', ui.item.permalink);

          return false;
        },
        open: function open(event) {
          jQuery(event.target).data('uiAutocomplete').menu.activeMenu.addClass('elementor-autocomplete-menu');
        },
        minLength: 2,
        position: {
          my: positionBase + ' top+2',
          at: positionBase + ' bottom'
        }
      }); // The `_renderItem` cannot be override via the arguments.

      $mainInput.autocomplete('instance')._renderItem = function (ul, item) {
        var fallbackTitle = window.wpLinkL10n ? window.wpLinkL10n.noTitle : '',
            title = item.title ? item.title : fallbackTitle;
        return jQuery('<li role="option" id="mce-wp-autocomplete-' + item.ID + '">').append('<span>' + title + '</span>&nbsp;<span class="elementor-autocomplete-item-info">' + item.info + '</span>').appendTo(ul);
      };
    }
  }, {
    key: "onReady",
    value: function onReady() {
      this.autoComplete();
    }
  }, {
    key: "onMoreOptionsToggleClick",
    value: function onMoreOptionsToggleClick() {
      this.ui.moreOptions.slideToggle();
    }
  }, {
    key: "onBeforeDestroy",
    value: function onBeforeDestroy() {
      if (this.ui.mainInput.data('autocomplete')) {
        this.ui.mainInput.autocomplete('destroy');
      }

      this.$el.remove();
    }
  }]);
  return URL;
}(BaseMultiple);

module.exports = URL;

/***/ }),
/* 581 */
/***/ (function(module, exports, __webpack_require__) {

"use strict";


var ControlBaseDataView = __webpack_require__(127),
    ControlWPWidgetItemView;

ControlWPWidgetItemView = ControlBaseDataView.extend({
  ui: function ui() {
    var ui = ControlBaseDataView.prototype.ui.apply(this, arguments);
    ui.form = 'form';
    ui.loading = '.wp-widget-form-loading';
    return ui;
  },
  events: function events() {
    return {
      'keyup @ui.form :input': 'onFormChanged',
      'change @ui.form :input': 'onFormChanged'
    };
  },
  onFormChanged: function onFormChanged() {
    var idBase = 'widget-' + this.model.get('id_base'),
        settings = this.ui.form.elementorSerializeObject()[idBase].REPLACE_TO_ID;
    this.setValue(settings);
  },
  onReady: function onReady() {
    var self = this;
    elementorCommon.ajax.addRequest('editor_get_wp_widget_form', {
      data: {
        // Fake Widget ID
        id: self.model.cid,
        widget_type: self.model.get('widget'),
        data: self.container.settings.toJSON()
      },
      success: function success(data) {
        self.ui.form.html(data); // WP >= 4.8

        if (wp.textWidgets) {
          self.ui.form.addClass('open');
          var event = new jQuery.Event('widget-added');
          wp.textWidgets.handleWidgetAdded(event, self.ui.form);
          wp.mediaWidgets.handleWidgetAdded(event, self.ui.form); // WP >= 4.9

          if (wp.customHtmlWidgets) {
            wp.customHtmlWidgets.handleWidgetAdded(event, self.ui.form);
          }
        }

        elementor.hooks.doAction('panel/widgets/' + self.model.get('widget') + '/controls/wp_widget/loaded', self);
      }
    });
  }
});
module.exports = ControlWPWidgetItemView;

/***/ }),
/* 582 */
/***/ (function(module, exports, __webpack_require__) {

"use strict";


__webpack_require__(25);

__webpack_require__(58);

__webpack_require__(80);

var ControlBaseDataView = __webpack_require__(127),
    ControlWysiwygItemView;

ControlWysiwygItemView = ControlBaseDataView.extend({
  editor: null,
  ui: function ui() {
    var ui = ControlBaseDataView.prototype.ui.apply(this, arguments);
    jQuery.extend(ui, {
      inputWrapper: '.elementor-control-input-wrapper'
    });
    return ui;
  },
  events: function events() {
    return _.extend(ControlBaseDataView.prototype.events.apply(this, arguments), {
      'keyup textarea.elementor-wp-editor': 'onBaseInputChange'
    });
  },
  // List of buttons to move {buttonToMove: afterButton}
  buttons: {
    addToBasic: {
      underline: 'italic'
    },
    addToAdvanced: {},
    moveToAdvanced: {
      blockquote: 'removeformat',
      alignleft: 'blockquote',
      aligncenter: 'alignleft',
      alignright: 'aligncenter'
    },
    moveToBasic: {},
    removeFromBasic: ['unlink', 'wp_more'],
    removeFromAdvanced: []
  },
  initialize: function initialize() {
    ControlBaseDataView.prototype.initialize.apply(this, arguments);
    var self = this;
    self.editorID = 'elementorwpeditor' + self.cid; // Wait a cycle before initializing the editors.

    _.defer(function () {
      if (self.isDestroyed) {
        return;
      } // Initialize QuickTags, and set as the default mode.


      quicktags({
        buttons: 'strong,em,del,link,img,close',
        id: self.editorID
      });

      if (elementor.config.rich_editing_enabled) {
        switchEditors.go(self.editorID, 'tmce');
      }

      delete QTags.instances[0];
    });

    if (!elementor.config.rich_editing_enabled) {
      self.$el.addClass('elementor-rich-editing-disabled');
      return;
    }

    var editorConfig = {
      id: self.editorID,
      selector: '#' + self.editorID,
      setup: function setup(editor) {
        self.editor = editor;
      }
    };
    tinyMCEPreInit.mceInit[self.editorID] = _.extend(_.clone(tinyMCEPreInit.mceInit.elementorwpeditor), editorConfig);

    if (!elementor.config.tinymceHasCustomConfig) {
      self.rearrangeButtons();
    }
  },
  applySavedValue: function applySavedValue() {
    if (!this.editor) {
      return;
    }

    var controlValue = this.getControlValue();
    this.editor.setContent(controlValue); // Update also the plain textarea

    jQuery('#' + this.editorID).val(controlValue);
  },
  saveEditor: function saveEditor() {
    this.setValue(this.editor.getContent());
  },
  moveButtons: function moveButtons(buttonsToMove, from, to) {
    if (!to) {
      to = from;
      from = null;
    }

    _.each(buttonsToMove, function (afterButton, button) {
      var afterButtonIndex = to.indexOf(afterButton);

      if (from) {
        var buttonIndex = from.indexOf(button);

        if (-1 === buttonIndex) {
          throw new ReferenceError('Trying to move non-existing button `' + button + '`');
        }

        from.splice(buttonIndex, 1);
      }

      if (-1 === afterButtonIndex) {
        throw new ReferenceError('Trying to move button after non-existing button `' + afterButton + '`');
      }

      to.splice(afterButtonIndex + 1, 0, button);
    });
  },
  rearrangeButtons: function rearrangeButtons() {
    var editorProps = tinyMCEPreInit.mceInit[this.editorID],
        editorBasicToolbarButtons = editorProps.toolbar1.split(','),
        editorAdvancedToolbarButtons = editorProps.toolbar2.split(',');
    editorBasicToolbarButtons = _.difference(editorBasicToolbarButtons, this.buttons.removeFromBasic);
    editorAdvancedToolbarButtons = _.difference(editorAdvancedToolbarButtons, this.buttons.removeFromAdvanced);
    this.moveButtons(this.buttons.moveToBasic, editorAdvancedToolbarButtons, editorBasicToolbarButtons);
    this.moveButtons(this.buttons.moveToAdvanced, editorBasicToolbarButtons, editorAdvancedToolbarButtons);
    this.moveButtons(this.buttons.addToBasic, editorBasicToolbarButtons);
    this.moveButtons(this.buttons.addToAdvanced, editorAdvancedToolbarButtons);
    editorProps.toolbar1 = editorBasicToolbarButtons.join(',');
    editorProps.toolbar2 = editorAdvancedToolbarButtons.join(',');
  },
  onReady: function onReady() {
    var _this = this;

    var $editor = jQuery(elementor.config.wp_editor.replace(/elementorwpeditor/g, this.editorID).replace('%%EDITORCONTENT%%', this.getControlValue()));
    $editor.find(".wp-editor-tabs").addClass('elementor-control-dynamic-switcher-wrapper');
    this.ui.inputWrapper.html($editor);
    setTimeout(function () {
      if (!_this.isDestroyed && _this.editor) {
        _this.editor.on('keyup change undo redo', _this.saveEditor.bind(_this));
      }
    }, 100);
  },
  onBeforeDestroy: function onBeforeDestroy() {
    // Remove TinyMCE and QuickTags instances
    delete QTags.instances[this.editorID];

    if (!elementor.config.rich_editing_enabled) {
      return;
    }

    tinymce.EditorManager.execCommand('mceRemoveEditor', true, this.editorID); // Cleanup PreInit data

    delete tinyMCEPreInit.mceInit[this.editorID];
    delete tinyMCEPreInit.qtInit[this.editorID];
  }
});
module.exports = ControlWysiwygItemView;

/***/ }),
/* 583 */
/***/ (function(module, exports, __webpack_require__) {

"use strict";


module.exports = elementorModules.editor.elements.models.BaseSettings.extend({
  defaults: {
    _column_size: 100
  }
});

/***/ }),
/* 584 */
/***/ (function(module, exports, __webpack_require__) {

"use strict";


var _interopRequireDefault = __webpack_require__(0);

__webpack_require__(25);

var _widgetDraggable = _interopRequireDefault(__webpack_require__(585));

var _widgetResizeable = _interopRequireDefault(__webpack_require__(586));

var BaseElementView = __webpack_require__(297),
    WidgetView;

WidgetView = BaseElementView.extend({
  _templateType: null,
  toggleEditTools: true,
  getTemplate: function getTemplate() {
    var editModel = this.getEditModel();

    if ('remote' !== this.getTemplateType()) {
      return Marionette.TemplateCache.get('#tmpl-elementor-' + editModel.get('widgetType') + '-content');
    }

    return _.template('');
  },
  className: function className() {
    var baseClasses = BaseElementView.prototype.className.apply(this, arguments);
    return baseClasses + ' elementor-widget ' + elementor.getElementData(this.getEditModel()).html_wrapper_class;
  },
  events: function events() {
    var events = BaseElementView.prototype.events.apply(this, arguments);
    events.click = 'onClickEdit';
    return events;
  },
  behaviors: function behaviors() {
    var behaviors = BaseElementView.prototype.behaviors.apply(this, arguments);

    _.extend(behaviors, {
      InlineEditing: {
        behaviorClass: __webpack_require__(587),
        inlineEditingClass: 'elementor-inline-editing'
      },
      Draggable: {
        behaviorClass: _widgetDraggable.default
      },
      Resizable: {
        behaviorClass: _widgetResizeable.default
      }
    });

    return elementor.hooks.applyFilters('elements/widget/behaviors', behaviors, this);
  },
  getEditButtons: function getEditButtons() {
    var elementData = elementor.getElementData(this.model),
        editTools = {};
    editTools.edit = {
      title: elementor.translate('edit_element', [elementData.title]),
      icon: 'edit'
    };

    if (elementor.getPreferences('edit_buttons')) {
      editTools.duplicate = {
        title: elementor.translate('duplicate_element', [elementData.title]),
        icon: 'clone'
      };
      editTools.remove = {
        title: elementor.translate('delete_element', [elementData.title]),
        icon: 'close'
      };
    }

    return editTools;
  },
  initialize: function initialize() {
    var _this = this;

    BaseElementView.prototype.initialize.apply(this, arguments);
    var editModel = this.getEditModel();
    editModel.on({
      'before:remote:render': this.onModelBeforeRemoteRender.bind(this),
      'remote:render': this.onModelRemoteRender.bind(this),
      'settings:loaded': function settingsLoaded() {
        return setTimeout(_this.render.bind(_this));
      }
    });

    if ('remote' === this.getTemplateType() && !this.getEditModel().getHtmlCache()) {
      editModel.renderRemoteServer();
    }

    var onRenderMethod = this.onRender;
    this.render = _.throttle(this.render, 300);

    this.onRender = function () {
      _.defer(onRenderMethod.bind(this));
    };
  },
  getContextMenuGroups: function getContextMenuGroups() {
    var _this2 = this;

    var groups = BaseElementView.prototype.getContextMenuGroups.apply(this, arguments),
        transferGroupIndex = groups.indexOf(_.findWhere(groups, {
      name: 'clipboard'
    }));
    groups.splice(transferGroupIndex + 1, 0, {
      name: 'save',
      actions: [{
        name: 'save',
        title: elementor.translate('save_as_global'),
        shortcut: jQuery('<i>', {
          class: 'eicon-pro-icon'
        }),
        isEnabled: function isEnabled() {
          return 'global' !== _this2.options.model.get('widgetType');
        }
      }]
    });
    return groups;
  },
  render: function render() {
    if (this.model.isRemoteRequestActive()) {
      this.handleEmptyWidget();
      this.$el.addClass('elementor-element');
      return;
    }

    if (elementorCommonConfig.isTesting && this.isDestroyed) {
      return;
    }

    Marionette.CompositeView.prototype.render.apply(this, arguments);
  },
  handleEmptyWidget: function handleEmptyWidget() {
    // TODO: REMOVE THIS !!
    // TEMP CODING !!
    this.$el.addClass('elementor-widget-empty').append('<i class="elementor-widget-empty-icon ' + this.getEditModel().getIcon() + '"></i>');
  },
  getTemplateType: function getTemplateType() {
    if (null === this._templateType) {
      var editModel = this.getEditModel(),
          $template = jQuery('#tmpl-elementor-' + editModel.get('widgetType') + '-content');
      this._templateType = $template.length ? 'js' : 'remote';
    }

    return this._templateType;
  },
  getHTMLContent: function getHTMLContent(html) {
    var htmlCache = this.getEditModel().getHtmlCache();
    return htmlCache || html;
  },
  attachElContent: function attachElContent(html) {
    var _this3 = this;

    _.defer(function () {
      elementorFrontend.elements.window.jQuery(_this3.el).empty().append(_this3.getHandlesOverlay(), _this3.getHTMLContent(html));

      _this3.bindUIElements(); // Build again the UI elements since the content attached just now

    });

    return this;
  },
  addInlineEditingAttributes: function addInlineEditingAttributes(key, toolbar) {
    this.addRenderAttribute(key, {
      class: 'elementor-inline-editing',
      'data-elementor-setting-key': key
    });

    if (toolbar) {
      this.addRenderAttribute(key, {
        'data-elementor-inline-editing-toolbar': toolbar
      });
    }
  },
  getRepeaterSettingKey: function getRepeaterSettingKey(settingKey, repeaterKey, repeaterItemIndex) {
    return [repeaterKey, repeaterItemIndex, settingKey].join('.');
  },
  onModelBeforeRemoteRender: function onModelBeforeRemoteRender() {
    this.$el.addClass('elementor-loading');
  },
  onBeforeDestroy: function onBeforeDestroy() {
    // Remove old style from the DOM.
    elementor.$previewContents.find('#elementor-style-' + this.model.get('id')).remove();
  },
  onModelRemoteRender: function onModelRemoteRender() {
    if (this.isDestroyed) {
      return;
    }

    this.$el.removeClass('elementor-loading'); // If container document has been changed during the remote request, don't render.

    if (this.container.document.id !== elementor.documents.getCurrent().id) {
      return;
    }

    this.render();
  },
  onRender: function onRender() {
    var self = this;
    BaseElementView.prototype.onRender.apply(self, arguments);
    var editModel = self.getEditModel(),
        skinType = editModel.getSetting('_skin') || 'default';
    self.$el.attr('data-widget_type', editModel.get('widgetType') + '.' + skinType).removeClass('elementor-widget-empty').children('.elementor-widget-empty-icon').remove(); // TODO: Find a better way to detect if all the images have been loaded

    self.$el.imagesLoaded().always(function () {
      setTimeout(function () {
        if (1 > self.$el.children('.elementor-widget-container').outerHeight()) {
          self.handleEmptyWidget();
        }
      }, 200); // Is element empty?
    });
  },
  onClickEdit: function onClickEdit() {
    if (this.container.isEditable()) {
      this.model.trigger('request:edit');
    }
  }
});
module.exports = WidgetView;

/***/ }),
/* 585 */
/***/ (function(module, exports, __webpack_require__) {

"use strict";


var _interopRequireDefault = __webpack_require__(0);

var _Object$defineProperty = __webpack_require__(1);

_Object$defineProperty(exports, "__esModule", {
  value: true
});

exports.default = void 0;

var _classCallCheck2 = _interopRequireDefault(__webpack_require__(2));

var _createClass2 = _interopRequireDefault(__webpack_require__(3));

var _get2 = _interopRequireDefault(__webpack_require__(26));

var _getPrototypeOf2 = _interopRequireDefault(__webpack_require__(16));

var _inherits2 = _interopRequireDefault(__webpack_require__(4));

var _createSuper2 = _interopRequireDefault(__webpack_require__(5));

var _default = /*#__PURE__*/function (_Marionette$Behavior) {
  (0, _inherits2.default)(_default, _Marionette$Behavior);

  var _super = (0, _createSuper2.default)(_default);

  function _default() {
    (0, _classCallCheck2.default)(this, _default);
    return _super.apply(this, arguments);
  }

  (0, _createClass2.default)(_default, [{
    key: "events",
    value: function events() {
      return {
        dragstart: 'onDragStart',
        dragstop: 'onDragStop'
      };
    }
  }, {
    key: "initialize",
    value: function initialize() {
      (0, _get2.default)((0, _getPrototypeOf2.default)(_default.prototype), "initialize", this).call(this);
      this.listenTo(elementor.channels.dataEditMode, 'switch', this.toggle); // Save this instance for external use eg: ( hooks ).

      this.view.options.draggable = this;
    }
  }, {
    key: "activate",
    value: function activate() {
      this.$el.draggable({
        addClasses: false
      });
    }
  }, {
    key: "deactivate",
    value: function deactivate() {
      if (!this.$el.draggable('instance')) {
        return;
      }

      this.$el.draggable('destroy');
    }
  }, {
    key: "toggle",
    value: function toggle() {
      var isAbsolute = this.view.getEditModel().getSetting('_position');
      this.deactivate();

      if (isAbsolute && this.view.getContainer().isDesignable()) {
        this.activate();
      }
    }
  }, {
    key: "onRender",
    value: function onRender() {
      var _this = this;

      _.defer(function () {
        return _this.toggle();
      });
    }
  }, {
    key: "onDestroy",
    value: function onDestroy() {
      this.deactivate();
    }
  }, {
    key: "onDragStart",
    value: function onDragStart(event) {
      event.stopPropagation();
      this.view.model.trigger('request:edit');
    }
  }, {
    key: "onDragStop",
    value: function onDragStop(event, ui) {
      var _this2 = this;

      event.stopPropagation();
      var currentDeviceMode = elementorFrontend.getCurrentDeviceMode(),
          deviceSuffix = 'desktop' === currentDeviceMode ? '' : '_' + currentDeviceMode,
          editModel = this.view.getEditModel(),
          hOrientation = editModel.getSetting('_offset_orientation_h'),
          vOrientation = editModel.getSetting('_offset_orientation_v'),
          settingToChange = {},
          isRTL = elementorFrontend.config.is_rtl;
      var parentWidth = this.$el.offsetParent().width(),
          elementWidth = this.$el.outerWidth(true),
          left = ui.position.left,
          right = parentWidth - left - elementWidth;
      var xPos = isRTL ? right : left,
          yPos = ui.position.top,
          offsetX = '_offset_x',
          offsetY = '_offset_y';

      if ('end' === hOrientation) {
        xPos = parentWidth - xPos - elementWidth;
        offsetX = '_offset_x_end';
      }

      var offsetXUnit = editModel.getSetting(offsetX + deviceSuffix).unit;
      xPos = elementor.helpers.elementSizeToUnit(this.$el, xPos, offsetXUnit);
      var parentHeight = this.$el.offsetParent().height(),
          elementHeight = this.$el.outerHeight(true);

      if ('end' === vOrientation) {
        yPos = parentHeight - yPos - elementHeight;
        offsetY = '_offset_y_end';
      }

      var offsetYUnit = editModel.getSetting(offsetY + deviceSuffix).unit;
      yPos = elementor.helpers.elementSizeToUnit(this.$el, yPos, offsetYUnit);
      settingToChange[offsetX + deviceSuffix] = {
        size: xPos,
        unit: offsetXUnit
      };
      settingToChange[offsetY + deviceSuffix] = {
        size: yPos,
        unit: offsetYUnit
      };
      $e.run('document/elements/settings', {
        container: this.view.container,
        settings: settingToChange,
        options: {
          external: true
        }
      });
      setTimeout(function () {
        _this2.$el.css({
          top: '',
          left: '',
          right: '',
          bottom: '',
          width: '',
          height: ''
        });
      }, 250);
    }
  }]);
  return _default;
}(Marionette.Behavior);

exports.default = _default;

/***/ }),
/* 586 */
/***/ (function(module, exports, __webpack_require__) {

"use strict";


var _interopRequireDefault = __webpack_require__(0);

var _Object$defineProperty = __webpack_require__(1);

_Object$defineProperty(exports, "__esModule", {
  value: true
});

exports.default = void 0;

var _classCallCheck2 = _interopRequireDefault(__webpack_require__(2));

var _createClass2 = _interopRequireDefault(__webpack_require__(3));

var _get2 = _interopRequireDefault(__webpack_require__(26));

var _getPrototypeOf2 = _interopRequireDefault(__webpack_require__(16));

var _inherits2 = _interopRequireDefault(__webpack_require__(4));

var _createSuper2 = _interopRequireDefault(__webpack_require__(5));

var _default = /*#__PURE__*/function (_Marionette$Behavior) {
  (0, _inherits2.default)(_default, _Marionette$Behavior);

  var _super = (0, _createSuper2.default)(_default);

  function _default() {
    (0, _classCallCheck2.default)(this, _default);
    return _super.apply(this, arguments);
  }

  (0, _createClass2.default)(_default, [{
    key: "events",
    value: function events() {
      return {
        resizestart: 'onResizeStart',
        resizestop: 'onResizeStop',
        resize: 'onResize'
      };
    }
  }, {
    key: "initialize",
    value: function initialize() {
      (0, _get2.default)((0, _getPrototypeOf2.default)(_default.prototype), "initialize", this).call(this);
      this.listenTo(elementor.channels.dataEditMode, 'switch', this.toggle); // Save this instance for external use eg: ( hooks ).

      this.view.options.resizeable = this;
    }
  }, {
    key: "activate",
    value: function activate() {
      this.$el.resizable({
        handles: 'e, w'
      });
    }
  }, {
    key: "deactivate",
    value: function deactivate() {
      if (!this.$el.resizable('instance')) {
        return;
      }

      this.$el.resizable('destroy');
    }
  }, {
    key: "toggle",
    value: function toggle() {
      var editModel = this.view.getEditModel(),
          isAbsolute = editModel.getSetting('_position'),
          isInline = 'initial' === editModel.getSetting('_element_width');
      this.deactivate();

      if ((isAbsolute || isInline) && this.view.container.isDesignable()) {
        this.activate();
      }
    }
  }, {
    key: "onRender",
    value: function onRender() {
      var _this = this;

      _.defer(function () {
        return _this.toggle();
      });
    }
  }, {
    key: "onDestroy",
    value: function onDestroy() {
      this.deactivate();
    }
  }, {
    key: "onResizeStart",
    value: function onResizeStart(event) {
      event.stopPropagation();
      this.view.model.trigger('request:edit');
    }
  }, {
    key: "onResizeStop",
    value: function onResizeStop(event, ui) {
      event.stopPropagation();
      var currentDeviceMode = elementorFrontend.getCurrentDeviceMode(),
          deviceSuffix = 'desktop' === currentDeviceMode ? '' : '_' + currentDeviceMode,
          editModel = this.view.getEditModel(),
          unit = editModel.getSetting('_element_custom_width' + deviceSuffix).unit,
          width = elementor.helpers.elementSizeToUnit(this.$el, ui.size.width, unit),
          settingToChange = {};
      settingToChange['_element_width' + deviceSuffix] = 'initial';
      settingToChange['_element_custom_width' + deviceSuffix] = {
        unit: unit,
        size: width
      };
      $e.run('document/elements/settings', {
        container: this.view.container,
        settings: settingToChange,
        options: {
          external: true
        }
      });
      this.$el.css({
        width: '',
        height: '',
        left: ''
      });
    }
  }, {
    key: "onResize",
    value: function onResize(event) {
      event.stopPropagation();
    }
  }]);
  return _default;
}(Marionette.Behavior);

exports.default = _default;

/***/ }),
/* 587 */
/***/ (function(module, exports, __webpack_require__) {

"use strict";


var _interopRequireDefault = __webpack_require__(0);

var _defineProperty2 = _interopRequireDefault(__webpack_require__(28));

__webpack_require__(80);

var InlineEditingBehavior;
InlineEditingBehavior = Marionette.Behavior.extend({
  editing: false,
  $currentEditingArea: null,
  ui: function ui() {
    return {
      inlineEditingArea: '.' + this.getOption('inlineEditingClass')
    };
  },
  events: function events() {
    return {
      'click @ui.inlineEditingArea': 'onInlineEditingClick',
      'input @ui.inlineEditingArea': 'onInlineEditingUpdate'
    };
  },
  initialize: function initialize() {
    this.onInlineEditingBlur = this.onInlineEditingBlur.bind(this);
  },
  getEditingSettingKey: function getEditingSettingKey() {
    return this.$currentEditingArea.data().elementorSettingKey;
  },
  startEditing: function startEditing($element) {
    if (this.editing || !this.view.container.isEditable() || this.view.model.isRemoteRequestActive()) {
      return;
    }

    var elementorSettingKey = $element.data().elementorSettingKey,
        settingKey = elementorSettingKey,
        keyParts = elementorSettingKey.split('.'),
        isRepeaterKey = 3 === keyParts.length,
        settingsModel = this.view.getEditModel().get('settings');

    if (isRepeaterKey) {
      settingsModel = settingsModel.get(keyParts[0]).models[keyParts[1]];
      settingKey = keyParts[2];
    }

    var dynamicSettings = settingsModel.get('__dynamic__'),
        isDynamic = dynamicSettings && dynamicSettings[settingKey];

    if (isDynamic) {
      return;
    }

    this.$currentEditingArea = $element;
    var elementData = this.$currentEditingArea.data(),
        elementDataToolbar = elementData.elementorInlineEditingToolbar,
        mode = 'advanced' === elementDataToolbar ? 'advanced' : 'basic',
        editModel = this.view.getEditModel(),
        inlineEditingConfig = elementor.config.inlineEditing,
        contentHTML = editModel.getSetting(this.getEditingSettingKey());

    if ('advanced' === mode) {
      contentHTML = wp.editor.autop(contentHTML);
    }
    /**
     *  Replace rendered content with unrendered content.
     *  This way the user can edit the original content, before shortcodes and oEmbeds are fired.
     */


    this.$currentEditingArea.html(contentHTML);
    var ElementorInlineEditor = elementorFrontend.elements.window.ElementorInlineEditor;
    this.editing = true;
    this.view.allowRender = false; // Avoid retrieving of old content (e.g. in case of sorting)

    this.view.model.setHtmlCache('');
    this.editor = new ElementorInlineEditor({
      linksInNewWindow: true,
      stay: false,
      editor: this.$currentEditingArea[0],
      mode: mode,
      list: 'none' === elementDataToolbar ? [] : inlineEditingConfig.toolbar[elementDataToolbar || 'basic'],
      cleanAttrs: ['id', 'class', 'name'],
      placeholder: elementor.translate('type_here') + '...',
      toolbarIconsPrefix: 'eicon-editor-',
      toolbarIconsDictionary: {
        externalLink: {
          className: 'eicon-editor-external-link'
        },
        list: {
          className: 'eicon-editor-list-ul'
        },
        insertOrderedList: {
          className: 'eicon-editor-list-ol'
        },
        insertUnorderedList: {
          className: 'eicon-editor-list-ul'
        },
        createlink: {
          className: 'eicon-editor-link'
        },
        unlink: {
          className: 'eicon-editor-unlink'
        },
        blockquote: {
          className: 'eicon-editor-quote'
        },
        p: {
          className: 'eicon-editor-paragraph'
        },
        pre: {
          className: 'eicon-editor-code'
        }
      }
    });
    var $menuItems = jQuery(this.editor._menu).children();
    /**
     * When the edit area is not focused (on blur) the inline editing is stopped.
     * In order to prevent blur event when the user clicks on toolbar buttons while editing the
     * content, we need the prevent their mousedown event. This also prevents the blur event.
     */

    $menuItems.on('mousedown', function (event) {
      event.preventDefault();
    });
    this.$currentEditingArea.on('blur', this.onInlineEditingBlur);
    elementorCommon.elements.$body.on('mousedown', this.onInlineEditingBlur);
  },
  stopEditing: function stopEditing() {
    this.editing = false;
    this.$currentEditingArea.off('blur', this.onInlineEditingBlur);
    elementorCommon.elements.$body.off('mousedown', this.onInlineEditingBlur);
    this.editor.destroy();
    this.view.allowRender = true;
    /**
     * Inline editing has several toolbar types (advanced, basic and none). When editing is stopped,
     * we need to rerender the area. To prevent multiple renderings, we will render only areas that
     * use advanced toolbars.
     */

    if ('advanced' === this.$currentEditingArea.data().elementorInlineEditingToolbar) {
      this.view.getEditModel().renderRemoteServer();
    }
  },
  onInlineEditingClick: function onInlineEditingClick(event) {
    var self = this,
        $targetElement = jQuery(event.currentTarget);
    /**
     * When starting inline editing we need to set timeout, this allows other inline items to finish
     * their operations before focusing new editing area.
     */

    setTimeout(function () {
      self.startEditing($targetElement);
    }, 30);
  },
  onInlineEditingBlur: function onInlineEditingBlur(event) {
    var _this = this;

    if ('mousedown' === event.type) {
      this.stopEditing();
      return;
    }
    /**
     * When exiting inline editing we need to set timeout, to make sure there is no focus on internal
     * toolbar action. This prevent the blur and allows the user to continue the inline editing.
     */


    setTimeout(function () {
      var selection = elementorFrontend.elements.window.getSelection(),
          $focusNode = jQuery(selection.focusNode);

      if ($focusNode.closest('.pen-input-wrapper').length) {
        return;
      }

      _this.stopEditing();
    }, 20);
  },
  onInlineEditingUpdate: function onInlineEditingUpdate() {
    var key = this.getEditingSettingKey(),
        container = this.view.getContainer();
    var parts = key.split('.'); // Is it repeater?

    if (3 === parts.length) {
      container = container.children[parts[1]];
      key = parts[2];
    }

    $e.run('document/elements/settings', {
      container: container,
      settings: (0, _defineProperty2.default)({}, key, this.editor.getContent()),
      options: {
        external: true
      }
    });
  }
});
module.exports = InlineEditingBehavior;

/***/ }),
/* 588 */
/***/ (function(module, exports, __webpack_require__) {

"use strict";


var PanelElementsElementsView;
PanelElementsElementsView = Marionette.CollectionView.extend({
  childView: __webpack_require__(387),
  id: 'elementor-panel-elements',
  initialize: function initialize() {
    this.listenTo(elementor.channels.panelElements, 'filter:change', this.onFilterChanged);
  },
  filter: function filter(childModel) {
    var filterValue = elementor.channels.panelElements.request('filter:value');

    if (!filterValue) {
      return true;
    }

    if (-1 !== childModel.get('title').toLowerCase().indexOf(filterValue.toLowerCase())) {
      return true;
    }

    return _.any(childModel.get('keywords'), function (keyword) {
      return -1 !== keyword.toLowerCase().indexOf(filterValue.toLowerCase());
    });
  },
  onFilterChanged: function onFilterChanged() {
    var filterValue = elementor.channels.panelElements.request('filter:value');

    if (!filterValue) {
      this.onFilterEmpty();
    }

    this._renderChildren();

    this.triggerMethod('children:render');
  },
  onFilterEmpty: function onFilterEmpty() {
    $e.routes.refreshContainer('panel');
  }
});
module.exports = PanelElementsElementsView;

/***/ }),
/* 589 */
/***/ (function(module, exports, __webpack_require__) {

"use strict";


var _interopRequireDefault = __webpack_require__(0);

__webpack_require__(119);

__webpack_require__(39);

__webpack_require__(58);

var _keys = _interopRequireDefault(__webpack_require__(23));

var _stringify = _interopRequireDefault(__webpack_require__(206));

module.exports = elementorModules.Module.extend({
  CACHE_KEY_NOT_FOUND_ERROR: 'Cache key not found',
  tags: {
    Base: __webpack_require__(590)
  },
  cache: {},
  cacheRequests: {},
  cacheCallbacks: [],
  addCacheRequest: function addCacheRequest(tag) {
    this.cacheRequests[this.createCacheKey(tag)] = true;
  },
  createCacheKey: function createCacheKey(tag) {
    return btoa(tag.getOption('name')) + '-' + btoa(encodeURIComponent((0, _stringify.default)(tag.model)));
  },
  loadTagDataFromCache: function loadTagDataFromCache(tag) {
    var cacheKey = this.createCacheKey(tag);

    if (undefined !== this.cache[cacheKey]) {
      return this.cache[cacheKey];
    }

    if (!this.cacheRequests[cacheKey]) {
      this.addCacheRequest(tag);
    }
  },
  loadCacheRequests: function loadCacheRequests() {
    var cache = this.cache,
        cacheRequests = this.cacheRequests,
        cacheCallbacks = this.cacheCallbacks;
    this.cacheRequests = {};
    this.cacheCallbacks = [];
    elementorCommon.ajax.addRequest('render_tags', {
      data: {
        post_id: elementor.config.document.id,
        tags: (0, _keys.default)(cacheRequests)
      },
      success: function success(data) {
        jQuery.extend(cache, data);
        cacheCallbacks.forEach(function (callback) {
          callback();
        });
      }
    });
  },
  refreshCacheFromServer: function refreshCacheFromServer(callback) {
    this.cacheCallbacks.push(callback);
    this.loadCacheRequests();
  },
  getConfig: function getConfig(key) {
    return this.getItems(elementor.config.dynamicTags, key);
  },
  parseTagsText: function parseTagsText(text, settings, parseCallback) {
    var self = this;

    if ('object' === settings.returnType) {
      return self.parseTagText(text, settings, parseCallback);
    }

    return text.replace(/\[elementor-tag[^\]]+]/g, function (tagText) {
      return self.parseTagText(tagText, settings, parseCallback);
    });
  },
  parseTagText: function parseTagText(tagText, settings, parseCallback) {
    var tagData = this.tagTextToTagData(tagText);

    if (!tagData) {
      if ('object' === settings.returnType) {
        return {};
      }

      return '';
    }

    return parseCallback(tagData.id, tagData.name, tagData.settings);
  },
  tagTextToTagData: function tagTextToTagData(tagText) {
    var tagIDMatch = tagText.match(/id="(.*?(?="))"/),
        tagNameMatch = tagText.match(/name="(.*?(?="))"/),
        tagSettingsMatch = tagText.match(/settings="(.*?(?="]))/);

    if (!tagIDMatch || !tagNameMatch || !tagSettingsMatch) {
      return false;
    }

    return {
      id: tagIDMatch[1],
      name: tagNameMatch[1],
      settings: JSON.parse(decodeURIComponent(tagSettingsMatch[1]))
    };
  },
  createTag: function createTag(tagID, tagName, tagSettings) {
    var tagConfig = this.getConfig('tags.' + tagName);

    if (!tagConfig) {
      return;
    }

    var TagClass = this.tags[tagName] || this.tags.Base,
        model = new elementorModules.editor.elements.models.BaseSettings(tagSettings, {
      controls: tagConfig.controls
    });
    return new TagClass({
      id: tagID,
      name: tagName,
      model: model
    });
  },
  getTagDataContent: function getTagDataContent(tagID, tagName, tagSettings) {
    var tag = this.createTag(tagID, tagName, tagSettings);

    if (!tag) {
      return;
    }

    return tag.getContent();
  },
  tagDataToTagText: function tagDataToTagText(tagID, tagName, tagSettings) {
    tagSettings = encodeURIComponent((0, _stringify.default)(tagSettings && tagSettings.toJSON({
      remove: ['default']
    }) || {}));
    return '[elementor-tag id="' + tagID + '" name="' + tagName + '" settings="' + tagSettings + '"]';
  },
  tagContainerToTagText: function tagContainerToTagText(
  /**Container*/
  container) {
    return elementor.dynamicTags.tagDataToTagText(container.view.getOption('id'), container.view.getOption('name'), container.view.model);
  },
  cleanCache: function cleanCache() {
    this.cache = {};
  },
  onInit: function onInit() {
    this.loadCacheRequests = _.debounce(this.loadCacheRequests, 300);
  }
});

/***/ }),
/* 590 */
/***/ (function(module, exports, __webpack_require__) {

"use strict";


module.exports = Marionette.ItemView.extend({
  hasTemplate: true,
  tagName: 'span',
  className: function className() {
    return 'elementor-tag';
  },
  getTemplate: function getTemplate() {
    if (!this.hasTemplate) {
      return false;
    }

    return Marionette.TemplateCache.get('#tmpl-elementor-tag-' + this.getOption('name') + '-content');
  },
  initialize: function initialize() {
    try {
      this.getTemplate();
    } catch (e) {
      this.hasTemplate = false;
    }
  },
  getConfig: function getConfig(key) {
    var config = elementor.dynamicTags.getConfig('tags.' + this.getOption('name'));

    if (key) {
      return config[key];
    }

    return config;
  },
  getContent: function getContent() {
    var contentType = this.getConfig('content_type'),
        data;

    if (!this.hasTemplate) {
      data = elementor.dynamicTags.loadTagDataFromCache(this);

      if (undefined === data) {
        throw new Error(elementor.dynamicTags.CACHE_KEY_NOT_FOUND_ERROR);
      }
    }

    if ('ui' === contentType) {
      this.render();

      if (this.hasTemplate) {
        return this.el.outerHTML;
      }

      if (this.getConfig('wrapped_tag')) {
        data = jQuery(data).html();
      }

      this.$el.html(data);
    }

    return data;
  },
  onRender: function onRender() {
    this.el.id = 'elementor-tag-' + this.getOption('id');
  }
});

/***/ }),
/* 591 */
/***/ (function(module, exports, __webpack_require__) {

"use strict";


var _interopRequireDefault = __webpack_require__(0);

var _manager = _interopRequireDefault(__webpack_require__(592));

module.exports = elementorModules.Module.extend({
  modules: {
    base: __webpack_require__(335),
    page: __webpack_require__(593),
    editorPreferences: _manager.default
  },
  panelPages: {
    base: __webpack_require__(595)
  },
  onInit: function onInit() {
    this.initSettings();
  },
  initSettings: function initSettings() {
    var self = this;

    _.each(elementor.config.settings, function (config, name) {
      var Manager = self.modules[name] || self.modules.base;
      self[name] = new Manager(config);
    });
  }
});

/***/ }),
/* 592 */
/***/ (function(module, exports, __webpack_require__) {

"use strict";


var _interopRequireDefault = __webpack_require__(0);

var _Object$defineProperty = __webpack_require__(1);

_Object$defineProperty(exports, "__esModule", {
  value: true
});

exports.default = void 0;

var _classCallCheck2 = _interopRequireDefault(__webpack_require__(2));

var _createClass2 = _interopRequireDefault(__webpack_require__(3));

var _inherits2 = _interopRequireDefault(__webpack_require__(4));

var _createSuper2 = _interopRequireDefault(__webpack_require__(5));

var _manager = _interopRequireDefault(__webpack_require__(335));

var _default = /*#__PURE__*/function (_BaseManager) {
  (0, _inherits2.default)(_default, _BaseManager);

  var _super = (0, _createSuper2.default)(_default);

  (0, _createClass2.default)(_default, [{
    key: "getDefaultSettings",
    value: function getDefaultSettings() {
      return {
        darkModeLinkID: 'elementor-editor-dark-mode-css'
      };
    }
  }]);

  function _default() {
    var _this;

    (0, _classCallCheck2.default)(this, _default);

    for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
      args[_key] = arguments[_key];
    }

    _this = _super.call.apply(_super, [this].concat(args));
    _this.changeCallbacks = {
      ui_theme: _this.onUIThemeChanged,
      panel_width: _this.onPanelWidthChanged,
      edit_buttons: _this.onEditButtonsChanged
    };
    return _this;
  }

  (0, _createClass2.default)(_default, [{
    key: "createDarkModeStylesheetLink",
    value: function createDarkModeStylesheetLink() {
      var darkModeLinkID = this.getSettings('darkModeLinkID');
      var $darkModeLink = jQuery('#' + darkModeLinkID);

      if (!$darkModeLink.length) {
        $darkModeLink = jQuery('<link>', {
          id: darkModeLinkID,
          rel: 'stylesheet',
          href: elementor.config.ui.darkModeStylesheetURL
        });
      }

      this.$link = $darkModeLink;
    }
  }, {
    key: "getDarkModeStylesheetLink",
    value: function getDarkModeStylesheetLink() {
      if (!this.$link) {
        this.createDarkModeStylesheetLink();
      }

      return this.$link;
    }
  }, {
    key: "onUIThemeChanged",
    value: function onUIThemeChanged(newValue) {
      var $link = this.getDarkModeStylesheetLink();

      if ('light' === newValue) {
        $link.remove();
        return;
      }

      $link.attr('media', 'auto' === newValue ? '(prefers-color-scheme: dark)' : '').appendTo(elementorCommon.elements.$body);
    }
  }, {
    key: "onPanelWidthChanged",
    value: function onPanelWidthChanged(newValue) {
      elementor.panel.saveSize({
        width: newValue.size + newValue.unit
      });
      elementor.panel.setSize();
    }
  }, {
    key: "onEditButtonsChanged",
    value: function onEditButtonsChanged() {
      // Let the button change before the high-performance action of rendering the entire page
      setTimeout(function () {
        return elementor.getPreviewView()._renderChildren();
      }, 300);
    }
  }]);
  return _default;
}(_manager.default);

exports.default = _default;

/***/ }),
/* 593 */
/***/ (function(module, exports, __webpack_require__) {

"use strict";


var _interopRequireDefault = __webpack_require__(0);

__webpack_require__(25);

var _component = _interopRequireDefault(__webpack_require__(594));

var BaseSettings = __webpack_require__(335);

module.exports = BaseSettings.extend({
  getStyleId: function getStyleId() {
    return this.getSettings('name') + '-' + elementor.documents.getCurrent().id;
  },
  onInit: function onInit() {
    BaseSettings.prototype.onInit.apply(this);
    $e.components.register(new _component.default({
      manager: this
    }));
  },
  save: function save() {},
  changeCallbacks: {
    post_title: function post_title(newValue) {
      var $title = elementorFrontend.elements.$document.find(elementor.config.page_title_selector);
      $title.text(newValue);
    },
    template: function template() {
      $e.run('document/save/auto', {
        force: true,
        onSuccess: function onSuccess() {
          elementor.reloadPreview();
          elementor.once('preview:loaded', function () {
            $e.route('panel/page-settings/settings');
          });
        }
      });
    }
  },
  getDataToSave: function getDataToSave(data) {
    data.id = elementor.config.document.id;
    return data;
  },
  // Emulate an element view/model structure with the parts needed for a container.
  getEditedView: function getEditedView() {
    var _this = this;

    if (this.editedView) {
      return this.editedView;
    }

    var id = this.getContainerId(),
        editModel = new Backbone.Model({
      id: id,
      elType: id,
      settings: this.model,
      elements: elementor.elements
    });
    var container = new elementorModules.editor.Container({
      type: id,
      id: editModel.id,
      model: editModel,
      settings: editModel.get('settings'),
      label: elementor.config.document.panel.title,
      controls: this.model.controls,
      children: elementor.elements,
      // Emulate a view that can render the style.
      renderer: {
        view: {
          lookup: function lookup() {
            return container;
          },
          renderOnChange: function renderOnChange() {
            return _this.updateStylesheet();
          },
          renderUI: function renderUI() {
            return _this.updateStylesheet();
          }
        }
      }
    });
    this.editedView = {
      getContainer: function getContainer() {
        return container;
      },
      getEditModel: function getEditModel() {
        return editModel;
      },
      model: editModel
    };
    return this.editedView;
  },
  getContainerId: function getContainerId() {
    return 'document';
  }
});

/***/ }),
/* 594 */
/***/ (function(module, exports, __webpack_require__) {

"use strict";


var _interopRequireDefault = __webpack_require__(0);

var _Object$defineProperty = __webpack_require__(1);

_Object$defineProperty(exports, "__esModule", {
  value: true
});

exports.default = void 0;

var _classCallCheck2 = _interopRequireDefault(__webpack_require__(2));

var _createClass2 = _interopRequireDefault(__webpack_require__(3));

var _inherits2 = _interopRequireDefault(__webpack_require__(4));

var _createSuper2 = _interopRequireDefault(__webpack_require__(5));

var _componentBase = _interopRequireDefault(__webpack_require__(85));

var Component = /*#__PURE__*/function (_ComponentBase) {
  (0, _inherits2.default)(Component, _ComponentBase);

  var _super = (0, _createSuper2.default)(Component);

  function Component() {
    (0, _classCallCheck2.default)(this, Component);
    return _super.apply(this, arguments);
  }

  (0, _createClass2.default)(Component, [{
    key: "getNamespace",
    value: function getNamespace() {
      return 'panel/page-settings';
    }
  }, {
    key: "defaultTabs",
    value: function defaultTabs() {
      return {
        settings: {
          title: elementor.translate('settings')
        },
        style: {
          title: elementor.translate('style')
        },
        advanced: {
          title: elementor.translate('advanced')
        }
      };
    }
  }, {
    key: "renderTab",
    value: function renderTab(tab) {
      elementor.getPanelView().setPage('page_settings').activateTab(tab);
    }
  }, {
    key: "getTabsWrapperSelector",
    value: function getTabsWrapperSelector() {
      return '.elementor-panel-navigation';
    }
  }]);
  return Component;
}(_componentBase.default);

exports.default = Component;

/***/ }),
/* 595 */
/***/ (function(module, exports, __webpack_require__) {

"use strict";


module.exports = elementorModules.editor.views.ControlsStack.extend({
  id: function id() {
    return 'elementor-panel-' + this.getOption('name') + '-settings';
  },
  getTemplate: function getTemplate() {
    return '#tmpl-elementor-panel-' + this.getOption('name') + '-settings';
  },
  childViewContainer: function childViewContainer() {
    return '#elementor-panel-' + this.getOption('name') + '-settings-controls';
  },
  childViewOptions: function childViewOptions() {
    return {
      container: this.getOption('editedView').getContainer()
    };
  }
});

/***/ }),
/* 596 */
/***/ (function(module, exports, __webpack_require__) {

"use strict";


var _interopRequireDefault = __webpack_require__(0);

var _parseInt2 = _interopRequireDefault(__webpack_require__(213));

module.exports = elementorModules.Module.extend({
  initToast: function initToast() {
    var toast = elementorCommon.dialogsManager.createWidget('buttons', {
      id: 'elementor-toast',
      position: {
        my: 'center bottom',
        at: 'center bottom-10',
        of: '#elementor-panel-content-wrapper',
        autoRefresh: true
      },
      hide: {
        onClick: true,
        auto: true,
        autoDelay: 10000
      },
      effects: {
        show: function show() {
          var $widget = toast.getElements('widget');
          $widget.show();
          toast.refreshPosition();
          var top = (0, _parseInt2.default)($widget.css('top'), 10);
          $widget.hide().css('top', top + 100);
          $widget.animate({
            opacity: 'show',
            height: 'show',
            paddingBottom: 'show',
            paddingTop: 'show',
            top: top
          }, {
            easing: 'linear',
            duration: 300
          });
        },
        hide: function hide() {
          var $widget = toast.getElements('widget'),
              top = (0, _parseInt2.default)($widget.css('top'), 10);
          $widget.animate({
            opacity: 'hide',
            height: 'hide',
            paddingBottom: 'hide',
            paddingTop: 'hide',
            top: top + 100
          }, {
            easing: 'linear',
            duration: 300
          });
        }
      },
      button: {
        tag: 'div'
      }
    });

    this.getToast = function () {
      return toast;
    };
  },
  showToast: function showToast(options) {
    var toast = this.getToast();
    toast.setMessage(options.message);
    toast.getElements('buttonsWrapper').empty();

    if (options.buttons) {
      options.buttons.forEach(function (button) {
        toast.addButton(button);
      });
    } else {
      toast.getElements('buttonsWrapper').remove();
    }

    if (options.classes) {
      toast.getElements('widget').addClass(options.classes);
    }

    toast.show();
  },
  onInit: function onInit() {
    this.initToast();
  }
});

/***/ }),
/* 597 */
/***/ (function(module, exports, __webpack_require__) {

"use strict";


var BaseRegion = __webpack_require__(371);

module.exports = BaseRegion.extend({
  el: '#elementor-panel',
  getStorageKey: function getStorageKey() {
    return 'panel';
  },
  getDefaultStorage: function getDefaultStorage() {
    return {
      size: {
        width: ''
      }
    };
  },
  constructor: function constructor() {
    BaseRegion.prototype.constructor.apply(this, arguments);

    var PanelLayoutView = __webpack_require__(598);

    this.show(new PanelLayoutView());
    this.resizable();
    this.setSize();
    this.listenTo(elementor.channels.dataEditMode, 'switch', this.onEditModeSwitched);
  },
  setSize: function setSize() {
    var width = this.storage.size.width,
        side = elementorCommon.config.isRTL ? 'right' : 'left';
    this.$el.css('width', width);
    elementor.$previewWrapper.css(side, width);
  },
  resizable: function resizable() {
    var self = this,
        side = elementorCommon.config.isRTL ? 'right' : 'left';
    self.$el.resizable({
      handles: elementorCommon.config.isRTL ? 'w' : 'e',
      minWidth: 200,
      maxWidth: 680,
      start: function start() {
        elementor.$previewWrapper.addClass('ui-resizable-resizing');
      },
      stop: function stop() {
        elementor.$previewWrapper.removeClass('ui-resizable-resizing');
        elementor.getPanelView().updateScrollbar();
        self.saveSize();
      },
      resize: function resize(event, ui) {
        elementor.$previewWrapper.css(side, ui.size.width);
      }
    });
  },
  onEditModeSwitched: function onEditModeSwitched(activeMode) {
    if ('edit' !== activeMode) {
      return;
    }

    this.setSize();
  }
});

/***/ }),
/* 598 */
/***/ (function(module, exports, __webpack_require__) {

"use strict";


var _interopRequireDefault = __webpack_require__(0);

var _keys = _interopRequireDefault(__webpack_require__(23));

var _component = _interopRequireDefault(__webpack_require__(599));

var _component2 = _interopRequireDefault(__webpack_require__(612));

var _component3 = _interopRequireDefault(__webpack_require__(613));

var EditModeItemView = __webpack_require__(616),
    PanelLayoutView;

PanelLayoutView = Marionette.LayoutView.extend({
  template: '#tmpl-elementor-panel',
  id: 'elementor-panel-inner',
  regions: {
    content: '#elementor-panel-content-wrapper',
    header: '#elementor-panel-header-wrapper',
    footer: '#elementor-panel-footer',
    modeSwitcher: '#elementor-mode-switcher'
  },
  pages: {},
  childEvents: {
    'click:add': function clickAdd() {
      $e.route('panel/elements/categories');
    },
    'editor:destroy': function editorDestroy() {
      $e.route('panel/elements/categories', {
        autoFocusSearch: false
      });
    }
  },
  currentPageName: null,
  currentPageView: null,
  perfectScrollbar: null,
  initialize: function initialize() {
    $e.components.register(new _component.default({
      manager: this
    }));
    $e.internal('panel/state-loading');
    $e.components.register(new _component2.default({
      manager: this
    }));
    $e.components.register(new _component3.default({
      manager: this
    }));
    this.initPages();
  },
  buildPages: function buildPages() {
    var pages = {
      elements: {
        view: __webpack_require__(617),
        title: '<img src="' + elementorCommon.config.urls.assets + 'images/logo-panel.svg">'
      },
      editor: {
        view: __webpack_require__(622)
      },
      menu: {
        view: elementor.modules.layouts.panel.pages.menu.Menu,
        title: '<img src="' + elementorCommon.config.urls.assets + 'images/logo-panel.svg">'
      },
      colorScheme: {
        view: __webpack_require__(623)
      },
      typographyScheme: {
        view: __webpack_require__(626)
      }
    };

    var schemesTypes = (0, _keys.default)(elementor.schemes.getSchemes()),
        disabledSchemes = _.difference(schemesTypes, elementor.schemes.getEnabledSchemesTypes());

    _.each(disabledSchemes, function (schemeType) {
      var scheme = elementor.schemes.getScheme(schemeType);
      pages[schemeType + 'Scheme'].view = __webpack_require__(627).extend({
        disabledTitle: scheme.disabled_title
      });
    });

    return pages;
  },
  initPages: function initPages() {
    var pages;

    this.getPages = function (page) {
      if (!pages) {
        pages = this.buildPages();
      }

      return page ? pages[page] : pages;
    };

    this.addPage = function (pageName, pageData) {
      if (!pages) {
        pages = this.buildPages();
      }

      pages[pageName] = pageData;
    };
  },
  getHeaderView: function getHeaderView() {
    return this.getChildView('header');
  },
  getFooterView: function getFooterView() {
    return this.getChildView('footer');
  },
  getCurrentPageName: function getCurrentPageName() {
    return this.currentPageName;
  },
  getCurrentPageView: function getCurrentPageView() {
    return this.currentPageView;
  },
  setPage: function setPage(page, title, viewOptions) {
    var pages = this.getPages();

    if ('elements' === page && !elementor.userCan('design')) {
      if (pages.page_settings) {
        page = 'page_settings';
      }
    }

    var pageData = pages[page];

    if (!pageData) {
      throw new ReferenceError('Elementor panel doesn\'t have page named \'' + page + '\'');
    }

    if (pageData.options) {
      viewOptions = _.extend(pageData.options, viewOptions);
    }

    var View = pageData.view;

    if (pageData.getView) {
      View = pageData.getView();
    }

    this.currentPageName = page;
    this.currentPageView = new View(viewOptions);
    this.showChildView('content', this.currentPageView);
    this.getHeaderView().setTitle(title || pageData.title);
    this.trigger('set:page', this.currentPageView).trigger('set:page:' + page, this.currentPageView);

    if (elementor.promotion.dialog) {
      elementor.promotion.dialog.hide();
    }

    return this.currentPageView;
  },
  onBeforeShow: function onBeforeShow() {
    var PanelFooterItemView = __webpack_require__(628),
        PanelHeaderItemView = __webpack_require__(629); // Edit Mode


    this.showChildView('modeSwitcher', new EditModeItemView()); // Header

    this.showChildView('header', new PanelHeaderItemView()); // Footer

    this.showChildView('footer', new PanelFooterItemView()); // Added Editor events

    this.updateScrollbar = _.throttle(this.updateScrollbar, 100);
    this.getRegion('content').on('before:show', this.onEditorBeforeShow.bind(this)).on('empty', this.onEditorEmpty.bind(this)).on('show', this.updateScrollbar.bind(this));
  },
  onEditorBeforeShow: function onEditorBeforeShow() {
    _.defer(this.updateScrollbar.bind(this));
  },
  onEditorEmpty: function onEditorEmpty() {
    this.updateScrollbar();
  },
  updateScrollbar: function updateScrollbar() {
    if (!this.perfectScrollbar) {
      this.perfectScrollbar = new PerfectScrollbar(this.content.el, {
        suppressScrollX: true
      }); // The RTL is buggy, so always keep it LTR.

      this.perfectScrollbar.isRtl = false;
      return;
    }

    this.perfectScrollbar.update();
  }
});
module.exports = PanelLayoutView;

/***/ }),
/* 599 */
/***/ (function(module, exports, __webpack_require__) {

"use strict";


var _interopRequireWildcard = __webpack_require__(36);

var _interopRequireDefault = __webpack_require__(0);

var _Object$defineProperty = __webpack_require__(1);

_Object$defineProperty(exports, "__esModule", {
  value: true
});

exports.default = void 0;

var _classCallCheck2 = _interopRequireDefault(__webpack_require__(2));

var _createClass2 = _interopRequireDefault(__webpack_require__(3));

var _inherits2 = _interopRequireDefault(__webpack_require__(4));

var _createSuper2 = _interopRequireDefault(__webpack_require__(5));

var _componentBase = _interopRequireDefault(__webpack_require__(85));

var commands = _interopRequireWildcard(__webpack_require__(600));

var commandsInternal = _interopRequireWildcard(__webpack_require__(608));

var Component = /*#__PURE__*/function (_ComponentBase) {
  (0, _inherits2.default)(Component, _ComponentBase);

  var _super = (0, _createSuper2.default)(Component);

  function Component() {
    (0, _classCallCheck2.default)(this, Component);
    return _super.apply(this, arguments);
  }

  (0, _createClass2.default)(Component, [{
    key: "getNamespace",
    value: function getNamespace() {
      return 'panel';
    }
  }, {
    key: "defaultRoutes",
    value: function defaultRoutes() {
      var _this = this;

      return {
        menu: function menu() {
          return _this.manager.setPage('menu');
        },
        'global-colors': function globalColors() {
          return _this.manager.setPage('colorScheme');
        },
        'global-fonts': function globalFonts() {
          return _this.manager.setPage('typographyScheme');
        },
        'editor-preferences': function editorPreferences() {
          return _this.manager.setPage('editorPreferences_settings').activateTab('settings');
        }
      };
    }
  }, {
    key: "defaultCommandsInternal",
    value: function defaultCommandsInternal() {
      return this.importCommands(commandsInternal);
    }
  }, {
    key: "defaultCommands",
    value: function defaultCommands() {
      return this.importCommands(commands);
    }
  }, {
    key: "defaultShortcuts",
    value: function defaultShortcuts() {
      return {
        toggle: {
          keys: 'ctrl+p'
        },
        save: {
          keys: 'ctrl+s'
        },
        exit: {
          keys: 'esc',
          // TODO: replace dependency with scopes.
          dependency: function dependency() {
            return !jQuery('.dialog-widget:visible').length;
          },
          scopes: ['panel', 'preview']
        },
        'change-device-mode': {
          keys: 'ctrl+shift+m'
        }
      };
    }
  }]);
  return Component;
}(_componentBase.default);

exports.default = Component;

/***/ }),
/* 600 */
/***/ (function(module, exports, __webpack_require__) {

"use strict";


var _Object$defineProperty = __webpack_require__(1);

_Object$defineProperty(exports, "__esModule", {
  value: true
});

_Object$defineProperty(exports, "ChangeDeviceMode", {
  enumerable: true,
  get: function get() {
    return _changeDeviceMode.ChangeDeviceMode;
  }
});

_Object$defineProperty(exports, "Close", {
  enumerable: true,
  get: function get() {
    return _close.Close;
  }
});

_Object$defineProperty(exports, "Exit", {
  enumerable: true,
  get: function get() {
    return _exit.Exit;
  }
});

_Object$defineProperty(exports, "Open", {
  enumerable: true,
  get: function get() {
    return _open.Open;
  }
});

_Object$defineProperty(exports, "Publish", {
  enumerable: true,
  get: function get() {
    return _publish.Publish;
  }
});

_Object$defineProperty(exports, "Save", {
  enumerable: true,
  get: function get() {
    return _save.Save;
  }
});

_Object$defineProperty(exports, "Toggle", {
  enumerable: true,
  get: function get() {
    return _toggle.Toggle;
  }
});

var _changeDeviceMode = __webpack_require__(601);

var _close = __webpack_require__(602);

var _exit = __webpack_require__(603);

var _open = __webpack_require__(604);

var _publish = __webpack_require__(605);

var _save = __webpack_require__(606);

var _toggle = __webpack_require__(607);

/***/ }),
/* 601 */
/***/ (function(module, exports, __webpack_require__) {

"use strict";


var _interopRequireDefault = __webpack_require__(0);

var _Object$defineProperty = __webpack_require__(1);

_Object$defineProperty(exports, "__esModule", {
  value: true
});

exports.default = exports.ChangeDeviceMode = void 0;

var _classCallCheck2 = _interopRequireDefault(__webpack_require__(2));

var _createClass2 = _interopRequireDefault(__webpack_require__(3));

var _inherits2 = _interopRequireDefault(__webpack_require__(4));

var _createSuper2 = _interopRequireDefault(__webpack_require__(5));

var _commandBase = _interopRequireDefault(__webpack_require__(21));

var ChangeDeviceMode = /*#__PURE__*/function (_CommandBase) {
  (0, _inherits2.default)(ChangeDeviceMode, _CommandBase);

  var _super = (0, _createSuper2.default)(ChangeDeviceMode);

  function ChangeDeviceMode() {
    (0, _classCallCheck2.default)(this, ChangeDeviceMode);
    return _super.apply(this, arguments);
  }

  (0, _createClass2.default)(ChangeDeviceMode, [{
    key: "apply",
    value: function apply() {
      var args = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
      var devices = ['desktop', 'tablet', 'mobile'];
      var device = args.device;

      if (!device) {
        var currentDeviceMode = elementor.channels.deviceMode.request('currentMode');
        var modeIndex = devices.indexOf(currentDeviceMode);
        modeIndex++;

        if (modeIndex >= devices.length) {
          modeIndex = 0;
        }

        device = devices[modeIndex];
      }

      elementor.changeDeviceMode(device);
    }
  }]);
  return ChangeDeviceMode;
}(_commandBase.default);

exports.ChangeDeviceMode = ChangeDeviceMode;
var _default = ChangeDeviceMode;
exports.default = _default;

/***/ }),
/* 602 */
/***/ (function(module, exports, __webpack_require__) {

"use strict";


var _interopRequireDefault = __webpack_require__(0);

var _Object$defineProperty = __webpack_require__(1);

_Object$defineProperty(exports, "__esModule", {
  value: true
});

exports.default = exports.Close = void 0;

var _classCallCheck2 = _interopRequireDefault(__webpack_require__(2));

var _createClass2 = _interopRequireDefault(__webpack_require__(3));

var _inherits2 = _interopRequireDefault(__webpack_require__(4));

var _createSuper2 = _interopRequireDefault(__webpack_require__(5));

var _commandBase = _interopRequireDefault(__webpack_require__(21));

var Close = /*#__PURE__*/function (_CommandBase) {
  (0, _inherits2.default)(Close, _CommandBase);

  var _super = (0, _createSuper2.default)(Close);

  function Close() {
    (0, _classCallCheck2.default)(this, Close);
    return _super.apply(this, arguments);
  }

  (0, _createClass2.default)(Close, [{
    key: "apply",
    value: function apply() {
      elementor.changeEditMode('preview');
    }
  }]);
  return Close;
}(_commandBase.default);

exports.Close = Close;
var _default = Close;
exports.default = _default;

/***/ }),
/* 603 */
/***/ (function(module, exports, __webpack_require__) {

"use strict";


var _interopRequireDefault = __webpack_require__(0);

var _Object$defineProperty = __webpack_require__(1);

_Object$defineProperty(exports, "__esModule", {
  value: true
});

exports.default = exports.Exit = void 0;

var _classCallCheck2 = _interopRequireDefault(__webpack_require__(2));

var _createClass2 = _interopRequireDefault(__webpack_require__(3));

var _inherits2 = _interopRequireDefault(__webpack_require__(4));

var _createSuper2 = _interopRequireDefault(__webpack_require__(5));

var _commandBase = _interopRequireDefault(__webpack_require__(21));

var Exit = /*#__PURE__*/function (_CommandBase) {
  (0, _inherits2.default)(Exit, _CommandBase);

  var _super = (0, _createSuper2.default)(Exit);

  function Exit() {
    (0, _classCallCheck2.default)(this, Exit);
    return _super.apply(this, arguments);
  }

  (0, _createClass2.default)(Exit, [{
    key: "apply",
    value: function apply() {
      $e.route('panel/menu');
    }
  }]);
  return Exit;
}(_commandBase.default);

exports.Exit = Exit;
var _default = Exit;
exports.default = _default;

/***/ }),
/* 604 */
/***/ (function(module, exports, __webpack_require__) {

"use strict";


var _interopRequireDefault = __webpack_require__(0);

var _Object$defineProperty = __webpack_require__(1);

_Object$defineProperty(exports, "__esModule", {
  value: true
});

exports.default = exports.Open = void 0;

var _classCallCheck2 = _interopRequireDefault(__webpack_require__(2));

var _createClass2 = _interopRequireDefault(__webpack_require__(3));

var _inherits2 = _interopRequireDefault(__webpack_require__(4));

var _createSuper2 = _interopRequireDefault(__webpack_require__(5));

var _commandBase = _interopRequireDefault(__webpack_require__(21));

var Open = /*#__PURE__*/function (_CommandBase) {
  (0, _inherits2.default)(Open, _CommandBase);

  var _super = (0, _createSuper2.default)(Open);

  function Open() {
    (0, _classCallCheck2.default)(this, Open);
    return _super.apply(this, arguments);
  }

  (0, _createClass2.default)(Open, [{
    key: "apply",
    value: function apply() {
      elementor.changeEditMode('edit');
    }
  }]);
  return Open;
}(_commandBase.default);

exports.Open = Open;
var _default = Open;
exports.default = _default;

/***/ }),
/* 605 */
/***/ (function(module, exports, __webpack_require__) {

"use strict";


var _interopRequireDefault = __webpack_require__(0);

var _Object$defineProperty = __webpack_require__(1);

_Object$defineProperty(exports, "__esModule", {
  value: true
});

exports.default = exports.Publish = void 0;

var _classCallCheck2 = _interopRequireDefault(__webpack_require__(2));

var _createClass2 = _interopRequireDefault(__webpack_require__(3));

var _inherits2 = _interopRequireDefault(__webpack_require__(4));

var _createSuper2 = _interopRequireDefault(__webpack_require__(5));

var _commandBase = _interopRequireDefault(__webpack_require__(21));

var Publish = /*#__PURE__*/function (_CommandBase) {
  (0, _inherits2.default)(Publish, _CommandBase);

  var _super = (0, _createSuper2.default)(Publish);

  function Publish() {
    (0, _classCallCheck2.default)(this, Publish);
    return _super.apply(this, arguments);
  }

  (0, _createClass2.default)(Publish, [{
    key: "apply",
    value: function apply() {
      $e.run('document/save/publish');
    }
  }]);
  return Publish;
}(_commandBase.default);

exports.Publish = Publish;
var _default = Publish;
exports.default = _default;

/***/ }),
/* 606 */
/***/ (function(module, exports, __webpack_require__) {

"use strict";


var _interopRequireDefault = __webpack_require__(0);

var _Object$defineProperty = __webpack_require__(1);

_Object$defineProperty(exports, "__esModule", {
  value: true
});

exports.default = exports.Save = void 0;

var _classCallCheck2 = _interopRequireDefault(__webpack_require__(2));

var _createClass2 = _interopRequireDefault(__webpack_require__(3));

var _inherits2 = _interopRequireDefault(__webpack_require__(4));

var _createSuper2 = _interopRequireDefault(__webpack_require__(5));

var _commandBase = _interopRequireDefault(__webpack_require__(21));

var Save = /*#__PURE__*/function (_CommandBase) {
  (0, _inherits2.default)(Save, _CommandBase);

  var _super = (0, _createSuper2.default)(Save);

  function Save() {
    (0, _classCallCheck2.default)(this, Save);
    return _super.apply(this, arguments);
  }

  (0, _createClass2.default)(Save, [{
    key: "apply",
    value: function apply() {
      $e.run('document/save/draft');
    }
  }]);
  return Save;
}(_commandBase.default);

exports.Save = Save;
var _default = Save;
exports.default = _default;

/***/ }),
/* 607 */
/***/ (function(module, exports, __webpack_require__) {

"use strict";


var _interopRequireDefault = __webpack_require__(0);

var _Object$defineProperty = __webpack_require__(1);

_Object$defineProperty(exports, "__esModule", {
  value: true
});

exports.default = exports.Toggle = void 0;

var _classCallCheck2 = _interopRequireDefault(__webpack_require__(2));

var _createClass2 = _interopRequireDefault(__webpack_require__(3));

var _inherits2 = _interopRequireDefault(__webpack_require__(4));

var _createSuper2 = _interopRequireDefault(__webpack_require__(5));

var _commandBase = _interopRequireDefault(__webpack_require__(21));

var Toggle = /*#__PURE__*/function (_CommandBase) {
  (0, _inherits2.default)(Toggle, _CommandBase);

  var _super = (0, _createSuper2.default)(Toggle);

  function Toggle() {
    (0, _classCallCheck2.default)(this, Toggle);
    return _super.apply(this, arguments);
  }

  (0, _createClass2.default)(Toggle, [{
    key: "apply",
    value: function apply() {
      elementor.getPanelView().modeSwitcher.currentView.toggleMode();
    }
  }]);
  return Toggle;
}(_commandBase.default);

exports.Toggle = Toggle;
var _default = Toggle;
exports.default = _default;

/***/ }),
/* 608 */
/***/ (function(module, exports, __webpack_require__) {

"use strict";


var _Object$defineProperty = __webpack_require__(1);

_Object$defineProperty(exports, "__esModule", {
  value: true
});

_Object$defineProperty(exports, "OpenDefault", {
  enumerable: true,
  get: function get() {
    return _openDefault.OpenDefault;
  }
});

_Object$defineProperty(exports, "StateLoading", {
  enumerable: true,
  get: function get() {
    return _stateLoading.StateLoading;
  }
});

_Object$defineProperty(exports, "StateReady", {
  enumerable: true,
  get: function get() {
    return _stateReady.StateReady;
  }
});

var _openDefault = __webpack_require__(609);

var _stateLoading = __webpack_require__(610);

var _stateReady = __webpack_require__(611);

/***/ }),
/* 609 */
/***/ (function(module, exports, __webpack_require__) {

"use strict";


var _interopRequireDefault = __webpack_require__(0);

var _Object$defineProperty = __webpack_require__(1);

_Object$defineProperty(exports, "__esModule", {
  value: true
});

exports.default = exports.OpenDefault = void 0;

var _classCallCheck2 = _interopRequireDefault(__webpack_require__(2));

var _createClass2 = _interopRequireDefault(__webpack_require__(3));

var _inherits2 = _interopRequireDefault(__webpack_require__(4));

var _createSuper2 = _interopRequireDefault(__webpack_require__(5));

var _commandInternalBase = _interopRequireDefault(__webpack_require__(203));

var OpenDefault = /*#__PURE__*/function (_CommandInternalBase) {
  (0, _inherits2.default)(OpenDefault, _CommandInternalBase);

  var _super = (0, _createSuper2.default)(OpenDefault);

  function OpenDefault() {
    (0, _classCallCheck2.default)(this, OpenDefault);
    return _super.apply(this, arguments);
  }

  (0, _createClass2.default)(OpenDefault, [{
    key: "apply",
    value: function apply() {
      $e.route(elementor.documents.getCurrent().config.panel.default_route);
    }
  }]);
  return OpenDefault;
}(_commandInternalBase.default);

exports.OpenDefault = OpenDefault;
var _default = OpenDefault;
exports.default = _default;

/***/ }),
/* 610 */
/***/ (function(module, exports, __webpack_require__) {

"use strict";


var _interopRequireDefault = __webpack_require__(0);

var _Object$defineProperty = __webpack_require__(1);

_Object$defineProperty(exports, "__esModule", {
  value: true
});

exports.default = exports.StateLoading = void 0;

var _classCallCheck2 = _interopRequireDefault(__webpack_require__(2));

var _createClass2 = _interopRequireDefault(__webpack_require__(3));

var _inherits2 = _interopRequireDefault(__webpack_require__(4));

var _createSuper2 = _interopRequireDefault(__webpack_require__(5));

var _commandInternalBase = _interopRequireDefault(__webpack_require__(203));

var StateLoading = /*#__PURE__*/function (_CommandInternalBase) {
  (0, _inherits2.default)(StateLoading, _CommandInternalBase);

  var _super = (0, _createSuper2.default)(StateLoading);

  function StateLoading() {
    (0, _classCallCheck2.default)(this, StateLoading);
    return _super.apply(this, arguments);
  }

  (0, _createClass2.default)(StateLoading, [{
    key: "apply",
    value: function apply() {
      elementorCommon.elements.$body.addClass('elementor-panel-loading');
    }
  }]);
  return StateLoading;
}(_commandInternalBase.default);

exports.StateLoading = StateLoading;
var _default = StateLoading;
exports.default = _default;

/***/ }),
/* 611 */
/***/ (function(module, exports, __webpack_require__) {

"use strict";


var _interopRequireDefault = __webpack_require__(0);

var _Object$defineProperty = __webpack_require__(1);

_Object$defineProperty(exports, "__esModule", {
  value: true
});

exports.default = exports.StateReady = void 0;

var _classCallCheck2 = _interopRequireDefault(__webpack_require__(2));

var _createClass2 = _interopRequireDefault(__webpack_require__(3));

var _inherits2 = _interopRequireDefault(__webpack_require__(4));

var _createSuper2 = _interopRequireDefault(__webpack_require__(5));

var _commandInternalBase = _interopRequireDefault(__webpack_require__(203));

var StateReady = /*#__PURE__*/function (_CommandInternalBase) {
  (0, _inherits2.default)(StateReady, _CommandInternalBase);

  var _super = (0, _createSuper2.default)(StateReady);

  function StateReady() {
    (0, _classCallCheck2.default)(this, StateReady);
    return _super.apply(this, arguments);
  }

  (0, _createClass2.default)(StateReady, [{
    key: "apply",
    value: function apply() {
      elementorCommon.elements.$body.removeClass('elementor-panel-loading');
    }
  }]);
  return StateReady;
}(_commandInternalBase.default);

exports.StateReady = StateReady;
var _default = StateReady;
exports.default = _default;

/***/ }),
/* 612 */
/***/ (function(module, exports, __webpack_require__) {

"use strict";


var _interopRequireDefault = __webpack_require__(0);

var _Object$defineProperty = __webpack_require__(1);

_Object$defineProperty(exports, "__esModule", {
  value: true
});

exports.default = void 0;

var _classCallCheck2 = _interopRequireDefault(__webpack_require__(2));

var _createClass2 = _interopRequireDefault(__webpack_require__(3));

var _inherits2 = _interopRequireDefault(__webpack_require__(4));

var _createSuper2 = _interopRequireDefault(__webpack_require__(5));

var _componentBase = _interopRequireDefault(__webpack_require__(85));

var Component = /*#__PURE__*/function (_ComponentBase) {
  (0, _inherits2.default)(Component, _ComponentBase);

  var _super = (0, _createSuper2.default)(Component);

  function Component() {
    (0, _classCallCheck2.default)(this, Component);
    return _super.apply(this, arguments);
  }

  (0, _createClass2.default)(Component, [{
    key: "getNamespace",
    value: function getNamespace() {
      return 'panel/elements';
    }
  }, {
    key: "defaultTabs",
    value: function defaultTabs() {
      return {
        categories: {
          title: elementor.translate('elements')
        },
        global: {
          title: elementor.translate('global')
        }
      };
    }
  }, {
    key: "getTabsWrapperSelector",
    value: function getTabsWrapperSelector() {
      return '#elementor-panel-elements-navigation';
    }
  }, {
    key: "renderTab",
    value: function renderTab(tab) {
      this.manager.setPage('elements').showView(tab);
    }
  }]);
  return Component;
}(_componentBase.default);

exports.default = Component;

/***/ }),
/* 613 */
/***/ (function(module, exports, __webpack_require__) {

"use strict";


var _interopRequireWildcard = __webpack_require__(36);

var _interopRequireDefault = __webpack_require__(0);

var _Object$defineProperty = __webpack_require__(1);

_Object$defineProperty(exports, "__esModule", {
  value: true
});

exports.default = void 0;

var _keys = _interopRequireDefault(__webpack_require__(23));

var _classCallCheck2 = _interopRequireDefault(__webpack_require__(2));

var _createClass2 = _interopRequireDefault(__webpack_require__(3));

var _get2 = _interopRequireDefault(__webpack_require__(26));

var _getPrototypeOf2 = _interopRequireDefault(__webpack_require__(16));

var _inherits2 = _interopRequireDefault(__webpack_require__(4));

var _createSuper2 = _interopRequireDefault(__webpack_require__(5));

var _componentBase = _interopRequireDefault(__webpack_require__(85));

var commands = _interopRequireWildcard(__webpack_require__(614));

var Component = /*#__PURE__*/function (_ComponentBase) {
  (0, _inherits2.default)(Component, _ComponentBase);

  var _super = (0, _createSuper2.default)(Component);

  function Component() {
    (0, _classCallCheck2.default)(this, Component);
    return _super.apply(this, arguments);
  }

  (0, _createClass2.default)(Component, [{
    key: "__construct",
    value: function __construct(args) {
      (0, _get2.default)((0, _getPrototypeOf2.default)(Component.prototype), "__construct", this).call(this, args); // Remember last used tab.

      this.activeTabs = {};
    }
  }, {
    key: "getNamespace",
    value: function getNamespace() {
      return 'panel/editor';
    }
  }, {
    key: "defaultTabs",
    value: function defaultTabs() {
      return {
        content: {
          title: elementor.translate('content')
        },
        style: {
          title: elementor.translate('style')
        },
        advanced: {
          title: elementor.translate('advanced')
        },
        layout: {
          title: elementor.translate('layout')
        }
      };
    }
  }, {
    key: "defaultCommands",
    value: function defaultCommands() {
      return this.importCommands(commands);
    }
  }, {
    key: "getTabsWrapperSelector",
    value: function getTabsWrapperSelector() {
      return '.elementor-panel-navigation';
    }
  }, {
    key: "renderTab",
    value: function renderTab(tab, args) {
      var model = args.model,
          view = args.view,
          title = elementor.translate('edit_element', [elementor.getElementData(model).title]);
      elementor.getPanelView().setPage('editor', title, {
        tab: tab,
        model: model,
        controls: elementor.getElementControls(model),
        editedElementView: view
      });
    }
  }, {
    key: "activateTab",
    value: function activateTab(tab, args) {
      this.activeTabs[args.model.id] = tab;
      (0, _get2.default)((0, _getPrototypeOf2.default)(Component.prototype), "activateTab", this).call(this, tab, args);
    }
  }, {
    key: "setDefaultTab",
    value: function setDefaultTab(args) {
      var defaultTab;
      var editSettings = args.model.get('editSettings');

      if (this.activeTabs[args.model.id]) {
        defaultTab = this.activeTabs[args.model.id];
      } else if (editSettings && editSettings.get('defaultEditRoute')) {
        defaultTab = editSettings.get('defaultEditRoute');
      }

      if (defaultTab) {
        // Ensure tab is exist.
        var controlsTabs = elementor.getElementData(args.model).tabs_controls; // Fallback to first tab.

        if (!controlsTabs[defaultTab]) {
          defaultTab = (0, _keys.default)(controlsTabs)[0];
        }

        this.setDefaultRoute(defaultTab);
        return true;
      }

      return false;
    }
  }]);
  return Component;
}(_componentBase.default);

exports.default = Component;

/***/ }),
/* 614 */
/***/ (function(module, exports, __webpack_require__) {

"use strict";


var _Object$defineProperty = __webpack_require__(1);

_Object$defineProperty(exports, "__esModule", {
  value: true
});

_Object$defineProperty(exports, "Open", {
  enumerable: true,
  get: function get() {
    return _open.Open;
  }
});

var _open = __webpack_require__(615);

/***/ }),
/* 615 */
/***/ (function(module, exports, __webpack_require__) {

"use strict";


var _interopRequireDefault = __webpack_require__(0);

var _Object$defineProperty = __webpack_require__(1);

_Object$defineProperty(exports, "__esModule", {
  value: true
});

exports.default = exports.Open = void 0;

var _classCallCheck2 = _interopRequireDefault(__webpack_require__(2));

var _createClass2 = _interopRequireDefault(__webpack_require__(3));

var _inherits2 = _interopRequireDefault(__webpack_require__(4));

var _createSuper2 = _interopRequireDefault(__webpack_require__(5));

var _commandBase = _interopRequireDefault(__webpack_require__(21));

var Open = /*#__PURE__*/function (_CommandBase) {
  (0, _inherits2.default)(Open, _CommandBase);

  var _super = (0, _createSuper2.default)(Open);

  function Open() {
    (0, _classCallCheck2.default)(this, Open);
    return _super.apply(this, arguments);
  }

  (0, _createClass2.default)(Open, [{
    key: "apply",
    value: function apply(args) {
      if (!this.component.setDefaultTab(args)) {
        elementorCommon.helpers.softDeprecated("model.trigger( 'request:edit' )", '2.9.0', 'editSettings.defaultEditRoute');
        args.model.trigger('request:edit');
      } else {
        $e.route(this.component.getDefaultRoute(), args);
      } // BC: Run hooks after the route render's the view.


      var action = 'panel/open_editor/' + args.model.get('elType'); // Example: panel/open_editor/widget

      elementor.hooks.doAction(action, this.component.manager, args.model, args.view); // Example: panel/open_editor/widget/heading

      elementor.hooks.doAction(action + '/' + args.model.get('widgetType'), this.component.manager, args.model, args.view);
    }
  }]);
  return Open;
}(_commandBase.default);

exports.Open = Open;
var _default = Open;
exports.default = _default;

/***/ }),
/* 616 */
/***/ (function(module, exports, __webpack_require__) {

"use strict";


var EditModeItemView;
EditModeItemView = Marionette.ItemView.extend({
  template: '#tmpl-elementor-mode-switcher-content',
  id: 'elementor-mode-switcher-inner',
  ui: {
    previewButton: '#elementor-mode-switcher-preview-input',
    previewLabel: '#elementor-mode-switcher-preview',
    previewLabelA11y: '#elementor-mode-switcher-preview .elementor-screen-only'
  },
  events: {
    'change @ui.previewButton': 'onPreviewButtonChange'
  },
  initialize: function initialize() {
    this.listenTo(elementor.channels.dataEditMode, 'switch', this.onEditModeChanged);
  },
  getCurrentMode: function getCurrentMode() {
    return this.ui.previewButton.is(':checked') ? 'preview' : 'edit';
  },
  setMode: function setMode(mode) {
    this.ui.previewButton.prop('checked', 'preview' === mode).trigger('change');
  },
  toggleMode: function toggleMode() {
    this.setMode(this.ui.previewButton.prop('checked') ? 'edit' : 'preview');
  },
  onRender: function onRender() {
    this.onEditModeChanged();
  },
  onPreviewButtonChange: function onPreviewButtonChange() {
    var mode = this.getCurrentMode();

    if ('edit' === mode) {
      $e.run('panel/open');
    } else if ('preview' === mode) {
      $e.run('panel/close');
    } else {
      throw Error("Invalid mode: '".concat(mode, "'"));
    }
  },
  onEditModeChanged: function onEditModeChanged(activeMode) {
    var title = elementor.translate('preview' === activeMode ? 'back_to_editor' : 'preview');
    this.ui.previewLabel.attr('title', title);
    this.ui.previewLabelA11y.text(title);
  }
});
module.exports = EditModeItemView;

/***/ }),
/* 617 */
/***/ (function(module, exports, __webpack_require__) {

"use strict";


__webpack_require__(39);

__webpack_require__(334);

var PanelElementsCategoriesCollection = __webpack_require__(618),
    PanelElementsElementsCollection = __webpack_require__(390),
    PanelElementsCategoriesView = __webpack_require__(619),
    PanelElementsElementsView = elementor.modules.layouts.panel.pages.elements.views.Elements,
    PanelElementsSearchView = __webpack_require__(621),
    PanelElementsGlobalView = __webpack_require__(385),
    PanelElementsLayoutView;

PanelElementsLayoutView = Marionette.LayoutView.extend({
  template: '#tmpl-elementor-panel-elements',
  id: 'elementor-panel-page-elements',
  options: {
    autoFocusSearch: true
  },
  regions: {
    elements: '#elementor-panel-elements-wrapper',
    search: '#elementor-panel-elements-search-area'
  },
  regionViews: {},
  elementsCollection: null,
  categoriesCollection: null,
  initialize: function initialize() {
    this.listenTo(elementor.channels.panelElements, 'element:selected', this.destroy);
    this.initElementsCollection();
    this.initCategoriesCollection();
    this.initRegionViews();
  },
  initRegionViews: function initRegionViews() {
    var regionViews = {
      elements: {
        region: this.elements,
        view: PanelElementsElementsView,
        options: {
          collection: this.elementsCollection
        }
      },
      categories: {
        region: this.elements,
        view: PanelElementsCategoriesView,
        options: {
          collection: this.categoriesCollection
        }
      },
      search: {
        region: this.search,
        view: PanelElementsSearchView
      },
      global: {
        region: this.elements,
        view: PanelElementsGlobalView
      }
    };
    this.regionViews = elementor.hooks.applyFilters('panel/elements/regionViews', regionViews);
  },
  initElementsCollection: function initElementsCollection() {
    var elementsCollection = new PanelElementsElementsCollection(),
        sectionConfig = elementor.config.elements.section;
    elementsCollection.add({
      title: elementor.translate('inner_section'),
      elType: 'section',
      categories: ['basic'],
      keywords: ['row', 'columns', 'nested'],
      icon: sectionConfig.icon
    }); // TODO: Change the array from server syntax, and no need each loop for initialize

    _.each(elementor.widgetsCache, function (widget) {
      if (elementor.config.document.panel.widgets_settings[widget.widget_type]) {
        widget = _.extend(widget, elementor.config.document.panel.widgets_settings[widget.widget_type]);
      }

      if (!widget.show_in_panel) {
        return;
      }

      elementsCollection.add({
        title: widget.title,
        elType: widget.elType,
        categories: widget.categories,
        keywords: widget.keywords,
        icon: widget.icon,
        widgetType: widget.widget_type,
        custom: widget.custom,
        editable: widget.editable
      });
    });

    jQuery.each(elementor.config.promotionWidgets, function (index, widget) {
      elementsCollection.add({
        name: widget.name,
        title: widget.title,
        icon: widget.icon,
        categories: JSON.parse(widget.categories),
        editable: false
      });
    });
    this.elementsCollection = elementsCollection;
  },
  initCategoriesCollection: function initCategoriesCollection() {
    var categories = {};
    this.elementsCollection.each(function (element) {
      _.each(element.get('categories'), function (category) {
        if (!categories[category]) {
          categories[category] = [];
        }

        categories[category].push(element);
      });
    });
    var categoriesCollection = new PanelElementsCategoriesCollection();

    _.each(elementor.config.document.panel.elements_categories, function (categoryConfig, categoryName) {
      if (!categories[categoryName]) {
        return;
      } // Set defaults.


      if ('undefined' === typeof categoryConfig.active) {
        categoryConfig.active = true;
      }

      if ('undefined' === typeof categoryConfig.icon) {
        categoryConfig.icon = 'font';
      }

      categoriesCollection.add({
        name: categoryName,
        title: categoryConfig.title,
        icon: categoryConfig.icon,
        defaultActive: categoryConfig.active,
        items: categories[categoryName]
      });
    });

    this.categoriesCollection = categoriesCollection;
  },
  showView: function showView(viewName) {
    var viewDetails = this.regionViews[viewName],
        options = viewDetails.options || {};
    viewDetails.region.show(new viewDetails.view(options));
  },
  clearSearchInput: function clearSearchInput() {
    this.getChildView('search').clearInput();
  },
  changeFilter: function changeFilter(filterValue) {
    elementor.channels.panelElements.reply('filter:value', filterValue).trigger('filter:change');
  },
  clearFilters: function clearFilters() {
    this.changeFilter(null);
    this.clearSearchInput();
  },
  focusSearch: function focusSearch() {
    if (!elementor.userCan('design') || !this.search
    /* default panel is not elements */
    || !this.search.currentView
    /* on global elements empty */
    ) {
        return;
      }

    this.search.currentView.ui.input.focus();
  },
  onChildviewChildrenRender: function onChildviewChildrenRender() {
    elementor.getPanelView().updateScrollbar();
  },
  onChildviewSearchChangeInput: function onChildviewSearchChangeInput(child) {
    this.changeFilter(child.ui.input.val(), 'search');
  },
  onDestroy: function onDestroy() {
    elementor.channels.panelElements.reply('filter:value', null);
  },
  onShow: function onShow() {
    this.showView('search');

    if (this.options.autoFocusSearch) {
      setTimeout(this.focusSearch.bind(this));
    }
  }
});
module.exports = PanelElementsLayoutView;

/***/ }),
/* 618 */
/***/ (function(module, exports, __webpack_require__) {

"use strict";


var PanelElementsCategory = __webpack_require__(389),
    PanelElementsCategoriesCollection;

PanelElementsCategoriesCollection = Backbone.Collection.extend({
  model: PanelElementsCategory
});
module.exports = PanelElementsCategoriesCollection;

/***/ }),
/* 619 */
/***/ (function(module, exports, __webpack_require__) {

"use strict";


var PanelElementsCategoryView = __webpack_require__(620),
    PanelElementsCategoriesView;

PanelElementsCategoriesView = Marionette.CompositeView.extend({
  template: '#tmpl-elementor-panel-categories',
  childView: PanelElementsCategoryView,
  childViewContainer: '#elementor-panel-categories',
  id: 'elementor-panel-elements-categories',
  initialize: function initialize() {
    this.listenTo(elementor.channels.panelElements, 'filter:change', this.onPanelElementsFilterChange);
  },
  onPanelElementsFilterChange: function onPanelElementsFilterChange() {
    if (elementor.channels.panelElements.request('filter:value')) {
      elementor.getPanelView().getCurrentPageView().showView('elements');
    }
  }
});
module.exports = PanelElementsCategoriesView;

/***/ }),
/* 620 */
/***/ (function(module, exports, __webpack_require__) {

"use strict";


var PanelElementsElementsCollection = __webpack_require__(390),
    PanelElementsCategoryView;

PanelElementsCategoryView = Marionette.CompositeView.extend({
  template: '#tmpl-elementor-panel-elements-category',
  className: 'elementor-panel-category',
  ui: {
    title: '.elementor-panel-category-title',
    items: '.elementor-panel-category-items'
  },
  events: {
    'click @ui.title': 'onTitleClick'
  },
  id: function id() {
    return 'elementor-panel-category-' + this.model.get('name');
  },
  childView: __webpack_require__(387),
  childViewContainer: '.elementor-panel-category-items',
  initialize: function initialize() {
    this.collection = new PanelElementsElementsCollection(this.model.get('items'));
  },
  onRender: function onRender() {
    var isActive = elementor.channels.panelElements.request('category:' + this.model.get('name') + ':active');

    if (undefined === isActive) {
      isActive = this.model.get('defaultActive');
    }

    if (isActive) {
      this.$el.addClass('elementor-active');
      this.ui.items.show();
    }
  },
  onTitleClick: function onTitleClick() {
    var $items = this.ui.items,
        activeClass = 'elementor-active',
        isActive = this.$el.hasClass(activeClass),
        slideFn = isActive ? 'slideUp' : 'slideDown';
    elementor.channels.panelElements.reply('category:' + this.model.get('name') + ':active', !isActive);
    this.$el.toggleClass(activeClass, !isActive);
    $items[slideFn](300, function () {
      elementor.getPanelView().updateScrollbar();
    });
  }
});
module.exports = PanelElementsCategoryView;

/***/ }),
/* 621 */
/***/ (function(module, exports, __webpack_require__) {

"use strict";


var PanelElementsSearchView;
PanelElementsSearchView = Marionette.ItemView.extend({
  template: '#tmpl-elementor-panel-element-search',
  id: 'elementor-panel-elements-search-wrapper',
  ui: {
    input: 'input'
  },
  events: {
    'input @ui.input': 'onInputChanged'
  },
  clearInput: function clearInput() {
    this.ui.input.val('');
  },
  onInputChanged: function onInputChanged(event) {
    var ESC_KEY = 27;

    if (ESC_KEY === event.keyCode) {
      this.clearInput();
    }

    this.triggerMethod('search:change:input');
  }
});
module.exports = PanelElementsSearchView;

/***/ }),
/* 622 */
/***/ (function(module, exports, __webpack_require__) {

"use strict";


var ControlsStack = elementorModules.editor.views.ControlsStack,
    EditorView;
EditorView = ControlsStack.extend({
  template: Marionette.TemplateCache.get('#tmpl-editor-content'),
  id: 'elementor-panel-page-editor',
  childViewContainer: '#elementor-controls',
  childViewOptions: function childViewOptions() {
    return {
      element: this.getOption('editedElementView'),
      container: this.getOption('editedElementView').getContainer(),
      // TODO: elementSettingsModel is deprecated since 2.8.0.
      elementSettingsModel: this.model.get('settings'),
      elementEditSettings: this.model.get('editSettings')
    };
  },
  getNamespaceArray: function getNamespaceArray() {
    var eventNamespace = elementorModules.editor.views.ControlsStack.prototype.getNamespaceArray();
    var model = this.getOption('editedElementView').getEditModel(),
        currentElementType = model.get('elType'); // Element Type: section / column / widget.

    eventNamespace.push(currentElementType);

    if ('widget' === currentElementType) {
      // Widget Type: heading / button and etc.
      eventNamespace.push(model.get('widgetType'));
    }

    return eventNamespace;
  },
  initialize: function initialize() {
    ControlsStack.prototype.initialize.apply(this, arguments);
    var editSettings = this.model.get('editSettings');

    if (editSettings) {
      var panelSettings = editSettings.get('panel');

      if (panelSettings) {
        this.activeTab = panelSettings.activeTab;
        this.activeSection = panelSettings.activeSection;
      }
    }
  },
  activateSection: function activateSection() {
    ControlsStack.prototype.activateSection.apply(this, arguments);
    this.model.get('editSettings').set('panel', {
      activeTab: this.activeTab,
      activeSection: this.activeSection
    });
    return this;
  },
  openActiveSection: function openActiveSection() {
    ControlsStack.prototype.openActiveSection.apply(this, arguments);
    elementor.channels.editor.trigger('section:activated', this.activeSection, this);
  },
  isVisibleSectionControl: function isVisibleSectionControl(sectionControlModel) {
    return ControlsStack.prototype.isVisibleSectionControl.apply(this, arguments) && elementor.helpers.isActiveControl(sectionControlModel, this.model.get('settings').attributes);
  },
  scrollToEditedElement: function scrollToEditedElement() {
    elementor.helpers.scrollToView(this.getOption('editedElementView').$el);
  },
  onDestroy: function onDestroy() {
    var editedElementView = this.getOption('editedElementView');

    if (editedElementView) {
      editedElementView.$el.removeClass('elementor-element-editable');
    }

    this.model.trigger('editor:close');
    this.triggerMethod('editor:destroy');
  },
  onRender: function onRender() {
    var editedElementView = this.getOption('editedElementView');

    if (editedElementView) {
      editedElementView.$el.addClass('elementor-element-editable');
    }
  },
  onDeviceModeChange: function onDeviceModeChange() {
    ControlsStack.prototype.onDeviceModeChange.apply(this, arguments);
    this.scrollToEditedElement();
  },
  onChildviewSettingsChange: function onChildviewSettingsChange(childView) {
    var editedElementView = this.getOption('editedElementView'),
        editedElementType = editedElementView.model.get('elType');

    if ('widget' === editedElementType) {
      editedElementType = editedElementView.model.get('widgetType');
    }

    elementor.channels.editor.trigger('change', childView, editedElementView).trigger('change:' + editedElementType, childView, editedElementView).trigger('change:' + editedElementType + ':' + childView.model.get('name'), childView, editedElementView);
  }
});
module.exports = EditorView;

/***/ }),
/* 623 */
/***/ (function(module, exports, __webpack_require__) {

"use strict";


var PanelSchemeBaseView = __webpack_require__(391),
    PanelSchemeColorsView;

PanelSchemeColorsView = PanelSchemeBaseView.extend({
  ui: function ui() {
    var ui = PanelSchemeBaseView.prototype.ui.apply(this, arguments);
    ui.systemSchemes = '.elementor-panel-scheme-color-system-scheme';
    return ui;
  },
  events: function events() {
    var events = PanelSchemeBaseView.prototype.events.apply(this, arguments);
    events['click @ui.systemSchemes'] = 'onSystemSchemeClick';
    return events;
  },
  getType: function getType() {
    return 'color';
  },
  onSystemSchemeClick: function onSystemSchemeClick(event) {
    var $schemeClicked = jQuery(event.currentTarget),
        schemeName = $schemeClicked.data('schemeName'),
        scheme = elementor.config.system_schemes[this.getType()][schemeName].items;
    this.changeChildrenUIValues(scheme);
  }
});
module.exports = PanelSchemeColorsView;

/***/ }),
/* 624 */
/***/ (function(module, exports, __webpack_require__) {

"use strict";


var _interopRequireDefault = __webpack_require__(0);

var _colorPicker = _interopRequireDefault(__webpack_require__(301));

var PanelSchemeItemView = __webpack_require__(392);

module.exports = PanelSchemeItemView.extend({
  getUIType: function getUIType() {
    return 'color';
  },
  ui: {
    pickerPlaceholder: '.elementor-panel-scheme-color-picker-placeholder'
  },
  changeUIValue: function changeUIValue(newValue) {
    this.colorPicker.picker.setColor(newValue);
  },
  onRender: function onRender() {
    var _this = this;

    this.colorPicker = new _colorPicker.default({
      picker: {
        el: this.ui.pickerPlaceholder[0],
        default: this.model.get('value')
      },
      onChange: function onChange() {
        _this.triggerMethod('value:change', _this.colorPicker.getColor());
      },
      onClear: function onClear() {
        _this.triggerMethod('value:change', '');
      }
    });
  },
  onBeforeDestroy: function onBeforeDestroy() {
    this.colorPicker.destroy();
  }
});

/***/ }),
/* 625 */
/***/ (function(module, exports, __webpack_require__) {

"use strict";


var PanelSchemeItemView = __webpack_require__(392),
    PanelSchemeTypographyView;

PanelSchemeTypographyView = PanelSchemeItemView.extend({
  getUIType: function getUIType() {
    return 'typography';
  },
  className: function className() {
    var classes = PanelSchemeItemView.prototype.className.apply(this, arguments);
    return classes + ' elementor-panel-box';
  },
  ui: {
    heading: '.elementor-panel-heading',
    allFields: '.elementor-panel-scheme-typography-item-field',
    inputFields: 'input.elementor-panel-scheme-typography-item-field',
    selectFields: 'select.elementor-panel-scheme-typography-item-field',
    selectFamilyFields: 'select.elementor-panel-scheme-typography-item-field[name="font_family"]'
  },
  events: {
    'input @ui.inputFields': 'onFieldChange',
    'change @ui.selectFields': 'onFieldChange',
    'click @ui.heading': 'toggleVisibility'
  },
  onRender: function onRender() {
    var self = this;
    this.ui.inputFields.add(this.ui.selectFields).each(function () {
      var $this = jQuery(this),
          name = $this.attr('name'),
          value = self.model.get('value')[name];
      $this.val(value);
    });
    this.ui.selectFamilyFields.select2({
      dir: elementorCommon.config.isRTL ? 'rtl' : 'ltr'
    });
  },
  toggleVisibility: function toggleVisibility() {
    this.$el.toggleClass('elementor-open');
  },
  changeUIValue: function changeUIValue(newValue) {
    this.ui.allFields.each(function () {
      var $this = jQuery(this),
          thisName = $this.attr('name'),
          newFieldValue = newValue[thisName];
      $this.val(newFieldValue).trigger('change');
    });
  },
  onFieldChange: function onFieldChange() {
    var currentValue = elementor.schemes.getSchemeValue('typography', this.model.get('key')).value;
    this.triggerMethod('value:change', currentValue);
  }
});
module.exports = PanelSchemeTypographyView;

/***/ }),
/* 626 */
/***/ (function(module, exports, __webpack_require__) {

"use strict";


var PanelSchemeBaseView = __webpack_require__(391),
    PanelSchemeTypographyView;

PanelSchemeTypographyView = PanelSchemeBaseView.extend({
  getType: function getType() {
    return 'typography';
  }
});
module.exports = PanelSchemeTypographyView;

/***/ }),
/* 627 */
/***/ (function(module, exports, __webpack_require__) {

"use strict";


var PanelSchemeDisabledView;
PanelSchemeDisabledView = Marionette.ItemView.extend({
  template: '#tmpl-elementor-panel-schemes-disabled',
  id: 'elementor-panel-schemes-disabled',
  className: 'elementor-nerd-box',
  disabledTitle: '',
  templateHelpers: function templateHelpers() {
    return {
      disabledTitle: this.disabledTitle
    };
  }
});
module.exports = PanelSchemeDisabledView;

/***/ }),
/* 628 */
/***/ (function(module, exports, __webpack_require__) {

"use strict";


__webpack_require__(25);

__webpack_require__(39);

module.exports = Marionette.ItemView.extend({
  template: '#tmpl-elementor-panel-footer-content',
  tagName: 'nav',
  id: 'elementor-panel-footer-tools',
  possibleRotateModes: ['portrait', 'landscape'],
  ui: {
    menuButtons: '.elementor-panel-footer-tool',
    settings: '#elementor-panel-footer-settings',
    deviceModeIcon: '#elementor-panel-footer-responsive > i',
    deviceModeButtons: '#elementor-panel-footer-responsive .elementor-panel-footer-sub-menu-item',
    saveTemplate: '#elementor-panel-footer-sub-menu-item-save-template',
    history: '#elementor-panel-footer-history',
    navigator: '#elementor-panel-footer-navigator'
  },
  events: {
    'click @ui.menuButtons': 'onMenuButtonsClick',
    'click @ui.settings': 'onSettingsClick',
    'click @ui.deviceModeButtons': 'onResponsiveButtonsClick',
    'click @ui.saveTemplate': 'onSaveTemplateClick',
    'click @ui.history': 'onHistoryClick',
    'click @ui.navigator': 'onNavigatorClick'
  },
  behaviors: function behaviors() {
    var behaviors = {
      saver: {
        behaviorClass: elementor.modules.components.saver.behaviors.FooterSaver
      }
    };
    return elementor.hooks.applyFilters('panel/footer/behaviors', behaviors, this);
  },
  initialize: function initialize() {
    this.listenTo(elementor.channels.deviceMode, 'change', this.onDeviceModeChange);
  },
  getDeviceModeButton: function getDeviceModeButton(deviceMode) {
    return this.ui.deviceModeButtons.filter('[data-device-mode="' + deviceMode + '"]');
  },
  addSubMenuItem: function addSubMenuItem(subMenuName, itemData) {
    var $newItem = jQuery('<div>', {
      id: 'elementor-panel-footer-sub-menu-item-' + itemData.name,
      class: 'elementor-panel-footer-sub-menu-item'
    }),
        $itemIcon = jQuery('<i>', {
      class: 'elementor-icon ' + itemData.icon,
      'aria-hidden': true
    }),
        $itemTitle = jQuery('<div>', {
      class: 'elementor-title'
    }).text(itemData.title);
    $newItem.append($itemIcon, $itemTitle);

    if (itemData.description) {
      var $itemDescription = jQuery('<div>', {
        class: 'elementor-description'
      }).text(itemData.description);
      $newItem.append($itemDescription);
    }

    if (itemData.callback) {
      $newItem.on('click', itemData.callback);
    }

    var $menuTool = this.ui.menuButtons.filter('#elementor-panel-footer-' + subMenuName);

    if (itemData.before) {
      var $beforeItem = $menuTool.find('#elementor-panel-footer-sub-menu-item-' + itemData.before);

      if ($beforeItem.length) {
        return $newItem.insertBefore($beforeItem);
      }
    }

    var $subMenu = $menuTool.find('.elementor-panel-footer-sub-menu');
    return $newItem.appendTo($subMenu);
  },
  removeSubMenuItem: function removeSubMenuItem(subMenuName, itemData) {
    var $item = jQuery('#elementor-panel-footer-sub-menu-item-' + itemData.name);
    return $item.remove();
  },
  showSettingsPage: function showSettingsPage() {
    $e.route('panel/page-settings/settings');
  },
  onMenuButtonsClick: function onMenuButtonsClick(event) {
    var $tool = jQuery(event.currentTarget); // If the tool is not toggleable or the click is inside of a tool

    if (!$tool.hasClass('elementor-toggle-state') || jQuery(event.target).closest('.elementor-panel-footer-sub-menu-item').length) {
      return;
    }

    var isOpen = $tool.hasClass('elementor-open');
    this.ui.menuButtons.not('.elementor-leave-open').removeClass('elementor-open');

    if (!isOpen) {
      $tool.addClass('elementor-open');
    }
  },
  onSettingsClick: function onSettingsClick() {
    $e.route('panel/page-settings/settings');
  },
  onDeviceModeChange: function onDeviceModeChange() {
    var previousDeviceMode = elementor.channels.deviceMode.request('previousMode'),
        currentDeviceMode = elementor.channels.deviceMode.request('currentMode');
    this.getDeviceModeButton(previousDeviceMode).removeClass('active');
    this.getDeviceModeButton(currentDeviceMode).addClass('active'); // Change the footer icon

    this.ui.deviceModeIcon.removeClass('eicon-device-' + previousDeviceMode).addClass('eicon-device-' + currentDeviceMode);
  },
  onResponsiveButtonsClick: function onResponsiveButtonsClick(event) {
    var $clickedButton = this.$(event.currentTarget),
        newDeviceMode = $clickedButton.data('device-mode');
    elementor.changeDeviceMode(newDeviceMode);
  },
  onSaveTemplateClick: function onSaveTemplateClick() {
    $e.route('library/save-template');
  },
  onHistoryClick: function onHistoryClick() {
    $e.route('panel/history/actions');
  },
  onNavigatorClick: function onNavigatorClick() {
    $e.run('navigator/toggle');
  }
});

/***/ }),
/* 629 */
/***/ (function(module, exports, __webpack_require__) {

"use strict";


var PanelHeaderItemView;
PanelHeaderItemView = Marionette.ItemView.extend({
  template: '#tmpl-elementor-panel-header',
  id: 'elementor-panel-header',
  ui: {
    menuButton: '#elementor-panel-header-menu-button',
    menuIcon: '#elementor-panel-header-menu-button i',
    title: '#elementor-panel-header-title',
    addButton: '#elementor-panel-header-add-button'
  },
  events: {
    'click @ui.addButton': 'onClickAdd',
    'click @ui.menuButton': 'onClickMenu'
  },
  behaviors: function behaviors() {
    return elementor.hooks.applyFilters('panel/header/behaviors', {}, this);
  },
  setTitle: function setTitle(title) {
    this.ui.title.html(title);
  },
  onClickAdd: function onClickAdd() {
    $e.route('panel/elements/categories');
  },
  onClickMenu: function onClickMenu() {
    if ($e.routes.is('panel/menu')) {
      $e.route('panel/elements/categories');
    } else {
      $e.route('panel/menu');
    }
  }
});
module.exports = PanelHeaderItemView;

/***/ }),
/* 630 */,
/* 631 */,
/* 632 */,
/* 633 */,
/* 634 */,
/* 635 */,
/* 636 */,
/* 637 */,
/* 638 */,
/* 639 */,
/* 640 */,
/* 641 */,
/* 642 */,
/* 643 */,
/* 644 */,
/* 645 */,
/* 646 */,
/* 647 */,
/* 648 */,
/* 649 */,
/* 650 */,
/* 651 */,
/* 652 */,
/* 653 */,
/* 654 */,
/* 655 */,
/* 656 */,
/* 657 */,
/* 658 */,
/* 659 */,
/* 660 */,
/* 661 */,
/* 662 */,
/* 663 */,
/* 664 */,
/* 665 */,
/* 666 */,
/* 667 */,
/* 668 */,
/* 669 */,
/* 670 */,
/* 671 */,
/* 672 */,
/* 673 */,
/* 674 */,
/* 675 */,
/* 676 */,
/* 677 */,
/* 678 */,
/* 679 */,
/* 680 */,
/* 681 */,
/* 682 */,
/* 683 */,
/* 684 */,
/* 685 */,
/* 686 */,
/* 687 */,
/* 688 */,
/* 689 */,
/* 690 */,
/* 691 */,
/* 692 */,
/* 693 */,
/* 694 */,
/* 695 */,
/* 696 */,
/* 697 */,
/* 698 */,
/* 699 */,
/* 700 */,
/* 701 */,
/* 702 */,
/* 703 */,
/* 704 */,
/* 705 */,
/* 706 */,
/* 707 */,
/* 708 */
/***/ (function(module, exports, __webpack_require__) {

__webpack_require__(709);
__webpack_require__(710);
module.exports = __webpack_require__(711);


/***/ }),
/* 709 */
/***/ (function(module, exports, __webpack_require__) {

"use strict";


__webpack_require__(39);

__webpack_require__(119);

__webpack_require__(58);

/*
 * jQuery Serialize Object v1.0.1
 */
(function ($) {
  $.fn.elementorSerializeObject = function () {
    var serializedArray = this.serializeArray(),
        data = {};

    var parseObject = function parseObject(dataContainer, key, value) {
      var isArrayKey = /^[^\[\]]+\[]/.test(key),
          isObjectKey = /^[^\[\]]+\[[^\[\]]+]/.test(key),
          keyName = key.replace(/\[.*/, '');

      if (isArrayKey) {
        if (!dataContainer[keyName]) {
          dataContainer[keyName] = [];
        }
      } else {
        if (!isObjectKey) {
          if (dataContainer.push) {
            dataContainer.push(value);
          } else {
            dataContainer[keyName] = value;
          }

          return;
        }

        if (!dataContainer[keyName]) {
          dataContainer[keyName] = {};
        }
      }

      var nextKeys = key.match(/\[[^\[\]]*]/g);
      nextKeys[0] = nextKeys[0].replace(/\[|]/g, '');
      return parseObject(dataContainer[keyName], nextKeys.join(''), value);
    };

    $.each(serializedArray, function () {
      parseObject(data, this.name, this.value);
    });
    return data;
  };
})(jQuery);

/***/ }),
/* 710 */
/***/ (function(module, exports, __webpack_require__) {

"use strict";


var _interopRequireDefault = __webpack_require__(0);

__webpack_require__(119);

var _stringify = _interopRequireDefault(__webpack_require__(206));

/**
 * HTML5 - Drag and Drop
 */
(function ($) {
  var hasFullDataTransferSupport = function hasFullDataTransferSupport(event) {
    try {
      event.originalEvent.dataTransfer.setData('test', 'test');
      event.originalEvent.dataTransfer.clearData('test');
      return true;
    } catch (e) {
      return false;
    }
  };

  var Draggable = function Draggable(userSettings) {
    var self = this,
        settings = {},
        elementsCache = {},
        defaultSettings = {
      element: '',
      groups: null,
      onDragStart: null,
      onDragEnd: null
    };

    var initSettings = function initSettings() {
      $.extend(true, settings, defaultSettings, userSettings);
    };

    var initElementsCache = function initElementsCache() {
      elementsCache.$element = $(settings.element);
    };

    var buildElements = function buildElements() {
      elementsCache.$element.attr('draggable', true);
    };

    var onDragEnd = function onDragEnd(event) {
      if ($.isFunction(settings.onDragEnd)) {
        settings.onDragEnd.call(elementsCache.$element, event, self);
      }
    };

    var onDragStart = function onDragStart(event) {
      var groups = settings.groups || [],
          dataContainer = {
        groups: groups
      };

      if (hasFullDataTransferSupport(event)) {
        event.originalEvent.dataTransfer.setData((0, _stringify.default)(dataContainer), true);
      }

      if ($.isFunction(settings.onDragStart)) {
        settings.onDragStart.call(elementsCache.$element, event, self);
      }
    };

    var attachEvents = function attachEvents() {
      elementsCache.$element.on('dragstart', onDragStart).on('dragend', onDragEnd);
    };

    var init = function init() {
      initSettings();
      initElementsCache();
      buildElements();
      attachEvents();
    };

    this.destroy = function () {
      elementsCache.$element.off('dragstart', onDragStart);
      elementsCache.$element.removeAttr('draggable');
    };

    init();
  };

  var Droppable = function Droppable(userSettings) {
    var self = this,
        settings = {},
        elementsCache = {},
        currentElement,
        currentSide,
        defaultSettings = {
      element: '',
      items: '>',
      horizontalSensitivity: '10%',
      axis: ['vertical', 'horizontal'],
      placeholder: true,
      currentElementClass: 'html5dnd-current-element',
      placeholderClass: 'html5dnd-placeholder',
      hasDraggingOnChildClass: 'html5dnd-has-dragging-on-child',
      groups: null,
      isDroppingAllowed: null,
      onDragEnter: null,
      onDragging: null,
      onDropping: null,
      onDragLeave: null
    };

    var initSettings = function initSettings() {
      $.extend(settings, defaultSettings, userSettings);
    };

    var initElementsCache = function initElementsCache() {
      elementsCache.$element = $(settings.element);
      elementsCache.$placeholder = $('<div>', {
        class: settings.placeholderClass
      });
    };

    var hasHorizontalDetection = function hasHorizontalDetection() {
      return -1 !== settings.axis.indexOf('horizontal');
    };

    var hasVerticalDetection = function hasVerticalDetection() {
      return -1 !== settings.axis.indexOf('vertical');
    };

    var checkHorizontal = function checkHorizontal(offsetX, elementWidth) {
      var isPercentValue, sensitivity;

      if (!hasHorizontalDetection()) {
        return false;
      }

      if (!hasVerticalDetection()) {
        return offsetX > elementWidth / 2 ? 'right' : 'left';
      }

      sensitivity = settings.horizontalSensitivity.match(/\d+/);

      if (!sensitivity) {
        return false;
      }

      sensitivity = sensitivity[0];
      isPercentValue = /%$/.test(settings.horizontalSensitivity);

      if (isPercentValue) {
        sensitivity = elementWidth / sensitivity;
      }

      if (offsetX > elementWidth - sensitivity) {
        return 'right';
      } else if (offsetX < sensitivity) {
        return 'left';
      }

      return false;
    };

    var setSide = function setSide(event) {
      var $element = $(currentElement),
          elementHeight = $element.outerHeight() - elementsCache.$placeholder.outerHeight(),
          elementWidth = $element.outerWidth();
      event = event.originalEvent;
      currentSide = checkHorizontal(event.offsetX, elementWidth);

      if (currentSide) {
        return;
      }

      if (!hasVerticalDetection()) {
        currentSide = null;
        return;
      }

      var elementPosition = currentElement.getBoundingClientRect();
      currentSide = event.clientY > elementPosition.top + elementHeight / 2 ? 'bottom' : 'top';
    };

    var insertPlaceholder = function insertPlaceholder() {
      if (!settings.placeholder) {
        return;
      }

      var insertMethod = 'top' === currentSide ? 'prependTo' : 'appendTo';
      elementsCache.$placeholder[insertMethod](currentElement);
    };

    var isDroppingAllowed = function isDroppingAllowed(event) {
      var dataTransferTypes, draggableGroups, isGroupMatch, droppingAllowed;

      if (settings.groups && hasFullDataTransferSupport(event)) {
        dataTransferTypes = event.originalEvent.dataTransfer.types;
        isGroupMatch = false;
        dataTransferTypes = Array.prototype.slice.apply(dataTransferTypes); // Convert to array, since Firefox hold it as DOMStringList

        dataTransferTypes.forEach(function (type) {
          try {
            draggableGroups = JSON.parse(type);

            if (!draggableGroups.groups.slice) {
              return;
            }

            settings.groups.forEach(function (groupName) {
              if (-1 !== draggableGroups.groups.indexOf(groupName)) {
                isGroupMatch = true;
                return false; // stops the forEach from extra loops
              }
            });
          } catch (e) {}
        });

        if (!isGroupMatch) {
          return false;
        }
      }

      if ($.isFunction(settings.isDroppingAllowed)) {
        droppingAllowed = settings.isDroppingAllowed.call(currentElement, currentSide, event, self);

        if (!droppingAllowed) {
          return false;
        }
      }

      return true;
    };

    var onDragEnter = function onDragEnter(event) {
      event.stopPropagation();

      if (currentElement) {
        return;
      }

      currentElement = this;
      elementsCache.$element.parents().each(function () {
        var droppableInstance = $(this).data('html5Droppable');

        if (!droppableInstance) {
          return;
        }

        droppableInstance.doDragLeave();
      });
      setSide(event);

      if (!isDroppingAllowed(event)) {
        return;
      }

      insertPlaceholder();
      elementsCache.$element.addClass(settings.hasDraggingOnChildClass);
      $(currentElement).addClass(settings.currentElementClass);

      if ($.isFunction(settings.onDragEnter)) {
        settings.onDragEnter.call(currentElement, currentSide, event, self);
      }
    };

    var onDragOver = function onDragOver(event) {
      event.stopPropagation();

      if (!currentElement) {
        onDragEnter.call(this, event);
      }

      var oldSide = currentSide;
      setSide(event);

      if (!isDroppingAllowed(event)) {
        return;
      }

      event.preventDefault();

      if (oldSide !== currentSide) {
        insertPlaceholder();
      }

      if ($.isFunction(settings.onDragging)) {
        settings.onDragging.call(this, currentSide, event, self);
      }
    };

    var onDragLeave = function onDragLeave(event) {
      var elementPosition = this.getBoundingClientRect();

      if ('dragleave' === event.type && !(event.clientX < elementPosition.left || event.clientX >= elementPosition.right || event.clientY < elementPosition.top || event.clientY >= elementPosition.bottom)) {
        return;
      }

      $(currentElement).removeClass(settings.currentElementClass);
      self.doDragLeave();
    };

    var onDrop = function onDrop(event) {
      setSide(event);

      if (!isDroppingAllowed(event)) {
        return;
      }

      event.preventDefault();

      if ($.isFunction(settings.onDropping)) {
        settings.onDropping.call(this, currentSide, event, self);
      }
    };

    var attachEvents = function attachEvents() {
      elementsCache.$element.on('dragenter', settings.items, onDragEnter).on('dragover', settings.items, onDragOver).on('drop', settings.items, onDrop).on('dragleave drop', settings.items, onDragLeave);
    };

    var init = function init() {
      initSettings();
      initElementsCache();
      attachEvents();
    };

    this.doDragLeave = function () {
      if (settings.placeholder) {
        elementsCache.$placeholder.remove();
      }

      elementsCache.$element.removeClass(settings.hasDraggingOnChildClass);

      if ($.isFunction(settings.onDragLeave)) {
        settings.onDragLeave.call(currentElement, event, self);
      }

      currentElement = currentSide = null;
    };

    this.destroy = function () {
      elementsCache.$element.off('dragenter', settings.items, onDragEnter).off('dragover', settings.items, onDragOver).off('drop', settings.items, onDrop).off('dragleave drop', settings.items, onDragLeave);
    };

    init();
  };

  var plugins = {
    html5Draggable: Draggable,
    html5Droppable: Droppable
  };
  $.each(plugins, function (pluginName, Plugin) {
    $.fn[pluginName] = function (options) {
      options = options || {};
      this.each(function () {
        var instance = $.data(this, pluginName),
            hasInstance = instance instanceof Plugin;

        if (hasInstance) {
          if ('destroy' === options) {
            instance.destroy();
            $.removeData(this, pluginName);
          }

          return;
        }

        options.element = this;
        $.data(this, pluginName, new Plugin(options));
      });
      return this;
    };
  });
})(jQuery);

/***/ }),
/* 711 */
/***/ (function(module, exports, __webpack_require__) {

"use strict";


var _interopRequireDefault = __webpack_require__(0);

var _Object$defineProperty = __webpack_require__(1);

_Object$defineProperty(exports, "__esModule", {
  value: true
});

exports.Editor = void 0;

var _classCallCheck2 = _interopRequireDefault(__webpack_require__(2));

var _createClass2 = _interopRequireDefault(__webpack_require__(3));

var _get2 = _interopRequireDefault(__webpack_require__(26));

var _getPrototypeOf2 = _interopRequireDefault(__webpack_require__(16));

var _inherits2 = _interopRequireDefault(__webpack_require__(4));

var _createSuper2 = _interopRequireDefault(__webpack_require__(5));

var _editorBase = _interopRequireDefault(__webpack_require__(419));

var Editor = /*#__PURE__*/function (_EditorBase) {
  (0, _inherits2.default)(Editor, _EditorBase);

  var _super = (0, _createSuper2.default)(Editor);

  function Editor() {
    (0, _classCallCheck2.default)(this, Editor);
    return _super.apply(this, arguments);
  }

  (0, _createClass2.default)(Editor, [{
    key: "onStart",
    value: function onStart(options) {
      NProgress.start();
      NProgress.inc(0.2);
      (0, _get2.default)((0, _getPrototypeOf2.default)(Editor.prototype), "onStart", this).call(this, options);
    }
  }, {
    key: "onPreviewLoaded",
    value: function onPreviewLoaded() {
      NProgress.done();
      (0, _get2.default)((0, _getPrototypeOf2.default)(Editor.prototype), "onPreviewLoaded", this).call(this);
    }
  }]);
  return Editor;
}(_editorBase.default);

exports.Editor = Editor;
window.elementor = new Editor();
elementor.start();

/***/ })
/******/ ]);
//# sourceMappingURL=editor.js.map