UNPKG

glance-dom

Version:
123 lines (93 loc) 4.61 kB
'use strict'; 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; ;