glance-selector
Version:
Glance selector library
133 lines (97 loc) • 4.78 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.DefaultProperties = exports.DefaultExtensions = exports.Parser = undefined;
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 _searchLineage = require("./guides/search-lineage");
var _searchLineage2 = _interopRequireDefault(_searchLineage);
var _parser = require("./parser");
var _parser2 = _interopRequireDefault(_parser);
var _log = require("./log");
var _log2 = _interopRequireDefault(_log);
var _default = require("./extensions/default");
var _default2 = _interopRequireDefault(_default);
var _defaultProperties = require("./default-properties");
var _defaultProperties2 = _interopRequireDefault(_defaultProperties);
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
function GlanceSelector(options) {
var _selector = {};
_selector.defaultExtensions = options.defaultExtensions || _default2.default;
_selector.extensions = options.extensions ? _selector.defaultExtensions.concat(options.extensions) : _selector.defaultExtensions;
_selector.properties = options.properties || {};
_selector.hooks = options.hooks || {};
_selector.guideFactory = options.guideFactory;
var selector = function selector(reference) {
for (var _len = arguments.length, args = Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {
args[_key - 1] = arguments[_key];
}
if (!reference) throw new Error("Selector required");
var resultHandler = function resultHandler(err, result) {
return result;
};
var config = {};
if (args.length > 0) {
if (_typeof(args[0]) == 'object') {
config = args[0];
if (args[1]) {
resultHandler = args[1];
}
} else if (typeof args[0] == 'function') {
resultHandler = args[0];
}
}
config.defaultExtensions = config.defaultExtensions || _default2.default;
config.extensions = config.extensions ? config.defaultExtensions.concat(config.extensions) : config.defaultExtensions;
config.defaultProperties = _defaultProperties2.default;
_log2.default.setLogLevel(config.logLevel || 'info');
config.rootElement = config.rootElement || document.body;
config.glance = config.glance || selector;
config.glanceSelector = config.glanceSelector || selector;
var globalScope = global || window;
globalScope.browserExecute = config.browserExecute || function (func) {
for (var _len2 = arguments.length, args = Array(_len2 > 1 ? _len2 - 1 : 0), _key2 = 1; _key2 < _len2; _key2++) {
args[_key2 - 1] = arguments[_key2];
}
return func.apply(undefined, args);
};
selector.find = function (reference, resultHandler) {
var scopes = _parser2.default.parse(reference);
_log2.default.debug("Selector:", reference);
_selector.extensions.filter(function (e) {
return e.beforeAll;
}).forEach(function (e) {
return e.beforeAll({ selector: reference });
});
return _selector.guideFactory().search({
glance: config.glance,
glanceSelector: config.glanceSelector,
scopeElement: config.rootElement,
scopes: scopes,
config: config,
extensions: config.extensions
}, function (err, elements) {
_selector.extensions.filter(function (e) {
return e.afterAll;
}).forEach(function (e) {
return e.afterAll({ elements: elements });
});
if (elements.length === 1) return resultHandler(err, elements[0]);else return resultHandler(err, elements);
});
};
return selector.find(reference, resultHandler);
};
selector.addExtension = function (extension) {
_selector.extensions.push(extension);
};
selector.setLogLevel = function (level) {
_log2.default.setLogLevel(level);
};
return selector;
}
exports.Parser = _parser2.default;
exports.DefaultExtensions = _default2.default;
exports.DefaultProperties = _defaultProperties2.default;
exports.default = GlanceSelector({ guideFactory: function guideFactory() {
return new _searchLineage2.default();
} });