page-parser-tree
Version:
Library to find elements in a dynamic web page
104 lines (82 loc) • 3.16 kB
JavaScript
;
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
Object.defineProperty(exports, "__esModule", {
value: true
});
exports["default"] = createTransformer;
var _transducers = _interopRequireDefault(require("transducers.js"));
var _transduce = _interopRequireDefault(require("live-set/transduce"));
var _filter = _interopRequireDefault(require("live-set/filter"));
var _merge = _interopRequireDefault(require("live-set/merge"));
var _createCssFn = _interopRequireDefault(require("./createCssFn"));
var _watchMutations = _interopRequireDefault(require("./watchMutations"));
var _watchFilteredChildren = _interopRequireDefault(require("./watchFilteredChildren"));
function createTransformer(scheduler, selectors) {
var transformers = selectors.map(function (item) {
if (typeof item === 'string') {
var condFn = (0, _createCssFn["default"])(item);
return function (liveSet) {
return (0, _watchFilteredChildren["default"])(liveSet, condFn);
};
} else if (item.$or) {
var _transformers = item.$or.map(function (s) {
return createTransformer(scheduler, s);
});
return function (liveSet) {
return (0, _merge["default"])(_transformers.map(function (transformer) {
return transformer(liveSet);
}));
};
} else if (item.$watch) {
var _item$$watch = item.$watch,
attributeFilter = _item$$watch.attributeFilter,
cond = _item$$watch.cond;
var _condFn = typeof cond === 'function' ? cond : (0, _createCssFn["default"])(cond);
return function (liveSet) {
return (0, _watchMutations["default"])(liveSet, attributeFilter, _condFn);
};
} else if (item.$log) {
var $log = item.$log;
var filterFn = function filterFn(value) {
console.log($log, value.el); //eslint-disable-line no-console
return true;
};
return function (liveSet) {
return (0, _filter["default"])(liveSet, filterFn);
};
} else if (item.$filter) {
var $filter = item.$filter;
var _filterFn = function _filterFn(_ref) {
var el = _ref.el;
return $filter(el);
};
return function (liveSet) {
return (0, _filter["default"])(liveSet, _filterFn);
};
} else if (item.$map) {
var $map = item.$map;
var transducer = _transducers["default"].compose(_transducers["default"].map(function (ec) {
return {
el: $map(ec.el),
parents: ec.parents
};
}), _transducers["default"].filter(function (ec) {
return ec.el != null;
}));
return function (liveSet) {
return (0, _transduce["default"])(liveSet, transducer);
};
}
throw new Error("Invalid selector item: ".concat(JSON.stringify(item)));
});
return transformers.reduce(function (combined, transformer) {
return function (liveSet) {
return transformer(combined(liveSet));
};
}, function (x) {
return x;
});
}
module.exports = exports.default;
module.exports.default = exports.default;
//# sourceMappingURL=index.js.map