text: 'use strict';
  
  exports.__esModule = true;
  exports.ResizeToFitDeviceOptions = exports.TypeOptions = exports.MoveOptions = exports.ClickOptions = exports.MouseOptions = exports.OffsetOptions = exports.booleanOption = exports.positiveIntegerOption = exports.integerOption = undefined;
  
  var _classCallCheck2 = require('babel-runtime/helpers/classCallCheck');
  
  var _classCallCheck3 = _interopRequireDefault(_classCallCheck2);
  
  var _possibleConstructorReturn2 = require('babel-runtime/helpers/possibleConstructorReturn');
  
  var _possibleConstructorReturn3 = _interopRequireDefault(_possibleConstructorReturn2);
  
  var _inherits2 = require('babel-runtime/helpers/inherits');
  
  var _inherits3 = _interopRequireDefault(_inherits2);
  
  var _assignable = require('../../utils/assignable');
  
  var _assignable2 = _interopRequireDefault(_assignable);
  
  var _factories = require('./validations/factories');
  
  var _testRun = require('../../errors/test-run');
  
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
  
  var integerOption = exports.integerOption = (0, _factories.createIntegerValidator)(_testRun.ActionIntegerOptionError); // -------------------------------------------------------------
  // WARNING: this file is used by both the client and the server.
  // Do not use any browser or node-specific API!
  // -------------------------------------------------------------
  
  var positiveIntegerOption = exports.positiveIntegerOption = (0, _factories.createPositiveIntegerValidator)(_testRun.ActionPositiveIntegerOptionError);
  var booleanOption = exports.booleanOption = (0, _factories.createBooleanValidator)(_testRun.ActionBooleanOptionError);
  
  // Offset
  
  var OffsetOptions = exports.OffsetOptions = function (_Assignable) {
      (0, _inherits3.default)(OffsetOptions, _Assignable);
  
      function OffsetOptions(obj, validate) {
          (0, _classCallCheck3.default)(this, OffsetOptions);
  
          var _this = (0, _possibleConstructorReturn3.default)(this, _Assignable.call(this));
  
          _this.offsetX = null;
          _this.offsetY = null;
  
          _this._assignFrom(obj, validate);
          return _this;
      }
  
      OffsetOptions.prototype._getAssignableProperties = function _getAssignableProperties() {
          return [{ name: 'offsetX', type: integerOption }, { name: 'offsetY', type: integerOption }];
      };
  
      return OffsetOptions;
  }(_assignable2.default);
  
  // Mouse
  
  
  var MouseOptions = exports.MouseOptions = function (_OffsetOptions) {
      (0, _inherits3.default)(MouseOptions, _OffsetOptions);
  
      function MouseOptions(obj, validate) {
          (0, _classCallCheck3.default)(this, MouseOptions);
  
          var _this2 = (0, _possibleConstructorReturn3.default)(this, _OffsetOptions.call(this));
  
          _this2.modifiers = {
              ctrl: false,
              alt: false,
              shift: false,
              meta: false
          };
  
          _this2._assignFrom(obj, validate);
          return _this2;
      }
  
      MouseOptions.prototype._getAssignableProperties = function _getAssignableProperties() {
          return _OffsetOptions.prototype._getAssignableProperties.call(this).concat([{ name: 'modifiers.ctrl', type: booleanOption }, { name: 'modifiers.alt', type: booleanOption }, { name: 'modifiers.shift', type: booleanOption }, { name: 'modifiers.meta', type: booleanOption }]);
      };
  
      return MouseOptions;
  }(OffsetOptions);
  
  // Click
  
  
  var ClickOptions = exports.ClickOptions = function (_MouseOptions) {
      (0, _inherits3.default)(ClickOptions, _MouseOptions);
  
      function ClickOptions(obj, validate) {
          (0, _classCallCheck3.default)(this, ClickOptions);
  
          var _this3 = (0, _possibleConstructorReturn3.default)(this, _MouseOptions.call(this));
  
          _this3.caretPos = null;
  
          _this3._assignFrom(obj, validate);
          return _this3;
      }
  
      ClickOptions.prototype._getAssignableProperties = function _getAssignableProperties() {
          return _MouseOptions.prototype._getAssignableProperties.call(this).concat([{ name: 'caretPos', type: positiveIntegerOption }]);
      };
  
      return ClickOptions;
  }(MouseOptions);
  
  // Move
  
  
  var MoveOptions = exports.MoveOptions = function (_MouseOptions2) {
      (0, _inherits3.default)(MoveOptions, _MouseOptions2);
  
      function MoveOptions(obj, validate) {
          (0, _classCallCheck3.default)(this, MoveOptions);
  
          var _this4 = (0, _possibleConstructorReturn3.default)(this, _MouseOptions2.call(this));
  
          _this4.speed = null;
          _this4.minMovingTime = null;
          _this4.dragMode = false;
          _this4.skipScrolling = false;
  
          _this4._assignFrom(obj, validate);
          return _this4;
      }
  
      MoveOptions.prototype._getAssignableProperties = function _getAssignableProperties() {
          return _MouseOptions2.prototype._getAssignableProperties.call(this).concat([{ name: 'speed' }, { name: 'minMovingTime' }, { name: 'dragMode' }, { name: 'skipScrolling', type: booleanOption }]);
      };
  
      return MoveOptions;
  }(MouseOptions);
  
  // Type
  
  
  var TypeOptions = exports.TypeOptions = function (_ClickOptions) {
      (0, _inherits3.default)(TypeOptions, _ClickOptions);
  
      function TypeOptions(obj, validate) {
          (0, _classCallCheck3.default)(this, TypeOptions);
  
          var _this5 = (0, _possibleConstructorReturn3.default)(this, _ClickOptions.call(this));
  
          _this5.replace = false;
  
          _this5._assignFrom(obj, validate);
          return _this5;
      }
  
      TypeOptions.prototype._getAssignableProperties = function _getAssignableProperties() {
          return _ClickOptions.prototype._getAssignableProperties.call(this).concat([{ name: 'replace', type: booleanOption }]);
      };
  
      return TypeOptions;
  }(ClickOptions);
  
  //ResizeToFitDevice
  
  
  var ResizeToFitDeviceOptions = exports.ResizeToFitDeviceOptions = function (_Assignable2) {
      (0, _inherits3.default)(ResizeToFitDeviceOptions, _Assignable2);
  
      function ResizeToFitDeviceOptions(obj, validate) {
          (0, _classCallCheck3.default)(this, ResizeToFitDeviceOptions);
  
          var _this6 = (0, _possibleConstructorReturn3.default)(this, _Assignable2.call(this));
  
          _this6.portraitOrientation = false;
  
          _this6._assignFrom(obj, validate);
          return _this6;
      }
  
      ResizeToFitDeviceOptions.prototype._getAssignableProperties = function _getAssignableProperties() {
          return [{ name: 'portraitOrientation', type: booleanOption }];
      };
  
      return ResizeToFitDeviceOptions;
  }(_assignable2.default);