skipUntil.js 959 B

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647
  1. 'use strict';
  2. var _require = require('../helpers/is'),
  3. isArray = _require.isArray,
  4. isObject = _require.isObject,
  5. isFunction = _require.isFunction;
  6. module.exports = function skipUntil(valueOrFunction) {
  7. var _this = this;
  8. var previous = null;
  9. var items;
  10. var callback = function callback(value) {
  11. return value === valueOrFunction;
  12. };
  13. if (isFunction(valueOrFunction)) {
  14. callback = valueOrFunction;
  15. }
  16. if (isArray(this.items)) {
  17. items = this.items.filter(function (item) {
  18. if (previous !== true) {
  19. previous = callback(item);
  20. }
  21. return previous;
  22. });
  23. }
  24. if (isObject(this.items)) {
  25. items = Object.keys(this.items).reduce(function (acc, key) {
  26. if (previous !== true) {
  27. previous = callback(_this.items[key]);
  28. }
  29. if (previous !== false) {
  30. acc[key] = _this.items[key];
  31. }
  32. return acc;
  33. }, {});
  34. }
  35. return new this.constructor(items);
  36. };