rxjs-rails 2.3.9 → 2.3.10

Sign up to get free protection for your applications and to get access to all the features.
Files changed (30) hide show
  1. checksums.yaml +4 -4
  2. data/lib/rxjs/rails/version.rb +1 -1
  3. data/vendor/assets/javascripts/rx.aggregates.js +174 -204
  4. data/vendor/assets/javascripts/rx.aggregates.min.js +1 -1
  5. data/vendor/assets/javascripts/rx.all.compat.js +1626 -1528
  6. data/vendor/assets/javascripts/rx.all.compat.min.js +3 -3
  7. data/vendor/assets/javascripts/rx.all.js +1624 -1526
  8. data/vendor/assets/javascripts/rx.all.min.js +3 -3
  9. data/vendor/assets/javascripts/rx.async.compat.js +241 -0
  10. data/vendor/assets/javascripts/rx.async.compat.min.js +1 -1
  11. data/vendor/assets/javascripts/rx.async.js +241 -0
  12. data/vendor/assets/javascripts/rx.async.min.js +1 -1
  13. data/vendor/assets/javascripts/rx.backpressure.js +3 -3
  14. data/vendor/assets/javascripts/rx.backpressure.min.js +1 -1
  15. data/vendor/assets/javascripts/rx.binding.js +350 -378
  16. data/vendor/assets/javascripts/rx.binding.min.js +1 -1
  17. data/vendor/assets/javascripts/rx.coincidence.js +16 -21
  18. data/vendor/assets/javascripts/rx.compat.js +633 -683
  19. data/vendor/assets/javascripts/rx.compat.min.js +2 -2
  20. data/vendor/assets/javascripts/rx.js +633 -683
  21. data/vendor/assets/javascripts/rx.lite.compat.js +941 -1137
  22. data/vendor/assets/javascripts/rx.lite.compat.min.js +2 -2
  23. data/vendor/assets/javascripts/rx.lite.extras.js +58 -74
  24. data/vendor/assets/javascripts/rx.lite.extras.min.js +1 -1
  25. data/vendor/assets/javascripts/rx.lite.js +941 -1137
  26. data/vendor/assets/javascripts/rx.lite.min.js +2 -2
  27. data/vendor/assets/javascripts/rx.min.js +2 -2
  28. data/vendor/assets/javascripts/rx.time.js +182 -212
  29. data/vendor/assets/javascripts/rx.time.min.js +1 -1
  30. metadata +10 -10
@@ -119,18 +119,6 @@
119
119
 
120
120
  /**
121
121
  * Returns an observable sequence that produces a value after dueTime has elapsed and then after each period.
122
- *
123
- * @example
124
- * 1 - res = Rx.Observable.timer(new Date());
125
- * 2 - res = Rx.Observable.timer(new Date(), 1000);
126
- * 3 - res = Rx.Observable.timer(new Date(), Rx.Scheduler.timeout);
127
- * 4 - res = Rx.Observable.timer(new Date(), 1000, Rx.Scheduler.timeout);
128
- *
129
- * 5 - res = Rx.Observable.timer(5000);
130
- * 6 - res = Rx.Observable.timer(5000, 1000);
131
- * 7 - res = Rx.Observable.timer(5000, Rx.Scheduler.timeout);
132
- * 8 - res = Rx.Observable.timer(5000, 1000, Rx.Scheduler.timeout);
133
- *
134
122
  * @param {Number} dueTime Absolute (specified as a Date object) or relative time (specified as an integer denoting milliseconds) at which to produce the first value.
135
123
  * @param {Mixed} [periodOrScheduler] Period to produce subsequent values (specified as an integer denoting milliseconds), or the scheduler to run the timer on. If not specified, the resulting timer is not recurring.
136
124
  * @param {Scheduler} [scheduler] Scheduler to run the timer on. If not specified, the timeout scheduler is used.
@@ -141,7 +129,7 @@
141
129
  isScheduler(scheduler) || (scheduler = timeoutScheduler);
142
130
  if (periodOrScheduler !== undefined && typeof periodOrScheduler === 'number') {
143
131
  period = periodOrScheduler;
144
- } else if (periodOrScheduler !== undefined && typeof periodOrScheduler === 'object') {
132
+ } else if (isScheduler(periodOrScheduler)) {
145
133
  scheduler = periodOrScheduler;
146
134
  }
147
135
  if (dueTime instanceof Date && period === undefined) {
@@ -260,7 +248,37 @@
260
248
  */
261
249
  observableProto.throttle = function (dueTime, scheduler) {
262
250
  isScheduler(scheduler) || (scheduler = timeoutScheduler);
263
- return this.throttleWithSelector(function () { return observableTimer(dueTime, scheduler); })
251
+ var source = this;
252
+ return new AnonymousObservable(function (observer) {
253
+ var cancelable = new SerialDisposable(), hasvalue = false, value, id = 0;
254
+ var subscription = source.subscribe(
255
+ function (x) {
256
+ hasvalue = true;
257
+ value = x;
258
+ id++;
259
+ var currentId = id,
260
+ d = new SingleAssignmentDisposable();
261
+ cancelable.setDisposable(d);
262
+ d.setDisposable(scheduler.scheduleWithRelative(dueTime, function () {
263
+ hasValue && id === currentId && observer.onNext(value);
264
+ hasvalue = false;
265
+ }));
266
+ },
267
+ function (e) {
268
+ cancelable.dispose();
269
+ observer.onError(e);
270
+ hasvalue = false;
271
+ id++;
272
+ },
273
+ function () {
274
+ cancelable.dispose();
275
+ hasvalue && observer.onNext(value);
276
+ observer.onCompleted();
277
+ hasvalue = false;
278
+ id++;
279
+ });
280
+ return new CompositeDisposable(subscription, cancelable);
281
+ });
264
282
  };
265
283
 
266
284
  /**
@@ -277,70 +295,49 @@
277
295
  */
278
296
  observableProto.windowWithTime = function (timeSpan, timeShiftOrScheduler, scheduler) {
279
297
  var source = this, timeShift;
280
-
281
- timeShiftOrScheduler == null && (timeShift = timeSpan);
298
+ if (timeShiftOrScheduler === undefined) {
299
+ timeShift = timeSpan;
300
+ }
282
301
  isScheduler(scheduler) || (scheduler = timeoutScheduler);
283
302
  if (typeof timeShiftOrScheduler === 'number') {
284
303
  timeShift = timeShiftOrScheduler;
285
- } else if (typeof timeShiftOrScheduler === 'object') {
304
+ } else if (isScheduler(timeShiftOrScheduler)) {
286
305
  timeShift = timeSpan;
287
306
  scheduler = timeShiftOrScheduler;
288
307
  }
289
308
  return new AnonymousObservable(function (observer) {
290
309
  var groupDisposable,
291
- nextShift = timeShift,
292
- nextSpan = timeSpan,
293
- q = [],
294
- refCountDisposable,
295
- timerD = new SerialDisposable(),
296
- totalTime = 0;
297
- groupDisposable = new CompositeDisposable(timerD),
298
- refCountDisposable = new RefCountDisposable(groupDisposable);
299
-
300
-
301
- q.push(new Subject());
302
- observer.onNext(addRef(q[0], refCountDisposable));
303
- createTimer();
304
- groupDisposable.add(source.subscribe(function (x) {
305
- var i, len;
306
- for (i = 0, len = q.length; i < len; i++) {
307
- q[i].onNext(x);
308
- }
309
- }, function (e) {
310
- var i, len;
311
- for (i = 0, len = q.length; i < len; i++) {
312
- q[i].onError(e);
313
- }
314
- observer.onError(e);
315
- }, function () {
316
- var i, len;
317
- for (i = 0, len = q.length; i < len; i++) {
318
- q[i].onCompleted();
319
- }
320
- observer.onCompleted();
321
- }));
322
-
323
- return refCountDisposable;
324
-
325
- function createTimer () {
326
- var m = new SingleAssignmentDisposable(), isSpan = false, isShift = false;
310
+ nextShift = timeShift,
311
+ nextSpan = timeSpan,
312
+ q = [],
313
+ refCountDisposable,
314
+ timerD = new SerialDisposable(),
315
+ totalTime = 0;
316
+ groupDisposable = new CompositeDisposable(timerD),
317
+ refCountDisposable = new RefCountDisposable(groupDisposable);
318
+
319
+ function createTimer () {
320
+ var m = new SingleAssignmentDisposable(),
321
+ isSpan = false,
322
+ isShift = false;
327
323
  timerD.setDisposable(m);
328
-
329
324
  if (nextSpan === nextShift) {
330
325
  isSpan = true;
331
326
  isShift = true;
332
327
  } else if (nextSpan < nextShift) {
333
- isSpan = true;
328
+ isSpan = true;
334
329
  } else {
335
330
  isShift = true;
336
331
  }
337
-
338
332
  var newTotalTime = isSpan ? nextSpan : nextShift,
339
- ts = newTotalTime - totalTime;
333
+ ts = newTotalTime - totalTime;
340
334
  totalTime = newTotalTime;
341
- isSpan && (nextSpan += timeShift);
342
- isShift && (nextShift += timeShift);
343
-
335
+ if (isSpan) {
336
+ nextSpan += timeShift;
337
+ }
338
+ if (isShift) {
339
+ nextShift += timeShift;
340
+ }
344
341
  m.setDisposable(scheduler.scheduleWithRelative(ts, function () {
345
342
  var s;
346
343
  if (isShift) {
@@ -354,17 +351,30 @@
354
351
  }
355
352
  createTimer();
356
353
  }));
357
- }
354
+ };
355
+ q.push(new Subject());
356
+ observer.onNext(addRef(q[0], refCountDisposable));
357
+ createTimer();
358
+ groupDisposable.add(source.subscribe(function (x) {
359
+ for (var i = 0, len = q.length; i < len; i++) {
360
+ q[i].onNext(x);
361
+ }
362
+ }, function (e) {
363
+ for (var i = 0, len = q.length; i < len; i++) {
364
+ q[i].onError(e);
365
+ }
366
+ observer.onError(e);
367
+ }, function () {
368
+ for (var i = 0, len = q.length; i < len; i++) {
369
+ q[i].onCompleted();
370
+ }
371
+ observer.onCompleted();
372
+ }));
373
+ return refCountDisposable;
358
374
  });
359
375
  };
360
-
361
376
  /**
362
377
  * Projects each element of an observable sequence into a window that is completed when either it's full or a given amount of time has elapsed.
363
- * @example
364
- * 1 - res = source.windowWithTimeOrCount(5000, 50); // 5s or 50 items
365
- * 2 - res = source.windowWithTimeOrCount(5000, 50, scheduler); //5s or 50 items
366
- *
367
- * @memberOf Observable#
368
378
  * @param {Number} timeSpan Maximum time length of a window.
369
379
  * @param {Number} count Maximum element count of a window.
370
380
  * @param {Scheduler} [scheduler] Scheduler to run windowing timers on. If not specified, the timeout scheduler is used.
@@ -375,15 +385,31 @@
375
385
  isScheduler(scheduler) || (scheduler = timeoutScheduler);
376
386
  return new AnonymousObservable(function (observer) {
377
387
  var createTimer,
378
- groupDisposable,
379
- n = 0,
380
- refCountDisposable,
381
- s = new Subject()
382
- timerD = new SerialDisposable(),
383
- windowId = 0;
388
+ groupDisposable,
389
+ n = 0,
390
+ refCountDisposable,
391
+ s,
392
+ timerD = new SerialDisposable(),
393
+ windowId = 0;
384
394
  groupDisposable = new CompositeDisposable(timerD);
385
395
  refCountDisposable = new RefCountDisposable(groupDisposable);
386
-
396
+ createTimer = function (id) {
397
+ var m = new SingleAssignmentDisposable();
398
+ timerD.setDisposable(m);
399
+ m.setDisposable(scheduler.scheduleWithRelative(timeSpan, function () {
400
+ var newId;
401
+ if (id !== windowId) {
402
+ return;
403
+ }
404
+ n = 0;
405
+ newId = ++windowId;
406
+ s.onCompleted();
407
+ s = new Subject();
408
+ observer.onNext(addRef(s, refCountDisposable));
409
+ createTimer(newId);
410
+ }));
411
+ };
412
+ s = new Subject();
387
413
  observer.onNext(addRef(s, refCountDisposable));
388
414
  createTimer(0);
389
415
  groupDisposable.add(source.subscribe(function (x) {
@@ -398,34 +424,19 @@
398
424
  s = new Subject();
399
425
  observer.onNext(addRef(s, refCountDisposable));
400
426
  }
401
- newWindow && createTimer(newId);
427
+ if (newWindow) {
428
+ createTimer(newId);
429
+ }
402
430
  }, function (e) {
403
431
  s.onError(e);
404
432
  observer.onError(e);
405
433
  }, function () {
406
434
  s.onCompleted();
407
435
  observer.onCompleted();
408
- }));
409
-
410
- return refCountDisposable;
411
-
412
- function createTimer(id) {
413
- var m = new SingleAssignmentDisposable();
414
- timerD.setDisposable(m);
415
- m.setDisposable(scheduler.scheduleWithRelative(timeSpan, function () {
416
- var newId;
417
- if (id !== windowId) { return; }
418
- n = 0;
419
- newId = ++windowId;
420
- s.onCompleted();
421
- s = new Subject();
422
- observer.onNext(addRef(s, refCountDisposable));
423
- createTimer(newId);
424
- }));
425
- }
436
+ }));
437
+ return refCountDisposable;
426
438
  });
427
439
  };
428
-
429
440
  /**
430
441
  * Projects each element of an observable sequence into zero or more buffers which are produced based on timing information.
431
442
  *
@@ -545,16 +556,7 @@
545
556
  };
546
557
 
547
558
  /**
548
- * Returns the source observable sequence or the other observable sequence if dueTime elapses.
549
- *
550
- * @example
551
- * 1 - res = source.timeout(new Date()); // As a date
552
- * 2 - res = source.timeout(5000); // 5 seconds
553
- * 3 - res = source.timeout(new Date(), Rx.Observable.returnValue(42)); // As a date and timeout observable
554
- * 4 - res = source.timeout(5000, Rx.Observable.returnValue(42)); // 5 seconds and timeout observable
555
- * 5 - res = source.timeout(new Date(), Rx.Observable.returnValue(42), Rx.Scheduler.timeout); // As a date and timeout observable
556
- * 6 - res = source.timeout(5000, Rx.Observable.returnValue(42), Rx.Scheduler.timeout); // 5 seconds and timeout observable
557
- *
559
+ * Returns the source observable sequence or the other observable sequence if dueTime elapses.
558
560
  * @param {Number} dueTime Absolute (specified as a Date object) or relative time (specified as an integer denoting milliseconds) when a timeout occurs.
559
561
  * @param {Observable} [other] Sequence to return in case of a timeout. If not specified, a timeout error throwing sequence will be used.
560
562
  * @param {Scheduler} [scheduler] Scheduler to run the timeout timers on. If not specified, the timeout scheduler is used.
@@ -577,7 +579,7 @@
577
579
 
578
580
  subscription.setDisposable(original);
579
581
 
580
- var createTimer = function () {
582
+ function createTimer() {
581
583
  var myId = id;
582
584
  timer.setDisposable(scheduler[schedulerMethod](dueTime, function () {
583
585
  if (id === myId) {
@@ -585,7 +587,7 @@
585
587
  subscription.setDisposable(other.subscribe(observer));
586
588
  }
587
589
  }));
588
- };
590
+ }
589
591
 
590
592
  createTimer();
591
593
 
@@ -798,83 +800,71 @@
798
800
 
799
801
  /**
800
802
  * Returns the source observable sequence, switching to the other observable sequence if a timeout is signaled.
801
- *
802
- * @example
803
- * 1 - res = source.timeoutWithSelector(Rx.Observable.timer(500));
804
- * 2 - res = source.timeoutWithSelector(Rx.Observable.timer(500), function (x) { return Rx.Observable.timer(200); });
805
- * 3 - res = source.timeoutWithSelector(Rx.Observable.timer(500), function (x) { return Rx.Observable.timer(200); }, Rx.Observable.returnValue(42));
806
- *
807
803
  * @param {Observable} [firstTimeout] Observable sequence that represents the timeout for the first element. If not provided, this defaults to Observable.never().
808
804
  * @param {Function} [timeoutDurationSelector] Selector to retrieve an observable sequence that represents the timeout between the current element and the next element.
809
805
  * @param {Observable} [other] Sequence to return in case of a timeout. If not provided, this is set to Observable.throwException().
810
806
  * @returns {Observable} The source sequence switching to the other sequence in case of a timeout.
811
807
  */
812
808
  observableProto.timeoutWithSelector = function (firstTimeout, timeoutdurationSelector, other) {
813
- if (arguments.length === 1) {
814
- timeoutdurationSelector = firstTimeout;
815
- var firstTimeout = observableNever();
816
- }
817
- other || (other = observableThrow(new Error('Timeout')));
818
- var source = this;
819
- return new AnonymousObservable(function (observer) {
820
- var subscription = new SerialDisposable(), timer = new SerialDisposable(), original = new SingleAssignmentDisposable();
809
+ if (arguments.length === 1) {
810
+ timeoutdurationSelector = firstTimeout;
811
+ firstTimeout = observableNever();
812
+ }
813
+ other || (other = observableThrow(new Error('Timeout')));
814
+ var source = this;
815
+ return new AnonymousObservable(function (observer) {
816
+ var subscription = new SerialDisposable(), timer = new SerialDisposable(), original = new SingleAssignmentDisposable();
821
817
 
822
- subscription.setDisposable(original);
818
+ subscription.setDisposable(original);
823
819
 
824
- var id = 0, switched = false, setTimer = function (timeout) {
825
- var myId = id, timerWins = function () {
826
- return id === myId;
827
- };
828
- var d = new SingleAssignmentDisposable();
829
- timer.setDisposable(d);
830
- d.setDisposable(timeout.subscribe(function () {
831
- if (timerWins()) {
832
- subscription.setDisposable(other.subscribe(observer));
833
- }
834
- d.dispose();
835
- }, function (e) {
836
- if (timerWins()) {
837
- observer.onError(e);
838
- }
839
- }, function () {
840
- if (timerWins()) {
841
- subscription.setDisposable(other.subscribe(observer));
842
- }
843
- }));
844
- };
820
+ var id = 0, switched = false;
845
821
 
846
- setTimer(firstTimeout);
847
- var observerWins = function () {
848
- var res = !switched;
849
- if (res) {
850
- id++;
851
- }
852
- return res;
853
- };
822
+ function setTimer(timeout) {
823
+ var myId = id;
854
824
 
855
- original.setDisposable(source.subscribe(function (x) {
856
- if (observerWins()) {
857
- observer.onNext(x);
858
- var timeout;
859
- try {
860
- timeout = timeoutdurationSelector(x);
861
- } catch (e) {
862
- observer.onError(e);
863
- return;
864
- }
865
- setTimer(timeout);
866
- }
867
- }, function (e) {
868
- if (observerWins()) {
869
- observer.onError(e);
870
- }
871
- }, function () {
872
- if (observerWins()) {
873
- observer.onCompleted();
874
- }
875
- }));
876
- return new CompositeDisposable(subscription, timer);
877
- });
825
+ function timerWins () {
826
+ return id === myId;
827
+ }
828
+
829
+ var d = new SingleAssignmentDisposable();
830
+ timer.setDisposable(d);
831
+ d.setDisposable(timeout.subscribe(function () {
832
+ timerWins() && subscription.setDisposable(other.subscribe(observer));
833
+ d.dispose();
834
+ }, function (e) {
835
+ timerWins() && observer.onError(e);
836
+ }, function () {
837
+ timerWins() && subscription.setDisposable(other.subscribe(observer));
838
+ }));
839
+ };
840
+
841
+ setTimer(firstTimeout);
842
+
843
+ function observerWins() {
844
+ var res = !switched;
845
+ if (res) { id++; }
846
+ return res;
847
+ }
848
+
849
+ original.setDisposable(source.subscribe(function (x) {
850
+ if (observerWins()) {
851
+ observer.onNext(x);
852
+ var timeout;
853
+ try {
854
+ timeout = timeoutdurationSelector(x);
855
+ } catch (e) {
856
+ observer.onError(e);
857
+ return;
858
+ }
859
+ setTimer(isPromise(timeout) ? observableFromPromise(timeout) : timeout);
860
+ }
861
+ }, function (e) {
862
+ observerWins() && observer.onError(e);
863
+ }, function () {
864
+ observerWins() && observer.onCompleted();
865
+ }));
866
+ return new CompositeDisposable(subscription, timer);
867
+ });
878
868
  };
879
869
 
880
870
  /**
@@ -889,7 +879,8 @@
889
879
  observableProto.throttleWithSelector = function (throttleDurationSelector) {
890
880
  var source = this;
891
881
  return new AnonymousObservable(function (observer) {
892
- var value, hasValue = false, cancelable = new SerialDisposable(), id = 0, subscription = source.subscribe(function (x) {
882
+ var value, hasValue = false, cancelable = new SerialDisposable(), id = 0;
883
+ var subscription = source.subscribe(function (x) {
893
884
  var throttle;
894
885
  try {
895
886
  throttle = throttleDurationSelector(x);
@@ -897,21 +888,20 @@
897
888
  observer.onError(e);
898
889
  return;
899
890
  }
891
+
892
+ isPromise(throttle) && (throttle = observableFromPromise(throttle));
893
+
900
894
  hasValue = true;
901
895
  value = x;
902
896
  id++;
903
897
  var currentid = id, d = new SingleAssignmentDisposable();
904
898
  cancelable.setDisposable(d);
905
899
  d.setDisposable(throttle.subscribe(function () {
906
- if (hasValue && id === currentid) {
907
- observer.onNext(value);
908
- }
900
+ hasValue && id === currentid && observer.onNext(value);
909
901
  hasValue = false;
910
902
  d.dispose();
911
903
  }, observer.onError.bind(observer), function () {
912
- if (hasValue && id === currentid) {
913
- observer.onNext(value);
914
- }
904
+ hasValue && id === currentid && observer.onNext(value);
915
905
  hasValue = false;
916
906
  d.dispose();
917
907
  }));
@@ -922,9 +912,7 @@
922
912
  id++;
923
913
  }, function () {
924
914
  cancelable.dispose();
925
- if (hasValue) {
926
- observer.onNext(value);
927
- }
915
+ hasValue && observer.onNext(value);
928
916
  observer.onCompleted();
929
917
  hasValue = false;
930
918
  id++;
@@ -970,9 +958,6 @@
970
958
 
971
959
  /**
972
960
  * Returns elements within the specified duration from the end of the observable source sequence, using the specified schedulers to run timers and to drain the collected elements.
973
- *
974
- * @example
975
- * 1 - res = source.takeLastWithTime(5000, [optional timer scheduler], [optional loop scheduler]);
976
961
  * @description
977
962
  * This operator accumulates a queue with a length enough to store elements received during the initial duration window.
978
963
  * As more elements are received, elements older than the specified duration are taken from the queue and produced on the
@@ -986,7 +971,6 @@
986
971
  isScheduler(scheduler) || (scheduler = timeoutScheduler);
987
972
  return new AnonymousObservable(function (observer) {
988
973
  var q = [];
989
-
990
974
  return source.subscribe(function (x) {
991
975
  var now = scheduler.now();
992
976
  q.push({ interval: now, value: x });
@@ -997,11 +981,8 @@
997
981
  var now = scheduler.now();
998
982
  while (q.length > 0) {
999
983
  var next = q.shift();
1000
- if (now - next.interval <= duration) {
1001
- observer.onNext(next.value);
1002
- }
984
+ if (now - next.interval <= duration) { observer.onNext(next.value); }
1003
985
  }
1004
-
1005
986
  observer.onCompleted();
1006
987
  });
1007
988
  });
@@ -1009,9 +990,6 @@
1009
990
 
1010
991
  /**
1011
992
  * Returns an array with the elements within the specified duration from the end of the observable source sequence, using the specified scheduler to run timers.
1012
- *
1013
- * @example
1014
- * 1 - res = source.takeLastBufferWithTime(5000, [optional scheduler]);
1015
993
  * @description
1016
994
  * This operator accumulates a queue with a length enough to store elements received during the initial duration window.
1017
995
  * As more elements are received, elements older than the specified duration are taken from the queue and produced on the
@@ -1025,7 +1003,6 @@
1025
1003
  isScheduler(scheduler) || (scheduler = timeoutScheduler);
1026
1004
  return new AnonymousObservable(function (observer) {
1027
1005
  var q = [];
1028
-
1029
1006
  return source.subscribe(function (x) {
1030
1007
  var now = scheduler.now();
1031
1008
  q.push({ interval: now, value: x });
@@ -1036,11 +1013,8 @@
1036
1013
  var now = scheduler.now(), res = [];
1037
1014
  while (q.length > 0) {
1038
1015
  var next = q.shift();
1039
- if (now - next.interval <= duration) {
1040
- res.push(next.value);
1041
- }
1016
+ if (now - next.interval <= duration) { res.push(next.value); }
1042
1017
  }
1043
-
1044
1018
  observer.onNext(res);
1045
1019
  observer.onCompleted();
1046
1020
  });
@@ -1100,10 +1074,10 @@
1100
1074
  * Errors produced by the source sequence are always forwarded to the result sequence, even if the error occurs before the start time.
1101
1075
  *
1102
1076
  * @examples
1103
- * 1 - res = source.skipUntilWithTime(new Date(), [optional scheduler]);
1104
- * 2 - res = source.skipUntilWithTime(5000, [optional scheduler]);
1105
- * @param startTime Time to start taking elements from the source sequence. If this value is less than or equal to Date(), no elements will be skipped.
1106
- * @param scheduler Scheduler to run the timer on. If not specified, defaults to Rx.Scheduler.timeout.
1077
+ * 1 - res = source.skipUntilWithTime(new Date(), [scheduler]);
1078
+ * 2 - res = source.skipUntilWithTime(5000, [scheduler]);
1079
+ * @param {Date|Number} startTime Time to start taking elements from the source sequence. If this value is less than or equal to Date(), no elements will be skipped.
1080
+ * @param {Scheduler} [scheduler] Scheduler to run the timer on. If not specified, defaults to Rx.Scheduler.timeout.
1107
1081
  * @returns {Observable} An observable sequence with the elements skipped until the specified start time.
1108
1082
  */
1109
1083
  observableProto.skipUntilWithTime = function (startTime, scheduler) {
@@ -1124,13 +1098,9 @@
1124
1098
  };
1125
1099
 
1126
1100
  /**
1127
- * Takes elements for the specified duration until the specified end time, using the specified scheduler to run timers.
1128
- *
1129
- * @example
1130
- * 1 - res = source.takeUntilWithTime(new Date(), [optional scheduler]);
1131
- * 2 - res = source.takeUntilWithTime(5000, [optional scheduler]);
1101
+ * Takes elements for the specified duration until the specified end time, using the specified scheduler to run timers.
1132
1102
  * @param {Number | Date} endTime Time to stop taking elements from the source sequence. If this value is less than or equal to new Date(), the result stream will complete immediately.
1133
- * @param {Scheduler} scheduler Scheduler to run the timer on.
1103
+ * @param {Scheduler} [scheduler] Scheduler to run the timer on.
1134
1104
  * @returns {Observable} An observable sequence with the elements taken until the specified end time.
1135
1105
  */
1136
1106
  observableProto.takeUntilWithTime = function (endTime, scheduler) {
@@ -1139,9 +1109,9 @@
1139
1109
  'scheduleWithAbsolute' :
1140
1110
  'scheduleWithRelative';
1141
1111
  return new AnonymousObservable(function (observer) {
1142
- return new CompositeDisposable(scheduler[schedulerMethod](endTime, function () {
1143
- observer.onCompleted();
1144
- }), source.subscribe(observer));
1112
+ return new CompositeDisposable(
1113
+ scheduler[schedulerMethod](endTime, observer.onCompleted.bind(observer)),
1114
+ source.subscribe(observer));
1145
1115
  });
1146
1116
  };
1147
1117
 
@@ -1 +1 @@
1
- (function(a){var b={"boolean":!1,"function":!0,object:!0,number:!1,string:!1,undefined:!1},c=b[typeof window]&&window||this,d=b[typeof exports]&&exports&&!exports.nodeType&&exports,e=b[typeof module]&&module&&!module.nodeType&&module,f=(e&&e.exports===d&&d,b[typeof global]&&global);!f||f.global!==f&&f.window!==f||(c=f),"function"==typeof define&&define.amd?define(["rx","exports"],function(b,d){return c.Rx=a(c,d,b),c.Rx}):"object"==typeof module&&module&&module.exports===d?module.exports=a(c,module.exports,require("./rx")):c.Rx=a(c,{},c.Rx)}).call(this,function(a,b,c,d){function e(a,b){return new n(function(c){return b.scheduleWithAbsolute(a,function(){c.onNext(0),c.onCompleted()})})}function f(a,b,c){return new n(function(d){var e=0,f=a,g=z(b);return c.scheduleRecursiveWithAbsolute(f,function(a){if(g>0){var b=c.now();f+=g,b>=f&&(f=b+g)}d.onNext(e++),a(f)})})}function g(a,b){return new n(function(c){return b.scheduleWithRelative(z(a),function(){c.onNext(0),c.onCompleted()})})}function h(a,b,c){return a===b?new n(function(a){return c.schedulePeriodicWithState(0,b,function(b){return a.onNext(b),b+1})}):o(function(){return f(c.now()+a,b,c)})}function i(a,b,c){return new n(function(d){var e,f=!1,g=new u,h=null,i=[],j=!1;return e=a.materialize().timestamp(c).subscribe(function(a){var e,k;"E"===a.value.kind?(i=[],i.push(a),h=a.value.exception,k=!j):(i.push({value:a.value,timestamp:a.timestamp+b}),k=!f,f=!0),k&&(null!==h?d.onError(h):(e=new t,g.setDisposable(e),e.setDisposable(c.scheduleRecursiveWithRelative(b,function(a){var b,e,g,k;if(null===h){j=!0;do g=null,i.length>0&&i[0].timestamp-c.now()<=0&&(g=i.shift().value),null!==g&&g.accept(d);while(null!==g);k=!1,e=0,i.length>0?(k=!0,e=Math.max(0,i[0].timestamp-c.now())):f=!1,b=h,j=!1,null!==b?d.onError(b):k&&a(e)}}))))}),new v(e,g)})}function j(a,b,c){return o(function(){return i(a,b-c.now(),c)})}function k(a,b){return new n(function(c){function d(){g&&(g=!1,c.onNext(f)),e&&c.onCompleted()}var e,f,g;return new v(a.subscribe(function(a){g=!0,f=a},c.onError.bind(c),function(){e=!0}),b.subscribe(d,c.onError.bind(c),d))})}var l=c.Observable,m=l.prototype,n=c.AnonymousObservable,o=l.defer,p=l.empty,q=l.never,r=l.throwException,s=(l.fromArray,c.Scheduler.timeout),t=c.SingleAssignmentDisposable,u=c.SerialDisposable,v=c.CompositeDisposable,w=c.RefCountDisposable,x=c.Subject,y=c.internals.addRef,z=c.Scheduler.normalize,A=c.helpers,B=A.isPromise,C=A.isScheduler,D=l.fromPromise,E=(A.notDefined,l.interval=function(a,b){return h(a,a,C(b)?b:s)}),F=l.timer=function(a,b,c){var i;return C(c)||(c=s),b!==d&&"number"==typeof b?i=b:b!==d&&"object"==typeof b&&(c=b),a instanceof Date&&i===d?e(a.getTime(),c):a instanceof Date&&i!==d?(i=b,f(a.getTime(),i,c)):i===d?g(a,c):h(a,i,c)};return m.delay=function(a,b){return C(b)||(b=s),a instanceof Date?j(this,a.getTime(),b):i(this,a,b)},m.throttle=function(a,b){return C(b)||(b=s),this.throttleWithSelector(function(){return F(a,b)})},m.windowWithTime=function(a,b,c){var d,e=this;return null==b&&(d=a),C(c)||(c=s),"number"==typeof b?d=b:"object"==typeof b&&(d=a,c=b),new n(function(b){function f(){var a=new t,e=!1,g=!1;l.setDisposable(a),j===i?(e=!0,g=!0):i>j?e=!0:g=!0;var n=e?j:i,o=n-m;m=n,e&&(j+=d),g&&(i+=d),a.setDisposable(c.scheduleWithRelative(o,function(){var a;g&&(a=new x,k.push(a),b.onNext(y(a,h))),e&&(a=k.shift(),a.onCompleted()),f()}))}var g,h,i=d,j=a,k=[],l=new u,m=0;return g=new v(l),h=new w(g),k.push(new x),b.onNext(y(k[0],h)),f(),g.add(e.subscribe(function(a){var b,c;for(b=0,c=k.length;c>b;b++)k[b].onNext(a)},function(a){var c,d;for(c=0,d=k.length;d>c;c++)k[c].onError(a);b.onError(a)},function(){var a,c;for(a=0,c=k.length;c>a;a++)k[a].onCompleted();b.onCompleted()})),h})},m.windowWithTimeOrCount=function(a,b,c){var d=this;return C(c)||(c=s),new n(function(e){function f(b){var d=new t;timerD.setDisposable(d),d.setDisposable(c.scheduleWithRelative(a,function(){var a;b===windowId&&(i=0,a=++windowId,j.onCompleted(),j=new x,e.onNext(y(j,h)),f(a))}))}var f,g,h,i=0,j=new x;return timerD=new u,windowId=0,g=new v(timerD),h=new w(g),e.onNext(y(j,h)),f(0),g.add(d.subscribe(function(a){var c=0,d=!1;j.onNext(a),i++,i===b&&(d=!0,i=0,c=++windowId,j.onCompleted(),j=new x,e.onNext(y(j,h))),d&&f(c)},function(a){j.onError(a),e.onError(a)},function(){j.onCompleted(),e.onCompleted()})),h})},m.bufferWithTime=function(){return this.windowWithTime.apply(this,arguments).selectMany(function(a){return a.toArray()})},m.bufferWithTimeOrCount=function(a,b,c){return this.windowWithTimeOrCount(a,b,c).selectMany(function(a){return a.toArray()})},m.timeInterval=function(a){var b=this;return C(a)||(a=s),o(function(){var c=a.now();return b.map(function(b){var d=a.now(),e=d-c;return c=d,{value:b,interval:e}})})},m.timestamp=function(a){return C(a)||(a=s),this.map(function(b){return{value:b,timestamp:a.now()}})},m.sample=function(a,b){return C(b)||(b=s),"number"==typeof a?k(this,E(a,b)):k(this,a)},m.timeout=function(a,b,c){b||(b=r(new Error("Timeout"))),C(c)||(c=s);var d=this,e=a instanceof Date?"scheduleWithAbsolute":"scheduleWithRelative";return new n(function(f){var g=0,h=new t,i=new u,j=!1,k=new u;i.setDisposable(h);var l=function(){var d=g;k.setDisposable(c[e](a,function(){g===d&&(B(b)&&(b=D(b)),i.setDisposable(b.subscribe(f)))}))};return l(),h.setDisposable(d.subscribe(function(a){j||(g++,f.onNext(a),l())},function(a){j||(g++,f.onError(a))},function(){j||(g++,f.onCompleted())})),new v(i,k)})},l.generateWithAbsoluteTime=function(a,b,c,d,e,f){return C(f)||(f=s),new n(function(g){var h,i,j=!0,k=!1,l=a;return f.scheduleRecursiveWithAbsolute(f.now(),function(a){k&&g.onNext(h);try{j?j=!1:l=c(l),k=b(l),k&&(h=d(l),i=e(l))}catch(f){return void g.onError(f)}k?a(i):g.onCompleted()})})},l.generateWithRelativeTime=function(a,b,c,d,e,f){return C(f)||(f=s),new n(function(g){var h,i,j=!0,k=!1,l=a;return f.scheduleRecursiveWithRelative(0,function(a){k&&g.onNext(h);try{j?j=!1:l=c(l),k=b(l),k&&(h=d(l),i=e(l))}catch(f){return void g.onError(f)}k?a(i):g.onCompleted()})})},m.delaySubscription=function(a,b){return this.delayWithSelector(F(a,C(b)?b:s),p)},m.delayWithSelector=function(a,b){var c,d,e=this;return"function"==typeof a?d=a:(c=a,d=b),new n(function(a){var b=new v,f=!1,g=function(){f&&0===b.length&&a.onCompleted()},h=new u,i=function(){h.setDisposable(e.subscribe(function(c){var e;try{e=d(c)}catch(f){return void a.onError(f)}var h=new t;b.add(h),h.setDisposable(e.subscribe(function(){a.onNext(c),b.remove(h),g()},a.onError.bind(a),function(){a.onNext(c),b.remove(h),g()}))},a.onError.bind(a),function(){f=!0,h.dispose(),g()}))};return c?h.setDisposable(c.subscribe(function(){i()},a.onError.bind(a),function(){i()})):i(),new v(h,b)})},m.timeoutWithSelector=function(a,b,c){if(1===arguments.length){b=a;var a=q()}c||(c=r(new Error("Timeout")));var d=this;return new n(function(e){var f=new u,g=new u,h=new t;f.setDisposable(h);var i=0,j=!1,k=function(a){var b=i,d=function(){return i===b},h=new t;g.setDisposable(h),h.setDisposable(a.subscribe(function(){d()&&f.setDisposable(c.subscribe(e)),h.dispose()},function(a){d()&&e.onError(a)},function(){d()&&f.setDisposable(c.subscribe(e))}))};k(a);var l=function(){var a=!j;return a&&i++,a};return h.setDisposable(d.subscribe(function(a){if(l()){e.onNext(a);var c;try{c=b(a)}catch(d){return void e.onError(d)}k(c)}},function(a){l()&&e.onError(a)},function(){l()&&e.onCompleted()})),new v(f,g)})},m.throttleWithSelector=function(a){var b=this;return new n(function(c){var d,e=!1,f=new u,g=0,h=b.subscribe(function(b){var h;try{h=a(b)}catch(i){return void c.onError(i)}e=!0,d=b,g++;var j=g,k=new t;f.setDisposable(k),k.setDisposable(h.subscribe(function(){e&&g===j&&c.onNext(d),e=!1,k.dispose()},c.onError.bind(c),function(){e&&g===j&&c.onNext(d),e=!1,k.dispose()}))},function(a){f.dispose(),c.onError(a),e=!1,g++},function(){f.dispose(),e&&c.onNext(d),c.onCompleted(),e=!1,g++});return new v(h,f)})},m.skipLastWithTime=function(a,b){C(b)||(b=s);var c=this;return new n(function(d){var e=[];return c.subscribe(function(c){var f=b.now();for(e.push({interval:f,value:c});e.length>0&&f-e[0].interval>=a;)d.onNext(e.shift().value)},d.onError.bind(d),function(){for(var c=b.now();e.length>0&&c-e[0].interval>=a;)d.onNext(e.shift().value);d.onCompleted()})})},m.takeLastWithTime=function(a,b){var c=this;return C(b)||(b=s),new n(function(d){var e=[];return c.subscribe(function(c){var d=b.now();for(e.push({interval:d,value:c});e.length>0&&d-e[0].interval>=a;)e.shift()},d.onError.bind(d),function(){for(var c=b.now();e.length>0;){var f=e.shift();c-f.interval<=a&&d.onNext(f.value)}d.onCompleted()})})},m.takeLastBufferWithTime=function(a,b){var c=this;return C(b)||(b=s),new n(function(d){var e=[];return c.subscribe(function(c){var d=b.now();for(e.push({interval:d,value:c});e.length>0&&d-e[0].interval>=a;)e.shift()},d.onError.bind(d),function(){for(var c=b.now(),f=[];e.length>0;){var g=e.shift();c-g.interval<=a&&f.push(g.value)}d.onNext(f),d.onCompleted()})})},m.takeWithTime=function(a,b){var c=this;return C(b)||(b=s),new n(function(d){return new v(b.scheduleWithRelative(a,d.onCompleted.bind(d)),c.subscribe(d))})},m.skipWithTime=function(a,b){var c=this;return C(b)||(b=s),new n(function(d){var e=!1;return new v(b.scheduleWithRelative(a,function(){e=!0}),c.subscribe(function(a){e&&d.onNext(a)},d.onError.bind(d),d.onCompleted.bind(d)))})},m.skipUntilWithTime=function(a,b){C(b)||(b=s);var c=this,d=a instanceof Date?"scheduleWithAbsolute":"scheduleWithRelative";return new n(function(e){var f=!1;return new v(b[d](a,function(){f=!0}),c.subscribe(function(a){f&&e.onNext(a)},e.onError.bind(e),e.onCompleted.bind(e)))})},m.takeUntilWithTime=function(a,b){C(b)||(b=s);var c=this,d=a instanceof Date?"scheduleWithAbsolute":"scheduleWithRelative";return new n(function(e){return new v(b[d](a,function(){e.onCompleted()}),c.subscribe(e))})},c});
1
+ (function(a){var b={"boolean":!1,"function":!0,object:!0,number:!1,string:!1,undefined:!1},c=b[typeof window]&&window||this,d=b[typeof exports]&&exports&&!exports.nodeType&&exports,e=b[typeof module]&&module&&!module.nodeType&&module,f=(e&&e.exports===d&&d,b[typeof global]&&global);!f||f.global!==f&&f.window!==f||(c=f),"function"==typeof define&&define.amd?define(["rx","exports"],function(b,d){return c.Rx=a(c,d,b),c.Rx}):"object"==typeof module&&module&&module.exports===d?module.exports=a(c,module.exports,require("./rx")):c.Rx=a(c,{},c.Rx)}).call(this,function(a,b,c,d){function e(a,b){return new n(function(c){return b.scheduleWithAbsolute(a,function(){c.onNext(0),c.onCompleted()})})}function f(a,b,c){return new n(function(d){var e=0,f=a,g=z(b);return c.scheduleRecursiveWithAbsolute(f,function(a){if(g>0){var b=c.now();f+=g,b>=f&&(f=b+g)}d.onNext(e++),a(f)})})}function g(a,b){return new n(function(c){return b.scheduleWithRelative(z(a),function(){c.onNext(0),c.onCompleted()})})}function h(a,b,c){return a===b?new n(function(a){return c.schedulePeriodicWithState(0,b,function(b){return a.onNext(b),b+1})}):o(function(){return f(c.now()+a,b,c)})}function i(a,b,c){return new n(function(d){var e,f=!1,g=new u,h=null,i=[],j=!1;return e=a.materialize().timestamp(c).subscribe(function(a){var e,k;"E"===a.value.kind?(i=[],i.push(a),h=a.value.exception,k=!j):(i.push({value:a.value,timestamp:a.timestamp+b}),k=!f,f=!0),k&&(null!==h?d.onError(h):(e=new t,g.setDisposable(e),e.setDisposable(c.scheduleRecursiveWithRelative(b,function(a){var b,e,g,k;if(null===h){j=!0;do g=null,i.length>0&&i[0].timestamp-c.now()<=0&&(g=i.shift().value),null!==g&&g.accept(d);while(null!==g);k=!1,e=0,i.length>0?(k=!0,e=Math.max(0,i[0].timestamp-c.now())):f=!1,b=h,j=!1,null!==b?d.onError(b):k&&a(e)}}))))}),new v(e,g)})}function j(a,b,c){return o(function(){return i(a,b-c.now(),c)})}function k(a,b){return new n(function(c){function d(){g&&(g=!1,c.onNext(f)),e&&c.onCompleted()}var e,f,g;return new v(a.subscribe(function(a){g=!0,f=a},c.onError.bind(c),function(){e=!0}),b.subscribe(d,c.onError.bind(c),d))})}var l=c.Observable,m=l.prototype,n=c.AnonymousObservable,o=l.defer,p=l.empty,q=l.never,r=l.throwException,s=(l.fromArray,c.Scheduler.timeout),t=c.SingleAssignmentDisposable,u=c.SerialDisposable,v=c.CompositeDisposable,w=c.RefCountDisposable,x=c.Subject,y=c.internals.addRef,z=c.Scheduler.normalize,A=c.helpers,B=A.isPromise,C=A.isScheduler,D=l.fromPromise,E=(A.notDefined,l.interval=function(a,b){return h(a,a,C(b)?b:s)}),F=l.timer=function(a,b,c){var i;return C(c)||(c=s),b!==d&&"number"==typeof b?i=b:C(b)&&(c=b),a instanceof Date&&i===d?e(a.getTime(),c):a instanceof Date&&i!==d?(i=b,f(a.getTime(),i,c)):i===d?g(a,c):h(a,i,c)};return m.delay=function(a,b){return C(b)||(b=s),a instanceof Date?j(this,a.getTime(),b):i(this,a,b)},m.throttle=function(a,b){C(b)||(b=s);var c=this;return new n(function(d){var e,f=new u,g=!1,h=0,i=c.subscribe(function(c){g=!0,e=c,h++;var i=h,j=new t;f.setDisposable(j),j.setDisposable(b.scheduleWithRelative(a,function(){hasValue&&h===i&&d.onNext(e),g=!1}))},function(a){f.dispose(),d.onError(a),g=!1,h++},function(){f.dispose(),g&&d.onNext(e),d.onCompleted(),g=!1,h++});return new v(i,f)})},m.windowWithTime=function(a,b,c){var e,f=this;return b===d&&(e=a),C(c)||(c=s),"number"==typeof b?e=b:C(b)&&(e=a,c=b),new n(function(b){function d(){var a=new t,f=!1,g=!1;l.setDisposable(a),j===i?(f=!0,g=!0):i>j?f=!0:g=!0;var n=f?j:i,o=n-m;m=n,f&&(j+=e),g&&(i+=e),a.setDisposable(c.scheduleWithRelative(o,function(){var a;g&&(a=new x,k.push(a),b.onNext(y(a,h))),f&&(a=k.shift(),a.onCompleted()),d()}))}var g,h,i=e,j=a,k=[],l=new u,m=0;return g=new v(l),h=new w(g),k.push(new x),b.onNext(y(k[0],h)),d(),g.add(f.subscribe(function(a){for(var b=0,c=k.length;c>b;b++)k[b].onNext(a)},function(a){for(var c=0,d=k.length;d>c;c++)k[c].onError(a);b.onError(a)},function(){for(var a=0,c=k.length;c>a;a++)k[a].onCompleted();b.onCompleted()})),h})},m.windowWithTimeOrCount=function(a,b,c){var d=this;return C(c)||(c=s),new n(function(e){var f,g,h,i,j=0,k=new u,l=0;return g=new v(k),h=new w(g),f=function(b){var d=new t;k.setDisposable(d),d.setDisposable(c.scheduleWithRelative(a,function(){var a;b===l&&(j=0,a=++l,i.onCompleted(),i=new x,e.onNext(y(i,h)),f(a))}))},i=new x,e.onNext(y(i,h)),f(0),g.add(d.subscribe(function(a){var c=0,d=!1;i.onNext(a),j++,j===b&&(d=!0,j=0,c=++l,i.onCompleted(),i=new x,e.onNext(y(i,h))),d&&f(c)},function(a){i.onError(a),e.onError(a)},function(){i.onCompleted(),e.onCompleted()})),h})},m.bufferWithTime=function(){return this.windowWithTime.apply(this,arguments).selectMany(function(a){return a.toArray()})},m.bufferWithTimeOrCount=function(a,b,c){return this.windowWithTimeOrCount(a,b,c).selectMany(function(a){return a.toArray()})},m.timeInterval=function(a){var b=this;return C(a)||(a=s),o(function(){var c=a.now();return b.map(function(b){var d=a.now(),e=d-c;return c=d,{value:b,interval:e}})})},m.timestamp=function(a){return C(a)||(a=s),this.map(function(b){return{value:b,timestamp:a.now()}})},m.sample=function(a,b){return C(b)||(b=s),"number"==typeof a?k(this,E(a,b)):k(this,a)},m.timeout=function(a,b,c){b||(b=r(new Error("Timeout"))),C(c)||(c=s);var d=this,e=a instanceof Date?"scheduleWithAbsolute":"scheduleWithRelative";return new n(function(f){function g(){var d=h;l.setDisposable(c[e](a,function(){h===d&&(B(b)&&(b=D(b)),j.setDisposable(b.subscribe(f)))}))}var h=0,i=new t,j=new u,k=!1,l=new u;return j.setDisposable(i),g(),i.setDisposable(d.subscribe(function(a){k||(h++,f.onNext(a),g())},function(a){k||(h++,f.onError(a))},function(){k||(h++,f.onCompleted())})),new v(j,l)})},l.generateWithAbsoluteTime=function(a,b,c,d,e,f){return C(f)||(f=s),new n(function(g){var h,i,j=!0,k=!1,l=a;return f.scheduleRecursiveWithAbsolute(f.now(),function(a){k&&g.onNext(h);try{j?j=!1:l=c(l),k=b(l),k&&(h=d(l),i=e(l))}catch(f){return void g.onError(f)}k?a(i):g.onCompleted()})})},l.generateWithRelativeTime=function(a,b,c,d,e,f){return C(f)||(f=s),new n(function(g){var h,i,j=!0,k=!1,l=a;return f.scheduleRecursiveWithRelative(0,function(a){k&&g.onNext(h);try{j?j=!1:l=c(l),k=b(l),k&&(h=d(l),i=e(l))}catch(f){return void g.onError(f)}k?a(i):g.onCompleted()})})},m.delaySubscription=function(a,b){return this.delayWithSelector(F(a,C(b)?b:s),p)},m.delayWithSelector=function(a,b){var c,d,e=this;return"function"==typeof a?d=a:(c=a,d=b),new n(function(a){var b=new v,f=!1,g=function(){f&&0===b.length&&a.onCompleted()},h=new u,i=function(){h.setDisposable(e.subscribe(function(c){var e;try{e=d(c)}catch(f){return void a.onError(f)}var h=new t;b.add(h),h.setDisposable(e.subscribe(function(){a.onNext(c),b.remove(h),g()},a.onError.bind(a),function(){a.onNext(c),b.remove(h),g()}))},a.onError.bind(a),function(){f=!0,h.dispose(),g()}))};return c?h.setDisposable(c.subscribe(function(){i()},a.onError.bind(a),function(){i()})):i(),new v(h,b)})},m.timeoutWithSelector=function(a,b,c){1===arguments.length&&(b=a,a=q()),c||(c=r(new Error("Timeout")));var d=this;return new n(function(e){function f(a){function b(){return k===d}var d=k,f=new t;i.setDisposable(f),f.setDisposable(a.subscribe(function(){b()&&h.setDisposable(c.subscribe(e)),f.dispose()},function(a){b()&&e.onError(a)},function(){b()&&h.setDisposable(c.subscribe(e))}))}function g(){var a=!l;return a&&k++,a}var h=new u,i=new u,j=new t;h.setDisposable(j);var k=0,l=!1;return f(a),j.setDisposable(d.subscribe(function(a){if(g()){e.onNext(a);var c;try{c=b(a)}catch(d){return void e.onError(d)}f(B(c)?D(c):c)}},function(a){g()&&e.onError(a)},function(){g()&&e.onCompleted()})),new v(h,i)})},m.throttleWithSelector=function(a){var b=this;return new n(function(c){var d,e=!1,f=new u,g=0,h=b.subscribe(function(b){var h;try{h=a(b)}catch(i){return void c.onError(i)}B(h)&&(h=D(h)),e=!0,d=b,g++;var j=g,k=new t;f.setDisposable(k),k.setDisposable(h.subscribe(function(){e&&g===j&&c.onNext(d),e=!1,k.dispose()},c.onError.bind(c),function(){e&&g===j&&c.onNext(d),e=!1,k.dispose()}))},function(a){f.dispose(),c.onError(a),e=!1,g++},function(){f.dispose(),e&&c.onNext(d),c.onCompleted(),e=!1,g++});return new v(h,f)})},m.skipLastWithTime=function(a,b){C(b)||(b=s);var c=this;return new n(function(d){var e=[];return c.subscribe(function(c){var f=b.now();for(e.push({interval:f,value:c});e.length>0&&f-e[0].interval>=a;)d.onNext(e.shift().value)},d.onError.bind(d),function(){for(var c=b.now();e.length>0&&c-e[0].interval>=a;)d.onNext(e.shift().value);d.onCompleted()})})},m.takeLastWithTime=function(a,b){var c=this;return C(b)||(b=s),new n(function(d){var e=[];return c.subscribe(function(c){var d=b.now();for(e.push({interval:d,value:c});e.length>0&&d-e[0].interval>=a;)e.shift()},d.onError.bind(d),function(){for(var c=b.now();e.length>0;){var f=e.shift();c-f.interval<=a&&d.onNext(f.value)}d.onCompleted()})})},m.takeLastBufferWithTime=function(a,b){var c=this;return C(b)||(b=s),new n(function(d){var e=[];return c.subscribe(function(c){var d=b.now();for(e.push({interval:d,value:c});e.length>0&&d-e[0].interval>=a;)e.shift()},d.onError.bind(d),function(){for(var c=b.now(),f=[];e.length>0;){var g=e.shift();c-g.interval<=a&&f.push(g.value)}d.onNext(f),d.onCompleted()})})},m.takeWithTime=function(a,b){var c=this;return C(b)||(b=s),new n(function(d){return new v(b.scheduleWithRelative(a,d.onCompleted.bind(d)),c.subscribe(d))})},m.skipWithTime=function(a,b){var c=this;return C(b)||(b=s),new n(function(d){var e=!1;return new v(b.scheduleWithRelative(a,function(){e=!0}),c.subscribe(function(a){e&&d.onNext(a)},d.onError.bind(d),d.onCompleted.bind(d)))})},m.skipUntilWithTime=function(a,b){C(b)||(b=s);var c=this,d=a instanceof Date?"scheduleWithAbsolute":"scheduleWithRelative";return new n(function(e){var f=!1;return new v(b[d](a,function(){f=!0}),c.subscribe(function(a){f&&e.onNext(a)},e.onError.bind(e),e.onCompleted.bind(e)))})},m.takeUntilWithTime=function(a,b){C(b)||(b=s);var c=this,d=a instanceof Date?"scheduleWithAbsolute":"scheduleWithRelative";return new n(function(e){return new v(b[d](a,e.onCompleted.bind(e)),c.subscribe(e))})},c});