glance-dom
Version:
Glance DOM library
123 lines (93 loc) • 4.61 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
var _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; };
var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; };
var _createClass = function () { 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); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();
var _extensions = require('../extensions');
var _extensions2 = _interopRequireDefault(_extensions);
var _filter = require('@arr/filter');
var _filter2 = _interopRequireDefault(_filter);
var _map = require('@arr/map');
var _map2 = _interopRequireDefault(_map);
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
var LocatorPreprocessor = function () {
function LocatorPreprocessor() {
var _ref = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {
extensions: new _extensions2.default(),
defaultOptions: []
},
_ref$extensions = _ref.extensions,
extensions = _ref$extensions === undefined ? new _extensions2.default() : _ref$extensions,
_ref$defaultOptions = _ref.defaultOptions,
defaultOptions = _ref$defaultOptions === undefined ? [] : _ref$defaultOptions;
_classCallCheck(this, LocatorPreprocessor);
this.extensions = extensions;
this.defaultOptions = defaultOptions;
}
_createClass(LocatorPreprocessor, [{
key: 'getLocatorCommands',
value: function getLocatorCommands(target) {
var extensions = this.extensions;
var locators = [];
var labels = extensions.getLabels();
var delcaredOptions = this.optionsWithLocators(target.options, target.label);
if (delcaredOptions.length === 0 && (_typeof(labels[target.label]) === 'object' && labels[target.label].locate || labels[target.label])) {
locators = [{ command: 'locate', option: 'custom-label', label: target.label }];
}
return this.locatorsFromOptions(target, locators, extensions);
}
}, {
key: 'locatorsFromOptions',
value: function locatorsFromOptions(target, locators, extensions) {
var updatedOptionTarget = this.configureOptionsWithLocators(target);
updatedOptionTarget.options.forEach(function (name) {
return locators.push({
command: 'locate',
option: name,
label: target.label
});
});
return locators;
}
}, {
key: 'configureOptionsWithLocators',
value: function configureOptionsWithLocators(target) {
var defaultOptions = this.defaultOptions;
var possibleOptions = target.options;
var validOptions = this.optionsWithLocators(possibleOptions, target.label);
if (validOptions.length === 0 && defaultOptions.length > 0) validOptions = this.optionsWithLocators(defaultOptions, target.label);
return _extends({}, target, { options: validOptions });
}
}, {
key: 'optionsWithLocators',
value: function optionsWithLocators(possibleOptions, label) {
var validOptions = [];
var options = this.extensions.getOptions();
var extensions = this.extensions;
possibleOptions.forEach(function (name) {
if (options[name] && options[name].locate) {
validOptions = validOptions.concat(name);
} else {
var catchAlls = (0, _filter2.default)(extensions.getExtensions(), function (e) {
if (e.locator) {
return e.locator.check({ label: label, option: name });
}
return false;
});
if (catchAlls.length > 0) {
validOptions = validOptions.concat((0, _map2.default)(catchAlls, function (e) {
return name;
}));
}
}
});
return validOptions;
}
}]);
return LocatorPreprocessor;
}();
exports.default = LocatorPreprocessor;
;