{"version":3,"sources":["webpack:///webpack/bootstrap","webpack:///./node_modules/rxjs/Observable.js","webpack:///./node_modules/rxjs/util/root.js","webpack:///./node_modules/rxjs/Subscriber.js","webpack:///./Assets/common/utility.ts","webpack:///./node_modules/loadjs/dist/loadjs.umd.js","webpack:///./node_modules/rxjs/util/errorObject.js","webpack:///./node_modules/rxjs/util/subscribeToResult.js","webpack:///./node_modules/rxjs/OuterSubscriber.js","webpack:///./node_modules/rxjs/util/isFunction.js","webpack:///./node_modules/rxjs/util/tryCatch.js","webpack:///./node_modules/rxjs/symbol/observable.js","webpack:///./node_modules/rxjs/util/isScheduler.js","webpack:///./node_modules/rxjs/observable/ArrayObservable.js","webpack:///./node_modules/rxjs/observable/ScalarObservable.js","webpack:///./node_modules/rxjs/observable/EmptyObservable.js","webpack:///./node_modules/rxjs/symbol/iterator.js","webpack:///./node_modules/rxjs/operators/map.js","webpack:///external \"jQuery\"","webpack:///./Assets/program/js/assignment/abstract-autocomplete.ts","webpack:///./node_modules/rxjs/Subscription.js","webpack:///./node_modules/rxjs/util/isArray.js","webpack:///./node_modules/rxjs/util/isObject.js","webpack:///./node_modules/rxjs/Observer.js","webpack:///./node_modules/rxjs/symbol/rxSubscriber.js","webpack:///./node_modules/rxjs/observable/concat.js","webpack:///./node_modules/rxjs/observable/of.js","webpack:///./node_modules/rxjs/util/isArrayLike.js","webpack:///./node_modules/rxjs/util/isPromise.js","webpack:///./Assets/site.ts","webpack:///./Assets/abstracts/index.ts","webpack:///./Assets/abstracts/chart/index.ts","webpack:///./Assets/abstracts-report/index.ts","webpack:///./Assets/program/index.ts","webpack:///./Assets/program/js/internal-abstract.ts","webpack:///./Assets/program/js/assignment/index.ts","webpack:///(webpack)/buildin/global.js","webpack:///./node_modules/rxjs/util/toSubscriber.js","webpack:///./node_modules/rxjs/util/UnsubscriptionError.js","webpack:///./node_modules/rxjs/util/pipe.js","webpack:///./node_modules/rxjs/util/noop.js","webpack:///./node_modules/rxjs/add/observable/concat.js","webpack:///./node_modules/rxjs/observable/from.js","webpack:///./node_modules/rxjs/observable/FromObservable.js","webpack:///./node_modules/rxjs/observable/PromiseObservable.js","webpack:///./node_modules/rxjs/observable/IteratorObservable.js","webpack:///./node_modules/rxjs/observable/ArrayLikeObservable.js","webpack:///./node_modules/rxjs/operators/observeOn.js","webpack:///./node_modules/rxjs/Notification.js","webpack:///./node_modules/rxjs/operators/concatAll.js","webpack:///./node_modules/rxjs/operators/mergeAll.js","webpack:///./node_modules/rxjs/operators/mergeMap.js","webpack:///./node_modules/rxjs/InnerSubscriber.js","webpack:///./node_modules/rxjs/util/identity.js","webpack:///./node_modules/rxjs/add/observable/dom/ajax.js","webpack:///./node_modules/rxjs/observable/dom/ajax.js","webpack:///./node_modules/rxjs/observable/dom/AjaxObservable.js","webpack:///./node_modules/rxjs/add/observable/fromEvent.js","webpack:///./node_modules/rxjs/observable/fromEvent.js","webpack:///./node_modules/rxjs/observable/FromEventObservable.js","webpack:///./node_modules/rxjs/add/observable/of.js","webpack:///./node_modules/rxjs/add/operator/catch.js","webpack:///./node_modules/rxjs/operator/catch.js","webpack:///./node_modules/rxjs/operators/catchError.js","webpack:///./node_modules/rxjs/add/operator/filter.js","webpack:///./node_modules/rxjs/operator/filter.js","webpack:///./node_modules/rxjs/operators/filter.js","webpack:///./node_modules/rxjs/add/operator/distinct.js","webpack:///./node_modules/rxjs/operator/distinct.js","webpack:///./node_modules/rxjs/operators/distinct.js","webpack:///./node_modules/rxjs/util/Set.js","webpack:///./node_modules/rxjs/add/operator/map.js","webpack:///./node_modules/rxjs/operator/map.js","webpack:///./node_modules/rxjs/add/operator/pluck.js","webpack:///./node_modules/rxjs/operator/pluck.js","webpack:///./node_modules/rxjs/operators/pluck.js","webpack:///./node_modules/rxjs/add/operator/startWith.js","webpack:///./node_modules/rxjs/operator/startWith.js","webpack:///./node_modules/rxjs/operators/startWith.js","webpack:///./node_modules/rxjs/add/operator/switchMap.js","webpack:///./node_modules/rxjs/operator/switchMap.js","webpack:///./node_modules/rxjs/operators/switchMap.js","webpack:///./Assets/program/js/assignment/edit-time-slot-add-slot.ts","webpack:///./Assets/program/js/session.ts","webpack:///./Assets/common/index.ts","webpack:///./Assets/common/add-more.ts","webpack:///./Assets/common/open-in-closable-tab.ts","webpack:///./Assets/common/rich-editor.ts","webpack:///./Assets/common/select-dynamic-options.ts","webpack:///./Assets/common/show-depends-on-select.ts","webpack:///./Assets/common/show-depends-on-select-other.ts","webpack:///./Assets/common/show-depends-on-radio.ts","webpack:///./Assets/common/validation-summary.ts","webpack:///./Assets/common/clear-checkbox-in-group.ts","webpack:///./Assets/common/group-hide-extra.ts","webpack:///./Assets/common/gs-select.ts","webpack:///./Assets/common/gs-typeahead.ts","webpack:///./Assets/common/other-autoselect-clear.ts","webpack:///./Assets/common/checks-group-depends-on-radio.ts","webpack:///./Assets/common/drosTopicList.ts"],"names":["installedModules","__webpack_require__","moduleId","exports","module","i","l","modules","call","m","c","d","name","getter","o","Object","defineProperty","enumerable","get","r","Symbol","toStringTag","value","t","mode","__esModule","ns","create","key","bind","n","object","property","prototype","hasOwnProperty","p","s","root_1","toSubscriber_1","observable_1","pipe_1","Observable","subscribe","this","_isScalar","_subscribe","lift","operator","observable","source","observerOrNext","error","complete","sink","toSubscriber","add","syncErrorThrowable","_trySubscribe","syncErrorThrown","syncErrorValue","err","forEach","next","PromiseCtor","_this","root","Rx","config","Promise","Error","resolve","reject","subscription","unsubscribe","subscriber","pipe","operations","_i","arguments","length","pipeFromArray","toPromise","x","__window","window","__self","self","WorkerGlobalScope","_root","global","__extends","b","__","constructor","isFunction_1","Subscription_1","Observer_1","rxSubscriber_1","Subscriber","_super","destinationOrNext","isStopped","destination","empty","isTrustedSubscriber","trustedSubscriber","rxSubscriber","SafeSubscriber","_next","_error","_complete","closed","_unsubscribeAndRecycle","_parent","_parents","Subscription","_parentSubscriber","context","isFunction","_context","__tryOrSetError","__tryOrUnsub","wrappedComplete","fn","parent","_unsubscribe","obj","elem","eventName","eventInitDict","event","CustomEvent","document","createEvent","initEvent","dispatchEvent","classList","remove","devnull","bundleIdCache","bundleResultCache","bundleCallbackQueue","publish","bundleId","pathsNotFound","q","splice","executeCallbacks","args","depsNotFound","success","loadFile","path","callbackFn","numTries","isLegacyIECss","e","doc","async","maxTries","numRetries","beforeCallbackFn","before","pathStripped","replace","test","createElement","rel","href","relList","as","src","undefined","onload","onerror","onbeforeload","ev","result","type","sheet","cssText","code","defaultPrevented","head","appendChild","loadjs","paths","arg1","arg2","trim","loadFn","numWaiting","push","loadFiles","returnPromise","ready","deps","bundleIds","done","reset","isDefined","errorObject","isArrayLike_1","isPromise_1","isObject_1","Observable_1","iterator_1","InnerSubscriber_1","subscribeToResult","outerSubscriber","outerValue","outerIndex","InnerSubscriber","isArrayLike","len","isPromise","then","setTimeout","iterator","item","obs","TypeError","msg","isObject","OuterSubscriber","apply","notifyNext","innerValue","innerIndex","innerSub","notifyError","notifyComplete","tryCatchTarget","errorObject_1","tryCatcher","tryCatch","getSymbolObservable","$$observable","isScheduler","schedule","ScalarObservable_1","EmptyObservable_1","isScheduler_1","ArrayObservable","array","scheduler","of","pop","ScalarObservable","EmptyObservable","dispatch","state","index","count","arg","symbolIteratorPonyfill","Set_1","Set","Map_1","Map","keys","getOwnPropertyNames","$$iterator","Subscriber_1","map","project","thisArg","MapOperator","MapSubscriber","jQuery","placeHolderAbstract","id","firstName","lastName","score","programedInSession","presentationType","title","errorAbstract","abstractAutocompletes","getUrl","abstractDetailUrl","sessionId","addInputPipelineAllInput","inputs","querySelectorAll","input","addInputPipeline","addInputPipelineFromRow","rowElement","querySelector","inputElement","keyups","fromEvent","textStream","startWith","target","pluck","parentNode","filter","a","setHtml","switchMap","getAbstractSummary","data","absno","ajax","method","url","response","catch","errorContainerElem","parentElement","titleElem","removeAttribute","textContent","innerHTML","programAssigmentElems","programAssigmentElem","dataset","console","log","abstractAutocomplete","AbstractAutocomplete","isArray_1","tryCatch_1","UnsubscriptionError_1","_subscriptions","errors","hasErrors","UnsubscriptionError","flattenUnsubscriptionErrors","isArray","sub","concat","teardown","EMPTY","_addParent","tmp","subscriptions","subscriptionIndex","indexOf","reduce","errs","Array","for","$$rxSubscriber","of_1","from_1","concatAll_1","observables","from","concatAll","ArrayObservable_1","readyCalled","addEventListener","$","drawHelper","chartFunc","getElementById","chart","selectUrl","google","visualization","events","addListener","selectedItem","getSelection","row","dataTable","getValue","encodeURIComponent","open","draw","options","each","$this","dataReady","chartLibReady","drawCalled","drawFunc","charts","setOnLoadCallback","DataTable","addColumn","addRows","PieChart","drawPie","GeoChart","drawGeoChart","getJSON","jsonData","load","packages","callback","refresh","submit","click","preventDefault","newInput","append","parents","find","val","orderby","change","g","Function","nextOrObserver","toString","join","stack","message","noop_1","fns","prev","noop","concat_1","FromObservable_1","FromObservable","PromiseObservable_1","IteratorObservable_1","ArrayLikeObservable_1","observeOn_1","ish","PromiseObservable","IteratorObservable","ArrayLikeObservable","ObserveOnSubscriber","promise","dispatchNext","dispatchError","StringIterator","ArrayIterator","getIterator","hasError","return","str","idx","charAt","arr","isNaN","isFinite","valueAsNumber","sign","Math","floor","abs","maxSafeInteger","toLength","pow","arrayLike","Notification_1","observeOn","delay","ObserveOnOperator","notification","observe","scheduleMessage","ObserveOnMessage","Notification","createNext","createError","createComplete","kind","hasValue","observer","do","accept","toObservable","throw","undefinedValueNotification","completeNotification","mergeAll_1","mergeAll","mergeMap_1","identity_1","concurrent","Number","POSITIVE_INFINITY","mergeMap","identity","subscribeToResult_1","OuterSubscriber_1","resultSelector","MergeMapOperator","MergeMapSubscriber","hasCompleted","buffer","active","_tryNext","_innerSub","_notifyResultSelector","shift","ajax_1","AjaxObservable_1","AjaxObservable","map_1","getCORSRequest","XMLHttpRequest","XDomainRequest","ajaxGet","headers","ajaxPost","body","ajaxDelete","ajaxPut","ajaxPatch","mapResponse","ajaxGetJSON","responseType","urlOrRequest","request","createXHR","crossDomain","progId","progIds","ActiveXObject","getXMLHttpRequest","withCredentials","timeout","prop","AjaxSubscriber","post","delete","put","patch","FormData","serializeBody","send","xhr","AjaxResponse","_b","user","password","setupEvents","setHeaders","contentType","splitIndex","substring","JSON","stringify","setRequestHeader","progressSubscriber","xhrTimeout","_a","AjaxTimeoutError","ontimeout","upload","xhrProgress_1","xhrError_1","onprogress","AjaxError","xhrReadyStateChange","readyState","status_1","status","responseText","onreadystatechange","abort","originalEvent","parseXhrResponse","parse","responseXML","fromEvent_1","FromEventObservable_1","FromEventObservable","sourceObj","selector","setupSubscription","handler","isNodeList","isHTMLCollection","removeEventListener","isEventTarget","source_1","on","off","isJQueryStyleEventEmitter","source_2","removeListener","isNodeStyleEventEmitter","source_3","catch_1","_catch","catchError_1","catchError","CatchOperator","caught","CatchSubscriber","err2","filter_1","predicate","FilterOperator","FilterSubscriber","distinct_1","distinct","keySelector","flushes","DistinctOperator","DistinctSubscriber","values","clear","_useKeySelector","_finalizeNext","has","minimalSetImpl","MinimalSet","_values","configurable","pluck_1","properties","props","currentProp","plucker","startWith_1","switchMap_1","SwitchMapOperator","SwitchMapSubscriber","innerSubscription","_tryNotifyNext","tableElem","detail","highlightedElem","scrollIntoView","hightlightIdElem","form","highlightRowOnMessage","opener","parentWindow","focus","postMessage","close","closeButtonForViewSession","baseUrl","GS_BASE_URL","targets","targetElem","toggleName","otherAutoselectClear","checkboxGroupDependsOnRadio","drosTopicList","containerElem","tagName","toUpperCase","tBodies","max","childElementCount","updateInputName","parts","exec","newName","clearValue","style","display","newRowElem","lastElementChild","cloneNode","inputElems","selectElems","textareaElems","autoIncreaseElem","currentValue","nextValue","emitEvent","SetupButton","currentTarget","queryString","currentElem","nodeName","fields","formElements","elements","HTMLInputElement","checked","Add","HTMLButtonElement","HTMLSelectElement","j","option","selected","HTMLTextAreaElement","serialize","action","formAction","SetupA","baseConfig","customConfig","maxCharCount","wordcount","showParagraphs","showWordCount","showCharCount","countSpacesAsChars","countHTML","CKEDITOR","selectName","getElementsByName","selectElem","globalVauleName","init","hasChildNodes","removeChild","lastChild","optionValue","opt","selectedIndex","trigger","showValue","showRegexText","hideValue","hideRegexText","gsNameSubSelect","gsNameSkip","conditions","matchFn","negative","RegExp","includes","selectedOptions","matched","show","hide","toLowerCase","endsWith","radioName","radioElems","radioElem","currValElem","alinks","alinkElem","targetName","targetElems","offset","getClientRects","scrollTo","top","behavior","warn","clearName","customName","customTextName","clearElem","customElem","customTextElem","allElems","selfElem","checkRowHasValue","textElems","elemi","minStr","min","parseInt","rows","children","rowi","firstHidden","className","firstHideElem","multiple","firstOption","selectpicker","dataName","typeahead","jsonUrl","fail","jsonBackupUrl","otherName","otherElems","otherElem","unCheckAll","elems","childElem","shouldCheckElem","desired","setup","width","clientWidth","widthString","halfWidth","halfWidthString","quadWidth","quadWidthString","child"],"mappings":"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","file":"js/site.js","sourcesContent":[" \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"/\";\n\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 29);\n","\"use strict\";\nvar root_1 = require('./util/root');\nvar toSubscriber_1 = require('./util/toSubscriber');\nvar observable_1 = require('./symbol/observable');\nvar pipe_1 = require('./util/pipe');\n/**\n * A representation of any set of values over any amount of time. This is the most basic building block\n * of RxJS.\n *\n * @class Observable\n */\nvar Observable = (function () {\n /**\n * @constructor\n * @param {Function} subscribe the function that is called when the Observable is\n * initially subscribed to. This function is given a Subscriber, to which new values\n * can be `next`ed, or an `error` method can be called to raise an error, or\n * `complete` can be called to notify of a successful completion.\n */\n function Observable(subscribe) {\n this._isScalar = false;\n if (subscribe) {\n this._subscribe = subscribe;\n }\n }\n /**\n * Creates a new Observable, with this Observable as the source, and the passed\n * operator defined as the new observable's operator.\n * @method lift\n * @param {Operator} operator the operator defining the operation to take on the observable\n * @return {Observable} a new observable with the Operator applied\n */\n Observable.prototype.lift = function (operator) {\n var observable = new Observable();\n observable.source = this;\n observable.operator = operator;\n return observable;\n };\n /**\n * Invokes an execution of an Observable and registers Observer handlers for notifications it will emit.\n *\n * Use it when you have all these Observables, but still nothing is happening.\n *\n * `subscribe` is not a regular operator, but a method that calls Observable's internal `subscribe` function. It\n * might be for example a function that you passed to a {@link create} static factory, but most of the time it is\n * a library implementation, which defines what and when will be emitted by an Observable. This means that calling\n * `subscribe` is actually the moment when Observable starts its work, not when it is created, as it is often\n * thought.\n *\n * Apart from starting the execution of an Observable, this method allows you to listen for values\n * that an Observable emits, as well as for when it completes or errors. You can achieve this in two\n * following ways.\n *\n * The first way is creating an object that implements {@link Observer} interface. It should have methods\n * defined by that interface, but note that it should be just a regular JavaScript object, which you can create\n * yourself in any way you want (ES6 class, classic function constructor, object literal etc.). In particular do\n * not attempt to use any RxJS implementation details to create Observers - you don't need them. Remember also\n * that your object does not have to implement all methods. If you find yourself creating a method that doesn't\n * do anything, you can simply omit it. Note however, that if `error` method is not provided, all errors will\n * be left uncaught.\n *\n * The second way is to give up on Observer object altogether and simply provide callback functions in place of its methods.\n * This means you can provide three functions as arguments to `subscribe`, where first function is equivalent\n * of a `next` method, second of an `error` method and third of a `complete` method. Just as in case of Observer,\n * if you do not need to listen for something, you can omit a function, preferably by passing `undefined` or `null`,\n * since `subscribe` recognizes these functions by where they were placed in function call. When it comes\n * to `error` function, just as before, if not provided, errors emitted by an Observable will be thrown.\n *\n * Whatever style of calling `subscribe` you use, in both cases it returns a Subscription object.\n * This object allows you to call `unsubscribe` on it, which in turn will stop work that an Observable does and will clean\n * up all resources that an Observable used. Note that cancelling a subscription will not call `complete` callback\n * provided to `subscribe` function, which is reserved for a regular completion signal that comes from an Observable.\n *\n * Remember that callbacks provided to `subscribe` are not guaranteed to be called asynchronously.\n * It is an Observable itself that decides when these functions will be called. For example {@link of}\n * by default emits all its values synchronously. Always check documentation for how given Observable\n * will behave when subscribed and if its default behavior can be modified with a {@link Scheduler}.\n *\n * @example Subscribe with an Observer\n * const sumObserver = {\n * sum: 0,\n * next(value) {\n * console.log('Adding: ' + value);\n * this.sum = this.sum + value;\n * },\n * error() { // We actually could just remove this method,\n * }, // since we do not really care about errors right now.\n * complete() {\n * console.log('Sum equals: ' + this.sum);\n * }\n * };\n *\n * Rx.Observable.of(1, 2, 3) // Synchronously emits 1, 2, 3 and then completes.\n * .subscribe(sumObserver);\n *\n * // Logs:\n * // \"Adding: 1\"\n * // \"Adding: 2\"\n * // \"Adding: 3\"\n * // \"Sum equals: 6\"\n *\n *\n * @example Subscribe with functions\n * let sum = 0;\n *\n * Rx.Observable.of(1, 2, 3)\n * .subscribe(\n * function(value) {\n * console.log('Adding: ' + value);\n * sum = sum + value;\n * },\n * undefined,\n * function() {\n * console.log('Sum equals: ' + sum);\n * }\n * );\n *\n * // Logs:\n * // \"Adding: 1\"\n * // \"Adding: 2\"\n * // \"Adding: 3\"\n * // \"Sum equals: 6\"\n *\n *\n * @example Cancel a subscription\n * const subscription = Rx.Observable.interval(1000).subscribe(\n * num => console.log(num),\n * undefined,\n * () => console.log('completed!') // Will not be called, even\n * ); // when cancelling subscription\n *\n *\n * setTimeout(() => {\n * subscription.unsubscribe();\n * console.log('unsubscribed!');\n * }, 2500);\n *\n * // Logs:\n * // 0 after 1s\n * // 1 after 2s\n * // \"unsubscribed!\" after 2.5s\n *\n *\n * @param {Observer|Function} observerOrNext (optional) Either an observer with methods to be called,\n * or the first of three possible handlers, which is the handler for each value emitted from the subscribed\n * Observable.\n * @param {Function} error (optional) A handler for a terminal event resulting from an error. If no error handler is provided,\n * the error will be thrown as unhandled.\n * @param {Function} complete (optional) A handler for a terminal event resulting from successful completion.\n * @return {ISubscription} a subscription reference to the registered handlers\n * @method subscribe\n */\n Observable.prototype.subscribe = function (observerOrNext, error, complete) {\n var operator = this.operator;\n var sink = toSubscriber_1.toSubscriber(observerOrNext, error, complete);\n if (operator) {\n operator.call(sink, this.source);\n }\n else {\n sink.add(this.source || !sink.syncErrorThrowable ? this._subscribe(sink) : this._trySubscribe(sink));\n }\n if (sink.syncErrorThrowable) {\n sink.syncErrorThrowable = false;\n if (sink.syncErrorThrown) {\n throw sink.syncErrorValue;\n }\n }\n return sink;\n };\n Observable.prototype._trySubscribe = function (sink) {\n try {\n return this._subscribe(sink);\n }\n catch (err) {\n sink.syncErrorThrown = true;\n sink.syncErrorValue = err;\n sink.error(err);\n }\n };\n /**\n * @method forEach\n * @param {Function} next a handler for each value emitted by the observable\n * @param {PromiseConstructor} [PromiseCtor] a constructor function used to instantiate the Promise\n * @return {Promise} a promise that either resolves on observable completion or\n * rejects with the handled error\n */\n Observable.prototype.forEach = function (next, PromiseCtor) {\n var _this = this;\n if (!PromiseCtor) {\n if (root_1.root.Rx && root_1.root.Rx.config && root_1.root.Rx.config.Promise) {\n PromiseCtor = root_1.root.Rx.config.Promise;\n }\n else if (root_1.root.Promise) {\n PromiseCtor = root_1.root.Promise;\n }\n }\n if (!PromiseCtor) {\n throw new Error('no Promise impl found');\n }\n return new PromiseCtor(function (resolve, reject) {\n // Must be declared in a separate statement to avoid a RefernceError when\n // accessing subscription below in the closure due to Temporal Dead Zone.\n var subscription;\n subscription = _this.subscribe(function (value) {\n if (subscription) {\n // if there is a subscription, then we can surmise\n // the next handling is asynchronous. Any errors thrown\n // need to be rejected explicitly and unsubscribe must be\n // called manually\n try {\n next(value);\n }\n catch (err) {\n reject(err);\n subscription.unsubscribe();\n }\n }\n else {\n // if there is NO subscription, then we're getting a nexted\n // value synchronously during subscription. We can just call it.\n // If it errors, Observable's `subscribe` will ensure the\n // unsubscription logic is called, then synchronously rethrow the error.\n // After that, Promise will trap the error and send it\n // down the rejection path.\n next(value);\n }\n }, reject, resolve);\n });\n };\n /** @deprecated internal use only */ Observable.prototype._subscribe = function (subscriber) {\n return this.source.subscribe(subscriber);\n };\n /**\n * An interop point defined by the es7-observable spec https://github.com/zenparsing/es-observable\n * @method Symbol.observable\n * @return {Observable} this instance of the observable\n */\n Observable.prototype[observable_1.observable] = function () {\n return this;\n };\n /* tslint:enable:max-line-length */\n /**\n * Used to stitch together functional operators into a chain.\n * @method pipe\n * @return {Observable} the Observable result of all of the operators having\n * been called in the order they were passed in.\n *\n * @example\n *\n * import { map, filter, scan } from 'rxjs/operators';\n *\n * Rx.Observable.interval(1000)\n * .pipe(\n * filter(x => x % 2 === 0),\n * map(x => x + x),\n * scan((acc, x) => acc + x)\n * )\n * .subscribe(x => console.log(x))\n */\n Observable.prototype.pipe = function () {\n var operations = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n operations[_i - 0] = arguments[_i];\n }\n if (operations.length === 0) {\n return this;\n }\n return pipe_1.pipeFromArray(operations)(this);\n };\n /* tslint:enable:max-line-length */\n Observable.prototype.toPromise = function (PromiseCtor) {\n var _this = this;\n if (!PromiseCtor) {\n if (root_1.root.Rx && root_1.root.Rx.config && root_1.root.Rx.config.Promise) {\n PromiseCtor = root_1.root.Rx.config.Promise;\n }\n else if (root_1.root.Promise) {\n PromiseCtor = root_1.root.Promise;\n }\n }\n if (!PromiseCtor) {\n throw new Error('no Promise impl found');\n }\n return new PromiseCtor(function (resolve, reject) {\n var value;\n _this.subscribe(function (x) { return value = x; }, function (err) { return reject(err); }, function () { return resolve(value); });\n });\n };\n // HACK: Since TypeScript inherits static properties too, we have to\n // fight against TypeScript here so Subject can have a different static create signature\n /**\n * Creates a new cold Observable by calling the Observable constructor\n * @static true\n * @owner Observable\n * @method create\n * @param {Function} subscribe? the subscriber function to be passed to the Observable constructor\n * @return {Observable} a new cold observable\n */\n Observable.create = function (subscribe) {\n return new Observable(subscribe);\n };\n return Observable;\n}());\nexports.Observable = Observable;\n//# sourceMappingURL=Observable.js.map","\"use strict\";\n// CommonJS / Node have global context exposed as \"global\" variable.\n// We don't want to include the whole node.d.ts this this compilation unit so we'll just fake\n// the global \"global\" var for now.\nvar __window = typeof window !== 'undefined' && window;\nvar __self = typeof self !== 'undefined' && typeof WorkerGlobalScope !== 'undefined' &&\n self instanceof WorkerGlobalScope && self;\nvar __global = typeof global !== 'undefined' && global;\nvar _root = __window || __global || __self;\nexports.root = _root;\n// Workaround Closure Compiler restriction: The body of a goog.module cannot use throw.\n// This is needed when used with angular/tsickle which inserts a goog.module statement.\n// Wrap in IIFE\n(function () {\n if (!_root) {\n throw new Error('RxJS could not find any global context (window, self, global)');\n }\n})();\n//# sourceMappingURL=root.js.map","\"use strict\";\nvar __extends = (this && this.__extends) || function (d, b) {\n for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n};\nvar isFunction_1 = require('./util/isFunction');\nvar Subscription_1 = require('./Subscription');\nvar Observer_1 = require('./Observer');\nvar rxSubscriber_1 = require('./symbol/rxSubscriber');\n/**\n * Implements the {@link Observer} interface and extends the\n * {@link Subscription} class. While the {@link Observer} is the public API for\n * consuming the values of an {@link Observable}, all Observers get converted to\n * a Subscriber, in order to provide Subscription-like capabilities such as\n * `unsubscribe`. Subscriber is a common type in RxJS, and crucial for\n * implementing operators, but it is rarely used as a public API.\n *\n * @class Subscriber\n */\nvar Subscriber = (function (_super) {\n __extends(Subscriber, _super);\n /**\n * @param {Observer|function(value: T): void} [destinationOrNext] A partially\n * defined Observer or a `next` callback function.\n * @param {function(e: ?any): void} [error] The `error` callback of an\n * Observer.\n * @param {function(): void} [complete] The `complete` callback of an\n * Observer.\n */\n function Subscriber(destinationOrNext, error, complete) {\n _super.call(this);\n this.syncErrorValue = null;\n this.syncErrorThrown = false;\n this.syncErrorThrowable = false;\n this.isStopped = false;\n switch (arguments.length) {\n case 0:\n this.destination = Observer_1.empty;\n break;\n case 1:\n if (!destinationOrNext) {\n this.destination = Observer_1.empty;\n break;\n }\n if (typeof destinationOrNext === 'object') {\n // HACK(benlesh): To resolve an issue where Node users may have multiple\n // copies of rxjs in their node_modules directory.\n if (isTrustedSubscriber(destinationOrNext)) {\n var trustedSubscriber = destinationOrNext[rxSubscriber_1.rxSubscriber]();\n this.syncErrorThrowable = trustedSubscriber.syncErrorThrowable;\n this.destination = trustedSubscriber;\n trustedSubscriber.add(this);\n }\n else {\n this.syncErrorThrowable = true;\n this.destination = new SafeSubscriber(this, destinationOrNext);\n }\n break;\n }\n default:\n this.syncErrorThrowable = true;\n this.destination = new SafeSubscriber(this, destinationOrNext, error, complete);\n break;\n }\n }\n Subscriber.prototype[rxSubscriber_1.rxSubscriber] = function () { return this; };\n /**\n * A static factory for a Subscriber, given a (potentially partial) definition\n * of an Observer.\n * @param {function(x: ?T): void} [next] The `next` callback of an Observer.\n * @param {function(e: ?any): void} [error] The `error` callback of an\n * Observer.\n * @param {function(): void} [complete] The `complete` callback of an\n * Observer.\n * @return {Subscriber} A Subscriber wrapping the (partially defined)\n * Observer represented by the given arguments.\n */\n Subscriber.create = function (next, error, complete) {\n var subscriber = new Subscriber(next, error, complete);\n subscriber.syncErrorThrowable = false;\n return subscriber;\n };\n /**\n * The {@link Observer} callback to receive notifications of type `next` from\n * the Observable, with a value. The Observable may call this method 0 or more\n * times.\n * @param {T} [value] The `next` value.\n * @return {void}\n */\n Subscriber.prototype.next = function (value) {\n if (!this.isStopped) {\n this._next(value);\n }\n };\n /**\n * The {@link Observer} callback to receive notifications of type `error` from\n * the Observable, with an attached {@link Error}. Notifies the Observer that\n * the Observable has experienced an error condition.\n * @param {any} [err] The `error` exception.\n * @return {void}\n */\n Subscriber.prototype.error = function (err) {\n if (!this.isStopped) {\n this.isStopped = true;\n this._error(err);\n }\n };\n /**\n * The {@link Observer} callback to receive a valueless notification of type\n * `complete` from the Observable. Notifies the Observer that the Observable\n * has finished sending push-based notifications.\n * @return {void}\n */\n Subscriber.prototype.complete = function () {\n if (!this.isStopped) {\n this.isStopped = true;\n this._complete();\n }\n };\n Subscriber.prototype.unsubscribe = function () {\n if (this.closed) {\n return;\n }\n this.isStopped = true;\n _super.prototype.unsubscribe.call(this);\n };\n Subscriber.prototype._next = function (value) {\n this.destination.next(value);\n };\n Subscriber.prototype._error = function (err) {\n this.destination.error(err);\n this.unsubscribe();\n };\n Subscriber.prototype._complete = function () {\n this.destination.complete();\n this.unsubscribe();\n };\n /** @deprecated internal use only */ Subscriber.prototype._unsubscribeAndRecycle = function () {\n var _a = this, _parent = _a._parent, _parents = _a._parents;\n this._parent = null;\n this._parents = null;\n this.unsubscribe();\n this.closed = false;\n this.isStopped = false;\n this._parent = _parent;\n this._parents = _parents;\n return this;\n };\n return Subscriber;\n}(Subscription_1.Subscription));\nexports.Subscriber = Subscriber;\n/**\n * We need this JSDoc comment for affecting ESDoc.\n * @ignore\n * @extends {Ignored}\n */\nvar SafeSubscriber = (function (_super) {\n __extends(SafeSubscriber, _super);\n function SafeSubscriber(_parentSubscriber, observerOrNext, error, complete) {\n _super.call(this);\n this._parentSubscriber = _parentSubscriber;\n var next;\n var context = this;\n if (isFunction_1.isFunction(observerOrNext)) {\n next = observerOrNext;\n }\n else if (observerOrNext) {\n next = observerOrNext.next;\n error = observerOrNext.error;\n complete = observerOrNext.complete;\n if (observerOrNext !== Observer_1.empty) {\n context = Object.create(observerOrNext);\n if (isFunction_1.isFunction(context.unsubscribe)) {\n this.add(context.unsubscribe.bind(context));\n }\n context.unsubscribe = this.unsubscribe.bind(this);\n }\n }\n this._context = context;\n this._next = next;\n this._error = error;\n this._complete = complete;\n }\n SafeSubscriber.prototype.next = function (value) {\n if (!this.isStopped && this._next) {\n var _parentSubscriber = this._parentSubscriber;\n if (!_parentSubscriber.syncErrorThrowable) {\n this.__tryOrUnsub(this._next, value);\n }\n else if (this.__tryOrSetError(_parentSubscriber, this._next, value)) {\n this.unsubscribe();\n }\n }\n };\n SafeSubscriber.prototype.error = function (err) {\n if (!this.isStopped) {\n var _parentSubscriber = this._parentSubscriber;\n if (this._error) {\n if (!_parentSubscriber.syncErrorThrowable) {\n this.__tryOrUnsub(this._error, err);\n this.unsubscribe();\n }\n else {\n this.__tryOrSetError(_parentSubscriber, this._error, err);\n this.unsubscribe();\n }\n }\n else if (!_parentSubscriber.syncErrorThrowable) {\n this.unsubscribe();\n throw err;\n }\n else {\n _parentSubscriber.syncErrorValue = err;\n _parentSubscriber.syncErrorThrown = true;\n this.unsubscribe();\n }\n }\n };\n SafeSubscriber.prototype.complete = function () {\n var _this = this;\n if (!this.isStopped) {\n var _parentSubscriber = this._parentSubscriber;\n if (this._complete) {\n var wrappedComplete = function () { return _this._complete.call(_this._context); };\n if (!_parentSubscriber.syncErrorThrowable) {\n this.__tryOrUnsub(wrappedComplete);\n this.unsubscribe();\n }\n else {\n this.__tryOrSetError(_parentSubscriber, wrappedComplete);\n this.unsubscribe();\n }\n }\n else {\n this.unsubscribe();\n }\n }\n };\n SafeSubscriber.prototype.__tryOrUnsub = function (fn, value) {\n try {\n fn.call(this._context, value);\n }\n catch (err) {\n this.unsubscribe();\n throw err;\n }\n };\n SafeSubscriber.prototype.__tryOrSetError = function (parent, fn, value) {\n try {\n fn.call(this._context, value);\n }\n catch (err) {\n parent.syncErrorValue = err;\n parent.syncErrorThrown = true;\n return true;\n }\n return false;\n };\n /** @deprecated internal use only */ SafeSubscriber.prototype._unsubscribe = function () {\n var _parentSubscriber = this._parentSubscriber;\n this._context = null;\n this._parentSubscriber = null;\n _parentSubscriber.unsubscribe();\n };\n return SafeSubscriber;\n}(Subscriber));\nfunction isTrustedSubscriber(obj) {\n return obj instanceof Subscriber || ('syncErrorThrowable' in obj && obj[rxSubscriber_1.rxSubscriber]);\n}\n//# sourceMappingURL=Subscriber.js.map","export function trigger(elem: HTMLElement, eventName: string, eventInitDict?:any ) {\r\n let event = null;\r\n try {\r\n event = new CustomEvent(eventName, eventInitDict);\r\n }\r\n catch (error) {\r\n event = document.createEvent(\"Event\");\r\n let doesnt_bubble = false;\r\n let isnt_cancelable = false;\r\n event.initEvent(eventName, doesnt_bubble, isnt_cancelable);\r\n }\r\n elem.dispatchEvent(event);\r\n}\r\n\r\nexport function hide(elem: HTMLElement) {\r\n elem.classList.add('gs-hide');\r\n}\r\n\r\nexport function show(elem: HTMLElement) {\r\n elem.classList.remove('gs-hide');\r\n}","(function(root, factory) {\n if (typeof define === 'function' && define.amd) {\n define([], factory);\n } else if (typeof exports === 'object') {\n module.exports = factory();\n } else {\n root.loadjs = factory();\n }\n}(this, function() {\n/**\n * Global dependencies.\n * @global {Object} document - DOM\n */\n\nvar devnull = function() {},\n bundleIdCache = {},\n bundleResultCache = {},\n bundleCallbackQueue = {};\n\n\n/**\n * Subscribe to bundle load event.\n * @param {string[]} bundleIds - Bundle ids\n * @param {Function} callbackFn - The callback function\n */\nfunction subscribe(bundleIds, callbackFn) {\n // listify\n bundleIds = bundleIds.push ? bundleIds : [bundleIds];\n\n var depsNotFound = [],\n i = bundleIds.length,\n numWaiting = i,\n fn,\n bundleId,\n r,\n q;\n\n // define callback function\n fn = function (bundleId, pathsNotFound) {\n if (pathsNotFound.length) depsNotFound.push(bundleId);\n\n numWaiting--;\n if (!numWaiting) callbackFn(depsNotFound);\n };\n\n // register callback\n while (i--) {\n bundleId = bundleIds[i];\n\n // execute callback if in result cache\n r = bundleResultCache[bundleId];\n if (r) {\n fn(bundleId, r);\n continue;\n }\n\n // add to callback queue\n q = bundleCallbackQueue[bundleId] = bundleCallbackQueue[bundleId] || [];\n q.push(fn);\n }\n}\n\n\n/**\n * Publish bundle load event.\n * @param {string} bundleId - Bundle id\n * @param {string[]} pathsNotFound - List of files not found\n */\nfunction publish(bundleId, pathsNotFound) {\n // exit if id isn't defined\n if (!bundleId) return;\n\n var q = bundleCallbackQueue[bundleId];\n\n // cache result\n bundleResultCache[bundleId] = pathsNotFound;\n\n // exit if queue is empty\n if (!q) return;\n\n // empty callback queue\n while (q.length) {\n q[0](bundleId, pathsNotFound);\n q.splice(0, 1);\n }\n}\n\n\n/**\n * Execute callbacks.\n * @param {Object or Function} args - The callback args\n * @param {string[]} depsNotFound - List of dependencies not found\n */\nfunction executeCallbacks(args, depsNotFound) {\n // accept function as argument\n if (args.call) args = {success: args};\n\n // success and error callbacks\n if (depsNotFound.length) (args.error || devnull)(depsNotFound);\n else (args.success || devnull)(args);\n}\n\n\n/**\n * Load individual file.\n * @param {string} path - The file path\n * @param {Function} callbackFn - The callback function\n */\nfunction loadFile(path, callbackFn, args, numTries) {\n var doc = document,\n async = args.async,\n maxTries = (args.numRetries || 0) + 1,\n beforeCallbackFn = args.before || devnull,\n pathStripped = path.replace(/^(css|img)!/, ''),\n isLegacyIECss,\n e;\n\n numTries = numTries || 0;\n\n if (/(^css!|\\.css$)/.test(path)) {\n // css\n e = doc.createElement('link');\n e.rel = 'stylesheet';\n e.href = pathStripped;\n\n // tag IE9+\n isLegacyIECss = 'hideFocus' in e;\n\n // use preload in IE Edge (to detect load errors)\n if (isLegacyIECss && e.relList) {\n isLegacyIECss = 0;\n e.rel = 'preload';\n e.as = 'style';\n }\n } else if (/(^img!|\\.(png|gif|jpg|svg)$)/.test(path)) {\n // image\n e = doc.createElement('img');\n e.src = pathStripped; \n } else {\n // javascript\n e = doc.createElement('script');\n e.src = path;\n e.async = async === undefined ? true : async;\n }\n\n e.onload = e.onerror = e.onbeforeload = function (ev) {\n var result = ev.type[0];\n\n // treat empty stylesheets as failures to get around lack of onerror\n // support in IE9-11\n if (isLegacyIECss) {\n try {\n if (!e.sheet.cssText.length) result = 'e';\n } catch (x) {\n // sheets objects created from load errors don't allow access to\n // `cssText` (unless error is Code:18 SecurityError)\n if (x.code != 18) result = 'e';\n }\n }\n\n // handle retries in case of load failure\n if (result == 'e') {\n // increment counter\n numTries += 1;\n\n // exit function and try again\n if (numTries < maxTries) {\n return loadFile(path, callbackFn, args, numTries);\n }\n } else if (e.rel == 'preload' && e.as == 'style') {\n // activate preloaded stylesheets\n return e.rel = 'stylesheet'; // jshint ignore:line\n }\n \n // execute callback\n callbackFn(path, result, ev.defaultPrevented);\n };\n\n // add to document (unless callback returns `false`)\n if (beforeCallbackFn(path, e) !== false) doc.head.appendChild(e);\n}\n\n\n/**\n * Load multiple files.\n * @param {string[]} paths - The file paths\n * @param {Function} callbackFn - The callback function\n */\nfunction loadFiles(paths, callbackFn, args) {\n // listify paths\n paths = paths.push ? paths : [paths];\n\n var numWaiting = paths.length,\n x = numWaiting,\n pathsNotFound = [],\n fn,\n i;\n\n // define callback function\n fn = function(path, result, defaultPrevented) {\n // handle error\n if (result == 'e') pathsNotFound.push(path);\n\n // handle beforeload event. If defaultPrevented then that means the load\n // will be blocked (ex. Ghostery/ABP on Safari)\n if (result == 'b') {\n if (defaultPrevented) pathsNotFound.push(path);\n else return;\n }\n\n numWaiting--;\n if (!numWaiting) callbackFn(pathsNotFound);\n };\n\n // load scripts\n for (i=0; i < x; i++) loadFile(paths[i], fn, args);\n}\n\n\n/**\n * Initiate script load and register bundle.\n * @param {(string|string[])} paths - The file paths\n * @param {(string|Function|Object)} [arg1] - The (1) bundleId or (2) success\n * callback or (3) object literal with success/error arguments, numRetries,\n * etc.\n * @param {(Function|Object)} [arg2] - The (1) success callback or (2) object\n * literal with success/error arguments, numRetries, etc.\n */\nfunction loadjs(paths, arg1, arg2) {\n var bundleId,\n args;\n\n // bundleId (if string)\n if (arg1 && arg1.trim) bundleId = arg1;\n\n // args (default is {})\n args = (bundleId ? arg2 : arg1) || {};\n\n // throw error if bundle is already defined\n if (bundleId) {\n if (bundleId in bundleIdCache) {\n throw \"LoadJS\";\n } else {\n bundleIdCache[bundleId] = true;\n }\n }\n\n function loadFn(resolve, reject) {\n loadFiles(paths, function (pathsNotFound) {\n // execute callbacks\n executeCallbacks(args, pathsNotFound);\n \n // resolve Promise\n if (resolve) {\n executeCallbacks({success: resolve, error: reject}, pathsNotFound);\n }\n\n // publish bundle load event\n publish(bundleId, pathsNotFound);\n }, args);\n }\n \n if (args.returnPromise) return new Promise(loadFn);\n else loadFn();\n}\n\n\n/**\n * Execute callbacks when dependencies have been satisfied.\n * @param {(string|string[])} deps - List of bundle ids\n * @param {Object} args - success/error arguments\n */\nloadjs.ready = function ready(deps, args) {\n // subscribe to bundle load event\n subscribe(deps, function (depsNotFound) {\n // execute callbacks\n executeCallbacks(args, depsNotFound);\n });\n\n return loadjs;\n};\n\n\n/**\n * Manually satisfy bundle dependencies.\n * @param {string} bundleId - The bundle id\n */\nloadjs.done = function done(bundleId) {\n publish(bundleId, []);\n};\n\n\n/**\n * Reset loadjs dependencies statuses\n */\nloadjs.reset = function reset() {\n bundleIdCache = {};\n bundleResultCache = {};\n bundleCallbackQueue = {};\n};\n\n\n/**\n * Determine if bundle has already been defined\n * @param String} bundleId - The bundle id\n */\nloadjs.isDefined = function isDefined(bundleId) {\n return bundleId in bundleIdCache;\n};\n\n\n// export\nreturn loadjs;\n\n}));\n","\"use strict\";\n// typeof any so that it we don't have to cast when comparing a result to the error object\nexports.errorObject = { e: {} };\n//# sourceMappingURL=errorObject.js.map","\"use strict\";\nvar root_1 = require('./root');\nvar isArrayLike_1 = require('./isArrayLike');\nvar isPromise_1 = require('./isPromise');\nvar isObject_1 = require('./isObject');\nvar Observable_1 = require('../Observable');\nvar iterator_1 = require('../symbol/iterator');\nvar InnerSubscriber_1 = require('../InnerSubscriber');\nvar observable_1 = require('../symbol/observable');\nfunction subscribeToResult(outerSubscriber, result, outerValue, outerIndex) {\n var destination = new InnerSubscriber_1.InnerSubscriber(outerSubscriber, outerValue, outerIndex);\n if (destination.closed) {\n return null;\n }\n if (result instanceof Observable_1.Observable) {\n if (result._isScalar) {\n destination.next(result.value);\n destination.complete();\n return null;\n }\n else {\n destination.syncErrorThrowable = true;\n return result.subscribe(destination);\n }\n }\n else if (isArrayLike_1.isArrayLike(result)) {\n for (var i = 0, len = result.length; i < len && !destination.closed; i++) {\n destination.next(result[i]);\n }\n if (!destination.closed) {\n destination.complete();\n }\n }\n else if (isPromise_1.isPromise(result)) {\n result.then(function (value) {\n if (!destination.closed) {\n destination.next(value);\n destination.complete();\n }\n }, function (err) { return destination.error(err); })\n .then(null, function (err) {\n // Escaping the Promise trap: globally throw unhandled errors\n root_1.root.setTimeout(function () { throw err; });\n });\n return destination;\n }\n else if (result && typeof result[iterator_1.iterator] === 'function') {\n var iterator = result[iterator_1.iterator]();\n do {\n var item = iterator.next();\n if (item.done) {\n destination.complete();\n break;\n }\n destination.next(item.value);\n if (destination.closed) {\n break;\n }\n } while (true);\n }\n else if (result && typeof result[observable_1.observable] === 'function') {\n var obs = result[observable_1.observable]();\n if (typeof obs.subscribe !== 'function') {\n destination.error(new TypeError('Provided object does not correctly implement Symbol.observable'));\n }\n else {\n return obs.subscribe(new InnerSubscriber_1.InnerSubscriber(outerSubscriber, outerValue, outerIndex));\n }\n }\n else {\n var value = isObject_1.isObject(result) ? 'an invalid object' : \"'\" + result + \"'\";\n var msg = (\"You provided \" + value + \" where a stream was expected.\")\n + ' You can provide an Observable, Promise, Array, or Iterable.';\n destination.error(new TypeError(msg));\n }\n return null;\n}\nexports.subscribeToResult = subscribeToResult;\n//# sourceMappingURL=subscribeToResult.js.map","\"use strict\";\nvar __extends = (this && this.__extends) || function (d, b) {\n for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n};\nvar Subscriber_1 = require('./Subscriber');\n/**\n * We need this JSDoc comment for affecting ESDoc.\n * @ignore\n * @extends {Ignored}\n */\nvar OuterSubscriber = (function (_super) {\n __extends(OuterSubscriber, _super);\n function OuterSubscriber() {\n _super.apply(this, arguments);\n }\n OuterSubscriber.prototype.notifyNext = function (outerValue, innerValue, outerIndex, innerIndex, innerSub) {\n this.destination.next(innerValue);\n };\n OuterSubscriber.prototype.notifyError = function (error, innerSub) {\n this.destination.error(error);\n };\n OuterSubscriber.prototype.notifyComplete = function (innerSub) {\n this.destination.complete();\n };\n return OuterSubscriber;\n}(Subscriber_1.Subscriber));\nexports.OuterSubscriber = OuterSubscriber;\n//# sourceMappingURL=OuterSubscriber.js.map","\"use strict\";\nfunction isFunction(x) {\n return typeof x === 'function';\n}\nexports.isFunction = isFunction;\n//# sourceMappingURL=isFunction.js.map","\"use strict\";\nvar errorObject_1 = require('./errorObject');\nvar tryCatchTarget;\nfunction tryCatcher() {\n try {\n return tryCatchTarget.apply(this, arguments);\n }\n catch (e) {\n errorObject_1.errorObject.e = e;\n return errorObject_1.errorObject;\n }\n}\nfunction tryCatch(fn) {\n tryCatchTarget = fn;\n return tryCatcher;\n}\nexports.tryCatch = tryCatch;\n;\n//# sourceMappingURL=tryCatch.js.map","\"use strict\";\nvar root_1 = require('../util/root');\nfunction getSymbolObservable(context) {\n var $$observable;\n var Symbol = context.Symbol;\n if (typeof Symbol === 'function') {\n if (Symbol.observable) {\n $$observable = Symbol.observable;\n }\n else {\n $$observable = Symbol('observable');\n Symbol.observable = $$observable;\n }\n }\n else {\n $$observable = '@@observable';\n }\n return $$observable;\n}\nexports.getSymbolObservable = getSymbolObservable;\nexports.observable = getSymbolObservable(root_1.root);\n/**\n * @deprecated use observable instead\n */\nexports.$$observable = exports.observable;\n//# sourceMappingURL=observable.js.map","\"use strict\";\nfunction isScheduler(value) {\n return value && typeof value.schedule === 'function';\n}\nexports.isScheduler = isScheduler;\n//# sourceMappingURL=isScheduler.js.map","\"use strict\";\nvar __extends = (this && this.__extends) || function (d, b) {\n for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n};\nvar Observable_1 = require('../Observable');\nvar ScalarObservable_1 = require('./ScalarObservable');\nvar EmptyObservable_1 = require('./EmptyObservable');\nvar isScheduler_1 = require('../util/isScheduler');\n/**\n * We need this JSDoc comment for affecting ESDoc.\n * @extends {Ignored}\n * @hide true\n */\nvar ArrayObservable = (function (_super) {\n __extends(ArrayObservable, _super);\n function ArrayObservable(array, scheduler) {\n _super.call(this);\n this.array = array;\n this.scheduler = scheduler;\n if (!scheduler && array.length === 1) {\n this._isScalar = true;\n this.value = array[0];\n }\n }\n ArrayObservable.create = function (array, scheduler) {\n return new ArrayObservable(array, scheduler);\n };\n /**\n * Creates an Observable that emits some values you specify as arguments,\n * immediately one after the other, and then emits a complete notification.\n *\n * Emits the arguments you provide, then completes.\n * \n *\n * \n *\n * This static operator is useful for creating a simple Observable that only\n * emits the arguments given, and the complete notification thereafter. It can\n * be used for composing with other Observables, such as with {@link concat}.\n * By default, it uses a `null` IScheduler, which means the `next`\n * notifications are sent synchronously, although with a different IScheduler\n * it is possible to determine when those notifications will be delivered.\n *\n * @example Emit 10, 20, 30, then 'a', 'b', 'c', then start ticking every second.\n * var numbers = Rx.Observable.of(10, 20, 30);\n * var letters = Rx.Observable.of('a', 'b', 'c');\n * var interval = Rx.Observable.interval(1000);\n * var result = numbers.concat(letters).concat(interval);\n * result.subscribe(x => console.log(x));\n *\n * @see {@link create}\n * @see {@link empty}\n * @see {@link never}\n * @see {@link throw}\n *\n * @param {...T} values Arguments that represent `next` values to be emitted.\n * @param {Scheduler} [scheduler] A {@link IScheduler} to use for scheduling\n * the emissions of the `next` notifications.\n * @return {Observable} An Observable that emits each given input value.\n * @static true\n * @name of\n * @owner Observable\n */\n ArrayObservable.of = function () {\n var array = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n array[_i - 0] = arguments[_i];\n }\n var scheduler = array[array.length - 1];\n if (isScheduler_1.isScheduler(scheduler)) {\n array.pop();\n }\n else {\n scheduler = null;\n }\n var len = array.length;\n if (len > 1) {\n return new ArrayObservable(array, scheduler);\n }\n else if (len === 1) {\n return new ScalarObservable_1.ScalarObservable(array[0], scheduler);\n }\n else {\n return new EmptyObservable_1.EmptyObservable(scheduler);\n }\n };\n ArrayObservable.dispatch = function (state) {\n var array = state.array, index = state.index, count = state.count, subscriber = state.subscriber;\n if (index >= count) {\n subscriber.complete();\n return;\n }\n subscriber.next(array[index]);\n if (subscriber.closed) {\n return;\n }\n state.index = index + 1;\n this.schedule(state);\n };\n /** @deprecated internal use only */ ArrayObservable.prototype._subscribe = function (subscriber) {\n var index = 0;\n var array = this.array;\n var count = array.length;\n var scheduler = this.scheduler;\n if (scheduler) {\n return scheduler.schedule(ArrayObservable.dispatch, 0, {\n array: array, index: index, count: count, subscriber: subscriber\n });\n }\n else {\n for (var i = 0; i < count && !subscriber.closed; i++) {\n subscriber.next(array[i]);\n }\n subscriber.complete();\n }\n };\n return ArrayObservable;\n}(Observable_1.Observable));\nexports.ArrayObservable = ArrayObservable;\n//# sourceMappingURL=ArrayObservable.js.map","\"use strict\";\nvar __extends = (this && this.__extends) || function (d, b) {\n for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n};\nvar Observable_1 = require('../Observable');\n/**\n * We need this JSDoc comment for affecting ESDoc.\n * @extends {Ignored}\n * @hide true\n */\nvar ScalarObservable = (function (_super) {\n __extends(ScalarObservable, _super);\n function ScalarObservable(value, scheduler) {\n _super.call(this);\n this.value = value;\n this.scheduler = scheduler;\n this._isScalar = true;\n if (scheduler) {\n this._isScalar = false;\n }\n }\n ScalarObservable.create = function (value, scheduler) {\n return new ScalarObservable(value, scheduler);\n };\n ScalarObservable.dispatch = function (state) {\n var done = state.done, value = state.value, subscriber = state.subscriber;\n if (done) {\n subscriber.complete();\n return;\n }\n subscriber.next(value);\n if (subscriber.closed) {\n return;\n }\n state.done = true;\n this.schedule(state);\n };\n /** @deprecated internal use only */ ScalarObservable.prototype._subscribe = function (subscriber) {\n var value = this.value;\n var scheduler = this.scheduler;\n if (scheduler) {\n return scheduler.schedule(ScalarObservable.dispatch, 0, {\n done: false, value: value, subscriber: subscriber\n });\n }\n else {\n subscriber.next(value);\n if (!subscriber.closed) {\n subscriber.complete();\n }\n }\n };\n return ScalarObservable;\n}(Observable_1.Observable));\nexports.ScalarObservable = ScalarObservable;\n//# sourceMappingURL=ScalarObservable.js.map","\"use strict\";\nvar __extends = (this && this.__extends) || function (d, b) {\n for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n};\nvar Observable_1 = require('../Observable');\n/**\n * We need this JSDoc comment for affecting ESDoc.\n * @extends {Ignored}\n * @hide true\n */\nvar EmptyObservable = (function (_super) {\n __extends(EmptyObservable, _super);\n function EmptyObservable(scheduler) {\n _super.call(this);\n this.scheduler = scheduler;\n }\n /**\n * Creates an Observable that emits no items to the Observer and immediately\n * emits a complete notification.\n *\n * Just emits 'complete', and nothing else.\n * \n *\n * \n *\n * This static operator is useful for creating a simple Observable that only\n * emits the complete notification. It can be used for composing with other\n * Observables, such as in a {@link mergeMap}.\n *\n * @example Emit the number 7, then complete.\n * var result = Rx.Observable.empty().startWith(7);\n * result.subscribe(x => console.log(x));\n *\n * @example Map and flatten only odd numbers to the sequence 'a', 'b', 'c'\n * var interval = Rx.Observable.interval(1000);\n * var result = interval.mergeMap(x =>\n * x % 2 === 1 ? Rx.Observable.of('a', 'b', 'c') : Rx.Observable.empty()\n * );\n * result.subscribe(x => console.log(x));\n *\n * // Results in the following to the console:\n * // x is equal to the count on the interval eg(0,1,2,3,...)\n * // x will occur every 1000ms\n * // if x % 2 is equal to 1 print abc\n * // if x % 2 is not equal to 1 nothing will be output\n *\n * @see {@link create}\n * @see {@link never}\n * @see {@link of}\n * @see {@link throw}\n *\n * @param {Scheduler} [scheduler] A {@link IScheduler} to use for scheduling\n * the emission of the complete notification.\n * @return {Observable} An \"empty\" Observable: emits only the complete\n * notification.\n * @static true\n * @name empty\n * @owner Observable\n */\n EmptyObservable.create = function (scheduler) {\n return new EmptyObservable(scheduler);\n };\n EmptyObservable.dispatch = function (arg) {\n var subscriber = arg.subscriber;\n subscriber.complete();\n };\n /** @deprecated internal use only */ EmptyObservable.prototype._subscribe = function (subscriber) {\n var scheduler = this.scheduler;\n if (scheduler) {\n return scheduler.schedule(EmptyObservable.dispatch, 0, { subscriber: subscriber });\n }\n else {\n subscriber.complete();\n }\n };\n return EmptyObservable;\n}(Observable_1.Observable));\nexports.EmptyObservable = EmptyObservable;\n//# sourceMappingURL=EmptyObservable.js.map","\"use strict\";\nvar root_1 = require('../util/root');\nfunction symbolIteratorPonyfill(root) {\n var Symbol = root.Symbol;\n if (typeof Symbol === 'function') {\n if (!Symbol.iterator) {\n Symbol.iterator = Symbol('iterator polyfill');\n }\n return Symbol.iterator;\n }\n else {\n // [for Mozilla Gecko 27-35:](https://mzl.la/2ewE1zC)\n var Set_1 = root.Set;\n if (Set_1 && typeof new Set_1()['@@iterator'] === 'function') {\n return '@@iterator';\n }\n var Map_1 = root.Map;\n // required for compatability with es6-shim\n if (Map_1) {\n var keys = Object.getOwnPropertyNames(Map_1.prototype);\n for (var i = 0; i < keys.length; ++i) {\n var key = keys[i];\n // according to spec, Map.prototype[@@iterator] and Map.orototype.entries must be equal.\n if (key !== 'entries' && key !== 'size' && Map_1.prototype[key] === Map_1.prototype['entries']) {\n return key;\n }\n }\n }\n return '@@iterator';\n }\n}\nexports.symbolIteratorPonyfill = symbolIteratorPonyfill;\nexports.iterator = symbolIteratorPonyfill(root_1.root);\n/**\n * @deprecated use iterator instead\n */\nexports.$$iterator = exports.iterator;\n//# sourceMappingURL=iterator.js.map","\"use strict\";\nvar __extends = (this && this.__extends) || function (d, b) {\n for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n};\nvar Subscriber_1 = require('../Subscriber');\n/**\n * Applies a given `project` function to each value emitted by the source\n * Observable, and emits the resulting values as an Observable.\n *\n * Like [Array.prototype.map()](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/map),\n * it passes each source value through a transformation function to get\n * corresponding output values.\n *\n * \n *\n * Similar to the well known `Array.prototype.map` function, this operator\n * applies a projection to each value and emits that projection in the output\n * Observable.\n *\n * @example Map every click to the clientX position of that click\n * var clicks = Rx.Observable.fromEvent(document, 'click');\n * var positions = clicks.map(ev => ev.clientX);\n * positions.subscribe(x => console.log(x));\n *\n * @see {@link mapTo}\n * @see {@link pluck}\n *\n * @param {function(value: T, index: number): R} project The function to apply\n * to each `value` emitted by the source Observable. The `index` parameter is\n * the number `i` for the i-th emission that has happened since the\n * subscription, starting from the number `0`.\n * @param {any} [thisArg] An optional argument to define what `this` is in the\n * `project` function.\n * @return {Observable} An Observable that emits the values from the source\n * Observable transformed by the given `project` function.\n * @method map\n * @owner Observable\n */\nfunction map(project, thisArg) {\n return function mapOperation(source) {\n if (typeof project !== 'function') {\n throw new TypeError('argument is not a function. Are you looking for `mapTo()`?');\n }\n return source.lift(new MapOperator(project, thisArg));\n };\n}\nexports.map = map;\nvar MapOperator = (function () {\n function MapOperator(project, thisArg) {\n this.project = project;\n this.thisArg = thisArg;\n }\n MapOperator.prototype.call = function (subscriber, source) {\n return source.subscribe(new MapSubscriber(subscriber, this.project, this.thisArg));\n };\n return MapOperator;\n}());\nexports.MapOperator = MapOperator;\n/**\n * We need this JSDoc comment for affecting ESDoc.\n * @ignore\n * @extends {Ignored}\n */\nvar MapSubscriber = (function (_super) {\n __extends(MapSubscriber, _super);\n function MapSubscriber(destination, project, thisArg) {\n _super.call(this, destination);\n this.project = project;\n this.count = 0;\n this.thisArg = thisArg || this;\n }\n // NOTE: This looks unoptimized, but it's actually purposefully NOT\n // using try/catch optimizations.\n MapSubscriber.prototype._next = function (value) {\n var result;\n try {\n result = this.project.call(this.thisArg, value, this.count++);\n }\n catch (err) {\n this.destination.error(err);\n return;\n }\n this.destination.next(result);\n };\n return MapSubscriber;\n}(Subscriber_1.Subscriber));\n//# sourceMappingURL=map.js.map","module.exports = jQuery;","import { Observable } from 'rxjs/Observable';\r\nimport 'rxjs/add/observable/concat';\r\nimport 'rxjs/add/observable/dom/ajax';\r\nimport 'rxjs/add/observable/fromEvent';\r\nimport 'rxjs/add/observable/of';\r\nimport 'rxjs/add/operator/catch';\r\nimport 'rxjs/add/operator/filter';\r\nimport 'rxjs/add/operator/distinct';\r\nimport 'rxjs/add/operator/map';\r\nimport 'rxjs/add/operator/pluck';\r\nimport 'rxjs/add/operator/startWith';\r\nimport 'rxjs/add/operator/switchMap';\r\n\r\nclass AssignmentAbstract {\r\n id: number;\r\n firstName: string;\r\n lastName: string;\r\n title: string;\r\n programedInSession: number;\r\n presentationType: string;\r\n score?: number;\r\n}\r\n\r\nlet placeHolderAbstract: AssignmentAbstract = {\r\n id: 0,\r\n firstName: '',\r\n lastName: '',\r\n score: 0,\r\n programedInSession: 0,\r\n presentationType: '',\r\n title: '',\r\n};\r\n\r\nlet errorAbstract: AssignmentAbstract = {\r\n id: 0,\r\n firstName: '',\r\n lastName: '',\r\n score: 0,\r\n programedInSession: 0,\r\n presentationType: 'Invalid',\r\n title: '',\r\n};\r\n\r\nexport let abstractAutocompletes = [] as Array;\r\n\r\nclass AbstractAutocomplete {\r\n\r\n constructor(\r\n private getUrl: string,\r\n private abstractDetailUrl: string,\r\n private sessionId: string) {\r\n }\r\n // Setup the pipeline for all the input elements\r\n addInputPipelineAllInput() {\r\n var inputs = document.querySelectorAll('input.program-assignment-abstract-id');\r\n var i = 0;\r\n for (i = 0; i < inputs.length; i++) {\r\n let input = inputs[i] as HTMLInputElement;\r\n this.addInputPipeline(input);\r\n }\r\n }\r\n\r\n // Setup the pipeline for input inside this row. (For new row)\r\n addInputPipelineFromRow(rowElement: HTMLTableRowElement) {\r\n var input = rowElement.querySelector('input.program-assignment-abstract-id') as HTMLInputElement;\r\n this.addInputPipeline(input);\r\n }\r\n\r\n private addInputPipeline(inputElement: HTMLInputElement) {\r\n var keyups = Observable.fromEvent(inputElement, 'keyup');\r\n keyups = keyups.startWith({ target: { value: inputElement.value } });\r\n var textStream = keyups.pluck('target', \"value\") as Observable;\r\n var parent = inputElement.parentNode.parentNode;\r\n var distinct = textStream.filter((a) => {\r\n if (a.length == 4) {\r\n return true;\r\n }\r\n else {\r\n this.setHtml(parent, placeHolderAbstract);\r\n return false;\r\n }\r\n });\r\n distinct.switchMap((a) => {\r\n return this.getAbstractSummary(a);\r\n }).subscribe((data) => {\r\n this.setHtml(parent, data);\r\n });\r\n }\r\n\r\n private getAbstractSummary(absno: string): Observable {\r\n return Observable.ajax({\r\n method: \"GET\",\r\n url: this.getUrl + \"?AbstractId=\" + absno + \"&SessionId=\" + this.sessionId,\r\n }).map(function (data) {\r\n return data.response;\r\n }).catch(function () {\r\n return Observable.of(errorAbstract);\r\n });\r\n }\r\n\r\n private setHtml(parent, response: AssignmentAbstract) {\r\n let a = parent.querySelector('.program-assignment-abstract-author') as HTMLAnchorElement;\r\n let errorContainerElem = a.parentElement;\r\n let titleElem = parent.querySelector('.program-assignment-abstract-title') as HTMLDivElement;\r\n errorContainerElem.classList.remove(\"program-assignment-abstract-warning\");\r\n errorContainerElem.classList.remove(\"program-assignment-abstract-error\");\r\n\r\n if (!response) {\r\n a.removeAttribute(\"href\");\r\n a.textContent = 'Invalid';\r\n errorContainerElem.classList.add(\"program-assignment-abstract-error\");\r\n titleElem.textContent = 'Invalid Abstract Number';\r\n //} else if (response.presentationType === 'Poster' || response.presentationType === 'Invalid') {\r\n } else if (response.presentationType === 'Invalid') {\r\n a.removeAttribute(\"href\");\r\n a.textContent = 'Invalid';\r\n errorContainerElem.classList.add(\"program-assignment-abstract-error\");\r\n titleElem.textContent = response.presentationType;\r\n } else {\r\n a.textContent = response.firstName + \" \" + response.lastName;\r\n a.href = this.abstractDetailUrl + '/' + response.id;\r\n let title = response.title;\r\n if (response.programedInSession) {\r\n title = \"Already Programed in Session \" + response.programedInSession + \" \" + title;\r\n errorContainerElem.classList.add(\"program-assignment-abstract-warning\");\r\n }\r\n titleElem.innerHTML = title;\r\n }\r\n }\r\n}\r\n\r\nexport default function () {\r\n var programAssigmentElems = document.querySelectorAll(\"[data-gs-program-assignment]\");\r\n if (programAssigmentElems.length == 0) {\r\n return;\r\n }\r\n for (let i = 0; i < programAssigmentElems.length; i++) {\r\n let programAssigmentElem = programAssigmentElems[i] as HTMLElement;\r\n let sessionId = programAssigmentElem.dataset[\"gsProgramAssignmentSessionId\"];\r\n if (!sessionId) {\r\n console.log(\"sessionId can not be found\", programAssigmentElem);\r\n }\r\n let getUrl = programAssigmentElem.dataset[\"gsProgramAssignmentApiUrl\"];\r\n if (!getUrl) {\r\n console.log(\"getUrl can not be found\", programAssigmentElem);\r\n }\r\n let abstractDetailUrl = programAssigmentElem.dataset[\"gsProgramAssignmentAbstractDetailUrl\"];\r\n if (!abstractDetailUrl) {\r\n console.log(\"abstractDetail can not be found\", programAssigmentElem);\r\n }\r\n\r\n let abstractAutocomplete = new AbstractAutocomplete(getUrl, abstractDetailUrl, sessionId);\r\n abstractAutocomplete.addInputPipelineAllInput();\r\n abstractAutocompletes.push(abstractAutocomplete);\r\n }\r\n}\r\n","\"use strict\";\nvar isArray_1 = require('./util/isArray');\nvar isObject_1 = require('./util/isObject');\nvar isFunction_1 = require('./util/isFunction');\nvar tryCatch_1 = require('./util/tryCatch');\nvar errorObject_1 = require('./util/errorObject');\nvar UnsubscriptionError_1 = require('./util/UnsubscriptionError');\n/**\n * Represents a disposable resource, such as the execution of an Observable. A\n * Subscription has one important method, `unsubscribe`, that takes no argument\n * and just disposes the resource held by the subscription.\n *\n * Additionally, subscriptions may be grouped together through the `add()`\n * method, which will attach a child Subscription to the current Subscription.\n * When a Subscription is unsubscribed, all its children (and its grandchildren)\n * will be unsubscribed as well.\n *\n * @class Subscription\n */\nvar Subscription = (function () {\n /**\n * @param {function(): void} [unsubscribe] A function describing how to\n * perform the disposal of resources when the `unsubscribe` method is called.\n */\n function Subscription(unsubscribe) {\n /**\n * A flag to indicate whether this Subscription has already been unsubscribed.\n * @type {boolean}\n */\n this.closed = false;\n this._parent = null;\n this._parents = null;\n this._subscriptions = null;\n if (unsubscribe) {\n this._unsubscribe = unsubscribe;\n }\n }\n /**\n * Disposes the resources held by the subscription. May, for instance, cancel\n * an ongoing Observable execution or cancel any other type of work that\n * started when the Subscription was created.\n * @return {void}\n */\n Subscription.prototype.unsubscribe = function () {\n var hasErrors = false;\n var errors;\n if (this.closed) {\n return;\n }\n var _a = this, _parent = _a._parent, _parents = _a._parents, _unsubscribe = _a._unsubscribe, _subscriptions = _a._subscriptions;\n this.closed = true;\n this._parent = null;\n this._parents = null;\n // null out _subscriptions first so any child subscriptions that attempt\n // to remove themselves from this subscription will noop\n this._subscriptions = null;\n var index = -1;\n var len = _parents ? _parents.length : 0;\n // if this._parent is null, then so is this._parents, and we\n // don't have to remove ourselves from any parent subscriptions.\n while (_parent) {\n _parent.remove(this);\n // if this._parents is null or index >= len,\n // then _parent is set to null, and the loop exits\n _parent = ++index < len && _parents[index] || null;\n }\n if (isFunction_1.isFunction(_unsubscribe)) {\n var trial = tryCatch_1.tryCatch(_unsubscribe).call(this);\n if (trial === errorObject_1.errorObject) {\n hasErrors = true;\n errors = errors || (errorObject_1.errorObject.e instanceof UnsubscriptionError_1.UnsubscriptionError ?\n flattenUnsubscriptionErrors(errorObject_1.errorObject.e.errors) : [errorObject_1.errorObject.e]);\n }\n }\n if (isArray_1.isArray(_subscriptions)) {\n index = -1;\n len = _subscriptions.length;\n while (++index < len) {\n var sub = _subscriptions[index];\n if (isObject_1.isObject(sub)) {\n var trial = tryCatch_1.tryCatch(sub.unsubscribe).call(sub);\n if (trial === errorObject_1.errorObject) {\n hasErrors = true;\n errors = errors || [];\n var err = errorObject_1.errorObject.e;\n if (err instanceof UnsubscriptionError_1.UnsubscriptionError) {\n errors = errors.concat(flattenUnsubscriptionErrors(err.errors));\n }\n else {\n errors.push(err);\n }\n }\n }\n }\n }\n if (hasErrors) {\n throw new UnsubscriptionError_1.UnsubscriptionError(errors);\n }\n };\n /**\n * Adds a tear down to be called during the unsubscribe() of this\n * Subscription.\n *\n * If the tear down being added is a subscription that is already\n * unsubscribed, is the same reference `add` is being called on, or is\n * `Subscription.EMPTY`, it will not be added.\n *\n * If this subscription is already in an `closed` state, the passed\n * tear down logic will be executed immediately.\n *\n * @param {TeardownLogic} teardown The additional logic to execute on\n * teardown.\n * @return {Subscription} Returns the Subscription used or created to be\n * added to the inner subscriptions list. This Subscription can be used with\n * `remove()` to remove the passed teardown logic from the inner subscriptions\n * list.\n */\n Subscription.prototype.add = function (teardown) {\n if (!teardown || (teardown === Subscription.EMPTY)) {\n return Subscription.EMPTY;\n }\n if (teardown === this) {\n return this;\n }\n var subscription = teardown;\n switch (typeof teardown) {\n case 'function':\n subscription = new Subscription(teardown);\n case 'object':\n if (subscription.closed || typeof subscription.unsubscribe !== 'function') {\n return subscription;\n }\n else if (this.closed) {\n subscription.unsubscribe();\n return subscription;\n }\n else if (typeof subscription._addParent !== 'function' /* quack quack */) {\n var tmp = subscription;\n subscription = new Subscription();\n subscription._subscriptions = [tmp];\n }\n break;\n default:\n throw new Error('unrecognized teardown ' + teardown + ' added to Subscription.');\n }\n var subscriptions = this._subscriptions || (this._subscriptions = []);\n subscriptions.push(subscription);\n subscription._addParent(this);\n return subscription;\n };\n /**\n * Removes a Subscription from the internal list of subscriptions that will\n * unsubscribe during the unsubscribe process of this Subscription.\n * @param {Subscription} subscription The subscription to remove.\n * @return {void}\n */\n Subscription.prototype.remove = function (subscription) {\n var subscriptions = this._subscriptions;\n if (subscriptions) {\n var subscriptionIndex = subscriptions.indexOf(subscription);\n if (subscriptionIndex !== -1) {\n subscriptions.splice(subscriptionIndex, 1);\n }\n }\n };\n Subscription.prototype._addParent = function (parent) {\n var _a = this, _parent = _a._parent, _parents = _a._parents;\n if (!_parent || _parent === parent) {\n // If we don't have a parent, or the new parent is the same as the\n // current parent, then set this._parent to the new parent.\n this._parent = parent;\n }\n else if (!_parents) {\n // If there's already one parent, but not multiple, allocate an Array to\n // store the rest of the parent Subscriptions.\n this._parents = [parent];\n }\n else if (_parents.indexOf(parent) === -1) {\n // Only add the new parent to the _parents list if it's not already there.\n _parents.push(parent);\n }\n };\n Subscription.EMPTY = (function (empty) {\n empty.closed = true;\n return empty;\n }(new Subscription()));\n return Subscription;\n}());\nexports.Subscription = Subscription;\nfunction flattenUnsubscriptionErrors(errors) {\n return errors.reduce(function (errs, err) { return errs.concat((err instanceof UnsubscriptionError_1.UnsubscriptionError) ? err.errors : err); }, []);\n}\n//# sourceMappingURL=Subscription.js.map","\"use strict\";\nexports.isArray = Array.isArray || (function (x) { return x && typeof x.length === 'number'; });\n//# sourceMappingURL=isArray.js.map","\"use strict\";\nfunction isObject(x) {\n return x != null && typeof x === 'object';\n}\nexports.isObject = isObject;\n//# sourceMappingURL=isObject.js.map","\"use strict\";\nexports.empty = {\n closed: true,\n next: function (value) { },\n error: function (err) { throw err; },\n complete: function () { }\n};\n//# sourceMappingURL=Observer.js.map","\"use strict\";\nvar root_1 = require('../util/root');\nvar Symbol = root_1.root.Symbol;\nexports.rxSubscriber = (typeof Symbol === 'function' && typeof Symbol.for === 'function') ?\n Symbol.for('rxSubscriber') : '@@rxSubscriber';\n/**\n * @deprecated use rxSubscriber instead\n */\nexports.$$rxSubscriber = exports.rxSubscriber;\n//# sourceMappingURL=rxSubscriber.js.map","\"use strict\";\nvar isScheduler_1 = require('../util/isScheduler');\nvar of_1 = require('./of');\nvar from_1 = require('./from');\nvar concatAll_1 = require('../operators/concatAll');\n/* tslint:enable:max-line-length */\n/**\n * Creates an output Observable which sequentially emits all values from given\n * Observable and then moves on to the next.\n *\n * Concatenates multiple Observables together by\n * sequentially emitting their values, one Observable after the other.\n *\n * \n *\n * `concat` joins multiple Observables together, by subscribing to them one at a time and\n * merging their results into the output Observable. You can pass either an array of\n * Observables, or put them directly as arguments. Passing an empty array will result\n * in Observable that completes immediately.\n *\n * `concat` will subscribe to first input Observable and emit all its values, without\n * changing or affecting them in any way. When that Observable completes, it will\n * subscribe to then next Observable passed and, again, emit its values. This will be\n * repeated, until the operator runs out of Observables. When last input Observable completes,\n * `concat` will complete as well. At any given moment only one Observable passed to operator\n * emits values. If you would like to emit values from passed Observables concurrently, check out\n * {@link merge} instead, especially with optional `concurrent` parameter. As a matter of fact,\n * `concat` is an equivalent of `merge` operator with `concurrent` parameter set to `1`.\n *\n * Note that if some input Observable never completes, `concat` will also never complete\n * and Observables following the one that did not complete will never be subscribed. On the other\n * hand, if some Observable simply completes immediately after it is subscribed, it will be\n * invisible for `concat`, which will just move on to the next Observable.\n *\n * If any Observable in chain errors, instead of passing control to the next Observable,\n * `concat` will error immediately as well. Observables that would be subscribed after\n * the one that emitted error, never will.\n *\n * If you pass to `concat` the same Observable many times, its stream of values\n * will be \"replayed\" on every subscription, which means you can repeat given Observable\n * as many times as you like. If passing the same Observable to `concat` 1000 times becomes tedious,\n * you can always use {@link repeat}.\n *\n * @example Concatenate a timer counting from 0 to 3 with a synchronous sequence from 1 to 10\n * var timer = Rx.Observable.interval(1000).take(4);\n * var sequence = Rx.Observable.range(1, 10);\n * var result = Rx.Observable.concat(timer, sequence);\n * result.subscribe(x => console.log(x));\n *\n * // results in:\n * // 0 -1000ms-> 1 -1000ms-> 2 -1000ms-> 3 -immediate-> 1 ... 10\n *\n *\n * @example Concatenate an array of 3 Observables\n * var timer1 = Rx.Observable.interval(1000).take(10);\n * var timer2 = Rx.Observable.interval(2000).take(6);\n * var timer3 = Rx.Observable.interval(500).take(10);\n * var result = Rx.Observable.concat([timer1, timer2, timer3]); // note that array is passed\n * result.subscribe(x => console.log(x));\n *\n * // results in the following:\n * // (Prints to console sequentially)\n * // -1000ms-> 0 -1000ms-> 1 -1000ms-> ... 9\n * // -2000ms-> 0 -2000ms-> 1 -2000ms-> ... 5\n * // -500ms-> 0 -500ms-> 1 -500ms-> ... 9\n *\n *\n * @example Concatenate the same Observable to repeat it\n * const timer = Rx.Observable.interval(1000).take(2);\n *\n * Rx.Observable.concat(timer, timer) // concating the same Observable!\n * .subscribe(\n * value => console.log(value),\n * err => {},\n * () => console.log('...and it is done!')\n * );\n *\n * // Logs:\n * // 0 after 1s\n * // 1 after 2s\n * // 0 after 3s\n * // 1 after 4s\n * // \"...and it is done!\" also after 4s\n *\n * @see {@link concatAll}\n * @see {@link concatMap}\n * @see {@link concatMapTo}\n *\n * @param {ObservableInput} input1 An input Observable to concatenate with others.\n * @param {ObservableInput} input2 An input Observable to concatenate with others.\n * More than one input Observables may be given as argument.\n * @param {Scheduler} [scheduler=null] An optional IScheduler to schedule each\n * Observable subscription on.\n * @return {Observable} All values of each passed Observable merged into a\n * single Observable, in order, in serial fashion.\n * @static true\n * @name concat\n * @owner Observable\n */\nfunction concat() {\n var observables = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n observables[_i - 0] = arguments[_i];\n }\n if (observables.length === 1 || (observables.length === 2 && isScheduler_1.isScheduler(observables[1]))) {\n return from_1.from(observables[0]);\n }\n return concatAll_1.concatAll()(of_1.of.apply(void 0, observables));\n}\nexports.concat = concat;\n//# sourceMappingURL=concat.js.map","\"use strict\";\nvar ArrayObservable_1 = require('./ArrayObservable');\nexports.of = ArrayObservable_1.ArrayObservable.of;\n//# sourceMappingURL=of.js.map","\"use strict\";\nexports.isArrayLike = (function (x) { return x && typeof x.length === 'number'; });\n//# sourceMappingURL=isArrayLike.js.map","\"use strict\";\nfunction isPromise(value) {\n return value && typeof value.subscribe !== 'function' && typeof value.then === 'function';\n}\nexports.isPromise = isPromise;\n//# sourceMappingURL=isPromise.js.map","import abstracts from './abstracts';\r\nimport abstractReport from './abstracts-report';\r\nimport program from './program';\r\nimport common from './common';\r\n\r\nvar readyCalled = false;\r\nfunction ready() {\r\n if (readyCalled)\r\n return;\r\n readyCalled = true;\r\n\r\n abstracts();\r\n abstractReport();\r\n program();\r\n common();\r\n}\r\ndocument.addEventListener('DOMContentLoaded', ready);\r\n","import \"./index.scss\";\r\nimport \"./chart\"\r\n\r\nexport default function () {\r\n\r\n}","import * as $ from 'jquery';\r\nimport * as loadjs from 'loadjs';\r\n\r\ndeclare let google;\r\ntype DataTableType = 'number' | 'string' | 'boolean' | 'date' | 'datetime' | 'timeofday';\r\n\r\ninterface DataTable {\r\n addRows(data: any);\r\n addColumn(type: DataTableType, name: string);\r\n getValue(rowIndex: number, columnIndex: number): any;\r\n};\r\n\r\ninterface DrawConfig {\r\n id: string;\r\n dataTable: DataTable;\r\n selectUrl?: string;\r\n options: Object;\r\n}\r\n\r\n\r\n$(function () {\r\n var charElems = document.querySelectorAll('[data-gs-chart]');\r\n if (charElems.length > 0) {\r\n loadjs(['https://www.gstatic.com/charts/loader.js'], {\r\n success: function () {\r\n function drawHelper(config: DrawConfig, chartFunc) {\r\n let elem = document.getElementById(config.id);\r\n if (!elem) {\r\n return;\r\n }\r\n\r\n let chart = new chartFunc(elem);\r\n if (config.selectUrl) {\r\n google.visualization.events.addListener(chart, 'select', () => {\r\n let selectedItem = chart.getSelection()[0];\r\n if (selectedItem) {\r\n let row = selectedItem.row;\r\n if (row >= 0) {\r\n let name = config.dataTable.getValue(row, 0);\r\n let url = encodeURIComponent(name);\r\n window.open(url, '_blank');\r\n }\r\n }\r\n });\r\n }\r\n chart.draw(config.dataTable, config.options);\r\n }\r\n\r\n function drawPie(config: DrawConfig) {\r\n drawHelper(config, google.visualization.PieChart);\r\n }\r\n\r\n function drawTable(config: DrawConfig) {\r\n drawHelper(config, google.visualization.Table);\r\n }\r\n\r\n function drawGeoChart(config: DrawConfig) {\r\n drawHelper(config, google.visualization.GeoChart);\r\n }\r\n $('[data-gs-chart]').each(function () {\r\n let id = this.id;\r\n let $this = $(this);\r\n let chart = $this.data('gsChart');\r\n let title = $this.data('gsChartTitle');\r\n let options = $this.data('gsChartOptions');\r\n let url = $this.data('gsChartUrl');\r\n let selectUrl = $this.data('gsSelectUrl');\r\n\r\n let dataReady = false;\r\n let chartLibReady = false;\r\n let drawCalled = false;\r\n let data;\r\n\r\n let drawFunc = function () {\r\n if (drawCalled) {\r\n return;\r\n }\r\n // only call draw when both ready\r\n if (dataReady && chartLibReady) {\r\n drawCalled = true;\r\n google.charts.setOnLoadCallback(() => {\r\n chartLibReady = true;\r\n drawFunc();\r\n });\r\n\r\n let dataTable: DataTable = new google.visualization.DataTable();\r\n dataTable.addColumn('string', title);\r\n dataTable.addColumn('number', 'Count');\r\n dataTable.addRows(data);\r\n\r\n let config: DrawConfig = {\r\n id: id,\r\n dataTable: dataTable,\r\n selectUrl: selectUrl,\r\n options: options\r\n };\r\n if (chart === 'pie') {\r\n drawPie(config);\r\n } else if (chart === 'geoChart') {\r\n drawGeoChart(config);\r\n }\r\n }\r\n }\r\n if (url) {\r\n $.getJSON(url, (jsonData) => {\r\n data = jsonData;\r\n dataReady = true;\r\n drawFunc();\r\n });\r\n } else {\r\n if (window[\"gsChartData\"] && window[\"gsChartData\"][id]) {\r\n data = window[\"gsChartData\"][id];\r\n dataReady = true;\r\n drawFunc();\r\n }\r\n }\r\n\r\n google.charts.load('current', {\r\n packages: ['corechart', 'geochart'], callback: () => {\r\n chartLibReady = true;\r\n drawFunc();\r\n }\r\n });\r\n\r\n });\r\n }\r\n });\r\n }\r\n});","import './index.scss';\r\n\r\nexport default function () {\r\n $('#gs-add-author').click(function (e) {\r\n e.preventDefault();\r\n var len = $('.author-flag').length;\r\n var newInput =\r\n '
' +\r\n '' +\r\n '' +\r\n '' +\r\n '' +\r\n '' +\r\n '' +\r\n '' +\r\n '' +\r\n '
';\r\n $('#authors-group').append(newInput)\r\n });\r\n $('#gs-add-author-institution').click(function (e) {\r\n e.preventDefault();\r\n var len = $('.author-institution-flag').length;\r\n var newInput =\r\n '
' +\r\n '' +\r\n '
';\r\n $('#authors-institution-group').append(newInput)\r\n });\r\n\r\n if (!document.getElementById(\"gsFilterForm\")) {\r\n return;\r\n }\r\n function refresh() {\r\n $('#gsFilterForm').submit();\r\n }\r\n $('#gsFilterForm .gs-reset-btn').click(function (e) {\r\n e.preventDefault();\r\n $(this).parents('.panel-body').find('select').val('');\r\n refresh();\r\n });\r\n\r\n $('#gsFilterForm [data-gs-order-by]').click(function (e) {\r\n e.preventDefault();\r\n let orderby = $(this).data('gsOrderBy');\r\n $('#gsOrderBy').val(orderby);\r\n refresh();\r\n });\r\n $('#gsFilterForm select').change(refresh);\r\n $('#gsFilterForm input[type=checkbox]').change(refresh);\r\n\r\n \r\n}\r\n","import internalAbstract from './js/internal-abstract';\r\nimport assignement from './js/assignment';\r\nimport session from './js/session';\r\nimport './css/common.scss';\r\n\r\nexport default function() {\r\n internalAbstract();\r\n assignement();\r\n session();\r\n}\r\n","\r\nexport default function() {\r\n if (document.getElementById(\"gs-program-internal-abstract-edit-form\")) {\r\n }\r\n}","import abstractAutoCompele from './abstract-autocomplete';\r\nimport editTimeSlotAddSlot from './edit-time-slot-add-slot';\r\n\r\nexport default function () {\r\n abstractAutoCompele();\r\n editTimeSlotAddSlot(); //this must be called after auto complete is inited\r\n}","var g;\n\n// This works in non-strict mode\ng = (function() {\n\treturn this;\n})();\n\ntry {\n\t// This works if eval is allowed (see CSP)\n\tg = g || new Function(\"return this\")();\n} catch (e) {\n\t// This works if the window reference is available\n\tif (typeof window === \"object\") g = window;\n}\n\n// g can still be undefined, but nothing to do about it...\n// We return undefined, instead of nothing here, so it's\n// easier to handle this case. if(!global) { ...}\n\nmodule.exports = g;\n","\"use strict\";\nvar Subscriber_1 = require('../Subscriber');\nvar rxSubscriber_1 = require('../symbol/rxSubscriber');\nvar Observer_1 = require('../Observer');\nfunction toSubscriber(nextOrObserver, error, complete) {\n if (nextOrObserver) {\n if (nextOrObserver instanceof Subscriber_1.Subscriber) {\n return nextOrObserver;\n }\n if (nextOrObserver[rxSubscriber_1.rxSubscriber]) {\n return nextOrObserver[rxSubscriber_1.rxSubscriber]();\n }\n }\n if (!nextOrObserver && !error && !complete) {\n return new Subscriber_1.Subscriber(Observer_1.empty);\n }\n return new Subscriber_1.Subscriber(nextOrObserver, error, complete);\n}\nexports.toSubscriber = toSubscriber;\n//# sourceMappingURL=toSubscriber.js.map","\"use strict\";\nvar __extends = (this && this.__extends) || function (d, b) {\n for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n};\n/**\n * An error thrown when one or more errors have occurred during the\n * `unsubscribe` of a {@link Subscription}.\n */\nvar UnsubscriptionError = (function (_super) {\n __extends(UnsubscriptionError, _super);\n function UnsubscriptionError(errors) {\n _super.call(this);\n this.errors = errors;\n var err = Error.call(this, errors ?\n errors.length + \" errors occurred during unsubscription:\\n \" + errors.map(function (err, i) { return ((i + 1) + \") \" + err.toString()); }).join('\\n ') : '');\n this.name = err.name = 'UnsubscriptionError';\n this.stack = err.stack;\n this.message = err.message;\n }\n return UnsubscriptionError;\n}(Error));\nexports.UnsubscriptionError = UnsubscriptionError;\n//# sourceMappingURL=UnsubscriptionError.js.map","\"use strict\";\nvar noop_1 = require('./noop');\n/* tslint:enable:max-line-length */\nfunction pipe() {\n var fns = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n fns[_i - 0] = arguments[_i];\n }\n return pipeFromArray(fns);\n}\nexports.pipe = pipe;\n/* @internal */\nfunction pipeFromArray(fns) {\n if (!fns) {\n return noop_1.noop;\n }\n if (fns.length === 1) {\n return fns[0];\n }\n return function piped(input) {\n return fns.reduce(function (prev, fn) { return fn(prev); }, input);\n };\n}\nexports.pipeFromArray = pipeFromArray;\n//# sourceMappingURL=pipe.js.map","\"use strict\";\n/* tslint:disable:no-empty */\nfunction noop() { }\nexports.noop = noop;\n//# sourceMappingURL=noop.js.map","\"use strict\";\nvar Observable_1 = require('../../Observable');\nvar concat_1 = require('../../observable/concat');\nObservable_1.Observable.concat = concat_1.concat;\n//# sourceMappingURL=concat.js.map","\"use strict\";\nvar FromObservable_1 = require('./FromObservable');\nexports.from = FromObservable_1.FromObservable.create;\n//# sourceMappingURL=from.js.map","\"use strict\";\nvar __extends = (this && this.__extends) || function (d, b) {\n for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n};\nvar isArray_1 = require('../util/isArray');\nvar isArrayLike_1 = require('../util/isArrayLike');\nvar isPromise_1 = require('../util/isPromise');\nvar PromiseObservable_1 = require('./PromiseObservable');\nvar IteratorObservable_1 = require('./IteratorObservable');\nvar ArrayObservable_1 = require('./ArrayObservable');\nvar ArrayLikeObservable_1 = require('./ArrayLikeObservable');\nvar iterator_1 = require('../symbol/iterator');\nvar Observable_1 = require('../Observable');\nvar observeOn_1 = require('../operators/observeOn');\nvar observable_1 = require('../symbol/observable');\n/**\n * We need this JSDoc comment for affecting ESDoc.\n * @extends {Ignored}\n * @hide true\n */\nvar FromObservable = (function (_super) {\n __extends(FromObservable, _super);\n function FromObservable(ish, scheduler) {\n _super.call(this, null);\n this.ish = ish;\n this.scheduler = scheduler;\n }\n /**\n * Creates an Observable from an Array, an array-like object, a Promise, an\n * iterable object, or an Observable-like object.\n *\n * Converts almost anything to an Observable.\n *\n * \n *\n * Convert various other objects and data types into Observables. `from`\n * converts a Promise or an array-like or an\n * [iterable](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Iteration_protocols#iterable)\n * object into an Observable that emits the items in that promise or array or\n * iterable. A String, in this context, is treated as an array of characters.\n * Observable-like objects (contains a function named with the ES2015 Symbol\n * for Observable) can also be converted through this operator.\n *\n * @example Converts an array to an Observable\n * var array = [10, 20, 30];\n * var result = Rx.Observable.from(array);\n * result.subscribe(x => console.log(x));\n *\n * // Results in the following:\n * // 10 20 30\n *\n * @example Convert an infinite iterable (from a generator) to an Observable\n * function* generateDoubles(seed) {\n * var i = seed;\n * while (true) {\n * yield i;\n * i = 2 * i; // double it\n * }\n * }\n *\n * var iterator = generateDoubles(3);\n * var result = Rx.Observable.from(iterator).take(10);\n * result.subscribe(x => console.log(x));\n *\n * // Results in the following:\n * // 3 6 12 24 48 96 192 384 768 1536\n *\n * @see {@link create}\n * @see {@link fromEvent}\n * @see {@link fromEventPattern}\n * @see {@link fromPromise}\n *\n * @param {ObservableInput} ish A subscribable object, a Promise, an\n * Observable-like, an Array, an iterable or an array-like object to be\n * converted.\n * @param {Scheduler} [scheduler] The scheduler on which to schedule the\n * emissions of values.\n * @return {Observable} The Observable whose values are originally from the\n * input object that was converted.\n * @static true\n * @name from\n * @owner Observable\n */\n FromObservable.create = function (ish, scheduler) {\n if (ish != null) {\n if (typeof ish[observable_1.observable] === 'function') {\n if (ish instanceof Observable_1.Observable && !scheduler) {\n return ish;\n }\n return new FromObservable(ish, scheduler);\n }\n else if (isArray_1.isArray(ish)) {\n return new ArrayObservable_1.ArrayObservable(ish, scheduler);\n }\n else if (isPromise_1.isPromise(ish)) {\n return new PromiseObservable_1.PromiseObservable(ish, scheduler);\n }\n else if (typeof ish[iterator_1.iterator] === 'function' || typeof ish === 'string') {\n return new IteratorObservable_1.IteratorObservable(ish, scheduler);\n }\n else if (isArrayLike_1.isArrayLike(ish)) {\n return new ArrayLikeObservable_1.ArrayLikeObservable(ish, scheduler);\n }\n }\n throw new TypeError((ish !== null && typeof ish || ish) + ' is not observable');\n };\n /** @deprecated internal use only */ FromObservable.prototype._subscribe = function (subscriber) {\n var ish = this.ish;\n var scheduler = this.scheduler;\n if (scheduler == null) {\n return ish[observable_1.observable]().subscribe(subscriber);\n }\n else {\n return ish[observable_1.observable]().subscribe(new observeOn_1.ObserveOnSubscriber(subscriber, scheduler, 0));\n }\n };\n return FromObservable;\n}(Observable_1.Observable));\nexports.FromObservable = FromObservable;\n//# sourceMappingURL=FromObservable.js.map","\"use strict\";\nvar __extends = (this && this.__extends) || function (d, b) {\n for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n};\nvar root_1 = require('../util/root');\nvar Observable_1 = require('../Observable');\n/**\n * We need this JSDoc comment for affecting ESDoc.\n * @extends {Ignored}\n * @hide true\n */\nvar PromiseObservable = (function (_super) {\n __extends(PromiseObservable, _super);\n function PromiseObservable(promise, scheduler) {\n _super.call(this);\n this.promise = promise;\n this.scheduler = scheduler;\n }\n /**\n * Converts a Promise to an Observable.\n *\n * Returns an Observable that just emits the Promise's\n * resolved value, then completes.\n *\n * Converts an ES2015 Promise or a Promises/A+ spec compliant Promise to an\n * Observable. If the Promise resolves with a value, the output Observable\n * emits that resolved value as a `next`, and then completes. If the Promise\n * is rejected, then the output Observable emits the corresponding Error.\n *\n * @example Convert the Promise returned by Fetch to an Observable\n * var result = Rx.Observable.fromPromise(fetch('http://myserver.com/'));\n * result.subscribe(x => console.log(x), e => console.error(e));\n *\n * @see {@link bindCallback}\n * @see {@link from}\n *\n * @param {PromiseLike} promise The promise to be converted.\n * @param {Scheduler} [scheduler] An optional IScheduler to use for scheduling\n * the delivery of the resolved value (or the rejection).\n * @return {Observable} An Observable which wraps the Promise.\n * @static true\n * @name fromPromise\n * @owner Observable\n */\n PromiseObservable.create = function (promise, scheduler) {\n return new PromiseObservable(promise, scheduler);\n };\n /** @deprecated internal use only */ PromiseObservable.prototype._subscribe = function (subscriber) {\n var _this = this;\n var promise = this.promise;\n var scheduler = this.scheduler;\n if (scheduler == null) {\n if (this._isScalar) {\n if (!subscriber.closed) {\n subscriber.next(this.value);\n subscriber.complete();\n }\n }\n else {\n promise.then(function (value) {\n _this.value = value;\n _this._isScalar = true;\n if (!subscriber.closed) {\n subscriber.next(value);\n subscriber.complete();\n }\n }, function (err) {\n if (!subscriber.closed) {\n subscriber.error(err);\n }\n })\n .then(null, function (err) {\n // escape the promise trap, throw unhandled errors\n root_1.root.setTimeout(function () { throw err; });\n });\n }\n }\n else {\n if (this._isScalar) {\n if (!subscriber.closed) {\n return scheduler.schedule(dispatchNext, 0, { value: this.value, subscriber: subscriber });\n }\n }\n else {\n promise.then(function (value) {\n _this.value = value;\n _this._isScalar = true;\n if (!subscriber.closed) {\n subscriber.add(scheduler.schedule(dispatchNext, 0, { value: value, subscriber: subscriber }));\n }\n }, function (err) {\n if (!subscriber.closed) {\n subscriber.add(scheduler.schedule(dispatchError, 0, { err: err, subscriber: subscriber }));\n }\n })\n .then(null, function (err) {\n // escape the promise trap, throw unhandled errors\n root_1.root.setTimeout(function () { throw err; });\n });\n }\n }\n };\n return PromiseObservable;\n}(Observable_1.Observable));\nexports.PromiseObservable = PromiseObservable;\nfunction dispatchNext(arg) {\n var value = arg.value, subscriber = arg.subscriber;\n if (!subscriber.closed) {\n subscriber.next(value);\n subscriber.complete();\n }\n}\nfunction dispatchError(arg) {\n var err = arg.err, subscriber = arg.subscriber;\n if (!subscriber.closed) {\n subscriber.error(err);\n }\n}\n//# sourceMappingURL=PromiseObservable.js.map","\"use strict\";\nvar __extends = (this && this.__extends) || function (d, b) {\n for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n};\nvar root_1 = require('../util/root');\nvar Observable_1 = require('../Observable');\nvar iterator_1 = require('../symbol/iterator');\n/**\n * We need this JSDoc comment for affecting ESDoc.\n * @extends {Ignored}\n * @hide true\n */\nvar IteratorObservable = (function (_super) {\n __extends(IteratorObservable, _super);\n function IteratorObservable(iterator, scheduler) {\n _super.call(this);\n this.scheduler = scheduler;\n if (iterator == null) {\n throw new Error('iterator cannot be null.');\n }\n this.iterator = getIterator(iterator);\n }\n IteratorObservable.create = function (iterator, scheduler) {\n return new IteratorObservable(iterator, scheduler);\n };\n IteratorObservable.dispatch = function (state) {\n var index = state.index, hasError = state.hasError, iterator = state.iterator, subscriber = state.subscriber;\n if (hasError) {\n subscriber.error(state.error);\n return;\n }\n var result = iterator.next();\n if (result.done) {\n subscriber.complete();\n return;\n }\n subscriber.next(result.value);\n state.index = index + 1;\n if (subscriber.closed) {\n if (typeof iterator.return === 'function') {\n iterator.return();\n }\n return;\n }\n this.schedule(state);\n };\n /** @deprecated internal use only */ IteratorObservable.prototype._subscribe = function (subscriber) {\n var index = 0;\n var _a = this, iterator = _a.iterator, scheduler = _a.scheduler;\n if (scheduler) {\n return scheduler.schedule(IteratorObservable.dispatch, 0, {\n index: index, iterator: iterator, subscriber: subscriber\n });\n }\n else {\n do {\n var result = iterator.next();\n if (result.done) {\n subscriber.complete();\n break;\n }\n else {\n subscriber.next(result.value);\n }\n if (subscriber.closed) {\n if (typeof iterator.return === 'function') {\n iterator.return();\n }\n break;\n }\n } while (true);\n }\n };\n return IteratorObservable;\n}(Observable_1.Observable));\nexports.IteratorObservable = IteratorObservable;\nvar StringIterator = (function () {\n function StringIterator(str, idx, len) {\n if (idx === void 0) { idx = 0; }\n if (len === void 0) { len = str.length; }\n this.str = str;\n this.idx = idx;\n this.len = len;\n }\n StringIterator.prototype[iterator_1.iterator] = function () { return (this); };\n StringIterator.prototype.next = function () {\n return this.idx < this.len ? {\n done: false,\n value: this.str.charAt(this.idx++)\n } : {\n done: true,\n value: undefined\n };\n };\n return StringIterator;\n}());\nvar ArrayIterator = (function () {\n function ArrayIterator(arr, idx, len) {\n if (idx === void 0) { idx = 0; }\n if (len === void 0) { len = toLength(arr); }\n this.arr = arr;\n this.idx = idx;\n this.len = len;\n }\n ArrayIterator.prototype[iterator_1.iterator] = function () { return this; };\n ArrayIterator.prototype.next = function () {\n return this.idx < this.len ? {\n done: false,\n value: this.arr[this.idx++]\n } : {\n done: true,\n value: undefined\n };\n };\n return ArrayIterator;\n}());\nfunction getIterator(obj) {\n var i = obj[iterator_1.iterator];\n if (!i && typeof obj === 'string') {\n return new StringIterator(obj);\n }\n if (!i && obj.length !== undefined) {\n return new ArrayIterator(obj);\n }\n if (!i) {\n throw new TypeError('object is not iterable');\n }\n return obj[iterator_1.iterator]();\n}\nvar maxSafeInteger = Math.pow(2, 53) - 1;\nfunction toLength(o) {\n var len = +o.length;\n if (isNaN(len)) {\n return 0;\n }\n if (len === 0 || !numberIsFinite(len)) {\n return len;\n }\n len = sign(len) * Math.floor(Math.abs(len));\n if (len <= 0) {\n return 0;\n }\n if (len > maxSafeInteger) {\n return maxSafeInteger;\n }\n return len;\n}\nfunction numberIsFinite(value) {\n return typeof value === 'number' && root_1.root.isFinite(value);\n}\nfunction sign(value) {\n var valueAsNumber = +value;\n if (valueAsNumber === 0) {\n return valueAsNumber;\n }\n if (isNaN(valueAsNumber)) {\n return valueAsNumber;\n }\n return valueAsNumber < 0 ? -1 : 1;\n}\n//# sourceMappingURL=IteratorObservable.js.map","\"use strict\";\nvar __extends = (this && this.__extends) || function (d, b) {\n for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n};\nvar Observable_1 = require('../Observable');\nvar ScalarObservable_1 = require('./ScalarObservable');\nvar EmptyObservable_1 = require('./EmptyObservable');\n/**\n * We need this JSDoc comment for affecting ESDoc.\n * @extends {Ignored}\n * @hide true\n */\nvar ArrayLikeObservable = (function (_super) {\n __extends(ArrayLikeObservable, _super);\n function ArrayLikeObservable(arrayLike, scheduler) {\n _super.call(this);\n this.arrayLike = arrayLike;\n this.scheduler = scheduler;\n if (!scheduler && arrayLike.length === 1) {\n this._isScalar = true;\n this.value = arrayLike[0];\n }\n }\n ArrayLikeObservable.create = function (arrayLike, scheduler) {\n var length = arrayLike.length;\n if (length === 0) {\n return new EmptyObservable_1.EmptyObservable();\n }\n else if (length === 1) {\n return new ScalarObservable_1.ScalarObservable(arrayLike[0], scheduler);\n }\n else {\n return new ArrayLikeObservable(arrayLike, scheduler);\n }\n };\n ArrayLikeObservable.dispatch = function (state) {\n var arrayLike = state.arrayLike, index = state.index, length = state.length, subscriber = state.subscriber;\n if (subscriber.closed) {\n return;\n }\n if (index >= length) {\n subscriber.complete();\n return;\n }\n subscriber.next(arrayLike[index]);\n state.index = index + 1;\n this.schedule(state);\n };\n /** @deprecated internal use only */ ArrayLikeObservable.prototype._subscribe = function (subscriber) {\n var index = 0;\n var _a = this, arrayLike = _a.arrayLike, scheduler = _a.scheduler;\n var length = arrayLike.length;\n if (scheduler) {\n return scheduler.schedule(ArrayLikeObservable.dispatch, 0, {\n arrayLike: arrayLike, index: index, length: length, subscriber: subscriber\n });\n }\n else {\n for (var i = 0; i < length && !subscriber.closed; i++) {\n subscriber.next(arrayLike[i]);\n }\n subscriber.complete();\n }\n };\n return ArrayLikeObservable;\n}(Observable_1.Observable));\nexports.ArrayLikeObservable = ArrayLikeObservable;\n//# sourceMappingURL=ArrayLikeObservable.js.map","\"use strict\";\nvar __extends = (this && this.__extends) || function (d, b) {\n for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n};\nvar Subscriber_1 = require('../Subscriber');\nvar Notification_1 = require('../Notification');\n/**\n *\n * Re-emits all notifications from source Observable with specified scheduler.\n *\n * Ensure a specific scheduler is used, from outside of an Observable.\n *\n * `observeOn` is an operator that accepts a scheduler as a first parameter, which will be used to reschedule\n * notifications emitted by the source Observable. It might be useful, if you do not have control over\n * internal scheduler of a given Observable, but want to control when its values are emitted nevertheless.\n *\n * Returned Observable emits the same notifications (nexted values, complete and error events) as the source Observable,\n * but rescheduled with provided scheduler. Note that this doesn't mean that source Observables internal\n * scheduler will be replaced in any way. Original scheduler still will be used, but when the source Observable emits\n * notification, it will be immediately scheduled again - this time with scheduler passed to `observeOn`.\n * An anti-pattern would be calling `observeOn` on Observable that emits lots of values synchronously, to split\n * that emissions into asynchronous chunks. For this to happen, scheduler would have to be passed into the source\n * Observable directly (usually into the operator that creates it). `observeOn` simply delays notifications a\n * little bit more, to ensure that they are emitted at expected moments.\n *\n * As a matter of fact, `observeOn` accepts second parameter, which specifies in milliseconds with what delay notifications\n * will be emitted. The main difference between {@link delay} operator and `observeOn` is that `observeOn`\n * will delay all notifications - including error notifications - while `delay` will pass through error\n * from source Observable immediately when it is emitted. In general it is highly recommended to use `delay` operator\n * for any kind of delaying of values in the stream, while using `observeOn` to specify which scheduler should be used\n * for notification emissions in general.\n *\n * @example Ensure values in subscribe are called just before browser repaint.\n * const intervals = Rx.Observable.interval(10); // Intervals are scheduled\n * // with async scheduler by default...\n *\n * intervals\n * .observeOn(Rx.Scheduler.animationFrame) // ...but we will observe on animationFrame\n * .subscribe(val => { // scheduler to ensure smooth animation.\n * someDiv.style.height = val + 'px';\n * });\n *\n * @see {@link delay}\n *\n * @param {IScheduler} scheduler Scheduler that will be used to reschedule notifications from source Observable.\n * @param {number} [delay] Number of milliseconds that states with what delay every notification should be rescheduled.\n * @return {Observable} Observable that emits the same notifications as the source Observable,\n * but with provided scheduler.\n *\n * @method observeOn\n * @owner Observable\n */\nfunction observeOn(scheduler, delay) {\n if (delay === void 0) { delay = 0; }\n return function observeOnOperatorFunction(source) {\n return source.lift(new ObserveOnOperator(scheduler, delay));\n };\n}\nexports.observeOn = observeOn;\nvar ObserveOnOperator = (function () {\n function ObserveOnOperator(scheduler, delay) {\n if (delay === void 0) { delay = 0; }\n this.scheduler = scheduler;\n this.delay = delay;\n }\n ObserveOnOperator.prototype.call = function (subscriber, source) {\n return source.subscribe(new ObserveOnSubscriber(subscriber, this.scheduler, this.delay));\n };\n return ObserveOnOperator;\n}());\nexports.ObserveOnOperator = ObserveOnOperator;\n/**\n * We need this JSDoc comment for affecting ESDoc.\n * @ignore\n * @extends {Ignored}\n */\nvar ObserveOnSubscriber = (function (_super) {\n __extends(ObserveOnSubscriber, _super);\n function ObserveOnSubscriber(destination, scheduler, delay) {\n if (delay === void 0) { delay = 0; }\n _super.call(this, destination);\n this.scheduler = scheduler;\n this.delay = delay;\n }\n ObserveOnSubscriber.dispatch = function (arg) {\n var notification = arg.notification, destination = arg.destination;\n notification.observe(destination);\n this.unsubscribe();\n };\n ObserveOnSubscriber.prototype.scheduleMessage = function (notification) {\n this.add(this.scheduler.schedule(ObserveOnSubscriber.dispatch, this.delay, new ObserveOnMessage(notification, this.destination)));\n };\n ObserveOnSubscriber.prototype._next = function (value) {\n this.scheduleMessage(Notification_1.Notification.createNext(value));\n };\n ObserveOnSubscriber.prototype._error = function (err) {\n this.scheduleMessage(Notification_1.Notification.createError(err));\n };\n ObserveOnSubscriber.prototype._complete = function () {\n this.scheduleMessage(Notification_1.Notification.createComplete());\n };\n return ObserveOnSubscriber;\n}(Subscriber_1.Subscriber));\nexports.ObserveOnSubscriber = ObserveOnSubscriber;\nvar ObserveOnMessage = (function () {\n function ObserveOnMessage(notification, destination) {\n this.notification = notification;\n this.destination = destination;\n }\n return ObserveOnMessage;\n}());\nexports.ObserveOnMessage = ObserveOnMessage;\n//# sourceMappingURL=observeOn.js.map","\"use strict\";\nvar Observable_1 = require('./Observable');\n/**\n * Represents a push-based event or value that an {@link Observable} can emit.\n * This class is particularly useful for operators that manage notifications,\n * like {@link materialize}, {@link dematerialize}, {@link observeOn}, and\n * others. Besides wrapping the actual delivered value, it also annotates it\n * with metadata of, for instance, what type of push message it is (`next`,\n * `error`, or `complete`).\n *\n * @see {@link materialize}\n * @see {@link dematerialize}\n * @see {@link observeOn}\n *\n * @class Notification\n */\nvar Notification = (function () {\n function Notification(kind, value, error) {\n this.kind = kind;\n this.value = value;\n this.error = error;\n this.hasValue = kind === 'N';\n }\n /**\n * Delivers to the given `observer` the value wrapped by this Notification.\n * @param {Observer} observer\n * @return\n */\n Notification.prototype.observe = function (observer) {\n switch (this.kind) {\n case 'N':\n return observer.next && observer.next(this.value);\n case 'E':\n return observer.error && observer.error(this.error);\n case 'C':\n return observer.complete && observer.complete();\n }\n };\n /**\n * Given some {@link Observer} callbacks, deliver the value represented by the\n * current Notification to the correctly corresponding callback.\n * @param {function(value: T): void} next An Observer `next` callback.\n * @param {function(err: any): void} [error] An Observer `error` callback.\n * @param {function(): void} [complete] An Observer `complete` callback.\n * @return {any}\n */\n Notification.prototype.do = function (next, error, complete) {\n var kind = this.kind;\n switch (kind) {\n case 'N':\n return next && next(this.value);\n case 'E':\n return error && error(this.error);\n case 'C':\n return complete && complete();\n }\n };\n /**\n * Takes an Observer or its individual callback functions, and calls `observe`\n * or `do` methods accordingly.\n * @param {Observer|function(value: T): void} nextOrObserver An Observer or\n * the `next` callback.\n * @param {function(err: any): void} [error] An Observer `error` callback.\n * @param {function(): void} [complete] An Observer `complete` callback.\n * @return {any}\n */\n Notification.prototype.accept = function (nextOrObserver, error, complete) {\n if (nextOrObserver && typeof nextOrObserver.next === 'function') {\n return this.observe(nextOrObserver);\n }\n else {\n return this.do(nextOrObserver, error, complete);\n }\n };\n /**\n * Returns a simple Observable that just delivers the notification represented\n * by this Notification instance.\n * @return {any}\n */\n Notification.prototype.toObservable = function () {\n var kind = this.kind;\n switch (kind) {\n case 'N':\n return Observable_1.Observable.of(this.value);\n case 'E':\n return Observable_1.Observable.throw(this.error);\n case 'C':\n return Observable_1.Observable.empty();\n }\n throw new Error('unexpected notification kind value');\n };\n /**\n * A shortcut to create a Notification instance of the type `next` from a\n * given value.\n * @param {T} value The `next` value.\n * @return {Notification} The \"next\" Notification representing the\n * argument.\n */\n Notification.createNext = function (value) {\n if (typeof value !== 'undefined') {\n return new Notification('N', value);\n }\n return Notification.undefinedValueNotification;\n };\n /**\n * A shortcut to create a Notification instance of the type `error` from a\n * given error.\n * @param {any} [err] The `error` error.\n * @return {Notification} The \"error\" Notification representing the\n * argument.\n */\n Notification.createError = function (err) {\n return new Notification('E', undefined, err);\n };\n /**\n * A shortcut to create a Notification instance of the type `complete`.\n * @return {Notification} The valueless \"complete\" Notification.\n */\n Notification.createComplete = function () {\n return Notification.completeNotification;\n };\n Notification.completeNotification = new Notification('C');\n Notification.undefinedValueNotification = new Notification('N', undefined);\n return Notification;\n}());\nexports.Notification = Notification;\n//# sourceMappingURL=Notification.js.map","\"use strict\";\nvar mergeAll_1 = require('./mergeAll');\n/**\n * Converts a higher-order Observable into a first-order Observable by\n * concatenating the inner Observables in order.\n *\n * Flattens an Observable-of-Observables by putting one\n * inner Observable after the other.\n *\n * \n *\n * Joins every Observable emitted by the source (a higher-order Observable), in\n * a serial fashion. It subscribes to each inner Observable only after the\n * previous inner Observable has completed, and merges all of their values into\n * the returned observable.\n *\n * __Warning:__ If the source Observable emits Observables quickly and\n * endlessly, and the inner Observables it emits generally complete slower than\n * the source emits, you can run into memory issues as the incoming Observables\n * collect in an unbounded buffer.\n *\n * Note: `concatAll` is equivalent to `mergeAll` with concurrency parameter set\n * to `1`.\n *\n * @example For each click event, tick every second from 0 to 3, with no concurrency\n * var clicks = Rx.Observable.fromEvent(document, 'click');\n * var higherOrder = clicks.map(ev => Rx.Observable.interval(1000).take(4));\n * var firstOrder = higherOrder.concatAll();\n * firstOrder.subscribe(x => console.log(x));\n *\n * // Results in the following:\n * // (results are not concurrent)\n * // For every click on the \"document\" it will emit values 0 to 3 spaced\n * // on a 1000ms interval\n * // one click = 1000ms-> 0 -1000ms-> 1 -1000ms-> 2 -1000ms-> 3\n *\n * @see {@link combineAll}\n * @see {@link concat}\n * @see {@link concatMap}\n * @see {@link concatMapTo}\n * @see {@link exhaust}\n * @see {@link mergeAll}\n * @see {@link switch}\n * @see {@link zipAll}\n *\n * @return {Observable} An Observable emitting values from all the inner\n * Observables concatenated.\n * @method concatAll\n * @owner Observable\n */\nfunction concatAll() {\n return mergeAll_1.mergeAll(1);\n}\nexports.concatAll = concatAll;\n//# sourceMappingURL=concatAll.js.map","\"use strict\";\nvar mergeMap_1 = require('./mergeMap');\nvar identity_1 = require('../util/identity');\n/**\n * Converts a higher-order Observable into a first-order Observable which\n * concurrently delivers all values that are emitted on the inner Observables.\n *\n * Flattens an Observable-of-Observables.\n *\n * \n *\n * `mergeAll` subscribes to an Observable that emits Observables, also known as\n * a higher-order Observable. Each time it observes one of these emitted inner\n * Observables, it subscribes to that and delivers all the values from the\n * inner Observable on the output Observable. The output Observable only\n * completes once all inner Observables have completed. Any error delivered by\n * a inner Observable will be immediately emitted on the output Observable.\n *\n * @example Spawn a new interval Observable for each click event, and blend their outputs as one Observable\n * var clicks = Rx.Observable.fromEvent(document, 'click');\n * var higherOrder = clicks.map((ev) => Rx.Observable.interval(1000));\n * var firstOrder = higherOrder.mergeAll();\n * firstOrder.subscribe(x => console.log(x));\n *\n * @example Count from 0 to 9 every second for each click, but only allow 2 concurrent timers\n * var clicks = Rx.Observable.fromEvent(document, 'click');\n * var higherOrder = clicks.map((ev) => Rx.Observable.interval(1000).take(10));\n * var firstOrder = higherOrder.mergeAll(2);\n * firstOrder.subscribe(x => console.log(x));\n *\n * @see {@link combineAll}\n * @see {@link concatAll}\n * @see {@link exhaust}\n * @see {@link merge}\n * @see {@link mergeMap}\n * @see {@link mergeMapTo}\n * @see {@link mergeScan}\n * @see {@link switch}\n * @see {@link zipAll}\n *\n * @param {number} [concurrent=Number.POSITIVE_INFINITY] Maximum number of inner\n * Observables being subscribed to concurrently.\n * @return {Observable} An Observable that emits values coming from all the\n * inner Observables emitted by the source Observable.\n * @method mergeAll\n * @owner Observable\n */\nfunction mergeAll(concurrent) {\n if (concurrent === void 0) { concurrent = Number.POSITIVE_INFINITY; }\n return mergeMap_1.mergeMap(identity_1.identity, null, concurrent);\n}\nexports.mergeAll = mergeAll;\n//# sourceMappingURL=mergeAll.js.map","\"use strict\";\nvar __extends = (this && this.__extends) || function (d, b) {\n for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n};\nvar subscribeToResult_1 = require('../util/subscribeToResult');\nvar OuterSubscriber_1 = require('../OuterSubscriber');\n/* tslint:enable:max-line-length */\n/**\n * Projects each source value to an Observable which is merged in the output\n * Observable.\n *\n * Maps each value to an Observable, then flattens all of\n * these inner Observables using {@link mergeAll}.\n *\n * \n *\n * Returns an Observable that emits items based on applying a function that you\n * supply to each item emitted by the source Observable, where that function\n * returns an Observable, and then merging those resulting Observables and\n * emitting the results of this merger.\n *\n * @example Map and flatten each letter to an Observable ticking every 1 second\n * var letters = Rx.Observable.of('a', 'b', 'c');\n * var result = letters.mergeMap(x =>\n * Rx.Observable.interval(1000).map(i => x+i)\n * );\n * result.subscribe(x => console.log(x));\n *\n * // Results in the following:\n * // a0\n * // b0\n * // c0\n * // a1\n * // b1\n * // c1\n * // continues to list a,b,c with respective ascending integers\n *\n * @see {@link concatMap}\n * @see {@link exhaustMap}\n * @see {@link merge}\n * @see {@link mergeAll}\n * @see {@link mergeMapTo}\n * @see {@link mergeScan}\n * @see {@link switchMap}\n *\n * @param {function(value: T, ?index: number): ObservableInput} project A function\n * that, when applied to an item emitted by the source Observable, returns an\n * Observable.\n * @param {function(outerValue: T, innerValue: I, outerIndex: number, innerIndex: number): any} [resultSelector]\n * A function to produce the value on the output Observable based on the values\n * and the indices of the source (outer) emission and the inner Observable\n * emission. The arguments passed to this function are:\n * - `outerValue`: the value that came from the source\n * - `innerValue`: the value that came from the projected Observable\n * - `outerIndex`: the \"index\" of the value that came from the source\n * - `innerIndex`: the \"index\" of the value from the projected Observable\n * @param {number} [concurrent=Number.POSITIVE_INFINITY] Maximum number of input\n * Observables being subscribed to concurrently.\n * @return {Observable} An Observable that emits the result of applying the\n * projection function (and the optional `resultSelector`) to each item emitted\n * by the source Observable and merging the results of the Observables obtained\n * from this transformation.\n * @method mergeMap\n * @owner Observable\n */\nfunction mergeMap(project, resultSelector, concurrent) {\n if (concurrent === void 0) { concurrent = Number.POSITIVE_INFINITY; }\n return function mergeMapOperatorFunction(source) {\n if (typeof resultSelector === 'number') {\n concurrent = resultSelector;\n resultSelector = null;\n }\n return source.lift(new MergeMapOperator(project, resultSelector, concurrent));\n };\n}\nexports.mergeMap = mergeMap;\nvar MergeMapOperator = (function () {\n function MergeMapOperator(project, resultSelector, concurrent) {\n if (concurrent === void 0) { concurrent = Number.POSITIVE_INFINITY; }\n this.project = project;\n this.resultSelector = resultSelector;\n this.concurrent = concurrent;\n }\n MergeMapOperator.prototype.call = function (observer, source) {\n return source.subscribe(new MergeMapSubscriber(observer, this.project, this.resultSelector, this.concurrent));\n };\n return MergeMapOperator;\n}());\nexports.MergeMapOperator = MergeMapOperator;\n/**\n * We need this JSDoc comment for affecting ESDoc.\n * @ignore\n * @extends {Ignored}\n */\nvar MergeMapSubscriber = (function (_super) {\n __extends(MergeMapSubscriber, _super);\n function MergeMapSubscriber(destination, project, resultSelector, concurrent) {\n if (concurrent === void 0) { concurrent = Number.POSITIVE_INFINITY; }\n _super.call(this, destination);\n this.project = project;\n this.resultSelector = resultSelector;\n this.concurrent = concurrent;\n this.hasCompleted = false;\n this.buffer = [];\n this.active = 0;\n this.index = 0;\n }\n MergeMapSubscriber.prototype._next = function (value) {\n if (this.active < this.concurrent) {\n this._tryNext(value);\n }\n else {\n this.buffer.push(value);\n }\n };\n MergeMapSubscriber.prototype._tryNext = function (value) {\n var result;\n var index = this.index++;\n try {\n result = this.project(value, index);\n }\n catch (err) {\n this.destination.error(err);\n return;\n }\n this.active++;\n this._innerSub(result, value, index);\n };\n MergeMapSubscriber.prototype._innerSub = function (ish, value, index) {\n this.add(subscribeToResult_1.subscribeToResult(this, ish, value, index));\n };\n MergeMapSubscriber.prototype._complete = function () {\n this.hasCompleted = true;\n if (this.active === 0 && this.buffer.length === 0) {\n this.destination.complete();\n }\n };\n MergeMapSubscriber.prototype.notifyNext = function (outerValue, innerValue, outerIndex, innerIndex, innerSub) {\n if (this.resultSelector) {\n this._notifyResultSelector(outerValue, innerValue, outerIndex, innerIndex);\n }\n else {\n this.destination.next(innerValue);\n }\n };\n MergeMapSubscriber.prototype._notifyResultSelector = function (outerValue, innerValue, outerIndex, innerIndex) {\n var result;\n try {\n result = this.resultSelector(outerValue, innerValue, outerIndex, innerIndex);\n }\n catch (err) {\n this.destination.error(err);\n return;\n }\n this.destination.next(result);\n };\n MergeMapSubscriber.prototype.notifyComplete = function (innerSub) {\n var buffer = this.buffer;\n this.remove(innerSub);\n this.active--;\n if (buffer.length > 0) {\n this._next(buffer.shift());\n }\n else if (this.active === 0 && this.hasCompleted) {\n this.destination.complete();\n }\n };\n return MergeMapSubscriber;\n}(OuterSubscriber_1.OuterSubscriber));\nexports.MergeMapSubscriber = MergeMapSubscriber;\n//# sourceMappingURL=mergeMap.js.map","\"use strict\";\nvar __extends = (this && this.__extends) || function (d, b) {\n for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n};\nvar Subscriber_1 = require('./Subscriber');\n/**\n * We need this JSDoc comment for affecting ESDoc.\n * @ignore\n * @extends {Ignored}\n */\nvar InnerSubscriber = (function (_super) {\n __extends(InnerSubscriber, _super);\n function InnerSubscriber(parent, outerValue, outerIndex) {\n _super.call(this);\n this.parent = parent;\n this.outerValue = outerValue;\n this.outerIndex = outerIndex;\n this.index = 0;\n }\n InnerSubscriber.prototype._next = function (value) {\n this.parent.notifyNext(this.outerValue, value, this.outerIndex, this.index++, this);\n };\n InnerSubscriber.prototype._error = function (error) {\n this.parent.notifyError(error, this);\n this.unsubscribe();\n };\n InnerSubscriber.prototype._complete = function () {\n this.parent.notifyComplete(this);\n this.unsubscribe();\n };\n return InnerSubscriber;\n}(Subscriber_1.Subscriber));\nexports.InnerSubscriber = InnerSubscriber;\n//# sourceMappingURL=InnerSubscriber.js.map","\"use strict\";\nfunction identity(x) {\n return x;\n}\nexports.identity = identity;\n//# sourceMappingURL=identity.js.map","\"use strict\";\nvar Observable_1 = require('../../../Observable');\nvar ajax_1 = require('../../../observable/dom/ajax');\nObservable_1.Observable.ajax = ajax_1.ajax;\n//# sourceMappingURL=ajax.js.map","\"use strict\";\nvar AjaxObservable_1 = require('./AjaxObservable');\nexports.ajax = AjaxObservable_1.AjaxObservable.create;\n//# sourceMappingURL=ajax.js.map","\"use strict\";\nvar __extends = (this && this.__extends) || function (d, b) {\n for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n};\nvar root_1 = require('../../util/root');\nvar tryCatch_1 = require('../../util/tryCatch');\nvar errorObject_1 = require('../../util/errorObject');\nvar Observable_1 = require('../../Observable');\nvar Subscriber_1 = require('../../Subscriber');\nvar map_1 = require('../../operators/map');\nfunction getCORSRequest() {\n if (root_1.root.XMLHttpRequest) {\n return new root_1.root.XMLHttpRequest();\n }\n else if (!!root_1.root.XDomainRequest) {\n return new root_1.root.XDomainRequest();\n }\n else {\n throw new Error('CORS is not supported by your browser');\n }\n}\nfunction getXMLHttpRequest() {\n if (root_1.root.XMLHttpRequest) {\n return new root_1.root.XMLHttpRequest();\n }\n else {\n var progId = void 0;\n try {\n var progIds = ['Msxml2.XMLHTTP', 'Microsoft.XMLHTTP', 'Msxml2.XMLHTTP.4.0'];\n for (var i = 0; i < 3; i++) {\n try {\n progId = progIds[i];\n if (new root_1.root.ActiveXObject(progId)) {\n break;\n }\n }\n catch (e) {\n }\n }\n return new root_1.root.ActiveXObject(progId);\n }\n catch (e) {\n throw new Error('XMLHttpRequest is not supported by your browser');\n }\n }\n}\nfunction ajaxGet(url, headers) {\n if (headers === void 0) { headers = null; }\n return new AjaxObservable({ method: 'GET', url: url, headers: headers });\n}\nexports.ajaxGet = ajaxGet;\n;\nfunction ajaxPost(url, body, headers) {\n return new AjaxObservable({ method: 'POST', url: url, body: body, headers: headers });\n}\nexports.ajaxPost = ajaxPost;\n;\nfunction ajaxDelete(url, headers) {\n return new AjaxObservable({ method: 'DELETE', url: url, headers: headers });\n}\nexports.ajaxDelete = ajaxDelete;\n;\nfunction ajaxPut(url, body, headers) {\n return new AjaxObservable({ method: 'PUT', url: url, body: body, headers: headers });\n}\nexports.ajaxPut = ajaxPut;\n;\nfunction ajaxPatch(url, body, headers) {\n return new AjaxObservable({ method: 'PATCH', url: url, body: body, headers: headers });\n}\nexports.ajaxPatch = ajaxPatch;\n;\nvar mapResponse = map_1.map(function (x, index) { return x.response; });\nfunction ajaxGetJSON(url, headers) {\n return mapResponse(new AjaxObservable({\n method: 'GET',\n url: url,\n responseType: 'json',\n headers: headers\n }));\n}\nexports.ajaxGetJSON = ajaxGetJSON;\n;\n/**\n * We need this JSDoc comment for affecting ESDoc.\n * @extends {Ignored}\n * @hide true\n */\nvar AjaxObservable = (function (_super) {\n __extends(AjaxObservable, _super);\n function AjaxObservable(urlOrRequest) {\n _super.call(this);\n var request = {\n async: true,\n createXHR: function () {\n return this.crossDomain ? getCORSRequest.call(this) : getXMLHttpRequest();\n },\n crossDomain: false,\n withCredentials: false,\n headers: {},\n method: 'GET',\n responseType: 'json',\n timeout: 0\n };\n if (typeof urlOrRequest === 'string') {\n request.url = urlOrRequest;\n }\n else {\n for (var prop in urlOrRequest) {\n if (urlOrRequest.hasOwnProperty(prop)) {\n request[prop] = urlOrRequest[prop];\n }\n }\n }\n this.request = request;\n }\n /** @deprecated internal use only */ AjaxObservable.prototype._subscribe = function (subscriber) {\n return new AjaxSubscriber(subscriber, this.request);\n };\n /**\n * Creates an observable for an Ajax request with either a request object with\n * url, headers, etc or a string for a URL.\n *\n * @example\n * source = Rx.Observable.ajax('/products');\n * source = Rx.Observable.ajax({ url: 'products', method: 'GET' });\n *\n * @param {string|Object} request Can be one of the following:\n * A string of the URL to make the Ajax call.\n * An object with the following properties\n * - url: URL of the request\n * - body: The body of the request\n * - method: Method of the request, such as GET, POST, PUT, PATCH, DELETE\n * - async: Whether the request is async\n * - headers: Optional headers\n * - crossDomain: true if a cross domain request, else false\n * - createXHR: a function to override if you need to use an alternate\n * XMLHttpRequest implementation.\n * - resultSelector: a function to use to alter the output value type of\n * the Observable. Gets {@link AjaxResponse} as an argument.\n * @return {Observable} An observable sequence containing the XMLHttpRequest.\n * @static true\n * @name ajax\n * @owner Observable\n */\n AjaxObservable.create = (function () {\n var create = function (urlOrRequest) {\n return new AjaxObservable(urlOrRequest);\n };\n create.get = ajaxGet;\n create.post = ajaxPost;\n create.delete = ajaxDelete;\n create.put = ajaxPut;\n create.patch = ajaxPatch;\n create.getJSON = ajaxGetJSON;\n return create;\n })();\n return AjaxObservable;\n}(Observable_1.Observable));\nexports.AjaxObservable = AjaxObservable;\n/**\n * We need this JSDoc comment for affecting ESDoc.\n * @ignore\n * @extends {Ignored}\n */\nvar AjaxSubscriber = (function (_super) {\n __extends(AjaxSubscriber, _super);\n function AjaxSubscriber(destination, request) {\n _super.call(this, destination);\n this.request = request;\n this.done = false;\n var headers = request.headers = request.headers || {};\n // force CORS if requested\n if (!request.crossDomain && !headers['X-Requested-With']) {\n headers['X-Requested-With'] = 'XMLHttpRequest';\n }\n // ensure content type is set\n if (!('Content-Type' in headers) && !(root_1.root.FormData && request.body instanceof root_1.root.FormData) && typeof request.body !== 'undefined') {\n headers['Content-Type'] = 'application/x-www-form-urlencoded; charset=UTF-8';\n }\n // properly serialize body\n request.body = this.serializeBody(request.body, request.headers['Content-Type']);\n this.send();\n }\n AjaxSubscriber.prototype.next = function (e) {\n this.done = true;\n var _a = this, xhr = _a.xhr, request = _a.request, destination = _a.destination;\n var response = new AjaxResponse(e, xhr, request);\n destination.next(response);\n };\n AjaxSubscriber.prototype.send = function () {\n var _a = this, request = _a.request, _b = _a.request, user = _b.user, method = _b.method, url = _b.url, async = _b.async, password = _b.password, headers = _b.headers, body = _b.body;\n var createXHR = request.createXHR;\n var xhr = tryCatch_1.tryCatch(createXHR).call(request);\n if (xhr === errorObject_1.errorObject) {\n this.error(errorObject_1.errorObject.e);\n }\n else {\n this.xhr = xhr;\n // set up the events before open XHR\n // https://developer.mozilla.org/en/docs/Web/API/XMLHttpRequest/Using_XMLHttpRequest\n // You need to add the event listeners before calling open() on the request.\n // Otherwise the progress events will not fire.\n this.setupEvents(xhr, request);\n // open XHR\n var result = void 0;\n if (user) {\n result = tryCatch_1.tryCatch(xhr.open).call(xhr, method, url, async, user, password);\n }\n else {\n result = tryCatch_1.tryCatch(xhr.open).call(xhr, method, url, async);\n }\n if (result === errorObject_1.errorObject) {\n this.error(errorObject_1.errorObject.e);\n return null;\n }\n // timeout, responseType and withCredentials can be set once the XHR is open\n if (async) {\n xhr.timeout = request.timeout;\n xhr.responseType = request.responseType;\n }\n if ('withCredentials' in xhr) {\n xhr.withCredentials = !!request.withCredentials;\n }\n // set headers\n this.setHeaders(xhr, headers);\n // finally send the request\n result = body ? tryCatch_1.tryCatch(xhr.send).call(xhr, body) : tryCatch_1.tryCatch(xhr.send).call(xhr);\n if (result === errorObject_1.errorObject) {\n this.error(errorObject_1.errorObject.e);\n return null;\n }\n }\n return xhr;\n };\n AjaxSubscriber.prototype.serializeBody = function (body, contentType) {\n if (!body || typeof body === 'string') {\n return body;\n }\n else if (root_1.root.FormData && body instanceof root_1.root.FormData) {\n return body;\n }\n if (contentType) {\n var splitIndex = contentType.indexOf(';');\n if (splitIndex !== -1) {\n contentType = contentType.substring(0, splitIndex);\n }\n }\n switch (contentType) {\n case 'application/x-www-form-urlencoded':\n return Object.keys(body).map(function (key) { return (encodeURIComponent(key) + \"=\" + encodeURIComponent(body[key])); }).join('&');\n case 'application/json':\n return JSON.stringify(body);\n default:\n return body;\n }\n };\n AjaxSubscriber.prototype.setHeaders = function (xhr, headers) {\n for (var key in headers) {\n if (headers.hasOwnProperty(key)) {\n xhr.setRequestHeader(key, headers[key]);\n }\n }\n };\n AjaxSubscriber.prototype.setupEvents = function (xhr, request) {\n var progressSubscriber = request.progressSubscriber;\n function xhrTimeout(e) {\n var _a = xhrTimeout, subscriber = _a.subscriber, progressSubscriber = _a.progressSubscriber, request = _a.request;\n if (progressSubscriber) {\n progressSubscriber.error(e);\n }\n subscriber.error(new AjaxTimeoutError(this, request)); //TODO: Make betterer.\n }\n ;\n xhr.ontimeout = xhrTimeout;\n xhrTimeout.request = request;\n xhrTimeout.subscriber = this;\n xhrTimeout.progressSubscriber = progressSubscriber;\n if (xhr.upload && 'withCredentials' in xhr) {\n if (progressSubscriber) {\n var xhrProgress_1;\n xhrProgress_1 = function (e) {\n var progressSubscriber = xhrProgress_1.progressSubscriber;\n progressSubscriber.next(e);\n };\n if (root_1.root.XDomainRequest) {\n xhr.onprogress = xhrProgress_1;\n }\n else {\n xhr.upload.onprogress = xhrProgress_1;\n }\n xhrProgress_1.progressSubscriber = progressSubscriber;\n }\n var xhrError_1;\n xhrError_1 = function (e) {\n var _a = xhrError_1, progressSubscriber = _a.progressSubscriber, subscriber = _a.subscriber, request = _a.request;\n if (progressSubscriber) {\n progressSubscriber.error(e);\n }\n subscriber.error(new AjaxError('ajax error', this, request));\n };\n xhr.onerror = xhrError_1;\n xhrError_1.request = request;\n xhrError_1.subscriber = this;\n xhrError_1.progressSubscriber = progressSubscriber;\n }\n function xhrReadyStateChange(e) {\n var _a = xhrReadyStateChange, subscriber = _a.subscriber, progressSubscriber = _a.progressSubscriber, request = _a.request;\n if (this.readyState === 4) {\n // normalize IE9 bug (http://bugs.jquery.com/ticket/1450)\n var status_1 = this.status === 1223 ? 204 : this.status;\n var response = (this.responseType === 'text' ? (this.response || this.responseText) : this.response);\n // fix status code when it is 0 (0 status is undocumented).\n // Occurs when accessing file resources or on Android 4.1 stock browser\n // while retrieving files from application cache.\n if (status_1 === 0) {\n status_1 = response ? 200 : 0;\n }\n if (200 <= status_1 && status_1 < 300) {\n if (progressSubscriber) {\n progressSubscriber.complete();\n }\n subscriber.next(e);\n subscriber.complete();\n }\n else {\n if (progressSubscriber) {\n progressSubscriber.error(e);\n }\n subscriber.error(new AjaxError('ajax error ' + status_1, this, request));\n }\n }\n }\n ;\n xhr.onreadystatechange = xhrReadyStateChange;\n xhrReadyStateChange.subscriber = this;\n xhrReadyStateChange.progressSubscriber = progressSubscriber;\n xhrReadyStateChange.request = request;\n };\n AjaxSubscriber.prototype.unsubscribe = function () {\n var _a = this, done = _a.done, xhr = _a.xhr;\n if (!done && xhr && xhr.readyState !== 4 && typeof xhr.abort === 'function') {\n xhr.abort();\n }\n _super.prototype.unsubscribe.call(this);\n };\n return AjaxSubscriber;\n}(Subscriber_1.Subscriber));\nexports.AjaxSubscriber = AjaxSubscriber;\n/**\n * A normalized AJAX response.\n *\n * @see {@link ajax}\n *\n * @class AjaxResponse\n */\nvar AjaxResponse = (function () {\n function AjaxResponse(originalEvent, xhr, request) {\n this.originalEvent = originalEvent;\n this.xhr = xhr;\n this.request = request;\n this.status = xhr.status;\n this.responseType = xhr.responseType || request.responseType;\n this.response = parseXhrResponse(this.responseType, xhr);\n }\n return AjaxResponse;\n}());\nexports.AjaxResponse = AjaxResponse;\n/**\n * A normalized AJAX error.\n *\n * @see {@link ajax}\n *\n * @class AjaxError\n */\nvar AjaxError = (function (_super) {\n __extends(AjaxError, _super);\n function AjaxError(message, xhr, request) {\n _super.call(this, message);\n this.message = message;\n this.xhr = xhr;\n this.request = request;\n this.status = xhr.status;\n this.responseType = xhr.responseType || request.responseType;\n this.response = parseXhrResponse(this.responseType, xhr);\n }\n return AjaxError;\n}(Error));\nexports.AjaxError = AjaxError;\nfunction parseXhrResponse(responseType, xhr) {\n switch (responseType) {\n case 'json':\n if ('response' in xhr) {\n //IE does not support json as responseType, parse it internally\n return xhr.responseType ? xhr.response : JSON.parse(xhr.response || xhr.responseText || 'null');\n }\n else {\n // HACK(benlesh): TypeScript shennanigans\n // tslint:disable-next-line:no-any latest TS seems to think xhr is \"never\" here.\n return JSON.parse(xhr.responseText || 'null');\n }\n case 'xml':\n return xhr.responseXML;\n case 'text':\n default:\n // HACK(benlesh): TypeScript shennanigans\n // tslint:disable-next-line:no-any latest TS seems to think xhr is \"never\" here.\n return ('response' in xhr) ? xhr.response : xhr.responseText;\n }\n}\n/**\n * @see {@link ajax}\n *\n * @class AjaxTimeoutError\n */\nvar AjaxTimeoutError = (function (_super) {\n __extends(AjaxTimeoutError, _super);\n function AjaxTimeoutError(xhr, request) {\n _super.call(this, 'ajax timeout', xhr, request);\n }\n return AjaxTimeoutError;\n}(AjaxError));\nexports.AjaxTimeoutError = AjaxTimeoutError;\n//# sourceMappingURL=AjaxObservable.js.map","\"use strict\";\nvar Observable_1 = require('../../Observable');\nvar fromEvent_1 = require('../../observable/fromEvent');\nObservable_1.Observable.fromEvent = fromEvent_1.fromEvent;\n//# sourceMappingURL=fromEvent.js.map","\"use strict\";\nvar FromEventObservable_1 = require('./FromEventObservable');\nexports.fromEvent = FromEventObservable_1.FromEventObservable.create;\n//# sourceMappingURL=fromEvent.js.map","\"use strict\";\nvar __extends = (this && this.__extends) || function (d, b) {\n for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n};\nvar Observable_1 = require('../Observable');\nvar tryCatch_1 = require('../util/tryCatch');\nvar isFunction_1 = require('../util/isFunction');\nvar errorObject_1 = require('../util/errorObject');\nvar Subscription_1 = require('../Subscription');\nvar toString = Object.prototype.toString;\nfunction isNodeStyleEventEmitter(sourceObj) {\n return !!sourceObj && typeof sourceObj.addListener === 'function' && typeof sourceObj.removeListener === 'function';\n}\nfunction isJQueryStyleEventEmitter(sourceObj) {\n return !!sourceObj && typeof sourceObj.on === 'function' && typeof sourceObj.off === 'function';\n}\nfunction isNodeList(sourceObj) {\n return !!sourceObj && toString.call(sourceObj) === '[object NodeList]';\n}\nfunction isHTMLCollection(sourceObj) {\n return !!sourceObj && toString.call(sourceObj) === '[object HTMLCollection]';\n}\nfunction isEventTarget(sourceObj) {\n return !!sourceObj && typeof sourceObj.addEventListener === 'function' && typeof sourceObj.removeEventListener === 'function';\n}\n/**\n * We need this JSDoc comment for affecting ESDoc.\n * @extends {Ignored}\n * @hide true\n */\nvar FromEventObservable = (function (_super) {\n __extends(FromEventObservable, _super);\n function FromEventObservable(sourceObj, eventName, selector, options) {\n _super.call(this);\n this.sourceObj = sourceObj;\n this.eventName = eventName;\n this.selector = selector;\n this.options = options;\n }\n /* tslint:enable:max-line-length */\n /**\n * Creates an Observable that emits events of a specific type coming from the\n * given event target.\n *\n * Creates an Observable from DOM events, or Node.js\n * EventEmitter events or others.\n *\n * \n *\n * `fromEvent` accepts as a first argument event target, which is an object with methods\n * for registering event handler functions. As a second argument it takes string that indicates\n * type of event we want to listen for. `fromEvent` supports selected types of event targets,\n * which are described in detail below. If your event target does not match any of the ones listed,\n * you should use {@link fromEventPattern}, which can be used on arbitrary APIs.\n * When it comes to APIs supported by `fromEvent`, their methods for adding and removing event\n * handler functions have different names, but they all accept a string describing event type\n * and function itself, which will be called whenever said event happens.\n *\n * Every time resulting Observable is subscribed, event handler function will be registered\n * to event target on given event type. When that event fires, value\n * passed as a first argument to registered function will be emitted by output Observable.\n * When Observable is unsubscribed, function will be unregistered from event target.\n *\n * Note that if event target calls registered function with more than one argument, second\n * and following arguments will not appear in resulting stream. In order to get access to them,\n * you can pass to `fromEvent` optional project function, which will be called with all arguments\n * passed to event handler. Output Observable will then emit value returned by project function,\n * instead of the usual value.\n *\n * Remember that event targets listed below are checked via duck typing. It means that\n * no matter what kind of object you have and no matter what environment you work in,\n * you can safely use `fromEvent` on that object if it exposes described methods (provided\n * of course they behave as was described above). So for example if Node.js library exposes\n * event target which has the same method names as DOM EventTarget, `fromEvent` is still\n * a good choice.\n *\n * If the API you use is more callback then event handler oriented (subscribed\n * callback function fires only once and thus there is no need to manually\n * unregister it), you should use {@link bindCallback} or {@link bindNodeCallback}\n * instead.\n *\n * `fromEvent` supports following types of event targets:\n *\n * **DOM EventTarget**\n *\n * This is an object with `addEventListener` and `removeEventListener` methods.\n *\n * In the browser, `addEventListener` accepts - apart from event type string and event\n * handler function arguments - optional third parameter, which is either an object or boolean,\n * both used for additional configuration how and when passed function will be called. When\n * `fromEvent` is used with event target of that type, you can provide this values\n * as third parameter as well.\n *\n * **Node.js EventEmitter**\n *\n * An object with `addListener` and `removeListener` methods.\n *\n * **JQuery-style event target**\n *\n * An object with `on` and `off` methods\n *\n * **DOM NodeList**\n *\n * List of DOM Nodes, returned for example by `document.querySelectorAll` or `Node.childNodes`.\n *\n * Although this collection is not event target in itself, `fromEvent` will iterate over all Nodes\n * it contains and install event handler function in every of them. When returned Observable\n * is unsubscribed, function will be removed from all Nodes.\n *\n * **DOM HtmlCollection**\n *\n * Just as in case of NodeList it is a collection of DOM nodes. Here as well event handler function is\n * installed and removed in each of elements.\n *\n *\n * @example Emits clicks happening on the DOM document\n * var clicks = Rx.Observable.fromEvent(document, 'click');\n * clicks.subscribe(x => console.log(x));\n *\n * // Results in:\n * // MouseEvent object logged to console every time a click\n * // occurs on the document.\n *\n *\n * @example Use addEventListener with capture option\n * var clicksInDocument = Rx.Observable.fromEvent(document, 'click', true); // note optional configuration parameter\n * // which will be passed to addEventListener\n * var clicksInDiv = Rx.Observable.fromEvent(someDivInDocument, 'click');\n *\n * clicksInDocument.subscribe(() => console.log('document'));\n * clicksInDiv.subscribe(() => console.log('div'));\n *\n * // By default events bubble UP in DOM tree, so normally\n * // when we would click on div in document\n * // \"div\" would be logged first and then \"document\".\n * // Since we specified optional `capture` option, document\n * // will catch event when it goes DOWN DOM tree, so console\n * // will log \"document\" and then \"div\".\n *\n * @see {@link bindCallback}\n * @see {@link bindNodeCallback}\n * @see {@link fromEventPattern}\n *\n * @param {EventTargetLike} target The DOM EventTarget, Node.js\n * EventEmitter, JQuery-like event target, NodeList or HTMLCollection to attach the event handler to.\n * @param {string} eventName The event name of interest, being emitted by the\n * `target`.\n * @param {EventListenerOptions} [options] Options to pass through to addEventListener\n * @param {SelectorMethodSignature} [selector] An optional function to\n * post-process results. It takes the arguments from the event handler and\n * should return a single value.\n * @return {Observable}\n * @static true\n * @name fromEvent\n * @owner Observable\n */\n FromEventObservable.create = function (target, eventName, options, selector) {\n if (isFunction_1.isFunction(options)) {\n selector = options;\n options = undefined;\n }\n return new FromEventObservable(target, eventName, selector, options);\n };\n FromEventObservable.setupSubscription = function (sourceObj, eventName, handler, subscriber, options) {\n var unsubscribe;\n if (isNodeList(sourceObj) || isHTMLCollection(sourceObj)) {\n for (var i = 0, len = sourceObj.length; i < len; i++) {\n FromEventObservable.setupSubscription(sourceObj[i], eventName, handler, subscriber, options);\n }\n }\n else if (isEventTarget(sourceObj)) {\n var source_1 = sourceObj;\n sourceObj.addEventListener(eventName, handler, options);\n unsubscribe = function () { return source_1.removeEventListener(eventName, handler, options); };\n }\n else if (isJQueryStyleEventEmitter(sourceObj)) {\n var source_2 = sourceObj;\n sourceObj.on(eventName, handler);\n unsubscribe = function () { return source_2.off(eventName, handler); };\n }\n else if (isNodeStyleEventEmitter(sourceObj)) {\n var source_3 = sourceObj;\n sourceObj.addListener(eventName, handler);\n unsubscribe = function () { return source_3.removeListener(eventName, handler); };\n }\n else {\n throw new TypeError('Invalid event target');\n }\n subscriber.add(new Subscription_1.Subscription(unsubscribe));\n };\n /** @deprecated internal use only */ FromEventObservable.prototype._subscribe = function (subscriber) {\n var sourceObj = this.sourceObj;\n var eventName = this.eventName;\n var options = this.options;\n var selector = this.selector;\n var handler = selector ? function () {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i - 0] = arguments[_i];\n }\n var result = tryCatch_1.tryCatch(selector).apply(void 0, args);\n if (result === errorObject_1.errorObject) {\n subscriber.error(errorObject_1.errorObject.e);\n }\n else {\n subscriber.next(result);\n }\n } : function (e) { return subscriber.next(e); };\n FromEventObservable.setupSubscription(sourceObj, eventName, handler, subscriber, options);\n };\n return FromEventObservable;\n}(Observable_1.Observable));\nexports.FromEventObservable = FromEventObservable;\n//# sourceMappingURL=FromEventObservable.js.map","\"use strict\";\nvar Observable_1 = require('../../Observable');\nvar of_1 = require('../../observable/of');\nObservable_1.Observable.of = of_1.of;\n//# sourceMappingURL=of.js.map","\"use strict\";\nvar Observable_1 = require('../../Observable');\nvar catch_1 = require('../../operator/catch');\nObservable_1.Observable.prototype.catch = catch_1._catch;\nObservable_1.Observable.prototype._catch = catch_1._catch;\n//# sourceMappingURL=catch.js.map","\"use strict\";\nvar catchError_1 = require('../operators/catchError');\n/**\n * Catches errors on the observable to be handled by returning a new observable or throwing an error.\n *\n * \n *\n * @example Continues with a different Observable when there's an error\n *\n * Observable.of(1, 2, 3, 4, 5)\n * .map(n => {\n * \t if (n == 4) {\n * \t throw 'four!';\n * }\n *\t return n;\n * })\n * .catch(err => Observable.of('I', 'II', 'III', 'IV', 'V'))\n * .subscribe(x => console.log(x));\n * // 1, 2, 3, I, II, III, IV, V\n *\n * @example Retries the caught source Observable again in case of error, similar to retry() operator\n *\n * Observable.of(1, 2, 3, 4, 5)\n * .map(n => {\n * \t if (n === 4) {\n * \t throw 'four!';\n * }\n * \t return n;\n * })\n * .catch((err, caught) => caught)\n * .take(30)\n * .subscribe(x => console.log(x));\n * // 1, 2, 3, 1, 2, 3, ...\n *\n * @example Throws a new error when the source Observable throws an error\n *\n * Observable.of(1, 2, 3, 4, 5)\n * .map(n => {\n * if (n == 4) {\n * throw 'four!';\n * }\n * return n;\n * })\n * .catch(err => {\n * throw 'error in source. Details: ' + err;\n * })\n * .subscribe(\n * x => console.log(x),\n * err => console.log(err)\n * );\n * // 1, 2, 3, error in source. Details: four!\n *\n * @param {function} selector a function that takes as arguments `err`, which is the error, and `caught`, which\n * is the source observable, in case you'd like to \"retry\" that observable by returning it again. Whatever observable\n * is returned by the `selector` will be used to continue the observable chain.\n * @return {Observable} An observable that originates from either the source or the observable returned by the\n * catch `selector` function.\n * @method catch\n * @name catch\n * @owner Observable\n */\nfunction _catch(selector) {\n return catchError_1.catchError(selector)(this);\n}\nexports._catch = _catch;\n//# sourceMappingURL=catch.js.map","\"use strict\";\nvar __extends = (this && this.__extends) || function (d, b) {\n for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n};\nvar OuterSubscriber_1 = require('../OuterSubscriber');\nvar subscribeToResult_1 = require('../util/subscribeToResult');\n/**\n * Catches errors on the observable to be handled by returning a new observable or throwing an error.\n *\n * \n *\n * @example Continues with a different Observable when there's an error\n *\n * Observable.of(1, 2, 3, 4, 5)\n * .map(n => {\n * \t if (n == 4) {\n * \t throw 'four!';\n * }\n *\t return n;\n * })\n * .catch(err => Observable.of('I', 'II', 'III', 'IV', 'V'))\n * .subscribe(x => console.log(x));\n * // 1, 2, 3, I, II, III, IV, V\n *\n * @example Retries the caught source Observable again in case of error, similar to retry() operator\n *\n * Observable.of(1, 2, 3, 4, 5)\n * .map(n => {\n * \t if (n === 4) {\n * \t throw 'four!';\n * }\n * \t return n;\n * })\n * .catch((err, caught) => caught)\n * .take(30)\n * .subscribe(x => console.log(x));\n * // 1, 2, 3, 1, 2, 3, ...\n *\n * @example Throws a new error when the source Observable throws an error\n *\n * Observable.of(1, 2, 3, 4, 5)\n * .map(n => {\n * if (n == 4) {\n * throw 'four!';\n * }\n * return n;\n * })\n * .catch(err => {\n * throw 'error in source. Details: ' + err;\n * })\n * .subscribe(\n * x => console.log(x),\n * err => console.log(err)\n * );\n * // 1, 2, 3, error in source. Details: four!\n *\n * @param {function} selector a function that takes as arguments `err`, which is the error, and `caught`, which\n * is the source observable, in case you'd like to \"retry\" that observable by returning it again. Whatever observable\n * is returned by the `selector` will be used to continue the observable chain.\n * @return {Observable} An observable that originates from either the source or the observable returned by the\n * catch `selector` function.\n * @name catchError\n */\nfunction catchError(selector) {\n return function catchErrorOperatorFunction(source) {\n var operator = new CatchOperator(selector);\n var caught = source.lift(operator);\n return (operator.caught = caught);\n };\n}\nexports.catchError = catchError;\nvar CatchOperator = (function () {\n function CatchOperator(selector) {\n this.selector = selector;\n }\n CatchOperator.prototype.call = function (subscriber, source) {\n return source.subscribe(new CatchSubscriber(subscriber, this.selector, this.caught));\n };\n return CatchOperator;\n}());\n/**\n * We need this JSDoc comment for affecting ESDoc.\n * @ignore\n * @extends {Ignored}\n */\nvar CatchSubscriber = (function (_super) {\n __extends(CatchSubscriber, _super);\n function CatchSubscriber(destination, selector, caught) {\n _super.call(this, destination);\n this.selector = selector;\n this.caught = caught;\n }\n // NOTE: overriding `error` instead of `_error` because we don't want\n // to have this flag this subscriber as `isStopped`. We can mimic the\n // behavior of the RetrySubscriber (from the `retry` operator), where\n // we unsubscribe from our source chain, reset our Subscriber flags,\n // then subscribe to the selector result.\n CatchSubscriber.prototype.error = function (err) {\n if (!this.isStopped) {\n var result = void 0;\n try {\n result = this.selector(err, this.caught);\n }\n catch (err2) {\n _super.prototype.error.call(this, err2);\n return;\n }\n this._unsubscribeAndRecycle();\n this.add(subscribeToResult_1.subscribeToResult(this, result));\n }\n };\n return CatchSubscriber;\n}(OuterSubscriber_1.OuterSubscriber));\n//# sourceMappingURL=catchError.js.map","\"use strict\";\nvar Observable_1 = require('../../Observable');\nvar filter_1 = require('../../operator/filter');\nObservable_1.Observable.prototype.filter = filter_1.filter;\n//# sourceMappingURL=filter.js.map","\"use strict\";\nvar filter_1 = require('../operators/filter');\n/* tslint:enable:max-line-length */\n/**\n * Filter items emitted by the source Observable by only emitting those that\n * satisfy a specified predicate.\n *\n * Like\n * [Array.prototype.filter()](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/filter),\n * it only emits a value from the source if it passes a criterion function.\n *\n * \n *\n * Similar to the well-known `Array.prototype.filter` method, this operator\n * takes values from the source Observable, passes them through a `predicate`\n * function and only emits those values that yielded `true`.\n *\n * @example Emit only click events whose target was a DIV element\n * var clicks = Rx.Observable.fromEvent(document, 'click');\n * var clicksOnDivs = clicks.filter(ev => ev.target.tagName === 'DIV');\n * clicksOnDivs.subscribe(x => console.log(x));\n *\n * @see {@link distinct}\n * @see {@link distinctUntilChanged}\n * @see {@link distinctUntilKeyChanged}\n * @see {@link ignoreElements}\n * @see {@link partition}\n * @see {@link skip}\n *\n * @param {function(value: T, index: number): boolean} predicate A function that\n * evaluates each value emitted by the source Observable. If it returns `true`,\n * the value is emitted, if `false` the value is not passed to the output\n * Observable. The `index` parameter is the number `i` for the i-th source\n * emission that has happened since the subscription, starting from the number\n * `0`.\n * @param {any} [thisArg] An optional argument to determine the value of `this`\n * in the `predicate` function.\n * @return {Observable} An Observable of values from the source that were\n * allowed by the `predicate` function.\n * @method filter\n * @owner Observable\n */\nfunction filter(predicate, thisArg) {\n return filter_1.filter(predicate, thisArg)(this);\n}\nexports.filter = filter;\n//# sourceMappingURL=filter.js.map","\"use strict\";\nvar __extends = (this && this.__extends) || function (d, b) {\n for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n};\nvar Subscriber_1 = require('../Subscriber');\n/* tslint:enable:max-line-length */\n/**\n * Filter items emitted by the source Observable by only emitting those that\n * satisfy a specified predicate.\n *\n * Like\n * [Array.prototype.filter()](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/filter),\n * it only emits a value from the source if it passes a criterion function.\n *\n * \n *\n * Similar to the well-known `Array.prototype.filter` method, this operator\n * takes values from the source Observable, passes them through a `predicate`\n * function and only emits those values that yielded `true`.\n *\n * @example Emit only click events whose target was a DIV element\n * var clicks = Rx.Observable.fromEvent(document, 'click');\n * var clicksOnDivs = clicks.filter(ev => ev.target.tagName === 'DIV');\n * clicksOnDivs.subscribe(x => console.log(x));\n *\n * @see {@link distinct}\n * @see {@link distinctUntilChanged}\n * @see {@link distinctUntilKeyChanged}\n * @see {@link ignoreElements}\n * @see {@link partition}\n * @see {@link skip}\n *\n * @param {function(value: T, index: number): boolean} predicate A function that\n * evaluates each value emitted by the source Observable. If it returns `true`,\n * the value is emitted, if `false` the value is not passed to the output\n * Observable. The `index` parameter is the number `i` for the i-th source\n * emission that has happened since the subscription, starting from the number\n * `0`.\n * @param {any} [thisArg] An optional argument to determine the value of `this`\n * in the `predicate` function.\n * @return {Observable} An Observable of values from the source that were\n * allowed by the `predicate` function.\n * @method filter\n * @owner Observable\n */\nfunction filter(predicate, thisArg) {\n return function filterOperatorFunction(source) {\n return source.lift(new FilterOperator(predicate, thisArg));\n };\n}\nexports.filter = filter;\nvar FilterOperator = (function () {\n function FilterOperator(predicate, thisArg) {\n this.predicate = predicate;\n this.thisArg = thisArg;\n }\n FilterOperator.prototype.call = function (subscriber, source) {\n return source.subscribe(new FilterSubscriber(subscriber, this.predicate, this.thisArg));\n };\n return FilterOperator;\n}());\n/**\n * We need this JSDoc comment for affecting ESDoc.\n * @ignore\n * @extends {Ignored}\n */\nvar FilterSubscriber = (function (_super) {\n __extends(FilterSubscriber, _super);\n function FilterSubscriber(destination, predicate, thisArg) {\n _super.call(this, destination);\n this.predicate = predicate;\n this.thisArg = thisArg;\n this.count = 0;\n }\n // the try catch block below is left specifically for\n // optimization and perf reasons. a tryCatcher is not necessary here.\n FilterSubscriber.prototype._next = function (value) {\n var result;\n try {\n result = this.predicate.call(this.thisArg, value, this.count++);\n }\n catch (err) {\n this.destination.error(err);\n return;\n }\n if (result) {\n this.destination.next(value);\n }\n };\n return FilterSubscriber;\n}(Subscriber_1.Subscriber));\n//# sourceMappingURL=filter.js.map","\"use strict\";\nvar Observable_1 = require('../../Observable');\nvar distinct_1 = require('../../operator/distinct');\nObservable_1.Observable.prototype.distinct = distinct_1.distinct;\n//# sourceMappingURL=distinct.js.map","\"use strict\";\nvar distinct_1 = require('../operators/distinct');\n/**\n * Returns an Observable that emits all items emitted by the source Observable that are distinct by comparison from previous items.\n *\n * If a keySelector function is provided, then it will project each value from the source observable into a new value that it will\n * check for equality with previously projected values. If a keySelector function is not provided, it will use each value from the\n * source observable directly with an equality check against previous values.\n *\n * In JavaScript runtimes that support `Set`, this operator will use a `Set` to improve performance of the distinct value checking.\n *\n * In other runtimes, this operator will use a minimal implementation of `Set` that relies on an `Array` and `indexOf` under the\n * hood, so performance will degrade as more values are checked for distinction. Even in newer browsers, a long-running `distinct`\n * use might result in memory leaks. To help alleviate this in some scenarios, an optional `flushes` parameter is also provided so\n * that the internal `Set` can be \"flushed\", basically clearing it of values.\n *\n * @example A simple example with numbers\n * Observable.of(1, 1, 2, 2, 2, 1, 2, 3, 4, 3, 2, 1)\n * .distinct()\n * .subscribe(x => console.log(x)); // 1, 2, 3, 4\n *\n * @example An example using a keySelector function\n * interface Person {\n * age: number,\n * name: string\n * }\n *\n * Observable.of(\n * { age: 4, name: 'Foo'},\n * { age: 7, name: 'Bar'},\n * { age: 5, name: 'Foo'})\n * .distinct((p: Person) => p.name)\n * .subscribe(x => console.log(x));\n *\n * // displays:\n * // { age: 4, name: 'Foo' }\n * // { age: 7, name: 'Bar' }\n *\n * @see {@link distinctUntilChanged}\n * @see {@link distinctUntilKeyChanged}\n *\n * @param {function} [keySelector] Optional function to select which value you want to check as distinct.\n * @param {Observable} [flushes] Optional Observable for flushing the internal HashSet of the operator.\n * @return {Observable} An Observable that emits items from the source Observable with distinct values.\n * @method distinct\n * @owner Observable\n */\nfunction distinct(keySelector, flushes) {\n return distinct_1.distinct(keySelector, flushes)(this);\n}\nexports.distinct = distinct;\n//# sourceMappingURL=distinct.js.map","\"use strict\";\nvar __extends = (this && this.__extends) || function (d, b) {\n for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n};\nvar OuterSubscriber_1 = require('../OuterSubscriber');\nvar subscribeToResult_1 = require('../util/subscribeToResult');\nvar Set_1 = require('../util/Set');\n/**\n * Returns an Observable that emits all items emitted by the source Observable that are distinct by comparison from previous items.\n *\n * If a keySelector function is provided, then it will project each value from the source observable into a new value that it will\n * check for equality with previously projected values. If a keySelector function is not provided, it will use each value from the\n * source observable directly with an equality check against previous values.\n *\n * In JavaScript runtimes that support `Set`, this operator will use a `Set` to improve performance of the distinct value checking.\n *\n * In other runtimes, this operator will use a minimal implementation of `Set` that relies on an `Array` and `indexOf` under the\n * hood, so performance will degrade as more values are checked for distinction. Even in newer browsers, a long-running `distinct`\n * use might result in memory leaks. To help alleviate this in some scenarios, an optional `flushes` parameter is also provided so\n * that the internal `Set` can be \"flushed\", basically clearing it of values.\n *\n * @example A simple example with numbers\n * Observable.of(1, 1, 2, 2, 2, 1, 2, 3, 4, 3, 2, 1)\n * .distinct()\n * .subscribe(x => console.log(x)); // 1, 2, 3, 4\n *\n * @example An example using a keySelector function\n * interface Person {\n * age: number,\n * name: string\n * }\n *\n * Observable.of(\n * { age: 4, name: 'Foo'},\n * { age: 7, name: 'Bar'},\n * { age: 5, name: 'Foo'})\n * .distinct((p: Person) => p.name)\n * .subscribe(x => console.log(x));\n *\n * // displays:\n * // { age: 4, name: 'Foo' }\n * // { age: 7, name: 'Bar' }\n *\n * @see {@link distinctUntilChanged}\n * @see {@link distinctUntilKeyChanged}\n *\n * @param {function} [keySelector] Optional function to select which value you want to check as distinct.\n * @param {Observable} [flushes] Optional Observable for flushing the internal HashSet of the operator.\n * @return {Observable} An Observable that emits items from the source Observable with distinct values.\n * @method distinct\n * @owner Observable\n */\nfunction distinct(keySelector, flushes) {\n return function (source) { return source.lift(new DistinctOperator(keySelector, flushes)); };\n}\nexports.distinct = distinct;\nvar DistinctOperator = (function () {\n function DistinctOperator(keySelector, flushes) {\n this.keySelector = keySelector;\n this.flushes = flushes;\n }\n DistinctOperator.prototype.call = function (subscriber, source) {\n return source.subscribe(new DistinctSubscriber(subscriber, this.keySelector, this.flushes));\n };\n return DistinctOperator;\n}());\n/**\n * We need this JSDoc comment for affecting ESDoc.\n * @ignore\n * @extends {Ignored}\n */\nvar DistinctSubscriber = (function (_super) {\n __extends(DistinctSubscriber, _super);\n function DistinctSubscriber(destination, keySelector, flushes) {\n _super.call(this, destination);\n this.keySelector = keySelector;\n this.values = new Set_1.Set();\n if (flushes) {\n this.add(subscribeToResult_1.subscribeToResult(this, flushes));\n }\n }\n DistinctSubscriber.prototype.notifyNext = function (outerValue, innerValue, outerIndex, innerIndex, innerSub) {\n this.values.clear();\n };\n DistinctSubscriber.prototype.notifyError = function (error, innerSub) {\n this._error(error);\n };\n DistinctSubscriber.prototype._next = function (value) {\n if (this.keySelector) {\n this._useKeySelector(value);\n }\n else {\n this._finalizeNext(value, value);\n }\n };\n DistinctSubscriber.prototype._useKeySelector = function (value) {\n var key;\n var destination = this.destination;\n try {\n key = this.keySelector(value);\n }\n catch (err) {\n destination.error(err);\n return;\n }\n this._finalizeNext(key, value);\n };\n DistinctSubscriber.prototype._finalizeNext = function (key, value) {\n var values = this.values;\n if (!values.has(key)) {\n values.add(key);\n this.destination.next(value);\n }\n };\n return DistinctSubscriber;\n}(OuterSubscriber_1.OuterSubscriber));\nexports.DistinctSubscriber = DistinctSubscriber;\n//# sourceMappingURL=distinct.js.map","\"use strict\";\nvar root_1 = require('./root');\nfunction minimalSetImpl() {\n // THIS IS NOT a full impl of Set, this is just the minimum\n // bits of functionality we need for this library.\n return (function () {\n function MinimalSet() {\n this._values = [];\n }\n MinimalSet.prototype.add = function (value) {\n if (!this.has(value)) {\n this._values.push(value);\n }\n };\n MinimalSet.prototype.has = function (value) {\n return this._values.indexOf(value) !== -1;\n };\n Object.defineProperty(MinimalSet.prototype, \"size\", {\n get: function () {\n return this._values.length;\n },\n enumerable: true,\n configurable: true\n });\n MinimalSet.prototype.clear = function () {\n this._values.length = 0;\n };\n return MinimalSet;\n }());\n}\nexports.minimalSetImpl = minimalSetImpl;\nexports.Set = root_1.root.Set || minimalSetImpl();\n//# sourceMappingURL=Set.js.map","\"use strict\";\nvar Observable_1 = require('../../Observable');\nvar map_1 = require('../../operator/map');\nObservable_1.Observable.prototype.map = map_1.map;\n//# sourceMappingURL=map.js.map","\"use strict\";\nvar map_1 = require('../operators/map');\n/**\n * Applies a given `project` function to each value emitted by the source\n * Observable, and emits the resulting values as an Observable.\n *\n * Like [Array.prototype.map()](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/map),\n * it passes each source value through a transformation function to get\n * corresponding output values.\n *\n * \n *\n * Similar to the well known `Array.prototype.map` function, this operator\n * applies a projection to each value and emits that projection in the output\n * Observable.\n *\n * @example Map every click to the clientX position of that click\n * var clicks = Rx.Observable.fromEvent(document, 'click');\n * var positions = clicks.map(ev => ev.clientX);\n * positions.subscribe(x => console.log(x));\n *\n * @see {@link mapTo}\n * @see {@link pluck}\n *\n * @param {function(value: T, index: number): R} project The function to apply\n * to each `value` emitted by the source Observable. The `index` parameter is\n * the number `i` for the i-th emission that has happened since the\n * subscription, starting from the number `0`.\n * @param {any} [thisArg] An optional argument to define what `this` is in the\n * `project` function.\n * @return {Observable} An Observable that emits the values from the source\n * Observable transformed by the given `project` function.\n * @method map\n * @owner Observable\n */\nfunction map(project, thisArg) {\n return map_1.map(project, thisArg)(this);\n}\nexports.map = map;\n//# sourceMappingURL=map.js.map","\"use strict\";\nvar Observable_1 = require('../../Observable');\nvar pluck_1 = require('../../operator/pluck');\nObservable_1.Observable.prototype.pluck = pluck_1.pluck;\n//# sourceMappingURL=pluck.js.map","\"use strict\";\nvar pluck_1 = require('../operators/pluck');\n/**\n * Maps each source value (an object) to its specified nested property.\n *\n * Like {@link map}, but meant only for picking one of\n * the nested properties of every emitted object.\n *\n * \n *\n * Given a list of strings describing a path to an object property, retrieves\n * the value of a specified nested property from all values in the source\n * Observable. If a property can't be resolved, it will return `undefined` for\n * that value.\n *\n * @example Map every click to the tagName of the clicked target element\n * var clicks = Rx.Observable.fromEvent(document, 'click');\n * var tagNames = clicks.pluck('target', 'tagName');\n * tagNames.subscribe(x => console.log(x));\n *\n * @see {@link map}\n *\n * @param {...string} properties The nested properties to pluck from each source\n * value (an object).\n * @return {Observable} A new Observable of property values from the source values.\n * @method pluck\n * @owner Observable\n */\nfunction pluck() {\n var properties = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n properties[_i - 0] = arguments[_i];\n }\n return pluck_1.pluck.apply(void 0, properties)(this);\n}\nexports.pluck = pluck;\n//# sourceMappingURL=pluck.js.map","\"use strict\";\nvar map_1 = require('./map');\n/**\n * Maps each source value (an object) to its specified nested property.\n *\n * Like {@link map}, but meant only for picking one of\n * the nested properties of every emitted object.\n *\n * \n *\n * Given a list of strings describing a path to an object property, retrieves\n * the value of a specified nested property from all values in the source\n * Observable. If a property can't be resolved, it will return `undefined` for\n * that value.\n *\n * @example Map every click to the tagName of the clicked target element\n * var clicks = Rx.Observable.fromEvent(document, 'click');\n * var tagNames = clicks.pluck('target', 'tagName');\n * tagNames.subscribe(x => console.log(x));\n *\n * @see {@link map}\n *\n * @param {...string} properties The nested properties to pluck from each source\n * value (an object).\n * @return {Observable} A new Observable of property values from the source values.\n * @method pluck\n * @owner Observable\n */\nfunction pluck() {\n var properties = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n properties[_i - 0] = arguments[_i];\n }\n var length = properties.length;\n if (length === 0) {\n throw new Error('list of properties cannot be empty.');\n }\n return function (source) { return map_1.map(plucker(properties, length))(source); };\n}\nexports.pluck = pluck;\nfunction plucker(props, length) {\n var mapper = function (x) {\n var currentProp = x;\n for (var i = 0; i < length; i++) {\n var p = currentProp[props[i]];\n if (typeof p !== 'undefined') {\n currentProp = p;\n }\n else {\n return undefined;\n }\n }\n return currentProp;\n };\n return mapper;\n}\n//# sourceMappingURL=pluck.js.map","\"use strict\";\nvar Observable_1 = require('../../Observable');\nvar startWith_1 = require('../../operator/startWith');\nObservable_1.Observable.prototype.startWith = startWith_1.startWith;\n//# sourceMappingURL=startWith.js.map","\"use strict\";\nvar startWith_1 = require('../operators/startWith');\n/* tslint:enable:max-line-length */\n/**\n * Returns an Observable that emits the items you specify as arguments before it begins to emit\n * items emitted by the source Observable.\n *\n * \n *\n * @param {...T} values - Items you want the modified Observable to emit first.\n * @param {Scheduler} [scheduler] - A {@link IScheduler} to use for scheduling\n * the emissions of the `next` notifications.\n * @return {Observable} An Observable that emits the items in the specified Iterable and then emits the items\n * emitted by the source Observable.\n * @method startWith\n * @owner Observable\n */\nfunction startWith() {\n var array = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n array[_i - 0] = arguments[_i];\n }\n return startWith_1.startWith.apply(void 0, array)(this);\n}\nexports.startWith = startWith;\n//# sourceMappingURL=startWith.js.map","\"use strict\";\nvar ArrayObservable_1 = require('../observable/ArrayObservable');\nvar ScalarObservable_1 = require('../observable/ScalarObservable');\nvar EmptyObservable_1 = require('../observable/EmptyObservable');\nvar concat_1 = require('../observable/concat');\nvar isScheduler_1 = require('../util/isScheduler');\n/* tslint:enable:max-line-length */\n/**\n * Returns an Observable that emits the items you specify as arguments before it begins to emit\n * items emitted by the source Observable.\n *\n * \n *\n * @param {...T} values - Items you want the modified Observable to emit first.\n * @param {Scheduler} [scheduler] - A {@link IScheduler} to use for scheduling\n * the emissions of the `next` notifications.\n * @return {Observable} An Observable that emits the items in the specified Iterable and then emits the items\n * emitted by the source Observable.\n * @method startWith\n * @owner Observable\n */\nfunction startWith() {\n var array = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n array[_i - 0] = arguments[_i];\n }\n return function (source) {\n var scheduler = array[array.length - 1];\n if (isScheduler_1.isScheduler(scheduler)) {\n array.pop();\n }\n else {\n scheduler = null;\n }\n var len = array.length;\n if (len === 1) {\n return concat_1.concat(new ScalarObservable_1.ScalarObservable(array[0], scheduler), source);\n }\n else if (len > 1) {\n return concat_1.concat(new ArrayObservable_1.ArrayObservable(array, scheduler), source);\n }\n else {\n return concat_1.concat(new EmptyObservable_1.EmptyObservable(scheduler), source);\n }\n };\n}\nexports.startWith = startWith;\n//# sourceMappingURL=startWith.js.map","\"use strict\";\nvar Observable_1 = require('../../Observable');\nvar switchMap_1 = require('../../operator/switchMap');\nObservable_1.Observable.prototype.switchMap = switchMap_1.switchMap;\n//# sourceMappingURL=switchMap.js.map","\"use strict\";\nvar switchMap_1 = require('../operators/switchMap');\n/* tslint:enable:max-line-length */\n/**\n * Projects each source value to an Observable which is merged in the output\n * Observable, emitting values only from the most recently projected Observable.\n *\n * Maps each value to an Observable, then flattens all of\n * these inner Observables using {@link switch}.\n *\n * \n *\n * Returns an Observable that emits items based on applying a function that you\n * supply to each item emitted by the source Observable, where that function\n * returns an (so-called \"inner\") Observable. Each time it observes one of these\n * inner Observables, the output Observable begins emitting the items emitted by\n * that inner Observable. When a new inner Observable is emitted, `switchMap`\n * stops emitting items from the earlier-emitted inner Observable and begins\n * emitting items from the new one. It continues to behave like this for\n * subsequent inner Observables.\n *\n * @example Rerun an interval Observable on every click event\n * var clicks = Rx.Observable.fromEvent(document, 'click');\n * var result = clicks.switchMap((ev) => Rx.Observable.interval(1000));\n * result.subscribe(x => console.log(x));\n *\n * @see {@link concatMap}\n * @see {@link exhaustMap}\n * @see {@link mergeMap}\n * @see {@link switch}\n * @see {@link switchMapTo}\n *\n * @param {function(value: T, ?index: number): ObservableInput} project A function\n * that, when applied to an item emitted by the source Observable, returns an\n * Observable.\n * @param {function(outerValue: T, innerValue: I, outerIndex: number, innerIndex: number): any} [resultSelector]\n * A function to produce the value on the output Observable based on the values\n * and the indices of the source (outer) emission and the inner Observable\n * emission. The arguments passed to this function are:\n * - `outerValue`: the value that came from the source\n * - `innerValue`: the value that came from the projected Observable\n * - `outerIndex`: the \"index\" of the value that came from the source\n * - `innerIndex`: the \"index\" of the value from the projected Observable\n * @return {Observable} An Observable that emits the result of applying the\n * projection function (and the optional `resultSelector`) to each item emitted\n * by the source Observable and taking only the values from the most recently\n * projected inner Observable.\n * @method switchMap\n * @owner Observable\n */\nfunction switchMap(project, resultSelector) {\n return switchMap_1.switchMap(project, resultSelector)(this);\n}\nexports.switchMap = switchMap;\n//# sourceMappingURL=switchMap.js.map","\"use strict\";\nvar __extends = (this && this.__extends) || function (d, b) {\n for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n};\nvar OuterSubscriber_1 = require('../OuterSubscriber');\nvar subscribeToResult_1 = require('../util/subscribeToResult');\n/* tslint:enable:max-line-length */\n/**\n * Projects each source value to an Observable which is merged in the output\n * Observable, emitting values only from the most recently projected Observable.\n *\n * Maps each value to an Observable, then flattens all of\n * these inner Observables using {@link switch}.\n *\n * \n *\n * Returns an Observable that emits items based on applying a function that you\n * supply to each item emitted by the source Observable, where that function\n * returns an (so-called \"inner\") Observable. Each time it observes one of these\n * inner Observables, the output Observable begins emitting the items emitted by\n * that inner Observable. When a new inner Observable is emitted, `switchMap`\n * stops emitting items from the earlier-emitted inner Observable and begins\n * emitting items from the new one. It continues to behave like this for\n * subsequent inner Observables.\n *\n * @example Rerun an interval Observable on every click event\n * var clicks = Rx.Observable.fromEvent(document, 'click');\n * var result = clicks.switchMap((ev) => Rx.Observable.interval(1000));\n * result.subscribe(x => console.log(x));\n *\n * @see {@link concatMap}\n * @see {@link exhaustMap}\n * @see {@link mergeMap}\n * @see {@link switch}\n * @see {@link switchMapTo}\n *\n * @param {function(value: T, ?index: number): ObservableInput} project A function\n * that, when applied to an item emitted by the source Observable, returns an\n * Observable.\n * @param {function(outerValue: T, innerValue: I, outerIndex: number, innerIndex: number): any} [resultSelector]\n * A function to produce the value on the output Observable based on the values\n * and the indices of the source (outer) emission and the inner Observable\n * emission. The arguments passed to this function are:\n * - `outerValue`: the value that came from the source\n * - `innerValue`: the value that came from the projected Observable\n * - `outerIndex`: the \"index\" of the value that came from the source\n * - `innerIndex`: the \"index\" of the value from the projected Observable\n * @return {Observable} An Observable that emits the result of applying the\n * projection function (and the optional `resultSelector`) to each item emitted\n * by the source Observable and taking only the values from the most recently\n * projected inner Observable.\n * @method switchMap\n * @owner Observable\n */\nfunction switchMap(project, resultSelector) {\n return function switchMapOperatorFunction(source) {\n return source.lift(new SwitchMapOperator(project, resultSelector));\n };\n}\nexports.switchMap = switchMap;\nvar SwitchMapOperator = (function () {\n function SwitchMapOperator(project, resultSelector) {\n this.project = project;\n this.resultSelector = resultSelector;\n }\n SwitchMapOperator.prototype.call = function (subscriber, source) {\n return source.subscribe(new SwitchMapSubscriber(subscriber, this.project, this.resultSelector));\n };\n return SwitchMapOperator;\n}());\n/**\n * We need this JSDoc comment for affecting ESDoc.\n * @ignore\n * @extends {Ignored}\n */\nvar SwitchMapSubscriber = (function (_super) {\n __extends(SwitchMapSubscriber, _super);\n function SwitchMapSubscriber(destination, project, resultSelector) {\n _super.call(this, destination);\n this.project = project;\n this.resultSelector = resultSelector;\n this.index = 0;\n }\n SwitchMapSubscriber.prototype._next = function (value) {\n var result;\n var index = this.index++;\n try {\n result = this.project(value, index);\n }\n catch (error) {\n this.destination.error(error);\n return;\n }\n this._innerSub(result, value, index);\n };\n SwitchMapSubscriber.prototype._innerSub = function (result, value, index) {\n var innerSubscription = this.innerSubscription;\n if (innerSubscription) {\n innerSubscription.unsubscribe();\n }\n this.add(this.innerSubscription = subscribeToResult_1.subscribeToResult(this, result, value, index));\n };\n SwitchMapSubscriber.prototype._complete = function () {\n var innerSubscription = this.innerSubscription;\n if (!innerSubscription || innerSubscription.closed) {\n _super.prototype._complete.call(this);\n }\n };\n /** @deprecated internal use only */ SwitchMapSubscriber.prototype._unsubscribe = function () {\n this.innerSubscription = null;\n };\n SwitchMapSubscriber.prototype.notifyComplete = function (innerSub) {\n this.remove(innerSub);\n this.innerSubscription = null;\n if (this.isStopped) {\n _super.prototype._complete.call(this);\n }\n };\n SwitchMapSubscriber.prototype.notifyNext = function (outerValue, innerValue, outerIndex, innerIndex, innerSub) {\n if (this.resultSelector) {\n this._tryNotifyNext(outerValue, innerValue, outerIndex, innerIndex);\n }\n else {\n this.destination.next(innerValue);\n }\n };\n SwitchMapSubscriber.prototype._tryNotifyNext = function (outerValue, innerValue, outerIndex, innerIndex) {\n var result;\n try {\n result = this.resultSelector(outerValue, innerValue, outerIndex, innerIndex);\n }\n catch (err) {\n this.destination.error(err);\n return;\n }\n this.destination.next(result);\n };\n return SwitchMapSubscriber;\n}(OuterSubscriber_1.OuterSubscriber));\n//# sourceMappingURL=switchMap.js.map","import { abstractAutocompletes } from \"./abstract-autocomplete\";\r\n\r\nexport default function () {\r\n let tableElem = document.querySelector(\"#gs-program-assignment-edit-time-slot-table\");\r\n if (tableElem != null) {\r\n tableElem.addEventListener(\"gs-add-more-new-row\", function (e: CustomEvent) {\r\n abstractAutocompletes[0].addInputPipelineFromRow(e.detail);\r\n });\r\n }\r\n}\r\n","function highlightRowOnMessage() {\r\n let elem = document.querySelector(\"[data-gs-program-session-index-highlight-table]\")\r\n if (elem) {\r\n var highlightedElem = document.querySelector('.local-highlighted-row');\r\n if (highlightedElem) {\r\n highlightedElem.scrollIntoView();\r\n }\r\n window.addEventListener(\"message\", (e) => {\r\n if (e.data[\"source\"] && e.data[\"source\"] === \"data-gs-program-session-index-highlight\") {\r\n let id = e.data[\"id\"];\r\n if (!id) {\r\n console.log(\"data-gs-program-session-index-highlight id is needed\");\r\n return;\r\n }\r\n let hightlightIdElem = document.getElementById(\"local-hightlight-hidden\") as HTMLInputElement;\r\n if (!hightlightIdElem) {\r\n console.log(\"data-gs-program-session-index-highlight need a hidden field local-hightlight-hidden\");\r\n return;\r\n }\r\n hightlightIdElem.value = id;\r\n hightlightIdElem.form.submit();\r\n }\r\n });\r\n }\r\n}\r\n\r\nfunction closeButtonForViewSession() {\r\n let elem = document.querySelector(\"[data-gs-program-session-view-session-close-button]\") as HTMLButtonElement\r\n if (elem) {\r\n let id = elem.dataset[\"gsProgramSessionViewSessionCloseButtonId\"];\r\n if (!id) {\r\n console.log(\"data-gs-program-session-view-session-close-button-id is needed\");\r\n return;\r\n }\r\n if (elem.dataset[\"gsProgramSessionViewSessionCloseButtonId\"]) {\r\n if (window.opener) {\r\n let parentWindow = window.opener as Window;\r\n parentWindow.focus();\r\n let message = {\r\n source: \"data-gs-program-session-index-highlight\",\r\n id: id\r\n };\r\n parentWindow.postMessage(message, \"*\");\r\n }\r\n\r\n elem.addEventListener(\"click\", (e) => {\r\n e.preventDefault();\r\n window.close();\r\n });\r\n }\r\n }\r\n}\r\n\r\nexport default function () {\r\n highlightRowOnMessage();\r\n closeButtonForViewSession();\r\n}","import './common.scss';\r\nimport './step-indicator.scss';\r\nimport addMore from './add-more';\r\nimport openInClosableTab from './open-in-closable-tab';\r\nimport richEditor from './rich-editor';\r\nimport selectDynamicOptions from './select-dynamic-options';\r\nimport showDependsOnSelect from './show-depends-on-select';\r\nimport showDependsOnSelectOther from './show-depends-on-select-other';\r\nimport showDependsOnRadio from './show-depends-on-radio';\r\nimport validationSummary from './validation-summary';\r\nimport clearCheckboxInGroup from './clear-checkbox-in-group';\r\nimport groupHideExtra from './group-hide-extra';\r\nimport gsSelect from './gs-select';\r\nimport gsTypeahead from './gs-typeahead';\r\nimport { otherAutoselectClear } from './other-autoselect-clear';\r\nimport { checkboxGroupDependsOnRadio } from './checks-group-depends-on-radio';\r\nimport { drosTopicList } from './drosTopicList';\r\n\r\n\r\nconst baseUrl = (window as any).GS_BASE_URL;\r\nexport default function () {\r\n var targets = document.querySelectorAll(\"[data-gs-toggle]\");\r\n for (let i = 0; i < targets.length; ++i) {\r\n var targetElem = targets[i] as HTMLElement;\r\n var toggleName = targetElem.dataset['gsToggle'];\r\n try {\r\n switch (toggleName) {\r\n case 'add-more':\r\n addMore(targetElem);\r\n case 'open-in-closable-tab':\r\n openInClosableTab(targetElem);\r\n break;\r\n case 'add-more-no-tab':\r\n addMore(targetElem);\r\n break;\r\n case \"rich-editor\":\r\n richEditor(targetElem);\r\n break;\r\n case \"select-dynamic-options\":\r\n selectDynamicOptions(targetElem);\r\n break;\r\n case 'show-depends-on-select':\r\n showDependsOnSelect(targetElem);\r\n break;\r\n case 'show-depends-on-select-other':\r\n showDependsOnSelectOther(targetElem);\r\n break;\r\n case 'show-depends-on-radio':\r\n showDependsOnRadio(targetElem);\r\n break;\r\n case 'validation-summary':\r\n validationSummary(targetElem);\r\n break;\r\n case 'clear-checkbox-in-group':\r\n clearCheckboxInGroup(targetElem);\r\n break\r\n case 'gs-select':\r\n gsSelect(baseUrl, targetElem);\r\n break\r\n case 'gs-typeahead':\r\n gsTypeahead(baseUrl, targetElem);\r\n break;\r\n case 'group-hide-extra':\r\n groupHideExtra(targetElem);\r\n break;\r\n case 'other-autoselect-clear':\r\n otherAutoselectClear(targetElem);\r\n break;\r\n case 'checkbox-group-depends-on-radio':\r\n checkboxGroupDependsOnRadio(targetElem);\r\n break;\r\n case 'dros-topic-list':\r\n drosTopicList(targetElem);\r\n break;\r\n default:\r\n console.error(`unknown toggleName ${toggleName}`);\r\n }\r\n }\r\n catch (e) {\r\n (console.error || console.log).call(console, e.stack || e);\r\n }\r\n }\r\n}\r\n","export default function (elem: HTMLElement) {\r\n let target = elem.dataset[\"gsTarget\"];\r\n if (!target) {\r\n throw new Error(\"data-gs-toggle='add-more' needs target through data-gs-target\");\r\n\r\n }\r\n let targetElem = document.querySelector(target) as HTMLElement;\r\n if (!targetElem) {\r\n throw new Error(\"data-gs-target can not be found\");\r\n }\r\n let containerElem = targetElem;\r\n if (containerElem.tagName.toUpperCase() == \"TABLE\") {\r\n let tBodies = (containerElem as HTMLTableElement).tBodies;\r\n if (tBodies.length > 1) {\r\n throw new Error(\"multiply tbody in table, please apply data-gs-toggle='add-more' on tbody\");\r\n }\r\n containerElem = tBodies[0] as HTMLElement;\r\n }\r\n let max = 10000; //this should be large enough\r\n if (\"gsAddMoreMax\" in elem.dataset) {\r\n max = +elem.dataset[\"gsAddMoreMax\"];\r\n if (isNaN(max)) {\r\n throw new Error(\"data-gs-add-more-max is invlid number\");\r\n }\r\n }\r\n if (containerElem.childElementCount === 0) {\r\n throw new Error(\"target doesn't have any childelement. Can't copy\");\r\n } else if (containerElem.childElementCount >= max) {\r\n elem.style.display = \"none\";\r\n } else {\r\n elem.addEventListener(\"click\", (e) => {\r\n e.preventDefault();\r\n let lastRowElem = containerElem.lastElementChild;\r\n let newRowElem = lastRowElem.cloneNode(true) as HTMLElement;\r\n containerElem.appendChild(newRowElem);\r\n if (containerElem.childElementCount >= max) {\r\n elem.style.display = \"none\";\r\n }\r\n var inputElems = newRowElem.querySelectorAll('input');\r\n for (let i = 0; i < inputElems.length; i++) {\r\n updateInputName(inputElems[i]);\r\n clearValue(inputElems[i]);\r\n }\r\n var selectElems = newRowElem.querySelectorAll('select');\r\n for (let i = 0; i < selectElems.length; i++) {\r\n updateInputName(selectElems[i]);\r\n }\r\n var textareaElems = newRowElem.querySelectorAll('textarea');\r\n for (let i = 0; i < textareaElems.length; i++) {\r\n updateInputName(textareaElems[i]);\r\n clearValue(textareaElems[i]);\r\n }\r\n var autoIncreaseElem = newRowElem.querySelector('[data-gs-add-more-auto-increase');\r\n if (autoIncreaseElem) {\r\n let currentValue = +autoIncreaseElem.textContent;\r\n if (!isNaN(currentValue)) {\r\n let nextValue = currentValue + 1;\r\n autoIncreaseElem.textContent = nextValue.toString();\r\n }\r\n }\r\n emitEvent(targetElem, newRowElem);\r\n });\r\n }\r\n function updateInputName(input: HTMLInputElement | HTMLSelectElement | HTMLTextAreaElement) {\r\n let name = input.name;\r\n let parts = /^([^\\d]*)(\\d+)([^\\d]*)$/.exec(name);\r\n if (parts) {\r\n parts[2] = (+parts[2] + 1).toString();\r\n let newName = parts[1] + parts[2] + parts[3];\r\n input.name = newName;\r\n }\r\n }\r\n function clearValue(input: HTMLInputElement | HTMLTextAreaElement) {\r\n if (input.type === \"checkbox\" || input.type === \"radio\") {\r\n return;\r\n }\r\n if (\"gsAddMoreSkipClear\" in input.dataset) {\r\n return;\r\n } else {\r\n input.value = '';\r\n }\r\n }\r\n\r\n function emitEvent(targetElem: HTMLElement, newRowElem: HTMLElement) {\r\n var event = new CustomEvent('gs-add-more-new-row', { 'detail': newRowElem });\r\n targetElem.dispatchEvent(event);\r\n }\r\n}","function SetupA(elem: HTMLAnchorElement) {\r\n let target = elem.href;\r\n if (!target) {\r\n console.log(\"data-gs-open-in-closable-tab need a href\")\r\n }\r\n elem.addEventListener(\"click\", (e) => {\r\n e.preventDefault();\r\n let target = e.currentTarget as HTMLAnchorElement;\r\n let href = target.href;\r\n var wnd = window.open(href);\r\n }, true);\r\n}\r\n\r\nfunction serialize(form: HTMLFormElement, currentElem) {\r\n if (form.nodeName != \"FORM\") {\r\n console.log(\"the input form is not a form element\");\r\n return;\r\n }\r\n\r\n let elem: HTMLElement, fields = [];\r\n let formElements = form.elements;\r\n let len = formElements.length;\r\n\r\n function Add(name, value) {\r\n fields.push(encodeURIComponent(name) + \"=\" + encodeURIComponent(value));\r\n }\r\n\r\n for (var i = 0; i < len; i++) {\r\n elem = formElements[i] as HTMLElement;\r\n if (!elem[\"name\"] || elem[\"disabled\"]) {\r\n continue;\r\n }\r\n if (elem instanceof HTMLInputElement) {\r\n if (elem.type == \"file\") {\r\n continue;\r\n }\r\n if (elem.type == \"checkbox\" || elem.type == 'radio') {\r\n if (!elem.checked) {\r\n continue;\r\n }\r\n }\r\n Add(elem.name, elem.value)\r\n } else if (elem instanceof HTMLButtonElement) {\r\n if (elem !== currentElem) {\r\n continue;\r\n }\r\n Add(elem.name, elem.value)\r\n } else if (elem instanceof HTMLSelectElement) {\r\n if (elem.type === 'select-multiple') {\r\n for (let j = 0; j < elem.options.length; j++) {\r\n let option = elem.options[j] as HTMLOptionElement;\r\n if (option.selected) {\r\n Add(elem.name, option.value);\r\n }\r\n }\r\n } else {\r\n Add(elem.name, elem.value);\r\n }\r\n } else if (elem instanceof HTMLTextAreaElement) {\r\n Add(elem.name, elem.value);\r\n }\r\n }\r\n return fields.join('&');\r\n}\r\n\r\nfunction SetupButton(elem: HTMLButtonElement) {\r\n elem.addEventListener(\"click\", (e) => {\r\n e.preventDefault();\r\n let target = e.currentTarget as HTMLButtonElement;\r\n let queryString = serialize(target.form, target);\r\n let action = '';\r\n if (target.formAction) {\r\n action = target.formAction;\r\n } else {\r\n action = target.form.action;\r\n }\r\n if (action.indexOf('?') === -1) {\r\n action += \"?\";\r\n }\r\n action += queryString;\r\n var wnd = window.open(action);\r\n }, true);\r\n}\r\n\r\nexport default function (elem: HTMLElement) {\r\n if (elem.nodeName === \"A\") {\r\n SetupA(elem);\r\n } else if (elem.nodeName === \"BUTTON\") {\r\n SetupButton(elem);\r\n } else {\r\n console.log(\"data-gs-toggle='open-in-closable-tab' unknown tag, only a and button are supported\")\r\n }\r\n}","import * as loadjs from 'loadjs';\r\n\r\ninterface WordCountConfig {\r\n maxCharCount: string;\r\n showParagraphs: boolean;\r\n showWordCount: boolean;\r\n showCharCount: boolean;\r\n countSpacesAsChars: boolean;\r\n countHTML: boolean;\r\n}\r\ninterface Config {\r\n customConfig: string;\r\n wordcount?: WordCountConfig;\r\n}\r\ninterface CKEDITOR {\r\n replace(elem: string | HTMLTextAreaElement, config: Config): any;\r\n};\r\n\r\ndeclare let CKEDITOR: CKEDITOR;\r\n\r\nexport default function (target: HTMLElement) {\r\n loadjs(['//app.genetics-gsa.org/includes/abstracts/ckeditor-4.7.0/ckeditor.js'], {\r\n success: function () {\r\n let elem = target as HTMLTextAreaElement;\r\n let baseConfig = elem.dataset[\"gsRichEditorConfig\"];\r\n if (!baseConfig) {\r\n throw \"The data-gs-rich-editor-config is required for gs-rich-editor\";\r\n }\r\n\r\n let config: Config = {\r\n customConfig: baseConfig\r\n };\r\n let maxCharCount = elem.dataset[\"gsRichEditorMaxCharCount\"];\r\n if (maxCharCount) {\r\n config.wordcount = {\r\n maxCharCount: maxCharCount,\r\n showParagraphs: false,\r\n showWordCount: false,\r\n showCharCount: true,\r\n countSpacesAsChars: false,\r\n countHTML: false,\r\n };\r\n }\r\n CKEDITOR.replace(elem, config);\r\n }\r\n });\r\n}\r\n\r\n\r\n","/// This is used for situation where the options of a select is based on another input\r\n\r\n/// \r\n/// \r\n\r\nimport { trigger } from './utility';\r\n\r\nexport default function (targetElem: HTMLElement) {\r\n let selectName = targetElem.dataset[\"gsTarget\"];\r\n let selectElems = document.getElementsByName(selectName);\r\n if (selectElems.length == 0) {\r\n throw new Error(`Can not find target element: ${selectName}`);\r\n } else if (selectElems.length > 1) {\r\n throw new Error(`more than one select element find: ${selectName}`);\r\n }\r\n let selectElem = selectElems[0] as HTMLSelectElement;\r\n if (selectElem.nodeName !== \"SELECT\") {\r\n throw new Error(`the target element (${selectName}) has to be a select element`);\r\n }\r\n let globalVauleName = targetElem.dataset['gsName'];\r\n\r\n if (globalVauleName === undefined) {\r\n throw new Error('Please provide the data-gs-name attribute');\r\n } else if (!(globalVauleName in window)) {\r\n throw new Error(`Can not find the name '${globalVauleName}' in window`);\r\n }\r\n let options = window[globalVauleName];\r\n selectElem.addEventListener(\"change\", function (e) {\r\n if ((e).detail && (e).detail.init) {\r\n e.preventDefault();\r\n return;\r\n }\r\n var value = selectElem.value;\r\n var option = options[value] as string[];\r\n\r\n while (targetElem.hasChildNodes()) {\r\n targetElem.removeChild(targetElem.lastChild);\r\n }\r\n\r\n if (option === undefined) {\r\n return;\r\n }\r\n\r\n for (var i = 0; i < option.length; i++) {\r\n var optionValue = option[i];\r\n var opt = document.createElement('option');\r\n opt.value = optionValue;\r\n opt.innerHTML = optionValue;\r\n targetElem.appendChild(opt);\r\n }\r\n (targetElem as HTMLSelectElement).selectedIndex = 0;\r\n trigger(targetElem, 'change');\r\n });\r\n}","import { show, hide, trigger } from './utility';\r\n\r\n/// show-depends-on-select is used when a section need to be hided based on a select element\r\n\r\n///
\r\n///
\r\n/// Note: the data-gs-hide-value version will also hide when slect value is ''\r\n///
\r\n///
\r\n/// Note: the data-gs-hide-regex version will also hide when slect value is ''\r\n\r\nexport default function (targetElem: HTMLElement) {\r\n let selectName = targetElem.dataset['gsTarget'];\r\n let selectElems = document.getElementsByName(selectName);\r\n if (selectElems.length == 0) {\r\n throw new Error(`Can not find target element: ${selectName}`);\r\n } else if (selectElems.length > 1) {\r\n throw new Error(`more than one select element find: ${selectName}`);\r\n }\r\n let selectElem = selectElems[0] as HTMLSelectElement;\r\n if (selectElem.nodeName !== \"SELECT\") {\r\n throw new Error(`the target element (${selectName}) has to be a select element`);\r\n }\r\n let showValue = targetElem.dataset['gsShowValue'];\r\n let showRegexText = targetElem.dataset['gsShowRegex'];\r\n let hideValue = targetElem.dataset['gsHideValue'];\r\n let hideRegexText = targetElem.dataset['gsHideRegex'];\r\n let gsNameSubSelect = targetElem.dataset['gsNameSubSelect'];\r\n let gsNameSkip = targetElem.dataset['gsNameSkip'];\r\n let conditions = 0;\r\n let matchFn: (value: string) => boolean = null;\r\n let negative = false;\r\n if (showValue !== undefined) {\r\n conditions++;\r\n matchFn = (value) => {\r\n return value === showValue;\r\n }\r\n }\r\n if (hideValue !== undefined) {\r\n conditions++;\r\n matchFn = (value) => {\r\n return !value || value === hideValue;\r\n }\r\n negative = true;\r\n }\r\n if (showRegexText !== undefined) {\r\n conditions++;\r\n let regex = new RegExp(showRegexText);\r\n matchFn = (value) => {\r\n return regex.test(value);\r\n }\r\n }\r\n if (hideRegexText !== undefined) {\r\n conditions++;\r\n let regex = new RegExp(hideRegexText);\r\n matchFn = (value) => {\r\n return regex.test(value);\r\n }\r\n negative = true;\r\n }\r\n if (gsNameSubSelect !== undefined) {\r\n conditions++;\r\n const subSelections = (window as any)[gsNameSubSelect] as Map;\r\n if (!subSelections) {\r\n throw new Error(`data-gs-name provided but can not find the name in window`)\r\n }\r\n matchFn = (value) => {\r\n return subSelections[value] !== undefined\r\n }\r\n }\r\n if (gsNameSkip !== undefined) {\r\n conditions++;\r\n const skips = (window as any)[gsNameSkip] as string[];\r\n if (!skips) {\r\n throw new Error(`data-gs-name-skip provided but can not find the name ${gsNameSkip} in window`)\r\n }\r\n if (!Array(skips)) {\r\n throw new Error(`data-gs-name-skip name ${gsNameSkip} in window is not an array`)\r\n }\r\n matchFn = (value) => {\r\n return !skips.includes(value);\r\n }\r\n }\r\n\r\n if (conditions !== 1) {\r\n throw new Error(`For show-depends-on-select, please provide exact one data-gs-show-value, data-gs-hide-value, data-gs-show-regex and data-gs-hide-regex, data-gs-name-sub-select, data-gs-name-skip attribute, ${conditions} found.`);\r\n }\r\n selectElem.addEventListener('change', (event) => {\r\n //console.log(\"change event\");\r\n let selectedOptions = (event.target).selectedOptions;\r\n let matched = false;\r\n for (let i = 0; i < selectedOptions.length; ++i) {\r\n let value = selectedOptions[i].value;\r\n if (matchFn(value)) {\r\n matched = true;\r\n break;\r\n }\r\n }\r\n if (negative) {\r\n matched = !matched;\r\n }\r\n if (matched) {\r\n show(targetElem);\r\n } else {\r\n hide(targetElem);\r\n }\r\n });\r\n trigger(selectElem, 'change', { detail: { init: true } });\r\n}","import { show, hide, trigger } from './utility';\r\n\r\n/// show-depends-on-select-other is a special case for show-depends-on-select, this allow the\r\n/// select value to end with Other instead of exact match. (e.g. 'h. Other').\r\n///\r\n///
\r\n\r\nexport default function (targetElem: HTMLElement) {\r\n let selectName = targetElem.dataset['gsTarget'];\r\n let selectElems = document.getElementsByName(selectName);\r\n if (selectElems.length == 0) {\r\n throw new Error(`Can not find target element: ${selectName}`);\r\n } else if (selectElems.length > 1) {\r\n throw new Error(`more than one select element find: ${selectName}`);\r\n }\r\n let selectElem = selectElems[0] as HTMLSelectElement;\r\n if (selectElem.nodeName !== \"SELECT\") {\r\n throw new Error(`the target element (${selectName}) has to be a select element`);\r\n }\r\n selectElem.addEventListener('change', (event) => {\r\n if (selectElem.value.toLowerCase().endsWith('other')) {\r\n show(targetElem);\r\n } else {\r\n hide(targetElem);\r\n }\r\n });\r\n trigger(selectElem, 'change', { detail: { init: true } });\r\n}","import { show, hide, trigger } from './utility';\r\n\r\n/// show-depends-on-select is used when a section need to be hided based on a select element\r\n\r\n///
n.AsperfestBoolRadio)\" data-gs-show-value=\"True\">
\r\n\r\nexport default function (targetElem: HTMLElement) {\r\n let radioName = targetElem.dataset['gsTarget'];\r\n let radioElems = document.getElementsByName(radioName);\r\n if (radioElems.length == 0) {\r\n throw new Error(`Can not find target element: ${radioName}`);\r\n }\r\n let showValue = targetElem.dataset['gsShowValue'];\r\n if (showValue === undefined) {\r\n throw new Error('Please provide the data-gs-show-value attribute');\r\n }\r\n for (let i = 0; i < radioElems.length; ++i) {\r\n var radioElem = radioElems[i] as HTMLInputElement;\r\n if (radioElem.nodeName !== \"INPUT\" || radioElem.type != \"radio\") {\r\n throw new Error(`the target element select by ${radioName} is not a radio element`);\r\n }\r\n radioElem.addEventListener('change', function (event) {\r\n var currValElem = event.target as HTMLInputElement;\r\n if (!currValElem.checked) {\r\n return;\r\n }\r\n if (currValElem.value === showValue) {\r\n show(targetElem)\r\n } else {\r\n hide(targetElem);\r\n }\r\n });\r\n }\r\n for (let i = 0; i < radioElems.length; ++i) {\r\n var radioElem = radioElems[i] as HTMLInputElement;\r\n if (radioElem.checked) {\r\n trigger(radioElem, 'change', { detail: { init: true } });\r\n return;\r\n }\r\n }\r\n // if none is checked hide it by default\r\n hide(targetElem);\r\n}","import { show, hide, trigger } from './utility';\r\n\r\n/// validation-summary is used to add click event to the links\r\n\r\n///
\r\n\r\nexport default function (targetElem: HTMLElement) {\r\n let alinks = targetElem.querySelectorAll('a[data-gs-target]');\r\n for (let i = 0; i < alinks.length; ++i) {\r\n let alinkElem = alinks[i] as HTMLLinkElement;\r\n let targetName = alinkElem.dataset['gsTarget'];\r\n let targetElems = document.getElementsByName(targetName);\r\n if (targetElems.length == 0) {\r\n console.log(`can not find validation target: ${targetName}`);\r\n }\r\n\r\n alinkElem.addEventListener('click', (e) => {\r\n e.preventDefault();\r\n let alinkElem = e.target as HTMLLinkElement;\r\n let targetName = alinkElem.dataset['gsTarget'];\r\n let targetElems = document.getElementsByName(targetName);\r\n let targetElem;\r\n if (targetElems && targetElems.length > 0) {\r\n targetElem = targetElems[0]\r\n } else {\r\n targetElem = document.getElementById(targetName);\r\n }\r\n if (!targetElem) {\r\n console.warn('validation-summary can not find target:', targetName)\r\n return;\r\n }\r\n let offset = targetElem.getClientRects()[0]['top'] - 70;\r\n window.scrollTo({ top: offset, behavior: 'smooth' })\r\n });\r\n }\r\n}","import { show, hide, trigger } from './utility';\r\n\r\n/// show-depends-on-select-other is a special case for show-depends-on-select, this allow the\r\n/// select value to end with Other instead of exact match. (e.g. 'h. Other').\r\n///\r\n///
\r\n\r\nexport default function (targetElem: HTMLElement) {\r\n let clearName = targetElem.dataset['gsClearName'];\r\n let customName = targetElem.dataset['gsCustomName'];\r\n let customTextName = targetElem.dataset['gsCustomTextName'];\r\n\r\n let clearElem: HTMLInputElement = null;\r\n let customElem: HTMLInputElement = null;\r\n let customTextElem: HTMLInputElement = null;\r\n\r\n\r\n let allElems = targetElem.querySelectorAll('input[type=text],input[type=radio],input[type=checkbox]');\r\n function clear(selfElem) {\r\n for (let i = 0; i < allElems.length; ++i) {\r\n let elem = allElems[i] as HTMLInputElement;\r\n if (elem == selfElem) {\r\n //do nothing\r\n } else if (elem.nodeName === 'INPUT' && elem.type === 'text') {\r\n elem.value = '';\r\n } else if (elem.nodeName === 'INPUT' && (elem.type === 'checkbox' || elem.type === 'radio')) {\r\n elem.checked = false;\r\n }\r\n }\r\n }\r\n\r\n for (let i = 0; i < allElems.length; ++i) {\r\n let elem = allElems[i] as HTMLInputElement;\r\n if (elem.name === clearName) {\r\n if (clearElem !== null) {\r\n throw new Error(`More than 1 clear element found: ${clearName}`);\r\n }\r\n clearElem = elem;\r\n }\r\n if (elem.name === customName) {\r\n customElem = elem;\r\n } else if (elem.name === customTextName) {\r\n customTextElem = elem;\r\n }\r\n\r\n elem.addEventListener('change', (e) => {\r\n let targetElem = e.target as HTMLInputElement;\r\n if (targetElem === clearElem && targetElem.checked) {\r\n clear(targetElem);\r\n } else if (targetElem !== clearElem && (targetElem.type === 'checkbox' || targetElem.type === 'radio') && targetElem.checked) {\r\n clearElem.checked = false;\r\n }\r\n if (customElem === targetElem && !targetElem.checked) {\r\n if (customTextElem) {\r\n customTextElem.value = '';\r\n }\r\n }\r\n });\r\n\r\n if (customTextElem) {\r\n customTextElem.addEventListener('input', (e => {\r\n if (customTextElem.value === '') {\r\n customElem.checked = false;\r\n } else {\r\n customElem.checked = true;\r\n clearElem.checked = false;\r\n }\r\n }));\r\n }\r\n }\r\n\r\n if (clearElem == null) {\r\n throw new Error(`Can not find clear element: ${clearName}`);\r\n }\r\n}","import { show, hide, trigger } from './utility';\r\n\r\n/// show-depends-on-select-other is a special case for show-depends-on-select, this allow the\r\n/// select value to end with Other instead of exact match. (e.g. 'h. Other').\r\n///\r\n///
\r\n\r\nfunction checkRowHasValue(elem: HTMLElement) {\r\n let textElems = elem.querySelectorAll(\"input\");\r\n for (let i = 0; i < textElems.length; ++i) {\r\n let elemi = textElems[i];\r\n if (elemi.type == 'text' && elemi.value) {\r\n return true;\r\n }\r\n if (elemi.type == 'radio' && elemi.checked) {\r\n return true;\r\n }\r\n }\r\n}\r\n\r\nexport default function (targetElem: HTMLElement) {\r\n let minStr = targetElem.dataset['gsMin'];\r\n if (!minStr) {\r\n throw new Error(\"please specify the minimal items to show\");\r\n }\r\n let min = parseInt(minStr);\r\n if (isNaN(min) || min < 0) {\r\n throw new Error(\"please specify the minimal items to show\");\r\n }\r\n let rows = targetElem.children;\r\n let firstNonEmpty = 0;\r\n let i = 0;\r\n for (i = rows.length - 1; i >= min; --i) {\r\n let rowi = rows[i];\r\n if (checkRowHasValue(rowi)) {\r\n break;\r\n }\r\n hide(rowi);\r\n }\r\n let firstHidden = i + 1;\r\n if (firstHidden < rows.length) {\r\n let btnElem = document.createElement(\"BUTTON\");\r\n btnElem.type = \"button\";\r\n btnElem.className = \"btn btn-primary mt-2\";\r\n btnElem.textContent = \"Add More Rows\";\r\n btnElem.addEventListener(\"click\", (e) => {\r\n let firstHideElem = rows[firstHidden++]\r\n show(firstHideElem);\r\n if (firstHidden == rows.length - 1) {\r\n btnElem.remove();\r\n }\r\n });\r\n targetElem.appendChild(btnElem);\r\n }\r\n\r\n}","import * as loadjs from 'loadjs';\r\nexport default function (baseUrl: string, target: HTMLElement) {\r\n loadjs([\r\n baseUrl + '/bootstrap-select/dist/js/bootstrap-select.min.js',\r\n baseUrl + '/bootstrap-select/dist/css/bootstrap-select.min.css',\r\n ], {\r\n success: function () {\r\n if (target.tagName != \"SELECT\") {\r\n throw new Error(\"only select is allowed for data-gs-chosen\");\r\n }\r\n //for multiply select, remove the empty choice\r\n if ((target).multiple) {\r\n let firstOption = (target).options[0];\r\n if (!firstOption.value) {\r\n firstOption.remove();\r\n }\r\n }\r\n ($(target)).selectpicker();\r\n }\r\n });\r\n}\r\n","import * as loadjs from 'loadjs';\r\nimport * as $ from 'jquery';\r\nexport default function (baseUrl: string, target: HTMLElement) {\r\n loadjs([\r\n baseUrl + '/bootstrap-3-typeahead/bootstrap3-typeahead.min.js',\r\n ], {\r\n success: function () {\r\n if (target.tagName != \"INPUT\") {\r\n throw new Error(\"only INPUT is allowed for data-gs-typeahead\");\r\n }\r\n const dataName = target.dataset['gsData'];\r\n if (dataName) {\r\n let data = window[dataName];\r\n if (!data) {\r\n throw new Error(\"can not find data in window \" + dataName);\r\n }\r\n ($(target)).typeahead({ source: data });\r\n return;\r\n }\r\n const jsonUrl = target.dataset['gsJsonUrl']\r\n if (jsonUrl) {\r\n $.get(jsonUrl, function (data) {\r\n ($(target)).typeahead({ source: data });\r\n }, 'json').fail(function () {\r\n const jsonBackupUrl = target.dataset['gsJsonBackupUrl'];\r\n if (jsonBackupUrl) {\r\n $.get(jsonBackupUrl, function (data) {\r\n ($(target)).typeahead({ source: data });\r\n }, 'json')\r\n }\r\n })\r\n return;\r\n }\r\n throw new Error(\"either data-gs-data or data-gs-json-url is required for data-gs-typeahead\");\r\n }\r\n });\r\n}\r\n","import { trigger } from \"./utility\";\r\n\r\nexport function otherAutoselectClear(targetElem: HTMLElement) {\r\n let otherName = targetElem.dataset['gsTarget'];\r\n if (!otherName) {\r\n throw new Error(\"data-gs-target is needed for other-autoselect-clear\")\r\n }\r\n let otherElems = document.getElementsByName(otherName);\r\n if (otherElems.length == 0) {\r\n throw new Error(`Can not find target element: ${otherName}`);\r\n } else if (otherElems.length > 1) {\r\n throw new Error(`more than one select element find: ${otherName}`);\r\n }\r\n let otherElem = otherElems[0] as HTMLInputElement;\r\n if (!(otherElem instanceof HTMLInputElement)) {\r\n throw new Error(`other-autoselect-clear only support text`);\r\n }\r\n if (!(targetElem instanceof HTMLInputElement)) {\r\n throw new Error(`other-autoselect-clear only support checkbox/radio`);\r\n }\r\n\r\n otherElem.addEventListener(\"input\", function (e) {\r\n if (otherElem.value && !targetElem.checked) {\r\n targetElem.checked = true;\r\n trigger(targetElem, 'change');\r\n }\r\n });\r\n\r\n targetElem.addEventListener(\"change\", function () {\r\n if (!targetElem.checked) {\r\n otherElem.value = '';\r\n }\r\n })\r\n}","import { show, hide, trigger } from './utility';\r\n\r\n/// checks-group-depends-on-radio is used when a section need to be hided based on a select element\r\n\r\n///
n.AsperfestBoolRadio)\" data-gs-show-value=\"True\">
\r\n\r\nfunction unCheckAll(elem: HTMLElement) {\r\n const elems = elem.querySelectorAll(\"input\");\r\n for (let i = 0; i < elems.length; i++) {\r\n let childElem = elems[i] as HTMLInputElement;\r\n if (childElem.type !== \"checkbox\") {\r\n // this may be the other text box\r\n if (childElem.type !== \"text\") {\r\n console.log(`non checkbox elem found, please check`);\r\n }\r\n continue;\r\n }\r\n if (childElem.checked) {\r\n childElem.checked = false;\r\n trigger(childElem, 'change')\r\n }\r\n }\r\n}\r\n\r\nfunction setup(elem: HTMLElement, radioElems: NodeListOf, shouldCheckElem: HTMLInputElement) {\r\n const elems = elem.querySelectorAll(\"input\");\r\n for (let i = 0; i < elems.length; i++) {\r\n let childElem = elems[i] as HTMLInputElement;\r\n if (childElem.type !== \"checkbox\") {\r\n // this may be the other text box\r\n if (childElem.type !== \"text\") {\r\n console.log(`non checkbox elem found, please check`);\r\n }\r\n continue;\r\n }\r\n childElem.addEventListener('change', function (e) {\r\n if (childElem.checked) {\r\n for (let i = 0; i < radioElems.length; i++) {\r\n let radioElem = radioElems[i] as HTMLInputElement;\r\n let desired = false;\r\n if (radioElem === shouldCheckElem) {\r\n desired = true\r\n }\r\n if (desired !== radioElem.checked) {\r\n radioElem.checked = desired;\r\n trigger(radioElem, 'change')\r\n }\r\n }\r\n }\r\n })\r\n }\r\n}\r\n\r\nexport function checkboxGroupDependsOnRadio(targetElem: HTMLElement) {\r\n let radioName = targetElem.dataset['gsTarget'];\r\n let radioElems = document.getElementsByName(radioName);\r\n if (radioElems.length == 0) {\r\n throw new Error(`Can not find target element: ${radioName}`);\r\n }\r\n let showValue = targetElem.dataset['gsShowValue'];\r\n if (showValue === undefined) {\r\n throw new Error('Please provide the data-gs-show-value attribute');\r\n }\r\n let shouldCheckElem;\r\n for (let i = 0; i < radioElems.length; ++i) {\r\n var radioElem = radioElems[i] as HTMLInputElement;\r\n if (radioElem.nodeName !== \"INPUT\" || radioElem.type != \"radio\") {\r\n throw new Error(`the target element select by ${radioName} is not a radio element`);\r\n }\r\n if (radioElem.value === showValue) {\r\n shouldCheckElem = radioElem\r\n }\r\n radioElem.addEventListener('change', function (event) {\r\n var currValElem = event.target as HTMLInputElement;\r\n if (!currValElem.checked) {\r\n return;\r\n }\r\n if (currValElem.value !== showValue) {\r\n unCheckAll(targetElem);\r\n }\r\n });\r\n }\r\n if (!shouldCheckElem) {\r\n throw new Error(`could not find an element with name ${radioName},value ${showValue}`)\r\n }\r\n setup(targetElem, radioElems, shouldCheckElem);\r\n}","export function drosTopicList(targetElem: HTMLElement) {\r\n let children = targetElem.children;\r\n let width = targetElem.clientWidth;\r\n let widthString = width + 'px';\r\n let halfWidth = Math.floor(width / 2);\r\n let halfWidthString = halfWidth + 'px';\r\n let quadWidth = Math.floor(width / 4);\r\n let quadWidthString = quadWidth + 'px';\r\n\r\n for (let i = 0; i < children.length; ++i) {\r\n let child = children[i] as HTMLElement;\r\n child.style.display = 'inline-block'\r\n let { width } = child.getBoundingClientRect();\r\n if (width < quadWidth) {\r\n child.style.width = quadWidthString;\r\n } else if (width < halfWidth) {\r\n child.style.width = halfWidthString;\r\n } else {\r\n child.style.width = widthString;\r\n }\r\n }\r\n}\r\n"],"sourceRoot":""}