Bones/node_modules/rx/dist/rx.sorting.js

73 lines
2.6 KiB
JavaScript
Raw Normal View History

2017-05-17 13:45:25 -04:00
// Copyright (c) Microsoft Open Technologies, Inc. All rights reserved. See License.txt in the project root for license information.
;(function (factory) {
var objectTypes = {
'boolean': false,
'function': true,
'object': true,
'number': false,
'string': false,
'undefined': false
};
var root = (objectTypes[typeof window] && window) || this,
freeExports = objectTypes[typeof exports] && exports && !exports.nodeType && exports,
freeModule = objectTypes[typeof module] && module && !module.nodeType && module,
moduleExports = freeModule && freeModule.exports === freeExports && freeExports,
freeGlobal = objectTypes[typeof global] && global;
if (freeGlobal && (freeGlobal.global === freeGlobal || freeGlobal.window === freeGlobal)) {
root = freeGlobal;
}
// Because of build optimizers
if (typeof define === 'function' && define.amd) {
define(['rx'], function (Rx, exports) {
return factory(root, exports, Rx);
});
} else if (typeof module === 'object' && module && module.exports === freeExports) {
module.exports = factory(root, module.exports, require('./rx'));
} else {
root.Rx = factory(root, {}, root.Rx);
}
}.call(this, function (root, exp, Rx, undefined) {
var Observable = Rx.Observable,
observableProto = Observable.prototype,
AnonymousObservable = Rx.AnonymousObservable,
observableNever = Observable.never,
isEqual = Rx.internals.isEqual,
defaultSubComparer = Rx.helpers.defaultSubComparer;
/**
* jortSort checks if your inputs are sorted. Note that this is only for a sequence with an end.
* See http://jort.technology/ for full details.
* @returns {Observable} An observable which has a single value of true if sorted, else false.
*/
observableProto.jortSort = function () {
return this.jortSortUntil(observableNever());
};
/**
* jortSort checks if your inputs are sorted until another Observable sequence fires.
* See http://jort.technology/ for full details.
* @returns {Observable} An observable which has a single value of true if sorted, else false.
*/
observableProto.jortSortUntil = function (other) {
var source = this;
return new AnonymousObservable(function (observer) {
var arr = [];
return source.takeUntil(other).subscribe(
arr.push.bind(arr),
observer.onError.bind(observer),
function () {
var sorted = arr.slice(0).sort(defaultSubComparer);
observer.onNext(isEqual(arr, sorted));
observer.onCompleted();
});
}, source);
};
return Rx;
}));