glance-dom
Version:
Glance DOM library
113 lines (90 loc) • 3.83 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
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);
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 FilterPreprocessor = function () {
function FilterPreprocessor() {
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, FilterPreprocessor);
this.extensions = extensions;
this.defaultOptions = defaultOptions;
}
_createClass(FilterPreprocessor, [{
key: 'getFilterCommands',
value: function getFilterCommands(options) {
var filters = [];
return this.filtersFromOptions(options, filters);
}
}, {
key: 'filtersFromOptions',
value: function filtersFromOptions(options, filters) {
var updatedOptions = this.configureOptionsWithFilters(options);
updatedOptions.forEach(function (name) {
return filters.push({
command: 'filter',
option: name
});
});
return filters;
}
}, {
key: 'configureOptionsWithFilters',
value: function configureOptionsWithFilters(providedOptions) {
var extensions = this.extensions;
var defaultOptions = this.defaultOptions;
var options = extensions.getOptions();
var possibleOptions = providedOptions;
var validOptions = [];
if (!providedOptions.includes('no-default-filters')) {
var defaultOptionsNotSpecified = (0, _filter2.default)(defaultOptions, function (d) {
return possibleOptions.indexOf(d) === -1;
});
if (defaultOptionsNotSpecified.length > 0) possibleOptions = defaultOptionsNotSpecified.concat(possibleOptions);
} else {
possibleOptions = (0, _filter2.default)(providedOptions, function (o) {
return o !== 'no-default-filters';
});
}
possibleOptions.forEach(function (name) {
var possibleOption = options[name];
if (typeof possibleOption === 'string') {
name = possibleOption;
}
if (possibleOption && (typeof possibleOption === 'function' || possibleOption.filter)) {
if (possibleOption.check && !possibleOption.check({ option: name, options: providedOptions })) {
return false;
}
validOptions = validOptions.concat(name);
} else {
var catchAlls = (0, _filter2.default)(extensions.getExtensions(), function (e) {
if (e.filter) {
return e.filter.check({ option: name });
}
return false;
});
if (catchAlls.length > 0) {
validOptions = validOptions.concat(name);
}
}
});
return validOptions;
}
}]);
return FilterPreprocessor;
}();
exports.default = FilterPreprocessor;
;