ode-ngjs-front 1.1.7 → 1.2.0-dev-produit.202212141656
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/2ebddef9552e6e74febdcc049e7b6cea.html +411 -0
- package/dist/31451cacc32b12533b35bc2756a66c68.html +52 -0
- package/dist/5a177ed9e4e64baa8287a6f6e5625ab4.html +127 -0
- package/dist/7f0136c03fe438995347a346ee478b3a.html +91 -0
- package/dist/d6dec5bea5ec25a97b20e8259e193c57.html +162 -0
- package/dist/e42fe8833e44d61abdaa936837b6b949.html +10 -0
- package/dist/f3f8289907cc5f53b11e2bc5f451be96.html +31 -0
- package/dist/ode-ngjs-front.js +37 -0
- package/dist/ode-ngjs-front.js.map +1 -0
- package/dist/test/Karma.spec.d.ts +1 -0
- package/dist/test/Karma.spec.d.ts.map +1 -0
- package/dist/test/Sample.spec.d.ts +2 -0
- package/dist/test/Sample.spec.d.ts.map +1 -0
- package/dist/ts/directives/components/i18n/translate.directive.d.ts.map +1 -1
- package/dist/ts/directives/index.d.ts +0 -1
- package/dist/ts/directives/index.d.ts.map +1 -1
- package/dist/ts/modules/base.module.d.ts.map +1 -1
- package/dist/ts/modules/ui.module.d.ts.map +1 -1
- package/dist/ts/modules/widgets.module.d.ts +2 -0
- package/dist/ts/modules/widgets.module.d.ts.map +1 -1
- package/dist/ts/services/theme-helper.service.d.ts.map +1 -1
- package/dist/ts/utils/base64.d.ts +5 -0
- package/dist/ts/utils/base64.d.ts.map +1 -0
- package/dist/ts/utils/browser-info.d.ts +1 -0
- package/dist/ts/utils/browser-info.d.ts.map +1 -1
- package/dist/ts/utils/index.d.ts +1 -0
- package/dist/ts/utils/index.d.ts.map +1 -1
- package/dist/ts/utils/recorder-video.d.ts +2 -0
- package/dist/ts/utils/recorder-video.d.ts.map +1 -1
- package/dist/ts/widgets/briefme-widget/briefme-widget.widget.d.ts +2 -0
- package/dist/ts/widgets/briefme-widget/briefme-widget.widget.d.ts.map +1 -0
- package/dist/ts/widgets/universalis-widget/universalis-widget.widget.d.ts +2 -0
- package/dist/ts/widgets/universalis-widget/universalis-widget.widget.d.ts.map +1 -0
- package/dist/version.txt +1 -0
- package/dist/widgets/agenda-widget/agenda-widget.widget.js +2 -0
- package/dist/widgets/agenda-widget/agenda-widget.widget.js.map +1 -0
- package/dist/widgets/bookmark-widget/bookmark-widget.widget.js +2 -0
- package/dist/widgets/bookmark-widget/bookmark-widget.widget.js.map +1 -0
- package/dist/widgets/briefme-widget/briefme-widget.widget.js +2 -0
- package/dist/widgets/briefme-widget/briefme-widget.widget.js.map +1 -0
- package/dist/widgets/calendar-widget/calendar-widget.widget.js +2 -0
- package/dist/widgets/calendar-widget/calendar-widget.widget.js.map +1 -0
- package/dist/widgets/carnet-de-bord/carnet-de-bord.widget.js +2 -0
- package/dist/widgets/carnet-de-bord/carnet-de-bord.widget.js.map +1 -0
- package/dist/widgets/cursus-widget/cursus-widget.widget.js +2 -0
- package/dist/widgets/cursus-widget/cursus-widget.widget.js.map +1 -0
- package/dist/widgets/dicodelazone-widget/dicodelazone-widget.widget.js +2 -0
- package/dist/widgets/dicodelazone-widget/dicodelazone-widget.widget.js.map +1 -0
- package/dist/widgets/last-infos-widget/last-infos-widget.widget.js +2 -0
- package/dist/widgets/last-infos-widget/last-infos-widget.widget.js.map +1 -0
- package/dist/widgets/maxicours-widget/maxicours-widget.widget.js +2 -0
- package/dist/widgets/maxicours-widget/maxicours-widget.widget.js.map +1 -0
- package/dist/widgets/my-apps/my-apps.widget.js +2 -0
- package/dist/widgets/my-apps/my-apps.widget.js.map +1 -0
- package/dist/widgets/qwant-widget/qwant-widget.widget.js +2 -0
- package/dist/widgets/qwant-widget/qwant-widget.widget.js.map +1 -0
- package/dist/widgets/record-me/record-me.widget.js +2 -0
- package/dist/widgets/record-me/record-me.widget.js.map +1 -0
- package/dist/widgets/rss-widget/rss-widget.widget.js +2 -0
- package/dist/widgets/rss-widget/rss-widget.widget.js.map +1 -0
- package/dist/widgets/school-widget/school-widget.widget.js +2 -0
- package/dist/widgets/school-widget/school-widget.widget.js.map +1 -0
- package/dist/widgets/universalis-widget/universalis-widget.widget.js +2 -0
- package/dist/widgets/universalis-widget/universalis-widget.widget.js.map +1 -0
- package/package.json +6 -5
- package/dist/ts/directives/business/theme/object-src.directive.d.ts +0 -13
- package/dist/ts/directives/business/theme/object-src.directive.d.ts.map +0 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ode-ngjs-front.js","mappings":"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","sources":["webpack://ode-ngjs-front/./node_modules/angular-drag-and-drop-lists/angular-drag-and-drop-lists.js","webpack://ode-ngjs-front/./src/ts/directives/business/explorer/sidebar-folder.directive.lazy.html","webpack://ode-ngjs-front/./src/ts/directives/business/portal/portal.directive.lazy.html","webpack://ode-ngjs-front/./src/ts/directives/business/portal/smart-banner.directive.lazy.html","webpack://ode-ngjs-front/./src/ts/directives/business/props/props-panel.directive.lazy.html","webpack://ode-ngjs-front/./src/ts/directives/business/share/share-panel-table.lazy.html","webpack://ode-ngjs-front/./src/ts/directives/business/share/share-panel.directive.lazy.html","webpack://ode-ngjs-front/./src/ts/directives/components/pulsar/assistant.directive.lazy.html","webpack://ode-ngjs-front/./src/ts/directives/business/explorer/domino-folder.directive.html","webpack://ode-ngjs-front/./src/ts/directives/business/explorer/domino-item.directive.html","webpack://ode-ngjs-front/./src/ts/directives/business/explorer/explorer.directive.html","webpack://ode-ngjs-front/./src/ts/directives/business/explorer/resource-list.directive.html","webpack://ode-ngjs-front/./src/ts/directives/business/explorer/sidebar.directive.html","webpack://ode-ngjs-front/./src/ts/directives/business/media/recorder.directive.html","webpack://ode-ngjs-front/./src/ts/directives/business/portal/connector-lightbox.directive.html","webpack://ode-ngjs-front/./src/ts/directives/business/portal/help.directive.html","webpack://ode-ngjs-front/./src/ts/directives/business/portal/navbar.directive.html","webpack://ode-ngjs-front/./src/ts/directives/business/toaster/toaster.directive.html","webpack://ode-ngjs-front/./src/ts/directives/components/autocomplete/autocomplete.directive.html","webpack://ode-ngjs-front/./src/ts/directives/components/modal/infotip.directive.html","webpack://ode-ngjs-front/./src/ts/directives/components/modal/lightbox.directive.html","webpack://ode-ngjs-front/./src/ts/directives/components/modal/modal.directive.html","webpack://ode-ngjs-front/./src/ts/directives/components/pulsar/pulsar.directive.html","webpack://ode-ngjs-front/./src/ts/directives/widget/widget-container.directive.html","webpack://ode-ngjs-front/./src/ts/samples/say-something.directive.html","webpack://ode-ngjs-front/./node_modules/humane-js/humane.js","webpack://ode-ngjs-front/./node_modules/moment/locale/de.js","webpack://ode-ngjs-front/./node_modules/moment/locale/es.js","webpack://ode-ngjs-front/./node_modules/moment/locale/fr.js","webpack://ode-ngjs-front/./node_modules/moment/locale/it.js","webpack://ode-ngjs-front/./node_modules/moment/locale/pt.js","webpack://ode-ngjs-front//home/node/app/node_modules/moment/locale|sync|/[/\\\\](de(\\.js)","webpack://ode-ngjs-front/./node_modules/moment/moment.js","webpack://ode-ngjs-front/./node_modules/rxjs/node_modules/tslib/tslib.es6.js","webpack://ode-ngjs-front/./node_modules/rxjs/dist/esm5/internal/util/isFunction.js","webpack://ode-ngjs-front/./node_modules/rxjs/dist/esm5/internal/util/createErrorClass.js","webpack://ode-ngjs-front/./node_modules/rxjs/dist/esm5/internal/util/UnsubscriptionError.js","webpack://ode-ngjs-front/./node_modules/rxjs/dist/esm5/internal/util/arrRemove.js","webpack://ode-ngjs-front/./node_modules/rxjs/dist/esm5/internal/Subscription.js","webpack://ode-ngjs-front/./node_modules/rxjs/dist/esm5/internal/config.js","webpack://ode-ngjs-front/./node_modules/rxjs/dist/esm5/internal/scheduler/timeoutProvider.js","webpack://ode-ngjs-front/./node_modules/rxjs/dist/esm5/internal/util/reportUnhandledError.js","webpack://ode-ngjs-front/./node_modules/rxjs/dist/esm5/internal/util/noop.js","webpack://ode-ngjs-front/./node_modules/rxjs/dist/esm5/internal/NotificationFactories.js","webpack://ode-ngjs-front/./node_modules/rxjs/dist/esm5/internal/util/errorContext.js","webpack://ode-ngjs-front/./node_modules/rxjs/dist/esm5/internal/Subscriber.js","webpack://ode-ngjs-front/./node_modules/rxjs/dist/esm5/internal/symbol/observable.js","webpack://ode-ngjs-front/./node_modules/rxjs/dist/esm5/internal/util/identity.js","webpack://ode-ngjs-front/./node_modules/rxjs/dist/esm5/internal/util/pipe.js","webpack://ode-ngjs-front/./node_modules/rxjs/dist/esm5/internal/Observable.js","webpack://ode-ngjs-front/./node_modules/rxjs/dist/esm5/internal/util/lift.js","webpack://ode-ngjs-front/./node_modules/rxjs/dist/esm5/internal/operators/OperatorSubscriber.js","webpack://ode-ngjs-front/./node_modules/rxjs/dist/esm5/internal/operators/refCount.js","webpack://ode-ngjs-front/./node_modules/rxjs/dist/esm5/internal/observable/ConnectableObservable.js","webpack://ode-ngjs-front/./node_modules/rxjs/dist/esm5/internal/scheduler/performanceTimestampProvider.js","webpack://ode-ngjs-front/./node_modules/rxjs/dist/esm5/internal/scheduler/animationFrameProvider.js","webpack://ode-ngjs-front/./node_modules/rxjs/dist/esm5/internal/observable/dom/animationFrames.js","webpack://ode-ngjs-front/./node_modules/rxjs/dist/esm5/internal/util/Immediate.js","webpack://ode-ngjs-front/./node_modules/rxjs/dist/esm5/internal/util/ObjectUnsubscribedError.js","webpack://ode-ngjs-front/./node_modules/rxjs/dist/esm5/internal/Subject.js","webpack://ode-ngjs-front/./node_modules/rxjs/dist/esm5/internal/BehaviorSubject.js","webpack://ode-ngjs-front/./node_modules/rxjs/dist/esm5/internal/scheduler/dateTimestampProvider.js","webpack://ode-ngjs-front/./node_modules/rxjs/dist/esm5/internal/ReplaySubject.js","webpack://ode-ngjs-front/./node_modules/rxjs/dist/esm5/internal/AsyncSubject.js","webpack://ode-ngjs-front/./node_modules/rxjs/dist/esm5/internal/scheduler/Action.js","webpack://ode-ngjs-front/./node_modules/rxjs/dist/esm5/internal/scheduler/intervalProvider.js","webpack://ode-ngjs-front/./node_modules/rxjs/dist/esm5/internal/scheduler/AsyncAction.js","webpack://ode-ngjs-front/./node_modules/rxjs/dist/esm5/internal/scheduler/immediateProvider.js","webpack://ode-ngjs-front/./node_modules/rxjs/dist/esm5/internal/scheduler/AsapAction.js","webpack://ode-ngjs-front/./node_modules/rxjs/dist/esm5/internal/Scheduler.js","webpack://ode-ngjs-front/./node_modules/rxjs/dist/esm5/internal/scheduler/AsyncScheduler.js","webpack://ode-ngjs-front/./node_modules/rxjs/dist/esm5/internal/scheduler/AsapScheduler.js","webpack://ode-ngjs-front/./node_modules/rxjs/dist/esm5/internal/scheduler/asap.js","webpack://ode-ngjs-front/./node_modules/rxjs/dist/esm5/internal/scheduler/async.js","webpack://ode-ngjs-front/./node_modules/rxjs/dist/esm5/internal/scheduler/QueueAction.js","webpack://ode-ngjs-front/./node_modules/rxjs/dist/esm5/internal/scheduler/queue.js","webpack://ode-ngjs-front/./node_modules/rxjs/dist/esm5/internal/scheduler/QueueScheduler.js","webpack://ode-ngjs-front/./node_modules/rxjs/dist/esm5/internal/scheduler/AnimationFrameAction.js","webpack://ode-ngjs-front/./node_modules/rxjs/dist/esm5/internal/scheduler/AnimationFrameScheduler.js","webpack://ode-ngjs-front/./node_modules/rxjs/dist/esm5/internal/scheduler/animationFrame.js","webpack://ode-ngjs-front/./node_modules/rxjs/dist/esm5/internal/scheduler/VirtualTimeScheduler.js","webpack://ode-ngjs-front/./node_modules/rxjs/dist/esm5/internal/observable/empty.js","webpack://ode-ngjs-front/./node_modules/rxjs/dist/esm5/internal/scheduled/scheduleArray.js","webpack://ode-ngjs-front/./node_modules/rxjs/dist/esm5/internal/util/isArrayLike.js","webpack://ode-ngjs-front/./node_modules/rxjs/dist/esm5/internal/util/isPromise.js","webpack://ode-ngjs-front/./node_modules/rxjs/dist/esm5/internal/symbol/iterator.js","webpack://ode-ngjs-front/./node_modules/rxjs/dist/esm5/internal/Notification.js","webpack://ode-ngjs-front/./node_modules/rxjs/dist/esm5/internal/util/caughtSchedule.js","webpack://ode-ngjs-front/./node_modules/rxjs/dist/esm5/internal/scheduled/scheduleIterable.js","webpack://ode-ngjs-front/./node_modules/rxjs/dist/esm5/internal/scheduled/scheduleAsyncIterable.js","webpack://ode-ngjs-front/./node_modules/rxjs/dist/esm5/internal/util/isInteropObservable.js","webpack://ode-ngjs-front/./node_modules/rxjs/dist/esm5/internal/util/isIterable.js","webpack://ode-ngjs-front/./node_modules/rxjs/dist/esm5/internal/util/isAsyncIterable.js","webpack://ode-ngjs-front/./node_modules/rxjs/dist/esm5/internal/util/throwUnobservableError.js","webpack://ode-ngjs-front/./node_modules/rxjs/dist/esm5/internal/util/isReadableStreamLike.js","webpack://ode-ngjs-front/./node_modules/rxjs/dist/esm5/internal/scheduled/scheduled.js","webpack://ode-ngjs-front/./node_modules/rxjs/dist/esm5/internal/scheduled/scheduleObservable.js","webpack://ode-ngjs-front/./node_modules/rxjs/dist/esm5/internal/scheduled/schedulePromise.js","webpack://ode-ngjs-front/./node_modules/rxjs/dist/esm5/internal/scheduled/scheduleReadableStreamLike.js","webpack://ode-ngjs-front/./node_modules/rxjs/dist/esm5/internal/observable/from.js","webpack://ode-ngjs-front/./node_modules/rxjs/dist/esm5/internal/observable/fromArray.js","webpack://ode-ngjs-front/./node_modules/rxjs/dist/esm5/internal/util/isScheduler.js","webpack://ode-ngjs-front/./node_modules/rxjs/dist/esm5/internal/util/args.js","webpack://ode-ngjs-front/./node_modules/rxjs/dist/esm5/internal/observable/of.js","webpack://ode-ngjs-front/./node_modules/rxjs/dist/esm5/internal/observable/throwError.js","webpack://ode-ngjs-front/./node_modules/rxjs/dist/esm5/internal/util/isObservable.js","webpack://ode-ngjs-front/./node_modules/rxjs/dist/esm5/internal/util/EmptyError.js","webpack://ode-ngjs-front/./node_modules/rxjs/dist/esm5/internal/lastValueFrom.js","webpack://ode-ngjs-front/./node_modules/rxjs/dist/esm5/internal/firstValueFrom.js","webpack://ode-ngjs-front/./node_modules/rxjs/dist/esm5/internal/util/ArgumentOutOfRangeError.js","webpack://ode-ngjs-front/./node_modules/rxjs/dist/esm5/internal/util/NotFoundError.js","webpack://ode-ngjs-front/./node_modules/rxjs/dist/esm5/internal/util/SequenceError.js","webpack://ode-ngjs-front/./node_modules/rxjs/dist/esm5/internal/util/isDate.js","webpack://ode-ngjs-front/./node_modules/rxjs/dist/esm5/internal/operators/timeout.js","webpack://ode-ngjs-front/./node_modules/rxjs/dist/esm5/internal/operators/subscribeOn.js","webpack://ode-ngjs-front/./node_modules/rxjs/dist/esm5/internal/operators/map.js","webpack://ode-ngjs-front/./node_modules/rxjs/dist/esm5/internal/util/mapOneOrManyArgs.js","webpack://ode-ngjs-front/./node_modules/rxjs/dist/esm5/internal/operators/observeOn.js","webpack://ode-ngjs-front/./node_modules/rxjs/dist/esm5/internal/observable/bindCallbackInternals.js","webpack://ode-ngjs-front/./node_modules/rxjs/dist/esm5/internal/observable/bindCallback.js","webpack://ode-ngjs-front/./node_modules/rxjs/dist/esm5/internal/observable/bindNodeCallback.js","webpack://ode-ngjs-front/./node_modules/rxjs/dist/esm5/internal/util/argsArgArrayOrObject.js","webpack://ode-ngjs-front/./node_modules/rxjs/dist/esm5/internal/util/createObject.js","webpack://ode-ngjs-front/./node_modules/rxjs/dist/esm5/internal/observable/combineLatest.js","webpack://ode-ngjs-front/./node_modules/rxjs/dist/esm5/internal/operators/mergeInternals.js","webpack://ode-ngjs-front/./node_modules/rxjs/dist/esm5/internal/operators/mergeMap.js","webpack://ode-ngjs-front/./node_modules/rxjs/dist/esm5/internal/operators/mergeAll.js","webpack://ode-ngjs-front/./node_modules/rxjs/dist/esm5/internal/operators/concatAll.js","webpack://ode-ngjs-front/./node_modules/rxjs/dist/esm5/internal/observable/concat.js","webpack://ode-ngjs-front/./node_modules/rxjs/dist/esm5/internal/observable/defer.js","webpack://ode-ngjs-front/./node_modules/rxjs/dist/esm5/internal/observable/connectable.js","webpack://ode-ngjs-front/./node_modules/rxjs/dist/esm5/internal/observable/forkJoin.js","webpack://ode-ngjs-front/./node_modules/rxjs/dist/esm5/internal/observable/fromEvent.js","webpack://ode-ngjs-front/./node_modules/rxjs/dist/esm5/internal/observable/fromEventPattern.js","webpack://ode-ngjs-front/./node_modules/rxjs/dist/esm5/internal/observable/generate.js","webpack://ode-ngjs-front/./node_modules/rxjs/dist/esm5/internal/observable/iif.js","webpack://ode-ngjs-front/./node_modules/rxjs/dist/esm5/internal/observable/timer.js","webpack://ode-ngjs-front/./node_modules/rxjs/dist/esm5/internal/observable/interval.js","webpack://ode-ngjs-front/./node_modules/rxjs/dist/esm5/internal/observable/merge.js","webpack://ode-ngjs-front/./node_modules/rxjs/dist/esm5/internal/observable/never.js","webpack://ode-ngjs-front/./node_modules/rxjs/dist/esm5/internal/util/argsOrArgArray.js","webpack://ode-ngjs-front/./node_modules/rxjs/dist/esm5/internal/operators/onErrorResumeNext.js","webpack://ode-ngjs-front/./node_modules/rxjs/dist/esm5/internal/observable/onErrorResumeNext.js","webpack://ode-ngjs-front/./node_modules/rxjs/dist/esm5/internal/observable/pairs.js","webpack://ode-ngjs-front/./node_modules/rxjs/dist/esm5/internal/util/not.js","webpack://ode-ngjs-front/./node_modules/rxjs/dist/esm5/internal/operators/filter.js","webpack://ode-ngjs-front/./node_modules/rxjs/dist/esm5/internal/observable/partition.js","webpack://ode-ngjs-front/./node_modules/rxjs/dist/esm5/internal/observable/race.js","webpack://ode-ngjs-front/./node_modules/rxjs/dist/esm5/internal/observable/range.js","webpack://ode-ngjs-front/./node_modules/rxjs/dist/esm5/internal/observable/using.js","webpack://ode-ngjs-front/./node_modules/rxjs/dist/esm5/internal/observable/zip.js","webpack://ode-ngjs-front/./node_modules/rxjs/dist/esm5/internal/operators/audit.js","webpack://ode-ngjs-front/./node_modules/rxjs/dist/esm5/internal/operators/auditTime.js","webpack://ode-ngjs-front/./node_modules/rxjs/dist/esm5/internal/operators/buffer.js","webpack://ode-ngjs-front/./node_modules/rxjs/dist/esm5/internal/operators/bufferCount.js","webpack://ode-ngjs-front/./node_modules/rxjs/dist/esm5/internal/operators/bufferTime.js","webpack://ode-ngjs-front/./node_modules/rxjs/dist/esm5/internal/operators/bufferToggle.js","webpack://ode-ngjs-front/./node_modules/rxjs/dist/esm5/internal/operators/bufferWhen.js","webpack://ode-ngjs-front/./node_modules/rxjs/dist/esm5/internal/operators/catchError.js","webpack://ode-ngjs-front/./node_modules/rxjs/dist/esm5/internal/operators/scanInternals.js","webpack://ode-ngjs-front/./node_modules/rxjs/dist/esm5/internal/operators/reduce.js","webpack://ode-ngjs-front/./node_modules/rxjs/dist/esm5/internal/operators/toArray.js","webpack://ode-ngjs-front/./node_modules/rxjs/dist/esm5/internal/operators/joinAllInternals.js","webpack://ode-ngjs-front/./node_modules/rxjs/dist/esm5/internal/operators/combineLatestAll.js","webpack://ode-ngjs-front/./node_modules/rxjs/dist/esm5/internal/operators/combineAll.js","webpack://ode-ngjs-front/./node_modules/rxjs/dist/esm5/internal/operators/combineLatest.js","webpack://ode-ngjs-front/./node_modules/rxjs/dist/esm5/internal/operators/combineLatestWith.js","webpack://ode-ngjs-front/./node_modules/rxjs/dist/esm5/internal/operators/concatMap.js","webpack://ode-ngjs-front/./node_modules/rxjs/dist/esm5/internal/operators/concatMapTo.js","webpack://ode-ngjs-front/./node_modules/rxjs/dist/esm5/internal/operators/concat.js","webpack://ode-ngjs-front/./node_modules/rxjs/dist/esm5/internal/operators/concatWith.js","webpack://ode-ngjs-front/./node_modules/rxjs/dist/esm5/internal/operators/connect.js","webpack://ode-ngjs-front/./node_modules/rxjs/dist/esm5/internal/observable/fromSubscribable.js","webpack://ode-ngjs-front/./node_modules/rxjs/dist/esm5/internal/operators/count.js","webpack://ode-ngjs-front/./node_modules/rxjs/dist/esm5/internal/operators/debounce.js","webpack://ode-ngjs-front/./node_modules/rxjs/dist/esm5/internal/operators/debounceTime.js","webpack://ode-ngjs-front/./node_modules/rxjs/dist/esm5/internal/operators/defaultIfEmpty.js","webpack://ode-ngjs-front/./node_modules/rxjs/dist/esm5/internal/operators/take.js","webpack://ode-ngjs-front/./node_modules/rxjs/dist/esm5/internal/operators/ignoreElements.js","webpack://ode-ngjs-front/./node_modules/rxjs/dist/esm5/internal/operators/mapTo.js","webpack://ode-ngjs-front/./node_modules/rxjs/dist/esm5/internal/operators/delayWhen.js","webpack://ode-ngjs-front/./node_modules/rxjs/dist/esm5/internal/operators/delay.js","webpack://ode-ngjs-front/./node_modules/rxjs/dist/esm5/internal/operators/dematerialize.js","webpack://ode-ngjs-front/./node_modules/rxjs/dist/esm5/internal/operators/distinct.js","webpack://ode-ngjs-front/./node_modules/rxjs/dist/esm5/internal/operators/distinctUntilChanged.js","webpack://ode-ngjs-front/./node_modules/rxjs/dist/esm5/internal/operators/distinctUntilKeyChanged.js","webpack://ode-ngjs-front/./node_modules/rxjs/dist/esm5/internal/operators/throwIfEmpty.js","webpack://ode-ngjs-front/./node_modules/rxjs/dist/esm5/internal/operators/elementAt.js","webpack://ode-ngjs-front/./node_modules/rxjs/dist/esm5/internal/operators/endWith.js","webpack://ode-ngjs-front/./node_modules/rxjs/dist/esm5/internal/operators/every.js","webpack://ode-ngjs-front/./node_modules/rxjs/dist/esm5/internal/operators/exhaustAll.js","webpack://ode-ngjs-front/./node_modules/rxjs/dist/esm5/internal/operators/exhaust.js","webpack://ode-ngjs-front/./node_modules/rxjs/dist/esm5/internal/operators/exhaustMap.js","webpack://ode-ngjs-front/./node_modules/rxjs/dist/esm5/internal/operators/expand.js","webpack://ode-ngjs-front/./node_modules/rxjs/dist/esm5/internal/operators/finalize.js","webpack://ode-ngjs-front/./node_modules/rxjs/dist/esm5/internal/operators/find.js","webpack://ode-ngjs-front/./node_modules/rxjs/dist/esm5/internal/operators/findIndex.js","webpack://ode-ngjs-front/./node_modules/rxjs/dist/esm5/internal/operators/first.js","webpack://ode-ngjs-front/./node_modules/rxjs/dist/esm5/internal/operators/groupBy.js","webpack://ode-ngjs-front/./node_modules/rxjs/dist/esm5/internal/operators/isEmpty.js","webpack://ode-ngjs-front/./node_modules/rxjs/dist/esm5/internal/operators/takeLast.js","webpack://ode-ngjs-front/./node_modules/rxjs/dist/esm5/internal/operators/last.js","webpack://ode-ngjs-front/./node_modules/rxjs/dist/esm5/internal/operators/materialize.js","webpack://ode-ngjs-front/./node_modules/rxjs/dist/esm5/internal/operators/max.js","webpack://ode-ngjs-front/./node_modules/rxjs/dist/esm5/internal/operators/flatMap.js","webpack://ode-ngjs-front/./node_modules/rxjs/dist/esm5/internal/operators/mergeMapTo.js","webpack://ode-ngjs-front/./node_modules/rxjs/dist/esm5/internal/operators/mergeScan.js","webpack://ode-ngjs-front/./node_modules/rxjs/dist/esm5/internal/operators/merge.js","webpack://ode-ngjs-front/./node_modules/rxjs/dist/esm5/internal/operators/mergeWith.js","webpack://ode-ngjs-front/./node_modules/rxjs/dist/esm5/internal/operators/min.js","webpack://ode-ngjs-front/./node_modules/rxjs/dist/esm5/internal/operators/multicast.js","webpack://ode-ngjs-front/./node_modules/rxjs/dist/esm5/internal/operators/pairwise.js","webpack://ode-ngjs-front/./node_modules/rxjs/dist/esm5/internal/operators/pluck.js","webpack://ode-ngjs-front/./node_modules/rxjs/dist/esm5/internal/operators/publish.js","webpack://ode-ngjs-front/./node_modules/rxjs/dist/esm5/internal/operators/publishBehavior.js","webpack://ode-ngjs-front/./node_modules/rxjs/dist/esm5/internal/operators/publishLast.js","webpack://ode-ngjs-front/./node_modules/rxjs/dist/esm5/internal/operators/publishReplay.js","webpack://ode-ngjs-front/./node_modules/rxjs/dist/esm5/internal/operators/raceWith.js","webpack://ode-ngjs-front/./node_modules/rxjs/dist/esm5/internal/operators/repeat.js","webpack://ode-ngjs-front/./node_modules/rxjs/dist/esm5/internal/operators/repeatWhen.js","webpack://ode-ngjs-front/./node_modules/rxjs/dist/esm5/internal/operators/retry.js","webpack://ode-ngjs-front/./node_modules/rxjs/dist/esm5/internal/operators/retryWhen.js","webpack://ode-ngjs-front/./node_modules/rxjs/dist/esm5/internal/operators/sample.js","webpack://ode-ngjs-front/./node_modules/rxjs/dist/esm5/internal/operators/sampleTime.js","webpack://ode-ngjs-front/./node_modules/rxjs/dist/esm5/internal/operators/scan.js","webpack://ode-ngjs-front/./node_modules/rxjs/dist/esm5/internal/operators/sequenceEqual.js","webpack://ode-ngjs-front/./node_modules/rxjs/dist/esm5/internal/operators/share.js","webpack://ode-ngjs-front/./node_modules/rxjs/dist/esm5/internal/operators/shareReplay.js","webpack://ode-ngjs-front/./node_modules/rxjs/dist/esm5/internal/operators/single.js","webpack://ode-ngjs-front/./node_modules/rxjs/dist/esm5/internal/operators/skip.js","webpack://ode-ngjs-front/./node_modules/rxjs/dist/esm5/internal/operators/skipLast.js","webpack://ode-ngjs-front/./node_modules/rxjs/dist/esm5/internal/operators/skipUntil.js","webpack://ode-ngjs-front/./node_modules/rxjs/dist/esm5/internal/operators/skipWhile.js","webpack://ode-ngjs-front/./node_modules/rxjs/dist/esm5/internal/operators/startWith.js","webpack://ode-ngjs-front/./node_modules/rxjs/dist/esm5/internal/operators/switchMap.js","webpack://ode-ngjs-front/./node_modules/rxjs/dist/esm5/internal/operators/switchAll.js","webpack://ode-ngjs-front/./node_modules/rxjs/dist/esm5/internal/operators/switchMapTo.js","webpack://ode-ngjs-front/./node_modules/rxjs/dist/esm5/internal/operators/switchScan.js","webpack://ode-ngjs-front/./node_modules/rxjs/dist/esm5/internal/operators/takeUntil.js","webpack://ode-ngjs-front/./node_modules/rxjs/dist/esm5/internal/operators/takeWhile.js","webpack://ode-ngjs-front/./node_modules/rxjs/dist/esm5/internal/operators/tap.js","webpack://ode-ngjs-front/./node_modules/rxjs/dist/esm5/internal/operators/throttle.js","webpack://ode-ngjs-front/./node_modules/rxjs/dist/esm5/internal/operators/throttleTime.js","webpack://ode-ngjs-front/./node_modules/rxjs/dist/esm5/internal/operators/timeInterval.js","webpack://ode-ngjs-front/./node_modules/rxjs/dist/esm5/internal/operators/timeoutWith.js","webpack://ode-ngjs-front/./node_modules/rxjs/dist/esm5/internal/operators/timestamp.js","webpack://ode-ngjs-front/./node_modules/rxjs/dist/esm5/internal/operators/window.js","webpack://ode-ngjs-front/./node_modules/rxjs/dist/esm5/internal/operators/windowCount.js","webpack://ode-ngjs-front/./node_modules/rxjs/dist/esm5/internal/operators/windowTime.js","webpack://ode-ngjs-front/./node_modules/rxjs/dist/esm5/internal/operators/windowToggle.js","webpack://ode-ngjs-front/./node_modules/rxjs/dist/esm5/internal/operators/windowWhen.js","webpack://ode-ngjs-front/./node_modules/rxjs/dist/esm5/internal/operators/withLatestFrom.js","webpack://ode-ngjs-front/./node_modules/rxjs/dist/esm5/internal/operators/zipAll.js","webpack://ode-ngjs-front/./node_modules/rxjs/dist/esm5/internal/operators/zip.js","webpack://ode-ngjs-front/./node_modules/rxjs/dist/esm5/internal/operators/zipWith.js","webpack://ode-ngjs-front/./src/ts/directives/business/explorer/domino-folder.directive.ts","webpack://ode-ngjs-front/./src/ts/directives/business/explorer/domino-item.directive.ts","webpack://ode-ngjs-front/./src/ts/directives/business/explorer/explorer.directive.ts","webpack://ode-ngjs-front/./src/ts/directives/business/explorer/resource-list.directive.ts","webpack://ode-ngjs-front/./src/ts/directives/business/explorer/sidebar-folder.directive.ts","webpack://ode-ngjs-front/./src/ts/directives/business/explorer/sidebar.directive.ts","webpack://ode-ngjs-front/./src/ts/directives/business/media/bind-html.directive.ts","webpack://ode-ngjs-front/./src/ts/directives/business/media/recorder.directive.ts","webpack://ode-ngjs-front/./src/ts/directives/business/portal/connector-lightbox.directive.ts","webpack://ode-ngjs-front/./src/ts/directives/business/portal/help.directive.ts","webpack://ode-ngjs-front/./src/ts/directives/business/portal/logout.directive.ts","webpack://ode-ngjs-front/./src/ts/directives/business/portal/navbar.directive.ts","webpack://ode-ngjs-front/./src/ts/directives/business/portal/portal.directive.ts","webpack://ode-ngjs-front/./src/ts/directives/business/portal/smart-banner.directive.ts","webpack://ode-ngjs-front/./src/ts/directives/business/portal/xiti.directive.ts","webpack://ode-ngjs-front/./src/ts/directives/business/props/props-panel.directive.ts","webpack://ode-ngjs-front/./src/ts/directives/business/share/share-panel.directive.ts","webpack://ode-ngjs-front/./src/ts/directives/business/theme/skin-src.directive.ts","webpack://ode-ngjs-front/./src/ts/directives/business/theme/with-theme.directive.ts","webpack://ode-ngjs-front/./src/ts/directives/business/toaster/toaster.directive.ts","webpack://ode-ngjs-front/./src/ts/directives/components/app-title/app-title.directive.ts","webpack://ode-ngjs-front/./src/ts/directives/components/autocomplete/autocomplete.directive.ts","webpack://ode-ngjs-front/./src/ts/directives/components/i18n/I18nBase.ts","webpack://ode-ngjs-front/./src/ts/directives/components/i18n/i18n-placeholder.directive.ts","webpack://ode-ngjs-front/./src/ts/directives/components/i18n/i18n-title.directive.ts","webpack://ode-ngjs-front/./src/ts/directives/components/i18n/i18n-value.directive.ts","webpack://ode-ngjs-front/./src/ts/directives/components/i18n/i18n.directive.ts","webpack://ode-ngjs-front/./src/ts/directives/components/i18n/i18n.filter.ts","webpack://ode-ngjs-front/./src/ts/directives/components/i18n/translate.directive.ts","webpack://ode-ngjs-front/./src/ts/directives/components/modal/infotip.directive.ts","webpack://ode-ngjs-front/./src/ts/directives/components/modal/lightbox.directive.ts","webpack://ode-ngjs-front/./src/ts/directives/components/modal/modal-container.directive.ts","webpack://ode-ngjs-front/./src/ts/directives/components/modal/modal.directive.ts","webpack://ode-ngjs-front/./src/ts/directives/components/navigation/custom-guard.directive.ts","webpack://ode-ngjs-front/./src/ts/directives/components/navigation/dirty-guard.directive.ts","webpack://ode-ngjs-front/./src/ts/directives/components/navigation/document-guard.directive.ts","webpack://ode-ngjs-front/./src/ts/directives/components/navigation/genericGuardDirective.ts","webpack://ode-ngjs-front/./src/ts/directives/components/navigation/guard-root.directive.ts","webpack://ode-ngjs-front/./src/ts/directives/components/navigation/input-guard.directive.ts","webpack://ode-ngjs-front/./src/ts/directives/components/navigation/navigation-trigger.directive.ts","webpack://ode-ngjs-front/./src/ts/directives/components/navigation/reset-guard.directive.ts","webpack://ode-ngjs-front/./src/ts/directives/components/popover/popover-content.directive.ts","webpack://ode-ngjs-front/./src/ts/directives/components/popover/popover-opener.directive.ts","webpack://ode-ngjs-front/./src/ts/directives/components/popover/popover.directive.ts","webpack://ode-ngjs-front/./src/ts/directives/components/pulsar/assistant.directive.ts","webpack://ode-ngjs-front/./src/ts/directives/components/pulsar/pulsar.directive.ts","webpack://ode-ngjs-front/./src/ts/directives/index.ts","webpack://ode-ngjs-front/./src/ts/directives/widget/widget-container.directive.ts","webpack://ode-ngjs-front/./src/ts/directives/widget/widget.directive.ts","webpack://ode-ngjs-front/./src/ts/index.ts","webpack://ode-ngjs-front/./src/ts/models/ui.model.ts","webpack://ode-ngjs-front/./src/ts/modules/base.module.ts","webpack://ode-ngjs-front/./src/ts/modules/explorer.module.ts","webpack://ode-ngjs-front/./src/ts/modules/i18n.module.ts","webpack://ode-ngjs-front/./src/ts/modules/index.ts","webpack://ode-ngjs-front/./src/ts/modules/ui.module.ts","webpack://ode-ngjs-front/./src/ts/modules/widgets.module.ts","webpack://ode-ngjs-front/./src/ts/samples/alert.service.ts","webpack://ode-ngjs-front/./src/ts/samples/index.ts","webpack://ode-ngjs-front/./src/ts/samples/say-something.directive.ts","webpack://ode-ngjs-front/./src/ts/services/i18n.service.ts","webpack://ode-ngjs-front/./src/ts/services/index.ts","webpack://ode-ngjs-front/./src/ts/services/ng-helper.service.ts","webpack://ode-ngjs-front/./src/ts/services/notify.service.ts","webpack://ode-ngjs-front/./src/ts/services/quickstart.service.ts","webpack://ode-ngjs-front/./src/ts/services/rich-content.service.ts","webpack://ode-ngjs-front/./src/ts/services/session.service.ts","webpack://ode-ngjs-front/./src/ts/services/theme-helper.service.ts","webpack://ode-ngjs-front/./src/ts/services/tracking.service.ts","webpack://ode-ngjs-front/./src/ts/services/video-event-tracker.service.ts","webpack://ode-ngjs-front/./src/ts/services/video-upload.service.ts","webpack://ode-ngjs-front/./src/ts/services/widget.service.ts","webpack://ode-ngjs-front/./src/ts/services/xiti.service.ts","webpack://ode-ngjs-front/./src/ts/utils/base64.ts","webpack://ode-ngjs-front/./src/ts/utils/browser-info.ts","webpack://ode-ngjs-front/./src/ts/utils/index.ts","webpack://ode-ngjs-front/./src/ts/utils/localization.ts","webpack://ode-ngjs-front/./src/ts/utils/navigation-guard.ts","webpack://ode-ngjs-front/./src/ts/utils/ng-bootstrap.ts","webpack://ode-ngjs-front/./src/ts/utils/recorder-audio.ts","webpack://ode-ngjs-front/./src/ts/utils/recorder-video.ts","webpack://ode-ngjs-front/./src/ts/utils/shorts.ts","webpack://ode-ngjs-front/./node_modules/ua-parser-js/src/ua-parser.js","webpack://ode-ngjs-front/external var \"$\"","webpack://ode-ngjs-front/external var \"angular\"","webpack://ode-ngjs-front/external var \"window.entcore[\\\"ode-ts-client\\\"]\"","webpack://ode-ngjs-front/webpack/bootstrap","webpack://ode-ngjs-front/webpack/runtime/load script","webpack://ode-ngjs-front/webpack/runtime/define property getters","webpack://ode-ngjs-front/webpack/runtime/ensure chunk","webpack://ode-ngjs-front/webpack/runtime/get javascript chunk filename","webpack://ode-ngjs-front/webpack/runtime/global","webpack://ode-ngjs-front/webpack/runtime/hasOwnProperty shorthand","webpack://ode-ngjs-front/webpack/runtime/make namespace object","webpack://ode-ngjs-front/webpack/runtime/node module decorator","webpack://ode-ngjs-front/webpack/runtime/publicPath","webpack://ode-ngjs-front/webpack/runtime/jsonp chunk loading","webpack://ode-ngjs-front/webpack/startup"],"sourcesContent":["/**\n * angular-drag-and-drop-lists v2.1.0\n *\n * Copyright (c) 2014 Marcel Juenemann marcel@juenemann.cc\n * Copyright (c) 2014-2017 Google Inc.\n * https://github.com/marceljuenemann/angular-drag-and-drop-lists\n *\n * License: MIT\n */\n(function(dndLists) {\n\n // In standard-compliant browsers we use a custom mime type and also encode the dnd-type in it.\n // However, IE and Edge only support a limited number of mime types. The workarounds are described\n // in https://github.com/marceljuenemann/angular-drag-and-drop-lists/wiki/Data-Transfer-Design\n var MIME_TYPE = 'application/x-dnd';\n var EDGE_MIME_TYPE = 'application/json';\n var MSIE_MIME_TYPE = 'Text';\n\n // All valid HTML5 drop effects, in the order in which we prefer to use them.\n var ALL_EFFECTS = ['move', 'copy', 'link'];\n\n /**\n * Use the dnd-draggable attribute to make your element draggable\n *\n * Attributes:\n * - dnd-draggable Required attribute. The value has to be an object that represents the data\n * of the element. In case of a drag and drop operation the object will be\n * serialized and unserialized on the receiving end.\n * - dnd-effect-allowed Use this attribute to limit the operations that can be performed. Valid\n * options are \"move\", \"copy\" and \"link\", as well as \"all\", \"copyMove\",\n * \"copyLink\" and \"linkMove\". The semantics of these operations are up to you\n * and have to be implemented using the callbacks described below. If you\n * allow multiple options, the user can choose between them by using the\n * modifier keys (OS specific). The cursor will be changed accordingly,\n * expect for IE and Edge, where this is not supported.\n * - dnd-type Use this attribute if you have different kinds of items in your\n * application and you want to limit which items can be dropped into which\n * lists. Combine with dnd-allowed-types on the dnd-list(s). This attribute\n * must be a lower case string. Upper case characters can be used, but will\n * be converted to lower case automatically.\n * - dnd-disable-if You can use this attribute to dynamically disable the draggability of the\n * element. This is useful if you have certain list items that you don't want\n * to be draggable, or if you want to disable drag & drop completely without\n * having two different code branches (e.g. only allow for admins).\n *\n * Callbacks:\n * - dnd-dragstart Callback that is invoked when the element was dragged. The original\n * dragstart event will be provided in the local event variable.\n * - dnd-moved Callback that is invoked when the element was moved. Usually you will\n * remove your element from the original list in this callback, since the\n * directive is not doing that for you automatically. The original dragend\n * event will be provided in the local event variable.\n * - dnd-copied Same as dnd-moved, just that it is called when the element was copied\n * instead of moved, so you probably want to implement a different logic.\n * - dnd-linked Same as dnd-moved, just that it is called when the element was linked\n * instead of moved, so you probably want to implement a different logic.\n * - dnd-canceled Callback that is invoked if the element was dragged, but the operation was\n * canceled and the element was not dropped. The original dragend event will\n * be provided in the local event variable.\n * - dnd-dragend Callback that is invoked when the drag operation ended. Available local\n * variables are event and dropEffect.\n * - dnd-selected Callback that is invoked when the element was clicked but not dragged.\n * The original click event will be provided in the local event variable.\n * - dnd-callback Custom callback that is passed to dropzone callbacks and can be used to\n * communicate between source and target scopes. The dropzone can pass user\n * defined variables to this callback.\n *\n * CSS classes:\n * - dndDragging This class will be added to the element while the element is being\n * dragged. It will affect both the element you see while dragging and the\n * source element that stays at it's position. Do not try to hide the source\n * element with this class, because that will abort the drag operation.\n * - dndDraggingSource This class will be added to the element after the drag operation was\n * started, meaning it only affects the original element that is still at\n * it's source position, and not the \"element\" that the user is dragging with\n * his mouse pointer.\n */\n dndLists.directive('dndDraggable', ['$parse', '$timeout', function($parse, $timeout) {\n return function(scope, element, attr) {\n // Set the HTML5 draggable attribute on the element.\n element.attr(\"draggable\", \"true\");\n\n // If the dnd-disable-if attribute is set, we have to watch that.\n if (attr.dndDisableIf) {\n scope.$watch(attr.dndDisableIf, function(disabled) {\n element.attr(\"draggable\", !disabled);\n });\n }\n\n /**\n * When the drag operation is started we have to prepare the dataTransfer object,\n * which is the primary way we communicate with the target element\n */\n element.on('dragstart', function(event) {\n event = event.originalEvent || event;\n\n // Check whether the element is draggable, since dragstart might be triggered on a child.\n if (element.attr('draggable') == 'false') return true;\n\n // Initialize global state.\n dndState.isDragging = true;\n dndState.itemType = attr.dndType && scope.$eval(attr.dndType).toLowerCase();\n\n // Set the allowed drop effects. See below for special IE handling.\n dndState.dropEffect = \"none\";\n dndState.effectAllowed = attr.dndEffectAllowed || ALL_EFFECTS[0];\n event.dataTransfer.effectAllowed = dndState.effectAllowed;\n\n // Internet Explorer and Microsoft Edge don't support custom mime types, see design doc:\n // https://github.com/marceljuenemann/angular-drag-and-drop-lists/wiki/Data-Transfer-Design\n var item = scope.$eval(attr.dndDraggable);\n var mimeType = MIME_TYPE + (dndState.itemType ? ('-' + dndState.itemType) : '');\n try {\n event.dataTransfer.setData(mimeType, angular.toJson(item));\n } catch (e) {\n // Setting a custom MIME type did not work, we are probably in IE or Edge.\n var data = angular.toJson({item: item, type: dndState.itemType});\n try {\n event.dataTransfer.setData(EDGE_MIME_TYPE, data);\n } catch (e) {\n // We are in Internet Explorer and can only use the Text MIME type. Also note that IE\n // does not allow changing the cursor in the dragover event, therefore we have to choose\n // the one we want to display now by setting effectAllowed.\n var effectsAllowed = filterEffects(ALL_EFFECTS, dndState.effectAllowed);\n event.dataTransfer.effectAllowed = effectsAllowed[0];\n event.dataTransfer.setData(MSIE_MIME_TYPE, data);\n }\n }\n\n // Add CSS classes. See documentation above.\n element.addClass(\"dndDragging\");\n $timeout(function() { element.addClass(\"dndDraggingSource\"); }, 0);\n\n // Try setting a proper drag image if triggered on a dnd-handle (won't work in IE).\n if (event._dndHandle && event.dataTransfer.setDragImage) {\n event.dataTransfer.setDragImage(element[0], 0, 0);\n }\n\n // Invoke dragstart callback and prepare extra callback for dropzone.\n $parse(attr.dndDragstart)(scope, {event: event});\n if (attr.dndCallback) {\n var callback = $parse(attr.dndCallback);\n dndState.callback = function(params) { return callback(scope, params || {}); };\n }\n\n event.stopPropagation();\n });\n\n /**\n * The dragend event is triggered when the element was dropped or when the drag\n * operation was aborted (e.g. hit escape button). Depending on the executed action\n * we will invoke the callbacks specified with the dnd-moved or dnd-copied attribute.\n */\n element.on('dragend', function(event) {\n event = event.originalEvent || event;\n\n // Invoke callbacks. Usually we would use event.dataTransfer.dropEffect to determine\n // the used effect, but Chrome has not implemented that field correctly. On Windows\n // it always sets it to 'none', while Chrome on Linux sometimes sets it to something\n // else when it's supposed to send 'none' (drag operation aborted).\n scope.$apply(function() {\n var dropEffect = dndState.dropEffect;\n var cb = {copy: 'dndCopied', link: 'dndLinked', move: 'dndMoved', none: 'dndCanceled'};\n $parse(attr[cb[dropEffect]])(scope, {event: event});\n $parse(attr.dndDragend)(scope, {event: event, dropEffect: dropEffect});\n });\n\n // Clean up\n dndState.isDragging = false;\n dndState.callback = undefined;\n element.removeClass(\"dndDragging\");\n element.removeClass(\"dndDraggingSource\");\n event.stopPropagation();\n\n // In IE9 it is possible that the timeout from dragstart triggers after the dragend handler.\n $timeout(function() { element.removeClass(\"dndDraggingSource\"); }, 0);\n });\n\n /**\n * When the element is clicked we invoke the callback function\n * specified with the dnd-selected attribute.\n */\n element.on('click', function(event) {\n if (!attr.dndSelected) return;\n\n event = event.originalEvent || event;\n scope.$apply(function() {\n $parse(attr.dndSelected)(scope, {event: event});\n });\n\n // Prevent triggering dndSelected in parent elements.\n event.stopPropagation();\n });\n\n /**\n * Workaround to make element draggable in IE9\n */\n element.on('selectstart', function() {\n if (this.dragDrop) this.dragDrop();\n });\n };\n }]);\n\n /**\n * Use the dnd-list attribute to make your list element a dropzone. Usually you will add a single\n * li element as child with the ng-repeat directive. If you don't do that, we will not be able to\n * position the dropped element correctly. If you want your list to be sortable, also add the\n * dnd-draggable directive to your li element(s).\n *\n * Attributes:\n * - dnd-list Required attribute. The value has to be the array in which the data of\n * the dropped element should be inserted. The value can be blank if used\n * with a custom dnd-drop handler that always returns true.\n * - dnd-allowed-types Optional array of allowed item types. When used, only items that had a\n * matching dnd-type attribute will be dropable. Upper case characters will\n * automatically be converted to lower case.\n * - dnd-effect-allowed Optional string expression that limits the drop effects that can be\n * performed in the list. See dnd-effect-allowed on dnd-draggable for more\n * details on allowed options. The default value is all.\n * - dnd-disable-if Optional boolean expresssion. When it evaluates to true, no dropping\n * into the list is possible. Note that this also disables rearranging\n * items inside the list.\n * - dnd-horizontal-list Optional boolean expresssion. When it evaluates to true, the positioning\n * algorithm will use the left and right halfs of the list items instead of\n * the upper and lower halfs.\n * - dnd-external-sources Optional boolean expression. When it evaluates to true, the list accepts\n * drops from sources outside of the current browser tab. This allows to\n * drag and drop accross different browser tabs. The only major browser\n * that does not support this is currently Microsoft Edge.\n *\n * Callbacks:\n * - dnd-dragover Optional expression that is invoked when an element is dragged over the\n * list. If the expression is set, but does not return true, the element is\n * not allowed to be dropped. The following variables will be available:\n * - event: The original dragover event sent by the browser.\n * - index: The position in the list at which the element would be dropped.\n * - type: The dnd-type set on the dnd-draggable, or undefined if non was\n * set. Will be null for drops from external sources in IE and Edge,\n * since we don't know the type in those cases.\n * - dropEffect: One of move, copy or link, see dnd-effect-allowed.\n * - external: Whether the element was dragged from an external source.\n * - callback: If dnd-callback was set on the source element, this is a\n * function reference to the callback. The callback can be invoked with\n * custom variables like this: callback({var1: value1, var2: value2}).\n * The callback will be executed on the scope of the source element. If\n * dnd-external-sources was set and external is true, this callback will\n * not be available.\n * - dnd-drop Optional expression that is invoked when an element is dropped on the\n * list. The same variables as for dnd-dragover will be available, with the\n * exception that type is always known and therefore never null. There\n * will also be an item variable, which is the transferred object. The\n * return value determines the further handling of the drop:\n * - falsy: The drop will be canceled and the element won't be inserted.\n * - true: Signalises that the drop is allowed, but the dnd-drop\n * callback already took care of inserting the element.\n * - otherwise: All other return values will be treated as the object to\n * insert into the array. In most cases you want to simply return the\n * item parameter, but there are no restrictions on what you can return.\n * - dnd-inserted Optional expression that is invoked after a drop if the element was\n * actually inserted into the list. The same local variables as for\n * dnd-drop will be available. Note that for reorderings inside the same\n * list the old element will still be in the list due to the fact that\n * dnd-moved was not called yet.\n *\n * CSS classes:\n * - dndPlaceholder When an element is dragged over the list, a new placeholder child\n * element will be added. This element is of type li and has the class\n * dndPlaceholder set. Alternatively, you can define your own placeholder\n * by creating a child element with dndPlaceholder class.\n * - dndDragover Will be added to the list while an element is dragged over the list.\n */\n dndLists.directive('dndList', ['$parse', function($parse) {\n return function(scope, element, attr) {\n // While an element is dragged over the list, this placeholder element is inserted\n // at the location where the element would be inserted after dropping.\n var placeholder = getPlaceholderElement();\n placeholder.remove();\n\n var placeholderNode = placeholder[0];\n var listNode = element[0];\n var listSettings = {};\n\n /**\n * The dragenter event is fired when a dragged element or text selection enters a valid drop\n * target. According to the spec, we either need to have a dropzone attribute or listen on\n * dragenter events and call preventDefault(). It should be noted though that no browser seems\n * to enforce this behaviour.\n */\n element.on('dragenter', function (event) {\n event = event.originalEvent || event;\n\n // Calculate list properties, so that we don't have to repeat this on every dragover event.\n var types = attr.dndAllowedTypes && scope.$eval(attr.dndAllowedTypes);\n listSettings = {\n allowedTypes: angular.isArray(types) && types.join('|').toLowerCase().split('|'),\n disabled: attr.dndDisableIf && scope.$eval(attr.dndDisableIf),\n externalSources: attr.dndExternalSources && scope.$eval(attr.dndExternalSources),\n horizontal: attr.dndHorizontalList && scope.$eval(attr.dndHorizontalList)\n };\n\n var mimeType = getMimeType(event.dataTransfer.types);\n if (!mimeType || !isDropAllowed(getItemType(mimeType))) return true;\n event.preventDefault();\n });\n\n /**\n * The dragover event is triggered \"every few hundred milliseconds\" while an element\n * is being dragged over our list, or over an child element.\n */\n element.on('dragover', function(event) {\n event = event.originalEvent || event;\n\n // Check whether the drop is allowed and determine mime type.\n var mimeType = getMimeType(event.dataTransfer.types);\n var itemType = getItemType(mimeType);\n if (!mimeType || !isDropAllowed(itemType)) return true;\n\n // Make sure the placeholder is shown, which is especially important if the list is empty.\n if (placeholderNode.parentNode != listNode) {\n element.append(placeholder);\n }\n\n if (event.target != listNode) {\n // Try to find the node direct directly below the list node.\n var listItemNode = event.target;\n while (listItemNode.parentNode != listNode && listItemNode.parentNode) {\n listItemNode = listItemNode.parentNode;\n }\n\n if (listItemNode.parentNode == listNode && listItemNode != placeholderNode) {\n // If the mouse pointer is in the upper half of the list item element,\n // we position the placeholder before the list item, otherwise after it.\n var rect = listItemNode.getBoundingClientRect();\n if (listSettings.horizontal) {\n var isFirstHalf = event.clientX < rect.left + rect.width / 2;\n } else {\n var isFirstHalf = event.clientY < rect.top + rect.height / 2;\n }\n listNode.insertBefore(placeholderNode,\n isFirstHalf ? listItemNode : listItemNode.nextSibling);\n }\n }\n\n // In IE we set a fake effectAllowed in dragstart to get the correct cursor, we therefore\n // ignore the effectAllowed passed in dataTransfer. We must also not access dataTransfer for\n // drops from external sources, as that throws an exception.\n var ignoreDataTransfer = mimeType == MSIE_MIME_TYPE;\n var dropEffect = getDropEffect(event, ignoreDataTransfer);\n if (dropEffect == 'none') return stopDragover();\n\n // At this point we invoke the callback, which still can disallow the drop.\n // We can't do this earlier because we want to pass the index of the placeholder.\n if (attr.dndDragover && !invokeCallback(attr.dndDragover, event, dropEffect, itemType)) {\n return stopDragover();\n }\n\n // Set dropEffect to modify the cursor shown by the browser, unless we're in IE, where this\n // is not supported. This must be done after preventDefault in Firefox.\n event.preventDefault();\n if (!ignoreDataTransfer) {\n event.dataTransfer.dropEffect = dropEffect;\n }\n\n element.addClass(\"dndDragover\");\n event.stopPropagation();\n return false;\n });\n\n /**\n * When the element is dropped, we use the position of the placeholder element as the\n * position where we insert the transferred data. This assumes that the list has exactly\n * one child element per array element.\n */\n element.on('drop', function(event) {\n event = event.originalEvent || event;\n\n // Check whether the drop is allowed and determine mime type.\n var mimeType = getMimeType(event.dataTransfer.types);\n var itemType = getItemType(mimeType);\n if (!mimeType || !isDropAllowed(itemType)) return true;\n\n // The default behavior in Firefox is to interpret the dropped element as URL and\n // forward to it. We want to prevent that even if our drop is aborted.\n event.preventDefault();\n\n // Unserialize the data that was serialized in dragstart.\n try {\n var data = JSON.parse(event.dataTransfer.getData(mimeType));\n } catch(e) {\n return stopDragover();\n }\n\n // Drops with invalid types from external sources might not have been filtered out yet.\n if (mimeType == MSIE_MIME_TYPE || mimeType == EDGE_MIME_TYPE) {\n itemType = data.type || undefined;\n data = data.item;\n if (!isDropAllowed(itemType)) return stopDragover();\n }\n\n // Special handling for internal IE drops, see dragover handler.\n var ignoreDataTransfer = mimeType == MSIE_MIME_TYPE;\n var dropEffect = getDropEffect(event, ignoreDataTransfer);\n if (dropEffect == 'none') return stopDragover();\n\n // Invoke the callback, which can transform the transferredObject and even abort the drop.\n var index = getPlaceholderIndex();\n if (attr.dndDrop) {\n data = invokeCallback(attr.dndDrop, event, dropEffect, itemType, index, data);\n if (!data) return stopDragover();\n }\n\n // The drop is definitely going to happen now, store the dropEffect.\n dndState.dropEffect = dropEffect;\n if (!ignoreDataTransfer) {\n event.dataTransfer.dropEffect = dropEffect;\n }\n\n // Insert the object into the array, unless dnd-drop took care of that (returned true).\n if (data !== true) {\n scope.$apply(function() {\n scope.$eval(attr.dndList).splice(index, 0, data);\n });\n }\n invokeCallback(attr.dndInserted, event, dropEffect, itemType, index, data);\n\n // Clean up\n stopDragover();\n event.stopPropagation();\n return false;\n });\n\n /**\n * We have to remove the placeholder when the element is no longer dragged over our list. The\n * problem is that the dragleave event is not only fired when the element leaves our list,\n * but also when it leaves a child element. Therefore, we determine whether the mouse cursor\n * is still pointing to an element inside the list or not.\n */\n element.on('dragleave', function(event) {\n event = event.originalEvent || event;\n\n var newTarget = document.elementFromPoint(event.clientX, event.clientY);\n if (listNode.contains(newTarget) && !event._dndPhShown) {\n // Signalize to potential parent lists that a placeholder is already shown.\n event._dndPhShown = true;\n } else {\n stopDragover();\n }\n });\n\n /**\n * Given the types array from the DataTransfer object, returns the first valid mime type.\n * A type is valid if it starts with MIME_TYPE, or it equals MSIE_MIME_TYPE or EDGE_MIME_TYPE.\n */\n function getMimeType(types) {\n if (!types) return MSIE_MIME_TYPE; // IE 9 workaround.\n for (var i = 0; i < types.length; i++) {\n if (types[i] == MSIE_MIME_TYPE || types[i] == EDGE_MIME_TYPE ||\n types[i].substr(0, MIME_TYPE.length) == MIME_TYPE) {\n return types[i];\n }\n }\n return null;\n }\n\n /**\n * Determines the type of the item from the dndState, or from the mime type for items from\n * external sources. Returns undefined if no item type was set and null if the item type could\n * not be determined.\n */\n function getItemType(mimeType) {\n if (dndState.isDragging) return dndState.itemType || undefined;\n if (mimeType == MSIE_MIME_TYPE || mimeType == EDGE_MIME_TYPE) return null;\n return (mimeType && mimeType.substr(MIME_TYPE.length + 1)) || undefined;\n }\n\n /**\n * Checks various conditions that must be fulfilled for a drop to be allowed, including the\n * dnd-allowed-types attribute. If the item Type is unknown (null), the drop will be allowed.\n */\n function isDropAllowed(itemType) {\n if (listSettings.disabled) return false;\n if (!listSettings.externalSources && !dndState.isDragging) return false;\n if (!listSettings.allowedTypes || itemType === null) return true;\n return itemType && listSettings.allowedTypes.indexOf(itemType) != -1;\n }\n\n /**\n * Determines which drop effect to use for the given event. In Internet Explorer we have to\n * ignore the effectAllowed field on dataTransfer, since we set a fake value in dragstart.\n * In those cases we rely on dndState to filter effects. Read the design doc for more details:\n * https://github.com/marceljuenemann/angular-drag-and-drop-lists/wiki/Data-Transfer-Design\n */\n function getDropEffect(event, ignoreDataTransfer) {\n var effects = ALL_EFFECTS;\n if (!ignoreDataTransfer) {\n effects = filterEffects(effects, event.dataTransfer.effectAllowed);\n }\n if (dndState.isDragging) {\n effects = filterEffects(effects, dndState.effectAllowed);\n }\n if (attr.dndEffectAllowed) {\n effects = filterEffects(effects, attr.dndEffectAllowed);\n }\n // MacOS automatically filters dataTransfer.effectAllowed depending on the modifier keys,\n // therefore the following modifier keys will only affect other operating systems.\n if (!effects.length) {\n return 'none';\n } else if (event.ctrlKey && effects.indexOf('copy') != -1) {\n return 'copy';\n } else if (event.altKey && effects.indexOf('link') != -1) {\n return 'link';\n } else {\n return effects[0];\n }\n }\n\n /**\n * Small helper function that cleans up if we aborted a drop.\n */\n function stopDragover() {\n placeholder.remove();\n element.removeClass(\"dndDragover\");\n return true;\n }\n\n /**\n * Invokes a callback with some interesting parameters and returns the callbacks return value.\n */\n function invokeCallback(expression, event, dropEffect, itemType, index, item) {\n return $parse(expression)(scope, {\n callback: dndState.callback,\n dropEffect: dropEffect,\n event: event,\n external: !dndState.isDragging,\n index: index !== undefined ? index : getPlaceholderIndex(),\n item: item || undefined,\n type: itemType\n });\n }\n\n /**\n * We use the position of the placeholder node to determine at which position of the array the\n * object needs to be inserted\n */\n function getPlaceholderIndex() {\n return Array.prototype.indexOf.call(listNode.children, placeholderNode);\n }\n\n /**\n * Tries to find a child element that has the dndPlaceholder class set. If none was found, a\n * new li element is created.\n */\n function getPlaceholderElement() {\n var placeholder;\n angular.forEach(element.children(), function(childNode) {\n var child = angular.element(childNode);\n if (child.hasClass('dndPlaceholder')) {\n placeholder = child;\n }\n });\n return placeholder || angular.element(\"<li class='dndPlaceholder'></li>\");\n }\n };\n }]);\n\n /**\n * Use the dnd-nodrag attribute inside of dnd-draggable elements to prevent them from starting\n * drag operations. This is especially useful if you want to use input elements inside of\n * dnd-draggable elements or create specific handle elements. Note: This directive does not work\n * in Internet Explorer 9.\n */\n dndLists.directive('dndNodrag', function() {\n return function(scope, element, attr) {\n // Set as draggable so that we can cancel the events explicitly\n element.attr(\"draggable\", \"true\");\n\n /**\n * Since the element is draggable, the browser's default operation is to drag it on dragstart.\n * We will prevent that and also stop the event from bubbling up.\n */\n element.on('dragstart', function(event) {\n event = event.originalEvent || event;\n\n if (!event._dndHandle) {\n // If a child element already reacted to dragstart and set a dataTransfer object, we will\n // allow that. For example, this is the case for user selections inside of input elements.\n if (!(event.dataTransfer.types && event.dataTransfer.types.length)) {\n event.preventDefault();\n }\n event.stopPropagation();\n }\n });\n\n /**\n * Stop propagation of dragend events, otherwise dnd-moved might be triggered and the element\n * would be removed.\n */\n element.on('dragend', function(event) {\n event = event.originalEvent || event;\n if (!event._dndHandle) {\n event.stopPropagation();\n }\n });\n };\n });\n\n /**\n * Use the dnd-handle directive within a dnd-nodrag element in order to allow dragging with that\n * element after all. Therefore, by combining dnd-nodrag and dnd-handle you can allow\n * dnd-draggable elements to only be dragged via specific \"handle\" elements. Note that Internet\n * Explorer will show the handle element as drag image instead of the dnd-draggable element. You\n * can work around this by styling the handle element differently when it is being dragged. Use\n * the CSS selector .dndDragging:not(.dndDraggingSource) [dnd-handle] for that.\n */\n dndLists.directive('dndHandle', function() {\n return function(scope, element, attr) {\n element.attr(\"draggable\", \"true\");\n\n element.on('dragstart dragend', function(event) {\n event = event.originalEvent || event;\n event._dndHandle = true;\n });\n };\n });\n\n /**\n * Filters an array of drop effects using a HTML5 effectAllowed string.\n */\n function filterEffects(effects, effectAllowed) {\n if (effectAllowed == 'all') return effects;\n return effects.filter(function(effect) {\n return effectAllowed.toLowerCase().indexOf(effect) != -1;\n });\n }\n\n /**\n * For some features we need to maintain global state. This is done here, with these fields:\n * - callback: A callback function set at dragstart that is passed to internal dropzone handlers.\n * - dropEffect: Set in dragstart to \"none\" and to the actual value in the drop handler. We don't\n * rely on the dropEffect passed by the browser, since there are various bugs in Chrome and\n * Safari, and Internet Explorer defaults to copy if effectAllowed is copyMove.\n * - effectAllowed: Set in dragstart based on dnd-effect-allowed. This is needed for IE because\n * setting effectAllowed on dataTransfer might result in an undesired cursor.\n * - isDragging: True between dragstart and dragend. Falsy for drops from external sources.\n * - itemType: The item type of the dragged element set via dnd-type. This is needed because IE\n * and Edge don't support custom mime types that we can use to transfer this information.\n */\n var dndState = {};\n\n})(angular.module('dndLists', []));\n","export default __webpack_public_path__ + \"e42fe8833e44d61abdaa936837b6b949.html\";","export default __webpack_public_path__ + \"31451cacc32b12533b35bc2756a66c68.html\";","export default __webpack_public_path__ + \"7f0136c03fe438995347a346ee478b3a.html\";","export default __webpack_public_path__ + \"f3f8289907cc5f53b11e2bc5f451be96.html\";","export default __webpack_public_path__ + \"d6dec5bea5ec25a97b20e8259e193c57.html\";","export default __webpack_public_path__ + \"5a177ed9e4e64baa8287a6f6e5625ab4.html\";","export default __webpack_public_path__ + \"2ebddef9552e6e74febdcc049e7b6cea.html\";","// Module\nvar code = \"<article class=\\\"domino folder\\\" ng-class=\\\"{active: ctrl.selected}\\\" ng-click=\\\"ctrl.toggleSelect()\\\" ng-dblclick=\\\"ctrl.openSubfolder()\\\"> <div class=\\\"domino__image\\\"> <i class=\\\"fas ic-folder text-secondary\\\"></i> </div> <div class=\\\"domino__infos\\\"> <h2 class=\\\"domino__title\\\">{{ctrl.folder.name}}</h2> <span class=\\\"domino__info\\\">Il y a 2 heures</span> </div> </article> \";\n// Exports\nexport default code;","// Module\nvar code = \"<article class=\\\"domino item\\\" ng-class=\\\"{active: ctrl.selected}\\\" ng-click=\\\"ctrl.toggleSelect()\\\"> <div class=\\\"domino__image\\\"> <div class=\\\"domino__overlay transition-hover\\\"> <div class=\\\"domino__overlay--left\\\"> <span title=\\\"{{'explorer.domino.info.public.title'|i18n}}\\\" ng-show=\\\"{{ctrl.item.public}}\\\"><i class=\\\"ic-public\\\"></i></span> <span title=\\\"{{'explorer.domino.info.shared.title'|i18n}}\\\" ng-show=\\\"{{ctrl.item.shared}}\\\"><i class=\\\"ic-share\\\"></i></span> </div> <div class=\\\"domino__overlay--right\\\"> <span title=\\\"{{'explorer.domino.info.views.title'|i18n}}\\\"><i class=\\\"ic-view\\\"></i>{{ctrl.item.views}}</span> <span title=\\\"{{'explorer.domino.info.comments.title'|i18n}}\\\"><i class=\\\"ic-comment\\\"></i>{{ctrl.item.comments}}</span> </div> </div> </div> <div class=\\\"domino__infos\\\"> <h2 class=\\\"domino__title\\\">{{ctrl.item.name}}</h2> <span class=\\\"domino__info\\\"><i18n>explorer.domino.info.updated.by</i18n> <a>{{ctrl.item.modifierName}}</a></span> <span class=\\\"domino__info\\\">Il y a 2 semaines</span> </div> </article>\";\n// Exports\nexport default code;","// Module\nvar code = \"<div class=\\\"container d-flex\\\"> <ode-sidebar></ode-sidebar> <main class=\\\"main-content\\\"> <section class=\\\"explorer\\\"> <section class=\\\"explorer__header\\\"> <form class=\\\"row justify-content-between mb-2\\\"> <div class=\\\"col-lg-9 col-md-12 input-searchbar\\\"> <i class=\\\"ic-search form-control-feedback\\\"></i> <input type=\\\"search\\\" class=\\\"form-control\\\" id=\\\"\\\" i18n-placeholder=\\\"explorer.searchbar.placeholder\\\"> </div> <div class=\\\"col-lg-3 d-none d-sm-none d-md-none d-lg-block\\\"> <button class=\\\"btn btn-block btn-primary\\\" type=\\\"submit\\\" ng-click=\\\"ctrl.onCreate()\\\"> <i class=\\\"ic-plus\\\"></i> <i18n>explorer.toaster.btn.create.label</i18n> </button> </div> </form> <div class=\\\"d-flex justify-content-between align-items-center mb-2\\\"> <h2>{{ctrl.model.currentFolder.name}}</h2> <div class=\\\"filters d-flex\\\"> <div class=\\\"dropdown\\\"> <button class=\\\"btn dropdown-toggle\\\" type=\\\"button\\\" id=\\\"dropdownMenuButton\\\" data-bs-toggle=\\\"dropdown\\\" aria-haspopup=\\\"true\\\" aria-expanded=\\\"false\\\"> <i class=\\\"fas fa-filter\\\"></i> </button> <div class=\\\"dropdown-menu dropdown-menu-right\\\" aria-labelledby=\\\"dropdownMenuButton\\\"> <a class=\\\"dropdown-item active\\\" href=\\\"#\\\"> <input type=\\\"checkbox\\\" aria-label=\\\"\\\"> <i class=\\\"ic-user\\\"></i> Mes blogs</a> <a class=\\\"dropdown-item\\\" href=\\\"#\\\"> <input type=\\\"checkbox\\\" aria-label=\\\"\\\"> <i class=\\\"ic-share\\\"></i> Les blogs partagés avec moi </a> <a class=\\\"dropdown-item\\\" href=\\\"#\\\"> <input type=\\\"checkbox\\\" aria-label=\\\"\\\"> <i class=\\\"ic-public\\\"></i> Blogs public </a> </div> </div> <div class=\\\"dropdown\\\"> <button class=\\\"btn dropdown-toggle\\\" type=\\\"button\\\" id=\\\"dropdownMenuButton\\\" data-bs-toggle=\\\"dropdown\\\" aria-haspopup=\\\"true\\\" aria-expanded=\\\"false\\\"> <i class=\\\"fas fa-sort-alpha-down\\\"></i> </button> <div class=\\\"dropdown-menu dropdown-menu-right\\\" aria-labelledby=\\\"dropdownMenuButton\\\"> <a class=\\\"dropdown-item\\\" href=\\\"\\\" ng-repeat=\\\"sort in ctrl.context.orders track by sort.id\\\" ng-class=\\\"ctrl.getSortClass(sort)\\\" ng-click=\\\"ctrl.toggleSortOrder(sort)\\\">{{sort.i18n}}</a> </div> </div> <a class=\\\"btn\\\" href=\\\"explorer.html\\\"><i class=\\\"ic-grid\\\"></i></a> <a class=\\\"btn inactive\\\" href=\\\"explorer-list.html\\\"><i class=\\\"ic-list\\\"></i></a> </div> </div> </section> <section class=\\\"explorer__view dominos dominos--square\\\" ode-resource-list> <ode-list-folder> <ode-domino-folder folder=\\\"$parent.folder\\\"></ode-domino-folder> </ode-list-folder> <ode-list-item> <ode-domino-item item=\\\"$parent.item\\\"></ode-domino-item> </ode-list-item> </section> <ode-toaster></ode-toaster> </section> </main> </div>\";\n// Exports\nexport default code;","// Module\nvar code = \"<ng-transclude ng-transclude-slot=\\\"folders\\\" ng-repeat=\\\"folder in ctrl.model.loadedFolders track by folder.id\\\"></ng-transclude> <ng-transclude ng-transclude-slot=\\\"items\\\" ng-repeat=\\\"item in ctrl.model.loadedItems track by item.id\\\"></ng-transclude>\";\n// Exports\nexport default code;","// Module\nvar code = \"<aside class=\\\"sidebar sidebar--left\\\"> <h1 class=\\\"sidebar__title\\\"><i18n>explorer.sidebar.title</i18n></h1> <ul class=\\\"sidebar__tree\\\"> <li ng-repeat=\\\"f in ctrl.model.context.folders track by f.id\\\" ode-sidebar-folder=\\\"f\\\" on-select=\\\"ctrl.onSelectFolder(folderCtrl)\\\"></li> </ul> <a class=\\\"btn btn-outline-secondary btn-block\\\"><i18n>explorer.sidebar.btn.create.label</i18n></a> <a class=\\\"btn btn-outline-secondary btn-block\\\"><i18n>explorer.sidebar.btn.import.label</i18n></a> </aside> \";\n// Exports\nexport default code;","// Module\nvar code = \" <div ng-class=\\\"{'d-none': !ctrl.showMenu || ctrl.selectedRecorder !== 'none'}\\\" class=\\\"flex-fill\\\"> <img class=\\\"img-fluid\\\" skin-src=\\\"/img/illustrations/recorder-audio.svg\\\" width=\\\"100\\\" height=\\\"100\\\" alt=\\\"recorder\\\"> </div> <div ng-class=\\\"{ 'd-none': !ctrl.showMenu || !ctrl.isAudioCompatible || ctrl.selectedRecorder !== 'none'}\\\" class=\\\"flex-fill\\\"> <button type=\\\"button\\\" ng-click=\\\"ctrl.switchRecorder('audio')\\\" class=\\\"btn btn-circle\\\" i18n-title=\\\"embed.audio.title\\\"> <i class=\\\"fas fa-microphone\\\"></i> </button> </div> <div ng-class=\\\"{ 'd-none': !ctrl.showMenu || !ctrl.isVideoCompatible || ctrl.selectedRecorder !== 'none'}\\\" class=\\\"flex-fill\\\"> <button type=\\\"button\\\" ng-click=\\\"ctrl.switchRecorder('video')\\\" class=\\\"btn btn-circle\\\"> <i class=\\\"fas fa-video\\\"></i> </button> </div> <div ng-if=\\\"!ctrl.isAudioCompatible && !ctrl.isVideoCompatible\\\" class=\\\"flex-fill\\\"> <p><i18n>recorder.not.supported</i18n></p> </div> <div ng-if=\\\"!ctrl.isVideoCompatible\\\" class=\\\"flex-fill\\\"> <div ng-if=\\\"VideoRecorder.isIncompatibleBrowser()\\\"> <p><i18n>embed.video.incompatible.details</i18n></p> <p class=\\\"update\\\"> <a href=\\\"https://www.google.fr/chrome/browser/desktop/\\\" target=\\\"_blank\\\"> <img src=\\\"/auth/public/img/chrome_logo.png\\\"/> </a> <a href=\\\"https://www.mozilla.org/fr/firefox/new/\\\" target=\\\"_blank\\\"> <img src=\\\"/auth/public/img/firefox_logo.png\\\"/> </a> </p> </div> <div ng-if=\\\"VideoRecorder.isIncompatibleDevice()\\\"> <p><i18n>embed.video.incompatible.devices</i18n></p> <p><i18n>embed.video.incompatible.devices.footer</i18n></p> <img skin-src=\\\"images/emptyscreen-recorder-video.svg\\\" height=\\\"150\\\"> </div> </div> <div id=\\\"audioRecorder\\\" class=\\\"flex-fill\\\" ng-if=\\\"ctrl.selectedRecorder === 'audio'\\\"> <div class=\\\"record-timer\\\"> <i class=\\\"fas fa-microphone\\\"></i> [[ctrl.time()]] </div> <div ng-class=\\\"{'d-none': ctrl.displaySavedMessage}\\\"> <input type=\\\"text\\\" class=\\\"form-control\\\" i18n-placeholder=\\\"title\\\" ng-model=\\\"ctrl.recorder.title\\\"/> </div> <div class=\\\"record-controls\\\" ng-class=\\\"{'d-none': ctrl.displaySavedMessage}\\\"> <button id=\\\"btnAudioRecorder\\\" type=\\\"button\\\" class=\\\"btn btn-circle\\\" ng-click=\\\"ctrl.switchAudioRecord()\\\" ng-class=\\\"{ 'd-none': ctrl.isVideo || !ctrl.isAudioCompatible }\\\" ng-disabled=\\\"ctrl.isEncoding || ctrl.isUploading || ctrl.isPlaying || ctrl.isSaved\\\"> <i class=\\\"fas\\\" ng-class=\\\"{'fa-microphone': !ctrl.isRecording, 'fa-pause': ctrl.isRecording}\\\"></i> <span class=\\\"label\\\" ng-if=\\\"ctrl.isIdle || ctrl.isStopped\\\"><i18n>embed.record</i18n></span> <span class=\\\"label\\\" ng-if=\\\"!ctrl.isRecording && !ctrl.isIdle && !ctrl.isStopped\\\" ng-class=\\\"{'d-none': ctrl.isIdle}\\\"><i18n>embed.resume</i18n></span> <span class=\\\"label\\\" ng-if=\\\"ctrl.isRecording\\\"><i18n>embed.suspend</i18n></span> </button> <button type=\\\"button\\\" class=\\\"btn btn-circle\\\" ng-click=\\\"ctrl.switchPlay()\\\" ng-disabled=\\\"ctrl.disabledButtons || ctrl.isRecording || ctrl.isEncoding || ctrl.isUploading\\\"> <i class=\\\"fas\\\" ng-class=\\\"ctrl.isPlaying ? 'fa-pause' : 'fa-play'\\\"></i> <span class=\\\"label\\\" ng-if=\\\"!ctrl.isPlaying\\\"><i18n>embed.play</i18n></span> <span class=\\\"label\\\" ng-if=\\\"ctrl.isPlaying\\\"><i18n>embed.pause</i18n></span> </button> <button type=\\\"button\\\" class=\\\"btn btn-circle\\\" ng-click=\\\"ctrl.saveRecord()\\\" ng-disabled=\\\"ctrl.disabledButtons || ctrl.isRecording || ctrl.isEncoding || ctrl.isUploading || ctrl.isPlaying\\\"> <i ng-class=\\\"ctrl.getSaveBtnClass()\\\"></i> <span class=\\\"label\\\"><i18n>embed.save</i18n></span> </button> <button type=\\\"button\\\" class=\\\"btn btn-circle btn-danger\\\" ng-click=\\\"ctrl.clean()\\\" ng-disabled=\\\"ctrl.isRecording || ctrl.isEncoding || ctrl.isUploading || ctrl.isPlaying\\\"> <i class=\\\"fas fa-times\\\"></i> <span class=\\\"label\\\"><i18n>embed.redo</i18n></span> </button> </div> </div> <div id=\\\"videoRecorder\\\" class=\\\"flex-fill\\\" navigation-guard=\\\"true\\\" guard-root=\\\"videoCapturedGuard\\\" ng-if=\\\"ctrl.selectedRecorder === 'video'\\\"> <div class=\\\"record-timer\\\"> <i class=\\\"fas fa-video\\\"></i> [[ctrl.msToTime(ctrl.recorder.elapsedTime)]]/[[ctrl.msToTime(ctrl.recordMaxTime)]] </div> <div ng-class=\\\"{'d-none': ctrl.displaySavedMessage}\\\"> <select title=\\\"selectWebcam\\\" class=\\\"form-select mb-2\\\" ng-if=\\\"ctrl.videoInputDevices.length > 1\\\" ng-options=\\\"vid as vid.label for vid in ctrl.videoInputDevices\\\" ng-disabled=\\\"ctrl.isRecording\\\" ng-model=\\\"ctrl.selectedVid\\\" ng-change=\\\"ctrl.switchVideo(ctrl.selectedVid.deviceId)\\\"> </select> </div> <div id=\\\"recorderWidgetVideoPlayer\\\" class=\\\"record-widget-player\\\"> </div> <div ng-class=\\\"{'d-none': ctrl.displaySavedMessage}\\\"> <label class=\\\"visually-hidden\\\" for=\\\"video-recorder\\\"><i18n>title</i18n></label> <input type=\\\"text\\\" id=\\\"video-recorder\\\" class=\\\"form-control\\\" i18n-placeholder=\\\"title\\\" ng-model=\\\"ctrl.recorder.title\\\"/> </div> <div class=\\\"record-controls\\\" custom-guard=\\\"recordGuard\\\" ng-class=\\\"{'d-none': ctrl.displaySavedMessage}\\\"> <button id=\\\"btnVideoRecorder\\\" type=\\\"button\\\" class=\\\"btn btn-circle\\\" ng-if=\\\"!(ctrl.isAudio) && ctrl.isVideoCompatible\\\" ng-click=\\\"ctrl.switchVideoRecord()\\\" ng-disabled=\\\"ctrl.isEncoding || ctrl.isUploading || ctrl.isPlaying || ctrl.isSaved\\\"> <i class=\\\"fas\\\" ng-class=\\\"{'fa-stop': ctrl.isRecording, 'fa-video': !ctrl.isRecording}\\\"></i> <span class=\\\"label\\\">[[ctrl.isRecording ? 'embed.stop' : 'embed.record' | i18n]]</span> </button> <button type=\\\"button\\\" class=\\\"btn btn-circle\\\" ng-click=\\\"ctrl.switchPlay()\\\" ng-disabled=\\\"ctrl.disabledButtons || ctrl.isRecording || ctrl.isEncoding || ctrl.isUploading\\\"> <i class=\\\"fas\\\" ng-class=\\\"{'fa-pause': ctrl.isPlaying, 'fa-play': !ctrl.isPlaying}\\\"></i> <span class=\\\"label\\\">[[ctrl.isPlaying ? 'embed.pause' : 'embed.play' | i18n]]</span> </button> <button type=\\\"button\\\" class=\\\"btn btn-circle\\\" ng-click=\\\"ctrl.saveRecord()\\\" ng-disabled=\\\"ctrl.disabledButtons || ctrl.isRecording || ctrl.isEncoding || ctrl.isUploading || ctrl.isPlaying\\\"> <i ng-class=\\\"ctrl.getSaveBtnClass()\\\"></i> <span class=\\\"label\\\"> <i18n>embed.save</i18n> </span> </button> <button type=\\\"button\\\" class=\\\"btn btn-circle btn-danger\\\" ng-click=\\\"ctrl.clean()\\\" ng-disabled=\\\"ctrl.isRecording || ctrl.isEncoding || ctrl.isUploading || ctrl.isPlaying\\\"> <i class=\\\"fas fa-times\\\"></i> <span class=\\\"label\\\"><i18n>embed.redo</i18n></span> </button> </div> </div> <div ng-class=\\\"{'d-none': !ctrl.displaySavedMessage, 'd-block record-widget-message': ctrl.displaySavedMessage}\\\"> <p class=\\\"text-success\\\">{{ctrl.recorder.title}} <i18n>embed.saved.file</i18n></p> <a ng-href=\\\"/workspace/workspace#/apps\\\" class=\\\"btn btn btn-outline-third rounded-pill d-inline-block mx-auto\\\"><i18n>embed.goto.file</i18n></a> <button class=\\\"btn btn-link d-block mx-auto\\\" ng-click=\\\"ctrl.clean()\\\"><i18n>embed.new.recording</i18n></button> </div>\";\n// Exports\nexport default code;","// Module\nvar code = \"<ode-modal visible=\\\"ctrl.display.showAuthenticatedConnectorLightbox\\\" on-close=\\\"ctrl.onClose()\\\"> <ode-modal-title> <i18n>apps.authenticatedConnector.lightbox.title</i18n> </ode-modal-title> <ode-modal-body> <p class=\\\"text-center\\\"> <i18n>apps.authenticatedConnector.lightbox.content</i18n> </p> </ode-modal-body> <ode-modal-footer> <button class=\\\"btn btn-light text-primary\\\" ng-click=\\\"ctrl.onClose()\\\"> <i18n>cancel</i18n> </button> <button class=\\\"btn btn-primary\\\" ng-click=\\\"ctrl.onConfirm()\\\"> <i18n>confirm</i18n> </button> </ode-modal-footer> </ode-modal> \";\n// Exports\nexport default code;","// Module\nvar code = \"<i class=\\\"ic-help\\\" ng-click=\\\"onHelp()\\\"></i> <ode-modal class=\\\"modal-help\\\" visible=\\\"display.read\\\" on-close=\\\"display.read = false\\\"> <ode-modal-title></ode-modal-title> <ode-modal-body><div></div></ode-modal-body> </ode-modal> \";\n// Exports\nexport default code;","// Module\nvar code = \" <header class=\\\"no-2d navbar navbar-light bg-white\\\" ng-if=\\\"ctrl.is1D\\\"> <a class=\\\"application__title d-desktop-none text-truncate\\\" href=\\\"/welcome?token=[[ctrl.version]]\\\" ng-bind-html=\\\"ctrl.title\\\"> </a> <div class=\\\"d-mobile-none\\\"> <img ng-src=\\\"[[ctrl.avatar]]\\\"/> <span href=\\\"\\\" translate key=\\\"welcome\\\"></span> </div> <nav class=\\\"navigation\\\"> <div class=\\\"navigation__item\\\" ng-if=\\\"me.hasWorkflow('org.entcore.conversation.controllers.ConversationController|view')\\\"> <span> <a href=\\\"/conversation/conversation\\\" i18n-title=\\\"navbar.messages\\\" aria-label=\\\"navbar.messages\\\"> <i class=\\\"ic-conversation\\\"><span class=\\\"new-mails\\\" ng-if=\\\"nbNewMessages\\\">[[nbNewMessages]]</span></i> </a> </span> </div> <div class=\\\"navigation__item\\\"> <a href=\\\"/userbook/mon-compte\\\" i18n-title=\\\"navbar.myaccount\\\"> <i class=\\\"ic-avatar\\\"></i> </a> </div> <div class=\\\"navigation__item\\\" ng-if=\\\"ctrl.currentLanguage == 'fr'\\\" pulsar=\\\"{index:5, style:{zIndex:1021}, i18n:'portal.pulsar.help', position:'bottom center'}\\\"> <a href=\\\"\\\" i18n-title=\\\"navbar.help\\\"> <help></help> </a> </div> <div class=\\\"navigation__item\\\"> <a href=\\\"\\\" logout i18n-title=\\\"navbar.disconnect\\\"> <i class=\\\"ic-disconnect\\\"></i> </a> </div> </nav> </header> <div class=\\\"no-2d navigation--secondary\\\"> <a class=\\\"d-mobile-none\\\" href=\\\"/timeline/timeline\\\"> <img class=\\\"logo\\\" skin-src=\\\"img/illustrations/logo.png\\\" alt=\\\"Logo de l'ENT\\\"> <span class=\\\"text-truncate d-desktop-none\\\" ng-bind-html=\\\"ctrl.title\\\"></span> </a> <nav class=\\\"navigation\\\"> <a class=\\\"button\\\" href=\\\"/timeline/timeline?token=[[ctrl.version]]\\\"> <i class=\\\"ic-notifications d-desktop-none\\\"></i> <span class=\\\"d-mobile-none\\\"> <i18n>portal.header.navigation.whatsnew</i18n> </span> </a> <a class=\\\"button\\\" href=\\\"/userbook/annuaire?myClass&token=[[ctrl.version]]\\\"> <i class=\\\"ic-userbook d-desktop-none\\\"></i> <span class=\\\"d-mobile-none\\\"> <i18n>portal.header.navigation.classMembers</i18n> </span> </a> <a class=\\\"button\\\" href=\\\"/welcome?token=[[ctrl.version]]\\\"> <i class=\\\"ic-apps d-desktop-none\\\"></i> <span class=\\\"d-mobile-none\\\"> <i18n>portal.header.navigation.myapps</i18n> </span> </a> </nav> </div> <header class=\\\"no-1d navbar sticky-top bg-secondary\\\" ng-if=\\\"ctrl.is2D\\\"> <div class=\\\"container\\\"> <a class=\\\"navbar-brand\\\" href=\\\"/timeline/timeline?token=[[ctrl.version]]\\\" ng-click=\\\"ctrl.trackEvent($event, {detail:{'open':'timeline', 'from':'logo'} })\\\"> <img class=\\\"logo\\\" skin-src=\\\"img/illustrations/logo.png\\\" alt=\\\"Logo de l'ENT\\\"> </a> <nav class=\\\"navbar-nav\\\"> <a href=\\\"/timeline/timeline\\\" class=\\\"nav-link\\\" i18n-title=\\\"navbar.home\\\" ng-click=\\\"ctrl.trackEvent($event, {detail:{'open':'timeline', 'from':'menu'} })\\\"> <i class=\\\"ic-home\\\" aria-hidden=\\\"true\\\"></i> <span class=\\\"sr-only\\\"><i18n>navbar.home</i18n></span> </a> <a href=\\\"/community\\\" data-community class=\\\"nav-link d-none d-sm-block\\\" i18n-title=\\\"navbar.community\\\" ng-if=\\\"me.hasWorkflow('net.atos.entng.community.controllers.CommunityController|view')\\\" ng-click=\\\"ctrl.trackEvent($event, {detail:{'open':'community'} })\\\"> <i class=\\\"ic-community\\\" aria-hidden=\\\"true\\\"></i> <span class=\\\"sr-only\\\"><i18n>navbar.community</i18n></span> </a> <popover pulsar=\\\"{index:3, style:{zIndex:1021}, i18n:'portal.pulsar.apps', position:'bottom center'}\\\"> <a href=\\\"/welcome\\\" class=\\\"nav-link pe-mobile\\\" i18n-title=\\\"navbar.applications\\\" popover-opener ng-click=\\\"ctrl.trackEvent($event, {detail:{'open':'welcome', 'from':'menu'} })\\\"> <i class=\\\"ic-apps\\\" aria-hidden=\\\"true\\\"></i> <span class=\\\"sr-only\\\"><i18n>navbar.applications</i18n></span> </a> <popover-content class=\\\"widget\\\"> <div class=\\\"widget-applications\\\"> <div class=\\\"widget-body d-flex flex-wrap\\\"> <div class=\\\"text-dark\\\" ng-if=\\\"ctrl.apps.length === 0\\\"> <i18n>navbar.myapps.more</i18n> </div> <div class=\\\"bookmarked-app\\\" ng-repeat=\\\"app in ctrl.apps track by $index\\\"> <a connector-lightbox-trigger=\\\"app\\\" aria-label=\\\"[[app.displayName]]\\\" href=\\\"[[app.address]]\\\" target=\\\"[[app.target]]\\\" i18n-title=\\\"[[app.displayName]]\\\" ng-switch=\\\"app.icon.indexOf('/')\\\" ng-click=\\\"ctrl.trackEvent($event, {detail:{'open':'app', 'app':app} })\\\"> <i class=\\\"fs-1\\\" ng-class=\\\"ctrl.getIconClass(app)\\\" ng-switch-when=\\\"-1\\\"></i> <img skin-src=\\\"[[app.icon]]\\\" ng-switch-default alt=\\\"[[app.displayName]]\\\"/> </a> </div> </div> <div class=\\\"widget-footer border-top border-ghost\\\"> <div class=\\\"widget-footer-action\\\"> <a class=\\\"link\\\" href=\\\"/welcome\\\" ng-click=\\\"ctrl.trackEvent($event, {detail:{'open':'welcome', 'from':'more'} })\\\"> <i18n>plus</i18n> </a> </div> </div> </div> </popover-content> </popover> <div class=\\\"nav-link conversation\\\" ng-include=\\\"ctrl.conversationUnreadUrl\\\" ng-click=\\\"ctrl.trackEvent($event, {detail:{'open':'conversation'} })\\\"> </div> <popover class=\\\"nav-link d-none d-sm-inline-block\\\" ng-if=\\\"me.hasWorkflow('fr.openent.searchengine.controllers.SearchEngineController|view')\\\"> <a href=\\\"/searchengine\\\" i18n-title=\\\"navbar.search\\\" popover-opener class=\\\"pe-mobile\\\" ng-click=\\\"ctrl.trackEvent($event, {detail:{'open':'searchengine', 'from':'menu'} })\\\"> <i class=\\\"ic-search\\\" aria-hidden=\\\"true\\\"></i> <span class=\\\"sr-only\\\"><i18n>navbar.search</i18n></span> </a> <popover-content class=\\\"widget searchPortal\\\"> <div class=\\\"content searchContent\\\"> <div class=\\\"search-text row\\\"> <label class=\\\"sr-only\\\" for=\\\"searchInput\\\">mysearch</label> <input type=\\\"text\\\" id=\\\"searchInput\\\" class=\\\"searchInput\\\" id=\\\"searchInput\\\" name=\\\"mysearch\\\" ng-model=\\\"ctrl.mysearch\\\" ng-keyup=\\\"ctrl.launchSearch($event, 'key');\\\"/> <button class=\\\"searchButton\\\" ng-click=\\\"ctrl.launchSearch($event, 'button');\\\"> <i18n>ok</i18n> </button> </div> </div> </popover-content> </popover> <a href=\\\"#\\\" i18n-title=\\\"navbar.help\\\" class=\\\"nav-link\\\" pulsar=\\\"{ index:5, style:{zIndex:1021}, i18n:'portal.pulsar.help', position:'bottom center'}\\\" ng-if=\\\"ctrl.currentLanguage == 'fr'\\\" ng-click=\\\"ctrl.trackEvent($event, {detail:{'open':'help'} })\\\"> <help></help> </a> <a href=\\\"/userbook/mon-compte\\\" i18n-title=\\\"navbar.myaccount\\\" class=\\\"nav-link d-none d-sm-block\\\" pulsar=\\\"{ index:4, style:{zIndex:1021}, i18n:'portal.pulsar.account', position:'bottom center'}\\\" ng-click=\\\"ctrl.trackEvent($event, {detail:{'open':'myaccount'} })\\\"> <img class=\\\"avatar\\\" data-ng-src=\\\"[[ctrl.avatar ? ctrl.avatar+'?thumbnail=48x48' : '']]\\\" width=\\\"30\\\" height=\\\"30\\\" alt=\\\"[[ctrl.username]]\\\"/> <span class=\\\"sr-only\\\"><i18n>navbar.myaccount</i18n></span> </a> <a href=\\\"#\\\" class=\\\"nav-link d-none d-sm-inline-flex\\\" logout i18n-title=\\\"navbar.disconnect\\\"> <i class=\\\"ic-disconnect\\\" aria-hidden=\\\"true\\\"></i> <span class=\\\"sr-only\\\"><i18n>navbar.disconnect</i18n></span> </a> <div class=\\\"dropdown d-inline-block d-sm-none\\\"> <button id=\\\"dropdown-label\\\" type=\\\"button\\\" class=\\\"nav-link dropdown-toggle\\\" data-bs-toggle=\\\"dropdown\\\" aria-expanded=\\\"false\\\"></button> <ul class=\\\"dropdown-menu dropdown-menu-end\\\" data-bs-popper aria-labelledby=\\\"dropdown-label\\\"> <li ng-if=\\\"me.hasWorkflow('fr.openent.searchengine.controllers.SearchEngineController|view')\\\"> <a class=\\\"dropdown-item\\\" href=\\\"/searchengine\\\" i18n-title=\\\"navbar.search\\\"> <i class=\\\"ic-search\\\"></i> <i18n>navbar.search</i18n> </a> </li> <li> <a class=\\\"dropdown-item\\\" href=\\\"/userbook/mon-compte\\\" i18n-title=\\\"navbar.myaccount\\\" ng-click=\\\"ctrl.trackEvent($event, {detail:{'open':'myaccount'} })\\\"> <img class=\\\"avatar\\\" data-ng-src=\\\"[[ctrl.avatar ? ctrl.avatar+'?thumbnail=48x48' : '']]\\\" width=\\\"20\\\" height=\\\"20\\\" alt=\\\"[[ctrl.username]]\\\"/> <i18n>navbar.myaccount</i18n> </a> </li> <li data-community ng-if=\\\"me.hasWorkflow('net.atos.entng.community.controllers.CommunityController|view')\\\"> <a class=\\\"dropdown-item\\\" href=\\\"/community\\\" i18n-title=\\\"navbar.community\\\" ng-click=\\\"ctrl.trackEvent($event, {detail:{'open':'community'} })\\\"> <i class=\\\"ic-community\\\" aria-hidden=\\\"true\\\"></i> <i18n>navbar.community</i18n> </a> </li> <li><hr class=\\\"dropdown-divider\\\"></li> <li> <a class=\\\"dropdown-item\\\" href=\\\"\\\" logout i18n-title=\\\"navbar.disconnect\\\"> <i class=\\\"ic-disconnect\\\"></i> <i18n>navbar.disconnect</i18n> </a> </li> </ul> </div> </nav> </div> </header> \";\n// Exports\nexport default code;","// Module\nvar code = \" <div class=\\\"toaster\\\" ng-class=\\\"ctrl.getClass()\\\"> <a href=\\\"\\\" ng-repeat=\\\"a in ctrl.model.context.actions | filter:{available:true} track by a.id\\\" ng-if=\\\"ctrl.isActivable(a)\\\" ng-class=\\\"ctrl.getActionClass(a)\\\" ng-click=\\\"ctrl.activate(a)\\\">{{ctrl.getI18nKey(a)|i18n}}</a> <a href=\\\"\\\" ng-class=\\\"ctrl.getActionClass({id:'share', available:true})\\\" ng-click=\\\"ctrl.activate({id:'share', available:true})\\\">{{ctrl.getI18nKey({id:'share', available:true})|i18n}}</a> </div> <ode-modal id=\\\"editProperty\\\" ng-if=\\\"ctrl.showProps\\\" visible=\\\"ctrl.showProps\\\" on-close=\\\"ctrl.closeProps()\\\"> <ode-modal-title><i18n>explorer.modal.props.title</i18n> \\\"Titre de la ressource\\\"</ode-modal-title> <ode-modal-body> <ode-props-panel props=\\\"ctrl.props\\\" item=\\\"ctrl.items[0]\\\"></ode-props-panel> </ode-modal-body> <ode-modal-footer> <button type=\\\"button\\\" class=\\\"btn btn-link\\\" data-dismiss=\\\"modal\\\" ng-click=\\\"ctrl.closeProps()\\\"><i18n>explorer.modal.props.btn.cancel.label</i18n></button> <button type=\\\"button\\\" class=\\\"btn btn-primary\\\"><i18n>explorer.modal.props.btn.record.label</i18n></button> </ode-modal-footer> </ode-modal> <ode-modal id=\\\"shareProperty\\\" ng-if=\\\"ctrl.showShares\\\" visible=\\\"ctrl.showShares\\\" on-close=\\\"ctrl.closeShares()\\\"> <ode-modal-title><i18n>share.title</i18n></ode-modal-title> <ode-modal-body> <ode-share-panel auto-close=\\\"true\\\"></ode-share-panel> <div class=\\\"share\\\" ng-show=\\\"!isCloseConfirmLoaded()\\\"> <h3><i18n>share.publish.title</i18n></h3> <div class=\\\"row publication-option\\\"> <label> <input type=\\\"radio\\\" name=\\\"publish-type\\\" ng-model=\\\"display.publishType\\\" ng-change=\\\"updatePublishType()\\\" value=\\\"IMMEDIATE\\\"/> <i18n>share.publish.immediate</i18n> </label> <label> <input type=\\\"radio\\\" name=\\\"publish-type\\\" ng-model=\\\"display.publishType\\\" ng-change=\\\"updatePublishType()\\\" value=\\\"RESTRAINT\\\"/> <i18n>share.publish.differed</i18n> </label> </div> </div> </ode-modal-body> <ode-modal-footer> <button type=\\\"button\\\" class=\\\"btn btn-link\\\" data-dismiss=\\\"modal\\\" ng-click=\\\"ctrl.closeShares()\\\"><i18n>explorer.modal.props.btn.cancel.label</i18n></button> <button type=\\\"button\\\" class=\\\"btn btn-primary\\\"><i18n>explorer.modal.props.btn.record.label</i18n></button> </ode-modal-footer> </ode-modal> \";\n// Exports\nexport default code;","// Module\nvar code = \"<div class=\\\"row\\\"> <input type=\\\"text\\\" ng-model=\\\"ctrl.search\\\" i18n-placeholder=\\\"search\\\" autocomplete=\\\"off\\\"/> </div> \";\n// Exports\nexport default code;","// Module\nvar code = \"<div class=\\\"toast fade\\\" role=\\\"alert\\\" aria-live=\\\"assertive\\\" aria-atomic=\\\"true\\\"> <div class=\\\"toast-header\\\"> <strong class=\\\"me-auto\\\">[[header]]</strong> <small class=\\\"text-muted\\\">[[since]]</small> <button type=\\\"button\\\" class=\\\"btn-close\\\" data-bs-dismiss=\\\"toast\\\" aria-label=\\\"Close\\\" ng-click=\\\"visible(false)\\\"></button> </div> <div class=\\\"toast-body\\\" ng-transclude></div> </div>\";\n// Exports\nexport default code;","// Module\nvar code = \"<section class=\\\"lightbox\\\" ng-class=\\\"{'lightbox': !tiny, 'tiny-lightbox': tiny}\\\"> <div class=\\\"background\\\"></div> <div class=\\\"content\\\"> <div class=\\\"twelve cell\\\" ng-transclude></div> <div class=\\\"close-lightbox\\\"> <i class=\\\"close-2x\\\"></i> </div> </div> </section>\";\n// Exports\nexport default code;","// Module\nvar code = \"<div class=\\\"modal fade\\\" tabindex=\\\"-1\\\" role=\\\"dialog\\\" aria-labelledby=\\\"{{ctrl.id+'Label'}}\\\" aria-hidden=\\\"true\\\" ng-class=\\\"{show: ctrl.visible}\\\" ng-style=\\\"ctrl.getStyle()\\\"> <div class=\\\"modal-backdrop fade show\\\" style=\\\"z-index:1040\\\"></div> <div class=\\\"modal-dialog\\\" ng-class=\\\"ctrl.getSizeClass()\\\" role=\\\"document\\\" style=\\\"z-index:1050\\\"> <div class=\\\"modal-content\\\"> <div class=\\\"modal-header\\\"> <h5 class=\\\"modal-title\\\" id=\\\"{{ctrl.id+'Label'}}\\\" ng-transclude=\\\"title\\\"></h5> <button type=\\\"button\\\" class=\\\"btn-close\\\" aria-label=\\\"Close\\\" ng-if=\\\"ctrl.onClose\\\" ng-click=\\\"ctrl.onClose()\\\"> </button> </div> <div class=\\\"modal-body\\\" ng-transclude=\\\"body\\\"></div> <div class=\\\"modal-footer\\\" ng-transclude=\\\"footer\\\"></div> </div> </div> </div> \";\n// Exports\nexport default code;","// Module\nvar code = \"<style id=\\\"pulsar-css\\\">pulsar{z-index:1036;position:absolute;pointer-events:all}.pulsar-layer{box-shadow:0 0 0 99999px rgb(0 0 0 / 60%);position:absolute;border-radius:2px;z-index:1035}pulsar .content{background:#fff;width:300px;box-shadow:1px 1px 7px rgb(0 0 0 / 40%);padding:15px;box-sizing:border-box;border:6px solid #ddd;border-radius:2px;position:relative}pulsar .content .inf{position:absolute;left:10px;top:10px;color:#fff;background:#ffaa4d;border-radius:50%;line-height:22px;text-align:center;width:22px;height:22px}pulsar .content .inf::before{font-size:18px;content:'i';font-style:italic;font-weight:700;display:inline-block;margin-left:-1px}pulsar .content .close{position:absolute;right:10px;top:10px;width:22px;height:22px;line-height:17px;background:#ddd;border-radius:50%;color:#636363}pulsar i.close{font-family:generic-icons;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;background-image:none;font-weight:400!important;text-align:center;cursor:pointer;font-style:normal}pulsar .content>div.text{margin-top:25px;padding:10px;font-size:14px;line-height:18px}pulsar .content .close::before{content:'\\\\e866';font-size:9px}pulsar nav.dots ul{display:-ms-flexbox;display:flex;-ms-flex-pack:center;justify-content:center;padding:0;margin:15px 0 25px}pulsar nav.dots li.dot{list-style-type:none;margin:0 10px;cursor:pointer}pulsar nav.dots li.dot::before{content:\\\" \\\";display:block;width:17px;height:17px;background:0 0;border:2px solid silver;border-radius:50%;box-sizing:border-box;transition:all 250ms ease}pulsar nav.dots li.dot:hover::before{border-color:#ff8500;background:0 0}nav.dots li.dot.active::before{color:#4bafd5}pulsar nav.dots li.dot.active::before{border-color:#ff8500;background:#ff8500}pulsar nav.dots li.dot::before{font-size:60px;width:12px;height:12px}pulsar nav.dots li.dot::before{content:\\\" \\\";display:block;width:17px;height:17px;background:0 0;border:2px solid silver;border-radius:50%;box-sizing:border-box;transition:all 250ms ease}pulsar .arrow{width:0;height:0;border-style:solid;border-width:0 8.4px 14px 8.4px;border-color:transparent transparent #ddd transparent;z-index:1;position:absolute}pulsar.middle .arrow{left:calc(50% - 7px);top:-14px}pulsar.left .arrow{transform:rotate(90deg);right:-14px}pulsar.left.top .arrow{top:1px}pulsar.left.center .arrow{top:calc(50% - 7px)}pulsar.right.center .arrow{top:calc(50% - 7px)}pulsar.right .arrow{transform:rotate(270deg);left:-14px}pulsar.right.top .arrow{top:1px}pulsar.center.top .arrow{transform:rotate(180deg);top:100%;left:calc(50% - 7px)}pulsar.bottom .arrow{top:-14px}pulsar.bottom.center .arrow{left:calc(50% - 7px)}pulsar.bottom.left .arrow,pulsar.bottom.right .arrow{top:1px}pulsar.bottom.right .arrow{left:-14px;transform:rotate(-90deg)}pulsar.bottom.left .arrow{transform:rotate(90deg);right:-14px;left:auto}.pulsar-button{position:absolute;z-index:999;width:40px;height:40px}.pulsar-button::after,.pulsar-button::before{content:\\\"\\\";opacity:.5;position:absolute;z-index:-1;inset:-6px 0 0 -6px;height:42px;width:42px;content:\\\"\\\";border-radius:50%;box-shadow:0 0 5px 6px rgb(120 218 255 / 60%);transform:scale(.1,.1);transition:all 250ms ease;animation:pulsate 1s ease-out;animation-iteration-count:infinite}.pulsar-button::after{animation-delay:.3s}.pulse-spot{position:absolute;cursor:pointer;width:30px;height:30px;font-size:18px;text-align:center;line-height:21px;font-weight:700;color:#fff;border-radius:50%;border:4px solid transparent;background:#ff8500;transition:all 250ms ease}.pulse-spot::before{content:'i';font-style:italic;font-family:'Times New Roman',Times,serif}pulsar .row{flex-direction:row-reverse;justify-content:space-between;margin-left:0!important;margin-right:0!important;max-width:100%;width:100%;position:relative;clear:both;box-sizing:border-box}pulsar .row>*{width:auto}@keyframes pulsate{0%{transform:scale(.1,.1);opacity:0}50%{opacity:1}100%{transform:scale(1.2,1.2);opacity:0}}.pulsar-button{display:none}@media (min-width:992px){.pulsar-button{display:block}}</style>\";\n// Exports\nexport default code;","// Module\nvar code = \"<style id=\\\"widget-container-css\\\">ul[dnd-list],ul[dnd-list]>li{position:relative}ul[dnd-list]{padding-left:0}ul[dnd-list][dnd-drop]{min-height:42px;transition:all .1s ease-in-out 0s}ul[dnd-list][dnd-dragover].dndReject{display:block;background-color:#ff8c8c;min-height:90px;border-radius:6px;margin-bottom:2em}ul[dnd-list] .dndDraggingSource{display:none}ul[dnd-list] .dndPlaceholder{display:block;background-color:#ffdbb7;min-height:90px;border-radius:6px;margin-bottom:2em}ul[dnd-list] li{list-style:none}.dndDragging:not(.dndDraggingSource){cursor:grabbing!important;border:1px solid rgb(255 133 0)}.dnDragover{cursor:grabbing}.dndDragging:not(.dndDraggingSource):active,.dndDragging:not(.dndDraggingSource):focus,.dndDragging:not(.dndDraggingSource):hover{cursor:grabbing;cursor:-webkit-grabbing}</style> <ul dnd-list dnd-allowed-types=\\\"[]\\\" ng-if=\\\"ctrl.lockedWidgets.length\\\"> <li ng-repeat=\\\"widget in ctrl.lockedWidgets track by widget.platformConf.id\\\" class=\\\"widget widget-locked\\\" ode-widget=\\\"widget\\\"> </li> </ul> <ul dnd-list dnd-allowed-types=\\\"['left','right']\\\" dnd-dragover=\\\"ctrl.onDnDDragOver(event, index, type, dropEffect)\\\" dnd-drop=\\\"ctrl.onDnDDrop(event, item, index, dropEffect)\\\"> <li ng-repeat=\\\"widget in ctrl.dndWidgets track by widget.platformConf.id\\\" class=\\\"widget\\\" ode-widget=\\\"widget\\\" dnd-draggable=\\\"widget.platformConf.id\\\" dnd-type=\\\"widget.userPref.position\\\" dnd-disable-if=\\\"ctrl.isMobileView\\\"> </li> </ul>\";\n// Exports\nexport default code;","// Module\nvar code = \"<span>{{ctrl.sayHello()}}</span>\";\n// Exports\nexport default code;","/**\n * humane.js\n * Humanized Messages for Notifications\n * @author Marc Harter (@wavded)\n * @example\n * humane.log('hello world');\n * @license MIT\n * See more usage examples at: http://wavded.github.com/humane-js/\n */\n\n;!function (name, context, definition) {\n if (typeof module !== 'undefined') module.exports = definition(name, context)\n else if (typeof define === 'function' && typeof define.amd === 'object') define(definition)\n else context[name] = definition(name, context)\n}('humane', this, function (name, context) {\n var win = window\n var doc = document\n\n var ENV = {\n on: function (el, type, cb) {\n 'addEventListener' in win ? el.addEventListener(type,cb,false) : el.attachEvent('on'+type,cb)\n },\n off: function (el, type, cb) {\n 'removeEventListener' in win ? el.removeEventListener(type,cb,false) : el.detachEvent('on'+type,cb)\n },\n bind: function (fn, ctx) {\n return function () { fn.apply(ctx,arguments) }\n },\n isArray: Array.isArray || function (obj) { return Object.prototype.toString.call(obj) === '[object Array]' },\n config: function (preferred, fallback) {\n return preferred != null ? preferred : fallback\n },\n transSupport: false,\n useFilter: /msie [678]/i.test(navigator.userAgent), // sniff, sniff\n _checkTransition: function () {\n var el = doc.createElement('div')\n var vendors = { webkit: 'webkit', Moz: '', O: 'o', ms: 'MS' }\n\n for (var vendor in vendors)\n if (vendor + 'Transition' in el.style) {\n this.vendorPrefix = vendors[vendor]\n this.transSupport = true\n }\n }\n }\n ENV._checkTransition()\n\n var Humane = function (o) {\n o || (o = {})\n this.queue = []\n this.baseCls = o.baseCls || 'humane'\n this.addnCls = o.addnCls || ''\n this.timeout = 'timeout' in o ? o.timeout : 2500\n this.waitForMove = o.waitForMove || false\n this.clickToClose = o.clickToClose || false\n this.timeoutAfterMove = o.timeoutAfterMove || false\n this.container = o.container\n\n try { this._setupEl() } // attempt to setup elements\n catch (e) {\n ENV.on(win,'load',ENV.bind(this._setupEl, this)) // dom wasn't ready, wait till ready\n }\n }\n\n Humane.prototype = {\n constructor: Humane,\n _setupEl: function () {\n var el = doc.createElement('div')\n el.style.display = 'none'\n if (!this.container){\n if(doc.body) this.container = doc.body;\n else throw 'document.body is null'\n }\n this.container.appendChild(el)\n this.el = el\n this.removeEvent = ENV.bind(function(){\n var timeoutAfterMove = ENV.config(this.currentMsg.timeoutAfterMove,this.timeoutAfterMove)\n if (!timeoutAfterMove){\n this.remove()\n } else {\n setTimeout(ENV.bind(this.remove,this),timeoutAfterMove)\n }\n },this)\n\n this.transEvent = ENV.bind(this._afterAnimation,this)\n this._run()\n },\n _afterTimeout: function () {\n if (!ENV.config(this.currentMsg.waitForMove,this.waitForMove)) this.remove()\n\n else if (!this.removeEventsSet) {\n ENV.on(doc.body,'mousemove',this.removeEvent)\n ENV.on(doc.body,'click',this.removeEvent)\n ENV.on(doc.body,'keypress',this.removeEvent)\n ENV.on(doc.body,'touchstart',this.removeEvent)\n this.removeEventsSet = true\n }\n },\n _run: function () {\n if (this._animating || !this.queue.length || !this.el) return\n\n this._animating = true\n if (this.currentTimer) {\n clearTimeout(this.currentTimer)\n this.currentTimer = null\n }\n\n var msg = this.queue.shift()\n var clickToClose = ENV.config(msg.clickToClose,this.clickToClose)\n\n if (clickToClose) {\n ENV.on(this.el,'click',this.removeEvent)\n ENV.on(this.el,'touchstart',this.removeEvent)\n }\n\n var timeout = ENV.config(msg.timeout,this.timeout)\n\n if (timeout > 0)\n this.currentTimer = setTimeout(ENV.bind(this._afterTimeout,this), timeout)\n\n if (ENV.isArray(msg.html)) msg.html = '<ul><li>'+msg.html.join('<li>')+'</ul>'\n\n this.el.innerHTML = msg.html\n this.currentMsg = msg\n this.el.className = this.baseCls\n if (ENV.transSupport) {\n this.el.style.display = 'block'\n setTimeout(ENV.bind(this._showMsg,this),50)\n } else {\n this._showMsg()\n }\n\n },\n _setOpacity: function (opacity) {\n if (ENV.useFilter){\n try{\n this.el.filters.item('DXImageTransform.Microsoft.Alpha').Opacity = opacity*100\n } catch(err){}\n } else {\n this.el.style.opacity = String(opacity)\n }\n },\n _showMsg: function () {\n var addnCls = ENV.config(this.currentMsg.addnCls,this.addnCls)\n if (ENV.transSupport) {\n this.el.className = this.baseCls+' '+addnCls+' '+this.baseCls+'-animate'\n }\n else {\n var opacity = 0\n this.el.className = this.baseCls+' '+addnCls+' '+this.baseCls+'-js-animate'\n this._setOpacity(0) // reset value so hover states work\n this.el.style.display = 'block'\n\n var self = this\n var interval = setInterval(function(){\n if (opacity < 1) {\n opacity += 0.1\n if (opacity > 1) opacity = 1\n self._setOpacity(opacity)\n }\n else clearInterval(interval)\n }, 30)\n }\n },\n _hideMsg: function () {\n var addnCls = ENV.config(this.currentMsg.addnCls,this.addnCls)\n if (ENV.transSupport) {\n this.el.className = this.baseCls+' '+addnCls\n ENV.on(this.el,ENV.vendorPrefix ? ENV.vendorPrefix+'TransitionEnd' : 'transitionend',this.transEvent)\n }\n else {\n var opacity = 1\n var self = this\n var interval = setInterval(function(){\n if(opacity > 0) {\n opacity -= 0.1\n if (opacity < 0) opacity = 0\n self._setOpacity(opacity);\n }\n else {\n self.el.className = self.baseCls+' '+addnCls\n clearInterval(interval)\n self._afterAnimation()\n }\n }, 30)\n }\n },\n _afterAnimation: function () {\n if (ENV.transSupport) ENV.off(this.el,ENV.vendorPrefix ? ENV.vendorPrefix+'TransitionEnd' : 'transitionend',this.transEvent)\n\n if (this.currentMsg.cb) this.currentMsg.cb()\n this.el.style.display = 'none'\n\n this._animating = false\n this._run()\n },\n remove: function (e) {\n var cb = typeof e == 'function' ? e : null\n\n ENV.off(doc.body,'mousemove',this.removeEvent)\n ENV.off(doc.body,'click',this.removeEvent)\n ENV.off(doc.body,'keypress',this.removeEvent)\n ENV.off(doc.body,'touchstart',this.removeEvent)\n ENV.off(this.el,'click',this.removeEvent)\n ENV.off(this.el,'touchstart',this.removeEvent)\n this.removeEventsSet = false\n\n if (cb && this.currentMsg) this.currentMsg.cb = cb\n if (this._animating) this._hideMsg()\n else if (cb) cb()\n },\n log: function (html, o, cb, defaults) {\n var msg = {}\n if (defaults)\n for (var opt in defaults)\n msg[opt] = defaults[opt]\n\n if (typeof o == 'function') cb = o\n else if (o)\n for (var opt in o) msg[opt] = o[opt]\n\n msg.html = html\n if (cb) msg.cb = cb\n this.queue.push(msg)\n this._run()\n return this\n },\n spawn: function (defaults) {\n var self = this\n return function (html, o, cb) {\n self.log.call(self,html,o,cb,defaults)\n return self\n }\n },\n create: function (o) { return new Humane(o) }\n }\n return new Humane()\n});\n","//! moment.js locale configuration\n//! locale : German [de]\n//! author : lluchs : https://github.com/lluchs\n//! author: Menelion Elensúle: https://github.com/Oire\n//! author : Mikolaj Dadela : https://github.com/mik01aj\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n function processRelativeTime(number, withoutSuffix, key, isFuture) {\n var format = {\n m: ['eine Minute', 'einer Minute'],\n h: ['eine Stunde', 'einer Stunde'],\n d: ['ein Tag', 'einem Tag'],\n dd: [number + ' Tage', number + ' Tagen'],\n w: ['eine Woche', 'einer Woche'],\n M: ['ein Monat', 'einem Monat'],\n MM: [number + ' Monate', number + ' Monaten'],\n y: ['ein Jahr', 'einem Jahr'],\n yy: [number + ' Jahre', number + ' Jahren'],\n };\n return withoutSuffix ? format[key][0] : format[key][1];\n }\n\n var de = moment.defineLocale('de', {\n months: 'Januar_Februar_März_April_Mai_Juni_Juli_August_September_Oktober_November_Dezember'.split(\n '_'\n ),\n monthsShort:\n 'Jan._Feb._März_Apr._Mai_Juni_Juli_Aug._Sep._Okt._Nov._Dez.'.split('_'),\n monthsParseExact: true,\n weekdays:\n 'Sonntag_Montag_Dienstag_Mittwoch_Donnerstag_Freitag_Samstag'.split(\n '_'\n ),\n weekdaysShort: 'So._Mo._Di._Mi._Do._Fr._Sa.'.split('_'),\n weekdaysMin: 'So_Mo_Di_Mi_Do_Fr_Sa'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D. MMMM YYYY',\n LLL: 'D. MMMM YYYY HH:mm',\n LLLL: 'dddd, D. MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[heute um] LT [Uhr]',\n sameElse: 'L',\n nextDay: '[morgen um] LT [Uhr]',\n nextWeek: 'dddd [um] LT [Uhr]',\n lastDay: '[gestern um] LT [Uhr]',\n lastWeek: '[letzten] dddd [um] LT [Uhr]',\n },\n relativeTime: {\n future: 'in %s',\n past: 'vor %s',\n s: 'ein paar Sekunden',\n ss: '%d Sekunden',\n m: processRelativeTime,\n mm: '%d Minuten',\n h: processRelativeTime,\n hh: '%d Stunden',\n d: processRelativeTime,\n dd: processRelativeTime,\n w: processRelativeTime,\n ww: '%d Wochen',\n M: processRelativeTime,\n MM: processRelativeTime,\n y: processRelativeTime,\n yy: processRelativeTime,\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return de;\n\n})));\n","//! moment.js locale configuration\n//! locale : Spanish [es]\n//! author : Julio Napurí : https://github.com/julionc\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var monthsShortDot =\n 'ene._feb._mar._abr._may._jun._jul._ago._sep._oct._nov._dic.'.split(\n '_'\n ),\n monthsShort = 'ene_feb_mar_abr_may_jun_jul_ago_sep_oct_nov_dic'.split('_'),\n monthsParse = [\n /^ene/i,\n /^feb/i,\n /^mar/i,\n /^abr/i,\n /^may/i,\n /^jun/i,\n /^jul/i,\n /^ago/i,\n /^sep/i,\n /^oct/i,\n /^nov/i,\n /^dic/i,\n ],\n monthsRegex =\n /^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre|ene\\.?|feb\\.?|mar\\.?|abr\\.?|may\\.?|jun\\.?|jul\\.?|ago\\.?|sep\\.?|oct\\.?|nov\\.?|dic\\.?)/i;\n\n var es = moment.defineLocale('es', {\n months: 'enero_febrero_marzo_abril_mayo_junio_julio_agosto_septiembre_octubre_noviembre_diciembre'.split(\n '_'\n ),\n monthsShort: function (m, format) {\n if (!m) {\n return monthsShortDot;\n } else if (/-MMM-/.test(format)) {\n return monthsShort[m.month()];\n } else {\n return monthsShortDot[m.month()];\n }\n },\n monthsRegex: monthsRegex,\n monthsShortRegex: monthsRegex,\n monthsStrictRegex:\n /^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre)/i,\n monthsShortStrictRegex:\n /^(ene\\.?|feb\\.?|mar\\.?|abr\\.?|may\\.?|jun\\.?|jul\\.?|ago\\.?|sep\\.?|oct\\.?|nov\\.?|dic\\.?)/i,\n monthsParse: monthsParse,\n longMonthsParse: monthsParse,\n shortMonthsParse: monthsParse,\n weekdays: 'domingo_lunes_martes_miércoles_jueves_viernes_sábado'.split('_'),\n weekdaysShort: 'dom._lun._mar._mié._jue._vie._sáb.'.split('_'),\n weekdaysMin: 'do_lu_ma_mi_ju_vi_sá'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'H:mm',\n LTS: 'H:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D [de] MMMM [de] YYYY',\n LLL: 'D [de] MMMM [de] YYYY H:mm',\n LLLL: 'dddd, D [de] MMMM [de] YYYY H:mm',\n },\n calendar: {\n sameDay: function () {\n return '[hoy a la' + (this.hours() !== 1 ? 's' : '') + '] LT';\n },\n nextDay: function () {\n return '[mañana a la' + (this.hours() !== 1 ? 's' : '') + '] LT';\n },\n nextWeek: function () {\n return 'dddd [a la' + (this.hours() !== 1 ? 's' : '') + '] LT';\n },\n lastDay: function () {\n return '[ayer a la' + (this.hours() !== 1 ? 's' : '') + '] LT';\n },\n lastWeek: function () {\n return (\n '[el] dddd [pasado a la' +\n (this.hours() !== 1 ? 's' : '') +\n '] LT'\n );\n },\n sameElse: 'L',\n },\n relativeTime: {\n future: 'en %s',\n past: 'hace %s',\n s: 'unos segundos',\n ss: '%d segundos',\n m: 'un minuto',\n mm: '%d minutos',\n h: 'una hora',\n hh: '%d horas',\n d: 'un día',\n dd: '%d días',\n w: 'una semana',\n ww: '%d semanas',\n M: 'un mes',\n MM: '%d meses',\n y: 'un año',\n yy: '%d años',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}º/,\n ordinal: '%dº',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n invalidDate: 'Fecha inválida',\n });\n\n return es;\n\n})));\n","//! moment.js locale configuration\n//! locale : French [fr]\n//! author : John Fischer : https://github.com/jfroffice\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var monthsStrictRegex =\n /^(janvier|février|mars|avril|mai|juin|juillet|août|septembre|octobre|novembre|décembre)/i,\n monthsShortStrictRegex =\n /(janv\\.?|févr\\.?|mars|avr\\.?|mai|juin|juil\\.?|août|sept\\.?|oct\\.?|nov\\.?|déc\\.?)/i,\n monthsRegex =\n /(janv\\.?|févr\\.?|mars|avr\\.?|mai|juin|juil\\.?|août|sept\\.?|oct\\.?|nov\\.?|déc\\.?|janvier|février|mars|avril|mai|juin|juillet|août|septembre|octobre|novembre|décembre)/i,\n monthsParse = [\n /^janv/i,\n /^févr/i,\n /^mars/i,\n /^avr/i,\n /^mai/i,\n /^juin/i,\n /^juil/i,\n /^août/i,\n /^sept/i,\n /^oct/i,\n /^nov/i,\n /^déc/i,\n ];\n\n var fr = moment.defineLocale('fr', {\n months: 'janvier_février_mars_avril_mai_juin_juillet_août_septembre_octobre_novembre_décembre'.split(\n '_'\n ),\n monthsShort:\n 'janv._févr._mars_avr._mai_juin_juil._août_sept._oct._nov._déc.'.split(\n '_'\n ),\n monthsRegex: monthsRegex,\n monthsShortRegex: monthsRegex,\n monthsStrictRegex: monthsStrictRegex,\n monthsShortStrictRegex: monthsShortStrictRegex,\n monthsParse: monthsParse,\n longMonthsParse: monthsParse,\n shortMonthsParse: monthsParse,\n weekdays: 'dimanche_lundi_mardi_mercredi_jeudi_vendredi_samedi'.split('_'),\n weekdaysShort: 'dim._lun._mar._mer._jeu._ven._sam.'.split('_'),\n weekdaysMin: 'di_lu_ma_me_je_ve_sa'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[Aujourd’hui à] LT',\n nextDay: '[Demain à] LT',\n nextWeek: 'dddd [à] LT',\n lastDay: '[Hier à] LT',\n lastWeek: 'dddd [dernier à] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'dans %s',\n past: 'il y a %s',\n s: 'quelques secondes',\n ss: '%d secondes',\n m: 'une minute',\n mm: '%d minutes',\n h: 'une heure',\n hh: '%d heures',\n d: 'un jour',\n dd: '%d jours',\n w: 'une semaine',\n ww: '%d semaines',\n M: 'un mois',\n MM: '%d mois',\n y: 'un an',\n yy: '%d ans',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(er|)/,\n ordinal: function (number, period) {\n switch (period) {\n // TODO: Return 'e' when day of month > 1. Move this case inside\n // block for masculine words below.\n // See https://github.com/moment/moment/issues/3375\n case 'D':\n return number + (number === 1 ? 'er' : '');\n\n // Words with masculine grammatical gender: mois, trimestre, jour\n default:\n case 'M':\n case 'Q':\n case 'DDD':\n case 'd':\n return number + (number === 1 ? 'er' : 'e');\n\n // Words with feminine grammatical gender: semaine\n case 'w':\n case 'W':\n return number + (number === 1 ? 're' : 'e');\n }\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return fr;\n\n})));\n","//! moment.js locale configuration\n//! locale : Italian [it]\n//! author : Lorenzo : https://github.com/aliem\n//! author: Mattia Larentis: https://github.com/nostalgiaz\n//! author: Marco : https://github.com/Manfre98\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var it = moment.defineLocale('it', {\n months: 'gennaio_febbraio_marzo_aprile_maggio_giugno_luglio_agosto_settembre_ottobre_novembre_dicembre'.split(\n '_'\n ),\n monthsShort: 'gen_feb_mar_apr_mag_giu_lug_ago_set_ott_nov_dic'.split('_'),\n weekdays: 'domenica_lunedì_martedì_mercoledì_giovedì_venerdì_sabato'.split(\n '_'\n ),\n weekdaysShort: 'dom_lun_mar_mer_gio_ven_sab'.split('_'),\n weekdaysMin: 'do_lu_ma_me_gi_ve_sa'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: function () {\n return (\n '[Oggi a' +\n (this.hours() > 1 ? 'lle ' : this.hours() === 0 ? ' ' : \"ll'\") +\n ']LT'\n );\n },\n nextDay: function () {\n return (\n '[Domani a' +\n (this.hours() > 1 ? 'lle ' : this.hours() === 0 ? ' ' : \"ll'\") +\n ']LT'\n );\n },\n nextWeek: function () {\n return (\n 'dddd [a' +\n (this.hours() > 1 ? 'lle ' : this.hours() === 0 ? ' ' : \"ll'\") +\n ']LT'\n );\n },\n lastDay: function () {\n return (\n '[Ieri a' +\n (this.hours() > 1 ? 'lle ' : this.hours() === 0 ? ' ' : \"ll'\") +\n ']LT'\n );\n },\n lastWeek: function () {\n switch (this.day()) {\n case 0:\n return (\n '[La scorsa] dddd [a' +\n (this.hours() > 1\n ? 'lle '\n : this.hours() === 0\n ? ' '\n : \"ll'\") +\n ']LT'\n );\n default:\n return (\n '[Lo scorso] dddd [a' +\n (this.hours() > 1\n ? 'lle '\n : this.hours() === 0\n ? ' '\n : \"ll'\") +\n ']LT'\n );\n }\n },\n sameElse: 'L',\n },\n relativeTime: {\n future: 'tra %s',\n past: '%s fa',\n s: 'alcuni secondi',\n ss: '%d secondi',\n m: 'un minuto',\n mm: '%d minuti',\n h: \"un'ora\",\n hh: '%d ore',\n d: 'un giorno',\n dd: '%d giorni',\n w: 'una settimana',\n ww: '%d settimane',\n M: 'un mese',\n MM: '%d mesi',\n y: 'un anno',\n yy: '%d anni',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}º/,\n ordinal: '%dº',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return it;\n\n})));\n","//! moment.js locale configuration\n//! locale : Portuguese [pt]\n//! author : Jefferson : https://github.com/jalex79\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var pt = moment.defineLocale('pt', {\n months: 'janeiro_fevereiro_março_abril_maio_junho_julho_agosto_setembro_outubro_novembro_dezembro'.split(\n '_'\n ),\n monthsShort: 'jan_fev_mar_abr_mai_jun_jul_ago_set_out_nov_dez'.split('_'),\n weekdays:\n 'Domingo_Segunda-feira_Terça-feira_Quarta-feira_Quinta-feira_Sexta-feira_Sábado'.split(\n '_'\n ),\n weekdaysShort: 'Dom_Seg_Ter_Qua_Qui_Sex_Sáb'.split('_'),\n weekdaysMin: 'Do_2ª_3ª_4ª_5ª_6ª_Sá'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D [de] MMMM [de] YYYY',\n LLL: 'D [de] MMMM [de] YYYY HH:mm',\n LLLL: 'dddd, D [de] MMMM [de] YYYY HH:mm',\n },\n calendar: {\n sameDay: '[Hoje às] LT',\n nextDay: '[Amanhã às] LT',\n nextWeek: 'dddd [às] LT',\n lastDay: '[Ontem às] LT',\n lastWeek: function () {\n return this.day() === 0 || this.day() === 6\n ? '[Último] dddd [às] LT' // Saturday + Sunday\n : '[Última] dddd [às] LT'; // Monday - Friday\n },\n sameElse: 'L',\n },\n relativeTime: {\n future: 'em %s',\n past: 'há %s',\n s: 'segundos',\n ss: '%d segundos',\n m: 'um minuto',\n mm: '%d minutos',\n h: 'uma hora',\n hh: '%d horas',\n d: 'um dia',\n dd: '%d dias',\n w: 'uma semana',\n ww: '%d semanas',\n M: 'um mês',\n MM: '%d meses',\n y: 'um ano',\n yy: '%d anos',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}º/,\n ordinal: '%dº',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return pt;\n\n})));\n","var map = {\n\t\"./de\": 9740,\n\t\"./de.js\": 9740,\n\t\"./es\": 5655,\n\t\"./es.js\": 5655,\n\t\"./fr\": 4470,\n\t\"./fr.js\": 4470,\n\t\"./it\": 626,\n\t\"./it.js\": 626,\n\t\"./pt\": 9520,\n\t\"./pt.js\": 9520\n};\n\n\nfunction webpackContext(req) {\n\tvar id = webpackContextResolve(req);\n\treturn __webpack_require__(id);\n}\nfunction webpackContextResolve(req) {\n\tif(!__webpack_require__.o(map, req)) {\n\t\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\t\te.code = 'MODULE_NOT_FOUND';\n\t\tthrow e;\n\t}\n\treturn map[req];\n}\nwebpackContext.keys = function webpackContextKeys() {\n\treturn Object.keys(map);\n};\nwebpackContext.resolve = webpackContextResolve;\nmodule.exports = webpackContext;\nwebpackContext.id = 5323;","//! moment.js\n//! version : 2.29.4\n//! authors : Tim Wood, Iskren Chernev, Moment.js contributors\n//! license : MIT\n//! momentjs.com\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :\n typeof define === 'function' && define.amd ? define(factory) :\n global.moment = factory()\n}(this, (function () { 'use strict';\n\n var hookCallback;\n\n function hooks() {\n return hookCallback.apply(null, arguments);\n }\n\n // This is done to register the method called with moment()\n // without creating circular dependencies.\n function setHookCallback(callback) {\n hookCallback = callback;\n }\n\n function isArray(input) {\n return (\n input instanceof Array ||\n Object.prototype.toString.call(input) === '[object Array]'\n );\n }\n\n function isObject(input) {\n // IE8 will treat undefined and null as object if it wasn't for\n // input != null\n return (\n input != null &&\n Object.prototype.toString.call(input) === '[object Object]'\n );\n }\n\n function hasOwnProp(a, b) {\n return Object.prototype.hasOwnProperty.call(a, b);\n }\n\n function isObjectEmpty(obj) {\n if (Object.getOwnPropertyNames) {\n return Object.getOwnPropertyNames(obj).length === 0;\n } else {\n var k;\n for (k in obj) {\n if (hasOwnProp(obj, k)) {\n return false;\n }\n }\n return true;\n }\n }\n\n function isUndefined(input) {\n return input === void 0;\n }\n\n function isNumber(input) {\n return (\n typeof input === 'number' ||\n Object.prototype.toString.call(input) === '[object Number]'\n );\n }\n\n function isDate(input) {\n return (\n input instanceof Date ||\n Object.prototype.toString.call(input) === '[object Date]'\n );\n }\n\n function map(arr, fn) {\n var res = [],\n i,\n arrLen = arr.length;\n for (i = 0; i < arrLen; ++i) {\n res.push(fn(arr[i], i));\n }\n return res;\n }\n\n function extend(a, b) {\n for (var i in b) {\n if (hasOwnProp(b, i)) {\n a[i] = b[i];\n }\n }\n\n if (hasOwnProp(b, 'toString')) {\n a.toString = b.toString;\n }\n\n if (hasOwnProp(b, 'valueOf')) {\n a.valueOf = b.valueOf;\n }\n\n return a;\n }\n\n function createUTC(input, format, locale, strict) {\n return createLocalOrUTC(input, format, locale, strict, true).utc();\n }\n\n function defaultParsingFlags() {\n // We need to deep clone this object.\n return {\n empty: false,\n unusedTokens: [],\n unusedInput: [],\n overflow: -2,\n charsLeftOver: 0,\n nullInput: false,\n invalidEra: null,\n invalidMonth: null,\n invalidFormat: false,\n userInvalidated: false,\n iso: false,\n parsedDateParts: [],\n era: null,\n meridiem: null,\n rfc2822: false,\n weekdayMismatch: false,\n };\n }\n\n function getParsingFlags(m) {\n if (m._pf == null) {\n m._pf = defaultParsingFlags();\n }\n return m._pf;\n }\n\n var some;\n if (Array.prototype.some) {\n some = Array.prototype.some;\n } else {\n some = function (fun) {\n var t = Object(this),\n len = t.length >>> 0,\n i;\n\n for (i = 0; i < len; i++) {\n if (i in t && fun.call(this, t[i], i, t)) {\n return true;\n }\n }\n\n return false;\n };\n }\n\n function isValid(m) {\n if (m._isValid == null) {\n var flags = getParsingFlags(m),\n parsedParts = some.call(flags.parsedDateParts, function (i) {\n return i != null;\n }),\n isNowValid =\n !isNaN(m._d.getTime()) &&\n flags.overflow < 0 &&\n !flags.empty &&\n !flags.invalidEra &&\n !flags.invalidMonth &&\n !flags.invalidWeekday &&\n !flags.weekdayMismatch &&\n !flags.nullInput &&\n !flags.invalidFormat &&\n !flags.userInvalidated &&\n (!flags.meridiem || (flags.meridiem && parsedParts));\n\n if (m._strict) {\n isNowValid =\n isNowValid &&\n flags.charsLeftOver === 0 &&\n flags.unusedTokens.length === 0 &&\n flags.bigHour === undefined;\n }\n\n if (Object.isFrozen == null || !Object.isFrozen(m)) {\n m._isValid = isNowValid;\n } else {\n return isNowValid;\n }\n }\n return m._isValid;\n }\n\n function createInvalid(flags) {\n var m = createUTC(NaN);\n if (flags != null) {\n extend(getParsingFlags(m), flags);\n } else {\n getParsingFlags(m).userInvalidated = true;\n }\n\n return m;\n }\n\n // Plugins that add properties should also add the key here (null value),\n // so we can properly clone ourselves.\n var momentProperties = (hooks.momentProperties = []),\n updateInProgress = false;\n\n function copyConfig(to, from) {\n var i,\n prop,\n val,\n momentPropertiesLen = momentProperties.length;\n\n if (!isUndefined(from._isAMomentObject)) {\n to._isAMomentObject = from._isAMomentObject;\n }\n if (!isUndefined(from._i)) {\n to._i = from._i;\n }\n if (!isUndefined(from._f)) {\n to._f = from._f;\n }\n if (!isUndefined(from._l)) {\n to._l = from._l;\n }\n if (!isUndefined(from._strict)) {\n to._strict = from._strict;\n }\n if (!isUndefined(from._tzm)) {\n to._tzm = from._tzm;\n }\n if (!isUndefined(from._isUTC)) {\n to._isUTC = from._isUTC;\n }\n if (!isUndefined(from._offset)) {\n to._offset = from._offset;\n }\n if (!isUndefined(from._pf)) {\n to._pf = getParsingFlags(from);\n }\n if (!isUndefined(from._locale)) {\n to._locale = from._locale;\n }\n\n if (momentPropertiesLen > 0) {\n for (i = 0; i < momentPropertiesLen; i++) {\n prop = momentProperties[i];\n val = from[prop];\n if (!isUndefined(val)) {\n to[prop] = val;\n }\n }\n }\n\n return to;\n }\n\n // Moment prototype object\n function Moment(config) {\n copyConfig(this, config);\n this._d = new Date(config._d != null ? config._d.getTime() : NaN);\n if (!this.isValid()) {\n this._d = new Date(NaN);\n }\n // Prevent infinite loop in case updateOffset creates new moment\n // objects.\n if (updateInProgress === false) {\n updateInProgress = true;\n hooks.updateOffset(this);\n updateInProgress = false;\n }\n }\n\n function isMoment(obj) {\n return (\n obj instanceof Moment || (obj != null && obj._isAMomentObject != null)\n );\n }\n\n function warn(msg) {\n if (\n hooks.suppressDeprecationWarnings === false &&\n typeof console !== 'undefined' &&\n console.warn\n ) {\n console.warn('Deprecation warning: ' + msg);\n }\n }\n\n function deprecate(msg, fn) {\n var firstTime = true;\n\n return extend(function () {\n if (hooks.deprecationHandler != null) {\n hooks.deprecationHandler(null, msg);\n }\n if (firstTime) {\n var args = [],\n arg,\n i,\n key,\n argLen = arguments.length;\n for (i = 0; i < argLen; i++) {\n arg = '';\n if (typeof arguments[i] === 'object') {\n arg += '\\n[' + i + '] ';\n for (key in arguments[0]) {\n if (hasOwnProp(arguments[0], key)) {\n arg += key + ': ' + arguments[0][key] + ', ';\n }\n }\n arg = arg.slice(0, -2); // Remove trailing comma and space\n } else {\n arg = arguments[i];\n }\n args.push(arg);\n }\n warn(\n msg +\n '\\nArguments: ' +\n Array.prototype.slice.call(args).join('') +\n '\\n' +\n new Error().stack\n );\n firstTime = false;\n }\n return fn.apply(this, arguments);\n }, fn);\n }\n\n var deprecations = {};\n\n function deprecateSimple(name, msg) {\n if (hooks.deprecationHandler != null) {\n hooks.deprecationHandler(name, msg);\n }\n if (!deprecations[name]) {\n warn(msg);\n deprecations[name] = true;\n }\n }\n\n hooks.suppressDeprecationWarnings = false;\n hooks.deprecationHandler = null;\n\n function isFunction(input) {\n return (\n (typeof Function !== 'undefined' && input instanceof Function) ||\n Object.prototype.toString.call(input) === '[object Function]'\n );\n }\n\n function set(config) {\n var prop, i;\n for (i in config) {\n if (hasOwnProp(config, i)) {\n prop = config[i];\n if (isFunction(prop)) {\n this[i] = prop;\n } else {\n this['_' + i] = prop;\n }\n }\n }\n this._config = config;\n // Lenient ordinal parsing accepts just a number in addition to\n // number + (possibly) stuff coming from _dayOfMonthOrdinalParse.\n // TODO: Remove \"ordinalParse\" fallback in next major release.\n this._dayOfMonthOrdinalParseLenient = new RegExp(\n (this._dayOfMonthOrdinalParse.source || this._ordinalParse.source) +\n '|' +\n /\\d{1,2}/.source\n );\n }\n\n function mergeConfigs(parentConfig, childConfig) {\n var res = extend({}, parentConfig),\n prop;\n for (prop in childConfig) {\n if (hasOwnProp(childConfig, prop)) {\n if (isObject(parentConfig[prop]) && isObject(childConfig[prop])) {\n res[prop] = {};\n extend(res[prop], parentConfig[prop]);\n extend(res[prop], childConfig[prop]);\n } else if (childConfig[prop] != null) {\n res[prop] = childConfig[prop];\n } else {\n delete res[prop];\n }\n }\n }\n for (prop in parentConfig) {\n if (\n hasOwnProp(parentConfig, prop) &&\n !hasOwnProp(childConfig, prop) &&\n isObject(parentConfig[prop])\n ) {\n // make sure changes to properties don't modify parent config\n res[prop] = extend({}, res[prop]);\n }\n }\n return res;\n }\n\n function Locale(config) {\n if (config != null) {\n this.set(config);\n }\n }\n\n var keys;\n\n if (Object.keys) {\n keys = Object.keys;\n } else {\n keys = function (obj) {\n var i,\n res = [];\n for (i in obj) {\n if (hasOwnProp(obj, i)) {\n res.push(i);\n }\n }\n return res;\n };\n }\n\n var defaultCalendar = {\n sameDay: '[Today at] LT',\n nextDay: '[Tomorrow at] LT',\n nextWeek: 'dddd [at] LT',\n lastDay: '[Yesterday at] LT',\n lastWeek: '[Last] dddd [at] LT',\n sameElse: 'L',\n };\n\n function calendar(key, mom, now) {\n var output = this._calendar[key] || this._calendar['sameElse'];\n return isFunction(output) ? output.call(mom, now) : output;\n }\n\n function zeroFill(number, targetLength, forceSign) {\n var absNumber = '' + Math.abs(number),\n zerosToFill = targetLength - absNumber.length,\n sign = number >= 0;\n return (\n (sign ? (forceSign ? '+' : '') : '-') +\n Math.pow(10, Math.max(0, zerosToFill)).toString().substr(1) +\n absNumber\n );\n }\n\n var formattingTokens =\n /(\\[[^\\[]*\\])|(\\\\)?([Hh]mm(ss)?|Mo|MM?M?M?|Do|DDDo|DD?D?D?|ddd?d?|do?|w[o|w]?|W[o|W]?|Qo?|N{1,5}|YYYYYY|YYYYY|YYYY|YY|y{2,4}|yo?|gg(ggg?)?|GG(GGG?)?|e|E|a|A|hh?|HH?|kk?|mm?|ss?|S{1,9}|x|X|zz?|ZZ?|.)/g,\n localFormattingTokens = /(\\[[^\\[]*\\])|(\\\\)?(LTS|LT|LL?L?L?|l{1,4})/g,\n formatFunctions = {},\n formatTokenFunctions = {};\n\n // token: 'M'\n // padded: ['MM', 2]\n // ordinal: 'Mo'\n // callback: function () { this.month() + 1 }\n function addFormatToken(token, padded, ordinal, callback) {\n var func = callback;\n if (typeof callback === 'string') {\n func = function () {\n return this[callback]();\n };\n }\n if (token) {\n formatTokenFunctions[token] = func;\n }\n if (padded) {\n formatTokenFunctions[padded[0]] = function () {\n return zeroFill(func.apply(this, arguments), padded[1], padded[2]);\n };\n }\n if (ordinal) {\n formatTokenFunctions[ordinal] = function () {\n return this.localeData().ordinal(\n func.apply(this, arguments),\n token\n );\n };\n }\n }\n\n function removeFormattingTokens(input) {\n if (input.match(/\\[[\\s\\S]/)) {\n return input.replace(/^\\[|\\]$/g, '');\n }\n return input.replace(/\\\\/g, '');\n }\n\n function makeFormatFunction(format) {\n var array = format.match(formattingTokens),\n i,\n length;\n\n for (i = 0, length = array.length; i < length; i++) {\n if (formatTokenFunctions[array[i]]) {\n array[i] = formatTokenFunctions[array[i]];\n } else {\n array[i] = removeFormattingTokens(array[i]);\n }\n }\n\n return function (mom) {\n var output = '',\n i;\n for (i = 0; i < length; i++) {\n output += isFunction(array[i])\n ? array[i].call(mom, format)\n : array[i];\n }\n return output;\n };\n }\n\n // format date using native date object\n function formatMoment(m, format) {\n if (!m.isValid()) {\n return m.localeData().invalidDate();\n }\n\n format = expandFormat(format, m.localeData());\n formatFunctions[format] =\n formatFunctions[format] || makeFormatFunction(format);\n\n return formatFunctions[format](m);\n }\n\n function expandFormat(format, locale) {\n var i = 5;\n\n function replaceLongDateFormatTokens(input) {\n return locale.longDateFormat(input) || input;\n }\n\n localFormattingTokens.lastIndex = 0;\n while (i >= 0 && localFormattingTokens.test(format)) {\n format = format.replace(\n localFormattingTokens,\n replaceLongDateFormatTokens\n );\n localFormattingTokens.lastIndex = 0;\n i -= 1;\n }\n\n return format;\n }\n\n var defaultLongDateFormat = {\n LTS: 'h:mm:ss A',\n LT: 'h:mm A',\n L: 'MM/DD/YYYY',\n LL: 'MMMM D, YYYY',\n LLL: 'MMMM D, YYYY h:mm A',\n LLLL: 'dddd, MMMM D, YYYY h:mm A',\n };\n\n function longDateFormat(key) {\n var format = this._longDateFormat[key],\n formatUpper = this._longDateFormat[key.toUpperCase()];\n\n if (format || !formatUpper) {\n return format;\n }\n\n this._longDateFormat[key] = formatUpper\n .match(formattingTokens)\n .map(function (tok) {\n if (\n tok === 'MMMM' ||\n tok === 'MM' ||\n tok === 'DD' ||\n tok === 'dddd'\n ) {\n return tok.slice(1);\n }\n return tok;\n })\n .join('');\n\n return this._longDateFormat[key];\n }\n\n var defaultInvalidDate = 'Invalid date';\n\n function invalidDate() {\n return this._invalidDate;\n }\n\n var defaultOrdinal = '%d',\n defaultDayOfMonthOrdinalParse = /\\d{1,2}/;\n\n function ordinal(number) {\n return this._ordinal.replace('%d', number);\n }\n\n var defaultRelativeTime = {\n future: 'in %s',\n past: '%s ago',\n s: 'a few seconds',\n ss: '%d seconds',\n m: 'a minute',\n mm: '%d minutes',\n h: 'an hour',\n hh: '%d hours',\n d: 'a day',\n dd: '%d days',\n w: 'a week',\n ww: '%d weeks',\n M: 'a month',\n MM: '%d months',\n y: 'a year',\n yy: '%d years',\n };\n\n function relativeTime(number, withoutSuffix, string, isFuture) {\n var output = this._relativeTime[string];\n return isFunction(output)\n ? output(number, withoutSuffix, string, isFuture)\n : output.replace(/%d/i, number);\n }\n\n function pastFuture(diff, output) {\n var format = this._relativeTime[diff > 0 ? 'future' : 'past'];\n return isFunction(format) ? format(output) : format.replace(/%s/i, output);\n }\n\n var aliases = {};\n\n function addUnitAlias(unit, shorthand) {\n var lowerCase = unit.toLowerCase();\n aliases[lowerCase] = aliases[lowerCase + 's'] = aliases[shorthand] = unit;\n }\n\n function normalizeUnits(units) {\n return typeof units === 'string'\n ? aliases[units] || aliases[units.toLowerCase()]\n : undefined;\n }\n\n function normalizeObjectUnits(inputObject) {\n var normalizedInput = {},\n normalizedProp,\n prop;\n\n for (prop in inputObject) {\n if (hasOwnProp(inputObject, prop)) {\n normalizedProp = normalizeUnits(prop);\n if (normalizedProp) {\n normalizedInput[normalizedProp] = inputObject[prop];\n }\n }\n }\n\n return normalizedInput;\n }\n\n var priorities = {};\n\n function addUnitPriority(unit, priority) {\n priorities[unit] = priority;\n }\n\n function getPrioritizedUnits(unitsObj) {\n var units = [],\n u;\n for (u in unitsObj) {\n if (hasOwnProp(unitsObj, u)) {\n units.push({ unit: u, priority: priorities[u] });\n }\n }\n units.sort(function (a, b) {\n return a.priority - b.priority;\n });\n return units;\n }\n\n function isLeapYear(year) {\n return (year % 4 === 0 && year % 100 !== 0) || year % 400 === 0;\n }\n\n function absFloor(number) {\n if (number < 0) {\n // -0 -> 0\n return Math.ceil(number) || 0;\n } else {\n return Math.floor(number);\n }\n }\n\n function toInt(argumentForCoercion) {\n var coercedNumber = +argumentForCoercion,\n value = 0;\n\n if (coercedNumber !== 0 && isFinite(coercedNumber)) {\n value = absFloor(coercedNumber);\n }\n\n return value;\n }\n\n function makeGetSet(unit, keepTime) {\n return function (value) {\n if (value != null) {\n set$1(this, unit, value);\n hooks.updateOffset(this, keepTime);\n return this;\n } else {\n return get(this, unit);\n }\n };\n }\n\n function get(mom, unit) {\n return mom.isValid()\n ? mom._d['get' + (mom._isUTC ? 'UTC' : '') + unit]()\n : NaN;\n }\n\n function set$1(mom, unit, value) {\n if (mom.isValid() && !isNaN(value)) {\n if (\n unit === 'FullYear' &&\n isLeapYear(mom.year()) &&\n mom.month() === 1 &&\n mom.date() === 29\n ) {\n value = toInt(value);\n mom._d['set' + (mom._isUTC ? 'UTC' : '') + unit](\n value,\n mom.month(),\n daysInMonth(value, mom.month())\n );\n } else {\n mom._d['set' + (mom._isUTC ? 'UTC' : '') + unit](value);\n }\n }\n }\n\n // MOMENTS\n\n function stringGet(units) {\n units = normalizeUnits(units);\n if (isFunction(this[units])) {\n return this[units]();\n }\n return this;\n }\n\n function stringSet(units, value) {\n if (typeof units === 'object') {\n units = normalizeObjectUnits(units);\n var prioritized = getPrioritizedUnits(units),\n i,\n prioritizedLen = prioritized.length;\n for (i = 0; i < prioritizedLen; i++) {\n this[prioritized[i].unit](units[prioritized[i].unit]);\n }\n } else {\n units = normalizeUnits(units);\n if (isFunction(this[units])) {\n return this[units](value);\n }\n }\n return this;\n }\n\n var match1 = /\\d/, // 0 - 9\n match2 = /\\d\\d/, // 00 - 99\n match3 = /\\d{3}/, // 000 - 999\n match4 = /\\d{4}/, // 0000 - 9999\n match6 = /[+-]?\\d{6}/, // -999999 - 999999\n match1to2 = /\\d\\d?/, // 0 - 99\n match3to4 = /\\d\\d\\d\\d?/, // 999 - 9999\n match5to6 = /\\d\\d\\d\\d\\d\\d?/, // 99999 - 999999\n match1to3 = /\\d{1,3}/, // 0 - 999\n match1to4 = /\\d{1,4}/, // 0 - 9999\n match1to6 = /[+-]?\\d{1,6}/, // -999999 - 999999\n matchUnsigned = /\\d+/, // 0 - inf\n matchSigned = /[+-]?\\d+/, // -inf - inf\n matchOffset = /Z|[+-]\\d\\d:?\\d\\d/gi, // +00:00 -00:00 +0000 -0000 or Z\n matchShortOffset = /Z|[+-]\\d\\d(?::?\\d\\d)?/gi, // +00 -00 +00:00 -00:00 +0000 -0000 or Z\n matchTimestamp = /[+-]?\\d+(\\.\\d{1,3})?/, // 123456789 123456789.123\n // any word (or two) characters or numbers including two/three word month in arabic.\n // includes scottish gaelic two word and hyphenated months\n matchWord =\n /[0-9]{0,256}['a-z\\u00A0-\\u05FF\\u0700-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFF07\\uFF10-\\uFFEF]{1,256}|[\\u0600-\\u06FF\\/]{1,256}(\\s*?[\\u0600-\\u06FF]{1,256}){1,2}/i,\n regexes;\n\n regexes = {};\n\n function addRegexToken(token, regex, strictRegex) {\n regexes[token] = isFunction(regex)\n ? regex\n : function (isStrict, localeData) {\n return isStrict && strictRegex ? strictRegex : regex;\n };\n }\n\n function getParseRegexForToken(token, config) {\n if (!hasOwnProp(regexes, token)) {\n return new RegExp(unescapeFormat(token));\n }\n\n return regexes[token](config._strict, config._locale);\n }\n\n // Code from http://stackoverflow.com/questions/3561493/is-there-a-regexp-escape-function-in-javascript\n function unescapeFormat(s) {\n return regexEscape(\n s\n .replace('\\\\', '')\n .replace(\n /\\\\(\\[)|\\\\(\\])|\\[([^\\]\\[]*)\\]|\\\\(.)/g,\n function (matched, p1, p2, p3, p4) {\n return p1 || p2 || p3 || p4;\n }\n )\n );\n }\n\n function regexEscape(s) {\n return s.replace(/[-\\/\\\\^$*+?.()|[\\]{}]/g, '\\\\$&');\n }\n\n var tokens = {};\n\n function addParseToken(token, callback) {\n var i,\n func = callback,\n tokenLen;\n if (typeof token === 'string') {\n token = [token];\n }\n if (isNumber(callback)) {\n func = function (input, array) {\n array[callback] = toInt(input);\n };\n }\n tokenLen = token.length;\n for (i = 0; i < tokenLen; i++) {\n tokens[token[i]] = func;\n }\n }\n\n function addWeekParseToken(token, callback) {\n addParseToken(token, function (input, array, config, token) {\n config._w = config._w || {};\n callback(input, config._w, config, token);\n });\n }\n\n function addTimeToArrayFromToken(token, input, config) {\n if (input != null && hasOwnProp(tokens, token)) {\n tokens[token](input, config._a, config, token);\n }\n }\n\n var YEAR = 0,\n MONTH = 1,\n DATE = 2,\n HOUR = 3,\n MINUTE = 4,\n SECOND = 5,\n MILLISECOND = 6,\n WEEK = 7,\n WEEKDAY = 8;\n\n function mod(n, x) {\n return ((n % x) + x) % x;\n }\n\n var indexOf;\n\n if (Array.prototype.indexOf) {\n indexOf = Array.prototype.indexOf;\n } else {\n indexOf = function (o) {\n // I know\n var i;\n for (i = 0; i < this.length; ++i) {\n if (this[i] === o) {\n return i;\n }\n }\n return -1;\n };\n }\n\n function daysInMonth(year, month) {\n if (isNaN(year) || isNaN(month)) {\n return NaN;\n }\n var modMonth = mod(month, 12);\n year += (month - modMonth) / 12;\n return modMonth === 1\n ? isLeapYear(year)\n ? 29\n : 28\n : 31 - ((modMonth % 7) % 2);\n }\n\n // FORMATTING\n\n addFormatToken('M', ['MM', 2], 'Mo', function () {\n return this.month() + 1;\n });\n\n addFormatToken('MMM', 0, 0, function (format) {\n return this.localeData().monthsShort(this, format);\n });\n\n addFormatToken('MMMM', 0, 0, function (format) {\n return this.localeData().months(this, format);\n });\n\n // ALIASES\n\n addUnitAlias('month', 'M');\n\n // PRIORITY\n\n addUnitPriority('month', 8);\n\n // PARSING\n\n addRegexToken('M', match1to2);\n addRegexToken('MM', match1to2, match2);\n addRegexToken('MMM', function (isStrict, locale) {\n return locale.monthsShortRegex(isStrict);\n });\n addRegexToken('MMMM', function (isStrict, locale) {\n return locale.monthsRegex(isStrict);\n });\n\n addParseToken(['M', 'MM'], function (input, array) {\n array[MONTH] = toInt(input) - 1;\n });\n\n addParseToken(['MMM', 'MMMM'], function (input, array, config, token) {\n var month = config._locale.monthsParse(input, token, config._strict);\n // if we didn't find a month name, mark the date as invalid.\n if (month != null) {\n array[MONTH] = month;\n } else {\n getParsingFlags(config).invalidMonth = input;\n }\n });\n\n // LOCALES\n\n var defaultLocaleMonths =\n 'January_February_March_April_May_June_July_August_September_October_November_December'.split(\n '_'\n ),\n defaultLocaleMonthsShort =\n 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'),\n MONTHS_IN_FORMAT = /D[oD]?(\\[[^\\[\\]]*\\]|\\s)+MMMM?/,\n defaultMonthsShortRegex = matchWord,\n defaultMonthsRegex = matchWord;\n\n function localeMonths(m, format) {\n if (!m) {\n return isArray(this._months)\n ? this._months\n : this._months['standalone'];\n }\n return isArray(this._months)\n ? this._months[m.month()]\n : this._months[\n (this._months.isFormat || MONTHS_IN_FORMAT).test(format)\n ? 'format'\n : 'standalone'\n ][m.month()];\n }\n\n function localeMonthsShort(m, format) {\n if (!m) {\n return isArray(this._monthsShort)\n ? this._monthsShort\n : this._monthsShort['standalone'];\n }\n return isArray(this._monthsShort)\n ? this._monthsShort[m.month()]\n : this._monthsShort[\n MONTHS_IN_FORMAT.test(format) ? 'format' : 'standalone'\n ][m.month()];\n }\n\n function handleStrictParse(monthName, format, strict) {\n var i,\n ii,\n mom,\n llc = monthName.toLocaleLowerCase();\n if (!this._monthsParse) {\n // this is not used\n this._monthsParse = [];\n this._longMonthsParse = [];\n this._shortMonthsParse = [];\n for (i = 0; i < 12; ++i) {\n mom = createUTC([2000, i]);\n this._shortMonthsParse[i] = this.monthsShort(\n mom,\n ''\n ).toLocaleLowerCase();\n this._longMonthsParse[i] = this.months(mom, '').toLocaleLowerCase();\n }\n }\n\n if (strict) {\n if (format === 'MMM') {\n ii = indexOf.call(this._shortMonthsParse, llc);\n return ii !== -1 ? ii : null;\n } else {\n ii = indexOf.call(this._longMonthsParse, llc);\n return ii !== -1 ? ii : null;\n }\n } else {\n if (format === 'MMM') {\n ii = indexOf.call(this._shortMonthsParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf.call(this._longMonthsParse, llc);\n return ii !== -1 ? ii : null;\n } else {\n ii = indexOf.call(this._longMonthsParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf.call(this._shortMonthsParse, llc);\n return ii !== -1 ? ii : null;\n }\n }\n }\n\n function localeMonthsParse(monthName, format, strict) {\n var i, mom, regex;\n\n if (this._monthsParseExact) {\n return handleStrictParse.call(this, monthName, format, strict);\n }\n\n if (!this._monthsParse) {\n this._monthsParse = [];\n this._longMonthsParse = [];\n this._shortMonthsParse = [];\n }\n\n // TODO: add sorting\n // Sorting makes sure if one month (or abbr) is a prefix of another\n // see sorting in computeMonthsParse\n for (i = 0; i < 12; i++) {\n // make the regex if we don't have it already\n mom = createUTC([2000, i]);\n if (strict && !this._longMonthsParse[i]) {\n this._longMonthsParse[i] = new RegExp(\n '^' + this.months(mom, '').replace('.', '') + '$',\n 'i'\n );\n this._shortMonthsParse[i] = new RegExp(\n '^' + this.monthsShort(mom, '').replace('.', '') + '$',\n 'i'\n );\n }\n if (!strict && !this._monthsParse[i]) {\n regex =\n '^' + this.months(mom, '') + '|^' + this.monthsShort(mom, '');\n this._monthsParse[i] = new RegExp(regex.replace('.', ''), 'i');\n }\n // test the regex\n if (\n strict &&\n format === 'MMMM' &&\n this._longMonthsParse[i].test(monthName)\n ) {\n return i;\n } else if (\n strict &&\n format === 'MMM' &&\n this._shortMonthsParse[i].test(monthName)\n ) {\n return i;\n } else if (!strict && this._monthsParse[i].test(monthName)) {\n return i;\n }\n }\n }\n\n // MOMENTS\n\n function setMonth(mom, value) {\n var dayOfMonth;\n\n if (!mom.isValid()) {\n // No op\n return mom;\n }\n\n if (typeof value === 'string') {\n if (/^\\d+$/.test(value)) {\n value = toInt(value);\n } else {\n value = mom.localeData().monthsParse(value);\n // TODO: Another silent failure?\n if (!isNumber(value)) {\n return mom;\n }\n }\n }\n\n dayOfMonth = Math.min(mom.date(), daysInMonth(mom.year(), value));\n mom._d['set' + (mom._isUTC ? 'UTC' : '') + 'Month'](value, dayOfMonth);\n return mom;\n }\n\n function getSetMonth(value) {\n if (value != null) {\n setMonth(this, value);\n hooks.updateOffset(this, true);\n return this;\n } else {\n return get(this, 'Month');\n }\n }\n\n function getDaysInMonth() {\n return daysInMonth(this.year(), this.month());\n }\n\n function monthsShortRegex(isStrict) {\n if (this._monthsParseExact) {\n if (!hasOwnProp(this, '_monthsRegex')) {\n computeMonthsParse.call(this);\n }\n if (isStrict) {\n return this._monthsShortStrictRegex;\n } else {\n return this._monthsShortRegex;\n }\n } else {\n if (!hasOwnProp(this, '_monthsShortRegex')) {\n this._monthsShortRegex = defaultMonthsShortRegex;\n }\n return this._monthsShortStrictRegex && isStrict\n ? this._monthsShortStrictRegex\n : this._monthsShortRegex;\n }\n }\n\n function monthsRegex(isStrict) {\n if (this._monthsParseExact) {\n if (!hasOwnProp(this, '_monthsRegex')) {\n computeMonthsParse.call(this);\n }\n if (isStrict) {\n return this._monthsStrictRegex;\n } else {\n return this._monthsRegex;\n }\n } else {\n if (!hasOwnProp(this, '_monthsRegex')) {\n this._monthsRegex = defaultMonthsRegex;\n }\n return this._monthsStrictRegex && isStrict\n ? this._monthsStrictRegex\n : this._monthsRegex;\n }\n }\n\n function computeMonthsParse() {\n function cmpLenRev(a, b) {\n return b.length - a.length;\n }\n\n var shortPieces = [],\n longPieces = [],\n mixedPieces = [],\n i,\n mom;\n for (i = 0; i < 12; i++) {\n // make the regex if we don't have it already\n mom = createUTC([2000, i]);\n shortPieces.push(this.monthsShort(mom, ''));\n longPieces.push(this.months(mom, ''));\n mixedPieces.push(this.months(mom, ''));\n mixedPieces.push(this.monthsShort(mom, ''));\n }\n // Sorting makes sure if one month (or abbr) is a prefix of another it\n // will match the longer piece.\n shortPieces.sort(cmpLenRev);\n longPieces.sort(cmpLenRev);\n mixedPieces.sort(cmpLenRev);\n for (i = 0; i < 12; i++) {\n shortPieces[i] = regexEscape(shortPieces[i]);\n longPieces[i] = regexEscape(longPieces[i]);\n }\n for (i = 0; i < 24; i++) {\n mixedPieces[i] = regexEscape(mixedPieces[i]);\n }\n\n this._monthsRegex = new RegExp('^(' + mixedPieces.join('|') + ')', 'i');\n this._monthsShortRegex = this._monthsRegex;\n this._monthsStrictRegex = new RegExp(\n '^(' + longPieces.join('|') + ')',\n 'i'\n );\n this._monthsShortStrictRegex = new RegExp(\n '^(' + shortPieces.join('|') + ')',\n 'i'\n );\n }\n\n // FORMATTING\n\n addFormatToken('Y', 0, 0, function () {\n var y = this.year();\n return y <= 9999 ? zeroFill(y, 4) : '+' + y;\n });\n\n addFormatToken(0, ['YY', 2], 0, function () {\n return this.year() % 100;\n });\n\n addFormatToken(0, ['YYYY', 4], 0, 'year');\n addFormatToken(0, ['YYYYY', 5], 0, 'year');\n addFormatToken(0, ['YYYYYY', 6, true], 0, 'year');\n\n // ALIASES\n\n addUnitAlias('year', 'y');\n\n // PRIORITIES\n\n addUnitPriority('year', 1);\n\n // PARSING\n\n addRegexToken('Y', matchSigned);\n addRegexToken('YY', match1to2, match2);\n addRegexToken('YYYY', match1to4, match4);\n addRegexToken('YYYYY', match1to6, match6);\n addRegexToken('YYYYYY', match1to6, match6);\n\n addParseToken(['YYYYY', 'YYYYYY'], YEAR);\n addParseToken('YYYY', function (input, array) {\n array[YEAR] =\n input.length === 2 ? hooks.parseTwoDigitYear(input) : toInt(input);\n });\n addParseToken('YY', function (input, array) {\n array[YEAR] = hooks.parseTwoDigitYear(input);\n });\n addParseToken('Y', function (input, array) {\n array[YEAR] = parseInt(input, 10);\n });\n\n // HELPERS\n\n function daysInYear(year) {\n return isLeapYear(year) ? 366 : 365;\n }\n\n // HOOKS\n\n hooks.parseTwoDigitYear = function (input) {\n return toInt(input) + (toInt(input) > 68 ? 1900 : 2000);\n };\n\n // MOMENTS\n\n var getSetYear = makeGetSet('FullYear', true);\n\n function getIsLeapYear() {\n return isLeapYear(this.year());\n }\n\n function createDate(y, m, d, h, M, s, ms) {\n // can't just apply() to create a date:\n // https://stackoverflow.com/q/181348\n var date;\n // the date constructor remaps years 0-99 to 1900-1999\n if (y < 100 && y >= 0) {\n // preserve leap years using a full 400 year cycle, then reset\n date = new Date(y + 400, m, d, h, M, s, ms);\n if (isFinite(date.getFullYear())) {\n date.setFullYear(y);\n }\n } else {\n date = new Date(y, m, d, h, M, s, ms);\n }\n\n return date;\n }\n\n function createUTCDate(y) {\n var date, args;\n // the Date.UTC function remaps years 0-99 to 1900-1999\n if (y < 100 && y >= 0) {\n args = Array.prototype.slice.call(arguments);\n // preserve leap years using a full 400 year cycle, then reset\n args[0] = y + 400;\n date = new Date(Date.UTC.apply(null, args));\n if (isFinite(date.getUTCFullYear())) {\n date.setUTCFullYear(y);\n }\n } else {\n date = new Date(Date.UTC.apply(null, arguments));\n }\n\n return date;\n }\n\n // start-of-first-week - start-of-year\n function firstWeekOffset(year, dow, doy) {\n var // first-week day -- which january is always in the first week (4 for iso, 1 for other)\n fwd = 7 + dow - doy,\n // first-week day local weekday -- which local weekday is fwd\n fwdlw = (7 + createUTCDate(year, 0, fwd).getUTCDay() - dow) % 7;\n\n return -fwdlw + fwd - 1;\n }\n\n // https://en.wikipedia.org/wiki/ISO_week_date#Calculating_a_date_given_the_year.2C_week_number_and_weekday\n function dayOfYearFromWeeks(year, week, weekday, dow, doy) {\n var localWeekday = (7 + weekday - dow) % 7,\n weekOffset = firstWeekOffset(year, dow, doy),\n dayOfYear = 1 + 7 * (week - 1) + localWeekday + weekOffset,\n resYear,\n resDayOfYear;\n\n if (dayOfYear <= 0) {\n resYear = year - 1;\n resDayOfYear = daysInYear(resYear) + dayOfYear;\n } else if (dayOfYear > daysInYear(year)) {\n resYear = year + 1;\n resDayOfYear = dayOfYear - daysInYear(year);\n } else {\n resYear = year;\n resDayOfYear = dayOfYear;\n }\n\n return {\n year: resYear,\n dayOfYear: resDayOfYear,\n };\n }\n\n function weekOfYear(mom, dow, doy) {\n var weekOffset = firstWeekOffset(mom.year(), dow, doy),\n week = Math.floor((mom.dayOfYear() - weekOffset - 1) / 7) + 1,\n resWeek,\n resYear;\n\n if (week < 1) {\n resYear = mom.year() - 1;\n resWeek = week + weeksInYear(resYear, dow, doy);\n } else if (week > weeksInYear(mom.year(), dow, doy)) {\n resWeek = week - weeksInYear(mom.year(), dow, doy);\n resYear = mom.year() + 1;\n } else {\n resYear = mom.year();\n resWeek = week;\n }\n\n return {\n week: resWeek,\n year: resYear,\n };\n }\n\n function weeksInYear(year, dow, doy) {\n var weekOffset = firstWeekOffset(year, dow, doy),\n weekOffsetNext = firstWeekOffset(year + 1, dow, doy);\n return (daysInYear(year) - weekOffset + weekOffsetNext) / 7;\n }\n\n // FORMATTING\n\n addFormatToken('w', ['ww', 2], 'wo', 'week');\n addFormatToken('W', ['WW', 2], 'Wo', 'isoWeek');\n\n // ALIASES\n\n addUnitAlias('week', 'w');\n addUnitAlias('isoWeek', 'W');\n\n // PRIORITIES\n\n addUnitPriority('week', 5);\n addUnitPriority('isoWeek', 5);\n\n // PARSING\n\n addRegexToken('w', match1to2);\n addRegexToken('ww', match1to2, match2);\n addRegexToken('W', match1to2);\n addRegexToken('WW', match1to2, match2);\n\n addWeekParseToken(\n ['w', 'ww', 'W', 'WW'],\n function (input, week, config, token) {\n week[token.substr(0, 1)] = toInt(input);\n }\n );\n\n // HELPERS\n\n // LOCALES\n\n function localeWeek(mom) {\n return weekOfYear(mom, this._week.dow, this._week.doy).week;\n }\n\n var defaultLocaleWeek = {\n dow: 0, // Sunday is the first day of the week.\n doy: 6, // The week that contains Jan 6th is the first week of the year.\n };\n\n function localeFirstDayOfWeek() {\n return this._week.dow;\n }\n\n function localeFirstDayOfYear() {\n return this._week.doy;\n }\n\n // MOMENTS\n\n function getSetWeek(input) {\n var week = this.localeData().week(this);\n return input == null ? week : this.add((input - week) * 7, 'd');\n }\n\n function getSetISOWeek(input) {\n var week = weekOfYear(this, 1, 4).week;\n return input == null ? week : this.add((input - week) * 7, 'd');\n }\n\n // FORMATTING\n\n addFormatToken('d', 0, 'do', 'day');\n\n addFormatToken('dd', 0, 0, function (format) {\n return this.localeData().weekdaysMin(this, format);\n });\n\n addFormatToken('ddd', 0, 0, function (format) {\n return this.localeData().weekdaysShort(this, format);\n });\n\n addFormatToken('dddd', 0, 0, function (format) {\n return this.localeData().weekdays(this, format);\n });\n\n addFormatToken('e', 0, 0, 'weekday');\n addFormatToken('E', 0, 0, 'isoWeekday');\n\n // ALIASES\n\n addUnitAlias('day', 'd');\n addUnitAlias('weekday', 'e');\n addUnitAlias('isoWeekday', 'E');\n\n // PRIORITY\n addUnitPriority('day', 11);\n addUnitPriority('weekday', 11);\n addUnitPriority('isoWeekday', 11);\n\n // PARSING\n\n addRegexToken('d', match1to2);\n addRegexToken('e', match1to2);\n addRegexToken('E', match1to2);\n addRegexToken('dd', function (isStrict, locale) {\n return locale.weekdaysMinRegex(isStrict);\n });\n addRegexToken('ddd', function (isStrict, locale) {\n return locale.weekdaysShortRegex(isStrict);\n });\n addRegexToken('dddd', function (isStrict, locale) {\n return locale.weekdaysRegex(isStrict);\n });\n\n addWeekParseToken(['dd', 'ddd', 'dddd'], function (input, week, config, token) {\n var weekday = config._locale.weekdaysParse(input, token, config._strict);\n // if we didn't get a weekday name, mark the date as invalid\n if (weekday != null) {\n week.d = weekday;\n } else {\n getParsingFlags(config).invalidWeekday = input;\n }\n });\n\n addWeekParseToken(['d', 'e', 'E'], function (input, week, config, token) {\n week[token] = toInt(input);\n });\n\n // HELPERS\n\n function parseWeekday(input, locale) {\n if (typeof input !== 'string') {\n return input;\n }\n\n if (!isNaN(input)) {\n return parseInt(input, 10);\n }\n\n input = locale.weekdaysParse(input);\n if (typeof input === 'number') {\n return input;\n }\n\n return null;\n }\n\n function parseIsoWeekday(input, locale) {\n if (typeof input === 'string') {\n return locale.weekdaysParse(input) % 7 || 7;\n }\n return isNaN(input) ? null : input;\n }\n\n // LOCALES\n function shiftWeekdays(ws, n) {\n return ws.slice(n, 7).concat(ws.slice(0, n));\n }\n\n var defaultLocaleWeekdays =\n 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split('_'),\n defaultLocaleWeekdaysShort = 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),\n defaultLocaleWeekdaysMin = 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),\n defaultWeekdaysRegex = matchWord,\n defaultWeekdaysShortRegex = matchWord,\n defaultWeekdaysMinRegex = matchWord;\n\n function localeWeekdays(m, format) {\n var weekdays = isArray(this._weekdays)\n ? this._weekdays\n : this._weekdays[\n m && m !== true && this._weekdays.isFormat.test(format)\n ? 'format'\n : 'standalone'\n ];\n return m === true\n ? shiftWeekdays(weekdays, this._week.dow)\n : m\n ? weekdays[m.day()]\n : weekdays;\n }\n\n function localeWeekdaysShort(m) {\n return m === true\n ? shiftWeekdays(this._weekdaysShort, this._week.dow)\n : m\n ? this._weekdaysShort[m.day()]\n : this._weekdaysShort;\n }\n\n function localeWeekdaysMin(m) {\n return m === true\n ? shiftWeekdays(this._weekdaysMin, this._week.dow)\n : m\n ? this._weekdaysMin[m.day()]\n : this._weekdaysMin;\n }\n\n function handleStrictParse$1(weekdayName, format, strict) {\n var i,\n ii,\n mom,\n llc = weekdayName.toLocaleLowerCase();\n if (!this._weekdaysParse) {\n this._weekdaysParse = [];\n this._shortWeekdaysParse = [];\n this._minWeekdaysParse = [];\n\n for (i = 0; i < 7; ++i) {\n mom = createUTC([2000, 1]).day(i);\n this._minWeekdaysParse[i] = this.weekdaysMin(\n mom,\n ''\n ).toLocaleLowerCase();\n this._shortWeekdaysParse[i] = this.weekdaysShort(\n mom,\n ''\n ).toLocaleLowerCase();\n this._weekdaysParse[i] = this.weekdays(mom, '').toLocaleLowerCase();\n }\n }\n\n if (strict) {\n if (format === 'dddd') {\n ii = indexOf.call(this._weekdaysParse, llc);\n return ii !== -1 ? ii : null;\n } else if (format === 'ddd') {\n ii = indexOf.call(this._shortWeekdaysParse, llc);\n return ii !== -1 ? ii : null;\n } else {\n ii = indexOf.call(this._minWeekdaysParse, llc);\n return ii !== -1 ? ii : null;\n }\n } else {\n if (format === 'dddd') {\n ii = indexOf.call(this._weekdaysParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf.call(this._shortWeekdaysParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf.call(this._minWeekdaysParse, llc);\n return ii !== -1 ? ii : null;\n } else if (format === 'ddd') {\n ii = indexOf.call(this._shortWeekdaysParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf.call(this._weekdaysParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf.call(this._minWeekdaysParse, llc);\n return ii !== -1 ? ii : null;\n } else {\n ii = indexOf.call(this._minWeekdaysParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf.call(this._weekdaysParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf.call(this._shortWeekdaysParse, llc);\n return ii !== -1 ? ii : null;\n }\n }\n }\n\n function localeWeekdaysParse(weekdayName, format, strict) {\n var i, mom, regex;\n\n if (this._weekdaysParseExact) {\n return handleStrictParse$1.call(this, weekdayName, format, strict);\n }\n\n if (!this._weekdaysParse) {\n this._weekdaysParse = [];\n this._minWeekdaysParse = [];\n this._shortWeekdaysParse = [];\n this._fullWeekdaysParse = [];\n }\n\n for (i = 0; i < 7; i++) {\n // make the regex if we don't have it already\n\n mom = createUTC([2000, 1]).day(i);\n if (strict && !this._fullWeekdaysParse[i]) {\n this._fullWeekdaysParse[i] = new RegExp(\n '^' + this.weekdays(mom, '').replace('.', '\\\\.?') + '$',\n 'i'\n );\n this._shortWeekdaysParse[i] = new RegExp(\n '^' + this.weekdaysShort(mom, '').replace('.', '\\\\.?') + '$',\n 'i'\n );\n this._minWeekdaysParse[i] = new RegExp(\n '^' + this.weekdaysMin(mom, '').replace('.', '\\\\.?') + '$',\n 'i'\n );\n }\n if (!this._weekdaysParse[i]) {\n regex =\n '^' +\n this.weekdays(mom, '') +\n '|^' +\n this.weekdaysShort(mom, '') +\n '|^' +\n this.weekdaysMin(mom, '');\n this._weekdaysParse[i] = new RegExp(regex.replace('.', ''), 'i');\n }\n // test the regex\n if (\n strict &&\n format === 'dddd' &&\n this._fullWeekdaysParse[i].test(weekdayName)\n ) {\n return i;\n } else if (\n strict &&\n format === 'ddd' &&\n this._shortWeekdaysParse[i].test(weekdayName)\n ) {\n return i;\n } else if (\n strict &&\n format === 'dd' &&\n this._minWeekdaysParse[i].test(weekdayName)\n ) {\n return i;\n } else if (!strict && this._weekdaysParse[i].test(weekdayName)) {\n return i;\n }\n }\n }\n\n // MOMENTS\n\n function getSetDayOfWeek(input) {\n if (!this.isValid()) {\n return input != null ? this : NaN;\n }\n var day = this._isUTC ? this._d.getUTCDay() : this._d.getDay();\n if (input != null) {\n input = parseWeekday(input, this.localeData());\n return this.add(input - day, 'd');\n } else {\n return day;\n }\n }\n\n function getSetLocaleDayOfWeek(input) {\n if (!this.isValid()) {\n return input != null ? this : NaN;\n }\n var weekday = (this.day() + 7 - this.localeData()._week.dow) % 7;\n return input == null ? weekday : this.add(input - weekday, 'd');\n }\n\n function getSetISODayOfWeek(input) {\n if (!this.isValid()) {\n return input != null ? this : NaN;\n }\n\n // behaves the same as moment#day except\n // as a getter, returns 7 instead of 0 (1-7 range instead of 0-6)\n // as a setter, sunday should belong to the previous week.\n\n if (input != null) {\n var weekday = parseIsoWeekday(input, this.localeData());\n return this.day(this.day() % 7 ? weekday : weekday - 7);\n } else {\n return this.day() || 7;\n }\n }\n\n function weekdaysRegex(isStrict) {\n if (this._weekdaysParseExact) {\n if (!hasOwnProp(this, '_weekdaysRegex')) {\n computeWeekdaysParse.call(this);\n }\n if (isStrict) {\n return this._weekdaysStrictRegex;\n } else {\n return this._weekdaysRegex;\n }\n } else {\n if (!hasOwnProp(this, '_weekdaysRegex')) {\n this._weekdaysRegex = defaultWeekdaysRegex;\n }\n return this._weekdaysStrictRegex && isStrict\n ? this._weekdaysStrictRegex\n : this._weekdaysRegex;\n }\n }\n\n function weekdaysShortRegex(isStrict) {\n if (this._weekdaysParseExact) {\n if (!hasOwnProp(this, '_weekdaysRegex')) {\n computeWeekdaysParse.call(this);\n }\n if (isStrict) {\n return this._weekdaysShortStrictRegex;\n } else {\n return this._weekdaysShortRegex;\n }\n } else {\n if (!hasOwnProp(this, '_weekdaysShortRegex')) {\n this._weekdaysShortRegex = defaultWeekdaysShortRegex;\n }\n return this._weekdaysShortStrictRegex && isStrict\n ? this._weekdaysShortStrictRegex\n : this._weekdaysShortRegex;\n }\n }\n\n function weekdaysMinRegex(isStrict) {\n if (this._weekdaysParseExact) {\n if (!hasOwnProp(this, '_weekdaysRegex')) {\n computeWeekdaysParse.call(this);\n }\n if (isStrict) {\n return this._weekdaysMinStrictRegex;\n } else {\n return this._weekdaysMinRegex;\n }\n } else {\n if (!hasOwnProp(this, '_weekdaysMinRegex')) {\n this._weekdaysMinRegex = defaultWeekdaysMinRegex;\n }\n return this._weekdaysMinStrictRegex && isStrict\n ? this._weekdaysMinStrictRegex\n : this._weekdaysMinRegex;\n }\n }\n\n function computeWeekdaysParse() {\n function cmpLenRev(a, b) {\n return b.length - a.length;\n }\n\n var minPieces = [],\n shortPieces = [],\n longPieces = [],\n mixedPieces = [],\n i,\n mom,\n minp,\n shortp,\n longp;\n for (i = 0; i < 7; i++) {\n // make the regex if we don't have it already\n mom = createUTC([2000, 1]).day(i);\n minp = regexEscape(this.weekdaysMin(mom, ''));\n shortp = regexEscape(this.weekdaysShort(mom, ''));\n longp = regexEscape(this.weekdays(mom, ''));\n minPieces.push(minp);\n shortPieces.push(shortp);\n longPieces.push(longp);\n mixedPieces.push(minp);\n mixedPieces.push(shortp);\n mixedPieces.push(longp);\n }\n // Sorting makes sure if one weekday (or abbr) is a prefix of another it\n // will match the longer piece.\n minPieces.sort(cmpLenRev);\n shortPieces.sort(cmpLenRev);\n longPieces.sort(cmpLenRev);\n mixedPieces.sort(cmpLenRev);\n\n this._weekdaysRegex = new RegExp('^(' + mixedPieces.join('|') + ')', 'i');\n this._weekdaysShortRegex = this._weekdaysRegex;\n this._weekdaysMinRegex = this._weekdaysRegex;\n\n this._weekdaysStrictRegex = new RegExp(\n '^(' + longPieces.join('|') + ')',\n 'i'\n );\n this._weekdaysShortStrictRegex = new RegExp(\n '^(' + shortPieces.join('|') + ')',\n 'i'\n );\n this._weekdaysMinStrictRegex = new RegExp(\n '^(' + minPieces.join('|') + ')',\n 'i'\n );\n }\n\n // FORMATTING\n\n function hFormat() {\n return this.hours() % 12 || 12;\n }\n\n function kFormat() {\n return this.hours() || 24;\n }\n\n addFormatToken('H', ['HH', 2], 0, 'hour');\n addFormatToken('h', ['hh', 2], 0, hFormat);\n addFormatToken('k', ['kk', 2], 0, kFormat);\n\n addFormatToken('hmm', 0, 0, function () {\n return '' + hFormat.apply(this) + zeroFill(this.minutes(), 2);\n });\n\n addFormatToken('hmmss', 0, 0, function () {\n return (\n '' +\n hFormat.apply(this) +\n zeroFill(this.minutes(), 2) +\n zeroFill(this.seconds(), 2)\n );\n });\n\n addFormatToken('Hmm', 0, 0, function () {\n return '' + this.hours() + zeroFill(this.minutes(), 2);\n });\n\n addFormatToken('Hmmss', 0, 0, function () {\n return (\n '' +\n this.hours() +\n zeroFill(this.minutes(), 2) +\n zeroFill(this.seconds(), 2)\n );\n });\n\n function meridiem(token, lowercase) {\n addFormatToken(token, 0, 0, function () {\n return this.localeData().meridiem(\n this.hours(),\n this.minutes(),\n lowercase\n );\n });\n }\n\n meridiem('a', true);\n meridiem('A', false);\n\n // ALIASES\n\n addUnitAlias('hour', 'h');\n\n // PRIORITY\n addUnitPriority('hour', 13);\n\n // PARSING\n\n function matchMeridiem(isStrict, locale) {\n return locale._meridiemParse;\n }\n\n addRegexToken('a', matchMeridiem);\n addRegexToken('A', matchMeridiem);\n addRegexToken('H', match1to2);\n addRegexToken('h', match1to2);\n addRegexToken('k', match1to2);\n addRegexToken('HH', match1to2, match2);\n addRegexToken('hh', match1to2, match2);\n addRegexToken('kk', match1to2, match2);\n\n addRegexToken('hmm', match3to4);\n addRegexToken('hmmss', match5to6);\n addRegexToken('Hmm', match3to4);\n addRegexToken('Hmmss', match5to6);\n\n addParseToken(['H', 'HH'], HOUR);\n addParseToken(['k', 'kk'], function (input, array, config) {\n var kInput = toInt(input);\n array[HOUR] = kInput === 24 ? 0 : kInput;\n });\n addParseToken(['a', 'A'], function (input, array, config) {\n config._isPm = config._locale.isPM(input);\n config._meridiem = input;\n });\n addParseToken(['h', 'hh'], function (input, array, config) {\n array[HOUR] = toInt(input);\n getParsingFlags(config).bigHour = true;\n });\n addParseToken('hmm', function (input, array, config) {\n var pos = input.length - 2;\n array[HOUR] = toInt(input.substr(0, pos));\n array[MINUTE] = toInt(input.substr(pos));\n getParsingFlags(config).bigHour = true;\n });\n addParseToken('hmmss', function (input, array, config) {\n var pos1 = input.length - 4,\n pos2 = input.length - 2;\n array[HOUR] = toInt(input.substr(0, pos1));\n array[MINUTE] = toInt(input.substr(pos1, 2));\n array[SECOND] = toInt(input.substr(pos2));\n getParsingFlags(config).bigHour = true;\n });\n addParseToken('Hmm', function (input, array, config) {\n var pos = input.length - 2;\n array[HOUR] = toInt(input.substr(0, pos));\n array[MINUTE] = toInt(input.substr(pos));\n });\n addParseToken('Hmmss', function (input, array, config) {\n var pos1 = input.length - 4,\n pos2 = input.length - 2;\n array[HOUR] = toInt(input.substr(0, pos1));\n array[MINUTE] = toInt(input.substr(pos1, 2));\n array[SECOND] = toInt(input.substr(pos2));\n });\n\n // LOCALES\n\n function localeIsPM(input) {\n // IE8 Quirks Mode & IE7 Standards Mode do not allow accessing strings like arrays\n // Using charAt should be more compatible.\n return (input + '').toLowerCase().charAt(0) === 'p';\n }\n\n var defaultLocaleMeridiemParse = /[ap]\\.?m?\\.?/i,\n // Setting the hour should keep the time, because the user explicitly\n // specified which hour they want. So trying to maintain the same hour (in\n // a new timezone) makes sense. Adding/subtracting hours does not follow\n // this rule.\n getSetHour = makeGetSet('Hours', true);\n\n function localeMeridiem(hours, minutes, isLower) {\n if (hours > 11) {\n return isLower ? 'pm' : 'PM';\n } else {\n return isLower ? 'am' : 'AM';\n }\n }\n\n var baseConfig = {\n calendar: defaultCalendar,\n longDateFormat: defaultLongDateFormat,\n invalidDate: defaultInvalidDate,\n ordinal: defaultOrdinal,\n dayOfMonthOrdinalParse: defaultDayOfMonthOrdinalParse,\n relativeTime: defaultRelativeTime,\n\n months: defaultLocaleMonths,\n monthsShort: defaultLocaleMonthsShort,\n\n week: defaultLocaleWeek,\n\n weekdays: defaultLocaleWeekdays,\n weekdaysMin: defaultLocaleWeekdaysMin,\n weekdaysShort: defaultLocaleWeekdaysShort,\n\n meridiemParse: defaultLocaleMeridiemParse,\n };\n\n // internal storage for locale config files\n var locales = {},\n localeFamilies = {},\n globalLocale;\n\n function commonPrefix(arr1, arr2) {\n var i,\n minl = Math.min(arr1.length, arr2.length);\n for (i = 0; i < minl; i += 1) {\n if (arr1[i] !== arr2[i]) {\n return i;\n }\n }\n return minl;\n }\n\n function normalizeLocale(key) {\n return key ? key.toLowerCase().replace('_', '-') : key;\n }\n\n // pick the locale from the array\n // try ['en-au', 'en-gb'] as 'en-au', 'en-gb', 'en', as in move through the list trying each\n // substring from most specific to least, but move to the next array item if it's a more specific variant than the current root\n function chooseLocale(names) {\n var i = 0,\n j,\n next,\n locale,\n split;\n\n while (i < names.length) {\n split = normalizeLocale(names[i]).split('-');\n j = split.length;\n next = normalizeLocale(names[i + 1]);\n next = next ? next.split('-') : null;\n while (j > 0) {\n locale = loadLocale(split.slice(0, j).join('-'));\n if (locale) {\n return locale;\n }\n if (\n next &&\n next.length >= j &&\n commonPrefix(split, next) >= j - 1\n ) {\n //the next array item is better than a shallower substring of this one\n break;\n }\n j--;\n }\n i++;\n }\n return globalLocale;\n }\n\n function isLocaleNameSane(name) {\n // Prevent names that look like filesystem paths, i.e contain '/' or '\\'\n return name.match('^[^/\\\\\\\\]*$') != null;\n }\n\n function loadLocale(name) {\n var oldLocale = null,\n aliasedRequire;\n // TODO: Find a better way to register and load all the locales in Node\n if (\n locales[name] === undefined &&\n typeof module !== 'undefined' &&\n module &&\n module.exports &&\n isLocaleNameSane(name)\n ) {\n try {\n oldLocale = globalLocale._abbr;\n aliasedRequire = require;\n aliasedRequire('./locale/' + name);\n getSetGlobalLocale(oldLocale);\n } catch (e) {\n // mark as not found to avoid repeating expensive file require call causing high CPU\n // when trying to find en-US, en_US, en-us for every format call\n locales[name] = null; // null means not found\n }\n }\n return locales[name];\n }\n\n // This function will load locale and then set the global locale. If\n // no arguments are passed in, it will simply return the current global\n // locale key.\n function getSetGlobalLocale(key, values) {\n var data;\n if (key) {\n if (isUndefined(values)) {\n data = getLocale(key);\n } else {\n data = defineLocale(key, values);\n }\n\n if (data) {\n // moment.duration._locale = moment._locale = data;\n globalLocale = data;\n } else {\n if (typeof console !== 'undefined' && console.warn) {\n //warn user if arguments are passed but the locale could not be set\n console.warn(\n 'Locale ' + key + ' not found. Did you forget to load it?'\n );\n }\n }\n }\n\n return globalLocale._abbr;\n }\n\n function defineLocale(name, config) {\n if (config !== null) {\n var locale,\n parentConfig = baseConfig;\n config.abbr = name;\n if (locales[name] != null) {\n deprecateSimple(\n 'defineLocaleOverride',\n 'use moment.updateLocale(localeName, config) to change ' +\n 'an existing locale. moment.defineLocale(localeName, ' +\n 'config) should only be used for creating a new locale ' +\n 'See http://momentjs.com/guides/#/warnings/define-locale/ for more info.'\n );\n parentConfig = locales[name]._config;\n } else if (config.parentLocale != null) {\n if (locales[config.parentLocale] != null) {\n parentConfig = locales[config.parentLocale]._config;\n } else {\n locale = loadLocale(config.parentLocale);\n if (locale != null) {\n parentConfig = locale._config;\n } else {\n if (!localeFamilies[config.parentLocale]) {\n localeFamilies[config.parentLocale] = [];\n }\n localeFamilies[config.parentLocale].push({\n name: name,\n config: config,\n });\n return null;\n }\n }\n }\n locales[name] = new Locale(mergeConfigs(parentConfig, config));\n\n if (localeFamilies[name]) {\n localeFamilies[name].forEach(function (x) {\n defineLocale(x.name, x.config);\n });\n }\n\n // backwards compat for now: also set the locale\n // make sure we set the locale AFTER all child locales have been\n // created, so we won't end up with the child locale set.\n getSetGlobalLocale(name);\n\n return locales[name];\n } else {\n // useful for testing\n delete locales[name];\n return null;\n }\n }\n\n function updateLocale(name, config) {\n if (config != null) {\n var locale,\n tmpLocale,\n parentConfig = baseConfig;\n\n if (locales[name] != null && locales[name].parentLocale != null) {\n // Update existing child locale in-place to avoid memory-leaks\n locales[name].set(mergeConfigs(locales[name]._config, config));\n } else {\n // MERGE\n tmpLocale = loadLocale(name);\n if (tmpLocale != null) {\n parentConfig = tmpLocale._config;\n }\n config = mergeConfigs(parentConfig, config);\n if (tmpLocale == null) {\n // updateLocale is called for creating a new locale\n // Set abbr so it will have a name (getters return\n // undefined otherwise).\n config.abbr = name;\n }\n locale = new Locale(config);\n locale.parentLocale = locales[name];\n locales[name] = locale;\n }\n\n // backwards compat for now: also set the locale\n getSetGlobalLocale(name);\n } else {\n // pass null for config to unupdate, useful for tests\n if (locales[name] != null) {\n if (locales[name].parentLocale != null) {\n locales[name] = locales[name].parentLocale;\n if (name === getSetGlobalLocale()) {\n getSetGlobalLocale(name);\n }\n } else if (locales[name] != null) {\n delete locales[name];\n }\n }\n }\n return locales[name];\n }\n\n // returns locale data\n function getLocale(key) {\n var locale;\n\n if (key && key._locale && key._locale._abbr) {\n key = key._locale._abbr;\n }\n\n if (!key) {\n return globalLocale;\n }\n\n if (!isArray(key)) {\n //short-circuit everything else\n locale = loadLocale(key);\n if (locale) {\n return locale;\n }\n key = [key];\n }\n\n return chooseLocale(key);\n }\n\n function listLocales() {\n return keys(locales);\n }\n\n function checkOverflow(m) {\n var overflow,\n a = m._a;\n\n if (a && getParsingFlags(m).overflow === -2) {\n overflow =\n a[MONTH] < 0 || a[MONTH] > 11\n ? MONTH\n : a[DATE] < 1 || a[DATE] > daysInMonth(a[YEAR], a[MONTH])\n ? DATE\n : a[HOUR] < 0 ||\n a[HOUR] > 24 ||\n (a[HOUR] === 24 &&\n (a[MINUTE] !== 0 ||\n a[SECOND] !== 0 ||\n a[MILLISECOND] !== 0))\n ? HOUR\n : a[MINUTE] < 0 || a[MINUTE] > 59\n ? MINUTE\n : a[SECOND] < 0 || a[SECOND] > 59\n ? SECOND\n : a[MILLISECOND] < 0 || a[MILLISECOND] > 999\n ? MILLISECOND\n : -1;\n\n if (\n getParsingFlags(m)._overflowDayOfYear &&\n (overflow < YEAR || overflow > DATE)\n ) {\n overflow = DATE;\n }\n if (getParsingFlags(m)._overflowWeeks && overflow === -1) {\n overflow = WEEK;\n }\n if (getParsingFlags(m)._overflowWeekday && overflow === -1) {\n overflow = WEEKDAY;\n }\n\n getParsingFlags(m).overflow = overflow;\n }\n\n return m;\n }\n\n // iso 8601 regex\n // 0000-00-00 0000-W00 or 0000-W00-0 + T + 00 or 00:00 or 00:00:00 or 00:00:00.000 + +00:00 or +0000 or +00)\n var extendedIsoRegex =\n /^\\s*((?:[+-]\\d{6}|\\d{4})-(?:\\d\\d-\\d\\d|W\\d\\d-\\d|W\\d\\d|\\d\\d\\d|\\d\\d))(?:(T| )(\\d\\d(?::\\d\\d(?::\\d\\d(?:[.,]\\d+)?)?)?)([+-]\\d\\d(?::?\\d\\d)?|\\s*Z)?)?$/,\n basicIsoRegex =\n /^\\s*((?:[+-]\\d{6}|\\d{4})(?:\\d\\d\\d\\d|W\\d\\d\\d|W\\d\\d|\\d\\d\\d|\\d\\d|))(?:(T| )(\\d\\d(?:\\d\\d(?:\\d\\d(?:[.,]\\d+)?)?)?)([+-]\\d\\d(?::?\\d\\d)?|\\s*Z)?)?$/,\n tzRegex = /Z|[+-]\\d\\d(?::?\\d\\d)?/,\n isoDates = [\n ['YYYYYY-MM-DD', /[+-]\\d{6}-\\d\\d-\\d\\d/],\n ['YYYY-MM-DD', /\\d{4}-\\d\\d-\\d\\d/],\n ['GGGG-[W]WW-E', /\\d{4}-W\\d\\d-\\d/],\n ['GGGG-[W]WW', /\\d{4}-W\\d\\d/, false],\n ['YYYY-DDD', /\\d{4}-\\d{3}/],\n ['YYYY-MM', /\\d{4}-\\d\\d/, false],\n ['YYYYYYMMDD', /[+-]\\d{10}/],\n ['YYYYMMDD', /\\d{8}/],\n ['GGGG[W]WWE', /\\d{4}W\\d{3}/],\n ['GGGG[W]WW', /\\d{4}W\\d{2}/, false],\n ['YYYYDDD', /\\d{7}/],\n ['YYYYMM', /\\d{6}/, false],\n ['YYYY', /\\d{4}/, false],\n ],\n // iso time formats and regexes\n isoTimes = [\n ['HH:mm:ss.SSSS', /\\d\\d:\\d\\d:\\d\\d\\.\\d+/],\n ['HH:mm:ss,SSSS', /\\d\\d:\\d\\d:\\d\\d,\\d+/],\n ['HH:mm:ss', /\\d\\d:\\d\\d:\\d\\d/],\n ['HH:mm', /\\d\\d:\\d\\d/],\n ['HHmmss.SSSS', /\\d\\d\\d\\d\\d\\d\\.\\d+/],\n ['HHmmss,SSSS', /\\d\\d\\d\\d\\d\\d,\\d+/],\n ['HHmmss', /\\d\\d\\d\\d\\d\\d/],\n ['HHmm', /\\d\\d\\d\\d/],\n ['HH', /\\d\\d/],\n ],\n aspNetJsonRegex = /^\\/?Date\\((-?\\d+)/i,\n // RFC 2822 regex: For details see https://tools.ietf.org/html/rfc2822#section-3.3\n rfc2822 =\n /^(?:(Mon|Tue|Wed|Thu|Fri|Sat|Sun),?\\s)?(\\d{1,2})\\s(Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)\\s(\\d{2,4})\\s(\\d\\d):(\\d\\d)(?::(\\d\\d))?\\s(?:(UT|GMT|[ECMP][SD]T)|([Zz])|([+-]\\d{4}))$/,\n obsOffsets = {\n UT: 0,\n GMT: 0,\n EDT: -4 * 60,\n EST: -5 * 60,\n CDT: -5 * 60,\n CST: -6 * 60,\n MDT: -6 * 60,\n MST: -7 * 60,\n PDT: -7 * 60,\n PST: -8 * 60,\n };\n\n // date from iso format\n function configFromISO(config) {\n var i,\n l,\n string = config._i,\n match = extendedIsoRegex.exec(string) || basicIsoRegex.exec(string),\n allowTime,\n dateFormat,\n timeFormat,\n tzFormat,\n isoDatesLen = isoDates.length,\n isoTimesLen = isoTimes.length;\n\n if (match) {\n getParsingFlags(config).iso = true;\n for (i = 0, l = isoDatesLen; i < l; i++) {\n if (isoDates[i][1].exec(match[1])) {\n dateFormat = isoDates[i][0];\n allowTime = isoDates[i][2] !== false;\n break;\n }\n }\n if (dateFormat == null) {\n config._isValid = false;\n return;\n }\n if (match[3]) {\n for (i = 0, l = isoTimesLen; i < l; i++) {\n if (isoTimes[i][1].exec(match[3])) {\n // match[2] should be 'T' or space\n timeFormat = (match[2] || ' ') + isoTimes[i][0];\n break;\n }\n }\n if (timeFormat == null) {\n config._isValid = false;\n return;\n }\n }\n if (!allowTime && timeFormat != null) {\n config._isValid = false;\n return;\n }\n if (match[4]) {\n if (tzRegex.exec(match[4])) {\n tzFormat = 'Z';\n } else {\n config._isValid = false;\n return;\n }\n }\n config._f = dateFormat + (timeFormat || '') + (tzFormat || '');\n configFromStringAndFormat(config);\n } else {\n config._isValid = false;\n }\n }\n\n function extractFromRFC2822Strings(\n yearStr,\n monthStr,\n dayStr,\n hourStr,\n minuteStr,\n secondStr\n ) {\n var result = [\n untruncateYear(yearStr),\n defaultLocaleMonthsShort.indexOf(monthStr),\n parseInt(dayStr, 10),\n parseInt(hourStr, 10),\n parseInt(minuteStr, 10),\n ];\n\n if (secondStr) {\n result.push(parseInt(secondStr, 10));\n }\n\n return result;\n }\n\n function untruncateYear(yearStr) {\n var year = parseInt(yearStr, 10);\n if (year <= 49) {\n return 2000 + year;\n } else if (year <= 999) {\n return 1900 + year;\n }\n return year;\n }\n\n function preprocessRFC2822(s) {\n // Remove comments and folding whitespace and replace multiple-spaces with a single space\n return s\n .replace(/\\([^()]*\\)|[\\n\\t]/g, ' ')\n .replace(/(\\s\\s+)/g, ' ')\n .replace(/^\\s\\s*/, '')\n .replace(/\\s\\s*$/, '');\n }\n\n function checkWeekday(weekdayStr, parsedInput, config) {\n if (weekdayStr) {\n // TODO: Replace the vanilla JS Date object with an independent day-of-week check.\n var weekdayProvided = defaultLocaleWeekdaysShort.indexOf(weekdayStr),\n weekdayActual = new Date(\n parsedInput[0],\n parsedInput[1],\n parsedInput[2]\n ).getDay();\n if (weekdayProvided !== weekdayActual) {\n getParsingFlags(config).weekdayMismatch = true;\n config._isValid = false;\n return false;\n }\n }\n return true;\n }\n\n function calculateOffset(obsOffset, militaryOffset, numOffset) {\n if (obsOffset) {\n return obsOffsets[obsOffset];\n } else if (militaryOffset) {\n // the only allowed military tz is Z\n return 0;\n } else {\n var hm = parseInt(numOffset, 10),\n m = hm % 100,\n h = (hm - m) / 100;\n return h * 60 + m;\n }\n }\n\n // date and time from ref 2822 format\n function configFromRFC2822(config) {\n var match = rfc2822.exec(preprocessRFC2822(config._i)),\n parsedArray;\n if (match) {\n parsedArray = extractFromRFC2822Strings(\n match[4],\n match[3],\n match[2],\n match[5],\n match[6],\n match[7]\n );\n if (!checkWeekday(match[1], parsedArray, config)) {\n return;\n }\n\n config._a = parsedArray;\n config._tzm = calculateOffset(match[8], match[9], match[10]);\n\n config._d = createUTCDate.apply(null, config._a);\n config._d.setUTCMinutes(config._d.getUTCMinutes() - config._tzm);\n\n getParsingFlags(config).rfc2822 = true;\n } else {\n config._isValid = false;\n }\n }\n\n // date from 1) ASP.NET, 2) ISO, 3) RFC 2822 formats, or 4) optional fallback if parsing isn't strict\n function configFromString(config) {\n var matched = aspNetJsonRegex.exec(config._i);\n if (matched !== null) {\n config._d = new Date(+matched[1]);\n return;\n }\n\n configFromISO(config);\n if (config._isValid === false) {\n delete config._isValid;\n } else {\n return;\n }\n\n configFromRFC2822(config);\n if (config._isValid === false) {\n delete config._isValid;\n } else {\n return;\n }\n\n if (config._strict) {\n config._isValid = false;\n } else {\n // Final attempt, use Input Fallback\n hooks.createFromInputFallback(config);\n }\n }\n\n hooks.createFromInputFallback = deprecate(\n 'value provided is not in a recognized RFC2822 or ISO format. moment construction falls back to js Date(), ' +\n 'which is not reliable across all browsers and versions. Non RFC2822/ISO date formats are ' +\n 'discouraged. Please refer to http://momentjs.com/guides/#/warnings/js-date/ for more info.',\n function (config) {\n config._d = new Date(config._i + (config._useUTC ? ' UTC' : ''));\n }\n );\n\n // Pick the first defined of two or three arguments.\n function defaults(a, b, c) {\n if (a != null) {\n return a;\n }\n if (b != null) {\n return b;\n }\n return c;\n }\n\n function currentDateArray(config) {\n // hooks is actually the exported moment object\n var nowValue = new Date(hooks.now());\n if (config._useUTC) {\n return [\n nowValue.getUTCFullYear(),\n nowValue.getUTCMonth(),\n nowValue.getUTCDate(),\n ];\n }\n return [nowValue.getFullYear(), nowValue.getMonth(), nowValue.getDate()];\n }\n\n // convert an array to a date.\n // the array should mirror the parameters below\n // note: all values past the year are optional and will default to the lowest possible value.\n // [year, month, day , hour, minute, second, millisecond]\n function configFromArray(config) {\n var i,\n date,\n input = [],\n currentDate,\n expectedWeekday,\n yearToUse;\n\n if (config._d) {\n return;\n }\n\n currentDate = currentDateArray(config);\n\n //compute day of the year from weeks and weekdays\n if (config._w && config._a[DATE] == null && config._a[MONTH] == null) {\n dayOfYearFromWeekInfo(config);\n }\n\n //if the day of the year is set, figure out what it is\n if (config._dayOfYear != null) {\n yearToUse = defaults(config._a[YEAR], currentDate[YEAR]);\n\n if (\n config._dayOfYear > daysInYear(yearToUse) ||\n config._dayOfYear === 0\n ) {\n getParsingFlags(config)._overflowDayOfYear = true;\n }\n\n date = createUTCDate(yearToUse, 0, config._dayOfYear);\n config._a[MONTH] = date.getUTCMonth();\n config._a[DATE] = date.getUTCDate();\n }\n\n // Default to current date.\n // * if no year, month, day of month are given, default to today\n // * if day of month is given, default month and year\n // * if month is given, default only year\n // * if year is given, don't default anything\n for (i = 0; i < 3 && config._a[i] == null; ++i) {\n config._a[i] = input[i] = currentDate[i];\n }\n\n // Zero out whatever was not defaulted, including time\n for (; i < 7; i++) {\n config._a[i] = input[i] =\n config._a[i] == null ? (i === 2 ? 1 : 0) : config._a[i];\n }\n\n // Check for 24:00:00.000\n if (\n config._a[HOUR] === 24 &&\n config._a[MINUTE] === 0 &&\n config._a[SECOND] === 0 &&\n config._a[MILLISECOND] === 0\n ) {\n config._nextDay = true;\n config._a[HOUR] = 0;\n }\n\n config._d = (config._useUTC ? createUTCDate : createDate).apply(\n null,\n input\n );\n expectedWeekday = config._useUTC\n ? config._d.getUTCDay()\n : config._d.getDay();\n\n // Apply timezone offset from input. The actual utcOffset can be changed\n // with parseZone.\n if (config._tzm != null) {\n config._d.setUTCMinutes(config._d.getUTCMinutes() - config._tzm);\n }\n\n if (config._nextDay) {\n config._a[HOUR] = 24;\n }\n\n // check for mismatching day of week\n if (\n config._w &&\n typeof config._w.d !== 'undefined' &&\n config._w.d !== expectedWeekday\n ) {\n getParsingFlags(config).weekdayMismatch = true;\n }\n }\n\n function dayOfYearFromWeekInfo(config) {\n var w, weekYear, week, weekday, dow, doy, temp, weekdayOverflow, curWeek;\n\n w = config._w;\n if (w.GG != null || w.W != null || w.E != null) {\n dow = 1;\n doy = 4;\n\n // TODO: We need to take the current isoWeekYear, but that depends on\n // how we interpret now (local, utc, fixed offset). So create\n // a now version of current config (take local/utc/offset flags, and\n // create now).\n weekYear = defaults(\n w.GG,\n config._a[YEAR],\n weekOfYear(createLocal(), 1, 4).year\n );\n week = defaults(w.W, 1);\n weekday = defaults(w.E, 1);\n if (weekday < 1 || weekday > 7) {\n weekdayOverflow = true;\n }\n } else {\n dow = config._locale._week.dow;\n doy = config._locale._week.doy;\n\n curWeek = weekOfYear(createLocal(), dow, doy);\n\n weekYear = defaults(w.gg, config._a[YEAR], curWeek.year);\n\n // Default to current week.\n week = defaults(w.w, curWeek.week);\n\n if (w.d != null) {\n // weekday -- low day numbers are considered next week\n weekday = w.d;\n if (weekday < 0 || weekday > 6) {\n weekdayOverflow = true;\n }\n } else if (w.e != null) {\n // local weekday -- counting starts from beginning of week\n weekday = w.e + dow;\n if (w.e < 0 || w.e > 6) {\n weekdayOverflow = true;\n }\n } else {\n // default to beginning of week\n weekday = dow;\n }\n }\n if (week < 1 || week > weeksInYear(weekYear, dow, doy)) {\n getParsingFlags(config)._overflowWeeks = true;\n } else if (weekdayOverflow != null) {\n getParsingFlags(config)._overflowWeekday = true;\n } else {\n temp = dayOfYearFromWeeks(weekYear, week, weekday, dow, doy);\n config._a[YEAR] = temp.year;\n config._dayOfYear = temp.dayOfYear;\n }\n }\n\n // constant that refers to the ISO standard\n hooks.ISO_8601 = function () {};\n\n // constant that refers to the RFC 2822 form\n hooks.RFC_2822 = function () {};\n\n // date from string and format string\n function configFromStringAndFormat(config) {\n // TODO: Move this to another part of the creation flow to prevent circular deps\n if (config._f === hooks.ISO_8601) {\n configFromISO(config);\n return;\n }\n if (config._f === hooks.RFC_2822) {\n configFromRFC2822(config);\n return;\n }\n config._a = [];\n getParsingFlags(config).empty = true;\n\n // This array is used to make a Date, either with `new Date` or `Date.UTC`\n var string = '' + config._i,\n i,\n parsedInput,\n tokens,\n token,\n skipped,\n stringLength = string.length,\n totalParsedInputLength = 0,\n era,\n tokenLen;\n\n tokens =\n expandFormat(config._f, config._locale).match(formattingTokens) || [];\n tokenLen = tokens.length;\n for (i = 0; i < tokenLen; i++) {\n token = tokens[i];\n parsedInput = (string.match(getParseRegexForToken(token, config)) ||\n [])[0];\n if (parsedInput) {\n skipped = string.substr(0, string.indexOf(parsedInput));\n if (skipped.length > 0) {\n getParsingFlags(config).unusedInput.push(skipped);\n }\n string = string.slice(\n string.indexOf(parsedInput) + parsedInput.length\n );\n totalParsedInputLength += parsedInput.length;\n }\n // don't parse if it's not a known token\n if (formatTokenFunctions[token]) {\n if (parsedInput) {\n getParsingFlags(config).empty = false;\n } else {\n getParsingFlags(config).unusedTokens.push(token);\n }\n addTimeToArrayFromToken(token, parsedInput, config);\n } else if (config._strict && !parsedInput) {\n getParsingFlags(config).unusedTokens.push(token);\n }\n }\n\n // add remaining unparsed input length to the string\n getParsingFlags(config).charsLeftOver =\n stringLength - totalParsedInputLength;\n if (string.length > 0) {\n getParsingFlags(config).unusedInput.push(string);\n }\n\n // clear _12h flag if hour is <= 12\n if (\n config._a[HOUR] <= 12 &&\n getParsingFlags(config).bigHour === true &&\n config._a[HOUR] > 0\n ) {\n getParsingFlags(config).bigHour = undefined;\n }\n\n getParsingFlags(config).parsedDateParts = config._a.slice(0);\n getParsingFlags(config).meridiem = config._meridiem;\n // handle meridiem\n config._a[HOUR] = meridiemFixWrap(\n config._locale,\n config._a[HOUR],\n config._meridiem\n );\n\n // handle era\n era = getParsingFlags(config).era;\n if (era !== null) {\n config._a[YEAR] = config._locale.erasConvertYear(era, config._a[YEAR]);\n }\n\n configFromArray(config);\n checkOverflow(config);\n }\n\n function meridiemFixWrap(locale, hour, meridiem) {\n var isPm;\n\n if (meridiem == null) {\n // nothing to do\n return hour;\n }\n if (locale.meridiemHour != null) {\n return locale.meridiemHour(hour, meridiem);\n } else if (locale.isPM != null) {\n // Fallback\n isPm = locale.isPM(meridiem);\n if (isPm && hour < 12) {\n hour += 12;\n }\n if (!isPm && hour === 12) {\n hour = 0;\n }\n return hour;\n } else {\n // this is not supposed to happen\n return hour;\n }\n }\n\n // date from string and array of format strings\n function configFromStringAndArray(config) {\n var tempConfig,\n bestMoment,\n scoreToBeat,\n i,\n currentScore,\n validFormatFound,\n bestFormatIsValid = false,\n configfLen = config._f.length;\n\n if (configfLen === 0) {\n getParsingFlags(config).invalidFormat = true;\n config._d = new Date(NaN);\n return;\n }\n\n for (i = 0; i < configfLen; i++) {\n currentScore = 0;\n validFormatFound = false;\n tempConfig = copyConfig({}, config);\n if (config._useUTC != null) {\n tempConfig._useUTC = config._useUTC;\n }\n tempConfig._f = config._f[i];\n configFromStringAndFormat(tempConfig);\n\n if (isValid(tempConfig)) {\n validFormatFound = true;\n }\n\n // if there is any input that was not parsed add a penalty for that format\n currentScore += getParsingFlags(tempConfig).charsLeftOver;\n\n //or tokens\n currentScore += getParsingFlags(tempConfig).unusedTokens.length * 10;\n\n getParsingFlags(tempConfig).score = currentScore;\n\n if (!bestFormatIsValid) {\n if (\n scoreToBeat == null ||\n currentScore < scoreToBeat ||\n validFormatFound\n ) {\n scoreToBeat = currentScore;\n bestMoment = tempConfig;\n if (validFormatFound) {\n bestFormatIsValid = true;\n }\n }\n } else {\n if (currentScore < scoreToBeat) {\n scoreToBeat = currentScore;\n bestMoment = tempConfig;\n }\n }\n }\n\n extend(config, bestMoment || tempConfig);\n }\n\n function configFromObject(config) {\n if (config._d) {\n return;\n }\n\n var i = normalizeObjectUnits(config._i),\n dayOrDate = i.day === undefined ? i.date : i.day;\n config._a = map(\n [i.year, i.month, dayOrDate, i.hour, i.minute, i.second, i.millisecond],\n function (obj) {\n return obj && parseInt(obj, 10);\n }\n );\n\n configFromArray(config);\n }\n\n function createFromConfig(config) {\n var res = new Moment(checkOverflow(prepareConfig(config)));\n if (res._nextDay) {\n // Adding is smart enough around DST\n res.add(1, 'd');\n res._nextDay = undefined;\n }\n\n return res;\n }\n\n function prepareConfig(config) {\n var input = config._i,\n format = config._f;\n\n config._locale = config._locale || getLocale(config._l);\n\n if (input === null || (format === undefined && input === '')) {\n return createInvalid({ nullInput: true });\n }\n\n if (typeof input === 'string') {\n config._i = input = config._locale.preparse(input);\n }\n\n if (isMoment(input)) {\n return new Moment(checkOverflow(input));\n } else if (isDate(input)) {\n config._d = input;\n } else if (isArray(format)) {\n configFromStringAndArray(config);\n } else if (format) {\n configFromStringAndFormat(config);\n } else {\n configFromInput(config);\n }\n\n if (!isValid(config)) {\n config._d = null;\n }\n\n return config;\n }\n\n function configFromInput(config) {\n var input = config._i;\n if (isUndefined(input)) {\n config._d = new Date(hooks.now());\n } else if (isDate(input)) {\n config._d = new Date(input.valueOf());\n } else if (typeof input === 'string') {\n configFromString(config);\n } else if (isArray(input)) {\n config._a = map(input.slice(0), function (obj) {\n return parseInt(obj, 10);\n });\n configFromArray(config);\n } else if (isObject(input)) {\n configFromObject(config);\n } else if (isNumber(input)) {\n // from milliseconds\n config._d = new Date(input);\n } else {\n hooks.createFromInputFallback(config);\n }\n }\n\n function createLocalOrUTC(input, format, locale, strict, isUTC) {\n var c = {};\n\n if (format === true || format === false) {\n strict = format;\n format = undefined;\n }\n\n if (locale === true || locale === false) {\n strict = locale;\n locale = undefined;\n }\n\n if (\n (isObject(input) && isObjectEmpty(input)) ||\n (isArray(input) && input.length === 0)\n ) {\n input = undefined;\n }\n // object construction must be done this way.\n // https://github.com/moment/moment/issues/1423\n c._isAMomentObject = true;\n c._useUTC = c._isUTC = isUTC;\n c._l = locale;\n c._i = input;\n c._f = format;\n c._strict = strict;\n\n return createFromConfig(c);\n }\n\n function createLocal(input, format, locale, strict) {\n return createLocalOrUTC(input, format, locale, strict, false);\n }\n\n var prototypeMin = deprecate(\n 'moment().min is deprecated, use moment.max instead. http://momentjs.com/guides/#/warnings/min-max/',\n function () {\n var other = createLocal.apply(null, arguments);\n if (this.isValid() && other.isValid()) {\n return other < this ? this : other;\n } else {\n return createInvalid();\n }\n }\n ),\n prototypeMax = deprecate(\n 'moment().max is deprecated, use moment.min instead. http://momentjs.com/guides/#/warnings/min-max/',\n function () {\n var other = createLocal.apply(null, arguments);\n if (this.isValid() && other.isValid()) {\n return other > this ? this : other;\n } else {\n return createInvalid();\n }\n }\n );\n\n // Pick a moment m from moments so that m[fn](other) is true for all\n // other. This relies on the function fn to be transitive.\n //\n // moments should either be an array of moment objects or an array, whose\n // first element is an array of moment objects.\n function pickBy(fn, moments) {\n var res, i;\n if (moments.length === 1 && isArray(moments[0])) {\n moments = moments[0];\n }\n if (!moments.length) {\n return createLocal();\n }\n res = moments[0];\n for (i = 1; i < moments.length; ++i) {\n if (!moments[i].isValid() || moments[i][fn](res)) {\n res = moments[i];\n }\n }\n return res;\n }\n\n // TODO: Use [].sort instead?\n function min() {\n var args = [].slice.call(arguments, 0);\n\n return pickBy('isBefore', args);\n }\n\n function max() {\n var args = [].slice.call(arguments, 0);\n\n return pickBy('isAfter', args);\n }\n\n var now = function () {\n return Date.now ? Date.now() : +new Date();\n };\n\n var ordering = [\n 'year',\n 'quarter',\n 'month',\n 'week',\n 'day',\n 'hour',\n 'minute',\n 'second',\n 'millisecond',\n ];\n\n function isDurationValid(m) {\n var key,\n unitHasDecimal = false,\n i,\n orderLen = ordering.length;\n for (key in m) {\n if (\n hasOwnProp(m, key) &&\n !(\n indexOf.call(ordering, key) !== -1 &&\n (m[key] == null || !isNaN(m[key]))\n )\n ) {\n return false;\n }\n }\n\n for (i = 0; i < orderLen; ++i) {\n if (m[ordering[i]]) {\n if (unitHasDecimal) {\n return false; // only allow non-integers for smallest unit\n }\n if (parseFloat(m[ordering[i]]) !== toInt(m[ordering[i]])) {\n unitHasDecimal = true;\n }\n }\n }\n\n return true;\n }\n\n function isValid$1() {\n return this._isValid;\n }\n\n function createInvalid$1() {\n return createDuration(NaN);\n }\n\n function Duration(duration) {\n var normalizedInput = normalizeObjectUnits(duration),\n years = normalizedInput.year || 0,\n quarters = normalizedInput.quarter || 0,\n months = normalizedInput.month || 0,\n weeks = normalizedInput.week || normalizedInput.isoWeek || 0,\n days = normalizedInput.day || 0,\n hours = normalizedInput.hour || 0,\n minutes = normalizedInput.minute || 0,\n seconds = normalizedInput.second || 0,\n milliseconds = normalizedInput.millisecond || 0;\n\n this._isValid = isDurationValid(normalizedInput);\n\n // representation for dateAddRemove\n this._milliseconds =\n +milliseconds +\n seconds * 1e3 + // 1000\n minutes * 6e4 + // 1000 * 60\n hours * 1000 * 60 * 60; //using 1000 * 60 * 60 instead of 36e5 to avoid floating point rounding errors https://github.com/moment/moment/issues/2978\n // Because of dateAddRemove treats 24 hours as different from a\n // day when working around DST, we need to store them separately\n this._days = +days + weeks * 7;\n // It is impossible to translate months into days without knowing\n // which months you are are talking about, so we have to store\n // it separately.\n this._months = +months + quarters * 3 + years * 12;\n\n this._data = {};\n\n this._locale = getLocale();\n\n this._bubble();\n }\n\n function isDuration(obj) {\n return obj instanceof Duration;\n }\n\n function absRound(number) {\n if (number < 0) {\n return Math.round(-1 * number) * -1;\n } else {\n return Math.round(number);\n }\n }\n\n // compare two arrays, return the number of differences\n function compareArrays(array1, array2, dontConvert) {\n var len = Math.min(array1.length, array2.length),\n lengthDiff = Math.abs(array1.length - array2.length),\n diffs = 0,\n i;\n for (i = 0; i < len; i++) {\n if (\n (dontConvert && array1[i] !== array2[i]) ||\n (!dontConvert && toInt(array1[i]) !== toInt(array2[i]))\n ) {\n diffs++;\n }\n }\n return diffs + lengthDiff;\n }\n\n // FORMATTING\n\n function offset(token, separator) {\n addFormatToken(token, 0, 0, function () {\n var offset = this.utcOffset(),\n sign = '+';\n if (offset < 0) {\n offset = -offset;\n sign = '-';\n }\n return (\n sign +\n zeroFill(~~(offset / 60), 2) +\n separator +\n zeroFill(~~offset % 60, 2)\n );\n });\n }\n\n offset('Z', ':');\n offset('ZZ', '');\n\n // PARSING\n\n addRegexToken('Z', matchShortOffset);\n addRegexToken('ZZ', matchShortOffset);\n addParseToken(['Z', 'ZZ'], function (input, array, config) {\n config._useUTC = true;\n config._tzm = offsetFromString(matchShortOffset, input);\n });\n\n // HELPERS\n\n // timezone chunker\n // '+10:00' > ['10', '00']\n // '-1530' > ['-15', '30']\n var chunkOffset = /([\\+\\-]|\\d\\d)/gi;\n\n function offsetFromString(matcher, string) {\n var matches = (string || '').match(matcher),\n chunk,\n parts,\n minutes;\n\n if (matches === null) {\n return null;\n }\n\n chunk = matches[matches.length - 1] || [];\n parts = (chunk + '').match(chunkOffset) || ['-', 0, 0];\n minutes = +(parts[1] * 60) + toInt(parts[2]);\n\n return minutes === 0 ? 0 : parts[0] === '+' ? minutes : -minutes;\n }\n\n // Return a moment from input, that is local/utc/zone equivalent to model.\n function cloneWithOffset(input, model) {\n var res, diff;\n if (model._isUTC) {\n res = model.clone();\n diff =\n (isMoment(input) || isDate(input)\n ? input.valueOf()\n : createLocal(input).valueOf()) - res.valueOf();\n // Use low-level api, because this fn is low-level api.\n res._d.setTime(res._d.valueOf() + diff);\n hooks.updateOffset(res, false);\n return res;\n } else {\n return createLocal(input).local();\n }\n }\n\n function getDateOffset(m) {\n // On Firefox.24 Date#getTimezoneOffset returns a floating point.\n // https://github.com/moment/moment/pull/1871\n return -Math.round(m._d.getTimezoneOffset());\n }\n\n // HOOKS\n\n // This function will be called whenever a moment is mutated.\n // It is intended to keep the offset in sync with the timezone.\n hooks.updateOffset = function () {};\n\n // MOMENTS\n\n // keepLocalTime = true means only change the timezone, without\n // affecting the local hour. So 5:31:26 +0300 --[utcOffset(2, true)]-->\n // 5:31:26 +0200 It is possible that 5:31:26 doesn't exist with offset\n // +0200, so we adjust the time as needed, to be valid.\n //\n // Keeping the time actually adds/subtracts (one hour)\n // from the actual represented time. That is why we call updateOffset\n // a second time. In case it wants us to change the offset again\n // _changeInProgress == true case, then we have to adjust, because\n // there is no such time in the given timezone.\n function getSetOffset(input, keepLocalTime, keepMinutes) {\n var offset = this._offset || 0,\n localAdjust;\n if (!this.isValid()) {\n return input != null ? this : NaN;\n }\n if (input != null) {\n if (typeof input === 'string') {\n input = offsetFromString(matchShortOffset, input);\n if (input === null) {\n return this;\n }\n } else if (Math.abs(input) < 16 && !keepMinutes) {\n input = input * 60;\n }\n if (!this._isUTC && keepLocalTime) {\n localAdjust = getDateOffset(this);\n }\n this._offset = input;\n this._isUTC = true;\n if (localAdjust != null) {\n this.add(localAdjust, 'm');\n }\n if (offset !== input) {\n if (!keepLocalTime || this._changeInProgress) {\n addSubtract(\n this,\n createDuration(input - offset, 'm'),\n 1,\n false\n );\n } else if (!this._changeInProgress) {\n this._changeInProgress = true;\n hooks.updateOffset(this, true);\n this._changeInProgress = null;\n }\n }\n return this;\n } else {\n return this._isUTC ? offset : getDateOffset(this);\n }\n }\n\n function getSetZone(input, keepLocalTime) {\n if (input != null) {\n if (typeof input !== 'string') {\n input = -input;\n }\n\n this.utcOffset(input, keepLocalTime);\n\n return this;\n } else {\n return -this.utcOffset();\n }\n }\n\n function setOffsetToUTC(keepLocalTime) {\n return this.utcOffset(0, keepLocalTime);\n }\n\n function setOffsetToLocal(keepLocalTime) {\n if (this._isUTC) {\n this.utcOffset(0, keepLocalTime);\n this._isUTC = false;\n\n if (keepLocalTime) {\n this.subtract(getDateOffset(this), 'm');\n }\n }\n return this;\n }\n\n function setOffsetToParsedOffset() {\n if (this._tzm != null) {\n this.utcOffset(this._tzm, false, true);\n } else if (typeof this._i === 'string') {\n var tZone = offsetFromString(matchOffset, this._i);\n if (tZone != null) {\n this.utcOffset(tZone);\n } else {\n this.utcOffset(0, true);\n }\n }\n return this;\n }\n\n function hasAlignedHourOffset(input) {\n if (!this.isValid()) {\n return false;\n }\n input = input ? createLocal(input).utcOffset() : 0;\n\n return (this.utcOffset() - input) % 60 === 0;\n }\n\n function isDaylightSavingTime() {\n return (\n this.utcOffset() > this.clone().month(0).utcOffset() ||\n this.utcOffset() > this.clone().month(5).utcOffset()\n );\n }\n\n function isDaylightSavingTimeShifted() {\n if (!isUndefined(this._isDSTShifted)) {\n return this._isDSTShifted;\n }\n\n var c = {},\n other;\n\n copyConfig(c, this);\n c = prepareConfig(c);\n\n if (c._a) {\n other = c._isUTC ? createUTC(c._a) : createLocal(c._a);\n this._isDSTShifted =\n this.isValid() && compareArrays(c._a, other.toArray()) > 0;\n } else {\n this._isDSTShifted = false;\n }\n\n return this._isDSTShifted;\n }\n\n function isLocal() {\n return this.isValid() ? !this._isUTC : false;\n }\n\n function isUtcOffset() {\n return this.isValid() ? this._isUTC : false;\n }\n\n function isUtc() {\n return this.isValid() ? this._isUTC && this._offset === 0 : false;\n }\n\n // ASP.NET json date format regex\n var aspNetRegex = /^(-|\\+)?(?:(\\d*)[. ])?(\\d+):(\\d+)(?::(\\d+)(\\.\\d*)?)?$/,\n // from http://docs.closure-library.googlecode.com/git/closure_goog_date_date.js.source.html\n // somewhat more in line with 4.4.3.2 2004 spec, but allows decimal anywhere\n // and further modified to allow for strings containing both week and day\n isoRegex =\n /^(-|\\+)?P(?:([-+]?[0-9,.]*)Y)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)W)?(?:([-+]?[0-9,.]*)D)?(?:T(?:([-+]?[0-9,.]*)H)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)S)?)?$/;\n\n function createDuration(input, key) {\n var duration = input,\n // matching against regexp is expensive, do it on demand\n match = null,\n sign,\n ret,\n diffRes;\n\n if (isDuration(input)) {\n duration = {\n ms: input._milliseconds,\n d: input._days,\n M: input._months,\n };\n } else if (isNumber(input) || !isNaN(+input)) {\n duration = {};\n if (key) {\n duration[key] = +input;\n } else {\n duration.milliseconds = +input;\n }\n } else if ((match = aspNetRegex.exec(input))) {\n sign = match[1] === '-' ? -1 : 1;\n duration = {\n y: 0,\n d: toInt(match[DATE]) * sign,\n h: toInt(match[HOUR]) * sign,\n m: toInt(match[MINUTE]) * sign,\n s: toInt(match[SECOND]) * sign,\n ms: toInt(absRound(match[MILLISECOND] * 1000)) * sign, // the millisecond decimal point is included in the match\n };\n } else if ((match = isoRegex.exec(input))) {\n sign = match[1] === '-' ? -1 : 1;\n duration = {\n y: parseIso(match[2], sign),\n M: parseIso(match[3], sign),\n w: parseIso(match[4], sign),\n d: parseIso(match[5], sign),\n h: parseIso(match[6], sign),\n m: parseIso(match[7], sign),\n s: parseIso(match[8], sign),\n };\n } else if (duration == null) {\n // checks for null or undefined\n duration = {};\n } else if (\n typeof duration === 'object' &&\n ('from' in duration || 'to' in duration)\n ) {\n diffRes = momentsDifference(\n createLocal(duration.from),\n createLocal(duration.to)\n );\n\n duration = {};\n duration.ms = diffRes.milliseconds;\n duration.M = diffRes.months;\n }\n\n ret = new Duration(duration);\n\n if (isDuration(input) && hasOwnProp(input, '_locale')) {\n ret._locale = input._locale;\n }\n\n if (isDuration(input) && hasOwnProp(input, '_isValid')) {\n ret._isValid = input._isValid;\n }\n\n return ret;\n }\n\n createDuration.fn = Duration.prototype;\n createDuration.invalid = createInvalid$1;\n\n function parseIso(inp, sign) {\n // We'd normally use ~~inp for this, but unfortunately it also\n // converts floats to ints.\n // inp may be undefined, so careful calling replace on it.\n var res = inp && parseFloat(inp.replace(',', '.'));\n // apply sign while we're at it\n return (isNaN(res) ? 0 : res) * sign;\n }\n\n function positiveMomentsDifference(base, other) {\n var res = {};\n\n res.months =\n other.month() - base.month() + (other.year() - base.year()) * 12;\n if (base.clone().add(res.months, 'M').isAfter(other)) {\n --res.months;\n }\n\n res.milliseconds = +other - +base.clone().add(res.months, 'M');\n\n return res;\n }\n\n function momentsDifference(base, other) {\n var res;\n if (!(base.isValid() && other.isValid())) {\n return { milliseconds: 0, months: 0 };\n }\n\n other = cloneWithOffset(other, base);\n if (base.isBefore(other)) {\n res = positiveMomentsDifference(base, other);\n } else {\n res = positiveMomentsDifference(other, base);\n res.milliseconds = -res.milliseconds;\n res.months = -res.months;\n }\n\n return res;\n }\n\n // TODO: remove 'name' arg after deprecation is removed\n function createAdder(direction, name) {\n return function (val, period) {\n var dur, tmp;\n //invert the arguments, but complain about it\n if (period !== null && !isNaN(+period)) {\n deprecateSimple(\n name,\n 'moment().' +\n name +\n '(period, number) is deprecated. Please use moment().' +\n name +\n '(number, period). ' +\n 'See http://momentjs.com/guides/#/warnings/add-inverted-param/ for more info.'\n );\n tmp = val;\n val = period;\n period = tmp;\n }\n\n dur = createDuration(val, period);\n addSubtract(this, dur, direction);\n return this;\n };\n }\n\n function addSubtract(mom, duration, isAdding, updateOffset) {\n var milliseconds = duration._milliseconds,\n days = absRound(duration._days),\n months = absRound(duration._months);\n\n if (!mom.isValid()) {\n // No op\n return;\n }\n\n updateOffset = updateOffset == null ? true : updateOffset;\n\n if (months) {\n setMonth(mom, get(mom, 'Month') + months * isAdding);\n }\n if (days) {\n set$1(mom, 'Date', get(mom, 'Date') + days * isAdding);\n }\n if (milliseconds) {\n mom._d.setTime(mom._d.valueOf() + milliseconds * isAdding);\n }\n if (updateOffset) {\n hooks.updateOffset(mom, days || months);\n }\n }\n\n var add = createAdder(1, 'add'),\n subtract = createAdder(-1, 'subtract');\n\n function isString(input) {\n return typeof input === 'string' || input instanceof String;\n }\n\n // type MomentInput = Moment | Date | string | number | (number | string)[] | MomentInputObject | void; // null | undefined\n function isMomentInput(input) {\n return (\n isMoment(input) ||\n isDate(input) ||\n isString(input) ||\n isNumber(input) ||\n isNumberOrStringArray(input) ||\n isMomentInputObject(input) ||\n input === null ||\n input === undefined\n );\n }\n\n function isMomentInputObject(input) {\n var objectTest = isObject(input) && !isObjectEmpty(input),\n propertyTest = false,\n properties = [\n 'years',\n 'year',\n 'y',\n 'months',\n 'month',\n 'M',\n 'days',\n 'day',\n 'd',\n 'dates',\n 'date',\n 'D',\n 'hours',\n 'hour',\n 'h',\n 'minutes',\n 'minute',\n 'm',\n 'seconds',\n 'second',\n 's',\n 'milliseconds',\n 'millisecond',\n 'ms',\n ],\n i,\n property,\n propertyLen = properties.length;\n\n for (i = 0; i < propertyLen; i += 1) {\n property = properties[i];\n propertyTest = propertyTest || hasOwnProp(input, property);\n }\n\n return objectTest && propertyTest;\n }\n\n function isNumberOrStringArray(input) {\n var arrayTest = isArray(input),\n dataTypeTest = false;\n if (arrayTest) {\n dataTypeTest =\n input.filter(function (item) {\n return !isNumber(item) && isString(input);\n }).length === 0;\n }\n return arrayTest && dataTypeTest;\n }\n\n function isCalendarSpec(input) {\n var objectTest = isObject(input) && !isObjectEmpty(input),\n propertyTest = false,\n properties = [\n 'sameDay',\n 'nextDay',\n 'lastDay',\n 'nextWeek',\n 'lastWeek',\n 'sameElse',\n ],\n i,\n property;\n\n for (i = 0; i < properties.length; i += 1) {\n property = properties[i];\n propertyTest = propertyTest || hasOwnProp(input, property);\n }\n\n return objectTest && propertyTest;\n }\n\n function getCalendarFormat(myMoment, now) {\n var diff = myMoment.diff(now, 'days', true);\n return diff < -6\n ? 'sameElse'\n : diff < -1\n ? 'lastWeek'\n : diff < 0\n ? 'lastDay'\n : diff < 1\n ? 'sameDay'\n : diff < 2\n ? 'nextDay'\n : diff < 7\n ? 'nextWeek'\n : 'sameElse';\n }\n\n function calendar$1(time, formats) {\n // Support for single parameter, formats only overload to the calendar function\n if (arguments.length === 1) {\n if (!arguments[0]) {\n time = undefined;\n formats = undefined;\n } else if (isMomentInput(arguments[0])) {\n time = arguments[0];\n formats = undefined;\n } else if (isCalendarSpec(arguments[0])) {\n formats = arguments[0];\n time = undefined;\n }\n }\n // We want to compare the start of today, vs this.\n // Getting start-of-today depends on whether we're local/utc/offset or not.\n var now = time || createLocal(),\n sod = cloneWithOffset(now, this).startOf('day'),\n format = hooks.calendarFormat(this, sod) || 'sameElse',\n output =\n formats &&\n (isFunction(formats[format])\n ? formats[format].call(this, now)\n : formats[format]);\n\n return this.format(\n output || this.localeData().calendar(format, this, createLocal(now))\n );\n }\n\n function clone() {\n return new Moment(this);\n }\n\n function isAfter(input, units) {\n var localInput = isMoment(input) ? input : createLocal(input);\n if (!(this.isValid() && localInput.isValid())) {\n return false;\n }\n units = normalizeUnits(units) || 'millisecond';\n if (units === 'millisecond') {\n return this.valueOf() > localInput.valueOf();\n } else {\n return localInput.valueOf() < this.clone().startOf(units).valueOf();\n }\n }\n\n function isBefore(input, units) {\n var localInput = isMoment(input) ? input : createLocal(input);\n if (!(this.isValid() && localInput.isValid())) {\n return false;\n }\n units = normalizeUnits(units) || 'millisecond';\n if (units === 'millisecond') {\n return this.valueOf() < localInput.valueOf();\n } else {\n return this.clone().endOf(units).valueOf() < localInput.valueOf();\n }\n }\n\n function isBetween(from, to, units, inclusivity) {\n var localFrom = isMoment(from) ? from : createLocal(from),\n localTo = isMoment(to) ? to : createLocal(to);\n if (!(this.isValid() && localFrom.isValid() && localTo.isValid())) {\n return false;\n }\n inclusivity = inclusivity || '()';\n return (\n (inclusivity[0] === '('\n ? this.isAfter(localFrom, units)\n : !this.isBefore(localFrom, units)) &&\n (inclusivity[1] === ')'\n ? this.isBefore(localTo, units)\n : !this.isAfter(localTo, units))\n );\n }\n\n function isSame(input, units) {\n var localInput = isMoment(input) ? input : createLocal(input),\n inputMs;\n if (!(this.isValid() && localInput.isValid())) {\n return false;\n }\n units = normalizeUnits(units) || 'millisecond';\n if (units === 'millisecond') {\n return this.valueOf() === localInput.valueOf();\n } else {\n inputMs = localInput.valueOf();\n return (\n this.clone().startOf(units).valueOf() <= inputMs &&\n inputMs <= this.clone().endOf(units).valueOf()\n );\n }\n }\n\n function isSameOrAfter(input, units) {\n return this.isSame(input, units) || this.isAfter(input, units);\n }\n\n function isSameOrBefore(input, units) {\n return this.isSame(input, units) || this.isBefore(input, units);\n }\n\n function diff(input, units, asFloat) {\n var that, zoneDelta, output;\n\n if (!this.isValid()) {\n return NaN;\n }\n\n that = cloneWithOffset(input, this);\n\n if (!that.isValid()) {\n return NaN;\n }\n\n zoneDelta = (that.utcOffset() - this.utcOffset()) * 6e4;\n\n units = normalizeUnits(units);\n\n switch (units) {\n case 'year':\n output = monthDiff(this, that) / 12;\n break;\n case 'month':\n output = monthDiff(this, that);\n break;\n case 'quarter':\n output = monthDiff(this, that) / 3;\n break;\n case 'second':\n output = (this - that) / 1e3;\n break; // 1000\n case 'minute':\n output = (this - that) / 6e4;\n break; // 1000 * 60\n case 'hour':\n output = (this - that) / 36e5;\n break; // 1000 * 60 * 60\n case 'day':\n output = (this - that - zoneDelta) / 864e5;\n break; // 1000 * 60 * 60 * 24, negate dst\n case 'week':\n output = (this - that - zoneDelta) / 6048e5;\n break; // 1000 * 60 * 60 * 24 * 7, negate dst\n default:\n output = this - that;\n }\n\n return asFloat ? output : absFloor(output);\n }\n\n function monthDiff(a, b) {\n if (a.date() < b.date()) {\n // end-of-month calculations work correct when the start month has more\n // days than the end month.\n return -monthDiff(b, a);\n }\n // difference in months\n var wholeMonthDiff = (b.year() - a.year()) * 12 + (b.month() - a.month()),\n // b is in (anchor - 1 month, anchor + 1 month)\n anchor = a.clone().add(wholeMonthDiff, 'months'),\n anchor2,\n adjust;\n\n if (b - anchor < 0) {\n anchor2 = a.clone().add(wholeMonthDiff - 1, 'months');\n // linear across the month\n adjust = (b - anchor) / (anchor - anchor2);\n } else {\n anchor2 = a.clone().add(wholeMonthDiff + 1, 'months');\n // linear across the month\n adjust = (b - anchor) / (anchor2 - anchor);\n }\n\n //check for negative zero, return zero if negative zero\n return -(wholeMonthDiff + adjust) || 0;\n }\n\n hooks.defaultFormat = 'YYYY-MM-DDTHH:mm:ssZ';\n hooks.defaultFormatUtc = 'YYYY-MM-DDTHH:mm:ss[Z]';\n\n function toString() {\n return this.clone().locale('en').format('ddd MMM DD YYYY HH:mm:ss [GMT]ZZ');\n }\n\n function toISOString(keepOffset) {\n if (!this.isValid()) {\n return null;\n }\n var utc = keepOffset !== true,\n m = utc ? this.clone().utc() : this;\n if (m.year() < 0 || m.year() > 9999) {\n return formatMoment(\n m,\n utc\n ? 'YYYYYY-MM-DD[T]HH:mm:ss.SSS[Z]'\n : 'YYYYYY-MM-DD[T]HH:mm:ss.SSSZ'\n );\n }\n if (isFunction(Date.prototype.toISOString)) {\n // native implementation is ~50x faster, use it when we can\n if (utc) {\n return this.toDate().toISOString();\n } else {\n return new Date(this.valueOf() + this.utcOffset() * 60 * 1000)\n .toISOString()\n .replace('Z', formatMoment(m, 'Z'));\n }\n }\n return formatMoment(\n m,\n utc ? 'YYYY-MM-DD[T]HH:mm:ss.SSS[Z]' : 'YYYY-MM-DD[T]HH:mm:ss.SSSZ'\n );\n }\n\n /**\n * Return a human readable representation of a moment that can\n * also be evaluated to get a new moment which is the same\n *\n * @link https://nodejs.org/dist/latest/docs/api/util.html#util_custom_inspect_function_on_objects\n */\n function inspect() {\n if (!this.isValid()) {\n return 'moment.invalid(/* ' + this._i + ' */)';\n }\n var func = 'moment',\n zone = '',\n prefix,\n year,\n datetime,\n suffix;\n if (!this.isLocal()) {\n func = this.utcOffset() === 0 ? 'moment.utc' : 'moment.parseZone';\n zone = 'Z';\n }\n prefix = '[' + func + '(\"]';\n year = 0 <= this.year() && this.year() <= 9999 ? 'YYYY' : 'YYYYYY';\n datetime = '-MM-DD[T]HH:mm:ss.SSS';\n suffix = zone + '[\")]';\n\n return this.format(prefix + year + datetime + suffix);\n }\n\n function format(inputString) {\n if (!inputString) {\n inputString = this.isUtc()\n ? hooks.defaultFormatUtc\n : hooks.defaultFormat;\n }\n var output = formatMoment(this, inputString);\n return this.localeData().postformat(output);\n }\n\n function from(time, withoutSuffix) {\n if (\n this.isValid() &&\n ((isMoment(time) && time.isValid()) || createLocal(time).isValid())\n ) {\n return createDuration({ to: this, from: time })\n .locale(this.locale())\n .humanize(!withoutSuffix);\n } else {\n return this.localeData().invalidDate();\n }\n }\n\n function fromNow(withoutSuffix) {\n return this.from(createLocal(), withoutSuffix);\n }\n\n function to(time, withoutSuffix) {\n if (\n this.isValid() &&\n ((isMoment(time) && time.isValid()) || createLocal(time).isValid())\n ) {\n return createDuration({ from: this, to: time })\n .locale(this.locale())\n .humanize(!withoutSuffix);\n } else {\n return this.localeData().invalidDate();\n }\n }\n\n function toNow(withoutSuffix) {\n return this.to(createLocal(), withoutSuffix);\n }\n\n // If passed a locale key, it will set the locale for this\n // instance. Otherwise, it will return the locale configuration\n // variables for this instance.\n function locale(key) {\n var newLocaleData;\n\n if (key === undefined) {\n return this._locale._abbr;\n } else {\n newLocaleData = getLocale(key);\n if (newLocaleData != null) {\n this._locale = newLocaleData;\n }\n return this;\n }\n }\n\n var lang = deprecate(\n 'moment().lang() is deprecated. Instead, use moment().localeData() to get the language configuration. Use moment().locale() to change languages.',\n function (key) {\n if (key === undefined) {\n return this.localeData();\n } else {\n return this.locale(key);\n }\n }\n );\n\n function localeData() {\n return this._locale;\n }\n\n var MS_PER_SECOND = 1000,\n MS_PER_MINUTE = 60 * MS_PER_SECOND,\n MS_PER_HOUR = 60 * MS_PER_MINUTE,\n MS_PER_400_YEARS = (365 * 400 + 97) * 24 * MS_PER_HOUR;\n\n // actual modulo - handles negative numbers (for dates before 1970):\n function mod$1(dividend, divisor) {\n return ((dividend % divisor) + divisor) % divisor;\n }\n\n function localStartOfDate(y, m, d) {\n // the date constructor remaps years 0-99 to 1900-1999\n if (y < 100 && y >= 0) {\n // preserve leap years using a full 400 year cycle, then reset\n return new Date(y + 400, m, d) - MS_PER_400_YEARS;\n } else {\n return new Date(y, m, d).valueOf();\n }\n }\n\n function utcStartOfDate(y, m, d) {\n // Date.UTC remaps years 0-99 to 1900-1999\n if (y < 100 && y >= 0) {\n // preserve leap years using a full 400 year cycle, then reset\n return Date.UTC(y + 400, m, d) - MS_PER_400_YEARS;\n } else {\n return Date.UTC(y, m, d);\n }\n }\n\n function startOf(units) {\n var time, startOfDate;\n units = normalizeUnits(units);\n if (units === undefined || units === 'millisecond' || !this.isValid()) {\n return this;\n }\n\n startOfDate = this._isUTC ? utcStartOfDate : localStartOfDate;\n\n switch (units) {\n case 'year':\n time = startOfDate(this.year(), 0, 1);\n break;\n case 'quarter':\n time = startOfDate(\n this.year(),\n this.month() - (this.month() % 3),\n 1\n );\n break;\n case 'month':\n time = startOfDate(this.year(), this.month(), 1);\n break;\n case 'week':\n time = startOfDate(\n this.year(),\n this.month(),\n this.date() - this.weekday()\n );\n break;\n case 'isoWeek':\n time = startOfDate(\n this.year(),\n this.month(),\n this.date() - (this.isoWeekday() - 1)\n );\n break;\n case 'day':\n case 'date':\n time = startOfDate(this.year(), this.month(), this.date());\n break;\n case 'hour':\n time = this._d.valueOf();\n time -= mod$1(\n time + (this._isUTC ? 0 : this.utcOffset() * MS_PER_MINUTE),\n MS_PER_HOUR\n );\n break;\n case 'minute':\n time = this._d.valueOf();\n time -= mod$1(time, MS_PER_MINUTE);\n break;\n case 'second':\n time = this._d.valueOf();\n time -= mod$1(time, MS_PER_SECOND);\n break;\n }\n\n this._d.setTime(time);\n hooks.updateOffset(this, true);\n return this;\n }\n\n function endOf(units) {\n var time, startOfDate;\n units = normalizeUnits(units);\n if (units === undefined || units === 'millisecond' || !this.isValid()) {\n return this;\n }\n\n startOfDate = this._isUTC ? utcStartOfDate : localStartOfDate;\n\n switch (units) {\n case 'year':\n time = startOfDate(this.year() + 1, 0, 1) - 1;\n break;\n case 'quarter':\n time =\n startOfDate(\n this.year(),\n this.month() - (this.month() % 3) + 3,\n 1\n ) - 1;\n break;\n case 'month':\n time = startOfDate(this.year(), this.month() + 1, 1) - 1;\n break;\n case 'week':\n time =\n startOfDate(\n this.year(),\n this.month(),\n this.date() - this.weekday() + 7\n ) - 1;\n break;\n case 'isoWeek':\n time =\n startOfDate(\n this.year(),\n this.month(),\n this.date() - (this.isoWeekday() - 1) + 7\n ) - 1;\n break;\n case 'day':\n case 'date':\n time = startOfDate(this.year(), this.month(), this.date() + 1) - 1;\n break;\n case 'hour':\n time = this._d.valueOf();\n time +=\n MS_PER_HOUR -\n mod$1(\n time + (this._isUTC ? 0 : this.utcOffset() * MS_PER_MINUTE),\n MS_PER_HOUR\n ) -\n 1;\n break;\n case 'minute':\n time = this._d.valueOf();\n time += MS_PER_MINUTE - mod$1(time, MS_PER_MINUTE) - 1;\n break;\n case 'second':\n time = this._d.valueOf();\n time += MS_PER_SECOND - mod$1(time, MS_PER_SECOND) - 1;\n break;\n }\n\n this._d.setTime(time);\n hooks.updateOffset(this, true);\n return this;\n }\n\n function valueOf() {\n return this._d.valueOf() - (this._offset || 0) * 60000;\n }\n\n function unix() {\n return Math.floor(this.valueOf() / 1000);\n }\n\n function toDate() {\n return new Date(this.valueOf());\n }\n\n function toArray() {\n var m = this;\n return [\n m.year(),\n m.month(),\n m.date(),\n m.hour(),\n m.minute(),\n m.second(),\n m.millisecond(),\n ];\n }\n\n function toObject() {\n var m = this;\n return {\n years: m.year(),\n months: m.month(),\n date: m.date(),\n hours: m.hours(),\n minutes: m.minutes(),\n seconds: m.seconds(),\n milliseconds: m.milliseconds(),\n };\n }\n\n function toJSON() {\n // new Date(NaN).toJSON() === null\n return this.isValid() ? this.toISOString() : null;\n }\n\n function isValid$2() {\n return isValid(this);\n }\n\n function parsingFlags() {\n return extend({}, getParsingFlags(this));\n }\n\n function invalidAt() {\n return getParsingFlags(this).overflow;\n }\n\n function creationData() {\n return {\n input: this._i,\n format: this._f,\n locale: this._locale,\n isUTC: this._isUTC,\n strict: this._strict,\n };\n }\n\n addFormatToken('N', 0, 0, 'eraAbbr');\n addFormatToken('NN', 0, 0, 'eraAbbr');\n addFormatToken('NNN', 0, 0, 'eraAbbr');\n addFormatToken('NNNN', 0, 0, 'eraName');\n addFormatToken('NNNNN', 0, 0, 'eraNarrow');\n\n addFormatToken('y', ['y', 1], 'yo', 'eraYear');\n addFormatToken('y', ['yy', 2], 0, 'eraYear');\n addFormatToken('y', ['yyy', 3], 0, 'eraYear');\n addFormatToken('y', ['yyyy', 4], 0, 'eraYear');\n\n addRegexToken('N', matchEraAbbr);\n addRegexToken('NN', matchEraAbbr);\n addRegexToken('NNN', matchEraAbbr);\n addRegexToken('NNNN', matchEraName);\n addRegexToken('NNNNN', matchEraNarrow);\n\n addParseToken(\n ['N', 'NN', 'NNN', 'NNNN', 'NNNNN'],\n function (input, array, config, token) {\n var era = config._locale.erasParse(input, token, config._strict);\n if (era) {\n getParsingFlags(config).era = era;\n } else {\n getParsingFlags(config).invalidEra = input;\n }\n }\n );\n\n addRegexToken('y', matchUnsigned);\n addRegexToken('yy', matchUnsigned);\n addRegexToken('yyy', matchUnsigned);\n addRegexToken('yyyy', matchUnsigned);\n addRegexToken('yo', matchEraYearOrdinal);\n\n addParseToken(['y', 'yy', 'yyy', 'yyyy'], YEAR);\n addParseToken(['yo'], function (input, array, config, token) {\n var match;\n if (config._locale._eraYearOrdinalRegex) {\n match = input.match(config._locale._eraYearOrdinalRegex);\n }\n\n if (config._locale.eraYearOrdinalParse) {\n array[YEAR] = config._locale.eraYearOrdinalParse(input, match);\n } else {\n array[YEAR] = parseInt(input, 10);\n }\n });\n\n function localeEras(m, format) {\n var i,\n l,\n date,\n eras = this._eras || getLocale('en')._eras;\n for (i = 0, l = eras.length; i < l; ++i) {\n switch (typeof eras[i].since) {\n case 'string':\n // truncate time\n date = hooks(eras[i].since).startOf('day');\n eras[i].since = date.valueOf();\n break;\n }\n\n switch (typeof eras[i].until) {\n case 'undefined':\n eras[i].until = +Infinity;\n break;\n case 'string':\n // truncate time\n date = hooks(eras[i].until).startOf('day').valueOf();\n eras[i].until = date.valueOf();\n break;\n }\n }\n return eras;\n }\n\n function localeErasParse(eraName, format, strict) {\n var i,\n l,\n eras = this.eras(),\n name,\n abbr,\n narrow;\n eraName = eraName.toUpperCase();\n\n for (i = 0, l = eras.length; i < l; ++i) {\n name = eras[i].name.toUpperCase();\n abbr = eras[i].abbr.toUpperCase();\n narrow = eras[i].narrow.toUpperCase();\n\n if (strict) {\n switch (format) {\n case 'N':\n case 'NN':\n case 'NNN':\n if (abbr === eraName) {\n return eras[i];\n }\n break;\n\n case 'NNNN':\n if (name === eraName) {\n return eras[i];\n }\n break;\n\n case 'NNNNN':\n if (narrow === eraName) {\n return eras[i];\n }\n break;\n }\n } else if ([name, abbr, narrow].indexOf(eraName) >= 0) {\n return eras[i];\n }\n }\n }\n\n function localeErasConvertYear(era, year) {\n var dir = era.since <= era.until ? +1 : -1;\n if (year === undefined) {\n return hooks(era.since).year();\n } else {\n return hooks(era.since).year() + (year - era.offset) * dir;\n }\n }\n\n function getEraName() {\n var i,\n l,\n val,\n eras = this.localeData().eras();\n for (i = 0, l = eras.length; i < l; ++i) {\n // truncate time\n val = this.clone().startOf('day').valueOf();\n\n if (eras[i].since <= val && val <= eras[i].until) {\n return eras[i].name;\n }\n if (eras[i].until <= val && val <= eras[i].since) {\n return eras[i].name;\n }\n }\n\n return '';\n }\n\n function getEraNarrow() {\n var i,\n l,\n val,\n eras = this.localeData().eras();\n for (i = 0, l = eras.length; i < l; ++i) {\n // truncate time\n val = this.clone().startOf('day').valueOf();\n\n if (eras[i].since <= val && val <= eras[i].until) {\n return eras[i].narrow;\n }\n if (eras[i].until <= val && val <= eras[i].since) {\n return eras[i].narrow;\n }\n }\n\n return '';\n }\n\n function getEraAbbr() {\n var i,\n l,\n val,\n eras = this.localeData().eras();\n for (i = 0, l = eras.length; i < l; ++i) {\n // truncate time\n val = this.clone().startOf('day').valueOf();\n\n if (eras[i].since <= val && val <= eras[i].until) {\n return eras[i].abbr;\n }\n if (eras[i].until <= val && val <= eras[i].since) {\n return eras[i].abbr;\n }\n }\n\n return '';\n }\n\n function getEraYear() {\n var i,\n l,\n dir,\n val,\n eras = this.localeData().eras();\n for (i = 0, l = eras.length; i < l; ++i) {\n dir = eras[i].since <= eras[i].until ? +1 : -1;\n\n // truncate time\n val = this.clone().startOf('day').valueOf();\n\n if (\n (eras[i].since <= val && val <= eras[i].until) ||\n (eras[i].until <= val && val <= eras[i].since)\n ) {\n return (\n (this.year() - hooks(eras[i].since).year()) * dir +\n eras[i].offset\n );\n }\n }\n\n return this.year();\n }\n\n function erasNameRegex(isStrict) {\n if (!hasOwnProp(this, '_erasNameRegex')) {\n computeErasParse.call(this);\n }\n return isStrict ? this._erasNameRegex : this._erasRegex;\n }\n\n function erasAbbrRegex(isStrict) {\n if (!hasOwnProp(this, '_erasAbbrRegex')) {\n computeErasParse.call(this);\n }\n return isStrict ? this._erasAbbrRegex : this._erasRegex;\n }\n\n function erasNarrowRegex(isStrict) {\n if (!hasOwnProp(this, '_erasNarrowRegex')) {\n computeErasParse.call(this);\n }\n return isStrict ? this._erasNarrowRegex : this._erasRegex;\n }\n\n function matchEraAbbr(isStrict, locale) {\n return locale.erasAbbrRegex(isStrict);\n }\n\n function matchEraName(isStrict, locale) {\n return locale.erasNameRegex(isStrict);\n }\n\n function matchEraNarrow(isStrict, locale) {\n return locale.erasNarrowRegex(isStrict);\n }\n\n function matchEraYearOrdinal(isStrict, locale) {\n return locale._eraYearOrdinalRegex || matchUnsigned;\n }\n\n function computeErasParse() {\n var abbrPieces = [],\n namePieces = [],\n narrowPieces = [],\n mixedPieces = [],\n i,\n l,\n eras = this.eras();\n\n for (i = 0, l = eras.length; i < l; ++i) {\n namePieces.push(regexEscape(eras[i].name));\n abbrPieces.push(regexEscape(eras[i].abbr));\n narrowPieces.push(regexEscape(eras[i].narrow));\n\n mixedPieces.push(regexEscape(eras[i].name));\n mixedPieces.push(regexEscape(eras[i].abbr));\n mixedPieces.push(regexEscape(eras[i].narrow));\n }\n\n this._erasRegex = new RegExp('^(' + mixedPieces.join('|') + ')', 'i');\n this._erasNameRegex = new RegExp('^(' + namePieces.join('|') + ')', 'i');\n this._erasAbbrRegex = new RegExp('^(' + abbrPieces.join('|') + ')', 'i');\n this._erasNarrowRegex = new RegExp(\n '^(' + narrowPieces.join('|') + ')',\n 'i'\n );\n }\n\n // FORMATTING\n\n addFormatToken(0, ['gg', 2], 0, function () {\n return this.weekYear() % 100;\n });\n\n addFormatToken(0, ['GG', 2], 0, function () {\n return this.isoWeekYear() % 100;\n });\n\n function addWeekYearFormatToken(token, getter) {\n addFormatToken(0, [token, token.length], 0, getter);\n }\n\n addWeekYearFormatToken('gggg', 'weekYear');\n addWeekYearFormatToken('ggggg', 'weekYear');\n addWeekYearFormatToken('GGGG', 'isoWeekYear');\n addWeekYearFormatToken('GGGGG', 'isoWeekYear');\n\n // ALIASES\n\n addUnitAlias('weekYear', 'gg');\n addUnitAlias('isoWeekYear', 'GG');\n\n // PRIORITY\n\n addUnitPriority('weekYear', 1);\n addUnitPriority('isoWeekYear', 1);\n\n // PARSING\n\n addRegexToken('G', matchSigned);\n addRegexToken('g', matchSigned);\n addRegexToken('GG', match1to2, match2);\n addRegexToken('gg', match1to2, match2);\n addRegexToken('GGGG', match1to4, match4);\n addRegexToken('gggg', match1to4, match4);\n addRegexToken('GGGGG', match1to6, match6);\n addRegexToken('ggggg', match1to6, match6);\n\n addWeekParseToken(\n ['gggg', 'ggggg', 'GGGG', 'GGGGG'],\n function (input, week, config, token) {\n week[token.substr(0, 2)] = toInt(input);\n }\n );\n\n addWeekParseToken(['gg', 'GG'], function (input, week, config, token) {\n week[token] = hooks.parseTwoDigitYear(input);\n });\n\n // MOMENTS\n\n function getSetWeekYear(input) {\n return getSetWeekYearHelper.call(\n this,\n input,\n this.week(),\n this.weekday(),\n this.localeData()._week.dow,\n this.localeData()._week.doy\n );\n }\n\n function getSetISOWeekYear(input) {\n return getSetWeekYearHelper.call(\n this,\n input,\n this.isoWeek(),\n this.isoWeekday(),\n 1,\n 4\n );\n }\n\n function getISOWeeksInYear() {\n return weeksInYear(this.year(), 1, 4);\n }\n\n function getISOWeeksInISOWeekYear() {\n return weeksInYear(this.isoWeekYear(), 1, 4);\n }\n\n function getWeeksInYear() {\n var weekInfo = this.localeData()._week;\n return weeksInYear(this.year(), weekInfo.dow, weekInfo.doy);\n }\n\n function getWeeksInWeekYear() {\n var weekInfo = this.localeData()._week;\n return weeksInYear(this.weekYear(), weekInfo.dow, weekInfo.doy);\n }\n\n function getSetWeekYearHelper(input, week, weekday, dow, doy) {\n var weeksTarget;\n if (input == null) {\n return weekOfYear(this, dow, doy).year;\n } else {\n weeksTarget = weeksInYear(input, dow, doy);\n if (week > weeksTarget) {\n week = weeksTarget;\n }\n return setWeekAll.call(this, input, week, weekday, dow, doy);\n }\n }\n\n function setWeekAll(weekYear, week, weekday, dow, doy) {\n var dayOfYearData = dayOfYearFromWeeks(weekYear, week, weekday, dow, doy),\n date = createUTCDate(dayOfYearData.year, 0, dayOfYearData.dayOfYear);\n\n this.year(date.getUTCFullYear());\n this.month(date.getUTCMonth());\n this.date(date.getUTCDate());\n return this;\n }\n\n // FORMATTING\n\n addFormatToken('Q', 0, 'Qo', 'quarter');\n\n // ALIASES\n\n addUnitAlias('quarter', 'Q');\n\n // PRIORITY\n\n addUnitPriority('quarter', 7);\n\n // PARSING\n\n addRegexToken('Q', match1);\n addParseToken('Q', function (input, array) {\n array[MONTH] = (toInt(input) - 1) * 3;\n });\n\n // MOMENTS\n\n function getSetQuarter(input) {\n return input == null\n ? Math.ceil((this.month() + 1) / 3)\n : this.month((input - 1) * 3 + (this.month() % 3));\n }\n\n // FORMATTING\n\n addFormatToken('D', ['DD', 2], 'Do', 'date');\n\n // ALIASES\n\n addUnitAlias('date', 'D');\n\n // PRIORITY\n addUnitPriority('date', 9);\n\n // PARSING\n\n addRegexToken('D', match1to2);\n addRegexToken('DD', match1to2, match2);\n addRegexToken('Do', function (isStrict, locale) {\n // TODO: Remove \"ordinalParse\" fallback in next major release.\n return isStrict\n ? locale._dayOfMonthOrdinalParse || locale._ordinalParse\n : locale._dayOfMonthOrdinalParseLenient;\n });\n\n addParseToken(['D', 'DD'], DATE);\n addParseToken('Do', function (input, array) {\n array[DATE] = toInt(input.match(match1to2)[0]);\n });\n\n // MOMENTS\n\n var getSetDayOfMonth = makeGetSet('Date', true);\n\n // FORMATTING\n\n addFormatToken('DDD', ['DDDD', 3], 'DDDo', 'dayOfYear');\n\n // ALIASES\n\n addUnitAlias('dayOfYear', 'DDD');\n\n // PRIORITY\n addUnitPriority('dayOfYear', 4);\n\n // PARSING\n\n addRegexToken('DDD', match1to3);\n addRegexToken('DDDD', match3);\n addParseToken(['DDD', 'DDDD'], function (input, array, config) {\n config._dayOfYear = toInt(input);\n });\n\n // HELPERS\n\n // MOMENTS\n\n function getSetDayOfYear(input) {\n var dayOfYear =\n Math.round(\n (this.clone().startOf('day') - this.clone().startOf('year')) / 864e5\n ) + 1;\n return input == null ? dayOfYear : this.add(input - dayOfYear, 'd');\n }\n\n // FORMATTING\n\n addFormatToken('m', ['mm', 2], 0, 'minute');\n\n // ALIASES\n\n addUnitAlias('minute', 'm');\n\n // PRIORITY\n\n addUnitPriority('minute', 14);\n\n // PARSING\n\n addRegexToken('m', match1to2);\n addRegexToken('mm', match1to2, match2);\n addParseToken(['m', 'mm'], MINUTE);\n\n // MOMENTS\n\n var getSetMinute = makeGetSet('Minutes', false);\n\n // FORMATTING\n\n addFormatToken('s', ['ss', 2], 0, 'second');\n\n // ALIASES\n\n addUnitAlias('second', 's');\n\n // PRIORITY\n\n addUnitPriority('second', 15);\n\n // PARSING\n\n addRegexToken('s', match1to2);\n addRegexToken('ss', match1to2, match2);\n addParseToken(['s', 'ss'], SECOND);\n\n // MOMENTS\n\n var getSetSecond = makeGetSet('Seconds', false);\n\n // FORMATTING\n\n addFormatToken('S', 0, 0, function () {\n return ~~(this.millisecond() / 100);\n });\n\n addFormatToken(0, ['SS', 2], 0, function () {\n return ~~(this.millisecond() / 10);\n });\n\n addFormatToken(0, ['SSS', 3], 0, 'millisecond');\n addFormatToken(0, ['SSSS', 4], 0, function () {\n return this.millisecond() * 10;\n });\n addFormatToken(0, ['SSSSS', 5], 0, function () {\n return this.millisecond() * 100;\n });\n addFormatToken(0, ['SSSSSS', 6], 0, function () {\n return this.millisecond() * 1000;\n });\n addFormatToken(0, ['SSSSSSS', 7], 0, function () {\n return this.millisecond() * 10000;\n });\n addFormatToken(0, ['SSSSSSSS', 8], 0, function () {\n return this.millisecond() * 100000;\n });\n addFormatToken(0, ['SSSSSSSSS', 9], 0, function () {\n return this.millisecond() * 1000000;\n });\n\n // ALIASES\n\n addUnitAlias('millisecond', 'ms');\n\n // PRIORITY\n\n addUnitPriority('millisecond', 16);\n\n // PARSING\n\n addRegexToken('S', match1to3, match1);\n addRegexToken('SS', match1to3, match2);\n addRegexToken('SSS', match1to3, match3);\n\n var token, getSetMillisecond;\n for (token = 'SSSS'; token.length <= 9; token += 'S') {\n addRegexToken(token, matchUnsigned);\n }\n\n function parseMs(input, array) {\n array[MILLISECOND] = toInt(('0.' + input) * 1000);\n }\n\n for (token = 'S'; token.length <= 9; token += 'S') {\n addParseToken(token, parseMs);\n }\n\n getSetMillisecond = makeGetSet('Milliseconds', false);\n\n // FORMATTING\n\n addFormatToken('z', 0, 0, 'zoneAbbr');\n addFormatToken('zz', 0, 0, 'zoneName');\n\n // MOMENTS\n\n function getZoneAbbr() {\n return this._isUTC ? 'UTC' : '';\n }\n\n function getZoneName() {\n return this._isUTC ? 'Coordinated Universal Time' : '';\n }\n\n var proto = Moment.prototype;\n\n proto.add = add;\n proto.calendar = calendar$1;\n proto.clone = clone;\n proto.diff = diff;\n proto.endOf = endOf;\n proto.format = format;\n proto.from = from;\n proto.fromNow = fromNow;\n proto.to = to;\n proto.toNow = toNow;\n proto.get = stringGet;\n proto.invalidAt = invalidAt;\n proto.isAfter = isAfter;\n proto.isBefore = isBefore;\n proto.isBetween = isBetween;\n proto.isSame = isSame;\n proto.isSameOrAfter = isSameOrAfter;\n proto.isSameOrBefore = isSameOrBefore;\n proto.isValid = isValid$2;\n proto.lang = lang;\n proto.locale = locale;\n proto.localeData = localeData;\n proto.max = prototypeMax;\n proto.min = prototypeMin;\n proto.parsingFlags = parsingFlags;\n proto.set = stringSet;\n proto.startOf = startOf;\n proto.subtract = subtract;\n proto.toArray = toArray;\n proto.toObject = toObject;\n proto.toDate = toDate;\n proto.toISOString = toISOString;\n proto.inspect = inspect;\n if (typeof Symbol !== 'undefined' && Symbol.for != null) {\n proto[Symbol.for('nodejs.util.inspect.custom')] = function () {\n return 'Moment<' + this.format() + '>';\n };\n }\n proto.toJSON = toJSON;\n proto.toString = toString;\n proto.unix = unix;\n proto.valueOf = valueOf;\n proto.creationData = creationData;\n proto.eraName = getEraName;\n proto.eraNarrow = getEraNarrow;\n proto.eraAbbr = getEraAbbr;\n proto.eraYear = getEraYear;\n proto.year = getSetYear;\n proto.isLeapYear = getIsLeapYear;\n proto.weekYear = getSetWeekYear;\n proto.isoWeekYear = getSetISOWeekYear;\n proto.quarter = proto.quarters = getSetQuarter;\n proto.month = getSetMonth;\n proto.daysInMonth = getDaysInMonth;\n proto.week = proto.weeks = getSetWeek;\n proto.isoWeek = proto.isoWeeks = getSetISOWeek;\n proto.weeksInYear = getWeeksInYear;\n proto.weeksInWeekYear = getWeeksInWeekYear;\n proto.isoWeeksInYear = getISOWeeksInYear;\n proto.isoWeeksInISOWeekYear = getISOWeeksInISOWeekYear;\n proto.date = getSetDayOfMonth;\n proto.day = proto.days = getSetDayOfWeek;\n proto.weekday = getSetLocaleDayOfWeek;\n proto.isoWeekday = getSetISODayOfWeek;\n proto.dayOfYear = getSetDayOfYear;\n proto.hour = proto.hours = getSetHour;\n proto.minute = proto.minutes = getSetMinute;\n proto.second = proto.seconds = getSetSecond;\n proto.millisecond = proto.milliseconds = getSetMillisecond;\n proto.utcOffset = getSetOffset;\n proto.utc = setOffsetToUTC;\n proto.local = setOffsetToLocal;\n proto.parseZone = setOffsetToParsedOffset;\n proto.hasAlignedHourOffset = hasAlignedHourOffset;\n proto.isDST = isDaylightSavingTime;\n proto.isLocal = isLocal;\n proto.isUtcOffset = isUtcOffset;\n proto.isUtc = isUtc;\n proto.isUTC = isUtc;\n proto.zoneAbbr = getZoneAbbr;\n proto.zoneName = getZoneName;\n proto.dates = deprecate(\n 'dates accessor is deprecated. Use date instead.',\n getSetDayOfMonth\n );\n proto.months = deprecate(\n 'months accessor is deprecated. Use month instead',\n getSetMonth\n );\n proto.years = deprecate(\n 'years accessor is deprecated. Use year instead',\n getSetYear\n );\n proto.zone = deprecate(\n 'moment().zone is deprecated, use moment().utcOffset instead. http://momentjs.com/guides/#/warnings/zone/',\n getSetZone\n );\n proto.isDSTShifted = deprecate(\n 'isDSTShifted is deprecated. See http://momentjs.com/guides/#/warnings/dst-shifted/ for more information',\n isDaylightSavingTimeShifted\n );\n\n function createUnix(input) {\n return createLocal(input * 1000);\n }\n\n function createInZone() {\n return createLocal.apply(null, arguments).parseZone();\n }\n\n function preParsePostFormat(string) {\n return string;\n }\n\n var proto$1 = Locale.prototype;\n\n proto$1.calendar = calendar;\n proto$1.longDateFormat = longDateFormat;\n proto$1.invalidDate = invalidDate;\n proto$1.ordinal = ordinal;\n proto$1.preparse = preParsePostFormat;\n proto$1.postformat = preParsePostFormat;\n proto$1.relativeTime = relativeTime;\n proto$1.pastFuture = pastFuture;\n proto$1.set = set;\n proto$1.eras = localeEras;\n proto$1.erasParse = localeErasParse;\n proto$1.erasConvertYear = localeErasConvertYear;\n proto$1.erasAbbrRegex = erasAbbrRegex;\n proto$1.erasNameRegex = erasNameRegex;\n proto$1.erasNarrowRegex = erasNarrowRegex;\n\n proto$1.months = localeMonths;\n proto$1.monthsShort = localeMonthsShort;\n proto$1.monthsParse = localeMonthsParse;\n proto$1.monthsRegex = monthsRegex;\n proto$1.monthsShortRegex = monthsShortRegex;\n proto$1.week = localeWeek;\n proto$1.firstDayOfYear = localeFirstDayOfYear;\n proto$1.firstDayOfWeek = localeFirstDayOfWeek;\n\n proto$1.weekdays = localeWeekdays;\n proto$1.weekdaysMin = localeWeekdaysMin;\n proto$1.weekdaysShort = localeWeekdaysShort;\n proto$1.weekdaysParse = localeWeekdaysParse;\n\n proto$1.weekdaysRegex = weekdaysRegex;\n proto$1.weekdaysShortRegex = weekdaysShortRegex;\n proto$1.weekdaysMinRegex = weekdaysMinRegex;\n\n proto$1.isPM = localeIsPM;\n proto$1.meridiem = localeMeridiem;\n\n function get$1(format, index, field, setter) {\n var locale = getLocale(),\n utc = createUTC().set(setter, index);\n return locale[field](utc, format);\n }\n\n function listMonthsImpl(format, index, field) {\n if (isNumber(format)) {\n index = format;\n format = undefined;\n }\n\n format = format || '';\n\n if (index != null) {\n return get$1(format, index, field, 'month');\n }\n\n var i,\n out = [];\n for (i = 0; i < 12; i++) {\n out[i] = get$1(format, i, field, 'month');\n }\n return out;\n }\n\n // ()\n // (5)\n // (fmt, 5)\n // (fmt)\n // (true)\n // (true, 5)\n // (true, fmt, 5)\n // (true, fmt)\n function listWeekdaysImpl(localeSorted, format, index, field) {\n if (typeof localeSorted === 'boolean') {\n if (isNumber(format)) {\n index = format;\n format = undefined;\n }\n\n format = format || '';\n } else {\n format = localeSorted;\n index = format;\n localeSorted = false;\n\n if (isNumber(format)) {\n index = format;\n format = undefined;\n }\n\n format = format || '';\n }\n\n var locale = getLocale(),\n shift = localeSorted ? locale._week.dow : 0,\n i,\n out = [];\n\n if (index != null) {\n return get$1(format, (index + shift) % 7, field, 'day');\n }\n\n for (i = 0; i < 7; i++) {\n out[i] = get$1(format, (i + shift) % 7, field, 'day');\n }\n return out;\n }\n\n function listMonths(format, index) {\n return listMonthsImpl(format, index, 'months');\n }\n\n function listMonthsShort(format, index) {\n return listMonthsImpl(format, index, 'monthsShort');\n }\n\n function listWeekdays(localeSorted, format, index) {\n return listWeekdaysImpl(localeSorted, format, index, 'weekdays');\n }\n\n function listWeekdaysShort(localeSorted, format, index) {\n return listWeekdaysImpl(localeSorted, format, index, 'weekdaysShort');\n }\n\n function listWeekdaysMin(localeSorted, format, index) {\n return listWeekdaysImpl(localeSorted, format, index, 'weekdaysMin');\n }\n\n getSetGlobalLocale('en', {\n eras: [\n {\n since: '0001-01-01',\n until: +Infinity,\n offset: 1,\n name: 'Anno Domini',\n narrow: 'AD',\n abbr: 'AD',\n },\n {\n since: '0000-12-31',\n until: -Infinity,\n offset: 1,\n name: 'Before Christ',\n narrow: 'BC',\n abbr: 'BC',\n },\n ],\n dayOfMonthOrdinalParse: /\\d{1,2}(th|st|nd|rd)/,\n ordinal: function (number) {\n var b = number % 10,\n output =\n toInt((number % 100) / 10) === 1\n ? 'th'\n : b === 1\n ? 'st'\n : b === 2\n ? 'nd'\n : b === 3\n ? 'rd'\n : 'th';\n return number + output;\n },\n });\n\n // Side effect imports\n\n hooks.lang = deprecate(\n 'moment.lang is deprecated. Use moment.locale instead.',\n getSetGlobalLocale\n );\n hooks.langData = deprecate(\n 'moment.langData is deprecated. Use moment.localeData instead.',\n getLocale\n );\n\n var mathAbs = Math.abs;\n\n function abs() {\n var data = this._data;\n\n this._milliseconds = mathAbs(this._milliseconds);\n this._days = mathAbs(this._days);\n this._months = mathAbs(this._months);\n\n data.milliseconds = mathAbs(data.milliseconds);\n data.seconds = mathAbs(data.seconds);\n data.minutes = mathAbs(data.minutes);\n data.hours = mathAbs(data.hours);\n data.months = mathAbs(data.months);\n data.years = mathAbs(data.years);\n\n return this;\n }\n\n function addSubtract$1(duration, input, value, direction) {\n var other = createDuration(input, value);\n\n duration._milliseconds += direction * other._milliseconds;\n duration._days += direction * other._days;\n duration._months += direction * other._months;\n\n return duration._bubble();\n }\n\n // supports only 2.0-style add(1, 's') or add(duration)\n function add$1(input, value) {\n return addSubtract$1(this, input, value, 1);\n }\n\n // supports only 2.0-style subtract(1, 's') or subtract(duration)\n function subtract$1(input, value) {\n return addSubtract$1(this, input, value, -1);\n }\n\n function absCeil(number) {\n if (number < 0) {\n return Math.floor(number);\n } else {\n return Math.ceil(number);\n }\n }\n\n function bubble() {\n var milliseconds = this._milliseconds,\n days = this._days,\n months = this._months,\n data = this._data,\n seconds,\n minutes,\n hours,\n years,\n monthsFromDays;\n\n // if we have a mix of positive and negative values, bubble down first\n // check: https://github.com/moment/moment/issues/2166\n if (\n !(\n (milliseconds >= 0 && days >= 0 && months >= 0) ||\n (milliseconds <= 0 && days <= 0 && months <= 0)\n )\n ) {\n milliseconds += absCeil(monthsToDays(months) + days) * 864e5;\n days = 0;\n months = 0;\n }\n\n // The following code bubbles up values, see the tests for\n // examples of what that means.\n data.milliseconds = milliseconds % 1000;\n\n seconds = absFloor(milliseconds / 1000);\n data.seconds = seconds % 60;\n\n minutes = absFloor(seconds / 60);\n data.minutes = minutes % 60;\n\n hours = absFloor(minutes / 60);\n data.hours = hours % 24;\n\n days += absFloor(hours / 24);\n\n // convert days to months\n monthsFromDays = absFloor(daysToMonths(days));\n months += monthsFromDays;\n days -= absCeil(monthsToDays(monthsFromDays));\n\n // 12 months -> 1 year\n years = absFloor(months / 12);\n months %= 12;\n\n data.days = days;\n data.months = months;\n data.years = years;\n\n return this;\n }\n\n function daysToMonths(days) {\n // 400 years have 146097 days (taking into account leap year rules)\n // 400 years have 12 months === 4800\n return (days * 4800) / 146097;\n }\n\n function monthsToDays(months) {\n // the reverse of daysToMonths\n return (months * 146097) / 4800;\n }\n\n function as(units) {\n if (!this.isValid()) {\n return NaN;\n }\n var days,\n months,\n milliseconds = this._milliseconds;\n\n units = normalizeUnits(units);\n\n if (units === 'month' || units === 'quarter' || units === 'year') {\n days = this._days + milliseconds / 864e5;\n months = this._months + daysToMonths(days);\n switch (units) {\n case 'month':\n return months;\n case 'quarter':\n return months / 3;\n case 'year':\n return months / 12;\n }\n } else {\n // handle milliseconds separately because of floating point math errors (issue #1867)\n days = this._days + Math.round(monthsToDays(this._months));\n switch (units) {\n case 'week':\n return days / 7 + milliseconds / 6048e5;\n case 'day':\n return days + milliseconds / 864e5;\n case 'hour':\n return days * 24 + milliseconds / 36e5;\n case 'minute':\n return days * 1440 + milliseconds / 6e4;\n case 'second':\n return days * 86400 + milliseconds / 1000;\n // Math.floor prevents floating point math errors here\n case 'millisecond':\n return Math.floor(days * 864e5) + milliseconds;\n default:\n throw new Error('Unknown unit ' + units);\n }\n }\n }\n\n // TODO: Use this.as('ms')?\n function valueOf$1() {\n if (!this.isValid()) {\n return NaN;\n }\n return (\n this._milliseconds +\n this._days * 864e5 +\n (this._months % 12) * 2592e6 +\n toInt(this._months / 12) * 31536e6\n );\n }\n\n function makeAs(alias) {\n return function () {\n return this.as(alias);\n };\n }\n\n var asMilliseconds = makeAs('ms'),\n asSeconds = makeAs('s'),\n asMinutes = makeAs('m'),\n asHours = makeAs('h'),\n asDays = makeAs('d'),\n asWeeks = makeAs('w'),\n asMonths = makeAs('M'),\n asQuarters = makeAs('Q'),\n asYears = makeAs('y');\n\n function clone$1() {\n return createDuration(this);\n }\n\n function get$2(units) {\n units = normalizeUnits(units);\n return this.isValid() ? this[units + 's']() : NaN;\n }\n\n function makeGetter(name) {\n return function () {\n return this.isValid() ? this._data[name] : NaN;\n };\n }\n\n var milliseconds = makeGetter('milliseconds'),\n seconds = makeGetter('seconds'),\n minutes = makeGetter('minutes'),\n hours = makeGetter('hours'),\n days = makeGetter('days'),\n months = makeGetter('months'),\n years = makeGetter('years');\n\n function weeks() {\n return absFloor(this.days() / 7);\n }\n\n var round = Math.round,\n thresholds = {\n ss: 44, // a few seconds to seconds\n s: 45, // seconds to minute\n m: 45, // minutes to hour\n h: 22, // hours to day\n d: 26, // days to month/week\n w: null, // weeks to month\n M: 11, // months to year\n };\n\n // helper function for moment.fn.from, moment.fn.fromNow, and moment.duration.fn.humanize\n function substituteTimeAgo(string, number, withoutSuffix, isFuture, locale) {\n return locale.relativeTime(number || 1, !!withoutSuffix, string, isFuture);\n }\n\n function relativeTime$1(posNegDuration, withoutSuffix, thresholds, locale) {\n var duration = createDuration(posNegDuration).abs(),\n seconds = round(duration.as('s')),\n minutes = round(duration.as('m')),\n hours = round(duration.as('h')),\n days = round(duration.as('d')),\n months = round(duration.as('M')),\n weeks = round(duration.as('w')),\n years = round(duration.as('y')),\n a =\n (seconds <= thresholds.ss && ['s', seconds]) ||\n (seconds < thresholds.s && ['ss', seconds]) ||\n (minutes <= 1 && ['m']) ||\n (minutes < thresholds.m && ['mm', minutes]) ||\n (hours <= 1 && ['h']) ||\n (hours < thresholds.h && ['hh', hours]) ||\n (days <= 1 && ['d']) ||\n (days < thresholds.d && ['dd', days]);\n\n if (thresholds.w != null) {\n a =\n a ||\n (weeks <= 1 && ['w']) ||\n (weeks < thresholds.w && ['ww', weeks]);\n }\n a = a ||\n (months <= 1 && ['M']) ||\n (months < thresholds.M && ['MM', months]) ||\n (years <= 1 && ['y']) || ['yy', years];\n\n a[2] = withoutSuffix;\n a[3] = +posNegDuration > 0;\n a[4] = locale;\n return substituteTimeAgo.apply(null, a);\n }\n\n // This function allows you to set the rounding function for relative time strings\n function getSetRelativeTimeRounding(roundingFunction) {\n if (roundingFunction === undefined) {\n return round;\n }\n if (typeof roundingFunction === 'function') {\n round = roundingFunction;\n return true;\n }\n return false;\n }\n\n // This function allows you to set a threshold for relative time strings\n function getSetRelativeTimeThreshold(threshold, limit) {\n if (thresholds[threshold] === undefined) {\n return false;\n }\n if (limit === undefined) {\n return thresholds[threshold];\n }\n thresholds[threshold] = limit;\n if (threshold === 's') {\n thresholds.ss = limit - 1;\n }\n return true;\n }\n\n function humanize(argWithSuffix, argThresholds) {\n if (!this.isValid()) {\n return this.localeData().invalidDate();\n }\n\n var withSuffix = false,\n th = thresholds,\n locale,\n output;\n\n if (typeof argWithSuffix === 'object') {\n argThresholds = argWithSuffix;\n argWithSuffix = false;\n }\n if (typeof argWithSuffix === 'boolean') {\n withSuffix = argWithSuffix;\n }\n if (typeof argThresholds === 'object') {\n th = Object.assign({}, thresholds, argThresholds);\n if (argThresholds.s != null && argThresholds.ss == null) {\n th.ss = argThresholds.s - 1;\n }\n }\n\n locale = this.localeData();\n output = relativeTime$1(this, !withSuffix, th, locale);\n\n if (withSuffix) {\n output = locale.pastFuture(+this, output);\n }\n\n return locale.postformat(output);\n }\n\n var abs$1 = Math.abs;\n\n function sign(x) {\n return (x > 0) - (x < 0) || +x;\n }\n\n function toISOString$1() {\n // for ISO strings we do not use the normal bubbling rules:\n // * milliseconds bubble up until they become hours\n // * days do not bubble at all\n // * months bubble up until they become years\n // This is because there is no context-free conversion between hours and days\n // (think of clock changes)\n // and also not between days and months (28-31 days per month)\n if (!this.isValid()) {\n return this.localeData().invalidDate();\n }\n\n var seconds = abs$1(this._milliseconds) / 1000,\n days = abs$1(this._days),\n months = abs$1(this._months),\n minutes,\n hours,\n years,\n s,\n total = this.asSeconds(),\n totalSign,\n ymSign,\n daysSign,\n hmsSign;\n\n if (!total) {\n // this is the same as C#'s (Noda) and python (isodate)...\n // but not other JS (goog.date)\n return 'P0D';\n }\n\n // 3600 seconds -> 60 minutes -> 1 hour\n minutes = absFloor(seconds / 60);\n hours = absFloor(minutes / 60);\n seconds %= 60;\n minutes %= 60;\n\n // 12 months -> 1 year\n years = absFloor(months / 12);\n months %= 12;\n\n // inspired by https://github.com/dordille/moment-isoduration/blob/master/moment.isoduration.js\n s = seconds ? seconds.toFixed(3).replace(/\\.?0+$/, '') : '';\n\n totalSign = total < 0 ? '-' : '';\n ymSign = sign(this._months) !== sign(total) ? '-' : '';\n daysSign = sign(this._days) !== sign(total) ? '-' : '';\n hmsSign = sign(this._milliseconds) !== sign(total) ? '-' : '';\n\n return (\n totalSign +\n 'P' +\n (years ? ymSign + years + 'Y' : '') +\n (months ? ymSign + months + 'M' : '') +\n (days ? daysSign + days + 'D' : '') +\n (hours || minutes || seconds ? 'T' : '') +\n (hours ? hmsSign + hours + 'H' : '') +\n (minutes ? hmsSign + minutes + 'M' : '') +\n (seconds ? hmsSign + s + 'S' : '')\n );\n }\n\n var proto$2 = Duration.prototype;\n\n proto$2.isValid = isValid$1;\n proto$2.abs = abs;\n proto$2.add = add$1;\n proto$2.subtract = subtract$1;\n proto$2.as = as;\n proto$2.asMilliseconds = asMilliseconds;\n proto$2.asSeconds = asSeconds;\n proto$2.asMinutes = asMinutes;\n proto$2.asHours = asHours;\n proto$2.asDays = asDays;\n proto$2.asWeeks = asWeeks;\n proto$2.asMonths = asMonths;\n proto$2.asQuarters = asQuarters;\n proto$2.asYears = asYears;\n proto$2.valueOf = valueOf$1;\n proto$2._bubble = bubble;\n proto$2.clone = clone$1;\n proto$2.get = get$2;\n proto$2.milliseconds = milliseconds;\n proto$2.seconds = seconds;\n proto$2.minutes = minutes;\n proto$2.hours = hours;\n proto$2.days = days;\n proto$2.weeks = weeks;\n proto$2.months = months;\n proto$2.years = years;\n proto$2.humanize = humanize;\n proto$2.toISOString = toISOString$1;\n proto$2.toString = toISOString$1;\n proto$2.toJSON = toISOString$1;\n proto$2.locale = locale;\n proto$2.localeData = localeData;\n\n proto$2.toIsoString = deprecate(\n 'toIsoString() is deprecated. Please use toISOString() instead (notice the capitals)',\n toISOString$1\n );\n proto$2.lang = lang;\n\n // FORMATTING\n\n addFormatToken('X', 0, 0, 'unix');\n addFormatToken('x', 0, 0, 'valueOf');\n\n // PARSING\n\n addRegexToken('x', matchSigned);\n addRegexToken('X', matchTimestamp);\n addParseToken('X', function (input, array, config) {\n config._d = new Date(parseFloat(input) * 1000);\n });\n addParseToken('x', function (input, array, config) {\n config._d = new Date(toInt(input));\n });\n\n //! moment.js\n\n hooks.version = '2.29.4';\n\n setHookCallback(createLocal);\n\n hooks.fn = proto;\n hooks.min = min;\n hooks.max = max;\n hooks.now = now;\n hooks.utc = createUTC;\n hooks.unix = createUnix;\n hooks.months = listMonths;\n hooks.isDate = isDate;\n hooks.locale = getSetGlobalLocale;\n hooks.invalid = createInvalid;\n hooks.duration = createDuration;\n hooks.isMoment = isMoment;\n hooks.weekdays = listWeekdays;\n hooks.parseZone = createInZone;\n hooks.localeData = getLocale;\n hooks.isDuration = isDuration;\n hooks.monthsShort = listMonthsShort;\n hooks.weekdaysMin = listWeekdaysMin;\n hooks.defineLocale = defineLocale;\n hooks.updateLocale = updateLocale;\n hooks.locales = listLocales;\n hooks.weekdaysShort = listWeekdaysShort;\n hooks.normalizeUnits = normalizeUnits;\n hooks.relativeTimeRounding = getSetRelativeTimeRounding;\n hooks.relativeTimeThreshold = getSetRelativeTimeThreshold;\n hooks.calendarFormat = getCalendarFormat;\n hooks.prototype = proto;\n\n // currently HTML5 input type only supports 24-hour formats\n hooks.HTML5_FMT = {\n DATETIME_LOCAL: 'YYYY-MM-DDTHH:mm', // <input type=\"datetime-local\" />\n DATETIME_LOCAL_SECONDS: 'YYYY-MM-DDTHH:mm:ss', // <input type=\"datetime-local\" step=\"1\" />\n DATETIME_LOCAL_MS: 'YYYY-MM-DDTHH:mm:ss.SSS', // <input type=\"datetime-local\" step=\"0.001\" />\n DATE: 'YYYY-MM-DD', // <input type=\"date\" />\n TIME: 'HH:mm', // <input type=\"time\" />\n TIME_SECONDS: 'HH:mm:ss', // <input type=\"time\" step=\"1\" />\n TIME_MS: 'HH:mm:ss.SSS', // <input type=\"time\" step=\"0.001\" />\n WEEK: 'GGGG-[W]WW', // <input type=\"week\" />\n MONTH: 'YYYY-MM', // <input type=\"month\" />\n };\n\n return hooks;\n\n})));\n","/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n if (typeof b !== \"function\" && b !== null)\r\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport var __createBinding = Object.create ? (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });\r\n}) : (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n o[k2] = m[k];\r\n});\r\n\r\nexport function __exportStar(m, o) {\r\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);\r\n}\r\n\r\nexport function __values(o) {\r\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n if (m) return m.call(o);\r\n if (o && typeof o.length === \"number\") return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n}\r\n\r\nexport function __spreadArray(to, from) {\r\n for (var i = 0, il = from.length, j = to.length; i < il; i++, j++)\r\n to[j] = from[i];\r\n return to;\r\n}\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === \"return\" } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nvar __setModuleDefault = Object.create ? (function(o, v) {\r\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\r\n}) : function(o, v) {\r\n o[\"default\"] = v;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\r\n __setModuleDefault(result, mod);\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n\r\nexport function __classPrivateFieldGet(receiver, privateMap) {\r\n if (!privateMap.has(receiver)) {\r\n throw new TypeError(\"attempted to get private field on non-instance\");\r\n }\r\n return privateMap.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, privateMap, value) {\r\n if (!privateMap.has(receiver)) {\r\n throw new TypeError(\"attempted to set private field on non-instance\");\r\n }\r\n privateMap.set(receiver, value);\r\n return value;\r\n}\r\n","export function isFunction(value) {\n return typeof value === 'function';\n}\n//# sourceMappingURL=isFunction.js.map","export function createErrorClass(createImpl) {\n var _super = function (instance) {\n Error.call(instance);\n instance.stack = new Error().stack;\n };\n var ctorFunc = createImpl(_super);\n ctorFunc.prototype = Object.create(Error.prototype);\n ctorFunc.prototype.constructor = ctorFunc;\n return ctorFunc;\n}\n//# sourceMappingURL=createErrorClass.js.map","import { createErrorClass } from './createErrorClass';\nexport var UnsubscriptionError = createErrorClass(function (_super) {\n return function UnsubscriptionErrorImpl(errors) {\n _super(this);\n this.message = errors\n ? errors.length + \" errors occurred during unsubscription:\\n\" + errors.map(function (err, i) { return i + 1 + \") \" + err.toString(); }).join('\\n ')\n : '';\n this.name = 'UnsubscriptionError';\n this.errors = errors;\n };\n});\n//# sourceMappingURL=UnsubscriptionError.js.map","export function arrRemove(arr, item) {\n if (arr) {\n var index = arr.indexOf(item);\n 0 <= index && arr.splice(index, 1);\n }\n}\n//# sourceMappingURL=arrRemove.js.map","import { __read, __spreadArray, __values } from \"tslib\";\nimport { isFunction } from './util/isFunction';\nimport { UnsubscriptionError } from './util/UnsubscriptionError';\nimport { arrRemove } from './util/arrRemove';\nvar Subscription = (function () {\n function Subscription(initialTeardown) {\n this.initialTeardown = initialTeardown;\n this.closed = false;\n this._parentage = null;\n this._teardowns = null;\n }\n Subscription.prototype.unsubscribe = function () {\n var e_1, _a, e_2, _b;\n var errors;\n if (!this.closed) {\n this.closed = true;\n var _parentage = this._parentage;\n if (_parentage) {\n this._parentage = null;\n if (Array.isArray(_parentage)) {\n try {\n for (var _parentage_1 = __values(_parentage), _parentage_1_1 = _parentage_1.next(); !_parentage_1_1.done; _parentage_1_1 = _parentage_1.next()) {\n var parent_1 = _parentage_1_1.value;\n parent_1.remove(this);\n }\n }\n catch (e_1_1) { e_1 = { error: e_1_1 }; }\n finally {\n try {\n if (_parentage_1_1 && !_parentage_1_1.done && (_a = _parentage_1.return)) _a.call(_parentage_1);\n }\n finally { if (e_1) throw e_1.error; }\n }\n }\n else {\n _parentage.remove(this);\n }\n }\n var initialTeardown = this.initialTeardown;\n if (isFunction(initialTeardown)) {\n try {\n initialTeardown();\n }\n catch (e) {\n errors = e instanceof UnsubscriptionError ? e.errors : [e];\n }\n }\n var _teardowns = this._teardowns;\n if (_teardowns) {\n this._teardowns = null;\n try {\n for (var _teardowns_1 = __values(_teardowns), _teardowns_1_1 = _teardowns_1.next(); !_teardowns_1_1.done; _teardowns_1_1 = _teardowns_1.next()) {\n var teardown_1 = _teardowns_1_1.value;\n try {\n execTeardown(teardown_1);\n }\n catch (err) {\n errors = errors !== null && errors !== void 0 ? errors : [];\n if (err instanceof UnsubscriptionError) {\n errors = __spreadArray(__spreadArray([], __read(errors)), __read(err.errors));\n }\n else {\n errors.push(err);\n }\n }\n }\n }\n catch (e_2_1) { e_2 = { error: e_2_1 }; }\n finally {\n try {\n if (_teardowns_1_1 && !_teardowns_1_1.done && (_b = _teardowns_1.return)) _b.call(_teardowns_1);\n }\n finally { if (e_2) throw e_2.error; }\n }\n }\n if (errors) {\n throw new UnsubscriptionError(errors);\n }\n }\n };\n Subscription.prototype.add = function (teardown) {\n var _a;\n if (teardown && teardown !== this) {\n if (this.closed) {\n execTeardown(teardown);\n }\n else {\n if (teardown instanceof Subscription) {\n if (teardown.closed || teardown._hasParent(this)) {\n return;\n }\n teardown._addParent(this);\n }\n (this._teardowns = (_a = this._teardowns) !== null && _a !== void 0 ? _a : []).push(teardown);\n }\n }\n };\n Subscription.prototype._hasParent = function (parent) {\n var _parentage = this._parentage;\n return _parentage === parent || (Array.isArray(_parentage) && _parentage.includes(parent));\n };\n Subscription.prototype._addParent = function (parent) {\n var _parentage = this._parentage;\n this._parentage = Array.isArray(_parentage) ? (_parentage.push(parent), _parentage) : _parentage ? [_parentage, parent] : parent;\n };\n Subscription.prototype._removeParent = function (parent) {\n var _parentage = this._parentage;\n if (_parentage === parent) {\n this._parentage = null;\n }\n else if (Array.isArray(_parentage)) {\n arrRemove(_parentage, parent);\n }\n };\n Subscription.prototype.remove = function (teardown) {\n var _teardowns = this._teardowns;\n _teardowns && arrRemove(_teardowns, teardown);\n if (teardown instanceof Subscription) {\n teardown._removeParent(this);\n }\n };\n Subscription.EMPTY = (function () {\n var empty = new Subscription();\n empty.closed = true;\n return empty;\n })();\n return Subscription;\n}());\nexport { Subscription };\nexport var EMPTY_SUBSCRIPTION = Subscription.EMPTY;\nexport function isSubscription(value) {\n return (value instanceof Subscription ||\n (value && 'closed' in value && isFunction(value.remove) && isFunction(value.add) && isFunction(value.unsubscribe)));\n}\nfunction execTeardown(teardown) {\n if (isFunction(teardown)) {\n teardown();\n }\n else {\n teardown.unsubscribe();\n }\n}\n//# sourceMappingURL=Subscription.js.map","export var config = {\n onUnhandledError: null,\n onStoppedNotification: null,\n Promise: undefined,\n useDeprecatedSynchronousErrorHandling: false,\n useDeprecatedNextContext: false,\n};\n//# sourceMappingURL=config.js.map","import { __read, __spreadArray } from \"tslib\";\nexport var timeoutProvider = {\n setTimeout: function () {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n var delegate = timeoutProvider.delegate;\n return ((delegate === null || delegate === void 0 ? void 0 : delegate.setTimeout) || setTimeout).apply(void 0, __spreadArray([], __read(args)));\n },\n clearTimeout: function (handle) {\n var delegate = timeoutProvider.delegate;\n return ((delegate === null || delegate === void 0 ? void 0 : delegate.clearTimeout) || clearTimeout)(handle);\n },\n delegate: undefined,\n};\n//# sourceMappingURL=timeoutProvider.js.map","import { config } from '../config';\nimport { timeoutProvider } from '../scheduler/timeoutProvider';\nexport function reportUnhandledError(err) {\n timeoutProvider.setTimeout(function () {\n var onUnhandledError = config.onUnhandledError;\n if (onUnhandledError) {\n onUnhandledError(err);\n }\n else {\n throw err;\n }\n });\n}\n//# sourceMappingURL=reportUnhandledError.js.map","export function noop() { }\n//# sourceMappingURL=noop.js.map","export var COMPLETE_NOTIFICATION = (function () { return createNotification('C', undefined, undefined); })();\nexport function errorNotification(error) {\n return createNotification('E', undefined, error);\n}\nexport function nextNotification(value) {\n return createNotification('N', value, undefined);\n}\nexport function createNotification(kind, value, error) {\n return {\n kind: kind,\n value: value,\n error: error,\n };\n}\n//# sourceMappingURL=NotificationFactories.js.map","import { config } from '../config';\nvar context = null;\nexport function errorContext(cb) {\n if (config.useDeprecatedSynchronousErrorHandling) {\n var isRoot = !context;\n if (isRoot) {\n context = { errorThrown: false, error: null };\n }\n cb();\n if (isRoot) {\n var _a = context, errorThrown = _a.errorThrown, error = _a.error;\n context = null;\n if (errorThrown) {\n throw error;\n }\n }\n }\n else {\n cb();\n }\n}\nexport function captureError(err) {\n if (config.useDeprecatedSynchronousErrorHandling && context) {\n context.errorThrown = true;\n context.error = err;\n }\n}\n//# sourceMappingURL=errorContext.js.map","import { __extends, __read, __spreadArray } from \"tslib\";\nimport { isFunction } from './util/isFunction';\nimport { isSubscription, Subscription } from './Subscription';\nimport { config } from './config';\nimport { reportUnhandledError } from './util/reportUnhandledError';\nimport { noop } from './util/noop';\nimport { nextNotification, errorNotification, COMPLETE_NOTIFICATION } from './NotificationFactories';\nimport { timeoutProvider } from './scheduler/timeoutProvider';\nimport { captureError } from './util/errorContext';\nvar Subscriber = (function (_super) {\n __extends(Subscriber, _super);\n function Subscriber(destination) {\n var _this = _super.call(this) || this;\n _this.isStopped = false;\n if (destination) {\n _this.destination = destination;\n if (isSubscription(destination)) {\n destination.add(_this);\n }\n }\n else {\n _this.destination = EMPTY_OBSERVER;\n }\n return _this;\n }\n Subscriber.create = function (next, error, complete) {\n return new SafeSubscriber(next, error, complete);\n };\n Subscriber.prototype.next = function (value) {\n if (this.isStopped) {\n handleStoppedNotification(nextNotification(value), this);\n }\n else {\n this._next(value);\n }\n };\n Subscriber.prototype.error = function (err) {\n if (this.isStopped) {\n handleStoppedNotification(errorNotification(err), this);\n }\n else {\n this.isStopped = true;\n this._error(err);\n }\n };\n Subscriber.prototype.complete = function () {\n if (this.isStopped) {\n handleStoppedNotification(COMPLETE_NOTIFICATION, this);\n }\n else {\n this.isStopped = true;\n this._complete();\n }\n };\n Subscriber.prototype.unsubscribe = function () {\n if (!this.closed) {\n this.isStopped = true;\n _super.prototype.unsubscribe.call(this);\n this.destination = null;\n }\n };\n Subscriber.prototype._next = function (value) {\n this.destination.next(value);\n };\n Subscriber.prototype._error = function (err) {\n try {\n this.destination.error(err);\n }\n finally {\n this.unsubscribe();\n }\n };\n Subscriber.prototype._complete = function () {\n try {\n this.destination.complete();\n }\n finally {\n this.unsubscribe();\n }\n };\n return Subscriber;\n}(Subscription));\nexport { Subscriber };\nvar SafeSubscriber = (function (_super) {\n __extends(SafeSubscriber, _super);\n function SafeSubscriber(observerOrNext, error, complete) {\n var _this = _super.call(this) || this;\n var next;\n if (isFunction(observerOrNext)) {\n next = observerOrNext;\n }\n else if (observerOrNext) {\n (next = observerOrNext.next, error = observerOrNext.error, complete = observerOrNext.complete);\n var context_1;\n if (_this && config.useDeprecatedNextContext) {\n context_1 = Object.create(observerOrNext);\n context_1.unsubscribe = function () { return _this.unsubscribe(); };\n }\n else {\n context_1 = observerOrNext;\n }\n next = next === null || next === void 0 ? void 0 : next.bind(context_1);\n error = error === null || error === void 0 ? void 0 : error.bind(context_1);\n complete = complete === null || complete === void 0 ? void 0 : complete.bind(context_1);\n }\n _this.destination = {\n next: next ? wrapForErrorHandling(next, _this) : noop,\n error: wrapForErrorHandling(error !== null && error !== void 0 ? error : defaultErrorHandler, _this),\n complete: complete ? wrapForErrorHandling(complete, _this) : noop,\n };\n return _this;\n }\n return SafeSubscriber;\n}(Subscriber));\nexport { SafeSubscriber };\nfunction wrapForErrorHandling(handler, instance) {\n return function () {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n try {\n handler.apply(void 0, __spreadArray([], __read(args)));\n }\n catch (err) {\n if (config.useDeprecatedSynchronousErrorHandling) {\n captureError(err);\n }\n else {\n reportUnhandledError(err);\n }\n }\n };\n}\nfunction defaultErrorHandler(err) {\n throw err;\n}\nfunction handleStoppedNotification(notification, subscriber) {\n var onStoppedNotification = config.onStoppedNotification;\n onStoppedNotification && timeoutProvider.setTimeout(function () { return onStoppedNotification(notification, subscriber); });\n}\nexport var EMPTY_OBSERVER = {\n closed: true,\n next: noop,\n error: defaultErrorHandler,\n complete: noop,\n};\n//# sourceMappingURL=Subscriber.js.map","export var observable = (function () { return (typeof Symbol === 'function' && Symbol.observable) || '@@observable'; })();\n//# sourceMappingURL=observable.js.map","export function identity(x) {\n return x;\n}\n//# sourceMappingURL=identity.js.map","import { identity } from './identity';\nexport function pipe() {\n var fns = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n fns[_i] = arguments[_i];\n }\n return pipeFromArray(fns);\n}\nexport function pipeFromArray(fns) {\n if (fns.length === 0) {\n return identity;\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}\n//# sourceMappingURL=pipe.js.map","import { SafeSubscriber, Subscriber } from './Subscriber';\nimport { isSubscription } from './Subscription';\nimport { observable as Symbol_observable } from './symbol/observable';\nimport { pipeFromArray } from './util/pipe';\nimport { config } from './config';\nimport { isFunction } from './util/isFunction';\nimport { errorContext } from './util/errorContext';\nvar Observable = (function () {\n function Observable(subscribe) {\n if (subscribe) {\n this._subscribe = subscribe;\n }\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 Observable.prototype.subscribe = function (observerOrNext, error, complete) {\n var _this = this;\n var subscriber = isSubscriber(observerOrNext) ? observerOrNext : new SafeSubscriber(observerOrNext, error, complete);\n errorContext(function () {\n var _a = _this, operator = _a.operator, source = _a.source;\n subscriber.add(operator\n ?\n operator.call(subscriber, source)\n : source\n ?\n _this._subscribe(subscriber)\n :\n _this._trySubscribe(subscriber));\n });\n return subscriber;\n };\n Observable.prototype._trySubscribe = function (sink) {\n try {\n return this._subscribe(sink);\n }\n catch (err) {\n sink.error(err);\n }\n };\n Observable.prototype.forEach = function (next, promiseCtor) {\n var _this = this;\n promiseCtor = getPromiseCtor(promiseCtor);\n return new promiseCtor(function (resolve, reject) {\n var subscription;\n subscription = _this.subscribe(function (value) {\n try {\n next(value);\n }\n catch (err) {\n reject(err);\n subscription === null || subscription === void 0 ? void 0 : subscription.unsubscribe();\n }\n }, reject, resolve);\n });\n };\n Observable.prototype._subscribe = function (subscriber) {\n var _a;\n return (_a = this.source) === null || _a === void 0 ? void 0 : _a.subscribe(subscriber);\n };\n Observable.prototype[Symbol_observable] = function () {\n return this;\n };\n Observable.prototype.pipe = function () {\n var operations = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n operations[_i] = arguments[_i];\n }\n return pipeFromArray(operations)(this);\n };\n Observable.prototype.toPromise = function (promiseCtor) {\n var _this = this;\n promiseCtor = getPromiseCtor(promiseCtor);\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 Observable.create = function (subscribe) {\n return new Observable(subscribe);\n };\n return Observable;\n}());\nexport { Observable };\nfunction getPromiseCtor(promiseCtor) {\n var _a;\n return (_a = promiseCtor !== null && promiseCtor !== void 0 ? promiseCtor : config.Promise) !== null && _a !== void 0 ? _a : Promise;\n}\nfunction isObserver(value) {\n return value && isFunction(value.next) && isFunction(value.error) && isFunction(value.complete);\n}\nfunction isSubscriber(value) {\n return (value && value instanceof Subscriber) || (isObserver(value) && isSubscription(value));\n}\n//# sourceMappingURL=Observable.js.map","import { isFunction } from './isFunction';\nexport function hasLift(source) {\n return isFunction(source === null || source === void 0 ? void 0 : source.lift);\n}\nexport function operate(init) {\n return function (source) {\n if (hasLift(source)) {\n return source.lift(function (liftedSource) {\n try {\n return init(liftedSource, this);\n }\n catch (err) {\n this.error(err);\n }\n });\n }\n throw new TypeError('Unable to lift unknown Observable type');\n };\n}\n//# sourceMappingURL=lift.js.map","import { __extends } from \"tslib\";\nimport { Subscriber } from '../Subscriber';\nvar OperatorSubscriber = (function (_super) {\n __extends(OperatorSubscriber, _super);\n function OperatorSubscriber(destination, onNext, onComplete, onError, onFinalize) {\n var _this = _super.call(this, destination) || this;\n _this.onFinalize = onFinalize;\n _this._next = onNext\n ? function (value) {\n try {\n onNext(value);\n }\n catch (err) {\n destination.error(err);\n }\n }\n : _super.prototype._next;\n _this._error = onError\n ? function (err) {\n try {\n onError(err);\n }\n catch (err) {\n destination.error(err);\n }\n finally {\n this.unsubscribe();\n }\n }\n : _super.prototype._error;\n _this._complete = onComplete\n ? function () {\n try {\n onComplete();\n }\n catch (err) {\n destination.error(err);\n }\n finally {\n this.unsubscribe();\n }\n }\n : _super.prototype._complete;\n return _this;\n }\n OperatorSubscriber.prototype.unsubscribe = function () {\n var _a;\n var closed = this.closed;\n _super.prototype.unsubscribe.call(this);\n !closed && ((_a = this.onFinalize) === null || _a === void 0 ? void 0 : _a.call(this));\n };\n return OperatorSubscriber;\n}(Subscriber));\nexport { OperatorSubscriber };\n//# sourceMappingURL=OperatorSubscriber.js.map","import { operate } from '../util/lift';\nimport { OperatorSubscriber } from './OperatorSubscriber';\nexport function refCount() {\n return operate(function (source, subscriber) {\n var connection = null;\n source._refCount++;\n var refCounter = new OperatorSubscriber(subscriber, undefined, undefined, undefined, function () {\n if (!source || source._refCount <= 0 || 0 < --source._refCount) {\n connection = null;\n return;\n }\n var sharedConnection = source._connection;\n var conn = connection;\n connection = null;\n if (sharedConnection && (!conn || sharedConnection === conn)) {\n sharedConnection.unsubscribe();\n }\n subscriber.unsubscribe();\n });\n source.subscribe(refCounter);\n if (!refCounter.closed) {\n connection = source.connect();\n }\n });\n}\n//# sourceMappingURL=refCount.js.map","import { __extends } from \"tslib\";\nimport { Observable } from '../Observable';\nimport { Subscription } from '../Subscription';\nimport { refCount as higherOrderRefCount } from '../operators/refCount';\nimport { OperatorSubscriber } from '../operators/OperatorSubscriber';\nimport { hasLift } from '../util/lift';\nvar ConnectableObservable = (function (_super) {\n __extends(ConnectableObservable, _super);\n function ConnectableObservable(source, subjectFactory) {\n var _this = _super.call(this) || this;\n _this.source = source;\n _this.subjectFactory = subjectFactory;\n _this._subject = null;\n _this._refCount = 0;\n _this._connection = null;\n if (hasLift(source)) {\n _this.lift = source.lift;\n }\n return _this;\n }\n ConnectableObservable.prototype._subscribe = function (subscriber) {\n return this.getSubject().subscribe(subscriber);\n };\n ConnectableObservable.prototype.getSubject = function () {\n var subject = this._subject;\n if (!subject || subject.isStopped) {\n this._subject = this.subjectFactory();\n }\n return this._subject;\n };\n ConnectableObservable.prototype._teardown = function () {\n this._refCount = 0;\n var _connection = this._connection;\n this._subject = this._connection = null;\n _connection === null || _connection === void 0 ? void 0 : _connection.unsubscribe();\n };\n ConnectableObservable.prototype.connect = function () {\n var _this = this;\n var connection = this._connection;\n if (!connection) {\n connection = this._connection = new Subscription();\n var subject_1 = this.getSubject();\n connection.add(this.source.subscribe(new OperatorSubscriber(subject_1, undefined, function () {\n _this._teardown();\n subject_1.complete();\n }, function (err) {\n _this._teardown();\n subject_1.error(err);\n }, function () { return _this._teardown(); })));\n if (connection.closed) {\n this._connection = null;\n connection = Subscription.EMPTY;\n }\n }\n return connection;\n };\n ConnectableObservable.prototype.refCount = function () {\n return higherOrderRefCount()(this);\n };\n return ConnectableObservable;\n}(Observable));\nexport { ConnectableObservable };\n//# sourceMappingURL=ConnectableObservable.js.map","export var performanceTimestampProvider = {\n now: function () {\n return (performanceTimestampProvider.delegate || performance).now();\n },\n delegate: undefined,\n};\n//# sourceMappingURL=performanceTimestampProvider.js.map","import { __read, __spreadArray } from \"tslib\";\nimport { Subscription } from '../Subscription';\nexport var animationFrameProvider = {\n schedule: function (callback) {\n var request = requestAnimationFrame;\n var cancel = cancelAnimationFrame;\n var delegate = animationFrameProvider.delegate;\n if (delegate) {\n request = delegate.requestAnimationFrame;\n cancel = delegate.cancelAnimationFrame;\n }\n var handle = request(function (timestamp) {\n cancel = undefined;\n callback(timestamp);\n });\n return new Subscription(function () { return cancel === null || cancel === void 0 ? void 0 : cancel(handle); });\n },\n requestAnimationFrame: function () {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n var delegate = animationFrameProvider.delegate;\n return ((delegate === null || delegate === void 0 ? void 0 : delegate.requestAnimationFrame) || requestAnimationFrame).apply(void 0, __spreadArray([], __read(args)));\n },\n cancelAnimationFrame: function () {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n var delegate = animationFrameProvider.delegate;\n return ((delegate === null || delegate === void 0 ? void 0 : delegate.cancelAnimationFrame) || cancelAnimationFrame).apply(void 0, __spreadArray([], __read(args)));\n },\n delegate: undefined,\n};\n//# sourceMappingURL=animationFrameProvider.js.map","import { Observable } from '../../Observable';\nimport { Subscription } from '../../Subscription';\nimport { performanceTimestampProvider } from '../../scheduler/performanceTimestampProvider';\nimport { animationFrameProvider } from '../../scheduler/animationFrameProvider';\nexport function animationFrames(timestampProvider) {\n return timestampProvider ? animationFramesFactory(timestampProvider) : DEFAULT_ANIMATION_FRAMES;\n}\nfunction animationFramesFactory(timestampProvider) {\n var schedule = animationFrameProvider.schedule;\n return new Observable(function (subscriber) {\n var subscription = new Subscription();\n var provider = timestampProvider || performanceTimestampProvider;\n var start = provider.now();\n var run = function (timestamp) {\n var now = provider.now();\n subscriber.next({\n timestamp: timestampProvider ? now : timestamp,\n elapsed: now - start\n });\n if (!subscriber.closed) {\n subscription.add(schedule(run));\n }\n };\n subscription.add(schedule(run));\n return subscription;\n });\n}\nvar DEFAULT_ANIMATION_FRAMES = animationFramesFactory();\n//# sourceMappingURL=animationFrames.js.map","var nextHandle = 1;\nvar resolved;\nvar activeHandles = {};\nfunction findAndClearHandle(handle) {\n if (handle in activeHandles) {\n delete activeHandles[handle];\n return true;\n }\n return false;\n}\nexport var Immediate = {\n setImmediate: function (cb) {\n var handle = nextHandle++;\n activeHandles[handle] = true;\n if (!resolved) {\n resolved = Promise.resolve();\n }\n resolved.then(function () { return findAndClearHandle(handle) && cb(); });\n return handle;\n },\n clearImmediate: function (handle) {\n findAndClearHandle(handle);\n },\n};\nexport var TestTools = {\n pending: function () {\n return Object.keys(activeHandles).length;\n }\n};\n//# sourceMappingURL=Immediate.js.map","import { createErrorClass } from './createErrorClass';\nexport var ObjectUnsubscribedError = createErrorClass(function (_super) {\n return function ObjectUnsubscribedErrorImpl() {\n _super(this);\n this.name = 'ObjectUnsubscribedError';\n this.message = 'object unsubscribed';\n };\n});\n//# sourceMappingURL=ObjectUnsubscribedError.js.map","import { __extends, __values } from \"tslib\";\nimport { Observable } from './Observable';\nimport { Subscription, EMPTY_SUBSCRIPTION } from './Subscription';\nimport { ObjectUnsubscribedError } from './util/ObjectUnsubscribedError';\nimport { arrRemove } from './util/arrRemove';\nimport { errorContext } from './util/errorContext';\nvar Subject = (function (_super) {\n __extends(Subject, _super);\n function Subject() {\n var _this = _super.call(this) || this;\n _this.closed = false;\n _this.observers = [];\n _this.isStopped = false;\n _this.hasError = false;\n _this.thrownError = null;\n return _this;\n }\n Subject.prototype.lift = function (operator) {\n var subject = new AnonymousSubject(this, this);\n subject.operator = operator;\n return subject;\n };\n Subject.prototype._throwIfClosed = function () {\n if (this.closed) {\n throw new ObjectUnsubscribedError();\n }\n };\n Subject.prototype.next = function (value) {\n var _this = this;\n errorContext(function () {\n var e_1, _a;\n _this._throwIfClosed();\n if (!_this.isStopped) {\n var copy = _this.observers.slice();\n try {\n for (var copy_1 = __values(copy), copy_1_1 = copy_1.next(); !copy_1_1.done; copy_1_1 = copy_1.next()) {\n var observer = copy_1_1.value;\n observer.next(value);\n }\n }\n catch (e_1_1) { e_1 = { error: e_1_1 }; }\n finally {\n try {\n if (copy_1_1 && !copy_1_1.done && (_a = copy_1.return)) _a.call(copy_1);\n }\n finally { if (e_1) throw e_1.error; }\n }\n }\n });\n };\n Subject.prototype.error = function (err) {\n var _this = this;\n errorContext(function () {\n _this._throwIfClosed();\n if (!_this.isStopped) {\n _this.hasError = _this.isStopped = true;\n _this.thrownError = err;\n var observers = _this.observers;\n while (observers.length) {\n observers.shift().error(err);\n }\n }\n });\n };\n Subject.prototype.complete = function () {\n var _this = this;\n errorContext(function () {\n _this._throwIfClosed();\n if (!_this.isStopped) {\n _this.isStopped = true;\n var observers = _this.observers;\n while (observers.length) {\n observers.shift().complete();\n }\n }\n });\n };\n Subject.prototype.unsubscribe = function () {\n this.isStopped = this.closed = true;\n this.observers = null;\n };\n Object.defineProperty(Subject.prototype, \"observed\", {\n get: function () {\n var _a;\n return ((_a = this.observers) === null || _a === void 0 ? void 0 : _a.length) > 0;\n },\n enumerable: false,\n configurable: true\n });\n Subject.prototype._trySubscribe = function (subscriber) {\n this._throwIfClosed();\n return _super.prototype._trySubscribe.call(this, subscriber);\n };\n Subject.prototype._subscribe = function (subscriber) {\n this._throwIfClosed();\n this._checkFinalizedStatuses(subscriber);\n return this._innerSubscribe(subscriber);\n };\n Subject.prototype._innerSubscribe = function (subscriber) {\n var _a = this, hasError = _a.hasError, isStopped = _a.isStopped, observers = _a.observers;\n return hasError || isStopped\n ? EMPTY_SUBSCRIPTION\n : (observers.push(subscriber), new Subscription(function () { return arrRemove(observers, subscriber); }));\n };\n Subject.prototype._checkFinalizedStatuses = function (subscriber) {\n var _a = this, hasError = _a.hasError, thrownError = _a.thrownError, isStopped = _a.isStopped;\n if (hasError) {\n subscriber.error(thrownError);\n }\n else if (isStopped) {\n subscriber.complete();\n }\n };\n Subject.prototype.asObservable = function () {\n var observable = new Observable();\n observable.source = this;\n return observable;\n };\n Subject.create = function (destination, source) {\n return new AnonymousSubject(destination, source);\n };\n return Subject;\n}(Observable));\nexport { Subject };\nvar AnonymousSubject = (function (_super) {\n __extends(AnonymousSubject, _super);\n function AnonymousSubject(destination, source) {\n var _this = _super.call(this) || this;\n _this.destination = destination;\n _this.source = source;\n return _this;\n }\n AnonymousSubject.prototype.next = function (value) {\n var _a, _b;\n (_b = (_a = this.destination) === null || _a === void 0 ? void 0 : _a.next) === null || _b === void 0 ? void 0 : _b.call(_a, value);\n };\n AnonymousSubject.prototype.error = function (err) {\n var _a, _b;\n (_b = (_a = this.destination) === null || _a === void 0 ? void 0 : _a.error) === null || _b === void 0 ? void 0 : _b.call(_a, err);\n };\n AnonymousSubject.prototype.complete = function () {\n var _a, _b;\n (_b = (_a = this.destination) === null || _a === void 0 ? void 0 : _a.complete) === null || _b === void 0 ? void 0 : _b.call(_a);\n };\n AnonymousSubject.prototype._subscribe = function (subscriber) {\n var _a, _b;\n return (_b = (_a = this.source) === null || _a === void 0 ? void 0 : _a.subscribe(subscriber)) !== null && _b !== void 0 ? _b : EMPTY_SUBSCRIPTION;\n };\n return AnonymousSubject;\n}(Subject));\nexport { AnonymousSubject };\n//# sourceMappingURL=Subject.js.map","import { __extends } from \"tslib\";\nimport { Subject } from './Subject';\nvar BehaviorSubject = (function (_super) {\n __extends(BehaviorSubject, _super);\n function BehaviorSubject(_value) {\n var _this = _super.call(this) || this;\n _this._value = _value;\n return _this;\n }\n Object.defineProperty(BehaviorSubject.prototype, \"value\", {\n get: function () {\n return this.getValue();\n },\n enumerable: false,\n configurable: true\n });\n BehaviorSubject.prototype._subscribe = function (subscriber) {\n var subscription = _super.prototype._subscribe.call(this, subscriber);\n !subscription.closed && subscriber.next(this._value);\n return subscription;\n };\n BehaviorSubject.prototype.getValue = function () {\n var _a = this, hasError = _a.hasError, thrownError = _a.thrownError, _value = _a._value;\n if (hasError) {\n throw thrownError;\n }\n this._throwIfClosed();\n return _value;\n };\n BehaviorSubject.prototype.next = function (value) {\n _super.prototype.next.call(this, (this._value = value));\n };\n return BehaviorSubject;\n}(Subject));\nexport { BehaviorSubject };\n//# sourceMappingURL=BehaviorSubject.js.map","export var dateTimestampProvider = {\n now: function () {\n return (dateTimestampProvider.delegate || Date).now();\n },\n delegate: undefined,\n};\n//# sourceMappingURL=dateTimestampProvider.js.map","import { __extends } from \"tslib\";\nimport { Subject } from './Subject';\nimport { dateTimestampProvider } from './scheduler/dateTimestampProvider';\nvar ReplaySubject = (function (_super) {\n __extends(ReplaySubject, _super);\n function ReplaySubject(_bufferSize, _windowTime, _timestampProvider) {\n if (_bufferSize === void 0) { _bufferSize = Infinity; }\n if (_windowTime === void 0) { _windowTime = Infinity; }\n if (_timestampProvider === void 0) { _timestampProvider = dateTimestampProvider; }\n var _this = _super.call(this) || this;\n _this._bufferSize = _bufferSize;\n _this._windowTime = _windowTime;\n _this._timestampProvider = _timestampProvider;\n _this._buffer = [];\n _this._infiniteTimeWindow = true;\n _this._infiniteTimeWindow = _windowTime === Infinity;\n _this._bufferSize = Math.max(1, _bufferSize);\n _this._windowTime = Math.max(1, _windowTime);\n return _this;\n }\n ReplaySubject.prototype.next = function (value) {\n var _a = this, isStopped = _a.isStopped, _buffer = _a._buffer, _infiniteTimeWindow = _a._infiniteTimeWindow, _timestampProvider = _a._timestampProvider, _windowTime = _a._windowTime;\n if (!isStopped) {\n _buffer.push(value);\n !_infiniteTimeWindow && _buffer.push(_timestampProvider.now() + _windowTime);\n }\n this._trimBuffer();\n _super.prototype.next.call(this, value);\n };\n ReplaySubject.prototype._subscribe = function (subscriber) {\n this._throwIfClosed();\n this._trimBuffer();\n var subscription = this._innerSubscribe(subscriber);\n var _a = this, _infiniteTimeWindow = _a._infiniteTimeWindow, _buffer = _a._buffer;\n var copy = _buffer.slice();\n for (var i = 0; i < copy.length && !subscriber.closed; i += _infiniteTimeWindow ? 1 : 2) {\n subscriber.next(copy[i]);\n }\n this._checkFinalizedStatuses(subscriber);\n return subscription;\n };\n ReplaySubject.prototype._trimBuffer = function () {\n var _a = this, _bufferSize = _a._bufferSize, _timestampProvider = _a._timestampProvider, _buffer = _a._buffer, _infiniteTimeWindow = _a._infiniteTimeWindow;\n var adjustedBufferSize = (_infiniteTimeWindow ? 1 : 2) * _bufferSize;\n _bufferSize < Infinity && adjustedBufferSize < _buffer.length && _buffer.splice(0, _buffer.length - adjustedBufferSize);\n if (!_infiniteTimeWindow) {\n var now = _timestampProvider.now();\n var last = 0;\n for (var i = 1; i < _buffer.length && _buffer[i] <= now; i += 2) {\n last = i;\n }\n last && _buffer.splice(0, last + 1);\n }\n };\n return ReplaySubject;\n}(Subject));\nexport { ReplaySubject };\n//# sourceMappingURL=ReplaySubject.js.map","import { __extends } from \"tslib\";\nimport { Subject } from './Subject';\nvar AsyncSubject = (function (_super) {\n __extends(AsyncSubject, _super);\n function AsyncSubject() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this._value = null;\n _this._hasValue = false;\n _this._isComplete = false;\n return _this;\n }\n AsyncSubject.prototype._checkFinalizedStatuses = function (subscriber) {\n var _a = this, hasError = _a.hasError, _hasValue = _a._hasValue, _value = _a._value, thrownError = _a.thrownError, isStopped = _a.isStopped, _isComplete = _a._isComplete;\n if (hasError) {\n subscriber.error(thrownError);\n }\n else if (isStopped || _isComplete) {\n _hasValue && subscriber.next(_value);\n subscriber.complete();\n }\n };\n AsyncSubject.prototype.next = function (value) {\n if (!this.isStopped) {\n this._value = value;\n this._hasValue = true;\n }\n };\n AsyncSubject.prototype.complete = function () {\n var _a = this, _hasValue = _a._hasValue, _value = _a._value, _isComplete = _a._isComplete;\n if (!_isComplete) {\n this._isComplete = true;\n _hasValue && _super.prototype.next.call(this, _value);\n _super.prototype.complete.call(this);\n }\n };\n return AsyncSubject;\n}(Subject));\nexport { AsyncSubject };\n//# sourceMappingURL=AsyncSubject.js.map","import { __extends } from \"tslib\";\nimport { Subscription } from '../Subscription';\nvar Action = (function (_super) {\n __extends(Action, _super);\n function Action(scheduler, work) {\n return _super.call(this) || this;\n }\n Action.prototype.schedule = function (state, delay) {\n if (delay === void 0) { delay = 0; }\n return this;\n };\n return Action;\n}(Subscription));\nexport { Action };\n//# sourceMappingURL=Action.js.map","import { __read, __spreadArray } from \"tslib\";\nexport var intervalProvider = {\n setInterval: function () {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n var delegate = intervalProvider.delegate;\n return ((delegate === null || delegate === void 0 ? void 0 : delegate.setInterval) || setInterval).apply(void 0, __spreadArray([], __read(args)));\n },\n clearInterval: function (handle) {\n var delegate = intervalProvider.delegate;\n return ((delegate === null || delegate === void 0 ? void 0 : delegate.clearInterval) || clearInterval)(handle);\n },\n delegate: undefined,\n};\n//# sourceMappingURL=intervalProvider.js.map","import { __extends } from \"tslib\";\nimport { Action } from './Action';\nimport { intervalProvider } from './intervalProvider';\nimport { arrRemove } from '../util/arrRemove';\nvar AsyncAction = (function (_super) {\n __extends(AsyncAction, _super);\n function AsyncAction(scheduler, work) {\n var _this = _super.call(this, scheduler, work) || this;\n _this.scheduler = scheduler;\n _this.work = work;\n _this.pending = false;\n return _this;\n }\n AsyncAction.prototype.schedule = function (state, delay) {\n if (delay === void 0) { delay = 0; }\n if (this.closed) {\n return this;\n }\n this.state = state;\n var id = this.id;\n var scheduler = this.scheduler;\n if (id != null) {\n this.id = this.recycleAsyncId(scheduler, id, delay);\n }\n this.pending = true;\n this.delay = delay;\n this.id = this.id || this.requestAsyncId(scheduler, this.id, delay);\n return this;\n };\n AsyncAction.prototype.requestAsyncId = function (scheduler, _id, delay) {\n if (delay === void 0) { delay = 0; }\n return intervalProvider.setInterval(scheduler.flush.bind(scheduler, this), delay);\n };\n AsyncAction.prototype.recycleAsyncId = function (_scheduler, id, delay) {\n if (delay === void 0) { delay = 0; }\n if (delay != null && this.delay === delay && this.pending === false) {\n return id;\n }\n intervalProvider.clearInterval(id);\n return undefined;\n };\n AsyncAction.prototype.execute = function (state, delay) {\n if (this.closed) {\n return new Error('executing a cancelled action');\n }\n this.pending = false;\n var error = this._execute(state, delay);\n if (error) {\n return error;\n }\n else if (this.pending === false && this.id != null) {\n this.id = this.recycleAsyncId(this.scheduler, this.id, null);\n }\n };\n AsyncAction.prototype._execute = function (state, _delay) {\n var errored = false;\n var errorValue;\n try {\n this.work(state);\n }\n catch (e) {\n errored = true;\n errorValue = (!!e && e) || new Error(e);\n }\n if (errored) {\n this.unsubscribe();\n return errorValue;\n }\n };\n AsyncAction.prototype.unsubscribe = function () {\n if (!this.closed) {\n var _a = this, id = _a.id, scheduler = _a.scheduler;\n var actions = scheduler.actions;\n this.work = this.state = this.scheduler = null;\n this.pending = false;\n arrRemove(actions, this);\n if (id != null) {\n this.id = this.recycleAsyncId(scheduler, id, null);\n }\n this.delay = null;\n _super.prototype.unsubscribe.call(this);\n }\n };\n return AsyncAction;\n}(Action));\nexport { AsyncAction };\n//# sourceMappingURL=AsyncAction.js.map","import { __read, __spreadArray } from \"tslib\";\nimport { Immediate } from '../util/Immediate';\nvar setImmediate = Immediate.setImmediate, clearImmediate = Immediate.clearImmediate;\nexport var immediateProvider = {\n setImmediate: function () {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n var delegate = immediateProvider.delegate;\n return ((delegate === null || delegate === void 0 ? void 0 : delegate.setImmediate) || setImmediate).apply(void 0, __spreadArray([], __read(args)));\n },\n clearImmediate: function (handle) {\n var delegate = immediateProvider.delegate;\n return ((delegate === null || delegate === void 0 ? void 0 : delegate.clearImmediate) || clearImmediate)(handle);\n },\n delegate: undefined,\n};\n//# sourceMappingURL=immediateProvider.js.map","import { __extends } from \"tslib\";\nimport { AsyncAction } from './AsyncAction';\nimport { immediateProvider } from './immediateProvider';\nvar AsapAction = (function (_super) {\n __extends(AsapAction, _super);\n function AsapAction(scheduler, work) {\n var _this = _super.call(this, scheduler, work) || this;\n _this.scheduler = scheduler;\n _this.work = work;\n return _this;\n }\n AsapAction.prototype.requestAsyncId = function (scheduler, id, delay) {\n if (delay === void 0) { delay = 0; }\n if (delay !== null && delay > 0) {\n return _super.prototype.requestAsyncId.call(this, scheduler, id, delay);\n }\n scheduler.actions.push(this);\n return scheduler._scheduled || (scheduler._scheduled = immediateProvider.setImmediate(scheduler.flush.bind(scheduler, undefined)));\n };\n AsapAction.prototype.recycleAsyncId = function (scheduler, id, delay) {\n if (delay === void 0) { delay = 0; }\n if ((delay != null && delay > 0) || (delay == null && this.delay > 0)) {\n return _super.prototype.recycleAsyncId.call(this, scheduler, id, delay);\n }\n if (scheduler.actions.length === 0) {\n immediateProvider.clearImmediate(id);\n scheduler._scheduled = undefined;\n }\n return undefined;\n };\n return AsapAction;\n}(AsyncAction));\nexport { AsapAction };\n//# sourceMappingURL=AsapAction.js.map","import { dateTimestampProvider } from './scheduler/dateTimestampProvider';\nvar Scheduler = (function () {\n function Scheduler(schedulerActionCtor, now) {\n if (now === void 0) { now = Scheduler.now; }\n this.schedulerActionCtor = schedulerActionCtor;\n this.now = now;\n }\n Scheduler.prototype.schedule = function (work, delay, state) {\n if (delay === void 0) { delay = 0; }\n return new this.schedulerActionCtor(this, work).schedule(state, delay);\n };\n Scheduler.now = dateTimestampProvider.now;\n return Scheduler;\n}());\nexport { Scheduler };\n//# sourceMappingURL=Scheduler.js.map","import { __extends } from \"tslib\";\nimport { Scheduler } from '../Scheduler';\nvar AsyncScheduler = (function (_super) {\n __extends(AsyncScheduler, _super);\n function AsyncScheduler(SchedulerAction, now) {\n if (now === void 0) { now = Scheduler.now; }\n var _this = _super.call(this, SchedulerAction, now) || this;\n _this.actions = [];\n _this._active = false;\n _this._scheduled = undefined;\n return _this;\n }\n AsyncScheduler.prototype.flush = function (action) {\n var actions = this.actions;\n if (this._active) {\n actions.push(action);\n return;\n }\n var error;\n this._active = true;\n do {\n if ((error = action.execute(action.state, action.delay))) {\n break;\n }\n } while ((action = actions.shift()));\n this._active = false;\n if (error) {\n while ((action = actions.shift())) {\n action.unsubscribe();\n }\n throw error;\n }\n };\n return AsyncScheduler;\n}(Scheduler));\nexport { AsyncScheduler };\n//# sourceMappingURL=AsyncScheduler.js.map","import { __extends } from \"tslib\";\nimport { AsyncScheduler } from './AsyncScheduler';\nvar AsapScheduler = (function (_super) {\n __extends(AsapScheduler, _super);\n function AsapScheduler() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n AsapScheduler.prototype.flush = function (action) {\n this._active = true;\n this._scheduled = undefined;\n var actions = this.actions;\n var error;\n var index = -1;\n action = action || actions.shift();\n var count = actions.length;\n do {\n if ((error = action.execute(action.state, action.delay))) {\n break;\n }\n } while (++index < count && (action = actions.shift()));\n this._active = false;\n if (error) {\n while (++index < count && (action = actions.shift())) {\n action.unsubscribe();\n }\n throw error;\n }\n };\n return AsapScheduler;\n}(AsyncScheduler));\nexport { AsapScheduler };\n//# sourceMappingURL=AsapScheduler.js.map","import { AsapAction } from './AsapAction';\nimport { AsapScheduler } from './AsapScheduler';\nexport var asapScheduler = new AsapScheduler(AsapAction);\nexport var asap = asapScheduler;\n//# sourceMappingURL=asap.js.map","import { AsyncAction } from './AsyncAction';\nimport { AsyncScheduler } from './AsyncScheduler';\nexport var asyncScheduler = new AsyncScheduler(AsyncAction);\nexport var async = asyncScheduler;\n//# sourceMappingURL=async.js.map","import { __extends } from \"tslib\";\nimport { AsyncAction } from './AsyncAction';\nvar QueueAction = (function (_super) {\n __extends(QueueAction, _super);\n function QueueAction(scheduler, work) {\n var _this = _super.call(this, scheduler, work) || this;\n _this.scheduler = scheduler;\n _this.work = work;\n return _this;\n }\n QueueAction.prototype.schedule = function (state, delay) {\n if (delay === void 0) { delay = 0; }\n if (delay > 0) {\n return _super.prototype.schedule.call(this, state, delay);\n }\n this.delay = delay;\n this.state = state;\n this.scheduler.flush(this);\n return this;\n };\n QueueAction.prototype.execute = function (state, delay) {\n return (delay > 0 || this.closed) ?\n _super.prototype.execute.call(this, state, delay) :\n this._execute(state, delay);\n };\n QueueAction.prototype.requestAsyncId = function (scheduler, id, delay) {\n if (delay === void 0) { delay = 0; }\n if ((delay != null && delay > 0) || (delay == null && this.delay > 0)) {\n return _super.prototype.requestAsyncId.call(this, scheduler, id, delay);\n }\n return scheduler.flush(this);\n };\n return QueueAction;\n}(AsyncAction));\nexport { QueueAction };\n//# sourceMappingURL=QueueAction.js.map","import { QueueAction } from './QueueAction';\nimport { QueueScheduler } from './QueueScheduler';\nexport var queueScheduler = new QueueScheduler(QueueAction);\nexport var queue = queueScheduler;\n//# sourceMappingURL=queue.js.map","import { __extends } from \"tslib\";\nimport { AsyncScheduler } from './AsyncScheduler';\nvar QueueScheduler = (function (_super) {\n __extends(QueueScheduler, _super);\n function QueueScheduler() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n return QueueScheduler;\n}(AsyncScheduler));\nexport { QueueScheduler };\n//# sourceMappingURL=QueueScheduler.js.map","import { __extends } from \"tslib\";\nimport { AsyncAction } from './AsyncAction';\nimport { animationFrameProvider } from './animationFrameProvider';\nvar AnimationFrameAction = (function (_super) {\n __extends(AnimationFrameAction, _super);\n function AnimationFrameAction(scheduler, work) {\n var _this = _super.call(this, scheduler, work) || this;\n _this.scheduler = scheduler;\n _this.work = work;\n return _this;\n }\n AnimationFrameAction.prototype.requestAsyncId = function (scheduler, id, delay) {\n if (delay === void 0) { delay = 0; }\n if (delay !== null && delay > 0) {\n return _super.prototype.requestAsyncId.call(this, scheduler, id, delay);\n }\n scheduler.actions.push(this);\n return scheduler._scheduled || (scheduler._scheduled = animationFrameProvider.requestAnimationFrame(function () { return scheduler.flush(undefined); }));\n };\n AnimationFrameAction.prototype.recycleAsyncId = function (scheduler, id, delay) {\n if (delay === void 0) { delay = 0; }\n if ((delay != null && delay > 0) || (delay == null && this.delay > 0)) {\n return _super.prototype.recycleAsyncId.call(this, scheduler, id, delay);\n }\n if (scheduler.actions.length === 0) {\n animationFrameProvider.cancelAnimationFrame(id);\n scheduler._scheduled = undefined;\n }\n return undefined;\n };\n return AnimationFrameAction;\n}(AsyncAction));\nexport { AnimationFrameAction };\n//# sourceMappingURL=AnimationFrameAction.js.map","import { __extends } from \"tslib\";\nimport { AsyncScheduler } from './AsyncScheduler';\nvar AnimationFrameScheduler = (function (_super) {\n __extends(AnimationFrameScheduler, _super);\n function AnimationFrameScheduler() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n AnimationFrameScheduler.prototype.flush = function (action) {\n this._active = true;\n this._scheduled = undefined;\n var actions = this.actions;\n var error;\n var index = -1;\n action = action || actions.shift();\n var count = actions.length;\n do {\n if ((error = action.execute(action.state, action.delay))) {\n break;\n }\n } while (++index < count && (action = actions.shift()));\n this._active = false;\n if (error) {\n while (++index < count && (action = actions.shift())) {\n action.unsubscribe();\n }\n throw error;\n }\n };\n return AnimationFrameScheduler;\n}(AsyncScheduler));\nexport { AnimationFrameScheduler };\n//# sourceMappingURL=AnimationFrameScheduler.js.map","import { AnimationFrameAction } from './AnimationFrameAction';\nimport { AnimationFrameScheduler } from './AnimationFrameScheduler';\nexport var animationFrameScheduler = new AnimationFrameScheduler(AnimationFrameAction);\nexport var animationFrame = animationFrameScheduler;\n//# sourceMappingURL=animationFrame.js.map","import { __extends } from \"tslib\";\nimport { AsyncAction } from './AsyncAction';\nimport { Subscription } from '../Subscription';\nimport { AsyncScheduler } from './AsyncScheduler';\nvar VirtualTimeScheduler = (function (_super) {\n __extends(VirtualTimeScheduler, _super);\n function VirtualTimeScheduler(schedulerActionCtor, maxFrames) {\n if (schedulerActionCtor === void 0) { schedulerActionCtor = VirtualAction; }\n if (maxFrames === void 0) { maxFrames = Infinity; }\n var _this = _super.call(this, schedulerActionCtor, function () { return _this.frame; }) || this;\n _this.maxFrames = maxFrames;\n _this.frame = 0;\n _this.index = -1;\n return _this;\n }\n VirtualTimeScheduler.prototype.flush = function () {\n var _a = this, actions = _a.actions, maxFrames = _a.maxFrames;\n var error;\n var action;\n while ((action = actions[0]) && action.delay <= maxFrames) {\n actions.shift();\n this.frame = action.delay;\n if ((error = action.execute(action.state, action.delay))) {\n break;\n }\n }\n if (error) {\n while ((action = actions.shift())) {\n action.unsubscribe();\n }\n throw error;\n }\n };\n VirtualTimeScheduler.frameTimeFactor = 10;\n return VirtualTimeScheduler;\n}(AsyncScheduler));\nexport { VirtualTimeScheduler };\nvar VirtualAction = (function (_super) {\n __extends(VirtualAction, _super);\n function VirtualAction(scheduler, work, index) {\n if (index === void 0) { index = (scheduler.index += 1); }\n var _this = _super.call(this, scheduler, work) || this;\n _this.scheduler = scheduler;\n _this.work = work;\n _this.index = index;\n _this.active = true;\n _this.index = scheduler.index = index;\n return _this;\n }\n VirtualAction.prototype.schedule = function (state, delay) {\n if (delay === void 0) { delay = 0; }\n if (Number.isFinite(delay)) {\n if (!this.id) {\n return _super.prototype.schedule.call(this, state, delay);\n }\n this.active = false;\n var action = new VirtualAction(this.scheduler, this.work);\n this.add(action);\n return action.schedule(state, delay);\n }\n else {\n return Subscription.EMPTY;\n }\n };\n VirtualAction.prototype.requestAsyncId = function (scheduler, id, delay) {\n if (delay === void 0) { delay = 0; }\n this.delay = scheduler.frame + delay;\n var actions = scheduler.actions;\n actions.push(this);\n actions.sort(VirtualAction.sortActions);\n return true;\n };\n VirtualAction.prototype.recycleAsyncId = function (scheduler, id, delay) {\n if (delay === void 0) { delay = 0; }\n return undefined;\n };\n VirtualAction.prototype._execute = function (state, delay) {\n if (this.active === true) {\n return _super.prototype._execute.call(this, state, delay);\n }\n };\n VirtualAction.sortActions = function (a, b) {\n if (a.delay === b.delay) {\n if (a.index === b.index) {\n return 0;\n }\n else if (a.index > b.index) {\n return 1;\n }\n else {\n return -1;\n }\n }\n else if (a.delay > b.delay) {\n return 1;\n }\n else {\n return -1;\n }\n };\n return VirtualAction;\n}(AsyncAction));\nexport { VirtualAction };\n//# sourceMappingURL=VirtualTimeScheduler.js.map","import { Observable } from '../Observable';\nexport var EMPTY = new Observable(function (subscriber) { return subscriber.complete(); });\nexport function empty(scheduler) {\n return scheduler ? emptyScheduled(scheduler) : EMPTY;\n}\nfunction emptyScheduled(scheduler) {\n return new Observable(function (subscriber) { return scheduler.schedule(function () { return subscriber.complete(); }); });\n}\n//# sourceMappingURL=empty.js.map","import { Observable } from '../Observable';\nexport function scheduleArray(input, scheduler) {\n return new Observable(function (subscriber) {\n var i = 0;\n return scheduler.schedule(function () {\n if (i === input.length) {\n subscriber.complete();\n }\n else {\n subscriber.next(input[i++]);\n if (!subscriber.closed) {\n this.schedule();\n }\n }\n });\n });\n}\n//# sourceMappingURL=scheduleArray.js.map","export var isArrayLike = (function (x) { return x && typeof x.length === 'number' && typeof x !== 'function'; });\n//# sourceMappingURL=isArrayLike.js.map","import { isFunction } from \"./isFunction\";\nexport function isPromise(value) {\n return isFunction(value === null || value === void 0 ? void 0 : value.then);\n}\n//# sourceMappingURL=isPromise.js.map","export function getSymbolIterator() {\n if (typeof Symbol !== 'function' || !Symbol.iterator) {\n return '@@iterator';\n }\n return Symbol.iterator;\n}\nexport var iterator = getSymbolIterator();\n//# sourceMappingURL=iterator.js.map","import { EMPTY } from './observable/empty';\nimport { of } from './observable/of';\nimport { throwError } from './observable/throwError';\nimport { isFunction } from './util/isFunction';\nexport var NotificationKind;\n(function (NotificationKind) {\n NotificationKind[\"NEXT\"] = \"N\";\n NotificationKind[\"ERROR\"] = \"E\";\n NotificationKind[\"COMPLETE\"] = \"C\";\n})(NotificationKind || (NotificationKind = {}));\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 Notification.prototype.observe = function (observer) {\n return observeNotification(this, observer);\n };\n Notification.prototype.do = function (nextHandler, errorHandler, completeHandler) {\n var _a = this, kind = _a.kind, value = _a.value, error = _a.error;\n return kind === 'N' ? nextHandler === null || nextHandler === void 0 ? void 0 : nextHandler(value) : kind === 'E' ? errorHandler === null || errorHandler === void 0 ? void 0 : errorHandler(error) : completeHandler === null || completeHandler === void 0 ? void 0 : completeHandler();\n };\n Notification.prototype.accept = function (nextOrObserver, error, complete) {\n var _a;\n return isFunction((_a = nextOrObserver) === null || _a === void 0 ? void 0 : _a.next)\n ? this.observe(nextOrObserver)\n : this.do(nextOrObserver, error, complete);\n };\n Notification.prototype.toObservable = function () {\n var _a = this, kind = _a.kind, value = _a.value, error = _a.error;\n var result = kind === 'N'\n ?\n of(value)\n :\n kind === 'E'\n ?\n throwError(function () { return error; })\n :\n kind === 'C'\n ?\n EMPTY\n :\n 0;\n if (!result) {\n throw new TypeError(\"Unexpected notification kind \" + kind);\n }\n return result;\n };\n Notification.createNext = function (value) {\n return new Notification('N', value);\n };\n Notification.createError = function (err) {\n return new Notification('E', undefined, err);\n };\n Notification.createComplete = function () {\n return Notification.completeNotification;\n };\n Notification.completeNotification = new Notification('C');\n return Notification;\n}());\nexport { Notification };\nexport function observeNotification(notification, observer) {\n var _a, _b, _c;\n var _d = notification, kind = _d.kind, value = _d.value, error = _d.error;\n if (typeof kind !== 'string') {\n throw new TypeError('Invalid notification, missing \"kind\"');\n }\n kind === 'N' ? (_a = observer.next) === null || _a === void 0 ? void 0 : _a.call(observer, value) : kind === 'E' ? (_b = observer.error) === null || _b === void 0 ? void 0 : _b.call(observer, error) : (_c = observer.complete) === null || _c === void 0 ? void 0 : _c.call(observer);\n}\n//# sourceMappingURL=Notification.js.map","export function caughtSchedule(subscriber, scheduler, execute, delay) {\n if (delay === void 0) { delay = 0; }\n var subscription = scheduler.schedule(function () {\n try {\n execute.call(this);\n }\n catch (err) {\n subscriber.error(err);\n }\n }, delay);\n subscriber.add(subscription);\n return subscription;\n}\n//# sourceMappingURL=caughtSchedule.js.map","import { Observable } from '../Observable';\nimport { iterator as Symbol_iterator } from '../symbol/iterator';\nimport { isFunction } from '../util/isFunction';\nimport { caughtSchedule } from '../util/caughtSchedule';\nexport function scheduleIterable(input, scheduler) {\n return new Observable(function (subscriber) {\n var iterator;\n subscriber.add(scheduler.schedule(function () {\n iterator = input[Symbol_iterator]();\n caughtSchedule(subscriber, scheduler, function () {\n var _a = iterator.next(), value = _a.value, done = _a.done;\n if (done) {\n subscriber.complete();\n }\n else {\n subscriber.next(value);\n this.schedule();\n }\n });\n }));\n return function () { return isFunction(iterator === null || iterator === void 0 ? void 0 : iterator.return) && iterator.return(); };\n });\n}\n//# sourceMappingURL=scheduleIterable.js.map","import { Observable } from '../Observable';\nimport { Subscription } from '../Subscription';\nexport function scheduleAsyncIterable(input, scheduler) {\n if (!input) {\n throw new Error('Iterable cannot be null');\n }\n return new Observable(function (subscriber) {\n var sub = new Subscription();\n sub.add(scheduler.schedule(function () {\n var iterator = input[Symbol.asyncIterator]();\n sub.add(scheduler.schedule(function () {\n var _this = this;\n iterator.next().then(function (result) {\n if (result.done) {\n subscriber.complete();\n }\n else {\n subscriber.next(result.value);\n _this.schedule();\n }\n });\n }));\n }));\n return sub;\n });\n}\n//# sourceMappingURL=scheduleAsyncIterable.js.map","import { observable as Symbol_observable } from '../symbol/observable';\nimport { isFunction } from './isFunction';\nexport function isInteropObservable(input) {\n return isFunction(input[Symbol_observable]);\n}\n//# sourceMappingURL=isInteropObservable.js.map","import { iterator as Symbol_iterator } from '../symbol/iterator';\nimport { isFunction } from './isFunction';\nexport function isIterable(input) {\n return isFunction(input === null || input === void 0 ? void 0 : input[Symbol_iterator]);\n}\n//# sourceMappingURL=isIterable.js.map","import { isFunction } from './isFunction';\nexport function isAsyncIterable(obj) {\n return Symbol.asyncIterator && isFunction(obj === null || obj === void 0 ? void 0 : obj[Symbol.asyncIterator]);\n}\n//# sourceMappingURL=isAsyncIterable.js.map","export function createInvalidObservableTypeError(input) {\n return new TypeError(\"You provided \" + (input !== null && typeof input === 'object' ? 'an invalid object' : \"'\" + input + \"'\") + \" where a stream was expected. You can provide an Observable, Promise, ReadableStream, Array, AsyncIterable, or Iterable.\");\n}\n//# sourceMappingURL=throwUnobservableError.js.map","import { __asyncGenerator, __await, __generator } from \"tslib\";\nimport { isFunction } from './isFunction';\nexport function readableStreamLikeToAsyncGenerator(readableStream) {\n return __asyncGenerator(this, arguments, function readableStreamLikeToAsyncGenerator_1() {\n var reader, _a, value, done;\n return __generator(this, function (_b) {\n switch (_b.label) {\n case 0:\n reader = readableStream.getReader();\n _b.label = 1;\n case 1:\n _b.trys.push([1, , 9, 10]);\n _b.label = 2;\n case 2:\n if (!true) return [3, 8];\n return [4, __await(reader.read())];\n case 3:\n _a = _b.sent(), value = _a.value, done = _a.done;\n if (!done) return [3, 5];\n return [4, __await(void 0)];\n case 4: return [2, _b.sent()];\n case 5: return [4, __await(value)];\n case 6: return [4, _b.sent()];\n case 7:\n _b.sent();\n return [3, 2];\n case 8: return [3, 10];\n case 9:\n reader.releaseLock();\n return [7];\n case 10: return [2];\n }\n });\n });\n}\nexport function isReadableStreamLike(obj) {\n return isFunction(obj === null || obj === void 0 ? void 0 : obj.getReader);\n}\n//# sourceMappingURL=isReadableStreamLike.js.map","import { scheduleObservable } from './scheduleObservable';\nimport { schedulePromise } from './schedulePromise';\nimport { scheduleArray } from './scheduleArray';\nimport { scheduleIterable } from './scheduleIterable';\nimport { scheduleAsyncIterable } from './scheduleAsyncIterable';\nimport { isInteropObservable } from '../util/isInteropObservable';\nimport { isPromise } from '../util/isPromise';\nimport { isArrayLike } from '../util/isArrayLike';\nimport { isIterable } from '../util/isIterable';\nimport { isAsyncIterable } from '../util/isAsyncIterable';\nimport { createInvalidObservableTypeError } from '../util/throwUnobservableError';\nimport { isReadableStreamLike } from '../util/isReadableStreamLike';\nimport { scheduleReadableStreamLike } from './scheduleReadableStreamLike';\nexport function scheduled(input, scheduler) {\n if (input != null) {\n if (isInteropObservable(input)) {\n return scheduleObservable(input, scheduler);\n }\n if (isArrayLike(input)) {\n return scheduleArray(input, scheduler);\n }\n if (isPromise(input)) {\n return schedulePromise(input, scheduler);\n }\n if (isAsyncIterable(input)) {\n return scheduleAsyncIterable(input, scheduler);\n }\n if (isIterable(input)) {\n return scheduleIterable(input, scheduler);\n }\n if (isReadableStreamLike(input)) {\n return scheduleReadableStreamLike(input, scheduler);\n }\n }\n throw createInvalidObservableTypeError(input);\n}\n//# sourceMappingURL=scheduled.js.map","import { Observable } from '../Observable';\nimport { Subscription } from '../Subscription';\nimport { observable as Symbol_observable } from '../symbol/observable';\nexport function scheduleObservable(input, scheduler) {\n return new Observable(function (subscriber) {\n var sub = new Subscription();\n sub.add(scheduler.schedule(function () {\n var observable = input[Symbol_observable]();\n sub.add(observable.subscribe({\n next: function (value) { sub.add(scheduler.schedule(function () { return subscriber.next(value); })); },\n error: function (err) { sub.add(scheduler.schedule(function () { return subscriber.error(err); })); },\n complete: function () { sub.add(scheduler.schedule(function () { return subscriber.complete(); })); },\n }));\n }));\n return sub;\n });\n}\n//# sourceMappingURL=scheduleObservable.js.map","import { Observable } from '../Observable';\nexport function schedulePromise(input, scheduler) {\n return new Observable(function (subscriber) {\n return scheduler.schedule(function () {\n return input.then(function (value) {\n subscriber.add(scheduler.schedule(function () {\n subscriber.next(value);\n subscriber.add(scheduler.schedule(function () { return subscriber.complete(); }));\n }));\n }, function (err) {\n subscriber.add(scheduler.schedule(function () { return subscriber.error(err); }));\n });\n });\n });\n}\n//# sourceMappingURL=schedulePromise.js.map","import { scheduleAsyncIterable } from './scheduleAsyncIterable';\nimport { readableStreamLikeToAsyncGenerator } from '../util/isReadableStreamLike';\nexport function scheduleReadableStreamLike(input, scheduler) {\n return scheduleAsyncIterable(readableStreamLikeToAsyncGenerator(input), scheduler);\n}\n//# sourceMappingURL=scheduleReadableStreamLike.js.map","import { __asyncValues, __awaiter, __generator, __values } from \"tslib\";\nimport { isArrayLike } from '../util/isArrayLike';\nimport { isPromise } from '../util/isPromise';\nimport { observable as Symbol_observable } from '../symbol/observable';\nimport { Observable } from '../Observable';\nimport { scheduled } from '../scheduled/scheduled';\nimport { isFunction } from '../util/isFunction';\nimport { reportUnhandledError } from '../util/reportUnhandledError';\nimport { isInteropObservable } from '../util/isInteropObservable';\nimport { isAsyncIterable } from '../util/isAsyncIterable';\nimport { createInvalidObservableTypeError } from '../util/throwUnobservableError';\nimport { isIterable } from '../util/isIterable';\nimport { isReadableStreamLike, readableStreamLikeToAsyncGenerator } from '../util/isReadableStreamLike';\nexport function from(input, scheduler) {\n return scheduler ? scheduled(input, scheduler) : innerFrom(input);\n}\nexport function innerFrom(input) {\n if (input instanceof Observable) {\n return input;\n }\n if (input != null) {\n if (isInteropObservable(input)) {\n return fromInteropObservable(input);\n }\n if (isArrayLike(input)) {\n return fromArrayLike(input);\n }\n if (isPromise(input)) {\n return fromPromise(input);\n }\n if (isAsyncIterable(input)) {\n return fromAsyncIterable(input);\n }\n if (isIterable(input)) {\n return fromIterable(input);\n }\n if (isReadableStreamLike(input)) {\n return fromReadableStreamLike(input);\n }\n }\n throw createInvalidObservableTypeError(input);\n}\nfunction fromInteropObservable(obj) {\n return new Observable(function (subscriber) {\n var obs = obj[Symbol_observable]();\n if (isFunction(obs.subscribe)) {\n return obs.subscribe(subscriber);\n }\n throw new TypeError('Provided object does not correctly implement Symbol.observable');\n });\n}\nexport function fromArrayLike(array) {\n return new Observable(function (subscriber) {\n for (var i = 0; i < array.length && !subscriber.closed; i++) {\n subscriber.next(array[i]);\n }\n subscriber.complete();\n });\n}\nfunction fromPromise(promise) {\n return new Observable(function (subscriber) {\n promise\n .then(function (value) {\n if (!subscriber.closed) {\n subscriber.next(value);\n subscriber.complete();\n }\n }, function (err) { return subscriber.error(err); })\n .then(null, reportUnhandledError);\n });\n}\nfunction fromIterable(iterable) {\n return new Observable(function (subscriber) {\n var e_1, _a;\n try {\n for (var iterable_1 = __values(iterable), iterable_1_1 = iterable_1.next(); !iterable_1_1.done; iterable_1_1 = iterable_1.next()) {\n var value = iterable_1_1.value;\n subscriber.next(value);\n if (subscriber.closed) {\n return;\n }\n }\n }\n catch (e_1_1) { e_1 = { error: e_1_1 }; }\n finally {\n try {\n if (iterable_1_1 && !iterable_1_1.done && (_a = iterable_1.return)) _a.call(iterable_1);\n }\n finally { if (e_1) throw e_1.error; }\n }\n subscriber.complete();\n });\n}\nfunction fromAsyncIterable(asyncIterable) {\n return new Observable(function (subscriber) {\n process(asyncIterable, subscriber).catch(function (err) { return subscriber.error(err); });\n });\n}\nfunction fromReadableStreamLike(readableStream) {\n return fromAsyncIterable(readableStreamLikeToAsyncGenerator(readableStream));\n}\nfunction process(asyncIterable, subscriber) {\n var asyncIterable_1, asyncIterable_1_1;\n var e_2, _a;\n return __awaiter(this, void 0, void 0, function () {\n var value, e_2_1;\n return __generator(this, function (_b) {\n switch (_b.label) {\n case 0:\n _b.trys.push([0, 5, 6, 11]);\n asyncIterable_1 = __asyncValues(asyncIterable);\n _b.label = 1;\n case 1: return [4, asyncIterable_1.next()];\n case 2:\n if (!(asyncIterable_1_1 = _b.sent(), !asyncIterable_1_1.done)) return [3, 4];\n value = asyncIterable_1_1.value;\n subscriber.next(value);\n if (subscriber.closed) {\n return [2];\n }\n _b.label = 3;\n case 3: return [3, 1];\n case 4: return [3, 11];\n case 5:\n e_2_1 = _b.sent();\n e_2 = { error: e_2_1 };\n return [3, 11];\n case 6:\n _b.trys.push([6, , 9, 10]);\n if (!(asyncIterable_1_1 && !asyncIterable_1_1.done && (_a = asyncIterable_1.return))) return [3, 8];\n return [4, _a.call(asyncIterable_1)];\n case 7:\n _b.sent();\n _b.label = 8;\n case 8: return [3, 10];\n case 9:\n if (e_2) throw e_2.error;\n return [7];\n case 10: return [7];\n case 11:\n subscriber.complete();\n return [2];\n }\n });\n });\n}\n//# sourceMappingURL=from.js.map","import { scheduleArray } from '../scheduled/scheduleArray';\nimport { fromArrayLike } from './from';\nexport function internalFromArray(input, scheduler) {\n return scheduler ? scheduleArray(input, scheduler) : fromArrayLike(input);\n}\n//# sourceMappingURL=fromArray.js.map","import { isFunction } from './isFunction';\nexport function isScheduler(value) {\n return value && isFunction(value.schedule);\n}\n//# sourceMappingURL=isScheduler.js.map","import { isFunction } from './isFunction';\nimport { isScheduler } from './isScheduler';\nfunction last(arr) {\n return arr[arr.length - 1];\n}\nexport function popResultSelector(args) {\n return isFunction(last(args)) ? args.pop() : undefined;\n}\nexport function popScheduler(args) {\n return isScheduler(last(args)) ? args.pop() : undefined;\n}\nexport function popNumber(args, defaultValue) {\n return typeof last(args) === 'number' ? args.pop() : defaultValue;\n}\n//# sourceMappingURL=args.js.map","import { internalFromArray } from './fromArray';\nimport { scheduleArray } from '../scheduled/scheduleArray';\nimport { popScheduler } from '../util/args';\nexport function of() {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n var scheduler = popScheduler(args);\n return scheduler ? scheduleArray(args, scheduler) : internalFromArray(args);\n}\n//# sourceMappingURL=of.js.map","import { Observable } from '../Observable';\nimport { isFunction } from '../util/isFunction';\nexport function throwError(errorOrErrorFactory, scheduler) {\n var errorFactory = isFunction(errorOrErrorFactory) ? errorOrErrorFactory : function () { return errorOrErrorFactory; };\n var init = function (subscriber) { return subscriber.error(errorFactory()); };\n return new Observable(scheduler ? function (subscriber) { return scheduler.schedule(init, 0, subscriber); } : init);\n}\n//# sourceMappingURL=throwError.js.map","import { Observable } from '../Observable';\nimport { isFunction } from './isFunction';\nexport function isObservable(obj) {\n return !!obj && (obj instanceof Observable || (isFunction(obj.lift) && isFunction(obj.subscribe)));\n}\n//# sourceMappingURL=isObservable.js.map","import { createErrorClass } from './createErrorClass';\nexport var EmptyError = createErrorClass(function (_super) { return function EmptyErrorImpl() {\n _super(this);\n this.name = 'EmptyError';\n this.message = 'no elements in sequence';\n}; });\n//# sourceMappingURL=EmptyError.js.map","import { EmptyError } from './util/EmptyError';\nexport function lastValueFrom(source, config) {\n var hasConfig = typeof config === 'object';\n return new Promise(function (resolve, reject) {\n var _hasValue = false;\n var _value;\n source.subscribe({\n next: function (value) {\n _value = value;\n _hasValue = true;\n },\n error: reject,\n complete: function () {\n if (_hasValue) {\n resolve(_value);\n }\n else if (hasConfig) {\n resolve(config.defaultValue);\n }\n else {\n reject(new EmptyError());\n }\n },\n });\n });\n}\n//# sourceMappingURL=lastValueFrom.js.map","import { EmptyError } from './util/EmptyError';\nimport { SafeSubscriber } from './Subscriber';\nexport function firstValueFrom(source, config) {\n var hasConfig = typeof config === 'object';\n return new Promise(function (resolve, reject) {\n var subscriber = new SafeSubscriber({\n next: function (value) {\n resolve(value);\n subscriber.unsubscribe();\n },\n error: reject,\n complete: function () {\n if (hasConfig) {\n resolve(config.defaultValue);\n }\n else {\n reject(new EmptyError());\n }\n },\n });\n source.subscribe(subscriber);\n });\n}\n//# sourceMappingURL=firstValueFrom.js.map","import { createErrorClass } from './createErrorClass';\nexport var ArgumentOutOfRangeError = createErrorClass(function (_super) {\n return function ArgumentOutOfRangeErrorImpl() {\n _super(this);\n this.name = 'ArgumentOutOfRangeError';\n this.message = 'argument out of range';\n };\n});\n//# sourceMappingURL=ArgumentOutOfRangeError.js.map","import { createErrorClass } from './createErrorClass';\nexport var NotFoundError = createErrorClass(function (_super) {\n return function NotFoundErrorImpl(message) {\n _super(this);\n this.name = 'NotFoundError';\n this.message = message;\n };\n});\n//# sourceMappingURL=NotFoundError.js.map","import { createErrorClass } from './createErrorClass';\nexport var SequenceError = createErrorClass(function (_super) {\n return function SequenceErrorImpl(message) {\n _super(this);\n this.name = 'SequenceError';\n this.message = message;\n };\n});\n//# sourceMappingURL=SequenceError.js.map","export function isValidDate(value) {\n return value instanceof Date && !isNaN(value);\n}\n//# sourceMappingURL=isDate.js.map","import { asyncScheduler } from '../scheduler/async';\nimport { isValidDate } from '../util/isDate';\nimport { operate } from '../util/lift';\nimport { innerFrom } from '../observable/from';\nimport { createErrorClass } from '../util/createErrorClass';\nimport { caughtSchedule } from '../util/caughtSchedule';\nimport { OperatorSubscriber } from './OperatorSubscriber';\nexport var TimeoutError = createErrorClass(function (_super) {\n return function TimeoutErrorImpl(info) {\n if (info === void 0) { info = null; }\n _super(this);\n this.message = 'Timeout has occurred';\n this.name = 'TimeoutError';\n this.info = info;\n };\n});\nexport function timeout(config, schedulerArg) {\n var _a = (isValidDate(config)\n ? { first: config }\n : typeof config === 'number'\n ? { each: config }\n : config), first = _a.first, each = _a.each, _b = _a.with, _with = _b === void 0 ? timeoutErrorFactory : _b, _c = _a.scheduler, scheduler = _c === void 0 ? schedulerArg !== null && schedulerArg !== void 0 ? schedulerArg : asyncScheduler : _c, _d = _a.meta, meta = _d === void 0 ? null : _d;\n if (first == null && each == null) {\n throw new TypeError('No timeout provided.');\n }\n return operate(function (source, subscriber) {\n var originalSourceSubscription;\n var timerSubscription;\n var lastValue = null;\n var seen = 0;\n var startTimer = function (delay) {\n timerSubscription = caughtSchedule(subscriber, scheduler, function () {\n originalSourceSubscription.unsubscribe();\n innerFrom(_with({\n meta: meta,\n lastValue: lastValue,\n seen: seen,\n })).subscribe(subscriber);\n }, delay);\n };\n originalSourceSubscription = source.subscribe(new OperatorSubscriber(subscriber, function (value) {\n timerSubscription === null || timerSubscription === void 0 ? void 0 : timerSubscription.unsubscribe();\n seen++;\n subscriber.next((lastValue = value));\n each > 0 && startTimer(each);\n }, undefined, undefined, function () {\n if (!(timerSubscription === null || timerSubscription === void 0 ? void 0 : timerSubscription.closed)) {\n timerSubscription === null || timerSubscription === void 0 ? void 0 : timerSubscription.unsubscribe();\n }\n lastValue = null;\n }));\n startTimer(first != null ? (typeof first === 'number' ? first : +first - scheduler.now()) : each);\n });\n}\nfunction timeoutErrorFactory(info) {\n throw new TimeoutError(info);\n}\n//# sourceMappingURL=timeout.js.map","import { operate } from '../util/lift';\nexport function subscribeOn(scheduler, delay) {\n if (delay === void 0) { delay = 0; }\n return operate(function (source, subscriber) {\n subscriber.add(scheduler.schedule(function () { return source.subscribe(subscriber); }, delay));\n });\n}\n//# sourceMappingURL=subscribeOn.js.map","import { operate } from '../util/lift';\nimport { OperatorSubscriber } from './OperatorSubscriber';\nexport function map(project, thisArg) {\n return operate(function (source, subscriber) {\n var index = 0;\n source.subscribe(new OperatorSubscriber(subscriber, function (value) {\n subscriber.next(project.call(thisArg, value, index++));\n }));\n });\n}\n//# sourceMappingURL=map.js.map","import { __read, __spreadArray } from \"tslib\";\nimport { map } from \"../operators/map\";\nvar isArray = Array.isArray;\nfunction callOrApply(fn, args) {\n return isArray(args) ? fn.apply(void 0, __spreadArray([], __read(args))) : fn(args);\n}\nexport function mapOneOrManyArgs(fn) {\n return map(function (args) { return callOrApply(fn, args); });\n}\n//# sourceMappingURL=mapOneOrManyArgs.js.map","import { operate } from '../util/lift';\nimport { OperatorSubscriber } from './OperatorSubscriber';\nexport function observeOn(scheduler, delay) {\n if (delay === void 0) { delay = 0; }\n return operate(function (source, subscriber) {\n source.subscribe(new OperatorSubscriber(subscriber, function (value) { return subscriber.add(scheduler.schedule(function () { return subscriber.next(value); }, delay)); }, function () { return subscriber.add(scheduler.schedule(function () { return subscriber.complete(); }, delay)); }, function (err) { return subscriber.add(scheduler.schedule(function () { return subscriber.error(err); }, delay)); }));\n });\n}\n//# sourceMappingURL=observeOn.js.map","import { __read, __spreadArray } from \"tslib\";\nimport { isScheduler } from '../util/isScheduler';\nimport { Observable } from '../Observable';\nimport { subscribeOn } from '../operators/subscribeOn';\nimport { mapOneOrManyArgs } from '../util/mapOneOrManyArgs';\nimport { observeOn } from '../operators/observeOn';\nimport { AsyncSubject } from '../AsyncSubject';\nexport function bindCallbackInternals(isNodeStyle, callbackFunc, resultSelector, scheduler) {\n if (resultSelector) {\n if (isScheduler(resultSelector)) {\n scheduler = resultSelector;\n }\n else {\n return function () {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n return bindCallbackInternals(isNodeStyle, callbackFunc, scheduler)\n .apply(this, args)\n .pipe(mapOneOrManyArgs(resultSelector));\n };\n }\n }\n if (scheduler) {\n return function () {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n return bindCallbackInternals(isNodeStyle, callbackFunc)\n .apply(this, args)\n .pipe(subscribeOn(scheduler), observeOn(scheduler));\n };\n }\n return function () {\n var _this = this;\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n var subject = new AsyncSubject();\n var uninitialized = true;\n return new Observable(function (subscriber) {\n var subs = subject.subscribe(subscriber);\n if (uninitialized) {\n uninitialized = false;\n var isAsync_1 = false;\n var isComplete_1 = false;\n callbackFunc.apply(_this, __spreadArray(__spreadArray([], __read(args)), [\n function () {\n var results = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n results[_i] = arguments[_i];\n }\n if (isNodeStyle) {\n var err = results.shift();\n if (err != null) {\n subject.error(err);\n return;\n }\n }\n subject.next(1 < results.length ? results : results[0]);\n isComplete_1 = true;\n if (isAsync_1) {\n subject.complete();\n }\n },\n ]));\n if (isComplete_1) {\n subject.complete();\n }\n isAsync_1 = true;\n }\n return subs;\n });\n };\n}\n//# sourceMappingURL=bindCallbackInternals.js.map","import { bindCallbackInternals } from './bindCallbackInternals';\nexport function bindCallback(callbackFunc, resultSelector, scheduler) {\n return bindCallbackInternals(false, callbackFunc, resultSelector, scheduler);\n}\n//# sourceMappingURL=bindCallback.js.map","import { bindCallbackInternals } from './bindCallbackInternals';\nexport function bindNodeCallback(callbackFunc, resultSelector, scheduler) {\n return bindCallbackInternals(true, callbackFunc, resultSelector, scheduler);\n}\n//# sourceMappingURL=bindNodeCallback.js.map","var isArray = Array.isArray;\nvar getPrototypeOf = Object.getPrototypeOf, objectProto = Object.prototype, getKeys = Object.keys;\nexport function argsArgArrayOrObject(args) {\n if (args.length === 1) {\n var first_1 = args[0];\n if (isArray(first_1)) {\n return { args: first_1, keys: null };\n }\n if (isPOJO(first_1)) {\n var keys = getKeys(first_1);\n return {\n args: keys.map(function (key) { return first_1[key]; }),\n keys: keys,\n };\n }\n }\n return { args: args, keys: null };\n}\nfunction isPOJO(obj) {\n return obj && typeof obj === 'object' && getPrototypeOf(obj) === objectProto;\n}\n//# sourceMappingURL=argsArgArrayOrObject.js.map","export function createObject(keys, values) {\n return keys.reduce(function (result, key, i) { return ((result[key] = values[i]), result); }, {});\n}\n//# sourceMappingURL=createObject.js.map","import { Observable } from '../Observable';\nimport { argsArgArrayOrObject } from '../util/argsArgArrayOrObject';\nimport { from } from './from';\nimport { identity } from '../util/identity';\nimport { mapOneOrManyArgs } from '../util/mapOneOrManyArgs';\nimport { popResultSelector, popScheduler } from '../util/args';\nimport { createObject } from '../util/createObject';\nimport { OperatorSubscriber } from '../operators/OperatorSubscriber';\nexport function combineLatest() {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n var scheduler = popScheduler(args);\n var resultSelector = popResultSelector(args);\n var _a = argsArgArrayOrObject(args), observables = _a.args, keys = _a.keys;\n if (observables.length === 0) {\n return from([], scheduler);\n }\n var result = new Observable(combineLatestInit(observables, scheduler, keys\n ?\n function (values) { return createObject(keys, values); }\n :\n identity));\n return resultSelector ? result.pipe(mapOneOrManyArgs(resultSelector)) : result;\n}\nexport function combineLatestInit(observables, scheduler, valueTransform) {\n if (valueTransform === void 0) { valueTransform = identity; }\n return function (subscriber) {\n maybeSchedule(scheduler, function () {\n var length = observables.length;\n var values = new Array(length);\n var active = length;\n var remainingFirstValues = length;\n var _loop_1 = function (i) {\n maybeSchedule(scheduler, function () {\n var source = from(observables[i], scheduler);\n var hasFirstValue = false;\n source.subscribe(new OperatorSubscriber(subscriber, function (value) {\n values[i] = value;\n if (!hasFirstValue) {\n hasFirstValue = true;\n remainingFirstValues--;\n }\n if (!remainingFirstValues) {\n subscriber.next(valueTransform(values.slice()));\n }\n }, function () {\n if (!--active) {\n subscriber.complete();\n }\n }));\n }, subscriber);\n };\n for (var i = 0; i < length; i++) {\n _loop_1(i);\n }\n }, subscriber);\n };\n}\nfunction maybeSchedule(scheduler, execute, subscription) {\n if (scheduler) {\n subscription.add(scheduler.schedule(execute));\n }\n else {\n execute();\n }\n}\n//# sourceMappingURL=combineLatest.js.map","import { innerFrom } from '../observable/from';\nimport { OperatorSubscriber } from './OperatorSubscriber';\nexport function mergeInternals(source, subscriber, project, concurrent, onBeforeNext, expand, innerSubScheduler, additionalTeardown) {\n var buffer = [];\n var active = 0;\n var index = 0;\n var isComplete = false;\n var checkComplete = function () {\n if (isComplete && !buffer.length && !active) {\n subscriber.complete();\n }\n };\n var outerNext = function (value) { return (active < concurrent ? doInnerSub(value) : buffer.push(value)); };\n var doInnerSub = function (value) {\n expand && subscriber.next(value);\n active++;\n var innerComplete = false;\n innerFrom(project(value, index++)).subscribe(new OperatorSubscriber(subscriber, function (innerValue) {\n onBeforeNext === null || onBeforeNext === void 0 ? void 0 : onBeforeNext(innerValue);\n if (expand) {\n outerNext(innerValue);\n }\n else {\n subscriber.next(innerValue);\n }\n }, function () {\n innerComplete = true;\n }, undefined, function () {\n if (innerComplete) {\n try {\n active--;\n var _loop_1 = function () {\n var bufferedValue = buffer.shift();\n innerSubScheduler ? subscriber.add(innerSubScheduler.schedule(function () { return doInnerSub(bufferedValue); })) : doInnerSub(bufferedValue);\n };\n while (buffer.length && active < concurrent) {\n _loop_1();\n }\n checkComplete();\n }\n catch (err) {\n subscriber.error(err);\n }\n }\n }));\n };\n source.subscribe(new OperatorSubscriber(subscriber, outerNext, function () {\n isComplete = true;\n checkComplete();\n }));\n return function () {\n additionalTeardown === null || additionalTeardown === void 0 ? void 0 : additionalTeardown();\n };\n}\n//# sourceMappingURL=mergeInternals.js.map","import { map } from './map';\nimport { innerFrom } from '../observable/from';\nimport { operate } from '../util/lift';\nimport { mergeInternals } from './mergeInternals';\nimport { isFunction } from '../util/isFunction';\nexport function mergeMap(project, resultSelector, concurrent) {\n if (concurrent === void 0) { concurrent = Infinity; }\n if (isFunction(resultSelector)) {\n return mergeMap(function (a, i) { return map(function (b, ii) { return resultSelector(a, b, i, ii); })(innerFrom(project(a, i))); }, concurrent);\n }\n else if (typeof resultSelector === 'number') {\n concurrent = resultSelector;\n }\n return operate(function (source, subscriber) { return mergeInternals(source, subscriber, project, concurrent); });\n}\n//# sourceMappingURL=mergeMap.js.map","import { mergeMap } from './mergeMap';\nimport { identity } from '../util/identity';\nexport function mergeAll(concurrent) {\n if (concurrent === void 0) { concurrent = Infinity; }\n return mergeMap(identity, concurrent);\n}\n//# sourceMappingURL=mergeAll.js.map","import { mergeAll } from './mergeAll';\nexport function concatAll() {\n return mergeAll(1);\n}\n//# sourceMappingURL=concatAll.js.map","import { concatAll } from '../operators/concatAll';\nimport { internalFromArray } from './fromArray';\nimport { popScheduler } from '../util/args';\nexport function concat() {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n return concatAll()(internalFromArray(args, popScheduler(args)));\n}\n//# sourceMappingURL=concat.js.map","import { Observable } from '../Observable';\nimport { innerFrom } from './from';\nexport function defer(observableFactory) {\n return new Observable(function (subscriber) {\n innerFrom(observableFactory()).subscribe(subscriber);\n });\n}\n//# sourceMappingURL=defer.js.map","import { Subject } from '../Subject';\nimport { Observable } from '../Observable';\nimport { defer } from './defer';\nvar DEFAULT_CONFIG = {\n connector: function () { return new Subject(); },\n resetOnDisconnect: true,\n};\nexport function connectable(source, config) {\n if (config === void 0) { config = DEFAULT_CONFIG; }\n var connection = null;\n var connector = config.connector, _a = config.resetOnDisconnect, resetOnDisconnect = _a === void 0 ? true : _a;\n var subject = connector();\n var result = new Observable(function (subscriber) {\n return subject.subscribe(subscriber);\n });\n result.connect = function () {\n if (!connection || connection.closed) {\n connection = defer(function () { return source; }).subscribe(subject);\n if (resetOnDisconnect) {\n connection.add(function () { return (subject = connector()); });\n }\n }\n return connection;\n };\n return result;\n}\n//# sourceMappingURL=connectable.js.map","import { Observable } from '../Observable';\nimport { argsArgArrayOrObject } from '../util/argsArgArrayOrObject';\nimport { innerFrom } from './from';\nimport { popResultSelector } from '../util/args';\nimport { OperatorSubscriber } from '../operators/OperatorSubscriber';\nimport { mapOneOrManyArgs } from '../util/mapOneOrManyArgs';\nimport { createObject } from '../util/createObject';\nexport function forkJoin() {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n var resultSelector = popResultSelector(args);\n var _a = argsArgArrayOrObject(args), sources = _a.args, keys = _a.keys;\n var result = new Observable(function (subscriber) {\n var length = sources.length;\n if (!length) {\n subscriber.complete();\n return;\n }\n var values = new Array(length);\n var remainingCompletions = length;\n var remainingEmissions = length;\n var _loop_1 = function (sourceIndex) {\n var hasValue = false;\n innerFrom(sources[sourceIndex]).subscribe(new OperatorSubscriber(subscriber, function (value) {\n if (!hasValue) {\n hasValue = true;\n remainingEmissions--;\n }\n values[sourceIndex] = value;\n }, function () {\n if (!--remainingCompletions || !hasValue) {\n if (!remainingEmissions) {\n subscriber.next(keys ? createObject(keys, values) : values);\n }\n subscriber.complete();\n }\n }));\n };\n for (var sourceIndex = 0; sourceIndex < length; sourceIndex++) {\n _loop_1(sourceIndex);\n }\n });\n return resultSelector ? result.pipe(mapOneOrManyArgs(resultSelector)) : result;\n}\n//# sourceMappingURL=forkJoin.js.map","import { __read } from \"tslib\";\nimport { Observable } from '../Observable';\nimport { mergeMap } from '../operators/mergeMap';\nimport { isArrayLike } from '../util/isArrayLike';\nimport { isFunction } from '../util/isFunction';\nimport { mapOneOrManyArgs } from '../util/mapOneOrManyArgs';\nimport { internalFromArray } from './fromArray';\nvar nodeEventEmitterMethods = ['addListener', 'removeListener'];\nvar eventTargetMethods = ['addEventListener', 'removeEventListener'];\nvar jqueryMethods = ['on', 'off'];\nexport function fromEvent(target, eventName, options, resultSelector) {\n if (isFunction(options)) {\n resultSelector = options;\n options = undefined;\n }\n if (resultSelector) {\n return fromEvent(target, eventName, options).pipe(mapOneOrManyArgs(resultSelector));\n }\n var _a = __read(isEventTarget(target)\n ? eventTargetMethods.map(function (methodName) { return function (handler) { return target[methodName](eventName, handler, options); }; })\n :\n isNodeStyleEventEmitter(target)\n ? nodeEventEmitterMethods.map(toCommonHandlerRegistry(target, eventName))\n : isJQueryStyleEventEmitter(target)\n ? jqueryMethods.map(toCommonHandlerRegistry(target, eventName))\n : [], 2), add = _a[0], remove = _a[1];\n if (!add) {\n if (isArrayLike(target)) {\n return mergeMap(function (subTarget) { return fromEvent(subTarget, eventName, options); })(internalFromArray(target));\n }\n }\n if (!add) {\n throw new TypeError('Invalid event target');\n }\n return new Observable(function (subscriber) {\n var handler = function () {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n return subscriber.next(1 < args.length ? args : args[0]);\n };\n add(handler);\n return function () { return remove(handler); };\n });\n}\nfunction toCommonHandlerRegistry(target, eventName) {\n return function (methodName) { return function (handler) { return target[methodName](eventName, handler); }; };\n}\nfunction isNodeStyleEventEmitter(target) {\n return isFunction(target.addListener) && isFunction(target.removeListener);\n}\nfunction isJQueryStyleEventEmitter(target) {\n return isFunction(target.on) && isFunction(target.off);\n}\nfunction isEventTarget(target) {\n return isFunction(target.addEventListener) && isFunction(target.removeEventListener);\n}\n//# sourceMappingURL=fromEvent.js.map","import { Observable } from '../Observable';\nimport { isFunction } from '../util/isFunction';\nimport { mapOneOrManyArgs } from '../util/mapOneOrManyArgs';\nexport function fromEventPattern(addHandler, removeHandler, resultSelector) {\n if (resultSelector) {\n return fromEventPattern(addHandler, removeHandler).pipe(mapOneOrManyArgs(resultSelector));\n }\n return new Observable(function (subscriber) {\n var handler = function () {\n var e = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n e[_i] = arguments[_i];\n }\n return subscriber.next(e.length === 1 ? e[0] : e);\n };\n var retValue = addHandler(handler);\n return isFunction(removeHandler) ? function () { return removeHandler(handler, retValue); } : undefined;\n });\n}\n//# sourceMappingURL=fromEventPattern.js.map","import { __generator } from \"tslib\";\nimport { identity } from '../util/identity';\nimport { isScheduler } from '../util/isScheduler';\nimport { defer } from './defer';\nimport { scheduleIterable } from '../scheduled/scheduleIterable';\nexport function generate(initialStateOrOptions, condition, iterate, resultSelectorOrScheduler, scheduler) {\n var _a, _b;\n var resultSelector;\n var initialState;\n if (arguments.length === 1) {\n (_a = initialStateOrOptions, initialState = _a.initialState, condition = _a.condition, iterate = _a.iterate, _b = _a.resultSelector, resultSelector = _b === void 0 ? identity : _b, scheduler = _a.scheduler);\n }\n else {\n initialState = initialStateOrOptions;\n if (!resultSelectorOrScheduler || isScheduler(resultSelectorOrScheduler)) {\n resultSelector = identity;\n scheduler = resultSelectorOrScheduler;\n }\n else {\n resultSelector = resultSelectorOrScheduler;\n }\n }\n function gen() {\n var state;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n state = initialState;\n _a.label = 1;\n case 1:\n if (!(!condition || condition(state))) return [3, 4];\n return [4, resultSelector(state)];\n case 2:\n _a.sent();\n _a.label = 3;\n case 3:\n state = iterate(state);\n return [3, 1];\n case 4: return [2];\n }\n });\n }\n return defer((scheduler\n ?\n function () { return scheduleIterable(gen(), scheduler); }\n :\n gen));\n}\n//# sourceMappingURL=generate.js.map","import { defer } from './defer';\nexport function iif(condition, trueResult, falseResult) {\n return defer(function () { return (condition() ? trueResult : falseResult); });\n}\n//# sourceMappingURL=iif.js.map","import { Observable } from '../Observable';\nimport { async as asyncScheduler } from '../scheduler/async';\nimport { isScheduler } from '../util/isScheduler';\nimport { isValidDate } from '../util/isDate';\nexport function timer(dueTime, intervalOrScheduler, scheduler) {\n if (dueTime === void 0) { dueTime = 0; }\n if (scheduler === void 0) { scheduler = asyncScheduler; }\n var intervalDuration = -1;\n if (intervalOrScheduler != null) {\n if (isScheduler(intervalOrScheduler)) {\n scheduler = intervalOrScheduler;\n }\n else {\n intervalDuration = intervalOrScheduler;\n }\n }\n return new Observable(function (subscriber) {\n var due = isValidDate(dueTime) ? +dueTime - scheduler.now() : dueTime;\n if (due < 0) {\n due = 0;\n }\n var n = 0;\n return scheduler.schedule(function () {\n if (!subscriber.closed) {\n subscriber.next(n++);\n if (0 <= intervalDuration) {\n this.schedule(undefined, intervalDuration);\n }\n else {\n subscriber.complete();\n }\n }\n }, due);\n });\n}\n//# sourceMappingURL=timer.js.map","import { asyncScheduler } from '../scheduler/async';\nimport { timer } from './timer';\nexport function interval(period, scheduler) {\n if (period === void 0) { period = 0; }\n if (scheduler === void 0) { scheduler = asyncScheduler; }\n if (period < 0) {\n period = 0;\n }\n return timer(period, period, scheduler);\n}\n//# sourceMappingURL=interval.js.map","import { mergeAll } from '../operators/mergeAll';\nimport { internalFromArray } from './fromArray';\nimport { innerFrom } from './from';\nimport { EMPTY } from './empty';\nimport { popNumber, popScheduler } from '../util/args';\nexport function merge() {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n var scheduler = popScheduler(args);\n var concurrent = popNumber(args, Infinity);\n var sources = args;\n return !sources.length\n ?\n EMPTY\n : sources.length === 1\n ?\n innerFrom(sources[0])\n :\n mergeAll(concurrent)(internalFromArray(sources, scheduler));\n}\n//# sourceMappingURL=merge.js.map","import { Observable } from '../Observable';\nimport { noop } from '../util/noop';\nexport var NEVER = new Observable(noop);\nexport function never() {\n return NEVER;\n}\n//# sourceMappingURL=never.js.map","var isArray = Array.isArray;\nexport function argsOrArgArray(args) {\n return args.length === 1 && isArray(args[0]) ? args[0] : args;\n}\n//# sourceMappingURL=argsOrArgArray.js.map","import { __read, __spreadArray } from \"tslib\";\nimport { operate } from '../util/lift';\nimport { innerFrom } from '../observable/from';\nimport { argsOrArgArray } from '../util/argsOrArgArray';\nimport { OperatorSubscriber } from './OperatorSubscriber';\nimport { noop } from '../util/noop';\nexport function onErrorResumeNext() {\n var sources = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n sources[_i] = arguments[_i];\n }\n var nextSources = argsOrArgArray(sources);\n return operate(function (source, subscriber) {\n var remaining = __spreadArray([source], __read(nextSources));\n var subscribeNext = function () {\n if (!subscriber.closed) {\n if (remaining.length > 0) {\n var nextSource = void 0;\n try {\n nextSource = innerFrom(remaining.shift());\n }\n catch (err) {\n subscribeNext();\n return;\n }\n var innerSub = new OperatorSubscriber(subscriber, undefined, noop, noop);\n subscriber.add(nextSource.subscribe(innerSub));\n innerSub.add(subscribeNext);\n }\n else {\n subscriber.complete();\n }\n }\n };\n subscribeNext();\n });\n}\n//# sourceMappingURL=onErrorResumeNext.js.map","import { EMPTY } from './empty';\nimport { onErrorResumeNext as onErrorResumeNextWith } from '../operators/onErrorResumeNext';\nimport { argsOrArgArray } from '../util/argsOrArgArray';\nexport function onErrorResumeNext() {\n var sources = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n sources[_i] = arguments[_i];\n }\n return onErrorResumeNextWith(argsOrArgArray(sources))(EMPTY);\n}\n//# sourceMappingURL=onErrorResumeNext.js.map","import { from } from './from';\nexport function pairs(obj, scheduler) {\n return from(Object.entries(obj), scheduler);\n}\n//# sourceMappingURL=pairs.js.map","export function not(pred, thisArg) {\n return function (value, index) { return !pred.call(thisArg, value, index); };\n}\n//# sourceMappingURL=not.js.map","import { operate } from '../util/lift';\nimport { OperatorSubscriber } from './OperatorSubscriber';\nexport function filter(predicate, thisArg) {\n return operate(function (source, subscriber) {\n var index = 0;\n source.subscribe(new OperatorSubscriber(subscriber, function (value) { return predicate.call(thisArg, value, index++) && subscriber.next(value); }));\n });\n}\n//# sourceMappingURL=filter.js.map","import { not } from '../util/not';\nimport { filter } from '../operators/filter';\nimport { innerFrom } from './from';\nexport function partition(source, predicate, thisArg) {\n return [filter(predicate, thisArg)(innerFrom(source)), filter(not(predicate, thisArg))(innerFrom(source))];\n}\n//# sourceMappingURL=partition.js.map","import { Observable } from '../Observable';\nimport { innerFrom } from './from';\nimport { argsOrArgArray } from '../util/argsOrArgArray';\nimport { OperatorSubscriber } from '../operators/OperatorSubscriber';\nexport function race() {\n var sources = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n sources[_i] = arguments[_i];\n }\n sources = argsOrArgArray(sources);\n return sources.length === 1 ? innerFrom(sources[0]) : new Observable(raceInit(sources));\n}\nexport function raceInit(sources) {\n return function (subscriber) {\n var subscriptions = [];\n var _loop_1 = function (i) {\n subscriptions.push(innerFrom(sources[i]).subscribe(new OperatorSubscriber(subscriber, function (value) {\n if (subscriptions) {\n for (var s = 0; s < subscriptions.length; s++) {\n s !== i && subscriptions[s].unsubscribe();\n }\n subscriptions = null;\n }\n subscriber.next(value);\n })));\n };\n for (var i = 0; subscriptions && !subscriber.closed && i < sources.length; i++) {\n _loop_1(i);\n }\n };\n}\n//# sourceMappingURL=race.js.map","import { Observable } from '../Observable';\nimport { EMPTY } from './empty';\nexport function range(start, count, scheduler) {\n if (count == null) {\n count = start;\n start = 0;\n }\n if (count <= 0) {\n return EMPTY;\n }\n var end = count + start;\n return new Observable(scheduler\n ?\n function (subscriber) {\n var n = start;\n return scheduler.schedule(function () {\n if (n < end) {\n subscriber.next(n++);\n this.schedule();\n }\n else {\n subscriber.complete();\n }\n });\n }\n :\n function (subscriber) {\n var n = start;\n while (n < end && !subscriber.closed) {\n subscriber.next(n++);\n }\n subscriber.complete();\n });\n}\n//# sourceMappingURL=range.js.map","import { Observable } from '../Observable';\nimport { innerFrom } from './from';\nimport { EMPTY } from './empty';\nexport function using(resourceFactory, observableFactory) {\n return new Observable(function (subscriber) {\n var resource = resourceFactory();\n var result = observableFactory(resource);\n var source = result ? innerFrom(result) : EMPTY;\n source.subscribe(subscriber);\n return function () {\n if (resource) {\n resource.unsubscribe();\n }\n };\n });\n}\n//# sourceMappingURL=using.js.map","import { __read, __spreadArray } from \"tslib\";\nimport { Observable } from '../Observable';\nimport { innerFrom } from './from';\nimport { argsOrArgArray } from '../util/argsOrArgArray';\nimport { EMPTY } from './empty';\nimport { OperatorSubscriber } from '../operators/OperatorSubscriber';\nimport { popResultSelector } from '../util/args';\nexport function zip() {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n var resultSelector = popResultSelector(args);\n var sources = argsOrArgArray(args);\n return sources.length\n ? new Observable(function (subscriber) {\n var buffers = sources.map(function () { return []; });\n var completed = sources.map(function () { return false; });\n subscriber.add(function () {\n buffers = completed = null;\n });\n var _loop_1 = function (sourceIndex) {\n innerFrom(sources[sourceIndex]).subscribe(new OperatorSubscriber(subscriber, function (value) {\n buffers[sourceIndex].push(value);\n if (buffers.every(function (buffer) { return buffer.length; })) {\n var result = buffers.map(function (buffer) { return buffer.shift(); });\n subscriber.next(resultSelector ? resultSelector.apply(void 0, __spreadArray([], __read(result))) : result);\n if (buffers.some(function (buffer, i) { return !buffer.length && completed[i]; })) {\n subscriber.complete();\n }\n }\n }, function () {\n completed[sourceIndex] = true;\n !buffers[sourceIndex].length && subscriber.complete();\n }));\n };\n for (var sourceIndex = 0; !subscriber.closed && sourceIndex < sources.length; sourceIndex++) {\n _loop_1(sourceIndex);\n }\n return function () {\n buffers = completed = null;\n };\n })\n : EMPTY;\n}\n//# sourceMappingURL=zip.js.map","import { operate } from '../util/lift';\nimport { innerFrom } from '../observable/from';\nimport { OperatorSubscriber } from './OperatorSubscriber';\nexport function audit(durationSelector) {\n return operate(function (source, subscriber) {\n var hasValue = false;\n var lastValue = null;\n var durationSubscriber = null;\n var isComplete = false;\n var endDuration = function () {\n durationSubscriber === null || durationSubscriber === void 0 ? void 0 : durationSubscriber.unsubscribe();\n durationSubscriber = null;\n if (hasValue) {\n hasValue = false;\n var value = lastValue;\n lastValue = null;\n subscriber.next(value);\n }\n isComplete && subscriber.complete();\n };\n var cleanupDuration = function () {\n durationSubscriber = null;\n isComplete && subscriber.complete();\n };\n source.subscribe(new OperatorSubscriber(subscriber, function (value) {\n hasValue = true;\n lastValue = value;\n if (!durationSubscriber) {\n innerFrom(durationSelector(value)).subscribe((durationSubscriber = new OperatorSubscriber(subscriber, endDuration, cleanupDuration)));\n }\n }, function () {\n isComplete = true;\n (!hasValue || !durationSubscriber || durationSubscriber.closed) && subscriber.complete();\n }));\n });\n}\n//# sourceMappingURL=audit.js.map","import { async } from '../scheduler/async';\nimport { audit } from './audit';\nimport { timer } from '../observable/timer';\nexport function auditTime(duration, scheduler) {\n if (scheduler === void 0) { scheduler = async; }\n return audit(function () { return timer(duration, scheduler); });\n}\n//# sourceMappingURL=auditTime.js.map","import { operate } from '../util/lift';\nimport { noop } from '../util/noop';\nimport { OperatorSubscriber } from './OperatorSubscriber';\nexport function buffer(closingNotifier) {\n return operate(function (source, subscriber) {\n var currentBuffer = [];\n source.subscribe(new OperatorSubscriber(subscriber, function (value) { return currentBuffer.push(value); }, function () {\n subscriber.next(currentBuffer);\n subscriber.complete();\n }));\n closingNotifier.subscribe(new OperatorSubscriber(subscriber, function () {\n var b = currentBuffer;\n currentBuffer = [];\n subscriber.next(b);\n }, noop));\n return function () {\n currentBuffer = null;\n };\n });\n}\n//# sourceMappingURL=buffer.js.map","import { __values } from \"tslib\";\nimport { operate } from '../util/lift';\nimport { OperatorSubscriber } from './OperatorSubscriber';\nimport { arrRemove } from '../util/arrRemove';\nexport function bufferCount(bufferSize, startBufferEvery) {\n if (startBufferEvery === void 0) { startBufferEvery = null; }\n startBufferEvery = startBufferEvery !== null && startBufferEvery !== void 0 ? startBufferEvery : bufferSize;\n return operate(function (source, subscriber) {\n var buffers = [];\n var count = 0;\n source.subscribe(new OperatorSubscriber(subscriber, function (value) {\n var e_1, _a, e_2, _b;\n var toEmit = null;\n if (count++ % startBufferEvery === 0) {\n buffers.push([]);\n }\n try {\n for (var buffers_1 = __values(buffers), buffers_1_1 = buffers_1.next(); !buffers_1_1.done; buffers_1_1 = buffers_1.next()) {\n var buffer = buffers_1_1.value;\n buffer.push(value);\n if (bufferSize <= buffer.length) {\n toEmit = toEmit !== null && toEmit !== void 0 ? toEmit : [];\n toEmit.push(buffer);\n }\n }\n }\n catch (e_1_1) { e_1 = { error: e_1_1 }; }\n finally {\n try {\n if (buffers_1_1 && !buffers_1_1.done && (_a = buffers_1.return)) _a.call(buffers_1);\n }\n finally { if (e_1) throw e_1.error; }\n }\n if (toEmit) {\n try {\n for (var toEmit_1 = __values(toEmit), toEmit_1_1 = toEmit_1.next(); !toEmit_1_1.done; toEmit_1_1 = toEmit_1.next()) {\n var buffer = toEmit_1_1.value;\n arrRemove(buffers, buffer);\n subscriber.next(buffer);\n }\n }\n catch (e_2_1) { e_2 = { error: e_2_1 }; }\n finally {\n try {\n if (toEmit_1_1 && !toEmit_1_1.done && (_b = toEmit_1.return)) _b.call(toEmit_1);\n }\n finally { if (e_2) throw e_2.error; }\n }\n }\n }, function () {\n var e_3, _a;\n try {\n for (var buffers_2 = __values(buffers), buffers_2_1 = buffers_2.next(); !buffers_2_1.done; buffers_2_1 = buffers_2.next()) {\n var buffer = buffers_2_1.value;\n subscriber.next(buffer);\n }\n }\n catch (e_3_1) { e_3 = { error: e_3_1 }; }\n finally {\n try {\n if (buffers_2_1 && !buffers_2_1.done && (_a = buffers_2.return)) _a.call(buffers_2);\n }\n finally { if (e_3) throw e_3.error; }\n }\n subscriber.complete();\n }, undefined, function () {\n buffers = null;\n }));\n });\n}\n//# sourceMappingURL=bufferCount.js.map","import { __values } from \"tslib\";\nimport { Subscription } from '../Subscription';\nimport { operate } from '../util/lift';\nimport { OperatorSubscriber } from './OperatorSubscriber';\nimport { arrRemove } from '../util/arrRemove';\nimport { asyncScheduler } from '../scheduler/async';\nimport { popScheduler } from '../util/args';\nexport function bufferTime(bufferTimeSpan) {\n var _a, _b;\n var otherArgs = [];\n for (var _i = 1; _i < arguments.length; _i++) {\n otherArgs[_i - 1] = arguments[_i];\n }\n var scheduler = (_a = popScheduler(otherArgs)) !== null && _a !== void 0 ? _a : asyncScheduler;\n var bufferCreationInterval = (_b = otherArgs[0]) !== null && _b !== void 0 ? _b : null;\n var maxBufferSize = otherArgs[1] || Infinity;\n return operate(function (source, subscriber) {\n var bufferRecords = [];\n var restartOnEmit = false;\n var emit = function (record) {\n var buffer = record.buffer, subs = record.subs;\n subs.unsubscribe();\n arrRemove(bufferRecords, record);\n subscriber.next(buffer);\n restartOnEmit && startBuffer();\n };\n var startBuffer = function () {\n if (bufferRecords) {\n var subs = new Subscription();\n subscriber.add(subs);\n var buffer = [];\n var record_1 = {\n buffer: buffer,\n subs: subs,\n };\n bufferRecords.push(record_1);\n subs.add(scheduler.schedule(function () { return emit(record_1); }, bufferTimeSpan));\n }\n };\n bufferCreationInterval !== null && bufferCreationInterval >= 0\n ?\n subscriber.add(scheduler.schedule(function () {\n startBuffer();\n !this.closed && subscriber.add(this.schedule(null, bufferCreationInterval));\n }, bufferCreationInterval))\n : (restartOnEmit = true);\n startBuffer();\n var bufferTimeSubscriber = new OperatorSubscriber(subscriber, function (value) {\n var e_1, _a;\n var recordsCopy = bufferRecords.slice();\n try {\n for (var recordsCopy_1 = __values(recordsCopy), recordsCopy_1_1 = recordsCopy_1.next(); !recordsCopy_1_1.done; recordsCopy_1_1 = recordsCopy_1.next()) {\n var record = recordsCopy_1_1.value;\n var buffer = record.buffer;\n buffer.push(value);\n maxBufferSize <= buffer.length && emit(record);\n }\n }\n catch (e_1_1) { e_1 = { error: e_1_1 }; }\n finally {\n try {\n if (recordsCopy_1_1 && !recordsCopy_1_1.done && (_a = recordsCopy_1.return)) _a.call(recordsCopy_1);\n }\n finally { if (e_1) throw e_1.error; }\n }\n }, function () {\n while (bufferRecords === null || bufferRecords === void 0 ? void 0 : bufferRecords.length) {\n subscriber.next(bufferRecords.shift().buffer);\n }\n bufferTimeSubscriber === null || bufferTimeSubscriber === void 0 ? void 0 : bufferTimeSubscriber.unsubscribe();\n subscriber.complete();\n subscriber.unsubscribe();\n }, undefined, function () { return (bufferRecords = null); });\n source.subscribe(bufferTimeSubscriber);\n });\n}\n//# sourceMappingURL=bufferTime.js.map","import { __values } from \"tslib\";\nimport { Subscription } from '../Subscription';\nimport { operate } from '../util/lift';\nimport { innerFrom } from '../observable/from';\nimport { OperatorSubscriber } from './OperatorSubscriber';\nimport { noop } from '../util/noop';\nimport { arrRemove } from '../util/arrRemove';\nexport function bufferToggle(openings, closingSelector) {\n return operate(function (source, subscriber) {\n var buffers = [];\n innerFrom(openings).subscribe(new OperatorSubscriber(subscriber, function (openValue) {\n var buffer = [];\n buffers.push(buffer);\n var closingSubscription = new Subscription();\n var emitBuffer = function () {\n arrRemove(buffers, buffer);\n subscriber.next(buffer);\n closingSubscription.unsubscribe();\n };\n closingSubscription.add(innerFrom(closingSelector(openValue)).subscribe(new OperatorSubscriber(subscriber, emitBuffer, noop)));\n }, noop));\n source.subscribe(new OperatorSubscriber(subscriber, function (value) {\n var e_1, _a;\n try {\n for (var buffers_1 = __values(buffers), buffers_1_1 = buffers_1.next(); !buffers_1_1.done; buffers_1_1 = buffers_1.next()) {\n var buffer = buffers_1_1.value;\n buffer.push(value);\n }\n }\n catch (e_1_1) { e_1 = { error: e_1_1 }; }\n finally {\n try {\n if (buffers_1_1 && !buffers_1_1.done && (_a = buffers_1.return)) _a.call(buffers_1);\n }\n finally { if (e_1) throw e_1.error; }\n }\n }, function () {\n while (buffers.length > 0) {\n subscriber.next(buffers.shift());\n }\n subscriber.complete();\n }));\n });\n}\n//# sourceMappingURL=bufferToggle.js.map","import { operate } from '../util/lift';\nimport { noop } from '../util/noop';\nimport { OperatorSubscriber } from './OperatorSubscriber';\nimport { innerFrom } from '../observable/from';\nexport function bufferWhen(closingSelector) {\n return operate(function (source, subscriber) {\n var buffer = null;\n var closingSubscriber = null;\n var openBuffer = function () {\n closingSubscriber === null || closingSubscriber === void 0 ? void 0 : closingSubscriber.unsubscribe();\n var b = buffer;\n buffer = [];\n b && subscriber.next(b);\n innerFrom(closingSelector()).subscribe((closingSubscriber = new OperatorSubscriber(subscriber, openBuffer, noop)));\n };\n openBuffer();\n source.subscribe(new OperatorSubscriber(subscriber, function (value) { return buffer === null || buffer === void 0 ? void 0 : buffer.push(value); }, function () {\n buffer && subscriber.next(buffer);\n subscriber.complete();\n }, undefined, function () { return (buffer = closingSubscriber = null); }));\n });\n}\n//# sourceMappingURL=bufferWhen.js.map","import { innerFrom } from '../observable/from';\nimport { OperatorSubscriber } from './OperatorSubscriber';\nimport { operate } from '../util/lift';\nexport function catchError(selector) {\n return operate(function (source, subscriber) {\n var innerSub = null;\n var syncUnsub = false;\n var handledResult;\n innerSub = source.subscribe(new OperatorSubscriber(subscriber, undefined, undefined, function (err) {\n handledResult = innerFrom(selector(err, catchError(selector)(source)));\n if (innerSub) {\n innerSub.unsubscribe();\n innerSub = null;\n handledResult.subscribe(subscriber);\n }\n else {\n syncUnsub = true;\n }\n }));\n if (syncUnsub) {\n innerSub.unsubscribe();\n innerSub = null;\n handledResult.subscribe(subscriber);\n }\n });\n}\n//# sourceMappingURL=catchError.js.map","import { OperatorSubscriber } from './OperatorSubscriber';\nexport function scanInternals(accumulator, seed, hasSeed, emitOnNext, emitBeforeComplete) {\n return function (source, subscriber) {\n var hasState = hasSeed;\n var state = seed;\n var index = 0;\n source.subscribe(new OperatorSubscriber(subscriber, function (value) {\n var i = index++;\n state = hasState\n ?\n accumulator(state, value, i)\n :\n ((hasState = true), value);\n emitOnNext && subscriber.next(state);\n }, emitBeforeComplete &&\n (function () {\n hasState && subscriber.next(state);\n subscriber.complete();\n })));\n };\n}\n//# sourceMappingURL=scanInternals.js.map","import { scanInternals } from './scanInternals';\nimport { operate } from '../util/lift';\nexport function reduce(accumulator, seed) {\n return operate(scanInternals(accumulator, seed, arguments.length >= 2, false, true));\n}\n//# sourceMappingURL=reduce.js.map","import { reduce } from './reduce';\nimport { operate } from '../util/lift';\nvar arrReducer = function (arr, value) { return (arr.push(value), arr); };\nexport function toArray() {\n return operate(function (source, subscriber) {\n reduce(arrReducer, [])(source).subscribe(subscriber);\n });\n}\n//# sourceMappingURL=toArray.js.map","import { identity } from '../util/identity';\nimport { mapOneOrManyArgs } from '../util/mapOneOrManyArgs';\nimport { pipe } from '../util/pipe';\nimport { mergeMap } from './mergeMap';\nimport { toArray } from './toArray';\nexport function joinAllInternals(joinFn, project) {\n return pipe(toArray(), mergeMap(function (sources) { return joinFn(sources); }), project ? mapOneOrManyArgs(project) : identity);\n}\n//# sourceMappingURL=joinAllInternals.js.map","import { combineLatest } from '../observable/combineLatest';\nimport { joinAllInternals } from './joinAllInternals';\nexport function combineLatestAll(project) {\n return joinAllInternals(combineLatest, project);\n}\n//# sourceMappingURL=combineLatestAll.js.map","import { combineLatestAll } from './combineLatestAll';\nexport var combineAll = combineLatestAll;\n//# sourceMappingURL=combineAll.js.map","import { __read, __spreadArray } from \"tslib\";\nimport { combineLatestInit } from '../observable/combineLatest';\nimport { operate } from '../util/lift';\nimport { argsOrArgArray } from '../util/argsOrArgArray';\nimport { mapOneOrManyArgs } from '../util/mapOneOrManyArgs';\nimport { pipe } from '../util/pipe';\nimport { popResultSelector } from '../util/args';\nexport function combineLatest() {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n var resultSelector = popResultSelector(args);\n return resultSelector\n ? pipe(combineLatest.apply(void 0, __spreadArray([], __read(args))), mapOneOrManyArgs(resultSelector))\n : operate(function (source, subscriber) {\n combineLatestInit(__spreadArray([source], __read(argsOrArgArray(args))))(subscriber);\n });\n}\n//# sourceMappingURL=combineLatest.js.map","import { __read, __spreadArray } from \"tslib\";\nimport { combineLatest } from './combineLatest';\nexport function combineLatestWith() {\n var otherSources = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n otherSources[_i] = arguments[_i];\n }\n return combineLatest.apply(void 0, __spreadArray([], __read(otherSources)));\n}\n//# sourceMappingURL=combineLatestWith.js.map","import { mergeMap } from './mergeMap';\nimport { isFunction } from '../util/isFunction';\nexport function concatMap(project, resultSelector) {\n return isFunction(resultSelector) ? mergeMap(project, resultSelector, 1) : mergeMap(project, 1);\n}\n//# sourceMappingURL=concatMap.js.map","import { concatMap } from './concatMap';\nimport { isFunction } from '../util/isFunction';\nexport function concatMapTo(innerObservable, resultSelector) {\n return isFunction(resultSelector) ? concatMap(function () { return innerObservable; }, resultSelector) : concatMap(function () { return innerObservable; });\n}\n//# sourceMappingURL=concatMapTo.js.map","import { __read, __spreadArray } from \"tslib\";\nimport { operate } from '../util/lift';\nimport { concatAll } from './concatAll';\nimport { internalFromArray } from '../observable/fromArray';\nimport { popScheduler } from '../util/args';\nexport function concat() {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n var scheduler = popScheduler(args);\n return operate(function (source, subscriber) {\n concatAll()(internalFromArray(__spreadArray([source], __read(args)), scheduler)).subscribe(subscriber);\n });\n}\n//# sourceMappingURL=concat.js.map","import { __read, __spreadArray } from \"tslib\";\nimport { concat } from './concat';\nexport function concatWith() {\n var otherSources = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n otherSources[_i] = arguments[_i];\n }\n return concat.apply(void 0, __spreadArray([], __read(otherSources)));\n}\n//# sourceMappingURL=concatWith.js.map","import { Subject } from '../Subject';\nimport { from } from '../observable/from';\nimport { operate } from '../util/lift';\nimport { fromSubscribable } from '../observable/fromSubscribable';\nvar DEFAULT_CONFIG = {\n connector: function () { return new Subject(); },\n};\nexport function connect(selector, config) {\n if (config === void 0) { config = DEFAULT_CONFIG; }\n var connector = config.connector;\n return operate(function (source, subscriber) {\n var subject = connector();\n from(selector(fromSubscribable(subject))).subscribe(subscriber);\n subscriber.add(source.subscribe(subject));\n });\n}\n//# sourceMappingURL=connect.js.map","import { Observable } from '../Observable';\nexport function fromSubscribable(subscribable) {\n return new Observable(function (subscriber) { return subscribable.subscribe(subscriber); });\n}\n//# sourceMappingURL=fromSubscribable.js.map","import { reduce } from './reduce';\nexport function count(predicate) {\n return reduce(function (total, value, i) { return (!predicate || predicate(value, i) ? total + 1 : total); }, 0);\n}\n//# sourceMappingURL=count.js.map","import { operate } from '../util/lift';\nimport { noop } from '../util/noop';\nimport { OperatorSubscriber } from './OperatorSubscriber';\nimport { innerFrom } from '../observable/from';\nexport function debounce(durationSelector) {\n return operate(function (source, subscriber) {\n var hasValue = false;\n var lastValue = null;\n var durationSubscriber = null;\n var emit = function () {\n durationSubscriber === null || durationSubscriber === void 0 ? void 0 : durationSubscriber.unsubscribe();\n durationSubscriber = null;\n if (hasValue) {\n hasValue = false;\n var value = lastValue;\n lastValue = null;\n subscriber.next(value);\n }\n };\n source.subscribe(new OperatorSubscriber(subscriber, function (value) {\n durationSubscriber === null || durationSubscriber === void 0 ? void 0 : durationSubscriber.unsubscribe();\n hasValue = true;\n lastValue = value;\n durationSubscriber = new OperatorSubscriber(subscriber, emit, noop);\n innerFrom(durationSelector(value)).subscribe(durationSubscriber);\n }, function () {\n emit();\n subscriber.complete();\n }, undefined, function () {\n lastValue = durationSubscriber = null;\n }));\n });\n}\n//# sourceMappingURL=debounce.js.map","import { asyncScheduler } from '../scheduler/async';\nimport { operate } from '../util/lift';\nimport { OperatorSubscriber } from './OperatorSubscriber';\nexport function debounceTime(dueTime, scheduler) {\n if (scheduler === void 0) { scheduler = asyncScheduler; }\n return operate(function (source, subscriber) {\n var activeTask = null;\n var lastValue = null;\n var lastTime = null;\n var emit = function () {\n if (activeTask) {\n activeTask.unsubscribe();\n activeTask = null;\n var value = lastValue;\n lastValue = null;\n subscriber.next(value);\n }\n };\n function emitWhenIdle() {\n var targetTime = lastTime + dueTime;\n var now = scheduler.now();\n if (now < targetTime) {\n activeTask = this.schedule(undefined, targetTime - now);\n subscriber.add(activeTask);\n return;\n }\n emit();\n }\n source.subscribe(new OperatorSubscriber(subscriber, function (value) {\n lastValue = value;\n lastTime = scheduler.now();\n if (!activeTask) {\n activeTask = scheduler.schedule(emitWhenIdle, dueTime);\n subscriber.add(activeTask);\n }\n }, function () {\n emit();\n subscriber.complete();\n }, undefined, function () {\n lastValue = activeTask = null;\n }));\n });\n}\n//# sourceMappingURL=debounceTime.js.map","import { operate } from '../util/lift';\nimport { OperatorSubscriber } from './OperatorSubscriber';\nexport function defaultIfEmpty(defaultValue) {\n return operate(function (source, subscriber) {\n var hasValue = false;\n source.subscribe(new OperatorSubscriber(subscriber, function (value) {\n hasValue = true;\n subscriber.next(value);\n }, function () {\n if (!hasValue) {\n subscriber.next(defaultValue);\n }\n subscriber.complete();\n }));\n });\n}\n//# sourceMappingURL=defaultIfEmpty.js.map","import { EMPTY } from '../observable/empty';\nimport { operate } from '../util/lift';\nimport { OperatorSubscriber } from './OperatorSubscriber';\nexport function take(count) {\n return count <= 0\n ?\n function () { return EMPTY; }\n : operate(function (source, subscriber) {\n var seen = 0;\n source.subscribe(new OperatorSubscriber(subscriber, function (value) {\n if (++seen <= count) {\n subscriber.next(value);\n if (count <= seen) {\n subscriber.complete();\n }\n }\n }));\n });\n}\n//# sourceMappingURL=take.js.map","import { operate } from '../util/lift';\nimport { OperatorSubscriber } from './OperatorSubscriber';\nimport { noop } from '../util/noop';\nexport function ignoreElements() {\n return operate(function (source, subscriber) {\n source.subscribe(new OperatorSubscriber(subscriber, noop));\n });\n}\n//# sourceMappingURL=ignoreElements.js.map","import { map } from './map';\nexport function mapTo(value) {\n return map(function () { return value; });\n}\n//# sourceMappingURL=mapTo.js.map","import { concat } from '../observable/concat';\nimport { take } from './take';\nimport { ignoreElements } from './ignoreElements';\nimport { mapTo } from './mapTo';\nimport { mergeMap } from './mergeMap';\nexport function delayWhen(delayDurationSelector, subscriptionDelay) {\n if (subscriptionDelay) {\n return function (source) {\n return concat(subscriptionDelay.pipe(take(1), ignoreElements()), source.pipe(delayWhen(delayDurationSelector)));\n };\n }\n return mergeMap(function (value, index) { return delayDurationSelector(value, index).pipe(take(1), mapTo(value)); });\n}\n//# sourceMappingURL=delayWhen.js.map","import { asyncScheduler } from '../scheduler/async';\nimport { delayWhen } from './delayWhen';\nimport { timer } from '../observable/timer';\nexport function delay(due, scheduler) {\n if (scheduler === void 0) { scheduler = asyncScheduler; }\n var duration = timer(due, scheduler);\n return delayWhen(function () { return duration; });\n}\n//# sourceMappingURL=delay.js.map","import { observeNotification } from '../Notification';\nimport { operate } from '../util/lift';\nimport { OperatorSubscriber } from './OperatorSubscriber';\nexport function dematerialize() {\n return operate(function (source, subscriber) {\n source.subscribe(new OperatorSubscriber(subscriber, function (notification) { return observeNotification(notification, subscriber); }));\n });\n}\n//# sourceMappingURL=dematerialize.js.map","import { operate } from '../util/lift';\nimport { OperatorSubscriber } from './OperatorSubscriber';\nimport { noop } from '../util/noop';\nexport function distinct(keySelector, flushes) {\n return operate(function (source, subscriber) {\n var distinctKeys = new Set();\n source.subscribe(new OperatorSubscriber(subscriber, function (value) {\n var key = keySelector ? keySelector(value) : value;\n if (!distinctKeys.has(key)) {\n distinctKeys.add(key);\n subscriber.next(value);\n }\n }));\n flushes === null || flushes === void 0 ? void 0 : flushes.subscribe(new OperatorSubscriber(subscriber, function () { return distinctKeys.clear(); }, noop));\n });\n}\n//# sourceMappingURL=distinct.js.map","import { identity } from '../util/identity';\nimport { operate } from '../util/lift';\nimport { OperatorSubscriber } from './OperatorSubscriber';\nexport function distinctUntilChanged(comparator, keySelector) {\n if (keySelector === void 0) { keySelector = identity; }\n comparator = comparator !== null && comparator !== void 0 ? comparator : defaultCompare;\n return operate(function (source, subscriber) {\n var previousKey;\n var first = true;\n source.subscribe(new OperatorSubscriber(subscriber, function (value) {\n var currentKey = keySelector(value);\n if (first || !comparator(previousKey, currentKey)) {\n first = false;\n previousKey = currentKey;\n subscriber.next(value);\n }\n }));\n });\n}\nfunction defaultCompare(a, b) {\n return a === b;\n}\n//# sourceMappingURL=distinctUntilChanged.js.map","import { distinctUntilChanged } from './distinctUntilChanged';\nexport function distinctUntilKeyChanged(key, compare) {\n return distinctUntilChanged(function (x, y) { return compare ? compare(x[key], y[key]) : x[key] === y[key]; });\n}\n//# sourceMappingURL=distinctUntilKeyChanged.js.map","import { EmptyError } from '../util/EmptyError';\nimport { operate } from '../util/lift';\nimport { OperatorSubscriber } from './OperatorSubscriber';\nexport function throwIfEmpty(errorFactory) {\n if (errorFactory === void 0) { errorFactory = defaultErrorFactory; }\n return operate(function (source, subscriber) {\n var hasValue = false;\n source.subscribe(new OperatorSubscriber(subscriber, function (value) {\n hasValue = true;\n subscriber.next(value);\n }, function () { return (hasValue ? subscriber.complete() : subscriber.error(errorFactory())); }));\n });\n}\nfunction defaultErrorFactory() {\n return new EmptyError();\n}\n//# sourceMappingURL=throwIfEmpty.js.map","import { ArgumentOutOfRangeError } from '../util/ArgumentOutOfRangeError';\nimport { filter } from './filter';\nimport { throwIfEmpty } from './throwIfEmpty';\nimport { defaultIfEmpty } from './defaultIfEmpty';\nimport { take } from './take';\nexport function elementAt(index, defaultValue) {\n if (index < 0) {\n throw new ArgumentOutOfRangeError();\n }\n var hasDefaultValue = arguments.length >= 2;\n return function (source) {\n return source.pipe(filter(function (v, i) { return i === index; }), take(1), hasDefaultValue ? defaultIfEmpty(defaultValue) : throwIfEmpty(function () { return new ArgumentOutOfRangeError(); }));\n };\n}\n//# sourceMappingURL=elementAt.js.map","import { __read, __spreadArray } from \"tslib\";\nimport { concat } from '../observable/concat';\nimport { of } from '../observable/of';\nexport function endWith() {\n var values = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n values[_i] = arguments[_i];\n }\n return function (source) { return concat(source, of.apply(void 0, __spreadArray([], __read(values)))); };\n}\n//# sourceMappingURL=endWith.js.map","import { operate } from '../util/lift';\nimport { OperatorSubscriber } from './OperatorSubscriber';\nexport function every(predicate, thisArg) {\n return operate(function (source, subscriber) {\n var index = 0;\n source.subscribe(new OperatorSubscriber(subscriber, function (value) {\n if (!predicate.call(thisArg, value, index++, source)) {\n subscriber.next(false);\n subscriber.complete();\n }\n }, function () {\n subscriber.next(true);\n subscriber.complete();\n }));\n });\n}\n//# sourceMappingURL=every.js.map","import { operate } from '../util/lift';\nimport { innerFrom } from '../observable/from';\nimport { OperatorSubscriber } from './OperatorSubscriber';\nexport function exhaustAll() {\n return operate(function (source, subscriber) {\n var isComplete = false;\n var innerSub = null;\n source.subscribe(new OperatorSubscriber(subscriber, function (inner) {\n if (!innerSub) {\n innerSub = innerFrom(inner).subscribe(new OperatorSubscriber(subscriber, undefined, function () {\n innerSub = null;\n isComplete && subscriber.complete();\n }));\n }\n }, function () {\n isComplete = true;\n !innerSub && subscriber.complete();\n }));\n });\n}\n//# sourceMappingURL=exhaustAll.js.map","import { exhaustAll } from './exhaustAll';\nexport var exhaust = exhaustAll;\n//# sourceMappingURL=exhaust.js.map","import { map } from './map';\nimport { innerFrom } from '../observable/from';\nimport { operate } from '../util/lift';\nimport { OperatorSubscriber } from './OperatorSubscriber';\nexport function exhaustMap(project, resultSelector) {\n if (resultSelector) {\n return function (source) {\n return source.pipe(exhaustMap(function (a, i) { return innerFrom(project(a, i)).pipe(map(function (b, ii) { return resultSelector(a, b, i, ii); })); }));\n };\n }\n return operate(function (source, subscriber) {\n var index = 0;\n var innerSub = null;\n var isComplete = false;\n source.subscribe(new OperatorSubscriber(subscriber, function (outerValue) {\n if (!innerSub) {\n innerSub = new OperatorSubscriber(subscriber, undefined, function () {\n innerSub = null;\n isComplete && subscriber.complete();\n });\n innerFrom(project(outerValue, index++)).subscribe(innerSub);\n }\n }, function () {\n isComplete = true;\n !innerSub && subscriber.complete();\n }));\n });\n}\n//# sourceMappingURL=exhaustMap.js.map","import { operate } from '../util/lift';\nimport { mergeInternals } from './mergeInternals';\nexport function expand(project, concurrent, scheduler) {\n if (concurrent === void 0) { concurrent = Infinity; }\n concurrent = (concurrent || 0) < 1 ? Infinity : concurrent;\n return operate(function (source, subscriber) {\n return mergeInternals(source, subscriber, project, concurrent, undefined, true, scheduler);\n });\n}\n//# sourceMappingURL=expand.js.map","import { operate } from '../util/lift';\nexport function finalize(callback) {\n return operate(function (source, subscriber) {\n try {\n source.subscribe(subscriber);\n }\n finally {\n subscriber.add(callback);\n }\n });\n}\n//# sourceMappingURL=finalize.js.map","import { operate } from '../util/lift';\nimport { OperatorSubscriber } from './OperatorSubscriber';\nexport function find(predicate, thisArg) {\n return operate(createFind(predicate, thisArg, 'value'));\n}\nexport function createFind(predicate, thisArg, emit) {\n var findIndex = emit === 'index';\n return function (source, subscriber) {\n var index = 0;\n source.subscribe(new OperatorSubscriber(subscriber, function (value) {\n var i = index++;\n if (predicate.call(thisArg, value, i, source)) {\n subscriber.next(findIndex ? i : value);\n subscriber.complete();\n }\n }, function () {\n subscriber.next(findIndex ? -1 : undefined);\n subscriber.complete();\n }));\n };\n}\n//# sourceMappingURL=find.js.map","import { operate } from '../util/lift';\nimport { createFind } from './find';\nexport function findIndex(predicate, thisArg) {\n return operate(createFind(predicate, thisArg, 'index'));\n}\n//# sourceMappingURL=findIndex.js.map","import { EmptyError } from '../util/EmptyError';\nimport { filter } from './filter';\nimport { take } from './take';\nimport { defaultIfEmpty } from './defaultIfEmpty';\nimport { throwIfEmpty } from './throwIfEmpty';\nimport { identity } from '../util/identity';\nexport function first(predicate, defaultValue) {\n var hasDefaultValue = arguments.length >= 2;\n return function (source) {\n return source.pipe(predicate ? filter(function (v, i) { return predicate(v, i, source); }) : identity, take(1), hasDefaultValue ? defaultIfEmpty(defaultValue) : throwIfEmpty(function () { return new EmptyError(); }));\n };\n}\n//# sourceMappingURL=first.js.map","import { __extends } from \"tslib\";\nimport { Observable } from '../Observable';\nimport { innerFrom } from '../observable/from';\nimport { Subject } from '../Subject';\nimport { operate } from '../util/lift';\nimport { OperatorSubscriber } from './OperatorSubscriber';\nexport function groupBy(keySelector, elementOrOptions, duration, connector) {\n return operate(function (source, subscriber) {\n var element;\n if (!elementOrOptions || typeof elementOrOptions === 'function') {\n element = elementOrOptions;\n }\n else {\n (duration = elementOrOptions.duration, element = elementOrOptions.element, connector = elementOrOptions.connector);\n }\n var groups = new Map();\n var notify = function (cb) {\n groups.forEach(cb);\n cb(subscriber);\n };\n var handleError = function (err) { return notify(function (consumer) { return consumer.error(err); }); };\n var groupBySourceSubscriber = new GroupBySubscriber(subscriber, function (value) {\n try {\n var key_1 = keySelector(value);\n var group_1 = groups.get(key_1);\n if (!group_1) {\n groups.set(key_1, (group_1 = connector ? connector() : new Subject()));\n var grouped = createGroupedObservable(key_1, group_1);\n subscriber.next(grouped);\n if (duration) {\n var durationSubscriber_1 = new OperatorSubscriber(group_1, function () {\n group_1.complete();\n durationSubscriber_1 === null || durationSubscriber_1 === void 0 ? void 0 : durationSubscriber_1.unsubscribe();\n }, undefined, undefined, function () { return groups.delete(key_1); });\n groupBySourceSubscriber.add(innerFrom(duration(grouped)).subscribe(durationSubscriber_1));\n }\n }\n group_1.next(element ? element(value) : value);\n }\n catch (err) {\n handleError(err);\n }\n }, function () { return notify(function (consumer) { return consumer.complete(); }); }, handleError, function () { return groups.clear(); });\n source.subscribe(groupBySourceSubscriber);\n function createGroupedObservable(key, groupSubject) {\n var result = new Observable(function (groupSubscriber) {\n groupBySourceSubscriber.activeGroups++;\n var innerSub = groupSubject.subscribe(groupSubscriber);\n return function () {\n innerSub.unsubscribe();\n --groupBySourceSubscriber.activeGroups === 0 &&\n groupBySourceSubscriber.teardownAttempted &&\n groupBySourceSubscriber.unsubscribe();\n };\n });\n result.key = key;\n return result;\n }\n });\n}\nvar GroupBySubscriber = (function (_super) {\n __extends(GroupBySubscriber, _super);\n function GroupBySubscriber() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.activeGroups = 0;\n _this.teardownAttempted = false;\n return _this;\n }\n GroupBySubscriber.prototype.unsubscribe = function () {\n this.teardownAttempted = true;\n this.activeGroups === 0 && _super.prototype.unsubscribe.call(this);\n };\n return GroupBySubscriber;\n}(OperatorSubscriber));\n//# sourceMappingURL=groupBy.js.map","import { operate } from '../util/lift';\nimport { OperatorSubscriber } from './OperatorSubscriber';\nexport function isEmpty() {\n return operate(function (source, subscriber) {\n source.subscribe(new OperatorSubscriber(subscriber, function () {\n subscriber.next(false);\n subscriber.complete();\n }, function () {\n subscriber.next(true);\n subscriber.complete();\n }));\n });\n}\n//# sourceMappingURL=isEmpty.js.map","import { __values } from \"tslib\";\nimport { EMPTY } from '../observable/empty';\nimport { operate } from '../util/lift';\nimport { OperatorSubscriber } from './OperatorSubscriber';\nexport function takeLast(count) {\n return count <= 0\n ? function () { return EMPTY; }\n : operate(function (source, subscriber) {\n var buffer = [];\n source.subscribe(new OperatorSubscriber(subscriber, function (value) {\n buffer.push(value);\n count < buffer.length && buffer.shift();\n }, function () {\n var e_1, _a;\n try {\n for (var buffer_1 = __values(buffer), buffer_1_1 = buffer_1.next(); !buffer_1_1.done; buffer_1_1 = buffer_1.next()) {\n var value = buffer_1_1.value;\n subscriber.next(value);\n }\n }\n catch (e_1_1) { e_1 = { error: e_1_1 }; }\n finally {\n try {\n if (buffer_1_1 && !buffer_1_1.done && (_a = buffer_1.return)) _a.call(buffer_1);\n }\n finally { if (e_1) throw e_1.error; }\n }\n subscriber.complete();\n }, undefined, function () {\n buffer = null;\n }));\n });\n}\n//# sourceMappingURL=takeLast.js.map","import { EmptyError } from '../util/EmptyError';\nimport { filter } from './filter';\nimport { takeLast } from './takeLast';\nimport { throwIfEmpty } from './throwIfEmpty';\nimport { defaultIfEmpty } from './defaultIfEmpty';\nimport { identity } from '../util/identity';\nexport function last(predicate, defaultValue) {\n var hasDefaultValue = arguments.length >= 2;\n return function (source) {\n return source.pipe(predicate ? filter(function (v, i) { return predicate(v, i, source); }) : identity, takeLast(1), hasDefaultValue ? defaultIfEmpty(defaultValue) : throwIfEmpty(function () { return new EmptyError(); }));\n };\n}\n//# sourceMappingURL=last.js.map","import { Notification } from '../Notification';\nimport { operate } from '../util/lift';\nimport { OperatorSubscriber } from './OperatorSubscriber';\nexport function materialize() {\n return operate(function (source, subscriber) {\n source.subscribe(new OperatorSubscriber(subscriber, function (value) {\n subscriber.next(Notification.createNext(value));\n }, function () {\n subscriber.next(Notification.createComplete());\n subscriber.complete();\n }, function (err) {\n subscriber.next(Notification.createError(err));\n subscriber.complete();\n }));\n });\n}\n//# sourceMappingURL=materialize.js.map","import { reduce } from './reduce';\nimport { isFunction } from '../util/isFunction';\nexport function max(comparer) {\n return reduce(isFunction(comparer) ? function (x, y) { return (comparer(x, y) > 0 ? x : y); } : function (x, y) { return (x > y ? x : y); });\n}\n//# sourceMappingURL=max.js.map","import { mergeMap } from './mergeMap';\nexport var flatMap = mergeMap;\n//# sourceMappingURL=flatMap.js.map","import { mergeMap } from './mergeMap';\nimport { isFunction } from '../util/isFunction';\nexport function mergeMapTo(innerObservable, resultSelector, concurrent) {\n if (concurrent === void 0) { concurrent = Infinity; }\n if (isFunction(resultSelector)) {\n return mergeMap(function () { return innerObservable; }, resultSelector, concurrent);\n }\n if (typeof resultSelector === 'number') {\n concurrent = resultSelector;\n }\n return mergeMap(function () { return innerObservable; }, concurrent);\n}\n//# sourceMappingURL=mergeMapTo.js.map","import { operate } from '../util/lift';\nimport { mergeInternals } from './mergeInternals';\nexport function mergeScan(accumulator, seed, concurrent) {\n if (concurrent === void 0) { concurrent = Infinity; }\n return operate(function (source, subscriber) {\n var state = seed;\n return mergeInternals(source, subscriber, function (value, index) { return accumulator(state, value, index); }, concurrent, function (value) {\n state = value;\n }, false, undefined, function () { return (state = null); });\n });\n}\n//# sourceMappingURL=mergeScan.js.map","import { __read, __spreadArray } from \"tslib\";\nimport { operate } from '../util/lift';\nimport { argsOrArgArray } from '../util/argsOrArgArray';\nimport { internalFromArray } from '../observable/fromArray';\nimport { mergeAll } from './mergeAll';\nimport { popNumber, popScheduler } from '../util/args';\nexport function merge() {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n var scheduler = popScheduler(args);\n var concurrent = popNumber(args, Infinity);\n args = argsOrArgArray(args);\n return operate(function (source, subscriber) {\n mergeAll(concurrent)(internalFromArray(__spreadArray([source], __read(args)), scheduler)).subscribe(subscriber);\n });\n}\n//# sourceMappingURL=merge.js.map","import { __read, __spreadArray } from \"tslib\";\nimport { merge } from './merge';\nexport function mergeWith() {\n var otherSources = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n otherSources[_i] = arguments[_i];\n }\n return merge.apply(void 0, __spreadArray([], __read(otherSources)));\n}\n//# sourceMappingURL=mergeWith.js.map","import { reduce } from './reduce';\nimport { isFunction } from '../util/isFunction';\nexport function min(comparer) {\n return reduce(isFunction(comparer) ? function (x, y) { return (comparer(x, y) < 0 ? x : y); } : function (x, y) { return (x < y ? x : y); });\n}\n//# sourceMappingURL=min.js.map","import { ConnectableObservable } from '../observable/ConnectableObservable';\nimport { isFunction } from '../util/isFunction';\nimport { connect } from './connect';\nexport function multicast(subjectOrSubjectFactory, selector) {\n var subjectFactory = isFunction(subjectOrSubjectFactory) ? subjectOrSubjectFactory : function () { return subjectOrSubjectFactory; };\n if (isFunction(selector)) {\n return connect(selector, {\n connector: subjectFactory,\n });\n }\n return function (source) { return new ConnectableObservable(source, subjectFactory); };\n}\n//# sourceMappingURL=multicast.js.map","import { operate } from '../util/lift';\nimport { OperatorSubscriber } from './OperatorSubscriber';\nexport function pairwise() {\n return operate(function (source, subscriber) {\n var prev;\n var hasPrev = false;\n source.subscribe(new OperatorSubscriber(subscriber, function (value) {\n var p = prev;\n prev = value;\n hasPrev && subscriber.next([p, value]);\n hasPrev = true;\n }));\n });\n}\n//# sourceMappingURL=pairwise.js.map","import { map } from './map';\nexport function pluck() {\n var properties = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n properties[_i] = 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 map(function (x) {\n var currentProp = x;\n for (var i = 0; i < length; i++) {\n var p = currentProp === null || currentProp === void 0 ? void 0 : currentProp[properties[i]];\n if (typeof p !== 'undefined') {\n currentProp = p;\n }\n else {\n return undefined;\n }\n }\n return currentProp;\n });\n}\n//# sourceMappingURL=pluck.js.map","import { Subject } from '../Subject';\nimport { multicast } from './multicast';\nimport { connect } from './connect';\nexport function publish(selector) {\n return selector ? function (source) { return connect(selector)(source); } : function (source) { return multicast(new Subject())(source); };\n}\n//# sourceMappingURL=publish.js.map","import { BehaviorSubject } from '../BehaviorSubject';\nimport { ConnectableObservable } from '../observable/ConnectableObservable';\nexport function publishBehavior(initialValue) {\n return function (source) {\n var subject = new BehaviorSubject(initialValue);\n return new ConnectableObservable(source, function () { return subject; });\n };\n}\n//# sourceMappingURL=publishBehavior.js.map","import { AsyncSubject } from '../AsyncSubject';\nimport { ConnectableObservable } from '../observable/ConnectableObservable';\nexport function publishLast() {\n return function (source) {\n var subject = new AsyncSubject();\n return new ConnectableObservable(source, function () { return subject; });\n };\n}\n//# sourceMappingURL=publishLast.js.map","import { ReplaySubject } from '../ReplaySubject';\nimport { multicast } from './multicast';\nimport { isFunction } from '../util/isFunction';\nexport function publishReplay(bufferSize, windowTime, selectorOrScheduler, timestampProvider) {\n if (selectorOrScheduler && !isFunction(selectorOrScheduler)) {\n timestampProvider = selectorOrScheduler;\n }\n var selector = isFunction(selectorOrScheduler) ? selectorOrScheduler : undefined;\n return function (source) { return multicast(new ReplaySubject(bufferSize, windowTime, timestampProvider), selector)(source); };\n}\n//# sourceMappingURL=publishReplay.js.map","import { __read, __spreadArray } from \"tslib\";\nimport { raceInit } from '../observable/race';\nimport { operate } from '../util/lift';\nimport { identity } from '../util/identity';\nexport function raceWith() {\n var otherSources = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n otherSources[_i] = arguments[_i];\n }\n return !otherSources.length\n ? identity\n : operate(function (source, subscriber) {\n raceInit(__spreadArray([source], __read(otherSources)))(subscriber);\n });\n}\n//# sourceMappingURL=raceWith.js.map","import { EMPTY } from '../observable/empty';\nimport { operate } from '../util/lift';\nimport { OperatorSubscriber } from './OperatorSubscriber';\nexport function repeat(count) {\n if (count === void 0) { count = Infinity; }\n return count <= 0\n ? function () { return EMPTY; }\n : operate(function (source, subscriber) {\n var soFar = 0;\n var innerSub;\n var subscribeForRepeat = function () {\n var syncUnsub = false;\n innerSub = source.subscribe(new OperatorSubscriber(subscriber, undefined, function () {\n if (++soFar < count) {\n if (innerSub) {\n innerSub.unsubscribe();\n innerSub = null;\n subscribeForRepeat();\n }\n else {\n syncUnsub = true;\n }\n }\n else {\n subscriber.complete();\n }\n }));\n if (syncUnsub) {\n innerSub.unsubscribe();\n innerSub = null;\n subscribeForRepeat();\n }\n };\n subscribeForRepeat();\n });\n}\n//# sourceMappingURL=repeat.js.map","import { Subject } from '../Subject';\nimport { operate } from '../util/lift';\nimport { OperatorSubscriber } from './OperatorSubscriber';\nexport function repeatWhen(notifier) {\n return operate(function (source, subscriber) {\n var innerSub;\n var syncResub = false;\n var completions$;\n var isNotifierComplete = false;\n var isMainComplete = false;\n var checkComplete = function () { return isMainComplete && isNotifierComplete && (subscriber.complete(), true); };\n var getCompletionSubject = function () {\n if (!completions$) {\n completions$ = new Subject();\n notifier(completions$).subscribe(new OperatorSubscriber(subscriber, function () {\n if (innerSub) {\n subscribeForRepeatWhen();\n }\n else {\n syncResub = true;\n }\n }, function () {\n isNotifierComplete = true;\n checkComplete();\n }));\n }\n return completions$;\n };\n var subscribeForRepeatWhen = function () {\n isMainComplete = false;\n innerSub = source.subscribe(new OperatorSubscriber(subscriber, undefined, function () {\n isMainComplete = true;\n !checkComplete() && getCompletionSubject().next();\n }));\n if (syncResub) {\n innerSub.unsubscribe();\n innerSub = null;\n syncResub = false;\n subscribeForRepeatWhen();\n }\n };\n subscribeForRepeatWhen();\n });\n}\n//# sourceMappingURL=repeatWhen.js.map","import { operate } from '../util/lift';\nimport { OperatorSubscriber } from './OperatorSubscriber';\nimport { identity } from '../util/identity';\nimport { timer } from '../observable/timer';\nimport { innerFrom } from '../observable/from';\nexport function retry(configOrCount) {\n if (configOrCount === void 0) { configOrCount = Infinity; }\n var config;\n if (configOrCount && typeof configOrCount === 'object') {\n config = configOrCount;\n }\n else {\n config = {\n count: configOrCount,\n };\n }\n var _a = config.count, count = _a === void 0 ? Infinity : _a, delay = config.delay, _b = config.resetOnSuccess, resetOnSuccess = _b === void 0 ? false : _b;\n return count <= 0\n ? identity\n : operate(function (source, subscriber) {\n var soFar = 0;\n var innerSub;\n var subscribeForRetry = function () {\n var syncUnsub = false;\n innerSub = source.subscribe(new OperatorSubscriber(subscriber, function (value) {\n if (resetOnSuccess) {\n soFar = 0;\n }\n subscriber.next(value);\n }, undefined, function (err) {\n if (soFar++ < count) {\n var resub_1 = function () {\n if (innerSub) {\n innerSub.unsubscribe();\n innerSub = null;\n subscribeForRetry();\n }\n else {\n syncUnsub = true;\n }\n };\n if (delay != null) {\n var notifier = typeof delay === 'number' ? timer(delay) : innerFrom(delay(err, soFar));\n var notifierSubscriber_1 = new OperatorSubscriber(subscriber, function () {\n notifierSubscriber_1.unsubscribe();\n resub_1();\n }, function () {\n subscriber.complete();\n });\n notifier.subscribe(notifierSubscriber_1);\n }\n else {\n resub_1();\n }\n }\n else {\n subscriber.error(err);\n }\n }));\n if (syncUnsub) {\n innerSub.unsubscribe();\n innerSub = null;\n subscribeForRetry();\n }\n };\n subscribeForRetry();\n });\n}\n//# sourceMappingURL=retry.js.map","import { Subject } from '../Subject';\nimport { operate } from '../util/lift';\nimport { OperatorSubscriber } from './OperatorSubscriber';\nexport function retryWhen(notifier) {\n return operate(function (source, subscriber) {\n var innerSub;\n var syncResub = false;\n var errors$;\n var subscribeForRetryWhen = function () {\n innerSub = source.subscribe(new OperatorSubscriber(subscriber, undefined, undefined, function (err) {\n if (!errors$) {\n errors$ = new Subject();\n notifier(errors$).subscribe(new OperatorSubscriber(subscriber, function () {\n return innerSub ? subscribeForRetryWhen() : (syncResub = true);\n }));\n }\n if (errors$) {\n errors$.next(err);\n }\n }));\n if (syncResub) {\n innerSub.unsubscribe();\n innerSub = null;\n syncResub = false;\n subscribeForRetryWhen();\n }\n };\n subscribeForRetryWhen();\n });\n}\n//# sourceMappingURL=retryWhen.js.map","import { operate } from '../util/lift';\nimport { noop } from '../util/noop';\nimport { OperatorSubscriber } from './OperatorSubscriber';\nexport function sample(notifier) {\n return operate(function (source, subscriber) {\n var hasValue = false;\n var lastValue = null;\n source.subscribe(new OperatorSubscriber(subscriber, function (value) {\n hasValue = true;\n lastValue = value;\n }));\n var emit = function () {\n if (hasValue) {\n hasValue = false;\n var value = lastValue;\n lastValue = null;\n subscriber.next(value);\n }\n };\n notifier.subscribe(new OperatorSubscriber(subscriber, emit, noop));\n });\n}\n//# sourceMappingURL=sample.js.map","import { asyncScheduler } from '../scheduler/async';\nimport { sample } from './sample';\nimport { interval } from '../observable/interval';\nexport function sampleTime(period, scheduler) {\n if (scheduler === void 0) { scheduler = asyncScheduler; }\n return sample(interval(period, scheduler));\n}\n//# sourceMappingURL=sampleTime.js.map","import { operate } from '../util/lift';\nimport { scanInternals } from './scanInternals';\nexport function scan(accumulator, seed) {\n return operate(scanInternals(accumulator, seed, arguments.length >= 2, true));\n}\n//# sourceMappingURL=scan.js.map","import { operate } from '../util/lift';\nimport { OperatorSubscriber } from './OperatorSubscriber';\nexport function sequenceEqual(compareTo, comparator) {\n if (comparator === void 0) { comparator = function (a, b) { return a === b; }; }\n return operate(function (source, subscriber) {\n var aState = createState();\n var bState = createState();\n var emit = function (isEqual) {\n subscriber.next(isEqual);\n subscriber.complete();\n };\n var createSubscriber = function (selfState, otherState) {\n var sequenceEqualSubscriber = new OperatorSubscriber(subscriber, function (a) {\n var buffer = otherState.buffer, complete = otherState.complete;\n if (buffer.length === 0) {\n complete ? emit(false) : selfState.buffer.push(a);\n }\n else {\n !comparator(a, buffer.shift()) && emit(false);\n }\n }, function () {\n selfState.complete = true;\n var complete = otherState.complete, buffer = otherState.buffer;\n complete && emit(buffer.length === 0);\n sequenceEqualSubscriber === null || sequenceEqualSubscriber === void 0 ? void 0 : sequenceEqualSubscriber.unsubscribe();\n });\n return sequenceEqualSubscriber;\n };\n source.subscribe(createSubscriber(aState, bState));\n compareTo.subscribe(createSubscriber(bState, aState));\n });\n}\nfunction createState() {\n return {\n buffer: [],\n complete: false,\n };\n}\n//# sourceMappingURL=sequenceEqual.js.map","import { __read, __spreadArray } from \"tslib\";\nimport { from } from '../observable/from';\nimport { take } from '../operators/take';\nimport { Subject } from '../Subject';\nimport { SafeSubscriber } from '../Subscriber';\nimport { operate } from '../util/lift';\nexport function share(options) {\n if (options === void 0) { options = {}; }\n var _a = options.connector, connector = _a === void 0 ? function () { return new Subject(); } : _a, _b = options.resetOnError, resetOnError = _b === void 0 ? true : _b, _c = options.resetOnComplete, resetOnComplete = _c === void 0 ? true : _c, _d = options.resetOnRefCountZero, resetOnRefCountZero = _d === void 0 ? true : _d;\n return function (wrapperSource) {\n var connection = null;\n var resetConnection = null;\n var subject = null;\n var refCount = 0;\n var hasCompleted = false;\n var hasErrored = false;\n var cancelReset = function () {\n resetConnection === null || resetConnection === void 0 ? void 0 : resetConnection.unsubscribe();\n resetConnection = null;\n };\n var reset = function () {\n cancelReset();\n connection = subject = null;\n hasCompleted = hasErrored = false;\n };\n var resetAndUnsubscribe = function () {\n var conn = connection;\n reset();\n conn === null || conn === void 0 ? void 0 : conn.unsubscribe();\n };\n return operate(function (source, subscriber) {\n refCount++;\n if (!hasErrored && !hasCompleted) {\n cancelReset();\n }\n var dest = (subject = subject !== null && subject !== void 0 ? subject : connector());\n subscriber.add(function () {\n refCount--;\n if (refCount === 0 && !hasErrored && !hasCompleted) {\n resetConnection = handleReset(resetAndUnsubscribe, resetOnRefCountZero);\n }\n });\n dest.subscribe(subscriber);\n if (!connection) {\n connection = new SafeSubscriber({\n next: function (value) { return dest.next(value); },\n error: function (err) {\n hasErrored = true;\n cancelReset();\n resetConnection = handleReset(reset, resetOnError, err);\n dest.error(err);\n },\n complete: function () {\n hasCompleted = true;\n cancelReset();\n resetConnection = handleReset(reset, resetOnComplete);\n dest.complete();\n },\n });\n from(source).subscribe(connection);\n }\n })(wrapperSource);\n };\n}\nfunction handleReset(reset, on) {\n var args = [];\n for (var _i = 2; _i < arguments.length; _i++) {\n args[_i - 2] = arguments[_i];\n }\n if (on === true) {\n reset();\n return null;\n }\n if (on === false) {\n return null;\n }\n return on.apply(void 0, __spreadArray([], __read(args))).pipe(take(1))\n .subscribe(function () { return reset(); });\n}\n//# sourceMappingURL=share.js.map","import { ReplaySubject } from '../ReplaySubject';\nimport { share } from './share';\nexport function shareReplay(configOrBufferSize, windowTime, scheduler) {\n var _a, _b;\n var bufferSize;\n var refCount = false;\n if (configOrBufferSize && typeof configOrBufferSize === 'object') {\n bufferSize = (_a = configOrBufferSize.bufferSize) !== null && _a !== void 0 ? _a : Infinity;\n windowTime = (_b = configOrBufferSize.windowTime) !== null && _b !== void 0 ? _b : Infinity;\n refCount = !!configOrBufferSize.refCount;\n scheduler = configOrBufferSize.scheduler;\n }\n else {\n bufferSize = configOrBufferSize !== null && configOrBufferSize !== void 0 ? configOrBufferSize : Infinity;\n }\n return share({\n connector: function () { return new ReplaySubject(bufferSize, windowTime, scheduler); },\n resetOnError: true,\n resetOnComplete: false,\n resetOnRefCountZero: refCount\n });\n}\n//# sourceMappingURL=shareReplay.js.map","import { EmptyError } from '../util/EmptyError';\nimport { SequenceError } from '../util/SequenceError';\nimport { NotFoundError } from '../util/NotFoundError';\nimport { operate } from '../util/lift';\nimport { OperatorSubscriber } from './OperatorSubscriber';\nexport function single(predicate) {\n return operate(function (source, subscriber) {\n var hasValue = false;\n var singleValue;\n var seenValue = false;\n var index = 0;\n source.subscribe(new OperatorSubscriber(subscriber, function (value) {\n seenValue = true;\n if (!predicate || predicate(value, index++, source)) {\n hasValue && subscriber.error(new SequenceError('Too many matching values'));\n hasValue = true;\n singleValue = value;\n }\n }, function () {\n if (hasValue) {\n subscriber.next(singleValue);\n subscriber.complete();\n }\n else {\n subscriber.error(seenValue ? new NotFoundError('No matching values') : new EmptyError());\n }\n }));\n });\n}\n//# sourceMappingURL=single.js.map","import { filter } from './filter';\nexport function skip(count) {\n return filter(function (_, index) { return count <= index; });\n}\n//# sourceMappingURL=skip.js.map","import { identity } from '../util/identity';\nimport { operate } from '../util/lift';\nimport { OperatorSubscriber } from './OperatorSubscriber';\nexport function skipLast(skipCount) {\n return skipCount <= 0\n ?\n identity\n : operate(function (source, subscriber) {\n var ring = new Array(skipCount);\n var seen = 0;\n source.subscribe(new OperatorSubscriber(subscriber, function (value) {\n var valueIndex = seen++;\n if (valueIndex < skipCount) {\n ring[valueIndex] = value;\n }\n else {\n var index = valueIndex % skipCount;\n var oldValue = ring[index];\n ring[index] = value;\n subscriber.next(oldValue);\n }\n }));\n return function () {\n ring = null;\n };\n });\n}\n//# sourceMappingURL=skipLast.js.map","import { operate } from '../util/lift';\nimport { OperatorSubscriber } from './OperatorSubscriber';\nimport { innerFrom } from '../observable/from';\nimport { noop } from '../util/noop';\nexport function skipUntil(notifier) {\n return operate(function (source, subscriber) {\n var taking = false;\n var skipSubscriber = new OperatorSubscriber(subscriber, function () {\n skipSubscriber === null || skipSubscriber === void 0 ? void 0 : skipSubscriber.unsubscribe();\n taking = true;\n }, noop);\n innerFrom(notifier).subscribe(skipSubscriber);\n source.subscribe(new OperatorSubscriber(subscriber, function (value) { return taking && subscriber.next(value); }));\n });\n}\n//# sourceMappingURL=skipUntil.js.map","import { operate } from '../util/lift';\nimport { OperatorSubscriber } from './OperatorSubscriber';\nexport function skipWhile(predicate) {\n return operate(function (source, subscriber) {\n var taking = false;\n var index = 0;\n source.subscribe(new OperatorSubscriber(subscriber, function (value) { return (taking || (taking = !predicate(value, index++))) && subscriber.next(value); }));\n });\n}\n//# sourceMappingURL=skipWhile.js.map","import { concat } from '../observable/concat';\nimport { popScheduler } from '../util/args';\nimport { operate } from '../util/lift';\nexport function startWith() {\n var values = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n values[_i] = arguments[_i];\n }\n var scheduler = popScheduler(values);\n return operate(function (source, subscriber) {\n (scheduler ? concat(values, source, scheduler) : concat(values, source)).subscribe(subscriber);\n });\n}\n//# sourceMappingURL=startWith.js.map","import { innerFrom } from '../observable/from';\nimport { operate } from '../util/lift';\nimport { OperatorSubscriber } from './OperatorSubscriber';\nexport function switchMap(project, resultSelector) {\n return operate(function (source, subscriber) {\n var innerSubscriber = null;\n var index = 0;\n var isComplete = false;\n var checkComplete = function () { return isComplete && !innerSubscriber && subscriber.complete(); };\n source.subscribe(new OperatorSubscriber(subscriber, function (value) {\n innerSubscriber === null || innerSubscriber === void 0 ? void 0 : innerSubscriber.unsubscribe();\n var innerIndex = 0;\n var outerIndex = index++;\n innerFrom(project(value, outerIndex)).subscribe((innerSubscriber = new OperatorSubscriber(subscriber, function (innerValue) { return subscriber.next(resultSelector ? resultSelector(value, innerValue, outerIndex, innerIndex++) : innerValue); }, function () {\n innerSubscriber = null;\n checkComplete();\n })));\n }, function () {\n isComplete = true;\n checkComplete();\n }));\n });\n}\n//# sourceMappingURL=switchMap.js.map","import { switchMap } from './switchMap';\nimport { identity } from '../util/identity';\nexport function switchAll() {\n return switchMap(identity);\n}\n//# sourceMappingURL=switchAll.js.map","import { switchMap } from './switchMap';\nimport { isFunction } from '../util/isFunction';\nexport function switchMapTo(innerObservable, resultSelector) {\n return isFunction(resultSelector) ? switchMap(function () { return innerObservable; }, resultSelector) : switchMap(function () { return innerObservable; });\n}\n//# sourceMappingURL=switchMapTo.js.map","import { switchMap } from './switchMap';\nimport { operate } from '../util/lift';\nexport function switchScan(accumulator, seed) {\n return operate(function (source, subscriber) {\n var state = seed;\n switchMap(function (value, index) { return accumulator(state, value, index); }, function (_, innerValue) { return ((state = innerValue), innerValue); })(source).subscribe(subscriber);\n return function () {\n state = null;\n };\n });\n}\n//# sourceMappingURL=switchScan.js.map","import { operate } from '../util/lift';\nimport { OperatorSubscriber } from './OperatorSubscriber';\nimport { innerFrom } from '../observable/from';\nimport { noop } from '../util/noop';\nexport function takeUntil(notifier) {\n return operate(function (source, subscriber) {\n innerFrom(notifier).subscribe(new OperatorSubscriber(subscriber, function () { return subscriber.complete(); }, noop));\n !subscriber.closed && source.subscribe(subscriber);\n });\n}\n//# sourceMappingURL=takeUntil.js.map","import { operate } from '../util/lift';\nimport { OperatorSubscriber } from './OperatorSubscriber';\nexport function takeWhile(predicate, inclusive) {\n if (inclusive === void 0) { inclusive = false; }\n return operate(function (source, subscriber) {\n var index = 0;\n source.subscribe(new OperatorSubscriber(subscriber, function (value) {\n var result = predicate(value, index++);\n (result || inclusive) && subscriber.next(value);\n !result && subscriber.complete();\n }));\n });\n}\n//# sourceMappingURL=takeWhile.js.map","import { isFunction } from '../util/isFunction';\nimport { operate } from '../util/lift';\nimport { OperatorSubscriber } from './OperatorSubscriber';\nimport { identity } from '../util/identity';\nexport function tap(observerOrNext, error, complete) {\n var tapObserver = isFunction(observerOrNext) || error || complete\n ?\n { next: observerOrNext, error: error, complete: complete }\n : observerOrNext;\n return tapObserver\n ? operate(function (source, subscriber) {\n var _a;\n (_a = tapObserver.subscribe) === null || _a === void 0 ? void 0 : _a.call(tapObserver);\n var isUnsub = true;\n source.subscribe(new OperatorSubscriber(subscriber, function (value) {\n var _a;\n (_a = tapObserver.next) === null || _a === void 0 ? void 0 : _a.call(tapObserver, value);\n subscriber.next(value);\n }, function () {\n var _a;\n isUnsub = false;\n (_a = tapObserver.complete) === null || _a === void 0 ? void 0 : _a.call(tapObserver);\n subscriber.complete();\n }, function (err) {\n var _a;\n isUnsub = false;\n (_a = tapObserver.error) === null || _a === void 0 ? void 0 : _a.call(tapObserver, err);\n subscriber.error(err);\n }, function () {\n var _a, _b;\n if (isUnsub) {\n (_a = tapObserver.unsubscribe) === null || _a === void 0 ? void 0 : _a.call(tapObserver);\n }\n (_b = tapObserver.finalize) === null || _b === void 0 ? void 0 : _b.call(tapObserver);\n }));\n })\n :\n identity;\n}\n//# sourceMappingURL=tap.js.map","import { operate } from '../util/lift';\nimport { OperatorSubscriber } from './OperatorSubscriber';\nimport { innerFrom } from '../observable/from';\nexport var defaultThrottleConfig = {\n leading: true,\n trailing: false,\n};\nexport function throttle(durationSelector, _a) {\n var _b = _a === void 0 ? defaultThrottleConfig : _a, leading = _b.leading, trailing = _b.trailing;\n return operate(function (source, subscriber) {\n var hasValue = false;\n var sendValue = null;\n var throttled = null;\n var isComplete = false;\n var endThrottling = function () {\n throttled === null || throttled === void 0 ? void 0 : throttled.unsubscribe();\n throttled = null;\n if (trailing) {\n send();\n isComplete && subscriber.complete();\n }\n };\n var cleanupThrottling = function () {\n throttled = null;\n isComplete && subscriber.complete();\n };\n var startThrottle = function (value) {\n return (throttled = innerFrom(durationSelector(value)).subscribe(new OperatorSubscriber(subscriber, endThrottling, cleanupThrottling)));\n };\n var send = function () {\n if (hasValue) {\n hasValue = false;\n var value = sendValue;\n sendValue = null;\n subscriber.next(value);\n !isComplete && startThrottle(value);\n }\n };\n source.subscribe(new OperatorSubscriber(subscriber, function (value) {\n hasValue = true;\n sendValue = value;\n !(throttled && !throttled.closed) && (leading ? send() : startThrottle(value));\n }, function () {\n isComplete = true;\n !(trailing && hasValue && throttled && !throttled.closed) && subscriber.complete();\n }));\n });\n}\n//# sourceMappingURL=throttle.js.map","import { asyncScheduler } from '../scheduler/async';\nimport { defaultThrottleConfig, throttle } from './throttle';\nimport { timer } from '../observable/timer';\nexport function throttleTime(duration, scheduler, config) {\n if (scheduler === void 0) { scheduler = asyncScheduler; }\n if (config === void 0) { config = defaultThrottleConfig; }\n var duration$ = timer(duration, scheduler);\n return throttle(function () { return duration$; }, config);\n}\n//# sourceMappingURL=throttleTime.js.map","import { async } from '../scheduler/async';\nimport { scan } from './scan';\nimport { defer } from '../observable/defer';\nimport { map } from './map';\nexport function timeInterval(scheduler) {\n if (scheduler === void 0) { scheduler = async; }\n return function (source) {\n return defer(function () {\n return source.pipe(scan(function (_a, value) {\n var current = _a.current;\n return ({ value: value, current: scheduler.now(), last: current });\n }, {\n current: scheduler.now(),\n value: undefined,\n last: undefined,\n }), map(function (_a) {\n var current = _a.current, last = _a.last, value = _a.value;\n return new TimeInterval(value, current - last);\n }));\n });\n };\n}\nvar TimeInterval = (function () {\n function TimeInterval(value, interval) {\n this.value = value;\n this.interval = interval;\n }\n return TimeInterval;\n}());\nexport { TimeInterval };\n//# sourceMappingURL=timeInterval.js.map","import { async } from '../scheduler/async';\nimport { isValidDate } from '../util/isDate';\nimport { timeout } from './timeout';\nexport function timeoutWith(due, withObservable, scheduler) {\n var first;\n var each;\n var _with;\n scheduler = scheduler !== null && scheduler !== void 0 ? scheduler : async;\n if (isValidDate(due)) {\n first = due;\n }\n else if (typeof due === 'number') {\n each = due;\n }\n if (withObservable) {\n _with = function () { return withObservable; };\n }\n else {\n throw new TypeError('No observable provided to switch to');\n }\n if (first == null && each == null) {\n throw new TypeError('No timeout provided.');\n }\n return timeout({\n first: first,\n each: each,\n scheduler: scheduler,\n with: _with,\n });\n}\n//# sourceMappingURL=timeoutWith.js.map","import { dateTimestampProvider } from '../scheduler/dateTimestampProvider';\nimport { map } from './map';\nexport function timestamp(timestampProvider) {\n if (timestampProvider === void 0) { timestampProvider = dateTimestampProvider; }\n return map(function (value) { return ({ value: value, timestamp: timestampProvider.now() }); });\n}\n//# sourceMappingURL=timestamp.js.map","import { Subject } from '../Subject';\nimport { operate } from '../util/lift';\nimport { OperatorSubscriber } from './OperatorSubscriber';\nimport { noop } from '../util/noop';\nexport function window(windowBoundaries) {\n return operate(function (source, subscriber) {\n var windowSubject = new Subject();\n subscriber.next(windowSubject.asObservable());\n var errorHandler = function (err) {\n windowSubject.error(err);\n subscriber.error(err);\n };\n source.subscribe(new OperatorSubscriber(subscriber, function (value) { return windowSubject === null || windowSubject === void 0 ? void 0 : windowSubject.next(value); }, function () {\n windowSubject.complete();\n subscriber.complete();\n }, errorHandler));\n windowBoundaries.subscribe(new OperatorSubscriber(subscriber, function () {\n windowSubject.complete();\n subscriber.next((windowSubject = new Subject()));\n }, noop, errorHandler));\n return function () {\n windowSubject === null || windowSubject === void 0 ? void 0 : windowSubject.unsubscribe();\n windowSubject = null;\n };\n });\n}\n//# sourceMappingURL=window.js.map","import { __values } from \"tslib\";\nimport { Subject } from '../Subject';\nimport { operate } from '../util/lift';\nimport { OperatorSubscriber } from './OperatorSubscriber';\nexport function windowCount(windowSize, startWindowEvery) {\n if (startWindowEvery === void 0) { startWindowEvery = 0; }\n var startEvery = startWindowEvery > 0 ? startWindowEvery : windowSize;\n return operate(function (source, subscriber) {\n var windows = [new Subject()];\n var starts = [];\n var count = 0;\n subscriber.next(windows[0].asObservable());\n source.subscribe(new OperatorSubscriber(subscriber, function (value) {\n var e_1, _a;\n try {\n for (var windows_1 = __values(windows), windows_1_1 = windows_1.next(); !windows_1_1.done; windows_1_1 = windows_1.next()) {\n var window_1 = windows_1_1.value;\n window_1.next(value);\n }\n }\n catch (e_1_1) { e_1 = { error: e_1_1 }; }\n finally {\n try {\n if (windows_1_1 && !windows_1_1.done && (_a = windows_1.return)) _a.call(windows_1);\n }\n finally { if (e_1) throw e_1.error; }\n }\n var c = count - windowSize + 1;\n if (c >= 0 && c % startEvery === 0) {\n windows.shift().complete();\n }\n if (++count % startEvery === 0) {\n var window_2 = new Subject();\n windows.push(window_2);\n subscriber.next(window_2.asObservable());\n }\n }, function () {\n while (windows.length > 0) {\n windows.shift().complete();\n }\n subscriber.complete();\n }, function (err) {\n while (windows.length > 0) {\n windows.shift().error(err);\n }\n subscriber.error(err);\n }, function () {\n starts = null;\n windows = null;\n }));\n });\n}\n//# sourceMappingURL=windowCount.js.map","import { Subject } from '../Subject';\nimport { asyncScheduler } from '../scheduler/async';\nimport { Subscription } from '../Subscription';\nimport { operate } from '../util/lift';\nimport { OperatorSubscriber } from './OperatorSubscriber';\nimport { arrRemove } from '../util/arrRemove';\nimport { popScheduler } from '../util/args';\nexport function windowTime(windowTimeSpan) {\n var _a, _b;\n var otherArgs = [];\n for (var _i = 1; _i < arguments.length; _i++) {\n otherArgs[_i - 1] = arguments[_i];\n }\n var scheduler = (_a = popScheduler(otherArgs)) !== null && _a !== void 0 ? _a : asyncScheduler;\n var windowCreationInterval = (_b = otherArgs[0]) !== null && _b !== void 0 ? _b : null;\n var maxWindowSize = otherArgs[1] || Infinity;\n return operate(function (source, subscriber) {\n var windowRecords = [];\n var restartOnClose = false;\n var closeWindow = function (record) {\n var window = record.window, subs = record.subs;\n window.complete();\n subs.unsubscribe();\n arrRemove(windowRecords, record);\n restartOnClose && startWindow();\n };\n var startWindow = function () {\n if (windowRecords) {\n var subs = new Subscription();\n subscriber.add(subs);\n var window_1 = new Subject();\n var record_1 = {\n window: window_1,\n subs: subs,\n seen: 0,\n };\n windowRecords.push(record_1);\n subscriber.next(window_1.asObservable());\n subs.add(scheduler.schedule(function () { return closeWindow(record_1); }, windowTimeSpan));\n }\n };\n windowCreationInterval !== null && windowCreationInterval >= 0\n ?\n subscriber.add(scheduler.schedule(function () {\n startWindow();\n !this.closed && subscriber.add(this.schedule(null, windowCreationInterval));\n }, windowCreationInterval))\n : (restartOnClose = true);\n startWindow();\n var loop = function (cb) { return windowRecords.slice().forEach(cb); };\n var terminate = function (cb) {\n loop(function (_a) {\n var window = _a.window;\n return cb(window);\n });\n cb(subscriber);\n subscriber.unsubscribe();\n };\n source.subscribe(new OperatorSubscriber(subscriber, function (value) {\n loop(function (record) {\n record.window.next(value);\n maxWindowSize <= ++record.seen && closeWindow(record);\n });\n }, function () { return terminate(function (consumer) { return consumer.complete(); }); }, function (err) { return terminate(function (consumer) { return consumer.error(err); }); }));\n return function () {\n windowRecords = null;\n };\n });\n}\n//# sourceMappingURL=windowTime.js.map","import { __values } from \"tslib\";\nimport { Subject } from '../Subject';\nimport { Subscription } from '../Subscription';\nimport { operate } from '../util/lift';\nimport { innerFrom } from '../observable/from';\nimport { OperatorSubscriber } from './OperatorSubscriber';\nimport { noop } from '../util/noop';\nimport { arrRemove } from '../util/arrRemove';\nexport function windowToggle(openings, closingSelector) {\n return operate(function (source, subscriber) {\n var windows = [];\n var handleError = function (err) {\n while (0 < windows.length) {\n windows.shift().error(err);\n }\n subscriber.error(err);\n };\n innerFrom(openings).subscribe(new OperatorSubscriber(subscriber, function (openValue) {\n var window = new Subject();\n windows.push(window);\n var closingSubscription = new Subscription();\n var closeWindow = function () {\n arrRemove(windows, window);\n window.complete();\n closingSubscription.unsubscribe();\n };\n var closingNotifier;\n try {\n closingNotifier = innerFrom(closingSelector(openValue));\n }\n catch (err) {\n handleError(err);\n return;\n }\n subscriber.next(window.asObservable());\n closingSubscription.add(closingNotifier.subscribe(new OperatorSubscriber(subscriber, closeWindow, noop, handleError)));\n }, noop));\n source.subscribe(new OperatorSubscriber(subscriber, function (value) {\n var e_1, _a;\n var windowsCopy = windows.slice();\n try {\n for (var windowsCopy_1 = __values(windowsCopy), windowsCopy_1_1 = windowsCopy_1.next(); !windowsCopy_1_1.done; windowsCopy_1_1 = windowsCopy_1.next()) {\n var window_1 = windowsCopy_1_1.value;\n window_1.next(value);\n }\n }\n catch (e_1_1) { e_1 = { error: e_1_1 }; }\n finally {\n try {\n if (windowsCopy_1_1 && !windowsCopy_1_1.done && (_a = windowsCopy_1.return)) _a.call(windowsCopy_1);\n }\n finally { if (e_1) throw e_1.error; }\n }\n }, function () {\n while (0 < windows.length) {\n windows.shift().complete();\n }\n subscriber.complete();\n }, handleError, function () {\n while (0 < windows.length) {\n windows.shift().unsubscribe();\n }\n }));\n });\n}\n//# sourceMappingURL=windowToggle.js.map","import { Subject } from '../Subject';\nimport { operate } from '../util/lift';\nimport { OperatorSubscriber } from './OperatorSubscriber';\nimport { innerFrom } from '../observable/from';\nexport function windowWhen(closingSelector) {\n return operate(function (source, subscriber) {\n var window;\n var closingSubscriber;\n var handleError = function (err) {\n window.error(err);\n subscriber.error(err);\n };\n var openWindow = function () {\n closingSubscriber === null || closingSubscriber === void 0 ? void 0 : closingSubscriber.unsubscribe();\n window === null || window === void 0 ? void 0 : window.complete();\n window = new Subject();\n subscriber.next(window.asObservable());\n var closingNotifier;\n try {\n closingNotifier = innerFrom(closingSelector());\n }\n catch (err) {\n handleError(err);\n return;\n }\n closingNotifier.subscribe((closingSubscriber = new OperatorSubscriber(subscriber, openWindow, openWindow, handleError)));\n };\n openWindow();\n source.subscribe(new OperatorSubscriber(subscriber, function (value) { return window.next(value); }, function () {\n window.complete();\n subscriber.complete();\n }, handleError, function () {\n closingSubscriber === null || closingSubscriber === void 0 ? void 0 : closingSubscriber.unsubscribe();\n window = null;\n }));\n });\n}\n//# sourceMappingURL=windowWhen.js.map","import { __read, __spreadArray } from \"tslib\";\nimport { operate } from '../util/lift';\nimport { OperatorSubscriber } from './OperatorSubscriber';\nimport { innerFrom } from '../observable/from';\nimport { identity } from '../util/identity';\nimport { noop } from '../util/noop';\nimport { popResultSelector } from '../util/args';\nexport function withLatestFrom() {\n var inputs = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n inputs[_i] = arguments[_i];\n }\n var project = popResultSelector(inputs);\n return operate(function (source, subscriber) {\n var len = inputs.length;\n var otherValues = new Array(len);\n var hasValue = inputs.map(function () { return false; });\n var ready = false;\n var _loop_1 = function (i) {\n innerFrom(inputs[i]).subscribe(new OperatorSubscriber(subscriber, function (value) {\n otherValues[i] = value;\n if (!ready && !hasValue[i]) {\n hasValue[i] = true;\n (ready = hasValue.every(identity)) && (hasValue = null);\n }\n }, noop));\n };\n for (var i = 0; i < len; i++) {\n _loop_1(i);\n }\n source.subscribe(new OperatorSubscriber(subscriber, function (value) {\n if (ready) {\n var values = __spreadArray([value], __read(otherValues));\n subscriber.next(project ? project.apply(void 0, __spreadArray([], __read(values))) : values);\n }\n }));\n });\n}\n//# sourceMappingURL=withLatestFrom.js.map","import { zip } from '../observable/zip';\nimport { joinAllInternals } from './joinAllInternals';\nexport function zipAll(project) {\n return joinAllInternals(zip, project);\n}\n//# sourceMappingURL=zipAll.js.map","import { __read, __spreadArray } from \"tslib\";\nimport { zip as zipStatic } from '../observable/zip';\nimport { operate } from '../util/lift';\nexport function zip() {\n var sources = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n sources[_i] = arguments[_i];\n }\n return operate(function (source, subscriber) {\n zipStatic.apply(void 0, __spreadArray([source], __read(sources))).subscribe(subscriber);\n });\n}\n//# sourceMappingURL=zip.js.map","import { __read, __spreadArray } from \"tslib\";\nimport { zip } from './zip';\nexport function zipWith() {\n var otherInputs = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n otherInputs[_i] = arguments[_i];\n }\n return zip.apply(void 0, __spreadArray([], __read(otherInputs)));\n}\n//# sourceMappingURL=zipWith.js.map","import * as Explorer from './explorer.directive';\nimport { IAttributes, IController, IDirective, IScope } from \"angular\";\nimport { IFolder } from \"ode-ts-client\";\nimport { UiModel } from \"../../../models/ui.model\";\n\n/* Controller for the directive */\nexport class Controller implements IController {\n constructor() {\n // Remove transpilation warnings due to the \"bindToController\", which angularjs already checks.\n this.model = null as unknown as UiModel;\n this.folder = null as unknown as IFolder;\n }\n model: UiModel;\n folder:IFolder;\n private selected:boolean = false;\n\n toggleSelect( selected?:boolean ):void {\n const idx = this.model.selectedFolders.findIndex(f => f.id===this.folder.id);\n if( idx===-1 || selected===true ) {\n // Select it if needed.\n if( !this.selected ) {\n this.model.selectedFolders.push( this.folder );\n this.selected = true;\n }\n } else {\n // De-select it, if needed.\n if( idx>=0 ) {\n this.model.selectedFolders.splice(idx,1);\n this.selected = false;\n }\n }\n }\n\n openSubfolder():void {\n\t\tthis.model.openAsSubfolder( this.folder );\n }\n}\n\n/* Directive */\nclass Directive implements IDirective<IScope,JQLite,IAttributes,IController[]> {\n restrict = 'E';\n\ttemplate = require('./domino-folder.directive.html').default;\n\tscope = {\n folder:\"=\"\n };\n\tbindToController = true;\n\tcontroller = [Controller];\n\tcontrollerAs = 'ctrl';\n\trequire = [\"odeDominoFolder\", \"^odeExplorer\"];\n\n link(scope:IScope, elem:JQLite, attrs:IAttributes, controllers?:IController[]): void {\n\t\tif( !controllers ) return;\n const ctrl:Controller = controllers[0] as Controller;\n const odeExplorer:Explorer.Controller = controllers[1] as Explorer.Controller;\n ctrl.model = odeExplorer.model;\n }\n}\n\n/** The ode-domino-folder directive.\n */\nexport function DirectiveFactory() {\n\treturn new Directive();\n}\n","import * as Explorer from './explorer.directive';\nimport { IAttributes, IController, IDirective, IScope } from \"angular\";\nimport { IResource } from \"ode-ts-client\";\nimport { UiModel } from \"../../../models/ui.model\";\n\n/* Controller for the directive */\nexport class Controller implements IController {\n constructor() {\n // Remove transpilation warnings due to the \"bindToController\", which angularjs already checks.\n this.model = null as unknown as UiModel;\n this.item = null as unknown as IResource;\n }\n model:UiModel;\n item:IResource;\n private selected:boolean = false;\n\n toggleSelect( selected?:boolean ):void {\n const idx = this.model.selectedItems.findIndex(f => f.id===this.item.id);\n if( idx===-1 || selected===true ) {\n // Select it.\n if( !this.selected ) {\n this.model.selectedItems.push( this.item );\n this.selected = true;\n }\n } else {\n // De-select it.\n if( idx>=0 ) {\n this.model.selectedItems.splice(idx,1);\n this.selected = false;\n }\n }\n }\n}\n\n/* Directive */\nclass Directive implements IDirective<IScope,JQLite,IAttributes,IController[]> {\n restrict = 'E';\n\ttemplate = require('./domino-item.directive.html').default;\n\tscope = {\n item:\"=\"\n };\n\tbindToController = true;\n\tcontroller = [Controller];\n\tcontrollerAs = 'ctrl';\n\trequire = [\"odeDominoItem\", \"^odeExplorer\"];\n\n link(scope:IScope, elem:JQLite, attrs:IAttributes, controllers?:IController[]): void {\n\t\tif( !controllers ) return;\n const ctrl:Controller = controllers[0] as Controller;\n const odeExplorer:Explorer.Controller = controllers[1] as Explorer.Controller;\n ctrl.model = odeExplorer.model;\n }\n\n}\n\n/** The ode-domino-item directive.\n */\nexport function DirectiveFactory() {\n\treturn new Directive();\n}\n","import { IAttributes, IController, IDirective, ILocationService, IScope, IWindowService } from \"angular\";\nimport { App, ResourceType, IOrder, SORT_ORDER, RESOURCE, ACTION, ExplorerFrameworkFactory } from \"ode-ts-client\";\nimport { UiModel } from \"../../../models/ui.model\";\n\n/* Controller for the directive */\nexport class Controller implements IController {\n model:UiModel;\n private app:App;\n private resource:ResourceType;\n\n constructor( private $location:ILocationService\n ,private $window:IWindowService\n ) {\n // Remove transpilation warnings due to the \"bindToController\", which angularjs already checks.\n this.model = null as unknown as UiModel;\n this.app = null as unknown as App;\n this.resource = null as unknown as ResourceType;\n }\n\n $onInit() {\n if( !this.app ) throw new Error(\"App undefined for explorer.\");\n if( !this.resource ) throw new Error(\"Resource undefined for explorer.\");\n this.model = new UiModel( this.app, this.resource );\n }\n \n getSortClass( sort:IOrder ) {\n const sortOrders = this.model?.searchParameters.orders;\n if( sortOrders && sortOrders[sort.id]===SORT_ORDER.ASC ) {\n return { active: true }\n }\n }\n\n toggleSortOrder( sort:IOrder ) {\n const search = this.model?.searchParameters;\n if( search ) {\n search.orders = search.orders || {};\n search.orders[sort.id] = search.orders[sort.id] \n ? search.orders[sort.id]===SORT_ORDER.ASC ? SORT_ORDER.DESC : SORT_ORDER.ASC\n : sort.defaultValue ? sort.defaultValue : SORT_ORDER.ASC;\n }\n }\n\n onCreate():void {\n // TODO ajouter une méthode \"create\" à IExplorerContext, fortement typée plutôt qu'interroger le bus en direct.\n ExplorerFrameworkFactory.instance().getBus().publish(RESOURCE.BLOG, ACTION.CREATE, \"test proto\").then( res => {\n if( typeof res === \"string\" ) {\n if( res.indexOf(\"#\") < 0 ) {\n // Angular-based routing\n this.$location.path(res);\n } else {\n // Browser-based routing\n this.$window.location.href = res;\n }\n }\n });\n }\n}\n\n/* Directive */\nclass Directive implements IDirective {\n restrict = 'E';\n\ttemplate = require('./explorer.directive.html').default;\n\tscope = {\n app:\"@\",\n resource:\"@\"\n };\n\tbindToController = true;\n\tcontroller = ['$location','$window',Controller];\n\tcontrollerAs = 'ctrl';\n\n link(scope:IScope, elem:JQLite, attr:IAttributes, controller:IController|undefined): void {\n let ctrl:Controller = controller as Controller;\n if( !ctrl.model ) throw new Error(\"Data model undefined for explorer.\");\n ctrl.model.initialize().then( ctx => {\n scope.$apply();\n });\n }\n}\n\n/** The ode-explorer directive.\n *\n * Usage:\n * 1) import your directive's factory,\n * import { Explorer } from 'ode-ngjs-front';\n * 2) Add it to your angular module,\n * ng.directives.push( ng.directive(\"odeExplorer\", Explorer.DirectiveFactory) );\n * 3) Use it,\n * <ode-explorer app=\"blog\" resource=\"blog\"></ode-explorer>\n * \n * 4) TODO unit-testing : https://docs.angularjs.org/guide/unit-testing#testing-a-controller\n */\nexport function DirectiveFactory() {\n\treturn new Directive();\n}","import * as Explorer from './explorer.directive';\nimport { IAttributes, IController, IDirective, IScope } from \"angular\";\nimport { ISearchResults } from \"ode-ts-client\";\nimport { UiModel } from \"../../../models/ui.model\";\n\n/* Controller for the directive */\nexport class Controller implements IController {\n constructor() {\n // Remove transpilation warnings due to the \"bindToController\", which angularjs already checks.\n this.model = null as unknown as UiModel;\n }\n model: UiModel;\n\n display( resultset:ISearchResults ) {\n // If pagination starts at 0, this is a new resultset.\n if( resultset.pagination.startIdx===0) {\n this.model.loadedFolders = resultset.folders ?? [];\n this.model.loadedItems = resultset.resources ?? [];\n } else {\n this.model.loadedItems.concat( resultset.resources );\n }\n }\n}\n\n/* Directive */\nclass Directive implements IDirective<IScope,JQLite,IAttributes,IController[]> {\n restrict = 'A';\n\ttemplate = require('./resource-list.directive.html').default;\n\tscope = {};\n\tbindToController = true;\n transclude = {\n folders: \"odeListFolder\",\n items: \"odeListItem\"\n };\n\tcontroller = [Controller];\n\tcontrollerAs = 'ctrl';\n\trequire = [\"odeResourceList\", \"^^odeExplorer\"];\n\n link(scope:IScope, elem:JQLite, attrs:IAttributes, controllers?:IController[]): void {\n\t\tif( !controllers ) return;\n const ctrl:Controller = controllers[0] as Controller;\n const odeExplorer:Explorer.Controller = controllers[1] as Explorer.Controller;\n ctrl.model = odeExplorer.model;\n\n let subscription = ctrl.model.explorer.latestResources().subscribe({\n next: resultset => { \n ctrl?.display(resultset.output);\n scope.$apply();\n }\n });\n\n scope.$on('$destroy', (ev)=>{\n if( subscription ) {\n subscription.unsubscribe();\n }\n });\n }\n}\n\n/** The ode-resource-list directive.\n * \n * Usage (pseudo-code):\n * <div ode-resource-list context=\"instance of UiContext\">_Content to transclude here_</div>\n * The content to transclude can reference some scope values :\n * * Use _{{$parent.ctrl.xxx}}_ to access this directive's controller.\n * * Use _<ode-list-folder>{{$parent.folder.xxx}}</ode-list-folder>_\n * where {{$parent.folder}} is an IFolder\n * * Use _<ode-list-item>{{$parent.item.xxx}}</ode-list-folder>_\n * where {{$parent.item}} is an IResource\n * \n */\nexport function DirectiveFactory() {\n\treturn new Directive();\n}\n","import { IController, IDirective, IRootScopeService } from \"angular\";\nimport { IFolder } from \"ode-ts-client\";\n\ntype OnSelectParam = {folderCtrl:FolderController};\n\n/* Controller for the directive */\nexport class FolderController implements IController {\n\tconstructor(private $rootScope:IRootScopeService) {\n\t\tthis.$rootScope = $rootScope;\n\t}\n folder?:IFolder;\n onSelect?:(param:OnSelectParam)=>void;\n\n private _isSelected:boolean = false;\n private _subfolders:IFolder[] = [];\n\n get isSelected():boolean {\n return this._isSelected;\n }\n\n get hasChildren():boolean {\n return (typeof this.folder===\"object\") && this.folder.childNumber > 0;\n }\n\n get showSubfolders():boolean {\n return this._isSelected && this._subfolders.length > 0;\n }\n\n get subfolders():IFolder[] {\n return this._subfolders;\n }\n\n set subfolders( subFolders:IFolder[] ) {\n this._subfolders = subFolders;\n this.$rootScope.$apply();\n }\n\n getClass():{[classname:string]: boolean} {\n return {\n active: this._isSelected\n };\n }\n\n toggle( open?:boolean ):void {\n this._isSelected = open ?? !this._isSelected;\n if( this._isSelected && typeof this.onSelect===\"function\") {\n this.onSelect( {folderCtrl:this} );\n }\n }\n}\n\n/* Directive */\nclass Directive implements IDirective {\n restrict = 'A';\n\ttemplateUrl = require('./sidebar-folder.directive.lazy.html').default;\n\tscope = {\n folder:\"<odeSidebarFolder\",\n onSelect:\"&\"\n };\n\tbindToController = true;\n\tcontroller = [\"$rootScope\",FolderController];\n\tcontrollerAs = 'ctrl';\n}\n\n/** The folder directive.\n * \n * Usage (pseudo-code):\n * <div ode-sidebar-folder=\"IFolder\" on-select=\"selectFolderCallback(OnSelectParam)\"></div>\n */\nexport function DirectiveFactory() {\n\treturn new Directive();\n}\n","import * as Explorer from './explorer.directive';\nimport { IAttributes, IController, IDirective, IScope } from \"angular\";\nimport { GetResourcesResult } from \"ode-ts-client\";\nimport { UiModel } from \"../../../models/ui.model\";\nimport { FolderController } from \"./sidebar-folder.directive\";\n\n/* Controller for the directive */\nexport class Controller implements IController {\n constructor() {\n // Remove transpilation warnings due to the \"bindToController\", which angularjs already checks.\n this.model = null as unknown as UiModel;\n }\n model: UiModel;\n\n\tonSelectFolder(folderCtrl:FolderController):void {\n\t\tthis.model.searchParameters.filters.folder = folderCtrl.folder?.id;\n\t\tthis.model.explorer.getResources().then( (result:GetResourcesResult) => {\n\t\t\tfolderCtrl.subfolders = result.folders;\n\t\t});\n\t}\n}\n\n/* Directive */\nclass Directive implements IDirective<IScope,JQLite,IAttributes,IController[]> {\n restrict = 'E';\n\ttemplate = require('./sidebar.directive.html').default;\n\tscope = {};\n\tbindToController = true;\n\tcontroller = [Controller];\n\tcontrollerAs = 'ctrl';\n\trequire = [\"odeSidebar\", \"^^odeExplorer\"];\n\n link(scope:IScope, elem:JQLite, attrs:IAttributes, controllers?:IController[]): void {\n\t\tif( !controllers ) return;\n\t\tconst ctrl:Controller = controllers[0] as Controller;\n\t\tconst odeExplorer:Explorer.Controller = controllers[1] as Explorer.Controller;\n\t\tctrl.model = odeExplorer.model;\n\t}\n}\n\n/** The sidebar directive.\n *\n * Usage:\n * <ode-sidebar></ode-sidebar>\n */\nexport function DirectiveFactory() {\n\treturn new Directive();\n}\n","import { IAttributes, IController, IDirective, IScope } from \"angular\";\nimport { RichContentService } from \"../../..\";\n\n/* Directive */\nclass Directive implements IDirective<IScope,JQLite,IAttributes,IController[]> {\n\tconstructor( private richContentSvc:RichContentService ){\n\t}\n\trestrict= 'A';\n\tscope= {\n\t\tbindHtml: '='\n\t};\n\t\n\tlink(scope:IScope, element:JQLite, attrs:IAttributes, controllers?:IController[]): void {\n\t\tscope.$watch('bindHtml', (newVal)=>this.richContentSvc.apply(newVal as string ?? '', element, scope) );\n\t}\n\n\n}\n\n/**\n * The bind-html directive.\n * \n * Usage:\n * <div bind-html=\"angular_expression\" ></div>\n */\n export function DirectiveFactory(richContentSvc:RichContentService) {\n\treturn new Directive(richContentSvc);\n}\nDirectiveFactory.$inject = [\"odeRichContentService\"];","import { IAttributes, IController, IDirective, IScope } from \"angular\";\nimport { NgHelperService, TrackedAction } from \"../../..\";\nimport { VideoEventTrackerService, VideoUploadService } from \"../../../services\";\nimport { conf, deviceType, IAnyRecorder, RecorderState, session } from \"../../../utils\";\nimport { IObjectGuardDelegate } from \"../../../utils/navigation-guard\";\nimport { audio_recorder } from \"../../../utils/recorder-audio\";\nimport { VideoRecorder } from \"../../../utils/recorder-video\";\n\ntype RecorderType = \"audio\" | \"video\" | \"none\";\n\nclass VideoRecordGuardModel implements IObjectGuardDelegate{\n hasRecorded = false;\n guardObjectIsDirty(): boolean{\n return this.hasRecorded;\n }\n guardObjectReset(): void{\n this.hasRecorded = false;\n }\n}\n\n/* Controller for the directive */\nexport class Controller implements IController {\n private _recorder:IAnyRecorder = this.setRecorder( \"audio\" ); // Defaults to audio recorder\n public isAudioCompatible:boolean = audio_recorder.isCompatible();\n public isVideoCompatible:boolean = VideoRecorder.isCompatible() && session().hasWorkflow(\"com.opendigitaleducation.video.controllers.VideoController|capture\");\n\n // @ts-ignore the following is set in the AngularJS link method\n public videoFactory: ()=>HTMLMediaElement;\n // @ts-ignore the following is set in the AngularJS link method\n public videoDurationHandler: (event: Event)=>void;\n // @ts-ignore the following is set in the AngularJS link method\n public recorderStatus: (status:RecorderState)=>void;\n\n setRecorder( type:RecorderType ):IAnyRecorder {\n if( type===\"audio\" ) {\n this._recorder = audio_recorder;\n } else {\n this._recorder = new VideoRecorder( \n this.videoFactory, \n this.videoDurationHandler,\n this.videoUploadService,\n this.videoEventTrackerService,\n this.selectedVid\n );\n }\n this._recorder.status( this.recorderStatus );\n return this._recorder;\n }\n\n // Utility accessors for simpler template reading.\n get recorder():IAnyRecorder {\n return this._recorder;\n }\n get hasPermission() { return this.recorder.permission === 'granted' };\n\n get isIdle() { return !this.recorder || this.recorder.state === 'idle'; }\n get isPreparing() { return this.recorder.state === 'preparing'; }\n get isRecording() { return this.recorder.state === 'recording'; }\n get isSuspended() { return this.recorder.state === 'suspended'; }\n get isPaused() { return this.recorder.state === 'paused'; }\n get isPlaying() { return this.recorder.state === 'playing'; }\n get isStopped() { return this.recorder.state === 'stopped'; }\n get isEncoding() { return this.recorder.state === 'encoding'; }\n get isUploading() { return this.recorder.state === 'uploading'; }\n\n get showMenu() { return this.isIdle || this.isStopped || !this.hasPermission; }\n get showRecorder() { return this.hasPermission }\n\n get showActionButtons() { return this.recorder && this.recorder.elapsedTime > 0 && !this.isStopped; }\n\n get isAudio():boolean { return this._recorder === audio_recorder; }\n get isVideo():boolean { return this._recorder !== audio_recorder; }\n\n // Video-specific members\n videoInputDevices?: MediaDeviceInfo[];\n selectedVid?: MediaDeviceInfo;\n\n // Disabled State\n disabledButtons:boolean = true;\n displaySavedMessage:boolean = false;\n selectedRecorder:string = \"none\";\n\n /** Max video recording duration, in ms. */\n get recordMaxTime():number {\n return this.videoUploadService.maxDuration * 60 * 1000;\n }\n\n switchRecorder(type: string) {\n if (type === \"audio\") {\n this.selectedRecorder = \"audio\";\n this.setRecorder( \"audio\" );\n } else {\n this.selectedRecorder = \"video\";\n this.msToTime( 0 );\n this.setRecorder( \"video\" );\n this.recorder?.prepare?.();\n }\n }\n\n switchAudioRecord() {\n this.setRecorder( \"audio\" );\n if( this.isRecording ) {\n this.disabledButtons = false;\n this.recorder?.suspend();\n } else {\n this.recorder?.record();\n \n // Track this event.\n const btn = document.getElementById(\"btnAudioRecorder\");\n if( btn ) {\n this.trackEvent(btn, { detail:{'open':'audio'} });\n }\n }\n }\n\n switchVideoRecord() {\n if( this.isRecording ) {\n this.disabledButtons = false;\n this.recorder?.suspend();\n } else {\n this.recorder?.record();\n \n // Track this event.\n const btn = document.getElementById(\"btnVideoRecorder\");\n if( btn ) {\n this.trackEvent(btn, { detail:{'open':'video'} });\n }\n }\n\n if (this.isPaused) {\n this.restart();\n }\n }\n\n // Give an opportunity to track some events from outside of this component.\n private trackEvent(e:HTMLElement, p:CustomEventInit<TrackedAction>) {\n // Allow events to bubble up.\n if(typeof p.bubbles === \"undefined\") p.bubbles = true;\n\n let event = null;\n if( p && (p.detail?.open==='audio' || p.detail?.open==='video') ) {\n event = new CustomEvent( 'ode-recorder', p );\n }\n if( event && e ) {\n e.dispatchEvent(event);\n }\n }\n \n /** Format a duration in milliseconds as a human-readable string. */\n msToTime = (s: number): string => {\n s /= 1000;\n let minutes = parseInt(''+(s / 60));\n let seconds = parseInt(''+(s % 60));\n return minutes +':'+ this.pad2(seconds);\n }\n\n private pad2(val:number):string {\n return ((val < 10) ? '0':'') + val;\n }\n\n /** Format elapsedTime (in seconds) to a human-readable string. */\n time() {\n if( !this.recorder ) return \"\";\n return this.msToTime( this.recorder.elapsedTime*1000 );\n }\n\n switchPlay() {\n if( this.recorder ) {\n if( this.isPlaying ) {\n this.recorder.pause();\n } else {\n this.recorder.play();\n }\n }\n }\n\n async switchVideo(id:string) {\n const rec = this.recorder as VideoRecorder;\n await rec.switchCamera(id);\n await rec.record();\n }\n\n saveRecord() {\n this.recorder?.save();\n };\n\n redo() {\n this.recorder?.flush();\n this.recorder?.record();\n }\n\n restart() {\n const videoPlayer = document.getElementById(\"recorderWidgetVideoPlayer\");\n videoPlayer?.removeChild(videoPlayer.firstElementChild as HTMLElement)\n\n this.recorder?.flush();\n this.switchRecorder(\"video\");\n \n setTimeout( () => {\n this.recorder?.record();\n }, 100 );\n }\n\n getSaveBtnClass() {\n if( this.isEncoding || this.isUploading ) {\n return 'fas fa-spinner fa-spin';\n } else {\n return 'fas fa-save';\n }\n }\n\n getSavedStatus(status:string):boolean {\n if (status === 'saved') {\n this.displaySavedMessage = true;\n return true;\n } else {\n this.displaySavedMessage = false;\n return false;\n }\n }\n \n clean() {\n this.displaySavedMessage = false;\n this.disabledButtons = true;\n this.recorder?.flush(); // Revert to idle state\n this.selectedRecorder = \"none\";\n }\n\n constructor(\n public videoUploadService: VideoUploadService,\n public videoEventTrackerService: VideoEventTrackerService\n ){}\n}\n\ninterface Scope extends IScope {\n format?:string;\n onUpload?:Function;\n recordGuard?: VideoRecordGuardModel;\n}\n\n/* Directive */\nclass Directive implements IDirective<Scope,JQLite,IAttributes,IController[]> {\n constructor(\n private helperSvc:NgHelperService\n ) {}\n restrict = 'EA';\n\ttemplate = require(\"./recorder.directive.html\").default;\n scope = {\n format: '@?',\n onUpload: '&?'\n };\n\tcontroller = [\"odeVideoUploadService\", \"odeVideoEventTrackerService\", Controller];\n\tcontrollerAs = 'ctrl';\n\trequire = ['odeRecorder'];\n\n /**\n * Link method for the directive.\n * @see https://code.angularjs.org/1.7.9/docs/api/ng/service/$compile\n * @param $scope scope\n * @param $elem jqLite-wrapped element that this directive matches.\n * @param $attr hash object with key-value pairs of normalized attribute names and their corresponding attribute values.\n * @param controllers Array of \"require\"d controllers : [ngModelCtrl]\n */\n link(scope:Scope, elem:JQLite, attr:IAttributes, controllers?:IController[]): void {\n const ctrl:Controller|null = controllers ? controllers[0] as Controller : null;\n if( !ctrl || ! ctrl.recorder ) {\n return;\n }\n\n scope.recordGuard = new VideoRecordGuardModel();\n\n // If video is available, initialize it.\n if( ctrl.isVideoCompatible ) {\n // Detect available video capture devices\n const lang = conf().Platform.idiom;\n const backCameraChoice = {deviceId:\"environment\", label: lang.translate(\"video.back.camera\"), groupId:'', kind:'videoinput'} as MediaDeviceInfo;\n const frontCameraChoice = {deviceId:\"user\", label: lang.translate(\"video.front.camera\"), groupId:'', kind:'videoinput'} as MediaDeviceInfo;\n\n ctrl.videoUploadService.initialize()\n // First call to the API, so that the operating system ask for user's consent if needed, then enumerate video stream devices,\n .then( () => {\n return navigator.mediaDevices.enumerateDevices();\n })\n // ...Filter on video inputs only,\n .then( devices => { \n return devices.filter( device => { \n //console.debug( JSON.stringify(device) );\n return device.kind === \"videoinput\";\n })\n })\n // ...Assemble the final cameras list,\n .then( videoinputs => {\n switch( deviceType ) {\n case \"Mobile\":\n case \"Tablet\":\n if( videoinputs && videoinputs.length>1 ) {\n // This mobile/tablet has more than 1 camera \n // => we assume at least one is on the front (user) and one is on the back (environment),\n // and let the system choose the best for us.\n ctrl.videoInputDevices = [backCameraChoice, frontCameraChoice];\n } else {\n // Else we let the system use the only one that exists (or none)\n ctrl.videoInputDevices = [backCameraChoice];\n }\n break;\n default: // \"Desktop\" or other future types => list all cameras without distinction.\n ctrl.videoInputDevices = videoinputs;\n break;\n }\n })\n .catch( () => {\n console.error('[VideoController.videoInputDevices] An error occured while detecting cameras.');\n ctrl.videoInputDevices = [backCameraChoice];\n })\n .finally( () => {\n if( ctrl.videoInputDevices )\n ctrl.selectedVid = ctrl.videoInputDevices[0];\n this.helperSvc.safeApply( scope );\n });\n }\n\n ctrl.videoFactory = () => {\n const videoElem = document.createElement(\"video\");\n videoElem.setAttribute( \"style\", \"max-width:100%\" );\n videoElem.setAttribute( \"playsinline\", \"true\" );\n videoElem.setAttribute( \"autoplay\", \"\" );\n videoElem.setAttribute( \"muted\", \"\" );\n // Wait before inserting this new element in the DOM tree.\n setTimeout( () => {\n document.getElementById(\"recorderWidgetVideoPlayer\")?.appendChild( videoElem );\n }, 100 );\n\n return videoElem;\n }\n\n const timestamps = {\n startedAt: 0,\n endedAt: 0\n }\n\n // Video duration is measured in milliseconds\n ctrl.videoDurationHandler = (event:Event) => {\n if( timestamps.startedAt===0 ) {\n timestamps.startedAt = event.timeStamp;\n }\n if( ctrl.isRecording ) {\n timestamps.endedAt = event.timeStamp;\n ctrl.recorder.elapsedTime = timestamps.endedAt - timestamps.startedAt;\n\n if( ctrl.recorder.elapsedTime >= ctrl.recordMaxTime ) {\n //ctrl.switchVideoRecord();\n ctrl.recorder.suspend();\n }\n }\n this.helperSvc.safeApply( scope );\n }\n\n ctrl.recorderStatus = (status:RecorderState|'saved') => {\n switch( status ) {\n case 'recording' : {\n timestamps.endedAt = timestamps.startedAt = 0;\n\n if( scope.recordGuard )\n scope.recordGuard.hasRecorded = true;\n }\n break;\n case 'saved' : {\n if( scope.recordGuard )\n scope.recordGuard.guardObjectReset();\n \n scope.onUpload && scope.onUpload();\n ctrl.getSavedStatus(status);\n // ctrl.recorder.flush();\n // ctrl.setRecorder( \"audio\" ); // Set audio recorder so that video recorder will create its video tag again\n }\n case 'idle' : {\n if( scope.recordGuard )\n scope.recordGuard.guardObjectReset();\n }\n default: \n break;\n }\n this.helperSvc.safeApply( scope ); // Force reevaluation of the recorder's status\n }\n }\n}\n\n/**\n * The ode-recorder directive.\n *\n * Usage:\n * <ode-recorder ></ode-recorder>\n */\nexport function DirectiveFactory(helperSvc:NgHelperService) {\n\treturn new Directive(helperSvc);\n}\nDirectiveFactory.$inject = [\"odeNgHelperService\"];","import { IAttributes, IController, IDirective, IScope } from \"angular\";\nimport { APP, IWebApp, RxJS } from \"ode-ts-client\";\nimport { XitiService } from \"../../..\";\nimport { conf } from \"../../../utils\";\n\ntype AppEvent = {\n app:IWebApp,\n element:Element,\n $mutex?:boolean,\n ctrlKey:boolean, // Was CTRL key pressed ?\n metaKey: boolean // Was Command key pressed? (Apple keyboard)\n}\n\ninterface ITriggerScope extends IScope {\n connectorLightboxTrigger: IWebApp;\n}\n\n/** Global AppEvent stream, shared by every connector-lightbox[-trigger] */\nconst _onTriggerApp = new RxJS.Subject<AppEvent>();\n\n//--------------------------------------------------------------------------------\nclass TriggerDirective implements IDirective<ITriggerScope,JQLite,IAttributes> {\n//--------------------------------------------------------------------------------\n restrict= 'A';\n scope= {\n connectorLightboxTrigger: \"=\",\n };\n\n link(scope:ITriggerScope, elem:JQLite, attrs:IAttributes): void {\n elem.on('click', (event: JQuery.ClickEvent) => {\n const appEvent = {\n app: scope.connectorLightboxTrigger,\n element: elem[0],\n $mutex: false,\n ctrlKey: !!event.ctrlKey,\n metaKey: !!event.metaKey\n } as AppEvent;\n event.preventDefault();\n _onTriggerApp.next( appEvent );\n return false;\n });\n scope.$on('$destroy', () => {\n elem.off('click');\n });\n }\n}\n\n/** The connector-lightbox controller. */\n//--------------------------------------------------------------------------------\nexport class Controller {\n//--------------------------------------------------------------------------------\n // Shortcut for refreshing the view.\n\tpublic apply?:()=>void;\n\n // Set to true if check can be skipped\n skipCheck?:boolean;\n\n // Show / hide the lightbox\n display = {\n showAuthenticatedConnectorLightbox: false\n };\n\n private _currentAppEvent?:AppEvent;\n authenticatedConnectorsAccessed?:string[];\n\n onClose() {\n this.display.showAuthenticatedConnectorLightbox = false;\n }\n\n onConfirm() {\n if( ! this._currentAppEvent ) {\n return;\n }\n\n const _app = this._currentAppEvent.app;\n this.onClose();\n if (this.authenticatedConnectorsAccessed) {\n this.authenticatedConnectorsAccessed.push(_app.name);\n } else {\n this.authenticatedConnectorsAccessed = [_app.name];\n }\n\n const target = this._currentAppEvent.ctrlKey || this._currentAppEvent.metaKey ? '_blank' : !!_app.target ? _app.target : '_self';\n\n if (target !== '_self') {\n conf().User.preferences\n .update('authenticatedConnectorsAccessed', this.authenticatedConnectorsAccessed)\n .save('authenticatedConnectorsAccessed');\n this.windowOpen(_app.address, target);\n } else {\n (async () => {\n await conf().User.preferences\n .update('authenticatedConnectorsAccessed', this.authenticatedConnectorsAccessed)\n .save('authenticatedConnectorsAccessed');\n this.windowOpen(_app.address, target);\n })();\n }\n }\n\n isAuthenticatedConnector(app: IWebApp): boolean {\n return !!app.casType || (app.scope && app.scope.length > 0 && !!app.scope[0]);\n }\n\n isAuthenticatedConnectorFirstAccess(app: IWebApp): boolean {\n return !this.authenticatedConnectorsAccessed\n || (this.authenticatedConnectorsAccessed && !this.authenticatedConnectorsAccessed.includes(app.name));\n }\n\n openAppWithCheck(appEvent: AppEvent): void {\n this._currentAppEvent = appEvent;\n if(appEvent.$mutex){\n return;\n }\n appEvent.$mutex = true;\n\n // Sanity check\n const app = appEvent.app;\n if( typeof app === \"undefined\" )\n throw \"ConnectorLightbox, Controller.openAppWithCheck failed : target app is undefined\";\n \n const target = appEvent.ctrlKey || appEvent.metaKey ? '_blank' : !!app.target ? app.target : '_self';\n\n if (!this.skipCheck && this.isAuthenticatedConnector(app) && this.isAuthenticatedConnectorFirstAccess(app)) {\n //this.authenticatedConnectorClicked = app;\n this.display.showAuthenticatedConnectorLightbox = true;\n this.apply && this.apply();\n } else {\n this.windowOpen(app.address, target);\n }\n }\n\n private windowOpen(address:string, target:string) {\n if( this._currentAppEvent && this._currentAppEvent.app.isExternal ) {\n if (target == '_self') {\n /* If target is the same page, we must ensure 'window.xiti.click' method has terminated\n before opening the connector\n */\n this.xitiSvc.trackClick(this._currentAppEvent.app.name, this._currentAppEvent.element)\n .finally(() => { window.open(address, target); });\n } else {\n /* If target is a new page, Firefox would block the connector as a popup, hence we don't\n wait for 'window.xiti.click' response, which is ok because its execution cannot be\n interrupted as the connector opens in a new page\n */\n this.xitiSvc.trackClick(this._currentAppEvent.app.name, this._currentAppEvent.element)\n .finally(() => { /* the 'finally' block is necessary in order to ensure the Promise is run */});\n window.open(address, target);\n }\n } else {\n window.open(address, target);\n }\n }\n\n constructor( \n private xitiSvc:XitiService\n ) {\n }\n}\n\n/** The connector-lightbox directive. */\n//--------------------------------------------------------------------------------\nclass Directive implements IDirective<IScope,JQLite,IAttributes,IController[]> { \n//--------------------------------------------------------------------------------\n restrict= 'E';\n template = require('./connector-lightbox.directive.html').default;\n scope= {};\n\tcontroller = ['odeXiti', Controller];\n\tcontrollerAs = 'ctrl';\n require = ['connectorLightbox'];\n\n async link(scope:IScope, elem:JQLite, attrs:IAttributes, controllers?:IController[]) {\n const ctrl:Controller|null = controllers ? controllers[0] as Controller : null;\n if( !ctrl ) {\n return;\n }\n\n\t\tctrl.apply = () => {\n\t\t\tscope.$apply();\n\t\t};\n\n const sub = _onTriggerApp.subscribe((event) => {\n ctrl.openAppWithCheck(event);\n });\n scope.$on('$destroy', () => {\n sub.unsubscribe();\n });\n\n ctrl.authenticatedConnectorsAccessed = await conf().User.preferences.load('authenticatedConnectorsAccessed');\n try {\n const cf = await conf().Platform.apps.getPublicConf( APP.CAS );\n ctrl.skipCheck = !!cf.skip;\n } catch(e){\n console.warn(\"Failed to get public conf: \", e)\n }\n }\n}\n\n/** The connector-lightbox-trigger directive factory. */\nexport function TriggerDirectiveFactory() {\n\treturn new TriggerDirective();\n}\n\n/** The connector-lightbox directive factory. */\nexport function DirectiveFactory() {\n\treturn new Directive();\n}\n","import { IAttributes, IDirective, IScope } from \"angular\";\nimport { ITheme } from \"ode-ts-client\";\nimport { conf, session, http } from \"../../../utils\";\n\n/* The Help directive is tied to the old infra-front architecture, and relies on having data stored in the scope. */\n\ninterface Scope extends IScope {\n display:{read?:boolean};\n helpPath:string;\n onHelp:()=>void;\n}\n\nexport class Directive implements IDirective<Scope,JQLite,IAttributes> {\n restrict = 'E';\n template = require('./help.directive.html').default;\n scope = {};\n\n async link(scope:Scope, element:JQLite, attributes:IAttributes) {\n const skin:ITheme = conf().Platform.theme;\n const appPrefix:string|null = session().currentApp;\n if( appPrefix===null ) {\n return;\n } \n let helpPath = await skin.getHelpPath();\n let helpText:string;\n let helpErrorTitle:string;\n let helpErrorText:string;\n\n const lang = conf().Platform.idiom;\n const modalElement = $('ode-modal');\n\n scope.onHelp = function() {\n if (helpText) {\n setHtml(helpText);\n }\n else {\n http().get<string>(\n scope.helpPath,\n {queryParams:{\"index.html\": conf().Platform.deploymentTag}}\n ).then( content => {\n if( http().latestResponse.status === 404 ) {\n helpErrorTitle = lang.translate('help.notfound.title');\n helpErrorText = '<p>' + lang.translate('help.notfound.text') + '</p>';\n setErrorHTML(helpErrorTitle, helpErrorText);\n } else {\n helpText = content;\n setHtml(helpText);\n }\n scope.$apply();\n })\n }\n };\n\n // FIXME old code with jquery starts here, i won't rewrite it now.\n scope.display = {};\n scope.helpPath = helpPath + '/application/' + appPrefix + '/';\n if(appPrefix === '.' && window.location.pathname !== '/adapter') {\n scope.helpPath = helpPath + '/application/portal/';\n }\n else if(window.location.pathname === '/adapter'){\n scope.helpPath = helpPath + '/application/' + window.location.search.split('eliot=')[1].split('&')[0] + '/'\n }\n else if (window.location.pathname.includes(\"/directory/class-admin\")){\n scope.helpPath = helpPath + '/application/parametrage-de-la-classe/';\n }\n\n let helpContent, burgerMenuElement:JQuery<HTMLElement>, burgerButtonElement;\n\n const setErrorHTML = function(title:string, text:string) {\n modalElement.find('.modal-title').html(title);\n modalElement.find('.modal-body').html(text);\n scope.display.read = true;\n scope.$apply('display');\n }\n\n const setHtml = function(content:string){\n helpContent = $('<div>' + content + '</div>');\n // Swap ToC and introduction paragraphs\n helpContent.find('> p').prev().insertAfter(helpContent.find('> p'));\n helpContent.find('img').each(function(index, item){\n $(item).attr('src', scope.helpPath + \"../..\" + $(item).attr('src'));\n });\n modalElement.find('ode-modal-body > div').html(helpContent.html());\n modalElement.find('li a').on('click', function(e){\n modalElement.find('.section').slideUp();\n $('div#' + $(e.target).attr('href')?.split('#')[1]).slideDown();\n });\n modalElement.find('div.paragraph a').on('click', function(e){\n window.open($(e.target).closest('a').attr('href'), \"_newtab\" ); \n });\n modalElement.find('li a').first().click();\n\n // Activate hamburger menu on responsive\n modalElement.find('#TOC').wrap('<div id=\"burger-menu\" class=\"burger-menu\"></div>');\n burgerMenuElement = modalElement.find('#burger-menu');\n burgerMenuElement.prepend('<button id=\"burger-button\" class=\"burger-button\"><i class=\"burger-icon\"></i></button>');\n burgerButtonElement = modalElement.find('#burger-button');\n burgerButtonElement.on('click', function(e) {\n burgerMenuElement.toggleClass('active');\n }); \n modalElement.find('#TOC > ul li a').on('click', function (e) {\n burgerMenuElement.removeClass('active');\n });\n \n let bodyClick = function (event:any) {\n if (modalElement.find('#TOC > ul').find(event.target).length == 0 \n && burgerMenuElement.find(event.target).length == 0) {\n burgerMenuElement.removeClass('active');\n }\n }\n $('body').on('click', bodyClick);\n scope.$on('$destroy', function () {\n $('body').off('click', bodyClick);\n });\n // end of hamburger\n\n scope.display.read = true;\n scope.$apply('display');\n };\n }\n}\n\nexport function DirectiveFactory() {\n\treturn new Directive();\n}\n","import { IAttributes, IController, IDirective, IScope } from \"angular\";\nimport { conf } from \"../../../utils\";\n\nexport class Directive implements IDirective<IScope,JQLite,IAttributes,IController[]> {\n restrict = 'A';\n\n async link(scope:IScope, elem:JQLite, attr:IAttributes, controllers?:IController[]): Promise<void> {\n elem.attr('href', '/auth/logout?callback=' + conf().Platform.theme.logoutCallback);\n }\n}\n\nexport function DirectiveFactory() {\n\treturn new Directive();\n}","import { IAttributes, IController, IDirective, IScope } from \"angular\";\nimport { IIdiom, ITheme, IWebApp } from \"ode-ts-client\";\nimport { conf, session, http, TrackedAction, TrackedScope, TrackedActionFromWidget } from \"../../../utils\";\nimport { SessionService, NgHelperService, ThemeHelperService } from \"../../../services\";\nimport $ from \"jquery\"; // FIXME : remove jQuery dependency \n\n// Controller for the directive\nexport class Controller implements IController {\n constructor(\n\t\tpublic session:SessionService,\n\t\tpublic helperSvc: NgHelperService,\n\t\tpublic themeSvc:ThemeHelperService ) {\n\t}\n\tpublic skin?:ITheme;\n\tpublic conversationUnreadUrl?:String;\n\tpublic currentLanguage:string = \"\";\n\tpublic username:string = \"\";\n\tpublic avatar:string = \"no-avatar.svg\";\n\tpublic messagerieLink:string = '/zimbra/zimbra';\n\tpublic mysearch:string = \"\";\n\tpublic apps:IWebApp[] = [];\n\n\tpublic is1D:boolean = false;\n\tpublic is2D:boolean = false;\n\n\trefreshAvatar() {\n\t\tthis.avatar = session().avatarUrl;\n\t\tthis.username = session().description.displayName;\n\t};\n\n\topenApps(event:any){\n\t\tconst width = $(window).width()\n\t\tif( typeof width === \"number\" && width <= 700){\n\t\t\tevent.preventDefault();\n\t\t}\n\t}\n\n\tlaunchSearch(event:Event, from:string) {\n\t\tlet words = this.mysearch;\n\t\tif (from === \"key\") event.stopPropagation();\n\t\tif (from === \"button\" || (event as KeyboardEvent).keyCode == 13) {\n\t\t\t// Track this search\n\t\t\tthis.trackEvent( event, {detail:{'open':'searchengine', 'from':'search'}} );\n\t\t\t// Then search\n\t\t\twords = (!words || words === '') ? ' ' : words;\n\t\t\tthis.mysearch = \"\";\n\t\t\twindow.location.href = '/searchengine#/' + words;\n\t\t}\n\t};\n\n\tgetIconClass(app:IWebApp) {\n\t\tconst appCode = this.themeSvc.getIconCode(app);\n\t\treturn `ic-app-${appCode} color-app-${appCode}`;\n\t}\n\n // Give an opportunity to track some events from outside of this component.\n protected trackEvent(e:Event, p:CustomEventInit<TrackedAction>) {\n // Allow events to bubble up.\n if(typeof p.bubbles === \"undefined\") p.bubbles = true;\n\n\t\tlet event = new CustomEvent( \"ode-navbar\", p );\n if( event && e.currentTarget ) {\n e.currentTarget.dispatchEvent(event);\n }\n\t}\n}\n\n/*\n *\tCustomized scope for the directive.\n *\t/!\\ Required for compatibility with old portal templates. /!\\\n */\ninterface Scope extends IScope {\n\tlang?:IIdiom;\n\tnbNewMessages?:number;\n\tversion?:string;\n\tme?:{\n\t\thasWorkflow(right:string):boolean;\n\t};\n\n\tmessagerieLink?: string;\n\tgoToMessagerie?: () => void;\n\trefreshMails?: () => void;\n\trefreshAvatar?: () => void;\n}\n\n/* Directive */\nclass Directive implements IDirective<Scope,JQLite,IAttributes,IController[]> {\n restrict = 'E';\n//\treplace = true; // requires a template with a single root HTML element to work.\n\ttemplate = require('./navbar.directive.html').default;\n\tscope = {\n\t\ttitle: \"@?\"\n\t};\n\tbindToController = true;\n\tcontroller = ['odeSession', \"odeNgHelperService\", \"odeThemeHelperService\", Controller];\n\tcontrollerAs = 'ctrl';\n\trequire = ['odeNavbar'];\n\n link(scope:Scope, elem:JQLite, attrs:IAttributes, controllers?:IController[]): void {\n\t\tif( !controllers ) return;\n\t\tconst ctrl:Controller = controllers[0] as Controller;\n\t\tconst platform = conf().Platform;\n\n\t\t// Legacy code (angular templates in old format)\n\t\tscope.lang = platform.idiom;\n\t\tscope.nbNewMessages = 0;\n\t\tscope.version = platform.deploymentTag;\n\t\tscope.me = {\n\t\t\thasWorkflow(right:string):boolean {\n\t\t\t\treturn session().hasWorkflow(right);\n\t\t\t}\n\t\t};\n\t\tscope.goToMessagerie = () => {\n\t\t\tconsole.log(scope.messagerieLink);\n\t\t\t// FIXME This is the old-fashioned way of accessing preferences. Do not reproduce anymore (use ode-ts-client lib instead)\n\t\t\thttp().get('/userbook/preference/zimbra').then( data => {\n\t\t\t\ttry{\n\t\t\t\t\tif( data.preference? JSON.parse(data.preference)['modeExpert'] && scope.me?.hasWorkflow('fr.openent.zimbra.controllers.ZimbraController|preauth') : false){\n\t\t\t\t\t\t\tscope.messagerieLink = '/zimbra/preauth';\n\t\t\t\t\t\t\twindow.open(scope.messagerieLink);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tscope.messagerieLink = '/zimbra/zimbra';\n\t\t\t\t\t\t\twindow.location.href = window.location.origin + scope.messagerieLink;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tconsole.log(scope.messagerieLink);\n\t\t\t\t} catch(e) {\n\t\t\t\t\tscope.messagerieLink = '/zimbra/zimbra';\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t\tscope.refreshMails = () => {\n\t\t\tif(scope.me?.hasWorkflow('fr.openent.zimbra.controllers.ZimbraController|view')){\n\t\t\t\thttp().get('/zimbra/count/INBOX', {queryParams:{unread: true, _:new Date().getTime()}}).then( nbMessages => {\n\t\t\t\t\tscope.nbNewMessages = nbMessages.count;\n\t\t\t\t\tscope.$apply('nbNewMessages');\n\t\t\t\t});\n\t\n\t\t\t} else {\n\t\t\t\thttp().get('/conversation/count/INBOX', {queryParams:{unread: true, _:new Date().getTime()}}).then( nbMessages => {\n\t\t\t\t\tscope.nbNewMessages = nbMessages.count;\n\t\t\t\t\tscope.$apply('nbNewMessages');\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\t\tscope.refreshAvatar = () => {\n\t\t\tctrl.refreshAvatar();\n\t\t}\n\n\t\tPromise.all([\n\t\t\tctrl.session.getLanguage(),\n\t\t\tplatform.theme.onOverrideReady(),\n\t\t\tctrl.session.getBookmarks(),\n\t\t\tplatform.theme.onFullyReady() // required for getting school degree\n\t\t]).then( (values) => {\n\t\t\tctrl.skin = platform.theme;\n\t\t\tctrl.is1D = platform.theme.is1D;\n\t\t\tctrl.is2D = platform.theme.is2D;\n\t\t\tctrl.currentLanguage = values[0];\n\n\t\t\tconst overrides = values[1];\n\t\t\tif( overrides.portal ) {\n\t\t\t\tif(overrides.portal.indexOf('conversation-unread') !== -1){\n\t\t\t\t\tctrl.conversationUnreadUrl = '/assets/themes/' + platform.theme.skin + '/template/portal/conversation-unread.html?hash=' + platform.deploymentTag;\n\t\t\t\t}\n\t\t\t}\n\t\t\tctrl.refreshAvatar();\n\t\t\tscope.refreshMails && scope.refreshMails();\n\n\t\t\tctrl.apps = values[2];\n\n\t\t\tscope.$apply();\n\t\t});\n\t}\n}\n\n/** The navbar directive.\n *\n * Usage:\n * <ode-navbar title=\"Some text\"></ode-navbar>\n */\nexport function DirectiveFactory() {\n\treturn new Directive();\n}","import { IAttributes, IController, IDirective, IScope } from \"angular\";\nimport { App, USER_PREFS } from \"ode-ts-client\";\nimport { L10n, conf, notif } from \"../../../utils\"; \nimport { TrackingService } from \"../../../services\";\n\ninterface PortalScope extends IScope {\n\tapp?:App;\n\tname:string;\n\n\tgoToMyAccount: () => void;\n\tcloseBanner: () => void;\n\tshowRgpd?: Boolean;\n}\n\n/* Directive */\nclass Directive implements IDirective<PortalScope,JQLite,IAttributes,IController[]> {\n restrict = 'E';\n\ttransclude = {\n infotips: \"odeInfotips\"\n };\n\ttemplateUrl(element:JQLite, attrs:IAttributes) {\n\t\t// Load the specified template-url, or the default implementation.\n\t\treturn attrs.templateUrl ? attrs.templateUrl : require('./portal.directive.lazy.html').default;\n\t};\n\tscope = {\n\t\tapp:\"@?\",\n\t\tname:\"@\",\n\t};\n\n\tlink(scope:PortalScope, elem:JQLite, attrs:IAttributes) {\n\t\tconst preferences = conf().User.preferences;\n\n\t\tnotif().onLangReady().promise.then( lang => {\n\t\t\tL10n.initialize( lang );\n\t\t});\n\n\t\tscope.goToMyAccount = () => {\n\t\t\tdocument.location.href = '/userbook/mon-compte';\n\t\t\tpreferences.get(USER_PREFS.RGPD_COOKIES)['showInfoTip'] = false;\n\t\t\tpreferences.save(USER_PREFS.RGPD_COOKIES);\n\t\t}\n\n\t\tscope.closeBanner = () => {\n\t\t\tscope.showRgpd = false;\n\t\t\tpreferences.get(USER_PREFS.RGPD_COOKIES)['showInfoTip'] = false;\n\t\t\tpreferences.save(USER_PREFS.RGPD_COOKIES);\n\t\t}\n\n\t\t// Tracking\n\t\tif( scope.app ) {\n\t\t\tthis.tracking.trackApp( scope.app );\n\t\t}\n\t}\n\t\n\tconstructor( \n\t\tprivate tracking:TrackingService \n\t\t) {}\n\n}\n\n/** The portal directive.\n *\n * Usage:\n * <ode-portal app=\"myappkey\" name=\"My app\"></ode-portal>\n * or\n * <ode-portal template-url=\"/platform/assets/themes/....\"></ode-portal>\n */\nexport function DirectiveFactory(tracking:TrackingService) {\n\treturn new Directive(tracking);\n}\nDirectiveFactory.$inject=[\"odeTracking\"];\n","import { IAttributes, IController, IDirective, IScope } from \"angular\";\nimport { conf, session, http } from \"../../../utils\";\n\ninterface Scope extends IScope {\n banner:any;\n showBanner:boolean;\n closeBanner:()=>void;\n getCookie:()=>void;\n setCookie:(cookie_value:string, expiresInDays:number)=>void;\n init:()=>Promise<void>;\n icon:string;\n store:string;\n appRef:string;\n}\n\n/* Directive */\nclass Directive implements IDirective<Scope,JQLite,IAttributes,IController[]> {\n restrict = 'E';\n templateUrl = require('./smart-banner.directive.lazy.html').default;\n\n link(scope:Scope, elem:JQLite, attr:IAttributes, controllers?:IController[]): void {\n const skin = conf().Platform.theme;\n const me = session().user;\n\n scope.closeBanner = () => {\n scope.setCookie(\"test\",30);\n scope.showBanner = false;\n }\n \n // FIXME Déporter la gestion des cookies dans Transport ?\n scope.getCookie = () => {\n var name = \"smartBanner\" + \"=\";\n var decodedCookie = decodeURIComponent(document.cookie);\n var ca = decodedCookie.split(';');\n for(var i = 0; i <ca.length; i++) {\n var c = ca[i];\n while (c.charAt(0) == ' ') {\n c = c.substring(1);\n }\n if (c.indexOf(name) == 0) {\n return c.substring(name.length, c.length);\n }\n }\n return null;\n }\n \n // FIXME Déporter la gestion des cookies dans Transport ?\n scope.setCookie = (cvalue:string, exdays:number) => {\n var d = new Date();\n d.setTime(d.getTime() + (exdays*24*60*60*1000));\n var expires = \"expires=\"+ d.toUTCString();\n document.cookie = \"smartBanner=\" + cvalue + \";\" + expires;\n }\n\n scope.showBanner = false;\n\n scope.init = async () => {\n try {\n const data = await http().get('/conf/smartBanner').then( data => { \n //if 200 ok=> display banner\n if( http().latestResponse.status==200 && data!==null) {\n return data;\n }\n return null;\n });\n if(data != null) {\n scope.banner = data;\n const excludedTypes = scope.banner[`excludeUserTypes-${skin.skin}`] || [];\n if(excludedTypes.indexOf(me.type) != -1){\n return;\n }\n scope.showBanner = scope.getCookie() == null;\n\n const lang = conf().Platform.idiom;\n scope.icon = lang.translate(\"smartbanner.icon.uri\");\n if (scope.showBanner) {\n if (/Android/i.test(navigator.userAgent)) {\n scope.store = lang.translate(\"smartbanner.android.store\");\n scope.appRef = lang.translate(\"smartbanner.android.uri\");\n } else if (/iPhone|iPad|iPod/i.test(navigator.userAgent)) {\n scope.store = lang.translate(\"smartbanner.ios.store\");\n scope.appRef = lang.translate(\"smartbanner.ios.uri\");\n } else {\n scope.showBanner = false;\n }\n }\n }\n }catch(e){\n //dont display smart banner\n }\n }\n\n scope.init(); \n }\n}\n\n/**\n * The smartBanner directive.\n *\n * Usage:\n * <smart-banner ></smart-banner>\n */\nexport function DirectiveFactory() {\n\treturn new Directive();\n}\n","import { IAttributes, IDirective, IScope } from \"angular\";\nimport { XitiService } from \"../../../services/xiti.service\";\n\n/* Directive */\nclass Directive implements IDirective<IScope,JQLite,IAttributes> {\n restrict= 'E';\n scope= false;\n link(scope:IScope, elem:JQLite, attr:IAttributes): void {\n this.xitiSvc.runScript();\n }\n\n /* Constructor with Dependency Injection */\n constructor(private xitiSvc:XitiService) {\n }\n}\n\n/**\n * The xiti directive.\n *\n * Usage:\n * <xiti></xiti>\n */\n export function DirectiveFactory(odeXiti:XitiService) {\n\treturn new Directive(odeXiti);\n}\nDirectiveFactory.$inject = [\"odeXiti\"];\n","import { IAttributes, IController, IDirective, IScope } from \"angular\";\nimport { IProperty, IResource, PROP_KEY } from 'ode-ts-client';\n\nexport class PropsPanelController implements IController {\n constructor() {\n // Remove transpilation warnings due to the \"bindToController\", which angularjs already checks.\n this.item = null as unknown as IResource;\n }\n item:IResource;\n showTitle=false;\n showImage=false;\n showColor=false;\n showDescription=false;\n showUrl=false;\n\n}\n\n//-----------------------------------------------\n//----------------- Directive -------------------\n//-----------------------------------------------\nclass Directive implements IDirective<IScope,JQLite,IAttributes,IController[]> {\n restrict= 'E';\n templateUrl= require('./props-panel.directive.lazy.html').default;\n scope= {\n item: \"=\"\n };\n\tbindToController = true;\n\tcontroller = [\"$scope\", PropsPanelController];\n\tcontrollerAs = 'ctrl';\n\trequire = [\"odePropsPanel\"];\n\n link(scope:IScope, element:JQLite, attrs:IAttributes, controllers?:IController[]): void {\n\t\tif( !controllers ) return;\n const ctrl:PropsPanelController = controllers[0] as PropsPanelController;\n\n scope.$watch<IProperty[]>('props', function (newValue:IProperty[], oldValue:IProperty[]) {\n if( newValue && newValue.length > 0 && newValue!==oldValue ) {\n newValue.forEach( p => {\n switch(p.key) {\n case PROP_KEY.COLOR: ctrl.showColor=true; break;\n case PROP_KEY.DESCRIPTION: ctrl.showDescription=true; break;\n case PROP_KEY.IMAGE: ctrl.showImage=true; break;\n case PROP_KEY.TITLE: ctrl.showTitle=true; break;\n case PROP_KEY.URL: ctrl.showUrl=true; break;\n }\n });\n }\n });\n\n }\n}\n\n/** The props-panel directive.\n *\n * Usage:\n * <props-panel item=\"IResource\" props=\"Array<IProperty>\"></props-panel>\n */\n export function DirectiveFactory() {\n\treturn new Directive();\n}\n","import * as Explorer from '../explorer/explorer.directive';\nimport { IAttributes, IController, IDirective, IScope } from \"angular\";\nimport { IBehaviours } from \"../../../legacy/Behaviours\";\nimport { HttpPromisified } from \"../../../legacy/http\";\nimport { Idiom } from \"../../../legacy/idiom\";\nimport { Shareable, ShareVisible, SharePayload, ShareInfos, ShareAction } from \"../../../legacy/rights\";\nimport { UiModel } from \"../../../models/ui.model\";\nimport { NotifyService } from '../../../services/notify.service';\n\n// FIXME legacy stuff\nexport const appPrefix: string = (window as any).appPrefix;\nexport const infraPrefix: string = (window as any).infraPrefix;\ndeclare const model:{\n\tme: any;\n calendar: any;\n videoRecorder: any;\n widgets: any;\n\tmediaLibrary: any;\n\tbootstrapped: boolean;\n};\ndeclare namespace entcore {\n let Behaviours: IBehaviours;\n let idiom:Idiom;\n let ui: any;\n let httpPromisy: <T>(inner?: any) => HttpPromisified<T>;\n};\n\n\nexport interface ShareCloseDelegate {\n $canceled: boolean\n $close: () => void\n}\n\nexport interface ShareableWithId extends Shareable {\n _id: string\n}\n\ntype tofix = void; //TODO\ntype InnerShareData = { users:{ visibles:any[] }; groups:{ visibles:any[] } };\n\n\nexport class SharePanelController implements IController {\n //------------------\n //-- Properties\n display: {\n showSaveSharebookmarkInput: boolean,\n sharebookmarkSaved: boolean,\n workflowAllowSharebookmarks: boolean,\n showCloseConfirmation: boolean,\n showBookmarkMembers: boolean,\n search: {\n processing: Boolean\n }\n } = {\n showSaveSharebookmarkInput: false,\n sharebookmarkSaved: false,\n workflowAllowSharebookmarks: false,\n showCloseConfirmation: false,\n showBookmarkMembers: false,\n search: {\n processing: false\n }\n };\n sharing: {\n actions?: ShareAction[]\n } = {};\n varyingRights: boolean|undefined;\n varyingRightsI18nKey: string|undefined;\n editResources: Shareable[] = [];\n sharingModel: ShareInfos & { edited: any[], editedInherited: any[], changed?: boolean, sharebookmarks?: any } = {\n edited: [],\n editedInherited: [],\n changed: false\n } as any; // FIXME ShareInfos default values ?\n appPrefix: string = appPrefix;\n shareTable: string = \"\";\n resources: Array<ShareableWithId> = [];\n maxResults: number = 5;\n translate?:Function;\n actions: ShareAction[]|undefined;\n search: string = \"\";\n found: ShareVisible[] = [];\n maxEdit: number = 3;\n shareOverrideDefaultActions: string[]|undefined;\n newSharebookmarkName:string = \"\"; //FIXME appararait dans le template, mais j'ai dû le déclarer ici car n'existe pas sinon !? voir infra-front.\n\n //------------------\n //-- Constructor\n constructor( private $scope:IDirectiveScope, private notify:NotifyService ) {\n // Remove transpilation warnings due to the \"bindToController\", which angularjs already checks.\n this.model = null as unknown as UiModel;\n }\n\n //------------------\n //-- Bound attributes\n model: UiModel;\n autoClose?: boolean;\n onValidate?(args: {\n $data: SharePayload,\n $resource: ShareableWithId,\n $actions: ShareAction[]\n }):tofix;\n canEditDelegate?(args: {\n $item: { type: string, id: string }\n }): boolean;\n confirmationCloseDelegate?(args: ShareCloseDelegate):tofix;\n closeDelegate?(args: ShareCloseDelegate):tofix;\n onCancel?():tofix;\n onSubmit?(args: { $shared: SharePayload }):tofix;\n onFeed?(args: {\n $data: ShareInfos,\n $resource: ShareableWithId,\n $actions: ShareAction[]\n }):tofix;\n\n //------------------\n //-- Initialization\n /* this.model is null here. */\n $onInit() {\n this.translate = entcore.idiom.translate;\n this.shareTable = require('./share-panel-table.lazy.html').default;\n\n this.loadDirectoryWorkflow();\n\n // get sharing configuration from platform\n // if no sharing configuration from platform then get sharing configuration from app behaviours\n entcore.httpPromisy<{overrideDefaultActions:Array<string>}>()\n .get(`${this.appPrefix}/config/share`)\n .then( config => {\n if (config && config.overrideDefaultActions) {\n this.shareOverrideDefaultActions = config.overrideDefaultActions;\n } else {\n this.loadAppBehavioursSharingConf();\n }\n })\n .catch( () => {\n this.loadAppBehavioursSharingConf();\n });\n }\n /* this.model is not null here. */\n $postLink() {\n if( this.model.app ) {\n this.appPrefix = this.model.app;\n }\n // Sanitize the injected \"resources\" data => adapt it to Array<ShareableWithId>\n this.resources = this.model.selectedItems.map( i => Object.assign({\n _id:i.id, \n owner:{userId:i.authorId, displayName:i.authorName}, \n myRights: {},\n shared: {}\n }, i) );\n let tmp = this.resources as Object;\n if (!(tmp instanceof Array || tmp.hasOwnProperty(\"myRights\"))) {\n throw new TypeError('Resources in share panel must be instance of Array or implement Rights interface');\n }\n if (!(tmp instanceof Array)) {\n this.resources = [tmp as ShareableWithId];\n }\n\n entcore.httpPromisy<any>().get('/' + infraPrefix + '/public/json/sharing-rights.json').then( (config:{}) => {\n this.actionsConfiguration = config;\n });\n }\n\n //------------------\n //-- Methods\n /** get directory workflow to manage allowSharebookmarks workflow */\n private async loadDirectoryWorkflow() {\n await model.me.workflow.load(['directory']);\n this.display.workflowAllowSharebookmarks = model.me.workflow.directory.allowSharebookmarks;\n this.$scope.$apply();\n }\n \n private loadAppBehavioursSharingConf() {\n entcore.Behaviours.loadBehaviours(this.appPrefix, () => {\n if (entcore.Behaviours.applicationsBehaviours[this.appPrefix] \n && entcore.Behaviours.applicationsBehaviours[this.appPrefix].share\n && typeof entcore.Behaviours.applicationsBehaviours[this.appPrefix].share === \"function\") {\n this.shareOverrideDefaultActions = entcore.Behaviours.applicationsBehaviours[this.appPrefix].share().overrideDefaultActions;\n }\n });\n }\n\n canEdit(item: { type: string, id: string }): boolean {\n if (this.canEditDelegate) {\n return this.canEditDelegate({ $item: item });\n }\n return true;\n }\n\n isSubmitDisabled(): boolean {\n if( ! this.actions ) {\n return true;\n }\n let hasUnchecked = false;\n for (let item of this.sharingModel.edited) {\n let allUnckecked = true;\n for (let a of this.actions) {\n if (item.actions[a.displayName]) {\n allUnckecked = false;\n }\n }\n if (allUnckecked) {\n hasUnchecked = true;\n }\n }\n const hasNotChanged = !this.sharingModel.changed;\n return hasNotChanged || hasUnchecked;\n }\n\n createSharebookmark(newSharebookmarkName: string):void {\n if (model.me.workflow.directory.allowSharebookmarks == true) {\n let members:Array<string> = [];\n this.sharingModel.edited.forEach(item => {\n if (item.type == 'user' || item.type == 'group') {\n members.push(item.id);\n } else { // if it is a sharebookmark\n if (item.users) {\n item.users.forEach((user: { id: string; }) => members.push(user.id));\n }\n if (item.groups) {\n item.groups.forEach((group: { id: string; }) => members.push(group.id));\n }\n }\n })\n let data = {\n \"name\": newSharebookmarkName,\n \"members\": members\n };\n\n entcore.httpPromisy<void>().postJson('/directory/sharebookmark', data).then( () => {\n this.display.sharebookmarkSaved = true;\n this.$scope.$apply();\n });\n }\n }\n typeSort(value: any):number {\n if (value.type == 'sharebookmark') return 0;\n if (value.type == 'group') return 1;\n return 2;\n }\n remove(element: ShareVisible):void {\n this.sharingModel.edited = this.sharingModel.edited.filter( item => {\n return item.id !== element.id;\n });\n this.sharingModel.changed = true;\n this.display.showSaveSharebookmarkInput = false;\n this.display.sharebookmarkSaved = false\n }\n displayMore():void{\n const displayMoreInc = 5;\n this.maxEdit += displayMoreInc;\n }\n\n private requiredActions(item:{ actions:{ [x: string]:any; }; }, action:ShareAction) {\n if (!item.actions[action.displayName]) {\n this.actions?.filter( i => {\n return (i.requires?.findIndex( (dependency:string) => {\n return action.displayName.split('.')[1].indexOf(dependency) !== -1;\n }) ?? -1) !== -1;\n })\n .forEach( i => {\n if (i) {\n item.actions[i.displayName] = false;\n }\n })\n } else {\n action.requires?.forEach( (required:string) => {\n const action = this.actions?.find( action => {\n return action.displayName.split('.')[1].indexOf(required) !== -1;\n });\n if (action) {\n item.actions[action.displayName] = true;\n }\n });\n }\n }\n\n changeAction(\n item: { \n type:string; \n users: {\n actions:{ [x: string]:any; }; \n }[]; \n actions: { [x: string]: any; }; \n groups: {\n actions: { [x: string]: any; }; \n }[]; \n id: any;\n hide: boolean; \n },\n action: ShareAction):void {\n if (item.type == 'sharebookmark') {\n item.users.forEach((user: { actions: { [x: string]: any; }; }) => {\n user.actions[action.displayName] = item.actions[action.displayName];\n this.requiredActions(user, action);\n });\n item.groups.forEach((group: { actions: { [x: string]: any; }; }) => {\n group.actions[action.displayName] = item.actions[action.displayName];\n this.requiredActions(group, action);\n });\n }\n if (item.type == 'sharebookmark-user' || item.type == 'sharebookmark-group') {\n var element = this.sharingModel.edited.find(edited => edited.id == item.id);\n if (element) {\n element.actions = item.actions;\n element.hide = true;\n } else {\n item.hide = true;\n this.sharingModel.edited.push(item);\n }\n }\n this.requiredActions(item, action);\n this.sharingModel.changed = true;\n }\n\n private actionToRights(action:string):Array<string> {\n const rights:Array<string> = [];\n this.actions?.filter(a => a.displayName===action).forEach( item => {\n item.name.forEach( name => {\n rights.push(name);\n });\n });\n return rights;\n }\n\n private rightsToActions(rights:Array<string>):{[key:string]:boolean} {\n var actions:{[key:string]:boolean} = {};\n rights.forEach( right => {\n const action = this.actions?.find( action => {\n return action.name.indexOf(right) !== -1\n });\n if (!action) {\n return;\n }\n if (!actions[action.displayName]) { //FIXME intérêt de ce test avant affectation de true ? Combiner avec le if précédent pour une meilleure lisibilité.\n actions[action.displayName] = true;\n }\n });\n return actions;\n }\n\n async share() {\n this.sharingModel.changed = false;\n\n const data: SharePayload = {};\n const users: { [key: string]: string[] } = {};\n const groups: { [key: string]: string[] } = {};\n const sharebookmarks: { [key: string]: string[] } = {};\n\n this.sharingModel.edited.forEach( item => {\n let rights:Array<string> = [];\n for (let action in item.actions) {\n if (item.actions.hasOwnProperty(action)\n && item.actions[action] == true) {\n rights = rights.concat( this.actionToRights(action) );\n }\n }\n if (item.type == 'sharebookmark') {\n sharebookmarks[item.id] = rights;\n } else if (item.type == 'user' || item.type == 'sharebookmark-user') {\n users[item.id] = rights;\n } else {\n groups[item.id] = rights;\n }\n });\n\n data['users'] = users;\n data['groups'] = groups;\n data['bookmarks'] = sharebookmarks;\n\n const promises = (this.resources as Array<ShareableWithId>).map( async resource => {\n // if user can share resource => add user to share users array\n if (resource.myRights\n && (resource.myRights['share'] != undefined\n || resource.myRights['manage'] != undefined\n || resource.myRights['manager'] != undefined)\n && resource.shared) {\n let rights: string[] = [];\n let myRights = resource.shared.find((sharedItem: { userId: any; }) => sharedItem.userId == model.me.userId);\n\n if (myRights) {\n Object.keys(myRights).forEach(key => {\n if (myRights[key] == true && key != 'userId') {\n rights.push(key);\n }\n });\n\n users[model.me.userId] = rights;\n data['users'] = users;\n }\n }\n if (this.onValidate && typeof this.actions!==\"undefined\") {\n try {\n await this.onValidate({ '$data':data, '$resource':resource, '$actions':this.actions })\n } catch (e) {\n return Promise.reject(e);\n }\n }\n const self = this;\n return entcore.httpPromisy<{ [x: string]: any; }>()\n .putJson('/' + this.appPrefix + '/share/resource/' + resource._id, data)\n .then( res => {\n self.$scope.$root.$broadcast('share-updated', res['notify-timeline-array']);\n });\n });\n try {\n await Promise.all(promises);\n this.notify.success('share.notify.success');\n } catch (e) {\n this.notify.error('share.notify.error');\n }\n if (this.autoClose && this.$scope.closePanel) {\n await this.$scope.closePanel(false);\n }\n this.onSubmit && this.onSubmit({ '$shared': data });\n }\n\n private usersCache:{[key:string]:any} = {};\n\n findUserOrGroup():any {\n var searchTerm = entcore.idiom.removeAccents(this.search).toLowerCase();\n var startSearch = model.me.functions.ADMIN_LOCAL ? searchTerm.substr(0, 3) : '';\n if (!this.usersCache[startSearch] && !(this.usersCache[startSearch] && this.usersCache[startSearch].loading)) {\n this.usersCache[startSearch] = { loading: true };\n var id = this.resources[0]._id;\n var path = '/' + this.appPrefix + '/share/json/' + id + '?search=' + startSearch;\n if (!startSearch) {\n path = '/' + this.appPrefix + '/share/json/' + id;\n }\n entcore.httpPromisy<InnerShareData>().get(path).then( (data:InnerShareData) => {\n data.users.visibles.map((user: { type: string; }) => user.type = 'user');\n data.groups.visibles.map((group: { type: string; }) => group.type = 'group');\n\n this.usersCache[startSearch] = { groups: data.groups, users: data.users };\n this.sharingModel.groups = this.usersCache[startSearch].groups;\n this.sharingModel.users = this.usersCache[startSearch].users;\n\n if (model.me.workflow.directory.allowSharebookmarks == true) {\n entcore.httpPromisy().get('/directory/sharebookmark/all').then( (data:any) => {\n var bookmarks = data.map( (bookmark:{ type:string; }) => {\n bookmark.type = 'sharebookmark';\n return bookmark;\n });\n this.usersCache[startSearch]['sharebookmarks'] = bookmarks;\n\n this.findUserOrGroup();\n this.$scope.$apply();\n });\n } else {\n this.findUserOrGroup();\n this.$scope.$apply();\n }\n });\n return;\n }\n this.sharingModel.groups = this.usersCache[startSearch].groups;\n this.sharingModel.users = this.usersCache[startSearch].users;\n this.sharingModel.sharebookmarks = this.usersCache[startSearch].sharebookmarks;\n\n const array1 = this.sharingModel.sharebookmarks?.filter( (bookmark: { name: any; id: any; }) => {\n var testName = entcore.idiom.removeAccents(bookmark.name).toLowerCase();\n return testName.indexOf(searchTerm) !== -1 && this.sharingModel.edited.find((i: { id: any; }) => i.id === bookmark.id) === undefined;\n }) ?? [];\n const array2 = this.sharingModel.groups?.visibles?.filter( (group: { name: any; id: any; }) => {\n var testName = entcore.idiom.removeAccents(group.name).toLowerCase();\n return testName.indexOf(searchTerm) !== -1 && this.sharingModel.edited.find((i: { id: any; }) => i.id === group.id) === undefined;\n }) ?? [];\n const array3 = this.sharingModel.users?.visibles?.filter( (user:any) => { //FIXME any hack\n var testName = entcore.idiom.removeAccents(user.lastName + ' ' + user.firstName).toLowerCase();\n var testNameReversed = entcore.idiom.removeAccents(user.firstName + ' ' + user.lastName).toLowerCase();\n var testUsername = entcore.idiom.removeAccents(user.username).toLowerCase();\n return (testName.indexOf(searchTerm) !== -1 || testNameReversed.indexOf(searchTerm) !== -1) || testUsername.indexOf(searchTerm) !== -1 && this.sharingModel.edited.find((i: { id: any; }) => i.id === user.id) === undefined;\n }) ?? [];\n // Concatene arrays and remove duplicates within it.\n this.found = [...array1, ...array2, ...array3].filter( (thing, index, self) =>\n index === self.findIndex( t => t===thing )\n );\n this.found = this.found.filter( (element: { id: any; }) => {\n return this.sharingModel.edited.findIndex((i: { id: any; }) => i.id === element.id) === -1;\n });\n\n this.display.search.processing = false;\n this.$scope.$apply();\n }\n\n addResults():void {\n this.maxResults += 5;\n }\n\n // config cache\n private actionsConfiguration:{[key:string]:any} = {};\n\n addEdit(item: ShareVisible):void {\n let augmentedItem:any = item; // FIXME data hack\n item.actions = {};\n this.sharingModel.edited.push(item);\n augmentedItem.index = this.sharingModel.edited.length;\n var addedIndex = this.found.indexOf(item);\n this.found.splice(addedIndex, 1);\n\n let defaultActions:Array<any> = [];\n this.actions?.forEach( action => {\n var actionId = action.displayName.split('.')[1];\n\n if (this.shareOverrideDefaultActions) {\n this.shareOverrideDefaultActions.forEach(shareOverrideDefaultAction => item.actions[shareOverrideDefaultAction] = true);\n defaultActions = this.shareOverrideDefaultActions;\n } else if (this.actionsConfiguration[actionId].default) {\n item.actions[action.displayName] = true;\n defaultActions.push(action);\n }\n });\n\n if (augmentedItem.type == 'sharebookmark') {\n entcore.httpPromisy<{users:any; groups:any;}>().get('/directory/sharebookmark/' + item.id).then( (data:{users:any; groups:any;}) => {\n augmentedItem.users = data.users;\n augmentedItem.groups = data.groups;\n if (augmentedItem.users) {\n augmentedItem.users.forEach((user: { type: string; actions: { [x: string]: boolean; }; }) => {\n user.type = 'sharebookmark-user';\n user.actions = {};\n defaultActions.forEach(defaultAction => {\n user.actions[defaultAction] = true;\n });\n });\n }\n\n if (augmentedItem.groups) {\n augmentedItem.groups.forEach((group: { type: string; actions: { [x: string]: boolean; }; }) => {\n group.type = 'sharebookmark-group';\n group.actions = {};\n defaultActions.forEach(defaultAction => {\n group.actions[defaultAction] = true;\n });\n });\n }\n this.$scope.$apply();\n });\n }\n\n this.sharingModel.changed = true;\n this.display.showSaveSharebookmarkInput = false;\n this.display.sharebookmarkSaved = false\n }\n\n setActions( actions:Array<ShareAction> ) {\n this.actions = actions;\n this.actions.forEach( (action:ShareAction) => {\n var actionId = action.displayName.split('.')[1];\n if (this.actionsConfiguration[actionId]) {\n action.priority = this.actionsConfiguration[actionId].priority;\n action.requires = this.actionsConfiguration[actionId].requires;\n }\n });\n }\n\n clearSearch():void {\n this.sharingModel.groups = [] as any;\n this.sharingModel.users = [] as any;\n this.found = [];\n }\n\n canShowMore(): boolean {\n let count = 0;\n if (this.sharingModel.edited && this.sharingModel.edited.length) {\n count += this.sharingModel.edited.length;\n }\n if (this.sharingModel.editedInherited && this.sharingModel.editedInherited.length) {\n count += this.sharingModel.editedInherited.length;\n }\n return count > this.maxEdit;\n }\n\n getColor(profile?:string|Array<string>): string|undefined {\n return entcore.ui.profileColors.match(profile);\n }\n\n private differentRights(model1:any, model2:any) { // FIXME any hack\n var result = false;\n function different(type: string) {\n for (var element in model1[type].checked) {\n if (!model2[type].checked[element]) {\n return true;\n }\n model1[type].checked[element].forEach(function (right: any) {\n result = result || model2[type].checked[element].indexOf(right) === -1\n });\n }\n return result;\n }\n return different('users') || different('groups');\n }\n\n private onFeedEvent(data:ShareInfos, resource: ShareableWithId, actions: ShareAction[]) {\n if (this.onFeed) {\n this.onFeed({ '$data':data, '$resource': resource, '$actions': actions });\n }\n }\n\n private feeding = false;\n feedData() {\n if (this.feeding) {\n return;\n }\n this.feeding = true;\n let initModel = true;\n if (this.resources?.length === 0) {\n this.feeding = false;\n }\n this.resources.forEach( resource => {\n var id = resource._id;\n entcore.httpPromisy<ShareInfos>().get('/' + this.appPrefix + '/share/json/' + id + '?search=').then( (data:ShareInfos) => {\n this.onFeedEvent(data, resource, data.actions);\n if (initModel) {\n data.users.visibles.map((user:any) => user.type = 'user');\n data.groups.visibles.map((group:any) => group.type = 'group');\n\n this.sharingModel = data as any; //FIXME data hack\n this.sharingModel.edited = [];//FIXME data hack\n this.sharingModel.editedInherited = [];//FIXME data hack\n }\n\n (data as any)._id = resource._id;//FIXME data hack\n this.editResources.push(data as unknown as Shareable);//FIXME data hack\n\n const editResource:any = this.editResources[this.editResources.length - 1];//FIXME any hack\n if (!this.sharing.actions) {\n this.setActions(data.actions);\n }\n\n const addToEdit = (type: 'groups'|'users') => {\n for (let element in editResource[type].checked) {\n const rights = editResource[type].checked[element];\n\n const groupActions = this.rightsToActions(rights);\n const elementObjOriginal = (editResource[type].visibles as Array<ShareVisible>).find( i => i.id===element );\n if (elementObjOriginal) {\n const elementObj = { ...elementObjOriginal };\n elementObj.actions = groupActions;\n if (initModel) {\n this.sharingModel.edited.push(elementObj);\n }\n\n (elementObj as any).index = this.sharingModel.edited.length;\n }\n }\n //inherit checked //TODO factoriser avec le bloc de code ci-dessus\n if (editResource[type].checkedInherited) {\n const checkedInherited = editResource[type].checkedInherited;\n for (let element in checkedInherited) {\n const rights = checkedInherited[element];\n\n const groupActions = this.rightsToActions(rights);\n const elementObjOriginal = (editResource[type].visibles as Array<ShareVisible>).find( i => i.id===element);\n if (elementObjOriginal) {\n const elementObj = { ...elementObjOriginal };\n elementObj.actions = groupActions;\n if (initModel) {\n this.sharingModel.editedInherited.push(elementObj);\n }\n (elementObj as any).index = this.sharingModel.editedInherited.length; //FIXME data hack\n }\n }\n }\n }\n\n addToEdit('groups');\n addToEdit('users');\n\n if (!initModel) {\n if (this.differentRights(editResource, this.sharingModel) || this.differentRights(this.sharingModel, editResource)) {\n this.varyingRights = true;\n this.sharingModel.edited = [];\n this.varyingRightsI18nKey =\n entcore.idiom.translate(`${this.appPrefix}.share.varyingrights`) === `${this.appPrefix}.share.varyingrights`\n ? \"share.varyingrights\"\n : `${this.appPrefix}.share.varyingrights`\n }\n }\n initModel = false;\n\n this.$scope.$apply('sharingModel.edited');\n this.feeding = false;\n });\n })\n };\n\n\n}\n\n//-----------------------------------------------\n//----------------- Directive -------------------\n//-----------------------------------------------\ninterface IDirectiveScope extends IScope {\n closePanel?(cancelled:boolean):Promise<void>;\n revertClose?():void;\n}\nclass Directive implements IDirective<IDirectiveScope,JQLite,IAttributes,IController[]> {\n restrict= 'E';\n templateUrl= require('./share-panel.directive.lazy.html').default;\n scope= {\n onCancel: '&?',\n onSubmit: '&?',\n onValidate: '&?',\n onFeed: '&?',\n closeDelegate: '&?',\n confirmationCloseDelegate: '&?',\n canEditDelegate: '&?',\n autoClose: '='\n };\n\tbindToController = true;\n\tcontroller = [\"$scope\", \"odeNotify\", SharePanelController];\n\tcontrollerAs = 'ctrl';\n\trequire = [\"odeSharePanel\", \"^^odeExplorer\"];\n\n link(scope:IDirectiveScope, element:JQLite, attrs:IAttributes, controllers?:IController[]): void {\n\t\tif( !controllers ) return;\n const ctrl:SharePanelController = controllers[0] as SharePanelController;\n const odeExplorer:Explorer.Controller = controllers[1] as Explorer.Controller;\n ctrl.model = odeExplorer.model;\n\n scope.$watch('resources', function () {\n ctrl.actions = [];\n ctrl.sharingModel.edited = [];\n ctrl.search = '';\n ctrl.found = [];\n ctrl.varyingRights = false;\n ctrl.sharingModel.changed = false;\n ctrl.display.showSaveSharebookmarkInput = false;\n ctrl.display.sharebookmarkSaved = false;\n ctrl.maxEdit = 3;\n ctrl.maxResults = 5;\n ctrl.feedData();\n });\n\n scope.$watchCollection('resources', function () {\n ctrl.actions = [];\n ctrl.sharingModel.edited = [];\n ctrl.search = '';\n ctrl.found = [];\n ctrl.varyingRights = false;\n ctrl.sharingModel.changed = false;\n ctrl.display.showSaveSharebookmarkInput = false;\n ctrl.display.sharebookmarkSaved = false;\n ctrl.maxEdit = 3;\n ctrl.maxResults = 5;\n ctrl.feedData();\n });\n\n const doClose = async () => {\n /* TODO Gérer la fermeture de la modal, sans jquery\n element.closest('.lightbox').first().fadeOut();\n $('body').css({ overflow: 'auto' });\n $('body').removeClass('lightbox-opened');\n element.closest('.lightbox').find('.content > .close-lightbox').css({ visibility: 'visible' });\n\n const isolatedScope = element.closest('lightbox').isolateScope();\n if (isolatedScope) {\n isolatedScope.$eval(isolatedScope.onClose);\n isolatedScope.show = false;\n isolatedScope.$parent.$apply();\n }\n */\n ctrl.display.showCloseConfirmation = false;\n await ctrl.feedData();\n\n scope.$apply();\n }\n\n scope.closePanel = async (cancelled:boolean = true) => {\n if (ctrl.closeDelegate) {\n ctrl.closeDelegate({ \"$canceled\": cancelled, \"$close\": doClose })\n } else {\n await doClose()\n }\n if (cancelled) {\n ctrl.onCancel && ctrl.onCancel();\n }\n }\n \n scope.revertClose = () => {\n /* TODO Gérer la fermeture de la modal, sans jquery\n element.closest('.lightbox').find('.content > .close-lightbox').css({ visibility: 'visible' });\n */\n ctrl.display.showCloseConfirmation = false;\n scope.$apply();\n }\n \n const closeCallback = function (e: { stopPropagation: () => void; }) {\n e.stopPropagation();\n if (!ctrl.sharingModel.changed && scope.closePanel)\n scope.closePanel(true);\n else if (!ctrl.display.showCloseConfirmation) {\n if (ctrl.confirmationCloseDelegate) {\n ctrl.confirmationCloseDelegate({ \"$canceled\": true, \"$close\": doClose })\n return;\n }\n ctrl.display.showCloseConfirmation = true;\n /* TODO Gérer la fermeture de la modal, sans jquery\n element.closest('.lightbox').find('.content > .close-lightbox').css({ visibility: 'hidden' });\n */\n scope.$apply(); // FIXME ce $apply() parait redondant avec celui ci-dessous.\n }\n scope.$apply();\n };\n\n /* TODO Gérer la fermeture de la modal, sans jquery\n element.closest('.lightbox').find('.background, .content > .close-lightbox').on('click', closeCallback);\n //unbind event\n scope.$on(\"$destroy\", function () {\n element.closest('.lightbox').find('.background, .content > .close-lightbox').off('click', closeCallback)\n });\n */\n }\n}\n\n/** The share-panel directive.\n *\n * Usage:\n * \n */\n export function DirectiveFactory() {\n\treturn new Directive();\n}\n","import { IAttributes, IController, IDirective, IScope } from \"angular\";\nimport { ThemeHelperService } from \"../../../services/theme-helper.service\";\n\nexport class Directive implements IDirective<IScope,JQLite,IAttributes,IController[]> {\n\trestrict = 'A';\n\n\tlink($scope:IScope, $element:JQLite, $attributes:IAttributes, controllers?:IController[]) {\n\t\t$attributes.$observe('skinSrc', () => {\n\t\t\t$element.attr('src', this.helperSvc.toSkinUrl($attributes.skinSrc) );\n\t\t});\n\t}\n\n\tconstructor( \n\t\tprivate helperSvc:ThemeHelperService\n\t) {}\n}\n\nexport function DirectiveFactory(odeThemeHelperService:ThemeHelperService) {\n\treturn new Directive(odeThemeHelperService);\n}\nDirectiveFactory.$inject=[\"odeThemeHelperService\"];\n","import { IAttributes, IController, IDirective, IScope } from \"angular\";\nimport { ConfigurationFrameworkFactory } from \"ode-ts-client\";\nimport { ThemeHelperService } from \"../../../services/theme-helper.service\";\n\nexport class Directive implements IDirective<IScope,JQLite,IAttributes,IController[]> {\n restrict = 'EA';\n\n async link(scope:IScope, elem:JQLite, attr:IAttributes, controllers?:IController[]): Promise<void> {\n const theme = ConfigurationFrameworkFactory.instance().Platform.theme;\n const conf = await theme.getConf();\n await theme.onSkinReady();\n const themeName = theme.themeName;\n const skinName = theme.skinName;\n let url = theme.themeUrl;\n for(let theme of conf.overriding){\n //replace theme by bootstrap version\n if(theme.child===themeName && theme.bootstrapVersion){\n url = `${this.helperSvc.CDN}/assets/themes/${theme.bootstrapVersion}/skins/${skinName}/`;\n elem.addClass(theme.bootstrapVersion);//add class at root=>wrapped theme\n //this.helperSvc.loadOldWrappedTheme(theme.child, skinName); // NOTE 2021-08-31 old wrapped theme support removed, finally\n this.helperSvc.loadThemeJs(theme.bootstrapVersion);\n break;\n }\n }\n this.helperSvc.applyStyle(url);\n }\n\n constructor( \n private helperSvc:ThemeHelperService\n ) {}\n}\n\nexport function DirectiveFactory(odeThemeHelperService:ThemeHelperService) {\n\treturn new Directive(odeThemeHelperService);\n}\nDirectiveFactory.$inject=[\"odeThemeHelperService\"];","import * as Explorer from '../explorer/explorer.directive';\nimport { IAttributes, IController, IDirective, IScope } from \"angular\";\nimport { ACTION, IAction, IProperty, IResource } from \"ode-ts-client\";\nimport { UiModel } from \"../../../models/ui.model\";\nimport { NotifyService } from '../../../services/notify.service';\n\n/* Controller for the directive */\nexport class Controller implements IController {\n\tconstructor( private $scope:IScope, private notify:NotifyService ) {\n // Remove transpilation warnings due to the \"bindToController\", which angularjs already checks.\n this.model = null as unknown as UiModel;\n\n\t\t// Following actions are not displayed in the toaster.\n\t\t// TODO Could be done in CSS\n\t\tthis.actionFilter[ACTION.INITIALIZE]= true;\n\t\tthis.actionFilter[ACTION.SEARCH]\t= true;\n\t\tthis.actionFilter[ACTION.UPD_PROPS] = true;\n\n\t\t// Following actions have mobile-mode css specificities.\n\t\t// TODO Could be done in CSS\n\t\tthis.mobileFilter[ACTION.OPEN]\t\t= true;\n\t\tthis.mobileFilter[ACTION.EXPORT]\t= true;\n\t\tthis.mobileFilter[ACTION.COMMENT]\t= true;\n\t\tthis.mobileFilter[ACTION.PRINT]\t\t= true;\n\t\tthis.mobileFilter[ACTION.PUBLISH]\t= true;\n\t}\n model: UiModel;\n\tprivate actionFilter:{[actionId:string]:boolean} = {};\n\tprivate mobileFilter:{[actionId:string]:boolean} = {};\n\n\t/** Flag to show/hide the properties modal. */\n\tshowProps:boolean = false;\n\t/** Flag to show/hide the sharing modal. */\n\tshowShares:boolean = false;\n\tprops?:IProperty[];\n\titems?:IResource[];\n\n getClass( action:IAction ):{[classname:string]: boolean} {\n\t\treturn {\n\t\t\t\"d-none\": this.model.selectedFolders.length===0 && this.model.selectedItems.length===0\n\t\t};\n\t}\n\n getActionClass( action:IAction ):{[classname:string]: boolean} {\n\t\tlet ret:{[classname:string]: boolean} = {\n\t\t\t\"d-none\": this.actionFilter[action.id]===true,\n \"d-mobile-none\": this.mobileFilter[action.id]===true\n\t\t};\n\t\tret[`ode-action-${action.id}`] = true;\n return ret;\n }\n\n\tgetI18nKey( action:IAction ): string {\n\t\treturn `explorer.toaster.btn.${action.id}.label`;\n\t}\n\n\t/**\n\t * Visibility rules for the action buttons.\n\t * @param action action to check\n\t * @returns true if the action button must be visible\n\t */\n\tisActivable( action:IAction ):boolean {\n\t\tconst onlyOneItemSelected = this.model.selectedItems.length===1 && this.model.selectedFolders.length===0;\n\t\tswitch( action.id ) {\n\t\t\tcase ACTION.OPEN: return onlyOneItemSelected;\n\t\t\tcase ACTION.SHARE: return onlyOneItemSelected;\n\t\t\tcase ACTION.MANAGE: return onlyOneItemSelected;\n\t\t\tdefault: return true;\n\t\t}\n\t}\n\n\tactivate( action:IAction ) {\n\t\tif( !action?.available )\n\t\t\treturn;\n\t\t\n\t\tswitch( action.id ) {\n\t\t\tcase ACTION.DELETE: {\n\t\t\t\tthis.model.explorer.delete( \n\t\t\t\t\tthis.model.selectedItems.map(i => i.id), \n\t\t\t\t\tthis.model.selectedFolders.map(f => f.id)\n\t\t\t\t);\n\t\t\t}\n\t\t\tbreak;\n\n\t\t\tcase ACTION.MANAGE: {\n\t\t\t\tthis.model.explorer.manageProperties( \n\t\t\t\t\tthis.model.resourceType,\n\t\t\t\t\tthis.model.selectedItems\n\t\t\t\t).then( res => {\n\t\t\t\t\tif( res?.genericProps.length > 0 ) {\n\t\t\t\t\t\tthis.editProps( res.genericProps, this.model.selectedItems );\n\t\t\t\t\t\tthis.$scope.$apply();\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t}\n\t\t\tbreak;\n\n\t\t\tcase ACTION.SHARE: {\n\t\t\t\tthis.editShares( this.model.selectedItems );\n\t\t\t}\n\t\t\tbreak;\n\t\t\t\n\t\t\tdefault: alert( `\"${action.id}\" is not implemented.` );\n\t\t}\n\t}\n\n\t/**\n\t * Display the properties lightbox.\n\t * @param props props to display/edit\n\t * @param items apply to these resources\n\t */\n\tprivate editProps( props:IProperty[], items:IResource[] ) {\n\t\tthis.props = props;\n\t\tthis.items = items;\n\t\tthis.showProps = true;\n\t\t//alert( \"MANAGE=\"+this.showProps+\" (\"+this.props.map(p=>\"\"+p.property+\",\")+\") for items [\"+this.items.map(i=>\"\"+i.id+\",\")+\"]\" );\n\t}\n\n\t/**\n\t * Close the properties lightbox.\n\t */\n\tcloseProps() {\n\t\tdelete this.props;\n\t\tdelete this.items;\n\t\tthis.showProps=false\n\t}\n\n\t/**\n\t * Display the sharing lightbox.\n\t * @param items apply to these resources\n\t */\n\tprivate editShares( items:IResource[] ) {\n\t\tthis.items = items;\n\t\tthis.showShares = true;\n\t}\n\n\t/**\n\t * Close the sharing lightbox.\n\t */\n\tcloseShares() {\n\t\tdelete this.items;\n\t\tthis.showShares=false\n\t}\n}\n\n/* Directive */\nclass Directive implements IDirective<IScope,JQLite,IAttributes,IController[]> {\n restrict = 'E';\n\ttemplate = require('./toaster.directive.html').default;\n\tscope = {};\n\tbindToController = true;\n\tcontroller = [\"$scope\", \"odeNotify\", Controller];\n\tcontrollerAs = 'ctrl';\n\trequire = [\"odeToaster\", \"^^odeExplorer\"];\n\n link(scope:IScope, elem:JQLite, attrs:IAttributes, controllers?:IController[]): void {\n\t\tif( controllers ) {\n\t\t\tconst ctrl:Controller = controllers[0] as Controller;\n\t\t\tconst odeExplorer:Explorer.Controller = controllers[1] as Explorer.Controller;\n\t\t\tctrl.model = odeExplorer.model;\n\t\t}\n\t}\n}\n\n/** The toaster directive.\n *\n * Usage:\n * <ode-toaster context=\"instance of IExplorerContext\"></ode-toaster>\n */\nexport function DirectiveFactory() {\n\treturn new Directive();\n}\n","import { IAttributes, IController, IDirective, IScope } from \"angular\";\n\n/* Directive */\nclass Directive implements IDirective<IScope,JQLite,IAttributes,IController[]> {\n restrict = 'A';\n\n link(scope:IScope, elem:JQLite, attr:IAttributes, controllers?:IController[]): void {\n // NOTE : previous code to adapt if required:\n // elem.addClass('zero-mobile');\n // elem.find('h1').addClass('application-title');\n\n // function setHeader(){\n // var header = $('app-title').html();\n // var mobileheader = $('header.main .application-title');\n\n // if(ui.breakpoints.checkMaxWidth(\"tablette\")){\n // if(!mobileheader.length)\n // $('header.main').append($compile(header)(scope));\n // } else {\n // mobileheader.remove();\n // }\n // }\n // setHeader();\n // $(window).on('resize', setHeader);\n\n // scope.$on(\"$destroy\", function() {\n // $('body').find('header.main .application-title').remove();\n // });\n }\n}\n\n/**\n * The appTitle directive.\n *\n * Usage:\n * <h2 app-title>The title</h2>\n */\nexport function DirectiveFactory() {\n\treturn new Directive();\n}\n","import { IAttributes, ICompileService, IController, IDirective, IScope, ITimeoutService } from \"angular\";\n\n/* Controller for the directive */\nexport class Controller implements IController {\n constructor(private $timeout:ITimeoutService) {\n }\n}\n\n/* Directive */\nclass Directive implements IDirective<IScope,JQLite,IAttributes,IController[]> {\n restrict= 'E';\n template = require(\"./autocomplete.directive.html\").default;\n replace= true;\n scope= {\n options: '&',\n ngModel: '=',\n ngChange: '&',\n search: '=?'\n };\n\tbindToController = true;\n\tcontroller = [\"$timeout\", Controller];\n\tcontrollerAs = 'ctrl';\n\trequire = ['autocomplete'];\n\n /**\n * Link method for the directive.\n * @see https://code.angularjs.org/1.7.9/docs/api/ng/service/$compile\n * @param $scope scope\n * @param $elem jqLite-wrapped element that this directive matches.\n * @param $attr hash object with key-value pairs of normalized attribute names and their corresponding attribute values.\n * @param controllers Array of \"require\"d controllers : [ngModelCtrl]\n */\n link(scope:IScope, element:JQLite, attributes:IAttributes, controllers?:IController[]): void {\n let ctrl:Controller|null = controllers ? controllers[0] as Controller : null;\n if (attributes.autocomplete === 'off') {\n return;\n }\n // TODO : finish porting or rewrite ? See OLD CODE in comments below\n }\n\n /* Constructor with Dependency Injection */\n constructor(private $compile:ICompileService) {\n }\n}\n\n/**\n * The autocomplete directive.\n *\n * Usage:\n * <autocomplete \n * autocomplete=\"off\" // To deactivate it\n * options=\"yourList\" \n * ng-model=\"yourText\" ng-change=\"anExpression\"></autocomplete>\n */\nexport function DirectiveFactory($compile:ICompileService) {\n\treturn new Directive($compile);\n}\nDirectiveFactory.$inject = [\"$compile\"];\n\n/* OLD CODE\n var token;\n var dropDownContainer = element.find('[data-drop-down]');\n var linkedInput = element.find('input');\n scope.search = '';\n scope.translate = lang.translate;\n scope.limit = 6;\n scope.match = [];\n\n scope.increaseLimit = function(){\n\t\t\t\tscope.limit += 5;\n\t\t\t\t$timeout(function(){\n\t\t\t\t\tscope.setDropDownHeight()\n\t\t\t\t});\n\t\t\t};\n\n scope.setDropDownHeight = function () {\n var liHeight = 0;\n var max = Math.min(scope.limit, scope.match.length);\n dropDownContainer.find('li').each(function (index, el) {\n liHeight += $(el).offsetHeight;\n\n return index < max;\n })\n dropDownContainer.height(liHeight)\n };\n\n var placeDropDown = function () {\n if(!scope.match || scope.match.length === 0){\n\t\t\t\t\tdropDownContainer.height();\n\t\t\t\t\tdropDownContainer.addClass('hidden');\n\t\t\t\t\tscope.limit = 6;\n\t\t\t\t\tdropDownContainer.attr('style', '');\n\t\t\t\t\treturn;\n }\n \n var pos = linkedInput.offset();\n var width = linkedInput.width() +\n parseInt(linkedInput.css('padding-right')) +\n parseInt(linkedInput.css('padding-left')) +\n parseInt(linkedInput.css('border-width') || 1) * 2;\n var height = linkedInput.height() +\n parseInt(linkedInput.css('padding-top')) +\n parseInt(linkedInput.css('padding-bottom')) +\n parseInt(linkedInput.css('border-height') || 1) * 2;\n\n pos.top = pos.top + height;\n dropDownContainer.offset(pos);\n dropDownContainer.width(width);\n scope.setDropDownHeight();\n\t\t\t\tsetTimeout(function(){\n\t\t\t\t\tscope.setDropDownHeight()\n\t\t\t\t}, 100);\n\n token = requestAnimationFrame(placeDropDown);\n };\n\n scope.$watch('search', function (newVal) {\n if (!newVal) {\n scope.match = [];\n dropDownContainer.height(\"\");\n dropDownContainer.addClass('hidden');\n return;\n }\n scope.match = _.filter(scope.options(), function (option) {\n var words = newVal.split(' ');\n return _.find(words, function (word) {\n var formattedOption = lang.removeAccents(option.toString()).toLowerCase();\n var formattedWord = lang.removeAccents(word).toLowerCase();\n return formattedOption.indexOf(formattedWord) === -1\n }) === undefined;\n });\n if (!scope.match || scope.match.length === 0) {\n dropDownContainer.height(\"\");\n scope.limit = 6;\n dropDownContainer.addClass('hidden');\n return;\n }\n dropDownContainer.removeClass('hidden');\n cancelAnimationFrame(token);\n placeDropDown();\n });\n\n element.parent().on('remove', function () {\n cancelAnimationFrame(token);\n dropDownContainer.remove();\n });\n\n scope.$on(\"$destroy\", function() {\n cancelAnimationFrame(token);\n dropDownContainer.remove();\n });\n\n dropDownContainer.detach().appendTo('body');\n\n dropDownContainer.on('click', 'li', function (e) {\n if($(e.target).hasClass('display-more')){\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tscope.limit = 6;\n\t\t\t\tdropDownContainer.attr('style', '');\n scope.ngModel = $(this).scope().option;\n scope.search = '';\n scope.$apply('ngModel');\n scope.$eval(scope.ngChange);\n scope.$apply('ngModel');\n dropDownContainer.addClass('hidden');\n cancelAnimationFrame(token);\n });\n\n var closeDropDown = function(e){\n\t\t\t\tif(element.find(e.target).length > 0 || dropDownContainer.find(e.target).length > 0){\n\t\t\t\t\treturn;\n\t\t\t\t}\n scope.match = [];\n\t\t\t\tscope.$apply();\n\t\t\t};\n\n\t\t\t$('body').on('click', closeDropDown);\n dropDownContainer.attr('data-opened-drop-down', true);\n }\n }\n}]);\n*/","import { ICompileService } from \"angular\";\nimport { ConfigurationFrameworkFactory } from \"ode-ts-client\";\n\nexport abstract class I18nBase {\n constructor(protected $compile:ICompileService) {\n }\n \n get idiom() {\n return ConfigurationFrameworkFactory.instance().Platform.idiom;\n }\n}\n","import { IAttributes, ICompileService, IController, IDirective, IScope } from \"angular\";\nimport { I18nBase } from \"./I18nBase\";\n\n/* Directive */\nclass Directive extends I18nBase implements IDirective<IScope,JQLite,IAttributes,IController[]> {\n link(scope:IScope, elem:JQLite, attrs:IAttributes, controllers?:IController[]): void {\n attrs.$observe('i18nPlaceholder', val => {\n const compiled = this.$compile('<span>' + this.idiom.translate(attrs.i18nPlaceholder) + '</span>')(scope);\n setTimeout(function(){\n elem.attr('placeholder', compiled.text()); // Use compiled text(), not html() because attributes should not contain html tags\n }, 10);\n });\n }\n}\n\n/** The i18n-placeholder directive.\n *\n * Usage:\n * <input type=\"text\" i18n-placeholder=\"your.i18n.key\"></input>\n */\n export function DirectiveFactory($compile:ICompileService) {\n\treturn new Directive($compile);\n}\nDirectiveFactory.$inject = [\"$compile\"];","import { IAttributes, ICompileService, IController, IDirective, IScope } from \"angular\";\nimport { I18nBase } from \"./I18nBase\";\n\n/* Directive */\nclass Directive extends I18nBase implements IDirective<IScope,JQLite,IAttributes,IController[]> {\n link(scope:IScope, elem:JQLite, attrs:IAttributes, controllers?:IController[]): void {\n attrs.$observe('i18nTitle', val => {\n const compiled = this.$compile('<span>' + this.idiom.translate(attrs.i18nTitle) + '</span>')(scope);\n setTimeout(function(){\n elem.attr('title', compiled.text()); // Use compiled text(), not html() because attributes should not contain html tags\n }, 10);\n });\n }\n}\n\n/** The i18n-title directive.\n *\n * Usage:\n * <a i18n-title=\"your.i18n.key\"></a>\n */\n export function DirectiveFactory($compile:ICompileService) {\n\treturn new Directive($compile);\n}\nDirectiveFactory.$inject = [\"$compile\"];","import { IAttributes, ICompileService, IController, IDirective, IScope } from \"angular\";\nimport { I18nBase } from \"./I18nBase\";\n\n/* Directive */\nclass Directive extends I18nBase implements IDirective<IScope,JQLite,IAttributes,IController[]> {\n link(scope:IScope, elem:JQLite, attrs:IAttributes, controllers?:IController[]): void {\n attrs.$observe('i18nValue', val => {\n const compiled = this.$compile('<span>' + this.idiom.translate(attrs.i18nValue) + '</span>')(scope);\n setTimeout(function(){\n elem.attr('value', compiled.text()); // Use compiled text(), not html() because attributes should not contain html tags\n }, 10);\n });\n }\n}\n\n/** The i18n-value directive.\n *\n * Usage:\n * <option i18n-value=\"your.i18n.key\"></option>\n */\n export function DirectiveFactory($compile:ICompileService) {\n\treturn new Directive($compile);\n}\nDirectiveFactory.$inject = [\"$compile\"];","import { IAttributes, ICompileService, IController, IDirective, IScope } from \"angular\";\nimport { I18nBase } from \"./I18nBase\";\n\n/* Directive */\nclass Directive extends I18nBase implements IDirective<IScope,JQLite,IAttributes,IController[]> {\n restrict='E';\n\n link(scope:IScope, elem:JQLite, attrs:IAttributes, controllers?:IController[]): void {\n const key = elem.text().trim();\n const value = this.idiom.translate(key);\n // Set the inner HTML of elem with compiled html() code, not compiled text().\n // The html code may contain other angular directives, or HTML tags.\n elem.html( this.$compile('<span class=\"no-style\">'+ value +'</span>')(scope).html() );\n }\n}\n\n/** The i18n directive.\n *\n * Usage:\n * <i18n>your.i18n.key</i18n>\n */\n export function DirectiveFactory($compile:ICompileService) {\n\treturn new Directive($compile);\n}\nDirectiveFactory.$inject = [\"$compile\"];","import { IFilterFunction } from \"angular\";\nimport { conf } from \"../../../utils\";\n\nconst Filter:IFilterFunction = (input:string, params?:any) => {\n return conf().Platform.idiom.translate(input, params);\n}\n\nexport function FilterFactory() {\n return Filter;\n}\n","import { IAttributes, ICompileService, IController, IDirective, IScope } from \"angular\";\nimport { I18nBase } from \"./I18nBase\";\n\n/* Directive */\nclass Directive extends I18nBase implements IDirective<IScope,JQLite,IAttributes,IController[]> {\n restrict = 'A';\n replace = true;\n\n link(scope:IScope, elem:JQLite, attrs:IAttributes, controllers?:IController[]): void {\n attrs.$observe('content', val => {\n if(!attrs.content){\n return;\n }\n // Set the inner HTML of elem with compiled html() code, not compiled text().\n // The html code may contain other angular directives, or HTML tags.\n elem.html( this.$compile('<span class=\"no-style\">' + this.idiom.translate(attrs.content) + '</span>')(scope).html() );\n });\n\n attrs.$observe('attr', val => {\n if(!attrs.attr){\n return;\n }\n var compiled = this.$compile('<span>' + this.idiom.translate(attrs[attrs.attr]) + '</span>')(scope);\n setTimeout(function(){\n elem.attr(attrs.attr, compiled.text()); // Use compiled text(), not html() because attributes should not contain html tags\n }, 10);\n });\n\n attrs.$observe('attrs', val => {\n if(!attrs.attrs){\n return;\n }\n var attrObj = scope.$eval(attrs.attrs);\n for(var prop in attrObj){\n const compiled = this.$compile('<span>'+ this.idiom.translate(attrObj[prop]) +'</span>')(scope);\n setTimeout(function(){\n elem.attr(prop, compiled.text()); // Use compiled text(), not html() because attributes should not contain html tags\n }, 0);\n }\n })\n\n attrs.$observe('key', val => {\n if(!attrs.key){\n return;\n }\n // Set the inner HTML of elem with compiled html() code, not compiled text().\n // The html code may contain other angular directives, or HTML tags.\n elem.html( this.$compile('<span class=\"no-style\">'+ this.idiom.translate(attrs.key) +'</span>')(scope).html() );\n });\n }\n}\n\n/** The translate directive.\n *\n * Usage:\n * <div translate key=\"your.i18n.key\"></div>\n * or\n * <label translate content=\"your.i18n.key\"></label>\n * or\n * <input placeholder=\"your.placeholder.key\" translate attr=\"placeholder\"></input>\n * or\n * <input translate attrs=\"{placeholder:'your.placeholder.key', value:'another.i18n.key'}\"></input>\n */\nexport function DirectiveFactory($compile:ICompileService) {\n\treturn new Directive($compile);\n}\nDirectiveFactory.$inject = [\"$compile\"];","import angular, { IAttributes, IController, IDirective, IScope } from \"angular\";\nimport { UserPreferenceKey } from \"ode-ts-client\";\nimport { conf } from \"../../../utils\";\n\ninterface Scope extends IScope {\n\theader?: string;\n\tsince?: string;\n\tuserprefsKey?: UserPreferenceKey;\n\tuserprefsField: string;\n\tonChange: ( params:{'$visible':Boolean} ) => void;\n\tsaveOnChange?: Boolean;\n\tshowOnce?: Boolean;\n\tshow?: Boolean;\n\tvisible: (value?:Boolean) => boolean|void;\n}\n\n/* Directive */\nclass Directive implements IDirective<Scope,JQLite,IAttributes,IController[]> {\n\trestrict= 'E';\n\ttemplate = require(\"./infotip.directive.html\").default;\n\tscope= {\n\t\theader: \"@?\",\n\t\tsince: \"@?\",\n\t\tuserprefsKey: \"@?\",\n\t\tuserprefsField: '@',\n\t\tonChange: '&?', \n\t\tsaveOnChange: \"=?\",\n\t\tshowOnce: \"=?\",\n\t\tshow: \"=?\"\n\t};\n\ttransclude= true;\n\n\tasync link(scope:Scope, element:JQLite, attributes:IAttributes, controllers?:IController[]) {\n\t\t// 2 cases, depending on the prefsKey scoped value.\n\t\tlet key:UserPreferenceKey = 'infotip';\n\t\tif( angular.isString(scope.userprefsKey) && scope.userprefsKey.trim().length > 0 ) {\n\t\t\tkey = scope.userprefsKey.trim() as UserPreferenceKey;\n\t\t}\n\n\t\t// Helper function\n\t\tconst notifyVisibility = (value?:Boolean) => {\n\t\t\tconst val = value ?? scope.visible() as Boolean;\n\t\t\tscope.onChange && scope.onChange( {'$visible': val} );\n\t\t\tif( val ) {\n\t\t\t\telement.find('.toast').addClass('show');\n\t\t\t} else {\n\t\t\t\telement.find('.toast').removeClass('show');\n\t\t\t}\n\t\t}\n\n\t\tconst preferences = conf().User.preferences;\n\t\tawait preferences.load( key );\n\n\t\t// Helper get/set function\n\t\tscope.visible = function(value?: Boolean) {\n\t\t\tif( arguments.length <= 0 ) {\n\t\t\t\treturn preferences.get(key)[scope.userprefsField]!==false ? true : false;\n\t\t\t} else {\n\t\t\t\tpreferences.get(key)[scope.userprefsField] = value;\n\t\t\t\tnotifyVisibility( value );\n\t\t\t\tif( !!scope.saveOnChange ) {\n\t\t\t\t\tpreferences.save( key );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// Watch the show attribute, if any\n\t\tscope.$watch('show', newVal=>{ \n\t\t\tif( typeof newVal !== \"undefined\" ) {\n\t\t\t\tscope.visible( newVal as Boolean );\n\t\t\t}\n\t\t});\n\n\t\tnotifyVisibility();\n\t\tif( scope.showOnce ) {\n\t\t\tpreferences.get(key)[scope.userprefsField] = false;\t// Do not notify this visibility change.\n\t\t\tpreferences.save( key );\n\t\t}\n\t}\n}\n\n/** The infotip directive.\n *\n * Usage:\n * <ode-infotip \n * header?=\"title of the tip\"\n * \tsince?=\"small text\"\n *\tuserprefs-field=\"yourVisibilityParam\" \n *\tuserprefs-key?=\"your_USER_PREFS_key\"\n *\ton-change?=\"yourCallback\"\n *\tshow-once?=\"true|false\"\n * save-on-change?=\"true|false\"\n *\tshow?=\"true|false\">\n *\t\tPut your content here.\n * </ode-infotip>\n * \n * @attribute header Text to display in the header\n * @attribute since Small text to display near the close button\n * @attribute userprefs-field The name that will be used to save the $visibility state.\n * @attribute userprefs-key A USER_PREFS key. Defaults to 'infotip'\n * @attribute on-change A callback that must accept a {'$visible':Boolean} parameter\n * @attribute show-once If set to true, the infotip will show once, and then its $visibility will be saved to false.\n * @attribute save-on-change If set to false, closing the infotip will not save its $visibility. You have to manage it elsewhere.\n * @attribute show If set, force displaying/hiding the tip.\n */\n export function DirectiveFactory() {\n\treturn new Directive();\n}\n","import { IAttributes, IController, IDirective, IScope } from \"angular\";\nimport $ from \"jquery\"; // FIXME : remove jQuery dependency \n\nexport interface LightboxDelegate{\n\tstayOpen():Promise<boolean>;\n}\nclass LightboxDelegateWrapper implements LightboxDelegate{\n\tconstructor(private all:Array<LightboxDelegate>) {}\n\tasync stayOpen():Promise<boolean>{\n\t\tfor(const current of this.all){\n\t\t\tif(current){\n\t\t\t\tconst res = await current.stayOpen();\n\t\t\t\tif(res){\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\treturn false;\n\t}\n\n}\n\ninterface Scope extends IScope {\n\tshow: boolean;\n\ttiny: string;\n\tonShow: any;\n\tonClose: any,\n\tdelegate:any;\n\tdelegateClose: (elem:any)=>boolean;\n\tbackup: {overflow:any; zIndex:any};\n}\n\n/* Directive */\nclass Directive implements IDirective<Scope,JQLite,IAttributes,IController[]> {\n\trestrict= 'E';\n\ttemplate = require(\"./lightbox.directive.html\").default;\n\ttransclude= true;\n\tscope= {\n\t\tshow: '=',\n\t\ttiny: '=',\n\t\tonShow: '&?',\n\t\tonClose: '&',\n\t\tdelegate:'=',\n\t\tdelegateClose: '&?'\n\t};\n\n\tlink(scope:Scope, element:JQLite, attributes:IAttributes, controllers?:IController[]): void {\n\t\tlet delegate:LightboxDelegate = scope.delegate;\n\t\t// FIXME\n\t\t// if(attributes.navigationGuard){\n\t\t// \tconst guard = await import(\"../navigationGuard\");\n\t\t// \tconst guardListener = new guard.LightboxChangeListener();\n\t\t// \tdelegate = new LightboxDelegateWrapper([delegate,guardListener]);\n\t\t// \tguard.navigationGuardService.registerListener(guardListener);\n\t\t// \tscope.$on(\"$destroy\", () => {\n\t\t// \t\tguard.navigationGuardService.unregisterListener(guardListener);\n\t\t// \t})\n\t\t// }\n\t\telement.children('.lightbox').find('> .background').on('click', async function(e){\n\t\t\tif (element.children('.lightbox').find('image-editor, share-panel, .import-files, .split-screen, [template=entcore\\\\/image-editor\\\\/main]').length === 0){\n\t\t\t\tif (delegate) {\n\t\t\t\t\tlet result= await delegate.stayOpen();\n\t\t\t\t\tif(result===true){\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif (attributes.delegateClose) {\n\t\t\t\t\tlet result= scope.delegateClose({ $element:element });\n\t\t\t\t\tif(result===true){\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\telement.children('.lightbox').first().fadeOut();\n\t\t\t\t$('body').css({ overflow: 'auto' });\n\t\t\t\t$('body').removeClass('lightbox-opened');\n\n\t\t\t\tscope.$eval(scope.onClose);\n\t\t\t\tscope.$apply();\n\t\t\t\tscope.show = false;\n\t\t\t\tif(!scope.$$phase){\n\t\t\t\t\tscope.$parent.$apply();\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t\telement.children('.lightbox').find('> .content > .close-lightbox > i.close-2x').on('click', async function(e){\n\t\t\tif (element.children('.lightbox').find('share-panel').length === 0){\n\t\t\t\tif (delegate) {\n\t\t\t\t\tlet result= await delegate.stayOpen();\n\t\t\t\t\tif(result===true){\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif (attributes.delegateClose) {\n\t\t\t\t\tlet result= scope.delegateClose({ $element:element });\n\t\t\t\t\tif(result===true){\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\telement.children('.lightbox').first().fadeOut();\n\t\t\t\t$('body').css({ overflow: 'auto' });\n\t\t\t\t$('body').removeClass('lightbox-opened');\n\n\t\t\t\tscope.$eval(scope.onClose);\n\t\t\t\tscope.$apply();\n\t\t\t\tscope.show = false;\n\t\t\t\tif(!scope.$$phase){\n\t\t\t\t\tscope.$parent.$apply();\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t\telement.children('.lightbox').on('mousedown', function(e){\n\t\t\te.stopPropagation();\n\t\t});\n\n\t\tscope.$watch('show', function(newVal){\n\t\t\tif (newVal) {\n\t\t\t\tif (attributes.onShow) {\n\t\t\t\t\tscope.onShow({ $element:element });\n\t\t\t\t}\n\t\t\t\telement.trigger('lightboxvisible');\n\t\t\t\tvar lightboxWindow = element.children('.lightbox');\n\n\t\t\t\t//Backup overflow hidden elements + z-index of parents\n\t\t\t\tvar parentElements = element.parents();\n\n\t\t\t\tscope.backup = {\n\t\t\t\t\toverflow: parentElements.filter( (idx,parent) => {\n\t\t\t\t\t\treturn $(parent).css('overflow-x') !== 'visible' || $(parent).css('overflow-y') !== 'visible';\n\t\t\t\t\t}),\n\t\t\t\t\tzIndex: parentElements.map( (idx,parent) => {\n\t\t\t\t\t\t\tvar index = '';\n\t\t\t\t\t\t\tif($(parent).attr('style')?.indexOf('z-index') !== -1){\n\t\t\t\t\t\t\t\tindex = $(parent).css('z-index')\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\t\telement: $(parent),\n\t\t\t\t\t\t\t\tindex: index\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t})\n\t\t\t\t};\n\n\t\t\t\t//Removing overflow properties\n\t\t\t\tscope.backup.overflow.forEach( (element:HTMLElement) => {\n\t\t\t\t\t$(element).css({ 'overflow': 'visible' })\n\t\t\t\t});\n\n\t\t\t\t//Ensuring proper z-index\n\t\t\t\tscope.backup.zIndex.forEach((elementObj:any) => {\n\t\t\t\t\telementObj.element.css('z-index', 99999)\n\t\t\t\t})\n\n\t\t\t\tsetTimeout(() => {\n\t\t\t\t\tif(element.parents('header.main').length === 0){\n\t\t\t\t\t\t$('body').addClass('lightbox-opened');\n\t\t\t\t\t}\n\t\t\t\t\t\n\t\t\t\t\tlightboxWindow.fadeIn();\n\t\t\t\t}, 100);\n\n\t\t\t\t$('body').css({ overflow: 'hidden' });\n\t\t\t}\n\t\t\telse {\n\t\t\t\tlet updateBody = true;\n\t\t\t\t$('lightbox .lightbox').each((index, item) => {\n\t\t\t\t\tif(item !== element.children('.lightbox')[0] && $(item).css('display') === 'block'){\n\t\t\t\t\t\tupdateBody = false;\n\t\t\t\t\t}\n\t\t\t\t});\n\n\t\t\t\tif(updateBody){\n\t\t\t\t\t$('body').removeClass('lightbox-opened');\n\t\t\t\t\t$('body').css({ overflow: 'auto' });\n\t\t\t\t}\n\n\t\t\t\tif(scope.backup){\n\t\t\t\t\t//Restoring stored elements properties\n\t\t\t\t\tscope.backup.overflow.forEach((element:HTMLElement) => {\n\t\t\t\t\t\t$(element).css('overflow', '')\n\t\t\t\t\t})\n\t\t\t\t\tscope.backup.zIndex.forEach((elementObj:any) => {\n\t\t\t\t\t\telementObj.element.css('z-index', elementObj.index)\n\t\t\t\t\t})\n\t\t\t\t}\n\n\t\t\t\telement.children('.lightbox').fadeOut();\n\t\t\t}\n\t\t});\n\n\t\tscope.$on(\"$destroy\", function () {\n\t\t\tif(element.parents('lightbox').length){\n\t\t\t\treturn;\n\t\t\t}\n\t\t\t$('body').removeClass('lightbox-opened');\n\t\t\t$('body').css({ overflow: 'auto' });\n\n\t\t\tif (scope.backup) {\n\t\t\t\t//Restoring stored elements properties\n\t\t\t\tscope.backup.overflow.forEach( (element:HTMLElement) => {\n\t\t\t\t\t$(element).css('overflow', '');\n\t\t\t\t});\n\t\t\t\tscope.backup.zIndex.forEach( (elementObj:any) => {\n\t\t\t\t\telementObj.element.css('z-index', elementObj.index)\n\t\t\t\t});\n\t\t\t}\n\t\t});\n\t}\n}\n\n/** The lightbox directive.\n * @deprecated\n * Replaced by modal.directive.ts\n *\n * Usage: //TODO\n * <lightbox ></lightbox>\n */\n export function DirectiveFactory() {\n\treturn new Directive();\n}\n","import { IAttributes, IController, IDirective, IScope } from \"angular\";\n\n/* Controller for the directive */\nexport class Controller implements IController {\n name = \"default\";\n\tattach?: (element:JQLite)=>void;\n}\n\n/* Directive */\nclass Directive implements IDirective<IScope,JQLite,IAttributes,IController[]> {\n restrict = 'A';\n\tcontroller = [Controller];\n\trequire = [\"odeModalContainer\"];\n\n link(scope:IScope, elem:JQLite, attrs:IAttributes, controllers?:IController[]): void {\n\t\tif( !controllers ) return;\n\t\tconst ctrl:Controller = controllers[0] as Controller;\n\t\t// Set the container's name, if defined\n\t\tif( typeof attrs[\"odeModalContainer\"]===\"string\" && attrs[\"odeModalContainer\"].trim().length>0 ) {\n\t\t\tctrl.name = attrs[\"odeModalContainer\"];\n\t\t}\n\n\t\tctrl.attach = (modal:JQLite) => {\n\t\t\tif( elem && modal ) {\n\t\t\t\telem.append( modal );\n\t\t\t}\n\t\t}\n\t}\n}\n\n/** \n * The modal-container directive.\n * The ode-modal-container directive allow hosting ode-modals anywhere in the DOM.\n * It will contain (from the DOM point of view) every ode-modals which target it by its name.\n *\n * Usage:\n * <div ode-modal-container=\"itsName\"></div>\n */\nexport function DirectiveFactory() {\n\treturn new Directive();\n}\n","import { IAttributes, IController, IDirective, IScope } from \"angular\";\nimport { L10n } from \"../../..\";\nimport { Controller as ModalContainerController } from \"./modal-container.directive\"\n\ntype ModalSize = \"sm\"|\"md\"|\"lg\"|\"xl\";\n\n/* Controller for the directive */\nexport class Controller implements IController {\n\tconstructor() {\n // Remove transpilation warnings due to the \"bindToController\", which angularjs already checks.\n\t\tthis.id = null as unknown as string;\n\t}\n\tid:string;\n\tsize:ModalSize = \"md\";\n\tcontainer:string = \"default\";\n\tvisible?:boolean;\n\tonClose?:Function;\n\n\tgetStyle() {\n\t\treturn {\n\t\t\t \"display\": this.visible ? 'block' : 'none'\n\t\t\t,\"background-color\": 'transparent'\n\t\t};\n\t}\n\tgetSizeClass() {\n\t\tswitch( this.size ) {\n\t\t\tcase \"sm\": return \"modal-sm\";\n\t\t\tcase \"lg\": return \"modal-lg\";\n\t\t\tcase \"xl\": return \"modal-xl\";\n\t\t\tdefault: return \"\";\n\t\t}\n\t}\n}\n\n/* Directive */\nclass Directive implements IDirective<IScope,JQLite,IAttributes,IController[]> {\n restrict = 'E';\n\ttemplate = require('./modal.directive.html').default;\n\tscope = {\n\t\tid:\"@\",\n\t\tsize: \"@?\",\n\t\tcontainer: \"=?\",\n\t\tvisible:\"=?\",\n\t\tonClose:\"&?\"\n\t};\n\tbindToController = true;\n transclude = {\n\t\ttitle:\t\"?odeModalTitle\",\n body: \"odeModalBody\",\n footer: \"?odeModalFooter\"\n };\n\tcontroller = [Controller];\n\tcontrollerAs = 'ctrl';\n\trequire=['odeModal', '?^^odeModalContainer'];\n\n\tlink(scope:IScope, element:JQLite, attributes:IAttributes, controllers?:IController[]): void {\n\t\tif( !controllers ) return;\n\t\tconst ctrl:Controller = controllers[0] as Controller;\n\t\tconst containerCtrl:ModalContainerController = controllers[1] as ModalContainerController;\n\n\t\tif( containerCtrl && containerCtrl.attach && containerCtrl.name===ctrl.container ) {\n\t\t\t// Attach the modal to its container\n\t\t\tcontainerCtrl.attach( element );\n\t\t}\n\n\t\tif( typeof attributes['id'] === \"undefined\" || (attributes['id'] as string).length === 0 ) {\n\t\t\tctrl.id = L10n.moment(new Date()).format(\"YYMMDDHHMMssSSS\") + (1000*Math.random()).toFixed(0);\n\t\t}\n\t}\n}\n\n/** \n * The ode-modal directive.\n * See also {@link ModalContainerController }\n *\n * Usage:\n * <ode-modal size?=\"sm|lg|xl\" container?=\"name_of_a_modal_container\" visible=\"a_boolean_variable\" on-close?=\"a_function\">\n * <ode-modal-title>Your HTML title here</ode-modal-title>\n * <ode-modal-body>Your HTML content here</ode-modal-body>\n * <ode-modal-footer>Your HTML footer here</ode-modal-footer>\n * \t\t</ode-modal>\n */\nexport function DirectiveFactory() {\n\treturn new Directive();\n}\n","import { IScope, IAttributes, INgModelController } from \"angular\";\nimport { ObjectGuard } from \"../../../utils/navigation-guard\";\nimport { GenericGuardDirective } from \"./genericGuardDirective\";\n\nclass Directive extends GenericGuardDirective {\n protected guardFactory(scope: IScope, element: JQLite, attrs: IAttributes, ngModel: INgModelController) {\n const temp = new ObjectGuard(() => scope.$eval(attrs.customGuard));\n scope.$watch(function() {\n return scope.$eval(attrs.customGuard);\n }, function(){\n temp.reset();\n });\n return temp;\n }\n}\n\n/**\n * Usage:\n * \n * <div custom-guard=\"an expression returning an IObjectGuardDelegate instance\">\n */\n export function DirectiveFactory() {\n\treturn new Directive();\n}\n","import { IScope, IAttributes, INgModelController } from \"angular\";\nimport { InputGuard } from \"../../../utils/navigation-guard\";\nimport { GenericGuardDirective } from \"./genericGuardDirective\";\n\nclass Directive extends GenericGuardDirective {\n protected guardFactory(scope: IScope, element: JQLite, attrs: IAttributes, ngModel: INgModelController) {\n return new InputGuard<any>(() => ngModel.$dirty, () => false);\n }\n}\n\n/**\n * Usage: in a form\n * \n * <input dirty-guard ng-model=\"myModel\">\n */\n export function DirectiveFactory() {\n\treturn new Directive();\n}\n","import { IScope, IAttributes, INgModelController } from \"angular\";\nimport { InputGuard } from \"../../../utils/navigation-guard\";\nimport { GenericGuardDirective } from \"./genericGuardDirective\";\n\ntype Element = {\n _id?: string;\n}\n\nclass Directive extends GenericGuardDirective {\n protected guardFactory(scope: IScope, element: JQLite, attrs: IAttributes, ngModel: INgModelController) {\n return new InputGuard<Element>(\n () => typeof ngModel.$modelValue == \"object\" ? ngModel.$modelValue.id || \"\" : \"\",\n () => typeof ngModel.$modelValue == \"object\" ? ngModel.$modelValue.id || \"\" : \"\",\n (a, b) => {\n if (a && b) {\n return a._id == b._id;\n } else {\n return !a && !b;\n }\n }\n );\n }\n}\n\n/**\n * Usage:\n * \n * <input document-guard ng-model=\"myModel\">\n */\n export function DirectiveFactory() {\n\treturn new Directive();\n}\n","import { IAttributes, IController, IDirective, INgModelController, IScope } from \"angular\";\nimport { GuardRoot } from \"../..\";\nimport { INavigationGuard, navigationGuardService } from \"../../../utils/navigation-guard\";\n\n/* Directive */\nexport abstract class GenericGuardDirective implements IDirective<IScope,JQLite,IAttributes,IController[]> {\n require= ['?ngModel', '?^^guardRoot'];\n restrict= 'A';\n\n /** To be implemented by subclasses. */\n protected abstract guardFactory(scope:IScope, element:JQLite, attrs:IAttributes, ngModel:INgModelController|null): INavigationGuard;\n\n link(scope:IScope, element:JQLite, attrs:IAttributes, controllers?:IController[]): void {\n const ngModel = controllers ? controllers[0] as INgModelController : null;\n const root = controllers ? controllers[0] as GuardRoot.Controller : null;\n\n const guard = this.guardFactory(scope, element, attrs, ngModel);\n let count = 0;\n if (guard != null) {\n if (ngModel != null) {\n ngModel.$formatters.push((value) => {\n if (count == 0) {\n setTimeout(() => guard.reset());\n count++;\n }\n return value;\n });\n } else {\n setTimeout(() => guard.reset());\n }\n if (root != null) {\n root.registerGuard(guard);\n scope.$on(\"$destroy\", function () {\n root.unregisterGuard(guard);\n });\n }\n else {\n let id: string = navigationGuardService.registerIndependantGuard(guard);\n scope.$on(\"$destroy\", function () {\n navigationGuardService.unregisterIndependantGuard(id);\n });\n }\n }\n }\n}\n","import { IAttributes, IController, IDirective, IRootScopeService, IScope } from \"angular\";\nimport { AngularJSRouteChangeListener, DOMRouteChangeListener, INavigationGuard, navigationGuardService } from \"../../../utils/navigation-guard\";\n\nexport class Controller implements IController {\n rootID: string = \"\";\n\n registerGuard(guard: INavigationGuard) {\n navigationGuardService.registerGuard(this.rootID, guard);\n }\n unregisterGuard(guard: INavigationGuard) {\n navigationGuardService.unregisterGuard(this.rootID, guard);\n }\n reset() {\n navigationGuardService.reset(this.rootID);\n }\n}\n\ntype Scope = IScope & {\n \"guardRoot\": string\n}\n\n/* Directive */\nclass Directive implements IDirective<Scope,JQLite,IAttributes,IController[]> {\n restrict = 'A';\n scope = {\n guardRoot: \"@?\"\n }\n controller = [Controller];\n require = ['guardRoot'];\n\n link(scope:Scope, element:JQLite, attrs:IAttributes, controllers?:IController[]): void {\n const ctrl = controllers ? controllers[0] as Controller : null;\n if( !ctrl ) return;\n ctrl.rootID = scope.guardRoot ?? navigationGuardService.generateID();\n\n let angularRCL = AngularJSRouteChangeListener.getInstance(scope.$root);\n navigationGuardService.registerListener(angularRCL);\n navigationGuardService.registerListener(DOMRouteChangeListener.getInstance());\n// navigationGuardService.registerListener(TemplateRouteChangeListener.getInstance());\n\n scope.$on(\"$destroy\", function () {\n navigationGuardService.unregisterListener(angularRCL);\n navigationGuardService.unregisterListener(DOMRouteChangeListener.getInstance());\n// navigationGuardService.unregisterListener(TemplateRouteChangeListener.getInstance());\n navigationGuardService.unregisterRoot(ctrl.rootID);\n });\n }\n}\n\n/**\n * Usage:\n * \n * <div navigation-trigger=\"doSomethingUsefulWhenNavigationConfirmed()\" \n * \n * navigation-trigger-param=\"{onEvent:['click','focus'], confirmMessageKey:'my.msg.key', rootGuardId:'myGuardId'}\">\n * \n * </div> \n * \n * @param navigation-trigger-param [optional]\n * @values onEvent to specify one or more event that effectively trigger the guard,\n * Set confirmMessageKey to set a i18n for the confirm dialog message,\n * Set rootGuardId to trigger only the guard with specified the ID (useful when nesting guards).\n */\nexport function DirectiveFactory() {\n\treturn new Directive();\n}\n","import { IScope, IAttributes, INgModelController } from \"angular\";\nimport { InputGuard } from \"../../../utils/navigation-guard\";\nimport { GenericGuardDirective } from \"./genericGuardDirective\";\n\nclass Directive extends GenericGuardDirective {\n protected guardFactory(scope: IScope, element: JQLite, attrs: IAttributes, ngModel: INgModelController) {\n return new InputGuard<any>(() => ngModel.$viewValue || \"\", () => ngModel.$viewValue || \"\");\n }\n}\n\n/**\n * Usage:\n * \n * <input input-guard ng-model=\"myModel\">\n */\n export function DirectiveFactory() {\n\treturn new Directive();\n}\n","import angular, { IAttributes, IController, IDirective, IScope } from \"angular\";\nimport { ManualChangeListener, navigationGuardService } from \"../../../utils/navigation-guard\";\n\nexport interface INavigationTriggerParam {\n onEvent?:string|Array<string>;\n rootGuardId?:string;\n guardMessageKey?:string;\n};\n\n/* Directive */\nclass Directive implements IDirective<IScope,JQLite,IAttributes,IController[]> {\n restrict = \"A\";\n link(scope:IScope, element:JQLite, attrs:IAttributes, controllers?:IController[]): void {\n const params:INavigationTriggerParam = scope.$eval(attrs['navigationTriggerParam'] || \"{onEvent:'click'}\");\n params.rootGuardId = params.rootGuardId || '*';\n const listener = new ManualChangeListener();\n navigationGuardService.registerListener(listener);\n let unbinds:Array<Function> = [];\n const trigger = (e: Event) => {\n e && e.preventDefault();\n listener.onChange.next({\n checkGuardId: params.rootGuardId, // Can be null or undefined\n confirmMessageKey: params.guardMessageKey, // Defaults to 'navigation.guard.text' when null or undefined, see navigationGuardService\n accept() {\n scope.$eval(attrs.navigationTrigger)\n },\n reject() { }\n })\n }\n\n const bind = (element:any, eventName:string, listener:Function):void => {\n element.on(eventName, listener);\n unbinds.push( () => element.off(eventName, listener) );\n }\n\n const unbindAll = ():void => {\n for( let off of unbinds ) {\n off();\n }\n unbinds = [];\n }\n\n if( angular.isString(params.onEvent) ) {\n bind( element, params.onEvent as string, trigger );\n } else if( angular.isArray(params.onEvent) ) {\n (params.onEvent as Array<string>).forEach( (n, idx, arr) => {\n // listen to distinct event only once.\n if( angular.isString(n) && arr.lastIndexOf(n)===idx ) {\n bind( element, n, trigger );\n }\n });\n }\n scope.$on(\"$destroy\", () => {\n unbindAll();\n navigationGuardService.unregisterListener(listener);\n });\n }\n};\n\n/**\n * Usage:\n * \n * <div navigation-trigger=\"doSomethingUsefulWhenNavigationConfirmed()\" \n * \n * navigation-trigger-param=\"{onEvent:['click','focus'], confirmMessageKey:'my.msg.key', rootGuardId:'myGuardId'}\">\n * \n * </div> \n * \n * @param navigation-trigger-param [optional]\n * @values onEvent to specify one or more event that effectively trigger the guard,\n * Set confirmMessageKey to set a i18n for the confirm dialog message,\n * Set rootGuardId to trigger only the guard with specified the ID (useful when nesting guards).\n */\nexport function DirectiveFactory() {\n\treturn new Directive();\n}\n","import { IAttributes, IController, IDirective, IScope } from \"angular\";\nimport { GuardRoot } from \"../..\";\nimport { navigationGuardService} from \"../../../utils/navigation-guard\";\n\n/* Directive */\nclass Directive implements IDirective<IScope,JQLite,IAttributes,IController[]> {\n require= '?^guardRoot';\n restrict= 'A';\n\tlink(scope:IScope, element:JQLite, attrs:IAttributes, controllers?:IController[]): void {\n const root = controllers ? controllers[0] as GuardRoot.Controller : null;\n if( ! root ) return;\n let resetID = attrs.resetGuardId;\n const submit = async () => {\n const promise: Promise<any> = scope.$eval(attrs.resetGuard)\n if (promise instanceof Promise) {\n await promise;//reset if promise return success\n } else {\n console.warn(\"[resetGuard] result is not instance of Promise\");\n }\n if (resetID != null && resetID != \"\") {\n navigationGuardService.reset(resetID);\n }\n else if (root != null) {\n root.reset();\n }\n else {\n console.warn(\"[resetGuard] A reset directive has no root, resetting all guards...\");\n navigationGuardService.resetAll();\n }\n }\n const bind = () => {\n let event: string = attrs.resetGuardEvent;\n if(typeof event != \"string\" || !event.trim())\n {\n const tagname = (element.prop(\"tagName\") as string || \"\").toLowerCase();\n if (tagname == \"form\") {\n event = \"submit\";\n } else {\n event = \"click\";\n }\n }\n\n element.on(event, submit);\n return () => element.off(event, submit);\n }\n const unbind = bind();\n scope.$on(\"$destroy\", function () {\n unbind();\n });\n }\n}\n\n/**\n * Usage:\n * \n * <div reset-guard=\"an expression returning a Promise\" \n * \n * reset-guard-id=\"a guard root ID to reset\"\n */\nexport function DirectiveFactory() {\n\treturn new Directive();\n}\n","import { IAttributes, IController, IDirective, IScope } from \"angular\";\n\n/* Directive */\nclass Directive implements IDirective<IScope,JQLite,IAttributes,IController[]> {\n\trequire= '^popover';\n\trestrict= 'E';\n\n link(scope:IScope, elem:JQLite, attrs:IAttributes, controllers?:IController[]): void {\n\t\telem.addClass(\"d-none\");\n\t}\n}\n\n/** The popover-content directive.\n *\n * Usage:\n * <popover><button popover-opener/><popover-content></popover-content></popover>\n */\nexport function DirectiveFactory() {\n\treturn new Directive();\n}","import angular, { IAttributes, IController, IDirective, IScope } from \"angular\";\n\n/* Directive */\nclass Directive implements IDirective<IScope,JQLite,IAttributes,IController[]> {\n\trequire= '^popover';\n\tlink(scope:IScope, elem:JQLite, attrs:IAttributes, controllers?:IController[]): void {\n\t\tconst parentNode = (tag => {\n\t\t\ttag = tag.toUpperCase();\n\t\t\tlet parent:HTMLElement = elem[0];\n\t\t\tdo {\n\t\t\t\tparent = parent.parentNode as HTMLElement;\n\t\t\t} while( parent && parent.nodeName.toUpperCase()!==tag );\n\t\t\treturn parent ? angular.element(parent) : elem;\n\t\t})('popover');\n\n\t\tconst mouseEvent = parentNode.attr('mouse-event') || 'mouseover';\n\t\tconst popover = parentNode.find('popover-content');\n\t\tparentNode.on(mouseEvent, function (e) {\n\t\t\tif (mouseEvent === 'click') {\n\t\t\t\tif (popover.hasClass('d-none')) {\n\t\t\t\t\te.stopPropagation();\n\t\t\t\t}\n\n\t\t\t\tangular.element(document.querySelector('body') as HTMLBodyElement).one('click', function (e) {\n\t\t\t\t\tparentNode.triggerHandler('close');\n\t\t\t\t\tpopover.addClass(\"d-none\");\n\t\t\t\t});\n\t\t\t}\n\t\t\t/*FIXME without jQuery */\n\t\t\tconst coords = popover.offset();\n\t\t\tconst w = popover.width() || 0;\t\tconst ww = $(window).width() || 0;\n\t\t\tconst h = popover.height() || 0;\tconst wh = $(window).width() || 0;\n\t\t\tif( coords ) {\n\t\t\t\tif(coords.left + w > ww){\n\t\t\t\t\tpopover.addClass('right');\n\t\t\t\t}\n\t\t\t\tif(coords.left < 0){\n\t\t\t\t\tpopover.addClass('left');\n\t\t\t\t}\n\t\t\t\tif(coords.top + h > wh){\n\t\t\t\t\tpopover.addClass('bottom');\n\t\t\t\t}\n\t\t\t}\n\t\t\tpopover.removeClass(\"d-none\");\n\t\t});\n\n\t\tif(mouseEvent === 'mouseover') {\n\t\t\tparentNode.on('mouseout', function (e) {\n\t\t\t\tparentNode.triggerHandler('close');\n\t\t\t\tpopover.addClass(\"d-none\");\n\t\t\t});\n\t\t}\n\t}\n}\n\n/** The popover-opener directive.\n *\n * Usage:\n * <popover><button popover-opener/><popover-content></popover-content></popover>\n */\n export function DirectiveFactory() {\n\treturn new Directive();\n}","import { IAttributes, IController, IDirective, IScope } from \"angular\";\n\nexport class PulsarController implements IController {\n constructor() {\n }\n}\n\n/* Directive */\nclass Directive implements IDirective<IScope,JQLite,IAttributes,IController[]> {\n\tcontroller= [PulsarController];\n\trestrict= 'E';\n link(scope:IScope, elem:JQLite, attrs:IAttributes, controllers?:IController[]): void {\n\t\telem.on('close', () => {\n\t\t\tif(attrs.onClose){\n\t\t\t\tscope.$eval(attrs.onClose);\n\t\t\t}\n\t\t});\n\t}\n}\n\n/** The popover directive.\n *\n * Usage:\n * <popover><button popover-opener/><popover-content></popover-content></popover>\n */\nexport function DirectiveFactory() {\n\treturn new Directive();\n}","import { IAttributes, IController, IDirective, IScope } from \"angular\";\nimport { NgHelperService, NotifyService, QuickstartService } from \"../../../services\";\nimport $ from \"jquery\"; // FIXME : remove jQuery dependency \n\n/* Controller for the directive */\nexport class Controller implements IController {\n constructor(\n public quickstart:QuickstartService\n ) {\n }\n\n show = { assistant: false };\n steps:any;\n token?:NodeJS.Timeout;\n currentStep:any;\n\n public hidePulsars = () => {\n $('.pulsar-button').addClass('hidden');\n //this.token = setTimeout(this.hidePulsars, 50);\n // cache TOUS les pulsars\n }\n\n private clearTimeout() {\n if( this.token ) {\n clearTimeout(this.token);\n } \n }\n\n goTo(step:any){\n this.quickstart.goTo(step.index);\n this.currentStep = this.quickstart.assistantIndex;\n };\n\n next(){\n this.quickstart.nextAssistantStep();\n this.currentStep = this.quickstart.assistantIndex;\n if(!this.quickstart.assistantIndex){\n this.show.assistant = false;\n $('.pulsar-button').removeClass('hidden');\n this.clearTimeout();\n }\n };\n\n previous(){\n this.quickstart.previousAssistantStep();\n this.currentStep = this.quickstart.assistantIndex;\n };\n\n seeLater(){\n this.show.assistant = false;\n $('.pulsar-button').removeClass('hidden');\n this.clearTimeout();\n this.quickstart.seeAssistantLater();\n };\n\n closeAssistant(){\n this.show.assistant = false;\n $('.pulsar-button').removeClass('hidden');\n this.clearTimeout();\n this.quickstart.state.assistant = -1;\n this.quickstart.save();\n }; \n}\n\n/* Directive */\nclass Directive implements IDirective<IScope,JQLite,IAttributes,IController[]> {\n restrict = 'E';\n\ttemplateUrl = require(\"./assistant.directive.lazy.html\").default;\n scope= true;\n\tbindToController = true;\n\tcontroller = [\"odeQuickstartService\", Controller];\n\tcontrollerAs = 'ctrl';\n\trequire = ['assistant'];\n\n link(scope:IScope, elem:JQLite, attr:IAttributes, controllers?:IController[]): void {\n let ctrl:Controller|null = controllers ? controllers[0] as Controller : null;\n \n\t\tif( !ctrl || this.helperSvc.viewport <= this.helperSvc.FAT_MOBILE ) { /* TODO contrôle à appliquer à l'aide d'une directive ?*/\n\t\t\treturn;\n\t\t}\n\n ctrl.quickstart.load( () => {\n if( ctrl ) {\n if(ctrl.quickstart.state.assistant === -1 || ctrl.quickstart.mySteps.length === 0){\n return;\n }\n ctrl.hidePulsars();\n ctrl.show.assistant = true;\n ctrl.currentStep = ctrl.quickstart.assistantIndex;\n ctrl.steps = ctrl.quickstart.mySteps;\n scope.$apply();\n }\n });\n }\n\n /* Constructor with Dependency Injection */\n constructor(\n private helperSvc:NgHelperService\n ) {\n }\n}\n\n/**\n * The assistant directive.\n *\n * Usage:\n * <assistant ></assistant>\n */\nexport function DirectiveFactory(\n\todeNgHelperService:NgHelperService, \n ) {\n\treturn new Directive(odeNgHelperService);\n}\nDirectiveFactory.$inject = [\"odeNgHelperService\"];\n","import angular, { IAttributes, ICompileService, IController, IDirective, IScope } from \"angular\";\nimport { NgHelperService, QuickstartService } from \"../../../services\";\nimport { conf, session, http, TrackedAction } from \"../../../utils\";\nimport $ from \"jquery\"; // FIXME : remove jQuery dependency \n\n/* Local types */\ntype PulsarInfos = {\n\tindex:number, \n\ti18n:string, \n\tposition:string, \n\tclassName:string,\n\tworkflow?:string,\n\tel?:HTMLElement,\n\tsteps:PulsarInfos[],\n\tdelta?:string,\n\tstyle?:{ \n\t\tzIndex?:number\n\t}\n};\n\n/*\n *\tCustomized scope for the directive.\n *\tRequired for compatibility with old pulsar templates.\n */\ninterface Scope extends IScope {\n\tme?:{\n\t\thasWorkflow(right:string):boolean;\n\t};\n\tpulsarInfos: PulsarInfos;\n\tclosePulsar: ()=>void;\n\tpaintPulsar: ()=>void;\n\tisLastStep: () => void;\n\tgoTo: (step:PulsarInfos) => void;\n\tnext: () => void;\n\tprevious: () => void;\n trackEvent: (target:EventTarget, p:CustomEventInit<TrackedAction>)=>void;\n}\n\ntype XPosition = \"center\"|\"left\"|\"right\";\ntype YPosition = \"center\"|\"top\"|\"bottom\";\n\n/* Directive */\nclass Directive implements IDirective<Scope,JQLite,IAttributes,IController[]> {\n\trestrict= 'A';\n\tscope= true;\n\n link(scope:Scope, elem:JQLite, attrs:IAttributes, controllers?:IController[]): void {\n\t\tconst idiom = conf().Platform.idiom;\n\n\t\tif( !elem ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Legacy code (angular templates in old format)\n\t\tscope.me = {\n\t\t\thasWorkflow: session().hasWorkflow\n\t\t};\n\n\t\tif( this.helperSvc.viewport <= this.helperSvc.TABLET || /* TODO contrôle à appliquer à l'aide d'une directive ?*/\n\t\t\t!scope.me.hasWorkflow('org.entcore.portal.controllers.PortalController|quickstart')){\n\t\t\treturn;\n\t\t}\n\n\t\tconst pulsarInfos:PulsarInfos = scope.$eval(attrs.pulsar);\n\n\t\tif( pulsarInfos.workflow && !scope.me.hasWorkflow(pulsarInfos.workflow) ) {\n\t\t\telem.removeAttr('pulsar'); // ne remonte pas dans liste steps\n\t\t\treturn;\n\t\t}\n\t\t/* FIXME code vraisemblablement buggé, à revoir : quelle était l'intention ?\n\t\tif(!scope.me.hasWorkflow(pulsarInfos.workflow)){\n\t\t\telem.removeAttr('pulsar'); // ne remonte pas dans liste steps\n\t\t\treturn;\n\t\t}\n\n\t\tif(pulsarInfos.workflow && !scope.me.hasWorkflow(pulsarInfos.workflow)){\n\t\t\telem.data('skip-pulsar', 'true');// ne remonte pas dans liste steps\n\t\t\t//vire les pulsars qui ont pas les droits (pb si dernier & premier !!)\n\t\t\treturn;\n\t\t}\n\t\t*/\n\n\t\tscope.pulsarInfos = pulsarInfos;\n\t\tscope.pulsarInfos.steps = [];\n\n\t\tlet pulsars = $('[pulsar]');\n\t\tpulsars.each( (index, element) => {\n\t\t\tlet infos = angular.element(element).scope().$eval( $(element).attr('pulsar') as any );\n\t\t\tinfos.el = element;\n\t\t\tscope.pulsarInfos.steps.push(infos);\n\t\t});\n\n\t\tif(typeof pulsarInfos !== 'object' || pulsarInfos.index === undefined){\n\t\t\tconsole.error('Invalid pulsar object. Should look like pulsar=\"{ index: 0, i18n: \\'my.key\\', position: \\'top bottom\\'}\"')\n\t\t}\n\n\t\tlet pulsarButton:JQLite|null=null;\n\t\tlet pulsarElement:JQLite|null=null;\n\t\t// content box\n\n\t\tlet pulsarSize = 30;\n\t\tlet pulsarMarge = 5;\n\t\tlet pulsarLayerMarge = 10;\n\n\t\tlet paintPulsar = () => {\n\t\t\tif(!pulsarInfos.position){\n\t\t\t\tpulsarInfos.position = 'center center';\n\t\t\t}\n\t\t\tlet xPosition:XPosition = 'center';\n\t\t\tif(pulsarInfos.position.indexOf('left') !== -1){\n\t\t\t\txPosition = 'left';\n\t\t\t}\n\t\t\tif(pulsarInfos.position.indexOf('right') !== -1){\n\t\t\t\txPosition = 'right';\n\t\t\t}\n\n\t\t\tlet yPosition:YPosition = 'center';\n\t\t\tif(pulsarInfos.position.indexOf('top') !== -1){\n\t\t\t\tyPosition = 'top';\n\t\t\t}\n\t\t\tif(pulsarInfos.position.indexOf('bottom') !== -1){\n\t\t\t\tyPosition = 'bottom';\n\t\t\t}\n\n\t\t\t// FIXME: embedded CSS\n\t\t\tif( ! document.querySelector(\"style#pulsar-css\") ) {\n\t\t\t\t$( require('./pulsar.directive.html').default ).appendTo('body');\n\t\t\t}\n\n\t\t\tpulsarButton = $(`\n\t\t\t\t<div class=\"pulsar-button\">\n\t\t\t\t\t<div class=\"pulse-spot\"></div>\n\t\t\t\t</div>\n\t\t\t`).appendTo('body');\n\n\t\t\tif(pulsarInfos.className){\n\t\t\t\tpulsarInfos.className.split(' ').forEach(function(cls){\n\t\t\t\t\tpulsarButton?.addClass(cls);\n\t\t\t\t});\n\t\t\t}\n\n\t\t\tpulsarButton.data('active', true);\n\n\t\t\tlet firstCycle = true;\n\t\t\tlet placePulsar = () => {\n\t\t\t\tlet deltaX = 0;\n\t\t\t\tlet deltaY = 0;\n\n\t\t\t\tif(typeof pulsarInfos.delta === \"string\"){\n\t\t\t\t\tpulsarInfos.delta = idiom.translate(pulsarInfos.delta)\n\t\t\t\t\tdeltaX = parseInt(pulsarInfos.delta.split(' ')[0]);\n\t\t\t\t\tdeltaY = parseInt(pulsarInfos.delta.split(' ')[1]);\n\t\t\t\t}\n\n\t\t\t\tconst elemOffset = elem.offset() ?? {left:0, top:0};\n\t\t\t\tconst elemWidth = elem.width() ?? 0;\n\t\t\t\tconst elemHeight = elem.height() ?? 0;\n\t\t\t\t//console.log( \"elemOffset=\"+ elemOffset.toString() +\", elemWidth =\"+elemWidth.toString() +\", elemHeight=\"+elemHeight.toString() );\n\t\t\t\tlet xPositions = {\n\t\t\t\t\tleft: elemOffset.left - (pulsarSize + pulsarMarge),\n\t\t\t\t\tright: elemOffset.left + elemWidth + pulsarMarge,\n\t\t\t\t\tcenter: elemOffset.left + (elemWidth / 2) - pulsarSize / 2\n\t\t\t\t};\n\n\t\t\t\tlet yPositions = {\n\t\t\t\t\ttop: elemOffset.top,\n\t\t\t\t\tbottom: elemOffset.top + elemHeight + pulsarMarge,\n\t\t\t\t\tcenter: elemOffset.top + (elemHeight / 2) - pulsarSize / 2\n\t\t\t\t};\n\n\t\t\t\tif(pulsarInfos.position === 'top center'){\n\t\t\t\t\tyPositions.top = elemOffset.top - pulsarSize - pulsarMarge;\n\t\t\t\t}\n\n\n\t\t\t\tif(pulsarButton?.css('display') !== 'none'){\n\t\t\t\t\tpulsarButton?.offset({ left: xPositions[xPosition]+deltaX, top: yPositions[yPosition]+deltaY });\n\t\t\t\t\t// Adjust style as required (z-index)\n\t\t\t\t\tif( pulsarInfos.style && typeof pulsarInfos.style.zIndex===\"number\" ) {\n\t\t\t\t\t\tpulsarButton?.css('z-index', pulsarInfos.style.zIndex);\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tif(pulsarElement && pulsarElement.find('.arrow').length){\n\n\t\t\t\t\tlet left = xPositions[xPosition] - (pulsarElement.children('.content').width()??0) - pulsarSize / 2\n\t\t\t\t\tlet top = yPositions[yPosition] - pulsarLayerMarge ;\n\n\t\t\t\t\tif(yPosition === 'top' && xPosition === 'center'){\n\t\t\t\t\t\ttop = yPositions[yPosition] - (pulsarElement.children('.content').height()??0) - pulsarSize / 2;\n\t\t\t\t\t}\n\t\t\t\t\tif(yPosition === 'center'){\n\t\t\t\t\t\ttop = yPositions[yPosition] - ((pulsarElement.children('.content').height()??0) / 2);\n\n\t\t\t\t\t\t//top = yPositions[yPosition] - (pulsarElement.children('.content').width() / 2) + pulsarLayerMarge + pulsarMarge * 2;\n\t\t\t\t\t}\n\t\t\t\t\tif(xPosition === 'center'){\n\t\t\t\t\t\tleft = (xPositions[xPosition] - ((pulsarElement.children('.content').width()??0) / 2)) -2;\n\t\t\t\t\t}\n\t\t\t\t\tif(yPosition === 'center' && xPosition === 'center'){\n\t\t\t\t\t\tpulsarElement.addClass('middle');\n\t\t\t\t\t\tyPosition = 'bottom';\n\t\t\t\t\t}\n\t\t\t\t\tif(xPosition === 'right'){\n\t\t\t\t\t\tleft = xPositions[xPosition] + pulsarLayerMarge + pulsarMarge * 2;\n\t\t\t\t\t}\n\t\t\t\t\tif(yPosition === 'bottom'){\n\t\t\t\t\t\tif(xPosition === 'center'){\n\t\t\t\t\t\t\ttop = yPositions[yPosition] + pulsarLayerMarge + pulsarMarge * 2;\n\t\t\t\t\t\t}else{\n\t\t\t\t\t\t\ttop = yPositions[yPosition] - (pulsarLayerMarge + pulsarMarge);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\n\t\t\t\t// If pulsarElement position is cropped by browser:\n\t\t\t\t\tconst windowWidth = ($(window).width() ?? 0);\n\t\t\t\t\tconst windowHeight = ($(window).height() ?? 0);\n\n\t\t\t\t\tvar pulsarElementMarge = 15;\n\n\t\t\t\t\tvar oldTop = top;\n\t\t\t\t\tvar oldLeft = left\n\n\t\t\t\t\tvar maxX = oldLeft + (pulsarElement.width() ?? 0) + pulsarElementMarge;\n\t\t\t\t\tvar maxY = oldTop + (pulsarElement.height() ?? 0) + pulsarElementMarge\n\n\t\t\t\t\tvar newLeft = windowWidth - ((pulsarElement.width() ?? 0) + pulsarElementMarge);\n\t\t\t\t\tvar newBottom = windowHeight - ((pulsarElement.height() ?? 0) + pulsarElementMarge);\n\n\t\t\t\t\tvar gapLeft = oldLeft - newLeft;\n\t\t\t\t\tvar gapRight = pulsarElementMarge - (oldLeft);\n\t\t\t\t\tvar gapBottom = oldTop - newBottom;\n\t\t\t\t\tvar gapTop = pulsarElementMarge - (oldTop);\n\n\t\t\t\t\tvar arrow = pulsarElement.find('.arrow');\n\t\t\t\t\tvar arrowXpos = arrow.position().left;\n\t\t\t\t\tvar arrowYpos = arrow.position().top;\n\n\t\t\t\t\t//console.log('init posY ' + arrowYpos);\n\n\t\t\t\t\t//// X CORRECT\n\n\t\t\t\t\t//right\n\t\t\t\t\tif(maxX > windowWidth) {\n\n\t\t\t\t\t\tleft = windowWidth - ((pulsarElement.width() ?? 0) + pulsarElementMarge);\n\t\t\t\t\t\tif(xPosition === 'center'){\n\t\t\t\t\t\t\tif(firstCycle){\n\t\t\t\t\t\t\t\tarrow.css({left : arrowXpos + gapLeft, right : 'auto'});\n\t\t\t\t\t\t\t\tfirstCycle = false;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\t//left\n\t\t\t\t\tif(left <= pulsarElementMarge){\n\n\t\t\t\t\t\tleft = pulsarElementMarge;\n\t\t\t\t\t\tif(xPosition === 'center'){\n\t\t\t\t\t\t\tif(firstCycle){\n\t\t\t\t\t\t\t\tarrow.css({left : gapRight + pulsarLayerMarge, right : 'auto'});\n\t\t\t\t\t\t\t\tfirstCycle = false;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\t//// Y CORRECT\n\n\t\t\t\t\t//bottom\n\t\t\t\t\tif(maxY > windowHeight){\n\t\t\t\t\t\ttop = newBottom;\n\t\t\t\t\t\tif(yPosition === 'bottom'){\n\t\t\t\t\t\t\tif(firstCycle){\n\t\t\t\t\t\t\t\tarrow.css({top : gapBottom + pulsarMarge, bottom : 'auto'});\n\t\t\t\t\t\t\t\tfirstCycle = false;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\t//top --ok\n\t\t\t\t\tif(top < pulsarElementMarge){\n\t\t\t\t\t\ttop = pulsarElementMarge;\n\n\t\t\t\t\t\tif(yPosition === 'center' && xPosition !== 'center'){\n\t\t\t\t\t\t\tif(firstCycle){\n\t\t\t\t\t\t\t\tarrow.css({top : (arrowYpos - gapTop), bottom : 'auto'});\n\t\t\t\t\t\t\t\tfirstCycle = false;\n\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\t// apply content box position\n\t\t\t\t\tpulsarElement.offset({\n\t\t\t\t\t\tleft: left + deltaX,\n\t\t\t\t\t\ttop: top + deltaY\n\t\t\t\t\t});\n\t\t\t}\n\t\t\t\tsetTimeout(placePulsar, 100);\n\t\t\t}\n\t\t\tplacePulsar();\n\n\n\t\t\tvar placeLayers = () => {\n\t\t\t\tlet pulsarHighlight;\n\t\t\t\t$('.pulsar-layer').remove();\n\n\t\t\t\tvar check = '[pulsar-highlight=' + pulsarInfos.index +']';\n\t\t\t\tvar highlight = $( \"body\" ).find(check);\n\t\t\t\tif(highlight.length !== 0){\n\t\t\t\t\tpulsarHighlight = highlight;\n\t\t\t\t}\n\n\t\t\t\tif(!pulsarHighlight){\n\t\t\t\t\tpulsarHighlight = elem;\n\t\t\t\t}\n\n\t\t\t\t $('<div class=\"pulsar-layer\"></div>')\n\n\t\t\t\t\t.width((pulsarHighlight.outerWidth() ?? 0) + pulsarLayerMarge * 2)\n\t\t\t\t\t.height((pulsarHighlight.outerHeight() ?? 0) + pulsarLayerMarge * 2)\n\t\t\t\t\t.offset({ top: (pulsarHighlight?.offset()?.top ?? 0) - pulsarLayerMarge, left: (pulsarHighlight?.offset()?.left ?? 0) - pulsarLayerMarge, })\n\t\t\t\t\t.css({position: \"absolute\"})\n\t\t\t\t\t.hide()\n\t\t\t\t\t.appendTo('body')\n\t\t\t\t\t.fadeIn(\"slow\");\n\t\t\t};\n\n\t\t\tpulsarButton.on('click', (e) => {\n\t\t\t\t$('body').css('pointer-events', 'none');\n\t\t\t\t$('body').on('scroll touchmove mousewheel', function(e){\n\t\t\t\t e.preventDefault();\n\t\t\t\t e.stopPropagation();\n\t\t\t\t return false;\n\t\t\t\t});\n\n\t\t\t\t// Track the '\"click pulsar button\" event'\n\t\t\t\tif( scope.pulsarInfos.index <= 0 ) {\n\t\t\t\t\tscope.trackEvent( elem[0], {detail:{'open':'true'}} );\n\t\t\t\t}\n\n\t\t\t\tscope.pulsarInfos.steps = [];\n\t\t\t\tpulsars = $('[pulsar]');\n\t\t\t\t//recup tt les pulsar\n\n\t\t\t\tpulsars.each(function(index, element){\n\t\t\t\t\t//on recup les infos de chaque pulsar\n\t\t\t\t\tlet infos = angular.element(element).scope().$eval( $(element).attr('pulsar') as any );\n\t\t\t\t\tinfos.el = element;\n\t\t\t\t\tscope.pulsarInfos.steps.push(infos);\n\t\t\t\t});\n\n\t\t\t\t// create content box\n\t\t\t\tpulsarElement = $('<pulsar></pulsar>')\n\t\t\t\t\t.addClass(xPosition)\n\t\t\t\t\t.addClass(yPosition);\n\t\t\t\tif(pulsarInfos.className){\n\t\t\t\t\tpulsarInfos.className.split(' ').forEach( cls => {\n\t\t\t\t\t\tpulsarElement?.addClass(cls);\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t\tpulsarButton?.hide();\n\t\t\t\tplaceLayers();\n\t\t\t\t$(window).on('resize.placeLayers', placeLayers);\n\t\t\t\t//scroll voir hauteur document ou bloquer scroll\n\t\t\t\t// ok pour xp on layers\n\n\t\t\t\thttp().get<string>('/infra/public/template/pulsar.html').then( html => {\n\t\t\t\t\tlet tmp = $(html);\n\t\t\t\t\ttmp.find('button').addClass('btn btn-primary');\n\t\t\t\t\tlet scoped = this.$compile(tmp)(scope);\n\t\t\t\t\tpulsarElement?.html( scoped as any );\n\t\t\t\t});\n\t\t\t\t$('body').append(pulsarElement);\n\t\t\t});\n\t\t}\n\n\t\tangular.element(window).on('resize', () => {\n\t\t\tif(pulsarButton && pulsarButton.data('active')){\n\t\t\t\tpulsarButton.css('display', '');\n\t\t\t}\n\t\t});\n\n\t\tlet firstCycle = false;\n\n\t\tconst undraw = () => {\n\t\t\t// chaque nextStep + end\n\t\t\tpulsarElement?.find('button').css('pointer-events', 'none');\n\t\t\t$(window).off('resize.placeLayers');\n\t\t\tpulsarButton?.fadeOut('slow', function(){ pulsarButton?.remove() });\n\t\t\tpulsarElement?.fadeOut('slow', function(){ pulsarElement?.remove() });\n\t\t\t$('.pulsar-layer').remove();\n\t\t\t$('body').off('scroll touchmove mousewheel');\n\t\t\t$('body').css('pointer-events', '');\n\t\t\tfirstCycle = true;\n\t\t\tpulsarButton?.data('active', false);\n\t\t}\n\n\t\tscope.closePulsar = () => {\n\t\t\tif(!pulsarElement || !pulsarButton){\n\t\t\t\treturn\n\t\t\t}\n\t\t\tpulsarElement.fadeOut(0 , function(){ pulsarElement?.remove() });\n\t\t\tpulsarButton.removeClass('hidden');\n\t\t\t$('.pulsar-layer').fadeOut(0 , function(){ $('.pulsar-layer').remove() });\n\t\t\t$('body').off('scroll touchmove mousewheel');\n\t\t\t$('body').css('pointer-events', '');\n\t\t\tfirstCycle = true;\n\t\t\tpulsarButton.data('active', false);\n\n\t\t};\n\t\tangular.element(document).on('click', (e) => {\n\t\t\tif(\n\t\t\t\t$(e.target).parents('pulsar').length > 0 ||\n\t\t\t\t$(e.target).parents('.pulsar-button').length > 0 ||\n\t\t\t\t$(e.target).hasClass('pulsar-button')\n\t\t\t){\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tscope.closePulsar();\n\t\t});\n\n\t\tscope.paintPulsar = () => {\n\t\t\tpaintPulsar();\n\t\t\tpulsarButton?.triggerHandler('click');\n\t\t};\n\n\t\tscope.isLastStep = function(){\n\t\t\treturn scope.pulsarInfos.steps.find( step => {\n\t\t\t\treturn step.index > scope.pulsarInfos.index;\n\t\t\t}) === undefined;\n\t\t};\n\n\t\tscope.goTo = (step:PulsarInfos) => {\n\t\t\tundraw();\n\t\t\tthis.quickstartSvc.goToAppStep(step.index);\n\t\t\tif(step.el) {\n\t\t\t\t(angular.element(step.el).scope() as Scope).paintPulsar();\n\t\t\t}\n\n\t\t};\n\n\t\tscope.next = () => {\n\t\t\tundraw();\t// hide current step\n\t\t\tlet index = this.quickstartSvc.nextAppStep();\n\t\t\tlet item = scope.pulsarInfos.steps.find(item => item.index===index); // look for next step\n\t\t\tif( item === undefined){\n\t\t\t\t// Next step is undefined, so look for any other one after it.\n\t\t\t\tif( scope.pulsarInfos.steps.find(item => item.index>index) !== undefined ) {\n\t\t\t\t\tscope.next();\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tif(item.el){\n\t\t\t\t\tif(angular.element(item.el).data('skip-pulsar')){\n\t\t\t\t\t\t// This step is intended to be skipped => find the next one\n\t\t\t\t\t\tscope.next();\n\t\t\t\t\t} else {\n\t\t\t\t\t\t// Next step found and painted\n\t\t\t\t\t\t(angular.element(item.el).scope() as Scope).paintPulsar();\n\t\t\t\t\t}\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t}\n\t\t\t// That was the last step ! Track this event.\n\t\t\tscope.trackEvent( elem[0], {detail:{'open':'false'}} );\n\t\t};\n\n\t\tscope.previous = () => {\n\t\t\tundraw();\n\t\t\tlet index = this.quickstartSvc.previousAppStep();\n\t\t\tif(scope.pulsarInfos.steps.find(item => item.index===index) === undefined){\n\t\t\t\tif(scope.pulsarInfos.steps.find(item => item.index<index) !== undefined){\n\t\t\t\t\tscope.previous();\n\t\t\t\t}\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tfor(let i = 0; i < scope.pulsarInfos.steps.length; i++){\n\t\t\t\tlet item = scope.pulsarInfos.steps[i];\n\t\t\t\tif(item.index === index && item.el){\n\t\t\t\t\tif(angular.element(item.el).data('skip-pulsar')){\n\t\t\t\t\t\tscope.previous();\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\t\t\t\t\t(angular.element(item.el).scope() as Scope).paintPulsar();\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\n\t\t// Give an opportunity to track some events from outside of this component.\n\t\tscope.trackEvent = (target:EventTarget, p:CustomEventInit<TrackedAction>) => {\n\t\t\t// Allow events to bubble up.\n\t\t\tif(typeof p.bubbles === \"undefined\") p.bubbles = true;\n\n\t\t\tlet event = new CustomEvent( \"pulsar\", p );\n\t\t\tif( event && target ) {\n\t\t\t\ttarget.dispatchEvent(event);\n\t\t\t}\n\t\t}\n\n\t\tthis.quickstartSvc.load( () => {\n\t\t\tif(this.quickstartSvc.appIndex() === pulsarInfos.index){\n\t\t\t\tpaintPulsar();\n\t\t\t}\n\t\t});\n\t}\n\n constructor( \n\t\tprivate $compile:ICompileService,\n private helperSvc:NgHelperService,\n private quickstartSvc:QuickstartService\n ) {}\n}\n\n/** The pulsar directive.\n *\n * Usage:\n * <a pulsar=\"{ index: 3, i18n: 'portal.pulsar.apps', position: 'bottom center'}\"></a>\n */\nexport function DirectiveFactory(\n\t$compile:ICompileService,\n\todeNgHelperService:NgHelperService, \n\todeQuickstartService:QuickstartService\n\t) {\n\treturn new Directive($compile, odeNgHelperService, odeQuickstartService);\n}\nDirectiveFactory.$inject=[\"$compile\", \"odeNgHelperService\", \"odeQuickstartService\" ];","/* From the Explorer prototype */\nexport * as Explorer from './business/explorer/explorer.directive';\nexport * as Sidebar from './business/explorer/sidebar.directive';\nexport * as SidebarFolder from './business/explorer/sidebar-folder.directive';\nexport * as ResourceList from './business/explorer/resource-list.directive';\nexport * as DominoFolder from './business/explorer/domino-folder.directive';\nexport * as DominoItem from './business/explorer/domino-item.directive';\nexport * as Toaster from './business/toaster/toaster.directive';\nexport * as Modal from './components/modal/modal.directive';\nexport * as ModalContainer from './components/modal/modal-container.directive';\nexport * as PropsPanel from './business/props/props-panel.directive';\nexport * as SharePanel from './business/share/share-panel.directive';\n\n/* Legacy (ported from infra-front) */\nexport * as Translate from './components/i18n/translate.directive';\nexport * as I18n from './components/i18n/i18n.directive';\nexport * as I18nValue from './components/i18n/i18n-value.directive';\nexport * as I18nTitle from './components/i18n/i18n-title.directive';\nexport * as I18nPlaceholder from './components/i18n/i18n-placeholder.directive';\nexport * as I18nFilter from './components/i18n/i18n.filter';\n\nexport * as NavigationTrigger from './components/navigation/navigation-trigger.directive';\nexport * as GuardRoot from './components/navigation/guard-root.directive';\nexport * as InputGuard from './components/navigation/input-guard.directive';\nexport * as DirtyGuard from './components/navigation/dirty-guard.directive';\nexport * as DocumentGuard from './components/navigation/document-guard.directive';\nexport * as CustomGuard from './components/navigation/custom-guard.directive';\nexport * as ResetGuard from './components/navigation/reset-guard.directive';\n\nexport * as AppTitle from './components/app-title/app-title.directive';\nexport * as Assistant from './components/pulsar/assistant.directive';\nexport * as Pulsar from './components/pulsar/pulsar.directive';\nexport * as Popover from './components/popover/popover.directive';\nexport * as PopoverContent from './components/popover/popover-content.directive';\nexport * as PopoverOpener from './components/popover/popover-opener.directive';\nexport * as Lightbox from './components/modal/lightbox.directive';\nexport * as ConnectorLightbox from './business/portal/connector-lightbox.directive';\nexport * as SmartBanner from './business/portal/smart-banner.directive';\nexport * as Help from './business/portal/help.directive';\nexport * as Autocomplete from './components/autocomplete/autocomplete.directive';\nexport * as BindHtml from './business/media/bind-html.directive';\nexport * as Xiti from './business/portal/xiti.directive';\n\n/* New generation components */\nexport * as Portal from './business/portal/portal.directive';\nexport * as Navbar from './business/portal/navbar.directive';\nexport * as WithTheme from './business/theme/with-theme.directive';\nexport * as SkinSrc from './business/theme/skin-src.directive';\nexport * as Logout from './business/portal/logout.directive';\nexport * as Infotip from './components/modal/infotip.directive';\nexport * as Recorder from './business/media/recorder.directive'\nexport * as WidgetContainer from './widget/widget-container.directive';\nexport * as Widget from './widget/widget.directive';\n","import angular, { IAttributes, IController, IDirective, IScope } from \"angular\";\nimport { IWidget, WidgetFrameworkFactory, WidgetPosition } from \"ode-ts-client\";\nimport { NgHelperService, WidgetService } from \"../../services\";\nimport { TrackedAction, TrackedScope, TrackedActionFromWidget } from \"../../utils\";\n\n\n/* Controller for the directive */\nexport class Controller implements IController {\n constructor(\n\t\tpublic widgetSvc: WidgetService,\n\t\tpublic helperSvc: NgHelperService\n\t\t) {\n }\n position?: WidgetPosition;\n\t/** Ordered list of widgets, which the user can reorder by DnD. */\n\tdndWidgets?: IWidget[];\n\t/** Ordered list of widgets, which the user can NOT reorder by DnD. */\n\tlockedWidgets?: IWidget[];\n\n\t/** Animation helper function to signal that drag'n'drop is not allowed. */\n\tsignalReject?: ()=>void;\n\n\t/** Prepare the list of widgets targeting this container. */\n\tloadWidgets() {\n\t\tconst onIndex = (a:IWidget,b:IWidget) => {\n\t\t\treturn a.userPref.index < b.userPref.index\n\t\t\t\t? -1 \n\t\t\t\t: a.userPref.index === b.userPref.index ? 0 : 1;\n\t\t};\n\t\tthis.dndWidgets = this.widgetSvc.list()\n\t\t\t.filter( w => w.userPref.position===this.position && w.userPref.show && !w.platformConf.mandatory )\n\t\t\t.sort( onIndex );\n\t\tthis.lockedWidgets = this.widgetSvc.list()\n\t\t\t.filter( w => w.userPref.position===this.position && w.platformConf.mandatory )\n\t\t\t.sort( onIndex );\n\t}\n\n\t/** Save current widgets configuration as user's preferences. */\n\tupdateAndSave() {\n\t\tthis.dndWidgets?.forEach( (w,i) => {\n\t\t\tw.userPref.index = i;\n\t\t});\n\t\t// No need to save locked widgets, they will never move.\n\t\treturn WidgetFrameworkFactory.instance().saveUserPrefs();\n\t}\n\n\t/** Truthy if the widget is targeting this container. */\n\tcheckPosition( widget:IWidget ):boolean {\n\t\treturn widget.userPref?.position === this.position || (widget.userPref?.position===\"left\" && !this.position );\n\t}\n\n\t/** Get the type of DnD this container accepts. */\n\tget allowedDndTypes():string[] {\n\t\treturn [\"\"+this.position];\n\t}\n\n\tget isMobileView():boolean {\n\t\treturn this.helperSvc.viewport<992;\n\t}\n\n\t/* return true when the item can be dropped at specified index; see doc https://github.com/marceljuenemann/angular-drag-and-drop-lists */\n\tonDnDDragOver(event:DragEvent, index:number, type:string, dropEffect:string) {\n\t\tconst allowed = type===this.position;\n\t\tconsole.log( \"index=\"+index+\", type=\"+type+\", dropEffect=\"+dropEffect+\", allowed=\"+allowed );\n\t\tif( !allowed ) {\n\t\t\tthis.signalReject && this.signalReject();\n\t\t}\n\t\treturn allowed;\n\t}\n\n\tonDnDDrop(event:DragEvent, itemId:string, index:number, dropEffect:string) {\n\t\tif( this.dndWidgets && 0<=index && index<=this.dndWidgets.length ) {\n\t\t\tconst oldIdx = this.dndWidgets.findIndex( w => {\n\t\t\t\treturn w.platformConf.id===itemId\n\t\t\t});\n\t\t\tif( oldIdx===-1 || oldIdx === index ) {\n\t\t\t\t// No change.\n\t\t\t\treturn false;\n\t\t\t}\n\n\t\t\tconst item = this.dndWidgets[oldIdx];\n\t\t\tthis.dndWidgets.splice( oldIdx, 1 );\n\t\t\tif( index > 0 && index >= oldIdx) {\n\t\t\t\t// Adjust new index since it has just changed.\n\t\t\t\tindex--;\n\t\t\t}\n\t\t\tthis.dndWidgets.splice( index, 0, item );\n\n\t\t\t// DnD tracking : indexes are 1-based\n\t\t\tthis.trackEvent(event, {detail:{'move':item.platformConf.name, 'from':oldIdx+1, 'to':index+1} });\n\n\t\t\tthis.updateAndSave();\n\n\t\t\t// return true when the function takes care of inserting the element, see doc https://github.com/marceljuenemann/angular-drag-and-drop-lists\n\t\t\treturn true;\n\t\t}\n\t\treturn false;\n\t}\n\n // Give an opportunity to track some events from outside of this component.\n protected trackEvent(e:Event, p:CustomEventInit<TrackedAction>) {\n // Allow events to bubble up.\n if(typeof p.bubbles === \"undefined\") p.bubbles = true;\n\n\t\tlet event = new CustomEvent( \"ode-widget-container\", p );\n if( event && e.currentTarget ) {\n e.currentTarget.dispatchEvent(event);\n }\n\t}\n}\n\n/* Directive */\nclass Directive implements IDirective<IScope,JQLite,IAttributes,IController[]> {\n restrict = 'A';\n\ttemplate = require('./widget-container.directive.html').default;\n\tscope = {};\n\tbindToController = true;\n\tcontroller = [\"odeWidgetService\", \"odeNgHelperService\", Controller];\n\tcontrollerAs = 'ctrl';\n\trequire = [\"odeWidgetContainer\"];\n\n link(scope:IScope, elem:JQLite, attrs:IAttributes, controllers?:IController[]): void {\n\t\tif( !controllers ) return;\n\t\tconst ctrl:Controller = controllers[0] as Controller;\n\t\tconst defaultOptions = {position:\"left\"};\n\t\tlet attr = attrs[\"odeWidgetContainer\"] ?? defaultOptions;\n\t\tif( typeof attr === \"string\" ) {\n\t\t\ttry {\n\t\t\t\tattr = angular.fromJson(attr);\n\t\t\t} catch(e) {\n\t\t\t\tattr= defaultOptions;\n\t\t\t}\n\t\t}\n\t\tif( !attr.position ) {\n\t\t\tattr.position = \"left\";\n\t\t}\n\n\t\tctrl.signalReject = () => {\n\t\t\tconst pulse = 'dndReject';\n\t\t\tconst on = elem.children(\"ul[dnd-list][dnd-dragover]\");\n\t\t\tif( ! on.hasClass(pulse) ) {\n\t\t\t\ton.addClass(pulse);\n\t\t\t\t// Removed it after a moment.\n\t\t\t\tsetTimeout( ()=>{on.removeClass(pulse);}, 1500 );\n\t\t\t}\n\t\t}\n\n\t\tctrl.widgetSvc.initialize()\n\t\t.then( () => {\n\t\t\tctrl.position = attr.position;\n\t\t\tctrl.loadWidgets();\n\t\t\tscope.$apply();\n\t\t});\n\n\t\tconst subscription = ctrl.widgetSvc.onChange().subscribe({\n\t\t\tnext: e => { \n\t\t\t\tctrl.loadWidgets();\n\t\t\t\tscope.$apply();\n\t\t\t}\n\t\t});\n\n\t\tscope.$on( \"$destroy\", () => {\n\t\t\tsubscription && subscription.unsubscribe();\n\t\t});\n\t}\n}\n\n/** The widget-container directive.\n *\n * Usage:\n * <div ode-widget-container=\"left|right\"></div>\n */\nexport function DirectiveFactory() {\n\treturn new Directive();\n}\n","import { IAttributes, ICompileService, IController, IDirective, IScope } from \"angular\";\nimport { IWidget } from \"ode-ts-client\";\nimport { WidgetLoader } from \"../../modules/widgets.module\";\nimport { WidgetService } from \"../../services\";\n\n/* Controller for the directive */\nexport class Controller implements IController {\n constructor(\n\t\tpublic widgetSvc: WidgetService\n\t\t) {\n\t\tthis.widget = null as unknown as IWidget;\n }\n\twidget: IWidget;\n\n}\n\n/* Directive */\nclass Directive implements IDirective<IScope,JQLite,IAttributes,IController[]> {\n restrict = 'A';\n\tscope = {\n\t\twidget: \"=odeWidget\"\n\t};\n\tbindToController = true;\n\tcontroller = [\"odeWidgetService\", Controller];\n\tcontrollerAs = 'ctrl';\n\trequire = [\"odeWidget\"];\n\n link(scope:IScope, elem:JQLite, attrs:IAttributes, controllers?:IController[]) {\n\t\tif( !controllers ) return;\n\t\tconst ctrl:Controller = controllers[0] as Controller;\n\n\t\tthis.widgetLoader( ctrl.widget.platformConf.name )\n\t\t.then( () => {\n\t\t\tconst htmlFragment=`<ode-${ctrl.widget.platformConf.name}></ode-${ctrl.widget.platformConf.name}>`;\n\t\t\tconst compiled = this.$compile(htmlFragment)(scope);\n\t\t\telem.append( compiled );\n\t\t});\n\t}\n\n constructor(\n\t\tprivate $compile:ICompileService,\n\t\tprivate widgetLoader:WidgetLoader\n\t\t) {\n }\n}\n\n/** The widget directive.\n *\n * Usage:\n * <div ode-widget=\"anIWidget\"></div>\n */\nexport function DirectiveFactory($compile:ICompileService, widgetLoader:WidgetLoader) {\n\treturn new Directive($compile, widgetLoader);\n}\nDirectiveFactory.$inject = [\"$compile\",\"odeWidgetLoader\"];\n","/** Samples are grouped within a submodule (\"as Samples\"), for clarity. */\nexport * as Samples from './samples/index';\n\n/* Other directives are exported directly, for simplicity. */\nexport * from './directives/index';\n\nexport * from './services/index';\n\nexport * from './modules/index';\n\nexport * from './utils/index';\n\n/** Hack pour rendre compatible le module commonjs avec une balise <script> dans un navigateur. */\ndeclare var window:any;\ndeclare var module:any;\nif(typeof window!=='undefined') {\n window.entcore = window.entcore||{};\n window.entcore[\"ode-ngjs-front\"] = module.exports;\n}\n","import { App, ExplorerFrameworkFactory, GetResourcesResult, IContext, IExplorerContext, IFolder, IResource, ISearchParameters, ResourceType } from \"ode-ts-client\";\n\nexport class UiModel {\n app:App;\n resourceType:ResourceType;\n explorer:IExplorerContext;\n context?:IContext;\n\n constructor( app:App, resourceType:ResourceType ) {\n this.app = app;\n this.resourceType = resourceType;\n this.explorer = ExplorerFrameworkFactory.instance().createContext( [resourceType], app );\n }\n\n async initialize() {\n this.context = await this.explorer.initialize();\n return this.context;\n }\n\n get searchParameters():ISearchParameters {\n return this.explorer.getSearchParameters();\n }\n\n loadedFolders:IFolder[] = [];\n loadedItems:IResource[] = [];\n\n selectedFolders:IFolder[] = [];\n selectedItems:IResource[] = [];\n\n get currentFolder():IFolder|undefined {\n if( this.breadcrumb.length > 0 )\n return this.breadcrumb[this.breadcrumb.length-1];\n }\n\n openAsSubfolder( f:IFolder ):Promise<GetResourcesResult> {\n this.searchParameters.filters.folder = f.id;\n return this.explorer.getResources().then( r=>{\n this.breadcrumb.push( f );\n return r;\n });\n }\n\n //---- Breadcrumb utilities\n breadcrumb:IFolder[] = [];\n\n}","import angular, { IInterpolateProvider, IModule } from \"angular\";\nimport { NgHelperService, NotifyService, SessionService, TrackingService, notify, XitiService } from \"../services\";\nimport { ConfigurationFrameworkFactory } from \"ode-ts-client\";\n\nconst module = angular.module(\"odeBase\", \n ['ngSanitize', 'ngRoute'], \n ['$interpolateProvider', function($interpolateProvider:IInterpolateProvider) {\n $interpolateProvider.startSymbol('[[');\n $interpolateProvider.endSymbol(']]');\n }])\n // FIX #WB-1330: Add $sce whitelist configuration to fix CDN template loading\n .config(['$sceDelegateProvider', function($sceDelegateProvider: any) {\n\t\t$sceDelegateProvider.resourceUrlWhitelist([\n\t\t\t// Allow same origin resource loads.\n\t\t\t'self',\n\t\t\t// Allow loading from our assets domain. **.\n\t\t\tConfigurationFrameworkFactory.instance().Platform.cdnDomain + '/**'\n ])\n }]);\n\n/**\n * The \"odeBase\" angularjs module provides basic initialization features to other modules (apps).\n */\nexport function odeBaseModule():IModule {\n return module\n .value( \"notify\", notify)\n .service(\"odeNotify\", NotifyService)\n .service(\"odeNgHelperService\", NgHelperService )\n .service(\"odeSession\", SessionService)\n .service(\"odeTracking\", TrackingService)\n .service(\"odeXiti\", XitiService);\n}\n","import angular, { IModule } from \"angular\";\nimport { DominoFolder, DominoItem, Explorer, SidebarFolder, Modal, ResourceList, SharePanel, Sidebar, Toaster, PropsPanel } from \"../directives\";\nimport { NotifyService } from \"../services\";\n\nconst module = angular.module(\"odeExplorerModule\", []);\n\n/**\n * The \"odeExplorerModule\" angularjs module is an all-in-one resources exploration toolkit.\n */\n export function odeExplorerModule():IModule {\n return module\n .directive(\"odeExplorer\", Explorer.DirectiveFactory)\n .directive(\"odeSidebar\", Sidebar.DirectiveFactory)\n .directive(\"odeSidebarFolder\", SidebarFolder.DirectiveFactory)\n .directive(\"odeResourceList\", ResourceList.DirectiveFactory)\n .directive(\"odeDominoFolder\", DominoFolder.DirectiveFactory)\n .directive(\"odeDominoItem\", DominoItem.DirectiveFactory)\n .directive(\"odeToaster\", Toaster.DirectiveFactory)\n .directive(\"odeModal\", Modal.DirectiveFactory)\n .directive(\"odePropsPanel\", PropsPanel.DirectiveFactory)\n .directive(\"odeSharePanel\", SharePanel.DirectiveFactory)\n\n .service(\"odeNotify\", NotifyService)\n ;\n }","import angular, { IModule } from \"angular\";\nimport { I18n, I18nFilter, I18nPlaceholder, I18nValue, I18nTitle, Translate } from \"../directives\";\nimport { I18nService } from \"../services\";\n\nconst module = angular.module(\"odeI18n\", []);\n\n/**\n * The \"odeI18n\" angularjs module is a replacement for the legacy infra-front's 'idiom' functionality, \n * and many other directives/filters using it : <i18n>, {{key|i18n}}, <input i18n-placeholder=\"key\"> and <input i18n-value=\"key\">.\n */\nexport function odeI18nModule():IModule {\n return module\n .directive('translate', Translate.DirectiveFactory)\n .directive('i18n', I18n.DirectiveFactory)\n .directive('i18nValue', I18nValue.DirectiveFactory)\n .directive('i18nPlaceholder', I18nPlaceholder.DirectiveFactory)\n .directive('i18nTitle', I18nTitle.DirectiveFactory)\n .filter('i18n', I18nFilter.FilterFactory)\n\n .service(\"odeI18n\", I18nService)\n ;\n }","import { odeBaseModule } from \"./base.module\";\nimport { odeI18nModule } from \"./i18n.module\";\nimport { odeUiModule } from \"./ui.module\";\nimport { odeExplorerModule } from \"./explorer.module\";\nimport { odeWidgetModule } from \"./widgets.module\";\n\n/**\n * Utility class for retrieving the names of angularJS modules defined in this library,\n * so your own angularJS module can depends on them.\n * \n * Usage :\n * \n angular.module(\"app\", [OdeModules.getBase(), OdeModules.getI18n(), OdeModules.getUi()])\n .controller(\"appCtrl\", ['$scope', AppController])\n ...\n * \n */\nexport abstract class OdeModules {\n /** Base module (required). Declares directives for user session management, async notifications... */\n static getBase():string {\n return odeBaseModule().name;\n };\n /** Internationalization module. Declares the directive <i18n> and similar tools. */\n static getI18n():string {\n return odeI18nModule().name;\n };\n /** User Interface module. Declares all components for building UIs. */\n static getUi():string {\n return odeUiModule().name;\n };\n /** Widgets module : declares lazy loaded directives (widgets for the timeline) */\n static getWidgets():string {\n return odeWidgetModule().name;\n };\n /** Explorer module. Declares components for exploring assets from resource-producing apps. */\n static getExplorer():string {\n return odeExplorerModule().name;\n };\n}","import angular, { IModule } from \"angular\";\nimport { Portal, Navbar, WithTheme, Popover, PopoverContent, PopoverOpener, Logout, WidgetContainer, Widget, AppTitle, Pulsar, Assistant, Lightbox, SmartBanner, Modal, ModalContainer, Infotip, Autocomplete, Recorder, SkinSrc, ConnectorLightbox, Help, BindHtml, Xiti, NavigationTrigger, GuardRoot, InputGuard, DirtyGuard, DocumentGuard, CustomGuard, ResetGuard } from \"../directives\";\nimport { QuickstartService, ThemeHelperService, WidgetService, RichContentService, VideoUploadService, VideoEventTrackerService } from \"../services\";\n\nconst dndLists = require('angular-drag-and-drop-lists');\n\nconst module = angular.module(\"odeUi\", ['dndLists']);\n\n/**\n * The \"odeUi\" angularjs module provides many UX components (directives) and useful services.\n */\n export function odeUiModule():IModule {\n return module\n .directive(\"odePortal\", Portal.DirectiveFactory)\n .directive(\"odeNavbar\", Navbar.DirectiveFactory)\n .directive(\"withTheme\", WithTheme.DirectiveFactory)\n .directive(\"odeModal\", Modal.DirectiveFactory)\n .directive(\"odeModalContainer\", ModalContainer.DirectiveFactory)\n .directive(\"odeInfotip\", Infotip.DirectiveFactory)\n\n .directive(\"navigationTrigger\", NavigationTrigger.DirectiveFactory)\n .directive(\"guardRoot\", GuardRoot.DirectiveFactory)\n .directive(\"inputGuard\", InputGuard.DirectiveFactory)\n .directive(\"dirtyGuard\", DirtyGuard.DirectiveFactory)\n .directive(\"documentGuard\", DocumentGuard.DirectiveFactory)\n .directive(\"customGuard\", CustomGuard.DirectiveFactory)\n .directive(\"resetGuard\", ResetGuard.DirectiveFactory)\n\n .directive(\"appTitle\", AppTitle.DirectiveFactory)\n .directive(\"logout\", Logout.DirectiveFactory)\n .directive(\"popover\", Popover.DirectiveFactory)\n .directive(\"popoverContent\", PopoverContent.DirectiveFactory)\n .directive(\"popoverOpener\", PopoverOpener.DirectiveFactory)\n .directive(\"assistant\", Assistant.DirectiveFactory)\n .directive(\"pulsar\", Pulsar.DirectiveFactory)\n .directive(\"lightbox\", Lightbox.DirectiveFactory)\n .directive(\"connectorLightbox\", ConnectorLightbox.DirectiveFactory)\n .directive(\"connectorLightboxTrigger\", ConnectorLightbox.TriggerDirectiveFactory)\n .directive(\"smartBanner\", SmartBanner.DirectiveFactory)\n .directive(\"help\", Help.DirectiveFactory)\n .directive(\"bindHtml\", BindHtml.DirectiveFactory)\n .directive(\"xiti\", Xiti.DirectiveFactory)\n\n .directive(\"autocomplete\", Autocomplete.DirectiveFactory)\n .directive(\"skinSrc\", SkinSrc.DirectiveFactory)\n\n .directive(\"odeRecorder\", Recorder.DirectiveFactory)\n\n .directive(\"odeWidgetContainer\", WidgetContainer.DirectiveFactory)\n .directive(\"odeWidget\", Widget.DirectiveFactory)\n\n .service(\"odeThemeHelperService\", ThemeHelperService )\n .service(\"odeQuickstartService\", QuickstartService )\n .service(\"odeWidgetService\", WidgetService )\n .service(\"odeRichContentService\", RichContentService )\n .service(\"odeVideoUploadService\", VideoUploadService )\n .service(\"odeVideoEventTrackerService\", VideoEventTrackerService )\n ;\n }","import angular, { auto, IModule } from \"angular\";\nimport MaxicoursWidget = require(\"../widgets/maxicours-widget/maxicours-widget.widget\");\nimport CursusWidget = require(\"../widgets/cursus-widget/cursus-widget.widget\");\nimport SchoolWidget = require(\"../widgets/school-widget/school-widget.widget\");\nimport RecordMe = require(\"../widgets/record-me/record-me.widget\");\nimport AgendaWidget = require(\"../widgets/agenda-widget/agenda-widget.widget\");\nimport QwantWidget = require(\"../widgets/qwant-widget/qwant-widget.widget\");\nimport BookmarkWidget = require(\"../widgets/bookmark-widget/bookmark-widget.widget\");\nimport RssWidget = require(\"../widgets/rss-widget/rss-widget.widget\");\nimport MyApps = require(\"../widgets/my-apps/my-apps.widget\");\nimport CarnetDeBord = require(\"../widgets/carnet-de-bord/carnet-de-bord.widget\");\nimport DicoDeLaZone = require(\"../widgets/dicodelazone-widget/dicodelazone-widget.widget\");\nimport Calendar = require(\"../widgets/calendar-widget/calendar-widget.widget\");\nimport Universalis = require(\"../widgets/universalis-widget/universalis-widget.widget\");\nimport Briefme = require(\"../widgets/briefme-widget/briefme-widget.widget\");\nimport LastInfos = require(\"../widgets/last-infos-widget/last-infos-widget.widget\");\n\n// ============ /!\\ IMPORTANT /!\\ ============\n//\n// By using require.ensure() to async load them, the ts-loader plugin will not bundle the widgets in the ode-ngjs-front package.\n// See https://github.com/TypeStrong/ts-loader#code-splitting-and-loading-other-resources\n// and the examples : \n// https://github.com/TypeStrong/ts-loader/blob/main/test/comparison-tests/codeSplitting\n// https://github.com/TypeStrong/ts-loader/blob/main/test/comparison-tests/es6codeSplitting\n//\n// ===========================================\ndeclare var require: {\n <T>(path: string): T;\n (paths: string[], callback: (...modules: any[]) => void): void;\n ensure: (\n dependencies: string[],\n callback: (require: <T>(path: string) => T) => void,\n errorCallback: (error:any) => void,\n chunkName: string\n ) => void;\n};\n\n//------------------------------------------------ Types\nexport enum KnownWidget {\n maxicours = \"maxicours-widget\",\n cursus = \"cursus-widget\",\n school = \"school-widget\",\n recordMe = \"record-me\",\n agenda = \"agenda-widget\",\n qwant = \"qwant\",\n bookmark = \"bookmark-widget\",\n rss = \"rss-widget\",\n myApps = \"my-apps\",\n carnetDeBord = \"carnet-de-bord\",\n dicoDeLaZone = \"dicodelazone-widget\",\n calendar = \"calendar-widget\",\n universalis = \"universalis-widget\",\n briefme = \"briefme-widget\",\n lastInfos = \"last-infos-widget\"\n};\nexport type WidgetLoader = (widgetName:String)=>Promise<void>;\n\n//------------------------------------------------ Create an angular module and an external loader.\nconst module = angular.module(\"odeWidgets\", [])\n\n.factory('odeWidgetLoader', ['$injector', function($injector:auto.IInjectorService) {\n return async (widgetName:KnownWidget) => {\n // Load the widget, if known.\n switch( widgetName ) {\n case KnownWidget.maxicours: await loadMaxicoursWidgetModule().then( mod=>{ $injector.loadNewModules([mod]) }); break;\n case KnownWidget.cursus: await loadCursusWidgetModule().then( mod=>{ $injector.loadNewModules([mod]) }); break;\n case KnownWidget.school: await loadSchoolWidgetModule().then( mod=>{ $injector.loadNewModules([mod]) }); break;\n case KnownWidget.recordMe: await loadRecordMeWidgetModule().then( mod=>{ $injector.loadNewModules([mod]) }); break;\n case KnownWidget.agenda: await loadAgendaWidgetModule().then( mod=>{ $injector.loadNewModules([mod]) }); break;\n case KnownWidget.qwant: await loadQwantWidgetModule().then( mod=>{ $injector.loadNewModules([mod]) }); break;\n case KnownWidget.bookmark: await loadBookmarkWidgetModule().then( mod=>{ $injector.loadNewModules([mod]) }); break;\n case KnownWidget.rss: await loadRssWidgetModule().then( mod=>{ $injector.loadNewModules([mod]) }); break;\n case KnownWidget.myApps: await loadMyAppsWidgetModule().then( mod=>{ $injector.loadNewModules([mod]) }); break;\n case KnownWidget.carnetDeBord: await loadCarnetDeBordWidgetModule().then( mod=>{ $injector.loadNewModules([mod]) }); break;\n case KnownWidget.dicoDeLaZone: await loadDicoDeLaZoneWidgetModule().then( mod=>{ $injector.loadNewModules([mod]) }); break;\n case KnownWidget.calendar: await loadCalendarWidgetModule().then( mod=>{ $injector.loadNewModules([mod]) }); break;\n case KnownWidget.universalis: await loadUniversalisWidgetModule().then( mod=>{ $injector.loadNewModules([mod]) }); break;\n case KnownWidget.briefme: await loadBriefmeWidgetModule().then( mod=>{ $injector.loadNewModules([mod]) }); break;\n case KnownWidget.lastInfos: await loadLastInfosWidgetModule().then( mod=>{ $injector.loadNewModules([mod]) }); break;\n default: throw `Unknown widget \"${widgetName}\"`;\n }\n };\n}]);\n\n/** Dynamically load the \"maxicours-widget\" widget, which is packaged as a separate entry thanks to require.ensure(). */\nfunction loadMaxicoursWidgetModule() {\n return new Promise<string>( (resolve, reject) => {\n // Note: the following \"require.ensure\" function acts as a compiling directive for webpack, and cannot be variabilized.\n require.ensure(\n [\"../widgets/maxicours-widget/maxicours-widget.widget\"],\n function(require) {\n var jsModule = <typeof MaxicoursWidget> require(\"../widgets/maxicours-widget/maxicours-widget.widget\");\n resolve( jsModule.odeModuleName );\n },\n function(error) {\n console.log(error);\n reject();\n },\n \"widgets/maxicours-widget/maxicours-widget.widget\"\n );\n });\n}\n\n/** Dynamically load the \"cursus-widget\" widget, which is packaged as a separate entry thanks to require.ensure(). */\nfunction loadCursusWidgetModule() {\n return new Promise<string>( (resolve, reject) => {\n // Note: the following \"require.ensure\" function acts as a compiling directive for webpack, and cannot be variabilized.\n require.ensure(\n [\"../widgets/cursus-widget/cursus-widget.widget\"],\n function(require) {\n var jsModule = <typeof CursusWidget> require(\"../widgets/cursus-widget/cursus-widget.widget\");\n resolve( jsModule.odeModuleName );\n },\n function(error) {\n console.log(error);\n reject();\n },\n \"widgets/cursus-widget/cursus-widget.widget\"\n );\n });\n}\n\n/** Dynamically load the \"school-widget\" widget, which is packaged as a separate entry thanks to require.ensure(). */\nfunction loadSchoolWidgetModule() {\n return new Promise<string>( (resolve, reject) => {\n // Note: the following \"require.ensure\" function acts as a compiling directive for webpack, and cannot be variabilized.\n require.ensure(\n [\"../widgets/school-widget/school-widget.widget\"],\n function(require) {\n var jsModule = <typeof SchoolWidget> require(\"../widgets/school-widget/school-widget.widget\");\n resolve( jsModule.odeModuleName );\n },\n function(error) {\n console.log(error);\n reject();\n },\n \"widgets/school-widget/school-widget.widget\"\n );\n });\n}\n\n/** Dynamically load the \"record-me\" widget, which is packaged as a separate entry thanks to require.ensure(). */\nfunction loadRecordMeWidgetModule() {\n return new Promise<string>( (resolve, reject) => {\n // Note: the following \"require.ensure\" function acts as a compiling directive for webpack, and cannot be variabilized.\n require.ensure(\n [\"../widgets/record-me/record-me.widget\"],\n function(require) {\n var jsModule = <typeof RecordMe> require(\"../widgets/record-me/record-me.widget\");\n resolve( jsModule.odeModuleName );\n },\n function(error) {\n console.log(error);\n reject();\n },\n \"widgets/record-me/record-me.widget\"\n );\n });\n}\n\n/** Dynamically load the \"agenda-widget\" widget, which is packaged as a separate entry thanks to require.ensure(). */\nfunction loadAgendaWidgetModule() {\n return new Promise<string>( (resolve, reject) => {\n // Note: the following \"require.ensure\" function acts as a compiling directive for webpack, and cannot be variabilized.\n require.ensure(\n [\"../widgets/agenda-widget/agenda-widget.widget\"],\n function(require) {\n var jsModule = <typeof AgendaWidget> require(\"../widgets/agenda-widget/agenda-widget.widget\");\n resolve( jsModule.odeModuleName );\n },\n function(error) {\n console.log(error);\n reject();\n },\n \"widgets/agenda-widget/agenda-widget.widget\"\n );\n });\n}\n\n/** Dynamically load the \"qwant-widget\" widget, which is packaged as a separate entry thanks to require.ensure(). */\nfunction loadQwantWidgetModule() {\n return new Promise<string>( (resolve, reject) => {\n // Note: the following \"require.ensure\" function acts as a compiling directive for webpack, and cannot be variabilized.\n require.ensure(\n [\"../widgets/qwant-widget/qwant-widget.widget\"],\n function(require) {\n var jsModule = <typeof QwantWidget> require(\"../widgets/qwant-widget/qwant-widget.widget\");\n resolve( jsModule.odeModuleName );\n },\n function(error) {\n console.log(error);\n reject();\n },\n \"widgets/qwant-widget/qwant-widget.widget\"\n );\n });\n}\n\n/** Dynamically load the \"bookmark-widget\" widget, which is packaged as a separate entry thanks to require.ensure(). */\nfunction loadBookmarkWidgetModule() {\n return new Promise<string>( (resolve, reject) => {\n // Note: the following \"require.ensure\" function acts as a compiling directive for webpack, and cannot be variabilized.\n require.ensure(\n [\"../widgets/bookmark-widget/bookmark-widget.widget\"],\n function(require) {\n var jsModule = <typeof BookmarkWidget> require(\"../widgets/bookmark-widget/bookmark-widget.widget\");\n resolve( jsModule.odeModuleName );\n },\n function(error) {\n console.log(error);\n reject();\n },\n \"widgets/bookmark-widget/bookmark-widget.widget\"\n );\n });\n}\n\n/** Dynamically load the \"rss-widget\" widget, which is packaged as a separate entry thanks to require.ensure(). */\nfunction loadRssWidgetModule() {\n return new Promise<string>( (resolve, reject) => {\n // Note: the following \"require.ensure\" function acts as a compiling directive for webpack, and cannot be variabilized.\n require.ensure(\n [\"../widgets/rss-widget/rss-widget.widget\"],\n function(require) {\n var jsModule = <typeof RssWidget> require(\"../widgets/rss-widget/rss-widget.widget\");\n resolve( jsModule.odeModuleName );\n },\n function(error) {\n console.log(error);\n reject();\n },\n \"widgets/rss-widget/rss-widget.widget\"\n );\n });\n}\n\n/** Dynamically load the \"my-apps\" widget, which is packaged as a separate entry thanks to require.ensure(). */\nfunction loadMyAppsWidgetModule() {\n return new Promise<string>( (resolve, reject) => {\n // Note: the following \"require.ensure\" function acts as a compiling directive for webpack, and cannot be variabilized.\n require.ensure(\n [\"../widgets/my-apps/my-apps.widget\"],\n function(require) {\n var jsModule = <typeof MyApps> require(\"../widgets/my-apps/my-apps.widget\");\n resolve( jsModule.odeModuleName );\n },\n function(error) {\n console.log(error);\n reject();\n },\n \"widgets/my-apps/my-apps.widget\"\n );\n });\n}\n\n/** Dynamically load the \"carnet-de-bord/carnet-de-bord\" widget, which is packaged as a separate entry thanks to require.ensure(). */\nfunction loadCarnetDeBordWidgetModule() {\n return new Promise<string>( (resolve, reject) => {\n // Note: the following \"require.ensure\" function acts as a compiling directive for webpack, and cannot be variabilized.\n require.ensure(\n [\"../widgets/carnet-de-bord/carnet-de-bord.widget\"],\n function(require) {\n var jsModule = <typeof CarnetDeBord> require(\"../widgets/carnet-de-bord/carnet-de-bord.widget\");\n resolve( jsModule.odeModuleName );\n },\n function(error) {\n console.log(error);\n reject();\n },\n \"widgets/carnet-de-bord/carnet-de-bord.widget\"\n );\n });\n}\n\n/** Dynamically load the \"last-infos\" widget, which is packaged as a separate entry thanks to require.ensure(). */\nfunction loadLastInfosWidgetModule() {\n return new Promise<string>( (resolve, reject) => {\n // Note: the following \"require.ensure\" function acts as a compiling directive for webpack, and cannot be variabilized.\n require.ensure(\n [\"../widgets/last-infos-widget/last-infos-widget.widget\"],\n function(require) {\n var jsModule = <typeof LastInfos> require(\"../widgets/last-infos-widget/last-infos-widget.widget\");\n resolve( jsModule.odeModuleName );\n },\n function(error) {\n console.log(error);\n reject();\n },\n \"widgets/last-infos-widget/last-infos-widget.widget\"\n );\n });\n}\n\n/** Dynamically load the \"calendar\" widget, which is packaged as a separate entry thanks to require.ensure(). */\nfunction loadCalendarWidgetModule() {\n return new Promise<string>( (resolve, reject) => {\n // Note: the following \"require.ensure\" function acts as a compiling directive for webpack, and cannot be variabilized.\n require.ensure(\n [\"../widgets/calendar-widget/calendar-widget.widget\"],\n function(require) {\n var jsModule = <typeof Calendar> require(\"../widgets/calendar-widget/calendar-widget.widget\");\n resolve( jsModule.odeModuleName );\n },\n function(error) {\n console.log(error);\n reject();\n },\n \"widgets/calendar-widget/calendar-widget.widget\"\n );\n });\n}\n\n/** Dynamically load the \"dicodelazone\" widget, which is packaged as a separate entry thanks to require.ensure(). */\nfunction loadDicoDeLaZoneWidgetModule() {\n return new Promise<string>( (resolve, reject) => {\n // Note: the following \"require.ensure\" function acts as a compiling directive for webpack, and cannot be variabilized.\n require.ensure(\n [\"../widgets/dicodelazone-widget/dicodelazone-widget.widget\"],\n function(require) {\n var jsModule = <typeof DicoDeLaZone> require(\"../widgets/dicodelazone-widget/dicodelazone-widget.widget\");\n resolve( jsModule.odeModuleName );\n },\n function(error) {\n console.log(error);\n reject();\n },\n \"widgets/dicodelazone-widget/dicodelazone-widget.widget\"\n );\n });\n}\n\n/** Dynamically load the \"universalis\" widget, which is packaged as a separate entry thanks to require.ensure(). */\nfunction loadUniversalisWidgetModule() {\n return new Promise<string>( (resolve, reject) => {\n // Note: the following \"require.ensure\" function acts as a compiling directive for webpack, and cannot be variabilized.\n require.ensure(\n [\"../widgets/universalis-widget/universalis-widget.widget\"],\n function(require) {\n var jsModule = <typeof Universalis> require(\"../widgets/universalis-widget/universalis-widget.widget\");\n resolve( jsModule.odeModuleName );\n },\n function(error) {\n console.log(error);\n reject();\n },\n \"widgets/universalis-widget/universalis-widget.widget\"\n );\n });\n}\n\n/** Dynamically load the \"briefme\" widget, which is packaged as a separate entry thanks to require.ensure(). */\nfunction loadBriefmeWidgetModule() {\n return new Promise<string>( (resolve, reject) => {\n // Note: the following \"require.ensure\" function acts as a compiling directive for webpack, and cannot be variabilized.\n require.ensure(\n [\"../widgets/briefme-widget/briefme-widget.widget\"],\n function(require) {\n var jsModule = <typeof Briefme> require(\"../widgets/briefme-widget/briefme-widget.widget\");\n resolve( jsModule.odeModuleName );\n },\n function(error) {\n console.log(error);\n reject();\n },\n \"widgets/briefme-widget/briefme-widget.widget\"\n );\n });\n}\n\n/**\n * The \"odeWidgets\" angularjs module is a placeholder for widgets directives.\n */\nexport function odeWidgetModule():IModule {\n return module;\n}\n","import { IWindowService } from \"angular\";\n\nexport class AlertSvc {\n constructor(private $window:IWindowService) {\n }\n\n alert( msg:string ) {\n this.$window.alert( msg ?? \"Undefined message...\" );\n }\n}\n\n/**\n * Service factory, with dependencies injected as required by $inject below.\n * @param $window \n * @returns \n */\nexport function ServiceFactory($window:IWindowService) {\n\treturn new AlertSvc($window);\n}\nServiceFactory.$inject= [\"$window\"];","/** Sample directive */\nexport * as SaySomething from './say-something.directive';\nexport * as AlertSvc from './alert.service';","/* The say-something example directive.\n *\n * Usage:\n * 1) import your directive's factory,\n * import { Samples } from 'ode-ngjs-front';\n * 2) Add it to your angular module,\n * ng.directives.push( ng.directive(\"saySomething\", Samples.SaySomething.DirectiveFactory) );\n * 3) Use it,\n * <say-something what=\"Hello\" ng-model=\"'World'\"></say-something>\n * \n * 4) TODO unit-testing : https://docs.angularjs.org/guide/unit-testing#testing-a-controller\n */\nimport { IAttributes, ICompileService, IController, IDirective, IHttpService, IScope } from \"angular\";\n\n/* Controller for the directive */\nexport class Controller implements IController {\n constructor(private $http:IHttpService) {\n }\n what?: string;\n userName?: any;\n\n sayHello():string {\n return `${this.what}, ${this.userName} !`;\n }\n}\n\n/* Directive */\nexport class Directive implements IDirective<IScope,JQLite,IAttributes,IController[]> {\n restrict = 'E';\n\n// The require() will be resolved by webpack at bundle time.\n// If this is a \".html\" file, it will be inlined as a javascript characters string, and thus must be used like below :\n\ttemplate = require(\"./say-something.directive.html\").default;\n//or\n// If it is a \".lazy.html\" file, it will be lazy-loade by angularjs at runtime, and thus must be used like below :\n// templateUrl = require('./say-something.directive.lazy.html');\n\n /* Scope isolation, @see https://code.angularjs.org/1.7.9/docs/guide/directive#isolating-the-scope-of-a-directive */\n scope = {\n what: '@',\n userName: '=ngModel'\n };\n\n /* \n * Binding the scope to the controller makes the controller cleaner.\n * @see why at https://ultimatecourses.com/blog/no-scope-soup-bind-to-controller-angularjs\n */\n\tbindToController = true;\n\n\tcontroller = [\"$http\", Controller];\n\tcontrollerAs = 'ctrl';\n\n /** @see the link method below. */\n\trequire = ['saySomething','ngModel'];\n\n /**\n * Link method for the directive.\n * @see https://code.angularjs.org/1.7.9/docs/api/ng/service/$compile\n * @param $scope scope\n * @param $elem jqLite-wrapped element that this directive matches.\n * @param $attr hash object with key-value pairs of normalized attribute names and their corresponding attribute values.\n * @param controllers Array of \"require\"d controllers : [ngModelCtrl]\n */\n link(scope:IScope, elem:JQLite, attr:IAttributes, controllers?:IController[]): void {\n let ctrl:Controller|null = controllers ? controllers[0] as Controller : null;\n let ngModelCtrl:IController|null = controllers ? controllers[1] as IController : null;\n\n // TODO Manipulate the DOM here with this.$compile()\n\n console.log( ctrl?.userName );\n console.log( ngModelCtrl );\n }\n\n /* Constructor with Dependency Injection */\n constructor(private $compile:ICompileService) {\n }\n}\n\n/** Directive factory, with dependencies injected as required by $inject below. */\nexport function DirectiveFactory($compile:ICompileService) {\n\treturn new Directive($compile);\n}\nDirectiveFactory.$inject = [\"$compile\"];\n","import { conf } from \"../utils\";\n\nconst idiom = conf().Platform.idiom;\n\nexport class I18nService {\n translate( key:string ) {\n return idiom.translate(key);\n }\n}\n\n// export type IServiceConstructor = (new (...args: any[]) => I18nService);\n// export const ServiceFactory:angular.Injectable<IServiceConstructor> = I18nService;\n","/* TODO */\nexport * from './notify.service';\nexport * from './i18n.service';\nexport * from './session.service';\nexport * from './widget.service';\nexport * from './theme-helper.service';\nexport * from './ng-helper.service';\nexport * from './quickstart.service';\nexport * from './tracking.service';\nexport * from './xiti.service';\nexport * from './rich-content.service';\nexport * from './video-upload.service';\nexport * from './video-event-tracker.service';\n","import angular, { IScope } from \"angular\";\nimport $ from \"jquery\"; // FIXME : remove jQuery dependency \n\n\n/** \n * This service was intended to be a jQuery minimal replacement, tailored to our needs. \n * //FIXME This would be a pain to maintain natively => thinking about integrating another lib.\n */\nexport class NgHelperService {\n\n public safeApply( $scope:IScope, exp?:string|((scope:IScope) => any) ) {\n const phase = $scope.$root.$$phase;\n if(phase == '$apply' || phase == '$digest') {\n if( angular.isFunction(exp) ) {\n exp($scope);\n }\n } else {\n // The following syntax is just for Typescript compiler pleasure.\n if( typeof exp===\"string\" ) $scope.$apply(exp);\n else if( angular.isFunction(exp) ) $scope.$apply(exp);\n else $scope.$apply();\n }\n }\n\n // /** Replacement for $(selector) a.k.a. jQuery(selector) */\n // public querySelect(selector:string):JQLite {\n // return angular.element(document.querySelectorAll(selector));\n // }\n\n /** Replacement for $.each() */\n public each( set:JQLite, cb:(index:number, elem:HTMLElement)=>void ) {\n\t\tfor( let i=0; i<set?.length; i++ ) {\n cb( i, set[i] );\n\t\t}\n }\n\n /** Replacement for $.offset() */\n public offset(set:JQLite, val?:{top:number, left:number}): {top:number, left:number} {\n if( typeof val!==\"undefined\" ) {\n set.css('position','relative').css('top',''+val.top+'px').css('left',''+val.left+'px');\n }\n\n if(!set[0].getClientRects().length) {\n return { top:0, left:0 };\n }\n const rect = set[0].getBoundingClientRect();\n return {\n top: rect.top + window.pageYOffset,\n left: rect.left + window.pageXOffset\n };\n }\n\n /** Replacement for $.width() */\n public width(set:JQLite): number {\n //return parseFloat(getComputedStyle(set[0], null).width.replace(\"px\", \"\")) || 0;\n return $(set).width() ?? 0;\n }\n\n /** Replacement for $.height() */\n public height(set:JQLite): number {\n //return parseFloat(getComputedStyle(set[0], null).height.replace(\"px\", \"\")) || 0;\n return $(set).height() ?? 0;\n }\n\n /** Replacement for $.parents(selector) */\n public parents(set:JQLite, selector:string) {\n let ret:JQLite = angular.element(\"<div></div>\");\n\t\tfor( let i=0; i<set?.length; i++ ) {\n\t\t\tlet parent = set[i];\n\t\t\tdo {\n\t\t\t\tparent = parent.parentNode as HTMLElement;\n if( parent.matches(selector) ) {\n ret.append( parent );\n }\n\t\t\t} while( parent );\n };\n return ret.children();\n }\n\n /** Available width for rendering the HTML document, in pixels. */\n public get viewport():number {\n const vw = Math.max(document.documentElement.clientWidth || 0, window.innerWidth || 0)\n // const vh = Math.max(document.documentElement.clientHeight || 0, window.innerHeight || 0)\n return vw;\n }\n\n // Commonly defined breakpoints in CSS\n public get WIDE_SCREEN():number { return 1200; };\n public get TABLET():number { return 800; };\n public get FAT_MOBILE():number { return 550; };\n public get SMALL_MOBILE():number { return 420; };\n /*\n checkMaxWidth: function (size) {\n if (this[size]) {\n return window.matchMedia(\"(max-width: \" + this[size] + \"px)\").matches\n } else {\n return window.matchMedia(\"(max-width: \" + size + \"px)\").matches\n }\n }\n*/\n}\n","import angular from \"angular\";\nimport { conf } from \"../utils\";\nconst humane = require('humane-js');\n\n//FIXME define the correct CSS in BT framework\nangular.element(\"head\").append( \n`<style id=\"humane-js\">\n .humane,\n .humane-original {\n position: fixed;\n -moz-transition: all 0.2s ease-out;\n -webkit-transition: all 0.2s ease-out;\n -ms-transition: all 0.2s ease-out;\n -o-transition: all 0.2s ease-out;\n transition: all 0.2s ease-out;\n z-index: 100000;\n filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=100);\n }\n .humane,\n .humane-original {\n font-family: Ubuntu, Verdana, sans-serif;\n line-height: 40px;\n font-size: 25px;\n top: 25%;\n left: 25%;\n opacity: 0;\n width: 50%;\n min-height: 40px;\n padding: 10px;\n text-align: center;\n background-color: #000;\n color: #fff;\n -webkit-border-radius: 15px;\n border-radius: 15px;\n }\n .humane p,\n .humane-original p,\n .humane ul,\n .humane-original ul {\n margin: 0;\n padding: 0;\n }\n .humane ul,\n .humane-original ul {\n list-style: none;\n }\n .humane.humane-original-info,\n .humane-original.humane-original-info {\n background-color: #030;\n }\n .humane.humane-original-success,\n .humane-original.humane-original-success {\n background-color: #030;\n }\n .humane.humane-original-error,\n .humane-original.humane-original-error {\n background-color: #300;\n }\n .humane.humane-animate,\n .humane-original.humane-original-animate {\n opacity: 0.8;\n }\n .humane.humane-animate:hover,\n .humane-original.humane-original-animate:hover {\n opacity: 0.6;\n }\n .humane.humane-js-animate,\n .humane-original.humane-original-js-animate {\n opacity: 0.8;\n }\n .humane.humane-js-animate:hover,\n .humane-original.humane-original-js-animate:hover {\n opacity: 0.6;\n filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=60);\n }\n</style>` \n);\n\n/**\n * This service can display on-screen notifications to the user.\n * 3 levels of attention available : error (in red), info (neutral color), success (green)\n * Based on humane-js\n */\nexport class NotifyService {\n private message(type:\"error\"|\"info\"|\"success\", message:string, timeout?:number) {\n\t\tmessage = conf().Platform.idiom.translate(message);\n\t\tlet options:any = { addnCls: 'humane-original-'+ type };\n\t\tif(typeof timeout === \"number\")\n\t\t\toptions[\"timeout\"] = timeout;\n\t\thumane.spawn(options)(message);\n }\n\n\terror(message:string, timeout?:number):void {\n this.message(\"error\", message, timeout);\n }\n\n\tinfo(message:string, timeout?:number):void {\n this.message(\"info\", message, timeout);\n }\n\n\tsuccess(message:string, timeout?:number):void {\n this.message(\"success\", message, timeout);\n }\n}\n\nexport const notify = new NotifyService();","import { IUserInfo } from \"ode-ts-client\";\nimport { L10n, conf, session, http } from \"../utils\";\n\nconst skin = conf().Platform.theme;\n\nconst model = {\n\tget me():IUserInfo { return session().user; }\n}\n\n/**\n * Service dedicated to the <assistant> directive\n */\nexport class QuickstartService {\n\tapp: string = \"\";\n\tsteps:{[s:string]:number} = {};\n\tstate = {} as any;\n\ttypes = {\n\t\tENSEIGNANT: 'teacher',\n\t\tELEVE: 'student',\n\t\tPERSEDUCNAT: 'personnel',\n\t\tPERSRELELEVE: 'relative',\n\t\tSUPERADMIN: ''\t// Never used, just here to prevent compilation errors.\n\t};\n\tmySteps:Array<{index:number, path:string}> = [];\n\tassistantIndex:any = {};\n\tassistantStep(index:number){\n\t\treturn skin.basePath + 'template/assistant/' + this.types[model.me.type] + '/' + index + '.html';\n\t};\n\tnextAssistantStep(){\n\t\tthis.state.assistant ++;\n\t\tif(this.state.assistant === this.steps[this.types[model.me.type]]){\n\t\t\tthis.state.assistant = -1;\n\t\t\tthis.assistantIndex = undefined;\n\t\t}\n\t\telse{\n\t\t\tthis.assistantIndex = this.mySteps[this.state.assistant];\n\t\t}\n\n\t\tthis.save();\n\t};\n\tget assistantTimerFormat() {\n\t\treturn 'MM/DD/YYYY HH:mm';\n\t}\n\tseeAssistantLater(){\n \t\tthis.state.assistantTimer = L10n.moment().format(this.assistantTimerFormat);\n \t\tthis.save();\n \t};\n\tgetAppStep():number {\n\t\treturn this.state[skin.skin][this.app];\n\t}\n\tgoToAppStep(index:number){\n\t\tthis.state[skin.skin][this.app] = index;\n\t\tthis.save();\n\t\treturn index;\n\t};\n\tnextAppStep(){\n\t\treturn this.goToAppStep( this.getAppStep() + 1 );\n\t};\n\tpreviousAppStep(){\n\t\treturn this.goToAppStep( this.getAppStep() - 1 );\n\t};\n\tcloseApp(){\n\t\tthis.goToAppStep(-1);\n\t};\n\tappIndex(){\n\t\tthis.app = window.location.href.split('//')[1].split('/').slice(1).join('/');\n\t\tif(!this.state[skin.skin]){\n\t\t\tthis.state[skin.skin] = {};\n\t\t}\n\t\tif(!this.state[skin.skin][this.app]){\n\t\t\tthis.state[skin.skin][this.app] = 0;\n\t\t}\n\t\treturn this.state[skin.skin][this.app];\n\t};\n\tpreviousAssistantStep(){\n\t\tthis.state.assistant --;\n\t\tif(this.state.assistant < 0){\n\t\t\tthis.state.assistant = 0;\n\t\t}\n\t\tthis.assistantIndex = this.mySteps[this.state.assistant];\n\t\tthis.save();\n\t};\n\tsave(cb?: () => void){\n\t\t// FIXME This is the old-fashioned way of accessing preferences. Do not reproduce anymore (use ode-ts-client lib instead)\n\t\thttp().putJson('/userbook/preference/quickstart', this.state).then( () => {\n\t\t\tif(typeof cb === 'function'){\n\t\t\t\tcb();\n\t\t\t}\n\t\t});\n\t};\n\tgoTo(index:number){\n\t\tif(index > this.mySteps.length){\n\t\t\tindex = -1;\n\t\t}\n\t\tthis.state.assistant = index;\n\t\tif(index !== -1){\n\t\t\tthis.assistantIndex = this.mySteps[index];\n\t\t}\n\n\t\tthis.save();\n\t};\n\n\tloaded = false;\n\tloading = false;\n\tawaiters:Array<() => void> = [];\n\tload(cb?: () => void){\n\t\tif(this.loaded){\n\t\t\tif(typeof cb === 'function'){\n\t\t\t\tcb();\n\t\t\t}\n\t\t\treturn;\n\t\t}\n\n\t\tif( cb ) {\n\t\t\tthis.awaiters.push(cb);\n\t\t}\n\t\tif(this.loading){\n\t\t\treturn;\n\t\t}\n\t\tthis.loading = true;\n\t\t// FIXME This is the old-fashioned way of accessing preferences. Do not reproduce anymore (use ode-ts-client lib instead)\n\t\thttp().get('/userbook/preference/quickstart').then( pref => {\n\t\t\tlet preferences;\n\t\t\tif(pref.preference){\n\t\t\t\ttry{\n\t\t\t\t\tpreferences = JSON.parse(pref.preference);\n\t\t\t\t}\n\t\t\t\tcatch(e){\n\t\t\t\t\tconsole.log('Error parsing quickstart preferences');\n\t\t\t\t}\n\t\t\t}\n\t\t\tif(!preferences){\n\t\t\t\tpreferences = {};\n\t\t\t}\n\n\t\t\tif(!preferences.assistant){\n\t\t\t\tpreferences.assistant = 0;\n\t\t\t}\n\t\t\tif(!preferences[skin.skin]){\n\t\t\t\tpreferences[skin.skin] = {};\n\t\t\t}\n\n\t\t\tthis.state = preferences;\n\n\t\t\tif(\n \t\t\t\tpreferences.assistant !== -1 && !(\n \t\t\t\t\tpreferences.assistantTimer \n \t\t\t\t\t&& L10n.moment(preferences.assistantTimer, this.assistantTimerFormat).year() === L10n.moment().year() \n \t\t\t\t\t&& L10n.moment(preferences.assistantTimer, this.assistantTimerFormat).dayOfYear() === L10n.moment().dayOfYear() \n \t\t\t\t\t&& L10n.moment(preferences.assistantTimer, this.assistantTimerFormat).hour() === L10n.moment().hour()\n \t\t\t\t)\n \t\t\t){\n\t\t\t\thttp().get(skin.basePath + 'template/assistant/steps.json').then( steps => {\n\t\t\t\t\tthis.steps = steps;\n\t\t\t\t\tlet nbSteps = this.steps[this.types[model.me.type]];\n\t\t\t\t\tfor(let i = 0; i < nbSteps; i++){\n\t\t\t\t\t\tthis.mySteps.push({\n\t\t\t\t\t\t\tindex: i,\n\t\t\t\t\t\t\tpath: this.assistantStep(i)\n\t\t\t\t\t\t});\n\t\t\t\t\t\tthis.assistantIndex = this.mySteps[this.state.assistant];\n\t\t\t\t\t}\n\t\t\t\t\tthis.loaded = true;\n\t\t\t\t\tthis.awaiters.forEach(function(cb){\n\t\t\t\t\t\tif(typeof cb === 'function'){\n\t\t\t\t\t\t\tcb();\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\t\t\t\t});\n\t\t\t}\n\t\t\telse{\n\t\t\t\tthis.loaded = true;\n\t\t\t\tthis.awaiters.forEach(function(cb){\n\t\t\t\t\tif(typeof cb === 'function'){\n\t\t\t\t\t\tcb();\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t}\n\t\t});\n\t} \n}\n","import { ICompileService, IScope } from \"angular\";\nimport $ from \"jquery\"; // FIXME : remove jQuery dependency \n\n/** The rich content service.\n* PARTIAL PORT FROM INFRA-FRONT. Still needing\n* -mousehover on img content,\n* \t-MathJax support.\n*/\nexport class RichContentService {\n static $inject =[\"$compile\"];\n constructor( \n private $compile:ICompileService\n ) {\n }\n\n public apply( richContent:string, element:JQLite, scope:IScope ) {\n let htmlVal = $('<div>' + (richContent || '') + '</div>');\n htmlVal.find('[resizable]').removeAttr('resizable').css('cursor', 'initial');\n htmlVal.find('[bind-html]').removeAttr('bind-html');\n htmlVal.find('[ng-include]').removeAttr('ng-include');\n htmlVal.find('[ng-transclude]').removeAttr('ng-transclude');\n htmlVal.find('[draggable]').removeAttr('draggable').css('cursor', 'initial');\n htmlVal.find('[contenteditable]').removeAttr('contenteditable');\n htmlVal.find('script').remove();\n htmlVal.find('*').each((index, item: HTMLElement) => {\n let attributes = item.attributes;\n for(let i=attributes.length-1; i>=0; i--){\n if(attributes[i].name.startsWith('on') || attributes[i].value.includes(\"javascript:\")){\n item.removeAttribute(attributes[i].name);\n }\n }\n });\n let htmlContent = htmlVal[0].outerHTML;\n /* FIXME MathJax below is legacy infra-frontcode. How shall we manage such content in ngjs-front ?\n if (!window.MathJax && !(window as any).MathJaxLoading) {\n (window as any).MathJaxLoading = true;\n $.getScript((window as any).CDN_DOMAIN+'/infra/public/mathjax/MathJax.js',()=>{\n window.MathJax.Ajax.config.root = (window as any).CDN_DOMAIN+'/infra/public/mathjax/';\n window.MathJax.Hub.Config({\n messageStyle: 'none',\n tex2jax: { preview: 'none' },\n jax: [\"input/TeX\", \"output/CommonHTML\"],\n extensions: [\"tex2jax.js\", \"MathMenu.js\", \"MathZoom.js\"],\n TeX: {\n extensions: [\"AMSmath.js\", \"AMSsymbols.js\", \"noErrors.js\", \"noUndefined.js\"]\n }\n });\n window.MathJax.Hub.Queue([\"Typeset\", window.MathJax.Hub]);\n scope.$apply();\n });\n }\n */\n\n element.html( this.$compile(htmlContent)(scope.$parent) as any ); //WARNING: The \"as any\" cast here is REQUIRED\n\n //weird browser bug with audio tags\n element.find('audio').each(function(index, item){\n let parent = $(item).parent();\n $(item)\n .attr(\"src\", item.src)\n .attr('preload', 'none')\n .detach()\n .appendTo(parent);\n });\n element.find('img').css({ cursor: '' });\n\n /** FIXME mouseover on img\n element.on('mouseover', 'img', async (e) => {\n const src: string = $(e.target).attr('src');\n if(src.startsWith('/workspace/document')){\n let legendText;\n if($(e.target).data('legend')){\n legendText = $(e.target).data('legend');\n }\n else{\n const fileId = src.split('/workspace/document/')[1].split('?')[0];\n const response = await http.get('/workspace/document/properties/' + fileId);\n legendText = response.data.legend;\n }\n \n if(!legendText){\n return;\n }\n\n $(e.target).data('legend', legendText);\n let legend = $(`<legend class=\"user-image\"><div class=\"text\">${legendText}</div></legend>`);\n legend.height($(e.target).height());\n legend.width($(e.target).width());\n legend.css('position', 'absolute');\n legend.offset({\n top: $(e.target).offset().top,\n left: $(e.target).offset().left\n });\n legend.appendTo('body');\n \n setTimeout(() => {\n const out = (e) => {\n legend.find('.text').addClass('hidden');\n setTimeout(() => legend.remove(), 250);\n $(e.target).off('mouseout');\n };\n\n $(e.target).on('mouseout', out);\n }, 10)\n }\n });\n */\n\n /* FIXME Mathjax support\n if(window.MathJax && window.MathJax.Hub){\n window.MathJax.Hub.Queue([\"Typeset\", window.MathJax.Hub]);\n }\n */\n }\n}\t","import { IWebApp } from \"ode-ts-client\";\nimport { conf, notif, session } from \"../utils\";\n\nexport class SessionService {\n\n public hasWorkflow(right:string):boolean {\n return session().hasWorkflow(right);\n }\n\n\tpublic getLanguage():Promise<string> {\n\t\treturn notif().onSessionReady().promise\n\t\t.then( userInfo => session().currentLanguage );\n\t}\n\n\tpublic getBookmarks():Promise<IWebApp[]> {\n\t\treturn notif().onSessionReady().promise\n\t\t.then( userInfo => conf().User.bookmarkedApps );\n\t}\n\n}\n","import angular from \"angular\";\nimport { IThemeDesc, IWebApp, IWidget, WidgetName } from \"ode-ts-client\";\nimport { NgHelperService } from \"./ng-helper.service\";\nimport { conf } from \"../utils\";\nimport $ from 'jquery';\n\n/**\n * Helper service providing theme-related common tasks.\n */\nexport class ThemeHelperService {\n static $inject =[\"odeNgHelperService\"];\n\n private iconOfWidget:{[name in WidgetName]:string} = {\n \"last-infos-widget\": \"ic-widget-actualites\",\n \"birthday\": \"ic-star\", // FIXME obviously wrong => create missing icon in CSS\n \"calendar-widget\": \"ic-widget-calendar\",\n \"carnet-de-bord\": \"ic-widget-carnet-de-bord\",\n \"record-me\": \"ic-widget-microphone\",\n \"mood\": \"ic-star\", // FIXME obviously wrong => create missing icon in CSS\n \"my-apps\": \"ic-widget-apps\",\n \"notes\": \"ic-widget-notes\",\n \"rss-widget\": \"ic-widget-rss\",\n \"bookmark-widget\": \"ic-widget-signets\",\n \"qwant\": \"ic-widget-qwant\",\n \"qwant-junior\": \"ic-widget-qwant\",\n \"agenda-widget\": \"ic-widget-agenda\",\n \"cursus-widget\": \"ic-widget-aide-devoirs\",\n \"maxicours-widget\": \"ic-widget-maxicours\",\n \"school-widget\": \"ic-widget-schoolbook\",\n \"universalis-widget\": \"ic-widget-universalis\",\n \"briefme-widget\": \"ic-widget-briefme big\",\n }\n\n constructor( \n private ngHelperSvc:NgHelperService\n ) {\n }\n\n private get platform() {\n return conf().Platform;\n }\n\n /** Get the configured CDN URL root. */\n get CDN() {\n return this.platform.cdnDomain;\n }\n\n /** Return the path URL to the active theme, for example : /assets/themes/ode-bootstrap-neo */\n async getBootstrapThemePath():Promise<string> {\n const theme = this.platform.theme.themeName;\n const conf = await this.platform.theme.getConf();\n for( let override of conf.overriding ) {\n if( override.child === theme ) {\n return `${this.CDN}/assets/themes/${override.bootstrapVersion}`;\n }\n }\n return `${this.CDN}/assets/themes/${theme}`;\n }\n\n /** Return the path URL to the active skin, for example : /assets/themes/ode-bootstrap-neo/skins/dyslexic */\n async getBootstrapSkinPath():Promise<string> {\n let stylePath = await this.getBootstrapThemePath();\n return `${stylePath}/skins/${this.platform.theme.skinName}`;\n }\n\n /* Extracted from an old code base. */\n toSkinUrl( url:string ):string {\n const theme = angular.element(document.querySelectorAll(\"#theme\"));\n if(!theme.attr('href')) {\n return \"\";\n }\n const path = this.platform.theme.basePath;\n if(url.indexOf('http://') === -1 && url.indexOf('https://') === -1 && url.indexOf('/workspace/') === -1){\n return path + url;\n } else {\n return url;\n }\n }\n \n /** \n * Remove current theme and load and apply a new one.\n * THIS IS A LEGACY FEATURE and should not be used anymore.\n */\n loadOldWrappedTheme( oldTheme:string, skinName:string ) {\n $(\"#themeOld\").remove();\n const style = angular.element(\n `<link rel=\"stylesheet\" \n type=\"text/css\" \n href=\"${this.platform.cdnDomain}/assets/themes/${oldTheme}/skins/${skinName}/wrapped.theme.css?version=${this.platform.deploymentTag}\"\n id=\"themeOld\"\n crossorigin=\"anonymous\" />`\n );\n $('head').append( style );\n }\n\n /** Load the JS of a derived theme (skin) */\n loadThemeJs( theme:string ) {\n $(\"#themeJS\").remove();\n const style = angular.element(\n `<script\n type=\"text/javascript\"\n src=\"${this.platform.cdnDomain}/assets/themes/${theme}/js/theme.js?version=${this.platform.deploymentTag}\"\n id=\"themeJS\" />`\n );\n $('body').append(style);\n }\n\n /** Apply a theme from its URL */\n async applyStyle( stylePath:string ) {\n if( stylePath && stylePath.length > 0 && stylePath.lastIndexOf('/', stylePath.length-1) !== stylePath.length-1 ) \n stylePath += \"/\";\n stylePath = `${stylePath}theme.css?version=${this.platform.deploymentTag}`;\n if($('#theme').length === 0) {\n const style = angular.element(\n `<link rel=\"stylesheet\" \n type=\"text/css\" \n href=\"${stylePath}\"\n id=\"theme\"\n crossorigin=\"anonymous\" />`\n );\n var favicon = angular.element(\n `<link rel=\"icon\" href=\"${this.platform.theme.basePath}img/illustrations/favicon.ico\" />`\n );\n style.on('load', e => {\n $('body').show();\n });\n $('head')\n .append(style)\n .append(favicon);\n setTimeout(function () {\n $('body').show();\n }, 300);\n }\n else {\n $('#theme').attr('href', stylePath);\n }\n }\n\n /** @return list of available derived themes (skins) for the user. */\n listThemes():Promise<IThemeDesc[]> {\n return this.platform.theme.listThemes();\n }\n\n /** Apply a derived theme (skin) and save it as prefered, then update the data in cache. */\n async setTheme( theme:IThemeDesc ) {\n let stylePath = await this.getBootstrapThemePath();\n this.applyStyle( `${stylePath}/skins/${theme._id}` );\n this.platform.theme.setDefaultTheme( theme );\n }\n\n /** \n * Map between apps and their CSS code.\n */\n getIconCode( app:IWebApp ):string {\n let appCode = app.icon.trim().toLowerCase() || \"\";\n if( appCode && appCode.length > 0 ) {\n if(appCode.endsWith(\"-large\")) appCode = appCode.replace(\"-large\", \"\");\n } else {\n appCode = app.displayName.trim().toLowerCase();\n }\n appCode = conf().Platform.idiom.removeAccents(appCode);\n\t\t// @see distinct values for app's displayName is in query /auth/oauth2/userinfo\n\t\tswitch( appCode ) {\n\t\t\tcase \"admin.title\": \t appCode = \"admin\"; break;\n case \"banques des savoirs\": appCode = \"banquesavoir\"; break;\n case \"collaborativewall\": appCode = \"collaborative-wall\"; break;\n case \"communautés\": appCode = \"community\"; break;\n\t\t\tcase \"directory.user\":\t appCode = \"userbook\"; break;\n case \"emploi du temps\": appCode = \"edt\"; break;\n\t\t\tcase \"messagerie\": \t\t appCode = \"conversation\"; break;\n case \"news\": appCode = \"actualites\"; break;\n case \"homeworks\":\n case \"cahier de texte\": appCode = \"cahier-de-texte\"; break;\n case \"diary\":\n case \"cahier de texte 2d\": appCode = \"cahier-textes\"; break;\n\t\t\tdefault: break;\n\t\t}\n\t\treturn appCode;\n\t}\n\n /** @return the CSS class of a widget */\n getWidgetIconClass( widget:IWidget ):string {\n return this.iconOfWidget[widget.platformConf.name];\n }\n}\n\n/*\n// Depuis theme.ts\n\ndeclare var jQuery:any;\n\nexport const themeService = {\n loadOldWrappedTheme(oldTheme:string, skinName:string){\n let version = 'dev';\n if((window as any).springboardBuildDate){\n version = (window as any).springboardBuildDate;\n }\n jQuery(\"#themeOld\").remove();\n const style = jQuery('<link>', {\n rel: 'stylesheet',\n type: 'text/css',\n href: (window as any).CDN_DOMAIN+`/assets/themes/${oldTheme}/skins/${skinName}/wrapped.theme.css?version=${version}`,\n id: 'themeOld'\n }).attr(\"crossorigin\", \"anonymous\");\n jQuery('head').append(style);\n },\n loadThemeJs(theme:string){\n let version = 'dev';\n if((window as any).springboardBuildDate){\n version = (window as any).springboardBuildDate;\n }\n jQuery(\"#themeJS\").remove();\n const style = jQuery('<script>', {\n type: 'text/javascript',\n src: (window as any).CDN_DOMAIN+`/assets/themes/${theme}/js/theme.js?version=${version}`,\n id: 'themeJS'\n });\n jQuery('body').append(style);\n }\n}\n\n// Depuis ui.ts :\nsetStyle: function (stylePath:string) {\n if(stylePath && stylePath.startsWith(\"/\")){\n stylePath = (window as any).CDN_DOMAIN + stylePath;\n }\n if ($('#theme').length === 0) {\n let version = 'dev';\n if((window as any).springboardBuildDate){\n version = (window as any).springboardBuildDate;\n console.log('Springboard built on ' + version);\n }\n\n var style = $('<link>', {\n rel: 'stylesheet',\n type: 'text/css',\n href: stylePath + 'theme.css?version=' + version,\n id: 'theme'\n }).attr(\"crossorigin\", \"anonymous\");\n var favicon = $('<link>', {\n rel: 'icon',\n href: skin.basePath + 'img/illustrations/favicon.ico'\n });\n style.on('load', function () {\n $('body').show();\n });\n $('head')\n .append(style)\n .append(favicon);\n setTimeout(function () {\n $('body').show();\n }, 300);\n }\n else {\n $('#theme').attr('href', stylePath + 'theme.css');\n }\n}, \n\n*/\n","import angular, { IDocumentService, ILocationService, IScope } from \"angular\";\nimport { App, IMatomoTrackingParams, ITrackingParams, IWebApp } from \"ode-ts-client\";\nimport { conf, session } from \"../utils\";\n\nexport class TrackingService {\n constructor( \n private $document:IDocumentService, \n private $location:ILocationService, \n private $rootScope:IScope\n ) {\n }\n\n private hasOptedIn: boolean = false;\n\n private _params?:IMatomoTrackingParams;\n\n private async loadParams() {\n return this._params = await conf().Platform.analytics.parameters<IMatomoTrackingParams>(\"matomo\");\n }\n\n trackApp( app:App ) {\n this.loadParams().then( params => {\n if( !params || !this.shouldTrackCurrentApp() ) return;\n try {\n let _paq:any = (window as any)[\"_paq\"] = (window as any)[\"_paq\"] ?? [];\n _paq.push(['setRequestMethod', 'POST']);\n if( params.UserId )\t _paq.push(['setUserId', params.UserId]);\n if( params.Profile )\t_paq.push(['setCustomDimension', 1, params.Profile]);\n if( params.School )\t\t_paq.push(['setCustomDimension', 2, params.School]);\n if( params.Project )\t_paq.push(['setCustomDimension', 3, params.Project]);\n /* tracker methods like \"setCustomDimension\" should be called before \"trackPageView\" */\n _paq.push(['trackPageView']);\n _paq.push(['enableLinkTracking']);\n (function() {\n _paq.push(['setTrackerUrl', params.url +'matomo.php']);\n _paq.push(['setSiteId', params.siteId]);\n var d=document, g=d.createElement('script'), s=d.getElementsByTagName('script')[0];\n g.type='text/javascript'; g.async=true; g.src=params.url+'ode.js'; s.parentNode?.insertBefore(g,s);\n })();\n\n // Retrieve current optin value\n const thisTracker = this;\n _paq.push([function(this:any) { // The \"this\" parameter will be given by matomo. See typescript handbook https://www.typescriptlang.org/docs/handbook/2/functions.html#declaring-this-in-a-function\n thisTracker.hasOptedIn = !this.isUserOptedOut();\n thisTracker.$rootScope.$digest();\n }]);\n\n if( params.detailApps ) {\n const me = session().user;\n\n // Check the doNotTrack apps filter.\n if( angular.isArray(params.doNotTrack) && angular.isArray(me.apps) ) {\n // Retrieve app from current URL.\n for( var i=0; i<me.apps.length; i++ ) {\n if( me.apps[i] && me.apps[i].address && me.apps[i].name\n && this.$location.absUrl().indexOf(me.apps[i].address) !== -1\n && params.doNotTrack.indexOf(me.apps[i].name) !== -1 ) {\n // Don't intercept calls to th template's engine, see below.\n return;\n }\n }\n }\n\n // Build a virtual URL for this template\n let url = this.$location.absUrl().split(\"#\")[0];\n this.trackPage( (this.$document[0] as Document).title, url );\n }\n } catch(e) {\n console.error('Invalid tracker object. Should look like {\"siteId\": 99999, \"url\":\"http://your.matomo.server.com/\"}\"', e);\n }\n });\n }\n\n trackPage( title:string, url:string ) {\n this.loadParams().then( params => {\n if( !params || !this.shouldTrackCurrentApp() ) return;\n\n // Then let's track single-page applications routes, too.\n var _paq = (window as any)[\"_paq\"] = (window as any)[\"_paq\"] || [];\n _paq.push(['setDocumentTitle', title]);\n _paq.push(['setCustomUrl', url]);\n _paq.push(['trackPageView']);\n });\n }\n\n willTrackEvent( eventName:string ): boolean {\n // /!\\ This method should not be async so it uses this._params directly, and not loadParams(). \n const params = this._params;\n if( !params ) return false;\n\n const apps = this.getCurrentMatchingApps();\n //check included first\n if( params.trackOnly && params.trackOnly.length > 0 ) {\n for(const app of apps) {\n if (params.trackOnly.indexOf(`${app.name}.${eventName}`) !== -1 || params.trackOnly.indexOf(`*.${eventName}`) !== -1) {\n return true;\n }\n }\n //if not in whitelist return false\n return false;\n }\n //check excluded then\n if (params.doNotTrack instanceof Array && params.doNotTrack.length > 0) {\n for (const app of apps) {\n if (params.doNotTrack.indexOf(`${app.name}.${eventName}`) !== -1 || params.doNotTrack.indexOf(`*.${eventName}`) !== -1) {\n return false;\n }\n }\n }\n //if not blacklist return true\n return true;\n }\n\n trackEvent( category:string, action:string, name?:string, value?:number ) {\n this.loadParams().then( params => {\n if( !params ) return;\n\n var _paq = (window as any)[\"_paq\"] = (window as any)[\"_paq\"] || [];\n let event:any[] = ['trackEvent',category,action];\n if( typeof name===\"string\" ) {\n name = name.trim();\n if( name.length > 0)\n event.push( name );\n }\n if( typeof value===\"number\" )\n event.push( value );\n _paq.push(event);\n });\n }\n\n saveOptIn() {\n this.loadParams().then( params => {\n if( !params ) return;\n let _paq = (window as any)[\"_paq\"] = (window as any)[\"_paq\"] || [];\n _paq.push( this.hasOptedIn ? ['forgetUserOptOut'] : ['optUserOut'] );\n });\n }\n\n private shouldTrackCurrentApp(): boolean {\n // /!\\ This method should not be async so it uses this._params directly, and not loadParams(). \n const params = this._params;\n if( !params ) return false;\n\n if( params.doNotTrack ) {\n const apps = this.getCurrentMatchingApps();\n for (const app of apps) {\n if (params.doNotTrack.indexOf(app.name) !== -1) {\n return false;\n }\n }\n }\n return true;\n }\n\n private getCurrentMatchingApps(): IWebApp[] {\n const all: IWebApp[] = [];\n const apps = session().user.apps;\n if (apps instanceof Array) {\n // Retrieve app from current URL.\n for (let i = 0; i < apps.length; i++) {\n const app = apps[i];\n if (app && app.address && app.name && location.href.indexOf(app.address) !== -1) {\n all.push(app);\n }\n }\n }\n return all;\n }\n\n private shouldTrackEvent( params:ITrackingParams, eventName:string ): boolean {\n if( !params ) return false;\n const apps = this.getCurrentMatchingApps();\n //check included first\n if( params.trackOnly && params.trackOnly.length > 0 ) {\n for(const app of apps) {\n if (params.trackOnly.indexOf(`${app.name}.${eventName}`) !== -1 || params.trackOnly.indexOf(`*.${eventName}`) !== -1) {\n return true;\n }\n }\n //if not in whitelist return false\n return false;\n }\n //check excluded then\n if (params.doNotTrack instanceof Array && params.doNotTrack.length > 0) {\n for (const app of apps) {\n if (params.doNotTrack.indexOf(`${app.name}.${eventName}`) !== -1 || params.doNotTrack.indexOf(`*.${eventName}`) !== -1) {\n return false;\n }\n }\n }\n //if not blacklist return true\n return true;\n }\n}\n\nTrackingService.$inject=[\"$document\", \"$location\", \"$rootScope\"];\n","//import { appPrefix, devices, deviceType } from \"../globals\";\nimport { devices, deviceType, http, session } from \"../utils\";\nimport { IVideoUploadResult } from \"./video-upload.service\";\n\n// FIXME\n// type VideoSession = {\n// \telem:HTMLVideoElement;\n// \twasPlayed: boolean;\n// \tcb:(this:HTMLVideoElement, ev:Event)=>any;\n// };\n\n/**\n * This utility class allows sending usage data events to the server.\n */\nexport class VideoEventTrackerService {\n// FIXME\n//\tprivate cleanup:VideoSession[] = [];\n\n\t/**\n\t * Generates a new FormData containing generic video tracking metadata : \n\t * - device,\n\t * - browser,\n\t * - url,\n\t * - app\n\t * @returns FormData\n\t */\n\tstatic asFormData():FormData {\n const formData = new FormData();\n // Report useful contextual data\n const browserInfo = devices.getBrowserInfo();\n formData.append(\"device\", deviceType);\n formData.append(\"browser\", browserInfo.name + ' ' + browserInfo.version);\n formData.append(\"url\", window.location.hostname);\n formData.append(\"app\", session().currentApp || \"\" );\n\t\treturn formData;\n\t}\n\n\tgenerateSaveEvent( elapsedTime:number, saved:IVideoUploadResult ) {\n\t\tlet browserInfo = devices.getBrowserInfo();\n\t\tlet videoEventData = {\n\t\t\tvideoId: saved.videoworkspaceid,\n\t\t\tuserId: session().user.userId,\n\t\t\tuserProfile: session().description.profiles[0],\n\t\t\tdevice: deviceType,\n\t\t\tbrowser: browserInfo.name +' '+ browserInfo.version,\n\t\t\tstructure: session().user.structureNames[0],\n\t\t\tlevel: session().user.level,\n\t\t\tduration: Math.round(elapsedTime),\n\t\t\tweight: saved.videosize,\n\t\t\tcaptation: true,\n\t\t\turl: window.location.hostname,\n\t\t\tapp: session().currentApp\n\t\t}\n\t\thttp().postJson('/video/event/save', videoEventData);\n\t}\t\n\n // FIXME port tracking support in the next new framework ?\n\n\t/** Send a VIDEO_VIEW or VIDEO_PLAY event to the server. */\n\t// private generateEvent( type: \"play\"|\"view\", videoId: string, source:string) {\n\t// \tconst browserInfo = devices.getBrowserInfo();\n\t// \tconst videoEventData = {\n\t// \t\tvideoId: videoId,\n\t// \t\tdevice: deviceType,\n\t// \t\tbrowser: browserInfo.name + ' ' + browserInfo.version,\n\t// \t\tsession: '',\t// TODO: in the end, this is intended to identify a session of play/pause/...\n\t// \t\tsource: source,\n\t// \t\tduration: 0,\t// This will become the \"duration of the play session\"\n\t// \t\turl: window.location.hostname,\n\t// \t\tapp: session().currentApp || \"\"\n\t// \t}\n\t// \thttp().postJson('/video/event/'+type, videoEventData);\n\t// }\n\t// \n\t// private onPlay(event:Event) {\n\t// \tconst elem = event.target as HTMLVideoElement;\n\t// \tconst session = this.cleanup.find( video => video.elem===elem && !video.wasPlayed );\n\t// \tif( session && !session.wasPlayed ) {\n\t// \t\tsession.wasPlayed = true;\n\n\t// \t\tconst videoId = elem.dataset.documentId || '';\n\t// \t\tconst source = (elem.dataset.documentIsCaptation || \"false\") == \"true\" ? 'CAPTURED' : 'UPLOADED';\n\t// \t\tthis.generateEvent( \"play\", videoId, source );\n\t// \t}\n\t// }\n\t// \n\t// private generateViewEventFor( video: HTMLVideoElement) {\n\t// \tconst videoId = video.dataset.documentId || '';\n\t// \tconst source = (video.dataset.documentIsCaptation || \"false\") == \"true\" ? 'CAPTURED' : 'UPLOADED';\n\t// \tthis.generateEvent( \"view\", videoId, source );\n\t// }\n\t// \n\t// /** Track VIDEO_VIEW and VIDEO_PLAY events for a given <video> element. */\n\t// trackOne( video:HTMLVideoElement ) {\n\t// \tif( ! video )\n\t// \t\treturn;\n\t// \t// Track this video player.\n\t// \tconst onPlay = (e:Event) => {this.onPlay(e);}\n\t// \tvideo.addEventListener('play', onPlay);\n\t// \tthis.cleanup.push( {elem:video, wasPlayed:false, cb:onPlay} );\n\t// \t// Forbid downloading : this is not supported by all navigators, see https://caniuse.com/?search=controlsList\n\t// \tvideo.setAttribute(\"controlsList\", \"nodownload\");\n\t// \tthis.generateViewEventFor( video );\n\t// }\n\n\t// untrackOne( video:HTMLVideoElement ) {\n\t// \tif( ! video )\n\t// \t\treturn;\n\t// \t// Untrack this video player.\n\t// \tfor( let i=this.cleanup.length-1; i>=0; i-- ) {\n\t// \t\tconst v = this.cleanup[i];\n\t// \t\tif( !v || v.elem!==video || !v.cb )\n\t// \t\t\tcontinue;\n\t// \t\tv.elem.removeEventListener('play', v.cb);\n\t// \t\tthis.cleanup.splice(i,1);\n\t// \t}\n\t// }\n\n\t// /**\n\t// * Look for every <video data-document-is-captation> tag in the HTML document, and manage their VIDEO_VIEW and VIDEO_PLAY events.\n\t// * If applied to an angular scope, it will auto-release the listeners and prevent memory leaks.\n\t// * Otherwise, you must call untrackAll() to release the listeners.\n\t// * @param $scope\n\t// */\n\t// trackAll( $scope ) {\n\t// \tconst videos = document.querySelectorAll('video[data-document-is-captation]');\n\t// \t// For each video players in the document.\n\t// \tfor( let i=0; videos && i<videos.length; i++ ) {\n\t// \t\tlet video: HTMLVideoElement = videos[i] as HTMLVideoElement;\n\t// \t\tthis.trackOne( video );\n\t// \t}\n\t// \tif( $scope )\n\t// \t\t$scope.$on('$destroy', () => {this.untrackAll();});\n\t// }\n\t\n\t// /** Release event listeners previously put on <video> tags, @see trackAll() */\n\t// untrackAll() {\n\t// \tthis.cleanup.forEach( video => {\n\t// \t\tif( video && video.elem && video.cb ) {\n\t// \t\t\tvideo.elem.removeEventListener('play', video.cb);\n\t// \t\t}\n\t// \t});\n\t// \tthis.cleanup = [];\n\t// }\n}\n\n","import { APP, IHttpResponse } from \"ode-ts-client\";\nimport { conf, http } from \"../utils\";\nimport { VideoEventTrackerService } from \"./video-event-tracker.service\";\n\n//-------------------------------------\nexport interface IVideoUploader {\n//-------------------------------------\n /** Accepted file extensions of videos UPLOADED to the server. */\n readonly validExtensions: string[];\n /** Maximum file weight, in Mbytes, of videos UPLOADED to the server. */\n readonly maxWeight: number;\n /** Maximum duration, in minutes, of videos RECORDED on a client software. */\n readonly maxDuration: number;\n /** Check if an extension is valid, whatever its case. */\n checkValidExtension(ext:string):boolean;\n /** Upload a video to the server. */\n upload(file:Blob, filename:string, captation:boolean, duration?:string|number):Promise<IVideoUploadResult>;\n};\n\n//-------------------------------------\nexport type IVideoUploadResult = {\n//-------------------------------------\n /** Result of the upload+encode flow. */\n state:\"running\"|\"succeed\"|\"error\";\n /** ID of the video file. */\n videoid?: string;\n /** size of the encoded video, in bytes. */\n videosize:number;\n /** ID of the video document in Workspace. */\n videoworkspaceid: string;\n /** Error code (i18n key), when state===\"error\" */\n code?:string;\n}\n\n//-------------------------------------\ntype UploadResponse = IHttpResponse & {\n//-------------------------------------\n data: IVideoUploadResult & { processid:string; }\n};\n\n/**\n * This utility class allows uploading videos to the server, as documents.\n * Each video can be either recorded (Blob) or chosen from the local storage (File).\n * The server will process each uploaded video and convert them to a streamable format.\n */\n//-------------------------------------\nexport class VideoUploadService implements IVideoUploader {\n//-------------------------------------\n private _maxWeight = 50; // in Mbytes. Applies to uploaded videos.\n private _maxDuration = 3; // in minutes. Applies to recorded videos.\n private _acceptVideoUploadExtensions = [\"mp4\", \"mov\", \"avi\"];\n private _initialized = false;\n\n /** Valid extensions for an upload. */\n public get validExtensions():string[] {\n return this._acceptVideoUploadExtensions;\n }\n /** Max weight for an upload, in Mbytes*/\n public get maxWeight():number {\n return this._maxWeight;\n }\n /** Max duration for a record, in minutes. */\n public get maxDuration():number {\n return this._maxDuration;\n }\n\n /** Awaits for loading the video public configuration. */\n public async initialize() {\n if( this._initialized ) {\n return;\n }\n try {\n await conf().Platform.apps.initialize(APP.VIDEO, false);\n\n conf().Platform.apps.getPublicConf(APP.VIDEO)\n .then( response => {\n this._maxWeight = this.safeValueOf(response, \"max-videosize-mbytes\", this._maxWeight);\n this._maxDuration = this.safeValueOf(response, \"max-videoduration-minutes\", this._maxDuration);\n let exts = response[\"accept-videoupload-extensions\"];\n if( exts ) {\n if( typeof exts===\"string\" ) {\n exts = [exts];\n }\n this._acceptVideoUploadExtensions = exts || this._acceptVideoUploadExtensions;\n // Force to upper case\n this._acceptVideoUploadExtensions = this._acceptVideoUploadExtensions.map( e => e.toUpperCase() );\n }\n });\n } finally {\n this._initialized = true;\n }\n }\n\n private safeValueOf(obj:any, key:string, defaultValue:number) {\n try { \n const value = parseInt( obj[key] );\n return typeof value!==\"number\" || isNaN(value) ? defaultValue : value;\n }\n catch(e) { \n return defaultValue;\n }\n }\n\n public checkValidExtension(ext:string) {\n ext = ext.toUpperCase();\n return this._acceptVideoUploadExtensions.findIndex(e => ext===e) !== -1;\n }\n\n public async upload(file:Blob, filename:string, captation:boolean, duration?:string|number):Promise<IVideoUploadResult> {\n if (!file) {\n throw new Error(\"Invalid video file.\");\n }\n if (!filename) {\n throw new Error(\"Invalid video filename.\");\n }\n \n let uploadUrl = \"/video/encode?captation=\"+captation;\n\n // Add some metadata for the event layer.\n let formData = VideoEventTrackerService.asFormData();\n formData.append(\"file\", file, filename);\n formData.append(\"weight\", ''+file.size );\n formData.append(\"captation\", ''+captation);\n if( duration ) {\n formData.append(\"duration\", ''+duration);\n uploadUrl += \"&duration=\"+duration;\n }\n \n const uploadRes = await http().post<IVideoUploadResult>(uploadUrl, formData);\n if(http().latestResponse.status==202){\n const checkUrl = '/video/status/'+ (http().latestResponse as UploadResponse).data.processid;\n// console.log(\"[VideoUploader] start fetching status for :\", uploadRes.data.processid, uploadRes.data);\n let previous=0, seconds=1;\n do {\n // Wait then check status\n const waitDuration = seconds+previous;\n await new Promise( resolve => setTimeout(resolve, waitDuration*1000) );\n previous = seconds;\n seconds = Math.min(8, waitDuration); // Fibonacci limited to 8\n const check = await http().get<IVideoUploadResult>(checkUrl);\n if( http().latestResponse.status == 201 ){\n return check; // finished !\n }\n if( http().latestResponse.status != 202 ) {\n break;\n }\n } while( true );\n }\n throw new Error(\"Video cannot be uploaded.\");\n }\n}\n","import { EventName, EVENT_NAME, IWidget, LayerName, LAYER_NAME, WidgetFrameworkFactory, RxJS } from \"ode-ts-client\";\nimport { notif } from \"../utils\";\n\n/** The widget loader service. */\nexport class WidgetService {\n\n /** Loads the widget configuration. */\n public initialize():Promise<void> {\n return WidgetFrameworkFactory.instance().initialize(null, null);\n }\n\n /** List widgets that are visible to the connected user. */\n public list():IWidget[] {\n return WidgetFrameworkFactory.instance().list;\n }\n\n /** Get notified when the widgets preferences changed. */\n public onChange():RxJS.Observable<{name:EventName, layer:LayerName|string, data?: any}> {\n return notif().events().pipe(\n RxJS.filter( e => e.layer===LAYER_NAME.WIDGETS && e.name===EVENT_NAME.USERPREF_CHANGED )\n );\n }\n}\n","import { IXitiTrackingParams } from \"ode-ts-client\";\nimport { conf, http } from \"../utils\";\n\n// 2021 implementation of XiTi\ndeclare var ATInternet: any;\nlet ATTag: any;\n\n/** Model : XiIi mapping for CAS connectors. */\ntype CasMapping = {\n xitiService: string,\n xitiOutil: string\n}\n\n/** The xiti loader service. */\nexport class XitiService {\n\n /** Apply XiTi tracking (navigation). */\n public runScript() {\n return Promise.all( [\n conf().Platform.analytics.xiti(),\n this.loadScript()\n ]).then( tuple => {\n const conf = tuple[0];\n if(!conf) return;\n console.debug(\"XiTi conf=\"+JSON.stringify(conf));\n return this.run( conf );\n }).catch( e => {\n // Something went wrong. Continue processing the rest of the page silently.\n e && console.debug(\"XiTi: run script error=\"+JSON.stringify(e));\n });\n }\n\n /** Apply XiTi tracking (click). */\n public trackClick(name: string, element: Element) {\n return Promise.all( [\n conf().Platform.analytics.xiti(),\n this.loadScript(),\n this.loadCasMapping(name)\n ]).then( tuple => {\n const conf = tuple[0];\n if(!conf) return;\n console.debug(\"XiTi conf=\"+JSON.stringify(conf));\n return this.click( conf, tuple[2], name, element );\n }).catch( e => {\n // Something went wrong. Continue processing the rest of the page silently.\n e && console.debug(\"XiTi: track click error=\"+JSON.stringify(e));\n });\n }\n\n /** Load XiTi implementation, if needed. */\n private async loadScript() {\n if (typeof ATInternet===\"undefined\") {\n const scriptPath = '/xiti/public/js/lib/smarttag_ENT.js';\n const response = await http().get<string>(scriptPath, {headers:{'Accept':'application/javascript'}});\n if (http().latestResponse.status != 200) throw 'Error while loading XiTi script';\n eval(response);\n }\n }\n\n /** Load XiTi CAS mapping for @param name. */\n private async loadCasMapping( name:string ) {\n const scriptPath = `/xiti/cas-infos?connector=${name}`;\n const casMapping = await http().get<CasMapping>(scriptPath);\n if (http().latestResponse.status != 200) throw 'Error while loading XiTi CAS mapping';\n if (!casMapping.xitiService || !casMapping.xitiOutil) throw 'Malformed XiTi CAS mapping';\n return casMapping;\n }\n\n /** \n * 2021 implementation of XiTi.\n * @requires loadScript() must be called and its Promise resolved beforehand.\n */\n private async run( xitiConf:IXitiTrackingParams, locationPath:string=window.location.pathname ) {\n if (!ATInternet) return;\n\n\t\t// SERVICE\n let SERVICE = xitiConf.LIBELLE_SERVICE.default || null;\n\t\tfor(let prop in xitiConf.LIBELLE_SERVICE){\n\t\t\tif(prop !== 'default' && locationPath.indexOf(prop) >= 0){\n\t\t\t\tSERVICE = xitiConf.LIBELLE_SERVICE[prop];\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n // NOM_PAGE\n // FIXME Adapted from legacy infra-front \"appPrefix\". I fear side-effects if logic is changed here...\n const appPrefix = (path => {\n if(path && path.split('/').length > 0){\n let locationPath = window.location.pathname.split('/')[1];\n if (locationPath == 'userbook') locationPath = 'directory';\n if (locationPath == 'welcome') locationPath = '.';\n return locationPath;\n }\n })(locationPath);\n\n ATTag = new ATInternet.Tracker.Tag({site: xitiConf.STRUCT_ID});\n \n ATTag.setProps({\n \"SERVICE\": SERVICE,\n \"TYPE\": xitiConf.TYPE,\n \"OUTIL\": xitiConf.OUTIL,\n \"UAI\": xitiConf.STRUCT_UAI,\n \"PROJET\": xitiConf.PROJET,\n \"EXPLOITANT\": xitiConf.EXPLOITANT,\n \"PLATEFORME\": xitiConf.PLATFORME,\n \"PROFIL\": xitiConf.PROFILE,\n }, true);\n \n ATTag.identifiedVisitor.set({\n id: xitiConf.ID_PERSO,\n category: xitiConf.PROFILE\n });\n \n ATTag.page.set({\n name: (appPrefix==='userbook') ? 'directory' : appPrefix,\n chapter1: '',\n chapter2: '',\n chapter3: '',\n level2: xitiConf.STRUCT_UAI,\n });\n \n ATTag.dispatch(); \n \n /* ------\n FIXME Remove old code in comments below, once the 2021 XiTi impl is validated.\n The following was ported from themes but NEVER TESTED.\n --------- */\n //Final action - populates xiti vars & launches the script\n // if( typeof xitiConf.ID_ETAB === 'object' ) {\n // //Xiti script path\n // const skin = conf().Platform.theme;\n // const scriptPath = skin.basePath + 'js/xtfirst_ENT.js';\n\n // (window as any).xt_multc = \"&x1=\" + xitiConf.ID_SERVICE +\n // \"&x2=\" + xitiConf.ID_PROFIL +\n // \"&x3=\" + xitiConf.ID_PROJET +\n // \"&x4=\" + xitiConf.ID_PLATEFORME;\n\n // (window as any).xt_at = xitiConf.ID_PERSO;\n // (window as any).xtidc = xitiConf.ID_PERSO;\n // (window as any).xt_ac = xitiConf.ID_PROFIL;\n\n // (window as any).xtparam = (window as any).xt_multc + \"&ac=\"+ (window as any).xt_ac +\"&at=\" + (window as any).xt_at;\n\n // (window as any).xtnv = document;\n\n // if( xitiConf.ENABLE_PROXY ){\n // (window as any).xtsdi = window.location.protocol + \"//\" + window.location.host + \"/hit.xitif\"\n // }\n // (window as any).xtsd = window.location.protocol === \"https:\" ? \"https://logs\" : \"http://logi7\";\n // (window as any).xtsite = xitiConf.ID_ETAB.collectiviteId;\n // (window as any).xtn2 = xitiConf.ID_ETAB.id;\n // (window as any).xtpage = xitiConf.LIB_SERVICE;\n // (window as any).xtdi = \"\";\n\n // jQuery.getScript(scriptPath, function(){ console.log(\"xiti ready\"); });\n // }\n }\n\n /** \n * Track clicks on connector.\n * @requires loadScript() must be called and its Promise resolved beforehand.\n */\n private click(xitiConf:IXitiTrackingParams, casMapping:CasMapping, name: string, element: Element) {\n if (!ATInternet || !ATTag) return;\n\n console.debug(\"xiti click !!!\");\n \n //SERVICE\n const SERVICE = casMapping.xitiService;\n \n //OUTIL\n const OUTIL = casMapping.xitiOutil;\n \n const props = {\n \"SERVICE\": SERVICE,\n \"TYPE\": \"TIERS\",\n \"OUTIL\": OUTIL,\n }\n \n // NAME\n const NAME = name;\n \n // TYPE\n const TYPE = \"navigation\";\n \n // UAI\n const UAI = xitiConf.STRUCT_UAI;\n\n ATTag.setProps(props, false);\n \n ATTag.click.send({\n elem: element,\n name: NAME,\n type: TYPE,\n level2: UAI,\n }); \n }\n \n}\n","export abstract class Base64\n{\n public static encode(str: string): string\n {\n return btoa(str);\n }\n\n public static decode(str: string): string\n {\n return atob(str);\n }\n}\n","import { UAParser } from 'ua-parser-js';\n\nexport type BrowserInfo = {\n name:'MSIE'|'Edge'|'Chrome'|'Safari'|'Firefox'|'Opera'|'CriOS'|'FxiOS'|'unknown',\n version:number,\n}\nexport type OSInfo = {\n name: string | undefined;\n version: string | undefined;\n}\nexport const devices = {\n /* A few User Agent strings for testing purposes: \n * iPod / iPad / iPhone\n Mozilla/5.0 (iPhone; CPU iPhone OS 14_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/14.0.2 Mobile/15E148 Safari/604.1\n Mozilla/5.0 (iPad; CPU OS 14_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/14.0.1 Mobile/15E148 Safari/604.1\n Mozilla/5.0 (iPad; CPU OS 14_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/14.0 Mobile/15E148 Safari/604.1\n */\n getOSInfo: (uaString?: string): OSInfo => {\n let uaParser: UAParser = new UAParser(uaString);\n return uaParser.getOS();\n },\n isIE: () => navigator.userAgent.indexOf('Trident') !== -1,\n isiOS: () => /iPad|iPhone|iPod/.test(navigator.userAgent) && !(window as any).MSStream,\n isIphone: () => navigator.userAgent.indexOf(\"iPhone\") != -1,\n isIpod: () => navigator.userAgent.indexOf(\"iPod\") != -1 ,\n isIpad: () =>navigator.userAgent.indexOf(\"iPad\") != -1 ,\n getBrowserInfo ():BrowserInfo {\n const safeSplit = (str: string = \"\", pattern: string = \"\") => {\n if (typeof str == \"string\") {\n return str.split(pattern);\n } else {\n return [];\n }\n }\n const userAgent = navigator.userAgent;\n if (userAgent.indexOf('OPR') !== -1) {\n\t\t\tconst operaVersion = safeSplit(userAgent, 'OPR/')[1];\n\t\t\tconst version = parseInt(safeSplit(operaVersion, '.')[0]);\n\t\t\treturn {\n\t\t\t\tname: 'Opera',\n\t\t\t\tversion: version,\n\t\t\t}\n } else if (userAgent.indexOf('Edg') !== -1) {\n\t\t\tconst edgeVersion = safeSplit(userAgent, 'Edg/')[1];\n\t\t\tconst version = parseInt(safeSplit(edgeVersion, '.')[0]);\n\t\t\treturn {\n\t\t\t\tname: 'Edge',\n\t\t\t\tversion: version,\n }\n } else if (userAgent.indexOf('Chrome') !== -1) {\n\t\t\tconst chromeVersion = safeSplit(userAgent, 'Chrome/')[1];\n\t\t\tconst version = parseInt(safeSplit(chromeVersion, '.')[0]);\n\t\t\treturn {\n\t\t\t\tname: 'Chrome',\n\t\t\t\tversion: version,\n\t\t\t}\n\t\t}\n\t\telse if (userAgent.indexOf('IEMobile') !== -1) {\n\t\t\tconst ieVersion = safeSplit(userAgent, 'IEMobile/')[1];\n\t\t\tconst version = parseInt(safeSplit(ieVersion, ';')[0]);\n\t\t\treturn {\n\t\t\t\tname: 'MSIE',\n\t\t\t\tversion: version,\n\t\t\t}\n\t\t}\n else if (userAgent.indexOf('AppleWebKit') !== -1 \n && userAgent.indexOf('Chrome') === -1\n && userAgent.indexOf('CriOS') === -1\n && userAgent.indexOf('FxiOS') === -1) {\n\t\t\tconst safariVersion = safeSplit(userAgent, 'Version/')[1];\n\t\t\tconst version = parseInt(safeSplit(safariVersion, '.')[0]);\n\t\t\treturn {\n\t\t\t\tname: 'Safari',\n\t\t\t\tversion: version,\n\t\t\t}\n\t\t}\n\t\telse if (userAgent.indexOf('Firefox') !== -1) {\n\t\t\tconst ffVersion = safeSplit(userAgent, 'Firefox/')[1];\n\t\t\tconst version = parseInt(safeSplit(ffVersion, '.')[0]);\n\t\t\treturn {\n\t\t\t\tname: 'Firefox',\n\t\t\t\tversion: version,\n\t\t\t}\n\t\t}\n\t\telse if (userAgent.indexOf('MSIE') !== -1) {\n\t\t\tconst msVersion = safeSplit(userAgent, 'MSIE ')[1];\n\t\t\tconst version = parseInt(safeSplit(msVersion, ';')[0]);\n\t\t\treturn {\n\t\t\t\tname: 'MSIE',\n\t\t\t\tversion: version,\n\t\t\t}\n\t\t}\n\t\telse if (userAgent.indexOf('MSIE') === -1 && userAgent.indexOf('Trident') !== -1) {\n\t\t\tconst msVersion = safeSplit(userAgent, 'rv:')[1];\n\t\t\tconst version = parseInt(safeSplit(msVersion, '.')[0]);\n\t\t\treturn {\n\t\t\t\tname: 'MSIE',\n\t\t\t\tversion: version,\n\t\t\t}\n } \n else if (userAgent.indexOf('CriOS') !== -1) {\n const chromeIOsVersion = safeSplit(userAgent, 'CriOS/')[1];\n\t\t\tconst version = parseInt(safeSplit(chromeIOsVersion, '.')[0]);\n\t\t\treturn {\n\t\t\t\tname: 'CriOS',\n\t\t\t\tversion: version,\n\t\t\t}\n } else if (userAgent.indexOf('FxiOS') !== -1) {\n const ffIOsVersion = safeSplit(userAgent, 'FxiOS/')[1];\n\t\t\tconst version = parseInt(safeSplit(ffIOsVersion, '.')[0]);\n\t\t\treturn {\n\t\t\t\tname: 'FxiOS',\n\t\t\t\tversion: version,\n\t\t\t}\n }\n\t\t// Other ???\n\t\treturn {\n\t\t\tname: 'unknown',\n\t\t\tversion: 0,\n\t\t}\n }\n};\n\nexport type DEVICE_TYPE = 'Mobile' | 'Tablet' | 'Desktop';\nexport let deviceType: DEVICE_TYPE;\n\nif (navigator.userAgent.match(/Mobile/i)\n || navigator.userAgent.match(/iPhone/i)\n || navigator.userAgent.match(/iPod/i)\n || navigator.userAgent.match(/IEMobile/i)\n || navigator.userAgent.match(/Windows Phone/i)\n || navigator.userAgent.match(/Android/i)\n || navigator.userAgent.match(/BlackBerry/i)\n || navigator.userAgent.match(/webOS/i)) {\n deviceType = 'Mobile';\n document.getElementsByTagName('html')[0].setAttribute('mobile-device', '');\n} else if (navigator.userAgent.match(/Tablet/i)\n || navigator.userAgent.match(/iPad/i)\n || navigator.userAgent.match(/Nexus 7/i)\n || navigator.userAgent.match(/Nexus 10/i)\n || navigator.userAgent.match(/KFAPWI/i)) {\n deviceType = 'Tablet';\n document.getElementsByTagName('html')[0].setAttribute('tablet-device', '');\n} else {\n deviceType = 'Desktop';\n document.getElementsByTagName('html')[0].setAttribute('desktop-device','');\n}\n","export * from './interfaces'\nexport * from './shorts';\nexport * from './ng-bootstrap';\nexport * from \"./localization\";\nexport * from \"./TrackedScope\";\nexport * from './browser-info';\nexport * from './base64';\nexport { KnownWidget as TrackedActionFromWidget } from '../modules/widgets.module';\n","import moment from \"moment\"; // FIXME : should we use moment anymore ?\n\nexport abstract class L10n {\n /** \n * Initialize Moment's locale with given language. \n * @see https://momentjs.com/docs/#/i18n/\n */ \n static initialize( lang:string ) {\n const localesToUpdate = {\n \"fr\": {\n calendar: {\n lastDay: '[Hier à] HH[h]mm',\n sameDay: '[Aujourd\\'hui à] HH[h]mm',\n nextDay: 'dddd D MMMM YYYY',\n lastWeek: 'dddd D MMMM YYYY',\n nextWeek: 'dddd D MMMM YYYY',\n sameElse: 'dddd D MMMM YYYY'\n }\n }\n };\n moment.locale( lang );\n if( lang in localesToUpdate ) {\n moment.updateLocale( lang, (localesToUpdate as any)[lang] );\n }\n }\n\n static moment(inp?: moment.MomentInput, param2?: boolean|moment.MomentFormatSpecification, language?: string, strict?: boolean): moment.Moment {\n if( typeof param2!==\"boolean\" || language || typeof strict===\"boolean\" ) {\n return moment(inp, param2 as moment.MomentFormatSpecification, language, strict);\n } else {\n return moment(inp, strict);\n }\n }\n\n static utc(inp?: moment.MomentInput, strict?: boolean | undefined):moment.Moment {\n return moment.utc(inp);\n }\n\n static unix(timestamp: number): moment.Moment {\n return moment.unix( timestamp );\n }\n}\n","import { Subject, Subscription } from \"rxjs\";\nimport { conf } from \"./shorts\";\n\nfunction setToArray<T>(s: Set<T>): T[] {\n const res:Array<T> = [];\n s.forEach(g => res.push(g));\n return res;\n}\nfunction mapValuesToArray<KEY, T>(s: Map<KEY, T>): T[] {\n const res: T[] = [];\n s.forEach((value, _) => res.push(value));\n return res;\n}\nfunction mapKeysToArray<KEY, T>(s: Map<KEY, T>): KEY[] {\n const res: KEY[] = [];\n s.forEach((_, key) => res.push(key));\n return res;\n}\nexport interface INavigationInfo {\n accept(): void;\n reject(): void;\n confirmMessageKey?: string;\n checkGuardId?: string|\"*\";\n}\n\nexport interface INavigationListener {\n onChange: Subject<INavigationInfo>;\n start(): void;\n stop(): void;\n}\n\nexport interface INavigationGuard {\n reset(): void;\n canNavigate(): boolean;\n onUserConfirmNavigate?(canNavigate:boolean):void;\n}\n\nexport class NavigationGuardService {\n debounceMs: number = 1000 //ms\n _lastTime: number|null = null;\n _lastResponse: boolean|null = null;\n _listeners = new Map<INavigationListener, Subscription>();\n _guards = new Map<string, Set<INavigationGuard>>();\n \n _id_counter: number = 0;\n onUserConfirmNavigate = new Array<(canNavigate:boolean)=>void>();\n generateID(): string {\n return \"__auto_guard_id_\" + (navigationGuardService._id_counter++);\n }\n\n _getGuardsMapByID(rootID: string): Set<INavigationGuard> {\n let res = navigationGuardService._guards.get(rootID);\n return res != null ? res : new Set<INavigationGuard>();\n }\n\n registerGuard(rootID: string, guard: INavigationGuard) {\n let gmap = navigationGuardService._getGuardsMapByID(rootID);\n gmap.add(guard);\n navigationGuardService._guards.set(rootID, gmap);\n }\n unregisterGuard(rootID: string, guard: INavigationGuard) {\n let gmap = navigationGuardService._getGuardsMapByID(rootID);\n gmap.delete(guard);\n if (gmap.size == 0)\n navigationGuardService.unregisterRoot(rootID);\n }\n unregisterRoot(rootID: string) {\n navigationGuardService._guards.delete(rootID);\n }\n\n registerIndependantGuard(guard: INavigationGuard): string {\n let fakeRoot: string = navigationGuardService.generateID();\n navigationGuardService.registerGuard(fakeRoot, guard);\n return fakeRoot;\n }\n\n unregisterIndependantGuard(guardID: string): void {\n navigationGuardService.unregisterRoot(guardID);\n }\n\n registerListener(listener: INavigationListener) {\n if (navigationGuardService._listeners.has(listener)) {\n return;\n }\n listener.start();\n const sub = listener.onChange.subscribe((navigation) => {\n navigationGuardService.tryNavigate(navigation);\n });\n navigationGuardService._listeners.set(listener, sub);\n }\n unregisterListener(listener: INavigationListener) {\n const sub = navigationGuardService._listeners.get(listener);\n if (sub) {\n sub.unsubscribe();\n listener.stop();\n navigationGuardService._listeners.delete(listener);\n }\n }\n tryNavigate(navigation: INavigationInfo) {\n //debounce\n const lastTime = navigationGuardService._lastTime || 0;\n const currentTime = new Date().getTime();\n const duration = currentTime - lastTime;\n const lastResponse = navigationGuardService._lastResponse;\n if (lastResponse != null && duration < navigationGuardService.debounceMs) {\n if (lastResponse) navigation.accept();\n else navigation.reject();\n return;\n }\n const confirmMessageKey:string = navigation.confirmMessageKey || \"navigation.guard.text\";\n //try navigate\n for (const guardId of mapKeysToArray(navigationGuardService._guards) ) {\n const root = navigationGuardService._guards.get(guardId);\n if( ! root ) continue;\n /* If a guard ID is specified for this navigation, check it and only it.\n This is useful for guarding local modifications (in lightbox for example)\n without triggering the global modification guards. */\n if( navigation.checkGuardId\n && navigation.checkGuardId !== \"*\"\n && navigation.checkGuardId !== guardId ) {\n continue;\n }\n for (const guard of setToArray(root)) {\n if (!guard.canNavigate()) {\n const can = confirm( conf().Platform.idiom.translate(confirmMessageKey) );\n for(const cb of navigationGuardService.onUserConfirmNavigate){\n cb(can);\n }\n guard.onUserConfirmNavigate && guard.onUserConfirmNavigate(can);\n navigationGuardService._lastTime = new Date().getTime();\n navigationGuardService._lastResponse = can;\n if (can) {\n navigation.accept();\n navigationGuardService.resetAll();//reset all guards on navigate\n } else {\n navigation.reject();\n }\n return;\n }\n }\n }\n navigation.accept();\n }\n reset(rootID: string) {\n const guards = setToArray(navigationGuardService._getGuardsMapByID(rootID));\n for (const guard of guards) {\n guard.reset();\n }\n }\n resetAll() {\n for (const id of mapKeysToArray(navigationGuardService._guards))\n navigationGuardService.reset(id);\n }\n}\n\nexport const navigationGuardService = new NavigationGuardService();\n\n\n//=== Guards\nexport class InputGuard<T> implements INavigationGuard {\n reference: T;\n constructor(\n private currentValue: () => T, \n private resetter: () => T, \n private comparator: (a:T, b:T) => boolean = (a:T,b:T)=>a==b) { \n this.reference = this.resetter();\n }\n unNaN(val:any) {\n return typeof val === \"number\" && isNaN(val) === true ? null : val;\n }\n reset() {\n this.reference = this.resetter();\n }\n canNavigate(): boolean {\n return this.comparator(this.unNaN(this.reference), this.unNaN(this.currentValue()));\n }\n}\n\nexport interface IObjectGuardDelegate {\n guardObjectIsDirty(): boolean;\n guardObjectReset(): void;\n guardOnUserConfirmNavigate?(canNavigate:boolean):void;\n}\n\nexport class ObjectGuard implements INavigationGuard {\n constructor(private currentValue: () => IObjectGuardDelegate) { }\n reset() {\n this.currentValue().guardObjectReset();\n }\n canNavigate(): boolean {\n return !this.currentValue().guardObjectIsDirty();\n }\n onUserConfirmNavigate(canNavigate:boolean):void{\n const tmp = this.currentValue();\n tmp.guardOnUserConfirmNavigate && tmp.guardOnUserConfirmNavigate(canNavigate);\n }\n}\n\n//=== Listeners\nexport class AngularJSRouteChangeListener implements INavigationListener {\n private static _instance: AngularJSRouteChangeListener|null = null;\n private subscription: (()=>void)|null = null;\n onChange = new Subject<INavigationInfo>();\n constructor(private $rootScope: any) {\n let self = this;\n $rootScope.$on(\"$destroy\", function () {\n navigationGuardService.unregisterListener(self);\n });\n }\n start() {\n if (this.subscription) return;\n this.subscription = this.$rootScope.$on(\"$locationChangeStart\", (event:Event, next:string, current:string) => {\n //should be synchronous\n this.onChange.next({\n accept() { },\n reject() {\n event.preventDefault();\n }\n });\n });\n }\n stop() {\n this.subscription && this.subscription();\n this.subscription = null;\n }\n static getInstance($rootScope: any) {\n if (AngularJSRouteChangeListener._instance == null) {\n AngularJSRouteChangeListener._instance = new AngularJSRouteChangeListener($rootScope);\n }\n return AngularJSRouteChangeListener._instance;\n }\n}\n\nexport class DOMRouteChangeListener implements INavigationListener {\n private static _instance: DOMRouteChangeListener|null = null;\n onChange = new Subject<INavigationInfo>();\n callback:(e:Event)=>boolean = event => {\n let result:boolean = false;\n //should be synchronous\n this.onChange.next({\n accept() {\n result = true;\n },\n reject() {\n event.preventDefault();\n event.returnValue = false;\n result = false;\n }\n })\n return result;\n }\n start() {\n window.addEventListener(\"beforeunload\", this.callback, false);\n }\n stop() {\n window.removeEventListener(\"beforeunload\", this.callback);\n }\n\n static getInstance() {\n if (DOMRouteChangeListener._instance == null) {\n DOMRouteChangeListener._instance = new DOMRouteChangeListener();\n }\n return DOMRouteChangeListener._instance;\n }\n}\n\n/* template changes are deprecated in ode-ngjs-front\nexport class TemplateRouteChangeListener implements INavigationListener {\n private static _instance: TemplateRouteChangeListener = null;\n onChange = new Subject<INavigationInfo>();\n private defaultTrigger = true;\n private containerNotTriggering: string[] = [];\n private containerTriggering: string[] = [];\n start() {\n const self = this;\n template.setDelegate({\n tryOpen(args) {\n self.tryOpen(args.name, args.success, args.reject);\n }\n });\n }\n stop() {\n template.removeDelegate();\n }\n setTriggerByDefault(trigger: boolean) {\n this.defaultTrigger = trigger;\n }\n private triggerNavigation(name: string): boolean {\n for (let i = this.containerTriggering.length; i-- > 0;) {\n if (this.containerTriggering[i] == name) {\n return true;\n }\n }\n for (let i = this.containerNotTriggering.length; i-- > 0;) {\n if (this.containerNotTriggering[i] == name) {\n return false;\n }\n }\n return this.defaultTrigger;\n }\n tryOpen(containerName: string, openCb: () => void, rejectCb: () => void) {\n if (this.triggerNavigation(containerName)) {\n this.onChange.next({\n accept: openCb,\n reject: rejectCb\n });\n } else {\n openCb();\n }\n }\n addIgnoreContainer(name: string) {\n this.containerNotTriggering.push(name);\n }\n removeIgnoreContainer(name: string) {\n this.containerNotTriggering = this.containerNotTriggering.filter(n => n != name);\n }\n addTriggerContainer(name: string) {\n this.containerTriggering.push(name);\n }\n removeTriggerContainer(name: string) {\n this.containerTriggering = this.containerTriggering.filter(n => n != name);\n }\n static getInstance() {\n if (TemplateRouteChangeListener._instance == null) {\n TemplateRouteChangeListener._instance = new TemplateRouteChangeListener();\n }\n return TemplateRouteChangeListener._instance;\n }\n}\n*/\n\nexport class ManualChangeListener implements INavigationListener {\n onChange = new Subject<INavigationInfo>();\n start() { }\n stop() {\n this.onChange.unsubscribe();\n }\n}\n/*FIXME Port this to OdeModal, in ode-ngjs-front ?\nexport class LightboxChangeListener implements INavigationListener,LightboxDelegate {\n onChange = new Subject<INavigationInfo>();\n start() { }\n stop() {\n this.onChange.unsubscribe();\n }\n\tstayOpen():Promise<boolean>{\n\t\treturn new Promise((resolve,reject)=>{\n\t\t\tthis.onChange.next({\n\t\t\t\taccept(){\n\t\t\t\t\tresolve(false);\n\t\t\t\t},\n\t\t\t\treject(){\n\t\t\t\t\tresolve(true);\n\t\t\t\t}\n\t\t\t})\n\t\t});\n\t}\n}\n*/\n","import angular from \"angular\";\nimport { SessionFrameworkFactory } from \"ode-ts-client\";\nimport { conf } from \".\";\n\n/* \n * This code bootstraps angular on the current web page.\n * >>>> Your page must declare an angularJS module named \"app\" <<<<<\n * @see ../modules/index \n */\n(()=>{\n document.addEventListener(\"DOMContentLoaded\", () => {\n SessionFrameworkFactory.instance().initialize()\n .then( () => conf().initialize((window as any).entcore?.deploymentTag, null) )\n .then( () => {\n // Bootstrap angularJS on the <html> tag, requiring the \"app\" module.\n angular.bootstrap( document.querySelector('html') as HTMLHtmlElement, [\"app\"] );\n });\n }, { once:true }\n );\n})();\n\n/*\n//TODO que reprendre du code ci-dessous ?\n// Interpolate est dans base.module.ts\n\nvar module = angular.module('app', ['ngSanitize', 'ngRoute'], ['$interpolateProvider', function($interpolateProvider) {\n\t\t$interpolateProvider.startSymbol('[[');\n\t\t$interpolateProvider.endSymbol(']]');\n\t}]).config(['$sceDelegateProvider',function($sceDelegateProvider) {\n\t\t$sceDelegateProvider.resourceUrlWhitelist([\n\t\t\t// Allow same origin resource loads.\n\t\t\t'self',\n\t\t\t// Allow loading from our assets domain. **.\n\t\t\t(window as any).CDN_DOMAIN + '/**'\n\t\t ]);\n\t}])\n\n...\n\nmodule.config(['$locationProvider', function($locationProvider) {\n\t$locationProvider.hashPrefix('');\n}]);\n\n...\n\n if(window.notLoggedIn){\n Behaviours.loadBehaviours(appPrefix, async function(){\n await skin.loadDisconnected();\n func();\n })\n .error(async function(){\n await skin.loadDisconnected();\n func();\n });\n return;\n }\n try{\n let request = obj => {\n return new Promise((resolve, reject) => {\n let xhr = new XMLHttpRequest();\n xhr.open(obj.method || \"GET\", obj.url);\n if (obj.headers) {\n Object.keys(obj.headers).forEach(key => {\n xhr.setRequestHeader(key, obj.headers[key]);\n });\n }\n xhr.onload = () => {\n if (xhr.status >= 200 && xhr.status < 300) {\n resolve(JSON.parse(xhr.response));\n } else {\n reject(xhr.statusText);\n }\n };\n xhr.onerror = () => reject(xhr.statusText);\n xhr.send(obj.body);\n });\n };\n const res = await request({url:'/auth/oauth2/userinfo', method: 'get'})\n const data = res;\n await skin.loadConnected();\n model.me = data;\n model.me.preferences = {\n save: function(pref, data){\n if(data !== undefined){\n this[pref] = data;\n }\n \n model.trigger('preferences-updated');\n }\n };\n \n if (isLocalStorage()) {\n localStorage.setItem('login-event', model.me.login);\n }\n \n model.trigger(\"userinfo-loaded\")\n model.trigger('preferences-updated');\n //\n request({url:'/conf/public', method: 'get'}).then(res=>{\n Me.keepOpenOnLogout = !!(res as any).keepOpenOnLogout;\n });\n //\n model.me.hasWorkflow = function(workflow){\n return _.find(model.me.authorizedActions, function(workflowRight){\n return workflowRight.name === workflow;\n }) !== undefined || workflow === undefined;\n };\n \n model.me.hasRight = function(resource, right){\n if(right === 'owner'){\n return resource.owner && resource.owner.userId === model.me.userId;\n }\n let rightName = right.right || right;\n \n var currentSharedRights = _.filter(resource.shared, function(sharedRight){\n return (model.me.groupsIds || []).indexOf(sharedRight.groupId) !== -1\n || sharedRight.userId === model.me.userId;\n });\n \n var resourceRight = _.find(currentSharedRights, function(resourceRight){\n return resourceRight[rightName] || resourceRight.manager;\n }) !== undefined;\n \n var workflowRight = true;\n if(right.workflow){\n workflowRight = this.hasWorkflow(right.workflow);\n }\n \n return resourceRight && workflowRight;\n };\n \n model.me.workflow = {\n load: async function(services): Promise<void>{\n for(let service of services){\n try{\n let workflows = await Behaviours.findWorkflow(service);\n console.log('Workflows loaded from ' + service);\n console.log(workflows);\n this[service] = workflows;\n }\n catch(e){\n console.log(service + \" doesn't have a behaviours file.\");\n }\n }\n }\n };\n \n if(appPrefix !== '.'){\n await model.me.workflow.load(['workspace', appPrefix]);\n }\n else{\n await model.me.workflow.load(['workspace']);\n }\n \n model.trigger('me.change');\n \n calendar.init();\n await skin.loadBookmarks();\n func();\n }catch(e){\n func();\n }\n }\n \n$(document).ready(function(){\n\tsetTimeout(function(){\n\t\t//routing\n\t\tif(routes.routing){\n\t\t\tmodule.config(routes.routing);\n\t\t}\n\t\tbootstrap(function(){\n\t\t RTE.addDirectives(module);\n if (window.entcore.ng.init) {\n\t\t\t\twindow.entcore.ng.controllers.push(VideoController);\n\n\t\t\t\twindow.entcore.ng.services.push( ng.service(\"VideoUploadService\", [VideoUploadService]) );\n\t\t\t\twindow.entcore.ng.services.push( ng.service(\"VideoEventTracker\", [VideoEventTrackerService]) );\n window.entcore.ng.init(module);\n\t\t }\n\t\t\tmodel.build();\n\n\t\t\tlang.addDirectives(module);\n\n\n\t\t\tfunction start(){\n\t\t\t\tlang.addBundle('/i18n', function(){\n\t\t\t\t\tlang.addBundle('/' + appPrefix + '/i18n', function(){\n\t\t\t\t\t\t if (currentLanguage === 'fr') {\n\t\t\t\t\t\t\tmoment.locale(currentLanguage);\n\t\t\t\t\t\t\tmoment.updateLocale(currentLanguage, frLocales);\n\t\t\t\t\t\t}\n\t\t\t\t\t\telse {\n\t\t\t\t\t\t\tmoment.locale(currentLanguage);\n\t\t\t\t\t\t}\n angular.bootstrap($('html'), ['app']);\n model.trigger('bootstrap');\n\t\t\t\t\t\tmodel.bootstrapped = true;\n\t\t\t\t\t\tmodel.sync();\n\t\t\t\t\t});\n\t\t\t\t});\n\t\t\t}\n\n http().get(skin.basePath + 'js/directives.js').done((d) => {\n eval(d);\n\n if(typeof skin.addDirectives === 'function'){\n skin.addDirectives(module, start);\n }\n else{\n start();\n }\n })\n .error(() => {\n start();\n });\n\t\t});\n\t}, 10);\n});\n*/","import { L10n, conf } from \".\";\nimport { notify } from \"../services/notify.service\";\nimport $ from \"jquery\"; // FIXME : remove jQuery dependency \nimport { RecorderPermission, RecorderState } from \"./interfaces\";\n\ndeclare const Zlib: any;\n\nlet _zlib:any = null;\nasync function getZlib() {\n if (!_zlib) {\n\t\t_zlib = await $.ajax('/infra/public/js/zlib.min.js',{\n\t\t\tdataType:\"script\"\n\t\t});\n //_zlib = await http().getScript('/infra/public/js/zlib.min.js');\n\t\t//console.log(Zlib);\n }\n return _zlib;\n}\n\n// console.log(\"Use new recorder module\");\n\nconst resolvedNavigatorModules = {\n\tgetUserMediaLegacy: (navigator as any).getUserMedia\n\t\t|| (navigator as any).webkitGetUserMedia\n\t\t|| (navigator as any).mozGetUserMedia\n\t\t|| (navigator as any).msGetUserMedia,\n\tgetUserMedia: navigator.mediaDevices && navigator.mediaDevices.getUserMedia,\n\tAudioContext: (window as any).AudioContext || (window as any).webkitAudioContext,\n}\n\n\n/**\n * Utility class to record audio files, with no dependencies on angularJS.\n */\nexport var audio_recorder = (function () {\n var lang = conf().Platform.idiom;\n\tvar context:AudioContext,\n\t\tws:WebSocket|null = null,\n\t\tgainNode:any,\n\t\trecorder,\n\t\tcompress = true,\n\t\tplayer = new Audio();\n\tvar leftChannel:any[] = [],\n\t\trightChannel:any[] = [];\n\n\tvar bufferSize = 4096,\n\t\tloaded = false,\n\t\trecordingLength = 0,\n\t\tlastIndex = 0,\n\t\tencoder = new Worker('/infra/public/js/audioEncoder.js'),\n\t\tfollowers:Function[] = [];\n\n\tfunction uuid() {\n\t\treturn 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, function (c) {\n\t\t\tvar r = Math.random() * 16 | 0, v = c == 'x' ? r : (r & 0x3 | 0x8);\n\t\t\treturn v.toString(16);\n\t\t});\n\t}\n\n\tfunction getUrl(sampleRate: number) {\n\t\tconst protocol = window.location.protocol === \"https:\" ? \"wss\" : \"ws\";\n\t\tlet host: string = window.location.host;\n\t\tif (window.location.host === 'localhost:8090') {\n\t\t\thost = 'localhost:6502'\n\t\t}\n\t\tconst base = protocol + \"://\" + host;\n\t\treturn `${base}/audio/${uuid()}?sampleRate=${sampleRate}`;\n\t}\n\n\tfunction sendWavChunk() {\n\t\tvar index = rightChannel.length;\n\t\tif (!(index > lastIndex)) return;\n\t\tencoder.postMessage([\"init\", context.sampleRate])\n\t\tencoder.postMessage(['chunk', leftChannel.slice(lastIndex, index), rightChannel.slice(lastIndex, index), (index - lastIndex) * bufferSize]);\n\t\tencoder.onmessage = function (e) {\n\t\t\tif (!compress) {\n\t\t\t\tws && ws.send(e.data);\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tconst initialTime = parseInt( ''+performance.now() );\n\t\t\tvar deflate = new Zlib.Deflate(e.data);\n\t\t\tws && ws.send(deflate.compress());\n\t\t\tconst endTime = parseInt( ''+performance.now());\n\t\t\tif (endTime - initialTime > 50) {\n\t\t\t\tcompress = false;\n\t\t\t\tws && ws.send('rawdata');\n\t\t\t}\n\t\t};\n\t\tlastIndex = index;\n\t}\n\n\tfunction closeWs() {\n\t\tif (ws) {\n\t\t\tif (ws.readyState === 1) {\n\t\t\t\tws.close()\n\t\t\t}\n\t\t}\n\t\tclearWs();\n\t}\n\n\tfunction clearWs() {\n\t\tws = null;\n\t\tleftChannel = [];\n\t\trightChannel = [];\n\t\tlastIndex = 0;\n\t}\n\n\tfunction notifyFollowers(status:any, data?:any) {\n\t\ttry {\n\t\t\tfollowers.forEach(function (follower) {\n\t\t\t\tif (typeof follower === 'function') {\n\t\t\t\t\tfollower(status, data);\n\t\t\t\t}\n\t\t\t});\n\t\t} catch {\n\t\t\t// void: just don't stop the recorder process when a follower throws an error.\n\t\t}\n\t}\n\n\treturn {\n\t\telapsedTime: 0,\n\t\tloadComponents: function () {\n\t\t\tthis.title = lang.translate('recorder.filename') + L10n.moment().format('DD/MM/YYYY');\n\t\t\tloaded = true;\n\n\t\t\tconst handleMediaStream = (mediaStream:MediaStream) => {\n\t\t\t\tthis.permission = 'granted';\n\t\t\t\tcontext = new (resolvedNavigatorModules.AudioContext)();\n\t\t\t\tencoder.postMessage([\"init\", context.sampleRate])\n\t\t\t\tvar audioInput = context.createMediaStreamSource(mediaStream);\n\t\t\t\tgainNode = context.createGain();\n\t\t\t\taudioInput.connect(gainNode);\n\n\t\t\t\trecorder = context.createScriptProcessor(bufferSize, 2, 2);\n\t\t\t\trecorder.onaudioprocess = (e:AudioProcessingEvent) => {\n\t\t\t\t\tif (this.state !== 'recording') {\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\t\t\t\t\tvar left = new Float32Array(e.inputBuffer.getChannelData(0));\n\t\t\t\t\tleftChannel.push(left);\n\t\t\t\t\tvar right = new Float32Array(e.inputBuffer.getChannelData(1));\n\t\t\t\t\trightChannel.push(right);\n\n\t\t\t\t\trecordingLength += bufferSize;\n\n\t\t\t\t\tthis.elapsedTime += e.inputBuffer.duration;\n\n\t\t\t\t\tsendWavChunk();\n\n\t\t\t\t\tnotifyFollowers(this.state);\n\t\t\t\t};\n\n\t\t\t\tgainNode.connect(recorder);\n\t\t\t\trecorder.connect(context.destination);\n\t\t\t}\n\n\t\t\tif (resolvedNavigatorModules.getUserMedia !== undefined) {\n\t\t\t\tresolvedNavigatorModules.getUserMedia.call(navigator.mediaDevices, { audio: true })\n\t\t\t\t\t.then(handleMediaStream)\n\t\t\t\t\t.catch(err => {\n\t\t\t\t\t\tif (err) {\n\t\t\t\t\t\t\tthis.permission = 'denied';\n\t\t\t\t\t\t\tconsole.log(\"err:\", err);\n\t\t\t\t\t\t}\n\t\t\t\t\t})\n\t\t\t} else if (resolvedNavigatorModules.getUserMediaLegacy !== undefined) {\n\t\t\t\t// Legacy. Prevent crash in that motherfu**ing IE 💩\n\t\t\t\tresolvedNavigatorModules.getUserMediaLegacy({ audio: true },\n\t\t\t\t\thandleMediaStream,\n\t\t\t\t\tfunction (err:any) { console.log(\"err:\", err) }\n\t\t\t\t)\n\t\t\t}\n\n\t\t},\n\t\tisCompatible: function () {\n\t\t\treturn resolvedNavigatorModules.AudioContext !== undefined\n\t\t\t\t&& (resolvedNavigatorModules.getUserMedia !== undefined\n\t\t\t\t\t|| resolvedNavigatorModules.getUserMediaLegacy !== undefined\n\t\t\t\t)\n\t\t},\n\t\tstop: function () {\n\t\t\tif (ws) {\n\t\t\t\tws.send(\"cancel\");\n\t\t\t}\n\t\t\tthis.state = 'idle';\n\t\t\tplayer.pause();\n\t\t\tif (player.currentTime > 0) {\n\t\t\t\tplayer.currentTime = 0;\n\t\t\t}\n\t\t\tleftChannel = [];\n\t\t\trightChannel = [];\n\t\t\tnotifyFollowers(this.state);\n\t\t},\n\t\tflush: function () {\n\t\t\tthis.stop();\n\t\t\tthis.elapsedTime = 0;\n\t\t\tleftChannel = [];\n\t\t\trightChannel = [];\n\t\t\tnotifyFollowers(this.state);\n\t\t},\n\t\trecord: async function () {\n\t\t\tplayer.pause();\n\t\t\tvar that = this;\n\t\t\tif (that.state == 'preparing') return;\n\t\t\tthat.state = 'preparing';\n\t\t\tawait getZlib();\n\t\t\tif (ws) {\n\t\t\t\tthat.state = 'recording';\n\t\t\t\tnotifyFollowers(that.state);\n\t\t\t\tif (!loaded) {\n\t\t\t\t\tthat.loadComponents();\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tws = new WebSocket(getUrl(new (resolvedNavigatorModules.AudioContext)().sampleRate));\n\t\t\t\tws.onopen = function () {\n\t\t\t\t\tif (player.currentTime > 0) {\n\t\t\t\t\t\tplayer.currentTime = 0;\n\t\t\t\t\t}\n\n\t\t\t\t\tthat.state = 'recording';\n\t\t\t\t\tnotifyFollowers(that.state);\n\t\t\t\t\tif (!compress) {\n\t\t\t\t\t\tws && ws.send('rawdata');\n\t\t\t\t\t}\n\t\t\t\t\tif (!loaded) {\n\t\t\t\t\t\tthat.loadComponents();\n\t\t\t\t\t}\n\t\t\t\t};\n\t\t\t\tws.onerror = function (event: Event) {\n\t\t\t\t\tconsole.log(event);\n\t\t\t\t\tthat.state = 'stopped';\n\t\t\t\t\tnotifyFollowers(that.state);\n\t\t\t\t\tcloseWs();\n\t\t\t\t\tnotify.error( (event as ErrorEvent).error );\n\t\t\t\t}\n\t\t\t\tws.onmessage = (event) => {\n\t\t\t\t\tif (event.data && event.data.indexOf(\"error\") !== -1) {\n\t\t\t\t\t\tconsole.log(event.data);\n\t\t\t\t\t\tcloseWs();\n\t\t\t\t\t\tnotify.error(event.data);\n\t\t\t\t\t} else if (event.data && event.data === \"ok\" && that.state === \"encoding\") {\n\t\t\t\t\t\tcloseWs();\n\t\t\t\t\t\tnotifyFollowers('saved');\n\t\t\t\t\t\tthis.elapsedTime = 0;\n\t\t\t\t\t}\n\n\t\t\t\t}\n\t\t\t\tws.onclose = function (event) {\n\t\t\t\t\tthat.state = 'stopped';\n\t\t\t\t\tthat.elapsedTime = 0;\n\t\t\t\t\tnotifyFollowers(that.state);\n\t\t\t\t\tclearWs();\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\tsuspend: function () {\n\t\t\tthis.state = 'suspended';\n\t\t\tplayer.pause();\n\t\t\tnotifyFollowers(this.state);\n\t\t\treturn Promise.resolve();\n\t\t},\n\t\tpause: function () {\n\t\t\tthis.state = 'paused';\n\t\t\tplayer.pause();\n\t\t\tnotifyFollowers(this.state);\n\t\t},\n\t\tplay: function () {\n\t\t\tthis.pause();\n\t\t\tthis.state = 'playing';\n\t\t\tvar encoder = new Worker('/infra/public/js/audioEncoder.js');\n\t\t\tencoder.postMessage([\"init\", context.sampleRate])\n\t\t\tencoder.postMessage(['wav', rightChannel, leftChannel, recordingLength]);\n\t\t\tencoder.onmessage = function (e) {\n\t\t\t\tplayer.src = window.URL.createObjectURL(e.data);\n\t\t\t\tplayer.play();\n\t\t\t};\n\t\t\tnotifyFollowers(this.state);\n\t\t},\n\t\tstatus: function (callback:Function) {\n\t\t\tfollowers.push(callback);\n\t\t},\n\t\ttitle: \"\",\n\t\tstate: 'idle' as RecorderState,\n\t\tpermission: 'idle' as RecorderPermission,\n\t\tsave: function () {\n\t\t\tsendWavChunk();\n\t\t\tws && ws.send(\"save-\" + this.title);\n\t\t\tthis.state = 'encoding';\n\t\t\tnotifyFollowers(this.state);\n\t\t},\n\t\tmute: function (mute:boolean) {\n\t\t\tif (mute) {\n\t\t\t\tgainNode.gain.value = 0;\n\t\t\t}\n\t\t\telse {\n\t\t\t\tgainNode.gain.value = 1;\n\t\t\t}\n\t\t}\n\t}\n}());\n","import { IAnyRecorder, RecorderPermission, RecorderState } from \"./interfaces\";\nimport { conf, session } from \"./shorts\";\nimport { L10n } from \"./localization\";\nimport { notify, VideoEventTrackerService, VideoUploadService } from \"../services\";\nimport { devices } from \"./browser-info\";\n\n//declare var navigator:Navigator;\n\ntype MediaRecorderImpl = {\n start(time: number): void;\n stop(): void;\n pause(): void;\n onstop(): void;\n ondataavailable(event: any): void;\n resume(): void;\n requestData(): void;\n readonly state: string;\n}\ndeclare var MediaRecorder: {\n new(stream: MediaStream, options: { mimeType: string }): MediaRecorderImpl\n isTypeSupported: (mime: string) => boolean\n};\ntype FacingMode = 'user' | 'environment';\n\nexport class VideoRecorder implements IAnyRecorder {\n private stream?: MediaStream;\n private gumVideo?: HTMLMediaElement;\n private mediaRecorder?: MediaRecorderImpl;\n private recordMimeType?: string;\n private recorded?: Blob[];\n private _status: RecorderState = 'preparing';\n public constraints: MediaStreamConstraints = {\n audio: true,\n video: {\n width: 640,\n height: 360,\n facingMode: 'environment'\n }\n };\n title: string = \"\";\n get permission():RecorderPermission {\n return session().hasWorkflow(\"com.opendigitaleducation.video.controllers.VideoController|capture\") ? 'granted' : 'denied';\n }\n elapsedTime:number = 0; // in ms\n followers:Array<(state:RecorderState)=>void> = [];\n\n constructor(\n private videoFactory: () => HTMLMediaElement, \n private handleDuration: (event: Event) => void,\n private uploader: VideoUploadService,\n private tracker: VideoEventTrackerService,\n private defaultDevice?: MediaDeviceInfo\n ) {\n const lang = conf().Platform.idiom;\n this.title = lang.translate('recorder.filename') + L10n.moment().format('DD/MM/YYYY');\n defaultDevice && this.setCamera( defaultDevice.deviceId );\n }\n\n public get state() {\n return this._status;\n }\n\n status( callback:(state:RecorderState)=>void ):void {\n this.followers.push(callback);\n }\n\n private updateStatus(status:RecorderState, data?:any) {\n this._status = status;\n\t\ttry {\n\t\t\tthis.followers.forEach( follower => {\n\t\t\t\tif (typeof follower === 'function') {\n\t\t\t\t\tfollower(status);\n\t\t\t\t}\n\t\t\t});\n\t\t} catch {\n\t\t\t// void: just don't stop the recorder process when a follower throws an error.\n\t\t}\n\t}\n\n public static isCompatible() {\n if( typeof navigator.mediaDevices?.getSupportedConstraints==='function' ) {\n const supportedConstraints = navigator.mediaDevices.getSupportedConstraints();\n return (supportedConstraints['deviceId'] && !(VideoRecorder.isIncompatibleDevice() || VideoRecorder.isIncompatibleBrowser())) || false; // At least 1 device should exist.\n }\n return false;\n }\n\n public static isIncompatibleDevice() {\n const os = devices.getOSInfo();\n /*\n console.log( \"Actual OS=\"+ os.name +\" version \"+ os.version );\n let ios1 = devices.getOSInfo(\"Mozilla/5.0 (iPhone; CPU iPhone OS 14_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/14.0.2 Mobile/15E148 Safari/604.1\");\n console.log( \"iOS1 OS=\"+ ios1.name +\" version \"+ ios1.version );\n let ios2 = devices.getOSInfo(\"Mozilla/5.0 (iPad; CPU OS 14_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/14.0.1 Mobile/15E148 Safari/604.1\");\n console.log( \"iOS2 OS=\"+ ios2.name +\" version \"+ ios2.version );\n let ios3 = devices.getOSInfo(\"Mozilla/5.0 (iPad; CPU OS 14_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/14.0 Mobile/15E148 Safari/604.1\");\n console.log( \"iOS3 OS=\"+ ios3.name +\" version \"+ ios3.version );\n */\n // iOS 14.3+ has built-in MediaRecorder capabilities.\n if( os && os.name===\"iOS\" && os.version && os.version>=\"14.3\" )\n return false;\n\n return devices.isIphone() || devices.isIpad() || devices.isIpod();\n }\n\n public static isIncompatibleBrowser() {\n if(!(window as any).MediaRecorder){\n return true;\n }\n // Check against supported browsers.\n const browser = devices.getBrowserInfo();\n return ['Firefox', 'Chrome', 'Edge', 'Opera', 'Safari', 'CriOS', 'FxiOS'].findIndex( (item) => browser.name==item ) === -1;\n }\n\n suspend():Promise<void> {\n return this.stopRecording( true );\n }\n\n flush():void {\n this.stopStreaming();\n }\n\n save():void {\n if (!this.title) {\n this.title = \"video-\" + this.generateVideoId();\n }\n this.updateStatus( 'encoding' );\n // Use IVideoUploader to manage video uploading and encoding.\n this.uploader.upload( this.getBuffer(), this.title, true, Math.round(this.elapsedTime) )\n .then( response => {\n if( response.state===\"succeed\" ) {\n this.tracker.generateSaveEvent( this.elapsedTime, response );\n this.updateStatus( 'saved' );\n this.updateStatus( 'suspended' );\n } else if( response.state===\"error\" ) {\n this.updateStatus( 'suspended' );\n response.code && notify.error( response.code );\n }\n })\n .catch( e => {\n this.updateStatus( 'suspended' );\n notify.error( \"video.file.error\" );\n });\n }\n\n private bindPlayEvents() {\n if (!this.gumVideo) return;\n this.unbindPlayEvents();\n this.gumVideo.addEventListener('ended', this.videoEndedHandler, false);\n }\n private unbindPlayEvents() {\n if (!this.gumVideo) return;\n this.gumVideo.removeEventListener('ended', this.videoEndedHandler, false);\n }\n private videoEndedHandler = (e: Event) => {\n if (!this.gumVideo) return;\n this.pause();\n this.gumVideo.currentTime = 0; // rewind to start !\n }\n private unbindRecordEvent(){\n if (!this.gumVideo) return;\n this.gumVideo.removeEventListener('timeupdate', this.handleDuration);\n }\n private bindRecordEvent(){\n if (!this.gumVideo) return;\n this.unbindRecordEvent();\n this.gumVideo.addEventListener('timeupdate', this.handleDuration);\n }\n\n private setCamera( id:FacingMode|ConstrainDOMString ) {\n if( id==='environment' || id==='user' ) {\n delete (this.constraints.video as MediaTrackConstraints).deviceId;\n (this.constraints.video as MediaTrackConstraints).facingMode = id;\n } else if( id ) {\n delete (this.constraints.video as MediaTrackConstraints).facingMode;\n (this.constraints.video as MediaTrackConstraints).deviceId = id;\n }\n }\n\n switchCamera( id:FacingMode|ConstrainDOMString ) {\n this.setCamera( id );\n if (this.stream) {\n if( this.mediaRecorder?.state===\"active\" ) {\n this.mediaRecorder?.requestData(); // get last recorded data slice\n this.mediaRecorder?.stop();\n }\n this.turnOffCamera();\n delete this.stream;\n }\n return this.startStreaming();\n }\n\n play() {\n if (!this.gumVideo) {\n console.warn('[VideoRecorder.play] stream not init');\n return;\n }\n this.preparePlay();\n this.gumVideo.play();\n this.updateStatus( 'playing' );\n }\n\n private preparePlay() {\n if (this._status != 'paused') {\n this.unbindRecordEvent();\n this.bindPlayEvents();\n let buffer = this.getBuffer();\n //console.log('[VideoRecorder.preparePlay] buffer size: ', buffer.size)\n if( this.gumVideo ) {\n this.gumVideo.muted = false;\n this.gumVideo.srcObject = null;\n this.gumVideo.autoplay = false;\n this.gumVideo.src = window.URL.createObjectURL(buffer);\n //this.gumVideo.controls = true;\n }\n this.updateStatus( 'paused' );\n }\n }\n\n pause() {\n if (!this.gumVideo) {\n console.warn('[VideoRecorder.play] stream not init');\n return;\n }\n this.gumVideo.pause();\n this.updateStatus( 'paused' );\n }\n\n private prepareRecord() {\n if (!this.stream) {\n console.warn('[VideoRecorder.prepareRecord] stream not init')\n return;\n }\n if (this._status != 'recording') {\n if( this.gumVideo ) {\n this.gumVideo.muted = true;\n this.gumVideo.volume = 1;\n this.gumVideo.autoplay = true;\n if( this.gumVideo.src ) {\n window.URL.revokeObjectURL( this.gumVideo.src );\n }\n this.gumVideo.srcObject = this.stream;\n this.gumVideo.controls = false;\n }\n this.unbindPlayEvents();\n this.bindRecordEvent();\n this.updateStatus( 'recording' );\n }\n }\n \n private stopStreaming() {\n if (this.gumVideo) {\n this.unbindPlayEvents();\n this.unbindRecordEvent();\n }\n if (this.stream) {\n try {\n this.stopRecording(false);\n } catch (e) { }\n this.turnOffCamera();\n delete this.stream;\n }\n if(this.gumVideo) delete this.gumVideo;\n this.updateStatus( 'idle' );\n }\n\n async startStreaming(notAllowedCb?: () => void) {\n try {\n if (this.stream) return;\n if (!this.gumVideo) {\n this.gumVideo = this.videoFactory();\n }\n const stream = await navigator.mediaDevices.getUserMedia(this.constraints);\n this.stream = stream;\n this.prepareRecord();\n //console.log('[VideoRecorder.startStreaming] VIDEO STREAM STARTED', this.gumVideo);\n } catch (e:any) {\n if( e ) {\n // Case when a cam is not authorized/found/matching/available\n // See https://developer.mozilla.org/fr/docs/Web/API/MediaDevices/getUserMedia#erreurs\n if ( e.name == 'NotAllowedError' \n// || e.name == 'NotFoundError'\n// || e.name == 'OverConstrainedError'\n// || e.name == 'TypeError'\n ) {\n if (notAllowedCb) {\n return notAllowedCb();\n }\n } else if (e.name == 'NotReadableError') {\n try{\n //try without constraint\n const stream = await navigator.mediaDevices.getUserMedia({});\n if (!this.gumVideo) {\n this.gumVideo = this.videoFactory();\n }\n this.stream = stream;\n this.prepareRecord();\n }catch(e){\n alert(e);\n }\n return;\n }\n alert(e);\n }\n }\n }\n public generateVideoId() {\n return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, function (c) {\n var r = Math.random() * 16 | 0, v = c == 'x' ? r : (r & 0x3 | 0x8);\n return v.toString(16);\n });\n }\n\n // private handleDataAvailable(event) {\n // if (event.data && event.data.size > 0) {\n // this.recorded.push(event.data);\n // }\n // }\n public resume() {\n this.prepareRecord();\n this.mediaRecorder?.resume();\n }\n public async canStartRecording() {\n const space = await session().latestQuotaAndUsage;\n return space.quota > space.storage;\n }\n private findBestSupportedMimeType():string {\n if (MediaRecorder.isTypeSupported) { // SAFARI TEST\n return [\n 'video/webm;codecs=vp9'\n ,'video/mp4; codecs=\"avc1.424028, mp4a.40.2\"'\n ,'video/webm;codecs=vp8,opus'\n ,'video/webm'\n ].find( type => {\n if (!MediaRecorder.isTypeSupported(type)) {\n console.error(`[VideoRecorder.startRecording] ${type} is not Supported`);\n return false;\n }\n return true;\n }) || 'video/ogg';\n } else {\n return 'video/webm;codecs=vp8,opus';\n }\n }\n async prepare() {\n if (!this.gumVideo) {\n this.gumVideo = this.videoFactory();\n }\n const stream = await navigator.mediaDevices.getUserMedia(this.constraints);\n this.stream = stream;\n if (!this.stream) {\n console.warn('[VideoRecorder.prepareRecord] stream not init')\n return;\n }\n if (this._status !== 'recording') {\n if( this.gumVideo ) {\n this.gumVideo.muted = true;\n this.gumVideo.volume = 1;\n this.gumVideo.autoplay = true;\n if( this.gumVideo.src ) {\n window.URL.revokeObjectURL( this.gumVideo.src );\n }\n this.gumVideo.srcObject = this.stream;\n this.gumVideo.controls = false;\n }\n }\n }\n async record() {\n await this.startStreaming();\n if (!this.stream) return;\n this.prepareRecord();\n this.recorded = new Array();\n const options = { mimeType: this.findBestSupportedMimeType() };\n try {\n this.mediaRecorder = new MediaRecorder(this.stream, options);\n // Memorize which MIME type is being recorded.\n this.recordMimeType = options.mimeType;\n } catch (e) {\n console.error('[VideoRecorder.startRecording] Exception while creating MediaRecorder:', e);\n return;\n }\n\n //console.log('[VideoRecorder.startRecording] Created MediaRecorder', this.mediaRecorder, 'with options', options);\n this.mediaRecorder.onstop = () => {\n //console.log('[VideoRecorder.onstop] Recorder stopped: ', event);\n };\n this.mediaRecorder.ondataavailable = (event) => {\n if (event.data && event.data.size > 0) {\n this.recorded?.push(event.data);\n }\n };\n this.mediaRecorder.start(1000); // collect 1000ms of data\n }\n\n public stopRecording(preparePlay: boolean):Promise<void> {\n if( this.mediaRecorder?.state===\"active\" ) {\n this.mediaRecorder?.requestData(); // get last recorded data slice\n this.mediaRecorder?.stop();\n }\n return new Promise( (resolve) => {\n if (preparePlay) {\n setTimeout(() => {this.preparePlay(); resolve()}, 0);\n } else {\n this.updateStatus( 'stopped' );\n resolve();\n }\n });\n }\n\n public turnOffCamera() {\n if (!this.stream) return;\n const tracks = this.stream.getTracks();\n for (const track of tracks) {\n try {\n track.stop();\n } catch (e) { }\n }\n }\n\n public getBuffer() {\n return new Blob(this.recorded, { type: this.recordMimeType /*'video/webm'*/ });\n }\n\n public clearBuffer(prepareRecord: boolean) {\n delete this.recorded;\n prepareRecord && this.prepareRecord();\n }\n}\n","import { ConfigurationFrameworkFactory, ExplorerFrameworkFactory, NotifyFrameworkFactory, SessionFrameworkFactory, TransportFrameworkFactory } from \"ode-ts-client\";\n\n/** Short for accessing to the global ConfigurationFramework. */\nexport function conf() {\n return ConfigurationFrameworkFactory.instance();\n}\n/** Short for accessing to the global ExplorerFramework. */\nexport function explore() {\n return ExplorerFrameworkFactory.instance();\n}\n/** Short for accessing to the global NotifyFramework. */\nexport function notif() {\n return NotifyFrameworkFactory.instance();\n}\n/** Short for accessing to the global http client. */\nexport function http() {\n return TransportFrameworkFactory.instance().http;\n}\n/** Short for accessing to the global session. */\nexport function session() {\n return SessionFrameworkFactory.instance().session;\n}\n","/*!@license\n * UAParser.js v0.7.28\n * Lightweight JavaScript-based User-Agent string parser\n * https://github.com/faisalman/ua-parser-js\n *\n * Copyright © 2012-2021 Faisal Salman <f@faisalman.com>\n * Licensed under MIT License\n */\n\n(function (window, undefined) {\n\n 'use strict';\n\n //////////////\n // Constants\n /////////////\n\n\n var LIBVERSION = '0.7.28',\n EMPTY = '',\n UNKNOWN = '?',\n FUNC_TYPE = 'function',\n UNDEF_TYPE = 'undefined',\n OBJ_TYPE = 'object',\n STR_TYPE = 'string',\n MAJOR = 'major', // deprecated\n MODEL = 'model',\n NAME = 'name',\n TYPE = 'type',\n VENDOR = 'vendor',\n VERSION = 'version',\n ARCHITECTURE= 'architecture',\n CONSOLE = 'console',\n MOBILE = 'mobile',\n TABLET = 'tablet',\n SMARTTV = 'smarttv',\n WEARABLE = 'wearable',\n EMBEDDED = 'embedded',\n UA_MAX_LENGTH = 255;\n\n\n ///////////\n // Helper\n //////////\n\n\n var util = {\n extend : function (regexes, extensions) {\n var mergedRegexes = {};\n for (var i in regexes) {\n if (extensions[i] && extensions[i].length % 2 === 0) {\n mergedRegexes[i] = extensions[i].concat(regexes[i]);\n } else {\n mergedRegexes[i] = regexes[i];\n }\n }\n return mergedRegexes;\n },\n has : function (str1, str2) {\n return typeof str1 === STR_TYPE ? str2.toLowerCase().indexOf(str1.toLowerCase()) !== -1 : false;\n },\n lowerize : function (str) {\n return str.toLowerCase();\n },\n major : function (version) {\n return typeof(version) === STR_TYPE ? version.replace(/[^\\d\\.]/g,'').split(\".\")[0] : undefined;\n },\n trim : function (str, len) {\n str = str.replace(/^[\\s\\uFEFF\\xA0]+|[\\s\\uFEFF\\xA0]+$/g, '');\n return typeof(len) === UNDEF_TYPE ? str : str.substring(0, UA_MAX_LENGTH);\n }\n };\n\n\n ///////////////\n // Map helper\n //////////////\n\n\n var mapper = {\n\n rgx : function (ua, arrays) {\n\n var i = 0, j, k, p, q, matches, match;\n\n // loop through all regexes maps\n while (i < arrays.length && !matches) {\n\n var regex = arrays[i], // even sequence (0,2,4,..)\n props = arrays[i + 1]; // odd sequence (1,3,5,..)\n j = k = 0;\n\n // try matching uastring with regexes\n while (j < regex.length && !matches) {\n\n matches = regex[j++].exec(ua);\n\n if (!!matches) {\n for (p = 0; p < props.length; p++) {\n match = matches[++k];\n q = props[p];\n // check if given property is actually array\n if (typeof q === OBJ_TYPE && q.length > 0) {\n if (q.length == 2) {\n if (typeof q[1] == FUNC_TYPE) {\n // assign modified match\n this[q[0]] = q[1].call(this, match);\n } else {\n // assign given value, ignore regex match\n this[q[0]] = q[1];\n }\n } else if (q.length == 3) {\n // check whether function or regex\n if (typeof q[1] === FUNC_TYPE && !(q[1].exec && q[1].test)) {\n // call function (usually string mapper)\n this[q[0]] = match ? q[1].call(this, match, q[2]) : undefined;\n } else {\n // sanitize match using given regex\n this[q[0]] = match ? match.replace(q[1], q[2]) : undefined;\n }\n } else if (q.length == 4) {\n this[q[0]] = match ? q[3].call(this, match.replace(q[1], q[2])) : undefined;\n }\n } else {\n this[q] = match ? match : undefined;\n }\n }\n }\n }\n i += 2;\n }\n },\n\n str : function (str, map) {\n\n for (var i in map) {\n // check if array\n if (typeof map[i] === OBJ_TYPE && map[i].length > 0) {\n for (var j = 0; j < map[i].length; j++) {\n if (util.has(map[i][j], str)) {\n return (i === UNKNOWN) ? undefined : i;\n }\n }\n } else if (util.has(map[i], str)) {\n return (i === UNKNOWN) ? undefined : i;\n }\n }\n return str;\n }\n };\n\n\n ///////////////\n // String map\n //////////////\n\n\n var maps = {\n\n browser : {\n // Safari < 3.0\n oldSafari : {\n version : {\n '1.0' : '/8',\n '1.2' : '/1',\n '1.3' : '/3',\n '2.0' : '/412',\n '2.0.2' : '/416',\n '2.0.3' : '/417',\n '2.0.4' : '/419',\n '?' : '/'\n }\n },\n oldEdge : {\n version : {\n '0.1' : '12.',\n '21' : '13.',\n '31' : '14.',\n '39' : '15.',\n '41' : '16.',\n '42' : '17.',\n '44' : '18.'\n }\n }\n },\n\n os : {\n windows : {\n version : {\n 'ME' : '4.90',\n 'NT 3.11' : 'NT3.51',\n 'NT 4.0' : 'NT4.0',\n '2000' : 'NT 5.0',\n 'XP' : ['NT 5.1', 'NT 5.2'],\n 'Vista' : 'NT 6.0',\n '7' : 'NT 6.1',\n '8' : 'NT 6.2',\n '8.1' : 'NT 6.3',\n '10' : ['NT 6.4', 'NT 10.0'],\n 'RT' : 'ARM'\n }\n }\n }\n };\n\n\n //////////////\n // Regex map\n /////////////\n\n\n var regexes = {\n\n browser : [[\n\n /\\b(?:crmo|crios)\\/([\\w\\.]+)/i // Chrome for Android/iOS\n ], [VERSION, [NAME, 'Chrome']], [\n /edg(?:e|ios|a)?\\/([\\w\\.]+)/i // Microsoft Edge\n ], [VERSION, [NAME, 'Edge']], [\n // breaking change (reserved for next major release):\n ///edge\\/([\\w\\.]+)/i // Old Edge (Trident)\n //], [[VERSION, mapper.str, maps.browser.oldEdge.version], [NAME, 'Edge']], [\n\n // Presto based\n /(opera\\smini)\\/([\\w\\.-]+)/i, // Opera Mini\n /(opera\\s[mobiletab]{3,6})\\b.+version\\/([\\w\\.-]+)/i, // Opera Mobi/Tablet\n /(opera)(?:.+version\\/|[\\/\\s]+)([\\w\\.]+)/i, // Opera\n ], [NAME, VERSION], [\n /opios[\\/\\s]+([\\w\\.]+)/i // Opera mini on iphone >= 8.0\n ], [VERSION, [NAME, 'Opera Mini']], [\n /\\sopr\\/([\\w\\.]+)/i // Opera Webkit\n ], [VERSION, [NAME, 'Opera']], [\n\n // Mixed\n /(kindle)\\/([\\w\\.]+)/i, // Kindle\n /(lunascape|maxthon|netfront|jasmine|blazer)[\\/\\s]?([\\w\\.]*)/i, // Lunascape/Maxthon/Netfront/Jasmine/Blazer\n // Trident based\n /(avant\\s|iemobile|slim)(?:browser)?[\\/\\s]?([\\w\\.]*)/i, // Avant/IEMobile/SlimBrowser\n /(ba?idubrowser)[\\/\\s]?([\\w\\.]+)/i, // Baidu Browser\n /(?:ms|\\()(ie)\\s([\\w\\.]+)/i, // Internet Explorer\n\n // Webkit/KHTML based\n /(flock|rockmelt|midori|epiphany|silk|skyfire|ovibrowser|bolt|iron|vivaldi|iridium|phantomjs|bowser|quark|qupzilla|falkon)\\/([\\w\\.-]+)/i,\n // Flock/RockMelt/Midori/Epiphany/Silk/Skyfire/Bolt/Iron/Iridium/PhantomJS/Bowser/QupZilla/Falkon\n /(rekonq|puffin|brave|whale|qqbrowserlite|qq)\\/([\\w\\.]+)/i, // Rekonq/Puffin/Brave/Whale/QQBrowserLite/QQ, aka ShouQ\n /(weibo)__([\\d\\.]+)/i // Weibo\n ], [NAME, VERSION], [\n /(?:[\\s\\/]uc?\\s?browser|(?:juc.+)ucweb)[\\/\\s]?([\\w\\.]+)/i // UCBrowser\n ], [VERSION, [NAME, 'UCBrowser']], [\n /(?:windowswechat)?\\sqbcore\\/([\\w\\.]+)\\b.*(?:windowswechat)?/i // WeChat Desktop for Windows Built-in Browser\n ], [VERSION, [NAME, 'WeChat(Win) Desktop']], [\n /micromessenger\\/([\\w\\.]+)/i // WeChat\n ], [VERSION, [NAME, 'WeChat']], [\n /konqueror\\/([\\w\\.]+)/i // Konqueror\n ], [VERSION, [NAME, 'Konqueror']], [\n /trident.+rv[:\\s]([\\w\\.]{1,9})\\b.+like\\sgecko/i // IE11\n ], [VERSION, [NAME, 'IE']], [\n /yabrowser\\/([\\w\\.]+)/i // Yandex\n ], [VERSION, [NAME, 'Yandex']], [\n /(avast|avg)\\/([\\w\\.]+)/i // Avast/AVG Secure Browser\n ], [[NAME, /(.+)/, '$1 Secure Browser'], VERSION], [\n /focus\\/([\\w\\.]+)/i // Firefox Focus\n ], [VERSION, [NAME, 'Firefox Focus']], [\n /opt\\/([\\w\\.]+)/i // Opera Touch\n ], [VERSION, [NAME, 'Opera Touch']], [\n /coc_coc_browser\\/([\\w\\.]+)/i // Coc Coc Browser\n ], [VERSION, [NAME, 'Coc Coc']], [\n /dolfin\\/([\\w\\.]+)/i // Dolphin\n ], [VERSION, [NAME, 'Dolphin']], [\n /coast\\/([\\w\\.]+)/i // Opera Coast\n ], [VERSION, [NAME, 'Opera Coast']],\n [/xiaomi\\/miuibrowser\\/([\\w\\.]+)/i // MIUI Browser\n ], [VERSION, [NAME, 'MIUI Browser']], [\n /fxios\\/([\\w\\.-]+)/i // Firefox for iOS\n ], [VERSION, [NAME, 'Firefox']], [\n /(qihu|qhbrowser|qihoobrowser|360browser)/i // 360\n ], [[NAME, '360 Browser']], [\n /(oculus|samsung|sailfish)browser\\/([\\w\\.]+)/i\n ], [[NAME, /(.+)/, '$1 Browser'], VERSION], [ // Oculus/Samsung/Sailfish Browser\n /(comodo_dragon)\\/([\\w\\.]+)/i // Comodo Dragon\n ], [[NAME, /_/g, ' '], VERSION], [\n /\\s(electron)\\/([\\w\\.]+)\\ssafari/i, // Electron-based App\n /(tesla)(?:\\sqtcarbrowser|\\/(20[12]\\d\\.[\\w\\.-]+))/i, // Tesla\n /m?(qqbrowser|baiduboxapp|2345Explorer)[\\/\\s]?([\\w\\.]+)/i // QQBrowser/Baidu App/2345 Browser\n ], [NAME, VERSION], [\n /(MetaSr)[\\/\\s]?([\\w\\.]+)/i, // SouGouBrowser\n /(LBBROWSER)/i // LieBao Browser\n ], [NAME], [\n\n // WebView\n /;fbav\\/([\\w\\.]+);/i // Facebook App for iOS & Android with version\n ], [VERSION, [NAME, 'Facebook']], [\n /FBAN\\/FBIOS|FB_IAB\\/FB4A/i // Facebook App for iOS & Android without version\n ], [[NAME, 'Facebook']], [\n /safari\\s(line)\\/([\\w\\.]+)/i, // Line App for iOS\n /\\b(line)\\/([\\w\\.]+)\\/iab/i, // Line App for Android\n /(chromium|instagram)[\\/\\s]([\\w\\.-]+)/i // Chromium/Instagram\n ], [NAME, VERSION], [\n /\\bgsa\\/([\\w\\.]+)\\s.*safari\\//i // Google Search Appliance on iOS\n ], [VERSION, [NAME, 'GSA']], [\n\n /headlesschrome(?:\\/([\\w\\.]+)|\\s)/i // Chrome Headless\n ], [VERSION, [NAME, 'Chrome Headless']], [\n\n /\\swv\\).+(chrome)\\/([\\w\\.]+)/i // Chrome WebView\n ], [[NAME, 'Chrome WebView'], VERSION], [\n\n /droid.+\\sversion\\/([\\w\\.]+)\\b.+(?:mobile\\ssafari|safari)/i // Android Browser\n ], [VERSION, [NAME, 'Android Browser']], [\n\n /(chrome|omniweb|arora|[tizenoka]{5}\\s?browser)\\/v?([\\w\\.]+)/i // Chrome/OmniWeb/Arora/Tizen/Nokia\n ], [NAME, VERSION], [\n\n /version\\/([\\w\\.]+)\\s.*mobile\\/\\w+\\s(safari)/i // Mobile Safari\n ], [VERSION, [NAME, 'Mobile Safari']], [\n /version\\/([\\w\\.]+)\\s.*(mobile\\s?safari|safari)/i // Safari & Safari Mobile\n ], [VERSION, NAME], [\n /webkit.+?(mobile\\s?safari|safari)(\\/[\\w\\.]+)/i // Safari < 3.0\n ], [NAME, [VERSION, mapper.str, maps.browser.oldSafari.version]], [\n\n /(webkit|khtml)\\/([\\w\\.]+)/i\n ], [NAME, VERSION], [\n\n // Gecko based\n /(navigator|netscape)\\/([\\w\\.-]+)/i // Netscape\n ], [[NAME, 'Netscape'], VERSION], [\n /ile\\svr;\\srv:([\\w\\.]+)\\).+firefox/i // Firefox Reality\n ], [VERSION, [NAME, 'Firefox Reality']], [\n /ekiohf.+(flow)\\/([\\w\\.]+)/i, // Flow\n /(swiftfox)/i, // Swiftfox\n /(icedragon|iceweasel|camino|chimera|fennec|maemo\\sbrowser|minimo|conkeror)[\\/\\s]?([\\w\\.\\+]+)/i,\n // IceDragon/Iceweasel/Camino/Chimera/Fennec/Maemo/Minimo/Conkeror\n /(firefox|seamonkey|k-meleon|icecat|iceape|firebird|phoenix|palemoon|basilisk|waterfox)\\/([\\w\\.-]+)$/i,\n // Firefox/SeaMonkey/K-Meleon/IceCat/IceApe/Firebird/Phoenix\n /(firefox)\\/([\\w\\.]+)\\s[\\w\\s\\-]+\\/[\\w\\.]+$/i, // Other Firefox-based\n /(mozilla)\\/([\\w\\.]+)\\s.+rv\\:.+gecko\\/\\d+/i, // Mozilla\n\n // Other\n /(polaris|lynx|dillo|icab|doris|amaya|w3m|netsurf|sleipnir)[\\/\\s]?([\\w\\.]+)/i,\n // Polaris/Lynx/Dillo/iCab/Doris/Amaya/w3m/NetSurf/Sleipnir\n /(links)\\s\\(([\\w\\.]+)/i, // Links\n /(gobrowser)\\/?([\\w\\.]*)/i, // GoBrowser\n /(ice\\s?browser)\\/v?([\\w\\._]+)/i, // ICE Browser\n /(mosaic)[\\/\\s]([\\w\\.]+)/i // Mosaic\n ], [NAME, VERSION]\n ],\n\n cpu : [[\n\n /(?:(amd|x(?:(?:86|64)[_-])?|wow|win)64)[;\\)]/i // AMD64 (x64)\n ], [[ARCHITECTURE, 'amd64']], [\n\n /(ia32(?=;))/i // IA32 (quicktime)\n ], [[ARCHITECTURE, util.lowerize]], [\n\n /((?:i[346]|x)86)[;\\)]/i // IA32 (x86)\n ], [[ARCHITECTURE, 'ia32']], [\n\n /\\b(aarch64|armv?8e?l?)\\b/i // ARM64\n ], [[ARCHITECTURE, 'arm64']], [\n\n /\\b(arm(?:v[67])?ht?n?[fl]p?)\\b/i // ARMHF\n ], [[ARCHITECTURE, 'armhf']], [\n\n // PocketPC mistakenly identified as PowerPC\n /windows\\s(ce|mobile);\\sppc;/i\n ], [[ARCHITECTURE, 'arm']], [\n\n /((?:ppc|powerpc)(?:64)?)(?:\\smac|;|\\))/i // PowerPC\n ], [[ARCHITECTURE, /ower/, '', util.lowerize]], [\n\n /(sun4\\w)[;\\)]/i // SPARC\n ], [[ARCHITECTURE, 'sparc']], [\n\n /((?:avr32|ia64(?=;))|68k(?=\\))|\\barm(?:64|(?=v(?:[1-7]|[5-7]1)l?|;|eabi))|(?=atmel\\s)avr|(?:irix|mips|sparc)(?:64)?\\b|pa-risc)/i\n // IA64, 68K, ARM/64, AVR/32, IRIX/64, MIPS/64, SPARC/64, PA-RISC\n ], [[ARCHITECTURE, util.lowerize]]\n ],\n\n device : [[\n\n //////////////////////////\n // MOBILES & TABLETS\n // Ordered by popularity\n /////////////////////////\n\n // Samsung\n /\\b(sch-i[89]0\\d|shw-m380s|sm-[pt]\\w{2,4}|gt-[pn]\\d{2,4}|sgh-t8[56]9|nexus\\s10)/i\n ], [MODEL, [VENDOR, 'Samsung'], [TYPE, TABLET]], [\n /\\b((?:s[cgp]h|gt|sm)-\\w+|galaxy\\snexus)/i,\n /\\ssamsung[\\s-]([\\w-]+)/i,\n /sec-(sgh\\w+)/i\n ], [MODEL, [VENDOR, 'Samsung'], [TYPE, MOBILE]], [\n\n // Apple\n /\\((ip(?:hone|od)[\\s\\w]*);/i // iPod/iPhone\n ], [MODEL, [VENDOR, 'Apple'], [TYPE, MOBILE]], [\n /\\((ipad);[\\w\\s\\),;-]+apple/i, // iPad\n /applecoremedia\\/[\\w\\.]+\\s\\((ipad)/i,\n /\\b(ipad)\\d\\d?,\\d\\d?[;\\]].+ios/i\n ], [MODEL, [VENDOR, 'Apple'], [TYPE, TABLET]], [\n\n // Huawei\n /\\b((?:agr|ags[23]|bah2?|sht?)-a?[lw]\\d{2})/i,\n ], [MODEL, [VENDOR, 'Huawei'], [TYPE, TABLET]], [\n /d\\/huawei([\\w\\s-]+)[;\\)]/i,\n /\\b(nexus\\s6p|vog-[at]?l\\d\\d|ane-[at]?l[x\\d]\\d|eml-a?l\\d\\da?|lya-[at]?l\\d[\\dc]|clt-a?l\\d\\di?|ele-l\\d\\d)/i,\n /\\b(\\w{2,4}-[atu][ln][01259][019])[;\\)\\s]/i\n ], [MODEL, [VENDOR, 'Huawei'], [TYPE, MOBILE]], [\n\n // Xiaomi\n /\\b(poco[\\s\\w]+)(?:\\sbuild|\\))/i, // Xiaomi POCO\n /\\b;\\s(\\w+)\\sbuild\\/hm\\1/i, // Xiaomi Hongmi 'numeric' models\n /\\b(hm[\\s\\-_]?note?[\\s_]?(?:\\d\\w)?)\\sbuild/i, // Xiaomi Hongmi\n /\\b(redmi[\\s\\-_]?(?:note|k)?[\\w\\s_]+)(?:\\sbuild|\\))/i, // Xiaomi Redmi\n /\\b(mi[\\s\\-_]?(?:a\\d|one|one[\\s_]plus|note lte)?[\\s_]?(?:\\d?\\w?)[\\s_]?(?:plus)?)\\sbuild/i // Xiaomi Mi\n ], [[MODEL, /_/g, ' '], [VENDOR, 'Xiaomi'], [TYPE, MOBILE]], [\n /\\b(mi[\\s\\-_]?(?:pad)(?:[\\w\\s_]+))(?:\\sbuild|\\))/i // Mi Pad tablets\n ],[[MODEL, /_/g, ' '], [VENDOR, 'Xiaomi'], [TYPE, TABLET]], [\n\n // OPPO\n /;\\s(\\w+)\\sbuild.+\\soppo/i,\n /\\s(cph[12]\\d{3}|p(?:af|c[al]|d\\w|e[ar])[mt]\\d0|x9007)\\b/i\n ], [MODEL, [VENDOR, 'OPPO'], [TYPE, MOBILE]], [\n\n // Vivo\n /\\svivo\\s(\\w+)(?:\\sbuild|\\))/i,\n /\\s(v[12]\\d{3}\\w?[at])(?:\\sbuild|;)/i\n ], [MODEL, [VENDOR, 'Vivo'], [TYPE, MOBILE]], [\n\n // Realme\n /\\s(rmx[12]\\d{3})(?:\\sbuild|;)/i\n ], [MODEL, [VENDOR, 'Realme'], [TYPE, MOBILE]], [\n\n // Motorola\n /\\s(milestone|droid(?:[2-4x]|\\s(?:bionic|x2|pro|razr))?:?(\\s4g)?)\\b[\\w\\s]+build\\//i,\n /\\smot(?:orola)?[\\s-](\\w*)/i,\n /((?:moto[\\s\\w\\(\\)]+|xt\\d{3,4}|nexus\\s6)(?=\\sbuild|\\)))/i\n ], [MODEL, [VENDOR, 'Motorola'], [TYPE, MOBILE]], [\n /\\s(mz60\\d|xoom[\\s2]{0,2})\\sbuild\\//i\n ], [MODEL, [VENDOR, 'Motorola'], [TYPE, TABLET]], [\n\n // LG\n /((?=lg)?[vl]k\\-?\\d{3})\\sbuild|\\s3\\.[\\s\\w;-]{10}lg?-([06cv9]{3,4})/i\n ], [MODEL, [VENDOR, 'LG'], [TYPE, TABLET]], [\n /(lm-?f100[nv]?|nexus\\s[45])/i,\n /lg[e;\\s\\/-]+((?!browser|netcast)\\w+)/i,\n /\\blg(\\-?[\\d\\w]+)\\sbuild/i\n ], [MODEL, [VENDOR, 'LG'], [TYPE, MOBILE]], [\n\n // Lenovo\n /(ideatab[\\w\\-\\s]+)/i,\n /lenovo\\s?(s(?:5000|6000)(?:[\\w-]+)|tab(?:[\\s\\w]+)|yt[\\d\\w-]{6}|tb[\\d\\w-]{6})/i // Lenovo tablets\n ], [MODEL, [VENDOR, 'Lenovo'], [TYPE, TABLET]], [\n\n // Nokia\n /(?:maemo|nokia).*(n900|lumia\\s\\d+)/i,\n /nokia[\\s_-]?([\\w\\.-]*)/i\n ], [[MODEL, /_/g, ' '], [VENDOR, 'Nokia'], [TYPE, MOBILE]], [\n\n // Google\n /droid.+;\\s(pixel\\sc)[\\s)]/i // Google Pixel C\n ], [MODEL, [VENDOR, 'Google'], [TYPE, TABLET]], [\n /droid.+;\\s(pixel[\\s\\daxl]{0,6})(?:\\sbuild|\\))/i // Google Pixel\n ], [MODEL, [VENDOR, 'Google'], [TYPE, MOBILE]], [\n\n // Sony\n /droid.+\\s([c-g]\\d{4}|so[-l]\\w+|xq-a\\w[4-7][12])(?=\\sbuild\\/|\\).+chrome\\/(?![1-6]{0,1}\\d\\.))/i\n ], [MODEL, [VENDOR, 'Sony'], [TYPE, MOBILE]], [\n /sony\\stablet\\s[ps]\\sbuild\\//i,\n /(?:sony)?sgp\\w+(?:\\sbuild\\/|\\))/i\n ], [[MODEL, 'Xperia Tablet'], [VENDOR, 'Sony'], [TYPE, TABLET]], [\n\n // OnePlus\n /\\s(kb2005|in20[12]5|be20[12][59])\\b/i,\n /\\ba000(1)\\sbuild/i, // OnePlus\n /\\boneplus\\s(a\\d{4})[\\s)]/i\n ], [MODEL, [VENDOR, 'OnePlus'], [TYPE, MOBILE]], [\n\n // Amazon\n /(alexa)webm/i,\n /(kf[a-z]{2}wi)(\\sbuild\\/|\\))/i, // Kindle Fire without Silk\n /(kf[a-z]+)(\\sbuild\\/|\\)).+silk\\//i // Kindle Fire HD\n ], [MODEL, [VENDOR, 'Amazon'], [TYPE, TABLET]], [\n /(sd|kf)[0349hijorstuw]+(\\sbuild\\/|\\)).+silk\\//i // Fire Phone\n ], [[MODEL, 'Fire Phone'], [VENDOR, 'Amazon'], [TYPE, MOBILE]], [\n\n // BlackBerry\n /\\((playbook);[\\w\\s\\),;-]+(rim)/i // BlackBerry PlayBook\n ], [MODEL, VENDOR, [TYPE, TABLET]], [\n /((?:bb[a-f]|st[hv])100-\\d)/i,\n /\\(bb10;\\s(\\w+)/i // BlackBerry 10\n ], [MODEL, [VENDOR, 'BlackBerry'], [TYPE, MOBILE]], [\n\n // Asus\n /(?:\\b|asus_)(transfo[prime\\s]{4,10}\\s\\w+|eeepc|slider\\s\\w+|nexus\\s7|padfone|p00[cj])/i\n ], [MODEL, [VENDOR, 'ASUS'], [TYPE, TABLET]], [\n /\\s(z[es]6[027][01][km][ls]|zenfone\\s\\d\\w?)\\b/i\n ], [MODEL, [VENDOR, 'ASUS'], [TYPE, MOBILE]], [\n\n // HTC\n /(nexus\\s9)/i // HTC Nexus 9\n ], [MODEL, [VENDOR, 'HTC'], [TYPE, TABLET]], [\n /(htc)[;_\\s-]{1,2}([\\w\\s]+(?=\\)|\\sbuild)|\\w+)/i, // HTC\n\n // ZTE\n /(zte)-(\\w*)/i,\n /(alcatel|geeksphone|nexian|panasonic|(?=;\\s)sony)[_\\s-]?([\\w-]*)/i // Alcatel/GeeksPhone/Nexian/Panasonic/Sony\n ], [VENDOR, [MODEL, /_/g, ' '], [TYPE, MOBILE]], [\n\n // Acer\n /droid[x\\d\\.\\s;]+\\s([ab][1-7]\\-?[0178a]\\d\\d?)/i\n ], [MODEL, [VENDOR, 'Acer'], [TYPE, TABLET]], [\n\n // Meizu\n /droid.+;\\s(m[1-5]\\snote)\\sbuild/i,\n /\\bmz-([\\w-]{2,})/i\n ], [MODEL, [VENDOR, 'Meizu'], [TYPE, MOBILE]], [\n\n // MIXED\n /(blackberry|benq|palm(?=\\-)|sonyericsson|acer|asus|dell|meizu|motorola|polytron)[\\s_-]?([\\w-]*)/i,\n // BlackBerry/BenQ/Palm/Sony-Ericsson/Acer/Asus/Dell/Meizu/Motorola/Polytron\n /(hp)\\s([\\w\\s]+\\w)/i, // HP iPAQ\n /(asus)-?(\\w+)/i, // Asus\n /(microsoft);\\s(lumia[\\s\\w]+)/i, // Microsoft Lumia\n /(lenovo)[_\\s-]?([\\w-]+)/i, // Lenovo\n /linux;.+(jolla);/i, // Jolla\n /droid.+;\\s(oppo)\\s?([\\w\\s]+)\\sbuild/i // OPPO\n ], [VENDOR, MODEL, [TYPE, MOBILE]], [\n\n /(archos)\\s(gamepad2?)/i, // Archos\n /(hp).+(touchpad(?!.+tablet)|tablet)/i, // HP TouchPad\n /(kindle)\\/([\\w\\.]+)/i, // Kindle\n /\\s(nook)[\\w\\s]+build\\/(\\w+)/i, // Nook\n /(dell)\\s(strea[kpr\\s\\d]*[\\dko])/i, // Dell Streak\n /[;\\/]\\s?(le[\\s\\-]+pan)[\\s\\-]+(\\w{1,9})\\sbuild/i, // Le Pan Tablets\n /[;\\/]\\s?(trinity)[\\-\\s]*(t\\d{3})\\sbuild/i, // Trinity Tablets\n /\\b(gigaset)[\\s\\-]+(q\\w{1,9})\\sbuild/i, // Gigaset Tablets\n /\\b(vodafone)\\s([\\w\\s]+)(?:\\)|\\sbuild)/i // Vodafone\n ], [VENDOR, MODEL, [TYPE, TABLET]], [\n\n /\\s(surface\\sduo)\\s/i // Surface Duo\n ], [MODEL, [VENDOR, 'Microsoft'], [TYPE, TABLET]], [\n /droid\\s[\\d\\.]+;\\s(fp\\du?)\\sbuild/i\n ], [MODEL, [VENDOR, 'Fairphone'], [TYPE, MOBILE]], [\n /\\s(u304aa)\\sbuild/i // AT&T\n ], [MODEL, [VENDOR, 'AT&T'], [TYPE, MOBILE]], [\n /sie-(\\w*)/i // Siemens\n ], [MODEL, [VENDOR, 'Siemens'], [TYPE, MOBILE]], [\n /[;\\/]\\s?(rct\\w+)\\sbuild/i // RCA Tablets\n ], [MODEL, [VENDOR, 'RCA'], [TYPE, TABLET]], [\n /[;\\/\\s](venue[\\d\\s]{2,7})\\sbuild/i // Dell Venue Tablets\n ], [MODEL, [VENDOR, 'Dell'], [TYPE, TABLET]], [\n /[;\\/]\\s?(q(?:mv|ta)\\w+)\\sbuild/i // Verizon Tablet\n ], [MODEL, [VENDOR, 'Verizon'], [TYPE, TABLET]], [\n /[;\\/]\\s(?:barnes[&\\s]+noble\\s|bn[rt])([\\w\\s\\+]*)\\sbuild/i // Barnes & Noble Tablet\n ], [MODEL, [VENDOR, 'Barnes & Noble'], [TYPE, TABLET]], [\n /[;\\/]\\s(tm\\d{3}\\w+)\\sbuild/i\n ], [MODEL, [VENDOR, 'NuVision'], [TYPE, TABLET]], [\n /;\\s(k88)\\sbuild/i // ZTE K Series Tablet\n ], [MODEL, [VENDOR, 'ZTE'], [TYPE, TABLET]], [\n /;\\s(nx\\d{3}j)\\sbuild/i // ZTE Nubia\n ], [MODEL, [VENDOR, 'ZTE'], [TYPE, MOBILE]], [\n /[;\\/]\\s?(gen\\d{3})\\sbuild.*49h/i // Swiss GEN Mobile\n ], [MODEL, [VENDOR, 'Swiss'], [TYPE, MOBILE]], [\n /[;\\/]\\s?(zur\\d{3})\\sbuild/i // Swiss ZUR Tablet\n ], [MODEL, [VENDOR, 'Swiss'], [TYPE, TABLET]], [\n /[;\\/]\\s?((zeki)?tb.*\\b)\\sbuild/i // Zeki Tablets\n ], [MODEL, [VENDOR, 'Zeki'], [TYPE, TABLET]], [\n /[;\\/]\\s([yr]\\d{2})\\sbuild/i,\n /[;\\/]\\s(dragon[\\-\\s]+touch\\s|dt)(\\w{5})\\sbuild/i // Dragon Touch Tablet\n ], [[VENDOR, 'Dragon Touch'], MODEL, [TYPE, TABLET]], [\n /[;\\/]\\s?(ns-?\\w{0,9})\\sbuild/i // Insignia Tablets\n ], [MODEL, [VENDOR, 'Insignia'], [TYPE, TABLET]], [\n /[;\\/]\\s?((nxa|Next)-?\\w{0,9})\\sbuild/i // NextBook Tablets\n ], [MODEL, [VENDOR, 'NextBook'], [TYPE, TABLET]], [\n /[;\\/]\\s?(xtreme\\_)?(v(1[045]|2[015]|[3469]0|7[05]))\\sbuild/i\n ], [[VENDOR, 'Voice'], MODEL, [TYPE, MOBILE]], [ // Voice Xtreme Phones\n /[;\\/]\\s?(lvtel\\-)?(v1[12])\\sbuild/i // LvTel Phones\n ], [[VENDOR, 'LvTel'], MODEL, [TYPE, MOBILE]], [\n /;\\s(ph-1)\\s/i\n ], [MODEL, [VENDOR, 'Essential'], [TYPE, MOBILE]], [ // Essential PH-1\n /[;\\/]\\s?(v(100md|700na|7011|917g).*\\b)\\sbuild/i // Envizen Tablets\n ], [MODEL, [VENDOR, 'Envizen'], [TYPE, TABLET]], [\n /[;\\/]\\s?(trio[\\s\\w\\-\\.]+)\\sbuild/i // MachSpeed Tablets\n ], [MODEL, [VENDOR, 'MachSpeed'], [TYPE, TABLET]], [\n /[;\\/]\\s?tu_(1491)\\sbuild/i // Rotor Tablets\n ], [MODEL, [VENDOR, 'Rotor'], [TYPE, TABLET]], [\n /(shield[\\w\\s]+)\\sbuild/i // Nvidia Shield Tablets\n ], [MODEL, [VENDOR, 'Nvidia'], [TYPE, TABLET]], [\n /(sprint)\\s(\\w+)/i // Sprint Phones\n ], [VENDOR, MODEL, [TYPE, MOBILE]], [\n /(kin\\.[onetw]{3})/i // Microsoft Kin\n ], [[MODEL, /\\./g, ' '], [VENDOR, 'Microsoft'], [TYPE, MOBILE]], [\n /droid\\s[\\d\\.]+;\\s(cc6666?|et5[16]|mc[239][23]x?|vc8[03]x?)\\)/i // Zebra\n ], [MODEL, [VENDOR, 'Zebra'], [TYPE, TABLET]], [\n /droid\\s[\\d\\.]+;\\s(ec30|ps20|tc[2-8]\\d[kx])\\)/i\n ], [MODEL, [VENDOR, 'Zebra'], [TYPE, MOBILE]], [\n\n ///////////////////\n // CONSOLES\n ///////////////////\n\n /\\s(ouya)\\s/i, // Ouya\n /(nintendo)\\s([wids3utch]+)/i // Nintendo\n ], [VENDOR, MODEL, [TYPE, CONSOLE]], [\n /droid.+;\\s(shield)\\sbuild/i // Nvidia\n ], [MODEL, [VENDOR, 'Nvidia'], [TYPE, CONSOLE]], [\n /(playstation\\s[345portablevi]+)/i // Playstation\n ], [MODEL, [VENDOR, 'Sony'], [TYPE, CONSOLE]], [\n /[\\s\\(;](xbox(?:\\sone)?(?!;\\sxbox))[\\s\\);]/i // Microsoft Xbox\n ], [MODEL, [VENDOR, 'Microsoft'], [TYPE, CONSOLE]], [\n\n ///////////////////\n // SMARTTVS\n ///////////////////\n\n /smart-tv.+(samsung)/i // Samsung\n ], [VENDOR, [TYPE, SMARTTV]], [\n /hbbtv.+maple;(\\d+)/i\n ], [[MODEL, /^/, 'SmartTV'], [VENDOR, 'Samsung'], [TYPE, SMARTTV]], [\n /(?:linux;\\snetcast.+smarttv|lg\\snetcast\\.tv-201\\d)/i, // LG SmartTV\n ], [[VENDOR, 'LG'], [TYPE, SMARTTV]], [\n /(apple)\\s?tv/i // Apple TV\n ], [VENDOR, [MODEL, 'Apple TV'], [TYPE, SMARTTV]], [\n /crkey/i // Google Chromecast\n ], [[MODEL, 'Chromecast'], [VENDOR, 'Google'], [TYPE, SMARTTV]], [\n /droid.+aft([\\w])(\\sbuild\\/|\\))/i // Fire TV\n ], [MODEL, [VENDOR, 'Amazon'], [TYPE, SMARTTV]], [\n /\\(dtv[\\);].+(aquos)/i // Sharp\n ], [MODEL, [VENDOR, 'Sharp'], [TYPE, SMARTTV]], [\n /hbbtv\\/\\d+\\.\\d+\\.\\d+\\s+\\([\\w\\s]*;\\s*(\\w[^;]*);([^;]*)/i // HbbTV devices\n ], [[VENDOR, util.trim], [MODEL, util.trim], [TYPE, SMARTTV]], [\n /[\\s\\/\\(](android\\s|smart[-\\s]?|opera\\s)tv[;\\)\\s]/i // SmartTV from Unidentified Vendors\n ], [[TYPE, SMARTTV]], [\n\n ///////////////////\n // WEARABLES\n ///////////////////\n\n /((pebble))app\\/[\\d\\.]+\\s/i // Pebble\n ], [VENDOR, MODEL, [TYPE, WEARABLE]], [\n /droid.+;\\s(glass)\\s\\d/i // Google Glass\n ], [MODEL, [VENDOR, 'Google'], [TYPE, WEARABLE]], [\n /droid\\s[\\d\\.]+;\\s(wt63?0{2,3})\\)/i\n ], [MODEL, [VENDOR, 'Zebra'], [TYPE, WEARABLE]], [\n\n ///////////////////\n // EMBEDDED\n ///////////////////\n\n /(tesla)(?:\\sqtcarbrowser|\\/20[12]\\d\\.[\\w\\.-]+)/i // Tesla\n ], [VENDOR, [TYPE, EMBEDDED]], [\n\n ////////////////////\n // MIXED (GENERIC)\n ///////////////////\n\n /droid .+?; ([^;]+?)(?: build|\\) applewebkit).+? mobile safari/i // Android Phones from Unidentified Vendors\n ], [MODEL, [TYPE, MOBILE]], [\n /droid .+?;\\s([^;]+?)(?: build|\\) applewebkit).+?(?! mobile) safari/i // Android Tablets from Unidentified Vendors\n ], [MODEL, [TYPE, TABLET]], [\n /\\s(tablet|tab)[;\\/]/i, // Unidentifiable Tablet\n /\\s(mobile)(?:[;\\/]|\\ssafari)/i // Unidentifiable Mobile\n ], [[TYPE, util.lowerize]], [\n /(android[\\w\\.\\s\\-]{0,9});.+build/i // Generic Android Device\n ], [MODEL, [VENDOR, 'Generic']], [\n /(phone)/i\n ], [[TYPE, MOBILE]]\n ],\n\n engine : [[\n\n /windows.+\\sedge\\/([\\w\\.]+)/i // EdgeHTML\n ], [VERSION, [NAME, 'EdgeHTML']], [\n\n /webkit\\/537\\.36.+chrome\\/(?!27)([\\w\\.]+)/i // Blink\n ], [VERSION, [NAME, 'Blink']], [\n\n /(presto)\\/([\\w\\.]+)/i, // Presto\n /(webkit|trident|netfront|netsurf|amaya|lynx|w3m|goanna)\\/([\\w\\.]+)/i, // WebKit/Trident/NetFront/NetSurf/Amaya/Lynx/w3m/Goanna\n /ekioh(flow)\\/([\\w\\.]+)/i, // Flow\n /(khtml|tasman|links)[\\/\\s]\\(?([\\w\\.]+)/i, // KHTML/Tasman/Links\n /(icab)[\\/\\s]([23]\\.[\\d\\.]+)/i // iCab\n ], [NAME, VERSION], [\n\n /rv\\:([\\w\\.]{1,9})\\b.+(gecko)/i // Gecko\n ], [VERSION, NAME]\n ],\n\n os : [[\n\n // Windows\n /microsoft\\s(windows)\\s(vista|xp)/i // Windows (iTunes)\n ], [NAME, VERSION], [\n /(windows)\\snt\\s6\\.2;\\s(arm)/i, // Windows RT\n /(windows\\sphone(?:\\sos)*)[\\s\\/]?([\\d\\.\\s\\w]*)/i, // Windows Phone\n /(windows\\smobile|windows)[\\s\\/]?([ntce\\d\\.\\s]+\\w)(?!.+xbox)/i\n ], [NAME, [VERSION, mapper.str, maps.os.windows.version]], [\n /(win(?=3|9|n)|win\\s9x\\s)([nt\\d\\.]+)/i\n ], [[NAME, 'Windows'], [VERSION, mapper.str, maps.os.windows.version]], [\n\n // iOS/macOS\n /ip[honead]{2,4}\\b(?:.*os\\s([\\w]+)\\slike\\smac|;\\sopera)/i, // iOS\n /cfnetwork\\/.+darwin/i\n ], [[VERSION, /_/g, '.'], [NAME, 'iOS']], [\n /(mac\\sos\\sx)\\s?([\\w\\s\\.]*)/i,\n /(macintosh|mac(?=_powerpc)\\s)(?!.+haiku)/i // Mac OS\n ], [[NAME, 'Mac OS'], [VERSION, /_/g, '.']], [\n\n // Mobile OSes // Android/WebOS/Palm/QNX/Bada/RIM/MeeGo/Contiki/Sailfish OS\n /(android|webos|palm\\sos|qnx|bada|rim\\stablet\\sos|meego|sailfish|contiki)[\\/\\s-]?([\\w\\.]*)/i,\n /(blackberry)\\w*\\/([\\w\\.]*)/i, // Blackberry\n /(tizen|kaios)[\\/\\s]([\\w\\.]+)/i, // Tizen/KaiOS\n /\\((series40);/i // Series 40\n ], [NAME, VERSION], [\n /\\(bb(10);/i // BlackBerry 10\n ], [VERSION, [NAME, 'BlackBerry']], [\n /(?:symbian\\s?os|symbos|s60(?=;)|series60)[\\/\\s-]?([\\w\\.]*)/i // Symbian\n ], [VERSION, [NAME, 'Symbian']], [\n /mozilla.+\\(mobile;.+gecko.+firefox/i // Firefox OS\n ], [[NAME, 'Firefox OS']], [\n /web0s;.+rt(tv)/i,\n /\\b(?:hp)?wos(?:browser)?\\/([\\w\\.]+)/i // WebOS\n ], [VERSION, [NAME, 'webOS']], [\n\n // Google Chromecast\n /crkey\\/([\\d\\.]+)/i // Google Chromecast\n ], [VERSION, [NAME, 'Chromecast']], [\n /(cros)\\s[\\w]+\\s([\\w\\.]+\\w)/i // Chromium OS\n ], [[NAME, 'Chromium OS'], VERSION],[\n\n // Console\n /(nintendo|playstation)\\s([wids345portablevuch]+)/i, // Nintendo/Playstation\n /(xbox);\\s+xbox\\s([^\\);]+)/i, // Microsoft Xbox (360, One, X, S, Series X, Series S)\n\n // GNU/Linux based\n /(mint)[\\/\\s\\(\\)]?(\\w*)/i, // Mint\n /(mageia|vectorlinux)[;\\s]/i, // Mageia/VectorLinux\n /(joli|[kxln]?ubuntu|debian|suse|opensuse|gentoo|arch(?=\\slinux)|slackware|fedora|mandriva|centos|pclinuxos|redhat|zenwalk|linpus|raspbian)(?:\\sgnu\\/linux)?(?:\\slinux)?[\\/\\s-]?(?!chrom|package)([\\w\\.-]*)/i,\n // Joli/Ubuntu/Debian/SUSE/Gentoo/Arch/Slackware\n // Fedora/Mandriva/CentOS/PCLinuxOS/RedHat/Zenwalk/Linpus\n /(hurd|linux)\\s?([\\w\\.]*)/i, // Hurd/Linux\n /(gnu)\\s?([\\w\\.]*)/i, // GNU\n\n // BSD based\n /\\s([frentopc-]{0,4}bsd|dragonfly)\\s?(?!amd|[ix346]{1,2}86)([\\w\\.]*)/i, // FreeBSD/NetBSD/OpenBSD/PC-BSD/DragonFly\n /(haiku)\\s(\\w+)/i // Haiku\n ], [NAME, VERSION], [\n\n // Other\n /(sunos)\\s?([\\w\\.\\d]*)/i // Solaris\n ], [[NAME, 'Solaris'], VERSION], [\n /((?:open)?solaris)[\\/\\s-]?([\\w\\.]*)/i, // Solaris\n /(aix)\\s((\\d)(?=\\.|\\)|\\s)[\\w\\.])*/i, // AIX\n /(plan\\s9|minix|beos|os\\/2|amigaos|morphos|risc\\sos|openvms|fuchsia)/i, // Plan9/Minix/BeOS/OS2/AmigaOS/MorphOS/RISCOS/OpenVMS/Fuchsia\n /(unix)\\s?([\\w\\.]*)/i // UNIX\n ], [NAME, VERSION]\n ]\n };\n\n\n /////////////////\n // Constructor\n ////////////////\n var UAParser = function (ua, extensions) {\n\n if (typeof ua === 'object') {\n extensions = ua;\n ua = undefined;\n }\n\n if (!(this instanceof UAParser)) {\n return new UAParser(ua, extensions).getResult();\n }\n\n var _ua = ua || ((typeof window !== 'undefined' && window.navigator && window.navigator.userAgent) ? window.navigator.userAgent : EMPTY);\n var _rgxmap = extensions ? util.extend(regexes, extensions) : regexes;\n\n this.getBrowser = function () {\n var _browser = { name: undefined, version: undefined };\n mapper.rgx.call(_browser, _ua, _rgxmap.browser);\n _browser.major = util.major(_browser.version); // deprecated\n return _browser;\n };\n this.getCPU = function () {\n var _cpu = { architecture: undefined };\n mapper.rgx.call(_cpu, _ua, _rgxmap.cpu);\n return _cpu;\n };\n this.getDevice = function () {\n var _device = { vendor: undefined, model: undefined, type: undefined };\n mapper.rgx.call(_device, _ua, _rgxmap.device);\n return _device;\n };\n this.getEngine = function () {\n var _engine = { name: undefined, version: undefined };\n mapper.rgx.call(_engine, _ua, _rgxmap.engine);\n return _engine;\n };\n this.getOS = function () {\n var _os = { name: undefined, version: undefined };\n mapper.rgx.call(_os, _ua, _rgxmap.os);\n return _os;\n };\n this.getResult = function () {\n return {\n ua : this.getUA(),\n browser : this.getBrowser(),\n engine : this.getEngine(),\n os : this.getOS(),\n device : this.getDevice(),\n cpu : this.getCPU()\n };\n };\n this.getUA = function () {\n return _ua;\n };\n this.setUA = function (ua) {\n _ua = (typeof ua === STR_TYPE && ua.length > UA_MAX_LENGTH) ? util.trim(ua, UA_MAX_LENGTH) : ua;\n return this;\n };\n this.setUA(_ua);\n return this;\n };\n\n UAParser.VERSION = LIBVERSION;\n UAParser.BROWSER = {\n NAME : NAME,\n MAJOR : MAJOR, // deprecated\n VERSION : VERSION\n };\n UAParser.CPU = {\n ARCHITECTURE : ARCHITECTURE\n };\n UAParser.DEVICE = {\n MODEL : MODEL,\n VENDOR : VENDOR,\n TYPE : TYPE,\n CONSOLE : CONSOLE,\n MOBILE : MOBILE,\n SMARTTV : SMARTTV,\n TABLET : TABLET,\n WEARABLE: WEARABLE,\n EMBEDDED: EMBEDDED\n };\n UAParser.ENGINE = {\n NAME : NAME,\n VERSION : VERSION\n };\n UAParser.OS = {\n NAME : NAME,\n VERSION : VERSION\n };\n\n ///////////\n // Export\n //////////\n\n\n // check js environment\n if (typeof(exports) !== UNDEF_TYPE) {\n // nodejs env\n if (typeof module !== UNDEF_TYPE && module.exports) {\n exports = module.exports = UAParser;\n }\n exports.UAParser = UAParser;\n } else {\n // requirejs env (optional)\n if (typeof(define) === 'function' && define.amd) {\n define(function () {\n return UAParser;\n });\n } else if (typeof window !== 'undefined') {\n // browser env\n window.UAParser = UAParser;\n }\n }\n\n // jQuery/Zepto specific (optional)\n // Note:\n // In AMD env the global scope should be kept clean, but jQuery is an exception.\n // jQuery always exports to global scope, unless jQuery.noConflict(true) is used,\n // and we should catch that.\n var $ = typeof window !== 'undefined' && (window.jQuery || window.Zepto);\n if ($ && !$.ua) {\n var parser = new UAParser();\n $.ua = parser.getResult();\n $.ua.get = function () {\n return parser.getUA();\n };\n $.ua.set = function (uastring) {\n parser.setUA(uastring);\n var result = parser.getResult();\n for (var prop in result) {\n $.ua[prop] = result[prop];\n }\n };\n }\n\n})(typeof window === 'object' ? window : this);\n","module.exports = $;","module.exports = angular;","module.exports = window.entcore[\"ode-ts-client\"];","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\tid: moduleId,\n\t\tloaded: false,\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n\t// Flag the module as loaded\n\tmodule.loaded = true;\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n// expose the modules object (__webpack_modules__)\n__webpack_require__.m = __webpack_modules__;\n\n","var inProgress = {};\nvar dataWebpackPrefix = \"ode-ngjs-front:\";\n// loadScript function to load a script via script tag\n__webpack_require__.l = (url, done, key, chunkId) => {\n\tif(inProgress[url]) { inProgress[url].push(done); return; }\n\tvar script, needAttach;\n\tif(key !== undefined) {\n\t\tvar scripts = document.getElementsByTagName(\"script\");\n\t\tfor(var i = 0; i < scripts.length; i++) {\n\t\t\tvar s = scripts[i];\n\t\t\tif(s.getAttribute(\"src\") == url || s.getAttribute(\"data-webpack\") == dataWebpackPrefix + key) { script = s; break; }\n\t\t}\n\t}\n\tif(!script) {\n\t\tneedAttach = true;\n\t\tscript = document.createElement('script');\n\n\t\tscript.charset = 'utf-8';\n\t\tscript.timeout = 120;\n\t\tif (__webpack_require__.nc) {\n\t\t\tscript.setAttribute(\"nonce\", __webpack_require__.nc);\n\t\t}\n\t\tscript.setAttribute(\"data-webpack\", dataWebpackPrefix + key);\n\t\tscript.src = url;\n\t}\n\tinProgress[url] = [done];\n\tvar onScriptComplete = (prev, event) => {\n\t\t// avoid mem leaks in IE.\n\t\tscript.onerror = script.onload = null;\n\t\tclearTimeout(timeout);\n\t\tvar doneFns = inProgress[url];\n\t\tdelete inProgress[url];\n\t\tscript.parentNode && script.parentNode.removeChild(script);\n\t\tdoneFns && doneFns.forEach((fn) => (fn(event)));\n\t\tif(prev) return prev(event);\n\t}\n\t;\n\tvar timeout = setTimeout(onScriptComplete.bind(null, undefined, { type: 'timeout', target: script }), 120000);\n\tscript.onerror = onScriptComplete.bind(null, script.onerror);\n\tscript.onload = onScriptComplete.bind(null, script.onload);\n\tneedAttach && document.head.appendChild(script);\n};","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.f = {};\n// This file contains only the entry chunk.\n// The chunk loading function for additional chunks\n__webpack_require__.e = (chunkId) => {\n\treturn Promise.all(Object.keys(__webpack_require__.f).reduce((promises, key) => {\n\t\t__webpack_require__.f[key](chunkId, promises);\n\t\treturn promises;\n\t}, []));\n};","// This function allow to reference async chunks\n__webpack_require__.u = (chunkId) => {\n\t// return url for filenames based on template\n\treturn \"\" + {\"142\":\"widgets/universalis-widget/universalis-widget.widget\",\"165\":\"widgets/qwant-widget/qwant-widget.widget\",\"306\":\"widgets/school-widget/school-widget.widget\",\"364\":\"widgets/bookmark-widget/bookmark-widget.widget\",\"368\":\"widgets/dicodelazone-widget/dicodelazone-widget.widget\",\"376\":\"widgets/last-infos-widget/last-infos-widget.widget\",\"390\":\"widgets/rss-widget/rss-widget.widget\",\"438\":\"widgets/carnet-de-bord/carnet-de-bord.widget\",\"484\":\"widgets/cursus-widget/cursus-widget.widget\",\"536\":\"widgets/maxicours-widget/maxicours-widget.widget\",\"539\":\"widgets/briefme-widget/briefme-widget.widget\",\"556\":\"widgets/calendar-widget/calendar-widget.widget\",\"649\":\"widgets/my-apps/my-apps.widget\",\"815\":\"widgets/agenda-widget/agenda-widget.widget\",\"932\":\"widgets/record-me/record-me.widget\"}[chunkId] + \".js\";\n};","__webpack_require__.g = (function() {\n\tif (typeof globalThis === 'object') return globalThis;\n\ttry {\n\t\treturn this || new Function('return this')();\n\t} catch (e) {\n\t\tif (typeof window === 'object') return window;\n\t}\n})();","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","__webpack_require__.nmd = (module) => {\n\tmodule.paths = [];\n\tif (!module.children) module.children = [];\n\treturn module;\n};","var scriptUrl;\nif (__webpack_require__.g.importScripts) scriptUrl = __webpack_require__.g.location + \"\";\nvar document = __webpack_require__.g.document;\nif (!scriptUrl && document) {\n\tif (document.currentScript)\n\t\tscriptUrl = document.currentScript.src\n\tif (!scriptUrl) {\n\t\tvar scripts = document.getElementsByTagName(\"script\");\n\t\tif(scripts.length) scriptUrl = scripts[scripts.length - 1].src\n\t}\n}\n// When supporting browsers where an automatic publicPath is not supported you must specify an output.publicPath manually via configuration\n// or pass an empty string (\"\") and set the __webpack_public_path__ variable from your code to use your own logic.\nif (!scriptUrl) throw new Error(\"Automatic publicPath is not supported in this browser\");\nscriptUrl = scriptUrl.replace(/#.*$/, \"\").replace(/\\?.*$/, \"\").replace(/\\/[^\\/]+$/, \"/\");\n__webpack_require__.p = scriptUrl;","// no baseURI\n\n// object to store loaded and loading chunks\n// undefined = chunk not loaded, null = chunk preloaded/prefetched\n// [resolve, reject, Promise] = chunk loading, 0 = chunk loaded\nvar installedChunks = {\n\t610: 0\n};\n\n__webpack_require__.f.j = (chunkId, promises) => {\n\t\t// JSONP chunk loading for javascript\n\t\tvar installedChunkData = __webpack_require__.o(installedChunks, chunkId) ? installedChunks[chunkId] : undefined;\n\t\tif(installedChunkData !== 0) { // 0 means \"already installed\".\n\n\t\t\t// a Promise means \"currently loading\".\n\t\t\tif(installedChunkData) {\n\t\t\t\tpromises.push(installedChunkData[2]);\n\t\t\t} else {\n\t\t\t\tif(true) { // all chunks have JS\n\t\t\t\t\t// setup Promise in chunk cache\n\t\t\t\t\tvar promise = new Promise((resolve, reject) => (installedChunkData = installedChunks[chunkId] = [resolve, reject]));\n\t\t\t\t\tpromises.push(installedChunkData[2] = promise);\n\n\t\t\t\t\t// start chunk loading\n\t\t\t\t\tvar url = __webpack_require__.p + __webpack_require__.u(chunkId);\n\t\t\t\t\t// create error before stack unwound to get useful stacktrace later\n\t\t\t\t\tvar error = new Error();\n\t\t\t\t\tvar loadingEnded = (event) => {\n\t\t\t\t\t\tif(__webpack_require__.o(installedChunks, chunkId)) {\n\t\t\t\t\t\t\tinstalledChunkData = installedChunks[chunkId];\n\t\t\t\t\t\t\tif(installedChunkData !== 0) installedChunks[chunkId] = undefined;\n\t\t\t\t\t\t\tif(installedChunkData) {\n\t\t\t\t\t\t\t\tvar errorType = event && (event.type === 'load' ? 'missing' : event.type);\n\t\t\t\t\t\t\t\tvar realSrc = event && event.target && event.target.src;\n\t\t\t\t\t\t\t\terror.message = 'Loading chunk ' + chunkId + ' failed.\\n(' + errorType + ': ' + realSrc + ')';\n\t\t\t\t\t\t\t\terror.name = 'ChunkLoadError';\n\t\t\t\t\t\t\t\terror.type = errorType;\n\t\t\t\t\t\t\t\terror.request = realSrc;\n\t\t\t\t\t\t\t\tinstalledChunkData[1](error);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t};\n\t\t\t\t\t__webpack_require__.l(url, loadingEnded, \"chunk-\" + chunkId, chunkId);\n\t\t\t\t} else installedChunks[chunkId] = 0;\n\t\t\t}\n\t\t}\n};\n\n// no prefetching\n\n// no preloaded\n\n// no HMR\n\n// no HMR manifest\n\n// no on chunks loaded\n\n// install a JSONP callback for chunk loading\nvar webpackJsonpCallback = (parentChunkLoadingFunction, data) => {\n\tvar [chunkIds, moreModules, runtime] = data;\n\t// add \"moreModules\" to the modules object,\n\t// then flag all \"chunkIds\" as loaded and fire callback\n\tvar moduleId, chunkId, i = 0;\n\tif(chunkIds.some((id) => (installedChunks[id] !== 0))) {\n\t\tfor(moduleId in moreModules) {\n\t\t\tif(__webpack_require__.o(moreModules, moduleId)) {\n\t\t\t\t__webpack_require__.m[moduleId] = moreModules[moduleId];\n\t\t\t}\n\t\t}\n\t\tif(runtime) var result = runtime(__webpack_require__);\n\t}\n\tif(parentChunkLoadingFunction) parentChunkLoadingFunction(data);\n\tfor(;i < chunkIds.length; i++) {\n\t\tchunkId = chunkIds[i];\n\t\tif(__webpack_require__.o(installedChunks, chunkId) && installedChunks[chunkId]) {\n\t\t\tinstalledChunks[chunkId][0]();\n\t\t}\n\t\tinstalledChunks[chunkIds[i]] = 0;\n\t}\n\n}\n\nvar chunkLoadingGlobal = self[\"webpackChunkode_ngjs_front\"] = self[\"webpackChunkode_ngjs_front\"] || [];\nchunkLoadingGlobal.forEach(webpackJsonpCallback.bind(null, 0));\nchunkLoadingGlobal.push = webpackJsonpCallback.bind(null, chunkLoadingGlobal.push.bind(chunkLoadingGlobal));","// startup\n// Load entry module and return exports\n// This entry module is referenced by other modules so it can't be inlined\nvar __webpack_exports__ = __webpack_require__(9294);\n"],"names":["dndLists","MIME_TYPE","EDGE_MIME_TYPE","MSIE_MIME_TYPE","ALL_EFFECTS","filterEffects","effects","effectAllowed","filter","effect","toLowerCase","indexOf","directive","$parse","$timeout","scope","element","attr","dndDisableIf","$watch","disabled","on","event","originalEvent","dndState","isDragging","itemType","dndType","$eval","dropEffect","dndEffectAllowed","dataTransfer","item","dndDraggable","mimeType","setData","angular","toJson","e","data","type","effectsAllowed","addClass","_dndHandle","setDragImage","dndDragstart","dndCallback","callback","params","stopPropagation","$apply","copy","link","move","none","dndDragend","undefined","removeClass","dndSelected","this","dragDrop","placeholder","forEach","children","childNode","child","hasClass","getPlaceholderElement","remove","placeholderNode","listNode","listSettings","getMimeType","types","i","length","substr","getItemType","isDropAllowed","externalSources","allowedTypes","getDropEffect","ignoreDataTransfer","ctrlKey","altKey","stopDragover","invokeCallback","expression","index","external","getPlaceholderIndex","Array","prototype","call","dndAllowedTypes","isArray","join","split","dndExternalSources","horizontal","dndHorizontalList","preventDefault","parentNode","append","target","listItemNode","rect","getBoundingClientRect","isFirstHalf","clientX","left","width","clientY","top","height","insertBefore","nextSibling","dndDragover","JSON","parse","getData","dndDrop","dndList","splice","dndInserted","newTarget","document","elementFromPoint","contains","_dndPhShown","module","exports","name","context","win","window","doc","ENV","el","cb","addEventListener","attachEvent","off","removeEventListener","detachEvent","bind","fn","ctx","apply","arguments","obj","Object","toString","config","preferred","fallback","transSupport","useFilter","test","navigator","userAgent","_checkTransition","createElement","vendors","webkit","Moz","O","ms","vendor","style","vendorPrefix","Humane","o","queue","baseCls","addnCls","timeout","waitForMove","clickToClose","timeoutAfterMove","container","_setupEl","constructor","display","body","appendChild","removeEvent","currentMsg","setTimeout","transEvent","_afterAnimation","_run","_afterTimeout","removeEventsSet","_animating","currentTimer","clearTimeout","msg","shift","html","innerHTML","className","_showMsg","_setOpacity","opacity","filters","Opacity","err","String","self","interval","setInterval","clearInterval","_hideMsg","log","defaults","opt","push","spawn","create","definition","moment","processRelativeTime","number","withoutSuffix","key","isFuture","format","m","h","d","dd","w","M","MM","y","yy","defineLocale","months","monthsShort","monthsParseExact","weekdays","weekdaysShort","weekdaysMin","weekdaysParseExact","longDateFormat","LT","LTS","L","LL","LLL","LLLL","calendar","sameDay","sameElse","nextDay","nextWeek","lastDay","lastWeek","relativeTime","future","past","s","ss","mm","hh","ww","dayOfMonthOrdinalParse","ordinal","week","dow","doy","factory","monthsShortDot","monthsParse","monthsRegex","month","monthsShortRegex","monthsStrictRegex","monthsShortStrictRegex","longMonthsParse","shortMonthsParse","hours","invalidDate","period","day","map","webpackContext","req","id","webpackContextResolve","__webpack_require__","Error","code","keys","resolve","hookCallback","some","hooks","setHookCallback","input","isObject","hasOwnProp","a","b","hasOwnProperty","isObjectEmpty","getOwnPropertyNames","k","isUndefined","isNumber","isDate","Date","arr","res","arrLen","extend","valueOf","createUTC","locale","strict","createLocalOrUTC","utc","defaultParsingFlags","empty","unusedTokens","unusedInput","overflow","charsLeftOver","nullInput","invalidEra","invalidMonth","invalidFormat","userInvalidated","iso","parsedDateParts","era","meridiem","rfc2822","weekdayMismatch","getParsingFlags","_pf","isValid","_isValid","flags","parsedParts","isNowValid","isNaN","_d","getTime","invalidWeekday","_strict","bigHour","isFrozen","createInvalid","NaN","fun","t","len","momentProperties","updateInProgress","copyConfig","to","from","prop","val","momentPropertiesLen","_isAMomentObject","_i","_f","_l","_tzm","_isUTC","_offset","_locale","Moment","updateOffset","isMoment","warn","suppressDeprecationWarnings","console","deprecate","firstTime","deprecationHandler","arg","args","argLen","slice","stack","deprecations","deprecateSimple","isFunction","Function","set","_config","_dayOfMonthOrdinalParseLenient","RegExp","_dayOfMonthOrdinalParse","source","_ordinalParse","mergeConfigs","parentConfig","childConfig","Locale","defaultCalendar","mom","now","output","_calendar","zeroFill","targetLength","forceSign","absNumber","Math","abs","zerosToFill","pow","max","formattingTokens","localFormattingTokens","formatFunctions","formatTokenFunctions","addFormatToken","token","padded","func","localeData","removeFormattingTokens","match","replace","makeFormatFunction","array","formatMoment","expandFormat","replaceLongDateFormatTokens","lastIndex","defaultLongDateFormat","_longDateFormat","formatUpper","toUpperCase","tok","defaultInvalidDate","_invalidDate","defaultOrdinal","defaultDayOfMonthOrdinalParse","_ordinal","defaultRelativeTime","string","_relativeTime","pastFuture","diff","aliases","addUnitAlias","unit","shorthand","lowerCase","normalizeUnits","units","normalizeObjectUnits","inputObject","normalizedProp","normalizedInput","priorities","addUnitPriority","priority","getPrioritizedUnits","unitsObj","u","sort","isLeapYear","year","absFloor","ceil","floor","toInt","argumentForCoercion","coercedNumber","value","isFinite","makeGetSet","keepTime","set$1","get","date","daysInMonth","stringGet","stringSet","prioritized","prioritizedLen","regexes","match1","match2","match3","match4","match6","match1to2","match3to4","match5to6","match1to3","match1to4","match1to6","matchUnsigned","matchSigned","matchOffset","matchShortOffset","matchTimestamp","matchWord","addRegexToken","regex","strictRegex","isStrict","getParseRegexForToken","unescapeFormat","regexEscape","matched","p1","p2","p3","p4","tokens","addParseToken","tokenLen","addWeekParseToken","_w","addTimeToArrayFromToken","_a","YEAR","MONTH","DATE","HOUR","MINUTE","SECOND","MILLISECOND","WEEK","WEEKDAY","mod","n","x","modMonth","defaultLocaleMonths","defaultLocaleMonthsShort","MONTHS_IN_FORMAT","defaultMonthsShortRegex","defaultMonthsRegex","localeMonths","_months","isFormat","localeMonthsShort","_monthsShort","handleStrictParse","monthName","ii","llc","toLocaleLowerCase","_monthsParse","_longMonthsParse","_shortMonthsParse","localeMonthsParse","_monthsParseExact","setMonth","dayOfMonth","min","getSetMonth","getDaysInMonth","computeMonthsParse","_monthsShortStrictRegex","_monthsShortRegex","_monthsStrictRegex","_monthsRegex","cmpLenRev","shortPieces","longPieces","mixedPieces","daysInYear","parseTwoDigitYear","parseInt","getSetYear","getIsLeapYear","createDate","getFullYear","setFullYear","createUTCDate","UTC","getUTCFullYear","setUTCFullYear","firstWeekOffset","fwd","getUTCDay","dayOfYearFromWeeks","weekday","resYear","resDayOfYear","dayOfYear","weekOfYear","resWeek","weekOffset","weeksInYear","weekOffsetNext","localeWeek","_week","defaultLocaleWeek","localeFirstDayOfWeek","localeFirstDayOfYear","getSetWeek","add","getSetISOWeek","parseWeekday","weekdaysParse","parseIsoWeekday","shiftWeekdays","ws","concat","weekdaysMinRegex","weekdaysShortRegex","weekdaysRegex","defaultLocaleWeekdays","defaultLocaleWeekdaysShort","defaultLocaleWeekdaysMin","defaultWeekdaysRegex","defaultWeekdaysShortRegex","defaultWeekdaysMinRegex","localeWeekdays","_weekdays","localeWeekdaysShort","_weekdaysShort","localeWeekdaysMin","_weekdaysMin","handleStrictParse$1","weekdayName","_weekdaysParse","_shortWeekdaysParse","_minWeekdaysParse","localeWeekdaysParse","_weekdaysParseExact","_fullWeekdaysParse","getSetDayOfWeek","getDay","getSetLocaleDayOfWeek","getSetISODayOfWeek","computeWeekdaysParse","_weekdaysStrictRegex","_weekdaysRegex","_weekdaysShortStrictRegex","_weekdaysShortRegex","_weekdaysMinStrictRegex","_weekdaysMinRegex","minp","shortp","longp","minPieces","hFormat","kFormat","lowercase","minutes","matchMeridiem","_meridiemParse","localeIsPM","charAt","seconds","kInput","_isPm","isPM","_meridiem","pos","pos1","pos2","defaultLocaleMeridiemParse","getSetHour","localeMeridiem","isLower","globalLocale","baseConfig","meridiemParse","locales","localeFamilies","commonPrefix","arr1","arr2","minl","normalizeLocale","chooseLocale","names","j","next","loadLocale","isLocaleNameSane","oldLocale","_abbr","getSetGlobalLocale","values","getLocale","abbr","parentLocale","updateLocale","tmpLocale","listLocales","checkOverflow","_overflowDayOfYear","_overflowWeeks","_overflowWeekday","extendedIsoRegex","basicIsoRegex","tzRegex","isoDates","isoTimes","aspNetJsonRegex","obsOffsets","UT","GMT","EDT","EST","CDT","CST","MDT","MST","PDT","PST","configFromISO","l","allowTime","dateFormat","timeFormat","tzFormat","exec","isoDatesLen","isoTimesLen","configFromStringAndFormat","extractFromRFC2822Strings","yearStr","monthStr","dayStr","hourStr","minuteStr","secondStr","result","untruncateYear","preprocessRFC2822","checkWeekday","weekdayStr","parsedInput","calculateOffset","obsOffset","militaryOffset","numOffset","hm","configFromRFC2822","parsedArray","setUTCMinutes","getUTCMinutes","configFromString","createFromInputFallback","c","currentDateArray","nowValue","_useUTC","getUTCMonth","getUTCDate","getMonth","getDate","configFromArray","currentDate","expectedWeekday","yearToUse","dayOfYearFromWeekInfo","_dayOfYear","_nextDay","weekYear","temp","weekdayOverflow","curWeek","GG","W","E","createLocal","gg","ISO_8601","RFC_2822","skipped","stringLength","totalParsedInputLength","meridiemFixWrap","erasConvertYear","hour","isPm","meridiemHour","configFromStringAndArray","tempConfig","bestMoment","scoreToBeat","currentScore","validFormatFound","bestFormatIsValid","configfLen","score","configFromObject","dayOrDate","minute","second","millisecond","createFromConfig","prepareConfig","preparse","configFromInput","isUTC","prototypeMin","other","prototypeMax","pickBy","moments","ordering","isDurationValid","unitHasDecimal","orderLen","parseFloat","isValid$1","createInvalid$1","createDuration","Duration","duration","years","quarters","quarter","weeks","isoWeek","days","milliseconds","_milliseconds","_days","_data","_bubble","isDuration","absRound","round","compareArrays","array1","array2","dontConvert","lengthDiff","diffs","offset","separator","utcOffset","sign","offsetFromString","chunkOffset","matcher","parts","matches","cloneWithOffset","model","clone","setTime","local","getDateOffset","getTimezoneOffset","getSetOffset","keepLocalTime","keepMinutes","localAdjust","_changeInProgress","addSubtract","getSetZone","setOffsetToUTC","setOffsetToLocal","subtract","setOffsetToParsedOffset","tZone","hasAlignedHourOffset","isDaylightSavingTime","isDaylightSavingTimeShifted","_isDSTShifted","toArray","isLocal","isUtcOffset","isUtc","aspNetRegex","isoRegex","ret","diffRes","parseIso","momentsDifference","inp","positiveMomentsDifference","base","isAfter","isBefore","createAdder","direction","tmp","isAdding","invalid","isString","isMomentInput","isNumberOrStringArray","isMomentInputObject","property","objectTest","propertyTest","properties","propertyLen","arrayTest","dataTypeTest","isCalendarSpec","getCalendarFormat","myMoment","calendar$1","time","formats","sod","startOf","calendarFormat","localInput","endOf","isBetween","inclusivity","localFrom","localTo","isSame","inputMs","isSameOrAfter","isSameOrBefore","asFloat","that","zoneDelta","monthDiff","wholeMonthDiff","anchor","toISOString","keepOffset","toDate","inspect","prefix","datetime","suffix","zone","inputString","defaultFormatUtc","defaultFormat","postformat","humanize","fromNow","toNow","newLocaleData","lang","MS_PER_SECOND","MS_PER_MINUTE","MS_PER_HOUR","MS_PER_400_YEARS","mod$1","dividend","divisor","localStartOfDate","utcStartOfDate","startOfDate","isoWeekday","unix","toObject","toJSON","isValid$2","parsingFlags","invalidAt","creationData","localeEras","eras","_eras","since","until","localeErasParse","eraName","narrow","localeErasConvertYear","dir","getEraName","getEraNarrow","getEraAbbr","getEraYear","erasNameRegex","computeErasParse","_erasNameRegex","_erasRegex","erasAbbrRegex","_erasAbbrRegex","erasNarrowRegex","_erasNarrowRegex","matchEraAbbr","matchEraName","matchEraNarrow","matchEraYearOrdinal","_eraYearOrdinalRegex","abbrPieces","namePieces","narrowPieces","addWeekYearFormatToken","getter","getSetWeekYear","getSetWeekYearHelper","getSetISOWeekYear","getISOWeeksInYear","getISOWeeksInISOWeekYear","isoWeekYear","getWeeksInYear","weekInfo","getWeeksInWeekYear","weeksTarget","setWeekAll","dayOfYearData","getSetQuarter","erasParse","eraYearOrdinalParse","getSetDayOfMonth","getSetDayOfYear","getSetMinute","getSetMillisecond","getSetSecond","parseMs","getZoneAbbr","getZoneName","proto","createUnix","createInZone","parseZone","preParsePostFormat","Symbol","for","eraNarrow","eraAbbr","eraYear","isoWeeks","weeksInWeekYear","isoWeeksInYear","isoWeeksInISOWeekYear","isDST","zoneAbbr","zoneName","dates","isDSTShifted","proto$1","get$1","field","setter","listMonthsImpl","out","listWeekdaysImpl","localeSorted","listMonths","listMonthsShort","listWeekdays","listWeekdaysShort","listWeekdaysMin","firstDayOfYear","firstDayOfWeek","langData","mathAbs","addSubtract$1","add$1","subtract$1","absCeil","bubble","monthsFromDays","monthsToDays","daysToMonths","as","valueOf$1","makeAs","alias","asMilliseconds","asSeconds","asMinutes","asHours","asDays","asWeeks","asMonths","asQuarters","asYears","clone$1","get$2","makeGetter","thresholds","substituteTimeAgo","relativeTime$1","posNegDuration","getSetRelativeTimeRounding","roundingFunction","getSetRelativeTimeThreshold","threshold","limit","argWithSuffix","argThresholds","withSuffix","th","assign","abs$1","toISOString$1","totalSign","ymSign","daysSign","hmsSign","total","toFixed","proto$2","toIsoString","version","relativeTimeRounding","relativeTimeThreshold","HTML5_FMT","DATETIME_LOCAL","DATETIME_LOCAL_SECONDS","DATETIME_LOCAL_MS","TIME","TIME_SECONDS","TIME_MS","extendStatics","setPrototypeOf","__proto__","p","__extends","TypeError","__","__awaiter","thisArg","_arguments","P","generator","Promise","reject","fulfilled","step","rejected","done","then","__generator","f","g","_","label","sent","trys","ops","verb","iterator","v","op","pop","__values","__read","r","ar","error","__spreadArray","il","__await","__asyncGenerator","asyncIterator","q","resume","fulfill","settle","__asyncValues","createErrorClass","createImpl","ctorFunc","instance","UnsubscriptionError","_super","errors","message","arrRemove","Subscription","initialTeardown","closed","_parentage","_teardowns","unsubscribe","e_1","e_2","_b","_parentage_1","_parentage_1_1","e_1_1","return","_teardowns_1","_teardowns_1_1","teardown_1","execTeardown","e_2_1","teardown","_hasParent","_addParent","parent","includes","_removeParent","EMPTY","EMPTY_SUBSCRIPTION","isSubscription","onUnhandledError","onStoppedNotification","useDeprecatedSynchronousErrorHandling","useDeprecatedNextContext","timeoutProvider","delegate","handle","reportUnhandledError","noop","COMPLETE_NOTIFICATION","createNotification","kind","errorContext","isRoot","errorThrown","captureError","Subscriber","destination","_this","isStopped","EMPTY_OBSERVER","complete","SafeSubscriber","handleStoppedNotification","nextNotification","_next","_error","_complete","observerOrNext","context_1","wrapForErrorHandling","defaultErrorHandler","handler","notification","subscriber","observable","identity","pipe","fns","pipeFromArray","reduce","prev","Observable","subscribe","_subscribe","lift","operator","isObserver","_trySubscribe","sink","promiseCtor","getPromiseCtor","subscription","operations","toPromise","hasLift","operate","init","liftedSource","OperatorSubscriber","onNext","onComplete","onError","onFinalize","refCount","connection","_refCount","refCounter","sharedConnection","_connection","conn","connect","ConnectableObservable","subjectFactory","_subject","getSubject","subject","_teardown","subject_1","performanceTimestampProvider","performance","animationFrameProvider","schedule","request","requestAnimationFrame","cancel","cancelAnimationFrame","timestamp","animationFrames","timestampProvider","animationFramesFactory","DEFAULT_ANIMATION_FRAMES","provider","start","run","elapsed","resolved","ObjectUnsubscribedError","Subject","observers","hasError","thrownError","AnonymousSubject","_throwIfClosed","copy_1","copy_1_1","defineProperty","enumerable","configurable","_checkFinalizedStatuses","_innerSubscribe","asObservable","BehaviorSubject","_value","getValue","dateTimestampProvider","ReplaySubject","_bufferSize","_windowTime","_timestampProvider","Infinity","_buffer","_infiniteTimeWindow","_trimBuffer","adjustedBufferSize","last","AsyncSubject","_hasValue","_isComplete","Action","scheduler","work","state","delay","intervalProvider","AsyncAction","pending","recycleAsyncId","requestAsyncId","_id","flush","_scheduler","execute","_execute","_delay","errorValue","errored","actions","nextHandle","activeHandles","findAndClearHandle","setImmediate","clearImmediate","immediateProvider","AsapAction","_scheduled","Scheduler","schedulerActionCtor","AsyncScheduler","SchedulerAction","_active","action","AsapScheduler","count","asapScheduler","asap","asyncScheduler","QueueAction","queueScheduler","QueueScheduler","AnimationFrameAction","AnimationFrameScheduler","animationFrameScheduler","animationFrame","VirtualTimeScheduler","maxFrames","VirtualAction","frame","frameTimeFactor","active","Number","sortActions","emptyScheduled","scheduleArray","isArrayLike","isPromise","NotificationKind","caughtSchedule","scheduleIterable","scheduleAsyncIterable","sub","isInteropObservable","isIterable","isAsyncIterable","createInvalidObservableTypeError","readableStreamLikeToAsyncGenerator","readableStream","reader","getReader","read","releaseLock","isReadableStreamLike","scheduled","scheduleObservable","schedulePromise","scheduleReadableStreamLike","innerFrom","obs","fromArrayLike","promise","fromAsyncIterable","iterable","iterable_1","iterable_1_1","asyncIterable","asyncIterable_1","asyncIterable_1_1","process","catch","internalFromArray","isScheduler","popResultSelector","popScheduler","popNumber","defaultValue","of","throwError","errorOrErrorFactory","errorFactory","Notification","hasValue","observe","observer","observeNotification","do","nextHandler","errorHandler","completeHandler","accept","nextOrObserver","toObservable","createNext","createError","createComplete","completeNotification","_c","isObservable","EmptyError","lastValueFrom","hasConfig","firstValueFrom","ArgumentOutOfRangeError","NotFoundError","SequenceError","isValidDate","TimeoutError","info","schedulerArg","first","each","with","_with","timeoutErrorFactory","meta","originalSourceSubscription","timerSubscription","lastValue","seen","startTimer","subscribeOn","project","mapOneOrManyArgs","callOrApply","observeOn","bindCallbackInternals","isNodeStyle","callbackFunc","resultSelector","uninitialized","subs","isAsync_1","isComplete_1","results","bindCallback","bindNodeCallback","getPrototypeOf","objectProto","getKeys","argsArgArrayOrObject","first_1","createObject","combineLatest","observables","combineLatestInit","valueTransform","maybeSchedule","remainingFirstValues","_loop_1","hasFirstValue","mergeInternals","concurrent","onBeforeNext","expand","innerSubScheduler","additionalTeardown","buffer","isComplete","checkComplete","outerNext","doInnerSub","innerComplete","innerValue","bufferedValue","mergeMap","mergeAll","concatAll","defer","observableFactory","DEFAULT_CONFIG","connector","resetOnDisconnect","connectable","forkJoin","sources","remainingCompletions","remainingEmissions","sourceIndex","nodeEventEmitterMethods","eventTargetMethods","jqueryMethods","fromEvent","eventName","options","isEventTarget","methodName","addListener","removeListener","isNodeStyleEventEmitter","toCommonHandlerRegistry","isJQueryStyleEventEmitter","subTarget","fromEventPattern","addHandler","removeHandler","retValue","generate","initialStateOrOptions","condition","iterate","resultSelectorOrScheduler","initialState","gen","iif","trueResult","falseResult","timer","dueTime","intervalOrScheduler","intervalDuration","due","merge","NEVER","never","argsOrArgArray","onErrorResumeNext","nextSources","remaining","subscribeNext","nextSource","innerSub","pairs","entries","not","pred","predicate","partition","race","raceInit","subscriptions","range","end","using","resourceFactory","resource","zip","buffers","completed","every","audit","durationSelector","durationSubscriber","endDuration","cleanupDuration","auditTime","closingNotifier","currentBuffer","bufferCount","bufferSize","startBufferEvery","toEmit","buffers_1","buffers_1_1","toEmit_1","toEmit_1_1","e_3","buffers_2","buffers_2_1","e_3_1","bufferTime","bufferTimeSpan","otherArgs","bufferCreationInterval","maxBufferSize","bufferRecords","restartOnEmit","emit","record","startBuffer","record_1","bufferTimeSubscriber","recordsCopy","recordsCopy_1","recordsCopy_1_1","bufferToggle","openings","closingSelector","openValue","closingSubscription","bufferWhen","closingSubscriber","openBuffer","catchError","selector","handledResult","syncUnsub","scanInternals","accumulator","seed","hasSeed","emitOnNext","emitBeforeComplete","hasState","arrReducer","joinAllInternals","joinFn","combineLatestAll","combineAll","combineLatestWith","otherSources","concatMap","concatMapTo","innerObservable","concatWith","subscribable","debounce","debounceTime","activeTask","lastTime","emitWhenIdle","targetTime","defaultIfEmpty","take","ignoreElements","mapTo","delayWhen","delayDurationSelector","subscriptionDelay","dematerialize","distinct","keySelector","flushes","distinctKeys","Set","has","clear","distinctUntilChanged","comparator","defaultCompare","previousKey","currentKey","distinctUntilKeyChanged","compare","throwIfEmpty","defaultErrorFactory","elementAt","hasDefaultValue","endWith","exhaustAll","inner","exhaust","exhaustMap","outerValue","finalize","find","createFind","findIndex","groupBy","elementOrOptions","groups","Map","notify","handleError","consumer","groupBySourceSubscriber","GroupBySubscriber","key_1","group_1","grouped","groupSubject","groupSubscriber","activeGroups","teardownAttempted","durationSubscriber_1","delete","isEmpty","takeLast","buffer_1","buffer_1_1","materialize","comparer","flatMap","mergeMapTo","mergeScan","mergeWith","multicast","subjectOrSubjectFactory","pairwise","hasPrev","pluck","currentProp","publish","publishBehavior","initialValue","publishLast","publishReplay","windowTime","selectorOrScheduler","raceWith","repeat","soFar","subscribeForRepeat","repeatWhen","notifier","completions$","syncResub","isNotifierComplete","isMainComplete","subscribeForRepeatWhen","retry","configOrCount","resetOnSuccess","subscribeForRetry","resub_1","notifierSubscriber_1","retryWhen","errors$","subscribeForRetryWhen","sample","sampleTime","scan","sequenceEqual","compareTo","aState","bState","isEqual","createSubscriber","selfState","otherState","sequenceEqualSubscriber","share","resetOnError","resetOnComplete","resetOnRefCountZero","wrapperSource","resetConnection","hasCompleted","hasErrored","cancelReset","reset","resetAndUnsubscribe","dest","handleReset","shareReplay","configOrBufferSize","single","singleValue","seenValue","skip","skipLast","skipCount","ring","valueIndex","oldValue","skipUntil","taking","skipSubscriber","skipWhile","startWith","switchMap","innerSubscriber","innerIndex","outerIndex","switchAll","switchMapTo","switchScan","takeUntil","takeWhile","inclusive","tap","tapObserver","isUnsub","defaultThrottleConfig","leading","trailing","throttle","sendValue","throttled","endThrottling","send","cleanupThrottling","startThrottle","throttleTime","duration$","timeInterval","current","TimeInterval","timeoutWith","withObservable","windowBoundaries","windowSubject","windowCount","windowSize","startWindowEvery","startEvery","windows","windows_1","windows_1_1","window_2","windowTimeSpan","windowCreationInterval","maxWindowSize","windowRecords","restartOnClose","closeWindow","startWindow","window_1","loop","terminate","windowToggle","windowsCopy","windowsCopy_1","windowsCopy_1_1","windowWhen","openWindow","withLatestFrom","inputs","otherValues","ready","zipAll","zipWith","otherInputs","selected","folder","toggleSelect","idx","selectedFolders","openSubfolder","openAsSubfolder","Controller","restrict","template","bindToController","controller","controllerAs","require","elem","attrs","controllers","ctrl","odeExplorer","Directive","selectedItems","$location","$window","app","$onInit","UiModel","getSortClass","sortOrders","searchParameters","orders","SORT_ORDER","ASC","toggleSortOrder","search","DESC","onCreate","ExplorerFrameworkFactory","getBus","RESOURCE","BLOG","ACTION","CREATE","path","location","href","initialize","resultset","pagination","startIdx","loadedFolders","folders","loadedItems","resources","transclude","items","explorer","latestResources","$on","ev","$rootScope","_isSelected","_subfolders","childNumber","subFolders","getClass","toggle","open","onSelect","folderCtrl","FolderController","templateUrl","onSelectFolder","getResources","subfolders","richContentSvc","bindHtml","newVal","DirectiveFactory","$inject","hasRecorded","guardObjectIsDirty","guardObjectReset","videoUploadService","videoEventTrackerService","_recorder","setRecorder","isAudioCompatible","audio_recorder","isCompatible","isVideoCompatible","VideoRecorder","session","hasWorkflow","disabledButtons","displaySavedMessage","selectedRecorder","msToTime","pad2","videoFactory","videoDurationHandler","selectedVid","status","recorderStatus","recorder","permission","isIdle","hasPermission","elapsedTime","maxDuration","switchRecorder","prepare","switchAudioRecord","isRecording","suspend","btn","getElementById","trackEvent","detail","switchVideoRecord","isPaused","restart","bubbles","CustomEvent","dispatchEvent","switchPlay","isPlaying","pause","play","switchVideo","rec","switchCamera","saveRecord","save","redo","videoPlayer","removeChild","firstElementChild","getSaveBtnClass","isEncoding","isUploading","getSavedStatus","clean","helperSvc","onUpload","recordGuard","VideoRecordGuardModel","conf","Platform","idiom","deviceId","translate","groupId","mediaDevices","enumerateDevices","devices","device","videoinputs","deviceType","videoInputDevices","finally","safeApply","videoElem","setAttribute","timestamps","startedAt","endedAt","timeStamp","recordMaxTime","_onTriggerApp","RxJS","connectorLightboxTrigger","appEvent","$mutex","metaKey","xitiSvc","showAuthenticatedConnectorLightbox","onClose","onConfirm","_currentAppEvent","_app","authenticatedConnectorsAccessed","User","preferences","update","windowOpen","address","isAuthenticatedConnector","casType","isAuthenticatedConnectorFirstAccess","openAppWithCheck","skipCheck","isExternal","trackClick","load","apps","getPublicConf","APP","CAS","cf","TriggerDirective","attributes","skin","theme","appPrefix","currentApp","getHelpPath","helpPath","modalElement","$","onHelp","helpText","setHtml","http","queryParams","deploymentTag","content","latestResponse","helpErrorTitle","helpErrorText","setErrorHTML","pathname","title","text","helpContent","insertAfter","slideUp","slideDown","closest","click","wrap","burgerMenuElement","prepend","toggleClass","bodyClick","logoutCallback","themeSvc","currentLanguage","username","avatar","messagerieLink","mysearch","is1D","is2D","refreshAvatar","avatarUrl","description","displayName","openApps","launchSearch","words","keyCode","getIconClass","appCode","getIconCode","currentTarget","platform","nbNewMessages","me","right","goToMessagerie","preference","origin","refreshMails","unread","nbMessages","all","getLanguage","onOverrideReady","getBookmarks","onFullyReady","overrides","portal","conversationUnreadUrl","tracking","infotips","notif","onLangReady","L10n","goToMyAccount","USER_PREFS","RGPD_COOKIES","closeBanner","showRgpd","trackApp","user","setCookie","showBanner","getCookie","ca","decodeURIComponent","cookie","substring","cvalue","exdays","expires","toUTCString","banner","icon","store","appRef","runScript","odeXiti","showTitle","showImage","showColor","showDescription","showUrl","PropsPanelController","newValue","PROP_KEY","COLOR","DESCRIPTION","IMAGE","TITLE","URL","infraPrefix","$scope","showSaveSharebookmarkInput","sharebookmarkSaved","workflowAllowSharebookmarks","showCloseConfirmation","showBookmarkMembers","processing","sharing","editResources","sharingModel","edited","editedInherited","changed","shareTable","maxResults","found","maxEdit","newSharebookmarkName","usersCache","actionsConfiguration","feeding","entcore","loadDirectoryWorkflow","httpPromisy","overrideDefaultActions","shareOverrideDefaultActions","loadAppBehavioursSharingConf","$postLink","owner","userId","authorId","authorName","myRights","shared","workflow","directory","allowSharebookmarks","Behaviours","loadBehaviours","applicationsBehaviours","canEdit","canEditDelegate","$item","isSubmitDisabled","hasUnchecked","allUnckecked","createSharebookmark","users","group","postJson","typeSort","displayMore","requiredActions","requires","required","dependency","changeAction","hide","actionToRights","rights","rightsToActions","sharebookmarks","promises","sharedItem","onValidate","putJson","$root","$broadcast","success","autoClose","closePanel","onSubmit","findUserOrGroup","searchTerm","removeAccents","startSearch","functions","ADMIN_LOCAL","loading","visibles","bookmarks","bookmark","array3","testName","lastName","firstName","testNameReversed","testUsername","thing","addResults","addEdit","augmentedItem","addedIndex","defaultActions","actionId","shareOverrideDefaultAction","default","defaultAction","setActions","clearSearch","canShowMore","getColor","profile","ui","profileColors","differentRights","model1","model2","different","checked","onFeedEvent","onFeed","feedData","initModel","editResource","addToEdit","groupActions","elementObjOriginal","elementObj","checkedInherited","varyingRights","varyingRightsI18nKey","SharePanelController","onCancel","closeDelegate","confirmationCloseDelegate","$watchCollection","doClose","cancelled","revertClose","$element","$attributes","$observe","toSkinUrl","skinSrc","odeThemeHelperService","ConfigurationFrameworkFactory","getConf","onSkinReady","themeName","skinName","url","themeUrl","overriding","bootstrapVersion","CDN","loadThemeJs","applyStyle","actionFilter","mobileFilter","showProps","showShares","INITIALIZE","SEARCH","UPD_PROPS","OPEN","EXPORT","COMMENT","PRINT","PUBLISH","getActionClass","getI18nKey","isActivable","onlyOneItemSelected","SHARE","MANAGE","activate","available","DELETE","manageProperties","resourceType","genericProps","editProps","editShares","alert","props","closeProps","closeShares","$compile","ngModel","ngChange","autocomplete","I18nBase","compiled","i18nPlaceholder","i18nTitle","i18nValue","trim","Filter","attrObj","header","userprefsKey","userprefsField","onChange","saveOnChange","showOnce","show","notifyVisibility","visible","stayOpen","tiny","onShow","delegateClose","fadeOut","css","$$phase","$parent","trigger","lightboxWindow","parentElements","parents","backup","zIndex","fadeIn","attach","modal","size","getStyle","getSizeClass","footer","containerCtrl","random","guardFactory","ObjectGuard","customGuard","GenericGuardDirective","InputGuard","$dirty","$modelValue","root","guard","$formatters","registerGuard","unregisterGuard","navigationGuardService","registerIndependantGuard","unregisterIndependantGuard","rootID","guardRoot","generateID","angularRCL","AngularJSRouteChangeListener","getInstance","registerListener","DOMRouteChangeListener","unregisterListener","unregisterRoot","$viewValue","rootGuardId","listener","ManualChangeListener","unbinds","checkGuardId","confirmMessageKey","guardMessageKey","navigationTrigger","onEvent","lastIndexOf","unbindAll","resetID","resetGuardId","submit","resetGuard","resetAll","unbind","resetGuardEvent","tagname","tag","nodeName","mouseEvent","popover","querySelector","one","triggerHandler","coords","wh","PulsarController","quickstart","assistant","hidePulsars","goTo","currentStep","assistantIndex","nextAssistantStep","previous","previousAssistantStep","seeLater","seeAssistantLater","closeAssistant","viewport","FAT_MOBILE","mySteps","steps","odeNgHelperService","quickstartSvc","TABLET","pulsarInfos","pulsar","pulsars","infos","pulsarButton","pulsarElement","pulsarSize","pulsarLayerMarge","paintPulsar","position","xPosition","yPosition","appendTo","cls","firstCycle","placePulsar","deltaX","deltaY","delta","elemOffset","elemWidth","elemHeight","xPositions","center","yPositions","bottom","pulsarMarge","windowWidth","windowHeight","pulsarElementMarge","oldTop","oldLeft","maxX","maxY","newLeft","newBottom","gapLeft","gapRight","gapBottom","gapTop","arrow","arrowXpos","arrowYpos","placeLayers","pulsarHighlight","check","highlight","outerWidth","outerHeight","scoped","undraw","closePulsar","isLastStep","goToAppStep","nextAppStep","previousAppStep","appIndex","removeAttr","odeQuickstartService","widgetSvc","loadWidgets","onIndex","userPref","dndWidgets","list","platformConf","mandatory","lockedWidgets","updateAndSave","WidgetFrameworkFactory","saveUserPrefs","checkPosition","widget","onDnDDragOver","allowed","signalReject","onDnDDrop","itemId","oldIdx","defaultOptions","fromJson","pulse","widgetLoader","htmlFragment","breadcrumb","createContext","getSearchParameters","$interpolateProvider","startSymbol","endSymbol","$sceDelegateProvider","resourceUrlWhitelist","cdnDomain","service","NotifyService","NgHelperService","SessionService","TrackingService","XitiService","Explorer","Sidebar","SidebarFolder","ResourceList","DominoFolder","DominoItem","Toaster","Modal","PropsPanel","SharePanel","Translate","I18n","I18nValue","I18nPlaceholder","I18nTitle","I18nFilter","FilterFactory","I18nService","getBase","odeBaseModule","getI18n","odeI18nModule","getUi","odeUiModule","getWidgets","odeWidgetModule","getExplorer","odeExplorerModule","OdeModules","Portal","Navbar","WithTheme","ModalContainer","Infotip","NavigationTrigger","GuardRoot","DirtyGuard","DocumentGuard","CustomGuard","ResetGuard","AppTitle","Logout","Popover","PopoverContent","PopoverOpener","Assistant","Pulsar","Lightbox","ConnectorLightbox","TriggerDirectiveFactory","SmartBanner","Help","BindHtml","Xiti","Autocomplete","SkinSrc","Recorder","WidgetContainer","Widget","ThemeHelperService","QuickstartService","WidgetService","RichContentService","VideoUploadService","VideoEventTrackerService","KnownWidget","$injector","widgetName","maxicours","cursus","school","recordMe","agenda","qwant","rss","myApps","carnetDeBord","dicoDeLaZone","universalis","briefme","lastInfos","jsModule","odeModuleName","loadNewModules","ServiceFactory","AlertSvc","$http","sayHello","what","userName","ngModelCtrl","exp","phase","getClientRects","pageYOffset","pageXOffset","documentElement","clientWidth","innerWidth","humane","ENSEIGNANT","ELEVE","PERSEDUCNAT","PERSRELELEVE","SUPERADMIN","loaded","awaiters","assistantStep","basePath","assistantTimer","assistantTimerFormat","getAppStep","closeApp","pref","nbSteps","richContent","htmlVal","startsWith","removeAttribute","htmlContent","outerHTML","src","detach","cursor","onSessionReady","userInfo","bookmarkedApps","ngHelperSvc","iconOfWidget","getBootstrapThemePath","override","getBootstrapSkinPath","querySelectorAll","loadOldWrappedTheme","oldTheme","stylePath","favicon","listThemes","setTheme","setDefaultTheme","endsWith","getWidgetIconClass","$document","hasOptedIn","loadParams","analytics","parameters","_params","shouldTrackCurrentApp","UserId","Profile","School","Project","siteId","getElementsByTagName","async","isUserOptedOut","$digest","detailApps","doNotTrack","absUrl","trackPage","_paq","willTrackEvent","getCurrentMatchingApps","trackOnly","category","saveOptIn","shouldTrackEvent","asFormData","formData","FormData","browserInfo","getBrowserInfo","hostname","generateSaveEvent","saved","videoEventData","videoId","videoworkspaceid","userProfile","profiles","browser","structure","structureNames","level","weight","videosize","captation","_maxWeight","_maxDuration","_acceptVideoUploadExtensions","_initialized","VIDEO","response","safeValueOf","exts","checkValidExtension","ext","upload","file","filename","uploadUrl","post","checkUrl","processid","waitDuration","events","layer","LAYER_NAME","WIDGETS","EVENT_NAME","USERPREF_CHANGED","ATTag","xiti","loadScript","tuple","debug","stringify","loadCasMapping","ATInternet","scriptPath","headers","eval","casMapping","xitiService","xitiOutil","xitiConf","locationPath","SERVICE","LIBELLE_SERVICE","Tracker","Tag","site","STRUCT_ID","setProps","TYPE","OUTIL","STRUCT_UAI","PROJET","EXPLOITANT","PLATFORME","PROFILE","identifiedVisitor","ID_PERSO","page","chapter1","chapter2","chapter3","level2","dispatch","NAME","UAI","encode","str","btoa","decode","atob","Base64","getOSInfo","uaString","UAParser","getOS","isIE","isiOS","MSStream","isIphone","isIpod","isIpad","safeSplit","pattern","operaVersion","edgeVersion","chromeVersion","ieVersion","safariVersion","ffVersion","msVersion","chromeIOsVersion","ffIOsVersion","localesToUpdate","param2","language","setToArray","mapKeysToArray","debounceMs","_lastTime","_lastResponse","_listeners","_guards","_id_counter","onUserConfirmNavigate","_getGuardsMapByID","gmap","fakeRoot","guardID","navigation","tryNavigate","stop","lastResponse","guardId","canNavigate","can","confirm","NavigationGuardService","currentValue","resetter","reference","unNaN","guardOnUserConfirmNavigate","_instance","returnValue","SessionFrameworkFactory","bootstrap","once","_zlib","getZlib","ajax","dataType","resolvedNavigatorModules","getUserMediaLegacy","getUserMedia","webkitGetUserMedia","mozGetUserMedia","msGetUserMedia","AudioContext","webkitAudioContext","gainNode","compress","player","Audio","leftChannel","rightChannel","recordingLength","encoder","Worker","followers","getUrl","sampleRate","protocol","host","sendWavChunk","postMessage","onmessage","initialTime","deflate","Zlib","Deflate","closeWs","readyState","close","clearWs","notifyFollowers","follower","loadComponents","handleMediaStream","mediaStream","audioInput","createMediaStreamSource","createGain","createScriptProcessor","onaudioprocess","Float32Array","inputBuffer","getChannelData","audio","currentTime","WebSocket","onopen","onerror","onclose","createObjectURL","mute","gain","handleDuration","uploader","tracker","defaultDevice","_status","constraints","video","facingMode","videoEndedHandler","gumVideo","setCamera","updateStatus","getSupportedConstraints","isIncompatibleDevice","isIncompatibleBrowser","os","MediaRecorder","stopRecording","stopStreaming","generateVideoId","getBuffer","bindPlayEvents","unbindPlayEvents","unbindRecordEvent","bindRecordEvent","stream","mediaRecorder","requestData","turnOffCamera","startStreaming","preparePlay","muted","srcObject","autoplay","prepareRecord","volume","revokeObjectURL","controls","notAllowedCb","canStartRecording","latestQuotaAndUsage","space","quota","storage","findBestSupportedMimeType","isTypeSupported","recorded","recordMimeType","onstop","ondataavailable","getTracks","track","Blob","clearBuffer","NotifyFrameworkFactory","TransportFrameworkFactory","FUNC_TYPE","UNDEF_TYPE","OBJ_TYPE","STR_TYPE","MODEL","VENDOR","VERSION","ARCHITECTURE","CONSOLE","MOBILE","SMARTTV","WEARABLE","EMBEDDED","util","extensions","mergedRegexes","str1","str2","lowerize","major","mapper","rgx","ua","arrays","maps","oldSafari","oldEdge","cpu","engine","getResult","_ua","_rgxmap","getBrowser","_browser","getCPU","_cpu","architecture","getDevice","_device","getEngine","_engine","_os","getUA","setUA","BROWSER","MAJOR","CPU","DEVICE","ENGINE","OS","jQuery","Zepto","parser","uastring","__webpack_module_cache__","inProgress","dataWebpackPrefix","moduleId","cachedModule","__webpack_modules__","chunkId","globalThis","script","needAttach","scripts","getAttribute","charset","nc","onScriptComplete","onload","doneFns","head","toStringTag","nmd","paths","scriptUrl","importScripts","currentScript","installedChunks","installedChunkData","errorType","realSrc","webpackJsonpCallback","parentChunkLoadingFunction","chunkIds","moreModules","runtime","chunkLoadingGlobal","__webpack_exports__"],"sourceRoot":""}
|